summary refs log tree commit diff
path: root/natives_blob.bin
diff options
context:
space:
mode:
authorManuel Palenzuela <manuelpalenzuelamerino@gmail.com>2019-08-19 12:17:51 +0200
committerManuel Palenzuela <manuelpalenzuelamerino@gmail.com>2019-08-19 12:17:51 +0200
commitea7016bdb1d9fb7de1a66a94b3de3b3c9e0f32c9 (patch)
tree22a6413c757bb2cc709a51f851d5718298430c0d /natives_blob.bin
download9anime-client-master.tar.gz
9anime-client-master.tar.bz2
9anime-client-master.zip
Initial Commit HEAD master
Diffstat (limited to 'natives_blob.bin')
-rw-r--r--natives_blob.bin7056
1 files changed, 7056 insertions, 0 deletions
diff --git a/natives_blob.bin b/natives_blob.bin
new file mode 100644
index 0000000..5ba288b
--- /dev/null
+++ b/natives_blob.bin
@@ -0,0 +1,7056 @@
+mirrors
+(function(a,b){
+"use strict";
+var c=a.Array;
+var d=a.isNaN;
+var e=a.JSON.stringify;
+var f=a.Map.prototype.entries;
+var g=(new a.Map).entries().next;
+var h=(new a.Set).values().next;
+var i=a.Set.prototype.values;
+var j={
+UNDEFINED_TYPE:'undefined',
+NULL_TYPE:'null',
+BOOLEAN_TYPE:'boolean',
+NUMBER_TYPE:'number',
+STRING_TYPE:'string',
+SYMBOL_TYPE:'symbol',
+OBJECT_TYPE:'object',
+FUNCTION_TYPE:'function',
+REGEXP_TYPE:'regexp',
+ERROR_TYPE:'error',
+PROPERTY_TYPE:'property',
+INTERNAL_PROPERTY_TYPE:'internalProperty',
+FRAME_TYPE:'frame',
+SCRIPT_TYPE:'script',
+CONTEXT_TYPE:'context',
+SCOPE_TYPE:'scope',
+PROMISE_TYPE:'promise',
+MAP_TYPE:'map',
+SET_TYPE:'set',
+ITERATOR_TYPE:'iterator',
+GENERATOR_TYPE:'generator',
+}
+function MakeMirror(k){
+var l;
+if((k===(void 0))){
+l=new UndefinedMirror();
+}else if((k===null)){
+l=new NullMirror();
+}else if((typeof(k)==='boolean')
+){
+l=new BooleanMirror(k);
+}else if((typeof(k)==='number')){
+l=new NumberMirror(k);
+}else if((typeof(k)==='string')){
+l=new StringMirror(k);
+}else if((typeof(k)==='symbol')){
+l=new SymbolMirror(k);
+}else if((%_IsArray(k))){
+l=new ArrayMirror(k);
+}else if((%IsDate(k))
+){
+l=new DateMirror(k);
+}else if((%IsFunction(k))){
+l=new FunctionMirror(k);
+}else if(%IsRegExp(k)){
+l=new RegExpMirror(k);
+}else if((%IsJSError(k))
+){
+l=new ErrorMirror(k);
+}else if((%IsScriptWrapper(k))
+){
+l=new ScriptMirror(k);
+}else if((%_IsJSMap(k))
+||(%_IsJSWeakMap(k))){
+l=new MapMirror(k);
+}else if((%_IsJSSet(k))
+||(%_IsJSWeakSet(k))){
+l=new SetMirror(k);
+}else if((%IsJSMapIterator(k))
+||(%IsJSSetIterator(k))
+){
+l=new IteratorMirror(k);
+}else if(%is_promise(k)){
+l=new PromiseMirror(k);
+}else if((%IsJSGeneratorObject(k))
+){
+l=new GeneratorMirror(k);
+}else{
+l=new ObjectMirror(k,j.OBJECT_TYPE);
+}
+return l;
+}
+function GetUndefinedMirror(){
+return MakeMirror((void 0));
+}
+function inherits(m,n){
+var o=function(){};
+o.prototype=n.prototype;
+m.super_=n.prototype;
+m.prototype=new o();
+m.prototype.constructor=m;
+}
+var p=80;
+var q={};
+q.Data=0;
+q.Accessor=1;
+var r={};
+r.None=0;
+r.ReadOnly=1;
+r.DontEnum=2;
+r.DontDelete=4;
+var s={Global:0,
+Local:1,
+With:2,
+Closure:3,
+Catch:4,
+Block:5,
+Script:6,
+Eval:7,
+Module:8,
+};
+function Mirror(t){
+this.type_=t;
+}
+Mirror.prototype.type=function(){
+return this.type_;
+};
+Mirror.prototype.isValue=function(){
+return this instanceof ValueMirror;
+};
+Mirror.prototype.isUndefined=function(){
+return this instanceof UndefinedMirror;
+};
+Mirror.prototype.isNull=function(){
+return this instanceof NullMirror;
+};
+Mirror.prototype.isBoolean=function(){
+return this instanceof BooleanMirror;
+};
+Mirror.prototype.isNumber=function(){
+return this instanceof NumberMirror;
+};
+Mirror.prototype.isString=function(){
+return this instanceof StringMirror;
+};
+Mirror.prototype.isSymbol=function(){
+return this instanceof SymbolMirror;
+};
+Mirror.prototype.isObject=function(){
+return this instanceof ObjectMirror;
+};
+Mirror.prototype.isFunction=function(){
+return this instanceof FunctionMirror;
+};
+Mirror.prototype.isUnresolvedFunction=function(){
+return this instanceof UnresolvedFunctionMirror;
+};
+Mirror.prototype.isArray=function(){
+return this instanceof ArrayMirror;
+};
+Mirror.prototype.isDate=function(){
+return this instanceof DateMirror;
+};
+Mirror.prototype.isRegExp=function(){
+return this instanceof RegExpMirror;
+};
+Mirror.prototype.isError=function(){
+return this instanceof ErrorMirror;
+};
+Mirror.prototype.isPromise=function(){
+return this instanceof PromiseMirror;
+};
+Mirror.prototype.isGenerator=function(){
+return this instanceof GeneratorMirror;
+};
+Mirror.prototype.isProperty=function(){
+return this instanceof PropertyMirror;
+};
+Mirror.prototype.isInternalProperty=function(){
+return this instanceof InternalPropertyMirror;
+};
+Mirror.prototype.isFrame=function(){
+return this instanceof FrameMirror;
+};
+Mirror.prototype.isScript=function(){
+return this instanceof ScriptMirror;
+};
+Mirror.prototype.isContext=function(){
+return this instanceof ContextMirror;
+};
+Mirror.prototype.isScope=function(){
+return this instanceof ScopeMirror;
+};
+Mirror.prototype.isMap=function(){
+return this instanceof MapMirror;
+};
+Mirror.prototype.isSet=function(){
+return this instanceof SetMirror;
+};
+Mirror.prototype.isIterator=function(){
+return this instanceof IteratorMirror;
+};
+Mirror.prototype.toText=function(){
+return"#<"+this.constructor.name+">";
+};
+function ValueMirror(t,k){
+%_Call(Mirror,this,t);
+this.value_=k;
+}
+inherits(ValueMirror,Mirror);
+ValueMirror.prototype.isPrimitive=function(){
+var t=this.type();
+return t==='undefined'||
+t==='null'||
+t==='boolean'||
+t==='number'||
+t==='string'||
+t==='symbol';
+};
+ValueMirror.prototype.value=function(){
+return this.value_;
+};
+function UndefinedMirror(){
+%_Call(ValueMirror,this,j.UNDEFINED_TYPE,(void 0));
+}
+inherits(UndefinedMirror,ValueMirror);
+UndefinedMirror.prototype.toText=function(){
+return'undefined';
+};
+function NullMirror(){
+%_Call(ValueMirror,this,j.NULL_TYPE,null);
+}
+inherits(NullMirror,ValueMirror);
+NullMirror.prototype.toText=function(){
+return'null';
+};
+function BooleanMirror(k){
+%_Call(ValueMirror,this,j.BOOLEAN_TYPE,k);
+}
+inherits(BooleanMirror,ValueMirror);
+BooleanMirror.prototype.toText=function(){
+return this.value_?'true':'false';
+};
+function NumberMirror(k){
+%_Call(ValueMirror,this,j.NUMBER_TYPE,k);
+}
+inherits(NumberMirror,ValueMirror);
+NumberMirror.prototype.toText=function(){
+return''+this.value_;
+};
+function StringMirror(k){
+%_Call(ValueMirror,this,j.STRING_TYPE,k);
+}
+inherits(StringMirror,ValueMirror);
+StringMirror.prototype.length=function(){
+return this.value_.length;
+};
+StringMirror.prototype.getTruncatedValue=function(u){
+if(u!=-1&&this.length()>u){
+return this.value_.substring(0,u)+
+'... (length: '+this.length()+')';
+}
+return this.value_;
+};
+StringMirror.prototype.toText=function(){
+return this.getTruncatedValue(p);
+};
+function SymbolMirror(k){
+%_Call(ValueMirror,this,j.SYMBOL_TYPE,k);
+}
+inherits(SymbolMirror,ValueMirror);
+SymbolMirror.prototype.description=function(){
+return %SymbolDescription(%ValueOf(this.value_));
+}
+SymbolMirror.prototype.toText=function(){
+return %SymbolDescriptiveString(%ValueOf(this.value_));
+}
+function ObjectMirror(k,t){
+t=t||j.OBJECT_TYPE;
+%_Call(ValueMirror,this,t,k);
+}
+inherits(ObjectMirror,ValueMirror);
+ObjectMirror.prototype.className=function(){
+return %ClassOf(this.value_);
+};
+ObjectMirror.prototype.constructorFunction=function(){
+return MakeMirror(%DebugGetProperty(this.value_,'constructor'));
+};
+ObjectMirror.prototype.prototypeObject=function(){
+return MakeMirror(%DebugGetProperty(this.value_,'prototype'));
+};
+ObjectMirror.prototype.protoObject=function(){
+return MakeMirror(%DebugGetPrototype(this.value_));
+};
+ObjectMirror.prototype.hasNamedInterceptor=function(){
+var v=%GetInterceptorInfo(this.value_);
+return(v&2)!=0;
+};
+ObjectMirror.prototype.hasIndexedInterceptor=function(){
+var v=%GetInterceptorInfo(this.value_);
+return(v&1)!=0;
+};
+ObjectMirror.prototype.propertyNames=function(){
+return %GetOwnPropertyKeys(this.value_,0);
+};
+ObjectMirror.prototype.properties=function(){
+var w=this.propertyNames();
+var x=new c(w.length);
+for(var y=0;y<w.length;y++){
+x[y]=this.property(w[y]);
+}
+return x;
+};
+ObjectMirror.prototype.internalProperties=function(){
+return ObjectMirror.GetInternalProperties(this.value_);
+}
+ObjectMirror.prototype.property=function(z){
+var A=%DebugGetPropertyDetails(this.value_,z);
+if(A){
+return new PropertyMirror(this,z,A);
+}
+return GetUndefinedMirror();
+};
+ObjectMirror.prototype.lookupProperty=function(k){
+var x=this.properties();
+for(var y=0;y<x.length;y++){
+var B=x[y];
+if(B.propertyType()==q.Data){
+if(B.value_===k.value_){
+return B;
+}
+}
+}
+return GetUndefinedMirror();
+};
+ObjectMirror.prototype.referencedBy=function(C){
+var D=%DebugReferencedBy(this.value_,
+Mirror.prototype,C||0);
+for(var y=0;y<D.length;y++){
+D[y]=MakeMirror(D[y]);
+}
+return D;
+};
+ObjectMirror.prototype.toText=function(){
+var z;
+var m=this.constructorFunction();
+if(!m.isFunction()){
+z=this.className();
+}else{
+z=m.name();
+if(!z){
+z=this.className();
+}
+}
+return'#<'+z+'>';
+};
+ObjectMirror.GetInternalProperties=function(k){
+var x=%DebugGetInternalProperties(k);
+var D=[];
+for(var y=0;y<x.length;y+=2){
+D.push(new InternalPropertyMirror(x[y],x[y+1]));
+}
+return D;
+}
+function FunctionMirror(k){
+%_Call(ObjectMirror,this,k,j.FUNCTION_TYPE);
+this.resolved_=true;
+}
+inherits(FunctionMirror,ObjectMirror);
+FunctionMirror.prototype.resolved=function(){
+return this.resolved_;
+};
+FunctionMirror.prototype.name=function(){
+return %FunctionGetName(this.value_);
+};
+FunctionMirror.prototype.debugName=function(){
+return %FunctionGetDebugName(this.value_);
+}
+FunctionMirror.prototype.inferredName=function(){
+return %FunctionGetInferredName(this.value_);
+};
+FunctionMirror.prototype.source=function(){
+if(this.resolved()){
+return %FunctionToString(this.value_);
+}
+};
+FunctionMirror.prototype.script=function(){
+if(this.resolved()){
+if(this.script_){
+return this.script_;
+}
+var E=%FunctionGetScript(this.value_);
+if(E){
+return this.script_=MakeMirror(E);
+}
+}
+};
+FunctionMirror.prototype.sourcePosition_=function(){
+if(this.resolved()){
+return %FunctionGetScriptSourcePosition(this.value_);
+}
+};
+FunctionMirror.prototype.sourceLocation=function(){
+if(this.resolved()){
+var E=this.script();
+if(E){
+return E.locationFromPosition(this.sourcePosition_(),true);
+}
+}
+};
+FunctionMirror.prototype.constructedBy=function(F){
+if(this.resolved()){
+var D=%DebugConstructedBy(this.value_,F||0);
+for(var y=0;y<D.length;y++){
+D[y]=MakeMirror(D[y]);
+}
+return D;
+}else{
+return[];
+}
+};
+FunctionMirror.prototype.scopeCount=function(){
+if(this.resolved()){
+if((this.scopeCount_===(void 0))){
+this.scopeCount_=%GetFunctionScopeCount(this.value());
+}
+return this.scopeCount_;
+}else{
+return 0;
+}
+};
+FunctionMirror.prototype.scope=function(G){
+if(this.resolved()){
+return new ScopeMirror((void 0),this,(void 0),G);
+}
+};
+FunctionMirror.prototype.toText=function(){
+return this.source();
+};
+FunctionMirror.prototype.context=function(){
+if(this.resolved()){
+if(!this._context)
+this._context=new ContextMirror(%FunctionGetContextData(this.value_));
+return this._context;
+}
+};
+function UnresolvedFunctionMirror(k){
+%_Call(ValueMirror,this,j.FUNCTION_TYPE,k);
+this.propertyCount_=0;
+this.elementCount_=0;
+this.resolved_=false;
+}
+inherits(UnresolvedFunctionMirror,FunctionMirror);
+UnresolvedFunctionMirror.prototype.className=function(){
+return'Function';
+};
+UnresolvedFunctionMirror.prototype.constructorFunction=function(){
+return GetUndefinedMirror();
+};
+UnresolvedFunctionMirror.prototype.prototypeObject=function(){
+return GetUndefinedMirror();
+};
+UnresolvedFunctionMirror.prototype.protoObject=function(){
+return GetUndefinedMirror();
+};
+UnresolvedFunctionMirror.prototype.name=function(){
+return this.value_;
+};
+UnresolvedFunctionMirror.prototype.debugName=function(){
+return this.value_;
+};
+UnresolvedFunctionMirror.prototype.inferredName=function(){
+return(void 0);
+};
+UnresolvedFunctionMirror.prototype.propertyNames=function(H,I){
+return[];
+};
+function ArrayMirror(k){
+%_Call(ObjectMirror,this,k);
+}
+inherits(ArrayMirror,ObjectMirror);
+ArrayMirror.prototype.length=function(){
+return this.value_.length;
+};
+ArrayMirror.prototype.indexedPropertiesFromRange=function(opt_from_index,
+opt_to_index){
+var J=opt_from_index||0;
+var K=opt_to_index||this.length()-1;
+if(J>K)return new c();
+var L=new c(K-J+1);
+for(var y=J;y<=K;y++){
+var A=%DebugGetPropertyDetails(this.value_,(%_ToString(y)));
+var k;
+if(A){
+k=new PropertyMirror(this,y,A);
+}else{
+k=GetUndefinedMirror();
+}
+L[y-J]=k;
+}
+return L;
+};
+function DateMirror(k){
+%_Call(ObjectMirror,this,k);
+}
+inherits(DateMirror,ObjectMirror);
+DateMirror.prototype.toText=function(){
+var M=e(this.value_);
+return M.substring(1,M.length-1);
+};
+function RegExpMirror(k){
+%_Call(ObjectMirror,this,k,j.REGEXP_TYPE);
+}
+inherits(RegExpMirror,ObjectMirror);
+RegExpMirror.prototype.source=function(){
+return this.value_.source;
+};
+RegExpMirror.prototype.global=function(){
+return this.value_.global;
+};
+RegExpMirror.prototype.ignoreCase=function(){
+return this.value_.ignoreCase;
+};
+RegExpMirror.prototype.multiline=function(){
+return this.value_.multiline;
+};
+RegExpMirror.prototype.sticky=function(){
+return this.value_.sticky;
+};
+RegExpMirror.prototype.unicode=function(){
+return this.value_.unicode;
+};
+RegExpMirror.prototype.toText=function(){
+return"/"+this.source()+"/";
+};
+function ErrorMirror(k){
+%_Call(ObjectMirror,this,k,j.ERROR_TYPE);
+}
+inherits(ErrorMirror,ObjectMirror);
+ErrorMirror.prototype.message=function(){
+return this.value_.message;
+};
+ErrorMirror.prototype.toText=function(){
+var N;
+try{
+N=%ErrorToString(this.value_);
+}catch(e){
+N='#<Error>';
+}
+return N;
+};
+function PromiseMirror(k){
+%_Call(ObjectMirror,this,k,j.PROMISE_TYPE);
+}
+inherits(PromiseMirror,ObjectMirror);
+function PromiseGetStatus_(k){
+var O=%PromiseStatus(k);
+if(O==0)return"pending";
+if(O==1)return"resolved";
+return"rejected";
+}
+function PromiseGetValue_(k){
+return %PromiseResult(k);
+}
+PromiseMirror.prototype.status=function(){
+return PromiseGetStatus_(this.value_);
+};
+PromiseMirror.prototype.promiseValue=function(){
+return MakeMirror(PromiseGetValue_(this.value_));
+};
+function MapMirror(k){
+%_Call(ObjectMirror,this,k,j.MAP_TYPE);
+}
+inherits(MapMirror,ObjectMirror);
+MapMirror.prototype.entries=function(P){
+var D=[];
+if((%_IsJSWeakMap(this.value_))){
+var Q=%GetWeakMapEntries(this.value_,P||0);
+for(var y=0;y<Q.length;y+=2){
+D.push({
+key:Q[y],
+value:Q[y+1]
+});
+}
+return D;
+}
+var R=%_Call(f,this.value_);
+var S;
+while((!P||D.length<P)&&
+!(S=R.next()).done){
+D.push({
+key:S.value[0],
+value:S.value[1]
+});
+}
+return D;
+};
+function SetMirror(k){
+%_Call(ObjectMirror,this,k,j.SET_TYPE);
+}
+inherits(SetMirror,ObjectMirror);
+function IteratorGetValues_(R,T,P){
+var D=[];
+var S;
+while((!P||D.length<P)&&
+!(S=%_Call(T,R)).done){
+D.push(S.value);
+}
+return D;
+}
+SetMirror.prototype.values=function(P){
+if((%_IsJSWeakSet(this.value_))){
+return %GetWeakSetValues(this.value_,P||0);
+}
+var R=%_Call(i,this.value_);
+return IteratorGetValues_(R,h,P);
+};
+function IteratorMirror(k){
+%_Call(ObjectMirror,this,k,j.ITERATOR_TYPE);
+}
+inherits(IteratorMirror,ObjectMirror);
+IteratorMirror.prototype.preview=function(P){
+if((%IsJSMapIterator(this.value_))
+){
+return IteratorGetValues_(%MapIteratorClone(this.value_),
+g,
+P);
+}else if((%IsJSSetIterator(this.value_))
+){
+return IteratorGetValues_(%SetIteratorClone(this.value_),
+h,
+P);
+}
+};
+function GeneratorMirror(k){
+%_Call(ObjectMirror,this,k,j.GENERATOR_TYPE);
+}
+inherits(GeneratorMirror,ObjectMirror);
+function GeneratorGetStatus_(k){
+var U=%GeneratorGetContinuation(k);
+if(U<-1)return"running";
+if(U==-1)return"closed";
+return"suspended";
+}
+GeneratorMirror.prototype.status=function(){
+return GeneratorGetStatus_(this.value_);
+};
+GeneratorMirror.prototype.sourcePosition_=function(){
+return %GeneratorGetSourcePosition(this.value_);
+};
+GeneratorMirror.prototype.sourceLocation=function(){
+var V=this.sourcePosition_();
+if(!(V===(void 0))){
+var E=this.func().script();
+if(E){
+return E.locationFromPosition(V,true);
+}
+}
+};
+GeneratorMirror.prototype.func=function(){
+if(!this.func_){
+this.func_=MakeMirror(%GeneratorGetFunction(this.value_));
+}
+return this.func_;
+};
+GeneratorMirror.prototype.receiver=function(){
+if(!this.receiver_){
+this.receiver_=MakeMirror(%GeneratorGetReceiver(this.value_));
+}
+return this.receiver_;
+};
+GeneratorMirror.prototype.scopeCount=function(){
+return %GetGeneratorScopeCount(this.value());
+};
+GeneratorMirror.prototype.scope=function(G){
+return new ScopeMirror((void 0),(void 0),this,G);
+};
+GeneratorMirror.prototype.allScopes=function(){
+var W=[];
+for(let y=0;y<this.scopeCount();y++){
+W.push(this.scope(y));
+}
+return W;
+};
+function PropertyMirror(l,z,A){
+%_Call(Mirror,this,j.PROPERTY_TYPE);
+this.mirror_=l;
+this.name_=z;
+this.value_=A[0];
+this.details_=A[1];
+this.is_interceptor_=A[2];
+if(A.length>3){
+this.exception_=A[3];
+this.getter_=A[4];
+this.setter_=A[5];
+}
+}
+inherits(PropertyMirror,Mirror);
+PropertyMirror.prototype.isReadOnly=function(){
+return(this.attributes()&r.ReadOnly)!=0;
+};
+PropertyMirror.prototype.isEnum=function(){
+return(this.attributes()&r.DontEnum)==0;
+};
+PropertyMirror.prototype.canDelete=function(){
+return(this.attributes()&r.DontDelete)==0;
+};
+PropertyMirror.prototype.name=function(){
+return this.name_;
+};
+PropertyMirror.prototype.toText=function(){
+if((typeof(this.name_)==='symbol'))return %SymbolDescriptiveString(this.name_);
+return this.name_;
+};
+PropertyMirror.prototype.isIndexed=function(){
+for(var y=0;y<this.name_.length;y++){
+if(this.name_[y]<'0'||'9'<this.name_[y]){
+return false;
+}
+}
+return true;
+};
+PropertyMirror.prototype.value=function(){
+return MakeMirror(this.value_,false);
+};
+PropertyMirror.prototype.isException=function(){
+return this.exception_?true:false;
+};
+PropertyMirror.prototype.attributes=function(){
+return %DebugPropertyAttributesFromDetails(this.details_);
+};
+PropertyMirror.prototype.propertyType=function(){
+return %DebugPropertyKindFromDetails(this.details_);
+};
+PropertyMirror.prototype.hasGetter=function(){
+return this.getter_?true:false;
+};
+PropertyMirror.prototype.hasSetter=function(){
+return this.setter_?true:false;
+};
+PropertyMirror.prototype.getter=function(){
+if(this.hasGetter()){
+return MakeMirror(this.getter_);
+}else{
+return GetUndefinedMirror();
+}
+};
+PropertyMirror.prototype.setter=function(){
+if(this.hasSetter()){
+return MakeMirror(this.setter_);
+}else{
+return GetUndefinedMirror();
+}
+};
+PropertyMirror.prototype.isNative=function(){
+return this.is_interceptor_||
+((this.propertyType()==q.Accessor)&&
+!this.hasGetter()&&!this.hasSetter());
+};
+function InternalPropertyMirror(z,k){
+%_Call(Mirror,this,j.INTERNAL_PROPERTY_TYPE);
+this.name_=z;
+this.value_=k;
+}
+inherits(InternalPropertyMirror,Mirror);
+InternalPropertyMirror.prototype.name=function(){
+return this.name_;
+};
+InternalPropertyMirror.prototype.value=function(){
+return MakeMirror(this.value_,false);
+};
+var X=0;
+var Y=1;
+var Z=2;
+var aa=3;
+var ab=4;
+var ac=5;
+var ad=6;
+var ae=7;
+var af=8;
+var ag=9;
+var ah=10;
+var ai=0;
+var aj=1;
+var ak=2;
+var al=1<<0;
+var am=1<<1;
+var an=7<<2;
+function FrameDetails(ao,G){
+this.break_id_=ao;
+this.details_=%GetFrameDetails(ao,G);
+}
+FrameDetails.prototype.frameId=function(){
+%CheckExecutionState(this.break_id_);
+return this.details_[X];
+};
+FrameDetails.prototype.receiver=function(){
+%CheckExecutionState(this.break_id_);
+return this.details_[Y];
+};
+FrameDetails.prototype.func=function(){
+%CheckExecutionState(this.break_id_);
+return this.details_[Z];
+};
+FrameDetails.prototype.script=function(){
+%CheckExecutionState(this.break_id_);
+return this.details_[aa];
+};
+FrameDetails.prototype.isConstructCall=function(){
+%CheckExecutionState(this.break_id_);
+return this.details_[ae];
+};
+FrameDetails.prototype.isAtReturn=function(){
+%CheckExecutionState(this.break_id_);
+return this.details_[af];
+};
+FrameDetails.prototype.isDebuggerFrame=function(){
+%CheckExecutionState(this.break_id_);
+var ap=al;
+return(this.details_[ag]&ap)==ap;
+};
+FrameDetails.prototype.isOptimizedFrame=function(){
+%CheckExecutionState(this.break_id_);
+var ap=am;
+return(this.details_[ag]&ap)==ap;
+};
+FrameDetails.prototype.isInlinedFrame=function(){
+return this.inlinedFrameIndex()>0;
+};
+FrameDetails.prototype.inlinedFrameIndex=function(){
+%CheckExecutionState(this.break_id_);
+var ap=an;
+return(this.details_[ag]&ap)>>2;
+};
+FrameDetails.prototype.argumentCount=function(){
+%CheckExecutionState(this.break_id_);
+return this.details_[ab];
+};
+FrameDetails.prototype.argumentName=function(G){
+%CheckExecutionState(this.break_id_);
+if(G>=0&&G<this.argumentCount()){
+return this.details_[ah+
+G*ak+
+ai];
+}
+};
+FrameDetails.prototype.argumentValue=function(G){
+%CheckExecutionState(this.break_id_);
+if(G>=0&&G<this.argumentCount()){
+return this.details_[ah+
+G*ak+
+aj];
+}
+};
+FrameDetails.prototype.localCount=function(){
+%CheckExecutionState(this.break_id_);
+return this.details_[ac];
+};
+FrameDetails.prototype.sourcePosition=function(){
+%CheckExecutionState(this.break_id_);
+return this.details_[ad];
+};
+FrameDetails.prototype.localName=function(G){
+%CheckExecutionState(this.break_id_);
+if(G>=0&&G<this.localCount()){
+var aq=ah+
+this.argumentCount()*ak;
+return this.details_[aq+
+G*ak+
+ai];
+}
+};
+FrameDetails.prototype.localValue=function(G){
+%CheckExecutionState(this.break_id_);
+if(G>=0&&G<this.localCount()){
+var aq=ah+
+this.argumentCount()*ak;
+return this.details_[aq+
+G*ak+
+aj];
+}
+};
+FrameDetails.prototype.returnValue=function(){
+%CheckExecutionState(this.break_id_);
+var ar=
+ah+
+(this.argumentCount()+this.localCount())*ak;
+if(this.details_[af]){
+return this.details_[ar];
+}
+};
+FrameDetails.prototype.scopeCount=function(){
+if((this.scopeCount_===(void 0))){
+this.scopeCount_=%GetScopeCount(this.break_id_,this.frameId());
+}
+return this.scopeCount_;
+};
+function FrameMirror(ao,G){
+%_Call(Mirror,this,j.FRAME_TYPE);
+this.break_id_=ao;
+this.index_=G;
+this.details_=new FrameDetails(ao,G);
+}
+inherits(FrameMirror,Mirror);
+FrameMirror.prototype.details=function(){
+return this.details_;
+};
+FrameMirror.prototype.index=function(){
+return this.index_;
+};
+FrameMirror.prototype.func=function(){
+if(this.func_){
+return this.func_;
+}
+var ap=this.details_.func();
+if((%IsFunction(ap))){
+return this.func_=MakeMirror(ap);
+}else{
+return new UnresolvedFunctionMirror(ap);
+}
+};
+FrameMirror.prototype.script=function(){
+if(!this.script_){
+this.script_=MakeMirror(this.details_.script());
+}
+return this.script_;
+}
+FrameMirror.prototype.receiver=function(){
+return MakeMirror(this.details_.receiver());
+};
+FrameMirror.prototype.isConstructCall=function(){
+return this.details_.isConstructCall();
+};
+FrameMirror.prototype.isAtReturn=function(){
+return this.details_.isAtReturn();
+};
+FrameMirror.prototype.isDebuggerFrame=function(){
+return this.details_.isDebuggerFrame();
+};
+FrameMirror.prototype.isOptimizedFrame=function(){
+return this.details_.isOptimizedFrame();
+};
+FrameMirror.prototype.isInlinedFrame=function(){
+return this.details_.isInlinedFrame();
+};
+FrameMirror.prototype.inlinedFrameIndex=function(){
+return this.details_.inlinedFrameIndex();
+};
+FrameMirror.prototype.argumentCount=function(){
+return this.details_.argumentCount();
+};
+FrameMirror.prototype.argumentName=function(G){
+return this.details_.argumentName(G);
+};
+FrameMirror.prototype.argumentValue=function(G){
+return MakeMirror(this.details_.argumentValue(G));
+};
+FrameMirror.prototype.localCount=function(){
+return this.details_.localCount();
+};
+FrameMirror.prototype.localName=function(G){
+return this.details_.localName(G);
+};
+FrameMirror.prototype.localValue=function(G){
+return MakeMirror(this.details_.localValue(G));
+};
+FrameMirror.prototype.returnValue=function(){
+return MakeMirror(this.details_.returnValue());
+};
+FrameMirror.prototype.sourcePosition=function(){
+return this.details_.sourcePosition();
+};
+FrameMirror.prototype.sourceLocation=function(){
+var E=this.script();
+if(E){
+return E.locationFromPosition(this.sourcePosition(),true);
+}
+};
+FrameMirror.prototype.sourceLine=function(){
+var as=this.sourceLocation();
+if(as){
+return as.line;
+}
+};
+FrameMirror.prototype.sourceColumn=function(){
+var as=this.sourceLocation();
+if(as){
+return as.column;
+}
+};
+FrameMirror.prototype.sourceLineText=function(){
+var as=this.sourceLocation();
+if(as){
+return as.sourceText;
+}
+};
+FrameMirror.prototype.scopeCount=function(){
+return this.details_.scopeCount();
+};
+FrameMirror.prototype.scope=function(G){
+return new ScopeMirror(this,(void 0),(void 0),G);
+};
+FrameMirror.prototype.allScopes=function(at){
+var au=%GetAllScopesDetails(this.break_id_,
+this.details_.frameId(),
+this.details_.inlinedFrameIndex(),
+!!at);
+var D=[];
+for(var y=0;y<au.length;++y){
+D.push(new ScopeMirror(this,(void 0),(void 0),y,
+au[y]));
+}
+return D;
+};
+FrameMirror.prototype.evaluate=function(source,throw_on_side_effect=false){
+return MakeMirror(%DebugEvaluate(this.break_id_,
+this.details_.frameId(),
+this.details_.inlinedFrameIndex(),
+source,
+throw_on_side_effect));
+};
+FrameMirror.prototype.invocationText=function(){
+var D='';
+var av=this.func();
+var aw=this.receiver();
+if(this.isConstructCall()){
+D+='new ';
+D+=av.name()?av.name():'[anonymous]';
+}else if(this.isDebuggerFrame()){
+D+='[debugger]';
+}else{
+var ax=
+!aw.className||(aw.className()!='global');
+if(ax){
+D+=aw.toText();
+}
+var B=GetUndefinedMirror();
+if(aw.isObject()){
+for(var ay=aw;
+!ay.isNull()&&B.isUndefined();
+ay=ay.protoObject()){
+B=ay.lookupProperty(av);
+}
+}
+if(!B.isUndefined()){
+if(!B.isIndexed()){
+if(ax){
+D+='.';
+}
+D+=B.toText();
+}else{
+D+='[';
+D+=B.toText();
+D+=']';
+}
+if(av.name()&&av.name()!=B.name()){
+D+='(aka '+av.name()+')';
+}
+}else{
+if(ax){
+D+='.';
+}
+D+=av.name()?av.name():'[anonymous]';
+}
+}
+if(!this.isDebuggerFrame()){
+D+='(';
+for(var y=0;y<this.argumentCount();y++){
+if(y!=0)D+=', ';
+if(this.argumentName(y)){
+D+=this.argumentName(y);
+D+='=';
+}
+D+=this.argumentValue(y).toText();
+}
+D+=')';
+}
+if(this.isAtReturn()){
+D+=' returning ';
+D+=this.returnValue().toText();
+}
+return D;
+};
+FrameMirror.prototype.sourceAndPositionText=function(){
+var D='';
+var av=this.func();
+if(av.resolved()){
+var E=av.script();
+if(E){
+if(E.name()){
+D+=E.name();
+}else{
+D+='[unnamed]';
+}
+if(!this.isDebuggerFrame()){
+var as=this.sourceLocation();
+D+=' line ';
+D+=!(as===(void 0))?(as.line+1):'?';
+D+=' column ';
+D+=!(as===(void 0))?(as.column+1):'?';
+if(!(this.sourcePosition()===(void 0))){
+D+=' (position '+(this.sourcePosition()+1)+')';
+}
+}
+}else{
+D+='[no source]';
+}
+}else{
+D+='[unresolved]';
+}
+return D;
+};
+FrameMirror.prototype.localsText=function(){
+var D='';
+var az=this.localCount();
+if(az>0){
+for(var y=0;y<az;++y){
+D+='      var ';
+D+=this.localName(y);
+D+=' = ';
+D+=this.localValue(y).toText();
+if(y<az-1)D+='\n';
+}
+}
+return D;
+};
+FrameMirror.prototype.restart=function(){
+var D=%LiveEditRestartFrame(this.break_id_,this.index_);
+if((D===(void 0))){
+D="Failed to find requested frame";
+}
+return D;
+};
+FrameMirror.prototype.toText=function(aA){
+var D='';
+D+='#'+(this.index()<=9?'0':'')+this.index();
+D+=' ';
+D+=this.invocationText();
+D+=' ';
+D+=this.sourceAndPositionText();
+if(aA){
+D+='\n';
+D+=this.localsText();
+}
+return D;
+};
+var aB=0;
+var aC=1;
+var aD=2;
+var aE=3;
+var aF=4;
+var aG=5;
+function ScopeDetails(aH,aI,aJ,G,aK){
+if(aH){
+this.break_id_=aH.break_id_;
+this.details_=aK||
+%GetScopeDetails(aH.break_id_,
+aH.details_.frameId(),
+aH.details_.inlinedFrameIndex(),
+G);
+this.frame_id_=aH.details_.frameId();
+this.inlined_frame_id_=aH.details_.inlinedFrameIndex();
+}else if(aI){
+this.details_=aK||%GetFunctionScopeDetails(aI.value(),G);
+this.fun_value_=aI.value();
+this.break_id_=(void 0);
+}else{
+this.details_=
+aK||%GetGeneratorScopeDetails(aJ.value(),G);
+this.gen_value_=aJ.value();
+this.break_id_=(void 0);
+}
+this.index_=G;
+}
+ScopeDetails.prototype.type=function(){
+if(!(this.break_id_===(void 0))){
+%CheckExecutionState(this.break_id_);
+}
+return this.details_[aB];
+};
+ScopeDetails.prototype.object=function(){
+if(!(this.break_id_===(void 0))){
+%CheckExecutionState(this.break_id_);
+}
+return this.details_[aC];
+};
+ScopeDetails.prototype.name=function(){
+if(!(this.break_id_===(void 0))){
+%CheckExecutionState(this.break_id_);
+}
+return this.details_[aD];
+};
+ScopeDetails.prototype.startPosition=function(){
+if(!(this.break_id_===(void 0))){
+%CheckExecutionState(this.break_id_);
+}
+return this.details_[aE];
+}
+ScopeDetails.prototype.endPosition=function(){
+if(!(this.break_id_===(void 0))){
+%CheckExecutionState(this.break_id_);
+}
+return this.details_[aF];
+}
+ScopeDetails.prototype.func=function(){
+if(!(this.break_id_===(void 0))){
+%CheckExecutionState(this.break_id_);
+}
+return this.details_[aG];
+}
+ScopeDetails.prototype.setVariableValueImpl=function(z,aL){
+var aM;
+if(!(this.break_id_===(void 0))){
+%CheckExecutionState(this.break_id_);
+aM=%SetScopeVariableValue(this.break_id_,this.frame_id_,
+this.inlined_frame_id_,this.index_,z,aL);
+}else if(!(this.fun_value_===(void 0))){
+aM=%SetScopeVariableValue(this.fun_value_,null,null,this.index_,
+z,aL);
+}else{
+aM=%SetScopeVariableValue(this.gen_value_,null,null,this.index_,
+z,aL);
+}
+if(!aM)throw %make_error(2,"Failed to set variable value");
+};
+function ScopeMirror(aH,aI,aJ,G,aK){
+%_Call(Mirror,this,j.SCOPE_TYPE);
+if(aH){
+this.frame_index_=aH.index_;
+}else{
+this.frame_index_=(void 0);
+}
+this.scope_index_=G;
+this.details_=new ScopeDetails(aH,aI,aJ,G,aK);
+}
+inherits(ScopeMirror,Mirror);
+ScopeMirror.prototype.details=function(){
+return this.details_;
+};
+ScopeMirror.prototype.frameIndex=function(){
+return this.frame_index_;
+};
+ScopeMirror.prototype.scopeIndex=function(){
+return this.scope_index_;
+};
+ScopeMirror.prototype.scopeType=function(){
+return this.details_.type();
+};
+ScopeMirror.prototype.scopeObject=function(){
+return MakeMirror(this.details_.object());
+};
+ScopeMirror.prototype.setVariableValue=function(z,aL){
+this.details_.setVariableValueImpl(z,aL);
+};
+function ScriptMirror(E){
+%_Call(Mirror,this,j.SCRIPT_TYPE);
+this.script_=E;
+this.context_=new ContextMirror(E.context_data);
+}
+inherits(ScriptMirror,Mirror);
+ScriptMirror.prototype.value=function(){
+return this.script_;
+};
+ScriptMirror.prototype.name=function(){
+return this.script_.name||this.script_.nameOrSourceURL();
+};
+ScriptMirror.prototype.id=function(){
+return this.script_.id;
+};
+ScriptMirror.prototype.source=function(){
+return this.script_.source;
+};
+ScriptMirror.prototype.setSource=function(aN){
+if(!(typeof(aN)==='string'))throw %make_error(2,"Source is not a string");
+%DebugSetScriptSource(this.script_,aN);
+};
+ScriptMirror.prototype.lineOffset=function(){
+return this.script_.line_offset;
+};
+ScriptMirror.prototype.columnOffset=function(){
+return this.script_.column_offset;
+};
+ScriptMirror.prototype.data=function(){
+return this.script_.data;
+};
+ScriptMirror.prototype.scriptType=function(){
+return this.script_.type;
+};
+ScriptMirror.prototype.compilationType=function(){
+return this.script_.compilation_type;
+};
+ScriptMirror.prototype.lineCount=function(){
+return %ScriptLineCount(this.script_);
+};
+ScriptMirror.prototype.locationFromPosition=function(
+position,include_resource_offset){
+return this.script_.locationFromPosition(position,include_resource_offset);
+};
+ScriptMirror.prototype.context=function(){
+return this.context_;
+};
+ScriptMirror.prototype.evalFromScript=function(){
+return MakeMirror(this.script_.eval_from_script);
+};
+ScriptMirror.prototype.evalFromFunctionName=function(){
+return MakeMirror(this.script_.eval_from_function_name);
+};
+ScriptMirror.prototype.evalFromLocation=function(){
+var aO=this.evalFromScript();
+if(!aO.isUndefined()){
+var aP=this.script_.eval_from_script_position;
+return aO.locationFromPosition(aP,true);
+}
+};
+ScriptMirror.prototype.toText=function(){
+var D='';
+D+=this.name();
+D+=' (lines: ';
+if(this.lineOffset()>0){
+D+=this.lineOffset();
+D+='-';
+D+=this.lineOffset()+this.lineCount()-1;
+}else{
+D+=this.lineCount();
+}
+D+=')';
+return D;
+};
+function ContextMirror(aQ){
+%_Call(Mirror,this,j.CONTEXT_TYPE);
+this.data_=aQ;
+}
+inherits(ContextMirror,Mirror);
+ContextMirror.prototype.data=function(){
+return this.data_;
+};
+b.InstallConstants(a,[
+"MakeMirror",MakeMirror,
+"ScopeType",s,
+"PropertyType",q,
+"PropertyAttribute",r,
+"Mirror",Mirror,
+"ValueMirror",ValueMirror,
+"UndefinedMirror",UndefinedMirror,
+"NullMirror",NullMirror,
+"BooleanMirror",BooleanMirror,
+"NumberMirror",NumberMirror,
+"StringMirror",StringMirror,
+"SymbolMirror",SymbolMirror,
+"ObjectMirror",ObjectMirror,
+"FunctionMirror",FunctionMirror,
+"UnresolvedFunctionMirror",UnresolvedFunctionMirror,
+"ArrayMirror",ArrayMirror,
+"DateMirror",DateMirror,
+"RegExpMirror",RegExpMirror,
+"ErrorMirror",ErrorMirror,
+"PromiseMirror",PromiseMirror,
+"MapMirror",MapMirror,
+"SetMirror",SetMirror,
+"IteratorMirror",IteratorMirror,
+"GeneratorMirror",GeneratorMirror,
+"PropertyMirror",PropertyMirror,
+"InternalPropertyMirror",InternalPropertyMirror,
+"FrameMirror",FrameMirror,
+"ScriptMirror",ScriptMirror,
+"ScopeMirror",ScopeMirror,
+"FrameDetails",FrameDetails,
+]);
+})
+
+debugU
+(function(a,b){
+"use strict";
+var c=a.FrameMirror;
+var d=a.Array;
+var e=a.RegExp;
+var f=a.isNaN;
+var g=a.MakeMirror;
+var h=a.Math.min;
+var i=a.Mirror;
+var j=a.ValueMirror;
+var k={};
+k.DebugEvent={Break:1,
+Exception:2,
+AfterCompile:3,
+CompileError:4,
+AsyncTaskEvent:5};
+k.ExceptionBreak={Caught:0,
+Uncaught:1};
+k.StepAction={StepOut:0,
+StepNext:1,
+StepIn:2};
+k.ScriptType={Native:0,
+Extension:1,
+Normal:2,
+Wasm:3};
+k.ScriptCompilationType={Host:0,
+Eval:1,
+JSON:2};
+function ScriptTypeFlag(l){
+return(1<<l);
+}
+var m={
+breakOnCaughtException:{
+getValue:function(){return k.isBreakOnException();},
+setValue:function(n){
+if(n){
+k.setBreakOnException();
+}else{
+k.clearBreakOnException();
+}
+}
+},
+breakOnUncaughtException:{
+getValue:function(){return k.isBreakOnUncaughtException();},
+setValue:function(n){
+if(n){
+k.setBreakOnUncaughtException();
+}else{
+k.clearBreakOnUncaughtException();
+}
+}
+},
+};
+k.findScript=function(o){
+if((%IsFunction(o))){
+return %FunctionGetScript(o);
+}else if(%IsRegExp(o)){
+var p=this.scripts();
+var q=null;
+var r=0;
+for(var s in p){
+var t=p[s];
+if(o.test(t.name)){
+q=t;
+r++;
+}
+}
+if(r==1){
+return q;
+}else{
+return(void 0);
+}
+}else{
+return %GetScript(o);
+}
+};
+k.scriptSource=function(o){
+return this.findScript(o).source;
+};
+k.source=function(u){
+if(!(%IsFunction(u)))throw %make_type_error(47);
+return %FunctionGetSourceCode(u);
+};
+k.sourcePosition=function(u){
+if(!(%IsFunction(u)))throw %make_type_error(47);
+return %FunctionGetScriptSourcePosition(u);
+};
+k.findFunctionSourceLocation=function(v,w,x){
+var t=%FunctionGetScript(v);
+var y=%FunctionGetScriptSourcePosition(v);
+return %ScriptLocationFromLine(t,w,x,y);
+};
+k.findScriptSourcePosition=function(t,w,x){
+var z=%ScriptLocationFromLine(t,w,x,0);
+return z?z.position:null;
+};
+k.clearStepping=function(){
+%ClearStepping();
+};
+k.setBreakOnException=function(){
+return %ChangeBreakOnException(k.ExceptionBreak.Caught,true);
+};
+k.clearBreakOnException=function(){
+return %ChangeBreakOnException(k.ExceptionBreak.Caught,false);
+};
+k.isBreakOnException=function(){
+return!!%IsBreakOnException(k.ExceptionBreak.Caught);
+};
+k.setBreakOnUncaughtException=function(){
+return %ChangeBreakOnException(k.ExceptionBreak.Uncaught,true);
+};
+k.clearBreakOnUncaughtException=function(){
+return %ChangeBreakOnException(k.ExceptionBreak.Uncaught,false);
+};
+k.isBreakOnUncaughtException=function(){
+return!!%IsBreakOnException(k.ExceptionBreak.Uncaught);
+};
+k.scripts=function(){
+return %DebugGetLoadedScripts();
+};
+function scriptById(A){
+var p=k.scripts();
+for(var t of p){
+if(t.id==A)return t;
+}
+return(void 0);
+};
+k.debuggerFlags=function(){
+return m;
+};
+k.MakeMirror=g;
+function MakeExecutionState(B){
+return new ExecutionState(B);
+}
+function ExecutionState(B){
+this.break_id=B;
+this.selected_frame=0;
+}
+ExecutionState.prototype.prepareStep=function(C){
+if(C===k.StepAction.StepIn||
+C===k.StepAction.StepOut||
+C===k.StepAction.StepNext){
+return %PrepareStep(this.break_id,C);
+}
+throw %make_type_error(47);
+};
+ExecutionState.prototype.evaluateGlobal=function(D){
+return g(%DebugEvaluateGlobal(this.break_id,D));
+};
+ExecutionState.prototype.frameCount=function(){
+return %GetFrameCount(this.break_id);
+};
+ExecutionState.prototype.frame=function(E){
+if(E==null)E=this.selected_frame;
+if(E<0||E>=this.frameCount()){
+throw %make_type_error(46);
+}
+return new c(this.break_id,E);
+};
+ExecutionState.prototype.setSelectedFrame=function(F){
+var s=(%_ToNumber(F));
+if(s<0||s>=this.frameCount()){
+throw %make_type_error(46);
+}
+this.selected_frame=s;
+};
+ExecutionState.prototype.selectedFrame=function(){
+return this.selected_frame;
+};
+function MakeExceptionEvent(B,G,H,I){
+return new ExceptionEvent(B,G,H,I);
+}
+function ExceptionEvent(B,G,H,I){
+this.exec_state_=new ExecutionState(B);
+this.exception_=G;
+this.uncaught_=H;
+this.promise_=I;
+}
+ExceptionEvent.prototype.eventType=function(){
+return k.DebugEvent.Exception;
+};
+ExceptionEvent.prototype.exception=function(){
+return this.exception_;
+};
+ExceptionEvent.prototype.uncaught=function(){
+return this.uncaught_;
+};
+ExceptionEvent.prototype.promise=function(){
+return this.promise_;
+};
+ExceptionEvent.prototype.func=function(){
+return this.exec_state_.frame(0).func();
+};
+ExceptionEvent.prototype.sourceLine=function(){
+return this.exec_state_.frame(0).sourceLine();
+};
+ExceptionEvent.prototype.sourceColumn=function(){
+return this.exec_state_.frame(0).sourceColumn();
+};
+ExceptionEvent.prototype.sourceLineText=function(){
+return this.exec_state_.frame(0).sourceLineText();
+};
+function MakeCompileEvent(t,l){
+return new CompileEvent(t,l);
+}
+function CompileEvent(t,l){
+this.script_=g(t);
+this.type_=l;
+}
+CompileEvent.prototype.eventType=function(){
+return this.type_;
+};
+CompileEvent.prototype.script=function(){
+return this.script_;
+};
+function MakeScriptObject_(t,J){
+var K={id:t.id(),
+name:t.name(),
+lineOffset:t.lineOffset(),
+columnOffset:t.columnOffset(),
+lineCount:t.lineCount(),
+};
+if(!(t.data()===(void 0))){
+K.data=t.data();
+}
+if(J){
+K.source=t.source();
+}
+return K;
+}
+function MakeAsyncTaskEvent(l,L){
+return new AsyncTaskEvent(l,L);
+}
+function AsyncTaskEvent(l,L){
+this.type_=l;
+this.id_=L;
+}
+AsyncTaskEvent.prototype.type=function(){
+return this.type_;
+}
+AsyncTaskEvent.prototype.id=function(){
+return this.id_;
+}
+b.InstallConstants(a,[
+"Debug",k,
+"CompileEvent",CompileEvent,
+]);
+b.InstallConstants(b,[
+"MakeExecutionState",MakeExecutionState,
+"MakeExceptionEvent",MakeExceptionEvent,
+"MakeCompileEvent",MakeCompileEvent,
+"MakeAsyncTaskEvent",MakeAsyncTaskEvent,
+]);
+})
+
+ liveedit
+(function(a,b){
+"use strict";
+var c=a.Debug.findScriptSourcePosition;
+var d=a.Array;
+var e=a.Math.floor;
+var f=a.Math.max;
+var g=a.SyntaxError;
+var h;
+function ApplyPatchMultiChunk(script,diff_array,new_source,preview_only,
+change_log){
+var i=script.source;
+var j=GatherCompileInfo(i,script);
+var k=BuildCodeInfoTree(j);
+var l=new PosTranslator(diff_array);
+MarkChangedFunctions(k,l.GetChunks());
+FindLiveSharedInfos(k,script);
+var m;
+try{
+m=GatherCompileInfo(new_source,script);
+}catch(e){
+var n=
+new Failure("Failed to compile new version of script: "+e);
+if(e instanceof g){
+var o={
+type:"liveedit_compile_error",
+syntaxErrorMessage:e.message
+};
+CopyErrorPositionToDetails(e,o);
+n.details=o;
+}
+throw n;
+}
+var p=m.reduce(
+(max,info)=>f(max,info.function_literal_id),0);
+var q=BuildCodeInfoTree(m);
+FindCorrespondingFunctions(k,q);
+var r=new d();
+var s=new d();
+var t=new d();
+var u=new d();
+function HarvestTodo(v){
+function CollectDamaged(w){
+s.push(w);
+for(var x=0;x<w.children.length;x++){
+CollectDamaged(w.children[x]);
+}
+}
+function CollectNew(y){
+for(var x=0;x<y.length;x++){
+t.push(y[x]);
+CollectNew(y[x].children);
+}
+}
+if(v.status==h.DAMAGED){
+CollectDamaged(v);
+return;
+}
+if(v.status==h.UNCHANGED){
+u.push(v);
+}else if(v.status==h.SOURCE_CHANGED){
+u.push(v);
+}else if(v.status==h.CHANGED){
+r.push(v);
+CollectNew(v.unmatched_new_nodes);
+}
+for(var x=0;x<v.children.length;x++){
+HarvestTodo(v.children[x]);
+}
+}
+var z={
+change_tree:DescribeChangeTree(k),
+textual_diff:{
+old_len:i.length,
+new_len:new_source.length,
+chunks:diff_array
+},
+updated:false
+};
+if(preview_only){
+return z;
+}
+HarvestTodo(k);
+var A=new d();
+var B=new d();
+for(var x=0;x<r.length;x++){
+var C=r[x].live_shared_function_infos;
+var D=
+r[x].corresponding_node.info.shared_function_info;
+if(C){
+for(var E=0;E<C.length;E++){
+A.push(C[E]);
+B.push(D);
+}
+}
+}
+var F=
+CheckStackActivations(A,
+B,
+change_log);
+z.stack_modified=F!=0;
+var G;
+if(s.length==0){
+%LiveEditReplaceScript(script,new_source,null);
+G=(void 0);
+}else{
+var H=CreateNameForOldScript(script);
+G=%LiveEditReplaceScript(script,new_source,H);
+var I=new d();
+change_log.push({linked_to_old_script:I});
+for(var x=0;x<s.length;x++){
+LinkToOldScript(s[x],G,
+I);
+}
+z.created_script_name=H;
+}
+for(var x=0;x<r.length;x++){
+PatchFunctionCode(r[x],change_log);
+}
+var J=new d();
+change_log.push({position_patched:J});
+for(var x=0;x<u.length;x++){
+PatchPositions(u[x],diff_array,
+J);
+if(u[x].live_shared_function_infos){
+var K=
+u[x]
+.corresponding_node.info.function_literal_id;
+u[x].live_shared_function_infos.forEach(function(
+info){
+%LiveEditFunctionSourceUpdated(
+info.raw_array,K);
+});
+}
+}
+%LiveEditFixupScript(script,p);
+for(var x=0;x<t.length;x++){
+%LiveEditFunctionSetScript(
+t[x].info.shared_function_info,script);
+}
+z.updated=true;
+return z;
+}
+function GatherCompileInfo(L,M){
+var N=%LiveEditGatherCompileInfo(M,L);
+var O=new d();
+var P=new d();
+for(var x=0;x<N.length;x++){
+var Q=new FunctionCompileInfo(N[x]);
+%LiveEditFunctionSetScript(Q.shared_function_info,(void 0));
+O.push(Q);
+P.push(x);
+}
+for(var x=0;x<O.length;x++){
+var R=x;
+for(var E=x+1;E<O.length;E++){
+if(O[R].start_position>O[E].start_position){
+R=E;
+}
+}
+if(R!=x){
+var S=O[R];
+var T=P[R];
+O[R]=O[x];
+P[R]=P[x];
+O[x]=S;
+P[x]=T;
+}
+}
+var U=0;
+function ResetIndexes(V,W){
+var X=-1;
+while(U<O.length&&
+O[U].outer_index==W){
+var Y=U;
+O[Y].outer_index=V;
+if(X!=-1){
+O[X].next_sibling_index=Y;
+}
+X=Y;
+U++;
+ResetIndexes(Y,P[Y]);
+}
+if(X!=-1){
+O[X].next_sibling_index=-1;
+}
+}
+ResetIndexes(-1,-1);
+Assert(U==O.length);
+return O;
+}
+function PatchFunctionCode(v,Z){
+var D=v.corresponding_node.info;
+if(v.live_shared_function_infos){
+v.live_shared_function_infos.forEach(function(aa){
+%LiveEditReplaceFunctionCode(D.raw_array,
+aa.raw_array);
+for(var x=0;x<v.children.length;x++){
+if(v.children[x].corresponding_node){
+var ab=
+v.children[x].corresponding_node.info.
+shared_function_info;
+if(v.children[x].live_shared_function_infos){
+v.children[x].live_shared_function_infos.
+forEach(function(ac){
+%LiveEditReplaceRefToNestedFunction(
+aa.info,
+ab,
+ac.info);
+});
+}
+}
+}
+});
+Z.push({function_patched:D.function_name});
+}else{
+Z.push({function_patched:D.function_name,
+function_info_not_found:true});
+}
+}
+function LinkToOldScript(ad,G,ae){
+if(ad.live_shared_function_infos){
+ad.live_shared_function_infos.
+forEach(function(Q){
+%LiveEditFunctionSetScript(Q.info,G);
+});
+ae.push({name:ad.info.function_name});
+}else{
+ae.push(
+{name:ad.info.function_name,not_found:true});
+}
+}
+function Assert(af,ag){
+if(!af){
+if(ag){
+throw"Assert "+ag;
+}else{
+throw"Assert";
+}
+}
+}
+function DiffChunk(ah,ai,aj,ak){
+this.pos1=ah;
+this.pos2=ai;
+this.len1=aj;
+this.len2=ak;
+}
+function PosTranslator(al){
+var am=new d();
+var an=0;
+for(var x=0;x<al.length;x+=3){
+var ao=al[x];
+var ap=ao+an;
+var aq=al[x+1];
+var ar=al[x+2];
+am.push(new DiffChunk(ao,ap,aq-ao,
+ar-ap));
+an=ar-aq;
+}
+this.chunks=am;
+}
+PosTranslator.prototype.GetChunks=function(){
+return this.chunks;
+};
+PosTranslator.prototype.Translate=function(as,at){
+var au=this.chunks;
+if(au.length==0||as<au[0].pos1){
+return as;
+}
+var av=0;
+var aw=au.length-1;
+while(av<aw){
+var ax=e((av+aw)/2);
+if(as<au[ax+1].pos1){
+aw=ax;
+}else{
+av=ax+1;
+}
+}
+var ay=au[av];
+if(as>=ay.pos1+ay.len1){
+return as+ay.pos2+ay.len2-ay.pos1-ay.len1;
+}
+if(!at){
+at=PosTranslator.DefaultInsideChunkHandler;
+}
+return at(as,ay);
+};
+PosTranslator.DefaultInsideChunkHandler=function(as,az){
+Assert(false,"Cannot translate position in changed area");
+};
+PosTranslator.ShiftWithTopInsideChunkHandler=
+function(as,az){
+return as-az.pos1+az.pos2;
+};
+var h={
+UNCHANGED:"unchanged",
+SOURCE_CHANGED:"source changed",
+CHANGED:"changed",
+DAMAGED:"damaged"
+};
+function CodeInfoTreeNode(aA,aB,aC){
+this.info=aA;
+this.children=aB;
+this.array_index=aC;
+this.parent=(void 0);
+this.status=h.UNCHANGED;
+this.status_explanation=(void 0);
+this.new_start_pos=(void 0);
+this.new_end_pos=(void 0);
+this.corresponding_node=(void 0);
+this.unmatched_new_nodes=(void 0);
+this.textual_corresponding_node=(void 0);
+this.textually_unmatched_new_nodes=(void 0);
+this.live_shared_function_infos=(void 0);
+}
+function BuildCodeInfoTree(aD){
+var aE=0;
+function BuildNode(){
+var aF=aE;
+aE++;
+var aG=new d();
+while(aE<aD.length&&
+aD[aE].outer_index==aF){
+aG.push(BuildNode());
+}
+var w=new CodeInfoTreeNode(aD[aF],aG,
+aF);
+for(var x=0;x<aG.length;x++){
+aG[x].parent=w;
+}
+return w;
+}
+var aH=BuildNode();
+Assert(aE==aD.length);
+return aH;
+}
+function MarkChangedFunctions(aI,am){
+var aJ=new function(){
+var aK=0;
+var aL=0;
+this.current=function(){return am[aK];};
+this.next=function(){
+var ay=am[aK];
+aL=ay.pos2+ay.len2-(ay.pos1+ay.len1);
+aK++;
+};
+this.done=function(){return aK>=am.length;};
+this.TranslatePos=function(as){return as+aL;};
+};
+function ProcessInternals(aM){
+aM.new_start_pos=aJ.TranslatePos(
+aM.info.start_position);
+var aN=0;
+var aO=false;
+var aP=false;
+while(!aJ.done()&&
+aJ.current().pos1<aM.info.end_position){
+if(aN<aM.children.length){
+var aQ=aM.children[aN];
+if(aQ.info.end_position<=aJ.current().pos1){
+ProcessUnchangedChild(aQ);
+aN++;
+continue;
+}else if(aQ.info.start_position>=
+aJ.current().pos1+aJ.current().len1){
+aO=true;
+aJ.next();
+continue;
+}else if(aQ.info.start_position<=aJ.current().pos1&&
+aQ.info.end_position>=aJ.current().pos1+
+aJ.current().len1){
+ProcessInternals(aQ);
+aP=aP||
+(aQ.status!=h.UNCHANGED);
+aO=aO||
+(aQ.status==h.DAMAGED);
+aN++;
+continue;
+}else{
+aO=true;
+aQ.status=h.DAMAGED;
+aQ.status_explanation=
+"Text diff overlaps with function boundary";
+aN++;
+continue;
+}
+}else{
+if(aJ.current().pos1+aJ.current().len1<=
+aM.info.end_position){
+aM.status=h.CHANGED;
+aJ.next();
+continue;
+}else{
+aM.status=h.DAMAGED;
+aM.status_explanation=
+"Text diff overlaps with function boundary";
+return;
+}
+}
+Assert("Unreachable",false);
+}
+while(aN<aM.children.length){
+var aQ=aM.children[aN];
+ProcessUnchangedChild(aQ);
+aN++;
+}
+if(aO){
+aM.status=h.CHANGED;
+}else if(aP){
+aM.status=h.SOURCE_CHANGED;
+}
+aM.new_end_pos=
+aJ.TranslatePos(aM.info.end_position);
+}
+function ProcessUnchangedChild(w){
+w.new_start_pos=aJ.TranslatePos(w.info.start_position);
+w.new_end_pos=aJ.TranslatePos(w.info.end_position);
+}
+ProcessInternals(aI);
+}
+function FindCorrespondingFunctions(aR,aS){
+function ProcessNode(v,aT){
+var aU=
+IsFunctionContextLocalsChanged(v.info,aT.info);
+if(aU){
+v.status=h.CHANGED;
+}
+var aV=v.children;
+var aW=aT.children;
+var aX=[];
+var aY=[];
+var aZ=0;
+var ba=0;
+while(aZ<aV.length){
+if(aV[aZ].status==h.DAMAGED){
+aZ++;
+}else if(ba<aW.length){
+if(aW[ba].info.start_position<
+aV[aZ].new_start_pos){
+aX.push(aW[ba]);
+aY.push(aW[ba]);
+ba++;
+}else if(aW[ba].info.start_position==
+aV[aZ].new_start_pos){
+if(aW[ba].info.end_position==
+aV[aZ].new_end_pos){
+aV[aZ].corresponding_node=
+aW[ba];
+aV[aZ].textual_corresponding_node=
+aW[ba];
+if(aU){
+aV[aZ].status=h.DAMAGED;
+aV[aZ].status_explanation=
+"Enclosing function is now incompatible. "+
+aU;
+aV[aZ].corresponding_node=(void 0);
+}else if(aV[aZ].status!=
+h.UNCHANGED){
+ProcessNode(aV[aZ],
+aW[ba]);
+if(aV[aZ].status==h.DAMAGED){
+aX.push(
+aV[aZ].corresponding_node);
+aV[aZ].corresponding_node=(void 0);
+v.status=h.CHANGED;
+}
+}else{
+ProcessNode(aV[aZ],aW[ba]);
+}
+}else{
+aV[aZ].status=h.DAMAGED;
+aV[aZ].status_explanation=
+"No corresponding function in new script found";
+v.status=h.CHANGED;
+aX.push(aW[ba]);
+aY.push(aW[ba]);
+}
+ba++;
+aZ++;
+}else{
+aV[aZ].status=h.DAMAGED;
+aV[aZ].status_explanation=
+"No corresponding function in new script found";
+v.status=h.CHANGED;
+aZ++;
+}
+}else{
+aV[aZ].status=h.DAMAGED;
+aV[aZ].status_explanation=
+"No corresponding function in new script found";
+v.status=h.CHANGED;
+aZ++;
+}
+}
+while(ba<aW.length){
+aX.push(aW[ba]);
+aY.push(aW[ba]);
+ba++;
+}
+if(v.status==h.CHANGED){
+if(v.info.param_num!=aT.info.param_num){
+v.status=h.DAMAGED;
+v.status_explanation="Changed parameter number: "+
+v.info.param_num+" and "+aT.info.param_num;
+}
+}
+v.unmatched_new_nodes=aX;
+v.textually_unmatched_new_nodes=
+aY;
+}
+ProcessNode(aR,aS);
+aR.corresponding_node=aS;
+aR.textual_corresponding_node=aS;
+Assert(aR.status!=h.DAMAGED,
+"Script became damaged");
+}
+function FindLiveSharedInfos(aR,M){
+var bb=%LiveEditFindSharedFunctionInfosForScript(M);
+var bc=new d();
+for(var x=0;x<bb.length;x++){
+bc.push(new SharedInfoWrapper(bb[x]));
+}
+function FindFunctionInfos(O){
+var bd=[];
+for(var x=0;x<bc.length;x++){
+var be=bc[x];
+if(be.start_position==O.start_position&&
+be.end_position==O.end_position){
+bd.push(be);
+}
+}
+if(bd.length>0){
+return bd;
+}
+}
+function TraverseTree(w){
+w.live_shared_function_infos=FindFunctionInfos(w.info);
+for(var x=0;x<w.children.length;x++){
+TraverseTree(w.children[x]);
+}
+}
+TraverseTree(aR);
+}
+function FunctionCompileInfo(bf){
+this.function_name=bf[0];
+this.start_position=bf[1];
+this.end_position=bf[2];
+this.param_num=bf[3];
+this.scope_info=bf[4];
+this.outer_index=bf[5];
+this.shared_function_info=bf[6];
+this.function_literal_id=bf[7];
+this.next_sibling_index=null;
+this.raw_array=bf;
+}
+function SharedInfoWrapper(bf){
+this.function_name=bf[0];
+this.start_position=bf[1];
+this.end_position=bf[2];
+this.info=bf[3];
+this.raw_array=bf;
+}
+function PatchPositions(ad,al,ae){
+if(ad.live_shared_function_infos){
+ad.live_shared_function_infos.forEach(function(Q){
+%LiveEditPatchFunctionPositions(Q.raw_array,
+al);
+});
+ae.push({name:ad.info.function_name});
+}else{
+ae.push(
+{name:ad.info.function_name,info_not_found:true});
+}
+}
+function CreateNameForOldScript(M){
+return M.name+" (old)";
+}
+function IsFunctionContextLocalsChanged(bg,bh){
+var bi=bg.scope_info;
+var bj=bh.scope_info;
+var bk;
+var bl;
+if(bi){
+bk=bi.toString();
+}else{
+bk="";
+}
+if(bj){
+bl=bj.toString();
+}else{
+bl="";
+}
+if(bk!=bl){
+return"Variable map changed: ["+bk+
+"] => ["+bl+"]";
+}
+return;
+}
+var bm;
+function CheckStackActivations(old_shared_wrapper_list,
+new_shared_list,
+Z){
+var bn=new d();
+for(var x=0;x<old_shared_wrapper_list.length;x++){
+bn[x]=old_shared_wrapper_list[x].info;
+}
+var bo=%LiveEditCheckAndDropActivations(
+bn,new_shared_list,true);
+if(bo[old_shared_wrapper_list.length]){
+throw new Failure(bo[old_shared_wrapper_list.length]);
+}
+var bp=new d();
+var bq=new d();
+for(var x=0;x<bn.length;x++){
+var br=old_shared_wrapper_list[x];
+if(bo[x]==bm.REPLACED_ON_ACTIVE_STACK){
+bq.push({name:br.function_name});
+}else if(bo[x]!=bm.AVAILABLE_FOR_PATCH){
+var bs={
+name:br.function_name,
+start_pos:br.start_position,
+end_pos:br.end_position,
+replace_problem:
+bm.SymbolName(bo[x])
+};
+bp.push(bs);
+}
+}
+if(bq.length>0){
+Z.push({dropped_from_stack:bq});
+}
+if(bp.length>0){
+Z.push({functions_on_stack:bp});
+throw new Failure("Blocked by functions on stack");
+}
+return bq.length;
+}
+var bm={
+AVAILABLE_FOR_PATCH:1,
+BLOCKED_ON_ACTIVE_STACK:2,
+BLOCKED_ON_OTHER_STACK:3,
+BLOCKED_UNDER_NATIVE_CODE:4,
+REPLACED_ON_ACTIVE_STACK:5,
+BLOCKED_UNDER_GENERATOR:6,
+BLOCKED_ACTIVE_GENERATOR:7,
+BLOCKED_NO_NEW_TARGET_ON_RESTART:8
+};
+bm.SymbolName=function(bt){
+var bu=bm;
+for(var bv in bu){
+if(bu[bv]==bt){
+return bv;
+}
+}
+};
+function Failure(ag){
+this.message=ag;
+}
+Failure.prototype.toString=function(){
+return"LiveEdit Failure: "+this.message;
+};
+function CopyErrorPositionToDetails(bw,o){
+function createPositionStruct(M,bx){
+if(bx==-1)return;
+var by=M.locationFromPosition(bx,true);
+if(by==null)return;
+return{
+line:by.line+1,
+column:by.column+1,
+position:bx
+};
+}
+if(!("scriptObject"in bw)||!("startPosition"in bw)){
+return;
+}
+var M=bw.scriptObject;
+var bz={
+start:createPositionStruct(M,bw.startPosition),
+end:createPositionStruct(M,bw.endPosition)
+};
+o.position=bz;
+}
+function SetScriptSource(M,bA,bB,Z){
+var i=M.source;
+var bC=CompareStrings(i,bA);
+return ApplyPatchMultiChunk(M,bC,bA,bB,
+Z);
+}
+function CompareStrings(bD,bE){
+return %LiveEditCompareStrings(bD,bE);
+}
+function ApplySingleChunkPatch(M,change_pos,change_len,new_str,
+Z){
+var i=M.source;
+var bA=i.substring(0,change_pos)+
+new_str+i.substring(change_pos+change_len);
+return ApplyPatchMultiChunk(M,
+[change_pos,change_pos+change_len,change_pos+new_str.length],
+bA,false,Z);
+}
+function DescribeChangeTree(aR){
+function ProcessOldNode(w){
+var bF=[];
+for(var x=0;x<w.children.length;x++){
+var aQ=w.children[x];
+if(aQ.status!=h.UNCHANGED){
+bF.push(ProcessOldNode(aQ));
+}
+}
+var bG=[];
+if(w.textually_unmatched_new_nodes){
+for(var x=0;x<w.textually_unmatched_new_nodes.length;x++){
+var aQ=w.textually_unmatched_new_nodes[x];
+bG.push(ProcessNewNode(aQ));
+}
+}
+var bH={
+name:w.info.function_name,
+positions:DescribePositions(w),
+status:w.status,
+children:bF,
+new_children:bG
+};
+if(w.status_explanation){
+bH.status_explanation=w.status_explanation;
+}
+if(w.textual_corresponding_node){
+bH.new_positions=DescribePositions(w.textual_corresponding_node);
+}
+return bH;
+}
+function ProcessNewNode(w){
+var bF=[];
+if(false){
+for(var x=0;x<w.children.length;x++){
+bF.push(ProcessNewNode(w.children[x]));
+}
+}
+var bH={
+name:w.info.function_name,
+positions:DescribePositions(w),
+children:bF,
+};
+return bH;
+}
+function DescribePositions(w){
+return{
+start_position:w.info.start_position,
+end_position:w.info.end_position
+};
+}
+return ProcessOldNode(aR);
+}
+var bI={};
+bI.SetScriptSource=SetScriptSource;
+bI.ApplyPatchMultiChunk=ApplyPatchMultiChunk;
+bI.Failure=Failure;
+bI.TestApi={
+PosTranslator:PosTranslator,
+CompareStrings:CompareStrings,
+ApplySingleChunkPatch:ApplySingleChunkPatch
+};
+b.InstallConstants(b,[
+"SetScriptSource",bI.SetScriptSource,
+]);
+a.Debug.LiveEdit=bI;
+})
+
+ prologue&
+(function(a,b,c){
+"use strict";
+%CheckIsBootstrapping();
+var d=(void 0);
+var e=%ExportFromRuntime({});
+function Export(f){
+f(e);
+}
+function Import(f){
+f.next=d;
+d=f;
+}
+function ImportNow(g){
+return e[g];
+}
+function InstallConstants(h,i){
+%CheckIsBootstrapping();
+%OptimizeObjectForAddingMultipleProperties(h,i.length>>1);
+var j=2|4|1;
+for(var k=0;k<i.length;k+=2){
+var g=i[k];
+var l=i[k+1];
+%AddNamedProperty(h,g,l,j);
+}
+%ToFastProperties(h);
+}
+function SetUpLockedPrototype(
+constructor,fields,methods){
+%CheckIsBootstrapping();
+var m=constructor.prototype;
+var n=(methods.length>>1)+(fields?fields.length:0);
+if(n>=4){
+%OptimizeObjectForAddingMultipleProperties(m,n);
+}
+if(fields){
+for(var k=0;k<fields.length;k++){
+%AddNamedProperty(m,fields[k],
+(void 0),2|4);
+}
+}
+for(var k=0;k<methods.length;k+=2){
+var o=methods[k];
+var f=methods[k+1];
+%AddNamedProperty(m,o,f,2|4|1);
+%SetNativeFlag(f);
+}
+%InternalSetPrototype(m,null);
+%ToFastProperties(m);
+}
+function PostNatives(b){
+%CheckIsBootstrapping();
+for(;!(d===(void 0));d=d.next){
+d(e);
+}
+e=(void 0);
+b.Export=(void 0);
+b.Import=(void 0);
+b.ImportNow=(void 0);
+b.PostNatives=(void 0);
+}
+var p=ImportNow("iterator_symbol");
+function GetMethod(q,r){
+var s=q[r];
+if((s==null))return(void 0);
+if((typeof(s)==='function'))return s;
+throw %make_type_error(25,typeof s);
+}
+function GetIterator(q,t){
+if((t===(void 0))){
+t=q[p];
+}
+if(!(typeof(t)==='function')){
+throw %make_type_error(89,q);
+}
+var u=%_Call(t,q);
+if(!(%_IsJSReceiver(u))){
+throw %make_type_error(82,u);
+}
+return u;
+}
+e.GetIterator=GetIterator;
+e.GetMethod=GetMethod;
+%OptimizeObjectForAddingMultipleProperties(b,14);
+b.Import=Import;
+b.ImportNow=ImportNow;
+b.Export=Export;
+b.InstallConstants=InstallConstants;
+b.SetUpLockedPrototype=SetUpLockedPrototype;
+b.PostNatives=PostNatives;
+%ToFastProperties(b);
+%OptimizeObjectForAddingMultipleProperties(c,11);
+c.logStackTrace=function logStackTrace(){
+%DebugTrace();
+};
+c.log=function log(){
+let message='';
+for(const arg of arguments){
+message+=arg;
+}
+%GlobalPrint(message);
+};
+c.createPrivateSymbol=function createPrivateSymbol(g){
+return %CreatePrivateSymbol(g);
+};
+c.uncurryThis=function uncurryThis(s){
+return function(thisArg,...args){
+return %reflect_apply(s,thisArg,args);
+};
+};
+c.markPromiseAsHandled=function markPromiseAsHandled(v){
+%PromiseMarkAsHandled(v);
+};
+c.promiseState=function promiseState(v){
+return %PromiseStatus(v);
+};
+c.kPROMISE_PENDING=0;
+c.kPROMISE_FULFILLED=1;
+c.kPROMISE_REJECTED=2;
+%ToFastProperties(c);
+})
+
+arrayu
+(function(a,b,c){
+"use strict";
+%CheckIsBootstrapping();
+var d;
+var e;
+var f=a.Array;
+var g=b.InternalArray;
+var h=a.Math.max;
+var i=a.Math.min;
+var j=a.Object.prototype.hasOwnProperty;
+var k=a.Object.prototype.toString;
+var l=b.ImportNow("iterator_symbol");
+var m=b.ImportNow("unscopables_symbol");
+b.Import(function(n){
+d=n.GetIterator;
+e=n.GetMethod;
+});
+function ArraySpeciesCreate(o,p){
+p=((p)+0)
+;
+var q=%ArraySpeciesConstructor(o);
+return new q(p);
+}
+function KeySortCompare(r,s){
+return r-s;
+}
+function GetSortedArrayKeys(o,t){
+if((typeof(t)==='number')){
+var u=t;
+var v=new g();
+for(var w=0;w<u;++w){
+var x=o[w];
+if(!(x===(void 0))||w in o){
+v.push(w);
+}
+}
+return v;
+}
+return InnerArraySort(t,t.length,KeySortCompare);
+}
+function SparseJoinWithSeparatorJS(o,v,p,y,z){
+var A=v.length;
+var B=new g(A*2);
+for(var w=0;w<A;w++){
+var C=v[w];
+B[w*2]=C;
+B[w*2+1]=ConvertToString(y,o[C]);
+}
+return %SparseJoinWithSeparator(B,p,z);
+}
+function SparseJoin(o,v,y){
+var A=v.length;
+var B=new g(A);
+for(var w=0;w<A;w++){
+B[w]=ConvertToString(y,o[v[w]]);
+}
+return %StringBuilderConcat(B,A,'');
+}
+function UseSparseVariant(o,p,D,E){
+if(!D||p<1000||%HasComplexElements(o)){
+return false;
+}
+if(!%_IsSmi(p)){
+return true;
+}
+var F=p>>2;
+var G=%EstimateNumberOfElements(o);
+return(G<F)&&
+(E>G*4);
+}
+function Stack(){
+this.length=0;
+this.values=new g();
+}
+Stack.prototype.length=null;
+Stack.prototype.values=null;
+function StackPush(H,I){
+H.values[H.length++]=I;
+}
+function StackPop(H){
+H.values[--H.length]=null
+}
+function StackHas(H,J){
+var p=H.length;
+var K=H.values;
+for(var w=0;w<p;w++){
+if(K[w]===J)return true;
+}
+return false;
+}
+var L=new Stack();
+function DoJoin(o,p,D,z,y){
+if(UseSparseVariant(o,p,D,p)){
+%NormalizeElements(o);
+var v=GetSortedArrayKeys(o,%GetArrayKeys(o,p));
+if(z===''){
+if(v.length===0)return'';
+return SparseJoin(o,v,y);
+}else{
+return SparseJoinWithSeparatorJS(
+o,v,p,y,z);
+}
+}
+if(p===1){
+return ConvertToString(y,o[0]);
+}
+var B=new g(p);
+for(var w=0;w<p;w++){
+B[w]=ConvertToString(y,o[w]);
+}
+if(z===''){
+return %StringBuilderConcat(B,p,'');
+}else{
+return %StringBuilderJoin(B,p,z);
+}
+}
+function Join(o,p,z,y){
+if(p===0)return'';
+var D=(%_IsArray(o));
+if(D){
+if(StackHas(L,o))return'';
+StackPush(L,o);
+}
+try{
+return DoJoin(o,p,D,z,y);
+}finally{
+if(D)StackPop(L);
+}
+}
+function ConvertToString(y,M){
+if((M==null))return'';
+return(%_ToString(y?M.toLocaleString():M));
+}
+function SparseSlice(o,N,O,P,Q){
+var t=%GetArrayKeys(o,N+O);
+if((typeof(t)==='number')){
+var u=t;
+for(var w=N;w<u;++w){
+var R=o[w];
+if(!(R===(void 0))||w in o){
+%CreateDataProperty(Q,w-N,R);
+}
+}
+}else{
+var p=t.length;
+for(var S=0;S<p;++S){
+var C=t[S];
+if(C>=N){
+var R=o[C];
+if(!(R===(void 0))||C in o){
+%CreateDataProperty(Q,C-N,R);
+}
+}
+}
+}
+}
+function SparseMove(o,N,O,P,T){
+if(T===O)return;
+var U=new g(
+i(P-O+T,0xffffffff));
+var V;
+var t=%GetArrayKeys(o,P);
+if((typeof(t)==='number')){
+var u=t;
+for(var w=0;w<N&&w<u;++w){
+var R=o[w];
+if(!(R===(void 0))||w in o){
+U[w]=R;
+}
+}
+for(var w=N+O;w<u;++w){
+var R=o[w];
+if(!(R===(void 0))||w in o){
+U[w-O+T]=R;
+}
+}
+}else{
+var p=t.length;
+for(var S=0;S<p;++S){
+var C=t[S];
+if(C<N){
+var R=o[C];
+if(!(R===(void 0))||C in o){
+U[C]=R;
+}
+}else if(C>=N+O){
+var R=o[C];
+if(!(R===(void 0))||C in o){
+var W=C-O+T;
+U[W]=R;
+if(W>0xfffffffe){
+V=V||new g();
+V.push(W);
+}
+}
+}
+}
+}
+%MoveArrayContents(U,o);
+if(!(V===(void 0))){
+var p=V.length;
+for(var w=0;w<p;++w){
+var C=V[w];
+o[C]=U[C];
+}
+}
+}
+function SimpleSlice(o,N,O,P,Q){
+for(var w=0;w<O;w++){
+var X=N+w;
+if(X in o){
+var R=o[X];
+%CreateDataProperty(Q,w,R);
+}
+}
+}
+function SimpleMove(o,N,O,P,T){
+if(T!==O){
+if(T>O){
+for(var w=P-O;w>N;w--){
+var Y=w+O-1;
+var Z=w+T-1;
+if(Y in o){
+o[Z]=o[Y];
+}else{
+delete o[Z];
+}
+}
+}else{
+for(var w=N;w<P-O;w++){
+var Y=w+O;
+var Z=w+T;
+if(Y in o){
+o[Z]=o[Y];
+}else{
+delete o[Z];
+}
+}
+for(var w=P;w>P-O+T;w--){
+delete o[w-1];
+}
+}
+}
+}
+var aa;
+%DefineMethodsInternal(f.prototype,class{toString(){
+var o;
+var ab;
+if((%_IsArray(this))){
+ab=this.join;
+if(ab===aa){
+return Join(this,this.length,',',false);
+}
+o=this;
+}else{
+o=(%_ToObject(this));
+ab=o.join;
+}
+if(!(typeof(ab)==='function')){
+return %_Call(k,o);
+}
+return %_Call(ab,o);
+}},-1);
+function InnerArrayToLocaleString(o,p){
+return Join(o,(%_ToLength(p)),',',true);
+}
+%DefineMethodsInternal(f.prototype,class{toLocaleString(){
+var o=(%_ToObject(this));
+var ac=o.length;
+return InnerArrayToLocaleString(o,ac);
+}},-1);
+function InnerArrayJoin(z,o,p){
+if((z===(void 0))){
+z=',';
+}else{
+z=(%_ToString(z));
+}
+if(p===1){
+var x=o[0];
+if((x==null))return'';
+return(%_ToString(x));
+}
+return Join(o,p,z,false);
+}
+%DefineMethodsInternal(f.prototype,class{join(z){
+var o=(%_ToObject(this));
+var p=(%_ToLength(o.length));
+return InnerArrayJoin(z,o,p);
+}},-1);
+function ArrayPopFallback(){
+var o=(%_ToObject(this));
+var ad=(%_ToLength(o.length));
+if(ad==0){
+o.length=ad;
+return;
+}
+ad--;
+var I=o[ad];
+delete o[ad];
+o.length=ad;
+return I;
+}
+function ArrayPushFallback(){
+var o=(%_ToObject(this));
+var ad=(%_ToLength(o.length));
+var ae=arguments.length;
+if(ae>9007199254740991-ad)throw %make_type_error(256,ae,ad);
+for(var w=0;w<ae;w++){
+o[w+ad]=arguments[w];
+}
+var af=ad+ae;
+o.length=af;
+return af;
+}
+function SparseReverse(o,P){
+var v=GetSortedArrayKeys(o,%GetArrayKeys(o,P));
+var ag=v.length-1;
+var ah=0;
+while(ah<=ag){
+var w=v[ah];
+var ai=v[ag];
+var aj=P-ai-1;
+var ak,al;
+if(aj<=w){
+al=ai;
+while(v[--ag]==ai){}
+ak=aj;
+}
+if(aj>=w){
+ak=w;
+while(v[++ah]==w){}
+al=P-w-1;
+}
+var am=o[ak];
+if(!(am===(void 0))||ak in o){
+var an=o[al];
+if(!(an===(void 0))||al in o){
+o[ak]=an;
+o[al]=am;
+}else{
+o[al]=am;
+delete o[ak];
+}
+}else{
+var an=o[al];
+if(!(an===(void 0))||al in o){
+o[ak]=an;
+delete o[al];
+}
+}
+}
+}
+function PackedArrayReverse(o,P){
+var ai=P-1;
+for(var w=0;w<ai;w++,ai--){
+var am=o[w];
+var an=o[ai];
+o[w]=an;
+o[ai]=am;
+}
+return o;
+}
+function GenericArrayReverse(o,P){
+var ai=P-1;
+for(var w=0;w<ai;w++,ai--){
+if(w in o){
+var am=o[w];
+if(ai in o){
+var an=o[ai];
+o[w]=an;
+o[ai]=am;
+}else{
+o[ai]=am;
+delete o[w];
+}
+}else{
+if(ai in o){
+var an=o[ai];
+o[w]=an;
+delete o[ai];
+}
+}
+}
+return o;
+}
+%DefineMethodsInternal(f.prototype,class{reverse(){
+var o=(%_ToObject(this));
+var P=(%_ToLength(o.length));
+var ao=(%_IsArray(o));
+if(UseSparseVariant(o,P,ao,P)){
+%NormalizeElements(o);
+SparseReverse(o,P);
+return o;
+}else if(ao&&%_HasFastPackedElements(o)){
+return PackedArrayReverse(o,P);
+}else{
+return GenericArrayReverse(o,P);
+}
+}},-1);
+function ArrayShiftFallback(){
+var o=(%_ToObject(this));
+var P=(%_ToLength(o.length));
+if(P===0){
+o.length=0;
+return;
+}
+if(%object_is_sealed(o))throw %make_type_error(15);
+var ap=o[0];
+if(UseSparseVariant(o,P,(%_IsArray(o)),P)){
+SparseMove(o,0,1,P,0);
+}else{
+SimpleMove(o,0,1,P,0);
+}
+o.length=P-1;
+return ap;
+}
+function ArrayUnshiftFallback(aq){
+var o=(%_ToObject(this));
+var P=(%_ToLength(o.length));
+var ar=arguments.length;
+if(P>0&&UseSparseVariant(o,P,(%_IsArray(o)),P)&&
+!%object_is_sealed(o)){
+SparseMove(o,0,0,P,ar);
+}else{
+SimpleMove(o,0,0,P,ar);
+}
+for(var w=0;w<ar;w++){
+o[w]=arguments[w];
+}
+var af=P+ar;
+o.length=af;
+return af;
+}
+function ArraySliceFallback(as,at){
+return null;
+}
+function ComputeSpliceStartIndex(N,P){
+if(N<0){
+N+=P;
+return N<0?0:N;
+}
+return N>P?P:N;
+}
+function ComputeSpliceDeleteCount(au,ar,P,N){
+var O=0;
+if(ar==1)
+return P-N;
+O=(%_ToInteger(au));
+if(O<0)
+return 0;
+if(O>P-N)
+return P-N;
+return O;
+}
+function ArraySpliceFallback(as,au){
+var ar=arguments.length;
+var o=(%_ToObject(this));
+var P=(%_ToLength(o.length));
+var N=ComputeSpliceStartIndex((%_ToInteger(as)),P);
+var O=ComputeSpliceDeleteCount(au,ar,P,
+N);
+var Q=ArraySpeciesCreate(o,O);
+Q.length=O;
+var av=ar>2?ar-2:0;
+if(O!=av&&%object_is_sealed(o)){
+throw %make_type_error(15);
+}else if(O>0&&%object_is_frozen(o)){
+throw %make_type_error(14);
+}
+var aw=O;
+if(av!=O){
+aw+=P-N-O;
+}
+if(UseSparseVariant(o,P,(%_IsArray(o)),aw)){
+%NormalizeElements(o);
+if((%_IsArray(Q)))%NormalizeElements(Q);
+SparseSlice(o,N,O,P,Q);
+SparseMove(o,N,O,P,av);
+}else{
+SimpleSlice(o,N,O,P,Q);
+SimpleMove(o,N,O,P,av);
+}
+var w=N;
+var ax=2;
+var ay=arguments.length;
+while(ax<ay){
+o[w++]=arguments[ax++];
+}
+o.length=P-O+av;
+return Q;
+}
+function InnerArraySort(o,p,az){
+if(!(typeof(az)==='function')){
+az=function(M,aA){
+if(M===aA)return 0;
+if(%_IsSmi(M)&&%_IsSmi(aA)){
+return %SmiLexicographicCompare(M,aA);
+}
+M=(%_ToString(M));
+aA=(%_ToString(aA));
+if(M==aA)return 0;
+else return M<aA?-1:1;
+};
+}
+function InsertionSort(r,n,aB){
+for(var w=n+1;w<aB;w++){
+var aC=r[w];
+for(var ai=w-1;ai>=n;ai--){
+var aD=r[ai];
+var aE=az(aD,aC);
+if(aE>0){
+r[ai+1]=aD;
+}else{
+break;
+}
+}
+r[ai+1]=aC;
+}
+};
+function GetThirdIndex(r,n,aB){
+var aF=new g();
+var aG=200+((aB-n)&15);
+var ai=0;
+n+=1;
+aB-=1;
+for(var w=n;w<aB;w+=aG){
+aF[ai]=[w,r[w]];
+ai++;
+}
+aF.sort(function(r,s){
+return az(r[1],s[1]);
+});
+var aH=aF[aF.length>>1][0];
+return aH;
+}
+function QuickSort(r,n,aB){
+var aH=0;
+while(true){
+if(aB-n<=10){
+InsertionSort(r,n,aB);
+return;
+}
+if(aB-n>1000){
+aH=GetThirdIndex(r,n,aB);
+}else{
+aH=n+((aB-n)>>1);
+}
+var aI=r[n];
+var aJ=r[aB-1];
+var aK=r[aH];
+var aL=az(aI,aJ);
+if(aL>0){
+var aD=aI;
+aI=aJ;
+aJ=aD;
+}
+var aM=az(aI,aK);
+if(aM>=0){
+var aD=aI;
+aI=aK;
+aK=aJ;
+aJ=aD;
+}else{
+var aN=az(aJ,aK);
+if(aN>0){
+var aD=aJ;
+aJ=aK;
+aK=aD;
+}
+}
+r[n]=aI;
+r[aB-1]=aK;
+var aO=aJ;
+var aP=n+1;
+var aQ=aB-1;
+r[aH]=r[aP];
+r[aP]=aO;
+partition:for(var w=aP+1;w<aQ;w++){
+var aC=r[w];
+var aE=az(aC,aO);
+if(aE<0){
+r[w]=r[aP];
+r[aP]=aC;
+aP++;
+}else if(aE>0){
+do{
+aQ--;
+if(aQ==w)break partition;
+var aR=r[aQ];
+aE=az(aR,aO);
+}while(aE>0);
+r[w]=r[aQ];
+r[aQ]=aC;
+if(aE<0){
+aC=r[w];
+r[w]=r[aP];
+r[aP]=aC;
+aP++;
+}
+}
+}
+if(aB-aQ<aP-n){
+QuickSort(r,aQ,aB);
+aB=aP;
+}else{
+QuickSort(r,n,aP);
+n=aQ;
+}
+}
+};
+function CopyFromPrototype(aS,p){
+var aT=0;
+for(var aU=%object_get_prototype_of(aS);aU;
+aU=%object_get_prototype_of(aU)){
+var t=(%_IsJSProxy(aU))
+?p:%GetArrayKeys(aU,p);
+if((typeof(t)==='number')){
+var aV=t;
+for(var w=0;w<aV;w++){
+if(!(%_Call(j,aS,w))&&(%_Call(j,aU,w))){
+aS[w]=aU[w];
+if(w>=aT){aT=w+1;}
+}
+}
+}else{
+for(var w=0;w<t.length;w++){
+var X=t[w];
+if(!(%_Call(j,aS,X))&&(%_Call(j,aU,X))){
+aS[X]=aU[X];
+if(X>=aT){aT=X+1;}
+}
+}
+}
+}
+return aT;
+};
+function ShadowPrototypeElements(aS,n,aB){
+for(var aU=%object_get_prototype_of(aS);aU;
+aU=%object_get_prototype_of(aU)){
+var t=(%_IsJSProxy(aU))
+?aB:%GetArrayKeys(aU,aB);
+if((typeof(t)==='number')){
+var aV=t;
+for(var w=n;w<aV;w++){
+if((%_Call(j,aU,w))){
+aS[w]=(void 0);
+}
+}
+}else{
+for(var w=0;w<t.length;w++){
+var X=t[w];
+if(n<=X&&(%_Call(j,aU,X))){
+aS[X]=(void 0);
+}
+}
+}
+}
+};
+function SafeRemoveArrayHoles(aS){
+var aW=0;
+var aX=p-1;
+var aY=0;
+while(aW<aX){
+while(aW<aX&&
+!(aS[aW]===(void 0))){
+aW++;
+}
+if(!(%_Call(j,aS,aW))){
+aY++;
+}
+while(aW<aX&&
+(aS[aX]===(void 0))){
+if(!(%_Call(j,aS,aX))){
+aY++;
+}
+aX--;
+}
+if(aW<aX){
+aS[aW]=aS[aX];
+aS[aX]=(void 0);
+}
+}
+if(!(aS[aW]===(void 0)))aW++;
+var w;
+for(w=aW;w<p-aY;w++){
+aS[w]=(void 0);
+}
+for(w=p-aY;w<p;w++){
+if(w in %object_get_prototype_of(aS)){
+aS[w]=(void 0);
+}else{
+delete aS[w];
+}
+}
+return aW;
+};
+if(p<2)return o;
+var D=(%_IsArray(o));
+var aZ;
+if(!D){
+aZ=CopyFromPrototype(o,p);
+}
+var ba=%RemoveArrayHoles(o,p);
+if(ba==-1){
+ba=SafeRemoveArrayHoles(o);
+}
+QuickSort(o,0,ba);
+if(!D&&(ba+1<aZ)){
+ShadowPrototypeElements(o,ba,aZ);
+}
+return o;
+}
+%DefineMethodsInternal(f.prototype,class{sort(az){
+if(!(az===(void 0))&&!(typeof(az)==='function')){
+throw %make_type_error(18,az);
+}
+var o=(%_ToObject(this));
+var p=(%_ToLength(o.length));
+return InnerArraySort(o,p,az);
+}},-1);
+%DefineMethodsInternal(f.prototype,class{lastIndexOf(aC,X){
+var o=(%_ToObject(this));
+var p=(%_ToLength(this.length));
+if(p==0)return-1;
+if(arguments.length<2){
+X=p-1;
+}else{
+X=(((%_ToInteger(X)))+0)
+;
+if(X<0)X+=p;
+if(X<0)return-1;
+else if(X>=p)X=p-1;
+}
+var bb=0;
+var aT=X;
+if(UseSparseVariant(o,p,(%_IsArray(o)),X)){
+%NormalizeElements(o);
+var t=%GetArrayKeys(o,X+1);
+if((typeof(t)==='number')){
+aT=t;
+}else{
+if(t.length==0)return-1;
+var bc=GetSortedArrayKeys(o,t);
+var w=bc.length-1;
+while(w>=0){
+var C=bc[w];
+if(o[C]===aC)return C;
+w--;
+}
+return-1;
+}
+}
+if(!(aC===(void 0))){
+for(var w=aT;w>=bb;w--){
+if(o[w]===aC)return w;
+}
+return-1;
+}
+for(var w=aT;w>=bb;w--){
+if((o[w]===(void 0))&&w in o){
+return w;
+}
+}
+return-1;
+}},1);
+%DefineMethodsInternal(f.prototype,class{copyWithin(target,as,at){
+var o=(%_ToObject(this));
+var p=(%_ToLength(o.length));
+target=(%_ToInteger(target));
+var aB;
+if(target<0){
+aB=h(p+target,0);
+}else{
+aB=i(target,p);
+}
+as=(%_ToInteger(as));
+var n;
+if(as<0){
+n=h(p+as,0);
+}else{
+n=i(as,p);
+}
+at=(at===(void 0))?p:(%_ToInteger(at));
+var bd;
+if(at<0){
+bd=h(p+at,0);
+}else{
+bd=i(at,p);
+}
+var be=i(bd-n,p-aB);
+var bf=1;
+if(n<aB&&aB<(n+be)){
+bf=-1;
+n=n+be-1;
+aB=aB+be-1;
+}
+while(be>0){
+if(n in o){
+o[aB]=o[n];
+}else{
+delete o[aB];
+}
+n=n+bf;
+aB=aB+bf;
+be--;
+}
+return o;
+}},2);
+%DefineMethodsInternal(f.prototype,class{fill(I,as,at){
+var o=(%_ToObject(this));
+var p=(%_ToLength(o.length));
+var w=(as===(void 0))?0:(%_ToInteger(as));
+var at=(at===(void 0))?p:(%_ToInteger(at));
+if(w<0){
+w+=p;
+if(w<0)w=0;
+}else{
+if(w>p)w=p;
+}
+if(at<0){
+at+=p;
+if(at<0)at=0;
+}else{
+if(at>p)at=p;
+}
+if((at-w)>0&&%object_is_frozen(o)){
+throw %make_type_error(14);
+}
+for(;w<at;w++)
+o[w]=I;
+return o;
+}},1);
+var bg={
+__proto__:null,
+copyWithin:true,
+entries:true,
+fill:true,
+find:true,
+findIndex:true,
+includes:true,
+keys:true,
+};
+%ToFastProperties(bg);
+%AddNamedProperty(f.prototype,m,bg,
+2|1);
+var bh=f.prototype.indexOf;
+var aa=f.prototype.join;
+var bi=f.prototype.pop;
+var bj=f.prototype.push;
+var bk=f.prototype.slice;
+var bl=f.prototype.shift;
+var bm=f.prototype.sort;
+var bn=f.prototype.splice;
+var bo=f.prototype.toString;
+var bp=f.prototype.unshift;
+var bq=f.prototype.entries;
+var br=f.prototype.forEach;
+var bs=f.prototype.keys;
+var bt=f.prototype[l];
+b.SetUpLockedPrototype(g,f(),[
+"indexOf",bh,
+"join",aa,
+"pop",bi,
+"push",bj,
+"shift",bl,
+"sort",bm,
+"splice",bn
+]);
+b.SetUpLockedPrototype(c.InternalPackedArray,f(),[
+"push",bj,
+"pop",bi,
+"shift",bl,
+"unshift",bp,
+"splice",bn,
+"slice",bk
+]);
+b.Export(function(aB){
+aB.ArrayJoin=aa;
+aB.ArrayPush=bj;
+aB.ArrayToString=bo;
+aB.ArrayValues=bt;
+aB.InnerArrayJoin=InnerArrayJoin;
+aB.InnerArraySort=InnerArraySort;
+aB.InnerArrayToLocaleString=InnerArrayToLocaleString;
+});
+%InstallToContext([
+"array_entries_iterator",bq,
+"array_for_each_iterator",br,
+"array_keys_iterator",bs,
+"array_values_iterator",bt,
+"array_pop",ArrayPopFallback,
+"array_push",ArrayPushFallback,
+"array_shift",ArrayShiftFallback,
+"array_splice",ArraySpliceFallback,
+"array_unshift",ArrayUnshiftFallback,
+]);
+});
+
+(typedarray}
+(function(a,b){
+"use strict";
+%CheckIsBootstrapping();
+var c=b.ImportNow("ArrayToString");
+var d;
+var e;
+var f;
+var g;
+var h;
+var i=b.InternalArray;
+var j=b.ImportNow("iterator_symbol");
+var k=a.Uint8Array;
+
+var l=a.Int8Array;
+
+var m=a.Uint16Array;
+
+var n=a.Int16Array;
+
+var o=a.Uint32Array;
+
+var p=a.Int32Array;
+
+var q=a.Float32Array;
+
+var r=a.Float64Array;
+
+var s=a.Uint8ClampedArray;
+
+var t=a.BigUint64Array;
+
+var u=a.BigInt64Array;
+
+
+var v=%object_get_prototype_of(k);
+b.Import(function(w){
+d=w.GetIterator;
+e=w.GetMethod;
+f=w.InnerArrayJoin;
+g=w.InnerArraySort;
+h=w.InnerArrayToLocaleString;
+});
+function ValidateTypedArray(x,y){
+if(!(%_IsTypedArray(x))
+)throw %make_type_error(92);
+if(%_ArrayBufferViewWasNeutered(x))
+throw %make_type_error(50,y);
+}
+function TypedArrayCreate(z,A,B,C){
+if((B===(void 0))){
+var D=new z(A);
+}else{
+var D=new z(A,B,C);
+}
+ValidateTypedArray(D,"TypedArrayCreate");
+if((typeof(A)==='number')&&%_TypedArrayGetLength(D)<A){
+throw %make_type_error(284);
+}
+return D;
+}
+%DefineMethodsInternal(v.prototype,class{sort(comparefn){
+ValidateTypedArray(this,"%TypedArray%.prototype.sort");
+if(!(comparefn===(void 0))&&!(typeof(comparefn)==='function')){
+throw %make_type_error(18,comparefn);
+}
+var E=%_TypedArrayGetLength(this);
+if((comparefn===(void 0))){
+return %TypedArraySortFast(this);
+}
+return g(this,E,comparefn);
+}},-1);
+%DefineMethodsInternal(v.prototype,class{toLocaleString(){
+ValidateTypedArray(this,"%TypedArray%.prototype.toLocaleString");
+var E=%_TypedArrayGetLength(this);
+return h(this,E);
+}},-1);
+%DefineMethodsInternal(v.prototype,class{join(separator){
+ValidateTypedArray(this,"%TypedArray%.prototype.join");
+var E=%_TypedArrayGetLength(this);
+return f(separator,this,E);
+}},-1);
+function TypedArrayConstructor(){
+throw %make_type_error(36,"TypedArray");
+}
+%SetCode(v,TypedArrayConstructor);
+%AddNamedProperty(v.prototype,"toString",c,
+2);
+})
+
+ messages}
+(function(a,b){
+"use strict";
+%CheckIsBootstrapping();
+var c=b.ImportNow("Script");
+function ScriptLocationFromPosition(position,
+include_resource_offset){
+return %ScriptPositionInfo(this,position,!!include_resource_offset);
+}
+function ScriptNameOrSourceURL(){
+if(this.source_url)return this.source_url;
+return this.name;
+}
+b.SetUpLockedPrototype(c,[
+"source",
+"name",
+"source_url",
+"source_mapping_url",
+"line_offset",
+"column_offset"
+],[
+"locationFromPosition",ScriptLocationFromPosition,
+"nameOrSourceURL",ScriptNameOrSourceURL,
+]
+);
+});
+
+spread5
+(function(a,b){
+"use strict";
+var c=b.InternalArray;
+function SpreadArguments(){
+var d=arguments.length;
+var e=new c();
+for(var f=0;f<d;++f){
+var g=arguments[f];
+var h=g.length;
+for(var i=0;i<h;++i){
+e.push(g[i]);
+}
+}
+return e;
+}
+function SpreadIterable(j){
+if((j==null)){
+throw %make_type_error(89,j);
+}
+var e=new c();
+for(var k of j){
+e.push(k);
+}
+return e;
+}
+%InstallToContext([
+"spread_arguments",SpreadArguments,
+"spread_iterable",SpreadIterable,
+]);
+})
+
+intl
+(function(a,b){
+"use strict";
+%CheckIsBootstrapping();
+var c;
+var d;
+var e=a.Date;
+var f=a.Intl;
+var g=f.DateTimeFormat;
+var h=f.NumberFormat;
+var i=f.Collator;
+var j=b.ImportNow("PluralRules");
+var k=f.v8BreakIterator;
+var l=a.Number;
+var m=a.RegExp;
+var n=a.String;
+var o=b.ImportNow("intl_fallback_symbol");
+var p=b.InternalArray;
+var q=a.Math.max;
+var r=a.Object.prototype.hasOwnProperty;
+var s=a.Object.keys;
+var t=b.ImportNow("intl_pattern_symbol");
+var u=b.ImportNow("intl_resolved_symbol");
+var v=n.prototype.substr;
+var w=n.prototype.substring;
+b.Import(function(x){
+c=x.ArrayJoin;
+d=x.ArrayPush;
+});
+function AddBoundMethod(obj,methodName,implementation,length,typename,
+compat){
+%CheckIsBootstrapping();
+var y=%CreatePrivateSymbol(methodName);
+%DefineMethodsInternal(obj.prototype,class{get[methodName](){
+var z=Unwrap(this,typename,obj,methodName,compat);
+if((z[y]===(void 0))){
+var A;
+if((length===(void 0))||length===2){
+A=
+(0,((fst,snd)=>implementation(z,fst,snd)))
+;
+}else if(length===1){
+A=(0,(fst=>implementation(z,fst)))
+;
+}else{
+A=(0,((...args)=>{
+if(args.length>0){
+return implementation(z,args[0]);
+}else{
+return implementation(z);
+}
+}))
+;
+}
+%SetNativeFlag(A);
+z[y]=A;
+}
+return z[y];
+}},-1);
+}
+function IntlConstruct(z,constructor,create,newTarget,args,
+compat){
+var B=args[0];
+var C=args[1];
+var D=create(B,C);
+if(compat&&(newTarget===(void 0))&&z instanceof constructor){
+%object_define_property(z,o,{value:D});
+return z;
+}
+return D;
+}
+function Unwrap(z,E,F,G,H){
+if(!%IsInitializedIntlObjectOfType(z,E)){
+if(H&&z instanceof F){
+let fallback=z[o];
+if(%IsInitializedIntlObjectOfType(fallback,E)){
+return fallback;
+}
+}
+throw %make_type_error(61,G,z);
+}
+return z;
+}
+var I={
+'collator':(void 0),
+'numberformat':(void 0),
+'dateformat':(void 0),
+'breakiterator':(void 0),
+'pluralrules':(void 0),
+};
+var J=(void 0);
+function GetDefaultICULocaleJS(K){
+if((J===(void 0))){
+J=%GetDefaultICULocale();
+}
+return((K===(void 0))||
+(%_Call(r,getAvailableLocalesOf(K),J)))
+?J:"und";
+}
+var L=(void 0);
+function GetUnicodeExtensionRE(){
+if(((void 0)===(void 0))){
+L=new m('-u(-[a-z0-9]{2,8})+','g');
+}
+return L;
+}
+var M=(void 0);
+function GetAnyExtensionRE(){
+if((M===(void 0))){
+M=new m('-[a-z0-9]{1}-.*','g');
+}
+return M;
+}
+var N=(void 0);
+function GetQuotedStringRE(){
+if((N===(void 0))){
+N=new m("'[^']+'",'g');
+}
+return N;
+}
+var O=(void 0);
+function GetServiceRE(){
+if((O===(void 0))){
+O=
+new m('^('+%_Call(c,s(I),'|')+')$');
+}
+return O;
+}
+var P=(void 0);
+function GetLanguageTagRE(){
+if((P===(void 0))){
+BuildLanguageTagREs();
+}
+return P;
+}
+var Q=(void 0);
+function GetLanguageVariantRE(){
+if((Q===(void 0))){
+BuildLanguageTagREs();
+}
+return Q;
+}
+var R=(void 0);
+function GetLanguageSingletonRE(){
+if((R===(void 0))){
+BuildLanguageTagREs();
+}
+return R;
+}
+var S=(void 0);
+function GetTimezoneNameCheckRE(){
+if((S===(void 0))){
+S=new m(
+'^([A-Za-z]+)/([A-Za-z_-]+)((?:\/[A-Za-z_-]+)+)*$');
+}
+return S;
+}
+var T=(void 0);
+function GetTimezoneNameLocationPartRE(){
+if((T===(void 0))){
+T=
+new m('^([A-Za-z]+)((?:[_-][A-Za-z]+)+)*$');
+}
+return T;
+}
+function supportedLocalesOf(K,B,C){
+if((%regexp_internal_match(GetServiceRE(),K)===null)){
+throw %make_error(8,K);
+}
+if((C===(void 0))){
+C={__proto__:null};
+}else{
+C=(%_ToObject(C));
+}
+var U=C.localeMatcher;
+if(!(U===(void 0))){
+U=(%_ToString(U));
+if(U!=='lookup'&&U!=='best fit'){
+throw %make_range_error(194,U);
+}
+}else{
+U='best fit';
+}
+var V=initializeLocaleList(B);
+var W=getAvailableLocalesOf(K);
+if(U==='best fit'){
+return initializeLocaleList(bestFitSupportedLocalesOf(
+V,W));
+}
+return initializeLocaleList(lookupSupportedLocalesOf(
+V,W));
+}
+function lookupSupportedLocalesOf(V,W){
+var X=new p();
+for(var Y=0;Y<V.length;++Y){
+var Z=%RegExpInternalReplace(
+GetUnicodeExtensionRE(),V[Y],'');
+do{
+if(!(W[Z]===(void 0))){
+%_Call(d,X,V[Y]);
+break;
+}
+var aa=%StringLastIndexOf(Z,'-');
+if(aa===-1){
+break;
+}
+Z=%_Call(w,Z,0,aa);
+}while(true);
+}
+return X;
+}
+function bestFitSupportedLocalesOf(V,W){
+return lookupSupportedLocalesOf(V,W);
+}
+function getGetOption(C,ab){
+if((C===(void 0)))throw %make_error(4,ab);
+var ac=function getOption(ad,ae,af,ag){
+if(!(C[ad]===(void 0))){
+var ah=C[ad];
+switch(ae){
+case'boolean':
+ah=(!!(ah));
+break;
+case'string':
+ah=(%_ToString(ah));
+break;
+case'number':
+ah=(%_ToNumber(ah));
+break;
+default:
+throw %make_error(9);
+}
+if(!(af===(void 0))&&%ArrayIndexOf(af,ah,0)===-1){
+throw %make_range_error(204,ah,ab,ad);
+}
+return ah;
+}
+return ag;
+}
+return ac;
+}
+function resolveLocale(K,V,C){
+V=initializeLocaleList(V);
+var ac=getGetOption(C,K);
+var U=ac('localeMatcher','string',
+['lookup','best fit'],'best fit');
+var ai;
+if(U==='lookup'){
+ai=lookupMatcher(K,V);
+}else{
+ai=bestFitMatcher(K,V);
+}
+return ai;
+}
+function lookupMatcher(K,V){
+if((%regexp_internal_match(GetServiceRE(),K)===null)){
+throw %make_error(8,K);
+}
+var W=getAvailableLocalesOf(K);
+for(var Y=0;Y<V.length;++Y){
+var Z=%RegExpInternalReplace(
+GetAnyExtensionRE(),V[Y],'');
+do{
+if(!(W[Z]===(void 0))){
+var aj=%regexp_internal_match(
+GetUnicodeExtensionRE(),V[Y]);
+var ak=(aj===null)?'':aj[0];
+return{locale:Z,extension:ak,position:Y};
+}
+var aa=%StringLastIndexOf(Z,'-');
+if(aa===-1){
+break;
+}
+Z=%_Call(w,Z,0,aa);
+}while(true);
+}
+return{
+locale:GetDefaultICULocaleJS(K),
+extension:'',
+position:-1
+};
+}
+function bestFitMatcher(K,V){
+return lookupMatcher(K,V);
+}
+function parseExtension(ak){
+var al=%StringSplit(ak,'-',4294967295);
+if(al.length<=2||
+(al[0]!==''&&al[1]!=='u')){
+return{__proto__:null};
+}
+var am={__proto__:null};
+var an=(void 0);
+var ah=(void 0);
+for(var Y=2;Y<al.length;++Y){
+var ao=al[Y].length;
+var ap=al[Y];
+if(ao===2){
+if(!(an===(void 0))){
+if(!(an in am)){
+am[an]=ah;
+}
+ah=(void 0);
+}
+an=ap;
+}else if(ao>=3&&ao<=8&&!(an===(void 0))){
+if((ah===(void 0))){
+ah=ap;
+}else{
+ah=ah+"-"+ap;
+}
+}else{
+return{__proto__:null};
+}
+}
+if(!(an===(void 0))&&!(an in am)){
+am[an]=ah;
+}
+return am;
+}
+function setOptions(aq,am,ar,ac,as){
+var ak='';
+var at=function updateExtension(an,ah){
+return'-'+an+'-'+(%_ToString(ah));
+}
+var au=function updateProperty(ad,ae,ah){
+if(ae==='boolean'&&(typeof ah==='string')){
+ah=(ah==='true')?true:false;
+}
+if(!(ad===(void 0))){
+defineWEProperty(as,ad,ah);
+}
+}
+for(var an in ar){
+if((%_Call(r,ar,an))){
+var ah=(void 0);
+var av=ar[an];
+if(!(av.property===(void 0))){
+ah=ac(av.property,av.type,av.values);
+}
+if(!(ah===(void 0))){
+au(av.property,av.type,ah);
+ak+=at(an,ah);
+continue;
+}
+if((%_Call(r,am,an))){
+ah=am[an];
+if(!(ah===(void 0))){
+au(av.property,av.type,ah);
+ak+=at(an,ah);
+}else if(av.type==='boolean'){
+au(av.property,av.type,true);
+ak+=at(an,true);
+}
+}
+}
+}
+return ak===''?'':'-u'+ak;
+}
+function freezeArray(aw){
+var ax=[];
+var ay=aw.length;
+for(var Y=0;Y<ay;Y++){
+if(Y in aw){
+%object_define_property(ax,Y,{value:aw[Y],
+configurable:false,
+writable:false,
+enumerable:true});
+}
+}
+%object_define_property(ax,'length',{value:ay,writable:false});
+return ax;
+}
+function makeArray(aw){
+var ax=[];
+%MoveArrayContents(aw,ax);
+return ax;
+}
+function getAvailableLocalesOf(K){
+if(!(I[K]===(void 0))){
+return I[K];
+}
+var az=%AvailableLocalesOf(K);
+for(var Y in az){
+if((%_Call(r,az,Y))){
+var aA=%regexp_internal_match(
+/^([a-z]{2,3})-([A-Z][a-z]{3})-([A-Z]{2})$/,Y);
+if(!(aA===null)){
+az[aA[1]+'-'+aA[3]]=null;
+}
+}
+}
+I[K]=az;
+return az;
+}
+function defineWEProperty(aB,ad,ah){
+%object_define_property(aB,ad,
+{value:ah,writable:true,enumerable:true});
+}
+function addWEPropertyIfDefined(aB,ad,ah){
+if(!(ah===(void 0))){
+defineWEProperty(aB,ad,ah);
+}
+}
+function defineWECProperty(aB,ad,ah){
+%object_define_property(aB,ad,{value:ah,
+writable:true,
+enumerable:true,
+configurable:true});
+}
+function addWECPropertyIfDefined(aB,ad,ah){
+if(!(ah===(void 0))){
+defineWECProperty(aB,ad,ah);
+}
+}
+function toTitleCaseWord(aC){
+return %StringToUpperCaseIntl(%_Call(v,aC,0,1))+
+%StringToLowerCaseIntl(%_Call(v,aC,1));
+}
+function toTitleCaseTimezoneLocation(aD){
+var aE=%regexp_internal_match(GetTimezoneNameLocationPartRE(),aD)
+if((aE===null))throw %make_range_error(172,aD);
+var aF=toTitleCaseWord(aE[1]);
+if(!(aE[2]===(void 0))&&2<aE.length){
+var aG=%_Call(w,aE[2],0,1);
+var aA=%StringSplit(aE[2],aG,4294967295);
+for(var Y=1;Y<aA.length;Y++){
+var aH=aA[Y]
+var aI=%StringToLowerCaseIntl(aH);
+aF=aF+aG+
+((aI!=='es'&&
+aI!=='of'&&aI!=='au')?
+toTitleCaseWord(aH):aI);
+}
+}
+return aF;
+}
+function canonicalizeLanguageTag(aJ){
+if((!(typeof(aJ)==='string')&&!(%_IsJSReceiver(aJ)))||
+(aJ===null)){
+throw %make_type_error(69);
+}
+if((typeof(aJ)==='string')&&
+!(%regexp_internal_match(/^[a-z]{2,3}$/,aJ)===null)){
+return aJ;
+}
+var aK=(%_ToString(aJ));
+if(isStructuallyValidLanguageTag(aK)===false){
+throw %make_range_error(185,aK);
+}
+var aL=%CanonicalizeLanguageTag(aK);
+if(aL==='invalid-tag'){
+throw %make_range_error(185,aK);
+}
+return aL;
+}
+function canonicalizeLocaleList(B){
+var aM=new p();
+if(!(B===(void 0))){
+if(typeof B==='string'){
+%_Call(d,aM,canonicalizeLanguageTag(B));
+return aM;
+}
+var aN=(%_ToObject(B));
+var aO=(%_ToLength(aN.length));
+for(var aP=0;aP<aO;aP++){
+if(aP in aN){
+var ah=aN[aP];
+var aL=canonicalizeLanguageTag(ah);
+if(%ArrayIndexOf(aM,aL,0)===-1){
+%_Call(d,aM,aL);
+}
+}
+}
+}
+return aM;
+}
+function initializeLocaleList(B){
+return freezeArray(canonicalizeLocaleList(B));
+}
+function isStructuallyValidLanguageTag(Z){
+if((%regexp_internal_match(GetLanguageTagRE(),Z)===null)){
+return false;
+}
+Z=%StringToLowerCaseIntl(Z);
+if(%StringIndexOf(Z,'x-',0)===0){
+return true;
+}
+Z=%StringSplit(Z,'-x-',4294967295)[0];
+var aQ=new p();
+var aR=new p();
+var aA=%StringSplit(Z,'-',4294967295);
+for(var Y=1;Y<aA.length;Y++){
+var ah=aA[Y];
+if(!(%regexp_internal_match(GetLanguageVariantRE(),ah)===null)&&
+aR.length===0){
+if(%ArrayIndexOf(aQ,ah,0)===-1){
+%_Call(d,aQ,ah);
+}else{
+return false;
+}
+}
+if(!(%regexp_internal_match(GetLanguageSingletonRE(),ah)===null)){
+if(%ArrayIndexOf(aR,ah,0)===-1){
+%_Call(d,aR,ah);
+}else{
+return false;
+}
+}
+}
+return true;
+}
+function BuildLanguageTagREs(){
+var aS='[a-zA-Z]';
+var aT='[0-9]';
+var aU='('+aS+'|'+aT+')';
+var aV='(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|'+
+'zh-min|zh-min-nan|zh-xiang)';
+var aW='(en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|'+
+'i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|'+
+'i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)';
+var aX='('+aW+'|'+aV+')';
+var aY='(x(-'+aU+'{1,8})+)';
+var aZ='('+aT+'|[A-WY-Za-wy-z])';
+R=new m('^'+aZ+'$','i');
+var ak='('+aZ+'(-'+aU+'{2,8})+)';
+var ba='('+aU+'{5,8}|('+aT+aU+'{3}))';
+Q=new m('^'+ba+'$','i');
+var bb='('+aS+'{2}|'+aT+'{3})';
+var bc='('+aS+'{4})';
+var bd='('+aS+'{3}(-'+aS+'{3}){0,2})';
+var be='('+aS+'{2,3}(-'+bd+')?|'+aS+'{4}|'+
+aS+'{5,8})';
+var bf=be+'(-'+bc+')?(-'+bb+')?(-'+
+ba+')*(-'+ak+')*(-'+aY+')?';
+var bg=
+'^('+bf+'|'+aY+'|'+aX+')$';
+P=new m(bg,'i');
+}
+%DefineMethodsInternal(f,class{getCanonicalLocales(B){
+return makeArray(canonicalizeLocaleList(B));
+}},-1);
+function CreateCollator(B,C){
+if((C===(void 0))){
+C={__proto__:null};
+}
+var ac=getGetOption(C,'collator');
+var bh={__proto__:null};
+defineWEProperty(bh,'usage',ac(
+'usage','string',['sort','search'],'sort'));
+var bi=ac('sensitivity','string',
+['base','accent','case','variant']);
+if((bi===(void 0))&&bh.usage==='sort'){
+bi='variant';
+}
+defineWEProperty(bh,'sensitivity',bi);
+defineWEProperty(bh,'ignorePunctuation',ac(
+'ignorePunctuation','boolean',(void 0),false));
+var Z=resolveLocale('collator',B,C);
+var am=parseExtension(Z.extension);
+var bj={
+'kn':{'property':'numeric','type':'boolean'},
+'kf':{'property':'caseFirst','type':'string',
+'values':['false','lower','upper']}
+};
+setOptions(
+C,am,bj,ac,bh);
+var bk='default';
+var ak='';
+if((%_Call(r,am,'co'))&&bh.usage==='sort'){
+var bl=[
+'big5han','dict','direct','ducet','gb2312','phonebk','phonetic',
+'pinyin','reformed','searchjl','stroke','trad','unihan','zhuyin'
+];
+if(%ArrayIndexOf(bl,am.co,0)!==-1){
+ak='-u-co-'+am.co;
+bk=am.co;
+}
+}else if(bh.usage==='search'){
+ak='-u-co-search';
+}
+defineWEProperty(bh,'collation',bk);
+var bm=Z.locale+ak;
+var ai=%object_define_properties({__proto__:null},{
+caseFirst:{writable:true},
+collation:{value:bh.collation,writable:true},
+ignorePunctuation:{writable:true},
+locale:{writable:true},
+numeric:{writable:true},
+requestedLocale:{value:bm,writable:true},
+sensitivity:{writable:true},
+strength:{writable:true},
+usage:{value:bh.usage,writable:true}
+});
+var bn=%CreateCollator(bm,bh,ai);
+%MarkAsInitializedIntlObjectOfType(bn,'collator');
+bn[u]=ai;
+return bn;
+}
+function CollatorConstructor(){
+return IntlConstruct(this,i,CreateCollator,new.target,
+arguments);
+}
+%SetCode(i,CollatorConstructor);
+%DefineMethodsInternal(i.prototype,class{resolvedOptions(){
+var bo=Unwrap(this,'collator',i,'resolvedOptions',
+false);
+return{
+locale:bo[u].locale,
+usage:bo[u].usage,
+sensitivity:bo[u].sensitivity,
+ignorePunctuation:bo[u].ignorePunctuation,
+numeric:bo[u].numeric,
+caseFirst:bo[u].caseFirst,
+collation:bo[u].collation
+};
+}},-1);
+%DefineMethodsInternal(i,class{supportedLocalesOf(B){
+return supportedLocalesOf('collator',B,arguments[1]);
+}},-1);
+function compare(bn,bp,bq){
+return %InternalCompare(bn,(%_ToString(bp)),(%_ToString(bq)));
+};
+AddBoundMethod(i,'compare',compare,2,'collator',false);
+function PluralRulesConstructor(){
+if((new.target===(void 0))){
+throw %make_type_error(40,"PluralRules");
+}
+var B=arguments[0];
+var C=arguments[1];
+if((C===(void 0))){
+C={__proto__:null};
+}
+var ac=getGetOption(C,'pluralrules');
+var Z=resolveLocale('pluralrules',B,C);
+var bh={__proto__:null};
+defineWEProperty(bh,'type',ac(
+'type','string',['cardinal','ordinal'],'cardinal'));
+SetNumberFormatDigitOptions(bh,C,0,3);
+var bm=Z.locale;
+var ai=%object_define_properties({__proto__:null},{
+type:{value:bh.type,writable:true},
+locale:{writable:true},
+maximumFractionDigits:{writable:true},
+minimumFractionDigits:{writable:true},
+minimumIntegerDigits:{writable:true},
+requestedLocale:{value:bm,writable:true},
+});
+if((%_Call(r,bh,'minimumSignificantDigits'))){
+defineWEProperty(ai,'minimumSignificantDigits',(void 0));
+}
+if((%_Call(r,bh,'maximumSignificantDigits'))){
+defineWEProperty(ai,'maximumSignificantDigits',(void 0));
+}
+defineWEProperty(ai,'pluralCategories',[]);
+var br=%CreatePluralRules(bm,bh,
+ai);
+%MarkAsInitializedIntlObjectOfType(br,'pluralrules');
+br[u]=ai;
+return br;
+}
+%SetCode(j,PluralRulesConstructor);
+%DefineMethodsInternal(j.prototype,class{resolvedOptions(){
+if(!%IsInitializedIntlObjectOfType(this,'pluralrules')){
+throw %make_type_error(61,
+'Intl.PluralRules.prototype.resolvedOptions',
+this);
+}
+var aF={
+locale:this[u].locale,
+type:this[u].type,
+minimumIntegerDigits:this[u].minimumIntegerDigits,
+minimumFractionDigits:this[u].minimumFractionDigits,
+maximumFractionDigits:this[u].maximumFractionDigits,
+};
+if((%_Call(r,this[u],'minimumSignificantDigits'))){
+defineWECProperty(aF,'minimumSignificantDigits',
+this[u].minimumSignificantDigits);
+}
+if((%_Call(r,this[u],'maximumSignificantDigits'))){
+defineWECProperty(aF,'maximumSignificantDigits',
+this[u].maximumSignificantDigits);
+}
+defineWECProperty(aF,'pluralCategories',
+this[u].pluralCategories);
+return aF;
+}},-1);
+%DefineMethodsInternal(j,class{supportedLocalesOf(B){
+return supportedLocalesOf('pluralrules',B,arguments[1]);
+}},-1);
+%DefineMethodsInternal(j.prototype,class{select(ah){
+if(!%IsInitializedIntlObjectOfType(this,'pluralrules')){
+throw %make_type_error(61,
+'Intl.PluralRules.prototype.select',
+this);
+}
+return %PluralRulesSelect(this,(%_ToNumber(ah))+0);
+}},-1);
+function isWellFormedCurrencyCode(bs){
+return typeof bs==="string"&&bs.length===3&&
+(%regexp_internal_match(/[^A-Za-z]/,bs)===null);
+}
+function defaultNumberOption(ah,bt,bu,bv,ad){
+if(!(ah===(void 0))){
+ah=(%_ToNumber(ah));
+if((%IS_VAR(ah)!==ah)
+||ah<bt||ah>bu){
+throw %make_range_error(197,ad);
+}
+return %math_floor(ah);
+}
+return bv;
+}
+function getNumberOption(C,ad,bt,bu,bv){
+var ah=C[ad];
+return defaultNumberOption(ah,bt,bu,bv,ad);
+}
+function SetNumberFormatDigitOptions(bh,C,
+mnfdDefault,mxfdDefault){
+var bw=getNumberOption(C,'minimumIntegerDigits',1,21,1);
+defineWEProperty(bh,'minimumIntegerDigits',bw);
+var bx=getNumberOption(C,'minimumFractionDigits',0,20,
+mnfdDefault);
+defineWEProperty(bh,'minimumFractionDigits',bx);
+var by=q(bx,mxfdDefault);
+var bz=getNumberOption(C,'maximumFractionDigits',bx,20,
+by);
+defineWEProperty(bh,'maximumFractionDigits',bz);
+var bA=C['minimumSignificantDigits'];
+var bB=C['maximumSignificantDigits'];
+if(!(bA===(void 0))||!(bB===(void 0))){
+bA=defaultNumberOption(bA,1,21,1,'minimumSignificantDigits');
+defineWEProperty(bh,'minimumSignificantDigits',bA);
+bB=defaultNumberOption(bB,bA,21,21,'maximumSignificantDigits');
+defineWEProperty(bh,'maximumSignificantDigits',bB);
+}
+}
+function CreateNumberFormat(B,C){
+if((C===(void 0))){
+C={__proto__:null};
+}
+var ac=getGetOption(C,'numberformat');
+var Z=resolveLocale('numberformat',B,C);
+var bh={__proto__:null};
+defineWEProperty(bh,'style',ac(
+'style','string',['decimal','percent','currency'],'decimal'));
+var bs=ac('currency','string');
+if(!(bs===(void 0))&&!isWellFormedCurrencyCode(bs)){
+throw %make_range_error(179,bs);
+}
+if(bh.style==='currency'&&(bs===(void 0))){
+throw %make_type_error(42);
+}
+var bC,bD;
+var bE=ac(
+'currencyDisplay','string',['code','symbol','name'],'symbol');
+if(bh.style==='currency'){
+defineWEProperty(bh,'currency',%StringToUpperCaseIntl(bs));
+defineWEProperty(bh,'currencyDisplay',bE);
+bC=bD=%CurrencyDigits(bh.currency);
+}else{
+bC=0;
+bD=bh.style==='percent'?0:3;
+}
+SetNumberFormatDigitOptions(bh,C,bC,
+bD);
+defineWEProperty(bh,'useGrouping',ac(
+'useGrouping','boolean',(void 0),true));
+var am=parseExtension(Z.extension);
+var bF={
+'nu':{'property':(void 0),'type':'string'}
+};
+var ak=setOptions(C,am,bF,
+ac,bh);
+var bm=Z.locale+ak;
+var ai=%object_define_properties({__proto__:null},{
+currency:{writable:true},
+currencyDisplay:{writable:true},
+locale:{writable:true},
+maximumFractionDigits:{writable:true},
+minimumFractionDigits:{writable:true},
+minimumIntegerDigits:{writable:true},
+numberingSystem:{writable:true},
+requestedLocale:{value:bm,writable:true},
+style:{value:bh.style,writable:true},
+useGrouping:{writable:true}
+});
+if((%_Call(r,bh,'minimumSignificantDigits'))){
+defineWEProperty(ai,'minimumSignificantDigits',(void 0));
+}
+if((%_Call(r,bh,'maximumSignificantDigits'))){
+defineWEProperty(ai,'maximumSignificantDigits',(void 0));
+}
+var bG=%CreateNumberFormat(bm,bh,
+ai);
+if(bh.style==='currency'){
+%object_define_property(ai,'currencyDisplay',
+{value:bE,writable:true});
+}
+%MarkAsInitializedIntlObjectOfType(bG,'numberformat');
+bG[u]=ai;
+return bG;
+}
+function NumberFormatConstructor(){
+return IntlConstruct(this,h,CreateNumberFormat,
+new.target,arguments,true);
+}
+%SetCode(h,NumberFormatConstructor);
+%DefineMethodsInternal(h.prototype,class{resolvedOptions(){
+var bH=Unwrap(this,'numberformat',h,
+'resolvedOptions',true);
+var aF={
+locale:bH[u].locale,
+numberingSystem:bH[u].numberingSystem,
+style:bH[u].style,
+useGrouping:bH[u].useGrouping,
+minimumIntegerDigits:bH[u].minimumIntegerDigits,
+minimumFractionDigits:bH[u].minimumFractionDigits,
+maximumFractionDigits:bH[u].maximumFractionDigits,
+};
+if(aF.style==='currency'){
+defineWECProperty(aF,'currency',bH[u].currency);
+defineWECProperty(aF,'currencyDisplay',
+bH[u].currencyDisplay);
+}
+if((%_Call(r,bH[u],'minimumSignificantDigits'))){
+defineWECProperty(aF,'minimumSignificantDigits',
+bH[u].minimumSignificantDigits);
+}
+if((%_Call(r,bH[u],'maximumSignificantDigits'))){
+defineWECProperty(aF,'maximumSignificantDigits',
+bH[u].maximumSignificantDigits);
+}
+return aF;
+}},-1);
+%DefineMethodsInternal(h,class{supportedLocalesOf(B){
+return supportedLocalesOf('numberformat',B,arguments[1]);
+}},-1);
+function formatNumber(bI,ah){
+var bJ=(%_ToNumber(ah))+0;
+return %InternalNumberFormat(bI,bJ);
+}
+AddBoundMethod(h,'format',formatNumber,1,
+'numberformat',true);
+function toLDMLString(C){
+var ac=getGetOption(C,'dateformat');
+var bK='';
+var bL=ac('weekday','string',['narrow','short','long']);
+bK+=appendToLDMLString(
+bL,{narrow:'EEEEE',short:'EEE',long:'EEEE'});
+bL=ac('era','string',['narrow','short','long']);
+bK+=appendToLDMLString(
+bL,{narrow:'GGGGG',short:'GGG',long:'GGGG'});
+bL=ac('year','string',['2-digit','numeric']);
+bK+=appendToLDMLString(bL,{'2-digit':'yy','numeric':'y'});
+bL=ac('month','string',
+['2-digit','numeric','narrow','short','long']);
+bK+=appendToLDMLString(bL,{'2-digit':'MM','numeric':'M',
+'narrow':'MMMMM','short':'MMM','long':'MMMM'});
+bL=ac('day','string',['2-digit','numeric']);
+bK+=appendToLDMLString(
+bL,{'2-digit':'dd','numeric':'d'});
+var bM=ac('hour12','boolean');
+bL=ac('hour','string',['2-digit','numeric']);
+if((bM===(void 0))){
+bK+=appendToLDMLString(bL,{'2-digit':'jj','numeric':'j'});
+}else if(bM===true){
+bK+=appendToLDMLString(bL,{'2-digit':'hh','numeric':'h'});
+}else{
+bK+=appendToLDMLString(bL,{'2-digit':'HH','numeric':'H'});
+}
+bL=ac('minute','string',['2-digit','numeric']);
+bK+=appendToLDMLString(bL,{'2-digit':'mm','numeric':'m'});
+bL=ac('second','string',['2-digit','numeric']);
+bK+=appendToLDMLString(bL,{'2-digit':'ss','numeric':'s'});
+bL=ac('timeZoneName','string',['short','long']);
+bK+=appendToLDMLString(bL,{short:'z',long:'zzzz'});
+return bK;
+}
+function appendToLDMLString(bL,bN){
+if(!(bL===(void 0))){
+return bN[bL];
+}else{
+return'';
+}
+}
+function fromLDMLString(bK){
+bK=%RegExpInternalReplace(GetQuotedStringRE(),bK,'');
+var C={__proto__:null};
+var aE=%regexp_internal_match(/E{3,5}/,bK);
+C=appendToDateTimeObject(
+C,'weekday',aE,{EEEEE:'narrow',EEE:'short',EEEE:'long'});
+aE=%regexp_internal_match(/G{3,5}/,bK);
+C=appendToDateTimeObject(
+C,'era',aE,{GGGGG:'narrow',GGG:'short',GGGG:'long'});
+aE=%regexp_internal_match(/y{1,2}/,bK);
+C=appendToDateTimeObject(
+C,'year',aE,{y:'numeric',yy:'2-digit'});
+aE=%regexp_internal_match(/M{1,5}/,bK);
+C=appendToDateTimeObject(C,'month',aE,{MM:'2-digit',
+M:'numeric',MMMMM:'narrow',MMM:'short',MMMM:'long'});
+aE=%regexp_internal_match(/L{1,5}/,bK);
+C=appendToDateTimeObject(C,'month',aE,{LL:'2-digit',
+L:'numeric',LLLLL:'narrow',LLL:'short',LLLL:'long'});
+aE=%regexp_internal_match(/d{1,2}/,bK);
+C=appendToDateTimeObject(
+C,'day',aE,{d:'numeric',dd:'2-digit'});
+aE=%regexp_internal_match(/h{1,2}/,bK);
+if(aE!==null){
+C['hour12']=true;
+}
+C=appendToDateTimeObject(
+C,'hour',aE,{h:'numeric',hh:'2-digit'});
+aE=%regexp_internal_match(/H{1,2}/,bK);
+if(aE!==null){
+C['hour12']=false;
+}
+C=appendToDateTimeObject(
+C,'hour',aE,{H:'numeric',HH:'2-digit'});
+aE=%regexp_internal_match(/m{1,2}/,bK);
+C=appendToDateTimeObject(
+C,'minute',aE,{m:'numeric',mm:'2-digit'});
+aE=%regexp_internal_match(/s{1,2}/,bK);
+C=appendToDateTimeObject(
+C,'second',aE,{s:'numeric',ss:'2-digit'});
+aE=%regexp_internal_match(/z|zzzz/,bK);
+C=appendToDateTimeObject(
+C,'timeZoneName',aE,{z:'short',zzzz:'long'});
+return C;
+}
+function appendToDateTimeObject(C,bL,aE,bN){
+if((aE===null)){
+if(!(%_Call(r,C,bL))){
+defineWEProperty(C,bL,(void 0));
+}
+return C;
+}
+var ad=aE[0];
+defineWEProperty(C,bL,bN[ad]);
+return C;
+}
+function toDateTimeOptions(C,bO,bP){
+if((C===(void 0))){
+C={__proto__:null};
+}else{
+C=(%_ToObject(C));
+}
+C=%object_create(C);
+var bQ=true;
+if((bO==='date'||bO==='any')&&
+(!(C.weekday===(void 0))||!(C.year===(void 0))||
+!(C.month===(void 0))||!(C.day===(void 0)))){
+bQ=false;
+}
+if((bO==='time'||bO==='any')&&
+(!(C.hour===(void 0))||!(C.minute===(void 0))||
+!(C.second===(void 0)))){
+bQ=false;
+}
+if(bQ&&(bP==='date'||bP==='all')){
+%object_define_property(C,'year',{value:'numeric',
+writable:true,
+enumerable:true,
+configurable:true});
+%object_define_property(C,'month',{value:'numeric',
+writable:true,
+enumerable:true,
+configurable:true});
+%object_define_property(C,'day',{value:'numeric',
+writable:true,
+enumerable:true,
+configurable:true});
+}
+if(bQ&&(bP==='time'||bP==='all')){
+%object_define_property(C,'hour',{value:'numeric',
+writable:true,
+enumerable:true,
+configurable:true});
+%object_define_property(C,'minute',{value:'numeric',
+writable:true,
+enumerable:true,
+configurable:true});
+%object_define_property(C,'second',{value:'numeric',
+writable:true,
+enumerable:true,
+configurable:true});
+}
+return C;
+}
+function CreateDateTimeFormat(B,C){
+if((C===(void 0))){
+C={__proto__:null};
+}
+var Z=resolveLocale('dateformat',B,C);
+C=toDateTimeOptions(C,'any','date');
+var ac=getGetOption(C,'dateformat');
+var U=ac('formatMatcher','string',
+['basic','best fit'],'best fit');
+var bK=toLDMLString(C);
+var bR=canonicalizeTimeZoneID(C.timeZone);
+var bh={__proto__:null};
+var am=parseExtension(Z.extension);
+var bS={
+'ca':{'property':(void 0),'type':'string'},
+'nu':{'property':(void 0),'type':'string'}
+};
+var ak=setOptions(C,am,bS,
+ac,bh);
+var bm=Z.locale+ak;
+var ai=%object_define_properties({__proto__:null},{
+calendar:{writable:true},
+day:{writable:true},
+era:{writable:true},
+hour12:{writable:true},
+hour:{writable:true},
+locale:{writable:true},
+minute:{writable:true},
+month:{writable:true},
+numberingSystem:{writable:true},
+[t]:{writable:true},
+requestedLocale:{value:bm,writable:true},
+second:{writable:true},
+timeZone:{writable:true},
+timeZoneName:{writable:true},
+tz:{value:bR,writable:true},
+weekday:{writable:true},
+year:{writable:true}
+});
+var bT=%CreateDateTimeFormat(
+bm,{skeleton:bK,timeZone:bR},ai);
+if(ai.timeZone==="Etc/Unknown"){
+throw %make_range_error(203,bR);
+}
+%MarkAsInitializedIntlObjectOfType(bT,'dateformat');
+bT[u]=ai;
+return bT;
+}
+function DateTimeFormatConstructor(){
+return IntlConstruct(this,g,CreateDateTimeFormat,
+new.target,arguments,true);
+}
+%SetCode(g,DateTimeFormatConstructor);
+%DefineMethodsInternal(g.prototype,class{resolvedOptions(){
+var bH=Unwrap(this,'dateformat',g,
+'resolvedOptions',true);
+var bU={
+'gregorian':'gregory',
+'ethiopic-amete-alem':'ethioaa'
+};
+var bV=fromLDMLString(bH[u][t]);
+var bW=bU[bH[u].calendar];
+if((bW===(void 0))){
+bW=bH[u].calendar;
+}
+var aF={
+locale:bH[u].locale,
+numberingSystem:bH[u].numberingSystem,
+calendar:bW,
+timeZone:bH[u].timeZone
+};
+addWECPropertyIfDefined(aF,'timeZoneName',bV.timeZoneName);
+addWECPropertyIfDefined(aF,'era',bV.era);
+addWECPropertyIfDefined(aF,'year',bV.year);
+addWECPropertyIfDefined(aF,'month',bV.month);
+addWECPropertyIfDefined(aF,'day',bV.day);
+addWECPropertyIfDefined(aF,'weekday',bV.weekday);
+addWECPropertyIfDefined(aF,'hour12',bV.hour12);
+addWECPropertyIfDefined(aF,'hour',bV.hour);
+addWECPropertyIfDefined(aF,'minute',bV.minute);
+addWECPropertyIfDefined(aF,'second',bV.second);
+return aF;
+}},-1);
+%DefineMethodsInternal(g,class{supportedLocalesOf(B){
+return supportedLocalesOf('dateformat',B,arguments[1]);
+}},-1);
+function formatDate(bI,bX){
+var bY;
+if((bX===(void 0))){
+bY=%DateCurrentTime();
+}else{
+bY=(%_ToNumber(bX));
+}
+return %InternalDateFormat(bI,bY);
+}
+%DefineMethodsInternal(g.prototype,class{formatToParts(bX){
+if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(27,"Intl.DateTimeFormat.prototype.formatToParts");
+if(!(typeof(this)==='object')
+){
+throw %make_type_error(26,this);
+}
+if(!%IsInitializedIntlObjectOfType(this,'dateformat')){
+throw %make_type_error(61,
+'Intl.DateTimeFormat.prototype.formatToParts',
+this);
+}
+var bY;
+if((bX===(void 0))){
+bY=%DateCurrentTime();
+}else{
+bY=(%_ToNumber(bX));
+}
+return %InternalDateFormatToParts(this,bY);
+}},-1);
+AddBoundMethod(g,'format',formatDate,1,'dateformat',
+true);
+function canonicalizeTimeZoneID(bZ){
+if((bZ===(void 0))){
+return bZ;
+}
+bZ=(%_ToString(bZ));
+var ca=%StringToUpperCaseIntl(bZ);
+if(ca==='UTC'||ca==='GMT'||
+ca==='ETC/UTC'||ca==='ETC/GMT'){
+return'UTC';
+}
+var aE=%regexp_internal_match(GetTimezoneNameCheckRE(),bZ);
+if((aE===null))throw %make_range_error(171,bZ);
+var aF=toTitleCaseTimezoneLocation(aE[1])+'/'+
+toTitleCaseTimezoneLocation(aE[2]);
+if(!(aE[3]===(void 0))&&3<aE.length){
+var cb=%StringSplit(aE[3],'/',4294967295);
+for(var Y=1;Y<cb.length;Y++){
+aF=aF+'/'+toTitleCaseTimezoneLocation(cb[Y]);
+}
+}
+return aF;
+}
+function CreateBreakIterator(B,C){
+if((C===(void 0))){
+C={__proto__:null};
+}
+var ac=getGetOption(C,'breakiterator');
+var bh={__proto__:null};
+defineWEProperty(bh,'type',ac(
+'type','string',['character','word','sentence','line'],'word'));
+var Z=resolveLocale('breakiterator',B,C);
+var ai=%object_define_properties({__proto__:null},{
+requestedLocale:{value:Z.locale,writable:true},
+type:{value:bh.type,writable:true},
+locale:{writable:true}
+});
+var cc=%CreateBreakIterator(Z.locale,bh,ai);
+%MarkAsInitializedIntlObjectOfType(cc,'breakiterator');
+cc[u]=ai;
+return cc;
+}
+function v8BreakIteratorConstructor(){
+return IntlConstruct(this,k,CreateBreakIterator,
+new.target,arguments);
+}
+%SetCode(k,v8BreakIteratorConstructor);
+%DefineMethodsInternal(k.prototype,class{resolvedOptions(){
+if(!(new.target===(void 0))){
+throw %make_type_error(102);
+}
+var cd=Unwrap(this,'breakiterator',k,
+'resolvedOptions',false);
+return{
+locale:cd[u].locale,
+type:cd[u].type
+};
+}},-1);
+%DefineMethodsInternal(k,class{supportedLocalesOf(B){
+if(!(new.target===(void 0))){
+throw %make_type_error(102);
+}
+return supportedLocalesOf('breakiterator',B,arguments[1]);
+}},-1);
+function adoptText(cc,ce){
+%BreakIteratorAdoptText(cc,(%_ToString(ce)));
+}
+function first(cc){
+return %BreakIteratorFirst(cc);
+}
+function next(cc){
+return %BreakIteratorNext(cc);
+}
+function current(cc){
+return %BreakIteratorCurrent(cc);
+}
+function breakType(cc){
+return %BreakIteratorBreakType(cc);
+}
+AddBoundMethod(k,'adoptText',adoptText,1,
+'breakiterator');
+AddBoundMethod(k,'first',first,0,'breakiterator');
+AddBoundMethod(k,'next',next,0,'breakiterator');
+AddBoundMethod(k,'current',current,0,
+'breakiterator');
+AddBoundMethod(k,'breakType',breakType,0,
+'breakiterator');
+var cf={
+'collator':i,
+'numberformat':h,
+'dateformatall':g,
+'dateformatdate':g,
+'dateformattime':g
+};
+var cg={
+'collator':(void 0),
+'numberformat':(void 0),
+'dateformatall':(void 0),
+'dateformatdate':(void 0),
+'dateformattime':(void 0),
+};
+function clearDefaultObjects(){
+cg['dateformatall']=(void 0);
+cg['dateformatdate']=(void 0);
+cg['dateformattime']=(void 0);
+}
+var ch=0;
+function checkDateCacheCurrent(){
+var ci=%DateCacheVersion();
+if(ci==ch){
+return;
+}
+ch=ci;
+clearDefaultObjects();
+}
+function cachedOrNewService(K,B,C,bP){
+var cj=((bP===(void 0)))?C:bP;
+if((B===(void 0))&&(C===(void 0))){
+checkDateCacheCurrent();
+if((cg[K]===(void 0))){
+cg[K]=new cf[K](B,cj);
+}
+return cg[K];
+}
+return new cf[K](B,cj);
+}
+function LocaleConvertCase(ck,B,cl){
+var be;
+if((B===(void 0))){
+be=GetDefaultICULocaleJS();
+}else if((typeof(B)==='string')){
+be=canonicalizeLanguageTag(B);
+}else{
+var B=initializeLocaleList(B);
+be=B.length>0?B[0]:GetDefaultICULocaleJS();
+}
+var aa=%StringIndexOf(be,'-',0);
+if(aa!==-1){
+be=%_Call(w,be,0,aa);
+}
+return %StringLocaleConvertCase(ck,cl,be);
+}
+%DefineMethodsInternal(n.prototype,class{localeCompare(that){
+if((this==null)){
+throw %make_type_error(71);
+}
+var B=arguments[1];
+var C=arguments[2];
+var bn=cachedOrNewService('collator',B,C);
+return compare(bn,this,that);
+}},-1);
+%DefineMethodsInternal(n.prototype,class{
+toLocaleLowerCase(B){
+if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(27,"String.prototype.toLocaleLowerCase");
+return LocaleConvertCase((%_ToString(this)),B,false);
+}
+toLocaleUpperCase(B){
+if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(27,"String.prototype.toLocaleUpperCase");
+return LocaleConvertCase((%_ToString(this)),B,true);
+}
+},0);
+%DefineMethodsInternal(l.prototype,class{toLocaleString(){
+if(!(this instanceof l)&&typeof(this)!=='number'){
+throw %make_type_error(72,"Number");
+}
+var B=arguments[0];
+var C=arguments[1];
+var bG=cachedOrNewService('numberformat',B,C);
+return formatNumber(bG,this);
+}},-1);
+function toLocaleDateTime(cm,B,C,bO,bP,K){
+if(!(cm instanceof e)){
+throw %make_type_error(72,"Date");
+}
+var bX=(%_ToNumber(cm));
+if((%IS_VAR(bX)!==bX)
+)return'Invalid Date';
+var bh=toDateTimeOptions(C,bO,bP);
+var bT=
+cachedOrNewService(K,B,C,bh);
+return formatDate(bT,cm);
+}
+%DefineMethodsInternal(e.prototype,class{toLocaleString(){
+var B=arguments[0];
+var C=arguments[1];
+return toLocaleDateTime(
+this,B,C,'any','all','dateformatall');
+}},-1);
+%DefineMethodsInternal(e.prototype,class{toLocaleDateString(){
+var B=arguments[0];
+var C=arguments[1];
+return toLocaleDateTime(
+this,B,C,'date','date','dateformatdate');
+}},-1);
+%DefineMethodsInternal(e.prototype,class{toLocaleTimeString(){
+var B=arguments[0];
+var C=arguments[1];
+return toLocaleDateTime(
+this,B,C,'time','time','dateformattime');
+}},-1);
+})
+
+
+(function(global, binding, v8) {
+'use strict';
+const _queue = v8.createPrivateSymbol('[[queue]]');
+const _queueTotalSize = v8.createPrivateSymbol('[[queueTotalSize]]');
+const Boolean = global.Boolean;
+const Number = global.Number;
+const Number_isFinite = Number.isFinite;
+const Number_isNaN = Number.isNaN;
+const RangeError = global.RangeError;
+const TypeError = global.TypeError;
+const hasOwnProperty = v8.uncurryThis(global.Object.hasOwnProperty);
+function hasOwnPropertyNoThrow(x, property) {
+return Boolean(x) && hasOwnProperty(x, property);
+}
+function streamInternalError() {
+throw new RangeError('Stream API Internal Error');
+}
+function rejectPromise(p, reason) {
+if (!v8.isPromise(p)) {
+streamInternalError();
+}
+v8.rejectPromise(p, reason);
+}
+function resolvePromise(p, value) {
+if (!v8.isPromise(p)) {
+streamInternalError();
+}
+v8.resolvePromise(p, value);
+}
+function markPromiseAsHandled(p) {
+if (!v8.isPromise(p)) {
+streamInternalError();
+}
+v8.markPromiseAsHandled(p);
+}
+function promiseState(p) {
+if (!v8.isPromise(p)) {
+streamInternalError();
+}
+return v8.promiseState(p);
+}
+function DequeueValue(container) {
+const pair = container[_queue].shift();
+container[_queueTotalSize] -= pair.size;
+if (container[_queueTotalSize] < 0) {
+container[_queueTotalSize] = 0;
+}
+return pair.value;
+}
+function EnqueueValueWithSize(container, value, size) {
+size = Number(size);
+if (!IsFiniteNonNegativeNumber(size)) {
+throw new RangeError(binding.streamErrors.invalidSize);
+}
+container[_queue].push({value, size});
+container[_queueTotalSize] += size;
+}
+function PeekQueueValue(container) {
+const pair = container[_queue].peek();
+return pair.value;
+}
+function ResetQueue(container) {
+container[_queue] = new binding.SimpleQueue();
+container[_queueTotalSize] = 0;
+}
+function IsFiniteNonNegativeNumber(v) {
+return Number_isFinite(v) && v >= 0;
+}
+function ValidateAndNormalizeQueuingStrategy(size, highWaterMark) {
+if (size !== undefined && typeof size !== 'function') {
+throw new TypeError(binding.streamErrors.sizeNotAFunction);
+}
+highWaterMark = Number(highWaterMark);
+if (Number_isNaN(highWaterMark)) {
+throw new RangeError(binding.streamErrors.invalidHWM);
+}
+if (highWaterMark < 0) {
+throw new RangeError(binding.streamErrors.invalidHWM);
+}
+return {size, highWaterMark};
+}
+const callFunction = v8.uncurryThis(global.Function.prototype.call);
+const errTmplMustBeFunctionOrUndefined = name =>
+`${name} must be a function or undefined`;
+const Promise_resolve = Promise.resolve.bind(Promise);
+const Promise_reject = Promise.reject.bind(Promise);
+function resolveMethod(O, P, nameForError) {
+const method = O[P];
+if (typeof method !== 'function' && typeof method !== 'undefined') {
+throw new TypeError(errTmplMustBeFunctionOrUndefined(nameForError));
+}
+return method;
+}
+function CallOrNoop1(O, P, arg0, nameForError) {
+const method = resolveMethod(O, P, nameForError);
+if (method === undefined) {
+return undefined;
+}
+return callFunction(method, O, arg0);
+}
+function PromiseCallOrNoop0(O, P, nameForError) {
+try {
+const method = resolveMethod(O, P, nameForError);
+if (method === undefined) {
+return Promise_resolve();
+}
+return Promise_resolve(callFunction(method, O));
+} catch (e) {
+return Promise_reject(e);
+}
+}
+function PromiseCallOrNoop1(O, P, arg0, nameForError) {
+try {
+return Promise_resolve(CallOrNoop1(O, P, arg0, nameForError));
+} catch (e) {
+return Promise_reject(e);
+}
+}
+function PromiseCallOrNoop2(O, P, arg0, arg1, nameForError) {
+try {
+const method = resolveMethod(O, P, nameForError);
+if (method === undefined) {
+return Promise_resolve();
+}
+return Promise_resolve(callFunction(method, O, arg0, arg1));
+} catch (e) {
+return Promise_reject(e);
+}
+}
+binding.streamOperations = {
+_queue,
+_queueTotalSize,
+hasOwnPropertyNoThrow,
+rejectPromise,
+resolvePromise,
+markPromiseAsHandled,
+promiseState,
+DequeueValue,
+EnqueueValueWithSize,
+PeekQueueValue,
+ResetQueue,
+ValidateAndNormalizeQueuingStrategy,
+CallOrNoop1,
+PromiseCallOrNoop0,
+PromiseCallOrNoop1,
+PromiseCallOrNoop2
+};
+});
+4CommonStrings
+(function(global, binding, v8) {
+'use strict';
+binding.streamErrors = {
+illegalInvocation: 'Illegal invocation',
+illegalConstructor: 'Illegal constructor',
+invalidType: 'Invalid type is specified',
+invalidSize: 'The return value of a queuing strategy\'s size function ' +
+'must be a finite, non-NaN, non-negative number',
+sizeNotAFunction: 'A queuing strategy\'s size property must be a function',
+invalidHWM:
+'A queueing strategy\'s highWaterMark property must be a nonnegative, ' +
+'non-NaN number',
+};
+});
+,SimpleQueue 
+(function(global, binding, v8) {
+'use strict';
+const _front = v8.createPrivateSymbol('front');
+const _back = v8.createPrivateSymbol('back');
+const _cursor = v8.createPrivateSymbol('cursor');
+const _size = v8.createPrivateSymbol('size');
+const _elements = v8.createPrivateSymbol('elements');
+const _next = v8.createPrivateSymbol('next');
+const RangeError = global.RangeError;
+function requireNonEmptyQueue(queue, functionName) {
+if (queue[_size] === 0) {
+throw new RangeError(
+`${functionName}() must not be called on an empty queue`);
+}
+}
+const QUEUE_MAX_ARRAY_SIZE = 16384;
+class SimpleQueue {
+constructor() {
+this[_front] = {
+[_elements]: new v8.InternalPackedArray(),
+[_next]: undefined,
+};
+this[_back] = this[_front];
+this[_cursor] = 0;
+this[_size] = 0;
+}
+get length() {
+return this[_size];
+}
+push(element) {
+const oldBack = this[_back];
+let newBack = oldBack;
+if (oldBack[_elements].length === QUEUE_MAX_ARRAY_SIZE - 1) {
+newBack = {
+[_elements]: new v8.InternalPackedArray(),
+[_next]: undefined,
+};
+}
+oldBack[_elements].push(element);
+if (newBack !== oldBack) {
+this[_back] = newBack;
+oldBack[_next] = newBack;
+}
+++this[_size];
+}
+shift() {
+requireNonEmptyQueue(this, 'shift');
+const oldFront = this[_front];
+let newFront = oldFront;
+const oldCursor = this[_cursor];
+let newCursor = oldCursor + 1;
+const elements = oldFront[_elements];
+const element = elements[oldCursor];
+if (newCursor === QUEUE_MAX_ARRAY_SIZE) {
+newFront = oldFront[_next];
+newCursor = 0;
+}
+--this[_size];
+this[_cursor] = newCursor;
+if (oldFront !== newFront) {
+this[_front] = newFront;
+}
+elements[oldCursor] = undefined;
+return element;
+}
+forEach(callback) {
+let i = this[_cursor];
+let node = this[_front];
+let elements = node[_elements];
+while (i !== elements.length || node[_next] !== undefined) {
+if (i === elements.length) {
+node = node[_next];
+elements = node[_elements];
+i = 0;
+if (elements.length === 0) {
+break;
+}
+}
+callback(elements[i]);
+++i;
+}
+}
+peek() {
+requireNonEmptyQueue(this, 'peek');
+const front = this[_front];
+const cursor = this[_cursor];
+return front[_elements][cursor];
+}
+}
+binding.SimpleQueue = SimpleQueue;
+});
+dByteLengthQueuingStrategy
+(function(global, binding, v8) {
+'use strict';
+const defineProperty = global.Object.defineProperty;
+class ByteLengthQueuingStrategy {
+constructor(options) {
+defineProperty(this, 'highWaterMark', {
+value: options.highWaterMark,
+enumerable: true,
+configurable: true,
+writable: true
+});
+}
+size(chunk) {
+return chunk.byteLength;
+}
+}
+defineProperty(global, 'ByteLengthQueuingStrategy', {
+value: ByteLengthQueuingStrategy,
+enumerable: false,
+configurable: true,
+writable: true
+});
+});
+PCountQueuingStrategy

+(function(global, binding, v8) {
+'use strict';
+const defineProperty = global.Object.defineProperty;
+class CountQueuingStrategy {
+constructor(options) {
+defineProperty(this, 'highWaterMark', {
+value: options.highWaterMark,
+enumerable: true,
+configurable: true,
+writable: true
+});
+}
+size() {
+return 1;
+}
+}
+defineProperty(global, 'CountQueuingStrategy', {
+value: CountQueuingStrategy,
+enumerable: false,
+configurable: true,
+writable: true
+});
+class BuiltInCountQueuingStrategy {
+constructor(highWaterMark) {
+defineProperty(this, 'highWaterMark', {value: highWaterMark});
+}
+size() {
+return 1;
+}
+}
+binding.createBuiltInCountQueuingStrategy = highWaterMark =>
+new BuiltInCountQueuingStrategy(highWaterMark);
+});
+8ReadableStreamZ
+(function(global, binding, v8) {
+'use strict';
+const _reader = v8.createPrivateSymbol('[[reader]]');
+const _storedError = v8.createPrivateSymbol('[[storedError]]');
+const _controller = v8.createPrivateSymbol('[[controller]]');
+const _closedPromise = v8.createPrivateSymbol('[[closedPromise]]');
+const _ownerReadableStream =
+v8.createPrivateSymbol('[[ownerReadableStream]]');
+const _readRequests = v8.createPrivateSymbol('[[readRequests]]');
+const createWithExternalControllerSentinel =
+v8.createPrivateSymbol('flag for UA-created ReadableStream to pass');
+const _readableStreamBits =
+v8.createPrivateSymbol('bit field for [[state]] and [[disturbed]]');
+const DISTURBED = 0b1;
+const STATE_MASK = 0b110;
+const STATE_BITS_OFFSET = 1;
+const STATE_READABLE = 0;
+const STATE_CLOSED = 1;
+const STATE_ERRORED = 2;
+const _underlyingSource = v8.createPrivateSymbol('[[underlyingSource]]');
+const _controlledReadableStream =
+v8.createPrivateSymbol('[[controlledReadableStream]]');
+const _strategySize = v8.createPrivateSymbol('[[strategySize]]');
+const _strategyHWM = v8.createPrivateSymbol('[[strategyHWM]]');
+const _readableStreamDefaultControllerBits = v8.createPrivateSymbol(
+'bit field for [[started]], [[closeRequested]], [[pulling]], ' +
+'[[pullAgain]]');
+const STARTED = 0b1;
+const CLOSE_REQUESTED = 0b10;
+const PULLING = 0b100;
+const PULL_AGAIN = 0b1000;
+const EXTERNALLY_CONTROLLED = 0b10000;
+const defineProperty = global.Object.defineProperty;
+const callFunction = v8.uncurryThis(global.Function.prototype.call);
+const applyFunction = v8.uncurryThis(global.Function.prototype.apply);
+const TypeError = global.TypeError;
+const RangeError = global.RangeError;
+const Boolean = global.Boolean;
+const String = global.String;
+const Promise = global.Promise;
+const thenPromise = v8.uncurryThis(Promise.prototype.then);
+const Promise_resolve = Promise.resolve.bind(Promise);
+const Promise_reject = Promise.reject.bind(Promise);
+const {
+_queue,
+_queueTotalSize,
+hasOwnPropertyNoThrow,
+rejectPromise,
+resolvePromise,
+markPromiseAsHandled,
+DequeueValue,
+EnqueueValueWithSize,
+ValidateAndNormalizeQueuingStrategy,
+CallOrNoop1,
+PromiseCallOrNoop1
+} = binding.streamOperations;
+const streamErrors = binding.streamErrors;
+const errCancelLockedStream =
+'Cannot cancel a readable stream that is locked to a reader';
+const errEnqueueCloseRequestedStream =
+'Cannot enqueue a chunk into a readable stream that is closed or ' +
+'has been requested to be closed';
+const errCancelReleasedReader =
+'This readable stream reader has been released and cannot be used ' +
+'to cancel its previous owner stream';
+const errReadReleasedReader =
+'This readable stream reader has been released and cannot be used ' +
+'to read from its previous owner stream';
+const errCloseCloseRequestedStream =
+'Cannot close a readable stream that has already been requested to ' +
+'be closed';
+const errEnqueueClosedStream =
+'Cannot enqueue a chunk into a closed readable stream';
+const errEnqueueErroredStream =
+'Cannot enqueue a chunk into an errored readable stream';
+const errCloseClosedStream = 'Cannot close a closed readable stream';
+const errCloseErroredStream = 'Cannot close an errored readable stream';
+const errErrorClosedStream = 'Cannot error a close readable stream';
+const errErrorErroredStream =
+'Cannot error a readable stream that is already errored';
+const errGetReaderNotByteStream =
+'This readable stream does not support BYOB readers';
+const errGetReaderBadMode =
+'Invalid reader mode given: expected undefined or "byob"';
+const errReaderConstructorBadArgument =
+'ReadableStreamReader constructor argument is not a readable stream';
+const errReaderConstructorStreamAlreadyLocked =
+'ReadableStreamReader constructor can only accept readable streams ' +
+'that are not yet locked to a reader';
+const errReleaseReaderWithPendingRead =
+'Cannot release a readable stream reader when it still has ' +
+'outstanding read() calls that have not yet settled';
+const errReleasedReaderClosedPromise =
+'This readable stream reader has been released and cannot be used ' +
+'to monitor the stream\'s state';
+const errCannotPipeLockedStream = 'Cannot pipe a locked stream';
+const errCannotPipeToALockedStream = 'Cannot pipe to a locked stream';
+const errDestinationStreamClosed = 'Destination stream closed';
+const errPipeThroughUndefinedWritable =
+'Failed to execute \'pipeThrough\' on \'ReadableStream\': parameter ' +
+'1\'s \'writable\' property is undefined.';
+const errPipeThroughUndefinedReadable =
+'Failed to execute \'pipeThrough\' on \'ReadableStream\': parameter ' +
+'1\'s \'readable\' property is undefined.';
+class ReadableStream {
+constructor(underlyingSource = {}, { size, highWaterMark = 1 } = {},
+internalArgument = undefined) {
+this[_readableStreamBits] = 0b0;
+ReadableStreamSetState(this, STATE_READABLE);
+this[_reader] = undefined;
+this[_storedError] = undefined;
+this[_controller] = undefined;
+const type = underlyingSource.type;
+const typeString = String(type);
+if (typeString === 'bytes') {
+throw new RangeError('bytes type is not yet implemented');
+} else if (type !== undefined) {
+throw new RangeError(streamErrors.invalidType);
+}
+this[_controller] = new ReadableStreamDefaultController(
+this, underlyingSource, size, highWaterMark,
+internalArgument === createWithExternalControllerSentinel);
+}
+get locked() {
+if (IsReadableStream(this) === false) {
+throw new TypeError(streamErrors.illegalInvocation);
+}
+return IsReadableStreamLocked(this);
+}
+cancel(reason) {
+if (IsReadableStream(this) === false) {
+return Promise_reject(new TypeError(streamErrors.illegalInvocation));
+}
+if (IsReadableStreamLocked(this) === true) {
+return Promise_reject(new TypeError(errCancelLockedStream));
+}
+return ReadableStreamCancel(this, reason);
+}
+getReader({mode} = {}) {
+if (IsReadableStream(this) === false) {
+throw new TypeError(streamErrors.illegalInvocation);
+}
+if (mode === 'byob') {
+throw new TypeError(errGetReaderNotByteStream);
+}
+if (mode === undefined) {
+return AcquireReadableStreamDefaultReader(this);
+}
+throw new RangeError(errGetReaderBadMode);
+}
+pipeThrough({writable, readable}, options) {
+if (writable === undefined) {
+throw new TypeError(errPipeThroughUndefinedWritable);
+}
+if (readable === undefined) {
+throw new TypeError(errPipeThroughUndefinedReadable);
+}
+const promise = this.pipeTo(writable, options);
+if (v8.isPromise(promise)) {
+markPromiseAsHandled(promise);
+}
+return readable;
+}
+pipeTo(dest, {preventClose, preventAbort, preventCancel} = {}) {
+if (!IsReadableStream(this)) {
+return Promise_reject(new TypeError(streamErrors.illegalInvocation));
+}
+if (!binding.IsWritableStream(dest)) {
+return Promise_reject(new TypeError(streamErrors.illegalInvocation));
+}
+preventClose = Boolean(preventClose);
+preventAbort = Boolean(preventAbort);
+preventCancel = Boolean(preventCancel);
+if (IsReadableStreamLocked(this)) {
+return Promise_reject(new TypeError(errCannotPipeLockedStream));
+}
+if (binding.IsWritableStreamLocked(dest)) {
+return Promise_reject(new TypeError(errCannotPipeToALockedStream));
+}
+return ReadableStreamPipeTo(
+this, dest, preventClose, preventAbort, preventCancel);
+}
+tee() {
+if (IsReadableStream(this) === false) {
+throw new TypeError(streamErrors.illegalInvocation);
+}
+return ReadableStreamTee(this);
+}
+}
+function ReadableStreamPipeTo(
+readable, dest, preventClose, preventAbort, preventCancel) {
+const reader = AcquireReadableStreamDefaultReader(readable);
+const writer = binding.AcquireWritableStreamDefaultWriter(dest);
+let shuttingDown = false;
+const promise = v8.createPromise();
+let reading = false;
+if (checkInitialState()) {
+thenPromise(reader[_closedPromise], onReaderClosed, readableError);
+thenPromise(
+binding.getWritableStreamDefaultWriterClosedPromise(writer),
+undefined, writableError);
+pump();
+}
+function checkInitialState() {
+const state = ReadableStreamGetState(readable);
+if (state === STATE_ERRORED) {
+readableError(readable[_storedError]);
+return false;
+}
+if (binding.isWritableStreamErrored(dest)) {
+writableError(binding.getWritableStreamStoredError(dest));
+return false;
+}
+if (state === STATE_CLOSED) {
+readableClosed();
+return false;
+}
+if (binding.isWritableStreamClosingOrClosed(dest)) {
+writableStartedClosed();
+return false;
+}
+return true;
+}
+function pump() {
+if (shuttingDown) {
+return;
+}
+const desiredSize =
+binding.WritableStreamDefaultWriterGetDesiredSize(writer);
+if (desiredSize === null) {
+return;
+}
+if (desiredSize <= 0) {
+thenPromise(
+binding.getWritableStreamDefaultWriterReadyPromise(writer), pump,
+writableError);
+return;
+}
+reading = true;
+thenPromise(
+ReadableStreamDefaultReaderRead(reader), readFulfilled, readRejected);
+}
+function readFulfilled({value, done}) {
+reading = false;
+if (shuttingDown) {
+return;
+}
+if (done) {
+readableClosed();
+return;
+}
+const write = binding.WritableStreamDefaultWriterWrite(writer, value);
+thenPromise(write, undefined, writableError);
+pump();
+}
+function readRejected() {
+reading = false;
+readableError(readable[_storedError]);
+}
+function onReaderClosed() {
+if (!reading) {
+readableClosed();
+}
+}
+function readableError(error) {
+if (!preventAbort) {
+shutdownWithAction(
+binding.WritableStreamAbort, [dest, error], error, true);
+} else {
+shutdown(error, true);
+}
+}
+function writableError(error) {
+if (!preventCancel) {
+shutdownWithAction(
+ReadableStreamCancel, [readable, error], error, true);
+} else {
+shutdown(error, true);
+}
+}
+function readableClosed() {
+if (!preventClose) {
+shutdownWithAction(
+binding.WritableStreamDefaultWriterCloseWithErrorPropagation,
+[writer]);
+} else {
+shutdown();
+}
+}
+function writableStartedClosed() {
+const destClosed = new TypeError(errDestinationStreamClosed);
+if (!preventCancel) {
+shutdownWithAction(
+ReadableStreamCancel, [readable, destClosed], destClosed, true);
+} else {
+shutdown(destClosed, true);
+}
+}
+function shutdownWithAction(
+action, args, originalError = undefined, errorGiven = false) {
+if (shuttingDown) {
+return;
+}
+shuttingDown = true;
+const p = applyFunction(action, undefined, args);
+thenPromise(
+p, () => finalize(originalError, errorGiven),
+newError => finalize(newError, true));
+}
+function shutdown(error = undefined, errorGiven = false) {
+if (shuttingDown) {
+return;
+}
+shuttingDown = true;
+finalize(error, errorGiven);
+}
+function finalize(error, errorGiven) {
+binding.WritableStreamDefaultWriterRelease(writer);
+ReadableStreamReaderGenericRelease(reader);
+if (errorGiven) {
+rejectPromise(promise, error);
+} else {
+resolvePromise(promise, undefined);
+}
+}
+return promise;
+}
+function AcquireReadableStreamDefaultReader(stream) {
+return new ReadableStreamDefaultReader(stream);
+}
+function IsReadableStream(x) {
+return hasOwnPropertyNoThrow(x, _controller);
+}
+function IsReadableStreamDisturbed(stream) {
+return stream[_readableStreamBits] & DISTURBED;
+}
+function IsReadableStreamLocked(stream) {
+return stream[_reader] !== undefined;
+}
+function ReadableStreamTee(stream) {
+const reader = AcquireReadableStreamDefaultReader(stream);
+let closedOrErrored = false;
+let canceled1 = false;
+let canceled2 = false;
+let reason1;
+let reason2;
+const promise = v8.createPromise();
+const branch1Stream = new ReadableStream({pull, cancel: cancel1});
+const branch2Stream = new ReadableStream({pull, cancel: cancel2});
+const branch1 = branch1Stream[_controller];
+const branch2 = branch2Stream[_controller];
+thenPromise(reader[_closedPromise], undefined, function(r) {
+if (closedOrErrored === true) {
+return;
+}
+ReadableStreamDefaultControllerError(branch1, r);
+ReadableStreamDefaultControllerError(branch2, r);
+closedOrErrored = true;
+});
+return [branch1Stream, branch2Stream];
+function pull() {
+return thenPromise(
+ReadableStreamDefaultReaderRead(reader), function(result) {
+const value = result.value;
+const done = result.done;
+if (done === true && closedOrErrored === false) {
+if (canceled1 === false) {
+ReadableStreamDefaultControllerClose(branch1);
+}
+if (canceled2 === false) {
+ReadableStreamDefaultControllerClose(branch2);
+}
+closedOrErrored = true;
+}
+if (closedOrErrored === true) {
+return;
+}
+if (canceled1 === false) {
+ReadableStreamDefaultControllerEnqueue(branch1, value);
+}
+if (canceled2 === false) {
+ReadableStreamDefaultControllerEnqueue(branch2, value);
+}
+});
+}
+function cancel1(reason) {
+canceled1 = true;
+reason1 = reason;
+if (canceled2 === true) {
+const compositeReason = [reason1, reason2];
+const cancelResult = ReadableStreamCancel(stream, compositeReason);
+resolvePromise(promise, cancelResult);
+}
+return promise;
+}
+function cancel2(reason) {
+canceled2 = true;
+reason2 = reason;
+if (canceled1 === true) {
+const compositeReason = [reason1, reason2];
+const cancelResult = ReadableStreamCancel(stream, compositeReason);
+resolvePromise(promise, cancelResult);
+}
+return promise;
+}
+}
+function ReadableStreamAddReadRequest(stream) {
+const promise = v8.createPromise();
+stream[_reader][_readRequests].push(promise);
+return promise;
+}
+function ReadableStreamCancel(stream, reason) {
+stream[_readableStreamBits] |= DISTURBED;
+const state = ReadableStreamGetState(stream);
+if (state === STATE_CLOSED) {
+return Promise_resolve(undefined);
+}
+if (state === STATE_ERRORED) {
+return Promise_reject(stream[_storedError]);
+}
+ReadableStreamClose(stream);
+const sourceCancelPromise =
+ReadableStreamDefaultControllerCancel(stream[_controller], reason);
+return thenPromise(sourceCancelPromise, () => undefined);
+}
+function ReadableStreamClose(stream) {
+ReadableStreamSetState(stream, STATE_CLOSED);
+const reader = stream[_reader];
+if (reader === undefined) {
+return undefined;
+}
+if (IsReadableStreamDefaultReader(reader) === true) {
+reader[_readRequests].forEach(
+request =>
+resolvePromise(request, CreateIterResultObject(undefined, true)));
+reader[_readRequests] = new binding.SimpleQueue();
+}
+resolvePromise(reader[_closedPromise], undefined);
+}
+function ReadableStreamError(stream, e) {
+stream[_storedError] = e;
+ReadableStreamSetState(stream, STATE_ERRORED);
+const reader = stream[_reader];
+if (reader === undefined) {
+return undefined;
+}
+if (IsReadableStreamDefaultReader(reader) === true) {
+reader[_readRequests].forEach(request => rejectPromise(request, e));
+reader[_readRequests] = new binding.SimpleQueue();
+}
+rejectPromise(reader[_closedPromise], e);
+markPromiseAsHandled(reader[_closedPromise]);
+}
+function ReadableStreamFulfillReadRequest(stream, chunk, done) {
+const readRequest = stream[_reader][_readRequests].shift();
+resolvePromise(readRequest, CreateIterResultObject(chunk, done));
+}
+function ReadableStreamGetNumReadRequests(stream) {
+const reader = stream[_reader];
+const readRequests = reader[_readRequests];
+return readRequests.length;
+}
+class ReadableStreamDefaultReader {
+constructor(stream) {
+if (IsReadableStream(stream) === false) {
+throw new TypeError(errReaderConstructorBadArgument);
+}
+if (IsReadableStreamLocked(stream) === true) {
+throw new TypeError(errReaderConstructorStreamAlreadyLocked);
+}
+ReadableStreamReaderGenericInitialize(this, stream);
+this[_readRequests] = new binding.SimpleQueue();
+}
+get closed() {
+if (IsReadableStreamDefaultReader(this) === false) {
+return Promise_reject(new TypeError(streamErrors.illegalInvocation));
+}
+return this[_closedPromise];
+}
+cancel(reason) {
+if (IsReadableStreamDefaultReader(this) === false) {
+return Promise_reject(new TypeError(streamErrors.illegalInvocation));
+}
+const stream = this[_ownerReadableStream];
+if (stream === undefined) {
+return Promise_reject(new TypeError(errCancelReleasedReader));
+}
+return ReadableStreamReaderGenericCancel(this, reason);
+}
+read() {
+if (IsReadableStreamDefaultReader(this) === false) {
+return Promise_reject(new TypeError(streamErrors.illegalInvocation));
+}
+if (this[_ownerReadableStream] === undefined) {
+return Promise_reject(new TypeError(errReadReleasedReader));
+}
+return ReadableStreamDefaultReaderRead(this);
+}
+releaseLock() {
+if (IsReadableStreamDefaultReader(this) === false) {
+throw new TypeError(streamErrors.illegalInvocation);
+}
+const stream = this[_ownerReadableStream];
+if (stream === undefined) {
+return undefined;
+}
+if (this[_readRequests].length > 0) {
+throw new TypeError(errReleaseReaderWithPendingRead);
+}
+ReadableStreamReaderGenericRelease(this);
+}
+}
+function IsReadableStreamDefaultReader(x) {
+return hasOwnPropertyNoThrow(x, _readRequests);
+}
+function ReadableStreamReaderGenericCancel(reader, reason) {
+return ReadableStreamCancel(reader[_ownerReadableStream], reason);
+}
+function ReadableStreamReaderGenericInitialize(reader, stream) {
+const controller = stream[_controller];
+if (controller[_readableStreamDefaultControllerBits] &
+EXTERNALLY_CONTROLLED) {
+const underlyingSource = controller[_underlyingSource];
+callFunction(underlyingSource.notifyLockAcquired, underlyingSource);
+}
+reader[_ownerReadableStream] = stream;
+stream[_reader] = reader;
+switch (ReadableStreamGetState(stream)) {
+case STATE_READABLE:
+reader[_closedPromise] = v8.createPromise();
+break;
+case STATE_CLOSED:
+reader[_closedPromise] = Promise_resolve(undefined);
+break;
+case STATE_ERRORED:
+reader[_closedPromise] = Promise_reject(stream[_storedError]);
+markPromiseAsHandled(reader[_closedPromise]);
+break;
+}
+}
+function ReadableStreamReaderGenericRelease(reader) {
+const controller = reader[_ownerReadableStream][_controller];
+if (controller[_readableStreamDefaultControllerBits] &
+EXTERNALLY_CONTROLLED) {
+const underlyingSource = controller[_underlyingSource];
+callFunction(underlyingSource.notifyLockReleased, underlyingSource);
+}
+if (ReadableStreamGetState(reader[_ownerReadableStream]) ===
+STATE_READABLE) {
+rejectPromise(
+reader[_closedPromise],
+new TypeError(errReleasedReaderClosedPromise));
+} else {
+reader[_closedPromise] =
+Promise_reject(new TypeError(errReleasedReaderClosedPromise));
+}
+markPromiseAsHandled(reader[_closedPromise]);
+reader[_ownerReadableStream][_reader] = undefined;
+reader[_ownerReadableStream] = undefined;
+}
+function ReadableStreamDefaultReaderRead(reader) {
+const stream = reader[_ownerReadableStream];
+stream[_readableStreamBits] |= DISTURBED;
+if (ReadableStreamGetState(stream) === STATE_CLOSED) {
+return Promise_resolve(CreateIterResultObject(undefined, true));
+}
+if (ReadableStreamGetState(stream) === STATE_ERRORED) {
+return Promise_reject(stream[_storedError]);
+}
+return ReadableStreamDefaultControllerPull(stream[_controller]);
+}
+class ReadableStreamDefaultController {
+constructor(
+stream, underlyingSource, size, highWaterMark, isExternallyControlled) {
+if (IsReadableStream(stream) === false) {
+throw new TypeError(streamErrors.illegalConstructor);
+}
+if (stream[_controller] !== undefined) {
+throw new TypeError(streamErrors.illegalConstructor);
+}
+this[_controlledReadableStream] = stream;
+this[_underlyingSource] = underlyingSource;
+this[_queue] = new binding.SimpleQueue();
+this[_queueTotalSize] = 0;
+this[_readableStreamDefaultControllerBits] = 0b0;
+if (isExternallyControlled === true) {
+this[_readableStreamDefaultControllerBits] |= EXTERNALLY_CONTROLLED;
+}
+const normalizedStrategy =
+ValidateAndNormalizeQueuingStrategy(size, highWaterMark);
+this[_strategySize] = normalizedStrategy.size;
+this[_strategyHWM] = normalizedStrategy.highWaterMark;
+const controller = this;
+const startResult = CallOrNoop1(
+underlyingSource, 'start', this, 'underlyingSource.start');
+thenPromise(
+Promise_resolve(startResult),
+() => {
+controller[_readableStreamDefaultControllerBits] |= STARTED;
+ReadableStreamDefaultControllerCallPullIfNeeded(controller);
+},
+r => {
+if (ReadableStreamGetState(stream) === STATE_READABLE) {
+ReadableStreamDefaultControllerError(controller, r);
+}
+});
+}
+get desiredSize() {
+if (IsReadableStreamDefaultController(this) === false) {
+throw new TypeError(streamErrors.illegalInvocation);
+}
+return ReadableStreamDefaultControllerGetDesiredSize(this);
+}
+close() {
+if (IsReadableStreamDefaultController(this) === false) {
+throw new TypeError(streamErrors.illegalInvocation);
+}
+const stream = this[_controlledReadableStream];
+if (this[_readableStreamDefaultControllerBits] & CLOSE_REQUESTED) {
+throw new TypeError(errCloseCloseRequestedStream);
+}
+const state = ReadableStreamGetState(stream);
+if (state === STATE_ERRORED) {
+throw new TypeError(errCloseErroredStream);
+}
+if (state === STATE_CLOSED) {
+throw new TypeError(errCloseClosedStream);
+}
+return ReadableStreamDefaultControllerClose(this);
+}
+enqueue(chunk) {
+if (IsReadableStreamDefaultController(this) === false) {
+throw new TypeError(streamErrors.illegalInvocation);
+}
+if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(this)) {
+const stream = this[_controlledReadableStream];
+throw getReadableStreamEnqueueError(stream, this);
+}
+return ReadableStreamDefaultControllerEnqueue(this, chunk);
+}
+error(e) {
+if (IsReadableStreamDefaultController(this) === false) {
+throw new TypeError(streamErrors.illegalInvocation);
+}
+const stream = this[_controlledReadableStream];
+const state = ReadableStreamGetState(stream);
+if (state === STATE_ERRORED) {
+throw new TypeError(errErrorErroredStream);
+}
+if (state === STATE_CLOSED) {
+throw new TypeError(errErrorClosedStream);
+}
+return ReadableStreamDefaultControllerError(this, e);
+}
+}
+function ReadableStreamDefaultControllerCancel(controller, reason) {
+controller[_queue] = new binding.SimpleQueue();
+const underlyingSource = controller[_underlyingSource];
+return PromiseCallOrNoop1(
+underlyingSource, 'cancel', reason, 'underlyingSource.cancel');
+}
+function ReadableStreamDefaultControllerPull(controller) {
+const stream = controller[_controlledReadableStream];
+if (controller[_queue].length > 0) {
+const chunk = DequeueValue(controller);
+if ((controller[_readableStreamDefaultControllerBits] &
+CLOSE_REQUESTED) &&
+controller[_queue].length === 0) {
+ReadableStreamClose(stream);
+} else {
+ReadableStreamDefaultControllerCallPullIfNeeded(controller);
+}
+return Promise_resolve(CreateIterResultObject(chunk, false));
+}
+const pendingPromise = ReadableStreamAddReadRequest(stream);
+ReadableStreamDefaultControllerCallPullIfNeeded(controller);
+return pendingPromise;
+}
+function IsReadableStreamDefaultController(x) {
+return hasOwnPropertyNoThrow(x, _controlledReadableStream);
+}
+function ReadableStreamDefaultControllerCallPullIfNeeded(controller) {
+const shouldPull =
+ReadableStreamDefaultControllerShouldCallPull(controller);
+if (shouldPull === false) {
+return undefined;
+}
+if (controller[_readableStreamDefaultControllerBits] & PULLING) {
+controller[_readableStreamDefaultControllerBits] |= PULL_AGAIN;
+return undefined;
+}
+controller[_readableStreamDefaultControllerBits] |= PULLING;
+const underlyingSource = controller[_underlyingSource];
+const pullPromise = PromiseCallOrNoop1(
+underlyingSource, 'pull', controller, 'underlyingSource.pull');
+thenPromise(
+pullPromise,
+() => {
+controller[_readableStreamDefaultControllerBits] &= ~PULLING;
+if (controller[_readableStreamDefaultControllerBits] & PULL_AGAIN) {
+controller[_readableStreamDefaultControllerBits] &= ~PULL_AGAIN;
+ReadableStreamDefaultControllerCallPullIfNeeded(controller);
+}
+},
+e => {
+if (ReadableStreamGetState(controller[_controlledReadableStream]) ===
+STATE_READABLE) {
+ReadableStreamDefaultControllerError(controller, e);
+}
+});
+}
+function ReadableStreamDefaultControllerShouldCallPull(controller) {
+const stream = controller[_controlledReadableStream];
+const state = ReadableStreamGetState(stream);
+if (state === STATE_CLOSED || state === STATE_ERRORED) {
+return false;
+}
+if (controller[_readableStreamDefaultControllerBits] & CLOSE_REQUESTED) {
+return false;
+}
+if (!(controller[_readableStreamDefaultControllerBits] & STARTED)) {
+return false;
+}
+if (IsReadableStreamLocked(stream) === true &&
+ReadableStreamGetNumReadRequests(stream) > 0) {
+return true;
+}
+const desiredSize =
+ReadableStreamDefaultControllerGetDesiredSize(controller);
+if (desiredSize > 0) {
+return true;
+}
+return false;
+}
+function ReadableStreamDefaultControllerClose(controller) {
+const stream = controller[_controlledReadableStream];
+controller[_readableStreamDefaultControllerBits] |= CLOSE_REQUESTED;
+if (controller[_queue].length === 0) {
+ReadableStreamClose(stream);
+}
+}
+function ReadableStreamDefaultControllerEnqueue(controller, chunk) {
+const stream = controller[_controlledReadableStream];
+if (IsReadableStreamLocked(stream) === true &&
+ReadableStreamGetNumReadRequests(stream) > 0) {
+ReadableStreamFulfillReadRequest(stream, chunk, false);
+} else {
+let chunkSize = 1;
+const strategySize = controller[_strategySize];
+if (strategySize !== undefined) {
+try {
+chunkSize = strategySize(chunk);
+} catch (chunkSizeE) {
+if (ReadableStreamGetState(stream) === STATE_READABLE) {
+ReadableStreamDefaultControllerError(controller, chunkSizeE);
+}
+throw chunkSizeE;
+}
+}
+try {
+EnqueueValueWithSize(controller, chunk, chunkSize);
+} catch (enqueueE) {
+if (ReadableStreamGetState(stream) === STATE_READABLE) {
+ReadableStreamDefaultControllerError(controller, enqueueE);
+}
+throw enqueueE;
+}
+}
+ReadableStreamDefaultControllerCallPullIfNeeded(controller);
+}
+function ReadableStreamDefaultControllerError(controller, e) {
+controller[_queue] = new binding.SimpleQueue();
+const stream = controller[_controlledReadableStream];
+ReadableStreamError(stream, e);
+}
+function ReadableStreamDefaultControllerGetDesiredSize(controller) {
+return controller[_strategyHWM] - controller[_queueTotalSize];
+}
+function ReadableStreamDefaultControllerHasBackpressure(controller) {
+return !ReadableStreamDefaultControllerShouldCallPull(controller);
+}
+function ReadableStreamDefaultControllerCanCloseOrEnqueue(controller) {
+if (controller[_readableStreamDefaultControllerBits] & CLOSE_REQUESTED) {
+return false;
+}
+const state = ReadableStreamGetState(controller[_controlledReadableStream]);
+return state === STATE_READABLE;
+}
+function ReadableStreamGetState(stream) {
+return (stream[_readableStreamBits] & STATE_MASK) >> STATE_BITS_OFFSET;
+}
+function ReadableStreamSetState(stream, state) {
+stream[_readableStreamBits] = (stream[_readableStreamBits] & ~STATE_MASK) |
+(state << STATE_BITS_OFFSET);
+}
+function IsReadableStreamReadable(stream) {
+return ReadableStreamGetState(stream) === STATE_READABLE;
+}
+function IsReadableStreamClosed(stream) {
+return ReadableStreamGetState(stream) === STATE_CLOSED;
+}
+function IsReadableStreamErrored(stream) {
+return ReadableStreamGetState(stream) === STATE_ERRORED;
+}
+function getReadableStreamEnqueueError(stream, controller) {
+if (controller[_readableStreamDefaultControllerBits] & CLOSE_REQUESTED) {
+return new TypeError(errEnqueueCloseRequestedStream);
+}
+const state = ReadableStreamGetState(stream);
+if (state === STATE_ERRORED) {
+return new TypeError(errEnqueueErroredStream);
+}
+return new TypeError(errEnqueueClosedStream);
+}
+function CreateIterResultObject(value, done) {
+return {value, done};
+}
+function getReadableStreamController(stream) {
+return stream[_controller];
+}
+function getReadableStreamStoredError(stream) {
+return stream[_storedError];
+}
+defineProperty(global, 'ReadableStream', {
+value: ReadableStream,
+enumerable: false,
+configurable: true,
+writable: true
+});
+binding.AcquireReadableStreamDefaultReader =
+AcquireReadableStreamDefaultReader;
+binding.IsReadableStream = IsReadableStream;
+binding.IsReadableStreamDisturbed = IsReadableStreamDisturbed;
+binding.IsReadableStreamLocked = IsReadableStreamLocked;
+binding.IsReadableStreamReadable = IsReadableStreamReadable;
+binding.IsReadableStreamClosed = IsReadableStreamClosed;
+binding.IsReadableStreamErrored = IsReadableStreamErrored;
+binding.IsReadableStreamDefaultReader = IsReadableStreamDefaultReader;
+binding.ReadableStreamDefaultReaderRead = ReadableStreamDefaultReaderRead;
+binding.ReadableStreamTee = ReadableStreamTee;
+binding.ReadableStreamDefaultControllerClose =
+ReadableStreamDefaultControllerClose;
+binding.ReadableStreamDefaultControllerGetDesiredSize =
+ReadableStreamDefaultControllerGetDesiredSize;
+binding.ReadableStreamDefaultControllerEnqueue =
+ReadableStreamDefaultControllerEnqueue;
+binding.ReadableStreamDefaultControllerError =
+ReadableStreamDefaultControllerError;
+binding.createReadableStreamWithExternalController =
+(underlyingSource, strategy) => {
+return new ReadableStream(
+underlyingSource, strategy, createWithExternalControllerSentinel);
+};
+binding.ReadableStream = ReadableStream;
+binding.ReadableStreamDefaultControllerCanCloseOrEnqueue =
+ReadableStreamDefaultControllerCanCloseOrEnqueue;
+binding.ReadableStreamDefaultControllerHasBackpressure =
+ReadableStreamDefaultControllerHasBackpressure;
+binding.getReadableStreamEnqueueError = getReadableStreamEnqueueError;
+binding.getReadableStreamController = getReadableStreamController;
+binding.getReadableStreamStoredError = getReadableStreamStoredError;
+});
+8WritableStream
+(function(global, binding, v8) {
+'use strict';
+const _closeRequest = v8.createPrivateSymbol('[[closeRequest]]');
+const _inFlightWriteRequest =
+v8.createPrivateSymbol('[[inFlightWriteRequest]]');
+const _inFlightCloseRequest =
+v8.createPrivateSymbol('[[inFlightCloseRequest]]');
+const _pendingAbortRequest =
+v8.createPrivateSymbol('[[pendingAbortRequest]]');
+const _stateAndFlags = v8.createPrivateSymbol('[[state]] and flags');
+const _storedError = v8.createPrivateSymbol('[[storedError]]');
+const _writableStreamController =
+v8.createPrivateSymbol('[[writableStreamController]]');
+const _writer = v8.createPrivateSymbol('[[writer]]');
+const _writeRequests = v8.createPrivateSymbol('[[writeRequests]]');
+const _closedPromise = v8.createPrivateSymbol('[[closedPromise]]');
+const _ownerWritableStream =
+v8.createPrivateSymbol('[[ownerWritableStream]]');
+const _readyPromise = v8.createPrivateSymbol('[[readyPromise]]');
+const _controlledWritableStream =
+v8.createPrivateSymbol('[[controlledWritableStream]]');
+const _started = v8.createPrivateSymbol('[[started]]');
+const _strategyHWM = v8.createPrivateSymbol('[[strategyHWM]]');
+const _strategySize = v8.createPrivateSymbol('[[strategySize]]');
+const _underlyingSink = v8.createPrivateSymbol('[[underlyingSink]]');
+const WRITABLE = 0;
+const CLOSED = 1;
+const ERRORING = 2;
+const ERRORED = 3;
+const STATE_MASK = 0xF;
+const BACKPRESSURE_FLAG = 0x10;
+const defineProperty = global.Object.defineProperty;
+const Function_call = v8.uncurryThis(global.Function.prototype.call);
+const TypeError = global.TypeError;
+const RangeError = global.RangeError;
+const Boolean = global.Boolean;
+const Promise = global.Promise;
+const thenPromise = v8.uncurryThis(Promise.prototype.then);
+const Promise_resolve = Promise.resolve.bind(Promise);
+const Promise_reject = Promise.reject.bind(Promise);
+const {
+_queue,
+_queueTotalSize,
+hasOwnPropertyNoThrow,
+rejectPromise,
+resolvePromise,
+markPromiseAsHandled,
+promiseState,
+DequeueValue,
+EnqueueValueWithSize,
+PeekQueueValue,
+ResetQueue,
+ValidateAndNormalizeQueuingStrategy,
+CallOrNoop1,
+PromiseCallOrNoop0,
+PromiseCallOrNoop1,
+PromiseCallOrNoop2
+} = binding.streamOperations;
+const streamErrors = binding.streamErrors;
+const errAbortLockedStream =
+'Cannot abort a writable stream that is locked to a writer';
+const errStreamAborting = 'The stream is in the process of being aborted';
+const errWriterLockReleasedPrefix =
+'This writable stream writer has been released and cannot be ';
+const errCloseCloseRequestedStream = 'Cannot close a writable stream that ' +
+'has already been requested to be closed';
+const templateErrorCannotActionOnStateStream = (action, state) =>
+`Cannot ${action} a ${state} writable stream`;
+const errReleasedWriterClosedPromise = 'This writable stream writer has ' +
+'been released and cannot be used to monitor the stream\'s state';
+const verbUsedToGetTheDesiredSize = 'used to get the desiredSize';
+const verbAborted = 'aborted';
+const verbClosed = 'closed';
+const verbWrittenTo = 'written to';
+function createWriterLockReleasedError(verb) {
+return new TypeError(errWriterLockReleasedPrefix + verb);
+}
+const stateNames = {
+[CLOSED]: 'closed',
+[ERRORED]: 'errored'
+};
+function createCannotActionOnStateStreamError(action, state) {
+return new TypeError(
+templateErrorCannotActionOnStateStream(action, stateNames[state]));
+}
+function rejectPromises(queue, e) {
+queue.forEach(promise => rejectPromise(promise, e));
+}
+class WritableStream {
+constructor(underlyingSink = {}, {size, highWaterMark = 1} = {}) {
+this[_stateAndFlags] = WRITABLE;
+this[_storedError] = undefined;
+this[_writer] = undefined;
+this[_writableStreamController] = undefined;
+this[_inFlightWriteRequest] = undefined;
+this[_closeRequest] = undefined;
+this[_inFlightCloseRequest] = undefined;
+this[_pendingAbortRequest] = undefined;
+this[_writeRequests] = new binding.SimpleQueue();
+const type = underlyingSink.type;
+if (type !== undefined) {
+throw new RangeError(streamErrors.invalidType);
+}
+this[_writableStreamController] = new WritableStreamDefaultController(
+this, underlyingSink, size, highWaterMark);
+WritableStreamDefaultControllerStartSteps(
+this[_writableStreamController]);
+}
+get locked() {
+if (!IsWritableStream(this)) {
+throw new TypeError(streamErrors.illegalInvocation);
+}
+return IsWritableStreamLocked(this);
+}
+abort(reason) {
+if (!IsWritableStream(this)) {
+return Promise_reject(new TypeError(streamErrors.illegalInvocation));
+}
+if (IsWritableStreamLocked(this)) {
+return Promise_reject(new TypeError(errAbortLockedStream));
+}
+return WritableStreamAbort(this, reason);
+}
+getWriter() {
+if (!IsWritableStream(this)) {
+throw new TypeError(streamErrors.illegalInvocation);
+}
+return AcquireWritableStreamDefaultWriter(this);
+}
+}
+function AcquireWritableStreamDefaultWriter(stream) {
+return new WritableStreamDefaultWriter(stream);
+}
+function IsWritableStream(x) {
+return hasOwnPropertyNoThrow(x, _writableStreamController);
+}
+function IsWritableStreamLocked(stream) {
+return stream[_writer] !== undefined;
+}
+function WritableStreamAbort(stream, reason) {
+const state = stream[_stateAndFlags] & STATE_MASK;
+if (state === CLOSED) {
+return Promise_resolve(undefined);
+}
+if (state === ERRORED) {
+return Promise_reject(stream[_storedError]);
+}
+const error = new TypeError(errStreamAborting);
+if (stream[_pendingAbortRequest] !== undefined) {
+return Promise_reject(error);
+}
+const wasAlreadyErroring = state === ERRORING;
+if (wasAlreadyErroring) {
+reason = undefined;
+}
+const promise = v8.createPromise();
+stream[_pendingAbortRequest] = {promise, reason, wasAlreadyErroring};
+if (!wasAlreadyErroring) {
+WritableStreamStartErroring(stream, error);
+}
+return promise;
+}
+function WritableStreamAddWriteRequest(stream) {
+const promise = v8.createPromise();
+stream[_writeRequests].push(promise);
+return promise;
+}
+function WritableStreamDealWithRejection(stream, error) {
+const state = stream[_stateAndFlags] & STATE_MASK;
+if (state === WRITABLE) {
+WritableStreamStartErroring(stream, error);
+return;
+}
+WritableStreamFinishErroring(stream);
+}
+function WritableStreamStartErroring(stream, reason) {
+const controller = stream[_writableStreamController];
+stream[_stateAndFlags] = (stream[_stateAndFlags] & ~STATE_MASK) | ERRORING;
+stream[_storedError] = reason;
+const writer = stream[_writer];
+if (writer !== undefined) {
+WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason);
+}
+if (!WritableStreamHasOperationMarkedInFlight(stream) &&
+controller[_started]) {
+WritableStreamFinishErroring(stream);
+}
+}
+function WritableStreamFinishErroring(stream) {
+stream[_stateAndFlags] = (stream[_stateAndFlags] & ~STATE_MASK) | ERRORED;
+WritableStreamDefaultControllerErrorSteps(
+stream[_writableStreamController]);
+const storedError = stream[_storedError];
+rejectPromises(stream[_writeRequests], storedError);
+stream[_writeRequests] = new binding.SimpleQueue();
+if (stream[_pendingAbortRequest] === undefined) {
+WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);
+return;
+}
+const abortRequest = stream[_pendingAbortRequest];
+stream[_pendingAbortRequest] = undefined;
+if (abortRequest.wasAlreadyErroring === true) {
+rejectPromise(abortRequest.promise, storedError);
+WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);
+return;
+}
+const promise = WritableStreamDefaultControllerAbortSteps(
+stream[_writableStreamController], abortRequest.reason);
+thenPromise(
+promise,
+() => {
+resolvePromise(abortRequest.promise, undefined);
+WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);
+},
+reason => {
+rejectPromise(abortRequest.promise, reason);
+WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);
+});
+}
+function WritableStreamFinishInFlightWrite(stream) {
+resolvePromise(stream[_inFlightWriteRequest], undefined);
+stream[_inFlightWriteRequest] = undefined;
+}
+function WritableStreamFinishInFlightWriteWithError(stream, error) {
+rejectPromise(stream[_inFlightWriteRequest], error);
+stream[_inFlightWriteRequest] = undefined;
+WritableStreamDealWithRejection(stream, error);
+}
+function WritableStreamFinishInFlightClose(stream) {
+resolvePromise(stream[_inFlightCloseRequest], undefined);
+stream[_inFlightCloseRequest] = undefined;
+const state = stream[_stateAndFlags] & STATE_MASK;
+if (state === ERRORING) {
+stream[_storedError] = undefined;
+if (stream[_pendingAbortRequest] !== undefined) {
+resolvePromise(stream[_pendingAbortRequest].promise, undefined);
+stream[_pendingAbortRequest] = undefined;
+}
+}
+stream[_stateAndFlags] = (stream[_stateAndFlags] & ~STATE_MASK) | CLOSED;
+const writer = stream[_writer];
+if (writer !== undefined) {
+resolvePromise(writer[_closedPromise], undefined);
+}
+}
+function WritableStreamFinishInFlightCloseWithError(stream, error) {
+rejectPromise(stream[_inFlightCloseRequest], error);
+stream[_inFlightCloseRequest] = undefined;
+if (stream[_pendingAbortRequest] !== undefined) {
+rejectPromise(stream[_pendingAbortRequest].promise, error);
+stream[_pendingAbortRequest] = undefined;
+}
+WritableStreamDealWithRejection(stream, error);
+}
+function WritableStreamCloseQueuedOrInFlight(stream) {
+return stream[_closeRequest] !== undefined ||
+stream[_inFlightCloseRequest] !== undefined;
+}
+function WritableStreamHasOperationMarkedInFlight(stream) {
+return stream[_inFlightWriteRequest] !== undefined ||
+stream[_inFlightCloseRequest] !== undefined;
+}
+function WritableStreamMarkCloseRequestInFlight(stream) {
+stream[_inFlightCloseRequest] = stream[_closeRequest];
+stream[_closeRequest] = undefined;
+}
+function WritableStreamMarkFirstWriteRequestInFlight(stream) {
+const writeRequest = stream[_writeRequests].shift();
+stream[_inFlightWriteRequest] = writeRequest;
+}
+function WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream) {
+if (stream[_closeRequest] !== undefined) {
+rejectPromise(stream[_closeRequest], stream[_storedError]);
+stream[_closeRequest] = undefined;
+}
+const writer = stream[_writer];
+if (writer !== undefined) {
+rejectPromise(writer[_closedPromise], stream[_storedError]);
+markPromiseAsHandled(writer[_closedPromise]);
+}
+}
+function WritableStreamUpdateBackpressure(stream, backpressure) {
+const writer = stream[_writer];
+if (writer !== undefined &&
+backpressure !== Boolean(stream[_stateAndFlags] & BACKPRESSURE_FLAG)) {
+if (backpressure) {
+writer[_readyPromise] = v8.createPromise();
+} else {
+resolvePromise(writer[_readyPromise], undefined);
+}
+}
+if (backpressure) {
+stream[_stateAndFlags] |= BACKPRESSURE_FLAG;
+} else {
+stream[_stateAndFlags] &= ~BACKPRESSURE_FLAG;
+}
+}
+function isWritableStreamErrored(stream) {
+return (stream[_stateAndFlags] & STATE_MASK) === ERRORED;
+}
+function isWritableStreamClosingOrClosed(stream) {
+return WritableStreamCloseQueuedOrInFlight(stream) ||
+(stream[_stateAndFlags] & STATE_MASK) === CLOSED;
+}
+function getWritableStreamStoredError(stream) {
+return stream[_storedError];
+}
+function isWritableStreamWritable(stream) {
+return  (stream[_stateAndFlags] & STATE_MASK) === WRITABLE;
+}
+function isWritableStreamErroring(stream) {
+return  (stream[_stateAndFlags] & STATE_MASK) === ERRORING;
+}
+function getWritableStreamController(stream) {
+return stream[_writableStreamController];
+}
+class WritableStreamDefaultWriter {
+constructor(stream) {
+if (!IsWritableStream(stream)) {
+throw new TypeError(streamErrors.illegalConstructor);
+}
+if (IsWritableStreamLocked(stream)) {
+throw new TypeError(streamErrors.illegalConstructor);
+}
+this[_ownerWritableStream] = stream;
+stream[_writer] = this;
+const state = stream[_stateAndFlags] & STATE_MASK;
+switch (state) {
+case WRITABLE: {
+if (!WritableStreamCloseQueuedOrInFlight(stream) &&
+stream[_stateAndFlags] & BACKPRESSURE_FLAG) {
+this[_readyPromise] = v8.createPromise();
+} else {
+this[_readyPromise] = Promise_resolve(undefined);
+}
+this[_closedPromise] = v8.createPromise();
+break;
+}
+case ERRORING: {
+this[_readyPromise] = Promise_reject(stream[_storedError]);
+markPromiseAsHandled(this[_readyPromise]);
+this[_closedPromise] = v8.createPromise();
+break;
+}
+case CLOSED: {
+this[_readyPromise] = Promise_resolve(undefined);
+this[_closedPromise] = Promise_resolve(undefined);
+break;
+}
+default: {
+const storedError = stream[_storedError];
+this[_readyPromise] = Promise_reject(storedError);
+markPromiseAsHandled(this[_readyPromise]);
+this[_closedPromise] = Promise_reject(storedError);
+markPromiseAsHandled(this[_closedPromise]);
+break;
+}
+}
+}
+get closed() {
+if (!IsWritableStreamDefaultWriter(this)) {
+return Promise_reject(new TypeError(streamErrors.illegalInvocation));
+}
+return this[_closedPromise];
+}
+get desiredSize() {
+if (!IsWritableStreamDefaultWriter(this)) {
+throw new TypeError(streamErrors.illegalInvocation);
+}
+if (this[_ownerWritableStream] === undefined) {
+throw createWriterLockReleasedError(verbUsedToGetTheDesiredSize);
+}
+return WritableStreamDefaultWriterGetDesiredSize(this);
+}
+get ready() {
+if (!IsWritableStreamDefaultWriter(this)) {
+return Promise_reject(new TypeError(streamErrors.illegalInvocation));
+}
+return this[_readyPromise];
+}
+abort(reason) {
+if (!IsWritableStreamDefaultWriter(this)) {
+return Promise_reject(new TypeError(streamErrors.illegalInvocation));
+}
+if (this[_ownerWritableStream] === undefined) {
+return Promise_reject(createWriterLockReleasedError(verbAborted));
+}
+return WritableStreamDefaultWriterAbort(this, reason);
+}
+close() {
+if (!IsWritableStreamDefaultWriter(this)) {
+return Promise_reject(new TypeError(streamErrors.illegalInvocation));
+}
+const stream = this[_ownerWritableStream];
+if (stream === undefined) {
+return Promise_reject(createWriterLockReleasedError(verbClosed));
+}
+if (WritableStreamCloseQueuedOrInFlight(stream)) {
+return Promise_reject(new TypeError(errCloseCloseRequestedStream));
+}
+return WritableStreamDefaultWriterClose(this);
+}
+releaseLock() {
+if (!IsWritableStreamDefaultWriter(this)) {
+throw new TypeError(streamErrors.illegalInvocation);
+}
+const stream = this[_ownerWritableStream];
+if (stream === undefined) {
+return;
+}
+WritableStreamDefaultWriterRelease(this);
+}
+write(chunk) {
+if (!IsWritableStreamDefaultWriter(this)) {
+return Promise_reject(new TypeError(streamErrors.illegalInvocation));
+}
+if (this[_ownerWritableStream] === undefined) {
+return Promise_reject(createWriterLockReleasedError(verbWrittenTo));
+}
+return WritableStreamDefaultWriterWrite(this, chunk);
+}
+}
+function IsWritableStreamDefaultWriter(x) {
+return hasOwnPropertyNoThrow(x, _ownerWritableStream);
+}
+function WritableStreamDefaultWriterAbort(writer, reason) {
+const stream = writer[_ownerWritableStream];
+return WritableStreamAbort(stream, reason);
+}
+function WritableStreamDefaultWriterClose(writer) {
+const stream = writer[_ownerWritableStream];
+const state = stream[_stateAndFlags] & STATE_MASK;
+if (state === CLOSED || state === ERRORED) {
+return Promise_reject(
+createCannotActionOnStateStreamError('close', state));
+}
+const promise = v8.createPromise();
+stream[_closeRequest] = promise;
+if ((stream[_stateAndFlags] & BACKPRESSURE_FLAG) && state === WRITABLE) {
+resolvePromise(writer[_readyPromise], undefined);
+}
+WritableStreamDefaultControllerClose(stream[_writableStreamController]);
+return promise;
+}
+function WritableStreamDefaultWriterCloseWithErrorPropagation(writer) {
+const stream = writer[_ownerWritableStream];
+const state = stream[_stateAndFlags] & STATE_MASK;
+if (WritableStreamCloseQueuedOrInFlight(stream) || state === CLOSED) {
+return Promise_resolve(undefined);
+}
+if (state === ERRORED) {
+return Promise_reject(stream[_storedError]);
+}
+return WritableStreamDefaultWriterClose(writer);
+}
+function WritableStreamDefaultWriterEnsureClosedPromiseRejected(
+writer, error) {
+if (promiseState(writer[_closedPromise]) === v8.kPROMISE_PENDING) {
+rejectPromise(writer[_closedPromise], error);
+} else {
+writer[_closedPromise] = Promise_reject(error);
+}
+markPromiseAsHandled(writer[_closedPromise]);
+}
+function WritableStreamDefaultWriterEnsureReadyPromiseRejected(
+writer, error) {
+if (promiseState(writer[_readyPromise]) === v8.kPROMISE_PENDING) {
+rejectPromise(writer[_readyPromise], error);
+} else {
+writer[_readyPromise] = Promise_reject(error);
+}
+markPromiseAsHandled(writer[_readyPromise]);
+}
+function WritableStreamDefaultWriterGetDesiredSize(writer) {
+const stream = writer[_ownerWritableStream];
+const state = stream[_stateAndFlags] & STATE_MASK;
+if (state === ERRORED || state === ERRORING) {
+return null;
+}
+if (state === CLOSED) {
+return 0;
+}
+return WritableStreamDefaultControllerGetDesiredSize(
+stream[_writableStreamController]);
+}
+function WritableStreamDefaultWriterRelease(writer) {
+const stream = writer[_ownerWritableStream];
+const releasedError = new TypeError(errReleasedWriterClosedPromise);
+WritableStreamDefaultWriterEnsureReadyPromiseRejected(
+writer, releasedError);
+WritableStreamDefaultWriterEnsureClosedPromiseRejected(
+writer, releasedError);
+stream[_writer] = undefined;
+writer[_ownerWritableStream] = undefined;
+}
+function WritableStreamDefaultWriterWrite(writer, chunk) {
+const stream = writer[_ownerWritableStream];
+const controller = stream[_writableStreamController];
+const chunkSize =
+WritableStreamDefaultControllerGetChunkSize(controller, chunk);
+if (stream !== writer[_ownerWritableStream]) {
+return Promise_reject(createWriterLockReleasedError(verbWrittenTo));
+}
+const state = stream[_stateAndFlags] & STATE_MASK;
+if (state === ERRORED) {
+return Promise_reject(stream[_storedError]);
+}
+if (WritableStreamCloseQueuedOrInFlight(stream)) {
+return Promise_reject(new TypeError(
+templateErrorCannotActionOnStateStream('write to', 'closing')));
+}
+if (state === CLOSED) {
+return Promise_reject(
+createCannotActionOnStateStreamError('write to', CLOSED));
+}
+if (state === ERRORING) {
+return Promise_reject(stream[_storedError]);
+}
+const promise = WritableStreamAddWriteRequest(stream);
+WritableStreamDefaultControllerWrite(controller, chunk, chunkSize);
+return promise;
+}
+function getWritableStreamDefaultWriterClosedPromise(writer) {
+return writer[_closedPromise];
+}
+function getWritableStreamDefaultWriterReadyPromise(writer) {
+return writer[_readyPromise];
+}
+class WritableStreamDefaultController {
+constructor(stream, underlyingSink, size, highWaterMark) {
+if (!IsWritableStream(stream)) {
+throw new TypeError(streamErrors.illegalConstructor);
+}
+if (stream[_writableStreamController] !== undefined) {
+throw new TypeError(streamErrors.illegalConstructor);
+}
+this[_controlledWritableStream] = stream;
+this[_underlyingSink] = underlyingSink;
+this[_queue] = undefined;
+this[_queueTotalSize] = undefined;
+ResetQueue(this);
+this[_started] = false;
+const normalizedStrategy =
+ValidateAndNormalizeQueuingStrategy(size, highWaterMark);
+this[_strategySize] = normalizedStrategy.size;
+this[_strategyHWM] = normalizedStrategy.highWaterMark;
+const backpressure = WritableStreamDefaultControllerGetBackpressure(this);
+WritableStreamUpdateBackpressure(stream, backpressure);
+}
+error(e) {
+if (!IsWritableStreamDefaultController(this)) {
+throw new TypeError(streamErrors.illegalInvocation);
+}
+const state =
+this[_controlledWritableStream][_stateAndFlags] & STATE_MASK;
+if (state !== WRITABLE) {
+return;
+}
+WritableStreamDefaultControllerError(this, e);
+}
+}
+function WritableStreamDefaultControllerAbortSteps(controller, reason) {
+return PromiseCallOrNoop1(controller[_underlyingSink], 'abort', reason,
+'underlyingSink.abort');
+}
+function WritableStreamDefaultControllerErrorSteps(controller) {
+ResetQueue(controller);
+}
+function WritableStreamDefaultControllerStartSteps(controller) {
+const startResult = CallOrNoop1(controller[_underlyingSink], 'start',
+controller, 'underlyingSink.start');
+const stream = controller[_controlledWritableStream];
+const startPromise = Promise_resolve(startResult);
+thenPromise(
+startPromise,
+() => {
+controller[_started] = true;
+WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);
+},
+r => {
+controller[_started] = true;
+WritableStreamDealWithRejection(stream, r);
+});
+}
+function IsWritableStreamDefaultController(x) {
+return hasOwnPropertyNoThrow(x, _underlyingSink);
+}
+function WritableStreamDefaultControllerClose(controller) {
+EnqueueValueWithSize(controller, 'close', 0);
+WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);
+}
+function WritableStreamDefaultControllerGetChunkSize(controller, chunk) {
+const strategySize = controller[_strategySize];
+if (strategySize === undefined) {
+return 1;
+}
+let value;
+try {
+value = Function_call(strategySize, undefined, chunk);
+} catch (e) {
+WritableStreamDefaultControllerErrorIfNeeded(controller, e);
+return 1;
+}
+return value;
+}
+function WritableStreamDefaultControllerGetDesiredSize(controller) {
+return controller[_strategyHWM] - controller[_queueTotalSize];
+}
+function WritableStreamDefaultControllerWrite(controller, chunk, chunkSize) {
+const writeRecord = {chunk};
+try {
+EnqueueValueWithSize(controller, writeRecord, chunkSize);
+} catch (e) {
+WritableStreamDefaultControllerErrorIfNeeded(controller, e);
+return;
+}
+const stream = controller[_controlledWritableStream];
+if (!WritableStreamCloseQueuedOrInFlight(stream) &&
+(stream[_stateAndFlags] & STATE_MASK) === WRITABLE) {
+const backpressure =
+WritableStreamDefaultControllerGetBackpressure(controller);
+WritableStreamUpdateBackpressure(stream, backpressure);
+}
+WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);
+}
+function WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller) {
+const stream = controller[_controlledWritableStream];
+if (!controller[_started]) {
+return;
+}
+if (stream[_inFlightWriteRequest] !== undefined) {
+return;
+}
+const state = stream[_stateAndFlags] & STATE_MASK;
+if (state === CLOSED || state === ERRORED) {
+return;
+}
+if (state === ERRORING) {
+WritableStreamFinishErroring(stream);
+return;
+}
+if (controller[_queue].length === 0) {
+return;
+}
+const writeRecord = PeekQueueValue(controller);
+if (writeRecord === 'close') {
+WritableStreamDefaultControllerProcessClose(controller);
+} else {
+WritableStreamDefaultControllerProcessWrite(
+controller, writeRecord.chunk);
+}
+}
+function WritableStreamDefaultControllerErrorIfNeeded(controller, error) {
+const state =
+controller[_controlledWritableStream][_stateAndFlags] & STATE_MASK;
+if (state === WRITABLE) {
+WritableStreamDefaultControllerError(controller, error);
+}
+}
+function WritableStreamDefaultControllerProcessClose(controller) {
+const stream = controller[_controlledWritableStream];
+WritableStreamMarkCloseRequestInFlight(stream);
+DequeueValue(controller);
+const sinkClosePromise =
+PromiseCallOrNoop0(controller[_underlyingSink], 'close',
+'underlyingSink.close');
+thenPromise(
+sinkClosePromise, () => WritableStreamFinishInFlightClose(stream),
+reason => WritableStreamFinishInFlightCloseWithError(stream, reason));
+}
+function WritableStreamDefaultControllerProcessWrite(controller, chunk) {
+const stream = controller[_controlledWritableStream];
+WritableStreamMarkFirstWriteRequestInFlight(stream);
+const sinkWritePromise = PromiseCallOrNoop2(
+controller[_underlyingSink], 'write', chunk, controller,
+'underlyingSink.write');
+thenPromise(
+sinkWritePromise,
+() => {
+WritableStreamFinishInFlightWrite(stream);
+const state = stream[_stateAndFlags] & STATE_MASK;
+DequeueValue(controller);
+if (!WritableStreamCloseQueuedOrInFlight(stream) &&
+state === WRITABLE) {
+const backpressure =
+WritableStreamDefaultControllerGetBackpressure(controller);
+WritableStreamUpdateBackpressure(stream, backpressure);
+}
+WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);
+},
+reason => {
+WritableStreamFinishInFlightWriteWithError(stream, reason);
+});
+}
+function WritableStreamDefaultControllerGetBackpressure(controller) {
+const desiredSize =
+WritableStreamDefaultControllerGetDesiredSize(controller);
+return desiredSize <= 0;
+}
+function WritableStreamDefaultControllerError(controller, error) {
+const stream = controller[_controlledWritableStream];
+WritableStreamStartErroring(stream, error);
+}
+defineProperty(global, 'WritableStream', {
+value: WritableStream,
+enumerable: false,
+configurable: true,
+writable: true
+});
+binding.AcquireWritableStreamDefaultWriter =
+AcquireWritableStreamDefaultWriter;
+binding.IsWritableStream = IsWritableStream;
+binding.isWritableStreamClosingOrClosed = isWritableStreamClosingOrClosed;
+binding.isWritableStreamErrored = isWritableStreamErrored;
+binding.IsWritableStreamLocked = IsWritableStreamLocked;
+binding.WritableStreamAbort = WritableStreamAbort;
+binding.WritableStreamDefaultWriterCloseWithErrorPropagation =
+WritableStreamDefaultWriterCloseWithErrorPropagation;
+binding.getWritableStreamDefaultWriterClosedPromise =
+getWritableStreamDefaultWriterClosedPromise;
+binding.WritableStreamDefaultWriterGetDesiredSize =
+WritableStreamDefaultWriterGetDesiredSize;
+binding.getWritableStreamDefaultWriterReadyPromise =
+getWritableStreamDefaultWriterReadyPromise;
+binding.WritableStreamDefaultWriterRelease =
+WritableStreamDefaultWriterRelease;
+binding.WritableStreamDefaultWriterWrite = WritableStreamDefaultWriterWrite;
+binding.getWritableStreamStoredError = getWritableStreamStoredError;
+binding.WritableStream = WritableStream;
+binding.WritableStreamDefaultControllerErrorIfNeeded =
+WritableStreamDefaultControllerErrorIfNeeded;
+binding.isWritableStreamWritable = isWritableStreamWritable;
+binding.isWritableStreamErroring = isWritableStreamErroring;
+binding.getWritableStreamController = getWritableStreamController;
+});
+
+(function(global, binding, v8) {
+'use strict';
+const _backpressure = v8.createPrivateSymbol('[[backpressure]]');
+const _backpressureChangePromise =
+v8.createPrivateSymbol('[[backpressureChangePromise]]');
+const _readable = v8.createPrivateSymbol('[[readable]]');
+const _transformer = v8.createPrivateSymbol('[[transformer]]');
+const _transformStreamController =
+v8.createPrivateSymbol('[[transformStreamController]]');
+const _writable = v8.createPrivateSymbol('[[writable]]');
+const _controlledTransformStream =
+v8.createPrivateSymbol('[[controlledTransformStream]]');
+const _ownerTransformStream =
+v8.createPrivateSymbol('[[ownerTransformStream]]');
+const _startPromise = v8.createPrivateSymbol('[[startPromise]]');
+const defineProperty = global.Object.defineProperty;
+const Function_call = v8.uncurryThis(global.Function.prototype.call);
+const TypeError = global.TypeError;
+const RangeError = global.RangeError;
+const Promise = global.Promise;
+const thenPromise = v8.uncurryThis(Promise.prototype.then);
+const Promise_resolve = Promise.resolve.bind(Promise);
+const Promise_reject = Promise.reject.bind(Promise);
+const {
+hasOwnPropertyNoThrow,
+resolvePromise,
+CallOrNoop1,
+PromiseCallOrNoop1
+} = binding.streamOperations;
+const streamErrors = binding.streamErrors;
+const errWritableStreamAborted = 'The writable stream has been aborted';
+const errStreamTerminated = 'The transform stream has been terminated';
+const templateErrorIsNotAFunction = f => `${f} is not a function`;
+class TransformStream {
+constructor(
+transformer = {}, writableStrategy = undefined,
+{size, highWaterMark = 0} = {}) {
+this[_transformer] = transformer;
+const readableType = transformer.readableType;
+if (readableType !== undefined) {
+throw new RangeError(streamErrors.invalidType);
+}
+const writableType = transformer.writableType;
+if (writableType !== undefined) {
+throw new RangeError(streamErrors.invalidType);
+}
+this[_transformStreamController] = undefined;
+const controller = new TransformStreamDefaultController(this);
+this[_transformStreamController] = controller;
+const startPromise = v8.createPromise();
+const source = new TransformStreamDefaultSource(this, startPromise);
+const readableStrategy = {size, highWaterMark};
+this[_readable] = new binding.ReadableStream(source, readableStrategy);
+const sink = new TransformStreamDefaultSink(this, startPromise);
+this[_writable] = new binding.WritableStream(sink, writableStrategy);
+TransformStreamSetBackpressure(this, true);
+const startResult = CallOrNoop1(transformer, 'start', controller,
+'transformer.start');
+resolvePromise(startPromise, startResult);
+}
+get readable() {
+if (!IsTransformStream(this)) {
+throw new TypeError(streamErrors.illegalInvocation);
+}
+return this[_readable];
+}
+get writable() {
+if (!IsTransformStream(this)) {
+throw new TypeError(streamErrors.illegalInvocation);
+}
+return this[_writable];
+}
+}
+function IsTransformStream(x) {
+return hasOwnPropertyNoThrow(x, _transformStreamController);
+}
+function TransformStreamError(stream, e) {
+const readable = stream[_readable];
+if (binding.IsReadableStreamReadable(readable)) {
+binding.ReadableStreamDefaultControllerError(
+binding.getReadableStreamController(readable), e);
+}
+TransformStreamErrorWritableAndUnblockWrite(stream, e);
+}
+function TransformStreamErrorWritableAndUnblockWrite(stream, e) {
+binding.WritableStreamDefaultControllerErrorIfNeeded(
+binding.getWritableStreamController(stream[_writable]), e);
+if (stream[_backpressure]) {
+TransformStreamSetBackpressure(stream, false);
+}
+}
+function TransformStreamSetBackpressure(stream, backpressure) {
+if (stream[_backpressureChangePromise] !== undefined) {
+resolvePromise(stream[_backpressureChangePromise], undefined);
+}
+stream[_backpressureChangePromise] = v8.createPromise();
+stream[_backpressure] = backpressure;
+}
+class TransformStreamDefaultController {
+constructor(stream) {
+if (!IsTransformStream(stream)) {
+throw new TypeError(streamErrors.illegalConstructor);
+}
+if (stream[_transformStreamController] !== undefined) {
+throw new TypeError(streamErrors.illegalConstructor);
+}
+this[_controlledTransformStream] = stream;
+}
+get desiredSize() {
+if (!IsTransformStreamDefaultController(this)) {
+throw new TypeError(streamErrors.illegalInvocation);
+}
+const readableController = binding.getReadableStreamController(
+this[_controlledTransformStream][_readable]);
+return binding.ReadableStreamDefaultControllerGetDesiredSize(
+readableController);
+}
+enqueue(chunk) {
+if (!IsTransformStreamDefaultController(this)) {
+throw new TypeError(streamErrors.illegalInvocation);
+}
+TransformStreamDefaultControllerEnqueue(this, chunk);
+}
+error(reason) {
+if (!IsTransformStreamDefaultController(this)) {
+throw new TypeError(streamErrors.illegalInvocation);
+}
+TransformStreamDefaultControllerError(this, reason);
+}
+terminate() {
+if (!IsTransformStreamDefaultController(this)) {
+throw new TypeError(streamErrors.illegalInvocation);
+}
+TransformStreamDefaultControllerTerminate(this);
+}
+}
+function IsTransformStreamDefaultController(x) {
+return hasOwnPropertyNoThrow(x, _controlledTransformStream);
+}
+function TransformStreamDefaultControllerEnqueue(controller, chunk) {
+const stream = controller[_controlledTransformStream];
+const readableController =
+binding.getReadableStreamController(stream[_readable]);
+if (!binding.ReadableStreamDefaultControllerCanCloseOrEnqueue(
+readableController)) {
+throw binding.getReadableStreamEnqueueError(stream[_readable]);
+}
+try {
+binding.ReadableStreamDefaultControllerEnqueue(readableController, chunk);
+} catch (e) {
+TransformStreamErrorWritableAndUnblockWrite(stream, e);
+throw binding.getReadableStreamStoredError(stream[_readable]);
+}
+const backpressure = binding.ReadableStreamDefaultControllerHasBackpressure(
+readableController);
+if (backpressure !== stream[_backpressure]) {
+TransformStreamSetBackpressure(stream, true);
+}
+}
+function TransformStreamDefaultControllerError(controller, e) {
+TransformStreamError(controller[_controlledTransformStream], e);
+}
+function TransformStreamDefaultControllerTerminate(controller) {
+const stream = controller[_controlledTransformStream];
+const readableController =
+binding.getReadableStreamController(stream[_readable]);
+if (binding.ReadableStreamDefaultControllerCanCloseOrEnqueue(
+readableController)) {
+binding.ReadableStreamDefaultControllerClose(readableController);
+}
+const error = new TypeError(errStreamTerminated);
+TransformStreamErrorWritableAndUnblockWrite(stream, error);
+}
+class TransformStreamDefaultSink {
+constructor(stream, startPromise) {
+this[_ownerTransformStream] = stream;
+this[_startPromise] = startPromise;
+}
+start() {
+const startPromise = this[_startPromise];
+this[_startPromise] = undefined;
+return startPromise;
+}
+write(chunk) {
+const stream = this[_ownerTransformStream];
+if (stream[_backpressure]) {
+const backpressureChangePromise = stream[_backpressureChangePromise];
+return thenPromise(backpressureChangePromise, () => {
+const writable = stream[_writable];
+if (binding.isWritableStreamErroring(writable)) {
+throw binding.getWritableStreamStoredError(writable);
+}
+return TransformStreamDefaultSinkTransform(this, chunk);
+});
+}
+return TransformStreamDefaultSinkTransform(this, chunk);
+}
+abort() {
+const e = new TypeError(errWritableStreamAborted);
+TransformStreamError(this[_ownerTransformStream], e);
+}
+close() {
+const stream = this[_ownerTransformStream];
+const readable = stream[_readable];
+const flushPromise = PromiseCallOrNoop1(
+stream[_transformer], 'flush', stream[_transformStreamController],
+'transformer.flush');
+return thenPromise(
+flushPromise,
+() => {
+if (binding.IsReadableStreamErrored(readable)) {
+throw binding.getReadableStreamStoredError(readable);
+}
+const readableController =
+binding.getReadableStreamController(readable);
+if (binding.ReadableStreamDefaultControllerCanCloseOrEnqueue(
+readableController)) {
+binding.ReadableStreamDefaultControllerClose(readableController);
+}
+},
+r => {
+TransformStreamError(stream, r);
+throw binding.getReadableStreamStoredError(readable);
+});
+}
+}
+function TransformStreamDefaultSinkInvokeTransform(stream, chunk) {
+const controller = stream[_transformStreamController];
+const transformer = stream[_transformer];
+const method = transformer.transform;
+if (method === undefined) {
+TransformStreamDefaultControllerEnqueue(controller, chunk);
+return undefined;
+}
+if (typeof method !== 'function') {
+throw new TypeError(templateErrorIsNotAFunction('transform'));
+}
+return Function_call(method, transformer, chunk, controller);
+}
+function TransformStreamDefaultSinkTransform(sink, chunk) {
+const stream = sink[_ownerTransformStream];
+let transformPromise;
+try {
+transformPromise = Promise_resolve(
+TransformStreamDefaultSinkInvokeTransform(stream, chunk));
+} catch (e) {
+transformPromise = Promise_reject(e);
+}
+return thenPromise(transformPromise, undefined, e => {
+TransformStreamError(stream, e);
+throw e;
+});
+}
+class TransformStreamDefaultSource {
+constructor(stream, startPromise) {
+this[_ownerTransformStream] = stream;
+this[_startPromise] = startPromise;
+}
+start() {
+const startPromise = this[_startPromise];
+this[_startPromise] = undefined;
+return startPromise;
+}
+pull() {
+const stream = this[_ownerTransformStream];
+TransformStreamSetBackpressure(stream, false);
+return stream[_backpressureChangePromise];
+}
+cancel(reason) {
+TransformStreamErrorWritableAndUnblockWrite(
+this[_ownerTransformStream], reason);
+}
+}
+defineProperty(global, 'TransformStream', {
+value: TransformStream,
+enumerable: false,
+configurable: true,
+writable: true
+});
+});