Files

186 lines
92 KiB
JavaScript

'use strict';var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.arrayIteratorImpl=function(b){var a=0;return function(){return a<b.length?{done:!1,value:b[a++]}:{done:!0}}};$jscomp.arrayIterator=function(b){return{next:$jscomp.arrayIteratorImpl(b)}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;
$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(b,a,c){b!=Array.prototype&&b!=Object.prototype&&(b[a]=c.value)};$jscomp.getGlobal=function(b){return"undefined"!=typeof window&&window===b?b:"undefined"!=typeof global&&null!=global?global:b};$jscomp.global=$jscomp.getGlobal(this);$jscomp.SYMBOL_PREFIX="jscomp_symbol_";$jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};
$jscomp.SymbolClass=function(b,a){this.$jscomp$symbol$id_=b;$jscomp.defineProperty(this,"description",{configurable:!0,writable:!0,value:a})};$jscomp.SymbolClass.prototype.toString=function(){return this.$jscomp$symbol$id_};$jscomp.Symbol=function(){function b(c){if(this instanceof b)throw new TypeError("Symbol is not a constructor");return new $jscomp.SymbolClass($jscomp.SYMBOL_PREFIX+(c||"")+"_"+a++,c)}var a=0;return b}();
$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var b=$jscomp.global.Symbol.iterator;b||(b=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("Symbol.iterator"));"function"!=typeof Array.prototype[b]&&$jscomp.defineProperty(Array.prototype,b,{configurable:!0,writable:!0,value:function(){return $jscomp.iteratorPrototype($jscomp.arrayIteratorImpl(this))}});$jscomp.initSymbolIterator=function(){}};
$jscomp.initSymbolAsyncIterator=function(){$jscomp.initSymbol();var b=$jscomp.global.Symbol.asyncIterator;b||(b=$jscomp.global.Symbol.asyncIterator=$jscomp.global.Symbol("Symbol.asyncIterator"));$jscomp.initSymbolAsyncIterator=function(){}};$jscomp.iteratorPrototype=function(b){$jscomp.initSymbolIterator();b={next:b};b[$jscomp.global.Symbol.iterator]=function(){return this};return b};
$jscomp.iteratorFromArray=function(b,a){$jscomp.initSymbolIterator();b instanceof String&&(b+="");var c=0,d={next:function(){if(c<b.length){var e=c++;return{value:a(e,b[e]),done:!1}}d.next=function(){return{done:!0,value:void 0}};return d.next()}};d[Symbol.iterator]=function(){return d};return d};
$jscomp.polyfill=function(b,a,c,d){if(a){c=$jscomp.global;b=b.split(".");for(d=0;d<b.length-1;d++){var e=b[d];e in c||(c[e]={});c=c[e]}b=b[b.length-1];d=c[b];a=a(d);a!=d&&null!=a&&$jscomp.defineProperty(c,b,{configurable:!0,writable:!0,value:a})}};$jscomp.polyfill("Array.prototype.keys",function(b){return b?b:function(){return $jscomp.iteratorFromArray(this,function(a){return a})}},"es6","es3");
$jscomp.polyfill("Array.from",function(b){return b?b:function(a,b,d){b=null!=b?b:function(a){return a};var c=[],f="undefined"!=typeof Symbol&&Symbol.iterator&&a[Symbol.iterator];if("function"==typeof f){a=f.call(a);for(var p=0;!(f=a.next()).done;)c.push(b.call(d,f.value,p++))}else for(f=a.length,p=0;p<f;p++)c.push(b.call(d,a[p],p));return c}},"es6","es3");
(function(b,a){if("object"==typeof exports&&"object"==typeof module)return a(exports);if("function"==typeof define&&define.amd)return define(["exports"],a);a(b.acorn||(b.acorn={}))})(this,function(b){function a(a){l=a||{};for(var b in Ua)Object.prototype.hasOwnProperty.call(l,b)||(l[b]=Ua[b]);wa=l.sourceFile||null}function c(a,b){var c=Bb(h,a);b+=" ("+c.line+":"+c.column+")";b=new SyntaxError(b);b.pos=a;b.loc=c;b.raisedAt=g;throw b;}function d(a){function b(a){if(1==a.length)return c+="return str === "+
JSON.stringify(a[0])+";";c+="switch(str){";for(var b=0;b<a.length;++b)c+="case "+JSON.stringify(a[b])+":";c+="return true}return false;"}a=a.split(" ");var c="",d=[],z=0;a:for(;z<a.length;++z){for(var e=0;e<d.length;++e)if(d[e][0].length==a[z].length){d[e].push(a[z]);continue a}d.push([a[z]])}if(3<d.length){d.sort(function(a,b){return b.length-a.length});c+="switch(str.length){";for(z=0;z<d.length;++z)a=d[z],c+="case "+a[0].length+":",b(a);c+="}"}else b(a);return new Function("str",c)}function e(){this.line=
G;this.column=g-D}function f(a,b){W=g;l.locations&&(ja=new e);m=a;k();H=b;P=a.beforeExpr}function p(){for(var a=g,b=l.onComment&&l.locations&&new e,c=h.charCodeAt(g+=2);g<Q&&10!==c&&13!==c&&8232!==c&&8233!==c;)++g,c=h.charCodeAt(g);if(l.onComment)l.onComment(!1,h.slice(a+2,g),a,g,b,l.locations&&new e)}function k(){for(;g<Q;){var a=h.charCodeAt(g);if(32===a)++g;else if(13===a)++g,a=h.charCodeAt(g),10===a&&++g,l.locations&&(++G,D=g);else if(10===a||8232===a||8233===a)++g,l.locations&&(++G,D=g);else if(8<
a&&14>a)++g;else if(47===a)if(a=h.charCodeAt(g+1),42===a){a=void 0;var b=l.onComment&&l.locations&&new e,d=g,f=h.indexOf("*/",g+=2);-1===f&&c(g-2,"Unterminated comment");g=f+2;if(l.locations)for(X.lastIndex=d;(a=X.exec(h))&&a.index<g;)++G,D=a.index+a[0].length;if(l.onComment)l.onComment(!0,h.slice(d+2,f),d,g,b,l.locations&&new e)}else if(47===a)p();else break;else if(160===a)++g;else if(5760<=a&&Cb.test(String.fromCharCode(a)))++g;else break}}function B(a){switch(a){case 46:return a=h.charCodeAt(g+
1),48<=a&&57>=a?a=Va(!0):(++g,a=f(xa)),a;case 40:return++g,f(I);case 41:return++g,f(E);case 59:return++g,f(J);case 44:return++g,f(K);case 91:return++g,f(ka);case 93:return++g,f(la);case 123:return++g,f(Y);case 125:return++g,f(R);case 58:return++g,f(Z);case 63:return++g,f(ya);case 48:if(a=h.charCodeAt(g+1),120===a||88===a)return g+=2,a=S(16),null==a&&c(w+2,"Expected hexadecimal number"),ma(h.charCodeAt(g))&&c(g,"Identifier directly after number"),f(aa,a);case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return Va(!1);
case 34:case 39:a:{g++;for(var b="";;){g>=Q&&c(w,"Unterminated string constant");var d=h.charCodeAt(g);if(d===a){++g;a=f(ca,b);break a}if(92===d){d=h.charCodeAt(++g);var e=/^[0-7]+/.exec(h.slice(g,g+3));for(e&&(e=e[0]);e&&255<parseInt(e,8);)e=e.slice(0,-1);"0"===e&&(e=null);++g;if(e)C&&c(g-2,"Octal literal in strict mode"),b+=String.fromCharCode(parseInt(e,8)),g+=e.length-1;else switch(d){case 110:b+="\n";break;case 114:b+="\r";break;case 120:b+=String.fromCharCode(na(2));break;case 117:b+=String.fromCharCode(na(4));
break;case 85:b+=String.fromCharCode(na(8));break;case 116:b+="\t";break;case 98:b+="\b";break;case 118:b+="\x0B";break;case 102:b+="\f";break;case 48:b+="\x00";break;case 13:10===h.charCodeAt(g)&&++g;case 10:l.locations&&(D=g,++G);break;default:b+=String.fromCharCode(d)}}else 13!==d&&10!==d&&8232!==d&&8233!==d||c(w,"Unterminated string constant"),b+=String.fromCharCode(d),++g}}return a;case 47:return a=h.charCodeAt(g+1),P?(++g,a=da()):a=61===a?r(T,2):r(za,1),a;case 37:case 42:return a=61===h.charCodeAt(g+
1)?r(T,2):r(Db,1),a;case 124:case 38:return b=h.charCodeAt(g+1),a=b===a?r(124===a?Wa:Xa,2):61===b?r(T,2):r(124===a?Eb:Fb,1),a;case 94:return a=61===h.charCodeAt(g+1)?r(T,2):r(Gb,1),a;case 43:case 45:return b=h.charCodeAt(g+1),b===a?45==b&&62==h.charCodeAt(g+2)&&oa.test(h.slice(L,g))?(g+=3,p(),k(),a=x()):a=r(Hb,2):a=61===b?r(T,2):r(Ib,1),a;case 60:case 62:return b=h.charCodeAt(g+1),d=1,b===a?(d=62===a&&62===h.charCodeAt(g+2)?3:2,a=61===h.charCodeAt(g+d)?r(T,d+1):r(Jb,d)):33==b&&60==a&&45==h.charCodeAt(g+
2)&&45==h.charCodeAt(g+3)?(g+=4,p(),k(),a=x()):(61===b&&(d=61===h.charCodeAt(g+2)?3:2),a=r(Kb,d)),a;case 61:case 33:return a=61===h.charCodeAt(g+1)?r(Lb,61===h.charCodeAt(g+2)?3:2):r(61===a?Aa:Ya,1),a;case 126:return r(Ya,1)}return!1}function x(a){a?g=w+1:w=g;l.locations&&(pa=new e);if(a)return da();if(g>=Q)return f(qa);var b=h.charCodeAt(g);if(ma(b)||92===b)return Za();a=B(b);if(!1===a){b=String.fromCharCode(b);if("\\"===b||$a.test(b))return Za();c(g,"Unexpected character '"+b+"'")}return a}function r(a,
b){var c=h.slice(g,g+b);g+=b;f(a,c)}function da(){for(var a,b,d=g;;){g>=Q&&c(d,"Unterminated regular expression");var e=h.charAt(g);oa.test(e)&&c(d,"Unterminated regular expression");if(a)a=!1;else{if("["===e)b=!0;else if("]"===e&&b)b=!1;else if("/"===e&&!b)break;a="\\"===e}++g}a=h.slice(d,g);++g;(b=ab())&&!/^[gmsiy]*$/.test(b)&&c(d,"Invalid regexp flag");return f(Ba,new RegExp(a,b))}function S(a,b){for(var c=g,d=0,e=0,z=null==b?Infinity:b;e<z;++e){var f=h.charCodeAt(g);f=97<=f?f-97+10:65<=f?f-65+
10:48<=f&&57>=f?f-48:Infinity;if(f>=a)break;++g;d=d*a+f}return g===c||null!=b&&g-c!==b?null:d}function Va(a){var b=g,d=!1,e=48===h.charCodeAt(g);a||null!==S(10)||c(b,"Invalid number");46===h.charCodeAt(g)&&(++g,S(10),d=!0);a=h.charCodeAt(g);if(69===a||101===a)a=h.charCodeAt(++g),43!==a&&45!==a||++g,null===S(10)&&c(b,"Invalid number"),d=!0;ma(h.charCodeAt(g))&&c(g,"Identifier directly after number");a=h.slice(b,g);var z;d?z=parseFloat(a):e&&1!==a.length?/[89]/.test(a)||C?c(b,"Invalid number"):z=parseInt(a,
8):z=parseInt(a,10);return f(aa,z)}function na(a){a=S(16,a);null===a&&c(w,"Bad character escape sequence");return a}function ab(){ba=!1;for(var a,b=!0,d=g;;){var e=h.charCodeAt(g);if(bb(e))ba&&(a+=h.charAt(g)),++g;else if(92===e){ba||(a=h.slice(d,g));ba=!0;117!=h.charCodeAt(++g)&&c(g,"Expecting Unicode escape sequence \\uXXXX");++g;e=na(4);var f=String.fromCharCode(e);f||c(g-1,"Invalid Unicode escape");(b?ma(e):bb(e))||c(g-4,"Invalid Unicode escape");a+=f}else break;b=!1}return ba?a:h.slice(d,g)}
function Za(){var a=ab(),b=U;ba||(Mb(a)?b=Ca[a]:(l.forbidReserved&&(3===l.ecmaVersion?Nb:Ob)(a)||C&&cb(a))&&c(w,"The keyword '"+a+"' is reserved"));return f(b,a)}function q(){Da=w;L=W;Ea=ja;x()}function Fa(a){C=a;g=L;if(l.locations)for(;g<D;)D=h.lastIndexOf("\n",D-2)+1,--G;k();x()}function db(){this.type=null;this.start=w;this.end=null}function eb(){this.start=pa;this.end=null;null!==wa&&(this.source=wa)}function y(){var a=new db;l.locations&&(a.loc=new eb);l.directSourceFile&&(a.sourceFile=l.directSourceFile);
l.ranges&&(a.range=[w,0]);return a}function O(a){var b=new db;b.start=a.start;l.locations&&(b.loc=new eb,b.loc.start=a.loc.start);l.ranges&&(b.range=[a.range[0],0]);return b}function n(a,b){a.type=b;a.end=L;l.locations&&(a.loc.end=Ea);l.ranges&&(a.range[1]=L);return a}function Ga(a){return 5<=l.ecmaVersion&&"ExpressionStatement"===a.type&&"Literal"===a.expression.type&&"use strict"===a.expression.value}function t(a){if(m===a)return q(),!0}function ra(){return!l.strictSemicolons&&(m===qa||m===R||oa.test(h.slice(L,
w)))}function V(){t(J)||ra()||M()}function u(a){m===a?q():M()}function M(){c(w,"Unexpected token")}function sa(a){"Identifier"!==a.type&&"MemberExpression"!==a.type&&c(a.start,"Assigning to rvalue");C&&"Identifier"===a.type&&ta(a.name)&&c(a.start,"Assigning to "+a.name+" in strict mode")}function F(){(m===za||m===T&&"/="==H)&&x(!0);var a=m,b=y();switch(a){case Ha:case fb:q();var d=a===Ha;t(J)||ra()?b.label=null:m!==U?M():(b.label=N(),V());for(var e=0;e<v.length;++e){var f=v[e];if(null==b.label||f.name===
b.label.name){if(null!=f.kind&&(d||"loop"===f.kind))break;if(b.label&&d)break}}e===v.length&&c(b.start,"Unsyntactic "+a.keyword);return n(b,d?"BreakStatement":"ContinueStatement");case gb:return q(),V(),n(b,"DebuggerStatement");case hb:return q(),v.push(Ia),b.body=F(),v.pop(),u(Ja),b.test=ea(),V(),n(b,"DoWhileStatement");case ib:q();v.push(Ia);u(I);if(m===J)return Ka(b,null);if(m===La)return a=y(),q(),jb(a,!0),n(a,"VariableDeclaration"),1===a.declarations.length&&t(ua)?kb(b,a):Ka(b,a);a=A(!1,!0);
return t(ua)?(sa(a),kb(b,a)):Ka(b,a);case Ma:return q(),Na(b,!0);case lb:return q(),b.test=ea(),b.consequent=F(),b.alternate=t(mb)?F():null,n(b,"IfStatement");case nb:return fa||c(w,"'return' outside of function"),q(),t(J)||ra()?b.argument=null:(b.argument=A(),V()),n(b,"ReturnStatement");case Oa:q();b.discriminant=ea();b.cases=[];u(Y);for(v.push(Pb);m!=R;)m===Pa||m===ob?(a=m===Pa,e&&n(e,"SwitchCase"),b.cases.push(e=y()),e.consequent=[],q(),a?e.test=A():(d&&c(Da,"Multiple default clauses"),d=!0,e.test=
null),u(Z)):(e||M(),e.consequent.push(F()));e&&n(e,"SwitchCase");q();v.pop();return n(b,"SwitchStatement");case pb:return q(),oa.test(h.slice(L,w))&&c(L,"Illegal newline after throw"),b.argument=A(),V(),n(b,"ThrowStatement");case qb:return q(),b.block=ha(),b.handler=null,m===rb&&(a=y(),q(),u(I),a.param=N(),C&&ta(a.param.name)&&c(a.param.start,"Binding "+a.param.name+" in strict mode"),u(E),a.guard=null,a.body=ha(),b.handler=n(a,"CatchClause")),b.guardedHandlers=sb,b.finalizer=t(tb)?ha():null,b.handler||
b.finalizer||c(b.start,"Missing catch or finally clause"),n(b,"TryStatement");case La:return q(),jb(b),V(),n(b,"VariableDeclaration");case Ja:return q(),b.test=ea(),v.push(Ia),b.body=F(),v.pop(),n(b,"WhileStatement");case ub:return C&&c(w,"'with' in strict mode"),q(),b.object=ea(),b.body=F(),n(b,"WithStatement");case Y:return ha();case J:return q(),n(b,"EmptyStatement");default:d=H;f=A();if(a===U&&"Identifier"===f.type&&t(Z)){for(e=0;e<v.length;++e)v[e].name===d&&c(f.start,"Label '"+d+"' is already declared");
v.push({name:d,kind:m.isLoop?"loop":m===Oa?"switch":null});b.body=F();v.pop();b.label=f;return n(b,"LabeledStatement")}b.expression=f;V();return n(b,"ExpressionStatement")}}function ea(){u(I);var a=A();u(E);return a}function ha(a){var b=y(),c=!0,d=!1;b.body=[];for(u(Y);!t(R);){var e=F();b.body.push(e);if(c&&a&&Ga(e)){var f=d;Fa(d=!0)}c=!1}d&&!f&&Fa(!1);return n(b,"BlockStatement")}function Ka(a,b){a.init=b;u(J);a.test=m===J?null:A();u(J);a.update=m===E?null:A();u(E);a.body=F();v.pop();return n(a,
"ForStatement")}function kb(a,b){a.left=b;a.right=A();u(E);a.body=F();v.pop();return n(a,"ForInStatement")}function jb(a,b){a.declarations=[];for(a.kind="var";;){var d=y();d.id=N();C&&ta(d.id.name)&&c(d.id.start,"Binding "+d.id.name+" in strict mode");d.init=t(Aa)?A(!0,b):null;a.declarations.push(n(d,"VariableDeclarator"));if(!t(K))break}return a}function A(a,b){var c=Qa(b);if(!a&&m===K){a=O(c);for(a.expressions=[c];t(K);)a.expressions.push(Qa(b));return n(a,"SequenceExpression")}return c}function Qa(a){var b=
Ra(Sa(),-1,a);if(t(ya)){var c=O(b);c.test=b;c.consequent=A(!0);u(Z);c.alternate=A(!0,a);b=n(c,"ConditionalExpression")}return m.isAssign?(c=O(b),c.operator=H,c.left=b,q(),c.right=Qa(a),sa(b),n(c,"AssignmentExpression")):b}function Ra(a,b,c){var d=m.binop;if(null!=d&&(!c||m!==ua)&&d>b){var e=O(a);e.left=a;e.operator=H;a=m;q();e.right=Ra(Sa(),d,c);d=n(e,a===Wa||a===Xa?"LogicalExpression":"BinaryExpression");return Ra(d,b,c)}return a}function Sa(){if(m.prefix){var a=y(),b=m.isUpdate;a.operator=H;P=a.prefix=
!0;q();a.argument=Sa();b?sa(a.argument):C&&"delete"===a.operator&&"Identifier"===a.argument.type&&c(a.start,"Deleting local variable in strict mode");return n(a,b?"UpdateExpression":"UnaryExpression")}for(b=ia(va());m.postfix&&!ra();)a=O(b),a.operator=H,a.prefix=!1,a.argument=b,sa(b),q(),b=n(a,"UpdateExpression");return b}function ia(a,b){if(t(xa)){var c=O(a);c.object=a;c.property=N(!0);c.computed=!1;return ia(n(c,"MemberExpression"),b)}return t(ka)?(c=O(a),c.object=a,c.property=A(),c.computed=!0,
u(la),ia(n(c,"MemberExpression"),b)):!b&&t(I)?(c=O(a),c.callee=a,c.arguments=Ta(E,!1),ia(n(c,"CallExpression"),b)):a}function va(){switch(m){case vb:var a=y();q();return n(a,"ThisExpression");case U:return N();case aa:case ca:case Ba:return a=y(),a.value=H,a.raw=h.slice(w,W),q(),n(a,"Literal");case wb:case xb:case yb:return a=y(),a.value=m.atomValue,a.raw=m.keyword,q(),n(a,"Literal");case I:a=pa;var b=w;q();var d=A();d.start=b;d.end=W;l.locations&&(d.loc.start=a,d.loc.end=ja);l.ranges&&(d.range=[b,
W]);u(E);return d;case ka:return a=y(),q(),a.elements=Ta(la,!0,!0),n(a,"ArrayExpression");case Y:a=y();b=!0;d=!1;a.properties=[];for(q();!t(R);){if(b)b=!1;else if(u(K),l.allowTrailingCommas&&t(R))break;var e={key:m===aa||m===ca?va():N(!0)},f=!1;if(t(Z)){e.value=A(!0);var g=e.kind="init"}else 5<=l.ecmaVersion&&"Identifier"===e.key.type&&("get"===e.key.name||"set"===e.key.name)?(f=d=!0,g=e.kind=e.key.name,e.key=m===aa||m===ca?va():N(!0),m!==I&&M(),e.value=Na(y(),!1)):M();if("Identifier"===e.key.type&&
(C||d))for(var p=0;p<a.properties.length;++p){var k=a.properties[p];if(k.key.name===e.key.name){var r=g==k.kind||f&&"init"===k.kind||"init"===g&&("get"===k.kind||"set"===k.kind);r&&!C&&"init"===g&&"init"===k.kind&&(r=!1);r&&c(e.key.start,"Redefinition of property")}}a.properties.push(e)}return n(a,"ObjectExpression");case Ma:return a=y(),q(),Na(a,!1);case zb:return a=y(),q(),a.callee=ia(va(),!0),t(I)?a.arguments=Ta(E,!1):a.arguments=sb,n(a,"NewExpression");default:M()}}function Na(a,b){m===U?a.id=
N():b?M():a.id=null;a.params=[];var d=!0;for(u(I);!t(E);)d?d=!1:u(K),a.params.push(N());d=fa;var e=v;fa=!0;v=[];a.body=ha(!0);fa=d;v=e;if(C||a.body.body.length&&Ga(a.body.body[0]))for(d=a.id?-1:0;d<a.params.length;++d)if(e=0>d?a.id:a.params[d],(cb(e.name)||ta(e.name))&&c(e.start,"Defining '"+e.name+"' in strict mode"),0<=d)for(var f=0;f<d;++f)e.name===a.params[f].name&&c(e.start,"Argument name clash in strict mode");return n(a,b?"FunctionDeclaration":"FunctionExpression")}function Ta(a,b,c){for(var d=
[],e=!0;!t(a);){if(e)e=!1;else if(u(K),b&&l.allowTrailingCommas&&t(a))break;c&&m===K?d.push(null):d.push(A(!0))}return d}function N(a){var b=y();b.name=m===U?H:a&&!l.forbidReserved&&m.keyword||M();P=!1;q();return n(b,"Identifier")}b.version="0.4.1";var l,h,Q,wa;b.parse=function(b,c){h=String(b);Q=h.length;a(c);G=1;g=D=0;P=!0;k();var d=l.program;Da=L=g;l.locations&&(Ea=new e);fa=C=null;v=[];x();b=d||y();c=!0;d||(b.body=[]);for(;m!==qa;)d=F(),b.body.push(d),c&&Ga(d)&&Fa(!0),c=!1;return n(b,"Program")};
var Ua=b.defaultOptions={ecmaVersion:5,strictSemicolons:!1,allowTrailingCommas:!0,forbidReserved:!1,locations:!1,onComment:null,ranges:!1,program:null,sourceFile:null,directSourceFile:null},Bb=b.getLineInfo=function(a,b){for(var c=1,d=0;;){X.lastIndex=d;var e=X.exec(a);if(e&&e.index<b)++c,d=e.index+e[0].length;else break}return{line:c,column:b-d}};b.tokenize=function(b,c){function d(a){x(a);e.start=w;e.end=W;e.startLoc=pa;e.endLoc=ja;e.type=m;e.value=H;return e}h=String(b);Q=h.length;a(c);G=1;g=D=
0;P=!0;k();var e={};d.jumpTo=function(a,b){g=a;if(l.locations){G=1;D=X.lastIndex=0;for(var c;(c=X.exec(h))&&c.index<a;)++G,D=c.index+c[0].length}P=b;k()};return d};var g,w,W,pa,ja,m,H,P,G,D,Da,L,Ea,fa,v,C,sb=[],aa={type:"num"},Ba={type:"regexp"},ca={type:"string"},U={type:"name"},qa={type:"eof"},Ha={keyword:"break"},Pa={keyword:"case",beforeExpr:!0},rb={keyword:"catch"},fb={keyword:"continue"},gb={keyword:"debugger"},ob={keyword:"default"},hb={keyword:"do",isLoop:!0},mb={keyword:"else",beforeExpr:!0},
tb={keyword:"finally"},ib={keyword:"for",isLoop:!0},Ma={keyword:"function"},lb={keyword:"if"},nb={keyword:"return",beforeExpr:!0},Oa={keyword:"switch"},pb={keyword:"throw",beforeExpr:!0},qb={keyword:"try"},La={keyword:"var"},Ja={keyword:"while",isLoop:!0},ub={keyword:"with"},zb={keyword:"new",beforeExpr:!0},vb={keyword:"this"},wb={keyword:"null",atomValue:null},xb={keyword:"true",atomValue:!0},yb={keyword:"false",atomValue:!1},ua={keyword:"in",binop:7,beforeExpr:!0},Ca={"break":Ha,"case":Pa,"catch":rb,
"continue":fb,"debugger":gb,"default":ob,"do":hb,"else":mb,"finally":tb,"for":ib,"function":Ma,"if":lb,"return":nb,"switch":Oa,"throw":pb,"try":qb,"var":La,"while":Ja,"with":ub,"null":wb,"true":xb,"false":yb,"new":zb,"in":ua,"instanceof":{keyword:"instanceof",binop:7,beforeExpr:!0},"this":vb,"typeof":{keyword:"typeof",prefix:!0,beforeExpr:!0},"void":{keyword:"void",prefix:!0,beforeExpr:!0},"delete":{keyword:"delete",prefix:!0,beforeExpr:!0}},ka={type:"[",beforeExpr:!0},la={type:"]"},Y={type:"{",beforeExpr:!0},
R={type:"}"},I={type:"(",beforeExpr:!0},E={type:")"},K={type:",",beforeExpr:!0},J={type:";",beforeExpr:!0},Z={type:":",beforeExpr:!0},xa={type:"."},ya={type:"?",beforeExpr:!0},za={binop:10,beforeExpr:!0},Aa={isAssign:!0,beforeExpr:!0},T={isAssign:!0,beforeExpr:!0},Hb={postfix:!0,prefix:!0,isUpdate:!0},Ya={prefix:!0,beforeExpr:!0},Wa={binop:1,beforeExpr:!0},Xa={binop:2,beforeExpr:!0},Eb={binop:3,beforeExpr:!0},Gb={binop:4,beforeExpr:!0},Fb={binop:5,beforeExpr:!0},Lb={binop:6,beforeExpr:!0},Kb={binop:7,
beforeExpr:!0},Jb={binop:8,beforeExpr:!0},Ib={binop:9,prefix:!0,beforeExpr:!0},Db={binop:10,beforeExpr:!0};b.tokTypes={bracketL:ka,bracketR:la,braceL:Y,braceR:R,parenL:I,parenR:E,comma:K,semi:J,colon:Z,dot:xa,question:ya,slash:za,eq:Aa,name:U,eof:qa,num:aa,regexp:Ba,string:ca};for(var Ab in Ca)b.tokTypes["_"+Ab]=Ca[Ab];var Nb=d("abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile"),
Ob=d("class enum extends super const export import"),cb=d("implements interface let package private protected public static yield"),ta=d("eval arguments"),Mb=d("break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this"),Cb=/[\u1680\u180e\u2000-\u200a\u202f\u205f\u3000\ufeff]/,$a=/[\u00aa\u00b5\u00ba\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0\u08a2-\u08ac\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa80-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]/,
Qb=/[\u00aa\u00b5\u00ba\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0\u08a2-\u08ac\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa80-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc\u0300-\u036f\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u0620-\u0649\u0672-\u06d3\u06e7-\u06e8\u06fb-\u06fc\u0730-\u074a\u0800-\u0814\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0840-\u0857\u08e4-\u08fe\u0900-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962-\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09d7\u09df-\u09e0\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2-\u0ae3\u0ae6-\u0aef\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b5f-\u0b60\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c01-\u0c03\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62-\u0c63\u0c66-\u0c6f\u0c82\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2-\u0ce3\u0ce6-\u0cef\u0d02\u0d03\u0d46-\u0d48\u0d57\u0d62-\u0d63\u0d66-\u0d6f\u0d82\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e34-\u0e3a\u0e40-\u0e45\u0e50-\u0e59\u0eb4-\u0eb9\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f41-\u0f47\u0f71-\u0f84\u0f86-\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u1000-\u1029\u1040-\u1049\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u170e-\u1710\u1720-\u1730\u1740-\u1750\u1772\u1773\u1780-\u17b2\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u1920-\u192b\u1930-\u193b\u1951-\u196d\u19b0-\u19c0\u19c8-\u19c9\u19d0-\u19d9\u1a00-\u1a15\u1a20-\u1a53\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1b46-\u1b4b\u1b50-\u1b59\u1b6b-\u1b73\u1bb0-\u1bb9\u1be6-\u1bf3\u1c00-\u1c22\u1c40-\u1c49\u1c5b-\u1c7d\u1cd0-\u1cd2\u1d00-\u1dbe\u1e01-\u1f15\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2d81-\u2d96\u2de0-\u2dff\u3021-\u3028\u3099\u309a\ua640-\ua66d\ua674-\ua67d\ua69f\ua6f0-\ua6f1\ua7f8-\ua800\ua806\ua80b\ua823-\ua827\ua880-\ua881\ua8b4-\ua8c4\ua8d0-\ua8d9\ua8f3-\ua8f7\ua900-\ua909\ua926-\ua92d\ua930-\ua945\ua980-\ua983\ua9b3-\ua9c0\uaa00-\uaa27\uaa40-\uaa41\uaa4c-\uaa4d\uaa50-\uaa59\uaa7b\uaae0-\uaae9\uaaf2-\uaaf3\uabc0-\uabe1\uabec\uabed\uabf0-\uabf9\ufb20-\ufb28\ufe00-\ufe0f\ufe20-\ufe26\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f]/,
oa=/[\n\r\u2028\u2029]/,X=/\r\n|[\n\r\u2028\u2029]/g,ma=b.isIdentifierStart=function(a){return 65>a?36===a:91>a?!0:97>a?95===a:123>a?!0:170<=a&&$a.test(String.fromCharCode(a))},bb=b.isIdentifierChar=function(a){return 48>a?36===a:58>a?!0:65>a?!1:91>a?!0:97>a?95===a:123>a?!0:170<=a&&Qb.test(String.fromCharCode(a))},ba,Ia={kind:"loop"},Pb={kind:"switch"}});var Interpreter=function(b,a){"string"===typeof b&&(b=acorn.parse(b,Interpreter.PARSE_OPTIONS));this.ast=b;this.initFunc_=a;this.paused_=!1;this.polyfills_=[];this.functionCounter_=0;this.stepFunctions_=Object.create(null);a=/^step([A-Z]\w*)$/;var c,d;for(d in this)"function"===typeof this[d]&&(c=d.match(a))&&(this.stepFunctions_[c[1]]=this[d].bind(this));this.global=this.createScope(this.ast,null);this.ast=acorn.parse(this.polyfills_.join("\n"),Interpreter.PARSE_OPTIONS);this.polyfills_=void 0;this.stripLocations_(this.ast,
void 0,void 0);c=new Interpreter.State(this.ast,this.global);c.done=!1;this.stateStack=[c];this.run();this.value=void 0;this.ast=b;c=new Interpreter.State(this.ast,this.global);c.done=!1;this.stateStack.length=0;this.stateStack[0]=c;this.nodeConstructor=c.node.constructor;this.stateStack=this.stateStack};Interpreter.PARSE_OPTIONS={ecmaVersion:5};Interpreter.READONLY_DESCRIPTOR={configurable:!0,enumerable:!0,writable:!1};Interpreter.NONENUMERABLE_DESCRIPTOR={configurable:!0,enumerable:!1,writable:!0};
Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR={configurable:!0,enumerable:!1,writable:!1};Interpreter.VARIABLE_DESCRIPTOR={configurable:!1,enumerable:!0,writable:!0};Interpreter.STEP_ERROR={STEP_ERROR:!0};Interpreter.SCOPE_REFERENCE={SCOPE_REFERENCE:!0};Interpreter.VALUE_IN_DESCRIPTOR={VALUE_IN_DESCRIPTOR:!0};Interpreter.REGEXP_TIMEOUT={REGEXP_TIMEOUT:!0};Interpreter.toStringCycles_=[];Interpreter.vm=null;
Interpreter.WORKER_CODE=["onmessage = function(e) {","var result;","var data = e.data;","switch (data[0]) {","case 'split':","result = data[1].split(data[2], data[3]);","break;","case 'match':","result = data[1].match(data[2]);","break;","case 'search':","result = data[1].search(data[2]);","break;","case 'replace':","result = data[1].replace(data[2], data[3]);","break;","case 'exec':","var regexp = data[1];","regexp.lastIndex = data[2];","result = [regexp.exec(data[3]), data[1].lastIndex];","break;",
"default:","throw 'Unknown RegExp operation: ' + data[0];","}","postMessage(result);","};"];Interpreter.prototype.REGEXP_MODE=2;Interpreter.prototype.REGEXP_THREAD_TIMEOUT=1E3;
Interpreter.prototype.appendCode=function(b){var a=this.stateStack[0];if(!a||"Program"!==a.node.type)throw Error("Expecting original AST to start with a Program node.");"string"===typeof b&&(b=acorn.parse(b,Interpreter.PARSE_OPTIONS));if(!b||"Program"!==b.type)throw Error("Expecting new AST to start with a Program node.");this.populateScope_(b,a.scope);for(var c=0,d;d=b.body[c];c++)a.node.body.push(d);a.done=!1};
Interpreter.prototype.step=function(){var b=this.stateStack,a=b[b.length-1];if(!a)return!1;var c=a.node,d=c.type;if("Program"===d&&a.done)return!1;if(this.paused_)return!0;try{var e=this.stepFunctions_[d](b,a,c)}catch(f){if(f!==Interpreter.STEP_ERROR)throw f;}e&&b.push(e);return c.end?!0:this.step()};Interpreter.prototype.run=function(){for(;!this.paused_&&this.step(););return this.paused_};
Interpreter.prototype.initGlobalScope=function(b){this.setProperty(b,"NaN",NaN,Interpreter.READONLY_DESCRIPTOR);this.setProperty(b,"Infinity",Infinity,Interpreter.READONLY_DESCRIPTOR);this.setProperty(b,"undefined",void 0,Interpreter.READONLY_DESCRIPTOR);this.setProperty(b,"window",b,Interpreter.READONLY_DESCRIPTOR);this.setProperty(b,"this",b,Interpreter.READONLY_DESCRIPTOR);this.setProperty(b,"self",b);this.OBJECT_PROTO=new Interpreter.Object(null);this.FUNCTION_PROTO=new Interpreter.Object(this.OBJECT_PROTO);
this.initFunction(b);this.initObject(b);b.proto=this.OBJECT_PROTO;this.setProperty(b,"constructor",this.OBJECT,Interpreter.NONENUMERABLE_DESCRIPTOR);this.initArray(b);this.initString(b);this.initBoolean(b);this.initNumber(b);this.initDate(b);this.initRegExp(b);this.initError(b);this.initMath(b);this.initJSON(b);var a=this,c=this.createNativeFunction(function(a){throw EvalError("Can't happen");},!1);c.eval=!0;this.setProperty(b,"eval",c);this.setProperty(b,"parseInt",this.createNativeFunction(parseInt,
!1));this.setProperty(b,"parseFloat",this.createNativeFunction(parseFloat,!1));this.setProperty(b,"isNaN",this.createNativeFunction(isNaN,!1));this.setProperty(b,"isFinite",this.createNativeFunction(isFinite,!1));c=[[escape,"escape"],[unescape,"unescape"],[decodeURI,"decodeURI"],[decodeURIComponent,"decodeURIComponent"],[encodeURI,"encodeURI"],[encodeURIComponent,"encodeURIComponent"]];for(var d=0;d<c.length;d++){var e=function(b){return function(c){try{return b(c)}catch(k){a.throwException(a.URI_ERROR,
k.message)}}}(c[d][0]);this.setProperty(b,c[d][1],this.createNativeFunction(e,!1),Interpreter.NONENUMERABLE_DESCRIPTOR)}this.OBJECT=this.OBJECT;this.OBJECT_PROTO=this.OBJECT_PROTO;this.FUNCTION=this.FUNCTION;this.FUNCTION_PROTO=this.FUNCTION_PROTO;this.ARRAY=this.ARRAY;this.ARRAY_PROTO=this.ARRAY_PROTO;this.REGEXP=this.REGEXP;this.REGEXP_PROTO=this.REGEXP_PROTO;this.DATE=this.DATE;this.DATE_PROTO=this.DATE_PROTO;this.UNDEFINED=void 0;this.NULL=null;this.NAN=NaN;this.TRUE=!0;this.FALSE=!1;this.STRING_EMPTY=
"";this.NUMBER_ZERO=0;this.NUMBER_ONE=1;this.initFunc_&&this.initFunc_(this,b)};
Interpreter.prototype.initFunction=function(b){var a=this,c=/^[A-Za-z_$][\w$]*$/;var d=function(b){var d=a.calledWithNew()?this:a.createObjectProto(a.FUNCTION_PROTO),e=arguments.length?String(arguments[arguments.length-1]):"",f=Array.prototype.slice.call(arguments,0,-1).join(",").trim();if(f){f=f.split(/\s*,\s*/);for(var x=0;x<f.length;x++){var r=f[x];c.test(r)||a.throwException(a.SYNTAX_ERROR,"Invalid function argument: "+r)}f=f.join(", ")}d.parentScope=a.global;try{var da=acorn.parse("(function("+
f+") {"+e+"})",Interpreter.PARSE_OPTIONS)}catch(S){a.throwException(a.SYNTAX_ERROR,"Invalid code: "+S.message)}1!==da.body.length&&a.throwException(a.SYNTAX_ERROR,"Invalid code in function body.");d.node=da.body[0].expression;a.setProperty(d,"length",d.node.length,Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR);return d};d.id=this.functionCounter_++;this.FUNCTION=this.createObjectProto(this.FUNCTION_PROTO);this.setProperty(b,"Function",this.FUNCTION);this.setProperty(this.FUNCTION,"prototype",this.FUNCTION_PROTO,
Interpreter.NONENUMERABLE_DESCRIPTOR);this.FUNCTION.nativeFunc=d;this.setProperty(this.FUNCTION_PROTO,"constructor",this.FUNCTION,Interpreter.NONENUMERABLE_DESCRIPTOR);this.FUNCTION_PROTO.nativeFunc=function(){};this.FUNCTION_PROTO.nativeFunc.id=this.functionCounter_++;this.setProperty(this.FUNCTION_PROTO,"length",0,Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR);var e=function(b){if(!(b&&b.isObject||a.getScope().strict))if(void 0===b||null===b)b=a.global;else{var c=a.createObjectProto(a.getPrototype(b));
c.data=b;b=c}return b};d=function(b,c){var d=a.stateStack[a.stateStack.length-1];d.func_=this;d.funcThis_=e(b);d.arguments_=[];null!==c&&void 0!==c&&(c.isObject?d.arguments_=a.arrayPseudoToNative(c):a.throwException(a.TYPE_ERROR,"CreateListFromArrayLike called on non-object"));d.doneExec_=!1};this.setNativeFunctionPrototype(this.FUNCTION,"apply",d);d=function(b){var c=a.stateStack[a.stateStack.length-1];c.func_=this;c.funcThis_=e(b);c.arguments_=[];for(var d=1;d<arguments.length;d++)c.arguments_.push(arguments[d]);
c.doneExec_=!1};this.setNativeFunctionPrototype(this.FUNCTION,"call",d);this.polyfills_.push("Object.defineProperty(Function.prototype, 'bind',","{configurable: true, writable: true, value:","function(oThis) {","if (typeof this !== 'function') {","throw TypeError('What is trying to be bound is not callable');","}","var aArgs = Array.prototype.slice.call(arguments, 1),","fToBind = this,","fNOP = function() {},","fBound = function() {","return fToBind.apply(this instanceof fNOP","? this",": oThis,",
"aArgs.concat(Array.prototype.slice.call(arguments)));","};","if (this.prototype) {","fNOP.prototype = this.prototype;","}","fBound.prototype = new fNOP();","return fBound;","}","});","");d=function(){return String(this)};this.setNativeFunctionPrototype(this.FUNCTION,"toString",d);this.setProperty(this.FUNCTION,"toString",this.createNativeFunction(d,!1),Interpreter.NONENUMERABLE_DESCRIPTOR);d=function(){return this.valueOf()};this.setNativeFunctionPrototype(this.FUNCTION,"valueOf",d);this.setProperty(this.FUNCTION,
"valueOf",this.createNativeFunction(d,!1),Interpreter.NONENUMERABLE_DESCRIPTOR)};
Interpreter.prototype.initObject=function(b){var a=this;var c=function(b){if(void 0===b||null===b)return a.calledWithNew()?this:a.createObjectProto(a.OBJECT_PROTO);if(!b.isObject){var c=a.createObjectProto(a.getPrototype(b));c.data=b;return c}return b};this.OBJECT=this.createNativeFunction(c,!0);this.setProperty(this.OBJECT,"prototype",this.OBJECT_PROTO,Interpreter.NONENUMERABLE_DESCRIPTOR);this.setProperty(this.OBJECT_PROTO,"constructor",this.OBJECT,Interpreter.NONENUMERABLE_DESCRIPTOR);this.setProperty(b,
"Object",this.OBJECT);var d=function(b){void 0!==b&&null!==b||a.throwException(a.TYPE_ERROR,"Cannot convert '"+b+"' to object")};c=function(b){d(b);return a.arrayNativeToPseudo(Object.getOwnPropertyNames(b.isObject?b.properties:b))};this.setProperty(this.OBJECT,"getOwnPropertyNames",this.createNativeFunction(c,!1),Interpreter.NONENUMERABLE_DESCRIPTOR);c=function(b){d(b);b.isObject&&(b=b.properties);return a.arrayNativeToPseudo(Object.keys(b))};this.setProperty(this.OBJECT,"keys",this.createNativeFunction(c,
!1),Interpreter.NONENUMERABLE_DESCRIPTOR);c=function(b){if(null===b)return a.createObjectProto(null);void 0!==b&&b.isObject||a.throwException(a.TYPE_ERROR,"Object prototype may only be an Object or null");return a.createObjectProto(b)};this.setProperty(this.OBJECT,"create",this.createNativeFunction(c,!1),Interpreter.NONENUMERABLE_DESCRIPTOR);this.polyfills_.push("(function() {","var create_ = Object.create;","Object.create = function(proto, props) {","var obj = create_(proto);","props && Object.defineProperties(obj, props);",
"return obj;","};","})();","");c=function(b,c,d){c=String(c);b&&b.isObject||a.throwException(a.TYPE_ERROR,"Object.defineProperty called on non-object");d&&d.isObject||a.throwException(a.TYPE_ERROR,"Property description must be an object");!b.properties[c]&&b.preventExtensions&&a.throwException(a.TYPE_ERROR,"Can't define property '"+c+"', object is not extensible");a.setProperty(b,c,Interpreter.VALUE_IN_DESCRIPTOR,d.properties);return b};this.setProperty(this.OBJECT,"defineProperty",this.createNativeFunction(c,
!1),Interpreter.NONENUMERABLE_DESCRIPTOR);this.polyfills_.push("(function() {","var defineProperty_ = Object.defineProperty;","Object.defineProperty = function(obj, prop, d1) {","var d2 = {};","if ('configurable' in d1) d2.configurable = d1.configurable;","if ('enumerable' in d1) d2.enumerable = d1.enumerable;","if ('writable' in d1) d2.writable = d1.writable;","if ('value' in d1) d2.value = d1.value;","if ('get' in d1) d2.get = d1.get;","if ('set' in d1) d2.set = d1.set;","return defineProperty_(obj, prop, d2);",
"};","})();","Object.defineProperty(Object, 'defineProperties',","{configurable: true, writable: true, value:","function(obj, props) {","var keys = Object.keys(props);","for (var i = 0; i < keys.length; i++) {","Object.defineProperty(obj, keys[i], props[keys[i]]);","}","return obj;","}","});","");c=function(b,c){b&&b.isObject||a.throwException(a.TYPE_ERROR,"Object.getOwnPropertyDescriptor called on non-object");c=String(c);if(c in b.properties){var d=Object.getOwnPropertyDescriptor(b.properties,c),
e=b.getter[c];b=b.setter[c];if(e||b)d.get=e,d.set=b,delete d.value,delete d.writable;e=d.value;b="value"in d;delete d.value;d=a.nativeToPseudo(d);b&&a.setProperty(d,"value",e);return d}};this.setProperty(this.OBJECT,"getOwnPropertyDescriptor",this.createNativeFunction(c,!1),Interpreter.NONENUMERABLE_DESCRIPTOR);c=function(b){d(b);return a.getPrototype(b)};this.setProperty(this.OBJECT,"getPrototypeOf",this.createNativeFunction(c,!1),Interpreter.NONENUMERABLE_DESCRIPTOR);c=function(a){return!!a&&!a.preventExtensions};
this.setProperty(this.OBJECT,"isExtensible",this.createNativeFunction(c,!1),Interpreter.NONENUMERABLE_DESCRIPTOR);c=function(a){a&&a.isObject&&(a.preventExtensions=!0);return a};this.setProperty(this.OBJECT,"preventExtensions",this.createNativeFunction(c,!1),Interpreter.NONENUMERABLE_DESCRIPTOR);this.setNativeFunctionPrototype(this.OBJECT,"toString",Interpreter.Object.prototype.toString);this.setNativeFunctionPrototype(this.OBJECT,"toLocaleString",Interpreter.Object.prototype.toString);this.setNativeFunctionPrototype(this.OBJECT,
"valueOf",Interpreter.Object.prototype.valueOf);c=function(a){d(this);return this.isObject?String(a)in this.properties:this.hasOwnProperty(a)};this.setNativeFunctionPrototype(this.OBJECT,"hasOwnProperty",c);c=function(a){d(this);return this.isObject?Object.prototype.propertyIsEnumerable.call(this.properties,a):this.propertyIsEnumerable(a)};this.setNativeFunctionPrototype(this.OBJECT,"propertyIsEnumerable",c);c=function(b){for(;;){b=a.getPrototype(b);if(!b)return!1;if(b===this)return!0}};this.setNativeFunctionPrototype(this.OBJECT,
"isPrototypeOf",c)};
Interpreter.prototype.initArray=function(b){var a=this;var c=function(b){var c=a.calledWithNew()?this:a.createObjectProto(a.ARRAY_PROTO),d=arguments[0];if(1===arguments.length&&"number"===typeof d)isNaN(Interpreter.legalArrayLength(d))&&a.throwException(a.RANGE_ERROR,"Invalid array length"),c.properties.length=d;else{for(d=0;d<arguments.length;d++)c.properties[d]=arguments[d];c.properties.length=d}return c};this.ARRAY=this.createNativeFunction(c,!0);this.ARRAY_PROTO=this.ARRAY.properties.prototype;this.setProperty(b,
"Array",this.ARRAY);c=function(a){return a&&"Array"===a.class};this.setProperty(this.ARRAY,"isArray",this.createNativeFunction(c,!1),Interpreter.NONENUMERABLE_DESCRIPTOR);this.setNativeFunctionPrototype(this.ARRAY,"pop",function(){return Array.prototype.pop.call(this.properties)});c=function(a){return Array.prototype.push.apply(this.properties,arguments)};this.setNativeFunctionPrototype(this.ARRAY,"push",c);this.setNativeFunctionPrototype(this.ARRAY,"shift",function(){return Array.prototype.shift.call(this.properties)});
c=function(a){return Array.prototype.unshift.apply(this.properties,arguments)};this.setNativeFunctionPrototype(this.ARRAY,"unshift",c);this.setNativeFunctionPrototype(this.ARRAY,"reverse",function(){Array.prototype.reverse.call(this.properties);return this});c=function(b,c){var d=Array.prototype.splice.apply(this.properties,arguments);return a.arrayNativeToPseudo(d)};this.setNativeFunctionPrototype(this.ARRAY,"splice",c);c=function(b,c){b=Array.prototype.slice.call(this.properties,b,c);return a.arrayNativeToPseudo(b)};
this.setNativeFunctionPrototype(this.ARRAY,"slice",c);c=function(a){return Array.prototype.join.call(this.properties,a)};this.setNativeFunctionPrototype(this.ARRAY,"join",c);c=function(b){for(var c=[],d=0,p=a.getProperty(this,"length"),k=0;k<p;k++){if(a.hasProperty(this,k)){var B=a.getProperty(this,k);c[d]=B}d++}for(k=0;k<arguments.length;k++)if(p=arguments[k],a.isa(p,a.ARRAY)){B=a.getProperty(p,"length");for(var x=0;x<B;x++)a.hasProperty(p,x)&&(c[d]=a.getProperty(p,x)),d++}else c[d]=p;return a.arrayNativeToPseudo(c)};
this.setNativeFunctionPrototype(this.ARRAY,"concat",c);c=function(a,b){return Array.prototype.indexOf.apply(this.properties,arguments)};this.setNativeFunctionPrototype(this.ARRAY,"indexOf",c);c=function(a,b){return Array.prototype.lastIndexOf.apply(this.properties,arguments)};this.setNativeFunctionPrototype(this.ARRAY,"lastIndexOf",c);this.setNativeFunctionPrototype(this.ARRAY,"sort",function(){Array.prototype.sort.call(this.properties);return this});this.polyfills_.push("Object.defineProperty(Array.prototype, 'every',",
"{configurable: true, writable: true, value:","function(callbackfn, thisArg) {","if (!this || typeof callbackfn !== 'function') throw TypeError();","var T, k;","var O = Object(this);","var len = O.length >>> 0;","if (arguments.length > 1) T = thisArg;","k = 0;","while (k < len) {","if (k in O && !callbackfn.call(T, O[k], k, O)) return false;","k++;","}","return true;","}","});","Object.defineProperty(Array.prototype, 'filter',","{configurable: true, writable: true, value:","function(fun/*, thisArg*/) {",
"if (this === void 0 || this === null || typeof fun !== 'function') throw TypeError();","var t = Object(this);","var len = t.length >>> 0;","var res = [];","var thisArg = arguments.length >= 2 ? arguments[1] : void 0;","for (var i = 0; i < len; i++) {","if (i in t) {","var val = t[i];","if (fun.call(thisArg, val, i, t)) res.push(val);","}","}","return res;","}","});","Object.defineProperty(Array.prototype, 'forEach',","{configurable: true, writable: true, value:","function(callback, thisArg) {","if (!this || typeof callback !== 'function') throw TypeError();",
"var T, k;","var O = Object(this);","var len = O.length >>> 0;","if (arguments.length > 1) T = thisArg;","k = 0;","while (k < len) {","if (k in O) callback.call(T, O[k], k, O);","k++;","}","}","});","Object.defineProperty(Array.prototype, 'map',","{configurable: true, writable: true, value:","function(callback, thisArg) {","if (!this || typeof callback !== 'function') new TypeError;","var T, A, k;","var O = Object(this);","var len = O.length >>> 0;","if (arguments.length > 1) T = thisArg;","A = new Array(len);",
"k = 0;","while (k < len) {","if (k in O) A[k] = callback.call(T, O[k], k, O);","k++;","}","return A;","}","});","Object.defineProperty(Array.prototype, 'reduce',","{configurable: true, writable: true, value:","function(callback /*, initialValue*/) {","if (!this || typeof callback !== 'function') throw TypeError();","var t = Object(this), len = t.length >>> 0, k = 0, value;","if (arguments.length === 2) {","value = arguments[1];","} else {","while (k < len && !(k in t)) k++;","if (k >= len) {","throw TypeError('Reduce of empty array with no initial value');",
"}","value = t[k++];","}","for (; k < len; k++) {","if (k in t) value = callback(value, t[k], k, t);","}","return value;","}","});","Object.defineProperty(Array.prototype, 'reduceRight',","{configurable: true, writable: true, value:","function(callback /*, initialValue*/) {","if (null === this || 'undefined' === typeof this || 'function' !== typeof callback) throw TypeError();","var t = Object(this), len = t.length >>> 0, k = len - 1, value;","if (arguments.length >= 2) {","value = arguments[1];",
"} else {","while (k >= 0 && !(k in t)) k--;","if (k < 0) {","throw TypeError('Reduce of empty array with no initial value');","}","value = t[k--];","}","for (; k >= 0; k--) {","if (k in t) value = callback(value, t[k], k, t);","}","return value;","}","});","Object.defineProperty(Array.prototype, 'some',","{configurable: true, writable: true, value:","function(fun/*, thisArg*/) {","if (!this || typeof fun !== 'function') throw TypeError();","var t = Object(this);","var len = t.length >>> 0;","var thisArg = arguments.length >= 2 ? arguments[1] : void 0;",
"for (var i = 0; i < len; i++) {","if (i in t && fun.call(thisArg, t[i], i, t)) {","return true;","}","}","return false;","}","});","(function() {","var sort_ = Array.prototype.sort;","Array.prototype.sort = function(opt_comp) {","if (typeof opt_comp !== 'function') {","return sort_.call(this);","}","for (var i = 0; i < this.length; i++) {","var changes = 0;","for (var j = 0; j < this.length - i - 1; j++) {","if (opt_comp(this[j], this[j + 1]) > 0) {","var swap = this[j];","this[j] = this[j + 1];",
"this[j + 1] = swap;","changes++;","}","}","if (!changes) break;","}","return this;","};","})();","Object.defineProperty(Array.prototype, 'toLocaleString',","{configurable: true, writable: true, value:","function() {","var out = [];","for (var i = 0; i < this.length; i++) {","out[i] = (this[i] === null || this[i] === undefined) ? '' : this[i].toLocaleString();","}","return out.join(',');","}","});","")};
Interpreter.prototype.initString=function(b){var a=this;var c=function(b){b=String(b);return a.calledWithNew()?(this.data=b,this):b};this.STRING=this.createNativeFunction(c,!0);this.setProperty(b,"String",this.STRING);this.setProperty(this.STRING,"fromCharCode",this.createNativeFunction(String.fromCharCode,!1),Interpreter.NONENUMERABLE_DESCRIPTOR);b="charAt charCodeAt concat indexOf lastIndexOf slice substr substring toLocaleLowerCase toLocaleUpperCase toLowerCase toUpperCase trim".split(" ");for(c=
0;c<b.length;c++)this.setNativeFunctionPrototype(this.STRING,b[c],String.prototype[b[c]]);c=function(b,c,f){c=c?a.pseudoToNative(c):void 0;f=f?a.pseudoToNative(f):void 0;return String(this).localeCompare(b,c,f)};this.setNativeFunctionPrototype(this.STRING,"localeCompare",c);c=function(b,c,f){var d=String(this);c=c?Number(c):void 0;if(a.isa(b,a.REGEXP)&&(b=b.data,a.maybeThrowRegExp(b,f),2===a.REGEXP_MODE)){if(Interpreter.vm)b=a.vmCall("string.split(separator, limit)",{string:d,separator:b,limit:c},
b,f),b!==Interpreter.REGEXP_TIMEOUT&&f(a.arrayNativeToPseudo(b));else{var e=a.createWorker(),B=a.regExpTimeout(b,e,f);e.onmessage=function(b){clearTimeout(B);f(a.arrayNativeToPseudo(b.data))};e.postMessage(["split",d,b,c])}return}b=d.split(b,c);f(a.arrayNativeToPseudo(b))};this.setAsyncFunctionPrototype(this.STRING,"split",c);c=function(b,c){var d=String(this);b=a.isa(b,a.REGEXP)?b.data:new RegExp(b);a.maybeThrowRegExp(b,c);if(2===a.REGEXP_MODE)if(Interpreter.vm)b=a.vmCall("string.match(regexp)",
{string:d,regexp:b},b,c),b!==Interpreter.REGEXP_TIMEOUT&&c(b&&a.arrayNativeToPseudo(b));else{var e=a.createWorker(),k=a.regExpTimeout(b,e,c);e.onmessage=function(b){clearTimeout(k);c(b.data&&a.arrayNativeToPseudo(b.data))};e.postMessage(["match",d,b])}else b=d.match(b),c(b&&a.arrayNativeToPseudo(b))};this.setAsyncFunctionPrototype(this.STRING,"match",c);c=function(b,c){var d=String(this);b=a.isa(b,a.REGEXP)?b.data:new RegExp(b);a.maybeThrowRegExp(b,c);if(2===a.REGEXP_MODE)if(Interpreter.vm)b=a.vmCall("string.search(regexp)",
{string:d,regexp:b},b,c),b!==Interpreter.REGEXP_TIMEOUT&&c(b);else{var e=a.createWorker(),k=a.regExpTimeout(b,e,c);e.onmessage=function(a){clearTimeout(k);c(a.data)};e.postMessage(["search",d,b])}else c(d.search(b))};this.setAsyncFunctionPrototype(this.STRING,"search",c);c=function(b,c,f){var d=String(this);c=String(c);if(a.isa(b,a.REGEXP)&&(b=b.data,a.maybeThrowRegExp(b,f),2===a.REGEXP_MODE)){if(Interpreter.vm)b=a.vmCall("string.replace(substr, newSubstr)",{string:d,substr:b,newSubstr:c},b,f),b!==
Interpreter.REGEXP_TIMEOUT&&f(b);else{var e=a.createWorker(),B=a.regExpTimeout(b,e,f);e.onmessage=function(a){clearTimeout(B);f(a.data)};e.postMessage(["replace",d,b,c])}return}f(d.replace(b,c))};this.setAsyncFunctionPrototype(this.STRING,"replace",c);this.polyfills_.push("(function() {","var replace_ = String.prototype.replace;","String.prototype.replace = function(substr, newSubstr) {","if (typeof newSubstr !== 'function') {","return replace_.call(this, substr, newSubstr);","}","var str = this;",
"if (substr instanceof RegExp) {","var subs = [];","var m = substr.exec(str);","while (m) {","m.push(m.index, str);","var inject = newSubstr.apply(null, m);","subs.push([m.index, m[0].length, inject]);","m = substr.global ? substr.exec(str) : null;","}","for (var i = subs.length - 1; i >= 0; i--) {","str = str.substring(0, subs[i][0]) + subs[i][2] + str.substring(subs[i][0] + subs[i][1]);","}","} else {","var i = str.indexOf(substr);","if (i !== -1) {","var inject = newSubstr(str.substr(i, substr.length), i, str);",
"str = str.substring(0, i) + inject + str.substring(i + substr.length);","}","}","return str;","};","})();","")};Interpreter.prototype.initBoolean=function(b){var a=this;this.BOOLEAN=this.createNativeFunction(function(b){b=!!b;return a.calledWithNew()?(this.data=b,this):b},!0);this.setProperty(b,"Boolean",this.BOOLEAN)};
Interpreter.prototype.initNumber=function(b){var a=this;var c=function(b){b=Number(b);return a.calledWithNew()?(this.data=b,this):b};this.NUMBER=this.createNativeFunction(c,!0);this.setProperty(b,"Number",this.NUMBER);b=["MAX_VALUE","MIN_VALUE","NaN","NEGATIVE_INFINITY","POSITIVE_INFINITY"];for(c=0;c<b.length;c++)this.setProperty(this.NUMBER,b[c],Number[b[c]],Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR);c=function(b){try{return Number(this).toExponential(b)}catch(e){a.throwException(a.ERROR,e.message)}};
this.setNativeFunctionPrototype(this.NUMBER,"toExponential",c);c=function(b){try{return Number(this).toFixed(b)}catch(e){a.throwException(a.ERROR,e.message)}};this.setNativeFunctionPrototype(this.NUMBER,"toFixed",c);c=function(b){try{return Number(this).toPrecision(b)}catch(e){a.throwException(a.ERROR,e.message)}};this.setNativeFunctionPrototype(this.NUMBER,"toPrecision",c);c=function(b){try{return Number(this).toString(b)}catch(e){a.throwException(a.ERROR,e.message)}};this.setNativeFunctionPrototype(this.NUMBER,
"toString",c);c=function(b,c){b=b?a.pseudoToNative(b):void 0;c=c?a.pseudoToNative(c):void 0;return Number(this).toLocaleString(b,c)};this.setNativeFunctionPrototype(this.NUMBER,"toLocaleString",c)};
Interpreter.prototype.initDate=function(b){var a=this;var c=function(b,c){if(!a.calledWithNew())return Date();var d=[null].concat(Array.from(arguments));this.data=new (Function.prototype.bind.apply(Date,d));return this};this.DATE=this.createNativeFunction(c,!0);this.DATE_PROTO=this.DATE.properties.prototype;this.setProperty(b,"Date",this.DATE);this.setProperty(this.DATE,"now",this.createNativeFunction(Date.now,!1),Interpreter.NONENUMERABLE_DESCRIPTOR);this.setProperty(this.DATE,"parse",this.createNativeFunction(Date.parse,
!1),Interpreter.NONENUMERABLE_DESCRIPTOR);this.setProperty(this.DATE,"UTC",this.createNativeFunction(Date.UTC,!1),Interpreter.NONENUMERABLE_DESCRIPTOR);b="getDate getDay getFullYear getHours getMilliseconds getMinutes getMonth getSeconds getTime getTimezoneOffset getUTCDate getUTCDay getUTCFullYear getUTCHours getUTCMilliseconds getUTCMinutes getUTCMonth getUTCSeconds getYear setDate setFullYear setHours setMilliseconds setMinutes setMonth setSeconds setTime setUTCDate setUTCFullYear setUTCHours setUTCMilliseconds setUTCMinutes setUTCMonth setUTCSeconds setYear toDateString toISOString toJSON toGMTString toLocaleDateString toLocaleString toLocaleTimeString toTimeString toUTCString".split(" ");
for(var d=0;d<b.length;d++)c=function(b){return function(c){for(var d=[],e=0;e<arguments.length;e++)d[e]=a.pseudoToNative(arguments[e]);return this.data[b].apply(this.data,d)}}(b[d]),this.setNativeFunctionPrototype(this.DATE,b[d],c)};
Interpreter.prototype.initRegExp=function(b){var a=this;var c=function(b,c){var d=a.calledWithNew()?this:a.createObjectProto(a.REGEXP_PROTO);b=b?String(b):"";c=c?String(c):"";a.populateRegExp(d,new RegExp(b,c));return d};this.REGEXP=this.createNativeFunction(c,!0);this.REGEXP_PROTO=this.REGEXP.properties.prototype;this.setProperty(b,"RegExp",this.REGEXP);this.setProperty(this.REGEXP.properties.prototype,"global",void 0,Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR);this.setProperty(this.REGEXP.properties.prototype,
"ignoreCase",void 0,Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR);this.setProperty(this.REGEXP.properties.prototype,"multiline",void 0,Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR);this.setProperty(this.REGEXP.properties.prototype,"source","(?:)",Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR);this.polyfills_.push("Object.defineProperty(RegExp.prototype, 'test',","{configurable: true, writable: true, value:","function(str) {","return String(str).search(this) !== -1","}","});");c=function(b,c){function d(b){if(b){var c=
a.arrayNativeToPseudo(b);a.setProperty(c,"index",b.index);a.setProperty(c,"input",b.input);return c}return null}var e=this,k=e.data;b=String(b);k.lastIndex=Number(a.getProperty(this,"lastIndex"));a.maybeThrowRegExp(k,c);if(2===a.REGEXP_MODE)if(Interpreter.vm)b=a.vmCall("regexp.exec(string)",{string:b,regexp:k},k,c),b!==Interpreter.REGEXP_TIMEOUT&&(a.setProperty(e,"lastIndex",k.lastIndex),c(d(b)));else{var B=a.createWorker(),x=a.regExpTimeout(k,B,c);B.onmessage=function(b){clearTimeout(x);a.setProperty(e,
"lastIndex",b.data[1]);c(d(b.data[0]))};B.postMessage(["exec",k,k.lastIndex,b])}else b=k.exec(b),a.setProperty(e,"lastIndex",k.lastIndex),c(d(b))};this.setAsyncFunctionPrototype(this.REGEXP,"exec",c)};
Interpreter.prototype.initError=function(b){var a=this;this.ERROR=this.createNativeFunction(function(b){var c=a.calledWithNew()?this:a.createObject(a.ERROR);b&&a.setProperty(c,"message",String(b),Interpreter.NONENUMERABLE_DESCRIPTOR);return c},!0);this.setProperty(b,"Error",this.ERROR);this.setProperty(this.ERROR.properties.prototype,"message","",Interpreter.NONENUMERABLE_DESCRIPTOR);this.setProperty(this.ERROR.properties.prototype,"name","Error",Interpreter.NONENUMERABLE_DESCRIPTOR);var c=function(c){var d=
a.createNativeFunction(function(b){var c=a.calledWithNew()?this:a.createObject(d);b&&a.setProperty(c,"message",String(b),Interpreter.NONENUMERABLE_DESCRIPTOR);return c},!0);a.setProperty(d,"prototype",a.createObject(a.ERROR),Interpreter.NONENUMERABLE_DESCRIPTOR);a.setProperty(d.properties.prototype,"name",c,Interpreter.NONENUMERABLE_DESCRIPTOR);a.setProperty(b,c,d);return d};this.EVAL_ERROR=c("EvalError");this.RANGE_ERROR=c("RangeError");this.REFERENCE_ERROR=c("ReferenceError");this.SYNTAX_ERROR=
c("SyntaxError");this.TYPE_ERROR=c("TypeError");this.URI_ERROR=c("URIError")};
Interpreter.prototype.initMath=function(b){var a=this.createObjectProto(this.OBJECT_PROTO);this.setProperty(b,"Math",a);var c="E LN2 LN10 LOG2E LOG10E PI SQRT1_2 SQRT2".split(" ");for(b=0;b<c.length;b++)this.setProperty(a,c[b],Math[c[b]],Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR);c="abs acos asin atan atan2 ceil cos exp floor log max min pow random round sin sqrt tan".split(" ");for(b=0;b<c.length;b++)this.setProperty(a,c[b],this.createNativeFunction(Math[c[b]],!1),Interpreter.NONENUMERABLE_DESCRIPTOR)};
Interpreter.prototype.initJSON=function(b){var a=this,c=a.createObjectProto(this.OBJECT_PROTO);this.setProperty(b,"JSON",c);b=function(b){try{var c=JSON.parse(String(b))}catch(f){a.throwException(a.SYNTAX_ERROR,f.message)}return a.nativeToPseudo(c)};this.setProperty(c,"parse",this.createNativeFunction(b,!1));b=function(b){b=a.pseudoToNative(b);try{var c=JSON.stringify(b)}catch(f){a.throwException(a.TYPE_ERROR,f.message)}return c};this.setProperty(c,"stringify",this.createNativeFunction(b,!1))};
Interpreter.prototype.isa=function(b,a){if(null===b||void 0===b||!a)return!1;a=a.properties.prototype;if(b===a)return!0;for(b=this.getPrototype(b);b;){if(b===a)return!0;b=b.proto}return!1};
Interpreter.prototype.populateRegExp=function(b,a){b.data=a;this.setProperty(b,"lastIndex",a.lastIndex,Interpreter.NONENUMERABLE_DESCRIPTOR);this.setProperty(b,"source",a.source,Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR);this.setProperty(b,"global",a.global,Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR);this.setProperty(b,"ignoreCase",a.ignoreCase,Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR);this.setProperty(b,"multiline",a.multiline,Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR)};
Interpreter.prototype.createWorker=function(){var b=this.createWorker.blob_;b||(b=new Blob([Interpreter.WORKER_CODE.join("\n")],{type:"application/javascript"}),this.createWorker.blob_=b);return new Worker(URL.createObjectURL(b))};Interpreter.prototype.vmCall=function(b,a,c,d){var e={timeout:this.REGEXP_THREAD_TIMEOUT};try{return Interpreter.vm.runInNewContext(b,a,e)}catch(f){d(null),this.throwException(this.ERROR,"RegExp Timeout: "+c)}return Interpreter.REGEXP_TIMEOUT};
Interpreter.prototype.maybeThrowRegExp=function(b,a){if(0===this.REGEXP_MODE)var c=!1;else if(1===this.REGEXP_MODE)c=!0;else if(Interpreter.vm)c=!0;else if("function"===typeof Worker&&"function"===typeof URL)c=!0;else if("function"===typeof require){try{Interpreter.vm=require("vm")}catch(d){}c=!!Interpreter.vm}else c=!1;c||(a(null),this.throwException(this.ERROR,"Regular expressions not supported: "+b))};
Interpreter.prototype.regExpTimeout=function(b,a,c){var d=this;return setTimeout(function(){a.terminate();c(null);try{d.throwException(d.ERROR,"RegExp Timeout: "+b)}catch(e){}},this.REGEXP_THREAD_TIMEOUT)};Interpreter.legalArrayLength=function(b){var a=b>>>0;return a===Number(b)?a:NaN};Interpreter.legalArrayIndex=function(b){var a=b>>>0;return String(a)===String(b)&&4294967295!==a?a:NaN};
Interpreter.Object=function(b){this.getter=Object.create(null);this.setter=Object.create(null);this.properties=Object.create(null);this.proto=b};Interpreter.Object.prototype.proto=null;Interpreter.Object.prototype.isObject=!0;Interpreter.Object.prototype.class="Object";Interpreter.Object.prototype.data=null;
Interpreter.Object.prototype.toString=function(){if("Array"===this.class){var b=Interpreter.toStringCycles_;b.push(this);try{for(var a=[],c=0;c<this.properties.length;c++){var d=this.properties[c];a[c]=d&&d.isObject&&-1!==b.indexOf(d)?"...":d}}finally{b.pop()}return a.join(",")}if("Error"===this.class){b=Interpreter.toStringCycles_;if(-1!==b.indexOf(this))return"[object Error]";d=this;do if("name"in d.properties){a=d.properties.name;break}while(d=d.proto);d=this;do if("message"in d.properties){c=
d.properties.message;break}while(d=d.proto);b.push(this);try{a=a&&String(a),c=c&&String(c)}finally{b.pop()}return c?a+": "+c:String(a)}return null!==this.data?String(this.data):"[object "+this.class+"]"};Interpreter.Object.prototype.valueOf=function(){return void 0===this.data||null===this.data||this.data instanceof RegExp?this:this.data instanceof Date?this.data.valueOf():this.data};Interpreter.prototype.createObject=function(b){return this.createObjectProto(b&&b.properties.prototype)};
Interpreter.prototype.createObjectProto=function(b){if("object"!==typeof b)throw Error("Non object prototype");b=new Interpreter.Object(b);this.isa(b,this.FUNCTION)&&(this.setProperty(b,"prototype",this.createObjectProto(this.OBJECT_PROTO||null),Interpreter.NONENUMERABLE_DESCRIPTOR),b.class="Function");this.isa(b,this.ARRAY)&&(this.setProperty(b,"length",0,{configurable:!1,enumerable:!1,writable:!0}),b.class="Array");this.isa(b,this.ERROR)&&(b.class="Error");return b};
Interpreter.prototype.createFunction=function(b,a){var c=this.createObjectProto(this.FUNCTION_PROTO);c.parentScope=a;c.node=b;this.setProperty(c,"length",c.node.params.length,Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR);return c};
Interpreter.prototype.createNativeFunction=function(b,a){var c=this.createObjectProto(this.FUNCTION_PROTO);c.nativeFunc=b;b.id=this.functionCounter_++;this.setProperty(c,"length",b.length,Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR);a?this.setProperty(c.properties.prototype,"constructor",c,Interpreter.NONENUMERABLE_DESCRIPTOR):!1===a&&(c.illegalConstructor=!0,this.setProperty(c,"prototype",void 0,Interpreter.NONENUMERABLE_DESCRIPTOR));return c};
Interpreter.prototype.createAsyncFunction=function(b){var a=this.createObjectProto(this.FUNCTION_PROTO);a.asyncFunc=b;b.id=this.functionCounter_++;this.setProperty(a,"length",b.length,Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR);return a};
Interpreter.prototype.nativeToPseudo=function(b){if("object"!==typeof b&&"function"!==typeof b||null===b)return b;if(b instanceof RegExp){var a=this.createObjectProto(this.REGEXP_PROTO);this.populateRegExp(a,b);return a}if(b instanceof Date)return a=this.createObjectProto(this.DATE_PROTO),a.data=b,a;if(b instanceof Function){var c=this;return this.createNativeFunction(function(){return c.nativeToPseudo(b.apply(c,Array.prototype.slice.call(arguments).map(function(a){return c.pseudoToNative(a)})))},
void 0)}if(Array.isArray(b)){a=this.createObjectProto(this.ARRAY_PROTO);for(var d=0;d<b.length;d++)d in b&&this.setProperty(a,d,this.nativeToPseudo(b[d]))}else for(d in a=this.createObjectProto(this.OBJECT_PROTO),b)this.setProperty(a,d,this.nativeToPseudo(b[d]));return a};
Interpreter.prototype.pseudoToNative=function(b,a){if("object"!==typeof b&&"function"!==typeof b||null===b)return b;if(this.isa(b,this.REGEXP)||this.isa(b,this.DATE))return b.data;a=a||{pseudo:[],native:[]};var c=a.pseudo.indexOf(b);if(-1!==c)return a.native[c];a.pseudo.push(b);if(this.isa(b,this.ARRAY)){var d=[];a.native.push(d);var e=this.getProperty(b,"length");for(c=0;c<e;c++)this.hasProperty(b,c)&&(d[c]=this.pseudoToNative(this.getProperty(b,c),a))}else for(e in d={},a.native.push(d),b.properties)c=
b.properties[e],d[e]=this.pseudoToNative(c,a);a.pseudo.pop();a.native.pop();return d};Interpreter.prototype.arrayNativeToPseudo=function(b){for(var a=this.createObjectProto(this.ARRAY_PROTO),c=Object.getOwnPropertyNames(b),d=0;d<c.length;d++)this.setProperty(a,c[d],b[c[d]]);return a};Interpreter.prototype.arrayPseudoToNative=function(b){var a=[],c;for(c in b.properties)a[c]=this.getProperty(b,c);a.length=Interpreter.legalArrayLength(this.getProperty(b,"length"))||0;return a};
Interpreter.prototype.getPrototype=function(b){switch(typeof b){case "number":return this.NUMBER.properties.prototype;case "boolean":return this.BOOLEAN.properties.prototype;case "string":return this.STRING.properties.prototype}return b?b.proto:null};
Interpreter.prototype.getProperty=function(b,a){a=String(a);void 0!==b&&null!==b||this.throwException(this.TYPE_ERROR,"Cannot read property '"+a+"' of "+b);if("length"===a){if(this.isa(b,this.STRING))return String(b).length}else if(64>a.charCodeAt(0)&&this.isa(b,this.STRING)){var c=Interpreter.legalArrayIndex(a);if(!isNaN(c)&&c<String(b).length)return String(b)[c]}do if(b.properties&&a in b.properties)return(c=b.getter[a])?(c.isGetter=!0,c):b.properties[a];while(b=this.getPrototype(b))};
Interpreter.prototype.hasProperty=function(b,a){if(!b.isObject)throw TypeError("Primitive data type has no properties");a=String(a);if("length"===a&&this.isa(b,this.STRING))return!0;if(this.isa(b,this.STRING)){var c=Interpreter.legalArrayIndex(a);if(!isNaN(c)&&c<String(b).length)return!0}do if(b.properties&&a in b.properties)return!0;while(b=this.getPrototype(b));return!1};
Interpreter.prototype.setProperty=function(b,a,c,d){a=String(a);void 0!==b&&null!==b||this.throwException(this.TYPE_ERROR,"Cannot set property '"+a+"' of "+b);d&&("get"in d||"set"in d)&&("value"in d||"writable"in d)&&this.throwException(this.TYPE_ERROR,"Invalid property descriptor. Cannot both specify accessors and a value or writable attribute");var e=!this.stateStack||this.getScope().strict;if(b.isObject){if(this.isa(b,this.STRING)){var f=Interpreter.legalArrayIndex(a);if("length"===a||!isNaN(f)&&
f<String(b).length){e&&this.throwException(this.TYPE_ERROR,"Cannot assign to read only property '"+a+"' of String '"+b.data+"'");return}}if("Array"===b.class)if(f=b.properties.length,"length"===a){if(d){if(!("value"in d))return;c=d.value}c=Interpreter.legalArrayLength(c);isNaN(c)&&this.throwException(this.RANGE_ERROR,"Invalid array length");if(c<f)for(p in b.properties){var p=Interpreter.legalArrayIndex(p);!isNaN(p)&&c<=p&&delete b.properties[p]}}else isNaN(p=Interpreter.legalArrayIndex(a))||(b.properties.length=
Math.max(f,p+1));if(!b.preventExtensions||a in b.properties)if(d){"get"in d&&(d.get?b.getter[a]=d.get:delete b.getter[a]);"set"in d&&(d.set?b.setter[a]=d.set:delete b.setter[a]);e={};"configurable"in d&&(e.configurable=d.configurable);"enumerable"in d&&(e.enumerable=d.enumerable);"writable"in d&&(e.writable=d.writable,delete b.getter[a],delete b.setter[a]);"value"in d?(e.value=d.value,delete b.getter[a],delete b.setter[a]):c!==Interpreter.VALUE_IN_DESCRIPTOR&&(e.value=c,delete b.getter[a],delete b.setter[a]);
try{Object.defineProperty(b.properties,a,e)}catch(k){this.throwException(this.TYPE_ERROR,"Cannot redefine property: "+a)}}else{if(c===Interpreter.VALUE_IN_DESCRIPTOR)throw ReferenceError("Value not specified.");for(d=b;!(a in d.properties);)if(d=this.getPrototype(d),!d){d=b;break}if(d.setter&&d.setter[a])return d.setter[a];if(d.getter&&d.getter[a])e&&this.throwException(this.TYPE_ERROR,"Cannot set property '"+a+"' of object '"+b+"' which only has a getter");else try{b.properties[a]=c}catch(k){e&&
this.throwException(this.TYPE_ERROR,"Cannot assign to read only property '"+a+"' of object '"+b+"'")}}else e&&this.throwException(this.TYPE_ERROR,"Can't add property '"+a+"', object is not extensible")}else e&&this.throwException(this.TYPE_ERROR,"Can't create property '"+a+"' on '"+b+"'")};Interpreter.prototype.setNativeFunctionPrototype=function(b,a,c){this.setProperty(b.properties.prototype,a,this.createNativeFunction(c,!1),Interpreter.NONENUMERABLE_DESCRIPTOR)};
Interpreter.prototype.setAsyncFunctionPrototype=function(b,a,c){this.setProperty(b.properties.prototype,a,this.createAsyncFunction(c),Interpreter.NONENUMERABLE_DESCRIPTOR)};Interpreter.prototype.getScope=function(){var b=this.stateStack[this.stateStack.length-1].scope;if(!b)throw Error("No scope found.");return b};
Interpreter.prototype.createScope=function(b,a){var c=this.createObjectProto(null);(c.parentScope=a)||this.initGlobalScope(c);this.populateScope_(b,c);c.strict=!1;a&&a.strict?c.strict=!0:(b=b.body&&b.body[0])&&b.expression&&"Literal"===b.expression.type&&"use strict"===b.expression.value&&(c.strict=!0);return c};Interpreter.prototype.createSpecialScope=function(b,a){if(!b)throw Error("parentScope required");a=a||this.createObjectProto(null);a.parentScope=b;a.strict=b.strict;return a};
Interpreter.prototype.getValueFromScope=function(b){for(var a=this.getScope();a&&a!==this.global;){if(b in a.properties)return a.properties[b];a=a.parentScope}if(a===this.global&&this.hasProperty(a,b))return this.getProperty(a,b);a=this.stateStack[this.stateStack.length-1].node;"UnaryExpression"===a.type&&"typeof"===a.operator||this.throwException(this.REFERENCE_ERROR,b+" is not defined")};
Interpreter.prototype.setValueToScope=function(b,a){for(var c=this.getScope(),d=c.strict;c&&c!==this.global;){if(b in c.properties){c.properties[b]=a;return}c=c.parentScope}if(c===this.global&&(!d||this.hasProperty(c,b)))return this.setProperty(c,b,a);this.throwException(this.REFERENCE_ERROR,b+" is not defined")};
Interpreter.prototype.populateScope_=function(b,a){if("VariableDeclaration"===b.type)for(var c=0;c<b.declarations.length;c++)this.setProperty(a,b.declarations[c].id.name,void 0,Interpreter.VARIABLE_DESCRIPTOR);else{if("FunctionDeclaration"===b.type){this.setProperty(a,b.id.name,this.createFunction(b,a),Interpreter.VARIABLE_DESCRIPTOR);return}if("FunctionExpression"===b.type||"ExpressionStatement"===b.type)return}var d=b.constructor,e;for(e in b){var f=b[e];if(f&&"object"===typeof f)if(Array.isArray(f))for(c=
0;c<f.length;c++)f[c]&&f[c].constructor===d&&this.populateScope_(f[c],a);else f.constructor===d&&this.populateScope_(f,a)}};Interpreter.prototype.stripLocations_=function(b,a,c){a?b.start=a:delete b.start;c?b.end=c:delete b.end;for(var d in b)if(b.hasOwnProperty(d)){var e=b[d];e&&"object"===typeof e&&this.stripLocations_(e,a,c)}};Interpreter.prototype.calledWithNew=function(){return this.stateStack[this.stateStack.length-1].isConstructor};
Interpreter.prototype.getValue=function(b){return b[0]===Interpreter.SCOPE_REFERENCE?this.getValueFromScope(b[1]):this.getProperty(b[0],b[1])};Interpreter.prototype.setValue=function(b,a){return b[0]===Interpreter.SCOPE_REFERENCE?this.setValueToScope(b[1],a):this.setProperty(b[0],b[1],a)};Interpreter.Completion={NORMAL:0,BREAK:1,CONTINUE:2,RETURN:3,THROW:4};
Interpreter.prototype.throwException=function(b,a){void 0!==a&&(b=this.createObject(b),this.setProperty(b,"message",a,Interpreter.NONENUMERABLE_DESCRIPTOR));this.unwind(Interpreter.Completion.THROW,b,void 0);throw Interpreter.STEP_ERROR;};
Interpreter.prototype.unwind=function(b,a,c){if(b===Interpreter.Completion.NORMAL)throw TypeError("Should not unwind for NORMAL completions");var d=this.stateStack;a:for(;0<d.length;d.pop()){var e=d[d.length-1];switch(e.node.type){case "TryStatement":e.cv={type:b,value:a,label:c};return;case "CallExpression":case "NewExpression":if(b===Interpreter.Completion.RETURN){e.value=a;return}if(b!==Interpreter.Completion.THROW)throw Error("Unsynatctic break/continue not rejected by Acorn");break;case "Program":e.done=
!0;break a}if(b===Interpreter.Completion.BREAK){if(c?e.labels&&-1!==e.labels.indexOf(c):e.isLoop||e.isSwitch){d.pop();return}}else if(b===Interpreter.Completion.CONTINUE&&(c?e.labels&&-1!==e.labels.indexOf(c):e.isLoop))return}this.isa(a,this.ERROR)?(b={EvalError:EvalError,RangeError:RangeError,ReferenceError:ReferenceError,SyntaxError:SyntaxError,TypeError:TypeError,URIError:URIError},c=String(this.getProperty(a,"name")),a=this.getProperty(a,"message").valueOf(),a=(b[c]||Error)(a)):a=String(a);throw a;
};Interpreter.prototype.createGetter_=function(b,a){a=Array.isArray(a)?a[0]:a;var c=new this.nodeConstructor({options:{}});c.type="CallExpression";c=new Interpreter.State(c,this.stateStack[this.stateStack.length-1].scope);c.doneCallee_=!0;c.funcThis_=a;c.func_=b;c.doneArgs_=!0;c.arguments_=[];return c};
Interpreter.prototype.createSetter_=function(b,a,c){a=Array.isArray(a)?a[0]:this.global;var d=new this.nodeConstructor({options:{}});d.type="CallExpression";d=new Interpreter.State(d,this.stateStack[this.stateStack.length-1].scope);d.doneCallee_=!0;d.funcThis_=a;d.func_=b;d.doneArgs_=!0;d.arguments_=[c];return d};Interpreter.State=function(b,a){this.node=b;this.scope=a};
Interpreter.prototype.stepArrayExpression=function(b,a,c){c=c.elements;var d=a.n_||0;a.array_?(this.setProperty(a.array_,d,a.value),d++):(a.array_=this.createObjectProto(this.ARRAY_PROTO),a.array_.properties.length=c.length);for(;d<c.length;){if(c[d])return a.n_=d,new Interpreter.State(c[d],a.scope);d++}b.pop();b[b.length-1].value=a.array_};
Interpreter.prototype.stepAssignmentExpression=function(b,a,c){if(!a.doneLeft_)return a.doneLeft_=!0,a=new Interpreter.State(c.left,a.scope),a.components=!0,a;if(!a.doneRight_){a.leftReference_||(a.leftReference_=a.value);a.doneGetter_&&(a.leftValue_=a.value);if(!a.doneGetter_&&"="!==c.operator&&(b=this.getValue(a.leftReference_),(a.leftValue_=b)&&"object"===typeof b&&b.isGetter))return b.isGetter=!1,a.doneGetter_=!0,this.createGetter_(b,a.leftReference_);a.doneRight_=!0;return new Interpreter.State(c.right,
a.scope)}if(a.doneSetter_)b.pop(),b[b.length-1].value=a.setterValue_;else{var d=a.leftValue_,e=a.value;switch(c.operator){case "=":d=e;break;case "+=":d+=e;break;case "-=":d-=e;break;case "*=":d*=e;break;case "/=":d/=e;break;case "%=":d%=e;break;case "<<=":d<<=e;break;case ">>=":d>>=e;break;case ">>>=":d>>>=e;break;case "&=":d&=e;break;case "^=":d^=e;break;case "|=":d|=e;break;default:throw SyntaxError("Unknown assignment expression: "+c.operator);}if(c=this.setValue(a.leftReference_,d))return a.doneSetter_=
!0,a.setterValue_=d,this.createSetter_(c,a.leftReference_,d);b.pop();b[b.length-1].value=d}};
Interpreter.prototype.stepBinaryExpression=function(b,a,c){if(!a.doneLeft_)return a.doneLeft_=!0,new Interpreter.State(c.left,a.scope);if(!a.doneRight_)return a.doneRight_=!0,a.leftValue_=a.value,new Interpreter.State(c.right,a.scope);b.pop();var d=a.leftValue_;a=a.value;switch(c.operator){case "==":c=d==a;break;case "!=":c=d!=a;break;case "===":c=d===a;break;case "!==":c=d!==a;break;case ">":c=d>a;break;case ">=":c=d>=a;break;case "<":c=d<a;break;case "<=":c=d<=a;break;case "+":c=d+a;break;case "-":c=
d-a;break;case "*":c=d*a;break;case "/":c=d/a;break;case "%":c=d%a;break;case "&":c=d&a;break;case "|":c=d|a;break;case "^":c=d^a;break;case "<<":c=d<<a;break;case ">>":c=d>>a;break;case ">>>":c=d>>>a;break;case "in":a&&a.isObject||this.throwException(this.TYPE_ERROR,"'in' expects an object, not '"+a+"'");c=this.hasProperty(a,d);break;case "instanceof":this.isa(a,this.FUNCTION)||this.throwException(this.TYPE_ERROR,"Right-hand side of instanceof is not an object");c=d.isObject?this.isa(d,a):!1;break;
default:throw SyntaxError("Unknown binary operator: "+c.operator);}b[b.length-1].value=c};Interpreter.prototype.stepBlockStatement=function(b,a,c){var d=a.n_||0;if(c=c.body[d])return a.n_=d+1,new Interpreter.State(c,a.scope);b.pop()};Interpreter.prototype.stepBreakStatement=function(b,a,c){this.unwind(Interpreter.Completion.BREAK,void 0,c.label&&c.label.name)};
Interpreter.prototype.stepCallExpression=function(b,a,c){if(!a.doneCallee_){a.doneCallee_=1;var d=new Interpreter.State(c.callee,a.scope);d.components=!0;return d}if(1===a.doneCallee_){a.doneCallee_=2;d=a.value;if(Array.isArray(d)){if(a.func_=this.getValue(d),d[0]===Interpreter.SCOPE_REFERENCE?a.directEval_="eval"===d[1]:a.funcThis_=d[0],(d=a.func_)&&"object"===typeof d&&d.isGetter)return d.isGetter=!1,a.doneCallee_=1,this.createGetter_(d,a.value)}else a.func_=d;a.arguments_=[];a.n_=0}d=a.func_;if(!a.doneArgs_){0!==
a.n_&&a.arguments_.push(a.value);if(c.arguments[a.n_])return new Interpreter.State(c.arguments[a.n_++],a.scope);if("NewExpression"===c.type){d.illegalConstructor&&this.throwException(this.TYPE_ERROR,d+" is not a constructor");var e=d.properties.prototype;if("object"!==typeof e||null===e)e=this.OBJECT_PROTO;a.funcThis_=this.createObjectProto(e);a.isConstructor=!0}else void 0===a.funcThis_&&(a.funcThis_=a.scope.strict?void 0:this.global);a.doneArgs_=!0}if(a.doneExec_)b.pop(),b[b.length-1].value=a.isConstructor&&
"object"!==typeof a.value?a.funcThis_:a.value;else{a.doneExec_=!0;d&&d.isObject||this.throwException(this.TYPE_ERROR,d+" is not a function");if(b=d.node){c=this.createScope(b.body,d.parentScope);for(var f=0;f<b.params.length;f++)this.setProperty(c,b.params[f].name,a.arguments_.length>f?a.arguments_[f]:void 0);e=this.createObjectProto(this.ARRAY_PROTO);for(f=0;f<a.arguments_.length;f++)this.setProperty(e,f,a.arguments_[f]);this.setProperty(c,"arguments",e);(f=b.id&&b.id.name)&&this.setProperty(c,f,
d);this.setProperty(c,"this",a.funcThis_,Interpreter.READONLY_DESCRIPTOR);a.value=void 0;return new Interpreter.State(b.body,c)}if(d.eval)if(d=a.arguments_[0],"string"!==typeof d)a.value=d;else{try{f=acorn.parse(String(d),Interpreter.PARSE_OPTIONS)}catch(k){this.throwException(this.SYNTAX_ERROR,"Invalid code: "+k.message)}d=new this.nodeConstructor({options:{}});d.type="EvalProgram_";d.body=f.body;this.stripLocations_(d,c.start,c.end);c=a.directEval_?a.scope:this.global;c.strict?c=this.createScope(f,
c):this.populateScope_(f,c);this.value=void 0;return new Interpreter.State(d,c)}else if(d.nativeFunc)a.value=d.nativeFunc.apply(a.funcThis_,a.arguments_);else if(d.asyncFunc){var p=this;f=d.asyncFunc.length-1;f=a.arguments_.concat(Array(f)).slice(0,f);f.push(function(b){a.value=b;p.paused_=!1});this.paused_=!0;d.asyncFunc.apply(a.funcThis_,f)}else this.throwException(this.TYPE_ERROR,d.class+" is not a function")}};
Interpreter.prototype.stepCatchClause=function(b,a,c){if(a.done_)b.pop();else return a.done_=!0,b=this.createSpecialScope(a.scope),this.setProperty(b,c.param.name,a.throwValue),new Interpreter.State(c.body,b)};
Interpreter.prototype.stepConditionalExpression=function(b,a,c){var d=a.mode_||0;if(0===d)return a.mode_=1,new Interpreter.State(c.test,a.scope);if(1===d){a.mode_=2;if((d=!!a.value)&&c.consequent)return new Interpreter.State(c.consequent,a.scope);if(!d&&c.alternate)return new Interpreter.State(c.alternate,a.scope);this.value=void 0}b.pop();"ConditionalExpression"===c.type&&(b[b.length-1].value=a.value)};
Interpreter.prototype.stepContinueStatement=function(b,a,c){this.unwind(Interpreter.Completion.CONTINUE,void 0,c.label&&c.label.name)};Interpreter.prototype.stepDebuggerStatement=function(b,a,c){b.pop()};Interpreter.prototype.stepDoWhileStatement=function(b,a,c){"DoWhileStatement"===c.type&&void 0===a.test_&&(a.value=!0,a.test_=!0);if(!a.test_)return a.test_=!0,new Interpreter.State(c.test,a.scope);if(!a.value)b.pop();else if(c.body)return a.test_=!1,a.isLoop=!0,new Interpreter.State(c.body,a.scope)};
Interpreter.prototype.stepEmptyStatement=function(b,a,c){b.pop()};Interpreter.prototype.stepEvalProgram_=function(b,a,c){var d=a.n_||0;if(c=c.body[d])return a.n_=d+1,new Interpreter.State(c,a.scope);b.pop();b[b.length-1].value=this.value};Interpreter.prototype.stepExpressionStatement=function(b,a,c){if(!a.done_)return a.done_=!0,new Interpreter.State(c.expression,a.scope);b.pop();this.value=a.value};
Interpreter.prototype.stepForInStatement=function(b,a,c){if(!a.doneInit_&&(a.doneInit_=!0,c.left.declarations&&c.left.declarations[0].init))return a.scope.strict&&this.throwException(this.SYNTAX_ERROR,"for-in loop variable declaration may not have an initializer."),new Interpreter.State(c.left,a.scope);if(!a.doneObject_)return a.doneObject_=!0,a.variable_||(a.variable_=a.value),new Interpreter.State(c.right,a.scope);a.isLoop||(a.isLoop=!0,a.object_=a.value,a.visited_=Object.create(null));if(void 0===
a.name_)a:for(;;){if(a.object_&&a.object_.isObject)for(a.props_||(a.props_=Object.getOwnPropertyNames(a.object_.properties));;){var d=a.props_.shift();if(void 0===d)break;if(Object.prototype.hasOwnProperty.call(a.object_.properties,d)&&!a.visited_[d]&&(a.visited_[d]=!0,Object.prototype.propertyIsEnumerable.call(a.object_.properties,d))){a.name_=d;break a}}else if(null!==a.object_&&void 0!==a.object_)for(a.props_||(a.props_=Object.getOwnPropertyNames(a.object_));;){d=a.props_.shift();if(void 0===d)break;
a.visited_[d]=!0;if(Object.prototype.propertyIsEnumerable.call(a.object_,d)){a.name_=d;break a}}a.object_=this.getPrototype(a.object_);a.props_=null;if(null===a.object_){b.pop();return}}if(!a.doneVariable_)if(a.doneVariable_=!0,b=c.left,"VariableDeclaration"===b.type)a.variable_=[Interpreter.SCOPE_REFERENCE,b.declarations[0].id.name];else return a.variable_=null,a=new Interpreter.State(b,a.scope),a.components=!0,a;a.variable_||(a.variable_=a.value);if(!a.doneSetter_&&(a.doneSetter_=!0,b=a.name_,d=
this.setValue(a.variable_,b)))return this.createSetter_(d,a.variable_,b);a.name_=void 0;a.doneVariable_=!1;a.doneSetter_=!1;if(c.body)return new Interpreter.State(c.body,a.scope)};
Interpreter.prototype.stepForStatement=function(b,a,c){var d=a.mode_||0;if(0===d){if(a.mode_=1,c.init)return new Interpreter.State(c.init,a.scope)}else if(1===d){if(a.mode_=2,c.test)return new Interpreter.State(c.test,a.scope)}else if(2===d)if(a.mode_=3,c.test&&!a.value)b.pop();else return a.isLoop=!0,new Interpreter.State(c.body,a.scope);else if(3===d&&(a.mode_=1,c.update))return new Interpreter.State(c.update,a.scope)};Interpreter.prototype.stepFunctionDeclaration=function(b,a,c){b.pop()};
Interpreter.prototype.stepFunctionExpression=function(b,a,c){b.pop();b[b.length-1].value=this.createFunction(c,a.scope)};Interpreter.prototype.stepIdentifier=function(b,a,c){b.pop();if(a.components)b[b.length-1].value=[Interpreter.SCOPE_REFERENCE,c.name];else{var d=this.getValueFromScope(c.name);if(d&&"object"===typeof d&&d.isGetter){d.isGetter=!1;for(b=a.scope;!this.hasProperty(b,c.name);)b=b.parentScope;return this.createGetter_(d,this.global)}b[b.length-1].value=d}};
Interpreter.prototype.stepIfStatement=Interpreter.prototype.stepConditionalExpression;Interpreter.prototype.stepLabeledStatement=function(b,a,c){b.pop();b=a.labels||[];b.push(c.label.name);a=new Interpreter.State(c.body,a.scope);a.labels=b;return a};Interpreter.prototype.stepLiteral=function(b,a,c){b.pop();a=c.value;a instanceof RegExp&&(c=this.createObjectProto(this.REGEXP_PROTO),this.populateRegExp(c,a),a=c);b[b.length-1].value=a};
Interpreter.prototype.stepLogicalExpression=function(b,a,c){if("&&"!==c.operator&&"||"!==c.operator)throw SyntaxError("Unknown logical operator: "+c.operator);if(!a.doneLeft_)return a.doneLeft_=!0,new Interpreter.State(c.left,a.scope);if(a.doneRight_)b.pop(),b[b.length-1].value=a.value;else if("&&"===c.operator&&!a.value||"||"===c.operator&&a.value)b.pop(),b[b.length-1].value=a.value;else return a.doneRight_=!0,new Interpreter.State(c.right,a.scope)};
Interpreter.prototype.stepMemberExpression=function(b,a,c){if(!a.doneObject_)return a.doneObject_=!0,new Interpreter.State(c.object,a.scope);if(c.computed)if(a.doneProperty_)c=a.value;else return a.object_=a.value,a.doneProperty_=!0,new Interpreter.State(c.property,a.scope);else a.object_=a.value,c=c.property.name;b.pop();if(a.components)b[b.length-1].value=[a.object_,c];else{if((c=this.getProperty(a.object_,c))&&"object"===typeof c&&c.isGetter)return c.isGetter=!1,this.createGetter_(c,a.object_);
b[b.length-1].value=c}};Interpreter.prototype.stepNewExpression=Interpreter.prototype.stepCallExpression;
Interpreter.prototype.stepObjectExpression=function(b,a,c){var d=a.n_||0,e=c.properties[d];if(a.object_){var f=e.key;if("Identifier"===f.type)var p=f.name;else if("Literal"===f.type)p=f.value;else throw SyntaxError("Unknown object structure: "+f.type);a.properties_[p]||(a.properties_[p]={});a.properties_[p][e.kind]=a.value;a.n_=++d;e=c.properties[d]}else a.object_=this.createObjectProto(this.OBJECT_PROTO),a.properties_=Object.create(null);if(e)return new Interpreter.State(e.value,a.scope);for(f in a.properties_)c=
a.properties_[f],"get"in c||"set"in c?this.setProperty(a.object_,f,Interpreter.VALUE_IN_DESCRIPTOR,{configurable:!0,enumerable:!0,get:c.get,set:c.set}):this.setProperty(a.object_,f,c.init);b.pop();b[b.length-1].value=a.object_};Interpreter.prototype.stepProgram=function(b,a,c){if(b=c.body.shift())return a.done=!1,new Interpreter.State(b,a.scope);a.done=!0};
Interpreter.prototype.stepReturnStatement=function(b,a,c){if(c.argument&&!a.done_)return a.done_=!0,new Interpreter.State(c.argument,a.scope);this.unwind(Interpreter.Completion.RETURN,a.value,void 0)};Interpreter.prototype.stepSequenceExpression=function(b,a,c){var d=a.n_||0;if(c=c.expressions[d])return a.n_=d+1,new Interpreter.State(c,a.scope);b.pop();b[b.length-1].value=a.value};
Interpreter.prototype.stepSwitchStatement=function(b,a,c){if(!a.test_)return a.test_=1,new Interpreter.State(c.discriminant,a.scope);1===a.test_&&(a.test_=2,a.switchValue_=a.value,a.defaultCase_=-1);for(;;){var d=a.index_||0,e=c.cases[d];if(a.matched_||!e||e.test)if(e||a.matched_||-1===a.defaultCase_)if(e){if(!a.matched_&&!a.tested_&&e.test)return a.tested_=!0,new Interpreter.State(e.test,a.scope);if(a.matched_||a.value===a.switchValue_){a.matched_=!0;var f=a.n_||0;if(e.consequent[f])return a.isSwitch=
!0,a.n_=f+1,new Interpreter.State(e.consequent[f],a.scope)}a.tested_=!1;a.n_=0;a.index_=d+1}else{b.pop();break}else a.matched_=!0,a.index_=a.defaultCase_;else a.defaultCase_=d,a.index_=d+1}};Interpreter.prototype.stepThisExpression=function(b,a,c){b.pop();b[b.length-1].value=this.getValueFromScope("this")};Interpreter.prototype.stepThrowStatement=function(b,a,c){if(a.done_)this.throwException(a.value);else return a.done_=!0,new Interpreter.State(c.argument,a.scope)};
Interpreter.prototype.stepTryStatement=function(b,a,c){if(!a.doneBlock_)return a.doneBlock_=!0,new Interpreter.State(c.block,a.scope);if(a.cv&&a.cv.type===Interpreter.Completion.THROW&&!a.doneHandler_&&c.handler)return a.doneHandler_=!0,b=new Interpreter.State(c.handler,a.scope),b.throwValue=a.cv.value,a.cv=void 0,b;if(!a.doneFinalizer_&&c.finalizer)return a.doneFinalizer_=!0,new Interpreter.State(c.finalizer,a.scope);b.pop();a.cv&&this.unwind(a.cv.type,a.cv.value,a.cv.label)};
Interpreter.prototype.stepUnaryExpression=function(b,a,c){if(!a.done_)return a.done_=!0,b=new Interpreter.State(c.argument,a.scope),b.components="delete"===c.operator,b;b.pop();var d=a.value;if("-"===c.operator)d=-d;else if("+"===c.operator)d=+d;else if("!"===c.operator)d=!d;else if("~"===c.operator)d=~d;else if("delete"===c.operator){c=!0;if(Array.isArray(d)){var e=d[0];e===Interpreter.SCOPE_REFERENCE&&(e=a.scope);d=String(d[1]);try{delete e.properties[d]}catch(f){a.scope.strict?this.throwException(this.TYPE_ERROR,
"Cannot delete property '"+d+"' of '"+e+"'"):c=!1}}d=c}else if("typeof"===c.operator)d=d&&"Function"===d.class?"function":typeof d;else if("void"===c.operator)d=void 0;else throw SyntaxError("Unknown unary operator: "+c.operator);b[b.length-1].value=d};
Interpreter.prototype.stepUpdateExpression=function(b,a,c){if(!a.doneLeft_)return a.doneLeft_=!0,b=new Interpreter.State(c.argument,a.scope),b.components=!0,b;a.leftSide_||(a.leftSide_=a.value);a.doneGetter_&&(a.leftValue_=a.value);if(!a.doneGetter_){var d=this.getValue(a.leftSide_);if((a.leftValue_=d)&&"object"===typeof d&&d.isGetter)return d.isGetter=!1,a.doneGetter_=!0,this.createGetter_(d,a.leftSide_)}if(a.doneSetter_)b.pop(),b[b.length-1].value=a.setterValue_;else{d=Number(a.leftValue_);if("++"===
c.operator)var e=d+1;else if("--"===c.operator)e=d-1;else throw SyntaxError("Unknown update expression: "+c.operator);c=c.prefix?e:d;if(d=this.setValue(a.leftSide_,e))return a.doneSetter_=!0,a.setterValue_=c,this.createSetter_(d,a.leftSide_,e);b.pop();b[b.length-1].value=c}};
Interpreter.prototype.stepVariableDeclaration=function(b,a,c){c=c.declarations;var d=a.n_||0,e=c[d];a.init_&&e&&(this.setValueToScope(e.id.name,a.value),a.init_=!1,e=c[++d]);for(;e;){if(e.init)return a.n_=d,a.init_=!0,new Interpreter.State(e.init,a.scope);e=c[++d]}b.pop()};
Interpreter.prototype.stepWithStatement=function(b,a,c){if(a.doneObject_)if(a.doneBody_)b.pop();else return a.doneBody_=!0,b=this.createSpecialScope(a.scope,a.value),new Interpreter.State(c.body,b);else return a.doneObject_=!0,new Interpreter.State(c.object,a.scope)};Interpreter.prototype.stepWhileStatement=Interpreter.prototype.stepDoWhileStatement;this.Interpreter=Interpreter;Interpreter.prototype.step=Interpreter.prototype.step;Interpreter.prototype.run=Interpreter.prototype.run;
Interpreter.prototype.appendCode=Interpreter.prototype.appendCode;Interpreter.prototype.createObject=Interpreter.prototype.createObject;Interpreter.prototype.createObjectProto=Interpreter.prototype.createObjectProto;Interpreter.prototype.createAsyncFunction=Interpreter.prototype.createAsyncFunction;Interpreter.prototype.createNativeFunction=Interpreter.prototype.createNativeFunction;Interpreter.prototype.getProperty=Interpreter.prototype.getProperty;Interpreter.prototype.setProperty=Interpreter.prototype.setProperty;
Interpreter.prototype.nativeToPseudo=Interpreter.prototype.nativeToPseudo;Interpreter.prototype.pseudoToNative=Interpreter.prototype.pseudoToNative;Interpreter.prototype.createPrimitive=function(b){return b};