/* Human homepage: author: ' */ var Human=(()=>{var kc=Object.defineProperty;var J9=Object.getOwnPropertyDescriptor;var Q9=Object.getOwnPropertyNames;var eE=Object.prototype.hasOwnProperty;var tE=(e,t,r)=>t in e?kc(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var rE=e=>kc(e,"__esModule",{value:!0});var Qd=(e,t)=>{for(var r in t)kc(e,r,{get:t[r],enumerable:!0})},aE=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Q9(t))!eE.call(e,n)&&(r||n!=="default")&&kc(e,n,{get:()=>t[n],enumerable:!(a=J9(t,n))||a.enumerable});return e};var nE=(e=>(t,r)=>e&&e.get(t)||(r=aE(rE({}),t,1),e&&e.set(t,r),r))(typeof WeakMap!="undefined"?new WeakMap:0);var fe=(e,t,r)=>(tE(e,typeof t!="symbol"?t+"":t,r),r),L5=(e,t,r)=>{if(!t.has(e))throw TypeError("Cannot "+r)};var ep=(e,t,r)=>(L5(e,t,"read from private field"),r?r.call(e):t.get(e)),tp=(e,t,r)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,r)},rp=(e,t,r,a)=>(L5(e,t,"write to private field"),a?a.call(e,r):t.set(e,r),r);var Z2e={};Qd(Z2e,{Human:()=>r9,default:()=>r9,defaults:()=>xs,env:()=>ce});function se(...e){let t=new Date,r=`${t.getHours().toString().padStart(2,"0")}:${t.getMinutes().toString().padStart(2,"0")}:${t.getSeconds().toString().padStart(2,"0")}.${t.getMilliseconds().toString().padStart(3,"0")}`;e&&console.log(r,"Human:",...e)}function B5(e,t){let r=e.endsWith("/")?"":"/",n=t.startsWith(".")||t.startsWith("/")||t.startsWith("http:")||t.startsWith("https:")||t.startsWith("file:")?`${t}`:`${e}${r}${t}`;if(!n.toLocaleLowerCase().includes(".json"))throw new Error(`modelpath error: expecting json file: ${n}`);return n}var oe=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function m1(e,t,r="config",a=[]){for(let n of Object.keys(t))if(typeof t[n]=="object")m1(e[n],t[n],n,a);else{let s=e&&typeof e[n]!="undefined";s||a.push({reason:"unknown property",where:`${r}.${n} = ${t[n]}`});let i=e&&typeof e[n]==typeof t[n];s&&!i&&a.push({reason:"property type mismatch",where:`${r}.${n} = ${t[n]}`,expected:typeof e[n]})}return t.debug&&r==="config"&&a.length>0&&se("invalid configuration",a),a}function vr(...e){let t=r=>r&&typeof r=="object";return e.reduce((r,a)=>(Object.keys(a||{}).forEach(n=>{let s=r[n],i=a[n];Array.isArray(s)&&Array.isArray(i)?r[n]=s.concat(...i):t(s)&&t(i)?r[n]=vr(s,i):r[n]=i}),r),{})}var xs={backend:"",modelBasePath:"",cacheModels:!0,wasmPath:"",wasmPlatformFetch:!1,debug:!0,async:!0,warmup:"full",cacheSensitivity:.7,skipAllowed:!1,deallocate:!1,filter:{enabled:!0,equalization:!1,width:0,height:0,flip:!1,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"blazeface.json",rotation:!0,maxDetected:1,skipFrames:99,skipTime:2500,minConfidence:.2,iouThreshold:.1,mask:!1,return:!1},mesh:{enabled:!0,modelPath:"facemesh.json"},iris:{enabled:!0,modelPath:"iris.json"},emotion:{enabled:!0,minConfidence:.1,skipFrames:99,skipTime:1500,modelPath:"emotion.json"},description:{enabled:!0,modelPath:"faceres.json",skipFrames:99,skipTime:3e3,minConfidence:.1},antispoof:{enabled:!1,skipFrames:99,skipTime:4e3,modelPath:"antispoof.json"},liveness:{enabled:!1,skipFrames:99,skipTime:4e3,modelPath:"liveness.json"}},body:{enabled:!0,modelPath:"movenet-lightning.json",maxDetected:-1,minConfidence:.3,skipFrames:1,skipTime:200},hand:{enabled:!0,rotation:!0,skipFrames:99,skipTime:1e3,minConfidence:.5,iouThreshold:.2,maxDetected:-1,landmarks:!0,detector:{modelPath:"handtrack.json"},skeleton:{modelPath:"handlandmark-full.json"}},object:{enabled:!1,modelPath:"mb3-centernet.json",minConfidence:.2,iouThreshold:.4,maxDetected:10,skipFrames:99,skipTime:2e3},segmentation:{enabled:!1,modelPath:"selfie.json",blur:8}};var We={};Qd(We,{Abs:()=>Fo,Acos:()=>Tu,Acosh:()=>Cu,AdadeltaOptimizer:()=>xm,AdagradOptimizer:()=>bm,AdamOptimizer:()=>vm,AdamaxOptimizer:()=>wm,Add:()=>qn,AddN:()=>js,All:()=>Nu,Any:()=>Eu,ArgMax:()=>Hs,ArgMin:()=>Ru,Asin:()=>Fu,Asinh:()=>Mu,Atan:()=>$u,Atan2:()=>Ou,Atanh:()=>Pu,AvgPool:()=>qs,AvgPool3D:()=>_p,AvgPool3DGrad:()=>Cf,AvgPoolGrad:()=>Tf,BackendWasm:()=>uT,BatchMatMul:()=>Ks,BatchToSpaceND:()=>Mo,Bincount:()=>Nf,BroadcastArgs:()=>Ef,BroadcastTo:()=>Ov,Callback:()=>u4,CallbackList:()=>u7,Cast:()=>Xs,Ceil:()=>Zs,ClipByValue:()=>Kn,Complex:()=>Lp,ComplexAbs:()=>Bp,Concat:()=>$o,Conv2D:()=>Ys,Conv2DBackpropFilter:()=>Rf,Conv2DBackpropInput:()=>Js,Conv3D:()=>Wp,Conv3DBackpropFilterV2:()=>Ff,Conv3DBackpropInputV2:()=>Mf,Cos:()=>Qs,Cosh:()=>ei,CropAndResize:()=>Oo,Cumsum:()=>Po,CustomCallback:()=>p7,DataStorage:()=>Dp,DenseBincount:()=>$f,DepthToSpace:()=>zo,DepthwiseConv2dNative:()=>ti,DepthwiseConv2dNativeBackpropFilter:()=>Pf,DepthwiseConv2dNativeBackpropInput:()=>Of,Diag:()=>zf,Dilation2D:()=>Vp,Dilation2DBackpropFilter:()=>Zc,Dilation2DBackpropInput:()=>Xc,ENV:()=>hn,EarlyStopping:()=>d4,Einsum:()=>Up,Elu:()=>ai,EluGrad:()=>Df,Environment:()=>$v,Equal:()=>Do,Erf:()=>zu,Exp:()=>ni,ExpandDims:()=>_o,Expm1:()=>Lo,FFT:()=>_f,Fill:()=>Du,FlipLeftRight:()=>Bo,Floor:()=>si,FloorDiv:()=>ii,FromPixels:()=>Ip,FusedBatchNorm:()=>oi,FusedConv2D:()=>Fs,FusedDepthwiseConv2D:()=>Ms,GPGPUContext:()=>uu,GatherNd:()=>Vo,GatherV2:()=>Wo,GraphModel:()=>qm,Greater:()=>Uo,GreaterEqual:()=>li,History:()=>d7,IFFT:()=>Lf,Identity:()=>ui,Imag:()=>Gp,InputSpec:()=>qt,IsFinite:()=>_u,IsInf:()=>Lu,IsNan:()=>Bu,KernelBackend:()=>Iu,LRN:()=>Hp,LRNGrad:()=>Wf,LayerVariable:()=>s7,LayersModel:()=>jn,LeakyRelu:()=>di,Less:()=>Go,LessEqual:()=>jo,LinSpace:()=>Bf,Log:()=>pi,Log1p:()=>Wu,LogSoftmax:()=>zv,LogicalAnd:()=>Ho,LogicalNot:()=>Vu,LogicalOr:()=>jp,MathBackendCPU:()=>fx,MathBackendWebGL:()=>Nh,Max:()=>hi,MaxPool:()=>fi,MaxPool3D:()=>qp,MaxPool3DGrad:()=>Uf,MaxPoolGrad:()=>Vf,MaxPoolWithArgmax:()=>Gf,Maximum:()=>ci,Mean:()=>mi,Min:()=>gi,Minimum:()=>yi,MirrorPad:()=>Ai,Mod:()=>Uu,MomentumOptimizer:()=>km,Multinomial:()=>jf,Multiply:()=>xi,Neg:()=>qo,NonMaxSuppressionV3:()=>Xo,NonMaxSuppressionV4:()=>Gu,NonMaxSuppressionV5:()=>Zo,NotEqual:()=>Ko,OP_SCOPE_SUFFIX:()=>Yv,OneHot:()=>Jo,OnesLike:()=>Yo,Optimizer:()=>Jn,OptimizerConstructors:()=>vs,Pack:()=>Qo,PadV2:()=>bi,Pool:()=>XE,Pow:()=>vi,Prelu:()=>wi,Prod:()=>el,RMSPropOptimizer:()=>Im,RNN:()=>Qn,Range:()=>ju,Rank:()=>Wv,Real:()=>Kp,RealDiv:()=>ri,Reciprocal:()=>Hu,Reduction:()=>_k,Relu:()=>ki,Relu6:()=>Si,Reshape:()=>tl,ResizeBilinear:()=>Ii,ResizeBilinearGrad:()=>qf,ResizeNearestNeighbor:()=>qu,ResizeNearestNeighborGrad:()=>Hf,Reverse:()=>rl,RotateWithOffset:()=>gl,Round:()=>al,Rsqrt:()=>Ti,SGDOptimizer:()=>ch,ScatterNd:()=>nl,Select:()=>sl,Selu:()=>Ku,Sequential:()=>_m,Sigmoid:()=>Ni,Sign:()=>Xu,Sin:()=>Ci,Sinh:()=>ol,Slice:()=>il,Softmax:()=>Fi,Softplus:()=>Zu,SpaceToBatchND:()=>ll,SparseFillEmptyRows:()=>Xp,SparseReshape:()=>Yu,SparseSegmentMean:()=>Zp,SparseSegmentSum:()=>Yp,SparseToDense:()=>Jp,SplitV:()=>ul,Sqrt:()=>Ei,Square:()=>Ju,SquaredDifference:()=>Mi,Step:()=>zi,StridedSlice:()=>dl,StringNGrams:()=>Qp,StringSplit:()=>Kf,StringToHashBucketFast:()=>Xf,Sub:()=>$i,Sum:()=>Ri,SymbolicTensor:()=>tn,Tan:()=>pl,Tanh:()=>Pi,Tensor:()=>et,TensorBuffer:()=>tr,Tile:()=>Xn,TopK:()=>hl,Transform:()=>cl,Transpose:()=>Oi,Unique:()=>Zf,Unpack:()=>fl,UnsortedSegmentSum:()=>eh,Variable:()=>Cp,ZerosLike:()=>ml,_FusedMatMul:()=>Rs,abs:()=>Qt,acos:()=>Rw,acosh:()=>Fw,add:()=>ue,addN:()=>Jf,all:()=>t2,any:()=>rf,argMax:()=>Ta,argMin:()=>Mw,asin:()=>$w,asinh:()=>Pw,atan:()=>Ow,atan2:()=>zw,atanh:()=>Dw,avgPool:()=>Qf,avgPool3d:()=>a2,backend:()=>cn,backend_util:()=>N,basicLSTMCell:()=>zM,batchNorm:()=>cu,batchNorm2d:()=>Ww,batchNorm3d:()=>Vw,batchNorm4d:()=>Uw,batchToSpaceND:()=>em,bincount:()=>n2,booleanMaskAsync:()=>KO,broadcastArgs:()=>Gw,broadcastTo:()=>xp,broadcast_util:()=>yl,browser:()=>$a,buffer:()=>Le,callbacks:()=>vG,cast:()=>me,ceil:()=>jw,clipByValue:()=>pa,clone:()=>Pr,complex:()=>$s,concat:()=>kt,concat1d:()=>Hw,concat2d:()=>ed,concat3d:()=>qw,concat4d:()=>Kw,constraints:()=>Hk,conv1d:()=>s2,conv2d:()=>Os,conv2dTranspose:()=>o2,conv3d:()=>l2,conv3dTranspose:()=>Zw,copyRegisteredKernels:()=>QE,cos:()=>tm,cosh:()=>u2,cosineWindow:()=>$2,cumsum:()=>d2,customGrad:()=>Nn,data:()=>O4,denseBincount:()=>Yw,deprecationWarn:()=>Jy,depthToSpace:()=>Jw,depthwiseConv2d:()=>lh,deregisterOp:()=>IG,device_util:()=>nh,diag:()=>h$,dilation2d:()=>Qw,disableDeprecationWarnings:()=>JF,dispose:()=>re,disposeVariables:()=>QF,div:()=>pe,divNoNan:()=>ek,dot:()=>x$,dropout:()=>Ek,einsum:()=>tk,elu:()=>uh,enableDebugMode:()=>YF,enableProdMode:()=>Yy,enclosingPowerOfTwo:()=>Rk,engine:()=>kr,env:()=>Y,equal:()=>Ca,erf:()=>rk,exp:()=>Na,expandDims:()=>Ht,expm1:()=>ak,eye:()=>p2,fft:()=>hm,fill:()=>td,findBackend:()=>e2,findBackendFactory:()=>aM,floor:()=>dh,floorDiv:()=>ih,forceHalfFloat:()=>r8,fused:()=>_s,gather:()=>fu,gatherND:()=>Nk,gather_util:()=>Gy,getBackend:()=>ca,getGradient:()=>M1,getKernel:()=>Yc,getKernelsForBackend:()=>Tn,getThreadsCount:()=>gye,gpgpu_util:()=>$I,grad:()=>G$,grads:()=>j$,greater:()=>fa,greaterEqual:()=>xl,ifft:()=>Fp,imag:()=>rm,image:()=>Ie,inTopKAsync:()=>sz,initializers:()=>Zk,input:()=>S7,io:()=>Ir,irfft:()=>N2,isFinite:()=>P$,isInf:()=>z$,isNaN:()=>nk,keep:()=>dr,kernel_impls:()=>Ha,layers:()=>a7,leakyRelu:()=>am,less:()=>h2,lessEqual:()=>bl,linalg:()=>Lk,linspace:()=>sk,loadGraphModel:()=>Cj,loadLayersModel:()=>MV,localResponseNormalization:()=>ik,log:()=>Ea,log1p:()=>nm,logSigmoid:()=>Y$,logSoftmax:()=>c2,logSumExp:()=>pk,logicalAnd:()=>ln,logicalNot:()=>im,logicalOr:()=>g2,logicalXor:()=>uP,losses:()=>UD,matMul:()=>Ke,math:()=>pw,max:()=>hr,maxPool:()=>om,maxPool3d:()=>y2,maxPoolWithArgmax:()=>hk,maximum:()=>Zn,mean:()=>Wt,memory:()=>tf,meshgrid:()=>mP,metrics:()=>i4,min:()=>zs,minimum:()=>ph,mirrorPad:()=>ck,mod:()=>ad,model:()=>RV,models:()=>o4,moments:()=>lm,movingAverage:()=>YO,mul:()=>L,multiRNNCell:()=>kP,multinomial:()=>fk,neg:()=>zt,nextFrame:()=>Bk,norm:()=>F2,notEqual:()=>mu,oneHot:()=>Ep,ones:()=>da,onesLike:()=>Ra,op:()=>V,outerProduct:()=>NP,pad:()=>ja,pad1d:()=>FP,pad2d:()=>$P,pad3d:()=>OP,pad4d:()=>DP,pool:()=>VP,pow:()=>Ds,prelu:()=>dm,print:()=>ow,prod:()=>A2,profile:()=>eM,rand:()=>qP,randomGamma:()=>YP,randomNormal:()=>mk,randomUniform:()=>nd,range:()=>gu,ready:()=>Qu,real:()=>Rp,reciprocal:()=>gk,registerBackend:()=>Al,registerCallbackConstructor:()=>$V,registerGradient:()=>Dv,registerKernel:()=>Ga,registerOp:()=>kG,regularizers:()=>l4,relu:()=>Fn,relu6:()=>v2,removeBackend:()=>rM,reshape:()=>U,reverse:()=>Fa,reverse1d:()=>iO,reverse2d:()=>lO,reverse3d:()=>dO,reverse4d:()=>hO,rfft:()=>cm,round:()=>w2,rsqrt:()=>k2,scalar:()=>Se,scatterND:()=>Ck,scatter_util:()=>jy,selu:()=>I2,separableConv2d:()=>yk,sequential:()=>FV,serialization:()=>de,setBackend:()=>Qy,setPlatform:()=>nM,setThreadsCount:()=>mye,setWasmPath:()=>fye,setWasmPaths:()=>Xx,setWebGLContext:()=>Zm,setdiff1dAsync:()=>Ak,shared:()=>Km,sigmoid:()=>Sr,sign:()=>xk,signal:()=>VD,sin:()=>S2,sinh:()=>T2,slice:()=>Oe,slice1d:()=>pm,slice2d:()=>C2,slice3d:()=>vl,slice4d:()=>wo,slice_util:()=>Ot,softmax:()=>sd,softplus:()=>rd,spaceToBatchND:()=>um,sparse:()=>up,sparseToDense:()=>M2,spectral:()=>WD,split:()=>Kt,sqrt:()=>Tr,square:()=>At,squaredDifference:()=>E2,squeeze:()=>Ye,stack:()=>nr,step:()=>hh,stridedSlice:()=>bk,string:()=>Dc,sub:()=>he,sum:()=>ke,sumOutType:()=>ah,tan:()=>vk,tanh:()=>hu,tensor:()=>pt,tensor1d:()=>St,tensor2d:()=>an,tensor3d:()=>cw,tensor4d:()=>_O,tensor5d:()=>LO,tensor6d:()=>BO,tensor_util:()=>rn,test_util:()=>Cw,tidy:()=>q,tile:()=>Wa,time:()=>tM,topk:()=>wk,train:()=>so,transpose:()=>rt,truncatedNormal:()=>fm,unique:()=>j1,unregisterGradient:()=>JE,unregisterKernel:()=>YE,unsortedSegmentSum:()=>kk,unstack:()=>ra,upcastType:()=>Or,util:()=>w,valueAndGrad:()=>H$,valueAndGrads:()=>q$,variable:()=>Ik,variableGrads:()=>ok,version:()=>Dh,version_converter:()=>Nj,version_core:()=>Zy,version_cpu:()=>fq,version_layers:()=>nA,version_wasm:()=>yye,version_webgl:()=>Dee,webgl:()=>_ee,webgl_util:()=>nI,webgpu:()=>sS,where:()=>zr,whereAsync:()=>R2,zeros:()=>Vt,zerosLike:()=>at});var sE=Object.create,wf=Object.defineProperty,iE=Object.getOwnPropertyDescriptor,vv=Object.getOwnPropertyNames,oE=Object.getPrototypeOf,lE=Object.prototype.hasOwnProperty,uE=e=>wf(e,"__esModule",{value:!0}),sr=(e,t)=>function(){return t||(0,e[vv(e)[0]])((t={exports:{}}).exports,t),t.exports},De=(e,t)=>{for(var r in t)wf(e,r,{get:t[r],enumerable:!0})},dE=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of vv(t))!lE.call(e,n)&&(r||n!=="default")&&wf(e,n,{get:()=>t[n],enumerable:!(a=iE(t,n))||a.enumerable});return e},Eo=(e,t)=>dE(uE(wf(e!=null?sE(oE(e)):{},"default",!t&&e&&e.__esModule?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e),pE=sr({"src/node_modules/long/src/long.js"(e,t){t.exports=a;var r=null;try{r=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(I){}function a(I,D,O){this.low=I|0,this.high=D|0,this.unsigned=!!O}a.prototype.__isLong__,Object.defineProperty(a.prototype,"__isLong__",{value:!0});function n(I){return(I&&I.__isLong__)===!0}a.isLong=n;var s={},i={};function o(I,D){var O,j,X;return D?(I>>>=0,(X=0<=I&&I<256)&&(j=i[I],j)?j:(O=d(I,(I|0)<0?-1:0,!0),X&&(i[I]=O),O)):(I|=0,(X=-128<=I&&I<128)&&(j=s[I],j)?j:(O=d(I,I<0?-1:0,!1),X&&(s[I]=O),O))}a.fromInt=o;function l(I,D){if(isNaN(I))return D?b:x;if(D){if(I<0)return b;if(I>=g)return R}else{if(I<=-y)return z;if(I+1>=y)return E}return I<0?l(-I,D).neg():d(I%m|0,I/m|0,D)}a.fromNumber=l;function d(I,D,O){return new a(I,D,O)}a.fromBits=d;var u=Math.pow;function p(I,D,O){if(I.length===0)throw Error("empty string");if(I==="NaN"||I==="Infinity"||I==="+Infinity"||I==="-Infinity")return x;if(typeof D=="number"?(O=D,D=!1):D=!!D,O=O||10,O<2||360)throw Error("interior hyphen");if(j===0)return p(I.substring(1),D,O).neg();for(var X=l(u(O,8)),_=x,K=0;K>>0:this.low},M.toNumber=function(){return this.unsigned?(this.high>>>0)*m+(this.low>>>0):this.high*m+(this.low>>>0)},M.toString=function(I){if(I=I||10,I<2||36>>0,Q=ee.toString(I);if(_=W,_.isZero())return Q+K;for(;Q.length<6;)Q="0"+Q;K=""+Q+K}},M.getHighBits=function(){return this.high},M.getHighBitsUnsigned=function(){return this.high>>>0},M.getLowBits=function(){return this.low},M.getLowBitsUnsigned=function(){return this.low>>>0},M.getNumBitsAbs=function(){if(this.isNegative())return this.eq(z)?64:this.neg().getNumBitsAbs();for(var I=this.high!=0?this.high:this.low,D=31;D>0&&(I&1<=0},M.isOdd=function(){return(this.low&1)===1},M.isEven=function(){return(this.low&1)===0},M.equals=function(I){return n(I)||(I=h(I)),this.unsigned!==I.unsigned&&this.high>>>31===1&&I.high>>>31===1?!1:this.high===I.high&&this.low===I.low},M.eq=M.equals,M.notEquals=function(I){return!this.eq(I)},M.neq=M.notEquals,M.ne=M.notEquals,M.lessThan=function(I){return this.comp(I)<0},M.lt=M.lessThan,M.lessThanOrEqual=function(I){return this.comp(I)<=0},M.lte=M.lessThanOrEqual,M.le=M.lessThanOrEqual,M.greaterThan=function(I){return this.comp(I)>0},M.gt=M.greaterThan,M.greaterThanOrEqual=function(I){return this.comp(I)>=0},M.gte=M.greaterThanOrEqual,M.ge=M.greaterThanOrEqual,M.compare=function(I){if(n(I)||(I=h(I)),this.eq(I))return 0;var D=this.isNegative(),O=I.isNegative();return D&&!O?-1:!D&&O?1:this.unsigned?I.high>>>0>this.high>>>0||I.high===this.high&&I.low>>>0>this.low>>>0?-1:1:this.sub(I).isNegative()?-1:1},M.comp=M.compare,M.negate=function(){return!this.unsigned&&this.eq(z)?z:this.not().add(v)},M.neg=M.negate,M.add=function(I){n(I)||(I=h(I));var D=this.high>>>16,O=this.high&65535,j=this.low>>>16,X=this.low&65535,_=I.high>>>16,K=I.high&65535,W=I.low>>>16,ee=I.low&65535,Q=0,ne=0,Z=0,ae=0;return ae+=X+ee,Z+=ae>>>16,ae&=65535,Z+=j+W,ne+=Z>>>16,Z&=65535,ne+=O+K,Q+=ne>>>16,ne&=65535,Q+=D+_,Q&=65535,d(Z<<16|ae,Q<<16|ne,this.unsigned)},M.subtract=function(I){return n(I)||(I=h(I)),this.add(I.neg())},M.sub=M.subtract,M.multiply=function(I){if(this.isZero())return x;if(n(I)||(I=h(I)),r){var D=r.mul(this.low,this.high,I.low,I.high);return d(D,r.get_high(),this.unsigned)}if(I.isZero())return x;if(this.eq(z))return I.isOdd()?z:x;if(I.eq(z))return this.isOdd()?z:x;if(this.isNegative())return I.isNegative()?this.neg().mul(I.neg()):this.neg().mul(I).neg();if(I.isNegative())return this.mul(I.neg()).neg();if(this.lt(A)&&I.lt(A))return l(this.toNumber()*I.toNumber(),this.unsigned);var O=this.high>>>16,j=this.high&65535,X=this.low>>>16,_=this.low&65535,K=I.high>>>16,W=I.high&65535,ee=I.low>>>16,Q=I.low&65535,ne=0,Z=0,ae=0,ie=0;return ie+=_*Q,ae+=ie>>>16,ie&=65535,ae+=X*Q,Z+=ae>>>16,ae&=65535,ae+=_*ee,Z+=ae>>>16,ae&=65535,Z+=j*Q,ne+=Z>>>16,Z&=65535,Z+=X*ee,ne+=Z>>>16,Z&=65535,Z+=_*W,ne+=Z>>>16,Z&=65535,ne+=O*Q+j*ee+X*W+_*K,ne&=65535,d(ae<<16|ie,ne<<16|Z,this.unsigned)},M.mul=M.multiply,M.divide=function(I){if(n(I)||(I=h(I)),I.isZero())throw Error("division by zero");if(r){if(!this.unsigned&&this.high===-2147483648&&I.low===-1&&I.high===-1)return this;var D=(this.unsigned?r.div_u:r.div_s)(this.low,this.high,I.low,I.high);return d(D,r.get_high(),this.unsigned)}if(this.isZero())return this.unsigned?b:x;var O,j,X;if(this.unsigned){if(I.unsigned||(I=I.toUnsigned()),I.gt(this))return b;if(I.gt(this.shru(1)))return C;X=b}else{if(this.eq(z)){if(I.eq(v)||I.eq(T))return z;if(I.eq(z))return v;var _=this.shr(1);return O=_.div(I).shl(1),O.eq(x)?I.isNegative()?v:T:(j=this.sub(I.mul(O)),X=O.add(j.div(I)),X)}else if(I.eq(z))return this.unsigned?b:x;if(this.isNegative())return I.isNegative()?this.neg().div(I.neg()):this.neg().div(I).neg();if(I.isNegative())return this.div(I.neg()).neg();X=x}for(j=this;j.gte(I);){O=Math.max(1,Math.floor(j.toNumber()/I.toNumber()));for(var K=Math.ceil(Math.log(O)/Math.LN2),W=K<=48?1:u(2,K-48),ee=l(O),Q=ee.mul(I);Q.isNegative()||Q.gt(j);)O-=W,ee=l(O,this.unsigned),Q=ee.mul(I);ee.isZero()&&(ee=v),X=X.add(ee),j=j.sub(Q)}return X},M.div=M.divide,M.modulo=function(I){if(n(I)||(I=h(I)),r){var D=(this.unsigned?r.rem_u:r.rem_s)(this.low,this.high,I.low,I.high);return d(D,r.get_high(),this.unsigned)}return this.sub(this.div(I).mul(I))},M.mod=M.modulo,M.rem=M.modulo,M.not=function(){return d(~this.low,~this.high,this.unsigned)},M.and=function(I){return n(I)||(I=h(I)),d(this.low&I.low,this.high&I.high,this.unsigned)},M.or=function(I){return n(I)||(I=h(I)),d(this.low|I.low,this.high|I.high,this.unsigned)},M.xor=function(I){return n(I)||(I=h(I)),d(this.low^I.low,this.high^I.high,this.unsigned)},M.shiftLeft=function(I){return n(I)&&(I=I.toInt()),(I&=63)===0?this:I<32?d(this.low<>>32-I,this.unsigned):d(0,this.low<>>I|this.high<<32-I,this.high>>I,this.unsigned):d(this.high>>I-32,this.high>=0?0:-1,this.unsigned)},M.shr=M.shiftRight,M.shiftRightUnsigned=function(I){if(n(I)&&(I=I.toInt()),I&=63,I===0)return this;var D=this.high;if(I<32){var O=this.low;return d(O>>>I|D<<32-I,D>>>I,this.unsigned)}else return I===32?d(D,0,this.unsigned):d(D>>>I-32,0,this.unsigned)},M.shru=M.shiftRightUnsigned,M.shr_u=M.shiftRightUnsigned,M.toSigned=function(){return this.unsigned?d(this.low,this.high,!1):this},M.toUnsigned=function(){return this.unsigned?this:d(this.low,this.high,!0)},M.toBytes=function(I){return I?this.toBytesLE():this.toBytesBE()},M.toBytesLE=function(){var I=this.high,D=this.low;return[D&255,D>>>8&255,D>>>16&255,D>>>24,I&255,I>>>8&255,I>>>16&255,I>>>24]},M.toBytesBE=function(){var I=this.high,D=this.low;return[I>>>24,I>>>16&255,I>>>8&255,I&255,D>>>24,D>>>16&255,D>>>8&255,D&255]},a.fromBytes=function(I,D,O){return O?a.fromBytesLE(I,D):a.fromBytesBE(I,D)},a.fromBytesLE=function(I,D){return new a(I[0]|I[1]<<8|I[2]<<16|I[3]<<24,I[4]|I[5]<<8|I[6]<<16|I[7]<<24,D)},a.fromBytesBE=function(I,D){return new a(I[4]<<24|I[5]<<16|I[6]<<8|I[7],I[0]<<24|I[1]<<16|I[2]<<8|I[3],D)}}}),hE=sr({"(disabled):src/node_modules/node-fetch/browser.js"(){}}),cE=sr({"(disabled):util"(){}}),fE=sr({"src/node_modules/seedrandom/lib/alea.js"(e,t){(function(r,a,n){function s(d){var u=this,p=l();u.next=function(){var h=2091639*u.s0+u.c*23283064365386963e-26;return u.s0=u.s1,u.s1=u.s2,u.s2=h-(u.c=h|0)},u.c=1,u.s0=p(" "),u.s1=p(" "),u.s2=p(" "),u.s0-=p(d),u.s0<0&&(u.s0+=1),u.s1-=p(d),u.s1<0&&(u.s1+=1),u.s2-=p(d),u.s2<0&&(u.s2+=1),p=null}function i(d,u){return u.c=d.c,u.s0=d.s0,u.s1=d.s1,u.s2=d.s2,u}function o(d,u){var p=new s(d),h=u&&u.state,c=p.next;return c.int32=function(){return p.next()*4294967296|0},c.double=function(){return c()+(c()*2097152|0)*11102230246251565e-32},c.quick=c,h&&(typeof h=="object"&&i(h,p),c.state=function(){return i(p,{})}),c}function l(){var d=4022871197,u=function(p){p=String(p);for(var h=0;h>>0,c-=d,c*=d,d=c>>>0,c-=d,d+=c*4294967296}return(d>>>0)*23283064365386963e-26};return u}a&&a.exports?a.exports=o:n&&n.amd?n(function(){return o}):this.alea=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),mE=sr({"src/node_modules/seedrandom/lib/xor128.js"(e,t){(function(r,a,n){function s(l){var d=this,u="";d.x=0,d.y=0,d.z=0,d.w=0,d.next=function(){var h=d.x^d.x<<11;return d.x=d.y,d.y=d.z,d.z=d.w,d.w^=d.w>>>19^h^h>>>8},l===(l|0)?d.x=l:u+=l;for(var p=0;p>>0)/4294967296};return h.double=function(){do var c=u.next()>>>11,f=(u.next()>>>0)/4294967296,m=(c+f)/(1<<21);while(m===0);return m},h.int32=u.next,h.quick=h,p&&(typeof p=="object"&&i(p,u),h.state=function(){return i(u,{})}),h}a&&a.exports?a.exports=o:n&&n.amd?n(function(){return o}):this.xor128=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),gE=sr({"src/node_modules/seedrandom/lib/xorwow.js"(e,t){(function(r,a,n){function s(l){var d=this,u="";d.next=function(){var h=d.x^d.x>>>2;return d.x=d.y,d.y=d.z,d.z=d.w,d.w=d.v,(d.d=d.d+362437|0)+(d.v=d.v^d.v<<4^(h^h<<1))|0},d.x=0,d.y=0,d.z=0,d.w=0,d.v=0,l===(l|0)?d.x=l:u+=l;for(var p=0;p>>4),d.next()}function i(l,d){return d.x=l.x,d.y=l.y,d.z=l.z,d.w=l.w,d.v=l.v,d.d=l.d,d}function o(l,d){var u=new s(l),p=d&&d.state,h=function(){return(u.next()>>>0)/4294967296};return h.double=function(){do var c=u.next()>>>11,f=(u.next()>>>0)/4294967296,m=(c+f)/(1<<21);while(m===0);return m},h.int32=u.next,h.quick=h,p&&(typeof p=="object"&&i(p,u),h.state=function(){return i(u,{})}),h}a&&a.exports?a.exports=o:n&&n.amd?n(function(){return o}):this.xorwow=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),yE=sr({"src/node_modules/seedrandom/lib/xorshift7.js"(e,t){(function(r,a,n){function s(l){var d=this;d.next=function(){var p=d.x,h=d.i,c,f,m;return c=p[h],c^=c>>>7,f=c^c<<24,c=p[h+1&7],f^=c^c>>>10,c=p[h+3&7],f^=c^c>>>3,c=p[h+4&7],f^=c^c<<7,c=p[h+7&7],c=c^c<<13,f^=c^c<<9,p[h]=f,d.i=h+1&7,f};function u(p,h){var c,f,m=[];if(h===(h|0))f=m[0]=h;else for(h=""+h,c=0;c0;--c)p.next()}u(d,l)}function i(l,d){return d.x=l.x.slice(),d.i=l.i,d}function o(l,d){l==null&&(l=+new Date);var u=new s(l),p=d&&d.state,h=function(){return(u.next()>>>0)/4294967296};return h.double=function(){do var c=u.next()>>>11,f=(u.next()>>>0)/4294967296,m=(c+f)/(1<<21);while(m===0);return m},h.int32=u.next,h.quick=h,p&&(p.x&&i(p,u),h.state=function(){return i(u,{})}),h}a&&a.exports?a.exports=o:n&&n.amd?n(function(){return o}):this.xorshift7=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),AE=sr({"src/node_modules/seedrandom/lib/xor4096.js"(e,t){(function(r,a,n){function s(l){var d=this;d.next=function(){var p=d.w,h=d.X,c=d.i,f,m;return d.w=p=p+1640531527|0,m=h[c+34&127],f=h[c=c+1&127],m^=m<<13,f^=f<<17,m^=m>>>15,f^=f>>>12,m=h[c]=m^f,d.i=c,m+(p^p>>>16)|0};function u(p,h){var c,f,m,g,y,A=[],x=128;for(h===(h|0)?(f=h,h=null):(h=h+"\0",f=0,x=Math.max(x,h.length)),m=0,g=-32;g>>15,f^=f<<4,f^=f>>>13,g>=0&&(y=y+1640531527|0,c=A[g&127]^=f+y,m=c==0?m+1:0);for(m>=128&&(A[(h&&h.length||0)&127]=-1),m=127,g=4*128;g>0;--g)f=A[m+34&127],c=A[m=m+1&127],f^=f<<13,c^=c<<17,f^=f>>>15,c^=c>>>12,A[m]=f^c;p.w=y,p.X=A,p.i=m}u(d,l)}function i(l,d){return d.i=l.i,d.w=l.w,d.X=l.X.slice(),d}function o(l,d){l==null&&(l=+new Date);var u=new s(l),p=d&&d.state,h=function(){return(u.next()>>>0)/4294967296};return h.double=function(){do var c=u.next()>>>11,f=(u.next()>>>0)/4294967296,m=(c+f)/(1<<21);while(m===0);return m},h.int32=u.next,h.quick=h,p&&(p.X&&i(p,u),h.state=function(){return i(u,{})}),h}a&&a.exports?a.exports=o:n&&n.amd?n(function(){return o}):this.xor4096=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),xE=sr({"src/node_modules/seedrandom/lib/tychei.js"(e,t){(function(r,a,n){function s(l){var d=this,u="";d.next=function(){var h=d.b,c=d.c,f=d.d,m=d.a;return h=h<<25^h>>>7^c,c=c-f|0,f=f<<24^f>>>8^m,m=m-h|0,d.b=h=h<<20^h>>>12^c,d.c=c=c-f|0,d.d=f<<16^c>>>16^m,d.a=m-h|0},d.a=0,d.b=0,d.c=-1640531527,d.d=1367130551,l===Math.floor(l)?(d.a=l/4294967296|0,d.b=l|0):u+=l;for(var p=0;p>>0)/4294967296};return h.double=function(){do var c=u.next()>>>11,f=(u.next()>>>0)/4294967296,m=(c+f)/(1<<21);while(m===0);return m},h.int32=u.next,h.quick=h,p&&(typeof p=="object"&&i(p,u),h.state=function(){return i(u,{})}),h}a&&a.exports?a.exports=o:n&&n.amd?n(function(){return o}):this.tychei=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),bE=sr({"(disabled):crypto"(){}}),vE=sr({"src/node_modules/seedrandom/seedrandom.js"(e,t){(function(r,a,n){var s=256,i=6,o=52,l="random",d=n.pow(s,i),u=n.pow(2,o),p=u*2,h=s-1,c;function f(v,C,T){var E=[];C=C==!0?{entropy:!0}:C||{};var R=A(y(C.entropy?[v,b(a)]:v==null?x():v,3),E),z=new m(E),M=function(){for(var I=z.g(i),D=d,O=0;I=p;)I/=2,D/=2,O>>>=1;return(I+O)/D};return M.int32=function(){return z.g(4)|0},M.quick=function(){return z.g(4)/4294967296},M.double=M,A(b(z.S),a),(C.pass||T||function(I,D,O,j){return j&&(j.S&&g(j,z),I.state=function(){return g(z,{})}),O?(n[l]=I,D):I})(M,R,"global"in C?C.global:this==n,C.state)}function m(v){var C,T=v.length,E=this,R=0,z=E.i=E.j=0,M=E.S=[];for(T||(v=[T++]);R1&&(y=process.argv[1].replace(/\\/g,"/")),g=process.argv.slice(2),process.on("uncaughtException",function(S){if(!(S instanceof Jd))throw S}),process.on("unhandledRejection",Dn),A=function(S){process.exit(S)},u.inspect=function(){return"[Emscripten Module object]"};var X;try{X=wE()}catch(S){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),S}global.Worker=X.Worker}else C?(typeof read!="undefined"&&(z=function(S){return read(S)}),I=function(S){var F;return typeof readbuffer=="function"?new Uint8Array(readbuffer(S)):(F=read(S,"binary"),Re(typeof F=="object"),F)},typeof scriptArgs!="undefined"?g=scriptArgs:typeof arguments!="undefined"&&(g=arguments),typeof quit=="function"&&(A=function(S){quit(S)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(x||b)&&(b?E=self.location.href:typeof document!="undefined"&&document.currentScript&&(E=document.currentScript.src),typeof a!="undefined"&&a&&(E=a),E.indexOf("blob:")!==0?E=E.substr(0,E.lastIndexOf("/")+1):E="",v?(z=function(S,F){return O||(O=Hc()),j||(j=yp()),S=j.normalize(S),O.readFileSync(S,F?null:"utf8")},I=function(S){var F=z(S,!0);return F.buffer||(F=new Uint8Array(F)),Re(F.buffer),F}):(z=function(S){var F=new XMLHttpRequest;return F.open("GET",S,!1),F.send(null),F.responseText},b&&(I=function(S){var F=new XMLHttpRequest;return F.open("GET",S,!1),F.responseType="arraybuffer",F.send(null),new Uint8Array(F.response)}),M=function(S,F,G){var J=new XMLHttpRequest;J.open("GET",S,!0),J.responseType="arraybuffer",J.onload=function(){if(J.status==200||J.status==0&&J.response){F(J.response);return}G()},J.onerror=G,J.send(null)}),D=function(S){document.title=S});v&&typeof performance=="undefined"&&(global.performance=kE().performance);var _=u.print||console.log.bind(console),K=u.printErr||console.warn.bind(console);for(m in f)f.hasOwnProperty(m)&&(u[m]=f[m]);f=null,u.arguments&&(g=u.arguments),u.thisProgram&&(y=u.thisProgram),u.quit&&(A=u.quit);function W(S){W.shown||(W.shown={}),W.shown[S]||(W.shown[S]=1,K(S))}var ee=Atomics.load,Q=Atomics.store,ne=Atomics.compareExchange,Z;u.wasmBinary&&(Z=u.wasmBinary);var ae=u.noExitRuntime||!0;typeof WebAssembly!="object"&&Dn("no native wasm support detected");var ie,xe,be=!1,Te;function Re(S,F){S||Dn("Assertion failed: "+F)}function $e(S){var F=u["_"+S];return Re(F,"Cannot call unknown function "+S+", make sure it is exported"),F}function _e(S,F,G,J,Ae){var ge={string:function(Qr){var Kl=0;if(Qr!=null&&Qr!==0){var _5=(Qr.length<<2)+1;Kl=jl(_5),ct(Qr,Kl,_5)}return Kl},array:function(Qr){var Kl=jl(Qr.length);return Et(Qr,Kl),Kl}};function ye(Qr){return F==="string"?st(Qr):F==="boolean"?Boolean(Qr):Qr}var Ce=$e(S),ft=[],lr=0;if(J)for(var Jt=0;Jt=J);){var ge=S[F++];if(!ge)return Ae;if(!(ge&128)){Ae+=String.fromCharCode(ge);continue}var ye=S[F++]&63;if((ge&224)==192){Ae+=String.fromCharCode((ge&31)<<6|ye);continue}var Ce=S[F++]&63;if((ge&240)==224?ge=(ge&15)<<12|ye<<6|Ce:ge=(ge&7)<<18|ye<<12|Ce<<6|S[F++]&63,ge<65536)Ae+=String.fromCharCode(ge);else{var ft=ge-65536;Ae+=String.fromCharCode(55296|ft>>10,56320|ft&1023)}}return Ae}function st(S,F){return S?Ze(i(),S,F):""}function ht(S,F,G,J){if(!(J>0))return 0;for(var Ae=G,ge=G+J-1,ye=0;ye=55296&&Ce<=57343){var ft=S.charCodeAt(++ye);Ce=65536+((Ce&1023)<<10)|ft&1023}if(Ce<=127){if(G>=ge)break;F[G++]=Ce}else if(Ce<=2047){if(G+1>=ge)break;F[G++]=192|Ce>>6,F[G++]=128|Ce&63}else if(Ce<=65535){if(G+2>=ge)break;F[G++]=224|Ce>>12,F[G++]=128|Ce>>6&63,F[G++]=128|Ce&63}else{if(G+3>=ge)break;F[G++]=240|Ce>>18,F[G++]=128|Ce>>12&63,F[G++]=128|Ce>>6&63,F[G++]=128|Ce&63}}return F[G]=0,G-Ae}function ct(S,F,G){return ht(S,i(),F,G)}function yt(S){for(var F=0,G=0;G=55296&&J<=57343&&(J=65536+((J&1023)<<10)|S.charCodeAt(++G)&1023),J<=127?++F:J<=2047?F+=2:J<=65535?F+=3:F+=4}return F}function Et(S,F){s().set(S,F)}function Hr(S,F){return S%F>0&&(S+=F-S%F),S}var ut,qr,gr,Kr,za,Xr,Rr,Da,xn;function ia(S){ut=S,u.HEAP8=qr=new Int8Array(S),u.HEAP16=Kr=new Int16Array(S),u.HEAP32=Xr=new Int32Array(S),u.HEAPU8=gr=new Uint8Array(S),u.HEAPU16=za=new Uint16Array(S),u.HEAPU32=Rr=new Uint32Array(S),u.HEAPF32=Da=new Float32Array(S),u.HEAPF64=xn=new Float64Array(S)}var _l=u.INITIAL_MEMORY||16777216;if(T)ie=u.wasmMemory,ut=u.buffer;else if(u.wasmMemory)ie=u.wasmMemory;else if(ie=new WebAssembly.Memory({initial:_l/65536,maximum:32768,shared:!0}),!(ie.buffer instanceof SharedArrayBuffer))throw K("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),v&&console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"),Error("bad memory");ie&&(ut=ie.buffer),_l=ut.byteLength,ia(ut);var Zr,hs=[],va=[],Bd=[],Wd=[],zn=[],Zh=!1,U0=!1;T||va.push({func:function(){fc()}});function Yh(){if(!T){if(u.preRun)for(typeof u.preRun=="function"&&(u.preRun=[u.preRun]);u.preRun.length;)G0(u.preRun.shift());Ll(hs)}}function Jh(){Zh=!0,!T&&Ll(va)}function Qh(){T||Ll(Bd)}function Yr(){T||(U0=!0)}function ec(){if(!T){if(u.postRun)for(typeof u.postRun=="function"&&(u.postRun=[u.postRun]);u.postRun.length;)j0(u.postRun.shift());Ll(zn)}}function G0(S){hs.unshift(S)}function j0(S){zn.unshift(S)}var _a=0,Vd=null,Ji=null;function H0(S){Re(!T,"addRunDependency cannot be used in a pthread worker"),_a++,u.monitorRunDependencies&&u.monitorRunDependencies(_a)}function q0(S){if(_a--,u.monitorRunDependencies&&u.monitorRunDependencies(_a),_a==0&&(Vd!==null&&(clearInterval(Vd),Vd=null),Ji)){var F=Ji;Ji=null,F()}}u.preloadedImages={},u.preloadedAudios={};function Dn(S){u.onAbort&&u.onAbort(S),T&&console.error("Pthread aborting at "+new Error().stack),S+="",K(S),be=!0,Te=1,S="abort("+S+"). Build with -s ASSERTIONS=1 for more info.";var F=new WebAssembly.RuntimeError(S);throw h(F),F}function Qi(S,F){return String.prototype.startsWith?S.startsWith(F):S.indexOf(F)===0}var K0="data:application/octet-stream;base64,";function tc(S){return Qi(S,K0)}var X0="file://";function rc(S){return Qi(S,X0)}var Jr="tfjs-backend-wasm-threaded-simd.wasm";tc(Jr)||(Jr=R(Jr));function Z0(S){try{if(S==Jr&&Z)return new Uint8Array(Z);if(I)return I(S);throw"both async and sync fetching of the wasm failed"}catch(F){Dn(F)}}function ac(){if(!Z&&(x||b)){if(typeof fetch=="function"&&!rc(Jr))return fetch(Jr,{credentials:"same-origin"}).then(function(S){if(!S.ok)throw"failed to load wasm binary file at '"+Jr+"'";return S.arrayBuffer()}).catch(function(){return Z0(Jr)});if(M)return new Promise(function(S,F){M(Jr,function(G){S(new Uint8Array(G))},F)})}return Promise.resolve().then(function(){return Z0(Jr)})}function Y0(){var S={a:Ug};function F(ye,Ce){var ft=ye.exports;if(u.asm=ft,Zr=u.asm.nb,xe=Ce,!T){var lr=Fe.unusedWorkers.length;Fe.unusedWorkers.forEach(function(Jt){Fe.loadWasmModuleToWorker(Jt,function(){--lr||q0("wasm-instantiate")})})}}T||H0("wasm-instantiate");function G(ye){F(ye.instance,ye.module)}function J(ye){return ac().then(function(Ce){return WebAssembly.instantiate(Ce,S)}).then(ye,function(Ce){K("failed to asynchronously prepare wasm: "+Ce),Dn(Ce)})}function Ae(){return!Z&&typeof WebAssembly.instantiateStreaming=="function"&&!tc(Jr)&&!rc(Jr)&&typeof fetch=="function"?fetch(Jr,{credentials:"same-origin"}).then(function(ye){var Ce=WebAssembly.instantiateStreaming(ye,S);return Ce.then(G,function(ft){return K("wasm streaming compile failed: "+ft),K("falling back to ArrayBuffer instantiation"),J(G)})}):J(G)}if(u.instantiateWasm)try{var ge=u.instantiateWasm(S,F);return ge}catch(ye){return K("Module.instantiateWasm callback failed with error: "+ye),!1}return Ae().catch(h),{}}var nc={10216:function(){throw"Canceled!"},10234:function(S,F){setTimeout(function(){M5(S,F)},0)}};function J0(){Fe.initRuntime()}function Ll(S){for(;S.length>0;){var F=S.shift();if(typeof F=="function"){F(u);continue}var G=F.func;typeof G=="number"?F.arg===void 0?Zr.get(G)():Zr.get(G)(F.arg):G(F.arg===void 0?null:F.arg)}}var cs={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};function Ud(S,F){if(S<=0||S>s().length||S&!0||F<0)return-28;if(F==0)return 0;F>=2147483647&&(F=1/0);var G=Atomics.load(o(),Hl>>2),J=0;if(G==S){var Ae=Atomics.compareExchange(o(),Hl>>2,G,0);if(Ae==G&&(--F,J=1,F<=0))return 1}var ge=Atomics.notify(o(),S>>2,F);if(ge>=0)return ge+J;throw"Atomics.notify returned an unexpected value "+ge}u._emscripten_futex_wake=Ud;function Q0(S){if(T)throw"Internal Error! killThread() can only ever be called from main application thread!";if(!S)throw"Internal Error! Null pthread_ptr in killThread!";o()[S+12>>2]=0;var F=Fe.pthreads[S];F.worker.terminate(),Fe.freeThreadData(F),Fe.runningWorkers.splice(Fe.runningWorkers.indexOf(F.worker),1),F.worker.pthread=void 0}function eg(S){if(T)throw"Internal Error! cancelThread() can only ever be called from main application thread!";if(!S)throw"Internal Error! Null pthread_ptr in cancelThread!";var F=Fe.pthreads[S];F.worker.postMessage({cmd:"cancel"})}function sc(S){if(T)throw"Internal Error! cleanupThread() can only ever be called from main application thread!";if(!S)throw"Internal Error! Null pthread_ptr in cleanupThread!";var F=Fe.pthreads[S];if(F){o()[S+12>>2]=0;var G=F.worker;Fe.returnWorkerToPool(G)}}var Fe={unusedWorkers:[],runningWorkers:[],initMainThreadBlock:function(){for(var S=8,F=0;F>2]=S;var G=S+152;o()[G>>2]=G;for(var J=to(512),F=0;F<128;++F)l()[J/4+F]=0;Atomics.store(l(),S+100>>2,J),Atomics.store(l(),S+40>>2,S),c1(S,!b,1),R5(S)},initWorker:function(){},pthreads:{},threadExitHandlers:[],setThreadStatus:function(){},runExitHandlers:function(){for(;Fe.threadExitHandlers.length>0;)Fe.threadExitHandlers.pop()();T&&ys()&&E5()},runExitHandlersAndDeinitThread:function(S,F){Atomics.store(l(),S+56>>2,1),Atomics.store(l(),S+60>>2,0),Fe.runExitHandlers(),Atomics.store(l(),S+4>>2,F),Atomics.store(l(),S+0>>2,1),Ud(S+0,2147483647),c1(0,0,0)},threadExit:function(S){var F=ys();F&&(Fe.runExitHandlersAndDeinitThread(F,S),T&&postMessage({cmd:"exit"}))},threadCancel:function(){Fe.runExitHandlersAndDeinitThread(ys(),-1),postMessage({cmd:"cancelDone"})},terminateAllThreads:function(){for(var S in Fe.pthreads){var F=Fe.pthreads[S];F&&F.worker&&Fe.returnWorkerToPool(F.worker)}Fe.pthreads={};for(var G=0;G>2];o()[S.threadInfoStruct+100>>2]=0,Zd(F),Zd(S.threadInfoStruct)}S.threadInfoStruct=0,S.allocatedOwnStack&&S.stackBase&&Zd(S.stackBase),S.stackBase=0,S.worker&&(S.worker.pthread=null)}},returnWorkerToPool:function(S){Fe.runWithoutMainThreadQueuedCalls(function(){delete Fe.pthreads[S.pthread.threadInfoStruct],Fe.unusedWorkers.push(S),Fe.runningWorkers.splice(Fe.runningWorkers.indexOf(S),1),Fe.freeThreadData(S.pthread),S.pthread=void 0})},runWithoutMainThreadQueuedCalls:function(S){o()[D5>>2]=0;try{S()}finally{o()[D5>>2]=1}},receiveObjectTransfer:function(S){},loadWasmModuleToWorker:function(S,F){S.onmessage=function(G){var J=G.data,Ae=J.cmd;if(S.pthread&&(Fe.currentProxiedOperationCallerThread=S.pthread.threadInfoStruct),J.targetThread&&J.targetThread!=ys()){var ge=Fe.pthreads[J.targetThread];ge?ge.worker.postMessage(G.data,J.transferList):console.error('Internal error! Worker sent a message "'+Ae+'" to target pthread '+J.targetThread+", but that thread no longer exists!"),Fe.currentProxiedOperationCallerThread=void 0;return}if(Ae==="processQueuedMainThreadWork")xc();else if(Ae==="spawnThread")hc(G.data);else if(Ae==="cleanupThread")sc(J.thread);else if(Ae==="killThread")Q0(J.thread);else if(Ae==="cancelThread")eg(J.thread);else if(Ae==="loaded")S.loaded=!0,F&&F(S),S.runPthread&&(S.runPthread(),delete S.runPthread);else if(Ae==="print")_("Thread "+J.threadId+": "+J.text);else if(Ae==="printErr")K("Thread "+J.threadId+": "+J.text);else if(Ae==="alert")alert("Thread "+J.threadId+": "+J.text);else if(Ae==="exit"){var ye=S.pthread&&Atomics.load(l(),S.pthread.threadInfoStruct+64>>2);ye&&Fe.returnWorkerToPool(S)}else if(Ae==="exitProcess")try{Z9(J.returnCode)}catch(Ce){if(Ce instanceof Jd)return;throw Ce}else Ae==="cancelDone"?Fe.returnWorkerToPool(S):Ae==="objectTransfer"?Fe.receiveObjectTransfer(G.data):G.data.target==="setimmediate"?S.postMessage(G.data):K("worker sent an unknown command "+Ae);Fe.currentProxiedOperationCallerThread=void 0},S.onerror=function(G){K("pthread sent an error! "+G.filename+":"+G.lineno+": "+G.message)},v&&(S.on("message",function(G){S.onmessage({data:G})}),S.on("error",function(G){S.onerror(G)}),S.on("exit",function(G){})),S.postMessage({cmd:"load",urlOrBlob:u.mainScriptUrlOrBlob||a,wasmMemory:ie,wasmModule:xe})},allocateUnusedWorker:function(){var S=R("tfjs-backend-wasm-threaded-simd.worker.js");Fe.unusedWorkers.push(new Worker(S))},getNewWorker:function(){return Fe.unusedWorkers.length==0&&(Fe.allocateUnusedWorker(),Fe.loadWasmModuleToWorker(Fe.unusedWorkers[0])),Fe.unusedWorkers.length>0?Fe.unusedWorkers.pop():null},busySpinWait:function(S){for(var F=performance.now()+S;performance.now()>2]=S,S}function og(S,F){if(T)return fs(1,1,S,F)}function lg(S,F){if(S==F)postMessage({cmd:"processQueuedMainThreadWork"});else if(T)postMessage({targetThread:S,cmd:"processThreadQueue"});else{var G=Fe.pthreads[S],J=G&&G.worker;if(!J)return;J.postMessage({cmd:"processThreadQueue"})}return 1}function ug(){Dn()}function dg(S,F,G){var J=fg(F,G);return nc[S].apply(null,J)}function pg(S,F){}function ic(S,F,G){if(S<=0||S>s().length||S&!0)return-28;if(x){if(Atomics.load(o(),S>>2)!=F)return-6;for(var J=performance.now(),Ae=J+G,ge=Atomics.exchange(o(),Hl>>2,S);;){if(J=performance.now(),J>Ae)return ge=Atomics.exchange(o(),Hl>>2,0),-73;if(ge=Atomics.exchange(o(),Hl>>2,0),ge==0)break;if(xc(),Atomics.load(o(),S>>2)!=F)return-6;ge=Atomics.exchange(o(),Hl>>2,S)}return 0}else{var ye=Atomics.wait(o(),S>>2,F,G);if(ye==="timed-out")return-73;if(ye==="not-equal")return-6;if(ye==="ok")return 0;throw"Atomics.wait returned an unexpected value "+ye}}function hg(S,F,G){i().copyWithin(S,F,F+G)}function cg(){return v?IE().cpus().length:navigator.hardwareConcurrency}function fs(S,F){for(var G=arguments.length-2,J=Yd(),Ae=G,ge=jl(Ae*8),ye=ge>>3,Ce=0;Ce>=2;G=i()[S++];){var J=G<105;J&&F&1&&F++,jd.push(J?d()[F++>>1]:o()[F]),++F}return jd}function mg(S,F,G){Gd.length=F;for(var J=G>>3,Ae=0;Ae>>16),ia(ie.buffer),1}catch(F){}}function Ag(S){var F=gg();if(S<=F)return!1;var G=2147483648;if(S>G)return!1;for(var J=1;J<=4;J*=2){var Ae=F*(1+.2/J);Ae=Math.min(Ae,S+100663296);var ge=Math.min(G,Hr(Math.max(S,Ae),65536)),ye=yg(ge);if(ye)return!0}return!1}var je={inEventHandler:0,removeAllEventListeners:function(){for(var S=je.eventHandlers.length-1;S>=0;--S)je._removeHandler(S);je.eventHandlers=[],je.deferredCalls=[]},registerRemoveEventListeners:function(){je.removeEventListenersRegistered||(Wd.push(je.removeAllEventListeners),je.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(S,F,G){function J(ye,Ce){if(ye.length!=Ce.length)return!1;for(var ft in ye)if(ye[ft]!=Ce[ft])return!1;return!0}for(var Ae in je.deferredCalls){var ge=je.deferredCalls[Ae];if(ge.targetFunction==S&&J(ge.argsList,G))return}je.deferredCalls.push({targetFunction:S,precedence:F,argsList:G}),je.deferredCalls.sort(function(ye,Ce){return ye.precedence>2]=G,o()[ye+4>>2]=J,o()[ye+8>>2]=Ae,h1(0,S,637534208,F,J,ye),Gl(ge)},getTargetThreadForEventCallback:function(S){switch(S){case 1:return 0;case 2:return Fe.currentProxiedOperationCallerThread;default:return S}},getNodeNameForTarget:function(S){return S?S==window?"#window":S==screen?"#screen":S&&S.nodeName?S.nodeName:"":""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function xg(S){var F=yt(S)+1,G=to(F);return ct(S,G,F),G}function bg(S,F,G,J){var Ae=Yd(),ge=jl(12),ye=0;F&&(ye=xg(F)),o()[ge>>2]=ye,o()[ge+4>>2]=G,o()[ge+8>>2]=J,h1(0,S,657457152,0,ye,ge),Gl(Ae)}function vg(S,F,G,J){F=F?st(F):"",bg(S,F,G,J)}function wg(S){return S>2?st(S):S}var kg=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function Ig(S){S=wg(S);var F=kg[S]||(typeof document!="undefined"?document.querySelector(S):void 0);return F}function Hd(S){return Ig(S)}function oc(S,F,G){var J=Hd(S);if(!J)return-4;if(J.canvasSharedPtr&&(o()[J.canvasSharedPtr>>2]=F,o()[J.canvasSharedPtr+4>>2]=G),J.offscreenCanvas||!J.controlTransferredOffscreen){J.offscreenCanvas&&(J=J.offscreenCanvas);var Ae=!1;if(J.GLctxObject&&J.GLctxObject.GLctx){var ge=J.GLctxObject.GLctx.getParameter(2978);Ae=ge[0]===0&&ge[1]===0&&ge[2]===J.width&&ge[3]===J.height}J.width=F,J.height=G,Ae&&J.GLctxObject.GLctx.viewport(0,0,F,G)}else if(J.canvasSharedPtr){var ye=o()[J.canvasSharedPtr+8>>2];return vg(ye,S,F,G),1}else return-4;return 0}function lc(S,F,G){return T?fs(2,1,S,F,G):oc(S,F,G)}function Sg(S,F,G){var J=Hd(S);return J?oc(S,F,G):lc(S,F,G)}function Tg(S){}function Cg(S,F){}function Ng(S){var F=S.getExtension("ANGLE_instanced_arrays");if(F)return S.vertexAttribDivisor=function(G,J){F.vertexAttribDivisorANGLE(G,J)},S.drawArraysInstanced=function(G,J,Ae,ge){F.drawArraysInstancedANGLE(G,J,Ae,ge)},S.drawElementsInstanced=function(G,J,Ae,ge,ye){F.drawElementsInstancedANGLE(G,J,Ae,ge,ye)},1}function Eg(S){var F=S.getExtension("OES_vertex_array_object");if(F)return S.createVertexArray=function(){return F.createVertexArrayOES()},S.deleteVertexArray=function(G){F.deleteVertexArrayOES(G)},S.bindVertexArray=function(G){F.bindVertexArrayOES(G)},S.isVertexArray=function(G){return F.isVertexArrayOES(G)},1}function Rg(S){var F=S.getExtension("WEBGL_draw_buffers");if(F)return S.drawBuffers=function(G,J){F.drawBuffersWEBGL(G,J)},1}function Fg(S){return!!(S.multiDrawWebgl=S.getExtension("WEBGL_multi_draw"))}var dt={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function(S){dt.lastError||(dt.lastError=S)},getNewId:function(S){for(var F=dt.counter++,G=S.length;G>2]:-1;Ae+=st(o()[G+ge*4>>2],ye<0?void 0:ye)}return Ae},createContext:function(S,F){var G=S.getContext("webgl",F);if(!G)return 0;var J=dt.registerContext(G,F);return J},registerContext:function(S,F){var G=to(8);o()[G+4>>2]=ys();var J={handle:G,attributes:F,version:F.majorVersion,GLctx:S};return S.canvas&&(S.canvas.GLctxObject=J),dt.contexts[G]=J,(typeof F.enableExtensionsByDefault=="undefined"||F.enableExtensionsByDefault)&&dt.initExtensions(J),G},makeContextCurrent:function(S){return dt.currentContext=dt.contexts[S],u.ctx=ms=dt.currentContext&&dt.currentContext.GLctx,!(S&&!ms)},getContext:function(S){return dt.contexts[S]},deleteContext:function(S){dt.currentContext===dt.contexts[S]&&(dt.currentContext=null),typeof je=="object"&&je.removeAllHandlersOnTarget(dt.contexts[S].GLctx.canvas),dt.contexts[S]&&dt.contexts[S].GLctx.canvas&&(dt.contexts[S].GLctx.canvas.GLctxObject=void 0),Zd(dt.contexts[S].handle),dt.contexts[S]=null},initExtensions:function(S){if(S||(S=dt.currentContext),!S.initExtensionsDone){S.initExtensionsDone=!0;var F=S.GLctx;Ng(F),Eg(F),Rg(F),F.disjointTimerQueryExt=F.getExtension("EXT_disjoint_timer_query"),Fg(F);var G=F.getSupportedExtensions()||[];G.forEach(function(J){J.indexOf("lose_context")<0&&J.indexOf("debug")<0&&F.getExtension(J)})}},populateUniformTable:function(S){for(var F=dt.programs[S],G=dt.programInfos[S]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1},J=G.uniforms,Ae=ms.getProgramParameter(F,35718),ge=0;ge>2,J=o()[G+6],Ae={alpha:!!o()[G+0],depth:!!o()[G+1],stencil:!!o()[G+2],antialias:!!o()[G+3],premultipliedAlpha:!!o()[G+4],preserveDrawingBuffer:!!o()[G+5],powerPreference:Mg[J],failIfMajorPerformanceCaveat:!!o()[G+7],majorVersion:o()[G+8],minorVersion:o()[G+9],enableExtensionsByDefault:o()[G+10],explicitSwapControl:o()[G+11],proxyContextToMainThread:o()[G+12],renderViaOffscreenBackBuffer:o()[G+13]},ge=Hd(S);if(!ge||Ae.explicitSwapControl)return 0;var ye=dt.createContext(ge,Ae);return ye}function Pg(S,F){return $g(S,F)}var Bl={mappings:{},buffers:[null,[],[]],printChar:function(S,F){var G=Bl.buffers[S];F===0||F===10?((S===1?_:K)(Ze(G,0)),G.length=0):G.push(F)},varargs:void 0,get:function(){Bl.varargs+=4;var S=o()[Bl.varargs-4>>2];return S},getStr:function(S){var F=st(S);return F},get64:function(S,F){return S}};function uc(S){return T?fs(3,1,S):0}function dc(S,F,G,J,Ae){if(T)return fs(4,1,S,F,G,J,Ae)}function pc(S,F,G,J){if(T)return fs(5,1,S,F,G,J);for(var Ae=0,ge=0;ge>2],Ce=o()[F+(ge*8+4)>>2],ft=0;ft>2]=Ae,0}function Og(S){var F=Fe.threadExitHandlers.pop();S&&F()}function zg(S,F){Fe.threadExitHandlers.push(function(){Zr.get(S)(F)})}function hc(S){if(T)throw"Internal Error! spawnThread() can only ever be called from main application thread!";var F=Fe.getNewWorker();if(F.pthread!==void 0)throw"Internal error!";if(!S.pthread_ptr)throw"Internal error, no pthread ptr!";Fe.runningWorkers.push(F);for(var G=to(512),J=0;J<128;++J)o()[G+J*4>>2]=0;var Ae=S.stackBase+S.stackSize,ge=Fe.pthreads[S.pthread_ptr]={worker:F,stackBase:S.stackBase,stackSize:S.stackSize,allocatedOwnStack:S.allocatedOwnStack,threadInfoStruct:S.pthread_ptr},ye=ge.threadInfoStruct>>2;Atomics.store(l(),ye+16,S.detached),Atomics.store(l(),ye+25,G),Atomics.store(l(),ye+10,ge.threadInfoStruct),Atomics.store(l(),ye+20,S.stackSize),Atomics.store(l(),ye+19,Ae),Atomics.store(l(),ye+26,S.stackSize),Atomics.store(l(),ye+28,Ae),Atomics.store(l(),ye+29,S.detached);var Ce=N5(),ft=Ce+40;Atomics.store(l(),ye+43,ft),F.pthread=ge;var lr={cmd:"run",start_routine:S.startRoutine,arg:S.arg,threadInfoStruct:S.pthread_ptr,stackBase:S.stackBase,stackSize:S.stackSize};F.runPthread=function(){lr.time=performance.now(),F.postMessage(lr,S.transferList)},F.loaded&&(F.runPthread(),delete F.runPthread)}function Dg(S,F,G,J){if(typeof SharedArrayBuffer=="undefined")return K("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;if(!S)return K("pthread_create called with a null thread pointer!"),28;var Ae=[],ge=0;if(T&&(Ae.length===0||ge))return $5(687865856,S,F,G,J);if(ge)return ge;var ye=0,Ce=0,ft=0;F&&F!=-1?(ye=o()[F>>2],ye+=81920,Ce=o()[F+8>>2],ft=o()[F+12>>2]!==0):ye=2097152;var lr=Ce==0;lr?Ce=z5(16,ye):(Ce-=ye,Re(Ce>0));for(var Jt=to(228),As=0;As<57;++As)l()[(Jt>>2)+As]=0;o()[S>>2]=Jt,o()[Jt+12>>2]=Jt;var ql=Jt+152;o()[ql>>2]=ql;var Qr={stackBase:Ce,stackSize:ye,allocatedOwnStack:lr,detached:ft,startRoutine:G,pthread_ptr:Jt,arg:J,transferList:Ae};return T?(Qr.cmd="spawnThread",postMessage(Qr,Ae)):hc(Qr),0}function _g(){if(T){var S=ys();if(S){var F=Atomics.load(l(),S+56>>2);if(!F){var G=Atomics.load(l(),S+0>>2);if(G==2)throw"Canceled!"}}}}function Lg(){v||b||W("Blocking on the main thread is very dangerous, see https://emscripten.org/docs/porting/pthreads.html#blocking-on-the-main-browser-thread")}function Bg(S,F,G){if(!S)return K("pthread_join attempted on a null thread pointer!"),cs.ESRCH;if(T&&ys()==S)return K("PThread "+S+" is attempting to join to itself!"),cs.EDEADLK;if(!T&&F5()==S)return K("Main thread "+S+" is attempting to join to itself!"),cs.EDEADLK;var J=o()[S+12>>2];if(J!==S)return K("pthread_join attempted on thread "+S+", which does not point to a valid thread, or does not exist anymore!"),cs.ESRCH;var Ae=Atomics.load(l(),S+64>>2);if(Ae)return K("Attempted to join thread "+S+", which was already detached!"),cs.EINVAL;for(G&&Lg();;){var ge=Atomics.load(l(),S+0>>2);if(ge==1){var ye=Atomics.load(l(),S+4>>2);return F&&(o()[F>>2]=ye),Atomics.store(l(),S+64>>2,1),T?postMessage({cmd:"cleanupThread",thread:S}):sc(S),0}if(!G)return cs.EBUSY;_g(),T||xc(),ic(S+0,ge,T?100:1)}}function Wg(S,F){return Bg(S,F,!0)}function cc(S){if(T)return fs(6,1,S);switch(S){case 30:return 16384;case 85:var F=2147483648;return F/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:case 80:case 81:case 79:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return typeof navigator=="object"&&navigator.hardwareConcurrency||1}return ig(28),-1}T||Fe.initMainThreadBlock();var ms,Vg=[null,og,lc,uc,dc,pc,cc],Ug={e:ng,r:sg,x:lg,b:ug,y:dg,j:pg,d:ic,c:Ud,f:eo,p:hg,A:cg,u:mg,q:Ag,v:Sg,i:Tg,s:Cg,w:Pg,l:uc,n:dc,g:pc,o:J0,a:ie||u.wasmMemory,z:Og,k:zg,h:Dg,m:Wg,t:cc},T5=Y0(),fc=u.___wasm_call_ctors=function(){return(fc=u.___wasm_call_ctors=u.asm.B).apply(null,arguments)},Gg=u._init=function(){return(Gg=u._init=u.asm.C).apply(null,arguments)},jg=u._init_with_threads_count=function(){return(jg=u._init_with_threads_count=u.asm.D).apply(null,arguments)},Hg=u._get_threads_count=function(){return(Hg=u._get_threads_count=u.asm.E).apply(null,arguments)},qg=u._register_tensor=function(){return(qg=u._register_tensor=u.asm.F).apply(null,arguments)},Kg=u._dispose_data=function(){return(Kg=u._dispose_data=u.asm.G).apply(null,arguments)},Xg=u._dispose=function(){return(Xg=u._dispose=u.asm.H).apply(null,arguments)},Zg=u._Abs=function(){return(Zg=u._Abs=u.asm.I).apply(null,arguments)},Yg=u._Add=function(){return(Yg=u._Add=u.asm.J).apply(null,arguments)},Jg=u._AddN=function(){return(Jg=u._AddN=u.asm.K).apply(null,arguments)},Qg=u._All=function(){return(Qg=u._All=u.asm.L).apply(null,arguments)},e1=u._Any=function(){return(e1=u._Any=u.asm.M).apply(null,arguments)},t1=u._ArgMax=function(){return(t1=u._ArgMax=u.asm.N).apply(null,arguments)},r1=u._AvgPool=function(){return(r1=u._AvgPool=u.asm.O).apply(null,arguments)},a1=u._BatchMatMul=function(){return(a1=u._BatchMatMul=u.asm.P).apply(null,arguments)},n1=u._Ceil=function(){return(n1=u._Ceil=u.asm.Q).apply(null,arguments)},s1=u._ClipByValue=function(){return(s1=u._ClipByValue=u.asm.R).apply(null,arguments)},i1=u._Conv2D=function(){return(i1=u._Conv2D=u.asm.S).apply(null,arguments)},o1=u._Conv2DBackpropInput=function(){return(o1=u._Conv2DBackpropInput=u.asm.T).apply(null,arguments)},l1=u._Cos=function(){return(l1=u._Cos=u.asm.U).apply(null,arguments)},u1=u._Cosh=function(){return(u1=u._Cosh=u.asm.V).apply(null,arguments)},mc=u._CropAndResize=function(){return(mc=u._CropAndResize=u.asm.W).apply(null,arguments)},gc=u._Cumsum=function(){return(gc=u._Cumsum=u.asm.X).apply(null,arguments)},qd=u._DepthToSpace=function(){return(qd=u._DepthToSpace=u.asm.Y).apply(null,arguments)},Wl=u._DepthwiseConv2dNative=function(){return(Wl=u._DepthwiseConv2dNative=u.asm.Z).apply(null,arguments)},d1=u._Elu=function(){return(d1=u._Elu=u.asm._).apply(null,arguments)},Kd=u._Equal=function(){return(Kd=u._Equal=u.asm.$).apply(null,arguments)},Vl=u._Exp=function(){return(Vl=u._Exp=u.asm.aa).apply(null,arguments)},Ul=u._FlipLeftRight=function(){return(Ul=u._FlipLeftRight=u.asm.ba).apply(null,arguments)},p1=u._Floor=function(){return(p1=u._Floor=u.asm.ca).apply(null,arguments)},te=u._FloorDiv=function(){return(te=u._FloorDiv=u.asm.da).apply(null,arguments)},le=u._FusedBatchNorm=function(){return(le=u._FusedBatchNorm=u.asm.ea).apply(null,arguments)},Me=u._FusedConv2D=function(){return(Me=u._FusedConv2D=u.asm.fa).apply(null,arguments)},ot=u._FusedDepthwiseConv2D=function(){return(ot=u._FusedDepthwiseConv2D=u.asm.ga).apply(null,arguments)},Lt=u._Gather=function(){return(Lt=u._Gather=u.asm.ha).apply(null,arguments)},Rt=u._GatherNd=function(){return(Rt=u._GatherNd=u.asm.ia).apply(null,arguments)},Qe=u._Greater=function(){return(Qe=u._Greater=u.asm.ja).apply(null,arguments)},tt=u._GreaterEqual=function(){return(tt=u._GreaterEqual=u.asm.ka).apply(null,arguments)},yr=u._LeakyRelu=function(){return(yr=u._LeakyRelu=u.asm.la).apply(null,arguments)},_n=u._Less=function(){return(_n=u._Less=u.asm.ma).apply(null,arguments)},Ln=u._LessEqual=function(){return(Ln=u._LessEqual=u.asm.na).apply(null,arguments)},yc=u._Log=function(){return(yc=u._Log=u.asm.oa).apply(null,arguments)},Xd=u._LogicalAnd=function(){return(Xd=u._LogicalAnd=u.asm.pa).apply(null,arguments)},wa=u._Max=function(){return(wa=u._Max=u.asm.qa).apply(null,arguments)},gs=u._MaxPool=function(){return(gs=u._MaxPool=u.asm.ra).apply(null,arguments)},Ac=u._Maximum=function(){return(Ac=u._Maximum=u.asm.sa).apply(null,arguments)},a9=u._Mean=function(){return(a9=u._Mean=u.asm.ta).apply(null,arguments)},n9=u._Min=function(){return(n9=u._Min=u.asm.ua).apply(null,arguments)},s9=u._Minimum=function(){return(s9=u._Minimum=u.asm.va).apply(null,arguments)},i9=u._MirrorPad=function(){return(i9=u._MirrorPad=u.asm.wa).apply(null,arguments)},o9=u._Multiply=function(){return(o9=u._Multiply=u.asm.xa).apply(null,arguments)},l9=u._Neg=function(){return(l9=u._Neg=u.asm.ya).apply(null,arguments)},u9=u._NonMaxSuppressionV3=function(){return(u9=u._NonMaxSuppressionV3=u.asm.za).apply(null,arguments)},d9=u._NonMaxSuppressionV4=function(){return(d9=u._NonMaxSuppressionV4=u.asm.Aa).apply(null,arguments)},p9=u._NonMaxSuppressionV5=function(){return(p9=u._NonMaxSuppressionV5=u.asm.Ba).apply(null,arguments)},h9=u._NotEqual=function(){return(h9=u._NotEqual=u.asm.Ca).apply(null,arguments)},c9=u._OneHot=function(){return(c9=u._OneHot=u.asm.Da).apply(null,arguments)},f9=u._PadV2=function(){return(f9=u._PadV2=u.asm.Ea).apply(null,arguments)},m9=u._Pow=function(){return(m9=u._Pow=u.asm.Fa).apply(null,arguments)},g9=u._Prelu=function(){return(g9=u._Prelu=u.asm.Ga).apply(null,arguments)},y9=u._Prod=function(){return(y9=u._Prod=u.asm.Ha).apply(null,arguments)},A9=u._RealDiv=function(){return(A9=u._RealDiv=u.asm.Ia).apply(null,arguments)},x9=u._Relu=function(){return(x9=u._Relu=u.asm.Ja).apply(null,arguments)},b9=u._Relu6=function(){return(b9=u._Relu6=u.asm.Ka).apply(null,arguments)},v9=u._ResizeBilinear=function(){return(v9=u._ResizeBilinear=u.asm.La).apply(null,arguments)},w9=u._Reverse=function(){return(w9=u._Reverse=u.asm.Ma).apply(null,arguments)},k9=u._RotateWithOffset=function(){return(k9=u._RotateWithOffset=u.asm.Na).apply(null,arguments)},I9=u._Round=function(){return(I9=u._Round=u.asm.Oa).apply(null,arguments)},S9=u._Rsqrt=function(){return(S9=u._Rsqrt=u.asm.Pa).apply(null,arguments)},T9=u._ScatterNd=function(){return(T9=u._ScatterNd=u.asm.Qa).apply(null,arguments)},C9=u._SelectV2=function(){return(C9=u._SelectV2=u.asm.Ra).apply(null,arguments)},N9=u._Sigmoid=function(){return(N9=u._Sigmoid=u.asm.Sa).apply(null,arguments)},E9=u._Sin=function(){return(E9=u._Sin=u.asm.Ta).apply(null,arguments)},R9=u._Softmax=function(){return(R9=u._Softmax=u.asm.Ua).apply(null,arguments)},F9=u._SparseFillEmptyRows=function(){return(F9=u._SparseFillEmptyRows=u.asm.Va).apply(null,arguments)},M9=u._SparseReshape=function(){return(M9=u._SparseReshape=u.asm.Wa).apply(null,arguments)},$9=u._SparseSegmentReduction=function(){return($9=u._SparseSegmentReduction=u.asm.Xa).apply(null,arguments)},P9=u._Sqrt=function(){return(P9=u._Sqrt=u.asm.Ya).apply(null,arguments)},O9=u._Square=function(){return(O9=u._Square=u.asm.Za).apply(null,arguments)},z9=u._SquaredDifference=function(){return(z9=u._SquaredDifference=u.asm._a).apply(null,arguments)},D9=u._Step=function(){return(D9=u._Step=u.asm.$a).apply(null,arguments)},_9=u._StridedSlice=function(){return(_9=u._StridedSlice=u.asm.ab).apply(null,arguments)},L9=u._Sub=function(){return(L9=u._Sub=u.asm.bb).apply(null,arguments)},B9=u._Sum=function(){return(B9=u._Sum=u.asm.cb).apply(null,arguments)},W9=u._Tan=function(){return(W9=u._Tan=u.asm.db).apply(null,arguments)},V9=u._Tanh=function(){return(V9=u._Tanh=u.asm.eb).apply(null,arguments)},U9=u._Tile=function(){return(U9=u._Tile=u.asm.fb).apply(null,arguments)},G9=u._TopK=function(){return(G9=u._TopK=u.asm.gb).apply(null,arguments)},j9=u._Transform=function(){return(j9=u._Transform=u.asm.hb).apply(null,arguments)},H9=u._Transpose=function(){return(H9=u._Transpose=u.asm.ib).apply(null,arguments)},q9=u.__FusedMatMul=function(){return(q9=u.__FusedMatMul=u.asm.jb).apply(null,arguments)},to=u._malloc=function(){return(to=u._malloc=u.asm.kb).apply(null,arguments)},Zd=u._free=function(){return(Zd=u._free=u.asm.lb).apply(null,arguments)},C5=u.___errno_location=function(){return(C5=u.___errno_location=u.asm.mb).apply(null,arguments)},N5=u._emscripten_get_global_libc=function(){return(N5=u._emscripten_get_global_libc=u.asm.ob).apply(null,arguments)},ys=u._pthread_self=function(){return(ys=u._pthread_self=u.asm.pb).apply(null,arguments)},E5=u.___pthread_tsd_run_dtors=function(){return(E5=u.___pthread_tsd_run_dtors=u.asm.qb).apply(null,arguments)},xc=u._emscripten_main_thread_process_queued_calls=function(){return(xc=u._emscripten_main_thread_process_queued_calls=u.asm.rb).apply(null,arguments)},K9=u._emscripten_current_thread_process_queued_calls=function(){return(K9=u._emscripten_current_thread_process_queued_calls=u.asm.sb).apply(null,arguments)},R5=u._emscripten_register_main_browser_thread_id=function(){return(R5=u._emscripten_register_main_browser_thread_id=u.asm.tb).apply(null,arguments)},F5=u._emscripten_main_browser_thread_id=function(){return(F5=u._emscripten_main_browser_thread_id=u.asm.ub).apply(null,arguments)},M5=u.__emscripten_do_dispatch_to_thread=function(){return(M5=u.__emscripten_do_dispatch_to_thread=u.asm.vb).apply(null,arguments)},$5=u._emscripten_sync_run_in_main_thread_4=function(){return($5=u._emscripten_sync_run_in_main_thread_4=u.asm.wb).apply(null,arguments)},P5=u._emscripten_run_in_main_runtime_thread_js=function(){return(P5=u._emscripten_run_in_main_runtime_thread_js=u.asm.xb).apply(null,arguments)},h1=u.__emscripten_call_on_thread=function(){return(h1=u.__emscripten_call_on_thread=u.asm.yb).apply(null,arguments)},X9=u._emscripten_tls_init=function(){return(X9=u._emscripten_tls_init=u.asm.zb).apply(null,arguments)},c1=u.__emscripten_thread_init=function(){return(c1=u.__emscripten_thread_init=u.asm.Ab).apply(null,arguments)},Yd=u.stackSave=function(){return(Yd=u.stackSave=u.asm.Bb).apply(null,arguments)},Gl=u.stackRestore=function(){return(Gl=u.stackRestore=u.asm.Cb).apply(null,arguments)},jl=u.stackAlloc=function(){return(jl=u.stackAlloc=u.asm.Db).apply(null,arguments)},O5=u._emscripten_stack_set_limits=function(){return(O5=u._emscripten_stack_set_limits=u.asm.Eb).apply(null,arguments)},z5=u._memalign=function(){return(z5=u._memalign=u.asm.Fb).apply(null,arguments)},D5=u.__emscripten_allow_main_runtime_queued_calls=10208,Hl=u.__emscripten_main_thread_futex=10412;u.cwrap=qe,u.PThread=Fe,u.PThread=Fe,u.wasmMemory=ie,u.ExitStatus=Jd;var bc;function Jd(S){this.name="ExitStatus",this.message="Program terminated with exit("+S+")",this.status=S}Ji=function S(){bc||f1(),bc||(Ji=S)};function f1(S){if(S=S||g,_a>0)return;if(T){p(u),Jh(),postMessage({cmd:"loaded"});return}if(Yh(),_a>0)return;function F(){bc||(bc=!0,u.calledRun=!0,!be&&(Jh(),Qh(),p(u),u.onRuntimeInitialized&&u.onRuntimeInitialized(),ec()))}u.setStatus?(u.setStatus("Running..."),setTimeout(function(){setTimeout(function(){u.setStatus("")},1),F()},1)):F()}u.run=f1;function Z9(S,F){if(!(F&&ae&&S===0)){if(!F&&T)throw postMessage({cmd:"exitProcess",returnCode:S}),new Jd(S);ae||(Fe.terminateAllThreads(),Te=S,Yr(),u.onExit&&u.onExit(S),be=!0),A(S,new Jd(S))}}if(u.preInit)for(typeof u.preInit=="function"&&(u.preInit=[u.preInit]);u.preInit.length>0;)u.preInit.pop()();T&&(ae=!1,Fe.initWorker()),f1();var vc;c&&(vc={uncaughtException:process.listeners("uncaughtException").filter(function(S){return!c.uncaughtException.indexOf(S)>-1}),unhandledRejection:process.listeners("unhandledRejection").filter(function(S){return!c.unhandledRejection.indexOf(S)>-1})});var wc;if(typeof WasmBackendModule!="undefined")wc=WasmBackendModule;else if(typeof n!="undefined")wc=n;else throw new Error("Could not find wasm module in post.js");if(vc){var Y9=wc._dispose;wc._dispose=function(){Y9(),vc.uncaughtException.forEach(function(S){process.removeListener("uncaughtException",S)}),vc.unhandledRejection.forEach(function(S){process.removeListener("unhandledRejection",S)})}}return n.ready}}();typeof e=="object"&&typeof t=="object"?t.exports=r:typeof define=="function"&&define.amd?define([],function(){return r}):typeof e=="object"&&(e.WasmBackendModuleThreadedSimd=r)}}),TE=sr({"src/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js"(e,t){var r=function(){var a=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(a=a||__filename),function(n){n=n||{};var s=typeof n!="undefined"?n:{},i,o;s.ready=new Promise(function(te,le){i=te,o=le});var l;typeof process!="undefined"&&process.listeners&&(l={uncaughtException:process.listeners("uncaughtException"),unhandledRejection:process.listeners("unhandledRejection")});var d={},u;for(u in s)s.hasOwnProperty(u)&&(d[u]=s[u]);var p=[],h="./this.program",c=function(te,le){throw le},f=!1,m=!1,g=!1,y=!1;f=typeof window=="object",m=typeof importScripts=="function",g=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",y=!f&&!g&&!m;var A="";function x(te){return s.locateFile?s.locateFile(te,A):A+te}var b,v,C,T,E,R;g?(m?A=yp().dirname(A)+"/":A=__dirname+"/",b=function(te,le){return E||(E=Hc()),R||(R=yp()),te=R.normalize(te),E.readFileSync(te,le?null:"utf8")},C=function(te){var le=b(te,!0);return le.buffer||(le=new Uint8Array(le)),_(le.buffer),le},process.argv.length>1&&(h=process.argv[1].replace(/\\/g,"/")),p=process.argv.slice(2),process.on("uncaughtException",function(te){if(!(te instanceof d1))throw te}),process.on("unhandledRejection",zn),c=function(te){process.exit(te)},s.inspect=function(){return"[Emscripten Module object]"}):y?(typeof read!="undefined"&&(b=function(te){return read(te)}),C=function(te){var le;return typeof readbuffer=="function"?new Uint8Array(readbuffer(te)):(le=read(te,"binary"),_(typeof le=="object"),le)},typeof scriptArgs!="undefined"?p=scriptArgs:typeof arguments!="undefined"&&(p=arguments),typeof quit=="function"&&(c=function(te){quit(te)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(f||m)&&(m?A=self.location.href:typeof document!="undefined"&&document.currentScript&&(A=document.currentScript.src),a&&(A=a),A.indexOf("blob:")!==0?A=A.substr(0,A.lastIndexOf("/")+1):A="",b=function(te){var le=new XMLHttpRequest;return le.open("GET",te,!1),le.send(null),le.responseText},m&&(C=function(te){var le=new XMLHttpRequest;return le.open("GET",te,!1),le.responseType="arraybuffer",le.send(null),new Uint8Array(le.response)}),v=function(te,le,Me){var ot=new XMLHttpRequest;ot.open("GET",te,!0),ot.responseType="arraybuffer",ot.onload=function(){if(ot.status==200||ot.status==0&&ot.response){le(ot.response);return}Me()},ot.onerror=Me,ot.send(null)},T=function(te){document.title=te});var z=s.print||console.log.bind(console),M=s.printErr||console.warn.bind(console);for(u in d)d.hasOwnProperty(u)&&(s[u]=d[u]);d=null,s.arguments&&(p=s.arguments),s.thisProgram&&(h=s.thisProgram),s.quit&&(c=s.quit);var I;s.wasmBinary&&(I=s.wasmBinary);var D=s.noExitRuntime||!0;typeof WebAssembly!="object"&&zn("no native wasm support detected");var O,j=!1,X;function _(te,le){te||zn("Assertion failed: "+le)}function K(te){var le=s["_"+te];return _(le,"Cannot call unknown function "+te+", make sure it is exported"),le}function W(te,le,Me,ot,Lt){var Rt={string:function(wa){var gs=0;if(wa!=null&&wa!==0){var Ac=(wa.length<<2)+1;gs=qd(Ac),ie(wa,gs,Ac)}return gs},array:function(wa){var gs=qd(wa.length);return xe(wa,gs),gs}};function Qe(wa){return le==="string"?Z(wa):le==="boolean"?Boolean(wa):wa}var tt=K(te),yr=[],_n=0;if(ot)for(var Ln=0;Ln=ot);)++Lt;if(Lt-le>16&&te.subarray&&Q)return Q.decode(te.subarray(le,Lt));for(var Rt="";le>10,56320|_n&1023)}}return Rt}function Z(te,le){return te?ne($e,te,le):""}function ae(te,le,Me,ot){if(!(ot>0))return 0;for(var Lt=Me,Rt=Me+ot-1,Qe=0;Qe=55296&&tt<=57343){var yr=te.charCodeAt(++Qe);tt=65536+((tt&1023)<<10)|yr&1023}if(tt<=127){if(Me>=Rt)break;le[Me++]=tt}else if(tt<=2047){if(Me+1>=Rt)break;le[Me++]=192|tt>>6,le[Me++]=128|tt&63}else if(tt<=65535){if(Me+2>=Rt)break;le[Me++]=224|tt>>12,le[Me++]=128|tt>>6&63,le[Me++]=128|tt&63}else{if(Me+3>=Rt)break;le[Me++]=240|tt>>18,le[Me++]=128|tt>>12&63,le[Me++]=128|tt>>6&63,le[Me++]=128|tt&63}}return le[Me]=0,Me-Lt}function ie(te,le,Me){return ae(te,$e,le,Me)}function xe(te,le){Re.set(te,le)}function be(te,le){return te%le>0&&(te+=le-te%le),te}var Te,Re,$e,_e,qe,Ze,st,ht,ct;function yt(te){Te=te,s.HEAP8=Re=new Int8Array(te),s.HEAP16=_e=new Int16Array(te),s.HEAP32=Ze=new Int32Array(te),s.HEAPU8=$e=new Uint8Array(te),s.HEAPU16=qe=new Uint16Array(te),s.HEAPU32=st=new Uint32Array(te),s.HEAPF32=ht=new Float32Array(te),s.HEAPF64=ct=new Float64Array(te)}var Et=s.INITIAL_MEMORY||16777216,Hr,ut=[],qr=[],gr=[],Kr=[],za=!1;qr.push({func:function(){ac()}});function Xr(){if(s.preRun)for(typeof s.preRun=="function"&&(s.preRun=[s.preRun]);s.preRun.length;)ia(s.preRun.shift());_a(ut)}function Rr(){za=!0,_a(qr)}function Da(){_a(gr)}function xn(){if(s.postRun)for(typeof s.postRun=="function"&&(s.postRun=[s.postRun]);s.postRun.length;)_l(s.postRun.shift());_a(Kr)}function ia(te){ut.unshift(te)}function _l(te){Kr.unshift(te)}var Zr=0,hs=null,va=null;function Bd(te){Zr++,s.monitorRunDependencies&&s.monitorRunDependencies(Zr)}function Wd(te){if(Zr--,s.monitorRunDependencies&&s.monitorRunDependencies(Zr),Zr==0&&(hs!==null&&(clearInterval(hs),hs=null),va)){var le=va;va=null,le()}}s.preloadedImages={},s.preloadedAudios={};function zn(te){s.onAbort&&s.onAbort(te),te+="",M(te),j=!0,X=1,te="abort("+te+"). Build with -s ASSERTIONS=1 for more info.";var le=new WebAssembly.RuntimeError(te);throw o(le),le}function Zh(te,le){return String.prototype.startsWith?te.startsWith(le):te.indexOf(le)===0}var U0="data:application/octet-stream;base64,";function Yh(te){return Zh(te,U0)}var Jh="file://";function Qh(te){return Zh(te,Jh)}var Yr="tfjs-backend-wasm.wasm";Yh(Yr)||(Yr=x(Yr));function ec(te){try{if(te==Yr&&I)return new Uint8Array(I);if(C)return C(te);throw"both async and sync fetching of the wasm failed"}catch(le){zn(le)}}function G0(){if(!I&&(f||m)){if(typeof fetch=="function"&&!Qh(Yr))return fetch(Yr,{credentials:"same-origin"}).then(function(te){if(!te.ok)throw"failed to load wasm binary file at '"+Yr+"'";return te.arrayBuffer()}).catch(function(){return ec(Yr)});if(v)return new Promise(function(te,le){v(Yr,function(Me){te(new Uint8Array(Me))},le)})}return Promise.resolve().then(function(){return ec(Yr)})}function j0(){var te={a:Jr};function le(Qe,tt){var yr=Qe.exports;s.asm=yr,O=s.asm.h,yt(O.buffer),Hr=s.asm.Va,Wd("wasm-instantiate")}Bd("wasm-instantiate");function Me(Qe){le(Qe.instance)}function ot(Qe){return G0().then(function(tt){return WebAssembly.instantiate(tt,te)}).then(Qe,function(tt){M("failed to asynchronously prepare wasm: "+tt),zn(tt)})}function Lt(){return!I&&typeof WebAssembly.instantiateStreaming=="function"&&!Yh(Yr)&&!Qh(Yr)&&typeof fetch=="function"?fetch(Yr,{credentials:"same-origin"}).then(function(Qe){var tt=WebAssembly.instantiateStreaming(Qe,te);return tt.then(Me,function(yr){return M("wasm streaming compile failed: "+yr),M("falling back to ArrayBuffer instantiation"),ot(Me)})}):ot(Me)}if(s.instantiateWasm)try{var Rt=s.instantiateWasm(te,le);return Rt}catch(Qe){return M("Module.instantiateWasm callback failed with error: "+Qe),!1}return Lt().catch(o),{}}function _a(te){for(;te.length>0;){var le=te.shift();if(typeof le=="function"){le(s);continue}var Me=le.func;typeof Me=="number"?le.arg===void 0?Hr.get(Me)():Hr.get(Me)(le.arg):Me(le.arg===void 0?null:le.arg)}}function Vd(){zn()}function Ji(te,le,Me){$e.copyWithin(te,le,le+Me)}function H0(){return $e.length}function q0(te){try{return O.grow(te-Te.byteLength+65535>>>16),yt(O.buffer),1}catch(le){}}function Dn(te){var le=H0(),Me=2147483648;if(te>Me)return!1;for(var ot=1;ot<=4;ot*=2){var Lt=le*(1+.2/ot);Lt=Math.min(Lt,te+100663296);var Rt=Math.min(Me,be(Math.max(te,Lt),65536)),Qe=q0(Rt);if(Qe)return!0}return!1}var Qi={mappings:{},buffers:[null,[],[]],printChar:function(te,le){var Me=Qi.buffers[te];le===0||le===10?((te===1?z:M)(ne(Me,0)),Me.length=0):Me.push(le)},varargs:void 0,get:function(){Qi.varargs+=4;var te=Ze[Qi.varargs-4>>2];return te},getStr:function(te){var le=Z(te);return le},get64:function(te,le){return te}};function K0(te){return 0}function tc(te,le,Me,ot,Lt){}function X0(te,le,Me,ot){for(var Lt=0,Rt=0;Rt>2],tt=Ze[le+(Rt*8+4)>>2],yr=0;yr>2]=Lt,0}function rc(){return 28}var Jr={a:Vd,d:Ji,e:Dn,f:K0,c:tc,b:X0,g:rc},Z0=j0(),ac=s.___wasm_call_ctors=function(){return(ac=s.___wasm_call_ctors=s.asm.i).apply(null,arguments)},Y0=s._init=function(){return(Y0=s._init=s.asm.j).apply(null,arguments)},nc=s._init_with_threads_count=function(){return(nc=s._init_with_threads_count=s.asm.k).apply(null,arguments)},J0=s._get_threads_count=function(){return(J0=s._get_threads_count=s.asm.l).apply(null,arguments)},Ll=s._register_tensor=function(){return(Ll=s._register_tensor=s.asm.m).apply(null,arguments)},cs=s._dispose_data=function(){return(cs=s._dispose_data=s.asm.n).apply(null,arguments)},Ud=s._dispose=function(){return(Ud=s._dispose=s.asm.o).apply(null,arguments)},Q0=s._Abs=function(){return(Q0=s._Abs=s.asm.p).apply(null,arguments)},eg=s._Add=function(){return(eg=s._Add=s.asm.q).apply(null,arguments)},sc=s._AddN=function(){return(sc=s._AddN=s.asm.r).apply(null,arguments)},Fe=s._All=function(){return(Fe=s._All=s.asm.s).apply(null,arguments)},tg=s._Any=function(){return(tg=s._Any=s.asm.t).apply(null,arguments)},rg=s._ArgMax=function(){return(rg=s._ArgMax=s.asm.u).apply(null,arguments)},ag=s._AvgPool=function(){return(ag=s._AvgPool=s.asm.v).apply(null,arguments)},ng=s._BatchMatMul=function(){return(ng=s._BatchMatMul=s.asm.w).apply(null,arguments)},sg=s._Ceil=function(){return(sg=s._Ceil=s.asm.x).apply(null,arguments)},eo=s._ClipByValue=function(){return(eo=s._ClipByValue=s.asm.y).apply(null,arguments)},ig=s._Conv2D=function(){return(ig=s._Conv2D=s.asm.z).apply(null,arguments)},og=s._Conv2DBackpropInput=function(){return(og=s._Conv2DBackpropInput=s.asm.A).apply(null,arguments)},lg=s._Cos=function(){return(lg=s._Cos=s.asm.B).apply(null,arguments)},ug=s._Cosh=function(){return(ug=s._Cosh=s.asm.C).apply(null,arguments)},dg=s._CropAndResize=function(){return(dg=s._CropAndResize=s.asm.D).apply(null,arguments)},pg=s._Cumsum=function(){return(pg=s._Cumsum=s.asm.E).apply(null,arguments)},ic=s._DepthToSpace=function(){return(ic=s._DepthToSpace=s.asm.F).apply(null,arguments)},hg=s._DepthwiseConv2dNative=function(){return(hg=s._DepthwiseConv2dNative=s.asm.G).apply(null,arguments)},cg=s._Elu=function(){return(cg=s._Elu=s.asm.H).apply(null,arguments)},fs=s._Equal=function(){return(fs=s._Equal=s.asm.I).apply(null,arguments)},Gd=s._Exp=function(){return(Gd=s._Exp=s.asm.J).apply(null,arguments)},jd=s._FlipLeftRight=function(){return(jd=s._FlipLeftRight=s.asm.K).apply(null,arguments)},fg=s._Floor=function(){return(fg=s._Floor=s.asm.L).apply(null,arguments)},mg=s._FloorDiv=function(){return(mg=s._FloorDiv=s.asm.M).apply(null,arguments)},gg=s._FusedBatchNorm=function(){return(gg=s._FusedBatchNorm=s.asm.N).apply(null,arguments)},yg=s._FusedConv2D=function(){return(yg=s._FusedConv2D=s.asm.O).apply(null,arguments)},Ag=s._FusedDepthwiseConv2D=function(){return(Ag=s._FusedDepthwiseConv2D=s.asm.P).apply(null,arguments)},je=s._Gather=function(){return(je=s._Gather=s.asm.Q).apply(null,arguments)},xg=s._GatherNd=function(){return(xg=s._GatherNd=s.asm.R).apply(null,arguments)},bg=s._Greater=function(){return(bg=s._Greater=s.asm.S).apply(null,arguments)},vg=s._GreaterEqual=function(){return(vg=s._GreaterEqual=s.asm.T).apply(null,arguments)},wg=s._LeakyRelu=function(){return(wg=s._LeakyRelu=s.asm.U).apply(null,arguments)},kg=s._Less=function(){return(kg=s._Less=s.asm.V).apply(null,arguments)},Ig=s._LessEqual=function(){return(Ig=s._LessEqual=s.asm.W).apply(null,arguments)},Hd=s._Log=function(){return(Hd=s._Log=s.asm.X).apply(null,arguments)},oc=s._LogicalAnd=function(){return(oc=s._LogicalAnd=s.asm.Y).apply(null,arguments)},lc=s._Max=function(){return(lc=s._Max=s.asm.Z).apply(null,arguments)},Sg=s._MaxPool=function(){return(Sg=s._MaxPool=s.asm._).apply(null,arguments)},Tg=s._Maximum=function(){return(Tg=s._Maximum=s.asm.$).apply(null,arguments)},Cg=s._Mean=function(){return(Cg=s._Mean=s.asm.aa).apply(null,arguments)},Ng=s._Min=function(){return(Ng=s._Min=s.asm.ba).apply(null,arguments)},Eg=s._Minimum=function(){return(Eg=s._Minimum=s.asm.ca).apply(null,arguments)},Rg=s._MirrorPad=function(){return(Rg=s._MirrorPad=s.asm.da).apply(null,arguments)},Fg=s._Multiply=function(){return(Fg=s._Multiply=s.asm.ea).apply(null,arguments)},dt=s._Neg=function(){return(dt=s._Neg=s.asm.fa).apply(null,arguments)},Mg=s._NonMaxSuppressionV3=function(){return(Mg=s._NonMaxSuppressionV3=s.asm.ga).apply(null,arguments)},$g=s._NonMaxSuppressionV4=function(){return($g=s._NonMaxSuppressionV4=s.asm.ha).apply(null,arguments)},Pg=s._NonMaxSuppressionV5=function(){return(Pg=s._NonMaxSuppressionV5=s.asm.ia).apply(null,arguments)},Bl=s._NotEqual=function(){return(Bl=s._NotEqual=s.asm.ja).apply(null,arguments)},uc=s._OneHot=function(){return(uc=s._OneHot=s.asm.ka).apply(null,arguments)},dc=s._PadV2=function(){return(dc=s._PadV2=s.asm.la).apply(null,arguments)},pc=s._Pow=function(){return(pc=s._Pow=s.asm.ma).apply(null,arguments)},Og=s._Prelu=function(){return(Og=s._Prelu=s.asm.na).apply(null,arguments)},zg=s._Prod=function(){return(zg=s._Prod=s.asm.oa).apply(null,arguments)},hc=s._RealDiv=function(){return(hc=s._RealDiv=s.asm.pa).apply(null,arguments)},Dg=s._Relu=function(){return(Dg=s._Relu=s.asm.qa).apply(null,arguments)},_g=s._Relu6=function(){return(_g=s._Relu6=s.asm.ra).apply(null,arguments)},Lg=s._ResizeBilinear=function(){return(Lg=s._ResizeBilinear=s.asm.sa).apply(null,arguments)},Bg=s._Reverse=function(){return(Bg=s._Reverse=s.asm.ta).apply(null,arguments)},Wg=s._RotateWithOffset=function(){return(Wg=s._RotateWithOffset=s.asm.ua).apply(null,arguments)},cc=s._Round=function(){return(cc=s._Round=s.asm.va).apply(null,arguments)},ms=s._Rsqrt=function(){return(ms=s._Rsqrt=s.asm.wa).apply(null,arguments)},Vg=s._ScatterNd=function(){return(Vg=s._ScatterNd=s.asm.xa).apply(null,arguments)},Ug=s._SelectV2=function(){return(Ug=s._SelectV2=s.asm.ya).apply(null,arguments)},T5=s._Sigmoid=function(){return(T5=s._Sigmoid=s.asm.za).apply(null,arguments)},fc=s._Sin=function(){return(fc=s._Sin=s.asm.Aa).apply(null,arguments)},Gg=s._Softmax=function(){return(Gg=s._Softmax=s.asm.Ba).apply(null,arguments)},jg=s._SparseFillEmptyRows=function(){return(jg=s._SparseFillEmptyRows=s.asm.Ca).apply(null,arguments)},Hg=s._SparseReshape=function(){return(Hg=s._SparseReshape=s.asm.Da).apply(null,arguments)},qg=s._SparseSegmentReduction=function(){return(qg=s._SparseSegmentReduction=s.asm.Ea).apply(null,arguments)},Kg=s._Sqrt=function(){return(Kg=s._Sqrt=s.asm.Fa).apply(null,arguments)},Xg=s._Square=function(){return(Xg=s._Square=s.asm.Ga).apply(null,arguments)},Zg=s._SquaredDifference=function(){return(Zg=s._SquaredDifference=s.asm.Ha).apply(null,arguments)},Yg=s._Step=function(){return(Yg=s._Step=s.asm.Ia).apply(null,arguments)},Jg=s._StridedSlice=function(){return(Jg=s._StridedSlice=s.asm.Ja).apply(null,arguments)},Qg=s._Sub=function(){return(Qg=s._Sub=s.asm.Ka).apply(null,arguments)},e1=s._Sum=function(){return(e1=s._Sum=s.asm.La).apply(null,arguments)},t1=s._Tan=function(){return(t1=s._Tan=s.asm.Ma).apply(null,arguments)},r1=s._Tanh=function(){return(r1=s._Tanh=s.asm.Na).apply(null,arguments)},a1=s._Tile=function(){return(a1=s._Tile=s.asm.Oa).apply(null,arguments)},n1=s._TopK=function(){return(n1=s._TopK=s.asm.Pa).apply(null,arguments)},s1=s._Transform=function(){return(s1=s._Transform=s.asm.Qa).apply(null,arguments)},i1=s._Transpose=function(){return(i1=s._Transpose=s.asm.Ra).apply(null,arguments)},o1=s.__FusedMatMul=function(){return(o1=s.__FusedMatMul=s.asm.Sa).apply(null,arguments)},l1=s._malloc=function(){return(l1=s._malloc=s.asm.Ta).apply(null,arguments)},u1=s._free=function(){return(u1=s._free=s.asm.Ua).apply(null,arguments)},mc=s.stackSave=function(){return(mc=s.stackSave=s.asm.Wa).apply(null,arguments)},gc=s.stackRestore=function(){return(gc=s.stackRestore=s.asm.Xa).apply(null,arguments)},qd=s.stackAlloc=function(){return(qd=s.stackAlloc=s.asm.Ya).apply(null,arguments)};s.cwrap=ee;var Wl;function d1(te){this.name="ExitStatus",this.message="Program terminated with exit("+te+")",this.status=te}va=function te(){Wl||Kd(),Wl||(va=te)};function Kd(te){if(te=te||p,Zr>0||(Xr(),Zr>0))return;function le(){Wl||(Wl=!0,s.calledRun=!0,!j&&(Rr(),Da(),i(s),s.onRuntimeInitialized&&s.onRuntimeInitialized(),xn()))}s.setStatus?(s.setStatus("Running..."),setTimeout(function(){setTimeout(function(){s.setStatus("")},1),le()},1)):le()}if(s.run=Kd,s.preInit)for(typeof s.preInit=="function"&&(s.preInit=[s.preInit]);s.preInit.length>0;)s.preInit.pop()();Kd();var Vl;l&&(Vl={uncaughtException:process.listeners("uncaughtException").filter(function(te){return!l.uncaughtException.indexOf(te)>-1}),unhandledRejection:process.listeners("unhandledRejection").filter(function(te){return!l.unhandledRejection.indexOf(te)>-1})});var Ul;if(typeof n!="undefined")Ul=n;else if(typeof WasmBackendModuleThreadedSimd!="undefined")Ul=WasmBackendModuleThreadedSimd;else throw new Error("Could not find wasm module in post.js");if(Vl){var p1=Ul._dispose;Ul._dispose=function(){p1(),Vl.uncaughtException.forEach(function(te){process.removeListener("uncaughtException",te)}),Vl.unhandledRejection.forEach(function(te){process.removeListener("unhandledRejection",te)})}}return n.ready}}();typeof e=="object"&&typeof t=="object"?t.exports=r:typeof define=="function"&&define.amd?define([],function(){return r}):typeof e=="object"&&(e.WasmBackendModule=r)}}),CE=1e-7,NE=1e-4,Dp=class{constructor(e,t){this.backend=e,this.dataMover=t,this.data=new WeakMap,this.dataIdsCount=0}get(e){return this.data.has(e)||this.dataMover.moveData(this.backend,e),this.data.get(e)}set(e,t){this.dataIdsCount++,this.data.set(e,t)}has(e){return this.data.has(e)}delete(e){return this.dataIdsCount--,this.data.delete(e)}numDataIds(){return this.dataIdsCount}},Iu=class{refCount(e){return ka("refCount")}incRef(e){return ka("incRef")}timerAvailable(){return!0}time(e){return ka("time")}read(e){return ka("read")}readSync(e){return ka("readSync")}readToGPU(e,t){return ka("readToGPU")}numDataIds(){return ka("numDataIds")}disposeData(e,t){return ka("disposeData")}write(e,t,r){return ka("write")}move(e,t,r,a,n){return ka("move")}memory(){return ka("memory")}floatPrecision(){return ka("floatPrecision")}epsilon(){return this.floatPrecision()===32?CE:NE}dispose(){return ka("dispose")}};function ka(e){throw new Error(`'${e}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`)}function kv(e){let t=e.length,r=0;for(;t>0;)r=Math.random()*t|0,t--,qc(e,t,r)}function EE(e,t){if(e.length!==t.length)throw new Error(`Array sizes must match to be shuffled together First array length was ${e.length}Second array length was ${t.length}`);let r=e.length,a=0;for(;r>0;)a=Math.random()*r|0,r--,qc(e,r,a),qc(t,r,a)}function kp(e,t,r){return Math.max(e,Math.min(t,r))}function RE(e){return e%2===0?e:e+1}function qc(e,t,r){let a=e[t];e[t]=e[r],e[r]=a}function FE(e){let t=0;for(let r=0;rr+` Shapes ${e} and ${t} must match`)}function Ro(e){P(e!=null,()=>"The input to the tensor constructor must be a non-null value.")}function Ao(e,t=[],r=!1){if(t==null&&(t=[]),Array.isArray(e)||wr(e)&&!r)for(let a=0;a0,r){return new Promise((a,n)=>{let s=0,i=()=>{if(e()){a();return}s++;let o=t(s);if(r!=null&&s>=r){n();return}setTimeout(i,o)};i()})}function LE(e,t){let r=1,a=-1;for(let s=0;s=0)r*=e[s];else if(e[s]===-1){if(a!==-1)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${a} and dim ${s}`);a=s}else if(e[s]<0)throw Error(`Shapes can not be < 0. Found ${e[s]} at dim ${s}`);if(a===-1){if(t>0&&t!==r)throw Error(`Size(${t}) must match the product of shape ${e}`);return e}if(r===0)throw Error(`Cannot infer the missing size in [${e}] when there are 0 elements`);if(t%r!==0)throw Error(`The implicit shape can't be a fractional number. Got ${t} / ${r}`);let n=e.slice();return n[a]=t/r,n}function Ua(e,t){let r=t.length;return e=e==null?t.map((a,n)=>n):[].concat(e),P(e.every(a=>a>=-r&&a`All values in axis param must be in range [-${r}, ${r}) but got axis ${e}`),P(e.every(a=>du(a)),()=>`All values in axis param must be integers but got axis ${e}`),e.map(a=>a<0?r+a:a)}function Iv(e,t){let r=[],a=[],n=t!=null&&Array.isArray(t)&&t.length===0,s=t==null||n?null:Ua(t,e).sort(),i=0;for(let o=0;oo)&&e[o]===1&&(r.push(e[o]),a.push(o)),s[i]<=o&&i++}e[o]!==1&&(r.push(e[o]),a.push(o))}return{newShape:r,keptDims:a}}function Sv(e,t){let r=null;if(e==null||e==="float32")r=new Float32Array(t);else if(e==="int32")r=new Int32Array(t);else if(e==="bool")r=new Uint8Array(t);else throw new Error(`Unknown data type ${e}`);return r}function Tv(e,t){let r=null;if(e==null||e==="float32")r=new Float32Array(t);else if(e==="int32")r=new Int32Array(t);else if(e==="bool")r=new Uint8Array(t);else if(e==="string")r=new Array(t);else throw new Error(`Unknown data type ${e}`);return r}function Cv(e,t){for(let r=0;rt+=r.length),t}function Is(e){return typeof e=="string"||e instanceof String}function Rv(e){return typeof e=="boolean"}function Fv(e){return typeof e=="number"}function If(e){return Array.isArray(e)?If(e[0]):e instanceof Float32Array?"float32":e instanceof Int32Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray?"int32":Fv(e)?"float32":Is(e)?"string":Rv(e)?"bool":"float32"}function Es(e){return!!(e&&e.constructor&&e.call&&e.apply)}function Kc(e,t){for(let r=t;r=0;--a)r[a]=r[a+1]*e[a+1];return r}function Mv(e,t,r,a=!1){let n=new Array;if(t.length===1){let s=t[0]*(a?2:1);for(let i=0;il*d)*(a?2:1);for(let l=0;ln*s)*(r?2:1);if(a===0)return[];if(a!==t.length)throw new Error(`[${e}] does not match the input size ${t.length}${r?" for a complex tensor":""}.`);return Mv(0,e,t,r)}function My(e,t){let r=Sf(e,t);for(let a=0;aa*n,1);if(t==null||t==="float32")return su(e,new Float32Array(r));if(t==="int32")return su(e,new Int32Array(r));if(t==="bool")return su(e,new Uint8Array(r));throw new Error(`Unknown data type ${t}`)}function $y(e){e.forEach(t=>{P(Number.isInteger(t)&&t>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${e}].`)})}function VE(e,t,r){if(t===0)return 0;if(t===1)return e[0];let a=e[e.length-1];for(let n=0;n{let[r,a]=t.split(":");this.urlFlags[r]=HE(r,a)})}};function GE(e){let t={};return e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(r,...a)=>(jE(t,a[0],a[1]),a.join("="))),t}function jE(e,t,r){e[decodeURIComponent(t)]=decodeURIComponent(r||"")}function HE(e,t){if(t=t.toLowerCase(),t==="true"||t==="false")return t==="true";if(`${+t}`===t)return+t;throw new Error(`Could not parse value flag value ${t} for flag ${e}.`)}function Y(){return hn}var hn=null;function qE(e){hn=e}var g1;function Pv(){if(g1==null){let e;if(typeof window!="undefined")e=window;else if(typeof global!="undefined")e=global;else if(typeof process!="undefined")e=process;else if(typeof self!="undefined")e=self;else throw new Error("Could not find a global object");g1=e}return g1}function KE(){let e=Pv();return e._tfGlobals==null&&(e._tfGlobals=new Map),e._tfGlobals}function Oy(e,t){let r=KE();if(r.has(e))return r.get(e);{let a=t();return r.set(e,a),r.get(e)}}var Fo="Abs",Tu="Acos",Cu="Acosh",qn="Add",js="AddN",Nu="All",Eu="Any",Hs="ArgMax",Ru="ArgMin",Fu="Asin",Mu="Asinh",$u="Atan",Pu="Atanh",Ou="Atan2",qs="AvgPool",Tf="AvgPoolGrad",_p="AvgPool3D",Cf="AvgPool3DGrad",Ks="BatchMatMul",Mo="BatchToSpaceND",Nf="Bincount",Ov="BroadcastTo",Ef="BroadcastArgs",Xs="Cast",Zs="Ceil",Kn="ClipByValue",Lp="Complex",Bp="ComplexAbs",$o="Concat",Ys="Conv2D",Rf="Conv2DBackpropFilter",Js="Conv2DBackpropInput",Wp="Conv3D",Ff="Conv3DBackpropFilterV2",Mf="Conv3DBackpropInputV2",Qs="Cos",ei="Cosh",Po="Cumsum",Oo="CropAndResize",$f="DenseBincount",zo="DepthToSpace",ti="DepthwiseConv2dNative",Pf="DepthwiseConv2dNativeBackpropFilter",Of="DepthwiseConv2dNativeBackpropInput",zf="Diag",Vp="Dilation2D",Xc="Dilation2DBackpropInput",Zc="Dilation2DBackpropFilter",ri="RealDiv",Up="Einsum",ai="Elu",Df="EluGrad",zu="Erf",Do="Equal",ni="Exp",_o="ExpandDims",Lo="Expm1",_f="FFT",Du="Fill",Bo="FlipLeftRight",si="Floor",ii="FloorDiv",oi="FusedBatchNorm",Wo="GatherV2",Vo="GatherNd",Uo="Greater",li="GreaterEqual",ui="Identity",Lf="IFFT",Gp="Imag",_u="IsFinite",Lu="IsInf",Bu="IsNan",di="LeakyRelu",Go="Less",jo="LessEqual",Bf="LinSpace",pi="Log",Wu="Log1p",Ho="LogicalAnd",Vu="LogicalNot",jp="LogicalOr",zv="LogSoftmax",Hp="LRN",Wf="LRNGrad",hi="Max",ci="Maximum",fi="MaxPool",Vf="MaxPoolGrad",qp="MaxPool3D",Uf="MaxPool3DGrad",Gf="MaxPoolWithArgmax",mi="Mean",gi="Min",yi="Minimum",Ai="MirrorPad",Uu="Mod",jf="Multinomial",xi="Multiply",qo="Neg",Ko="NotEqual",Xo="NonMaxSuppressionV3",Gu="NonMaxSuppressionV4",Zo="NonMaxSuppressionV5",Yo="OnesLike",Jo="OneHot",Qo="Pack",bi="PadV2",XE="Pool",vi="Pow",wi="Prelu",el="Prod",ju="Range",Kp="Real",Hu="Reciprocal",ki="Relu",tl="Reshape",qu="ResizeNearestNeighbor",Hf="ResizeNearestNeighborGrad",Ii="ResizeBilinear",qf="ResizeBilinearGrad",Si="Relu6",rl="Reverse",al="Round",Ti="Rsqrt",nl="ScatterNd",sl="Select",Ku="Selu",il="Slice",Ci="Sin",ol="Sinh",Xu="Sign",Ni="Sigmoid",Zu="Softplus",Ei="Sqrt",Ri="Sum",ll="SpaceToBatchND",ul="SplitV",Fi="Softmax",Xp="SparseFillEmptyRows",Yu="SparseReshape",Zp="SparseSegmentMean",Yp="SparseSegmentSum",Jp="SparseToDense",Mi="SquaredDifference",Ju="Square",dl="StridedSlice",Qp="StringNGrams",Kf="StringSplit",Xf="StringToHashBucketFast",$i="Sub",pl="Tan",Pi="Tanh",Xn="Tile",hl="TopK",cl="Transform",Oi="Transpose",Zf="Unique",fl="Unpack",eh="UnsortedSegmentSum",ml="ZerosLike",zi="Step",Ip="FromPixels",gl="RotateWithOffset",Rs="_FusedMatMul",Fs="FusedConv2D",Ms="FusedDepthwiseConv2D";function ks(...e){Y().getBool("IS_TEST")||Y().getBool("PROD")||console.warn(...e)}function ZE(...e){Y().getBool("IS_TEST")||Y().getBool("PROD")||console.log(...e)}var pu=Oy("kernelRegistry",()=>new Map),Sp=Oy("gradRegistry",()=>new Map);function Yc(e,t){let r=zy(e,t);return pu.get(r)}function M1(e){return Sp.get(e)}function Tn(e){let t=pu.entries(),r=[];for(;;){let{done:a,value:n}=t.next();if(a)break;let[s,i]=n,[o]=s.split("_");o===e&&r.push(i)}return r}function Ga(e){let{kernelName:t,backendName:r}=e,a=zy(t,r);pu.has(a)&&ks(`The kernel '${t}' for backend '${r}' is already registered`),pu.set(a,e)}function Dv(e){let{kernelName:t}=e;Sp.has(t)&&Y().getBool("DEBUG")&&ks(`Overriding the gradient for '${t}'`),Sp.set(t,e)}function YE(e,t){let r=zy(e,t);if(!pu.has(r))throw new Error(`The kernel '${e}' for backend '${t}' is not registered`);pu.delete(r)}function JE(e){if(!Sp.has(e))throw new Error(`The gradient '${e}' for backend is not registered`);Sp.delete(e)}function QE(e,t){Tn(e).forEach(r=>{let a=Object.assign({},r,{backendName:t});Ga(a)})}function zy(e,t){return`${t}_${e}`}var w={};De(w,{arraysEqual:()=>Gs,assert:()=>P,assertNonNegativeIntegerDimensions:()=>$y,assertNonNull:()=>Ro,assertShapesMatch:()=>_r,bytesFromStringArray:()=>Ev,bytesPerElement:()=>F1,checkConversionForErrors:()=>Cv,clamp:()=>kp,computeStrides:()=>Su,createScalarValue:()=>sR,createShuffledIndices:()=>DE,decodeString:()=>Jc,distSquared:()=>$E,encodeString:()=>rh,fetch:()=>oR,fingerPrint64:()=>nR,flatten:()=>Ao,getArrayFromDType:()=>Tv,getTypedArrayFromDType:()=>Sv,hasEncodingLoss:()=>BE,hexToLong:()=>th,indexToLoc:()=>UE,inferDtype:()=>If,inferFromImplicitShape:()=>LE,isBoolean:()=>Rv,isFunction:()=>Es,isInt:()=>du,isNumber:()=>Fv,isPromise:()=>Py,isScalarShape:()=>PE,isString:()=>Is,isTypedArray:()=>wr,isValidDtype:()=>Nv,locToIndex:()=>VE,makeOnesTypedArray:()=>My,makeZerosNestedTypedArray:()=>WE,makeZerosTypedArray:()=>Sf,nearestDivisor:()=>Kc,nearestLargerEven:()=>RE,now:()=>Tp,parseAxisParam:()=>Ua,randUniform:()=>ME,repeatedTry:()=>_E,rightPad:()=>Ap,shuffle:()=>kv,shuffleCombo:()=>EE,sizeFromShape:()=>Tt,sizeToSquarishShape:()=>zE,squeezeShape:()=>Iv,sum:()=>FE,swap:()=>qc,tanh:()=>OE,toNestedArray:()=>su,toTypedArray:()=>Yf});var V5=Eo(pE()),io=V5.default||V5;function th(e){return io.fromString(e,!0,16)}var _v=th("c3a5c85c97cb3127"),no=th("b492b66fbe98f273"),Fr=th("9ae16a3b2f90404f");function $1(e){return e.xor(e.shru(47))}function Lv(e,t,r){let a=e.slice(t,t+r);return io.fromBytes(Array.from(a),!0,!0)}function wt(e,t){return Lv(e,t,8)}function U5(e,t){return Lv(e,t,4)}function ur(e,t){return t===0?e:e.shru(t).or(e.shl(64-t))}function Ts(e,t,r=th("9ddfea08eb382d69")){let a=e.xor(t).mul(r);a=a.xor(a.shru(47));let n=t.xor(a).mul(r);return n=n.xor(n.shru(47)),n=n.mul(r),n}function eR(e,t,r,a,n,s){n=n.add(e),s=ur(s.add(n).add(a),21);let i=n;return n=n.add(t),n=n.add(r),s=s.add(ur(n,44)),[n.add(a),s.add(i)]}function Ic(e,t,r,a){return eR(wt(e,t),wt(e,t+8),wt(e,t+16),wt(e,t+24),r,a)}function tR(e,t=e.length){if(t>=8){let r=Fr.add(t*2),a=wt(e,0).add(Fr),n=wt(e,t-8),s=ur(n,37).mul(r).add(a),i=ur(a,25).add(n).mul(r);return Ts(s,i,r)}if(t>=4){let r=Fr.add(t*2),a=U5(e,0);return Ts(a.shl(3).add(t),U5(e,t-4),r)}if(t>0){let r=e[0],a=e[t>>1],n=e[t-1],s=r+(a<<8),i=t+(n<<2);return $1(Fr.mul(s).xor(_v.mul(i))).mul(Fr)}return Fr}function rR(e,t=e.length){let r=Fr.add(t*2),a=wt(e,0).mul(no),n=wt(e,8),s=wt(e,t-8).mul(r),i=wt(e,t-16).mul(Fr);return Ts(ur(a.add(n),43).add(ur(s,30)).add(i),a.add(ur(n.add(Fr),18)).add(s),r)}function aR(e,t=e.length){let r=Fr.add(t*2),a=wt(e,0).mul(Fr),n=wt(e,8),s=wt(e,t-8).mul(r),i=wt(e,t-16).mul(Fr),o=ur(a.add(n),43).add(ur(s,30)).add(i),l=Ts(o,a.add(ur(n.add(Fr),18)).add(s),r),d=wt(e,16).mul(r),u=wt(e,24),p=o.add(wt(e,t-32)).mul(r),h=l.add(wt(e,t-24)).mul(r);return Ts(ur(d.add(u),43).add(ur(p,30)).add(h),d.add(ur(u.add(a),18)).add(p),r)}function nR(e,t=e.length){let r=io.fromNumber(81,!0);if(t<=32)return t<=16?tR(e,t):rR(e,t);if(t<=64)return aR(e,t);let a=r,n=r.mul(no).add(113),s=$1(n.mul(Fr).add(113)).mul(Fr),i=[io.UZERO,io.UZERO],o=[io.UZERO,io.UZERO];a=a.mul(Fr).add(wt(e,0));let l=0,d=(t-1>>6)*64,u=d+(t-1&63)-63;do a=ur(a.add(n).add(i[0]).add(wt(e,l+8)),37).mul(no),n=ur(n.add(i[1]).add(wt(e,l+48)),42).mul(no),a=a.xor(o[1]),n=n.add(i[0]).add(wt(e,l+40)),s=ur(s.add(o[0]),33).mul(no),i=Ic(e,l,i[1].mul(no),a.add(o[0])),o=Ic(e,l+32,s.add(o[1]),n.add(wt(e,l+16))),[s,a]=[a,s],l+=64;while(l!==d);let p=no.add(s.and(255).shl(1));return l=u,o[0]=o[0].add(t-1&63),i[0]=i[0].add(o[0]),o[0]=o[0].add(i[0]),a=ur(a.add(n).add(i[0]).add(wt(e,l+8)),37).mul(p),n=ur(n.add(i[1]).add(wt(e,l+48)),42).mul(p),a=a.xor(o[1].mul(9)),n=n.add(i[0].mul(9).add(wt(e,l+40))),s=ur(s.add(o[0]),33).mul(p),i=Ic(e,l,i[1].mul(p),a.add(o[0])),o=Ic(e,l+32,s.add(o[1]),n.add(wt(e,l+16))),[s,a]=[a,s],Ts(Ts(i[0],o[0],p).add($1(n).mul(_v)).add(s),Ts(i[1],o[1],p).add(a),p)}function sR(e,t){return t==="string"?rh(e):Yf([e],t)}function iR(e,t){return e instanceof Float32Array&&t==="float32"||e instanceof Int32Array&&t==="int32"||e instanceof Uint8Array&&t==="bool"}function Yf(e,t){if(t==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(e)&&(e=Ao(e)),Y().getBool("DEBUG")&&Cv(e,t),iR(e,t))return e;if(t==null||t==="float32"||t==="complex64")return new Float32Array(e);if(t==="int32")return new Int32Array(e);if(t==="bool"){let r=new Uint8Array(e.length);for(let a=0;a{a=r()},s,i=Tp();if(this.backendTimer.timerAvailable())s=this.backendTimer.time(n);else{n();for(let o of a)o.dataSync();s=Promise.resolve({kernelMs:Tp()-i})}if(Y().getBool("CHECK_COMPUTATION_FOR_ERRORS"))for(let o=0;o{uR(d,l.dtype,e)})}return{kernelName:e,outputs:a,inputs:t,timeMs:s.then(o=>o.kernelMs),extraInfo:s.then(o=>o.getExtraProfileInfo!=null?o.getExtraProfileInfo():"")}}logKernelProfile(e){let{kernelName:t,outputs:r,timeMs:a,inputs:n,extraInfo:s}=e;r.forEach(i=>{Promise.all([i.data(),a,s]).then(o=>{this.logger.logKernelProfile(t,i,o[0],o[1],n,o[2])})})}};function uR(e,t,r){if(t!=="float32")return!1;for(let a=0;a0?f:""} `}}console.log(`%c${o} %c${i} %c${l}D ${u} %c${d} %c${p} %c${s}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}};function pR(e,t,r){let a={},n={};for(let l=0;la[m.id]=!0),c=!0,n[d.id]=!0;break}if(c)break}}let s={};s[r.id]=!0;let i={};for(let l=e.length-1;l>=0;l--){let d=e[l],u=d.inputs;for(let p=0;p=0;n--){let s=t[n],i=[];if(s.outputs.forEach(l=>{let d=e[l.id];d!=null?i.push(d):i.push(null)}),s.gradient==null)throw new Error(`Cannot compute gradient: gradient function not found for ${s.kernelName}.`);let o=s.gradient(i);for(let l in s.inputs){if(!(l in o))throw new Error(`Cannot backprop through input ${l}. Available gradients found: ${Object.keys(o)}.`);let d=r(()=>o[l]());if(d.dtype!=="float32")throw new Error(`Error in gradient for op ${s.kernelName}. The gradient of input ${l} must have 'float32' dtype, but has '${d.dtype}'`);let u=s.inputs[l];if(!Gs(d.shape,u.shape))throw new Error(`Error in gradient for op ${s.kernelName}. The gradient of input '${l}' has shape '${d.shape}', which does not match the shape of the input '${u.shape}'`);if(e[u.id]==null)e[u.id]=d;else{let p=e[u.id];e[u.id]=a(p,d),p.dispose()}}}}var G5=20,ap=3,y1=7;function cR(e,t,r,a){let n=Su(t),s=fR(e,t,r,n),i=t.length,o=Oc(e,t,r,n,s),l=["Tensor"];return a&&(l.push(` dtype: ${r}`),l.push(` rank: ${i}`),l.push(` shape: [${t}]`),l.push(" values:")),l.push(o.map(d=>" "+d).join(` `)),l.join(` `)}function fR(e,t,r,a){let n=Tt(t),s=a[a.length-1],i=new Array(s).fill(0),o=t.length,l=r==="complex64"?lp(e):e;if(o>1)for(let d=0;dG5){let g=ap*i,y=Array.from(e.slice(0,g)),A=Array.from(e.slice((o-ap)*i,o*i));return r==="complex64"&&(y=lp(y),A=lp(A)),["["+y.map((x,b)=>op(x,n[b],r)).join(", ")+", ..., "+A.map((x,b)=>op(x,n[o-ap+b],r)).join(", ")+"]"]}let m=r==="complex64"?lp(e):Array.from(e);return["["+m.map((g,y)=>op(g,n[y],r)).join(", ")+"]"]}let d=t.slice(1),u=a.slice(1),p=a[0]*i,h=[];if(o>G5){for(let m=0;m`Length of values '${a}' does not match the size inferred by the shape '${this.size}'.`)}if(t==="complex64")throw new Error("complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).");this.values=r||Tv(t,this.size),this.strides=Su(e)}set(e,...t){t.length===0&&(t=[0]),P(t.length===this.rank,()=>`The number of provided coordinates (${t.length}) must match the rank (${this.rank})`);let r=this.locToIndex(t);this.values[r]=e}get(...e){e.length===0&&(e=[0]);let t=0;for(let a of e){if(a<0||a>=this.shape[t]){let n=`Requested out of range element at ${e}. Buffer shape=${this.shape}`;throw new Error(n)}t++}let r=e[e.length-1];for(let a=0;aJc(r))}catch(r){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}}return e}dataToGPU(e){return this.throwIfDisposed(),Ja().readToGPU(this.dataId,e)}dataSync(){this.throwIfDisposed();let e=Ja().readSync(this.dataId);if(this.dtype==="string")try{return e.map(t=>Jc(t))}catch(t){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}return e}async bytes(){this.throwIfDisposed();let e=await Ja().read(this.dataId);return this.dtype==="string"?e:new Uint8Array(e.buffer)}dispose(){this.isDisposed||(Ja().disposeTensor(this),this.isDisposedInternal=!0)}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(e=!1){return tu.print(this,e)}clone(){return this.throwIfDisposed(),tu.clone(this)}toString(e=!1){let t=this.dataSync();return cR(t,this.shape,this.dtype,e)}cast(e){return this.throwIfDisposed(),tu.cast(this,e)}variable(e=!0,t,r){return this.throwIfDisposed(),Ja().makeVariable(this,e,t,r)}};Object.defineProperty(et,Symbol.hasInstance,{value:e=>!!e&&e.data!=null&&e.dataSync!=null&&e.throwIfDisposed!=null});function xR(){return Oy("Tensor",()=>et)}xR();var Cp=class extends et{constructor(e,t,r,a){super(e.shape,e.dtype,e.dataId,a);this.trainable=t,this.name=r}assign(e){if(e.dtype!==this.dtype)throw new Error(`dtype of the new value (${e.dtype}) and previous value (${this.dtype}) must match`);if(!Gs(e.shape,this.shape))throw new Error(`shape of the new value (${e.shape}) and previous value (${this.shape}) must match`);Ja().disposeTensor(this),this.dataId=e.dataId,Ja().incRef(this,null)}dispose(){Ja().disposeVariable(this),this.isDisposedInternal=!0}};Object.defineProperty(Cp,Symbol.hasInstance,{value:e=>e instanceof et&&e.assign!=null&&e.assign instanceof Function});var rn={};De(rn,{assertTypesMatch:()=>Hv,getTensorsInContainer:()=>Dy,isTensorInList:()=>vR,makeTypesMatch:()=>Dt});var Wv=(e=>(e.R0="R0",e.R1="R1",e.R2="R2",e.R3="R3",e.R4="R4",e.R5="R5",e.R6="R6",e))(Wv||{}),Vv=(e=>(e.float32="float32",e.int32="int32",e.bool="int32",e.complex64="complex64",e))(Vv||{}),Uv=(e=>(e.float32="float32",e.int32="int32",e.bool="bool",e.complex64="complex64",e))(Uv||{}),Gv=(e=>(e.float32="float32",e.int32="float32",e.bool="float32",e.complex64="complex64",e))(Gv||{}),jv=(e=>(e.float32="complex64",e.int32="complex64",e.bool="complex64",e.complex64="complex64",e))(jv||{}),bR={float32:Gv,int32:Vv,bool:Uv,complex64:jv};function Or(e,t){if(e==="string"||t==="string"){if(e==="string"&&t==="string")return"string";throw new Error(`Can not upcast ${e} with ${t}`)}return bR[e][t]}function ah(e){return Or(e,"int32")}function Dt(e,t){if(e.dtype===t.dtype)return[e,t];let r=Or(e.dtype,t.dtype);return[e.cast(r),t.cast(r)]}function Hv(e,t){P(e.dtype===t.dtype,()=>`The dtypes of the first(${e.dtype}) and second(${t.dtype}) input must match`)}function vR(e,t){return t.some(r=>r.id===e.id)}function Dy(e){let t=[];return qv(e,t,new Set),t}function qv(e,t,r){if(e==null)return;if(e instanceof et){t.push(e);return}if(!wR(e))return;let a=e;for(let n in a){let s=a[n];r.has(s)||(r.add(s),qv(s,t,r))}}function wR(e){return Array.isArray(e)||typeof e=="object"}function A1(e){return e.kernelName!=null}var j5=class{constructor(){this.registeredVariables={},this.nextTapeNodeId=0,this.numBytes=0,this.numTensors=0,this.numStringTensors=0,this.numDataBuffers=0,this.gradientDepth=0,this.kernelDepth=0,this.scopeStack=[],this.numDataMovesStack=[],this.nextScopeId=0,this.tensorInfo=new WeakMap,this.profiling=!1,this.activeProfile={newBytes:0,newTensors:0,peakBytes:0,kernels:[],result:null,get kernelNames(){return Array.from(new Set(this.kernels.map(e=>e.name)))}}}dispose(){for(let e in this.registeredVariables)this.registeredVariables[e].dispose()}},P1=class{constructor(e){this.ENV=e,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new j5}async ready(){if(this.pendingBackendInit!=null)return this.pendingBackendInit.then(()=>{});if(this.backendInstance!=null)return;let e=this.getSortedBackends();for(let t=0;t{e.setupFunc!=null&&e.setupFunc(this.backendInstance)})}disposeRegisteredKernels(e){Tn(e).forEach(t=>{t.disposeFunc!=null&&t.disposeFunc(this.registry[e])})}initializeBackend(e){let t=this.registryFactory[e];if(t==null)throw new Error(`Cannot initialize backend ${e}, no registration found.`);try{let r=t.factory();if(r&&!(r instanceof Iu)&&typeof r.then=="function"){let a=++this.pendingBackendInitId,n=r.then(s=>a(athis.registryFactory[t].priority-this.registryFactory[e].priority)}initializeBackendsAndReturnBest(){let e=this.getSortedBackends();for(let t=0;tthis.startScope(r),()=>this.endScope(a),()=>(a=t(),a instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),a))}scopedRun(e,t,r){e();try{let a=r();return t(),a}catch(a){throw t(),a}}nextTensorId(){return P1.nextTensorId++}nextVariableId(){return P1.nextVariableId++}clone(e){let t=B.runKernel(ui,{x:e}),r={x:e},a=s=>({x:()=>{let i="float32",o={x:s},l={dtype:i};return B.runKernel(Xs,o,l)}}),n=[];return this.addTapeNode(this.state.activeScope.name,r,[t],a,n,{}),t}runKernel(e,t,r){if(this.backendName==null&&this.backend,Yc(e,this.backendName)==null)throw new Error(`Kernel '${e}' not registered for backend '${this.backendName}'`);return this.runKernelFunc({kernelName:e,inputs:t,attrs:r})}shouldCheckForMemLeaks(){return this.ENV.getBool("IS_TEST")}checkKernelForMemLeak(e,t,r){let a=this.backend.numDataIds(),n=0;r.forEach(o=>{n+=o.dtype==="complex64"?3:1});let s=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],i=a-t-n-s;if(i>0)throw new Error(`Backend '${this.backendName}' has an internal memory leak (${i} data ids) after running '${e}'`)}runKernelFunc(e){let t,r=[],a=this.isTapeOn(),n=this.state.numBytes,s=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);let i;this.backendName==null&&this.backend;let o,l=A1(e)?e.kernelName:this.state.activeScope!=null?this.state.activeScope.name:"";if(A1(e)){let{kernelName:c,inputs:f,attrs:m}=e;this.backendName==null&&this.backend;let g=Yc(c,this.backendName);P(g!=null,()=>`Cannot find registered kernel '${c}' for backend '${this.backendName}'`),i=()=>{let y=this.backend.numDataIds();o=g.kernelFunc({inputs:f,attrs:m,backend:this.backend});let A=Array.isArray(o)?o:[o];this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(c,y,A);let x=A.map(b=>{if(b.rank!=null)return b;let{dataId:v,shape:C,dtype:T}=b;return this.makeTensorFromDataId(v,C,T)});if(a){let b=this.getTensorsForGradient(c,f,x);r=this.saveTensorsForBackwardMode(b)}return x}}else{let{forwardFunc:c}=e,f=m=>{!a||(r=m.map(g=>this.keep(this.clone(g))))};i=()=>{let m=this.backend.numDataIds();o=this.tidy(()=>c(this.backend,f));let g=Array.isArray(o)?o:[o];return this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(l,m,g),g}}let{inputs:d,attrs:u}=e,p=A1(e)?null:e.backwardsFunc,h;return this.scopedRun(()=>this.state.kernelDepth++,()=>this.state.kernelDepth--,()=>{!this.ENV.getBool("DEBUG")&&!this.state.profiling?t=i():(h=this.profiler.profileKernel(l,d,()=>i()),this.ENV.getBool("DEBUG")&&this.profiler.logKernelProfile(h),t=h.outputs)}),a&&this.addTapeNode(l,d,t,p,r,u),this.state.profiling&&this.state.activeProfile.kernels.push({name:l,bytesAdded:this.state.numBytes-n,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-s,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(d).map(c=>d[c]!=null?d[c].shape:null),outputShapes:t.map(c=>c.shape),kernelTimeMs:h.timeMs,extraInfo:h.extraInfo}),Array.isArray(o)?t:t[0]}saveTensorsForBackwardMode(e){return e.map(t=>this.keep(this.clone(t)))}getTensorsForGradient(e,t,r){let a=M1(e);if(a!=null){let n=a.inputsToSave||[],s=a.outputsToSave||[],i;a.saveAllInputs?(P(Array.isArray(t),()=>"saveAllInputs is true, expected inputs to be an array."),i=Object.keys(t).map(l=>t[l])):i=n.map(l=>t[l]);let o=r.filter((l,d)=>s[d]);return i.concat(o)}return[]}makeTensor(e,t,r,a){if(e==null)throw new Error("Values passed to engine.makeTensor() are null");r=r||"float32",a=a||this.backend;let n=e;r==="string"&&Is(e[0])&&(n=e.map(o=>rh(o)));let s=a.write(n,t,r),i=new et(t,r,s,this.nextTensorId());if(this.trackTensor(i,a),r==="string"){let o=this.state.tensorInfo.get(s),l=Ev(n);this.state.numBytes+=l-o.bytes,o.bytes=l}return i}makeTensorFromDataId(e,t,r,a){r=r||"float32";let n=new et(t,r,e,this.nextTensorId());return this.trackTensor(n,a),n}makeVariable(e,t=!0,r,a){r=r||this.nextVariableId().toString(),a!=null&&a!==e.dtype&&(e=e.cast(a));let n=new Cp(e,t,r,this.nextTensorId());if(this.state.registeredVariables[n.name]!=null)throw new Error(`Variable with name ${n.name} was already registered`);return this.state.registeredVariables[n.name]=n,this.incRef(n,this.backend),n}trackTensor(e,t){this.state.numTensors++,e.dtype==="string"&&this.state.numStringTensors++;let r=0;e.dtype!=="complex64"&&e.dtype!=="string"&&(r=e.size*F1(e.dtype)),this.state.numBytes+=r,this.state.tensorInfo.has(e.dataId)||(this.state.numDataBuffers++,this.state.tensorInfo.set(e.dataId,{backend:t||this.backend,dtype:e.dtype,shape:e.shape,bytes:r})),e instanceof Cp||this.track(e)}incRef(e,t){this.trackTensor(e,t),this.backend.incRef(e.dataId)}removeDataId(e,t){this.state.tensorInfo.has(e)&&this.state.tensorInfo.get(e).backend===t&&(this.state.tensorInfo.delete(e),this.state.numDataBuffers--)}disposeTensor(e){if(!this.state.tensorInfo.has(e.dataId))return;let t=this.state.tensorInfo.get(e.dataId);if(this.state.numTensors--,e.dtype==="string"&&(this.state.numStringTensors--,this.state.numBytes-=t.bytes),e.dtype!=="complex64"&&e.dtype!=="string"){let r=e.size*F1(e.dtype);this.state.numBytes-=r}t.backend.disposeData(e.dataId)&&this.removeDataId(e.dataId,t.backend)}disposeVariables(){for(let e in this.state.registeredVariables){let t=this.state.registeredVariables[e];this.disposeVariable(t)}}disposeVariable(e){this.disposeTensor(e),this.state.registeredVariables[e.name]!=null&&delete this.state.registeredVariables[e.name]}memory(){let e=this.backend.memory();return e.numTensors=this.state.numTensors,e.numDataBuffers=this.state.numDataBuffers,e.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(e.unreliable=!0,e.reasons==null&&(e.reasons=[]),e.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),e}async profile(e){this.state.profiling=!0;let t=this.state.numBytes,r=this.state.numTensors;this.state.activeProfile.kernels=[],this.state.activeProfile.result=await e(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max(...this.state.activeProfile.kernels.map(a=>a.totalBytesSnapshot)),this.state.activeProfile.newBytes=this.state.numBytes-t,this.state.activeProfile.newTensors=this.state.numTensors-r;for(let a of this.state.activeProfile.kernels)a.kernelTimeMs=await a.kernelTimeMs,a.extraInfo=await a.extraInfo;return this.state.activeProfile}isTapeOn(){return this.state.gradientDepth>0&&this.state.kernelDepth===0}addTapeNode(e,t,r,a,n,s){let i={id:this.state.nextTapeNodeId++,kernelName:e,inputs:t,outputs:r,saved:n},o=M1(e);o!=null&&(a=o.gradFunc),a!=null&&(i.gradient=l=>(l=l.map((d,u)=>{if(d==null){let p=r[u],h=Sf(p.size,p.dtype);return this.makeTensor(h,p.shape,p.dtype)}return d}),a(l.length>1?l:l[0],n,s))),this.state.activeTape.push(i)}keep(e){return e.kept=!0,e}startTape(){this.state.gradientDepth===0&&(this.state.activeTape=[]),this.state.gradientDepth++}endTape(){this.state.gradientDepth--}startScope(e){let t={track:[],name:"unnamed scope",id:this.state.nextScopeId++};e&&(t.name=e),this.state.scopeStack.push(t),this.state.activeScope=t}endScope(e){let t=Dy(e),r=new Set(t.map(n=>n.id));for(let n=0;n{!n.kept&&n.scopeId===a.id&&this.track(n)})}gradients(e,t,r,a=!1){if(P(t.length>0,()=>"gradients() received an empty list of xs."),r!=null&&r.dtype!=="float32")throw new Error(`dy must have 'float32' dtype, but has '${r.dtype}'`);let n=this.scopedRun(()=>this.startTape(),()=>this.endTape(),()=>this.tidy("forward",e));P(n instanceof et,()=>"The result y returned by f() must be a tensor.");let s=pR(this.state.activeTape,t,n);if(!a&&s.length===0&&t.length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",()=>{let i={};i[n.id]=r==null?kR(n.shape):r,hR(i,s,l=>this.tidy(l),IR);let o=t.map(l=>i[l.id]);return this.state.gradientDepth===0&&(this.state.activeTape.forEach(l=>{for(let d of l.saved)d.dispose()}),this.state.activeTape=null),{value:n,grads:o}})}customGrad(e){return P(Es(e),()=>"The f passed in customGrad(f) must be a function."),(...t)=>{P(t.every(i=>i instanceof et),()=>"The args passed in customGrad(f)(x1, x2,...) must all be tensors");let r,a={};t.forEach((i,o)=>{a[o]=i});let n=(i,o)=>(r=e(...t,o),P(r.value instanceof et,()=>"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"),P(Es(r.gradFunc),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."),r.value),s=(i,o)=>{let l=r.gradFunc(i,o),d=Array.isArray(l)?l:[l];P(d.length===t.length,()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns the same number of tensors as inputs passed to f(...)."),P(d.every(p=>p instanceof et),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors.");let u={};return d.forEach((p,h)=>{u[h]=()=>p}),u};return this.runKernelFunc({forwardFunc:n,backwardsFunc:s,inputs:a})}}readSync(e){return this.state.tensorInfo.get(e).backend.readSync(e)}read(e){return this.state.tensorInfo.get(e).backend.read(e)}readToGPU(e,t){return this.state.tensorInfo.get(e).backend.readToGPU(e,t)}async time(e){let t=Tp(),r=await this.backend.time(e);return r.wallMs=Tp()-t,r}track(e){return this.state.activeScope!=null&&(e.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(e)),e}get registeredVariables(){return this.state.registeredVariables}reset(){this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new j5;for(let e in this.registry)this.disposeRegisteredKernels(e),this.registry[e].dispose(),delete this.registry[e];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null}},_y=P1;_y.nextTensorId=0;_y.nextVariableId=0;function kR(e){let t=My(Tt(e),"float32");return B.makeTensor(t,e,"float32")}function Kv(){let e=Pv();if(e._tfengine==null){let t=new $v(e);e._tfengine=new _y(t)}return qE(e._tfengine.ENV),gR(()=>e._tfengine),e._tfengine}var B=Kv();function IR(e,t){let r={a:e,b:t};return B.runKernel(qn,r)}var nh={};De(nh,{isBrowser:()=>Xv,isMobile:()=>CR,mockIsMobile:()=>TR});function SR(){return typeof navigator!="undefined"&&navigator!=null}var O1;function TR(e){O1=e}function CR(e){if(O1!==void 0)return O1;if(e||SR()){if(e||(e=navigator),e.product==="ReactNative")return!0;let t=e.userAgent||e.vendor||(typeof window!="undefined"?window.opera:"");if(!t){let r=e;return r.userAgentData&&r.userAgentData.mobile}return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0,4))}return!1}function Xv(){return typeof window!="undefined"&&window.document!=null||typeof WorkerGlobalScope!="undefined"}var on=Y();on.registerFlag("DEBUG",()=>!1,e=>{e&&console.warn("Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance.")});on.registerFlag("IS_BROWSER",()=>Xv());on.registerFlag("IS_NODE",()=>typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined");on.registerFlag("IS_CHROME",()=>typeof navigator!="undefined"&&navigator!=null&&navigator.userAgent!=null&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor));on.registerFlag("PROD",()=>!1);on.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",()=>on.getBool("DEBUG"));on.registerFlag("DEPRECATION_WARNINGS_ENABLED",()=>!0);on.registerFlag("IS_TEST",()=>!1);on.registerFlag("CHECK_COMPUTATION_FOR_ERRORS",()=>!0);on.registerFlag("WRAP_TO_IMAGEBITMAP",()=>!1);function Cn(e,t){let r=e;if(wr(e))return t==="string"?[]:[e.length];if(!Array.isArray(e))return[];let a=[];for(;Array.isArray(r)||wr(r)&&t!=="string";)a.push(r.length),r=r[0];return Array.isArray(e)&&Y().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&Zv(e,a,[]),a}function Zv(e,t,r){if(r=r||[],!Array.isArray(e)&&!wr(e)){P(t.length===0,()=>`Element arr[${r.join("][")}] is a primitive, but should be an array/TypedArray of ${t[0]} elements`);return}P(t.length>0,()=>`Element arr[${r.join("][")}] should be a primitive, but is an array of ${e.length} elements`),P(e.length===t[0],()=>`Element arr[${r.join("][")}] should have ${t[0]} elements, but has ${e.length} elements`);let a=t.slice(1);for(let n=0;n=0&&(n=a),H5(a,n,t,r),e==null||!wr(e)&&!Array.isArray(e)&&typeof e!="number"&&typeof e!="boolean"&&typeof e!="string"){let o=e==null?"null":e.constructor.name;throw new Error(`Argument '${t}' passed to '${r}' must be a Tensor or TensorLike, but got '${o}'`)}let s=Cn(e,n);!wr(e)&&!Array.isArray(e)&&(e=[e]);let i=n!=="string"?Yf(e,n):Ao(e,[],!0);return B.makeTensor(i,s,n)}function Np(e,t,r,a="numeric"){if(!Array.isArray(e))throw new Error(`Argument ${t} passed to ${r} must be a \`Tensor[]\` or \`TensorLike[]\``);return e.map((n,s)=>$(n,`${t}[${s}]`,r,a))}var Yv="__op";function V(e){let t=Object.keys(e);if(t.length!==1)throw new Error(`Please provide an object with a single key (operation name) mapping to a function. Got an object with ${t.length} keys.`);let r=t[0],a=e[r];r.endsWith("_")&&(r=r.substring(0,r.length-1)),r=r+Yv;let n=(...s)=>{B.startScope(r);try{let i=a(...s);return Py(i)&&console.error("Cannot return a Promise inside of tidy."),B.endScope(i),i}catch(i){throw B.endScope(null),i}};return Object.defineProperty(n,"name",{value:r,configurable:!0}),n}function NR(e,t){let r=$(e,"real","complex"),a=$(t,"imag","complex");_r(r.shape,a.shape,`real and imag shapes, ${r.shape} and ${a.shape}, must match in call to tf.complex().`);let n={real:r,imag:a};return B.runKernel(Lp,n)}var $s=V({complex_:NR});function Di(e,t,r,a){if(a==null&&(a=If(e)),a==="complex64")throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(!wr(e)&&!Array.isArray(e)&&typeof e!="number"&&typeof e!="boolean"&&typeof e!="string")throw new Error("values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray");if(t!=null){$y(t);let n=Tt(t),s=Tt(r);P(n===s,()=>`Based on the provided shape, [${t}], the tensor should have ${n} values but has ${s}`);for(let i=0;i`Error creating a new Tensor. Inferred shape (${r}) does not match the provided shape (${t}). `)}}return!wr(e)&&!Array.isArray(e)&&(e=[e]),t=t||r,e=a!=="string"?Yf(e,a):Ao(e,[],!0),B.makeTensor(e,t,a)}function pt(e,t,r){let a=Cn(e,r);return Di(e,t,a,r)}var z1={float32:4,float16:2,int32:4,uint16:2,uint8:1,bool:1,complex64:8},Qc=4;async function ER(e,t){let r=[],a=[],n=Array.isArray(e)?e.map(i=>i.name):Object.keys(e);for(let i=0;i{let h=await l.bytes(),c=h.reduce((g,y)=>g+y.length,0)+Qc*h.length,f=new Uint8Array(c),m=0;for(let g=0;g{if(t+=s.byteLength,r.push(s.byteLength===s.buffer.byteLength?s:new s.constructor(s)),!(s instanceof Float32Array||s instanceof Int32Array||s instanceof Uint8Array))throw new Error(`Unsupported TypedArray subtype: ${s.constructor.name}`)});let a=new Uint8Array(t),n=0;return r.forEach(s=>{a.set(new Uint8Array(s.buffer),n),n+=s.byteLength}),a.buffer}var Ly=typeof Buffer!="undefined"&&(typeof Blob=="undefined"||typeof atob=="undefined"||typeof btoa=="undefined");function q5(e){return Ly?Buffer.byteLength(e):new Blob([e]).size}function FR(e){if(Ly)return Buffer.from(e).toString("base64");let t=new Uint8Array(e),r="";for(let a=0,n=t.length;a{t+=n.byteLength});let r=new Uint8Array(t),a=0;return e.forEach(n=>{r.set(new Uint8Array(n),a),a+=n.byteLength}),r.buffer}function K5(e){let t="/";for(e=e.trim();e.endsWith(t);)e=e.slice(0,e.length-1);let r=e.split(t);return r[r.length-1]}function Qv(e,t){let r={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,weightsManifest:t};return e.signature!=null&&(r.signature=e.signature),e.userDefinedMetadata!=null&&(r.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(r.modelInitializer=e.modelInitializer),e.trainingConfig!=null&&(r.trainingConfig=e.trainingConfig),r}async function Wy(e,t){let r={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy};if(e.trainingConfig!=null&&(r.trainingConfig=e.trainingConfig),e.weightsManifest!=null){let[a,n]=await t(e.weightsManifest);r.weightSpecs=a,r.weightData=n}return e.signature!=null&&(r.signature=e.signature),e.userDefinedMetadata!=null&&(r.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(r.modelInitializer=e.modelInitializer),r}function sh(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date,modelTopologyType:"JSON",modelTopologyBytes:e.modelTopology==null?0:q5(JSON.stringify(e.modelTopology)),weightSpecsBytes:e.weightSpecs==null?0:q5(JSON.stringify(e.weightSpecs)),weightDataBytes:e.weightData==null?0:e.weightData.byteLength}}function $R(){let e=r=>{let a=r<<13,n=0;for(;(a&8388608)===0;)n-=8388608,a<<=1;return a&=-8388609,n+=947912704,a|n},t=new Uint32Array(2048);t[0]=0;for(let r=1;r<1024;r++)t[r]=e(r);for(let r=1024;r<2048;r++)t[r]=939524096+(r-1024<<13);return t}function PR(){let e=new Uint32Array(64);e[0]=0,e[31]=1199570944,e[32]=2147483648,e[63]=3347054592;for(let t=1;t<31;t++)e[t]=t<<23;for(let t=33;t<63;t++)e[t]=2147483648+(t-32<<23);return e}function OR(){let e=new Uint32Array(64);for(let t=0;t<64;t++)e[t]=1024;return e[0]=e[32]=0,e}function zR(){let e=$R(),t=PR(),r=OR();return a=>{let n=new ArrayBuffer(4*a.length),s=new Uint32Array(n);for(let i=0;i>10]+(o&1023)]+t[o>>10];s[i]=l}return new Float32Array(n)}}var Bt=class{constructor(){this.saveRouters=[],this.loadRouters=[]}static getInstance(){return Bt.instance==null&&(Bt.instance=new Bt),Bt.instance}static registerSaveRouter(e){Bt.getInstance().saveRouters.push(e)}static registerLoadRouter(e){Bt.getInstance().loadRouters.push(e)}static getSaveHandlers(e){return Bt.getHandlers(e,"save")}static getLoadHandlers(e,t){return Bt.getHandlers(e,"load",t)}static getHandlers(e,t,r){let a=[];return(t==="load"?Bt.getInstance().loadRouters:Bt.getInstance().saveRouters).forEach(n=>{let s=n(e,r);s!==null&&a.push(s)}),a}},DR=e=>Bt.registerSaveRouter(e),_R=e=>Bt.registerLoadRouter(e),LR=e=>Bt.getSaveHandlers(e),BR=(e,t)=>Bt.getLoadHandlers(e,t),D1="tensorflowjs",_1=1,po="models_store",Ss="model_info_store";function ew(){if(!Y().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");let e=typeof window=="undefined"?self:window,t=e.indexedDB||e.mozIndexedDB||e.webkitIndexedDB||e.msIndexedDB||e.shimIndexedDB;if(t==null)throw new Error("The current browser does not appear to support IndexedDB.");return t}function L1(e){let t=e.result;t.createObjectStore(po,{keyPath:"modelPath"}),t.createObjectStore(Ss,{keyPath:"modelPath"})}var xo=class{constructor(e){if(this.indexedDB=ew(),e==null||!e)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=e}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return this.databaseAction(this.modelPath,e)}async load(){return this.databaseAction(this.modelPath)}databaseAction(e,t){return new Promise((r,a)=>{let n=this.indexedDB.open(D1,_1);n.onupgradeneeded=()=>L1(n),n.onsuccess=()=>{let s=n.result;if(t==null){let i=s.transaction(po,"readonly"),o=i.objectStore(po).get(this.modelPath);o.onsuccess=()=>{if(o.result==null)return s.close(),a(new Error(`Cannot find model with path '${this.modelPath}' in IndexedDB.`));r(o.result.modelArtifacts)},o.onerror=l=>(s.close(),a(o.error)),i.oncomplete=()=>s.close()}else{let i=sh(t),o=s.transaction(Ss,"readwrite"),l=o.objectStore(Ss),d=l.put({modelPath:this.modelPath,modelArtifactsInfo:i}),u;d.onsuccess=()=>{u=s.transaction(po,"readwrite");let p=u.objectStore(po).put({modelPath:this.modelPath,modelArtifacts:t,modelArtifactsInfo:i});p.onsuccess=()=>r({modelArtifactsInfo:i}),p.onerror=h=>{l=o.objectStore(Ss);let c=l.delete(this.modelPath);c.onsuccess=()=>(s.close(),a(p.error)),c.onerror=f=>(s.close(),a(p.error))}},d.onerror=p=>(s.close(),a(d.error)),o.oncomplete=()=>{u==null?s.close():u.oncomplete=()=>s.close()}}},n.onerror=s=>a(n.error)})}};xo.URL_SCHEME="indexeddb://";var tw=e=>Y().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(xo.URL_SCHEME)?WR(e.slice(xo.URL_SCHEME.length)):null;Bt.registerSaveRouter(tw);Bt.registerLoadRouter(tw);function WR(e){return new xo(e)}function VR(e){return e.startsWith(xo.URL_SCHEME)?e.slice(xo.URL_SCHEME.length):e}var UR=class{constructor(){this.indexedDB=ew()}async listModels(){return new Promise((e,t)=>{let r=this.indexedDB.open(D1,_1);r.onupgradeneeded=()=>L1(r),r.onsuccess=()=>{let a=r.result,n=a.transaction(Ss,"readonly"),s=n.objectStore(Ss).getAll();s.onsuccess=()=>{let i={};for(let o of s.result)i[o.modelPath]=o.modelArtifactsInfo;e(i)},s.onerror=i=>(a.close(),t(s.error)),n.oncomplete=()=>a.close()},r.onerror=a=>t(r.error)})}async removeModel(e){return e=VR(e),new Promise((t,r)=>{let a=this.indexedDB.open(D1,_1);a.onupgradeneeded=()=>L1(a),a.onsuccess=()=>{let n=a.result,s=n.transaction(Ss,"readwrite"),i=s.objectStore(Ss),o=i.get(e),l;o.onsuccess=()=>{if(o.result==null)return n.close(),r(new Error(`Cannot find model with path '${e}' in IndexedDB.`));{let d=i.delete(e),u=()=>{l=n.transaction(po,"readwrite");let p=l.objectStore(po).delete(e);p.onsuccess=()=>t(o.result.modelArtifactsInfo),p.onerror=h=>r(o.error)};d.onsuccess=u,d.onerror=p=>(u(),n.close(),r(o.error))}},o.onerror=d=>(n.close(),r(o.error)),s.oncomplete=()=>{l==null?n.close():l.oncomplete=()=>n.close()}},a.onerror=n=>r(a.error)})}},Un="/",ru="tensorflowjs_models",rw="info",GR="model_topology",jR="weight_specs",HR="weight_data",qR="model_metadata";function aw(e){return{info:[ru,e,rw].join(Un),topology:[ru,e,GR].join(Un),weightSpecs:[ru,e,jR].join(Un),weightData:[ru,e,HR].join(Un),modelMetadata:[ru,e,qR].join(Un)}}function nw(e){for(let t of Object.values(e))window.localStorage.removeItem(t)}function KR(e){let t=e.split(Un);if(t.length<3)throw new Error(`Invalid key format: ${e}`);return t.slice(1,t.length-1).join(Un)}function XR(e){return e.startsWith(bo.URL_SCHEME)?e.slice(bo.URL_SCHEME.length):e}var bo=class{constructor(e){if(!Y().getBool("IS_BROWSER")||typeof window=="undefined"||typeof window.localStorage=="undefined")throw new Error("The current environment does not support local storage.");if(this.LS=window.localStorage,e==null||!e)throw new Error("For local storage, modelPath must not be null, undefined or empty.");this.modelPath=e,this.keys=aw(this.modelPath)}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");{let t=JSON.stringify(e.modelTopology),r=JSON.stringify(e.weightSpecs),a=sh(e);try{this.LS.setItem(this.keys.info,JSON.stringify(a)),this.LS.setItem(this.keys.topology,t),this.LS.setItem(this.keys.weightSpecs,r),this.LS.setItem(this.keys.weightData,FR(e.weightData));let n={format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,signature:e.signature!=null?e.signature:void 0,userDefinedMetadata:e.userDefinedMetadata!=null?e.userDefinedMetadata:void 0,modelInitializer:e.modelInitializer!=null?e.modelInitializer:void 0,trainingConfig:e.trainingConfig!=null?e.trainingConfig:void 0};return this.LS.setItem(this.keys.modelMetadata,JSON.stringify(n)),{modelArtifactsInfo:a}}catch(n){throw nw(this.keys),new Error(`Failed to save model '${this.modelPath}' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes=${a.modelTopologyBytes}, weightSpecsBytes=${a.weightSpecsBytes}, weightDataBytes=${a.weightDataBytes}.`)}}}async load(){let e=JSON.parse(this.LS.getItem(this.keys.info));if(e==null)throw new Error(`In local storage, there is no model with name '${this.modelPath}'`);if(e.modelTopologyType!=="JSON")throw new Error("BrowserLocalStorage does not support loading non-JSON model topology yet.");let t={},r=JSON.parse(this.LS.getItem(this.keys.topology));if(r==null)throw new Error(`In local storage, the topology of model '${this.modelPath}' is missing.`);t.modelTopology=r;let a=JSON.parse(this.LS.getItem(this.keys.weightSpecs));if(a==null)throw new Error(`In local storage, the weight specs of model '${this.modelPath}' are missing.`);t.weightSpecs=a;let n=this.LS.getItem(this.keys.modelMetadata);if(n!=null){let i=JSON.parse(n);t.format=i.format,t.generatedBy=i.generatedBy,t.convertedBy=i.convertedBy,i.signature!=null&&(t.signature=i.signature),i.userDefinedMetadata!=null&&(t.userDefinedMetadata=i.userDefinedMetadata),i.modelInitializer!=null&&(t.modelInitializer=i.modelInitializer),i.trainingConfig!=null&&(t.trainingConfig=i.trainingConfig)}let s=this.LS.getItem(this.keys.weightData);if(s==null)throw new Error(`In local storage, the binary weight values of model '${this.modelPath}' are missing.`);return t.weightData=MR(s),t}};bo.URL_SCHEME="localstorage://";var sw=e=>Y().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(bo.URL_SCHEME)?ZR(e.slice(bo.URL_SCHEME.length)):null;Bt.registerSaveRouter(sw);Bt.registerLoadRouter(sw);function ZR(e){return new bo(e)}var YR=class{constructor(){P(Y().getBool("IS_BROWSER"),()=>"Current environment is not a web browser"),P(typeof window=="undefined"||typeof window.localStorage!="undefined",()=>"Current browser does not appear to support localStorage"),this.LS=window.localStorage}async listModels(){let e={},t=ru+Un,r=Un+rw;for(let a=0;a"scheme must not be undefined or null."),e.endsWith(iu)&&(e=e.slice(0,e.indexOf(iu))),P(e.length>0,()=>"scheme must not be an empty string.");let r=Ia.getInstance();P(r.managers[e]==null,()=>`A model store manager is already registered for scheme '${e}'.`),r.managers[e]=t}static getManager(e){let t=this.getInstance().managers[e];if(t==null)throw new Error(`Cannot find model manager for scheme '${e}'`);return t}static getSchemes(){return Object.keys(this.getInstance().managers)}};function zc(e){if(e.indexOf(iu)===-1)throw new Error(`The url string provided does not contain a scheme. Supported schemes are: ${Ia.getSchemes().join(",")}`);return{scheme:e.split(iu)[0],path:e.split(iu)[1]}}async function iw(e,t,r=!1){P(e!==t,()=>`Old path and new path are the same: '${e}'`);let a=Bt.getLoadHandlers(e);P(a.length>0,()=>`Copying failed because no load handler is found for source URL ${e}.`),P(a.length<2,()=>`Copying failed because more than one (${a.length}) load handlers for source URL ${e}.`);let n=a[0],s=Bt.getSaveHandlers(t);P(s.length>0,()=>`Copying failed because no save handler is found for destination URL ${t}.`),P(s.length<2,()=>`Copying failed because more than one (${a.length}) save handlers for destination URL ${t}.`);let i=s[0],o=zc(e).scheme,l=zc(e).path,d=o===zc(e).scheme,u=await n.load();r&&d&&await Ia.getManager(o).removeModel(l);let p=await i.save(u);return r&&!d&&await Ia.getManager(o).removeModel(l),p.modelArtifactsInfo}async function JR(){let e=Ia.getSchemes(),t={};for(let r of e){let a=await Ia.getManager(r).listModels();for(let n in a){let s=r+iu+n;t[s]=a[n]}}return t}async function QR(e){let t=zc(e);return Ia.getManager(t.scheme).removeModel(t.path)}async function eF(e,t){return iw(e,t,!1)}async function tF(e,t){return iw(e,t,!0)}var rF=class{fetch(e,t){return fetch(e,t)}now(){return performance.now()}encode(e,t){if(t!=="utf-8"&&t!=="utf8")throw new Error(`Browser's encoder only supports utf-8, but got ${t}`);return this.textEncoder==null&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(e)}decode(e,t){return new TextDecoder(t).decode(e)}};if(Y().get("IS_BROWSER")){Y().setPlatform("browser",new rF);try{Ia.registerManager(bo.URL_SCHEME,new YR)}catch(e){}try{Ia.registerManager(xo.URL_SCHEME,new UR)}catch(e){}}var aF={importFetch:()=>hE()},x1,nF=class{constructor(){this.util=cE(),this.textEncoder=new this.util.TextEncoder}fetch(e,t){return Y().global.fetch!=null?Y().global.fetch(e,t):(x1==null&&(x1=aF.importFetch()),x1(e,t))}now(){let e=process.hrtime();return e[0]*1e3+e[1]/1e6}encode(e,t){if(t!=="utf-8"&&t!=="utf8")throw new Error(`Node built-in encoder only supports utf-8, but got ${t}`);return this.textEncoder.encode(e)}decode(e,t){return e.length===0?"":new this.util.TextDecoder(t).decode(e)}};Y().get("IS_NODE")&&!Y().get("IS_BROWSER")&&Y().setPlatform("node",new nF);function Le(e,t="float32",r){return t=t||"float32",$y(e),new tr(e,t,r)}function sF(e,t){let r=$(e,"x","cast");if(!Nv(t))throw new Error(`Failed to cast to unknown dtype ${t}`);if(t==="string"&&r.dtype!=="string"||t!=="string"&&r.dtype==="string")throw new Error("Only strings can be casted to strings");let a={x:r},n={dtype:t};return B.runKernel(Xs,a,n)}var me=V({cast_:sF});function iF(e){let t={x:$(e,"x","clone","string_or_numeric")};return B.runKernel(ui,t)}var Pr=V({clone_:iF});function ow(e,t=!1){console.log(e.toString(t))}Kv();var oF={buffer:Le,cast:me,clone:Pr,print:ow};yR(oF);var Ir={};De(Ir,{browserFiles:()=>fF,browserHTTPRequest:()=>xF,concatenateArrayBuffers:()=>By,copyModel:()=>eF,decodeWeights:()=>Jv,encodeWeights:()=>ER,fromMemory:()=>vF,getLoadHandlers:()=>BR,getModelArtifactsForJSON:()=>Wy,getModelArtifactsInfoForJSON:()=>sh,getSaveHandlers:()=>LR,http:()=>Uy,isHTTPScheme:()=>W1,listModels:()=>JR,loadWeights:()=>mF,moveModel:()=>tF,registerLoadRouter:()=>_R,registerSaveRouter:()=>DR,removeModel:()=>QR,weightsLoaderFactory:()=>uw,withSaveHandler:()=>wF});var lF="model",uF=".json",dF=".weights.bin";function X5(e){return new Promise(t=>setTimeout(t)).then(e)}var B1=class{constructor(e){if(!Y().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");e.startsWith(B1.URL_SCHEME)&&(e=e.slice(B1.URL_SCHEME.length)),(e==null||e.length===0)&&(e=lF),this.modelJsonFileName=e+uF,this.weightDataFileName=e+dF}async save(e){if(typeof document=="undefined")throw new Error("Browser downloads are not supported in this environment since `document` is not present");let t=window.URL.createObjectURL(new Blob([e.weightData],{type:"application/octet-stream"}));if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet.");{let r=[{paths:["./"+this.weightDataFileName],weights:e.weightSpecs}],a=Qv(e,r),n=window.URL.createObjectURL(new Blob([JSON.stringify(a)],{type:"application/json"})),s=this.modelJsonAnchor==null?document.createElement("a"):this.modelJsonAnchor;if(s.download=this.modelJsonFileName,s.href=n,await X5(()=>s.dispatchEvent(new MouseEvent("click"))),e.weightData!=null){let i=this.weightDataAnchor==null?document.createElement("a"):this.weightDataAnchor;i.download=this.weightDataFileName,i.href=t,await X5(()=>i.dispatchEvent(new MouseEvent("click")))}return{modelArtifactsInfo:sh(e)}}}},ef=B1;ef.URL_SCHEME="downloads://";var pF=class{constructor(e){if(e==null||e.length<1)throw new Error(`When calling browserFiles, at least 1 file is required, but received ${e}`);this.jsonFile=e[0],this.weightsFiles=e.slice(1)}async load(){return new Promise((e,t)=>{let r=new FileReader;r.onload=a=>{let n=JSON.parse(a.target.result),s=n.modelTopology;if(s==null){t(new Error(`modelTopology field is missing from file ${this.jsonFile.name}`));return}if(n.weightsManifest==null){t(new Error(`weightManifest field is missing from file ${this.jsonFile.name}`));return}if(this.weightsFiles.length===0){e({modelTopology:s});return}let i=Wy(n,o=>this.loadWeights(o));e(i)},r.onerror=a=>t(`Failed to read model topology and weights manifest JSON from file '${this.jsonFile.name}'. BrowserFiles supports loading Keras-style tf.Model artifacts only.`),r.readAsText(this.jsonFile)})}loadWeights(e){let t=[],r=[];for(let s of e)t.push(...s.weights),r.push(...s.paths);let a=this.checkManifestAndWeightFiles(e),n=r.map(s=>this.loadWeightsFile(s,a[s]));return Promise.all(n).then(s=>[t,By(s)])}loadWeightsFile(e,t){return new Promise((r,a)=>{let n=new FileReader;n.onload=s=>{let i=s.target.result;r(i)},n.onerror=s=>a(`Failed to weights data from file of path '${e}'.`),n.readAsArrayBuffer(t)})}checkManifestAndWeightFiles(e){let t=[],r=this.weightsFiles.map(n=>K5(n.name)),a={};for(let n of e)n.paths.forEach(s=>{let i=K5(s);if(t.indexOf(i)!==-1)throw new Error(`Duplicate file basename found in weights manifest: '${i}'`);if(t.push(i),r.indexOf(i)===-1)throw new Error(`Weight file with basename '${i}' is not provided.`);a[s]=this.weightsFiles[r.indexOf(i)]});if(t.length!==this.weightsFiles.length)throw new Error(`Mismatch in the number of files in weights manifest (${t.length}) and the number of weight files provided (${this.weightsFiles.length}).`);return a}},hF=e=>Y().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(ef.URL_SCHEME)?cF(e.slice(ef.URL_SCHEME.length)):null;Bt.registerSaveRouter(hF);function cF(e="model"){return new ef(e)}function fF(e){return new pF(e)}function Z5(e,t,r,a){i(e),r=r==null?0:r,a=a==null?1:a,o(r,a);let n=0,s=l=>(l.then(d=>{let u=r+ ++n/e.length*(a-r);return t(u),d}),l);function i(l){P(l!=null&&Array.isArray(l)&&l.length>0,()=>"promises must be a none empty array")}function o(l,d){P(l>=0&&l<=1,()=>`Progress fraction must be in range [0, 1], but got startFraction ${l}`),P(d>=0&&d<=1,()=>`Progress fraction must be in range [0, 1], but got endFraction ${d}`),P(d>=l,()=>`startFraction must be no more than endFraction, but got startFraction ${l} and endFraction ${d}`)}return Promise.all(e.map(s))}async function lw(e,t){t==null&&(t={});let r=t.fetchFunc==null?Y().platform.fetch:t.fetchFunc,a=e.map(d=>r(d,t.requestInit,{isBinary:!0})),n=0,s=.5,i=(t.onProgress==null?await Promise.all(a):await Z5(a,t.onProgress,n,s)).map(d=>d.arrayBuffer()),o=.5,l=1;return t.onProgress==null?await Promise.all(i):await Z5(i,t.onProgress,o,l)}async function mF(e,t="",r,a){return uw(n=>lw(n,{requestInit:a}))(e,t,r)}function uw(e){return async(t,r="",a)=>{let n=t.map(()=>!1),s={},i=a!=null?a.map(()=>!1):[],o=[];if(t.forEach((c,f)=>{let m=0;c.weights.forEach(g=>{let y="quantization"in g?g.quantization.dtype:g.dtype,A=z1[y]*Tt(g.shape),x=()=>{n[f]=!0,s[f]==null&&(s[f]=[]),s[f].push({manifestEntry:g,groupOffset:m,sizeBytes:A})};a!=null?a.forEach((b,v)=>{b===g.name&&(x(),i[v]=!0)}):x(),o.push(g.name),m+=A})}),!i.every(c=>c)){let c=a.filter((f,m)=>!i[m]);throw new Error(`Could not find weights in manifest with names: ${c.join(", ")}. Manifest JSON has weights with names: ${o.join(", ")}.`)}let l=n.reduce((c,f,m)=>(f&&c.push(m),c),[]),d=[];l.forEach(c=>{t[c].paths.forEach(f=>{let m=r+(r.endsWith("/")?"":"/")+f;d.push(m)})});let u=await e(d),p={},h=0;return l.forEach(c=>{let f=t[c].paths.length,m=0;for(let x=0;x{let b=g.slice(x.groupOffset,x.groupOffset+x.sizeBytes),v=Jv(b,[x.manifestEntry]);for(let C in v)p[C]=v[C]}),h+=f}),p}}var gF="application/octet-stream",yF="application/json",Vy=class{constructor(e,t){if(this.DEFAULT_METHOD="POST",t==null&&(t={}),this.weightPathPrefix=t.weightPathPrefix,this.onProgress=t.onProgress,this.weightUrlConverter=t.weightUrlConverter,t.fetchFunc!=null?(P(typeof t.fetchFunc=="function",()=>"Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)"),this.fetch=t.fetchFunc):this.fetch=Y().platform.fetch,P(e!=null&&e.length>0,()=>"URL path for http must not be null, undefined or empty."),Array.isArray(e)&&P(e.length===2,()=>`URL paths for http must have a length of 2, (actual length is ${e.length}).`),this.path=e,t.requestInit!=null&&t.requestInit.body!=null)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=t.requestInit||{}}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");let t=Object.assign({method:this.DEFAULT_METHOD},this.requestInit);t.body=new FormData;let r=[{paths:["./model.weights.bin"],weights:e.weightSpecs}],a=Qv(e,r);t.body.append("model.json",new Blob([JSON.stringify(a)],{type:yF}),"model.json"),e.weightData!=null&&t.body.append("model.weights.bin",new Blob([e.weightData],{type:gF}),"model.weights.bin");let n=await this.fetch(this.path,t);if(n.ok)return{modelArtifactsInfo:sh(e),responses:[n]};throw new Error(`BrowserHTTPRequest.save() failed due to HTTP response status ${n.status}.`)}async load(){let e=await this.fetch(this.path,this.requestInit);if(!e.ok)throw new Error(`Request to ${this.path} failed with status code ${e.status}. Please verify this URL points to the model JSON of the model to load.`);let t;try{t=await e.json()}catch(n){let s=`Failed to parse model JSON of response from ${this.path}.`;throw this.path.endsWith(".pb")?s+=" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.":s+=" Please make sure the server is serving valid JSON for this request.",new Error(s)}let r=t.modelTopology,a=t.weightsManifest;if(r==null&&a==null)throw new Error(`The JSON from HTTP path ${this.path} contains neither model topology or manifest for weights.`);return Wy(t,n=>this.loadWeights(n))}async loadWeights(e){let t=Array.isArray(this.path)?this.path[1]:this.path,[r,a]=AF(t),n=this.weightPathPrefix||r,s=[];for(let d of e)s.push(...d.weights);let i=[],o=[];for(let d of e)for(let u of d.paths)this.weightUrlConverter!=null?o.push(this.weightUrlConverter(u)):i.push(n+u+a);this.weightUrlConverter&&i.push(...await Promise.all(o));let l=await lw(i,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress});return[s,By(l)]}};Vy.URL_SCHEME_REGEX=/^https?:\/\//;function AF(e){let t=e.lastIndexOf("/"),r=e.lastIndexOf("?"),a=e.substring(0,t),n=r>t?e.substring(r):"";return[a+"/",n]}function W1(e){return e.match(Vy.URL_SCHEME_REGEX)!=null}var dw=(e,t)=>{if(typeof fetch=="undefined"&&(t==null||t.fetchFunc==null))return null;{let r=!0;if(Array.isArray(e)?r=e.every(a=>W1(a)):r=W1(e),r)return Uy(e,t)}return null};Bt.registerSaveRouter(dw);Bt.registerLoadRouter(dw);function Uy(e,t){return new Vy(e,t)}function xF(e,t){return Uy(e,t)}var b1=class{constructor(e){this.modelArtifacts=e}async load(){return this.modelArtifacts}},bF=class{constructor(e){this.saveHandler=e}async save(e){return this.saveHandler(e)}};function vF(e,t,r,a){return arguments.length===1?e.modelTopology!=null||e.weightSpecs!=null?new b1(e):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new b1({modelTopology:e})):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new b1({modelTopology:e,weightSpecs:t,weightData:r,trainingConfig:a}))}function wF(e){return new bF(e)}var pw={};De(pw,{confusionMatrix:()=>CF});function kF(e,t,r=!1,a=!1){let n=$(e,"a","matMul"),s=$(t,"b","matMul");[n,s]=Dt(n,s);let i={a:n,b:s},o={transposeA:r,transposeB:a};return B.runKernel(Ks,i,o)}var Ke=V({matMul_:kF});function IF(e,t,r=1,a=0){if(t<2)throw new Error(`Error in oneHot: depth must be >=2, but it is ${t}`);let n={indices:$(e,"indices","oneHot","int32")},s={depth:t,onValue:r,offValue:a};return B.runKernel(Jo,n,s)}var Ep=V({oneHot_:IF});function SF(e,t){let r=$(e,"x","transpose");if(t==null&&(t=r.shape.map((s,i)=>i).reverse()),P(r.rank===t.length,()=>`Error in transpose: rank of input ${r.rank} must match length of perm ${t}.`),t.forEach(s=>{P(s>=0&&s`All entries in 'perm' must be between 0 and ${r.rank-1} but got ${t}`)}),r.rank<=1)return r.clone();let a={x:r},n={perm:t};return B.runKernel(Oi,a,n)}var rt=V({transpose_:SF});function TF(e,t,r){let a=$(e,"labels","confusionMatrix"),n=$(t,"predictions","confusionMatrix");P(r==null||r>0&&Number.isInteger(r),()=>`If provided, numClasses must be a positive integer, but got ${r}`),P(a.rank===1,()=>`Expected the rank of labels to be 1, but got ${a.rank}`),P(n.rank===1,()=>`Expected the rank of predictions to be 1, but got ${n.rank}`),P(a.shape[0]===n.shape[0],()=>`Mismatch in the number of examples: ${a.shape[0]} vs. ${n.shape[0]}. Labels and predictions should have the same number of elements.`),P(r>0&&Number.isInteger(r),()=>`numClasses is required to be a positive integer, but got ${r}`);let s=Ep(me(a,"int32"),r),i=Ep(me(n,"int32"),r),o=rt(s),l=Ke(o,i);return me(l,"int32")}var CF=V({confusionMatrix_:TF}),yl={};De(yl,{assertAndGetBroadcastShape:()=>bt,getBroadcastDims:()=>hw,getReductionAxes:()=>Xt});function hw(e,t){let r=e.length,a=[];for(let n=0;n1&&i===1&&a.unshift(s)}return a}function Xt(e,t){let r=[];for(let a=0;a1)&&r.unshift(s)}return r}function bt(e,t){let r=[],a=Math.max(e.length,t.length);for(let n=0;nPF,fromPixelsAsync:()=>MF,toPixels:()=>$F});function cw(e,t,r){if(Ro(e),t!=null&&t.length!==3)throw new Error("tensor3d() requires shape to have three numbers");let a=Cn(e,r);if(a.length!==3&&a.length!==1)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(a.length===1&&t==null)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return Di(e,t,a,r)}var ro;function fw(e,t=3){if(t>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(e==null)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");let r=!1,a=!1,n=!1,s=!1,i=!1,o=!1;if(e.data instanceof Uint8Array)r=!0;else if(typeof ImageData!="undefined"&&e instanceof ImageData)a=!0;else if(typeof HTMLVideoElement!="undefined"&&e instanceof HTMLVideoElement)n=!0;else if(typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement)s=!0;else if(e.getContext!=null)i=!0;else if(typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap)o=!0;else throw new Error(`pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, but was ${e.constructor.name}`);if(n&&n&&e.readyState<2)throw new Error("The video element has not loaded data yet. Please wait for `loadeddata` event on the