cor-lang
Version:
The Language of the Web
1,311 lines (1,103 loc) • 166 kB
JavaScript
/*
Cor is released under the BSD license:
Copyright 2015 (c) Yosbel Marin <yosbel.marin@gtm.jovenclub.cu>
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above
copyright notice, this list of conditions and the following
disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials
provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
*/
(function(){
/*
CRL (Cor Runtime Library)
*/
CRL = (typeof CRL === 'undefined' ? {} : CRL);
var
hasProp = Object.prototype.hasOwnProperty,
toString = Object.prototype.toString,
nativeTypes = {
'String' : String,
'Number' : Number,
'Boolean' : Boolean,
'RegExp' : RegExp,
'Array' : Array,
'Object' : Object,
'Function' : Function
};
// copy object own properties from an source `src` to a destiny `dst`
// returns the destiny object
CRL.copyObj = Object.assign ? Object.assign : function copyObj(dest, src) {
var name;
for (name in src) {
if (hasProp.call(src, name)) {
dest[name] = src[name];
}
}
return dest;
};
// convert a class in a subclass of other class
// CRL.subclass(Subclass, Superclass)
CRL.subclass = function subclass(subClass, superClass) {
CRL.copyObj(subClass, superClass);
function Proto() {
this.constructor = subClass;
}
Proto.prototype = superClass.prototype;
subClass.prototype = new Proto();
}
// extract keys from an object or array
// CRL.keys([5, 7, 3]) -> [0, 1, 2]
// CRL.keys({x: 2, y: 4}) -> ['x', 'y']
CRL.keys = function keys(obj) {
var keys, i, len;
// is array
if (obj instanceof Array) {
i = -1;
len = obj.length;
keys = [];
while (++i < len) {
keys.push(i);
}
return keys;
}
// if has key function
if (typeof Object.keys === 'function') {
return Object.keys(obj);
}
// otherwise polyfill it
for (i in obj) {
if (hasProp.call(obj, i)) {
keys.push(i);
}
}
return keys;
};
// whether a object is instance of a class or not
// CRL.assertType({}, Object)
// CRL.assertType(person, Person)
CRL.assertType = function assertType(obj, Class) {
var type;
if (Class === void 0) {
return obj === void 0;
}
if (typeof Class !== 'function') {
throw 'Trying to assert invalid class';
}
if (typeof obj === 'undefined') {
throw 'Trying to assert undefined object';
}
// try with instanceof
if (obj instanceof Class) {
return true;
}
// try with finding the native type according to "Object.prototype.toString"
type = toString.call(obj);
type = type.substring(8, type.length - 1);
if(hasProp.call(nativeTypes, type) && nativeTypes[type] === Class) {
return true;
}
return false;
};
CRL.regex = function regex(pattern, flags) {
return new RegExp(pattern, flags);
}
})();
(function(global) {
// Lightweight non standard compliant Promise
function Promise(resolverFn) {
if (typeof resolverFn !== 'function') {
throw 'provided resolver must be a function';
}
var p = this;
// this.value;
// this.reason;
this.completed = false;
this.fail = false;
this.success = false;
this.thenListeners = [];
this.catchListeners = [];
resolverFn(
function resolve(value){
Promise.doResolve(p, value);
},
function reject(reason) {
Promise.doReject(p, reason);
}
);
}
Promise.prototype = {
then: function(onSuccess, onFail) {
if (isFunction(onSuccess)) {
// proactive add
this.thenListeners.push(onSuccess);
if (this.success) {
Promise.doResolve(this, this.value);
}
}
if (isFunction(onFail)) {
// proactive add
this.catchListeners.push(onFail);
if (this.fail) {
Promise.doReject(this, this.reason);
}
}
},
catch: function(onFail) {
this.then(null, onFail);
}
};
Promise.doResolve = function doResolve(p, value) {
p.thenListeners.forEach(function(listener) {
listener(value);
})
p.success = true;
p.value = value;
p.completed = true;
};
Promise.doReject = function doReject(p, reason) {
if (p.catchListeners.length === 0) {
console.log('Uncaught (in promise): ' + reason);
}
p.catchListeners.forEach(function(listener) {
listener(reason);
})
p.fail = true;
p.reason = reason;
p.completed = true;
};
Promise.all = function all(array) {
var promise,
i = -1,
numPending = 0,
result = [],
len = array.length;
return new Promise(function(resolve) {
while (++i < len) {
promise = array[i];
if (isPromise(promise)) {
setupThen(promise, i);
}
else {
result[i] = array[i];
tryToResolve();
}
}
function setupThen(promise, i) {
numPending++;
// default value
result[i] = void 0;
promise.then(function(value) {
result[i] = value;
numPending--;
tryToResolve();
})
}
function tryToResolve() {
if (numPending === 0) {
resolve(result)
}
}
})
}
Promise.defer = function defer() {
var deferred = {};
// use CRL.Promise
deferred.promise = new CRL.Promise(function(resolve, reject) {
deferred.resolve = resolve;
deferred.reject = reject;
})
return deferred;
}
CRL.Promise = Promise;
// polyfill Promise
if (typeof global.Promise !== 'function') {
global.Promise = CRL.Promise;
}
// Coroutines
// Schedule
function schedule(fn, time) {
if (time === void 0 && typeof global.setImmediate !== 'undefined') {
setImmediate(fn);
} else {
setTimeout(fn, +time);
}
}
function isPromise(p) {
return p && typeof p.then === 'function';
}
function isFunction(f) {
return typeof f === 'function';
}
function isObject(obj) {
return obj && Object == obj.constructor;
}
function isArray(arr) {
return Array.isArray(arr);
}
// Generator Runner
CRL.go = function go(genf, ctx) {
var state, gen = genf.apply(ctx || {});
return new CRL.Promise(function(resolve, reject) {
// ensure it runs asynchronously
schedule(next);
function next(value) {
if (state && state.done) {
resolve(value);
return;
}
try {
state = gen.next(value);
value = state.value;
} catch (e) {
console.error(e.stack ? '\n' + e.stack : e);
return;
}
if (isPromise(value)) {
value.then(
function onFulfilled(value) {
next(value)
},
function onRejected(reason) {
gen.throw(reason)
}
)
return;
}
next(value);
}
})
}
// convert to promise as much possible
function toPromise(obj) {
if (isPromise(obj)) {
return obj;
}
if (isArray(obj)) {
return arrayToPromise(obj);
}
if (isObject(obj)) {
return objectToPromise(obj);
}
}
// convert array to promise
function arrayToPromise(array) {
var promise;
return CRL.Promise.all(array.map(function(value) {
promise = toPromise(value);
if (isPromise(promise)) {
return promise;
}
return value;
}));
}
// convert object to promise
function objectToPromise(obj) {
var key, promise, ret,
promises = [],
result = {},
i = -1,
keys = Object.keys(obj),
len = keys.length;
ret = new CRL.Promise(function(resolve) {
while (++i < len) {
key = keys[i];
promise = toPromise(obj[key]);
if (isPromise(promise)) {
setupThen(promise, key);
}
else {
result[key] = obj[key];
}
}
CRL.Promise.all(promises).then(function() {
resolve(result);
})
function setupThen(promise, key) {
// default value
result[key] = void 0;
promise.then(function(value) {
result[key] = value;
})
promises.push(promise);
}
})
return ret;
}
// receiver
CRL.receive = function receive(obj) {
var prom;
if (obj && isFunction(obj.receive)) {
return obj.receive();
}
prom = toPromise(obj);
if (isPromise(prom)) {
return prom;
}
return obj;
}
// sender
CRL.send = function send(obj, value) {
if (obj && isFunction(obj.send)) {
return obj.send(value);
}
throw 'unable to receive values';
}
function timeout(time) {
if (!isNaN(time) && time !== null) {
return new CRL.Promise(function(resolve) {
schedule(resolve, time)
})
}
throw 'Invalid time';
}
CRL.timeout = timeout;
// Buffer: simple array based buffer to use with channels
function Buffer(size) {
this.size = isNaN(size) ? 1 : size;
this.array = [];
}
Buffer.prototype = {
read: function() {
return this.array.shift();
},
write: function(value) {
if (this.isFull()) { return false }
this.array.push(value);
return true;
},
isFull: function() {
return !(this.array.length < this.size);
},
isEmpty: function() {
return this.array.length === 0;
}
}
function isBuffer(b) {
return (b
&& isFunction(b.read)
&& isFunction(b.write)
&& isFunction(b.isFull)
&& isFunction(b.isEmpty));
}
// Channel: a structure to transport messages
function indentityFn(x) {return x}
function scheduledResolve(deferred, value) {
schedule(function() { deferred.resolve(value) })
}
function Channel(buffer, transform) {
this.buffer = buffer;
this.closed = false;
this.data = void 0;
this.senderPromises = [];
this.receiverPromises = [];
this.transform = transform || indentityFn;
}
Channel.prototype = {
receive: function() {
var data, deferred;
// is unbuffered
if (! this.buffer) {
// there is data?
if (this.data !== void 0) {
// resume the first sender coroutine
if (this.senderPromises[0]) {
scheduledResolve(this.senderPromises.shift());
}
// clean and return
data = this.data;
this.data = void 0;
return data;
// if no data
} else {
// suspend the coroutine wanting to receive
deferred = Promise.defer();
this.receiverPromises.push(deferred);
return deferred.promise;
}
}
// if buffered
// empty buffer?
if (this.buffer.isEmpty()) {
// suspend the coroutine wanting to receive
deferred = Promise.defer();
this.receiverPromises.push(deferred);
return deferred.promise;
// some value in the buffer?
} else {
// resume the first sender coroutine
if (this.senderPromises[0]) {
scheduledResolve(this.senderPromises.shift());
}
// clean and return
return this.buffer.read();
}
},
send: function(data) {
if (this.closed) { throw 'closed channel' }
var deferred;
// is unbuffered
if (! this.buffer) {
// some stored data?
if (this.data !== void 0) {
// deliver data to the first waiting coroutine
if (this.receiverPromises[0]) {
scheduledResolve(this.receiverPromises.shift(), this.data);
}
// no stored data?
} else {
// pass sent data directly to the first waiting for it
if (this.receiverPromises[0]) {
this.data = void 0;
scheduledResolve(this.receiverPromises.shift(), this.transform(data));
// schedule the the sender coroutine
return timeout(0);
}
}
// else, store the transformed data
this.data = this.transform(data);
deferred = Promise.defer();
this.senderPromises.push(deferred);
return deferred.promise;
}
// if buffered
// emty buffer?
if (! this.buffer.isFull()) {
// TODO: optimize below code
// store sent value in the buffer
this.buffer.write(this.transform(data));
// if any waiting for the data, give it
if (this.receiverPromises[0]) {
scheduledResolve(this.receiverPromises.shift(), this.buffer.read());
}
}
// full buffer?
if (this.buffer.isFull()) {
// stop until the buffer start to be drained
deferred = Promise.defer();
this.senderPromises.push(deferred);
return deferred.promise;
}
},
close: function() {
this.closed = true;
this.senderPromises = [];
while (this.receiverPromises.length) {
scheduledResolve(this.receiverPromises.shift());
}
}
}
CRL.Channel = Channel;
CRL.chan = function chan(size, transform) {
if (isBuffer(size)) {
return new Channel(size, transform);
}
// isNaN(null) == false :O
if (isNaN(size) || size === null) {
return new Channel(null, transform);
}
return new Channel(new Buffer(size), transform);
}
})(this);
(function(){
cor = (typeof cor === 'undefined' ? {} : cor);
var
isBrowser = typeof window !== 'undefined' &&
typeof window.document !== 'undefined',
isNode = ! isBrowser &&
typeof global !== 'undefined' &&
typeof process !== 'undefined';
if (isBrowser) {
global = window;
}
cor.isBrowser = isBrowser;
cor.isNode = isNode;
cor.compile = function(src, filename) {
var
comp = new cor.Compiler(src, filename),
ast = comp.parse(),
js = comp.compile(ast);
return js;
};
cor.run = function(src, require, module, exports) {
exports = exports || {};
require = require || function(){};
module = module || {exports: exports};
var
PROG,
js = this.compile(src);
eval('var PROG=function(require,module,exports){var PROG;' + js + '};');
PROG(require, module, exports);
return module.exports;
};
})();
(function(cor){
/*
A library to provide some OO features across
Cor source code
Usage:
var
Class = cor.Class;
var A = Class({
init: function(){
this.xx = true;
this.y()
},
y: function(){
console.log('A')
}
})
var B = Class(A, {
y: function(){
this.base('y')
console.log('B')
}
})
var C = Class(B, {
y: function(){
this.base('y')
console.log('C')
}
})
c = new C()
c;
*/
var
hasProp = Object.prototype.hasOwnProperty;
function Class(Base, classBody){
if (! classBody){
classBody = Base || {};
Base = function(){};
}
var
key, member,
base = newBaseMethod(),
Class = newClass(),
proto = Object.create(Base.prototype);
for (key in classBody) {
if (! hasProp.call(classBody, key)){
continue;
}
member = classBody[key];
if (typeof member === 'function') {
member.$owner = Class;
}
proto[key] = classBody[key];
}
proto._base_ = Base;
proto.base = base;
Class.prototype = proto;
return Class;
};
function newClass() {
return function() {
(typeof this.init === 'function') && this.init.apply(this, arguments);
};
}
function newBaseMethod() {
return function base(methodName, args){
var
callerMethod = this.base.caller,
meth = callerMethod.$owner.prototype._base_.prototype[methodName];
if (typeof meth === 'function') {
return meth.apply(this, args);
}
throw "Can not find the base method '" + methodName + "'";
};
}
cor.Class = Class;
})(typeof cor === 'undefined' ? {} : cor);
/* parser generated by jison 0.4.15 */
/*
Returns a Parser object of the following structure:
Parser: {
yy: {}
}
Parser.prototype: {
yy: {},
trace: function(),
symbols_: {associative list: name ==> number},
terminals_: {associative list: number ==> name},
productions_: [...],
performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),
table: [...],
defaultActions: {...},
parseError: function(str, hash),
parse: function(input),
lexer: {
EOF: 1,
parseError: function(str, hash),
setInput: function(input),
input: function(),
unput: function(str),
more: function(),
less: function(n),
pastInput: function(),
upcomingInput: function(),
showPosition: function(),
test_match: function(regex_match_array, rule_index),
next: function(),
lex: function(),
begin: function(condition),
popState: function(),
_currentRules: function(),
topState: function(),
pushState: function(condition),
options: {
ranges: boolean (optional: true ==> token location info will include a .range[] member)
flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)
backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)
},
performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),
rules: [...],
conditions: {associative list: name ==> set},
}
}
token location info (@$, _$, etc.): {
first_line: n,
last_line: n,
first_column: n,
last_column: n,
range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)
}
the parseError function receives a 'hash' object with these members for lexer and parser errors: {
text: (matched text)
token: (the produced terminal token, if any)
line: (yylineno)
}
while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {
loc: (yylloc)
expected: (string describing the set of expected tokens)
recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)
}
*/
var CorParser = (function(){
var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[2,4],$V1=[1,11],$V2=[1,14],$V3=[1,9],$V4=[1,10],$V5=[1,12],$V6=[5,9,10,22,26,37],$V7=[1,24],$V8=[5,9,10,14,16,18,22,24,26,28,30,33,37,49,100,101,104,106,107,108,109,110,111,112,113,117,118,121,126,132,134],$V9=[5,22],$Va=[1,42],$Vb=[1,55],$Vc=[1,51],$Vd=[1,50],$Ve=[1,52],$Vf=[1,53],$Vg=[1,54],$Vh=[1,46],$Vi=[1,47],$Vj=[1,48],$Vk=[1,49],$Vl=[1,63],$Vm=[1,40],$Vn=[1,66],$Vo=[1,64],$Vp=[1,65],$Vq=[5,9,10,14,16,18,22,26,30,33,37,132,134],$Vr=[2,158],$Vs=[1,74],$Vt=[1,75],$Vu=[1,76],$Vv=[1,77],$Vw=[5,9,10,14,16,18,22,26,30,33,37,49,100,101,113,117,121,132,134],$Vx=[1,78],$Vy=[1,79],$Vz=[1,80],$VA=[1,81],$VB=[1,82],$VC=[1,83],$VD=[1,84],$VE=[2,87],$VF=[5,9,10,14,16,18,22,26,30,33,37,49,100,101,106,107,108,109,110,111,112,113,117,121,132,134],$VG=[5,9,10,14,16,18,22,24,26,28,30,33,37,49,100,101,104,106,107,108,109,110,111,112,113,115,117,118,121,126,132,134],$VH=[2,84],$VI=[2,101],$VJ=[1,91],$VK=[1,88],$VL=[1,89],$VM=[1,90],$VN=[5,9,10,14,16,18,22,26,28,30,33,37,49,100,101,104,106,107,108,109,110,111,112,113,117,118,121,126,132,134],$VO=[2,89],$VP=[1,103],$VQ=[1,104],$VR=[1,109],$VS=[30,33],$VT=[1,118],$VU=[2,10],$VV=[1,117],$VW=[1,134],$VX=[1,132],$VY=[1,133],$VZ=[1,142],$V_=[1,140],$V$=[1,143],$V01=[1,141],$V11=[1,147],$V21=[1,148],$V31=[1,149],$V41=[1,150],$V51=[1,151],$V61=[1,152],$V71=[1,153],$V81=[1,157],$V91=[1,146],$Va1=[1,155],$Vb1=[1,154],$Vc1=[1,144],$Vd1=[1,156],$Ve1=[1,145],$Vf1=[1,158],$Vg1=[1,170],$Vh1=[1,171],$Vi1=[2,33],$Vj1=[1,196],$Vk1=[1,197],$Vl1=[1,198],$Vm1=[1,199],$Vn1=[1,203],$Vo1=[1,200],$Vp1=[1,201],$Vq1=[1,202],$Vr1=[10,18,22,26],$Vs1=[18,22],$Vt1=[14,100,101,106,107,108,109,110,111,112,113],$Vu1=[1,225],$Vv1=[10,26,28,30,38,88,89,90,91,100,101,102,103,112,113,128,130,133],$Vw1=[10,18,22,26,28,38,51,56,64,69,71,73,75,79,82,88,89,90,91,100,101,102,103,112,113,128,130,133],$Vx1=[1,242],$Vy1=[2,39],$Vz1=[1,243],$VA1=[2,40],$VB1=[1,244],$VC1=[2,205],$VD1=[1,255],$VE1=[1,256],$VF1=[16,18,22],$VG1=[2,122],$VH1=[1,277],$VI1=[2,206],$VJ1=[1,298],$VK1=[1,299],$VL1=[18,69,71],$VM1=[1,328],$VN1=[1,329],$VO1=[1,330];
var parser = {trace: function trace() { },
yy: {},
symbols_: {"error":2,"Module":3,"Source":4,"EOF":5,"GlobalStmt":6,"GlobalStmtNoSemicolon":7,"ClassStmt":8,"CLASS":9,"IDENT":10,"ClassStmt_option0":11,"ClassBlock":12,"ExtendsStmt":13,":":14,"QualifiedIdent":15,"{":16,"MemberList":17,"}":18,"Member":19,"MemberNotSemicolon":20,"PropertyDecl":21,";":22,"FunctionStmt":23,"=":24,"Value":25,"FUNC":26,"FunctionStmt_option0":27,"(":28,"FunctionStmt_option1":29,")":30,"FunctionStmt_group0":31,"FunctionArgs":32,",":33,"Block":34,"StmtList":35,"UseStmt":36,"USE":37,"STRING":38,"UseStmt_option0":39,"GlobalDeclarationStmt":40,"Stmt":41,"StmtNotSemicolon":42,"StrictStmtList":43,"SimpleStmt":44,"Expr":45,"IncDecStmt":46,"SimpleStmtNotSemicolon":47,"OperationExpr":48,"INCDECOP":49,"IfStmt":50,"IF":51,"IfStmt_option0":52,"ElseStmt":53,"ELSE":54,"ForStmt":55,"FOR":56,"ForStmt_option0":57,"ForStmt_option1":58,"ForStmt_option2":59,"ForInStmt":60,"IN":61,"ForInRangeStmt":62,"SwitchStmt":63,"SWITCH":64,"SwitchStmt_option0":65,"CaseBlock":66,"CaseStmtList":67,"CaseStmt":68,"CASE":69,"ExprList":70,"DEFAULT":71,"CatchStmt":72,"CATCH":73,"ReturnStmt":74,"RETURN":75,"ReturnStmt_option0":76,"ReturnStmtNotSemicolon":77,"BreakStmt":78,"BREAK":79,"BreakStmtNotSemicolon":80,"ContinueStmt":81,"CONTINUE":82,"ContinueStmtNotSemicolon":83,"LeftHandExpr":84,"IndexExpr":85,"SelectorExpr":86,"PrimaryExpr":87,"ME":88,"BOOLEAN":89,"NUMBER":90,"NIL":91,"SliceExpr":92,"CallExpr":93,"TypeAssertExpr":94,"ObjectConstructor":95,"ArrayConstructor":96,"TemplateLiteral":97,"GoExpr":98,"UnaryExpr":99,"+":100,"-":101,"!":102,"~":103,"?":104,"OperationExprNotAdditive":105,"*":106,"/":107,"%":108,"SHIFTOP":109,"COMPARISONOP":110,"BINARYOP":111,"&":112,"ASYNCOP":113,"AssignmentExpr":114,"ASSIGNMENTOP":115,"CoalesceExpr":116,"COALESCEOP":117,"[":118,"SliceExpr_option0":119,"SliceExpr_option1":120,"]":121,"SliceExpr_option2":122,"SliceExpr_option3":123,"CallExpr_option0":124,"CallExpr_option1":125,".":126,"Property":127,"GO":128,"TypeAssertExpr_option0":129,"TPL_BEGIN":130,"TemplateLiteralBody":131,"TPL_END":132,"TPL_SIMPLE":133,"TPL_CONTINUATION":134,"TemplateLiteralBody_option0":135,"ReceiveExpr":136,"KeyValueElementList":137,"ObjectConstructorArgs":138,"SimpleElementList":139,"KeyedElement":140,"KeyValueElementList_option0":141,"SimpleElementList_option0":142,"ArrayItems":143,"ArrayConstructor_option0":144,"ValueList":145,"ValueList_option0":146,"$accept":0,"$end":1},
terminals_: {2:"error",5:"EOF",9:"CLASS",10:"IDENT",14:":",16:"{",18:"}",22:";",24:"=",26:"FUNC",28:"(",30:")",33:",",37:"USE",38:"STRING",49:"INCDECOP",51:"IF",54:"ELSE",56:"FOR",61:"IN",64:"SWITCH",69:"CASE",71:"DEFAULT",73:"CATCH",75:"RETURN",79:"BREAK",82:"CONTINUE",88:"ME",89:"BOOLEAN",90:"NUMBER",91:"NIL",100:"+",101:"-",102:"!",103:"~",104:"?",106:"*",107:"/",108:"%",109:"SHIFTOP",110:"COMPARISONOP",111:"BINARYOP",112:"&",113:"ASYNCOP",115:"ASSIGNMENTOP",117:"COALESCEOP",118:"[",121:"]",126:".",128:"GO",130:"TPL_BEGIN",132:"TPL_END",133:"TPL_SIMPLE",134:"TPL_CONTINUATION"},
productions_: [0,[3,2],[4,2],[4,1],[4,0],[8,4],[13,2],[12,3],[17,2],[17,1],[17,0],[19,2],[19,2],[19,1],[20,1],[20,1],[21,3],[21,1],[23,6],[32,1],[32,3],[34,3],[36,3],[40,3],[6,1],[6,1],[6,2],[6,2],[6,1],[7,1],[7,1],[35,2],[35,1],[35,0],[43,1],[43,2],[44,2],[44,2],[44,1],[47,1],[47,1],[46,2],[50,4],[53,2],[53,2],[55,7],[55,3],[55,2],[60,5],[60,7],[62,7],[62,6],[62,6],[62,5],[63,3],[66,3],[67,1],[67,2],[68,4],[68,3],[72,3],[74,3],[77,2],[77,1],[78,2],[80,1],[81,2],[83,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,2],[42,1],[42,1],[42,1],[42,1],[42,1],[84,1],[84,1],[84,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,3],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[99,1],[99,2],[99,2],[99,2],[99,2],[99,2],[105,1],[105,3],[105,3],[105,3],[105,3],[105,3],[105,3],[105,3],[48,1],[48,3],[48,3],[48,3],[114,3],[114,3],[116,3],[70,1],[70,3],[92,6],[92,7],[93,4],[93,5],[86,3],[86,4],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[85,4],[85,5],[94,5],[97,3],[97,1],[131,1],[131,3],[98,2],[136,2],[45,1],[45,1],[45,1],[45,1],[95,3],[95,3],[95,3],[95,2],[138,2],[138,3],[138,3],[15,1],[15,3],[137,1],[137,3],[140,3],[140,3],[139,1],[139,3],[96,3],[96,4],[143,2],[143,3],[25,1],[25,1],[145,1],[145,3],[11,0],[11,1],[27,0],[27,1],[29,0],[29,1],[31,1],[31,1],[39,0],[39,1],[52,0],[52,1],[57,0],[57,1],[58,0],[58,1],[59,0],[59,1],[65,0],[65,1],[76,0],[76,1],[119,0],[119,1],[120,0],[120,1],[122,0],[122,1],[123,0],[123,1],[124,0],[124,1],[125,0],[125,1],[129,0],[129,1],[135,0],[135,1],[141,0],[141,1],[142,0],[142,1],[144,0],[144,1],[146,0],[146,1]],
performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {
/* this == yyval */
var $0 = $$.length - 1;
switch (yystate) {
case 1:
return new yy.ModuleNode($$[$0-1])
break;
case 2: case 31:
if ($$[$0] instanceof yy.List) {
$$[$0].addFront($$[$0-1])
this.$= $$[$0]
}
else if ($$[$0]){
this.$= new yy.List($$[$0-1], $$[$0])
}
else {
this.$= new yy.List($$[$0-1])
}
break;
case 3:
if (this.$ instanceof yy.List) {
this.$.add($$[$0])
}
else {
this.$ = new yy.List($$[$0])
}
break;
case 4:
this.$= new yy.List()
break;
case 5:
this.$= new yy.ClassNode(
new yy.Lit($$[$0-3], _$[$0-3]),
new yy.Lit($$[$0-2], _$[$0-2]),
$$[$0-1], $$[$0]
)
break;
case 6: case 43: case 44: case 62:
this.$= new yy.Node(new yy.Lit($$[$0-1], _$[$0-1]), $$[$0])
break;
case 7: case 55:
this.$= new yy.Node(new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], new yy.Lit($$[$0], _$[$0]))
break;
case 8:
if ($$[$0] instanceof yy.List) {
$$[$0].addFront($$[$0-1])
this.$= $$[$0]
}
else if ($$[$0]) {
this.$= new yy.List($$[$0-1], $$[$0])
}
else {
this.$= new yy.List($$[$0-1])
}
break;
case 9: case 34: case 122: case 154: case 171: case 175:
this.$= new yy.List($$[$0])
break;
case 11:
$$[$0-1].children.push(new yy.Lit(';', _$[$0])); this.$=$$[$0-1]
break;
case 12:
this.$= new yy.MethodNode($$[$0-1], new yy.Lit(';', _$[$0]))
break;
case 13:
this.$= new yy.Lit(';', _$[$0])
break;
case 15:
this.$= new yy.MethodNode($$[$0])
break;
case 16:
this.$= new yy.PropertyNode(new yy.Lit($$[$0-2], _$[$0-2]), new yy.Lit($$[$0-1], _$[$0-1]), $$[$0])
break;
case 17:
this.$= new yy.PropertyNode(new yy.Lit($$[$0], _$[$0]))
break;
case 18:
this.$= new yy.FunctionNode(
new yy.Lit($$[$0-5], _$[$0-5]),
new yy.Lit($$[$0-4], _$[$0-4]),
new yy.Lit($$[$0-3], _$[$0-3]),
$$[$0-2],
new yy.Lit($$[$0-1], _$[$0-1]),
$$[$0]
)
break;
case 19: case 169:
this.$= new yy.List(new yy.Lit($$[$0], _$[$0]))
break;
case 20: case 170:
$$[$0-2].add(new yy.Lit($$[$0-1], _$[$0-1]), new yy.Lit($$[$0], _$[$0]))
break;
case 21:
this.$= new yy.BlockNode(
new yy.Lit($$[$0-2], _$[$0-2]),
$$[$0-1],
new yy.Lit($$[$0], _$[$0])
)
break;
case 22:
this.$= new yy.UseNode(new yy.Str($$[$0-2], _$[$0-2]), new yy.Lit($$[$0-1], _$[$0-1]), $$[$0] ? new yy.Lit($$[$0], _$[$0]) : null)
break;
case 23: case 119: case 120:
this.$= new yy.AssignmentNode($$[$0-2], new yy.Lit($$[$0-1], _$[$0-1]), $$[$0])
break;
case 26: case 27:
$$[$0-1].children.push(new yy.Lit(';', _$[$0])); this.$ = $$[$0-1]
break;
case 28: case 38:
this.$= new yy.Lit(';', _$[$0])
break;
case 35: case 57:
$$[$0-1].add($$[$0])
break;
case 36: case 37:
this.$= new yy.SimpleStmtNode($$[$0-1], new yy.Lit(';', _$[$0]))
break;
case 39: case 40:
this.$= new yy.SimpleStmtNode($$[$0])
break;
case 41:
this.$= new yy.Node($$[$0-1], new yy.Lit($$[$0], _$[$0]))
break;
case 42:
this.$= new yy.IfNode(new yy.Lit($$[$0-3], _$[$0-3]), $$[$0-2], $$[$0-1], $$[$0])
break;
case 45:
this.$= new yy.ForNode(
new yy.Lit($$[$0-6], _$[$0-6]), $$[$0-5],
new yy.Lit($$[$0-4], _$[$0-4]), $$[$0-3],
new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], $$[$0]
)
break;
case 46:
this.$= new yy.ForNode(new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], $$[$0])
break;
case 47:
this.$= new yy.ForNode(new yy.Lit($$[$0-1], _$[$0-1]), $$[$0])
break;
case 48:
this.$= new yy.ForInNode(
new yy.Lit($$[$0-4], _$[$0-4]),
new yy.VarNode(new yy.Lit($$[$0-3], _$[$0-3])),
new yy.Lit($$[$0-2], _$[$0-2]),
$$[$0-1], $$[$0]
)
break;
case 49:
this.$= new yy.ForInNode(
new yy.Lit($$[$0-6], _$[$0-6]),
new yy.VarNode(new yy.Lit($$[$0-5], _$[$0-5])),
new yy.Lit($$[$0-4], _$[$0-4]),
new yy.VarNode(new yy.Lit($$[$0-3], _$[$0-3])),
new yy.Lit($$[$0-2], _$[$0-2]),
$$[$0-1], $$[$0]
)
break;
case 50:
this.$= new yy.ForInRangeNode(
new yy.Lit($$[$0-6], _$[$0-6]),
new yy.VarNode(new yy.Lit($$[$0-5], _$[$0-5])),
new yy.Lit($$[$0-4], _$[$0-4]),
$$[$0-3],
new yy.Lit($$[$0-2], _$[$0-2]),
$$[$0-1], $$[$0]
)
break;
case 51:
this.$= new yy.ForInRangeNode(
new yy.Lit($$[$0-5], _$[$0-5]),
new yy.VarNode(new yy.Lit($$[$0-4], _$[$0-4])),
new yy.Lit($$[$0-3], _$[$0-3]),
$$[$0-2],
new yy.Lit($$[$0-1], _$[$0-1]),
null, $$[$0]
)
break;
case 52:
this.$= new yy.ForInRangeNode(
new yy.Lit($$[$0-5], _$[$0-5]),
new yy.VarNode(new yy.Lit($$[$0-4], _$[$0-4])),
new yy.Lit($$[$0-3], _$[$0-3]),
null,
new yy.Lit($$[$0-2], _$[$0-2]),
$$[$0-1], $$[$0]
)
break;
case 53:
this.$= new yy.ForInRangeNode(
new yy.Lit($$[$0-4], _$[$0-4]),
new yy.VarNode(new yy.Lit($$[$0-3], _$[$0-3])),
new yy.Lit($$[$0-2], _$[$0-2]),
null,
new yy.Lit($$[$0-1], _$[$0-1]),
null, $$[$0]
)
break;
case 54:
this.$= new yy.SwitchNode(new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], $$[$0])
break;
case 56:
this.$ = new yy.List($$[$0])
break;
case 58:
this.$= new yy.CaseNode(new yy.Lit($$[$0-3], _$[$0-3]), $$[$0-2], new yy.Lit($$[$0-1], _$[$0-1]), $$[$0])
break;
case 59:
this.$= new yy.CaseNode(new yy.Lit($$[$0-2], _$[$0-2]), new yy.Lit($$[$0-1], _$[$0-1]), $$[$0])
break;
case 60:
this.$= new yy.CatchNode(new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], $$[$0])
break;
case 61:
this.$= new yy.Node(new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], new yy.Lit(';', _$[$0]))
break;
case 63: case 90: case 91: case 92:
this.$= new yy.Lit($$[$0], _$[$0])
break;
case 64: case 66:
this.$= new yy.Node(new yy.Lit($$[$0-1], _$[$0-1]), new yy.Lit(';', _$[$0]))
break;
case 65: case 67:
this.$= new yy.Node(new yy.Lit($$[$0], _$[$0]))
break;
case 84:
this.$= new yy.VarNode(new yy.Lit($$[$0], _$[$0]))
break;
case 88:
this.$= new yy.MeNode($$[$0], _$[$0])
break;
case 89:
this.$= new yy.Str($$[$0], _$[$0])
break;
case 93:
this.$= new yy.AssociationNode(new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], new yy.Lit($$[$0], _$[$0]))
break;
case 102: case 103: case 104: case 105:
this.$= new yy.UnaryExprNode(new yy.Lit($$[$0-1], _$[$0-1]), $$[$0])
break;
case 106:
this.$= new yy.UnaryExistenceNode($$[$0-1], new yy.Lit($$[$0], _$[$0]))
break;
case 108: case 109: case 110: case 111: case 112: case 113: case 114: case 116: case 117:
this.$= new yy.Node($$[$0-2], new yy.Lit($$[$0-1], _$[$0-1]), $$[$0])
break;
case 118:
this.$= new yy.SendAsyncNode($$[$0-2], new yy.Lit($$[$0-1], _$[$0-1]), $$[$0])
break;
case 121:
this.$= new yy.CoalesceNode($$[$0-2], new yy.Lit($$[$0-1], _$[$0-1]), $$[$0])
break;
case 123: case 184:
$$[$0-2].add(new yy.Lit($$[$0-1], _$[$0-1]), $$[$0])
break;
case 124:
this.$= new yy.SliceNode(
$$[$0-5],
new yy.Lit($$[$0-4], _$[$0-4]),
$$[$0-3],
new yy.Lit($$[$0-2], _$[$0-2]),
$$[$0-1],
new yy.Lit($$[$0], _$[$0])
)
break;
case 125:
this.$= new yy.ExistenceNode(
new yy.SliceNode(
$$[$0-6],
new yy.Lit($$[$0-4], _$[$0-4]),
$$[$0-3],
new yy.Lit($$[$0-2], _$[$0-2]),
$$[$0-1],
new yy.Lit($$[$0], _$[$0])
)
)
break;
case 126:
this.$= new yy.CallNode($$[$0-3], new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], new yy.Lit($$[$0], _$[$0]))
break;
case 127:
this.$= new yy.ExistenceNode(new yy.CallNode($$[$0-4], new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], new yy.Lit($$[$0], _$[$0])))
break;
case 128:
this.$= new yy.Node($$[$0-2], new yy.Lit($$[$0-1], _$[$0-1]), new yy.ObjectPropertyNode($$[$0], _$[$0]))
break;
case 129:
this.$= new yy.ExistenceNode(new yy.Node($$[$0-3], new yy.Lit($$[$0-1], _$[$0-1]), new yy.ObjectPropertyNode($$[$0], _$[$0])))
break;
case 149:
this.$= new yy.Node($$[$0-3], new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], new yy.Lit($$[$0], _$[$0]))
break;
case 150:
this.$= new yy.ExistenceNode(new yy.Node($$[$0-4], new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], new yy.Lit($$[$0], _$[$0])))
break;
case 151:
this.$= new yy.TypeAssertNode(
$$[$0-4],
new yy.Lit($$[$0-3], _$[$0-3]),
new yy.Lit($$[$0-2], _$[$0-2]),
$$[$0-1],
new yy.Lit($$[$0], _$[$0])
)
break;
case 152:
this.$= new yy.TemplateLiteralNode(new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], new yy.Lit($$[$0], _$[$0]))
break;
case 153:
this.$= new yy.TemplateLiteralNode(new yy.Lit($$[$0], _$[$0]))
break;
case 155: case 172:
if ($$[$0] instanceof yy.List) {
$$[$0].addFront($$[$0-2], new yy.Lit($$[$0-1], _$[$0-1]))
this.$= $$[$0]
}
else if ($$[$0]){
this.$= new yy.List($$[$0-2], new yy.Lit($$[$0-1], _$[$0-1]), $$[$0])
}
break;
case 156:
this.$= new yy.GoExprNode(new yy.Lit($$[$0-1], _$[$0-1]), $$[$0])
break;
case 157:
this.$= new yy.ReceiveAsyncNode(new yy.Lit($$[$0-1], _$[$0-1]), $$[$0])
break;
case 162:
this.$= new yy.ObjectConstructorNode(
new yy.Lit('&', _$[$0-2]),
null,
new yy.ObjectConstructorArgsNode(
new yy.Lit($$[$0-2], _$[$0-2]),
null,
new yy.Lit($$[$0], _$[$0])
)
)
break;
case 163:
this.$= new yy.ObjectConstructorNode(
new yy.Lit('&', _$[$0-2]),
null,
new yy.ObjectConstructorArgsNode(
new yy.Lit($$[$0-2], _$[$0-2]),
$$[$0-1],
new yy.Lit($$[$0], _$[$0]),
true
)
)
break;
case 164:
this.$= new yy.ObjectConstructorNode(new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], $$[$0])
break;
case 165:
this.$= new yy.ObjectConstructorNode(new yy.Lit($$[$0-1], _$[$0-1]), $$[$0])
break;
case 166:
this.$= new yy.ObjectConstructorArgsNode(new yy.Lit($$[$0-1], _$[$0-1]), null, new yy.Lit($$[$0], _$[$0]))
break;
case 167:
this.$= new yy.ObjectConstructorArgsNode(new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], new yy.Lit($$[$0], _$[$0]))
break;
case 168:
this.$= new yy.ObjectConstructorArgsNode(new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], new yy.Lit($$[$0], _$[$0]), true)
break;
case 173:
this.$= new yy.Node(new yy.Lit($$[$0-2], _$[$0-2]), new yy.Lit($$[$0-1], _$[$0-1]), $$[$0])
break;
case 174:
this.$= new yy.Node(new yy.Str($$[$0-2], _$[$0-2]), new yy.Lit($$[$0-1], _$[$0-1]), $$[$0])
break;
case 176:
if ($$[$0] instanceof yy.List) {
$$[$0].addFront($$[$0-2], new yy.Lit($$[$0-1], _$[$0-1]))
this.$= $$[$0]
}
else if ($$[$0]){
this.$= new yy.List($$[$0-2], new yy.Lit($$[$0-1], _$[$0-1]), $$[$0])
}
break;
case 177:
this.$= new yy.ArrayConstructorNode(
new yy.Lit('[', _$[$0-2]),
null,
new yy.Lit(']', _$[$0])
)
break;
case 178:
if ($$[$0-1]) $$[$0-2].add($$[$0-1]);
this.$= new yy.ArrayConstructorNode(
new yy.Lit('[', _$[$0-3]),
$$[$0-2],
new yy.Lit(']', _$[$0])
)
break;
case 179:
this.$= new yy.List($$[$0-1]); this.$.add(new yy.Lit($$[$0], _$[$0]))
break;
case 180:
if ($$[$0-2] instanceof yy.List) {
$$[$0-2].add($$[$0-1], new yy.Lit($$[$0], _$[$0]))
this.$= $$[$0-2]
}
break;
case 183:
this.$= new yy.ValueList($$[$0])
break;
}
},
table: [{3:1,4:2,5:$V0,6:3,7:4,8:6,9:$V1,10:$V2,15:13,22:$V3,23:5,26:$V4,36:7,37:$V5,40:8},{1:[3]},{5:[1,15]},{4:16,5:$V0,6:3,7:4,8:6,9:$V1,10:$V2,15:13,22:$V3,23:5,26:$V4,36:7,37:$V5,40:8},{5:[2,3]},o($V6,[2,24]),o($V6,[2,25]),{5:[2,29],22:[1,17]},{5:[2,30],22:[1,18]},o($V6,[2,28]),{10:[1,20],27:19,28:[2,187]},{10:[1,21]},{38:[1,22]},{24:[1,23],126:$V7},o($V8,[2,169]),{1:[2,1]},{5:[2,2]},o($V6,[2,26]),o($V6,[2,27]),{28:[1,25]},{28:[2,188]},{11:26,13:27,14:[1,28],16:[2,185]},o($V9,[2,193],{39:29,10:[1,30]}),{10:$Va,23:33,25:31,26:$V4,28:$Vb,38:$Vc,45:32,48:34,84:39,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:41,100:$Vh,101:$Vi,102:$Vj,103:$Vk,105:38,112:$Vl,113:$Vm,114:35,116:36,128:$Vn,130:$Vo,133:$Vp,136:37},{10:[1,67]},{10:[1,70],29:68,30:[2,189],32:69},{12:71,16:[1,72]},{16:[2,186]},{10:$V2,15:73},o($V9,[2,22]),o($V9,[2,194]),o($V9,[2,23]),o($Vq,[2,181]),o($Vq,[2,182]),o($Vq,$Vr,{100:$Vs,101:$Vt,113:$Vu,117:$Vv}),o($Vq,[2,159]),o($Vq,[2,160]),o($Vq,[2,161]),o($Vw,[2,115],{106:$Vx,107:$Vy,108:$Vz,109:$VA,110:$VB,111:$VC,112:$VD}),o([5,9,10,14,16,18,22,26,28,30,33,37,49,100,101,104,106,107,108,109,110,111,112,113,117,118,126,132,134],$VE,{24:[1,86],115:[1,85]}),{10:$Va,23:33,25:87,26:$V4,28:$Vb,38:$Vc,45:32,48:34,84:39,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:41,100:$Vh,101:$Vi,102:$Vj,103:$Vk,105:38,112:$Vl,113:$Vm,114:35,116:36,128:$Vn,130:$Vo,133:$Vp,136:37},o($VF,[2,107]),o($VG,$VH),o($VG,[2,85]),o($VG,[2,86]),o($VF,$VI,{28:$VJ,104:$VK,118:$VL,126:$VM}),{10:$Va,28:$Vb,38:$Vc,84:93,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:92,100:$Vh,101:$Vi,102:$Vj,103:$Vk,112:$Vl,128:$Vn,130:$Vo,133:$Vp},{10:$Va,28:$Vb,38:$Vc,84:93,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:94,100:$Vh,101:$Vi,102:$Vj,103:$Vk,112:$Vl,128:$Vn,130:$Vo,133:$Vp},{10:$Va,28:$Vb,38:$Vc,84:93,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:95,100:$Vh,101:$Vi,102:$Vj,103:$Vk,112:$Vl,128:$Vn,130:$Vo,133:$Vp},{10:$Va,28:$Vb,38:$Vc,84:93,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:96,100:$Vh,101:$Vi,102:$Vj,103:$Vk,112:$Vl,128:$Vn,130:$Vo,133:$Vp},o($VN,[2,88]),o($VN,$VO),o($VN,[2,90]),o($VN,[2,91]),o($VN,[2,92]),{10:$VP,14:[1,98],23:33,25:97,26:$V4,28:$Vb,33:[1,100],38:$VQ,45:32,48:34,84:39,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:41,100:$Vh,101:$Vi,102:$Vj,103:$Vk,105:38,112:$Vl,113:$Vm,114:35,116:36,128:$Vn,130:$Vo,133:$Vp,136:37,137:99,140:102,143:101},o($VN,[2,94]),o($VN,[2,95]),o($VN,[2,96]),o($VN,[2,97]),o($VN,[2,98]),o($VN,[2,99]),o($VN,[2,100]),{10:$V2,15:105},{10:$Va,28:$Vb,38:$Vc,45:107,48:34,84:39,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:41,100:$Vh,101:$Vi,102:$Vj,103:$Vk,105:38,112:$Vl,113:$Vm,114:35,116:36,128:$Vn,130:$Vo,131:106,133:$Vp,136:37},o($VN,[2,153]),{16:$VR,34:108},o($V8,[2,170]),{30:[1,110]},{30:[2,190],33:[1,111]},o($VS,[2,19]),o($V6,[2,5]),{10:$VT,17:112,18:$VU,19:113,20:114,21:115,22:$VV,23:116,26:$V4},{16:[2,6],126:$V7},{10:$Va,28:$Vb,38:$Vc,84:93,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:41,100:$Vh,101:$Vi,102:$Vj,103:$Vk,105:119,112:$Vl,128:$Vn,130:$Vo,133:$Vp},{10:$Va,28:$Vb,38:$Vc,84:93,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:41,100:$Vh,101:$Vi,102:$Vj,103:$Vk,105:120,112:$Vl,128:$Vn,130:$Vo,133:$Vp},{10:$Va,28:$Vb,38:$Vc,48:121,84:93,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:41,100:$Vh,101:$Vi,102:$Vj,103:$Vk,105:38,112:$Vl,128:$Vn,130:$Vo,133:$Vp},{10:$Va,23:33,25:122,26:$V4,28:$Vb,38:$Vc,45:32,48:34,84:39,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:41,100:$Vh,101:$Vi,102:$Vj,103:$Vk,105:38,112:$Vl,113:$Vm,114:35,116:36,128:$Vn,130:$Vo,133:$Vp,136:37},{10:$Va,28:$Vb,38:$Vc,84:93,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:123,100:$Vh,101:$Vi,102:$Vj,103:$Vk,112:$Vl,128:$Vn,130:$Vo,133:$Vp},{10:$Va,28:$Vb,38:$Vc,84:93,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:124,100:$Vh,101:$Vi,102:$Vj,103:$Vk,112:$Vl,128:$Vn,130:$Vo,133:$Vp},{10:$Va,28:$Vb,38:$Vc,84:93,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:125,100:$Vh,101:$Vi,102:$Vj,103:$Vk,112:$Vl,128:$Vn,130:$Vo,133:$Vp},{10:$Va,28:$Vb,38:$Vc,84:93,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:126,100:$Vh,101:$Vi,102:$Vj,103:$Vk,112:$Vl,128:$Vn,130:$Vo,133:$Vp},{10:$Va,28:$Vb,38:$Vc,84:93,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:127,100:$Vh,101:$Vi,102:$Vj,103:$Vk,112:$Vl,128:$Vn,130:$Vo,133:$Vp},{10:$Va,28:$Vb,38:$Vc,84:93,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:128,100:$Vh,101:$Vi,102:$Vj,103:$Vk,112:$Vl,128:$Vn,130:$Vo,133:$Vp},{10:$Va,28:$Vb,38:$Vc,84:93,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:129,100:$Vh,101:$Vi,102:$Vj,103:$Vk,112:$Vl,128:$Vn,130:$Vo,133:$Vp},{10:$Va,23:33,25:130,26:$V4,28:$Vb,38:$Vc,45:32,48:34,84:39,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:41,100:$Vh,101:$Vi,102:$Vj,103:$Vk,105:38,112:$Vl,113:$Vm,114:35,116:36,128:$Vn,130:$Vo,133:$Vp,136:37},{10:$Va,23:33,25:131,26:$V4,28:$Vb,38:$Vc,45:32,48:34,84:39,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:41,100:$Vh,101:$Vi,102:$Vj,103:$Vk,105:38,112:$Vl,113:$Vm,114:35,116:36,128:$Vn,130:$Vo,133:$Vp,136:37},o($Vq,[2,157]),o($VF,[2,106],{28:$VW,118:$VX,126:$VY}),{10:$Va,14:[2,207],28:$Vb,38:$Vc,48:137,84:93,85:43,86:44,87:135,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:41,100:$Vh,101:$Vi,102:$Vj,103:$Vk,105:38,112:$Vl,119:136,128:$Vn,130:$Vo,133:$Vp},{9:$VZ,10:$V_,26:$V$,28:[1,139],37:$V01,51:$V11,54:$V21,56:$V31,61:$V41,64:$V51,69:$V61,71:$V71,73:$V81,75:$V91,79:$Va1,82:$Vb1,88:$Vc1,89:$Vd1,91:$Ve1,127:138,128:$Vf1},{10:$Va,23:33,25:161,26:$V4,28:$Vb,30:[2,215],38:$Vc,45:32,48:34,84:39,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:41,100:$Vh,101:$Vi,102:$Vj,103:$Vk,105:38,112:$Vl,113:$Vm,114:35,116:36,124:159,128:$Vn,130:$Vo,133:$Vp,136:37,145:160},o($VF,[2,102]),o($VN,$VE),o($VF,[2,103]),o($VF,[2,104]),o($VF,[2,105]),{30:[1,162],33:[1,163]},{30:[1,164]},{30:[1,165]},{30:[1,166]},{10:$Va,23:33,25:168,26:$V4,28:$Vb,30:[2,227],38:$Vc,45:32,48:34,84:39,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:41,100:$Vh,101:$Vi,102:$Vj,103:$Vk,105:38,112:$Vl,113:$Vm,114:35,116:36,128:$Vn,130:$Vo,133:$Vp,136:37,144:167},{30:[2,171],33:[1,169]},o([24,28,30,33,100,101,104,106,107,108,109,110,111,112,113,115,117,118,126],$VH,{14:$Vg1}),o([28,30,33,100,101,104,106,107,108,109,110,111,112,113,117,118,126],$VO,{14:$Vh1}),o([5,9,10,14,16,18,22,26,30,33,37,49,100,101,104,106,107,108,109,110,111,112,113,117,118,121,132,134],[2,165],{138:172,28:[1,173],126:$V7}),{132:[1,174]},{132:[2,154],134:[1,175]},o($VN,[2,156]),{10:$Va,18:$Vi1,22:$Vj1,23:189,26:$V4,28:$Vb,35:176,38:$Vc,41:177,42:178,44:179,45:194,46:195,47:190,48:204,50:180,51:$Vk1,55:181,56:$Vl1,60:182,62:183,63:184,64:$Vm1,72:188,73:$Vn1,74:185,75:$Vo1,77:191,78:186,79:$Vp1,80:192,81:187,82:$Vq1,83:193,84:39,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:41,100:$Vh,101:$Vi,102:$Vj,103:$Vk,105:38,112:$Vl,113:$Vm,114:35,116:36,128:$Vn,130:$Vo,133:$Vp,136:37},{10:$Va,16:$VR,23:33,25:207,26:$V4,28:$Vb,31:205,34:206,38:$Vc,45:32,48:34,84:39,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:41,100:$Vh,101:$Vi,102:$Vj,103:$Vk,105:38,112:$Vl,113:$Vm,114:35,116:36,128:$Vn,130:$Vo,133:$Vp,136:37},{10:[1,208]},{18:[1,209]},{10:$VT,17:210,18:$VU,19:113,20:114,21:115,22:$VV,23:116,26:$V4},{18:[2,9]},{18:[2,14],22:[1,211]},{18:[2,15],22:[1,212]},o($Vr1,[2,13]),o($Vs1,[2,17],{24:[1,213]}),o($Vw,[2,116],{106:$Vx,107:$Vy,108:$Vz,109:$VA,110:$VB,111:$VC,112:$VD}),o($Vw,[2,117],{106:$Vx,107:$Vy,108:$Vz,109:$VA,110:$VB,111:$VC,112:$VD}),o([5,9,10,14,16,18,22,26,30,33,37,49,113,117,121,132,134],[2,118],{100:$Vs,101:$Vt}),o($Vq,[2,121]),o($VF,[2,108]),o($VF,[2,109]),o($VF,[2,110]),o($VF,[2,111]),o($VF,[2,112]),o($VF,[2,113]),o($VF,[2,114]),o($Vq,[2,119]),o($Vq,[2,120]),{10:$Va,14:[2,211],28:$Vb,38:$Vc,48:216,84:93,85:43,86:44,87:214,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:41,100:$Vh,101:$Vi,102:$Vj,103:$Vk,105:38,112:$Vl,122:215,128:$Vn,130:$Vo,133:$Vp},{9:$VZ,10:$V_,26:$V$,37:$V01,51:$V11,54:$V21,56:$V31,61:$V41,64:$V51,69:$V61,71:$V71,73:$V81,75:$V91,79:$Va1,82:$Vb1,88:$Vc1,89:$Vd1,91:$Ve1,127:217,128:$Vf1},{10:$Va,23:33,25:161,26:$V4,28:$Vb,30:[2,217],38:$Vc,45:32,48:34,84:39,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:41,100:$Vh,101:$Vi,102:$Vj,103:$Vk,105:38,112:$Vl,113:$Vm,114:35,116:36,125:218,128:$Vn,130:$Vo,133:$Vp,136:37,145:219},o($Vt1,$VI,{2