PageSourceSearch

https://hearme.id/_next/static/chunks/27-29e0543dae42f9ec632f.js

js hearme.id collected 2026-10-01 16:26:44 UTC 1,041,389 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[27],{9610:function(e,t,n){"use strict";n.d(t,{A:function(){return s}});var r=n(2623);function s(){let e,t,n,s,a,o,i,u,l,c;return 2===(0,r.OBj)().getNumber("WEBGL_VERSION")?(e="#version 300 es",t="in",n="out",s="in",a="texture",o="outputColor",i="out vec4 outputColor;",u=(0,r.OBj)().getBool("WEBGL2_ISNAN_CUSTOM")?"\n      bool isnan_custom(float val) {\n        uint floatToUint = floatBitsToUint(val);\n        return (floatToUint & 0x7fffffffu) > 0x7f800000u;\n      }\n\n      bvec4 isnan_custom(vec4 val) {\n        return bvec4(isnan_custom(val.x),\n          isnan_custom(val.y), isnan_custom(val.z), isnan_custom(val.w));\n      }\n\n      #define isnan(value) isnan_custom(value)\n    ":"",l="",c="\n      #define round(value) newRound(value)\n      int newRound(float value) {\n        return int(floor(value + 0.5));\n      }\n\n      ivec4 newRound(vec4 value) {\n        return ivec4(floor(value + vec4(0.5)));\n      }\n    "):(e="",t="attribute",n="varying",s="varying",a="texture2D",o="gl_FragColor",i="",u="\n      #define isnan(value) isnan_custom(value)\n      bool isnan_custom(float val) {\n        return (val > 0. || val < 1. || val == 0.) ? false : true;\n      }\n      bvec4 isnan_custom(vec4 val) {\n        return bvec4(isnan(val.x), isnan(val.y), isnan(val.z), isnan(val.w));\n      }\n    ",l="\n      uniform float INFINITY;\n\n      bool isinf(float val) {\n        return abs(val) == INFINITY;\n      }\n      bvec4 isinf(vec4 val) {\n        return equal(abs(val), vec4(INFINITY));\n      }\n    ",c="\n      int round(float value) {\n        return int(floor(value + 0.5));\n      }\n\n      ivec4 round(vec4 value) {\n        return ivec4(floor(value + vec4(0.5)));\n      }\n    "),{version:e,attribute:t,varyingVs:n,varyingFs:s,texture2D:a,output:o,defineOutput:i,defineSpecialNaN:u,defineSpecialInf:l,defineRound:c}}},8110:function(e,t,n){"use strict";n.d(t,{RW:function(){return s},Kn:function(){return a},al:function(){return o},ku:function(){return i},nc:function(){return u},ye:function(){return l}});var r=n(2623);function s(e,t,n="index"){const s=r.D5U.computeStrides(t);return s.map(((t,r)=>`${`int ${e[r]} = ${n} / ${t}`}; ${r===s.length-1?`int ${e[r+1]} = ${n} - ${e[r]} * ${t}`:`index -= ${e[r]} * ${t}`};`)).join("")}function a(e,t,n="index"){const s=r.D5U.computeStrides(t);return s.map(((t,r)=>`${`int ${e[r]} = ${n} / outShapeStrides[${r}]`}; ${r===s.length-1?`int ${e[r+1]} = ${n} - ${e[r]} * outShapeStrides[${r}]`:`index -= ${e[r]} * outShapeStrides[${r}]`};`)).join("")}function o(e,t,n="index"){const r=function(e,t){const n=e.length,r=e.map((e=>`${t}[${e}]`)),s=new Array(n-1);s[n-2]=r[n-1];for(let a=n-3;a>=0;--a)s[a]=`(${s[a+1]} * ${r[a+1]})`;return s}(e.map(((e,t)=>t)),t);return r.map(((t,s)=>`${`int ${e[s]} = ${n} / ${r[s]}`}; ${s===r.length-1?`int ${e[s+1]} = ${n} - ${e[s]} * ${r[s]}`:`index -= ${e[s]} * ${r[s]}`};`)).join("")}function i(e){const t=r.D5U.computeStrides(e).map((e=>e.toString()));return`\n  int getFlatIndex(ivec3 coords) {\n    return coords.x * ${t[0]} + coords.y * ${t[1]} + coords.z;\n  }\n`}function u(){return"\n  int getFlatIndex(ivec3 coords) {\n    return coords.x * outShapeStrides[0] + coords.y * outShapeStrides[1] + coords.z;\n  }\n"}const l="\n  const float FLOAT_MAX = 1.70141184e38;\n  const float FLOAT_MIN = 1.17549435e-38;\n\n  lowp vec4 encode_float(highp float v) {\n    if (isnan(v)) {\n      return vec4(255, 255, 255, 255);\n    }\n\n    highp float av = abs(v);\n\n    if(av < FLOAT_MIN) {\n      return vec4(0.0, 0.0, 0.0, 0.0);\n    } else if(v > FLOAT_MAX) {\n      return vec4(0.0, 0.0, 128.0, 127.0) / 255.0;\n    } else if(v < -FLOAT_MAX) {\n      return vec4(0.0, 0.0,  128.0, 255.0) / 255.0;\n    }\n\n    highp vec4 c = vec4(0,0,0,0);\n\n    highp float e = floor(log2(av));\n    highp float m = exp2(fract(log2(av))) - 1.0;\n\n    c[2] = floor(128.0 * m);\n    m -= c[2] / 128.0;\n    c[1] = floor(32768.0 * m);\n    m -= c[1] / 32768.0;\n    c[0] = floor(8388608.0 * m);\n\n    highp float ebias = e + 127.0;\n    c[3] = floor(ebias / 2.0);\n    ebias -= c[3] * 2.0;\n    c[2] += floor(ebias) * 128.0;\n\n    c[3] += 128.0 * step(0.0, -v);\n\n    return c / 255.0;\n  }\n"},4618:function(e,t,n){"use strict";n.d(t,{YL:function(){return Ue},gJ:function(){return ze}});var r={};n.r(r),n.d(r,{json:function(){return O}});var s={};n.r(s),n.d(s,{json:function(){return M}});var a={};n.r(a),n.d(a,{json:function(){return B}});var o={};n.r(o),n.d(o,{json:function(){return L}});var i={};n.r(i),n.d(i,{json:function(){return W}});var u={};n.r(u),n.d(u,{json:function(){return P}});var l={};n.r(l),n.d(l,{json:function(){return U}});var c={};n.r(c),n.d(c,{json:function(){return z}});var p={};n.r(p),n.d(p,{json:function(){return V}});var h={};n.r(h),n.d(h,{json:function(){return G}});var d={};n.r(d),n.d(d,{json:function(){return H}});var f={};n.r(f),n.d(f,{json:function(){return j}});var m={};n.r(m),n.d(m,{json:function(){return X}});var g={};n.r(g),n.d(g,{json:function(){return q}});var y={};n.r(y),n.d(y,{json:function(){return K}});var b={};n.r(b),n.d(b,{json:function(){return Q}});var x={};n.r(x),n.d(x,{json:function(){return Y}});var w={};n.r(w),n.d(w,{json:function(){return Z}});var v={};n.r(v),n.d(v,{json:function(){return J}});var k={};n.r(k),n.d(k,{OP_SCOPE_SUFFIX:function(){return ye.zvA},abs:function(){return ye.WnP},acos:function(){return ye.Khb},acosh:function(){return ye.__u},add:function(){return ye.IHx},addN:function(){return ye.QBD},all:function(){return ye.$6P},any:function(){return ye.YjB},argMax:function(){return ye.NqF},argMin:function(){return ye.vHJ},asin:function(){return ye.ZRM},asinh:function(){return ye.VfV},atan:function(){return ye.z4N},atan2:function(){return ye.fvJ},atanh:function(){return ye.C80},avgPool:function(){return ye.wS1},avgPool3d:function(){return ye.uR5},basicLSTMCell:function(){return ye.zEQ},batchNorm:function(){return ye.tgs},batchNorm2d:function(){return ye.Dxk},batchNorm3d:function(){return ye.JY5},batchNorm4d:function(){return ye.p3b},batchToSpaceND:function(){return ye.E4h},bincount:function(){return ye.yE8},booleanMaskAsync:function(){return ye.anm},broadcastArgs:function(){return ye.XsQ},broadcastTo:function(){return ye.UFq},buffer:function(){return ye.f3b},cast:function(){return ye.pju},ceil:function(){return ye.mDi},clipByValue:function(){return ye.iUl},clone:function(){return ye.d9v},complex:function(){return ye.PYB},concat:function(){return ye.zoF},concat1d:function(){return ye.gME},concat2d:function(){return ye.Izb},concat3d:function(){return ye.MNy},concat4d:function(){return ye.ZaL},conv1d:function(){return ye.PAt},conv2d:function(){return ye.Tek},conv2dTranspose:function(){return ye.bc},conv3d:function(){return ye.pdZ},conv3dTranspose:function(){return ye.$QV},cos:function(){return ye.mCk}
1,cosh:function(){return ye.f9Y},cosineWindow:function(){return ye.mew},cumprod:function(){return ye.$Gn},cumsum:function(){return ye.zbp},denseBincount:function(){return ye.ppE},depthToSpace:function(){return ye.nTT},depthwiseConv2d:function(){return ye.B10},diag:function(){return ye.Ka3},dilation2d:function(){return ye.WmZ},div:function(){return ye.hiC},divNoNan:function(){return ye.NTj},dot:function(){return ye.AKD},dropout:function(){return ye.rvX},einsum:function(){return ye.WYO},elu:function(){return ye.pyx},enclosingPowerOfTwo:function(){return ye.GRh},equal:function(){return ye.DgJ},erf:function(){return ye.qNN},euclideanNorm:function(){return ye.d2q},exp:function(){return ye.Qqt},expandDims:function(){return ye.dt4},expm1:function(){return ye.t$B},eye:function(){return ye.iyy},fft:function(){return ye.kp_},fill:function(){return ye.hlL},floor:function(){return ye.GWj},floorDiv:function(){return ye.qPi},fused:function(){return ye.imm},gather:function(){return ye.Iqj},gatherND:function(){return ye.dbB},greater:function(){return ye.pjt},greaterEqual:function(){return ye.brS},ifft:function(){return ye.Sxn},imag:function(){return ye.asL},image:function(){return ye.BHj},inTopKAsync:function(){return ye.V3u},irfft:function(){return ye.wx0},isFinite:function(){return ye.xVT},isInf:function(){return ye.UWc},isNaN:function(){return ye.i2d},leakyRelu:function(){return ye.hi7},less:function(){return ye.d9m},lessEqual:function(){return ye.zN1},linalg:function(){return ye.$r2},linspace:function(){return ye.SX3},localResponseNormalization:function(){return ye.G9k},log:function(){return ye.cM7},log1p:function(){return ye.Krr},logSigmoid:function(){return ye.e_t},logSoftmax:function(){return ye.CmS},logSumExp:function(){return ye.l_t},logicalAnd:function(){return ye.HvI},logicalNot:function(){return ye.hJK},logicalOr:function(){return ye.K5V},logicalXor:function(){return ye.egP},losses:function(){return ye.MB5},lowerBound:function(){return ye.eab},matMul:function(){return ye.OI3},max:function(){return ye.Fp7},maxPool:function(){return ye._sB},maxPool3d:function(){return ye.YQQ},maxPoolWithArgmax:function(){return ye.Ip$},maximum:function(){return ye.gWQ},mean:function(){return ye.J69},meshgrid:function(){return ye.ry_},min:function(){return ye.VV$},minimum:function(){return ye.LTh},mirrorPad:function(){return ye.VdP},mod:function(){return ye.wQq},moments:function(){return ye.Gi7},movingAverage:function(){return ye.p_},mul:function(){return ye.dC7},multiRNNCell:function(){return ye.rq4},multinomial:function(){return ye.SJ_},neg:function(){return ye.W76},norm:function(){return ye.KOy},notEqual:function(){return ye.Quu},oneHot:function(){return ye.lfX},ones:function(){return ye.iUs},onesLike:function(){return ye.JpU},op:function(){return ye.op},outerProduct:function(){return ye.N2O},pad:function(){return ye.vku},pad1d:function(){return ye.pNR},pad2d:function(){return ye.koy},pad3d:function(){return ye.t1L},pad4d:function(){return ye.lGY},pool:function(){return ye.d_R},pow:function(){return ye.sQ3},prelu:function(){return ye.AL3},print:function(){return ye.S0v},prod:function(){return ye.WVs},raggedGather:function(){return ye.$gW},raggedTensorToTensor:function(){return ye.N89},rand:function(){return ye.TN_},randomGamma:function(){return ye.wzB},randomNormal:function(){return ye.nGf},randomStandardNormal:function(){return ye.ruB},randomUniform:function(){return ye.LGj},range:function(){return ye.w6H},real:function(){return ye.kwC},reciprocal:function(){return ye.M25},relu:function(){return ye.UYe},relu6:function(){return ye.btT},reshape:function(){return ye.XLQ},reverse:function(){return ye.GYS},reverse1d:function(){return ye.SDf},reverse2d:function(){return ye.diP},reverse3d:function(){return ye.sx7},reverse4d:function(){return ye.mG2},rfft:function(){return ye.QEs},round:function(){return ye.NMM},rsqrt:function(){return ye.bp0},scalar:function(){return ye.iD$},scatterND:function(){return ye.snQ},searchSorted:function(){return ye.zcT},selu:function(){return ye.U8D},separableConv2d:function(){return ye.U_I},setdiff1dAsync:function(){return ye.ODp},sigmoid:function(){return ye.XD2},sign:function(){return ye.Xxe},signal:function(){return ye.tdS},sin:function(){return ye.O$l},sinh:function(){return ye.R_K}
1,slice:function(){return ye.tPi},slice1d:function(){return ye.jZU},slice2d:function(){return ye.SmN},slice3d:function(){return ye.CnO},slice4d:function(){return ye.p0P},softmax:function(){return ye.XAC},softplus:function(){return ye.Wvh},spaceToBatchND:function(){return ye.fBT},sparse:function(){return ye.rVs},sparseToDense:function(){return ye.ers},spectral:function(){return ye.uN7},split:function(){return ye.Vl2},sqrt:function(){return ye._b3},square:function(){return ye.h62},squaredDifference:function(){return ye.$i},squeeze:function(){return ye.L9e},stack:function(){return ye.knu},step:function(){return ye.Nbs},stridedSlice:function(){return ye.NXj},string:function(){return ye.Z_8},sub:function(){return ye.luU},sum:function(){return ye.Smz},tan:function(){return ye.ORZ},tanh:function(){return ye.AEp},tensor:function(){return ye.XeE},tensor1d:function(){return ye.RRF},tensor2d:function(){return ye.odF},tensor3d:function(){return ye.wOQ},tensor4d:function(){return ye.yXz},tensor5d:function(){return ye.Bfx},tensor6d:function(){return ye.xZs},tile:function(){return ye.Gg6},topk:function(){return ye.hg7},transpose:function(){return ye.p4s},truncatedNormal:function(){return ye.Xu6},unique:function(){return ye.Two},unsortedSegmentSum:function(){return ye.pUJ},unstack:function(){return ye.HHK},upperBound:function(){return ye.GaM},variable:function(){return ye.VD$},where:function(){return ye.arb},whereAsync:function(){return ye.itS},zeros:function(){return ye.lls},zerosLike:function(){return ye.P84}});var I=n(2623);var N,S;(0,I.OBj)().registerFlag("KEEP_INTERMEDIATE_TENSORS",(()=>!1),(e=>{e&&console.warn("Keep intermediate tensors is ON. This will print the values of all intermediate tensors during model inference. Not all models support this mode. For details, check e2e/benchmarks/ model_config.js. This significantly impacts performance.")})),function(e){e[e.DT_INVALID=0]="DT_INVALID",e[e.DT_FLOAT=1]="DT_FLOAT",e[e.DT_DOUBLE=2]="DT_DOUBLE",e[e.DT_INT32=3]="DT_INT32",e[e.DT_UINT8=4]="DT_UINT8",e[e.DT_INT16=5]="DT_INT16",e[e.DT_INT8=6]="DT_INT8",e[e.DT_STRING=7]="DT_STRING",e[e.DT_COMPLEX64=8]="DT_COMPLEX64",e[e.DT_INT64=9]="DT_INT64",e[e.DT_BOOL=10]="DT_BOOL",e[e.DT_QINT8=11]="DT_QINT8",e[e.DT_QUINT8=12]="DT_QUINT8",e[e.DT_QINT32=13]="DT_QINT32",e[e.DT_BFLOAT16=14]="DT_BFLOAT16",e[e.DT_QINT16=15]="DT_QINT16",e[e.DT_QUINT16=16]="DT_QUINT16",e[e.DT_UINT16=17]="DT_UINT16",e[e.DT_COMPLEX128=18]="DT_COMPLEX128",e[e.DT_HALF=19]="DT_HALF",e[e.DT_RESOURCE=20]="DT_RESOURCE",e[e.DT_VARIANT=21]="DT_VARIANT",e[e.DT_UINT32=22]="DT_UINT32",e[e.DT_UINT64=23]="DT_UINT64",e[e.DT_FLOAT_REF=101]="DT_FLOAT_REF",e[e.DT_DOUBLE_REF=102]="DT_DOUBLE_REF",e[e.DT_INT32_REF=103]="DT_INT32_REF",e[e.DT_UINT8_REF=104]="DT_UINT8_REF",e[e.DT_INT16_REF=105]="DT_INT16_REF",e[e.DT_INT8_REF=106]="DT_INT8_REF",e[e.DT_STRING_REF=107]="DT_STRING_REF",e[e.DT_COMPLEX64_REF=108]="DT_COMPLEX64_REF",e[e.DT_INT64_REF=109]="DT_INT64_REF",e[e.DT_BOOL_REF=110]="DT_BOOL_REF",e[e.DT_QINT8_REF=111]="DT_QINT8_REF",e[e.DT_QUINT8_REF=112]="DT_QUINT8_REF",e[e.DT_QINT32_REF=113]="DT_QINT32_REF",e[e.DT_BFLOAT16_REF=114]="DT_BFLOAT16_REF",e[e.DT_QINT16_REF=115]="DT_QINT16_REF",e[e.DT_QUINT16_REF=116]="DT_QUINT16_REF",e[e.DT_UINT16_REF=117]="DT_UINT16_REF",e[e.DT_COMPLEX128_REF=118]="DT_COMPLEX128_REF",e[e.DT_HALF_REF=119]="DT_HALF_REF",e[e.DT_RESOURCE_REF=120]="DT_RESOURCE_REF",e[e.DT_VARIANT_REF=121]="DT_VARIANT_REF",e[e.DT_UINT32_REF=122]="DT_UINT32_REF",e[e.DT_UINT64_REF=123]="DT_UINT64_REF"}(N||(N={})),function(e){let t;!function(e){e[e.LEGACY=0]="LEGACY",e[e.V1=1]="V1",e[e.V2=2]="V2"}(t=e.CheckpointFormatVersion||(e.CheckpointFormatVersion={}))}(S||(S={}));const T={};function C(e){return T[e]}function E(e,t,n,r,s){const a=t.inputParams[e];if(a&&void 0!==a.inputIndexStart){const e=a.inputIndexStart,o=0===a.inputIndexEnd?void 0:void 0===a.inputIndexEnd?e+1:a.inputIndexEnd;if("tensor"===a.type)return $(t.inputNames[a.inputIndexStart],n,r,s);if("tensors"===a.type){return t.inputNames.slice(e,o).map((e=>$(e,n,r,s)))}const i=$(t.inputNames.slice(e)[0],n,r,s),u=i.dataSync();return"number"===a.type?u[0]:I.D5U.toNestedArray(i.shape,u)}const o=t.attrParams[e];return o&&o.value}function $(e,t,n,r){const[s,a]=_(e);if(null!=r){const e=r.getHashTableHandleByName(s);if(null!=e)return e}const o=n.currentContextIds.find((e=>!!t[D(s,e)]));return void 0!==o?t[D(s,o)][a]:void 0}function A(e,t){const[n,r,s]=_(e);return[D(n,t&&t.currentContextId),r,s]}function D(e,t){return t?`${e}-${t}`:e}function _(e){const t=e.split(":");if(1===t.length)return[e,0,void 0];const n=t[0],r=3===t.length?t[1]:void 0;return[n,Number(t[t.length-1]),r]}function R(e,t,n){let r=E("pad",e,t,n);if("explicit"===r){r=E("explicitPaddings",e,t,n);const s=[[0,0],[0,0],[0,0],[0,0]];for(let e=0;e<4;e++)s[e][0]=r[2*e],s[e][1]=r[2*e+1];return s}return r}function F(e){return e.kept?e:(0,I.d9v)(e)}const O=[{tfOpName:"Add",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}
1]},{tfOpName:"AddV2",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddN",category:"arithmetic",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"BiasAdd",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"Sub",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"RealDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Div",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"DivNoNan",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mul",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Maximum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Minimum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Pow",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SquaredDifference",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorMod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],M=
vendor: 6,168 bytes, line 1
1[{tfOpName:"Abs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan2",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ceil",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ClipByValue",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"clipValueMin",type:"number"},{start:2,name:"clipValueMax",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Complex",category:"basic_math",inputs:[{start:0,name:"real",type:"tensor"},{start:1,name:"imag",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ComplexAbs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Elu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Exp",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Floor",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Imag",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Neg",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Real",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Prelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"alpha",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu6",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Selu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sigmoid",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Rsqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Square",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sign",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Round",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Expm1",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log1p",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Reciprocal",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Softplus",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Erf",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"
1Prod",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axes",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LeakyRelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"alpha",name:"alpha",type:"number",defaultValue:.2},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"IsNan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],B
vendor: 7,590 bytes, line 1
1=[{tfOpName:"EmptyTensorList",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"maxNumElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"LoopCond",category:"control",inputs:[{start:0,name:"pred",type:"tensor"}]},{tfOpName:"Switch",category:"control",inputs:[{start:0,name:"data",type:"tensor"},{start:1,name:"pred",type:"tensor"}]},{tfOpName:"Merge",category:"control",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"Enter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"frame_name",name:"frameName",type:"string"},{tfName:"is_constant",name:"isConstant",type:"bool"}]},{tfOpName:"Exit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NextIteration",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayV3",category:"control",inputs:[{start:0,name:"size",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"dynamic_size",name:"dynamicSize",type:"bool"},{tfName:"clear_after_read",name:"clearAfterRead",type:"bool"},{tfName:"identical_element_shapes",name:"identicalElementShapes",type:"bool"},{tfName:"tensor_array_name",name:"name",type:"string"}]},{tfOpName:"TensorArrayWriteV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayReadV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayGatherV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"}]},{tfOpName:"TensorArrayScatterV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArrayConcatV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape_except0",name:"elementShapeExcept0",type:"shape",notSupported:!0}]},{tfOpName:"TensorArraySplitV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"tensor",type:"tensor"},{start:2,name:"lengths",type:"number[]"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArraySizeV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}]},{tfOpName:"TensorArrayCloseV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"}]},{tfOpName:"StatelessIf",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"If",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"StatelessWhile",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"While",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"TensorListScatter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListScatterV2",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"},{start:3,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGather",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListSetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListReserve",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListFromTensor",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListStack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"},{tfName:"num_elements",name:"numElements",type:"dtype"}]},{tfOpName:"TensorListSplit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"},{start:2,name:"lengths",type:"number[]"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListConcat",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"}],attrs:[{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListConcatV2",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"}],attrs:[{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPopBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPushBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListLength",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"}]},{tfOpName:"TensorListResize",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"size",type:"number"}]}],
vendor: 4,169 bytes, line 1
1L=[{tfOpName:"AvgPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[],notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPoolWithArgmax",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"include_batch_in_index",name:"includeBatchInIndex",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AvgPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Conv1D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"stride",name:"stride",type:"number"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NWC"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"dilation",name:"dilation",type:"number",defaultValue:1}]},{tfOpName:"Conv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"useCudnnOnGpu",name:"useCudnnOnGpu",type:"bool"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"_FusedConv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"use_cudnn_on_gpu",name:"useCudnnOnGpu",type:"bool",defaultValue:!0},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"leakyrelu_alpha",name:"leakyreluAlpha",type:"number",defaultValue:.2}]},{tfOpName:"Conv2DBackpropInput",category:"convolution",inputs:[{start:2,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:0,name:"outputShape",type:"number[]"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}
1,{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]",notSupported:!0}]},{tfOpName:"DepthwiseConv2d",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"DepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"FusedDepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]}]},{tfOpName:"Conv3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"Dilation2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"rates",name:"dilations",type:"number[]"},{tfName:"padding",name:"pad",type:"string"}]}],W=[{tfOpName:"Fill",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"},{start:1,name:"value",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"LinSpace",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"num",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"OneHot",category:"creation",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"depth",type:"number"},{start:2,name:"onValue",type:"number",defaultValue:1},{start:3,name:"offValue",type:"number",defaultValue:0}],attrs:[{tfName:"axis",name:"axis",type:"number",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"Ones",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"OnesLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"RandomStandardNormal",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"seed",name:"seed",type:"number",defaultValue:0},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"RandomUniform",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"minval",name:"minval",type:"number",defaultValue:0},{tfName:"maxval",name:"maxval",type:"number",defaultValue:1},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"seed",name:"seed",type:"number",defaultValue:0},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0}
1,{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Range",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"step",type:"number",defaultValue:0}],attrs:[{tfName:"Tidx",name:"dtype",type:"dtype"}]},{tfOpName:"TruncatedNormal",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"means",name:"mean",type:"number",defaultValue:0},{tfName:"stddev",name:"stdDev",type:"number",defaultValue:1},{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Zeros",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"ZerosLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"Multinomial",category:"creation",inputs:[{start:0,name:"logits",type:"tensor"},{start:1,name:"numSamples",type:"number"}],attrs:[{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number"},{tfName:"T",name:"dtype",type:"dtype"},{tfName:"output_dtype",name:"output_dtype",type:"dtype"}]}],P=[{tfOpName:"NonMaxSuppressionV2",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV3",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV4",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"T_threshold",name:"threshold",type:"dtype",notSupported:!0},{tfName:"pad_to_max_output_size",name:"padToMaxOutputSize",type:"bool"}]},{tfOpName:"NonMaxSuppressionV5",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"},{start:5,name:"softNmsSigma",type:"number"}]},{tfOpName:"Where",category:"dynamic",inputs:[{start:0,name:"condition",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ListDiff",category:"dynamic",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],U=[{tfOpName:"LowerBound",category:"evaluation",inputs:[{start:0,name:"sortedSequence",type:"tensor"},{start:1,name:"values",type:"tensor"}]},{tfOpName:"TopKV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"k",type:"number"}],attrs:[{tfName:"sorted",name:"sorted",type:"bool"}]},{tfOpName:"UpperBound",category:"evaluation",inputs:[{start:0,name:"sortedSequence",type:"tensor"},{start:1,name:"values",type:"tensor"}]},{tfOpName:"Unique",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"UniqueV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]}],z=[{tfOpName:"PlaceholderWithDefault",category:"graph",inputs:[{start:0,name:"default",type:"tensor"}],attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Placeholder",category:"graph",attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Const",category:"graph"},{tfOpName:"Identity",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IdentityN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Snapshot",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Rank",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Size",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Shape",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"ShapeN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Print",category:"graph",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"data",type:"tensors"}],attrs:[{tfName:"message",name:"message",type:"string"},{tfName:"first_n",name:"firstN",type:"number",notSupported:!0}
1,{tfName:"summarize",name:"summarize",type:"number",defaultValue:3}]},{tfOpName:"NoOp",category:"graph",inputs:[]},{tfOpName:"StopGradient",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"FakeQuantWithMinMaxVars",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"min",name:"min",type:"number"},{tfName:"max",name:"max",type:"number"}]}],V=[{tfOpName:"HashTable",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"HashTableV2",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"LookupTableImport",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableImportV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFind",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFindV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableSize",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"}]},{tfOpName:"LookupTableSizeV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"}]}],G=[{tfOpName:"ResizeBilinear",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"half_pixel_centers",name:"halfPixelCenters",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ResizeNearestNeighbor",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"half_pixel_centers",name:"halfPixelCenters",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"CropAndResize",category:"image",inputs:[{start:0,name:"image",type:"tensor"},{start:1,name:"boxes",type:"tensor"},{start:2,name:"boxInd",type:"tensor"},{start:3,name:"cropSize",type:"number[]"}],attrs:[{tfName:"method",name:"method",type:"string"},{tfName:"extrapolation_value",name:"extrapolationValue",type:"number"}]},{tfOpName:"ImageProjectiveTransformV3",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"transforms",type:"tensor"},{start:2,name:"outputShape",type:"number[]"},{start:3,name:"fillValue",type:"number"}],attrs:[{tfName:"interpolation",name:"interpolation",type:"string"},{tfName:"fill_mode",name:"fillMode",type:"string"}]}],H=[{tfOpName:"Equal",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NotEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}
1,{tfOpName:"Greater",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"GreaterEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Less",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LessEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalAnd",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalNot",category:"logical",inputs:[{start:0,name:"a",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalOr",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Select",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SelectV2",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],j=[{tfOpName:"_FusedMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"leakyrelu_alpha",name:"leakyreluAlpha",type:"number",defaultValue:.2},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMulV2",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Transpose",category:"matrices",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"perm",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Einsum",category:"matrices",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}],attrs:[{tfName:"equation",name:"equation",type:"string"},{tfName:"N",name:"n",type:"number",defaultValue:2},{tfName:"T",name:"dtype",type:"dtype"}]}],X=[{tfOpName:"EuclideanNorm",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool",defaultValue:!1}]},{tfOpName:"FusedBatchNorm",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}
1]},{tfOpName:"FusedBatchNormV2",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV3",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"LRN",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"depth_radius",name:"radius",type:"number",defaultValue:5},{tfName:"bias",name:"bias",type:"number",defaultValue:1},{tfName:"alpha",name:"alpha",type:"number",defaultValue:1},{tfName:"beta",name:"beta",type:"number",defaultValue:.5}]},{tfOpName:"Softmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"LogSoftmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"SparseToDense",category:"normalization",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!0,notSupported:!0}]}],q=[{tfOpName:"Bincount",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"size",type:"number"},{start:2,name:"weights",type:"tensor"}]},{tfOpName:"DenseBincount",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"size",type:"number"},{start:2,name:"weights",type:"tensor"}],attrs:[{tfName:"binary_output",name:"binaryOutput",type:"bool"}]},{tfOpName:"Max",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Mean",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Min",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Sum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"All",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Any",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"ArgMax",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"ArgMin",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"Prod",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Cumprod",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}],attrs:[{tfName:"exclusive",name:"exclusive",type:"bool"},{tfName:"reverse",name:"reverse",type:"bool"}]},{tfOpName:"Cumsum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}],attrs:[{tfName:"exclusive",name:"exclusive",type:"bool"},{tfName:"reverse",name:"reverse",type:"bool"}]}],K=[{tfOpName:"ConcatV2",category:"slice_join",inputs:[{start:0,end:-1,name:"tensors",type:"tensors"},{start:-1,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"Concat",category:"slice_join",inputs:[{start:1,end:0,name:"tensors",type:"tensors"},{start:0,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"GatherV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"},{start:2,name:"axis",type:"number",defaultValue:0}],attrs:[{tfName:"batch_dims",name:"batchDims",type:"number",defaultValue:0}]},{tfOpName:"Gather",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",notSupported:!0}
1]},{tfOpName:"Reverse",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"dims",type:"bool[]"}]},{tfOpName:"ReverseV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}]},{tfOpName:"Slice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"size",type:"number[]"}]},{tfOpName:"StridedSlice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"end",type:"number[]"},{start:3,name:"strides",type:"number[]"}],attrs:[{tfName:"begin_mask",name:"beginMask",type:"number",defaultValue:0},{tfName:"end_mask",name:"endMask",type:"number",defaultValue:0},{tfName:"new_axis_mask",name:"newAxisMask",type:"number",defaultValue:0},{tfName:"ellipsis_mask",name:"ellipsisMask",type:"number",defaultValue:0},{tfName:"shrink_axis_mask",name:"shrinkAxisMask",type:"number",defaultValue:0}]},{tfOpName:"Pack",category:"slice_join",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0}]},{tfOpName:"Unpack",category:"slice_join",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0},{tfName:"num",name:"num",type:"number",defaultValue:0,notSupported:!0}]},{tfOpName:"Tile",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"reps",type:"number[]"}]},{tfOpName:"Split",category:"slice_join",inputs:[{start:0,name:"axis",type:"number",defaultValue:0},{start:1,name:"x",type:"tensor"}],attrs:[{tfName:"num_split",name:"numOrSizeSplits",type:"number",defaultValue:1}]},{tfOpName:"SplitV",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"numOrSizeSplits",type:"number[]"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"ScatterNd",category:"slice_join",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"values",type:"tensor"},{start:2,name:"shape",type:"number[]"}]},{tfOpName:"GatherNd",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}]},{tfOpName:"SparseToDense",category:"slice_join",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!1,notSupported:!0}]}],Q=[{tfOpName:"SparseFillEmptyRows",category:"sparse",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"values",type:"tensor"},{start:2,name:"denseShape",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}]},{tfOpName:"SparseReshape",category:"sparse",inputs:[{start:0,name:"inputIndices",type:"tensor"},{start:1,name:"inputShape",type:"tensor"},{start:2,name:"newShape",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SparseSegmentMean",category:"sparse",inputs:[{start:0,name:"data",type:"tensor"},{start:1,name:"indices",type:"tensor"},{start:2,name:"segmentIds",type:"tensor"}]},{tfOpName:"SparseSegmentSum",category:"sparse",inputs:[{start:0,name:"data",type:"tensor"},{start:1,name:"indices",type:"tensor"},{start:2,name:"segmentIds",type:"tensor"}]}],Y=[{tfOpName:"FFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"RFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]},{tfOpName:"IRFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]}],Z=[{tfOpName:"StringNGrams",category:"string",inputs:[{start:0,name:"data",type:"tensor"},{start:1,name:"dataSplits",type:"tensor"}],attrs:[{tfName:"separator",name:"separator",type:"string"},{tfName:"ngram_widths",name:"nGramWidths",type:"number[]"},{tfName:"left_pad",name:"leftPad",type:"string"},{tfName:"right_pad",name:"rightPad",type:"string"},{tfName:"pad_width",name:"padWidth",type:"number"},{tfName:"preserve_short_sequences",name:"preserveShortSequences",type:"bool"}],outputs:["ngrams","ngrams_splits"]},{tfOpName:"StringSplit",category:"string",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"delimiter",type:"tensor"}],attrs:[{tfName:"skip_empty",name:"skipEmpty",type:"bool"}],outputs:["indices","values","shape"]},{tfOpName:"StringToHashBucketFast",category:"string",inputs:[{start:0,name:"input",type:"tensor"}],attrs:[{tfName:"num_buckets",name:"numBuckets",type:"number"}]}
vendor: 4,063 bytes, line 1
1],J=[{tfOpName:"Cast",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"SrcT",name:"sdtype",type:"dtype",notSupported:!0},{tfName:"DstT",name:"dtype",type:"dtype"}]},{tfOpName:"ExpandDims",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"MirrorPad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"mode",name:"mode",type:"string"}]},{tfOpName:"Pad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"constant_value",name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"PadV2",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"},{start:2,name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"Reshape",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}]},{tfOpName:"Squeeze",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"axis",tfDeprecatedName:"squeeze_dims",name:"axis",type:"number[]"}]},{tfOpName:"SpaceToBatchND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"paddings",type:"number[]"}]},{tfOpName:"BatchToSpaceND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"crops",type:"number[]"}]},{tfOpName:"DepthToSpace",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"block_size",name:"blockSize",type:"number"},{tfName:"data_format",name:"dataFormat",type:"string"}]},{tfOpName:"BroadcastTo",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}],attrs:[]},{tfOpName:"BroadcastArgs",category:"transformation",inputs:[{start:0,name:"s0",type:"tensor"},{start:1,name:"s1",type:"tensor"}],attrs:[]}];var ee=n(8764).Buffer;class te{static get Instance(){return this._instance||(this._instance=new this)}constructor(){const e=[].concat(...[r,s,a,o,i,u,l,c,p,h,d,f,m,g,y,b,x,w,v].map((e=>e.json)));this.opMappers=e.reduce(((e,t)=>(e[t.tfOpName]=t,e)),{})}transformGraph(e,t={}){const n=e.node,r=[],s=[],a=[],o=n.reduce(((e,t)=>(e[t.name]=this.mapNode(t),t.op.startsWith("Placeholder")?r.push(e[t.name]):"Const"===t.op?s.push(e[t.name]):null!=t.input&&0!==t.input.length||a.push(e[t.name]),e)),{});let i=[];const u=[];let l={},c={};null!=t&&(l=this.mapSignatureEntries(t.inputs),c=this.mapSignatureEntries(t.outputs));const p=Object.keys(o);p.forEach((e=>{const t=o[e];t.inputNames.forEach(((e,n)=>{const[r,,s]=A(e),a=o[r];if(null!=a.outputs){const e=a.outputs.indexOf(s);if(-1!==e){const s=`${r}:${e}`;t.inputNames[n]=s}}t.inputs.push(a),a.children.push(t)}))})),0===Object.keys(c).length?p.forEach((e=>{const t=o[e];0===t.children.length&&u.push(t)})):Object.keys(c).forEach((e=>{const[t]=A(e),n=o[t];null!=n&&(n.signatureKey=c[e],u.push(n))})),Object.keys(l).length>0?Object.keys(l).forEach((e=>{const[t]=A(e),n=o[t];n&&(n.signatureKey=l[e],i.push(n))})):i=r;let h={};null!=e.library&&null!=e.library.function&&(h=e.library.function.reduce(((e,t)=>(e[t.signature.name]=this.mapFunction(t),e)),{}));const d={nodes:o,inputs:i,outputs:u,weights:s,placeholders:r,signature:t,functions:h};return a.length>0&&(d.initNodes=a),d}mapSignatureEntries(e){return Object.keys(e||{}).reduce(((t,n)=>(t[e[n].name]=n,t)),{})}mapNode(e){const t=C(e.op)||this.opMappers[e.op]||{};null==e.attr&&(e.attr={});const n={name:e.name,op:e.op,category:t.category,inputNames:(e.input||[]).map((e=>e.startsWith("^")?e.slice(1):e)),inputs:[],children:[],inputParams:{},attrParams:{},rawAttrs:e.attr,outputs:t.outputs};return null!=t.inputs&&(n.inputParams=t.inputs.reduce(((e,t)=>(e[t.name]={type:t.type,inputIndexStart:t.start,inputIndexEnd:t.end},e)),{})),null!=t.attrs&&(n.attrParams=t.attrs.reduce(((t,n)=>{const r=n.type;let s;
1switch(n.type){case"string":s=re(e.attr,n.tfName,n.defaultValue),void 0===s&&n.tfDeprecatedName&&(s=re(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"string[]":s=de(e.attr,n.tfName,n.defaultValue),void 0===s&&n.tfDeprecatedName&&(s=de(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"number":s=ae(e.attr,n.tfName,n.defaultValue||0),void 0===s&&n.tfDeprecatedName&&(s=ae(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"number[]":s=he(e.attr,n.tfName,n.defaultValue),void 0===s&&n.tfDeprecatedName&&(s=he(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"bool":s=se(e.attr,n.tfName,n.defaultValue),void 0===s&&n.tfDeprecatedName&&(s=se(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"bool[]":s=me(e.attr,n.tfName,n.defaultValue),void 0===s&&n.tfDeprecatedName&&(s=me(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"shape":s=pe(e.attr,n.tfName,n.defaultValue),void 0===s&&n.tfDeprecatedName&&(s=pe(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"shape[]":s=fe(e.attr,n.tfName,n.defaultValue),void 0===s&&n.tfDeprecatedName&&(s=fe(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"dtype":s=ue(e.attr,n.tfName,n.defaultValue),void 0===s&&n.tfDeprecatedName&&(s=ue(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"dtype[]":s=le(e.attr,n.tfName,n.defaultValue),void 0===s&&n.tfDeprecatedName&&(s=le(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"func":s=ie(e.attr,n.tfName,n.defaultValue),void 0===s&&n.tfDeprecatedName&&(s=ie(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"tensor":case"tensors":break;default:throw new Error(`Unsupported param type: ${n.type} for op: ${e.op}`)}return t[n.name]={value:s,type:r},t}),{})),n}mapFunction(e){const t=e.nodeDef,n=[];let r={};null!=t&&(r=t.reduce(((e,t)=>(e[t.name]=this.mapNode(t),"Const"===t.op&&n.push(e[t.name]),e)),{}));const s=[],a=[];e.signature.inputArg.forEach((e=>{const[t]=A(e.name),n={name:t,op:"Placeholder",inputs:[],inputNames:[],category:"graph",inputParams:{},attrParams:{dtype:{value:oe(e.type),type:"dtype"}},children:[]};n.signatureKey=e.name,s.push(n),r[t]=n}));Object.keys(r).forEach((e=>{const t=r[e];t.inputNames.forEach(((e,n)=>{const[s,,a]=A(e),o=r[s];if(null!=o.outputs){const e=o.outputs.indexOf(a);if(-1!==e){const r=`${s}:${e}`;t.inputNames[n]=r}}t.inputs.push(o),o.children.push(t)}))}));const o=e.ret;e.signature.outputArg.forEach((e=>{const[t,n]=A(o[e.name]),s=r[t];null!=s&&(s.defaultOutput=n,a.push(s))}));const i=this.mapArgsToSignature(e);return{nodes:r,inputs:s,outputs:a,weights:n,placeholders:[],signature:i}}mapArgsToSignature(e){return{methodName:e.signature.name,inputs:e.signature.inputArg.reduce(((e,t)=>(e[t.name]=this.mapArgToTensorInfo(t),e)),{}),outputs:e.signature.outputArg.reduce(((t,n)=>(t[n.name]=this.mapArgToTensorInfo(n,e.ret),t)),{})}}mapArgToTensorInfo(e,t){let n=e.name;return null!=t&&(n=t[n]),{name:n,dtype:e.type}}}function ne(e,t){const n=Array.isArray(e)?String.fromCharCode.apply(null,e):function(e){const t=(0,I.OBj)().global;if("undefined"!==typeof t.atob)return t.atob(e);if("undefined"!==typeof ee)return new ee(e,"base64").toString();throw new Error("Unable to decode base64 in this environment. Missing built-in atob() or Buffer()")}(e);return t?n:n.toLowerCase()}function re(e,t,n,r=!1){const s=e[t];return null!=s?ne(s.s,r):n}function se(e,t,n){const r=e[t];return r?r.b:n}function ae(e,t,n){const r=e[t]||{},s=null!=r.i?r.i:null!=r.f?r.f:n;return"number"===typeof s?s:parseInt(s,10)}function oe(e){switch("string"===typeof e&&(e=N[e]),e){case N.DT_FLOAT:case N.DT_HALF:return"float32";case N.DT_INT32:case N.DT_INT64:case N.DT_INT8:case N.DT_UINT8:return"int32";case N.DT_BOOL:return"bool";case N.DT_DOUBLE:return"float32";case N.DT_STRING:return"string";default:return null}}function ie(e,t,n){const r=e[t];return r&&r.func?r.func.name:n}function ue(e,t,n){const r=e[t];return r&&r.type?oe(r.type):n}function le(e,t,n){const r=e[t];return r&&r.list&&r.list.type?r.list.type.map((e=>oe(e))):n}function ce(e){if(!e.unknownRank)return null!=e.dim?e.dim.map((e=>"number"===typeof e.size?e.size:parseInt(e.size,10))):[]}function pe(e,t,n){const r=e[t];return r&&r.shape?ce(r.shape):n}function he(e,t,n){const r=e[t];return r?((r.list.f&&r.list.f.length?r.list.f:r.list.i)||[]).map((e=>"number"===typeof e?e:parseInt(e,10))):n}function de(e,t,n,r=!1){const s=e[t];return s&&s.list&&s.list.s?s.list.s.map((e=>ne(e,r))):n}function fe(e,t,n){const r=e[t];return r&&r.list&&r.list.shape?r.list.shape.map((e=>ce(e))):n}function me(e,t,n){const r=e[t];return r&&r.list&&r.list.b?r.list.b:n}class ge{constructor(e,t,n){this.node=e,this.tensorMap=t,this.context=n,this.inputs=[],this.attrs={},this.inputs=e.inputNames.map((e=>this.getInput(e))),null!=e.rawAttrs&&(this.attrs=Object.keys(e.rawAttrs).reduce(((e,t)=>(e[t]=this.getAttr(t),e)),{}))}getInput(e){return $(e,this.tensorMap,this.context)}getAttr(e,t){const n=this.node.rawAttrs[e];if(null!=n.tensor)return $(e,this.tensorMap,this.context);if(null!=n.i||null!=n.f)return ae(this.node.rawAttrs,e,t);if(null!=n.s)return re(this.node.rawAttrs,e,t);if(null!=n.b)return se(this.node.rawAttrs,e,t);if(null!=n.shape)return pe(this.node.rawAttrs,e,t);if(null!=n.type)return ue(this.node.rawAttrs,e,t);if(null!=n.list){if(null!=n.list.i||null!=n.list.f)return he(this.node.rawAttrs,e,t);if(null!=n.list.s)return de(this.node.rawAttrs,e,t);if(null!=n.list.shape)return fe(this.node.rawAttrs,e,t);if(null!=n.list.b)return me(this.node.rawAttrs,e,t);if(null!=n.list.type)return le(this.node.rawAttrs,e,t)}return t}}var ye=n(9370);function be(e,t,n=""){if("number"!==typeof e&&"number"!==typeof t){I.D5U.assert(e.length===t.length,(()=>n+` Shapes ${e} and ${t} must match`));for(let r=0;r<e.length;r++){const s=e[r],a=t[r];I.D5U.assert(s<0||a<0||s===a,(()=>n+` Shapes ${e} and ${t} must match`))}}}function xe(e){return"number"!==typeof e&&!e.some((e=>e<0))}function we(e,t,n){let r=ve(e,n);const s=!xe(r);if(s&&0===t.length)throw new Error(`Tried to calculate elements of an empty list with non-fully-defined elementShape: ${r}`);if(s&&t.forEach((e=>{r=ve(e.shape,r)})),!xe(r))throw new Error(`Non-fully-defined elementShape: ${r}`);return r}function ve(e,t){if("number"===typeof e)return t;if("number"===typeof t)return e;if(e.length!==t.length)throw new Error(`Incompatible ranks during merge: ${e} vs. ${t}`);const n=[];for(let r=0;r<e.length;++r){const s=e[r],a=t[r];if(s>=0&&a>=0&&s!==a)throw new Error(`Incompatible shape during merge: ${e} vs. ${t}`);n[r]=s>=0?s:a}return n}class ke{constructor(e,t,n,r,s,a,o){this.name=e,this.dtype=t,this.maxSize=n,this.elementShape=r,this.identicalElementShapes=s,this.dynamicSize=a,this.clearAfterRead=o,this.tensors=[],this.closed_
1=!1,this.idTensor=(0,I.iD$)(0),(0,I.CnY)(this.idTensor)}get id(){return this.idTensor.id}get closed(){return this.closed_}clearAndClose(e){this.tensors.forEach((t=>{null!=e&&e.has(t.tensor.id)||t.tensor.dispose()})),this.tensors=[],this.closed_=!0,this.idTensor.dispose()}size(){return this.tensors.length}read(e){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(e<0||e>=this.size())throw new Error(`Tried to read from index ${e}, but array size is: ${this.size()}`);const t=this.tensors[e];if(t.cleared)throw new Error(`TensorArray ${this.name}: Could not read index ${e} twice because it was cleared after a previous read (perhaps try setting clear_after_read = false?).`);return this.clearAfterRead&&(t.cleared=!0),t.read=!0,t.tensor}readMany(e){return e.map((e=>this.read(e)))}write(e,t){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(e<0||!this.dynamicSize&&e>=this.maxSize)throw new Error(`Tried to write to index ${e}, but array is not resizeable and size is: ${this.maxSize}`);const n=this.tensors[e]||{};if(t.dtype!==this.dtype)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${e},\n          because the value dtype is ${t.dtype}, but TensorArray dtype is ${this.dtype}.`);if(0!==this.size()||null!=this.elementShape&&0!==this.elementShape.length||(this.elementShape=t.shape),be(this.elementShape,t.shape,`TensorArray ${this.name}: Could not write to TensorArray index ${e}.`),n.read)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${e}, because it has already been read.`);if(n.written)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${e}, because it has already been written.`);n.tensor=t,(0,I.CnY)(t),n.written=!0,this.tensors[e]=n}writeMany(e,t){if(e.length!==t.length)throw new Error(`TensorArray ${this.name}: could not write multiple tensors,because the index size: ${e.length} is not the same as tensors size: ${t.length}.`);e.forEach(((e,n)=>this.write(e,t[n])))}gather(e,t){if(t&&t!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but gather requested dtype ${t}`);if(e)e=e.slice(0,this.size());else{e=[];for(let t=0;t<this.size();t++)e.push(t)}if(0===e.length)return(0,I.XeE)([],[0].concat(this.elementShape));const n=this.readMany(e);return be(this.elementShape,n[0].shape,"TensorArray shape mismatch: "),(0,I.knu)(n,0)}concat(e){if(e&&e!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but concat requested dtype ${e}`);if(0===this.size())return(0,I.XeE)([],[0].concat(this.elementShape));const t=[];for(let r=0;r<this.size();r++)t.push(r);const n=this.readMany(t);return be(this.elementShape,n[0].shape,`TensorArray shape mismatch: tensor array shape (${this.elementShape}) vs first tensor shape (${n[0].shape})`),(0,I.zoF)(n,0)}scatter(e,t){if(t.dtype!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but tensor has dtype ${t.dtype}`);if(e.length!==t.shape[0])throw new Error(`Expected len(indices) == tensor.shape[0], but saw: ${e.length} vs. ${t.shape[0]}`);const n=Math.max(...e);if(!this.dynamicSize&&n>=this.maxSize)throw new Error(`Max index must be < array size (${n}  vs. ${this.maxSize})`);this.writeMany(e,(0,I.HHK)(t,0))}split(e,t){if(t.dtype!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but tensor has dtype ${t.dtype}`);let n=0;const r=e.map((e=>(n+=e,n)));if(n!==t.shape[0])throw new Error(`Expected sum of lengths to be equal to\n          tensor.shape[0], but sum of lengths is\n        ${n}, and tensor's shape is: ${t.shape}`);if(!this.dynamicSize&&e.length!==this.maxSize)throw new Error(`TensorArray's size is not equal to the size of lengths (${this.maxSize} vs. ${e.length}), and the TensorArray is not marked as dynamically resizeable`);const s=0===n?0:t.size/n,a=[];(0,I.lub)((()=>{t=(0,I.XLQ)(t,[1,n,s]);for(let n=0;n<e.length;++n){const o=[0,0===n?0:r[n-1],0],i=[1,e[n],s];a[n]=(0,I.XLQ)((0,I.tPi)(t,o,i),this.elementShape)}return a}));const o=[];for(let i=0;i<e.length;i++)o[i]=i;this.writeMany(o,a)}}class Ie{constructor(e,t,n,r=-1){this.tensors=e,this.elementShape=t,this.elementDtype=n,null!=e&&e.forEach((e=>{if(n!==e.dtype)throw new Error(`Invalid data types; op elements ${n}, but list elements ${e.dtype}`);be(t,e.shape,"TensorList shape mismatch: "),(0,I.CnY)(e)})),this.idTensor=(0,I.iD$)(0),this.maxNumElements=r,(0,I.CnY)(this.idTensor)}get id(){return this.idTensor.id}copy(){return new Ie([...this.tensors],this.elementShape,this.elementDtype)}
1clearAndClose(e){this.tensors.forEach((t=>{null!=e&&e.has(t.id)||t.dispose()})),this.tensors.length=0,this.idTensor.dispose()}size(){return this.tensors.length}stack(e,t,n=-1){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);if(-1!==n&&this.tensors.length!==n)throw new Error(`Operation expected a list with ${n} elements but got a list with ${this.tensors.length} elements.`);be(e,this.elementShape,"TensorList shape mismatch: ");const r=we(this.elementShape,this.tensors,e);return(0,I.lub)((()=>{const e=this.tensors.map((e=>(0,I.XLQ)(e,r)));return(0,I.knu)(e,0)}))}popBack(e,t){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);if(0===this.size())throw new Error("Trying to pop from an empty list.");const n=we(this.elementShape,this.tensors,e),r=this.tensors.pop();return r.kept=!1,be(r.shape,e,"TensorList shape mismatch: "),(0,I.XLQ)(r,n)}pushBack(e){if(e.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${e.dtype}, but list elements ${this.elementDtype}`);if(be(e.shape,this.elementShape,"TensorList shape mismatch: "),this.maxNumElements===this.size())throw new Error("Trying to push element into a full list.");(0,I.CnY)(e),this.tensors.push(e)}resize(e){if(e<0)throw new Error(`TensorListResize expects size to be non-negative. Got: ${e}`);if(-1!==this.maxNumElements&&e>this.maxNumElements)throw new Error(`TensorListResize input size ${e} is greater maxNumElement ${this.maxNumElements}.`);const t=new Ie([],this.elementShape,this.elementDtype,this.maxNumElements);t.tensors.length=e;for(let n=0;n<Math.min(this.tensors.length,e);++n)t.tensors[n]=this.tensors[n];return t}getItem(e,t,n){if(n!==this.elementDtype)throw new Error(`Invalid data types; op elements ${n}, but list elements ${this.elementDtype}`);if(e<0||e>this.tensors.length)throw new Error(`Trying to access element ${e} in a list with ${this.tensors.length} elements.`);if(null==this.tensors[e])throw new Error(`element at index ${e} is null.`);be(this.tensors[e].shape,t,"TensorList shape mismatch: ");const r=we(this.elementShape,this.tensors,t);return(0,I.XLQ)(this.tensors[e],r)}setItem(e,t){if(t.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t.dtype}, but list elements ${this.elementDtype}`);if(e<0||-1!==this.maxNumElements&&e>=this.maxNumElements)throw new Error(`Trying to set element ${e} in a list with max ${this.maxNumElements} elements.`);be(this.elementShape,t.shape,"TensorList shape mismatch: "),(0,I.CnY)(t),null!=this.tensors[e]&&(this.tensors[e].kept=!1),this.tensors[e]=t}gather(e,t,n){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);be(this.elementShape,n,"TensorList shape mismatch: "),e=e.slice(0,this.size());const r=we(this.elementShape,this.tensors,n);return 0===e.length?(0,I.XeE)([],[0].concat(r)):(0,I.lub)((()=>{const t=e.map((e=>(0,I.XLQ)(this.tensors[e],r)));return(0,I.knu)(t,0)}))}concat(e,t){if(e&&e!==this.elementDtype)throw new Error(`TensorList dtype is ${this.elementDtype} but concat requested dtype ${e}`);be(this.elementShape,t,"TensorList shape mismatch: ");const n=we(this.elementShape,this.tensors,t);return 0===this.size()?(0,I.XeE)([],[0].concat(n)):(0,I.lub)((()=>{const e=this.tensors.map((e=>(0,I.XLQ)(e,n)));return(0,I.zoF)(e,0)}))}}const Ne=async(e,t,n)=>{switch(e.op){case"If":case"StatelessIf":{const r=E("thenBranch",e,t,n),s=E("elseBranch",e,t,n),a=E("cond",e,t,n),o=E("args",e,t,n);return(await a.data())[0]?n.functionMap[r].executeFunctionAsync(o,n.tensorArrayMap,n.tensorListMap):n.functionMap[s].executeFunctionAsync(o,n.tensorArrayMap,n.tensorListMap)}case"While":case"StatelessWhile":{const r=E("body",e,t,n),s=E("cond",e,t,n),a=E("args",e,t,n),o=await n.functionMap[s].executeFunctionAsync(a,n.tensorArrayMap,n.tensorListMap),i=a.map((e=>e.id));let u=await o[0].data();o.forEach((e=>{e.kept||-1!==i.indexOf(e.id)||e.dispose()}));let l=a;for(;u[0];){const e=l;l=await n.functionMap[r].executeFunctionAsync(l,n.tensorArrayMap,n.tensorListMap);const t=l.map((e=>e.id));e.forEach((e=>{e.kept||-1!==i.indexOf(e.id)||-1!==t.indexOf(e.id)||e.dispose()}));const a=await n.functionMap[s].executeFunctionAsync(l,n.tensorArrayMap,n.tensorListMap);u=await a[0].data(),a.forEach((e=>{e.kept||-1!==i.indexOf(e.id)||-1!==t.indexOf(e.id)||e.dispose()}))}return l}case"LoopCond":return[F(E("pred",e,t,n))];case"Switch":{const r=E("pred",e,t,n);let s=E("data",e,t,n);return s.kept||(s=F(s)),(await r.data())[0]?[void 0,s]:[s,void 0]}case"Merge":{const r=e.inputNames.find((e=>void 0!==$(e,t,n)));if(r){return[F($(r,t,n))]}return}case"Enter":{const r=E("frameName",e,t,n),s=E("tensor",e,t,n);
1return n.enterFrame(r),[F(s)]}case"Exit":{const r=E("tensor",e,t,n);return n.exitFrame(),[F(r)]}case"NextIteration":{const r=E("tensor",e,t,n);return n.nextIteration(),[F(r)]}case"TensorArrayV3":{const r=E("size",e,t,n),s=E("dtype",e,t,n),a=E("elementShape",e,t,n),o=E("dynamicSize",e,t,n),i=E("clearAfterRead",e,t,n),u=E("identicalElementShapes",e,t,n),l=E("name",e,t,n),c=new ke(l,s,r,a,u,o,i);return n.addTensorArray(c),[c.idTensor,(0,I.iD$)(1)]}case"TensorArrayWriteV3":{const r=E("tensorArrayId",e,t,n),s=E("index",e,t,n),a=E("tensor",e,t,n),o=n.getTensorArray(r.id);return o.write(s,a),[o.idTensor]}case"TensorArrayReadV3":{const r=E("tensorArrayId",e,t,n),s=E("index",e,t,n);return[n.getTensorArray(r.id).read(s)]}case"TensorArrayGatherV3":{const r=E("tensorArrayId",e,t,n),s=E("indices",e,t,n),a=E("dtype",e,t,n);return[n.getTensorArray(r.id).gather(s,a)]}case"TensorArrayScatterV3":{const r=E("tensorArrayId",e,t,n),s=E("indices",e,t,n),a=E("tensor",e,t,n),o=n.getTensorArray(r.id);return o.scatter(s,a),[o.idTensor]}case"TensorArrayConcatV3":{const r=E("tensorArrayId",e,t,n),s=n.getTensorArray(r.id),a=E("dtype",e,t,n);return[s.concat(a)]}case"TensorArraySplitV3":{const r=E("tensorArrayId",e,t,n),s=E("tensor",e,t,n),a=E("lengths",e,t,n),o=n.getTensorArray(r.id);return o.split(a,s),[o.idTensor]}case"TensorArraySizeV3":{const r=E("tensorArrayId",e,t,n),s=n.getTensorArray(r.id);return[(0,I.iD$)(s.size(),"int32")]}case"TensorArrayCloseV3":{const r=E("tensorArrayId",e,t,n),s=n.getTensorArray(r.id);return s.clearAndClose(),[s.idTensor]}case"TensorListSetItem":{const r=E("tensorListId",e,t,n),s=E("index",e,t,n),a=E("tensor",e,t,n),o=n.getTensorList(r.id);return o.setItem(s,a),[o.idTensor]}case"TensorListGetItem":{const r=E("tensorListId",e,t,n),s=E("index",e,t,n),a=E("elementShape",e,t,n),o=E("elementDType",e,t,n);return[n.getTensorList(r.id).getItem(s,a,o)]}case"TensorListScatterV2":case"TensorListScatter":{const r=E("indices",e,t,n),s=function(e,t,n,r){if(t.length!==e.shape[0])throw new Error(`Expected len(indices) == tensor.shape[0], but saw: ${t.length} vs. ${e.shape[0]}`);const s=Math.max(...t);if(null!=r&&-1!==r&&s>=r)throw new Error(`Max index must be < array size (${s}  vs. ${r})`);const a=new Ie([],n,e.dtype,r),o=(0,I.HHK)(e,0);return t.forEach(((e,t)=>{a.setItem(e,o[t])})),a}(E("tensor",e,t,n),r,E("elementShape",e,t,n),E("numElements",e,t,n));return n.addTensorList(s),[s.idTensor]}case"TensorListReserve":case"EmptyTensorList":{const r=E("elementShape",e,t,n),s=E("elementDType",e,t,n);let a;a="TensorListReserve"===e.op?"numElements":"maxNumElements";const o=E(a,e,t,n),i=function(e,t,n,r){return new Ie([],e,t,r)}(r,s,0,"TensorListReserve"===e.op?-1:o);return n.addTensorList(i),[i.idTensor]}case"TensorListGather":{const r=E("tensorListId",e,t,n),s=E("indices",e,t,n),a=E("elementShape",e,t,n),o=E("elementDType",e,t,n);return[n.getTensorList(r.id).gather(s,o,a)]}case"TensorListStack":{const r=E("tensorListId",e,t,n),s=E("elementShape",e,t,n),a=E("elementDType",e,t,n),o=E("numElements",e,t,n);return[n.getTensorList(r.id).stack(s,a,o)]}case"TensorListFromTensor":{const r=function(e,t,n){const r=e.dtype;if(e.shape.length<1)throw new Error(`Tensor must be at least a vector, but saw shape: ${e.shape}`);if(e.dtype!==n)throw new Error(`Invalid data types; op elements ${e.dtype}, but list elements ${n}`);be(e.shape.slice(1),t,"TensorList shape mismatch: ");const s=(0,I.HHK)(e);return new Ie(s,t,r)}(E("tensor",e,t,n),E("elementShape",e,t,n),E("elementDType",e,t,n));return n.addTensorList(r),[r.idTensor]}case"TensorListConcat":case"TensorListConcatV2":{const r=E("tensorListId",e,t,n),s=n.getTensorList(r.id),a=E("dtype",e,t,n),o=E("elementShape",e,t,n);return[s.concat(a,o)]}case"TensorListPushBack":{const r=E("tensorListId",e,t,n),s=E("tensor",e,t,n),a=n.getTensorList(r.id);return a.pushBack(s),[a.idTensor]}case"TensorListPopBack":{const r=E("tensorListId",e,t,n),s=E("elementShape",e,t,n),a=E("elementDType",e,t,n);return[n.getTensorList(r.id).popBack(s,a)]}case"TensorListSplit":{const r=E("tensor",e,t,n),s=E("elementShape",e,t,n),a=function(e,t,n){let r=0;const s=t.map((e=>(r+=e,r)));if(r!==e.shape[0])throw new Error(`Expected sum of lengths to be equal to\n          tensor.shape[0], but sum of lengths is\n        ${r}, and tensor's shape is: ${e.shape}`);const a=ve(e.shape.slice(1),n),o=0===r?0:e.size/r,i=(0,I.lub)((()=>{const n=[];
1e=(0,I.XLQ)(e,[1,r,o]);for(let r=0;r<t.length;++r){const i=[0,0===r?0:s[r-1],0],u=[1,t[r],o];n[r]=(0,I.XLQ)((0,I.tPi)(e,i,u),a)}return e.dispose(),n})),u=new Ie([],n,e.dtype,t.length);for(let l=0;l<i.length;l++)u.setItem(l,i[l]);return u}(r,E("lengths",e,t,n),s);return n.addTensorList(a),[a.idTensor]}case"TensorListLength":{const r=E("tensorListId",e,t,n),s=n.getTensorList(r.id);return[(0,I.iD$)(s.size(),"int32")]}case"TensorListResize":{const r=E("tensorListId",e,t,n),s=E("size",e,t,n),a=n.getTensorList(r.id).resize(s);return n.addTensorList(a),[a.idTensor]}default:throw TypeError(`Node type ${e.op} is not implemented`)}};function Se(e,t,n){const[r,s]=E("fusedOps",e,t,n),a="biasadd"===r,o=!a,i="prelu"===s,u="fusedbatchnorm"===r,l=E("numArgs",e,t,n);if(a){if(i&&2!==l)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!i&&a&&1!==l)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd must have one extra argument: bias.")}if(u)throw new Error("FusedConv2d and DepthwiseConv2d with FusedBatchNorm is not supported");const c=E("strides",e,t,n),p=R(e,t,n),h=E("dataFormat",e,t,n).toUpperCase(),d=E("dilations",e,t,n);let[f,m]=E("args",e,t,n);o&&(m=f,f=void 0);return{stride:c,pad:p,dataFormat:h,dilations:d,biasArg:f,preluArg:m,activationFunc:s,leakyreluAlpha:E("leakyreluAlpha",e,t,n)}}function Te(e,t,n){return{boxes:E("boxes",e,t,n),scores:E("scores",e,t,n),maxOutputSize:E("maxOutputSize",e,t,n),iouThreshold:E("iouThreshold",e,t,n),scoreThreshold:E("scoreThreshold",e,t,n),softNmsSigma:E("softNmsSigma",e,t,n)}}var Ce=n(9494);class Ee{constructor(e,t){this.keyDType=e,this.valueDType=t,this.handle=(0,I.iD$)(0),this.tensorMap=new Map,(0,I.CnY)(this.handle)}get id(){return this.handle.id}clearAndClose(){this.tensorMap.forEach((e=>e.dispose())),this.tensorMap.clear(),this.handle.dispose()}size(){return this.tensorMap.size}tensorSize(){return Ce.i(this.size(),"int32")}async import(e,t){this.checkKeyAndValueTensor(e,t);const n=await e.data();return this.tensorMap.forEach((e=>e.dispose())),this.tensorMap.clear(),(0,I.lub)((()=>{const e=(0,I.HHK)(t),r=n.length,s=e.length;I.D5U.assert(r===s,(()=>`The number of elements doesn't match, keys has ${r} elements, the values has ${s} elements.`));for(let t=0;t<r;t++){const r=n[t],s=e[t];(0,I.CnY)(s),this.tensorMap.set(r,s)}return this.handle}))}async find(e,t){this.checkKeyAndValueTensor(e,t);const n=await e.data();return(0,I.lub)((()=>{const e=[];for(let r=0;r<n.length;r++){const s=n[r],a=this.findWithDefault(s,t);e.push(a)}return(0,I.knu)(e)}))}findWithDefault(e,t){const n=this.tensorMap.get(e);return null!=n?n:t}checkKeyAndValueTensor(e,t){if(e.dtype!==this.keyDType)throw new Error(`Expect key dtype ${this.keyDType}, but got ${e.dtype}`);if(t.dtype!==this.valueDType)throw new Error(`Expect value dtype ${this.valueDType}, but got ${t.dtype}`)}}function $e(e,t,n,r,s=I.lub){const a=((e,t,n)=>{switch(e.category){case"arithmetic":return s((()=>((e,t,n,r=k)=>{switch(e.op){case"BiasAdd":case"AddV2":case"Add":return[r.add(E("a",e,t,n),E("b",e,t,n))];case"AddN":return[r.addN(E("tensors",e,t,n))];case"FloorMod":case"Mod":return[r.mod(E("a",e,t,n),E("b",e,t,n))];case"Mul":return[r.mul(E("a",e,t,n),E("b",e,t,n))];case"RealDiv":case"Div":return[r.div(E("a",e,t,n),E("b",e,t,n))];case"DivNoNan":return[r.divNoNan(E("a",e,t,n),E("b",e,t,n))];case"FloorDiv":return[r.floorDiv(E("a",e,t,n),E("b",e,t,n))];case"Sub":return[r.sub(E("a",e,t,n),E("b",e,t,n))];case"Minimum":return[r.minimum(E("a",e,t,n),E("b",e,t,n))];case"Maximum":return[r.maximum(E("a",e,t,n),E("b",e,t,n))];case"Pow":return[r.pow(E("a",e,t,n),E("b",e,t,n))];case"SquaredDifference":return[r.squaredDifference(E("a",e,t,n),E("b",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n)));case"basic_math":return s((()=>((e,t,n,r=k)=>{switch(e.op){case"Abs":case"ComplexAbs":return[r.abs(E("x",e,t,n))];case"Acos":return[r.acos(E("x",e,t,n))];case"Acosh":return[r.acosh(E("x",e,t,n))];case"Asin":return[r.asin(E("x",e,t,n))];case"Asinh":return[r.asinh(E("x",e,t,n))];case"Atan":return[r.atan(E("x",e,t,n))];case"Atan2":return[r.atan2(E("x",e,t,n),E("y",e,t,n))];case"Atanh":return[r.atanh(E("x",e,t,n))];case"Ceil":return[r.ceil(E("x",e,t,n))];case"Complex":return[r.complex(E("real",e,t,n),E("imag",e,t,n))];case"Cos":return[r.cos(E("x",e,t,n))];case"Cosh":return[r.cosh(E("x",e,t,n))];case"Elu":return[r.elu(E("x",e,t,n))];case"Erf":return[r.erf(E("x",e,t,n))];case"Exp":return[r.exp(E("x",e,t,n))];case"Expm1":return[r.expm1(E("x",e,t,n))];case"Floor":return[r.floor(E("x",e,t,n))];case"Log":return[r.log(E("x",e,t,n))];case"Log1p":return[r.log1p(E("x",e,t,n))];case"Imag":return[r.imag(E("x",e,t,n))];case"Neg":return[r.neg(E("x",e,t,n))];case"Reciprocal":return[r.reciprocal(E("x",e,t,n))];case"Real":return[r.real(E("x",e,t,n))];case"Relu":return[r.relu(E("x",e,t,n))];case"Round":return[r.round(E("x",e,t,n))];case"Selu":return[r.selu(E("x",e,t,n))];case"Sigmoid":return[r.sigmoid(E("x",e,t,n))];case"Sin":return[r.sin(E("x",e,t,n))];case"Sign":return[r.sign(E("x",e,t,n))];case"Sinh":return[r.sinh(E("x",e,t,n))];case"Softplus":return[r.softplus(E("x",e,t,n))];case"Sqrt":return[r.sqrt(E("x",e,t,n))];case"Square":return[r.square(E("x",e,t,n))];case"Tanh":return[r.tanh(E("x",e,t,n))];case"Tan":return[r.tan(E("x",e,t,n))];case"ClipByValue":return[r.clipByValue(E("x",e,t,n),E("clipValueMin",e,t,n),E("clipValueMax",e,t,n))];case"Relu6":return[r.relu6(E("x",e,t,n))];case"Rsqrt":return[r.rsqrt($(e.inputNames[0],t,n))];case"Prod":return[r.prod(E("x",e,t,n),E("axes",e,t,n))];
vendor: 12,955 bytes, line 1
1case"LeakyRelu":return[r.leakyRelu(E("x",e,t,n),E("alpha",e,t,n))];case"Prelu":return[r.prelu(E("x",e,t,n),E("alpha",e,t,n))];case"IsNan":return[r.isNaN($(e.inputNames[0],t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n)));case"control":return Ne(e,t,n);case"convolution":return s((()=>((e,t,n,r=k)=>{switch(e.op){case"Conv1D":{const s=E("stride",e,t,n),a=E("pad",e,t,n),o=E("dataFormat",e,t,n).toUpperCase(),i=E("dilation",e,t,n);return[r.conv1d(E("x",e,t,n),E("filter",e,t,n),s,a,o,i)]}case"Conv2D":{const s=E("strides",e,t,n),a=R(e,t,n),o=E("dataFormat",e,t,n).toUpperCase(),i=E("dilations",e,t,n);return[r.conv2d(E("x",e,t,n),E("filter",e,t,n),[s[1],s[2]],a,o,[i[1],i[2]])]}case"_FusedConv2D":{const{stride:s,pad:a,dataFormat:o,dilations:i,biasArg:u,preluArg:l,activationFunc:c,leakyreluAlpha:p}=Se(e,t,n);return[r.fused.conv2d({x:E("x",e,t,n),filter:E("filter",e,t,n),strides:[s[1],s[2]],pad:a,dataFormat:o,dilations:[i[1],i[2]],bias:u,activation:c,preluActivationWeights:l,leakyreluAlpha:p})]}case"FusedDepthwiseConv2dNative":{const{stride:s,pad:a,dataFormat:o,dilations:i,biasArg:u,preluArg:l,activationFunc:c,leakyreluAlpha:p}=Se(e,t,n);return[r.fused.depthwiseConv2d({x:E("x",e,t,n),filter:E("filter",e,t,n),strides:[s[1],s[2]],pad:a,dataFormat:o,dilations:[i[1],i[2]],bias:u,activation:c,preluActivationWeights:l,leakyreluAlpha:p})]}case"Conv2DBackpropInput":case"Conv2dTranspose":{const s=E("outputShape",e,t,n),a=E("strides",e,t,n),o=R(e,t,n);return[r.conv2dTranspose(E("x",e,t,n),E("filter",e,t,n),s,[a[1],a[2]],o)]}case"DepthwiseConv2dNative":case"DepthwiseConv2d":{const s=E("strides",e,t,n),a=R(e,t,n),o=E("dilations",e,t,n),i=E("dataFormat",e,t,n).toUpperCase();return[r.depthwiseConv2d(E("input",e,t,n),E("filter",e,t,n),[s[1],s[2]],a,i,[o[1],o[2]])]}case"Conv3D":{const s=E("strides",e,t,n),a=E("pad",e,t,n),o=E("dataFormat",e,t,n).toUpperCase(),i=E("dilations",e,t,n);return[r.conv3d(E("x",e,t,n),E("filter",e,t,n),[s[1],s[2],s[3]],a,o,[i[1],i[2],i[3]])]}case"AvgPool":{const s=E("strides",e,t,n),a=E("pad",e,t,n),o=E("kernelSize",e,t,n);return[r.avgPool(E("x",e,t,n),[o[1],o[2]],[s[1],s[2]],a)]}case"MaxPool":{const s=E("strides",e,t,n),a=E("pad",e,t,n),o=E("kernelSize",e,t,n);return[r.maxPool(E("x",e,t,n),[o[1],o[2]],[s[1],s[2]],a)]}case"MaxPoolWithArgmax":{const s=E("strides",e,t,n),a=E("pad",e,t,n),o=E("kernelSize",e,t,n),i=E("includeBatchInIndex",e,t,n),{result:u,indexes:l}=r.maxPoolWithArgmax(E("x",e,t,n),[o[1],o[2]],[s[1],s[2]],a,i);return[u,l]}case"AvgPool3D":{const s=E("strides",e,t,n),a=E("pad",e,t,n),o=E("kernelSize",e,t,n);return[r.avgPool3d(E("x",e,t,n),[o[1],o[2],o[3]],[s[1],s[2],s[3]],a)]}case"MaxPool3D":{const s=E("strides",e,t,n),a=E("pad",e,t,n),o=E("kernelSize",e,t,n);return[r.maxPool3d(E("x",e,t,n),[o[1],o[2],o[3]],[s[1],s[2],s[3]],a)]}case"Dilation2D":{const s=E("strides",e,t,n),a=E("pad",e,t,n),o=E("dilations",e,t,n),i=s[1],u=s[2],l=o[1],c=o[2];return[r.dilation2d(E("x",e,t,n),E("filter",e,t,n),[i,u],a,[l,c],"NHWC")]}default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n)));case"creation":return s((()=>((e,t,n,r=k)=>{switch(e.op){case"Fill":{const s=E("shape",e,t,n),a=E("dtype",e,t,n),o=E("value",e,t,n);return[r.fill(s,o,a)]}case"LinSpace":{const s=E("start",e,t,n),a=E("stop",e,t,n),o=E("num",e,t,n);return[r.linspace(s,a,o)]}case"Multinomial":{const s=E("logits",e,t,n),a=E("numSamples",e,t,n),o=E("seed",e,t,n);return[r.multinomial(s,a,o)]}case"OneHot":{const s=E("indices",e,t,n),a=E("depth",e,t,n),o=E("onValue",e,t,n),i=E("offValue",e,t,n),u=E("dtype",e,t,n);return[r.oneHot(s,a,o,i,u)]}case"Ones":return[r.ones(E("shape",e,t,n),E("dtype",e,t,n))];case"OnesLike":return[r.onesLike(E("x",e,t,n))];case"RandomStandardNormal":return[r.randomStandardNormal(E("shape",e,t,n),E("dtype",e,t,n),E("seed",e,t,n))];case"RandomUniform":return[r.randomUniform(E("shape",e,t,n),E("minval",e,t,n),E("maxval",e,t,n),E("dtype",e,t,n))];case"Range":{const s=E("start",e,t,n),a=E("stop",e,t,n),o=E("step",e,t,n);return[r.range(s,a,o,E("dtype",e,t,n))]}case"TruncatedNormal":{const s=E("shape",e,t,n),a=E("mean",e,t,n),o=E("stdDev",e,t,n),i=E("seed",e,t,n);return[r.truncatedNormal(s,a,o,E("dtype",e,t,n),i)]}case"Zeros":return[r.zeros(E("shape",e,t,n),E("dtype",e,t,n))];case"ZerosLike":return[r.zerosLike(E("x",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n)));case"dynamic":return(async(e,t,n,r,s=k)=>{switch(e.op){case"NonMaxSuppressionV5":{const{boxes:r,scores:a,maxOutputSize:o,iouThreshold:i,scoreThreshold:u,softNmsSigma:l}=Te(e,t,n),c=await s.image.nonMaxSuppressionWithScoreAsync(r,a,o,i,u,l);return[c.selectedIndices,c.selectedScores]}case"NonMaxSuppressionV4":{const{boxes:r,scores:a,maxOutputSize:o,iouThreshold:i,scoreThreshold:u}=Te(e,t,n),l=E("padToMaxOutputSize",e,t,n),c=await s.image.nonMaxSuppressionPaddedAsync(r,a,o,i,u,l);return[c.selectedIndices,c.validOutputs]}case"NonMaxSuppressionV3":case"NonMaxSuppressionV2":{const{boxes:r,scores:a,maxOutputSize:o,iouThreshold:i,scoreThreshold:u}=Te(e,t,n);return[await s.image.nonMaxSuppressionAsync(r,a,o,i,u)]}case"Where":{const r=s.cast(E("condition",e,t,n),"bool"),a=[await s.whereAsync(r)];return r.dispose(),a}case"ListDiff":return s.setdiff1dAsync(E("x",e,t,n),E("y",e,t,n));default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n);case"evaluation":return s((()=>((e,t,n,r=k)=>{switch(e.op){case"LowerBound":{const s=E("sortedSequence",e,t,n),a=E("values",e,t,n);return[r.lowerBound(s,a)]}case"TopKV2":{const s=E("x",e,t,n),a=E("k",e,t,n),o=E("sorted",e,t,n),i=r.topk(s,a,o);return[i.values,i.indices]}case"UpperBound":{const s=E("sortedSequence",e,t,n),a=E("values",e,t,n);return[r.upperBound(s,a)]}case"Unique":{const s=E("x",e,t,n),a=r.unique(s);return[a.values,a.indices]}case"UniqueV2":{const s=E("x",e,t,n),a=E("axis",e,t,n),o=r.unique(s,a);return[o.values,o.indices]}default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n)));case"image":return s((()=>((e,t,n,r=k)=>{switch(e.op){case"ResizeBilinear":{const s=E("images",e,t,n),a=E("size",e,t,n),o=E("alignCorners",e,t,n),i=E("halfPixelCenters",e,t,n);return[r.image.resizeBilinear(s,[a[0],a[1]],o,i)]}case"ResizeNearestNeighbor":{const s=E("images",e,t,n),a=E("size",e,t,n),o=E("alignCorners",e,t,n),i=E("halfPixelCenters",e,t,n);return[r.image.resizeNearestNeighbor(s,[a[0],a[1]],o,i)]}case"CropAndResize":{const s=E("image",e,t,n),a=E("boxes",e,t,n),o=E("boxInd",e,t,n),i=E("cropSize",e,t,n),u=E("method",e,t,n),l=E("extrapolationValue",e,t,n);return[r.image.cropAndResize(s,a,o,i,u,l)]}case"ImageProjectiveTransformV3":{const s=E("images",e,t,n),a=E("transforms",e,t,n),o=E("outputShape",e,t,n),i=E("fillValue",e,t,n),u=E("interpolation",e,t,n),l=E("fillMode",e,t,n);return[r.image.transform(s,a,u.toLowerCase(),l.toLowerCase(),i,o)]}default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n)));case"graph":return s((()=>((e,t,n,r=k)=>{switch(e.op){case"Const":return t[e.name];case"PlaceholderWithDefault":const s=E("default",e,t,n);return[$(e.name,t,n)||s];case"Placeholder":return[$(e.name,t,n)];case"Identity":case"StopGradient":case"FakeQuantWithMinMaxVars":return[F(E("x",e,t,n))];case"IdentityN":return E("x",e,t,n).map((e=>F(e)));case"Snapshot":return[F(E("x",e,t,n))];case"Shape":return[r.tensor1d(E("x",e,t,n).shape,"int32")];case"ShapeN":return E("x",e,t,n).map((e=>r.tensor1d(e.shape)));case"Size":return[r.scalar(E("x",e,t,n).size,"int32")];case"Rank":return[r.scalar(E("x",e,t,n).rank,"int32")];case"NoOp":return[r.scalar(1)];case"Print":const a=E("x",e,t,n),o=E("data",e,t,n),i=E("message",e,t,n),u=E("summarize",e,t,n);console.warn("The graph has a tf.print() operation,usually used for debugging, which slows down performance."),console.log(i);for(let e=0;e<o.length;e++)console.log(Array.prototype.slice.call(o[e].dataSync()).slice(0,u));return[a];default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n)));case"logical":return s((()=>((e,t,n,r=k)=>{switch(e.op){case"Equal":return[r.equal(E("a",e,t,n),E("b",e,t,n))];case"NotEqual":return[r.notEqual(E("a",e,t,n),E("b",e,t,n))];case"Greater":return[r.greater(E("a",e,t,n),E("b",e,t,n))];case"GreaterEqual":return[r.greaterEqual(E("a",e,t,n),E("b",e,t,n))];case"Less":return[r.less(E("a",e,t,n),E("b",e,t,n))];case"LessEqual":return[r.lessEqual(E("a",e,t,n),E("b",e,t,n))];case"LogicalAnd":return[r.logicalAnd(E("a",e,t,n),E("b",e,t,n))];case"LogicalNot":return[r.logicalNot(E("a",e,t,n))];case"LogicalOr":return[r.logicalOr(E("a",e,t,n),E("b",e,t,n))];case"Select":case"SelectV2":return[r.where(E("condition",e,t,n),E("a",e,t,n),E("b",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n)));case"matrices":return s((()=>((e,t,n,r=k)=>{switch(e.op){case"BatchMatMul":case"BatchMatMulV2":case"MatMul":return[r.matMul(E("a",e,t,n),E("b",e,t,n),E("transposeA",e,t,n),E("transposeB",e,t,n))];case"Einsum":return[r.einsum(E("equation",e,t,n),...E("tensors",e,t,n))];case"Transpose":return[r.transpose(E("x",e,t,n),E("perm",e,t,n))];case"_FusedMatMul":const[s,a]=E("fusedOps",e,t,n),o="biasadd"===s,i="prelu"===a,u=E("numArgs",e,t,n),l=E("leakyreluAlpha",e,t,n);if(o){if(i&&2!==u)throw new Error("Fused MatMul with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!i&&1!==u)throw new Error("Fused MatMul with BiasAdd must have one extra argument: bias.")}const[c,p]=E("args",e,t,n);return[r.fused.matMul({a:E("a",e,t,n),b:E("b",e,t,n),transposeA:E("transposeA",e,t,n),transposeB:E("transposeB",e,t,n),bias:c,activation:a,preluActivationWeights:p,leakyreluAlpha:l})];default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n)));case"normalization":return s((()=>((e,t,n,r=k)=>{switch(e.op){case"EuclideanNorm":return[r.euclideanNorm(E("x",e,t,n),E("axis",e,t,n),E("keepDims",e,t,n))];case"FusedBatchNorm":case"FusedBatchNormV2":case"FusedBatchNormV3":return[r.batchNorm(E("x",e,t,n),E("mean",e,t,n),E("variance",e,t,n),E("offset",e,t,n),E("scale",e,t,n),E("epsilon",e,t,n))];case"LRN":return[r.localResponseNormalization(E("x",e,t,n),E("radius",e,t,n),E("bias",e,t,n),E("alpha",e,t,n),E("beta",e,t,n))];case"Softmax":return[r.softmax(E("x",e,t,n))];case"LogSoftmax":return[r.logSoftmax(E("x",e,t,n))];case"SparseToDense":return[r.sparseToDense(E("sparseIndices",e,t,n),E("outputShape",e,t,n),E("sparseValues",e,t,n),E("defaultValue",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n)));case"reduction":return s((()=>((e,t,n,r=k)=>{switch(e.op){case"Max":{const s=E("axis",e,t,n),a=E("keepDims",e,t,n);return[r.max(E("x",e,t,n),s,a)]}case"Mean":{const s=E("axis",e,t,n),a=E("keepDims",e,t,n);return[r.mean(E("x",e,t,n),s,a)]}case"Min":{const s=E("axis",e,t,n),a=E("keepDims",e,t,n);return[r.min(E("x",e,t,n),s,a)]}case"Sum":{const s=E("axis",e,t,n),a=E("keepDims",e,t,n);return[r.sum(E("x",e,t,n),s,a)]}case"All":{const s=E("axis",e,t,n),a=E("keepDims",e,t,n);return[r.all(E("x",e,t,n),s,a)]}case"Any":{const s=E("axis",e,t,n),a=E("keepDims",e,t,n);return[r.any(E("x",e,t,n),s,a)]}case"ArgMax":{const s=E("axis",e,t,n);return[r.argMax(E("x",e,t,n),s)]}case"ArgMin":{const s=E("axis",e,t,n);return[r.argMin(E("x",e,t,n),s)]}case"Prod":{const s=E("axis",e,t,n),a=E("keepDims",e,t,n);return[r.prod(E("x",e,t,n),s,a)]}case"Cumprod":{const s=E("axis",e,t,n),a=E("exclusive",e,t,n),o=E("reverse",e,t,n);return[r.cumprod(E("x",e,t,n),s,a,o)]}case"Cumsum":{const s=E("axis",e,t,n),a=E("exclusive",e,t,n),o=E("reverse",e,t,n);return[r.cumsum(E("x",e,t,n),s,a,o)]}case"Bincount":const s=E("x",e,t,n),a=E("weights",e,t,n),o=E("size",e,t,n);return[r.bincount(s,a,o)];case"DenseBincount":{const s=E("x",e,t,n),a=E("weights",e,t,n),o=E("size",e,t,n),i=E("binaryOutput",e,t,n);return[r.denseBincount(s,a,o,i)]}default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n)));case"slice_join":return s((()=>((e,t,n,r=k)=>{switch(e.op){case"ConcatV2":case"Concat":{const s=E("n",e,t,n),a=E("axis",e,t,n);let o=E("tensors",e,t,n);return o=o.slice(0,s),[r.concat(o,a)]}case"Gather":{const s=E("x",e,t,n),a=E("indices",e,t,n);return[r.gather(s,r.cast(a,"int32"),0)]}case"GatherV2":{const s=E("axis",e,t,n),a=E("batchDims",e,t,n),o=E("x",e,t,n),i=E("indices",e,t,n);return[r.gather(o,r.cast(i,"int32"),s,a)]}case"Reverse":{const s=E("dims",e,t,n),a=[];for(let e=0;e<s.length;e++)s[e]&&a.push(e);const o=E("x",e,t,n);return[r.reverse(o,a)]}case"ReverseV2":{const s=E("axis",e,t,n),a=E("x",e,t,n);return[r.reverse(a,s)]}case"Slice":{const s=E("begin",e,t,n),a=E("size",e,t,n);return[r.slice(E("x",e,t,n),s,a)]}case"StridedSlice":{const s=E("begin",e,t,n),a=E("end",e,t,n),o=E("strides",e,t,n),i=E("beginMask",e,t,n),u=E("endMask",e,t,n),l=E("ellipsisMask",e,t,n),c=E("newAxisMask",e,t,n),p=E("shrinkAxisMask",e,t,n),h=E("x",e,t,n);return[r.stridedSlice(h,s,a,o,i,u,l,c,p)]}case"Pack":return(0,I.lub)((()=>{const s=E("axis",e,t,n),a=E("tensors",e,t,n),o=a[0].shape,i=r.squeeze(a[
vendor: 4,494 bytes, line 1
10]).shape,u=a.map((e=>{const t=I.D5U.arraysEqual(e.shape,o);if(!t&&!I.D5U.arraysEqual(r.squeeze(e).shape,i))throw new Error("the input tensors shape does not match");return t?e:r.reshape(e,o)}));return[r.stack(u,s)]}));case"Unpack":{const s=E("axis",e,t,n),a=E("tensor",e,t,n);return r.unstack(a,s)}case"Tile":{const s=E("reps",e,t,n);return[r.tile(E("x",e,t,n),s)]}case"Split":case"SplitV":{const s=E("axis",e,t,n),a=E("numOrSizeSplits",e,t,n),o=E("x",e,t,n);return r.split(o,a,s)}case"ScatterNd":{const s=E("indices",e,t,n),a=E("values",e,t,n),o=E("shape",e,t,n);return[r.scatterND(s,a,o)]}case"GatherNd":{const s=E("x",e,t,n),a=E("indices",e,t,n);return[r.gatherND(s,a)]}case"SparseToDense":{const s=E("sparseIndices",e,t,n),a=E("outputShape",e,t,n),o=E("sparseValues",e,t,n),i=E("defaultValue",e,t,n);return[r.sparseToDense(s,o,a,o.dtype===i.dtype?i:r.cast(i,o.dtype))]}default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n)));case"sparse":return s((()=>((e,t,n,r=k)=>{switch(e.op){case"SparseFillEmptyRows":{const{outputIndices:s,outputValues:a,emptyRowIndicator:o,reverseIndexMap:i}=r.sparse.sparseFillEmptyRows(E("indices",e,t,n),E("values",e,t,n),E("denseShape",e,t,n),E("defaultValue",e,t,n));return[s,a,o,i]}case"SparseReshape":{const{outputIndices:s,outputShape:a}=r.sparse.sparseReshape(E("inputIndices",e,t,n),E("inputShape",e,t,n),E("newShape",e,t,n));return[s,a]}case"SparseSegmentMean":return[r.sparse.sparseSegmentMean(E("data",e,t,n),E("indices",e,t,n),E("segmentIds",e,t,n))];case"SparseSegmentSum":return[r.sparse.sparseSegmentSum(E("data",e,t,n),E("indices",e,t,n),E("segmentIds",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n)));case"spectral":return s((()=>((e,t,n,r=k)=>{switch(e.op){case"FFT":return[r.fft(E("x",e,t,n))];case"IFFT":return[r.ifft(E("x",e,t,n))];case"RFFT":return[r.rfft(E("x",e,t,n))];case"IRFFT":return[r.irfft(E("x",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n)));case"string":return s((()=>((e,t,n,r=k)=>{switch(e.op){case"StringNGrams":{const{nGrams:s,nGramsSplits:a}=r.string.stringNGrams(E("data",e,t,n),E("dataSplits",e,t,n),E("separator",e,t,n),E("nGramWidths",e,t,n),E("leftPad",e,t,n),E("rightPad",e,t,n),E("padWidth",e,t,n),E("preserveShortSequences",e,t,n));return[s,a]}case"StringSplit":{const{indices:s,values:a,shape:o}=r.string.stringSplit(E("input",e,t,n),E("delimiter",e,t,n),E("skipEmpty",e,t,n));return[s,a,o]}case"StringToHashBucketFast":return[r.string.stringToHashBucketFast(E("input",e,t,n),E("numBuckets",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n)));case"transformation":return s((()=>((e,t,n,r=k)=>{switch(e.op){case"Cast":return[r.cast(E("x",e,t,n),E("dtype",e,t,n))];case"ExpandDims":{const s=E("axis",e,t,n);return[r.expandDims(E("x",e,t,n),s)]}case"Squeeze":{const s=E("axis",e,t,n);return[r.squeeze(E("x",e,t,n),s)]}case"Reshape":return[r.reshape(E("x",e,t,n),E("shape",e,t,n))];case"MirrorPad":return[r.mirrorPad(E("x",e,t,n),E("padding",e,t,n),E("mode",e,t,n))];case"PadV2":case"Pad":return[r.pad(E("x",e,t,n),E("padding",e,t,n),E("constantValue",e,t,n))];case"SpaceToBatchND":{const s=E("blockShape",e,t,n),a=E("paddings",e,t,n);return[r.spaceToBatchND(E("x",e,t,n),s,a)]}case"BatchToSpaceND":{const s=E("blockShape",e,t,n),a=E("crops",e,t,n);return[r.batchToSpaceND(E("x",e,t,n),s,a)]}case"DepthToSpace":{const s=E("blockSize",e,t,n),a=E("dataFormat",e,t,n).toUpperCase();return[r.depthToSpace(E("x",e,t,n),s,a)]}case"BroadcastTo":return[r.broadcastTo(E("x",e,t,n),E("shape",e,t,n))];case"BroadcastArgs":return[r.broadcastArgs(E("s0",e,t,n),E("s1",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n)));case"hash_table":return(async(e,t,n,r)=>{switch(e.op){case"HashTable":case"HashTableV2":{const s=E("keyDType",e,t,n),a=E("valueDType",e,t,n),o=new Ee(s,a);return r.addHashTable(e.name,o),[o.handle]}case"LookupTableImport":case"LookupTableImportV2":{const s=E("tableHandle",e,t,n,r),a=E("keys",e,t,n),o=E("values",e,t,n),i=r.getHashTableById(s.id);return[await i.import(a,o)]}case"LookupTableFind":case"LookupTableFindV2":{const s=E("tableHandle",e,t,n,r),a=E("keys",e,t,n),o=E("defaultValue",e,t,n),i=r.getHashTableById(s.id);return[await i.find(a,o)]}case"LookupTableSize":case"LookupTableSizeV2":{const s=E("tableHandle",e,t,n,r);return[r.getHashTableById(s.id).tensorSize()]}default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n,r);
1case"custom":const a=C(e.op);if(a&&a.customExecutor)return a.customExecutor(new ge(e,t,n));throw TypeError(`Custom op ${e.op} is not registered.`);default:throw TypeError(`Unknown op '${e.op}'. File an issue at https://github.com/tensorflow/tfjs/issues so we can add it, or register a custom execution with tf.registerOp()`)}})(e,t,n);return I.D5U.isPromise(a)?a.then((e=>[].concat(e))):[].concat(a)}class Ae{constructor(e={},t={},n={},r={}){this.weightMap=e,this.tensorArrayMap=t,this.tensorListMap=n,this.functionMap=r,this.rootContext={id:0,frameName:"",iterationId:0},this.contexts=[this.rootContext],this.lastId=0,this.generateCurrentContextIds()}newFrame(e,t){return{id:e,frameName:t,iterationId:0}}set currentContext(e){this.contexts!==e&&(this.contexts=e,this.generateCurrentContextIds())}get currentContext(){return this.contexts}get currentContextId(){return this._currentContextIds[0]}get currentContextIds(){return this._currentContextIds}generateCurrentContextIds(){const e=[];for(let t=0;t<this.contexts.length-1;t++){const n=this.contexts.slice(0,this.contexts.length-t);e.push(this.contextIdforContexts(n))}e.push(""),this._currentContextIds=e}contextIdforContexts(e){return e?e.map((e=>0===e.id&&0===e.iterationId?"":`${e.frameName}-${e.iterationId}`)).join("/"):""}enterFrame(e){this.contexts&&(this.lastId++,this.contexts=this.contexts.slice(),this.contexts.push(this.newFrame(this.lastId,e)),this._currentContextIds.unshift(this.contextIdforContexts(this.contexts)))}exitFrame(){if(!(this.contexts&&this.contexts.length>1))throw new Error("Cannot exit frame, the context is empty");this.contexts=this.contexts.slice(),this.contexts.splice(-1),this.currentContextIds.shift()}nextIteration(){if(!(this.contexts&&this.contexts.length>0))throw new Error("Cannot increase frame iteration, the context is empty");{this.contexts=this.contexts.slice(),this.lastId++;const e=Object.assign({},this.contexts[this.contexts.length-1]);e.iterationId+=1,e.id=this.lastId,this.contexts.splice(-1,1,e),this._currentContextIds.splice(0,1,this.contextIdforContexts(this.contexts))}}getWeight(e){return this.weightMap[e]}addTensorArray(e){this.tensorArrayMap[e.id]=e}getTensorArray(e){return this.tensorArrayMap[e]}addTensorList(e){this.tensorListMap[e.id]=e}getTensorList(e){return this.tensorListMap[e]}dispose(e){for(const t in this.tensorArrayMap)this.tensorArrayMap[t].clearAndClose(e);for(const t in this.tensorListMap)this.tensorListMap[t].clearAndClose(e)}}function De(e,t,n,r){const s=new Set,a=[];let o=null,i=null;const u=new Set,l=Object.keys(e).map((e=>_(e)[0]));let c=[];null!=r&&(c=r.map((e=>_(e.name)[0])));const p=[...t];for(;p.length>0;){const e=p.pop();(Oe(e)||Me(e)||Be(e))&&null==o&&(o=e,i=o.children.map((e=>e.name)).filter((e=>s.has(e)))),s.add(e.name),null==n[e.name]&&(-1===l.indexOf(e.name)&&-1===c.indexOf(e.name)&&(0!==e.inputs.length?e.inputs.forEach((e=>{u.has(e.name)||(u.add(e.name),p.push(e))})):a.push(e.name)))}return{inputs:e,outputs:t,usedNodes:s,missingInputs:a,dynamicNode:o,syncInputs:i}}const _e=["Switch","Merge","Enter","Exit","NextIteration","StatelessIf","StatelessWhile","if","While"],Re=["NonMaxSuppressionV2","NonMaxSuppressionV3","NonMaxSuppressionV5","Where"],Fe=["HashTable","HashTableV2","LookupTableImport","LookupTableImportV2","LookupTableFind","LookupTableFindV2","LookupTableSize","LookupTableSizeV2"];function Oe(e){return _e.indexOf(e.op)>=0}function Me(e){return Re.indexOf(e.op)>=0}function Be(e){return Fe.indexOf(e.op)>=0}class Le{constructor(e,t){this.graph=e,this.parent=t,this.compiledMap=new Map,this._weightMap={},this.SEPERATOR=",",this._functions={},this._functionExecutorMap={},this.intermediateTensors={},this.keepTensorForDebug=!1,this._outputs=e.outputs,this._inputs=e.inputs,this._initNodes=e.initNodes,this._signature=e.signature,this._functions=e.functions,null!=e.functions&&Object.keys(e.functions).forEach((t=>{this._functionExecutorMap[t]=new Le(e.functions[t],this)}))}get weightIds(){return this.parent?this.parent.weightIds:this._weightIds}get functionExecutorMap(){return this.parent?this.parent.functionExecutorMap:this._functionExecutorMap}get weightMap(){return this.parent?this.parent.weightMap:this._weightMap}set weightMap(e){const t=Object.keys(e).map((t=>e[t].map((e=>e.id))));this._weightIds=[].concat(...t),this._weightMap=e}set resourceManager(e){this._resourceManager=e}get inputs(){return this._inputs.map((e=>({name:e.name,shape:e.attrParams.shape?e.attrParams.shape.value:void 0,dtype:e.attrParams.dtype?e.attrParams.dtype.value:void 0})))}get outputs(){return this._outputs.map((e=>({name:e.name,shape:e.attrParams.shape?e.attrParams.shape.value:void 0,dtype:e.attrParams.dtype?e.attrParams.dtype.value:void 0})))}get inputNodes(){return this._inputs.map((e=>e.signatureKey||e.name))}get outputNodes(){return this._outputs.map((e=>{const t=e.signatureKey||e.name;return e.defaultOutput?`${t}:${e.defaultOutput}`:t}))}get functions(){return Object.keys(this._functions).reduce(((e,t)=>(e[t]=this._functions[t].signature,e)),{})}getCompilationKey(e,t){const n=e.map((e=>e.name)).sort(),r=t.map((e=>e.name)).sort();return n.join(this.SEPERATOR)+"--"+r.join(this.SEPERATOR)}compile(e,t){const n=De(e,t,this.weightMap,this._initNodes),{missingInputs:r,dynamicNode:s,syncInputs:a}=n;if(null!=s)throw new Error(`This execution contains the node '${s.name}', which has the dynamic op '${s.op}'. Please use model.executeAsync() instead. Alternatively, to avoid the dynamic ops, specify the inputs [${a}]`);if(r.length>0){const n=t.map((e=>e.name)),s=Object.keys(e);throw new Error(`Cannot compute the outputs [${n}] from the provided inputs [${s}]. Missing the following inputs: [${r}]`)}return function(e,t,n){const{usedNodes:r,inputs:s}=n,a=[],o=Object.keys(s).map((e=>_(e)[0])).map((t=>e.nodes[t])),i=e.initNodes;o.forEach((e=>{r.has(e.name)&&a.push(e)}
1)),e.weights.forEach((e=>{r.has(e.name)&&a.push(e)})),null!=i&&i.forEach((e=>{r.has(e.name)&&a.push(e)}));const u=new Set,l=[];for(;a.length>0;){const e=a.pop();u.add(e.name),t[e.name]||l.push(e),e.children.forEach((e=>{!u.has(e.name)&&r.has(e.name)&&e.inputs.every((e=>u.has(e.name)))&&a.push(e)}))}return l}(this.graph,this.weightMap,n)}execute(e,t){e=this.mapInputs(e);const n=Object.keys(e).sort();this.checkInputs(e),this.checkInputShapeAndType(e),t=this.mapOutputs(t),this.checkOutputs(t);const r=n.map((e=>this.graph.nodes[_(e)[0]])),s=t.map((e=>_(e)[0]));let a=s.map((e=>this.graph.nodes[e]));this.resetIntermediateTensors(),0===a.length&&(a=this._outputs);const o=this.getCompilationKey(r,a);let i=this.compiledMap.get(o);null==i&&(i=this.compile(e,a),this.compiledMap.set(o,i));const u={},l={};return(0,I.lub)((()=>{const n=new Ae(this.weightMap,u,l,this.functionExecutorMap),r=Object.assign({},this.weightMap);Object.keys(e).forEach((t=>{const[n,s]=_(t),a=[];a[s]=e[t],r[n]=a}));const a=this.getFrozenTensorIds(r),o={};for(let e=0;e<i.length;e++){const t=i[e];if(!r[t.name]){const e=$e(t,r,n,this._resourceManager);if(I.D5U.isPromise(e))throw new Error(`The execution of the op '${t.op}' returned a promise. Please use model.executeAsync() instead.`);r[t.name]=e,this.checkTensorForDisposal(t.name,t,r,n,a,s,o)}}return null==this.parent&&n.dispose(a),t.map((e=>$(e,r,n)))}
1))}getFrozenTensorIds(e){const t=[].concat.apply([],Object.keys(e).map((t=>e[t])).map((e=>e.map((e=>e.id)))));return new Set(t)}checkTensorForDisposal(e,t,n,r,s,a,o){"control"!==t.category&&-1===a.indexOf(e)&&(n[e].forEach((e=>{null!=e&&(o[e.id]=(o[e.id]||0)+t.children.length)})),t.inputs.forEach((e=>{if("control"!==e.category){const a=function(e,t,n){return t[D(e,n.currentContextId)]}(e.name,n,r);null!=a&&a.forEach((e=>{if(e&&!e.kept&&!s.has(e.id)){const n=o[e.id];if(1===n){if(this.keepTensorForDebug){const[n,s]=A(t.name,r);this.intermediateTensors[n]||(this.intermediateTensors[n]=[]),this.intermediateTensors[n][s]=e}else e.dispose();delete o[e.id]}else null!=n&&o[e.id]--}}))}})))}async executeAsync(e,t){return this._executeAsync(e,t)}disposeIntermediateTensors(){this.intermediateTensors&&(Object.keys(this.intermediateTensors).forEach((e=>this.intermediateTensors[e].forEach((e=>e.dispose())))),this.disposeTensorsMap())}disposeTensorsMap(){this.tensorsMap&&Object.keys(this.tensorsMap).forEach((e=>{this.tensorsMap[e].forEach((e=>{!e||e.kept||e.isDisposed||this.keepIds.has(e.id)||e.dispose()}))}))}getIntermediateTensors(){return this.tensorsMap}resetIntermediateTensors(){for(const e in this.intermediateTensors)this.intermediateTensors[e].forEach((e=>e.dispose())),delete this.intermediateTensors[e]}async _executeAsync(e,t,n=!1,r={},s={}){n||(e=this.mapInputs(e),this.checkInputs(e),this.checkInputShapeAndType(e),t=this.mapOutputs(t),this.checkOutputs(t));try{this.keepTensorForDebug=(0,I.OBj)().getBool("KEEP_INTERMEDIATE_TENSORS")}catch(l){console.warn(l.message)}this.resetIntermediateTensors();const a=new Ae(this.weightMap,r,s,this.functionExecutorMap);this.tensorsMap=await this.executeWithControlFlow(e,a,t,n);const o=t.map((e=>$(e,this.tensorsMap,a))),i=o.map((e=>e.id)),u=Object.keys(e).map((t=>e[t].id));return this.keepIds=new Set([...i,...u,...this.weightIds]),this.keepTensorForDebug||this.disposeTensorsMap(),null==this.parent&&a.dispose(this.keepIds),o}async executeFunctionAsync(e,t,n){const r=e.reduce(((e,t,n)=>(e[this.inputs[n].name]=t,e)),{});return this._executeAsync(r,this.outputNodes,!0,t,n)}async executeWithControlFlow(e,t,n,r){const s=Object.keys(e),a=s.map((e=>this.graph.nodes[_(e)[0]])),o=n.map((e=>_(e)[0]));let i=o.map((e=>this.graph.nodes[e]));0===i.length&&(i=this._outputs);const{usedNodes:u,missingInputs:l,dynamicNode:c,syncInputs:p}=De(e,i,this.weightMap,this._initNodes),h=[...a,...this.graph.weights,...this._initNodes||[]].map((e=>({node:e,contexts:t.currentContext}))),d=Object.assign({},this.weightMap);Object.keys(e).forEach((t=>{const[n,r]=_(t),s=[];s[r]=e[t],d[n]=s}));const f={},m=this.getFrozenTensorIds(d),g={};for(;h.length>0;){const e=this.processStack(a,h,t,d,g,m,o,f,u);await Promise.all(e)}null!=c||r||console.warn("This model execution did not contain any nodes with control flow or dynamic output shapes. You can use model.execute() instead.");const y=i.filter((e=>!Oe(e)&&!$(e.name,d,t))).map((e=>e.name));if(y.length>0){let e="";throw null!=c&&(e=`Alternatively, to avoid the dynamic ops, use model.execute() and specify the inputs [${p}]`),new Error(`Cannot compute the outputs [${y}] from the provided inputs [${s}]. Consider providing the following inputs: [${l}]. ${e}`)}return d}processStack(e,t,n,r,s,a,o,i,u){const l=[];for(;t.length>0;){const e=t.pop();n.currentContext=e.contexts;let c="";if("Enter"===e.node.op&&E("isConstant",e.node,r,n)&&([c]=A(e.node.name,n)),null==r[e.node.name]){const p=$e(e.node,r,n,this._resourceManager);c||([c]=A(e.node.name,n));const h=n.currentContext;I.D5U.isPromise(p)?l.push(p.then((l=>(r[c]=l,n.currentContext=h,this.checkTensorForDisposal(c,e.node,r,n,a,o,i),this.processChildNodes(e.node,t,n,r,s,u),l)))):(r[c]=p,this.checkTensorForDisposal(c,e.node,r,n,a,o,i),this.processChildNodes(e.node,t,n,r,s,u))}else this.processChildNodes(e.node,t,n,r,s,u)}return l}processChildNodes(e,t,n,r,s,a){e.children.forEach((e=>{const[o]=A(e.name,n);!s[o]&&a.has(e.name)&&("Merge"===e.op?e.inputNames.some((e=>!!$(e,r,n)))&&(s[o]=!0,t.push({contexts:n.currentContext,node:e})):e.inputNames.every((e=>!!$(e,r,n)))&&(s[o]=!0,t.push({contexts:n.currentContext,node:e})))}))}
1dispose(){Object.keys(this.weightMap).forEach((e=>this.weightMap[e].forEach((e=>e.dispose()))))}checkInputShapeAndType(e){Object.keys(e).forEach((t=>{const n=e[t],[r]=_(t),s=this.graph.nodes[r];if(s.attrParams.shape&&s.attrParams.shape.value){const e=s.attrParams.shape.value,t=e.length===n.shape.length&&n.shape.every(((t,n)=>-1===e[n]||e[n]===t));I.D5U.assert(t,(()=>`The shape of dict['${s.name}'] provided in model.execute(dict) must be [${e}], but was [${n.shape}]`))}s.attrParams.dtype&&s.attrParams.dtype.value&&I.D5U.assert(n.dtype===s.attrParams.dtype.value,(()=>`The dtype of dict['${s.name}'] provided in model.execute(dict) must be ${s.attrParams.dtype.value}, but was ${n.dtype}`))}))}mapInputs(e){const t={};for(const n in e)if(null!=this._signature&&null!=this._signature.inputs&&null!=this._signature.inputs[n]){t[this._signature.inputs[n].name]=e[n]}else t[n]=e[n];return t}checkInputs(e){const t=Object.keys(e).filter((e=>{const[t]=_(e);return null==this.graph.nodes[t]}));if(t.length>0)throw new Error(`The dict provided in model.execute(dict) has keys: [${t}] that are not part of graph`)}mapOutputs(e){return e.map((e=>{if(null!=this._signature&&null!=this._signature.outputs&&null!=this._signature.outputs[e]){return this._signature.outputs[e].name}return e}),{})}checkOutputs(e){e.forEach((e=>{const[t]=_(e);if(!this.graph.nodes[t])throw new Error(`The output '${e}' is not found in the graph`)}))}}class We{constructor(e={},t={}){this.hashTableNameToHandle=e,this.hashTableMap=t}addHashTable(e,t){this.hashTableNameToHandle[e]=t.handle,this.hashTableMap[t.id]=t}getHashTableHandleByName(e){return this.hashTableNameToHandle[e]}getHashTableById(e){return this.hashTableMap[e]}dispose(){for(const e in this.hashTableMap)this.hashTableMap[e].clearAndClose(),delete this.hashTableMap[e];for(const e in this.hashTableNameToHandle)this.hashTableNameToHandle[e].dispose(),delete this.hashTableNameToHandle[e]}}class Pe{constructor(e,t={},n=I.io){this.modelUrl=e,this.loadOptions=t,this.version="n/a",this.io=n,null==t&&(this.loadOptions={}),this.resourceManager=new We}get modelVersion(){return this.version}get inputNodes(){return this.executor.inputNodes}get outputNodes(){return this.executor.outputNodes}get inputs(){return this.executor.inputs}get outputs(){return this.executor.outputs}get weights(){return this.executor.weightMap}get metadata(){return this.artifacts.userDefinedMetadata}get modelSignature(){return this.signature}get modelStructuredOutputKeys(){return this.structuredOutputKeys}findIOHandler(){const e=this.modelUrl;if(null!=e.load)this.handler=e;else if(null!=this.loadOptions.requestInit)this.handler=this.io.browserHTTPRequest(e,this.loadOptions);else{const t=this.io.getLoadHandlers(e,this.loadOptions);if(0===t.length)t.push(this.io.browserHTTPRequest(e,this.loadOptions));else if(t.length>1)throw new Error(`Found more than one (${t.length}) load handlers for URL '${[e]}'`);this.handler=t[0]}}load(){if(this.findIOHandler(),null==this.handler.load)throw new Error("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");const e=this.handler.load();return I.D5U.isPromise(e)?e.then((e=>this.loadSync(e))):this.loadSync(e)}loadSync(e){this.artifacts=e;const t=this.artifacts.modelTopology;let n=this.artifacts.signature;if(null!=this.artifacts.userDefinedMetadata){const e=this.artifacts.userDefinedMetadata;null!=e.signature&&(n=e.signature),null!=e.structuredOutputKeys&&(this.structuredOutputKeys=e.structuredOutputKeys)}this.signature=n,this.version=`${t.versions.producer}.${t.versions.minConsumer}`;const r=this.io.decodeWeights(this.artifacts.weightData,this.artifacts.weightSpecs);if(this.executor=new Le(te.Instance.transformGraph(t,this.signature)),this.executor.weightMap=this.convertTensorMapToTensorsMap(r),this.executor.resourceManager=this.resourceManager,null!=e.modelInitializer&&null!=e.modelInitializer.node){const t=te.Instance.transformGraph(e.modelInitializer);this.initializer=new Le(t),this.initializer.weightMap=this.executor.weightMap,this.initializer.resourceManager=this.resourceManager,this.initializer.executeAsync({},[])}return!0}async save(e,t){if("string"===typeof e){const t=this.io.getSaveHandlers(e);if(0===t.length)throw new Error(`Cannot find any save handlers for URL '${e}'`);if(t.length>1)throw new Error(`Found more than one (${t.length}) save handlers for URL '${e}'`);e=t[0]}if(null==e.save)throw new Error("GraphModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");return e.save(this.artifacts)}predict(e,t){const n=this.execute(e,this.outputNodes);if(this.structuredOutputKeys){const e=n instanceof I.esB?[n]:n,t={};return e.forEach(((e,n)=>t[this.structuredOutputKeys[n]]=e)),t}return n}normalizeInputs(e){if(!(e instanceof I.esB)&&!Array.isArray(e))return e;if((e=Array.isArray(e)?e:[e]).length!==this.inputNodes.length)throw new Error(`Input tensor count mismatch,the graph model has ${this.inputNodes.length} placeholders, while there are ${e.length} input tensors.`);return this.inputNodes.reduce(((t,n,r)=>(t[n]=e[r],t)),{})}normalizeOutputs(e){return e=e||this.outputNodes,Array.isArray(e)?e:[e]}execute(e,t){e=this.normalizeInputs(e),t=this.normalizeOutputs(t);const n=this.executor.execute(e,t);return n.length>1?n:n[0]}async executeAsync(e,t){e=this.normalizeInputs(e),t=this.normalizeOutputs(t);const n=await this.executor.executeAsync(e,t);return n.length>1?n:n[0]}getIntermediateTensors(){return this.executor.getIntermediateTensors()}disposeIntermediateTensors(){this.executor.disposeIntermediateTensors()}convertTensorMapToTensorsMap(e){return Object.keys(e).reduce(((t,n)=>(t[n]=[e[n]],t)),{})}dispose(){this.executor.dispose(),this.initializer&&this.initializer.dispose(),this.resourceManager.dispose()}}async function Ue(e,t={},n=I.io){if(null==e)throw new Error("modelUrl in loadGraphModel() cannot be null. Please provide a url or an IOHandler that loads the model");null==t&&(t={}),t.fromTFHub&&"string"===typeof e&&(e=function(e){e.endsWith("/")||(e+="/");return`${e}model.json?tfjs-format=file`}(e));const r=new Pe(e,t,n);return await r.load(),r}const ze="3.21.0"},8713:function(e,t,n){"use strict";n.d(t,{JL:function(){return r},Zu:function(){return s}});
1class r{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}}class s{refCount(e){return a("refCount")}incRef(e){return a("incRef")}timerAvailable(){return!0}time(e){return a("time")}read(e){return a("read")}readSync(e){return a("readSync")}readToGPU(e,t){return a("readToGPU")}numDataIds(){return a("numDataIds")}disposeData(e,t){return a("disposeData")}write(e,t,n){return a("write")}move(e,t,n,r,s){return a("move")}memory(){return a("memory")}floatPrecision(){return a("floatPrecision")}epsilon(){return 32===this.floatPrecision()?1e-7:1e-4}dispose(){return a("dispose")}}function a(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`)}},3337:function(e,t,n){"use strict";function r(e,t,n){const r=function(e,t,n){return function(e,t,n){let r=0,s=e.length,a=0,o=!1;for(;r<s;){a=r+(s-r>>>1);const i=n(t,e[a]);i>0?r=a+1:(s=a,o=!i)}return o?r:-r-1}(e,t,n||s)}(e,t,n),a=r<0?-(r+1):r;e.splice(a,0,t)}function s(e,t){return e>t?1:e<t?-1:0}function a(e,t,n,r,s){return u(e,t,n,r,s,0)}function o(e,t,n,r,s,a){return u(e,t,n,r,s,0,!1,a,!0)}function i(e,t,n,r,s,a){return u(e,t,n,r,s,a,!0)}function u(e,t,n,s,a,o,i=!1,u=!1,h=!1){const d=[];for(let r=0;r<t.length;r++)t[r]>a&&d.push({score:t[r],boxIndex:r,suppressBeginIndex:0});d.sort(p);const f=o>0?-.5/o:0,m=[],g=[];for(;m.length<n&&d.length>0;){const t=d.pop(),{score:n,boxIndex:o,suppressBeginIndex:i}=t;if(n<a)break;let u=!1;for(let r=m.length-1;r>=i;--r){const n=l(e,o,m[r]);if(n>=s){u=!0;break}if(t.score=t.score*c(s,f,n),t.score<=a)break}t.suppressBeginIndex=m.length,u||(t.score===n?(m.push(o),g.push(t.score)):t.score>a&&r(d,t,p))}const y=m.length,b=n-y;u&&b>0&&(m.push(...new Array(b).fill(0)),g.push(...new Array(b).fill(0)));const x={selectedIndices:m};return i&&(x.selectedScores=g),h&&(x.validOutputs=y),x}function l(e,t,n){const r=e.subarray(4*t,4*t+4),s=e.subarray(4*n,4*n+4),a=Math.min(r[0],r[2]),o=Math.min(r[1],r[3]),i=Math.max(r[0],r[2]),u=Math.max(r[1],r[3]),l=Math.min(s[0],s[2]),c=Math.min(s[1],s[3]),p=Math.max(s[0],s[2]),h=Math.max(s[1],s[3]),d=(i-a)*(u-o),f=(p-l)*(h-c);if(d<=0||f<=0)return 0;const m=Math.max(a,l),g=Math.max(o,c),y=Math.min(i,p),b=Math.min(u,h),x=Math.max(y-m,0)*Math.max(b-g,0);return x/(d+f-x)}function c(e,t,n){const r=Math.exp(t*n*n);return n<=e?r:0}function p(e,t){return e.score-t.score||e.score===t.score&&t.boxIndex-e.boxIndex}n.d(t,{GP:function(){return a},qP:function(){return o},pA:function(){return i}})},8333:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});var r=n(2657);function s(e,t){const n=[];for(let r=0;r<t.length;r++)t[r]&&n.push(r);const s=(0,r.f)(e,"int32"),a=(0,r.f)([n.length,e.length],"int32");for(let r=0;r<n.length;r++){const t=s.indexToLoc(n[r]),o=r*e.length;a.values.set(t,o)}return a.toTensor()}},7097:function(e,t,n){"use strict";n.d(t,{BV:function(){return w},wv:function(){return x}});var r=n(8713),s=n(2885),a=n(5938),o=n(9121),i=n(6151),u=n(4706),l=n(9122),c=n(569);class p{constructor(e,t){this.backendTimer=e,this.logger=t,null==t&&(this.logger=new d)}profileKernel(e,t,n){let r;const a=()=>{r=n()};let o;const i=l.now();if(this.backendTimer.timerAvailable())o=this.backendTimer.time(a);else{a();for(const e of r)e.dataSync();o=Promise.resolve({kernelMs:l.now()-i})}if((0,s.OB)().getBool("CHECK_COMPUTATION_FOR_ERRORS"))for(let s=0;s<r.length;s++){const t=r[s];t.data().then((n=>{h(n,t.dtype,e)}))}return{kernelName:e,outputs:r,inputs:t,timeMs:o.then((e=>e.kernelMs)),extraInfo:o.then((e=>null!=e.getExtraProfileInfo?e.getExtraProfileInfo():""))}}logKernelProfile(e){const{kernelName:t,outputs:n,timeMs:r,inputs:s,extraInfo:a}=e;n.forEach((e=>{Promise.all([e.data(),r,a]).then((n=>{this.logger.logKernelProfile(t,e,n[0],n[1],s,n[2])}))}))}}function h(e,t,n){if("float32"!==t)return!1;for(let r=0;r<e.length;r++){const t=e[r];if(isNaN(t)||!isFinite(t))return console.warn(`Found ${t} in the result of '${n}'`),!0}return!1}class d{logKernelProfile(e,t,n,r,s,a){const o="number"===typeof r?c.oj(`${r}ms`,9):r.error,i=c.oj(e,25),u=t.rank,l=t.size,p=c.oj(t.shape.toString(),14);let h="";for(const c in s){const e=s[c];if(null!=e){const n=e.shape||t.shape,r=n.length;h+=`${c}: ${r}D ${r>0?n:""} `}}console.log(`%c${i}\t%c${o}
1\t%c${u}D ${p}\t%c${l}\t%c${h}\t%c${a}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}}var f=n(4077),m=n(747);function g(e){return null!=e.kernelName}class y{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(const e in this.registeredVariables)this.registeredVariables[e].dispose()}}class b{constructor(e){this.ENV=e,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new y}async ready(){if(null!=this.pendingBackendInit)return this.pendingBackendInit.then((()=>{}));if(null!=this.backendInstance)return;const e=this.getSortedBackends();for(let t=0;t<e.length;t++){const n=e[t];if(await this.initializeBackend(n).success)return void(await this.setBackend(n))}throw new Error("Could not initialize any backends, all backend initializations failed.")}get backend(){if(null!=this.pendingBackendInit)throw new Error(`Backend '${this.backendName}' has not yet been initialized. Make sure to await tf.ready() or await tf.setBackend() before calling other methods`);if(null==this.backendInstance){const{name:e,asyncInit:t}=this.initializeBackendsAndReturnBest();if(t)throw new Error(`The highest priority backend '${e}' has not yet been initialized. Make sure to await tf.ready() or await tf.setBackend() before calling other methods`);this.setBackend(e)}return this.backendInstance}backendNames(){return Object.keys(this.registryFactory)}findBackend(e){if(!(e in this.registry)){if(!(e in this.registryFactory))return null;{const{asyncInit:t}=this.initializeBackend(e);if(t)return null}}return this.registry[e]}findBackendFactory(e){return e in this.registryFactory?this.registryFactory[e].factory:null}registerBackend(e,t,n=1){return e in this.registryFactory?(u.Z(`${e} backend was already registered. Reusing existing backend factory.`),!1):(this.registryFactory[e]={factory:t,priority:n},!0)}async setBackend(e){if(null==this.registryFactory[e])throw new Error(`Backend name '${e}' not found in registry`);
1if(this.backendName=e,null==this.registry[e]){this.backendInstance=null;const{success:t,asyncInit:n}=this.initializeBackend(e);if(!(n?await t:t))return!1}return this.backendInstance=this.registry[e],this.setupRegisteredKernels(),this.profiler=new p(this.backendInstance),!0}setupRegisteredKernels(){(0,i.tr)(this.backendName).forEach((e=>{null!=e.setupFunc&&e.setupFunc(this.backendInstance)}))}disposeRegisteredKernels(e){(0,i.tr)(e).forEach((t=>{null!=t.disposeFunc&&t.disposeFunc(this.registry[e])}))}initializeBackend(e){const t=this.registryFactory[e];if(null==t)throw new Error(`Cannot initialize backend ${e}, no registration found.`);try{const n=t.factory();if(!n||n instanceof r.Zu||"function"!==typeof n.then)return this.registry[e]=n,{success:!0,asyncInit:!1};{const t=++this.pendingBackendInitId,r=n.then((n=>!(t<this.pendingBackendInitId)&&(this.registry[e]=n,this.pendingBackendInit=null,!0))).catch((n=>(t<this.pendingBackendInitId||(this.pendingBackendInit=null,u.Z(`Initialization of backend ${e} failed`),u.Z(n.stack||n.message)),!1)));return this.pendingBackendInit=r,{success:r,asyncInit:!0}}}catch(n){return u.Z(`Initialization of backend ${e} failed`),u.Z(n.stack||n.message),{success:!1,asyncInit:!1}}}removeBackend(e){if(!(e in this.registryFactory))throw new Error(`${e} backend not found in registry`);this.backendName===e&&null!=this.pendingBackendInit&&this.pendingBackendInitId++,e in this.registry&&(this.disposeRegisteredKernels(e),this.registry[e].dispose(),delete this.registry[e]),delete this.registryFactory[e],this.backendName===e&&(this.pendingBackendInit=null,this.backendName=null,this.backendInstance=null)}getSortedBackends(){if(0===Object.keys(this.registryFactory).length)throw new Error("No backend found in registry.");return Object.keys(this.registryFactory).sort(((e,t)=>this.registryFactory[t].priority-this.registryFactory[e].priority))}initializeBackendsAndReturnBest(){const e=this.getSortedBackends();for(let t=0;t<e.length;t++){const n=e[t],{success:r,asyncInit:s}=this.initializeBackend(n);if(s||r)return{name:n,asyncInit:s}}throw new Error("Could not initialize any backends, all backend initializations failed.")}moveData(e,t){const n=this.state.tensorInfo.get(t),r=n.backend,s=this.readSync(t),a=r.refCount(t);r.disposeData(t,!0),n.backend=e,e.move(t,s,n.shape,n.dtype,a),this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack[this.state.numDataMovesStack.length-1]++}tidy(e,t){let n,r=null;if(null==t){if("function"!==typeof e)throw new Error("Please provide a function to tidy()");t=e}else{if("string"!==typeof e&&!(e instanceof String))throw new Error("When calling with two arguments, the first argument to tidy() must be a string");if("function"!==typeof t)throw new Error("When calling with two arguments, the 2nd argument to tidy() must be a function");r=e}return this.scopedRun((()=>this.startScope(r)),(()=>this.endScope(n)),(()=>(n=t(),n instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),n)))}scopedRun(e,t,n){e();try{const e=n();return t(),e}catch(r){throw t(),r}}nextTensorId(){return b.nextTensorId++}nextVariableId(){return b.nextVariableId++}clone(e){const t=w.runKernel(o.iJz,{x:e}),n={x:e};return this.addTapeNode(this.state.activeScope.name,n,[t],(e=>({x:()=>{const t={x:e},n={dtype:"float32"};return w.runKernel(o.RFZ,t,n)}})),[],{}),t}runKernel(e,t,n){null==this.backendName&&this.backend;if(!(null!=(0,i.pI)(e,this.backendName)))throw new Error(`Kernel '${e}' not registered for backend '${this.backendName}'`);return this.runKernelFunc({kernelName:e,inputs:t,attrs:n})}shouldCheckForMemLeaks(){return this.ENV.getBool("IS_TEST")}checkKernelForMemLeak(e,t,n){const r=this.backend.numDataIds();let s=0;n.forEach((e=>{s+="complex64"===e.dtype?3:1}));const a=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],o=r-t-s-a;if(o>0)throw new Error(`Backend '${this.backendName}' has an internal memory leak (${o} data ids) after running '${e}'`)}runKernelFunc(e){let t,n=[];const r=this.isTapeOn(),s=this.state.numBytes,a=this.state.numTensors;let o,u;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0),null==this.backendName&&this.backend;const l=g(e)?e.kernelName:null!=this.state.activeScope?this.state.activeScope.name:"";if(g(e)){const{kernelName:t,inputs:s,attrs:a}=e;null==this.backendName&&this.backend;const l=(0,i.pI)(t,this.backendName);c.hu(null!=l,(()=>`Cannot find registered kernel '${t}' for backend '${this.backendName}'`)),o=()=>{const e=this.backend.numDataIds();
vendor: 4,911 bytes, line 1
1u=l.kernelFunc({inputs:s,attrs:a,backend:this.backend});const o=Array.isArray(u)?u:[u];this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(t,e,o);const i=o.map((e=>null!=e.rank?e:this.makeTensorFromTensorInfo(e)));if(r){const e=this.getTensorsForGradient(t,s,i);n=this.saveTensorsForBackwardMode(e)}return i}}else{const{forwardFunc:t}=e,s=e=>{r&&(n=e.map((e=>this.keep(this.clone(e)))))};o=()=>{const e=this.backend.numDataIds();u=this.tidy((()=>t(this.backend,s)));const n=Array.isArray(u)?u:[u];return this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(l,e,n),n}}const{inputs:p,attrs:h}=e,d=g(e)?null:e.backwardsFunc;let f;return this.scopedRun((()=>this.state.kernelDepth++),(()=>this.state.kernelDepth--),(()=>{this.ENV.getBool("DEBUG")||this.state.profiling?(f=this.profiler.profileKernel(l,p,(()=>o())),this.ENV.getBool("DEBUG")&&this.profiler.logKernelProfile(f),t=f.outputs):t=o()})),r&&this.addTapeNode(l,p,t,d,n,h),this.state.profiling&&this.state.activeProfile.kernels.push({name:l,bytesAdded:this.state.numBytes-s,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-a,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(p).map((e=>null!=p[e]?p[e].shape:null)),outputShapes:t.map((e=>e.shape)),kernelTimeMs:f.timeMs,extraInfo:f.extraInfo}),Array.isArray(u)?t:t[0]}saveTensorsForBackwardMode(e){return e.map((e=>this.keep(this.clone(e))))}getTensorsForGradient(e,t,n){const r=(0,i.uk)(e);if(null!=r){const e=r.inputsToSave||[],s=r.outputsToSave||[];let a;r.saveAllInputs?(c.hu(Array.isArray(t),(()=>"saveAllInputs is true, expected inputs to be an array.")),a=Object.keys(t).map((e=>t[e]))):a=e.map((e=>t[e]));const o=n.filter(((e,t)=>s[t]));return a.concat(o)}return[]}makeTensor(e,t,n,r){if(null==e)throw new Error("Values passed to engine.makeTensor() are null");n=n||"float32",r=r||this.backend;let s=e;"string"===n&&c.HD(e[0])&&(s=e.map((e=>l.encodeString(e))));const a=r.write(s,t,n),o=new f.es(t,n,a,this.nextTensorId());if(this.trackTensor(o,r),"string"===n){const e=this.state.tensorInfo.get(a),t=(0,c.Ub)(s);this.state.numBytes+=t-e.bytes,e.bytes=t}return o}makeTensorFromDataId(e,t,n,r){const s={dataId:e,shape:t,dtype:n=n||"float32"};return this.makeTensorFromTensorInfo(s,r)}makeTensorFromTensorInfo(e,t){const{dataId:n,shape:r,dtype:s}=e,a=new f.es(r,s,n,this.nextTensorId());return this.trackTensor(a,t),a}makeVariable(e,t=!0,n,r){n=n||this.nextVariableId().toString(),null!=r&&r!==e.dtype&&(e=e.cast(r));const s=new f._w(e,t,n,this.nextTensorId());if(null!=this.state.registeredVariables[s.name])throw new Error(`Variable with name ${s.name} was already registered`);return this.state.registeredVariables[s.name]=s,this.incRef(s,this.backend),s}trackTensor(e,t){this.state.numTensors++,"string"===e.dtype&&this.state.numStringTensors++;let n=0;"complex64"!==e.dtype&&"string"!==e.dtype&&(n=e.size*c.bT(e.dtype)),this.state.numBytes+=n,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:n})),e instanceof f._w||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;const t=this.state.tensorInfo.get(e.dataId);if(this.state.numTensors--,"string"===e.dtype&&(this.state.numStringTensors--,this.state.numBytes-=t.bytes),"complex64"!==e.dtype&&"string"!==e.dtype){const t=e.size*c.bT(e.dtype);this.state.numBytes-=t}t.backend.disposeData(e.dataId)&&this.removeDataId(e.dataId,t.backend)}disposeVariables(){for(const e in this.state.registeredVariables){const t=this.state.registeredVariables[e];this.disposeVariable(t)}}disposeVariable(e){this.disposeTensor(e),null!=this.state.registeredVariables[e.name]&&delete this.state.registeredVariables[e.name]}memory(){const 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,null==e.reasons&&(e.reasons=[]),e.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),e}async profile(e){this.state.profiling=!0;const t=this.state.numBytes,n=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((e=>e.totalBytesSnapshot))),this.state.activeProfile.newBytes=this.state.numBytes-t,this.state.activeProfile.newTensors=this.state.numTensors-n;for(const r of this.state.activeProfile.kernels)r.kernelTimeMs=await r.kernelTimeMs,r.extraInfo=await r.extraInfo;return this.state.activeProfile}isTapeOn(){return this.state.gradientDepth>
10&&0===this.state.kernelDepth}addTapeNode(e,t,n,r,s,a){const o={id:this.state.nextTapeNodeId++,kernelName:e,inputs:t,outputs:n,saved:s},u=(0,i.uk)(e);null!=u&&(r=u.gradFunc),null!=r&&(o.gradient=e=>(e=e.map(((e,t)=>{if(null==e){const e=n[t],r=c.wT(e.size,e.dtype);return this.makeTensor(r,e.shape,e.dtype)}return e})),r(e.length>1?e:e[0],s,a))),this.state.activeTape.push(o)}keep(e){return e.kept=!0,e}startTape(){0===this.state.gradientDepth&&(this.state.activeTape=[]),this.state.gradientDepth++}endTape(){this.state.gradientDepth--}startScope(e){const t={track:[],name:"unnamed scope",id:this.state.nextScopeId++};e&&(t.name=e),this.state.scopeStack.push(t),this.state.activeScope=t}endScope(e){const t=(0,m.getTensorsInContainer)(e),n=new Set(t.map((e=>e.id)));for(let s=0;s<this.state.activeScope.track.length;s++){const e=this.state.activeScope.track[s];e.kept||n.has(e.id)||e.dispose()}const r=this.state.scopeStack.pop();this.state.activeScope=0===this.state.scopeStack.length?null:this.state.scopeStack[this.state.scopeStack.length-1],t.forEach((e=>{e.kept||e.scopeId!==r.id||this.track(e)}))}gradients(e,t,n,r=!1){if(c.hu(t.length>0,(()=>"gradients() received an empty list of xs.")),null!=n&&"float32"!==n.dtype)throw new Error(`dy must have 'float32' dtype, but has '${n.dtype}'`);const s=this.scopedRun((()=>this.startTape()),(()=>this.endTape()),(()=>this.tidy("forward",e)));c.hu(s instanceof f.es,(()=>"The result y returned by f() must be a tensor."));const a=function(e,t,n){const r={},s={};for(let u=0;u<t.length;u++)r[t[u].id]=!0;for(let u=0;u<e.length;u++){const n=e[u],a=n.inputs;for(const e in a){const o=a[e];let i=!1;for(let e=0;e<t.length;e++)if(r[o.id]){n.outputs.forEach((e=>r[e.id]=!0)),i=!0,s[n.id]=!0;break}if(i)break}}const a={};a[n.id]=!0;const o={};for(let u=e.length-1;u>=0;u--){const t=e[u],n=t.inputs;for(let e=0;e<t.outputs.length;e++)if(a[t.outputs[e].id]){for(const e in n)a[n[e].id]=!0,o[t.id]=!0;break}}const i=[];for(let u=0;u<e.length;u++){const t=e[u];if(s[t.id]&&o[t.id]){const e={};for(const s in t.inputs){const n=t.inputs[s];r[n.id]&&(e[s]=n)}const n=Object.assign({},t);n.inputs=e,n.outputs=t.outputs,i.push(n)}}return i}(this.state.activeTape,t,s);if(!r&&0===a.length&&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",(()=>{const e={};e[s.id]=null==n?function(e){const t=(0,c.p8)((0,c.NA)(e),"float32");return w.makeTensor(t,e,"float32")}(s.shape):n,function(e,t,n,r){for(let s=t.length-1;s>=0;s--){const a=t[s],o=[];if(a.outputs.forEach((t=>{const n=e[t.id];null!=n?o.push(n):o.push(null)})),null==a.gradient)throw new Error(`Cannot compute gradient: gradient function not found for ${a.kernelName}.`);const i=a.gradient(o);for(const t in a.inputs){if(!(t in i))throw new Error(`Cannot backprop through input ${t}. Available gradients found: ${Object.keys(i)}.`);const s=n((()=>i[t]()));if("float32"!==s.dtype)throw new Error(`Error in gradient for op ${a.kernelName}. The gradient of input ${t} must have 'float32' dtype, but has '${s.dtype}'`);const o=a.inputs[t];if(!c.cO(s.shape,o.shape))throw new Error(`Error in gradient for op ${a.kernelName}. The gradient of input '${t}' has shape '${s.shape}', which does not match the shape of the input '${o.shape}'`);if(null==e[o.id])e[o.id]=s;else{const t=e[o.id];e[o.id]=r(t,s),t.dispose()}}}}(e,a,(e=>this.tidy(e)),v);const r=t.map((t=>e[t.id]));return 0===this.state.gradientDepth&&(this.state.activeTape.forEach((e=>{for(const t of e.saved)t.dispose()})),this.state.activeTape=null),{value:s,grads:r}}))}customGrad(e){return c.hu(c.mf(e),(()=>"The f passed in customGrad(f) must be a function.")),(...t)=>{let n;c.hu(t.every((e=>e instanceof f.es)),(()=>"The args passed in customGrad(f)(x1, x2,...) must all be tensors"));const r={};t.forEach(((e,t)=>{r[t]=e}));return this.runKernelFunc({forwardFunc:(r,s)=>(n=e(...t,s),c.hu(n.value instanceof f.es,(()=>"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor")),c.hu(c.mf(n.gradFunc),(()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function.")),n.value),backwardsFunc:(e,r)=>{const s=n.gradFunc(e,r),a=Array.isArray(s)?s:[s];c.hu(a.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(...).")),c.hu(a.every((e=>e instanceof f.es)),(()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors."));const o={};return a.forEach(((e,t)=>{o[t]=()=>e})),o},inputs:r})}}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){const t=(0,l.now)(),n=await this.backend.time(e);return n.wallMs=(0,l.now)()-t,n}track(e){return null!=this.state.activeScope&&(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 y;for(const e in this.registry)this.disposeRegisteredKernels(e),this.registry[e].dispose(),delete this.registry[e];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null}}function x(){const e=(0,a.D)();if(null==e._tfengine){const t=new s.qA(e);e._tfengine=new b(t)}return(0,s.iG)(e._tfengine.ENV),(0,f.Vi)((()=>e._tfengine)),e._tfengine}b.nextTensorId=0,b.nextVariableId=0;const w=x();function v(e,t){const n={a:e,b:t};return w.runKernel(o.mm_,n)}},2885:function(e,t,n){"use strict";n.d(t,{qA:function(){return a},OB:function(){return i},iG:function(){return l}});var r=n(569);const s="tfjsflags";class a{constructor(e){this.global=e,this.flags={},this.flagRegistry={},this.urlFlags={},this.getQueryParams=o,this.populateURLFlags()}setPlatform(e,t){null!=this.platform&&(i().getBool("IS_TEST")||i().getBool("PROD")||console.warn(`Platform ${this.platformName} has already been set. Overwriting the platform with ${e}.`)),this.platformName=e,this.platform=t}registerFlag(e,t,n){if(this.flagRegistry[e]={evaluationFn:t,setHook:n},null!=this.urlFlags[e]){const t=this.urlFlags[e];i().getBool("IS_TEST")||i().getBool("PROD")||console.warn(`Setting feature override from URL ${e}: ${t}.`),this.set(e,t)}}async getAsync(e){return e in this.flags||(this.flags[e]=await this.evaluateFlag(e)),this.flags[e]}get(e){if(e in this.flags)return this.flags[e];const t=this.evaluateFlag(e);if((0,r.tI)(t))throw new Error(`Flag ${e} cannot be synchronously evaluated. Please use getAsync() instead.`);return this.flags[e]=t,this.flags[e]}getNumber(e){return this.get(e)}getBool(e){return this.get(e)}getFlags(){return this.flags}get features(){return this.flags}set(e,t){if(null==this.flagRegistry[e])throw new Error(`Cannot set flag ${e} as it has not been registered.`);this.flags[e]=t,null!=this.flagRegistry[e].setHook&&this.flagRegistry[e].setHook(t)}evaluateFlag(e){if(null==this.flagRegistry[e])throw new Error(`Cannot evaluate flag '${e}': no evaluation function found.`);return this.flagRegistry[e].evaluationFn()}setFlags(e){this.flags=Object.assign({},e)}reset(){this.flags={},this.urlFlags={},this.populateURLFlags()}populateURLFlags(){if("undefined"===typeof this.global||"undefined"===typeof this.global.location||"undefined"===typeof this.global.location.search)return;const e=this.getQueryParams(this.global.location.search);if(s in e){e.tfjsflags.split(",").forEach((e=>{const[t,n]=e.split(":");this.urlFlags[t]=function(e,t){if("true"===(t=t.toLowerCase())||"false"===t)return"true"===t;if(""+ +t===t)return+t;throw new Error(`Could not parse value flag value ${t} for flag ${e}.`)}(t,n)}))}}}function o(e){const t={};return e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,((e,...n)=>(function(e,t,n){e[decodeURIComponent(t)]=decodeURIComponent(n||"")}(t,n[0],n[1]),n.join("=")))),t}function i(){return u}let u=null;function l(e){u=e}},5938:function(e,t,n){"use strict";n.d(t,{D:function(){return a},R:function(){return o}});var r=n(4155);let s;function a(){if(null==s){let e;if("undefined"!==typeof window)e=window;else if("undefined"!==typeof n.g)e=n.g;else if("undefined"!==typeof r)e=r;else{if("undefined"===typeof self)throw new Error("Could not find a global object");e=self}s=e}return s}function o(e,t){const n=function(){const e=a();
1return null==e._tfGlobals&&(e._tfGlobals=new Map),e._tfGlobals}();if(n.has(e))return n.get(e);{const r=t();return n.set(e,r),n.get(e)}}},4368:function(e,t,n){"use strict";n.d(t,{SR:function(){return i},sq:function(){return u},lu:function(){return l},B9:function(){return c},Cn:function(){return p},jq:function(){return h},y3:function(){return d}});var r=n(7097),s=n(2885),a=n(4077),o=n(747);function i(){return r.BV}function u(){return r.BV.memory()}function l(e,t){return r.BV.tidy(e,t)}function c(e){(0,o.getTensorsInContainer)(e).forEach((e=>e.dispose()))}function p(e){return r.BV.keep(e)}function h(e,t,n=1){return r.BV.registerBackend(e,t,n)}function d(){return r.BV.backend}(0,a.FZ)((function(e){(0,s.OB)().getBool("DEPRECATION_WARNINGS_ENABLED")&&console.warn(e+" You can disable deprecation warnings with tf.disableDeprecationWarnings().")}))},633:function(e,t,n){"use strict";n.d(t,{cb:function(){return i},pn:function(){return o}});var r=n(7097),s=n(4077),a=n(569);function o(e,t){a.hu(a.mf(e),(()=>"The f passed in variableGrads(f) must be a function")),a.hu(null==t||Array.isArray(t)&&t.every((e=>e instanceof s._w)),(()=>"The varList passed in variableGrads(f, varList) must be an array of variables"));const n=null!=t;if(!n){t=[];for(const e in r.BV.registeredVariables)t.push(r.BV.registeredVariables[e])}const o=n?t.filter((e=>!e.trainable)):null,i=t.length;t=t.filter((e=>e.trainable)),a.hu(t.length>0,(()=>`variableGrads() expects at least one of the input variables to be trainable, but none of the ${i} variables is trainable.`));const{value:u,grads:l}=r.BV.gradients(e,t,null,!0);a.hu(l.some((e=>null!=e)),(()=>"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize().")),a.hu(0===u.rank,(()=>`The f passed in variableGrads(f) must return a scalar, but it returned a rank-${u.rank} tensor`));const c={};return t.forEach(((e,t)=>{null!=l[t]&&(c[e.name]=l[t])})),null!=o&&o.forEach((e=>c[e.name]=null)),{value:u,grads:c}}function i(e){return r.BV.customGrad(e)}},2623:function(e,t,n){"use strict";n.d(t,{SYM:function(){return qe.SYM},VGw:function(){return qe.VGw},SpW:function(){return qe.SpW},mm_:function(){return qe.mm_},Xze:function(){return qe.Xze},oT6:function(){return qe.oT6},IKK:function(){return qe.IKK},sJF:function(){return qe.sJF},aJk:function(){return qe.aJk},M2y:function(){return qe.M2y},qw7:function(){return qe.qw7},jMg:function(){return qe.jMg},QCc:function(){return qe.QCc},Oyi:function(){return qe.Oyi},JhU:function(){return qe.JhU},_k9:function(){return qe._k9},IMb:function(){return qe.IMb},ROF:function(){return qe.ROF},XLW:function(){return qe.XLW},zws:function(){return qe.zws},zvY:function(){return qe.zvY},eEB:function(){return qe.eEB},RFZ:function(){return qe.RFZ},gJX:function(){return qe.gJX},xnO:function(){return qe.xnO},Zz9:function(){return qe.Zz9},yj2:function(){return qe.yj2},Eh3:function(){return qe.Eh3},mhS:function(){return qe.mhS},wUP:function(){return qe.wUP},wm:function(){return qe.wm},x12:function(){return qe.x12},o2y:function(){return qe.o2y},ik2:function(){return qe.ik2},mc4:function(){return qe.mc4},TR1:function(){return qe.TR1},VcC:function(){return qe.VcC},Byc:function(){return qe.Byc},iHb:function(){return qe.iHb},JLz:function(){return Yn.JL},QRR:function(){return qe.QRR},T0n:function(){return qe.T0n},cie:function(){return qe.cie},sL$:function(){return qe.sL$},y7R:function(){return qe.y7R},$w:function(){return qe.$w},p4S:function(){return qe.p4S},Vn9:function(){return qe.Vn9},ekb:function(){return qe.ekb},$g6:function(){return qe.$g6},SX0:function(){return qe.SX0},HEU:function(){return qe.HEU},hdR:function(){return qe.hdR},Omj:function(){return qe.Omj},NEP:function(){return qe.NEP},YFo:function(){return qe.YFo},Y0y:function(){return qe.Y0y},vwp:function(){return qe.vwp},deh:function(){return qe.deh},Uyb:function(){return qe.Uyb},OR:function(){return qe.OR},jeX:function(){return qe.jeX},eBW:function(){return qe.eBW},sHE:function(){return qe.sHE},_V0:function(){return qe._V0},luS:function(){return qe.luS},q1x:function(){return qe.q1x},qi_:function(){return qe.qi_},iZT:function(){return qe.iZT},Acj:function(){return qe.Acj},Qg5:function(){return qe.Qg5},iJz:function(){return qe.iJz},J_u:function(){return qe.J_u},avt:function(){return qe.avt},iWB:function(){return qe.iWB},r7n:function(){return qe.r7n},Zuw:function(){return Yn.Zu},eZ0:function(){return qe.eZ0}
1,Hhh:function(){return qe.Hhh},J$2:function(){return qe.J$2},vtC:function(){return qe.vtC},CAk:function(){return qe.CAk},e7N:function(){return qe.e7N},ZbH:function(){return qe.ZbH},kU:function(){return qe.kU},PYm:function(){return qe.PYm},VfG:function(){return qe.VfG},MZg:function(){return qe.MZg},YoZ:function(){return qe.YoZ},mTV:function(){return qe.mTV},OAf:function(){return qe.OAf},OU7:function(){return qe.OU7},OV7:function(){return qe.OV7},vFR:function(){return qe.vFR},BMI:function(){return qe.BMI},q2K:function(){return qe.q2K},c17:function(){return qe.c17},q8u:function(){return qe.q8u},jQs:function(){return qe.jQs},Vbg:function(){return qe.Vbg},NZg:function(){return qe.NZg},wYn:function(){return qe.wYn},kuV:function(){return qe.kuV},uv1:function(){return qe.uv1},cye:function(){return qe.cye},W0H:function(){return qe.W0H},yQU:function(){return qe.yQU},we_:function(){return qe.we_},qWM:function(){return qe.qWM},gaJ:function(){return mt},QiL:function(){return qe.QiL},lyA:function(){return qe.lyA},pe_:function(){return qe.pe_},o0g:function(){return qe.o0g},DlI:function(){return qe.DlI},dDz:function(){return qe.dDz},BiW:function(){return qe.BiW},e6w:function(){return qe.e6w},xJR:function(){return qe.xJR},oHH:function(){return qe.oHH},$HU:function(){return qe.$HU},qkr:function(){return qe.qkr},SbG:function(){return qe.SbG},HZH:function(){return qe.HZH},_Yw:function(){return qe._Yw},zbQ:function(){return qe.zbQ},dpD:function(){return qe.dpD},Hmb:function(){return qe.Hmb},mKl:function(){return qe.mKl},b9H:function(){return qe.b9H},e07:function(){return qe.e07},bV0:function(){return qe.bV0},xQA:function(){return qe.xQA},nr8:function(){return qe.nr8},PhF:function(){return qe.PhF},oFR:function(){return qe.oFR},a5O:function(){return qe.a5O},i5y:function(){return qe.i5y},RQH:function(){return qe.RQH},wYB:function(){return qe.wYB},p2w:function(){return qe.p2w},Gcp:function(){return qe.Gcp},MRv:function(){return qe.MRv},TQc:function(){return qe.TQc},O3z:function(){return qe.O3z},nhH:function(){return qe.nhH},w3H:function(){return qe.w3H},ZjV:function(){return qe.ZjV},D2d:function(){return qe.D2d},L8s:function(){return qe.L8s},FKq:function(){return qe.FKq},bK0:function(){return qe.bK0},_tC:function(){return qe._tC},h8e:function(){return qe.h8e},jQk:function(){return qe.jQk},_JP:function(){return qe._JP},s1s:function(){return qe.s1s},XkS:function(){return qe.XkS},Tr8:function(){return qe.Tr8},GBy:function(){return qe.GBy},sEM:function(){return qe.sEM},MIZ:function(){return qe.MIZ},esB:function(){return Se.es},YDk:function(){return Se.YD},n9L:function(){return qe.n9L},cWu:function(){return qe.cWu},wx7:function(){return qe.wx7},G3Y:function(){return qe.G3Y},kpP:function(){return qe.kpP},ToN:function(){return qe.ToN},Qvg:function(){return qe.Qvg},RuY:function(){return qe.RuY},usg:function(){return qe.usg},WnP:function(){return yt.WnP},IHx:function(){return yt.IHx},$6P:function(){return yt.$6P},YjB:function(){return yt.YjB},NqF:function(){return yt.NqF},wS1:function(){return yt.wS1},uR5:function(){return yt.uR5},y3$:function(){return ht.y3},Wap:function(){return u},Dxk:function(){return yt.Dxk},JY5:function(){return yt.JY5},p3b:function(){return yt.p3b},UFq:function(){return yt.UFq},Jyw:function(){return Xe},Xhn:function(){return a},f3b:function(){return yt.f3b},pju:function(){return yt.pju},iUl:function(){return yt.iUl},d9v:function(){return yt.d9v},zoF:function(){return yt.zoF},gME:function(){return yt.gME},Izb:function(){return yt.Izb},MNy:function(){return yt.MNy},ZaL:function(){return yt.ZaL},PAt:function(){return yt.PAt},Tek:function(){return yt.Tek},bc:function(){return yt.bc},pdZ:function(){return yt.pdZ},$QV:function(){return yt.$QV},B10:function(){return yt.B10},C2$:function(){return r},B90:function(){return ht.B9},hiC:function(){return yt.hiC},rvX:function(){return yt.rvX},pyx:function(){return yt.pyx},SRH:function(){return ht.SR},OBj:function(){return m.OB},DgJ:function(){return yt.DgJ},Qqt:function(){return yt.Qqt},dt4:function(){return yt.dt4},iyy:function(){return yt.iyy},hlL:function(){return yt.hlL},GWj:function(){return yt.GWj},imm:function(){return yt.imm},Iqj:function(){return yt.Iqj},pjt:function(){return yt.pjt},brS:function(){return yt.brS},BHj:function(){return yt.BHj},io:function(){return s},CnY:function(){return ht.Cn},GDt:function(){return l},hi7:function(){return yt.hi7},$r2:function(){return yt.$r2},cM7:function(){return yt.cM7},Krr:function(){return yt.Krr},CmS:function(){return yt.CmS},HvI:function(){return yt.HvI},OI3:function(){return yt.OI3},Fp7:function(){return yt.Fp7},_sB:function(){return yt._sB},YQQ:function(){return yt.YQQ},gWQ:function(){return yt.gWQ},J69:function(){return yt.J69},sq6:function(){return ht.sq},LTh:function(){return yt.LTh},Gi7:function(){return yt.Gi7},dC7:function(){return yt.dC7},W76:function(){return yt.W76},glt:function(){return Wt},Quu:function(){return yt.Quu},lfX:function(){return yt.lfX},iUs:function(){return yt.iUs},JpU:function(){return yt.JpU},vku:function(){return yt.vku},AL3:function(){return yt.AL3},nGf:function(){return yt.nGf},LGj:function(){return yt.LGj},jqO:function(){return ht.jq},wCN:function(){return Ke.wC},UYe:function(){return yt.UYe},XLQ:function(){return yt.XLQ},GYS:function(){return yt.GYS},iD$:function(){return yt.iD$},U8D:function(){return yt.U8D},U_I:function(){return yt.U_I},m7h:function(){return o},XD2:function(){return yt.XD2},tPi:function(){return yt.tPi},jZU:function(){return yt.jZU},SmN:function(){return yt.SmN},CnO:function(){return yt.CnO},p0P:function(){return yt.p0P},kuN:function(){return at},XAC:function(){return yt.XAC},Wvh:function(){return yt.Wvh}
1,Vl2:function(){return yt.Vl2},_b3:function(){return yt._b3},L9e:function(){return yt.L9e},knu:function(){return yt.knu},luU:function(){return yt.luU},Smz:function(){return yt.Smz},z4k:function(){return gt.z4},AEp:function(){return yt.AEp},XeE:function(){return yt.XeE},RRF:function(){return yt.RRF},piX:function(){return lt},lub:function(){return ht.lu},Gg6:function(){return yt.Gg6},p_j:function(){return Bt},p4s:function(){return yt.p4s},Xu6:function(){return yt.Xu6},HHK:function(){return yt.HHK},x8V:function(){return gt.x8},D5U:function(){return ct},VD$:function(){return yt.VD$},jTM:function(){return pt},arb:function(){return yt.arb},lls:function(){return yt.lls},P84:function(){return yt.P84}});var r={};n.r(r),n.d(r,{isBrowser:function(){return f},isMobile:function(){return d},mockIsMobile:function(){return h}});var s={};n.r(s),n.d(s,{browserFiles:function(){return Ae},browserHTTPRequest:function(){return We},concatenateArrayBuffers:function(){return E},copyModel:function(){return fe},decodeWeights:function(){return N},encodeWeights:function(){return I},fromMemory:function(){return Ve},fromMemorySync:function(){return Ge},getLoadHandlers:function(){return P},getModelArtifactsForJSON:function(){return _},getModelArtifactsForJSONSync:function(){return D},getModelArtifactsInfoForJSON:function(){return R},getSaveHandlers:function(){return W},getWeightSpecs:function(){return F},http:function(){return Le},isHTTPScheme:function(){return Me},listModels:function(){return he},loadWeights:function(){return Re},moveModel:function(){return me},registerLoadRouter:function(){return L},registerSaveRouter:function(){return B},removeModel:function(){return de},weightsLoaderFactory:function(){return Fe},withSaveHandler:function(){return He},withSaveHandlerSync:function(){return je}});var a={};n.r(a),n.d(a,{fromPixels:function(){return st},fromPixelsAsync:function(){return nt},toPixels:function(){return rt}});var o={};n.r(o),n.d(o,{Serializable:function(){return ot},SerializationMap:function(){return it},registerClass:function(){return ut}});var i={};n.r(i),n.d(i,{collectGatherOpShapeInfo:function(){return jn},computeOutShape:function(){return Hn},segOpComputeOptimalWindowSize:function(){return Gn}});var u={};n.r(u),n.d(u,{ERF_A1:function(){return ln},ERF_A2:function(){return cn},ERF_A3:function(){return pn},ERF_A4:function(){return hn},ERF_A5:function(){return dn},ERF_P:function(){return un},PARALLELIZE_THRESHOLD:function(){return Qt},RowPartitionType:function(){return Vt},SELU_SCALE:function(){return on.$},SELU_SCALEALPHA:function(){return on.y},applyActivation:function(){return Ht.QH},assertAndGetBroadcastShape:function(){return Xe.assertAndGetBroadcastShape},assertAxesAreInnerMostDims:function(){return Pt.lB},assertParamsConsistent:function(){return Ut},assignToTypedArray:function(){return wn},axesAreInnerMostDims:function(){return Pt.YB},calculateShapes:function(){return an.SU},checkEinsumDimSizes:function(){return Cn},checkPadOnDimRoundingMode:function(){return Gt.m},combineLocations:function(){return Pt.Vh},combineRaggedTensorToTensorShapes:function(){return jt},complexWithEvenIndex:function(){return yn},complexWithOddIndex:function(){return bn},computeConv2DInfo:function(){return Gt.Ix},computeConv3DInfo:function(){return Gt.jw},computeDefaultPad:function(){return Gt.aO},computeDilation2DInfo:function(){return Gt.Rf},computeOptimalWindowSize:function(){return Yt},computeOutAndReduceShapes:function(){return Pt.kz},computeOutShape:function(){return zt},computePool2DInfo:function(){return Gt.Xw},computePool3DInfo:function(){return Gt.pl},convertConv2DDataFormat:function(){return Gt.sl},decodeEinsumEquation:function(){return Sn},eitherStridesOrDilationsAreOne:function(){return Gt.jT},expandShapeToKeepDim:function(){return Pt.rv},exponent:function(){return kn},exponents:function(){return vn},fromStringArrayToUint8:function(){return qn},fromUint8ToStringArray:function(){return Xn},getAxesPermutation:function(){return Pt.Q3},getBroadcastDims:function(){return Xe.getBroadcastDims},getComplexWithIndex:function(){return xn},getEinsumComputePath:function(){return En},getEinsumPermutation:function(){return Tn},getFusedBiasGradient:function(){return Ht.pf},getFusedDyActivation:function(){return Ht.Fr},getImageCenter:function(){return Zt},getInnerMostAxes:function(){return Pt.sY},getPermuted:function(){return en},getRaggedRank:function(){return qt},getReductionAxes:function(){return Xe.getReductionAxes},getReshaped:function(){return Jt},getReshapedPermuted:function(){return tn},getRowPartitionTypesHelper:function(){return Xt},getSliceBeginCoords:function(){return nn},getSliceSize:function(){return rn},getSparseFillEmptyRowsIndicesDenseShapeMismatch:function(){return _n},getSparseFillEmptyRowsNegativeIndexErrorMessage:function(){return Rn},getSparseFillEmptyRowsOutOfRangeIndexErrorMessage:function(){return Fn},getSparseReshapeEmptyTensorZeroOutputDimErrorMessage:function(){return Bn},getSparseReshapeInputOutputMismatchErrorMessage:function(){return Wn},getSparseReshapeInputOutputMultipleErrorMessage:function(){return Ln},getSparseReshapeMultipleNegativeOneOutputDimErrorMessage:function(){return On},getSparseReshapeNegativeOutputDimErrorMessage:function(){return Mn},getSparseSegmentReductionIndicesOutOfRangeErrorMessage:function(){return Vn},getSparseSegmentReductionNegativeSegmentIdsErrorMessage:function(){return Pn},getSparseSegmentReductionNonIncreasingSegmentIdsErrorMessage:function(){return Un},getSparseSegmentReductionSegmentIdOutOfRangeErrorMessage:function(){return zn},getUndoAxesPermutation:function(){return Pt.LJ},isIdentityPermutation:function(){return $n},log:function(){return fn.c},mergeRealAndImagArrays:function(){return mn},prepareAndValidate:function(){return sn},prepareSplitSize:function(){return Dn},segment_util:function(){return i},shouldFuse:function(){return Ht.uy},slice_util:function(){return at},splitRealAndImagArrays:function(){return gn},tupleValuesAreOne:function(){return Gt.I0},upcastType:function(){return gt.x8},validateDefaultValueShape:function(){return Kt},validateInput:function(){return an.b0},validateUpdateShape:function(){return an.l5},warn:function(){return fn.Z}});var l={};n.r(l),n.d(l,{GP:function(){return Kn.GP},qP:function(){return Kn.qP},pA:function(){return Kn.pA},ZA:function(){return Qn.Z}});var c=n(7097);let p;function h(e){p=e}function d(e){if(void 0!==p)return p;if(e||"undefined"!==typeof navigator&&null!=navigator){if(e||(e=navigator),"ReactNative"===e.product)return!0;const t=e.userAgent||e.vendor||("undefined"!==typeof window?window.opera:"");if(!t){const t=e;return t.userAgentData&&t.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 )|
1sy(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 f(){return"undefined"!==typeof window&&null!=window.document||"undefined"!==typeof WorkerGlobalScope}var m=n(2885),g=n(4155);const y=(0,m.OB)();y.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.")})),y.registerFlag("IS_BROWSER",(()=>f())),y.registerFlag("IS_NODE",(()=>"undefined"!==typeof g&&"undefined"!==typeof g.versions&&"undefined"!==typeof g.versions.node)),y.registerFlag("IS_CHROME",(()=>"undefined"!==typeof navigator&&null!=navigator&&null!=navigator.userAgent&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor))),y.registerFlag("PROD",(()=>!1)),y.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",(()=>y.getBool("DEBUG"))),y.registerFlag("DEPRECATION_WARNINGS_ENABLED",(()=>!0)),y.registerFlag("IS_TEST",(()=>!1)),y.registerFlag("CHECK_COMPUTATION_FOR_ERRORS",(()=>!0)),y.registerFlag("WRAP_TO_IMAGEBITMAP",(()=>!1)),y.registerFlag("ENGINE_COMPILE_ONLY",(()=>!1)),y.registerFlag("CANVAS2D_WILL_READ_FREQUENTLY_FOR_GPU",(()=>!1)),y.registerFlag("USE_SETTIMEOUTCUSTOM",(()=>!1));var b=n(1661),x=n(701),w=n(569);const v={float32:4,float16:2,int32:4,uint16:2,uint8:1,bool:1,complex64:8};var k=n(8764).Buffer;async function I(e,t){const n=[],r=[],s=Array.isArray(e)?e.map((e=>e.name)):Object.keys(e);for(let a=0;a<s.length;++a){const o=s[a],i=Array.isArray(e)?e[a].tensor:e[o];if("float32"!==i.dtype&&"int32"!==i.dtype&&"bool"!==i.dtype&&"string"!==i.dtype&&"complex64"!==i.dtype)throw new Error(`Unsupported dtype in weight '${o}': ${i.dtype}`);const u={name:o,shape:i.shape,dtype:i.dtype};if("string"===i.dtype){const e=new Promise((async e=>{const t=await i.bytes(),n=t.reduce(((e,t)=>e+t.length),0)+4*t.length,r=new Uint8Array(n);let s=0;for(let a=0;a<t.length;a++){const e=t[a],n=new Uint8Array(new Uint32Array([e.length]).buffer);r.set(n,s),s+=4,r.set(e,s),s+=e.length}e(r)}));r.push(e)}else r.push(i.data());null!=t&&(u.group=t),n.push(u)}return{data:S(await Promise.all(r)),specs:n}}function N(e,t){const n={};let r,s=0;for(const a of t){const t=a.name,o=a.dtype,i=a.shape,u=(0,w.NA)(i);let l;if("quantization"in a){const n=a.quantization;if("uint8"===n.dtype||"uint16"===n.dtype){if(!("min"in n)||!("scale"in n))throw new Error(`Weight ${a.name} with quantization ${n.dtype} doesn't have corresponding metadata min and scale.`)}else{if("float16"!==n.dtype)throw new Error(`Weight ${a.name} has unknown quantization dtype ${n.dtype}. Supported quantization dtypes are: 'uint8', 'uint16', and 'float16'.`);if("float32"!==o)throw new Error(`Weight ${a.name} is quantized with ${n.dtype} which only supports weights of type float32 not ${o}.`)}const i=v[n.dtype],c=e.slice(s,s+u*i),p="uint8"===n.dtype?new Uint8Array(c):new Uint16Array(c);if("float32"===o)if("uint8"===n.dtype||"uint16"===n.dtype){l=new Float32Array(p.length);for(let e=0;e<p.length;e++){const t=p[e];l[e]=t*n.scale+n.min}}else{if("float16"!==n.dtype)throw new Error(`Unsupported quantization type ${n.dtype} for weight type float32.`);void 0===r&&(r=O()),l=r(p)}else{if("int32"!==o)throw new Error(`Unsupported dtype in weight '${t}': ${o}`);if("uint8"!==n.dtype&&"uint16"!==n.dtype)throw new Error(`Unsupported quantization type ${n.dtype} for weight type int32.`);l=new Int32Array(p.length);for(let e=0;e<p.length;e++){const t=p[e];l[e]=Math.round(t*n.scale+n.min)}}s+=u*i}else if("string"===o){const t=(0,w.NA)(a.shape);l=[];for(let n=0;n<t;n++){const t=new Uint32Array(e.slice(s,s+4))[0];s+=4;const n=new Uint8Array(e.slice(s,s+t));l.push(n),s+=t}}else{const r=v[o],a=e.slice(s,s+u*r);if("float32"===o)l=new Float32Array(a);else if("int32"===o)l=new Int32Array(a);else if("bool"===o)l=new Uint8Array(a);else{if("complex64"!==o)throw new Error(`Unsupported dtype in weight '${t}': ${o}`);{l=new Float32Array(a);const e=new Float32Array(l.length/2),r=new Float32Array(l.length/2);for(let t=0;t<e.length;t++)e[t]=l[2*t],r[t]=l[2*t+1];const s=(0,x.X)(e,i,"float32"),o=(0,x.X)(r,i,"float32");n[t]=(0,b.P)(s,o),s.dispose(),o.dispose()}}s+=u*r}"complex64"!==o&&(n[t]=(0,x.X)(l,i,o))}return n}function S(e){if(null===e)throw new Error(`Invalid input value: ${JSON.stringify(e)}`);let t=0;const n=[];e.forEach((e=>{if(t+=e.byteLength,n.push(e.byteLength===e.buffer.byteLength?e:ne
1w e.constructor(e)),!(e instanceof Float32Array||e instanceof Int32Array||e instanceof Uint8Array))throw new Error(`Unsupported TypedArray subtype: ${e.constructor.name}`)}));const r=new Uint8Array(t);let s=0;return n.forEach((e=>{r.set(new Uint8Array(e.buffer),s),s+=e.byteLength})),r.buffer}const T="undefined"!==typeof k&&("undefined"===typeof Blob||"undefined"===typeof atob||"undefined"===typeof btoa);function C(e){return T?k.byteLength(e):new Blob([e]).size}function E(e){if(1===e.length)return e[0];let t=0;e.forEach((e=>{t+=e.byteLength}));const n=new Uint8Array(t);let r=0;return e.forEach((e=>{n.set(new Uint8Array(e),r),r+=e.byteLength})),n.buffer}function $(e){for(e=e.trim();e.endsWith("/");)e=e.slice(0,e.length-1);const t=e.split("/");return t[t.length-1]}function A(e,t){const n={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,weightsManifest:t};return null!=e.signature&&(n.signature=e.signature),null!=e.userDefinedMetadata&&(n.userDefinedMetadata=e.userDefinedMetadata),null!=e.modelInitializer&&(n.modelInitializer=e.modelInitializer),null!=e.trainingConfig&&(n.trainingConfig=e.trainingConfig),n}function D(e,t,n){const r={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy};if(null!=e.trainingConfig&&(r.trainingConfig=e.trainingConfig),null!=e.weightsManifest){if(!t)throw new Error("modelJSON has weightsManifest but weightSpecs is null");if(!n)throw new Error("modelJSON has weightsManifest but weightData is null");r.weightSpecs=t,r.weightData=n}return null!=e.signature&&(r.signature=e.signature),null!=e.userDefinedMetadata&&(r.userDefinedMetadata=e.userDefinedMetadata),null!=e.modelInitializer&&(r.modelInitializer=e.modelInitializer),r}async function _(e,t){let n,r;return null!=e.weightsManifest&&([n,r]=await t(e.weightsManifest)),D(e,n,r)}function R(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date,modelTopologyType:"JSON",modelTopologyBytes:null==e.modelTopology?0:C(JSON.stringify(e.modelTopology)),weightSpecsBytes:null==e.weightSpecs?0:C(JSON.stringify(e.weightSpecs)),weightDataBytes:null==e.weightData?0:e.weightData.byteLength}}function F(e){const t=[];for(const n of e)t.push(...n.weights);return t}function O(){const e=function(){const e=e=>{let t=e<<13,n=0;for(;0===(8388608&t);)n-=8388608,t<<=1;return t&=-8388609,n+=947912704,t|n},t=new Uint32Array(2048);t[0]=0;for(let n=1;n<1024;n++)t[n]=e(n);for(let n=1024;n<2048;n++)t[n]=939524096+(n-1024<<13);return t}(),t=function(){const 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}(),n=function(){const e=new Uint32Array(64);for(let t=0;t<64;t++)e[t]=1024;return e[0]=e[32]=0,e}();return r=>{const s=new ArrayBuffer(4*r.length),a=new Uint32Array(s);for(let o=0;o<r.length;o++){const s=r[o],i=e[n[s>>10]+(1023&s)]+t[s>>10];a[o]=i}return new Float32Array(s)}}class M{constructor(){this.saveRouters=[],this.loadRouters=[]}static getInstance(){return null==M.instance&&(M.instance=new M),M.instance}static registerSaveRouter(e){M.getInstance().saveRouters.push(e)}static registerLoadRouter(e){M.getInstance().loadRouters.push(e)}static getSaveHandlers(e){return M.getHandlers(e,"save")}static getLoadHandlers(e,t){return M.getHandlers(e,"load",t)}static getHandlers(e,t,n){const r=[];return("load"===t?M.getInstance().loadRouters:M.getInstance().saveRouters).forEach((t=>{const s=t(e,n);null!==s&&r.push(s)})),r}}const B=e=>M.registerSaveRouter(e),L=e=>M.registerLoadRouter(e),W=e=>M.getSaveHandlers(e),P=(e,t)=>M.getLoadHandlers(e,t),U="tensorflowjs",z="models_store",V="model_info_store";function G(){if(!(0,m.OB)().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");const e="undefined"===typeof window?self:window,t=e.indexedDB||e.mozIndexedDB||e.webkitIndexedDB||e.msIndexedDB||e.shimIndexedDB;if(null==t)throw new Error("The current browser does not appear to supp
1ort IndexedDB.");return t}function H(e){const t=e.result;t.createObjectStore(z,{keyPath:"modelPath"}),t.createObjectStore(V,{keyPath:"modelPath"})}class j{constructor(e){if(this.indexedDB=G(),null==e||!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(((e,n)=>{const r=this.indexedDB.open(U,1);r.onupgradeneeded=()=>H(r),r.onsuccess=()=>{const s=r.result;if(null==t){const t=s.transaction(z,"readonly"),r=t.objectStore(z).get(this.modelPath);r.onsuccess=()=>{if(null==r.result)return s.close(),n(new Error(`Cannot find model with path '${this.modelPath}' in IndexedDB.`));e(r.result.modelArtifacts)},r.onerror=e=>(s.close(),n(r.error)),t.oncomplete=()=>s.close()}else{const r=R(t),a=s.transaction(V,"readwrite");let o=a.objectStore(V);const i=o.put({modelPath:this.modelPath,modelArtifactsInfo:r});let u;i.onsuccess=()=>{u=s.transaction(z,"readwrite");const i=u.objectStore(z).put({modelPath:this.modelPath,modelArtifacts:t,modelArtifactsInfo:r});i.onsuccess=()=>e({modelArtifactsInfo:r}),i.onerror=e=>{o=a.objectStore(V);const t=o.delete(this.modelPath);t.onsuccess=()=>(s.close(),n(i.error)),t.onerror=e=>(s.close(),n(i.error))}},i.onerror=e=>(s.close(),n(i.error)),a.oncomplete=()=>{null==u?s.close():u.oncomplete=()=>s.close()}}},r.onerror=e=>n(r.error)}))}}j.URL_SCHEME="indexeddb://";const X=e=>{return(0,m.OB)().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(j.URL_SCHEME)?(t=e.slice(j.URL_SCHEME.length),new j(t)):null;var t};M.registerSaveRouter(X),M.registerLoadRouter(X);class q{constructor(){this.indexedDB=G()}async listModels(){return new Promise(((e,t)=>{const n=this.indexedDB.open(U,1);n.onupgradeneeded=()=>H(n),n.onsuccess=()=>{const r=n.result,s=r.transaction(V,"readonly"),a=s.objectStore(V).getAll();a.onsuccess=()=>{const t={};for(const e of a.result)t[e.modelPath]=e.modelArtifactsInfo;e(t)},a.onerror=e=>(r.close(),t(a.error)),s.oncomplete=()=>r.close()},n.onerror=e=>t(n.error)}))}async removeModel(e){var t;return e=(t=e).startsWith(j.URL_SCHEME)?t.slice(j.URL_SCHEME.length):t,new Promise(((t,n)=>{const r=this.indexedDB.open(U,1);r.onupgradeneeded=()=>H(r),r.onsuccess=()=>{const s=r.result,a=s.transaction(V,"readwrite"),o=a.objectStore(V),i=o.get(e);let u;i.onsuccess=()=>{if(null==i.result)return s.close(),n(new Error(`Cannot find model with path '${e}' in IndexedDB.`));{const r=o.delete(e),a=()=>{u=s.transaction(z,"readwrite");const r=u.objectStore(z).delete(e);r.onsuccess=()=>t(i.result.modelArtifactsInfo),r.onerror=e=>n(i.error)};r.onsuccess=a,r.onerror=e=>(a(),s.close(),n(i.error))}},i.onerror=e=>(s.close(),n(i.error)),a.oncomplete=()=>{null==u?s.close():u.oncomplete=()=>s.close()}},r.onerror=e=>n(r.error)}))}}const K="/",Q="tensorflowjs_models",Y="info",Z="model_topology",J="weight_specs",ee="weight_data",te="model_metadata";function ne(e){return{info:[Q,e,Y].join(K),topology:[Q,e,Z].join(K),weightSpecs:[Q,e,J].join(K),weightData:[Q,e,ee].join(K),modelMetadata:[Q,e,te].join(K)}}function re(e){for(const t of Object.values(e))window.localStorage.removeItem(t)}function se(e){const t=e.split(K);if(t.length<3)throw new Error(`Invalid key format: ${e}`);return t.slice(1,t.length-1).join(K)}class ae{constructor(e){if(!(0,m.OB)().getBool("IS_BROWSER")||"undefined"===typeof window||"undefined"===typeof window.localStorage)throw new Error("The current environment does not support local storage.");if(this.LS=window.localStorage,null==e||!e)throw new Error("For local storage, modelPath must not be null, undefined or empty.");this.modelPath=e,this.keys=ne(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.");{const n=JSON.stringify(e.modelTopology),r=JSON.stringify(e.weightSpecs),s=R(e);try{this.LS.setItem(this.keys.info,JSON.stringify(s)),this.LS.setItem(this.keys.topology,n),this.LS.setItem(this.keys.weightSpecs,r),this.LS.setItem(this.keys.weightData,function(e){if(T)return k.from(e).toString("base64");const t=new Uint8Array(e);let n="";for(let r=0,s=t.length;r<s;r++)n+=String.fromCharCode(t[r]);return btoa(n)}(e.weightData));const t={format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,signature:null!=e.signature?e.signature:void 0,userDefinedMetadata:null!=e.userDefinedMetadata?e.userDefinedMetadata:void 0,modelInitializer:null!=e.modelInitializer?e.modelInitializer:void 0,trainingConfig:null!=e.trainingConfig?e.trainingConfig:void 0};return this.LS.setItem(this.keys.modelMetadata,JSON.stringify(t)),{modelArtifactsInfo:s}}catch(t){throw re(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=${s.modelTopologyBytes}, weightSpecsBytes=${s.weightSpecsBytes}, weightDataBytes=${s.weightDataBytes}.`)}}}async load(){const e=JSON.parse(this.LS.getItem(this.keys.info));if(null==e)throw new Error(`In local storage, there is no model with name '${this.modelPath}'`);if("JSON"!==e.modelTopologyType)throw new Error("BrowserLocalStorage does not support loading non-JSON model topology yet.");const t={},n=JSON.parse(this.LS.getItem(this.keys.topology));if(null==n)throw new Error(`In local storage, the topology of model '${this.modelPath}' is missing.`);t.modelTopology=n;const r=JSON.parse(this.LS.getItem(this.keys.weightSpecs));if(null==r)throw new Error(`In local storage, the weight specs of model '${this.modelPath}' are missing.`);t.weightSpecs=r;const s=this.LS.getItem(this.keys.modelMetadata);if(null!=s){const e=JSON.parse(s);t.format=e.format,t.generatedBy=e.generatedBy,t.convertedBy=e.convertedBy,null!=e.signature&&(t.signature=e.signature),null!=e.userDefinedMetadata&&(t.userDefinedMetadata=e.userDefinedMetadata),null!=e.modelInitializer&&(t.modelInitializer=e.modelInitializer),null!=e.trainingConfig&&(t.trainingConfig=e.trainingConfig)}const a=this.LS.getItem(this.keys.weightData);if(null==a)throw new Error(`In local storage, the binary weight values of model '${this.modelPath}' are missing.`);return t.weightData=function(e){if(T){const t=k.from(e,"base64");return t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)}const t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;++r)n.set([t.charCodeAt(r)],r);return n.buffer}(a),t}}ae.URL_SCHEME="localstorage://";const oe=e=>
1{return(0,m.OB)().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(ae.URL_SCHEME)?(t=e.slice(ae.URL_SCHEME.length),new ae(t)):null;var t};M.registerSaveRouter(oe),M.registerLoadRouter(oe);class ie{constructor(){(0,w.hu)((0,m.OB)().getBool("IS_BROWSER"),(()=>"Current environment is not a web browser")),(0,w.hu)("undefined"===typeof window||"undefined"!==typeof window.localStorage,(()=>"Current browser does not appear to support localStorage")),this.LS=window.localStorage}async listModels(){const e={},t=Q+K,n=K+Y;for(let r=0;r<this.LS.length;++r){const s=this.LS.key(r);if(s.startsWith(t)&&s.endsWith(n)){e[se(s)]=JSON.parse(this.LS.getItem(s))}}return e}async removeModel(e){var t;const n=ne(e=(t=e).startsWith(ae.URL_SCHEME)?t.slice(ae.URL_SCHEME.length):t);if(null==this.LS.getItem(n.info))throw new Error(`Cannot find model at path '${e}'`);const r=JSON.parse(this.LS.getItem(n.info));return re(n),r}}const ue="://";class le{constructor(){this.managers={}}static getInstance(){return null==le.instance&&(le.instance=new le),le.instance}static registerManager(e,t){(0,w.hu)(null!=e,(()=>"scheme must not be undefined or null.")),e.endsWith(ue)&&(e=e.slice(0,e.indexOf(ue))),(0,w.hu)(e.length>0,(()=>"scheme must not be an empty string."));const n=le.getInstance();(0,w.hu)(null==n.managers[e],(()=>`A model store manager is already registered for scheme '${e}'.`)),n.managers[e]=t}static getManager(e){const t=le.getInstance().managers[e];if(null==t)throw new Error(`Cannot find model manager for scheme '${e}'`);return t}static getSchemes(){return Object.keys(le.getInstance().managers)}}function ce(e){if(-1===e.indexOf(ue))throw new Error(`The url string provided does not contain a scheme. Supported schemes are: ${le.getSchemes().join(",")}`);return{scheme:e.split(ue)[0],path:e.split(ue)[1]}}async function pe(e,t,n=!1){(0,w.hu)(e!==t,(()=>`Old path and new path are the same: '${e}'`));const r=M.getLoadHandlers(e);(0,w.hu)(r.length>0,(()=>`Copying failed because no load handler is found for source URL ${e}.`)),(0,w.hu)(r.length<2,(()=>`Copying failed because more than one (${r.length}) load handlers for source URL ${e}.`));const s=r[0],a=M.getSaveHandlers(t);(0,w.hu)(a.length>0,(()=>`Copying failed because no save handler is found for destination URL ${t}.`)),(0,w.hu)(a.length<2,(()=>`Copying failed because more than one (${r.length}) save handlers for destination URL ${t}.`));const o=a[0],i=ce(e).scheme,u=ce(e).path,l=i===ce(e).scheme,c=await s.load();n&&l&&await le.getManager(i).removeModel(u);const p=await o.save(c);return n&&!l&&await le.getManager(i).removeModel(u),p.modelArtifactsInfo}async function he(){const e=le.getSchemes(),t={};for(const n of e){const e=await le.getManager(n).listModels();for(const r in e){t[n+ue+r]=e[r]}}return t}async function de(e){const t=ce(e);return le.getManager(t.scheme).removeModel(t.path)}async function fe(e,t){return pe(e,t,!1)}async function me(e,t){return pe(e,t,!0)}class ge{constructor(){this.messageName="setTimeoutCustom",this.functionRefs=[],this.handledMessageCount=0,this.hasEventListener=!1}fetch(e,t){return fetch(e,t)}now(){return performance.now()}encode(e,t){if("utf-8"!==t&&"utf8"!==t)throw new Error(`Browser's encoder only supports utf-8, but got ${t}`);return null==this.textEncoder&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(e)}decode(e,t){return new TextDecoder(t).decode(e)}setTimeoutCustom(e,t){window&&(0,m.OB)().getBool("USE_SETTIMEOUTCUSTOM")?(this.functionRefs.push(e),setTimeout((()=>{window.postMessage({name:this.messageName,index:this.functionRefs.length-1},"*")}),t),this.hasEventListener||(this.hasEventListener=!0,window.addEventListener("message",(e=>{if(e.source===window&&e.data.name===this.messageName){e.stopPropagation();(0,this.functionRefs[e.data.index])(),this.handledMessageCount++,this.handledMessageCount===this.functionRefs.length&&(this.functionRefs=[],this.handledMessageCount=0)}}),!0))):setTimeout(e,t)}}if((0,m.OB)().get("IS_BROWSER")){(0,m.OB)().setPlatform("browser",new ge);try{le.registerManager(ae.URL_SCHEME,new ie)}catch(Zn){}try{le.registerManager(j.URL_SCHEME,new q)}catch(Zn){}}var ye=n(4155);const be=()=>n(5410);let xe;class we{constructor(){this.util=n(8628),this.textEncoder=new this.util.TextEncoder}fetch(e,t){return null!=(0,m.OB)().global.fetch?(0,m.OB)().global.fetch(e,t):(null==xe&&(xe=be()),xe(e,t))}now(){const e=ye.hrtime();return 1e3*e[0]+e[1]/1e6}encode(e,t){if("utf-8"!==t&&"utf8"!==t)throw new Error(`Node built-in encoder only supports utf-8, but got ${t}`);return this.textEncoder.encode(e)}decode(e,t){return 0===e.length?"":new this.util.TextDecoder(t).decode(e)}}
1(0,m.OB)().get("IS_NODE")&&!(0,m.OB)().get("IS_BROWSER")&&(0,m.OB)().setPlatform("node",new we);var ve=n(2657),ke=n(2271),Ie=n(8723),Ne=n(9798),Se=n(4077);(0,c.wv)();const Te={buffer:ve.f,cast:ke.p,clone:Ie.d,print:Ne.S};(0,Se.Vp)(Te);function Ce(e){return new Promise((e=>setTimeout(e))).then(e)}class Ee{constructor(e){if(!(0,m.OB)().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");e.startsWith(Ee.URL_SCHEME)&&(e=e.slice(Ee.URL_SCHEME.length)),null!=e&&0!==e.length||(e="model"),this.modelJsonFileName=e+".json",this.weightDataFileName=e+".weights.bin"}async save(e){if("undefined"===typeof document)throw new Error("Browser downloads are not supported in this environment since `document` is not present");const 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.");{const n=A(e,[{paths:["./"+this.weightDataFileName],weights:e.weightSpecs}]),r=window.URL.createObjectURL(new Blob([JSON.stringify(n)],{type:"application/json"})),s=null==this.modelJsonAnchor?document.createElement("a"):this.modelJsonAnchor;if(s.download=this.modelJsonFileName,s.href=r,await Ce((()=>s.dispatchEvent(new MouseEvent("click")))),null!=e.weightData){const e=null==this.weightDataAnchor?document.createElement("a"):this.weightDataAnchor;e.download=this.weightDataFileName,e.href=t,await Ce((()=>
1e.dispatchEvent(new MouseEvent("click"))))}return{modelArtifactsInfo:R(e)}}}}Ee.URL_SCHEME="downloads://";class $e{constructor(e){if(null==e||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)=>{const n=new FileReader;n.onload=n=>{const r=JSON.parse(n.target.result),s=r.modelTopology;if(null==s)return void t(new Error(`modelTopology field is missing from file ${this.jsonFile.name}`));if(null==r.weightsManifest)return void t(new Error(`weightManifest field is missing from file ${this.jsonFile.name}`));if(0===this.weightsFiles.length)return void e({modelTopology:s});const a=_(r,(e=>this.loadWeights(e)));e(a)},n.onerror=e=>t(`Failed to read model topology and weights manifest JSON from file '${this.jsonFile.name}'. BrowserFiles supports loading Keras-style tf.Model artifacts only.`),n.readAsText(this.jsonFile)}))}loadWeights(e){const t=[],n=[];for(const a of e)t.push(...a.weights),n.push(...a.paths);const r=this.checkManifestAndWeightFiles(e),s=n.map((e=>this.loadWeightsFile(e,r[e])));return Promise.all(s).then((e=>[t,E(e)]))}loadWeightsFile(e,t){return new Promise(((n,r)=>{const s=new FileReader;s.onload=e=>{const t=e.target.result;n(t)},s.onerror=t=>r(`Failed to weights data from file of path '${e}'.`),s.readAsArrayBuffer(t)}))}checkManifestAndWeightFiles(e){const t=[],n=this.weightsFiles.map((e=>$(e.name))),r={};for(const s of e)s.paths.forEach((e=>{const s=$(e);if(-1!==t.indexOf(s))throw new Error(`Duplicate file basename found in weights manifest: '${s}'`);if(t.push(s),-1===n.indexOf(s))throw new Error(`Weight file with basename '${s}' is not provided.`);r[e]=this.weightsFiles[n.indexOf(s)]}));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 r}}function Ae(e){return new $e(e)}function De(e,t,n,r){!function(e){(0,w.hu)(null!=e&&Array.isArray(e)&&e.length>0,(()=>"promises must be a none empty array"))}(e),function(e,t){(0,w.hu)(e>=0&&e<=1,(()=>`Progress fraction must be in range [0, 1], but got startFraction ${e}`)),(0,w.hu)(t>=0&&t<=1,(()=>`Progress fraction must be in range [0, 1], but got endFraction ${t}`)),(0,w.hu)(t>=e,(()=>`startFraction must be no more than endFraction, but got startFraction ${e} and endFraction ${t}`))}(n=null==n?0:n,r=null==r?1:r);let s=0;return Promise.all(e.map((a=>(a.then((a=>{const o=n+ ++s/e.length*(r-n);return t(o),a})),a))))}async function _e(e,t){null==t&&(t={});const n=null==t.fetchFunc?(0,m.OB)().platform.fetch:t.fetchFunc,r=e.map((e=>n(e,t.requestInit,{isBinary:!0}))),s=(null==t.onProgress?await Promise.all(r):await De(r,t.onProgress,0,.5)).map((e=>e.arrayBuffer()));return null==t.onProgress?await Promise.all(s):await De(s,t.onProgress,.5,1)}async function Re(e,t="",n,r){return Fe((e=>_e(e,{requestInit:r})))(e,t,n)}function Fe(e){return async(t,n="",r)=>{const s=t.map((()=>!1)),a={},o=null!=r?r.map((()=>!1)):[],i=[];if(t.forEach(((e,t)=>{let n=0;e.weights.forEach((e=>{const u="quantization"in e?e.quantization.dtype:e.dtype,l=v[u]*w.NA(e.shape),c=()=>{s[t]=!0,null==a[t]&&(a[t]=[]),a[t].push({manifestEntry:e,groupOffset:n,sizeBytes:l})};null!=r?r.forEach(((t,n)=>{t===e.name&&(c(),o[n]=!0)})):c(),i.push(e.name),n+=l}))})),!o.every((e=>e))){const e=r.filter(((e,t)=>!o[t]));throw new Error(`Could not find weights in manifest with names: ${e.join(", ")}. \nManifest JSON has weights with names: ${i.join(", ")}.`)}const u=s.reduce(((e,t,n)=>(t&&e.push(n),e)),[]),l=[];u.forEach((e=>{t[e].paths.forEach((e=>{const t=n+(n.endsWith("/")?"":"/")+e;l.push(t)}))}));const c=await e(l),p={};let h=0;return u.forEach((e=>{const n=t[e].paths.length;let r=0;for(let t=0;t<n;t++)r+=c[h+t].byteLength;const s=new ArrayBuffer(r),o=new Uint8Array(s);let i=0;for(let t=0;t<n;t++){const e=new Uint8Array(c[h+t]);o.set(e,i),i+=e.byteLength}a[e].forEach((e=>{const t=N(s.slice(e.groupOffset,e.groupOffset+e.sizeBytes),[e.manifestEntry]);for(const n in t)p[n]=t[n]})),h+=n})),p}}M.registerSaveRouter((e=>
1(0,m.OB)().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(Ee.URL_SCHEME)?function(e="model"){return new Ee(e)}(e.slice(Ee.URL_SCHEME.length)):null));class Oe{constructor(e,t){if(this.DEFAULT_METHOD="POST",null==t&&(t={}),this.weightPathPrefix=t.weightPathPrefix,this.onProgress=t.onProgress,this.weightUrlConverter=t.weightUrlConverter,null!=t.fetchFunc?((0,w.hu)("function"===typeof t.fetchFunc,(()=>"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=(0,m.OB)().platform.fetch,(0,w.hu)(null!=e&&e.length>0,(()=>"URL path for http must not be null, undefined or empty.")),Array.isArray(e)&&(0,w.hu)(2===e.length,(()=>`URL paths for http must have a length of 2, (actual length is ${e.length}).`)),this.path=e,null!=t.requestInit&&null!=t.requestInit.body)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.");const t=Object.assign({method:this.DEFAULT_METHOD},this.requestInit);t.body=new FormData;const n=A(e,[{paths:["./model.weights.bin"],weights:e.weightSpecs}]);t.body.append("model.json",new Blob([JSON.stringify(n)],{type:"application/json"}),"model.json"),null!=e.weightData&&t.body.append("model.weights.bin",new Blob([e.weightData],{type:"application/octet-stream"}),"model.weights.bin");const r=await this.fetch(this.path,t);if(r.ok)return{modelArtifactsInfo:R(e),responses:[r]};throw new Error(`BrowserHTTPRequest.save() failed due to HTTP response status ${r.status}.`)}async load(){const 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(s){let e=`Failed to parse model JSON of response from ${this.path}.`;throw this.path.endsWith(".pb")?e+=" 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.":e+=" Please make sure the server is serving valid JSON for this request.",new Error(e)}const n=t.modelTopology,r=t.weightsManifest;if(null==n&&null==r)throw new Error(`The JSON from HTTP path ${this.path} contains neither model topology or manifest for weights.`);return _(t,(e=>this.loadWeights(e)))}async loadWeights(e){const t=Array.isArray(this.path)?this.path[1]:this.path,[n,r]=function(e){const t=e.lastIndexOf("/"),n=e.lastIndexOf("?"),r=e.substring(0,t),s=n>t?e.substring(n):"";return[r+"/",s]}(t),s=this.weightPathPrefix||n,a=F(e),o=[],i=[];for(const u of e)for(const e of u.paths)null!=this.weightUrlConverter?i.push(this.weightUrlConverter(e)):o.push(s+e+r);this.weightUrlConverter&&o.push(...await Promise.all(i));return[a,E(await _e(o,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress}))]}}function Me(e){return null!=e.match(Oe.URL_SCHEME_REGEX)}Oe.URL_SCHEME_REGEX=/^https?:\/\//;const Be=(e,t)=>{if("undefined"===typeof fetch&&(null==t||null==t.fetchFunc))return null;{let n=!0;if(n=Array.isArray(e)?e.every((e=>Me(e))):Me(e),n)return Le(e,t)}return null};function Le(e,t){return new Oe(e,t)}function We(e,t){return Le(e,t)}
1M.registerSaveRouter(Be),M.registerLoadRouter(Be);class Pe{constructor(e){this.modelArtifacts=e}load(){return this.modelArtifacts}}class Ue{constructor(e){this.saveHandler=e}save(e){return this.saveHandler(e)}}class ze{constructor(e){e.load&&(this.load=()=>Promise.resolve(e.load())),e.save&&(this.save=t=>Promise.resolve(e.save(t)))}}function Ve(e,t,n,r){const s=arguments;return new ze(Ge(...s))}function Ge(e,t,n,r){if(1===arguments.length){return null!=e.modelTopology||null!=e.weightSpecs?new Pe(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 Pe({modelTopology:e}))}return 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 Pe({modelTopology:e,weightSpecs:t,weightData:n,trainingConfig:r})}function He(e){return new Ue(e)}function je(e){return new Ue(e)}var Xe=n(2200),qe=n(9121),Ke=n(6151),Qe=n(3740),Ye=n(2668),Ze=n(9906);let Je;function et(e,t=3){if(t>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(null==e)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");let n=!1,r=!1,s=!1,a=!1,o=!1,i=!1;if(e.data instanceof Uint8Array)n=!0;else if("undefined"!==typeof ImageData&&e instanceof ImageData)r=!0;else if("undefined"!==typeof HTMLVideoElement&&e instanceof HTMLVideoElement)s=!0;else if("undefined"!==typeof HTMLImageElement&&e instanceof HTMLImageElement)a=!0;else if(null!=e.getContext)o=!0;else{if(!("undefined"!==typeof ImageBitmap&&e instanceof ImageBitmap))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}`);i=!0}if(null!=(0,Ke.pI)(qe.eBW,c.BV.backendName)){const n={pixels:e},r={numChannels:t};return c.BV.runKernel(qe.eBW,n,r)}const[u,l]=s?[e.videoWidth,e.videoHeight]:[e.width,e.height];let p,h;if(o)p=e.getContext("2d").getImageData(0,0,u,l).data;else if(r||n)p=e.data;else if(a||s||i){if(null==Je)if("undefined"===typeof document){if("undefined"===typeof OffscreenCanvas||"undefined"===typeof OffscreenCanvasRenderingContext2D)throw new Error("Cannot parse input in current context. Reason: OffscreenCanvas Context2D rendering is not supported.");Je=new OffscreenCanvas(1,1).getContext("2d")}else Je=document.createElement("canvas").getContext("2d",{willReadFrequently:!0});Je.canvas.width=u,Je.canvas.height=l,Je.drawImage(e,0,0,u,l),p=Je.getImageData(0,0,u,l).data}if(4===t)h=new Int32Array(p);else{const e=u*l;h=new Int32Array(e*t);for(let n=0;n<e;n++)for(let e=0;e<t;++e)h[n*t+e]=p[4*n+e]}const d=[l,u,t];return(0,Ze.w)(h,d,"int32")}function tt(e){return"undefined"!==typeof window&&"undefined"!==typeof ImageBitmap&&window.hasOwnProperty("createImageBitmap")&&!(e instanceof ImageBitmap)&&function(e){return null!=e&&0!==e.width&&0!==e.height}(e)&&!function(e){return null!=e&&e.data instanceof Uint8Array}(e)}async function nt(e,t=3){let n=null;if((0,m.OB)().getBool("WRAP_TO_IMAGEBITMAP")&&tt(e)){let t;try{t=await createImageBitmap(e,{premultiplyAlpha:"none"})}catch(r){t=null}n=null!=t&&t.width===e.width&&t.height===e.height?t:e}else n=e;return et(n,t)}async function rt(e,t){let n=(0,Qe._1)(e,"img","toPixels");if(!(e instanceof Se.es)){const e=n;n=(0,ke.p)(e,"int32"),e.dispose()}if(2!==n.rank&&3!==n.rank)throw new Error(`toPixels only supports rank 2 or 3 tensors, got rank ${n.rank}.`);const[r,s]=n.shape.slice(0,2),a=2===n.rank?1:n.shape[2];if(a>4||2===a)throw new Error(`toPixels only supports depth of size 1, 3 or 4 but got ${a}`);if("float32"!==n.dtype&&"int32"!==n.dtype)throw new Error(`Unsupported type for toPixels: ${n.dtype}. Please use float32 or int32 tensors.`);const o=await n.data(),i="float32"===n.dtype?255:1,u=new Uint8ClampedArray(s*r*4);for(let l=0;l<r*s;++l){const e=[0,0,0,255];for(let r=0;r<a;r++){const t=o[l*a+r];
1if("float32"===n.dtype){if(t<0||t>1)throw new Error(`Tensor values for a float32 Tensor must be in the range [0 - 1] but encountered ${t}.`)}else if("int32"===n.dtype&&(t<0||t>255))throw new Error(`Tensor values for a int32 Tensor must be in the range [0 - 255] but encountered ${t}.`);1===a?(e[0]=t*i,e[1]=t*i,e[2]=t*i):e[r]=t*i}const t=4*l;u[t+0]=Math.round(e[0]),u[t+1]=Math.round(e[1]),u[t+2]=Math.round(e[2]),u[t+3]=Math.round(e[3])}if(null!=t){t.width=s,t.height=r;const e=t.getContext("2d"),n=new ImageData(u,s,r);e.putImageData(n,0,0)}return n!==e&&n.dispose(),u}const st=(0,Ye.op)({fromPixels_:et});var at=n(7650);class ot{getClassName(){return this.constructor.className}static fromConfig(e,t){return new e(t)}}class it{constructor(){this.classNameMap={}}static getMap(){return null==it.instance&&(it.instance=new it),it.instance}static register(e){it.getMap().classNameMap[e.className]=[e,e.fromConfig]}}function ut(e){(0,w.hu)(null!=e.className,(()=>"Class being registered does not have the static className property defined.")),(0,w.hu)("string"===typeof e.className,(()=>"className is required to be a string, but got type "+typeof e.className)),(0,w.hu)(e.className.length>0,(()=>"Class being registered has an empty-string as its className, which is disallowed.")),it.register(e)}var lt=n(747),ct=n(9122);const pt="3.21.0";var ht=n(4368),dt=n(633),ft=n(9494);class mt extends ot{minimize(e,t=!1,n){const{value:r,grads:s}=this.computeGradients(e,n);if(null!=n){const e=n.map((e=>({name:e.name,tensor:s[e.name]})));this.applyGradients(e)}else this.applyGradients(s);return(0,ht.B9)(s),t?r:(r.dispose(),null)}get iterations(){return null==this.iterations_&&(this.iterations_=0),this.iterations_}incrementIterations(){this.iterations_=this.iterations+1}computeGradients(e,t){return(0,dt.pn)(e,t)}dispose(){null!=this.iterations_&&(0,ht.B9)(this.iterations_)}async saveIterations(){return null==this.iterations_&&(this.iterations_=0),{name:"iter",tensor:(0,ft.i)(this.iterations_,"int32")}}async getWeights(){throw new Error("getWeights() is not implemented for this optimizer yet.")}async setWeights(e){throw new Error(`setWeights() is not implemented for this optimizer class ${this.getClassName()}`)}async extractIterations(e){return this.iterations_=(await e[0].tensor.data())[0],e.slice(1)}}Object.defineProperty(mt,Symbol.hasInstance,{value:e=>null!=e.minimize&&null!=e.computeGradients&&null!=e.applyGradients});var gt=n(1221),yt=n(9370),bt=n(6407),xt=n(1274),wt=n(4841),vt=n(3261),kt=n(248),It=n(6577);class Nt extends mt{constructor(e,t,n=null){super(),this.learningRate=e,this.rho=t,this.epsilon=n,this.accumulatedGrads=[],this.accumulatedUpdates=[],null==n&&(this.epsilon=c.BV.backend.epsilon())}applyGradients(e){(Array.isArray(e)?e.map((e=>e.name)):Object.keys(e)).forEach(((t,n)=>{const r=c.BV.registeredVariables[t];null==this.accumulatedGrads[n]&&(this.accumulatedGrads[n]={originalName:`${t}/accum_grad`,variable:(0,ht.lu)((()=>(0,It.P)(r).variable(false)))}),null==this.accumulatedUpdates[n]&&(this.accumulatedUpdates[n]={originalName:`${t}/accum_var`,variable:(0,ht.lu)((()=>(0,It.P)(r).variable(false)))});const s=Array.isArray(e)?e[n].tensor:e[t];if(null==s)return;const a=this.accumulatedGrads[n].variable,o=this.accumulatedUpdates[n].variable;(0,ht.lu)((()=>{const e=(0,bt.I)((0,wt.d)(a,this.rho),(0,wt.d)((0,kt.h)(s),1-this.rho)),t=(0,wt.d)((0,xt.h)((0,vt._)((0,bt.I)(o,this.epsilon)),(0,vt._)((0,bt.I)(a,this.epsilon))),s),n=(0,bt.I)((0,wt.d)(o,this.rho),(0,wt.d)((0,kt.h)(t),1-this.rho));a.assign(e),o.assign(n);const i=(0,bt.I)((0,wt.d)(t,-this.learningRate),r);r.assign(i)}))})),this.incrementIterations()}dispose(){null!=this.accumulatedUpdates&&((0,ht.B9)(this.accumulatedGrads.map((e=>e.variable))),(0,ht.B9)(this.accumulatedUpdates.map((e=>e.variable))))}async getWeights(){const e=[...this.accumulatedGrads,...this.accumulatedUpdates];return[await this.saveIterations()].concat(e.map((e=>({name:e.originalName,tensor:e.variable}))))}async setWeights(e){const t=(e=await this.extractIterations(e)).length/2;this.accumulatedGrads=e.slice(0,t).map((e=>({originalName:e.name,variable:e.tensor.variable(false)}))),this.accumulatedUpdates=e.slice(t,2*t).map((e=>({originalName:e.name,variable:e.tensor.variable(false)})))}getConfig(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}}static fromConfig(e,t){return new e(t.learningRate,t.rho,t.epsilon)}}Nt.className="Adadelta",ut(Nt);var St=n(4006);class Tt extends mt{constructor(e,t=.1){super(),this.learningRate=e,this.initialAccumulatorValue=t,this.accumulatedGrads=[]}applyGradients(e){(Array.isArray(e)?e.map((e=>
1e.name)):Object.keys(e)).forEach(((t,n)=>{const r=c.BV.registeredVariables[t];if(null==this.accumulatedGrads[n]){const e=!1;this.accumulatedGrads[n]={originalName:`${t}/accumulator`,variable:(0,ht.lu)((()=>(0,St.h)(r.shape,this.initialAccumulatorValue).variable(e)))}}const s=Array.isArray(e)?e[n].tensor:e[t];if(null==s)return;const a=this.accumulatedGrads[n].variable;(0,ht.lu)((()=>{const e=(0,bt.I)(a,(0,kt.h)(s));a.assign(e);const t=(0,bt.I)((0,wt.d)((0,xt.h)(s,(0,vt._)((0,bt.I)(e,c.BV.backend.epsilon()))),-this.learningRate),r);r.assign(t)}))})),this.incrementIterations()}dispose(){null!=this.accumulatedGrads&&(0,ht.B9)(this.accumulatedGrads.map((e=>e.variable)))}async getWeights(){return[await this.saveIterations()].concat(this.accumulatedGrads.map((e=>({name:e.originalName,tensor:e.variable}))))}async setWeights(e){e=await this.extractIterations(e);this.accumulatedGrads=e.map((e=>({originalName:e.name,variable:e.tensor.variable(false)})))}getConfig(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}}static fromConfig(e,t){return new e(t.learningRate,t.initialAccumulatorValue)}}Tt.className="Adagrad",ut(Tt);var Ct=n(3453),Et=n(827);class $t extends mt{constructor(e,t,n,r=null){super(),this.learningRate=e,this.beta1=t,this.beta2=n,this.epsilon=r,this.accumulatedFirstMoment=[],this.accumulatedSecondMoment=[],(0,ht.lu)((()=>{this.accBeta1=(0,ft.i)(t).variable(),this.accBeta2=(0,ft.i)(n).variable()})),null==r&&(this.epsilon=c.BV.backend.epsilon())}applyGradients(e){const t=Array.isArray(e)?e.map((e=>e.name)):Object.keys(e);(0,ht.lu)((()=>{const n=(0,Et.l)(1,this.accBeta1),r=(0,Et.l)(1,this.accBeta2);t.forEach(((t,s)=>{const a=c.BV.registeredVariables[t];null==this.accumulatedFirstMoment[s]&&(this.accumulatedFirstMoment[s]={originalName:`${t}/m`,variable:(0,ht.lu)((()=>(0,It.P)(a).variable(false)))}),null==this.accumulatedSecondMoment[s]&&(this.accumulatedSecondMoment[s]={originalName:`${t}/v`,variable:(0,ht.lu)((()=>(0,It.P)(a).variable(false)))});const o=Array.isArray(e)?e[s].tensor:e[t];if(null==o)return;const i=this.accumulatedFirstMoment[s].variable,u=this.accumulatedSecondMoment[s].variable,l=(0,bt.I)((0,wt.d)(i,this.beta1),(0,wt.d)(o,1-this.beta1)),p=(0,bt.I)((0,wt.d)(u,this.beta2),(0,wt.d)((0,kt.h)(o),1-this.beta2)),h=(0,xt.h)(l,n),d=(0,xt.h)(p,r);i.assign(l),u.assign(p);const f=(0,bt.I)((0,wt.d)((0,xt.h)(h,(0,bt.I)((0,vt._)(d),this.epsilon)),-this.learningRate),a);a.assign(f)})),this.accBeta1.assign((0,wt.d)(this.accBeta1,this.beta1)),this.accBeta2.assign((0,wt.d)(this.accBeta2,this.beta2))})),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.accBeta2.dispose(),null!=this.accumulatedFirstMoment&&(0,ht.B9)(this.accumulatedFirstMoment.map((e=>e.variable))),null!=this.accumulatedSecondMoment&&(0,ht.B9)(this.accumulatedSecondMoment.map((e=>e.variable)))}async getWeights(){const e=[...this.accumulatedFirstMoment,...this.accumulatedSecondMoment];return[await this.saveIterations()].concat(e.map((e=>({name:e.originalName,tensor:e.variable}))))}async setWeights(e){e=await this.extractIterations(e),(0,ht.lu)((()=>{this.accBeta1.assign((0,Ct.s)(this.beta1,this.iterations_+1)),this.accBeta2.assign((0,Ct.s)(this.beta2,this.iterations_+1))}));const t=e.length/2;this.accumulatedFirstMoment=e.slice(0,t).map((e=>({originalName:e.name,variable:e.tensor.variable(false)}))),this.accumulatedSecondMoment=e.slice(t,2*t).map((e=>({originalName:e.name,variable:e.tensor.variable(false)})))}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}}static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon)}}$t.className="Adam",ut($t);var At=n(6235),Dt=n(632);class _t extends mt{constructor(e,t,n,r=null,s=0){super(),this.learningRate=e,this.beta1=t,this.beta2=n,this.epsilon=r,this.decay=s,this.accumulatedFirstMoment=[],this.accumulatedWeightedInfNorm=[],(0,ht.lu)((()=>{this.iteration=(0,ft.i)(0).variable(),this.accBeta1=(0,ft.i)(t).variable()})),null==r&&(this.epsilon=c.BV.backend.epsilon())}applyGradients(e){const t=Array.isArray(e)?e.map((e=>e.name)):Object.keys(e);(0,ht.lu)((()=>{const n=(0,Et.l)(1,this.accBeta1),r=(0,xt.h)(-this.learningRate,(0,bt.I)((0,wt.d)(this.iteration,this.decay),1));t.forEach(((t,s)=>{const a=c.BV.registeredVariables[t];null==this.accumulatedFirstMoment[s]&&(this.accumulatedFirstMoment[s]={originalName:`${t}/m`,variable:(0,It.P)(a).variable(false)}),null==this.accumulatedWeightedInfNorm[s]&&(this.accumulatedWeightedInfNorm[s]={originalName:`${t}/v`,variable:(0,It.P)(a).variable(false)});const o=Array.isArray(e)?e[s].tensor:e[t];if(null==o)return;const i=this.accumulatedFirstMoment[s].variable,u=this.accumulatedWeightedInfNorm[s].variable,l=(0,bt.I)((0,wt.d)(i,this.beta1),(0,wt.d)(o,1-this.beta1)),p=(0,wt.d)(u,this.beta2),h=(0,At.W)(o),d=(0,Dt.g)(p,h);i.assign(l),u.assign(d);const f=(0,bt.I)((0,wt.d)((0,xt.h)(r,n),(0,xt.h)(l,(0,bt.I)(d,this.epsilon))),a);a.assign(f)})),this.iteration.assign((0,bt.I)(this.iteration,1)),this.accBeta1.assign((0,wt.d)(this.accBeta1,this.beta1))})),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.iteration.dispose(),null!=this.accumulatedFirstMoment&&(0,ht.B9)(this.accumulatedFirstMoment.map((e=>e.variable))),null!=this.accumulatedWeightedInfNorm&&(0,ht.B9)(this.accumulatedWeightedInfNorm.map((e=>e.variable)))}async getWeights(){throw new Error("getWeights() is not implemented for Adamax yet.")}async setWeights(e){throw new Error("setWeights() is not implemented for Adamax yet.")}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}}static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon,t.decay)}}_t.className="Adamax",ut(_t);class Rt extends mt{constructor(e){super(),this.learningRate=e,this.setLearningRate(e)}
1applyGradients(e){(Array.isArray(e)?e.map((e=>e.name)):Object.keys(e)).forEach(((t,n)=>{const r=Array.isArray(e)?e[n].tensor:e[t];if(null==r)return;const s=c.BV.registeredVariables[t];(0,ht.lu)((()=>{const e=(0,bt.I)((0,wt.d)(this.c,r),s);s.assign(e)}))})),this.incrementIterations()}setLearningRate(e){this.learningRate=e,null!=this.c&&this.c.dispose(),this.c=(0,ht.Cn)((0,ft.i)(-e))}dispose(){this.c.dispose()}async getWeights(){return[await this.saveIterations()]}async setWeights(e){if(0!==(e=await this.extractIterations(e)).length)throw new Error("SGD optimizer does not have settable weights.")}getConfig(){return{learningRate:this.learningRate}}static fromConfig(e,t){return new e(t.learningRate)}}Rt.className="SGD",ut(Rt);class Ft extends Rt{constructor(e,t,n=!1){super(e),this.learningRate=e,this.momentum=t,this.useNesterov=n,this.accumulations=[],this.m=(0,ft.i)(this.momentum)}applyGradients(e){(Array.isArray(e)?e.map((e=>e.name)):Object.keys(e)).forEach(((t,n)=>{const r=c.BV.registeredVariables[t];if(null==this.accumulations[n]){const e=!1;this.accumulations[n]={originalName:`${t}/momentum`,variable:(0,ht.lu)((()=>(0,It.P)(r).variable(e)))}}const s=this.accumulations[n].variable,a=Array.isArray(e)?e[n].tensor:e[t];null!=a&&(0,ht.lu)((()=>{let e;const t=(0,bt.I)((0,wt.d)(this.m,s),a);e=this.useNesterov?(0,bt.I)((0,wt.d)(this.c,(0,bt.I)(a,(0,wt.d)(t,this.m))),r):(0,bt.I)((0,wt.d)(this.c,t),r),s.assign(t),r.assign(e)}))})),this.incrementIterations()}dispose(){this.m.dispose(),null!=this.accumulations&&(0,ht.B9)(this.accumulations.map((e=>e.variable)))}setMomentum(e){this.momentum=e}async getWeights(){return[await this.saveIterations()].concat(this.accumulations.map((e=>({name:e.originalName,tensor:e.variable}))))}async setWeights(e){e=await this.extractIterations(e);this.accumulations=e.map((e=>({originalName:e.name,variable:e.tensor.variable(false)})))}getConfig(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}}static fromConfig(e,t){return new e(t.learningRate,t.momentum,t.useNesterov)}}Ft.className="Momentum",ut(Ft);class Ot extends mt{constructor(e,t=.9,n=0,r=null,s=!1){if(super(),this.learningRate=e,this.decay=t,this.momentum=n,this.epsilon=r,this.accumulatedMeanSquares=[],this.accumulatedMoments=[],this.accumulatedMeanGrads=[],this.centered=s,null==r&&(this.epsilon=c.BV.backend.epsilon()),null==e)throw new Error("learningRate for RMSPropOptimizer must be defined.")}applyGradients(e){(Array.isArray(e)?e.map((e=>e.name)):Object.keys(e)).forEach(((t,n)=>{const r=c.BV.registeredVariables[t],s=!1;null==this.accumulatedMeanSquares[n]&&(this.accumulatedMeanSquares[n]={originalName:`${t}/rms`,variable:(0,ht.lu)((()=>(0,It.P)(r).variable(s)))}),null==this.accumulatedMoments[n]&&(this.accumulatedMoments[n]={originalName:`${t}/momentum`,variable:(0,ht.lu)((()=>(0,It.P)(r).variable(s)))}),null==this.accumulatedMeanGrads[n]&&this.centered&&(this.accumulatedMeanGrads[n]={originalName:`${t}/mg`,variable:(0,ht.lu)((()=>(0,It.P)(r).variable(s)))});const a=Array.isArray(e)?e[n].tensor:e[t];if(null==a)return;const o=this.accumulatedMeanSquares[n].variable,i=this.accumulatedMoments[n].variable;(0,ht.lu)((()=>{const e=(0,bt.I)((0,wt.d)(o,this.decay),(0,wt.d)((0,kt.h)(a),1-this.decay));if(this.centered){const t=this.accumulatedMeanGrads[n].variable,s=(0,bt.I)((0,wt.d)(t,this.decay),(0,wt.d)(a,1-this.decay)),u=(0,xt.h)((0,wt.d)(a,this.learningRate),(0,vt._)((0,Et.l)(e,(0,bt.I)((0,kt.h)(s),this.epsilon)))),l=(0,bt.I)((0,wt.d)(i,this.momentum),u);o.assign(e),t.assign(s),i.assign(l);const c=(0,Et.l)(r,l);r.assign(c)}else{const e=(0,bt.I)((0,wt.d)(o,this.decay),(0,wt.d)((0,kt.h)(a),1-this.decay)),t=(0,bt.I)((0,wt.d)(i,this.momentum),(0,xt.h)((0,wt.d)(a,this.learningRate),(0,vt._)((0,bt.I)(e,this.epsilon))));o.assign(e),i.assign(t);const n=(0,Et.l)(r,t);r.assign(n)}}))})),this.incrementIterations()}dispose(){null!=this.accumulatedMeanSquares&&(0,ht.B9)(this.accumulatedMeanSquares.map((e=>e.variable))),null!=this.accumulatedMeanGrads&&this.centered&&(0,ht.B9)(this.accumulatedMeanGrads.map((e=>e.variable))),null!=this.accumulatedMoments&&(0,ht.B9)(this.accumulatedMoments.map((e=>e.variable)))}async getWeights(){const e=[...this.accumulatedMeanSquares,...this.accumulatedMoments];return this.centered&&e.push(...this.accumulatedMeanGrads),[await this.saveIterations()].concat(e.map((e=>({name:e.originalName,tensor:e.variable}
1))))}async setWeights(e){e=await this.extractIterations(e);const t=this.centered?e.length/3:e.length/2,n=!1;this.accumulatedMeanSquares=e.slice(0,t).map((e=>({originalName:e.name,variable:e.tensor.variable(n)}))),this.accumulatedMoments=e.slice(t,2*t).map((e=>({originalName:e.name,variable:e.tensor.variable(n)}))),this.centered&&(this.accumulatedMeanGrads=e.slice(2*t,3*t).map((e=>({originalName:e.name,variable:e.tensor.variable(n)}))))}getConfig(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}}static fromConfig(e,t){return new e(t.learningRate,t.decay,t.momentum,t.epsilon,t.centered)}}Ot.className="RMSProp",ut(Ot);class Mt{static sgd(e){return new Rt(e)}static momentum(e,t,n=!1){return new Ft(e,t,n)}static rmsprop(e,t=.9,n=0,r=null,s=!1){return new Ot(e,t,n,r,s)}static adam(e=.001,t=.9,n=.999,r=null){return new $t(e,t,n,r)}static adadelta(e=.001,t=.95,n=null){return new Nt(e,t,n)}static adamax(e=.002,t=.9,n=.999,r=null,s=0){return new _t(e,t,n,r,s)}static adagrad(e,t=.1){return new Tt(e,t)}}const Bt={sgd:Mt.sgd,momentum:Mt.momentum,adadelta:Mt.adadelta,adagrad:Mt.adagrad,rmsprop:Mt.rmsprop,adamax:Mt.adamax,adam:Mt.adam},Lt="undefined"!==typeof requestAnimationFrame?requestAnimationFrame:"undefined"!==typeof setImmediate?setImmediate:e=>e();function Wt(){return new Promise((e=>Lt((()=>e()))))}var Pt=n(3591);function Ut(e,t){const n=e[0].length;e.forEach(((e,t)=>{w.hu(e.length===n,(()=>`Error in concat${n}D: rank of tensors[${t}] must be the same as the rank of the rest (${n})`))})),w.hu(t>=0&&t<n,(()=>`Error in concat${n}D: axis must be between 0 and ${n-1}.`));const r=e[0];e.forEach(((e,s)=>{for(let a=0;a<n;a++)w.hu(a===t||e[a]===r[a],(()=>`Error in concat${n}D: Shape of tensors[${s}] (${e}) does not match the shape of the rest (${r}) along the non-concatenated axis ${s}.`))}))}function zt(e,t){const n=e[0].slice();for(let r=1;r<e.length;r++)n[t]+=e[r][t];return n}var Vt,Gt=n(2582),Ht=n(9323);function jt(e,t,n){let r=new Array;if(null==n&&null==t)return r;if(null==t)for(;r.length<e+n.length;)r.push(-1);else r=t.slice();if(null==n)return r;if(e+n.length!==r.length)throw new Error(`rt input.shape and shape=${t} are incompatible: rt input.rank = ${e+n.length}, but shape.rank = ${r.length}`);for(let s=1;s<n.length;++s){const a=n[s],o=r[r.length-n.length+s],i=r[o];if(a>=0)if(i>=0){if(i!==a)throw new Error(`rt input.shape and shape=${t} are incompatible: rt input.shape[${s+e}] = ${a} but shape[${s+e}] = ${i}`)}else r[o]=a}return r}function Xt(e){const t={FIRST_DIM_SIZE:Vt.FIRST_DIM_SIZE,VALUE_ROWIDS:Vt.VALUE_ROWIDS,ROW_LENGTHS:Vt.ROW_LENGTHS,ROW_SPLITS:Vt.ROW_SPLITS,ROW_LIMITS:Vt.ROW_LIMITS,ROW_STARTS:Vt.ROW_STARTS},n=[];for(const r of e){if(!(r in t))break;n.push(t[r])}return n}function qt(e){return 0===e.length?0:e[0]===Vt.FIRST_DIM_SIZE?e.length-1:e.length}function Kt(e,t){if(null==e||null==t)return;const n=e.length,r=t.length;if(n>=r)throw new Error(`defaultValue.shape=${e} and ragged tensor flatValues.shape=${t}, are incompatible: defaultValue.rank = ${n} must be less than ragged tensor input flatValues.rank = ${r})`);for(let s=0;s<Math.min(n,r-1);++s){const n=e[s],r=t[s+1];if(n>=0&&r>=0&&1!==n&&n!==r)throw new Error(`defaultValue.shape=${e}, and ragged tensor input flatValues.shape=${t} are incompatible: defaultValue.shape[${s-e.length}] = ${n} but ragged tensor input.flatValues.shape[${s-e.length}] = ${r}`)}}!function(e){e[e.FIRST_DIM_SIZE=0]="FIRST_DIM_SIZE",e[e.VALUE_ROWIDS=1]="VALUE_ROWIDS",e[e.ROW_LENGTHS=2]="ROW_LENGTHS",e[e.ROW_SPLITS=3]="ROW_SPLITS",e[e.ROW_LIMITS=4]="ROW_LIMITS",e[e.ROW_STARTS=5]="ROW_STARTS"}(Vt||(Vt={}));const Qt=30;function Yt(e){return e<=Qt?e:(0,w.jP)(e,Math.floor(Math.sqrt(e)))}function Zt(e,t,n){return[n*("number"===typeof e?e:e[0]),t*("number"===typeof e?e:e[1])]}function Jt(e,t,n,r=!0){let s=[];if(r)s=s.concat(t.slice(0)),s.push(e[0]/n),s=s.concat(e.slice(1));else{s=s.concat(e[0]);const n=t.length;for(let r=0;r<n;++r)s=s.concat([e[r+1]/t[r],t[r]]);s=s.concat(e.slice(n+1))}return s}function en(e,t,n=!0){const r=[];if(n){r.push(t);
1for(let n=t+1;n<e;++n)n<=2*t?(r.push(n),r.push(n-(t+1))):r.push(n)}else{const n=[],s=[];for(let r=1;r<e;++r)r>=2*t+1||r%2===1?s.push(r):n.push(r);r.push(...n),r.push(0),r.push(...s)}return r}function tn(e,t,n,r=!0){const s=[];r?s.push(e[0]/n):s.push(e[0]*n);for(let a=1;a<e.length;++a)a<=t.length?r?s.push(t[a-1]*e[a]):s.push(e[a]/t[a-1]):s.push(e[a]);return s}function nn(e,t){const n=[0];for(let r=0;r<t;++r)n.push(e[r][0]);return n}function rn(e,t,n){const r=e.slice(0,1);for(let s=0;s<n;++s)r.push(e[s+1]-t[s][0]-t[s][1]);return r}function sn(e,t){const n=e.shape.length,r=t.shape.length;if(n<1)throw new Error(`tf.gatherND() expects the input to be rank 1 or higher, but the rank was ${n}.`);if(r<1)throw new Error(`tf.gatherND() expects the indices to be rank 1 or higher, but the rank was ${r}.`);if("int32"!==t.dtype)throw new Error(`tf.gatherND() expects the indices to be int32 type, but the dtype was ${t.dtype}.`);if(t.shape[r-1]>n)throw new Error(`index innermost dimension length must be <= tensor rank; saw: ${t.shape[r-1]} vs. ${n}`);if(0===(0,w.NA)(e.shape))throw new Error(`Requested more than 0 entries, but input is empty. Input shape: ${e.shape}.`);const s=t.shape,a=s[s.length-1];let o=1;for(let p=0;p<s.length-1;++p)o*=s[p];const i=e.shape,u=s.slice();u.pop();let l=1;for(let p=a;p<n;++p)l*=i[p],u.push(i[p]);const c=[...(0,w.e3)(e.shape).map((e=>e/l)),1].slice(0,a);return[u,o,l,c]}var an=n(3028),on=n(3179);const un=.3275911,ln=.254829592,cn=-.284496736,pn=1.421413741,hn=-1.453152027,dn=1.061405429;var fn=n(4706);function mn(e,t){if(e.length!==t.length)throw new Error(`Cannot merge real and imag arrays of different lengths. real:${e.length}, imag: ${t.length}.`);const n=new Float32Array(2*e.length);for(let r=0;r<n.length;r+=2)n[r]=e[r/2],n[r+1]=t[r/2];return n}function gn(e){const t=new Float32Array(e.length/2),n=new Float32Array(e.length/2);for(let r=0;r<e.length;r+=2)t[r/2]=e[r],n[r/2]=e[r+1];return{real:t,imag:n}}function yn(e){const t=Math.ceil(e.length/4),n=new Float32Array(t),r=new Float32Array(t);for(let s=0;s<e.length;s+=4)n[Math.floor(s/4)]=e[s],r[Math.floor(s/4)]=e[s+1];return{real:n,imag:r}}function bn(e){const t=Math.floor(e.length/4),n=new Float32Array(t),r=new Float32Array(t);for(let s=2;s<e.length;s+=4)n[Math.floor(s/4)]=e[s],r[Math.floor(s/4)]=e[s+1];return{real:n,imag:r}}function xn(e,t){return{real:e[2*t],imag:e[2*t+1]}}function wn(e,t,n,r){e[2*r]=t,e[2*r+1]=n}function vn(e,t){const n=new Float32Array(e/2),r=new Float32Array(e/2);for(let s=0;s<Math.ceil(e/2);s++){const a=(t?2:-2)*Math.PI*(s/e);n[s]=Math.cos(a),r[s]=Math.sin(a)}return{real:n,imag:r}}function kn(e,t,n){const r=(n?2:-2)*Math.PI*(e/t);return{real:Math.cos(r),imag:Math.sin(r)}}const In="->",Nn=/->/g;function Sn(e,t){const n=((e=e.replace(/\s/g,"")).length-e.replace(Nn,"").length)/In.length;if(n<1)throw new Error("Equations without an arrow are not supported.");if(n>1)throw new Error('Equation must contain exactly one arrow ("->").');const[r,s]=e.split(In);(0,w.hu)(-1===r.indexOf("..."),(()=>'The ellipsis notation ("...") is not supported yet.'));const a=r.split(","),o=a.length;if(t!==o)throw new Error(`Expected ${o} input tensors, received ${t}`);if(o>2)throw new Error("Support for more than 2 input tensors is not implemented yet.");const i=[];for(let p=0;p<s.length;++p){const e=s[p];if(!a.some((t=>-1!==t.indexOf(e))))throw new Error(`Output subscripts contain the label ${e} not present in the input subscripts.`);-1===i.indexOf(e)&&i.push(e)}for(let p=0;p<r.length;++p){const e=r[p];-1===i.indexOf(e)&&","!==e&&i.push(e)}const u=new Array(a.length);for(let p=0;p<o;++p){if(new Set(a[p].split("")).size!==a[p].length)throw new Error(`Found duplicate axes in input component ${a[p]}. Support for duplicate axes in input is not implemented yet.`);u[p]=[];for(let e=0;e<a[p].length;++e)u[p].push(i.indexOf(a[p][e]))}const l=i.length,c=[];for(let p=s.length;p<l;++p)c.push(p);return{allDims:i,summedDims:c,idDims:u}}function Tn(e,t){let n=new Array(e);n.fill(-1);for(let s=0;s<t.length;++s)n[t[s]]=s;const r=[];for(let s=0;s<e;++s)-1===n[s]&&r.push(s);return n=n.filter((e=>-1!==e)),{permutationIndices:n,expandDims:r}}function Cn(e,t,n){const r=new Array(e);for(let s=0;s<n.length;++s){const e=n[s].shape;for(let n=0;n<t[s].length;++n)void 0===r[t[s][n]]?r[t[s][n]]=e[n]:(0,w.hu)(r[t[s][n]]===e[n],(()=>`Expected dimension ${r[t[s][n]]} at axis ${n} of input shaped ${JSON.stringify(e)}, but got dimension ${e[n]}`))}}function En(e,t){const n=e,r=[];let s=0;0===e.length&&n.push(-1),s=e.length+1;for(let o=0;o<s;++o)r.push([]);const a=[];for(let o=0;o<n.length;++o){const e=An(t,n[o]);for(const t of e)-1===a.indexOf(t)&&(r[o].push(t),a.push(t))}return{path:n,steps:r}}function $n(e){return e.every(((e,t)=>e===t))}function An(e,t){const n=[];for(let r=0;r<e.length;++r)0!==e[r].length&&-1===e[r].indexOf(t)&&-1!==t||n.push(r);return n}function Dn(e,t,n=0){let r=[];if("number"===typeof t)(0,w.hu)(e.shape[n]%t===0,(()=>"Number of splits must evenly divide the axis.")),r=new Array(t).fill(e.shape[n]/t);else{const s=t.reduce(((e,t)=>(-1===t&&(e+=1),e)),0);(0,w.hu)(s<=1,(()=>"There should be only one negative value in split array."));const a=t.indexOf(-1);if(-1!==a){const r=t.reduce(((e,t)=>t>0?e+t:e));t[a]=e.shape[n]-r}(0,w.hu)(e.shape[n]===t.reduce(((e,t)=>e+t)),(()=>"The sum of sizes must match the size of the axis dimension.")),r=t}return r}function _n(e){return`Received SparseTensor with denseShape[0] = 0 but\n  indices.shape[0] = ${e}`}function Rn(e,t){return`indices(${e}
1, 0) is invalid: ${t} < 0`}function Fn(e,t,n){return`indices(${e}, 0) is invalid: ${t} >= ${n}`}function On(e,t){return`only one output dimension may be -1, not both ${e} and ${t}`}function Mn(e,t){return`size ${e} must be non-negative, not ${t}`}function Bn(){return"reshape cannot infer the missing input size for an empty tensor unless all specified input sizes are non-zero"}function Ln(e,t){return`Input to reshape is a SparseTensor with ${(0,w.NA)(e)}\n  dense values, but the requested shape requires a multiple of ${(0,w.NA)(t)}. inputShape=${e} outputShape= ${t}`}function Wn(e,t){return`Input to reshape is a tensor with ${(0,w.NA)(e)} dense values, but the requested shape has ${(0,w.NA)(t)}. inputShape=${e} outputShape=${t}`}function Pn(){return"segment ids must be >= 0"}function Un(){return"segment ids are not increasing"}function zn(e,t){return`Segment id ${e} out of range [0, ${t}), possibly because segmentIds input is not sorted.`}function Vn(e,t,n){return`Bad: indices[${e}] == ${t} out of range [0, ${n})`}function Gn(e,t){let n,r=!1;for(e<=Qt?(n=e,r=!0):n=(0,w.jP)(e,Math.floor(Math.sqrt(e)));!r;)n>t||n===e?r=!0:n=(0,w.jP)(e,n+1);return n}function Hn(e,t,n){const r=[],s=e.length;for(let a=0;a<s;a++)a!==t?r.push(e[a]):r.push(n);return r}function jn(e,t,n,r){const s=t.shape.length,a=e.shape.length;if(0!==r&&(r<-s||r>s))throw new Error(`Expect batchDims in the range of [-${s}, ${s}], but got ${r}`);if(r<0&&(r+=s),r>a)throw new Error(`batchDims (${r}) must be less than rank(x) (\n    ${a}).`);if(n<r)throw new Error(`batchDims (${r}) must be less than or equal to axis (${n}).`);for(let p=0;p<r;++p)if(e.shape[p]!==t.shape[p])throw new Error(`x.shape[${p}]: ${e.shape[p]} should be equal to indices.shape[${p}]: ${t.shape[p]}.`);const o=e.shape[n],i=[];let u=1,l=1,c=1;for(let p=0;p<r;++p)i.push(e.shape[p]),u*=e.shape[p];for(let p=r;p<n;p++)i.push(e.shape[p]),l*=e.shape[p];for(let p=r;p<s;p++)i.push(t.shape[p]);for(let p=n+1;p<a;p++)i.push(e.shape[p]),c*=e.shape[p];return{batchSize:u,sliceSize:c,outerSize:l,dimSize:o,outputShape:i}}function Xn(e){try{return e.map((e=>(0,ct.decodeString)(e)))}catch(Zn){throw new Error(`Failed to decode encoded string bytes into utf-8, error: ${Zn}`)}}function qn(e){return e.map((e=>(0,ct.encodeString)(e)))}var Kn=n(3337),Qn=n(8333),Yn=n(8713)},9121:function(e,t,n){"use strict";n.d(t,{SYM:function(){return r},VGw:function(){return s},SpW:function(){return a},mm_:function(){return o},Xze:function(){return i},oT6:function(){return u},IKK:function(){return l},sJF:function(){return c},aJk:function(){return p},M2y:function(){return h},qw7:function(){return d},jMg:function(){return f},Oyi:function(){return m},QCc:function(){return g},JhU:function(){return y},ROF:function(){return b},_k9:function(){return x},IMb:function(){return w},XLW:function(){return v},zws:function(){return k},zvY:function(){return I},Ly9:function(){return N},eEB:function(){return S},RFZ:function(){return T},gJX:function(){return C},xnO:function(){return E},Zz9:function(){return $},yj2:function(){return A},Eh3:function(){return D},mhS:function(){return _},wUP:function(){return R},wm:function(){return F},x12:function(){return O},o2y:function(){return M},ik2:function(){return B},mc4:function(){return L},TR1:function(){return W},Byc:function(){return P},iHb:function(){return U},VcC:function(){return z},QRR:function(){return V},T0n:function(){return G},cie:function(){return H},sL$:function(){return j},y7R:function(){return X},$w:function(){return q},p4S:function(){return K},ekb:function(){return Q},Vn9:function(){return Y},oHH:function(){return Z},$g6:function(){return J},SX0:function(){return ee},HEU:function(){return te},Omj:function(){return ne},hdR:function(){return re},NEP:function(){return se},YFo:function(){return ae},Y0y:function(){return oe},vwp:function(){return ie},deh:function(){return ue},Uyb:function(){return le},OR:function(){return ce},jeX:function(){return pe},sHE:function(){return he},qi_:function(){return de},q1x:function(){return fe},iZT:function(){return me},Acj:function(){return ge},iJz:function(){return ye},Qg5:function(){return be},J_u:function(){return xe},avt:function(){return we},iWB:function(){return ve},r7n:function(){return ke},J$2:function(){return Ie},vtC:function(){return Ne},CAk:function(){return Se},e7N:function(){return Te},ZbH:function(){return Ce},kU:function(){return Ee},PYm:function(){return $e},VfG:function(){return Ae},MZg:function(){return De},qCd:function(){return _e},eZ0:function(){return Re},Hhh:function(){return Fe},YoZ:function(){return Oe},BMI:function(){return Me},mTV:function(){return Be},OV7:function(){return Le},OAf:function(){return We},OU7:function(){return Pe},vFR:function(){return Ue},q2K:function(){return ze},c17:function(){return Ve},q8u:function(){return Ge},jQs:function(){return He},Vbg:function(){return je},NZg:function(){return Xe},wYn:function(){return qe},kuV:function(){return Ke},yQU:function(){return Qe},uv1:function(){return Ye},cye:function(){return Ze},W0H:function(){return Je},qWM:function(){return et},we_:function(){return tt},QiL:function(){return nt},lyA:function(){return rt},pe_:function(){return st},o0g:function(){return at},DlI:function(){return ot},dDz:function(){return it},BiW:function(){return ut},e6w:function(){return lt},xJR:function(){return ct},$HU:function(){return pt},qkr:function(){return ht},HZH:function(){return dt},dpD:function(){return ft},Hmb:function(){return mt},_Yw:function(){return gt},zbQ:function(){return yt},SbG:function(){return bt},mKl:function(){return xt},e07:function(){return wt},bV0:function(){return vt},xQA:function(){return kt},nr8:function(){return It},PhF:function(){return Nt},oFR:function(){return St},p2w:function(){return Tt},RQH:function(){return Ct},wYB:function(){return Et},i5y:function(){return $t},a5O:function(){return At},MRv:function(){return Dt},FKq:function(){return _t},GBy:function(){return Rt},TQc:function(){return Ft},L8s:function(){return Ot},Gcp:function(){return Mt},O3z:function(){return Bt},nhH:function(){return Lt},w3H:function(){return Wt},ZjV:function(){return Pt},D2d:function(){return Ut},_tC:function(){return zt},bK0:function(){return Vt},jQk:function(){return Gt},_JP:function(){return Ht},s1s:function(){return jt},XkS:function(){return Xt},Tr8:function(){return qt},sEM:function(){return Kt},MIZ:function(){return Qt},n9L:function(){return Yt},cWu:function(){return Zt},wx7:function(){return Jt},G3Y:function(){return en},kpP:function(){return tn},ToN:function(){return nn},Qvg:function(){return rn},RuY:function(){return sn},h8e:function(){return an},eBW:function(){return on},b9H:function(){return un},usg:function(){return ln},_V0:function(){return cn},luS:function(){return pn}});const r="Abs",s="Acos",a="Acosh",o="Add",i="AddN",u="All",l="Any",c="ArgMa
1x",p="ArgMin",h="Asin",d="Asinh",f="Atan",m="Atanh",g="Atan2",y="AvgPool",b="AvgPoolGrad",x="AvgPool3D",w="AvgPool3DGrad",v="BatchMatMul",k="BatchToSpaceND",I="Bincount",N="BroadcastTo",S="BroadcastArgs",T="Cast",C="Ceil",E="ClipByValue",$="Complex",A="ComplexAbs",D="Concat",_="Conv2D",R="Conv2DBackpropFilter",F="Conv2DBackpropInput",O="Conv3D",M="Conv3DBackpropFilterV2",B="Conv3DBackpropInputV2",L="Cos",W="Cosh",P="Cumprod",U="Cumsum",z="CropAndResize",V="DenseBincount",G="DepthToSpace",H="DepthwiseConv2dNative",j="DepthwiseConv2dNativeBackpropFilter",X="DepthwiseConv2dNativeBackpropInput",q="Diag",K="Dilation2D",Q="Dilation2DBackpropInput",Y="Dilation2DBackpropFilter",Z="RealDiv",J="Einsum",ee="Elu",te="EluGrad",ne="Erf",re="Equal",se="Exp",ae="ExpandDims",oe="Expm1",ie="FFT",ue="Fill",le="FlipLeftRight",ce="Floor",pe="FloorDiv",he="FusedBatchNorm",de="GatherV2",fe="GatherNd",me="Greater",ge="GreaterEqual",ye="Identity",be="IFFT",xe="Imag",we="IsFinite",ve="IsInf",ke="IsNan",Ie="LeakyRelu",Ne="Less",Se="LessEqual",Te="LinSpace",Ce="Log",Ee="Log1p",$e="LogicalAnd",Ae="LogicalNot",De="LogicalOr",_e="LogSoftmax",Re="LRN",Fe="LRNGrad",Oe="Max",Me="Maximum",Be="MaxPool",Le="MaxPoolGrad",We="MaxPool3D",Pe="MaxPool3DGrad",Ue="MaxPoolWithArgmax",ze="Mean",Ve="Min",Ge="Minimum",He="MirrorPad",je="Mod",Xe="Multinomial",qe="Multiply",Ke="Neg",Qe="NotEqual",Ye="NonMaxSuppressionV3",Ze="NonMaxSuppressionV4",Je="NonMaxSuppressionV5",et="OnesLike",tt="OneHot",nt="Pack",rt="PadV2",st="Pow",at="Prelu",ot="Prod",it="RaggedGather",ut="RaggedTensorToTensor",lt="Range",ct="Real",pt="Reciprocal",ht="Relu",dt="Reshape",ft="ResizeNearestNeighbor",mt="ResizeNearestNeighborGrad",gt="ResizeBilinear",yt="ResizeBilinearGrad",bt="Relu6",xt="Reverse",wt="Round",vt="Rsqrt",kt="ScatterNd",It="SearchSorted",Nt="Select",St="Selu",Tt="Slice",Ct="Sin",Et="Sinh",$t="Sign",At="Sigmoid",Dt="Softplus",_t="Sqrt",Rt="Sum",Ft="SpaceToBatchND",Ot="SplitV",Mt="Softmax",Bt="SparseFillEmptyRows",Lt="SparseReshape",Wt="SparseSegmentMean",Pt="SparseSegmentSum",Ut="SparseToDense",zt="SquaredDifference",Vt="Square",Gt="StridedSlice",Ht="StringNGrams",jt="StringSplit",Xt="StringToHashBucketFast",qt="Sub",Kt="Tan",Qt="Tanh",Yt="Tile",Zt="TopK",Jt="Transform",en="Transpose",tn="Unique",nn="Unpack",rn="UnsortedSegmentSum",sn="ZerosLike",an="Step",on="FromPixels",un="RotateWithOffset",ln="_FusedMatMul",cn="FusedConv2D",pn="FusedDepthwiseConv2D"},6151:function(e,t,n){"use strict";n.d(t,{pI:function(){return u},uk:function(){return l},tr:function(){return c},wC:function(){return p},Li:function(){return h}});var r=n(2885),s=n(5938),a=n(4706);const o=(0,s.R)("kernelRegistry",(()=>new Map)),i=(0,s.R)("gradRegistry",(()=>new Map));function u(e,t){const n=d(e,t);return o.get(n)}function l(e){return i.get(e)}function c(e){const t=o.entries(),n=[];for(;;){const{done:r,value:s}=t.next();if(r)break;const[a,o]=s,[i]=a.split("_");i===e&&n.push(o)}return n}function p(e){const{kernelName:t,backendName:n}=e,r=d(t,n);o.has(r)&&a.Z(`The kernel '${t}' for backend '${n}' is already registered`),o.set(r,e)}function h(e){const{kernelName:t}=e;i.has(t)&&(0,r.OB)().getBool("DEBUG")&&a.Z(`Overriding the gradient for '${t}'`),i.set(t,e)}function d(e,t){return`${t}_${e}`}},4706:function(e,t,n){"use strict";n.d(t,{Z:function(){return s},c:function(){return a}});var r=n(2885);function s(...e){(0,r.OB)().getBool("IS_TEST")||(0,r.OB)().getBool("PROD")||console.warn(...e)}function a(...e){(0,r.OB)().getBool("IS_TEST")||(0,r.OB)().getBool("PROD")||console.log(...e)}},6235:function(e,t,n){"use strict";n.d(t,{W:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({abs_:function(e){const t=(0,a._1)(e,"x","abs");if("complex64"===t.dtype){const e={x:t};return r.BV.runKernel(s.yj2,e)}{const e={x:t};return r.BV.runKernel(s.SYM,e)}}})},7839:function(e,t,n){"use strict";n.d(t,{K:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({acos_:function(e){const t={x:(0,a._1)(e,"x","acos")};return r.BV.runKernel(s.VGw,t)}})},1470:function(e,t,n){"use strict";n.d(t,{_:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({acosh_:function(e){const t={x:(0,a._1)(e,"x","acosh")};return r.BV.runKernel(s.SpW,t)}})},6407:function(e,t,n){"use strict";n.d(t,{I:function(){return i}});var r=n(7097),s=n(9121),a=n(747),o=n(3740);const i=(0,n(2668).op)({add_:function(e,t){let n=(0,o._1)(e,"a","add"),i=(0,o._1)(t,"b","add");[n,i]=(0,a.makeTypesMatch)(n,i);const u={a:n,b:i};return r.BV.runKernel(s.mm_,u)}})},781:function(e,t,n){"use strict";n.d(t,{$:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({all_:function(e,t=null,n=!1){const o={x:(0,a._1)(e,"x","all","bool")},i={axis:t,keepDims:n};return r.BV.runKernel(s.oT6,o,i)}})},2998:function(e,t,n){"use strict";n.d(t,{Y:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({any_:function(e,t=null,n=!1){const o={x:(0,a._1)(e,"x","any","bool")},i={axis:t,keepDims:n};return r.BV.runKernel(s.IKK,o,i)}})},47:function(e,t,n){"use strict";n.d(t,{N:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({argMax_:function(e,t=0){const n={x:(0,a._1)(e,"x","argMax")},o={axis:t};return r.BV.runKernel(s.sJF,n,o)}})},7394:function(e,t,n){"use strict";n.d(t,{v:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({argMin_:function(e,t=0){const n={x:(0,a._1)(e,"x","argMin")},o={axis:t};return r.BV.runKernel(s.aJk,n,o)}})},2421:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({asin_:function(e){const t={x:(0,a._1)(e,"x","asin")};return r.BV.runKernel(s.M2y,t)}})},1891:function(e,t,n){"use strict";n.d(t,{V:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({asinh_:function(e){const t={x:(0,a._1)(e,"x","asinh")};return r.BV.runKernel(s.qw7,t)}})},7037:function(e,t,n){"use strict";n.d(t,{z:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({atan_:function(e){const t={x:(0,a._1)(e,"x","atan")};return r.BV.runKernel(s.jMg,t)}})},9812:function(e,t,n){"use strict";n.d(t,{f:function(){return i}});var r=n(7097),s=n(9121),a=n(747),o=n(3740);const i=(0,n(2668).op)({atan2_:function(e,t){let n=(0,o._1)(e,"a","atan2"),i=(0,o._1)(t,"b","atan2");[n,i]=(0,a.makeTypesMatch)(n,i);const u={a:n,b:i};return r.BV.runKernel(s.QCc,u)}})},369:function(e,t,n){"use strict";n.d(t,{C:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({atanh_:function(e){const t={x:(0,a._1)(e,"x","atanh")};return r.BV.runKernel(s.Oyi,t)}})},5176:function(e,t,n){"use strict";n.d(t,{w:function(){return p}});var r=n(7097),s=n(9121),a=n(3740),o=n(569),i=n(2271),u=n(2582),l=n(2668),c=n(4968);const p=(0,l.op)({avgPool_:function(e,t,n,l,p){const h=(0,a._1)(e,"x","avgPool","float32");o.hu(u.jT(n,1),(()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${n} and dilations '1'`));let d=h,f=!1;3===h.rank&&(f=!0,d=(0,c.X)(h,[1,h.shape[0],h.shape[1],h.shape[2]])),o.hu(4===d.rank,(()=>`Error in avgPool: x must be rank 4 but got rank ${d.rank}.`)),u.m("avgPool",l,p);const m={x:d},g={filterSize:t,strides:n,pad:l,dimRoundingMode:p};let y=r.BV.runKernel(s.JhU,m,g);return y=(0,i.p)(y,h.dtype),f?(0,c.X)(y,[y.shape[1],y.shape[2],y.shape[3]]):y}})},3591:function(e,t,n){"use strict";n.d(t,{YB:function(){return s},Vh:function(){return a},kz:function(){return o},rv:function(){return i},lB:function(){return u},Q3:function(){return l},LJ:function(){return c},sY:function(){return p}});var r=n(569);function s(e,t){for(let n=0;n<e.length;++n)if(e[e.length-n-1]!==t-1-n)return!1;return!0}function a(e,t,n){const r=e.length+t.length,s=[];let a=0,o=0;for(let i=0;i<r;i++)-1===n.indexOf(i)?s.push(e[a++]):s.push(t[o++]);return s}function o(e,t){const n=[],r=e.length;for(let s=0;s<r;s++)-1===t.indexOf(s)&&n.push(e[s]);return[n,t.map((t=>e[t]))]}function i(e,t){return a(e,t.map((e=>1)),t)}function u(e,t,n){r.hu(s(t,n),(()=>`${e}
1 supports only inner-most axes for now. Got axes ${t} and rank-${n} input.`))}function l(e,t){if(s(e,t))return null;const n=[];for(let r=0;r<t;++r)-1===e.indexOf(r)&&n.push(r);return e.forEach((e=>n.push(e))),n}function c(e){return e.map(((e,t)=>[t,e])).sort(((e,t)=>e[1]-t[1])).map((e=>e[0]))}function p(e,t){const n=[];for(let r=t-e;r<t;++r)n.push(r);return n}},8441:function(e,t,n){"use strict";n.d(t,{E:function(){return i}});var r=n(7097),s=n(9121),a=n(3740),o=n(569);const i=(0,n(2668).op)({batchToSpaceND_:function(e,t,n){const i=(0,a._1)(e,"x","batchToSpaceND"),u=t.reduce(((e,t)=>e*t));o.hu(i.rank>=1+t.length,(()=>`input rank is ${i.rank} but should be > than blockShape.length ${t.length}`)),o.hu(n.length===t.length,(()=>`crops.length is ${n.length} but should be equal to blockShape.length  ${t.length}`)),o.hu(i.shape[0]%u===0,(()=>`input tensor batch is ${i.shape[0]} but is not divisible by the product of the elements of blockShape ${t.join(" * ")} === ${u}`));const l={x:i},c={blockShape:t,crops:n};return r.BV.runKernel(s.zws,l,c)}})},7505:function(e,t,n){"use strict";n.d(t,{t:function(){return u}});var r=n(7097),s=n(9121),a=n(3740),o=n(569),i=n(4968);const u=(0,n(2668).op)({batchNorm_:function(e,t,n,u,l,c){null==c&&(c=.001);const p=(0,a._1)(e,"x","batchNorm"),h=(0,a._1)(t,"mean","batchNorm"),d=(0,a._1)(n,"variance","batchNorm");let f,m;null!=l&&(f=(0,a._1)(l,"scale","batchNorm")),null!=u&&(m=(0,a._1)(u,"offset","batchNorm")),o.hu(h.rank===d.rank,(()=>"Batch normalization gradient requires mean and variance to have equal ranks.")),o.hu(null==m||h.rank===m.rank,(()=>"Batch normalization gradient requires mean and offset to have equal ranks.")),o.hu(null==f||h.rank===f.rank,(()=>"Batch normalization gradient requires mean and scale to have equal ranks."));const g={x:function(e){let t;return t=0===e.rank||1===e.rank?(0,i.X)(e,[1,1,1,e.size]):2===e.rank?(0,i.X)(e,[1,1,e.shape[0],e.shape[1]]):3===e.rank?(0,i.X)(e,[1,e.shape[0],e.shape[1],e.shape[2]]):e,t}(p),scale:f,offset:m,mean:h,variance:d},y={varianceEpsilon:c},b=r.BV.runKernel(s.sHE,g,y);return(0,i.X)(b,p.shape)}})},8247:function(e,t,n){"use strict";n.d(t,{U:function(){return l}});var r=n(7097),s=n(9121),a=n(3740),o=n(8723),i=n(2668),u=n(4968);const l=(0,i.op)({broadcastTo_:function(e,t){let n=(0,a._1)(e,"broadcastTo","x");const i=n.shape;if(t.some((e=>!(e>0)||e%1!==0)))throw new Error(`broadcastTo(): Invalid broadcast shape [${t}].`);if(t.length<n.rank)throw new Error(`broadcastTo(): shape.length=${t.length} < input.rank=${n.rank}.`);if(t.length>n.rank){const e=n.shape.slice();for(;e.length<t.length;)e.unshift(1);n=(0,u.X)(n,e)}const l=n.shape,c=Array.from(t);for(let r=t.length-1;r>=0;r--)if(l[r]===t[r])c[r]=1;else if(1!==n.shape[r])throw new Error(`broadcastTo(): [${i}] cannot be broadcast to [${t}].`);if(0===c.map(((e,t)=>e>1?t:-1)).filter((e=>e>=0)).length)return(0,o.d)(n);const p={x:n},h={reps:c};return r.BV.runKernel(s.n9L,p,h)}})},2200:function(e,t,n){"use strict";function r(e,t){const n=e.length,r=[];for(let s=0;s<n;s++){const a=n-1-s,o=e[a]||1;(t[t.length-1-s]||1)>1&&1===o&&r.unshift(a)}return r}function s(e,t){const n=[];for(let r=0;r<t.length;r++){const s=e[e.length-r-1],a=t.length-r-1,o=t[a];(null==s||1===s&&o>1)&&n.unshift(a)}return n}function a(e,t){const n=[],r=Math.max(e.length,t.length);for(let s=0;s<r;s++){let r=e[e.length-s-1];null==r&&(r=1);let a=t[t.length-s-1];if(null==a&&(a=1),1===r)n.unshift(a);else if(1===a)n.unshift(r);else{if(r!==a){throw Error(`Operands could not be broadcast together with shapes ${e} and ${t}.`)}n.unshift(r)}}return n}n.r(t),n.d(t,{getBroadcastDims:function(){return r},getReductionAxes:function(){return s},assertAndGetBroadcastShape:function(){return a}})},2657:function(e,t,n){"use strict";n.d(t,{f:function(){return a}});var r=n(4077),s=n(569);function a(e,t="float32",n){return t=t||"float32",s.Mu(e),new r.YD(e,t,n)}},2271:function(e,t,n){"use strict";n.d(t,{p:function(){return i}});var r=n(7097),s=n(9121),a=n(3740),o=n(569);const i=(0,n(2668).op)({cast_:function(e,t){const n=(0,a._1)(e,"x","cast");if(!o.LP(t))throw new Error(`Failed to cast to unknown dtype ${t}`);if("string"===t&&"string"!==n.dtype||"string"!==t&&"string"===n.dtype)throw new Error("Only strings can be casted to strings");const i={x:n},u={dtype:t};
1return r.BV.runKernel(s.RFZ,i,u)}})},6825:function(e,t,n){"use strict";n.d(t,{m:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({ceil_:function(e){const t={x:(0,a._1)(e,"x","ceil","float32")};return r.BV.runKernel(s.gJX,t)}})},2279:function(e,t,n){"use strict";n.d(t,{i:function(){return u}});var r=n(7097),s=n(9121),a=n(3740),o=n(569),i=n(4006);const u=(0,n(2668).op)({clipByValue_:function(e,t,n){const u=(0,a._1)(e,"x","clipByValue");if(o.hu(t<=n,(()=>`Error in clip: min (${t}) must be less than or equal to max (${n}).`)),t===n)return(0,i.h)(u.shape,t,u.dtype);const l={x:u},c={clipValueMin:t,clipValueMax:n};return r.BV.runKernel(s.xnO,l,c)}})},8723:function(e,t,n){"use strict";n.d(t,{d:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({clone_:function(e){const t={x:(0,a._1)(e,"x","clone","string_or_numeric")};return r.BV.runKernel(s.iJz,t)}})},1661:function(e,t,n){"use strict";n.d(t,{P:function(){return i}});var r=n(7097),s=n(9121),a=n(3740),o=n(569);const i=(0,n(2668).op)({complex_:function(e,t){const n=(0,a._1)(e,"real","complex"),i=(0,a._1)(t,"imag","complex");o.k5(n.shape,i.shape,`real and imag shapes, ${n.shape} and ${i.shape}, must match in call to tf.complex().`);const u={real:n,imag:i};return r.BV.runKernel(s.Zz9,u)}})},6884:function(e,t,n){"use strict";n.d(t,{z:function(){return u}});var r=n(7097),s=n(9121),a=n(3740),o=n(569),i=n(8723);const u=(0,n(2668).op)({concat_:function(e,t=0){(0,o.hu)(e.length>=1,(()=>"Pass at least one tensor to concat"));const n=(0,a.sI)(e,"tensors","concat","string_or_numeric");
1if("complex64"===n[0].dtype&&n.forEach((e=>{if("complex64"!==e.dtype)throw new Error(`Cannot concatenate complex64 tensors with a tensor\n          with dtype ${e.dtype}. `)})),1===n.length)return(0,i.d)(n[0]);const u=n,l={axis:t};return r.BV.runKernel(s.Eh3,u,l)}})},1355:function(e,t,n){"use strict";n.d(t,{P:function(){return l}});var r=n(3740),s=n(569),a=n(4794),o=n(2582),i=n(2668),u=n(4968);const l=(0,i.op)({conv1d_:function(e,t,n,i,l="NWC",c=1,p){const h=(0,r._1)(e,"x","conv1d"),d=(0,r._1)(t,"filter","conv1d");let f=h,m=!1;2===h.rank&&(m=!0,f=(0,u.X)(h,[1,h.shape[0],h.shape[1]])),s.hu(3===f.rank,(()=>`Error in conv1d: input must be rank 3, but got rank ${f.rank}.`)),s.hu(3===d.rank,(()=>`Error in conv1d: filter must be rank 3, but got rank ${d.rank}.`)),o.m("conv1d",i,p),s.hu(f.shape[2]===d.shape[1],(()=>`Error in conv1d: depth of input (${f.shape[2]}) must match input depth for filter ${d.shape[1]}.`)),s.hu(o.jT(n,c),(()=>`Error in conv1D: Either stride or dilation must be 1. Got stride ${n} and dilation '${c}'`)),s.hu("NWC"===l,(()=>`Error in conv1d: got dataFormat of ${l} but only NWC is currently supported.`));const g=(0,u.X)(d,[1,d.shape[0],d.shape[1],d.shape[2]]),y=(0,u.X)(f,[f.shape[0],1,f.shape[1],f.shape[2]]),b=[1,n],x=[1,c],w=(0,a.T)(y,g,b,i,"NHWC",x,p);return m?(0,u.X)(w,[w.shape[2],w.shape[3]]):(0,u.X)(w,[w.shape[0],w.shape[2],w.shape[3]])}})},4794:function(e,t,n){"use strict";n.d(t,{T:function(){return c}});var r=n(7097),s=n(9121),a=n(3740),o=n(569),i=n(2582),u=n(2668),l=n(4968);const c=(0,u.op)({conv2d_:function(e,t,n,u,c="NHWC",p=[1,1],h){const d=(0,a._1)(e,"x","conv2d","float32"),f=(0,a._1)(t,"filter","conv2d","float32");let m=d,g=!1;3===d.rank&&(g=!0,m=(0,l.X)(d,[1,d.shape[0],d.shape[1],d.shape[2]])),o.hu(4===m.rank,(()=>`Error in conv2d: input must be rank 4, but got rank ${m.rank}.`)),o.hu(4===f.rank,(()=>`Error in conv2d: filter must be rank 4, but got rank ${f.rank}.`)),i.m("conv2d",u,h);const y="NHWC"===c?m.shape[3]:m.shape[1];o.hu(y===f.shape[2],(()=>`Error in conv2d: depth of input (${y}) must match input depth for filter ${f.shape[2]}.`)),o.hu(i.jT(n,p),(()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${n} and dilations '${p}'`));const b={x:m,filter:f},x={strides:n,pad:u,dataFormat:c,dilations:p,dimRoundingMode:h},w=r.BV.runKernel(s.mhS,b,x);return g?(0,l.X)(w,[w.shape[1],w.shape[2],w.shape[3]]):w}})},6013:function(e,t,n){"use strict";n.d(t,{p:function(){return l}});var r=n(7097),s=n(9121),a=n(569),o=n(2582),i=n(2668),u=n(4968);const l=(0,i.op)({conv2DBackpropFilter_:function(e,t,n,i,l,c="NHWC",p){let h=e;3===e.rank&&(h=(0,u.X)(e,[1,e.shape[0],e.shape[1],e.shape[2]]));let d=t;3===d.rank&&(d=(0,u.X)(t,[1,t.shape[0],t.shape[1],t.shape[2]])),a.hu(4===h.rank,(()=>`Error in conv2dDerFilter: input must be rank 4, but got shape ${h.shape}.`)),a.hu(4===d.rank,(()=>`Error in conv2dDerFilter: dy must be rank 4, but got shape ${d.shape}.`)),a.hu(4===n.length,(()=>`Error in conv2dDerFilter: filterShape must be length 4, but got ${n}.`));const f="NHWC"===c?h.shape[3]:h.shape[1],m="NHWC"===c?d.shape[3]:d.shape[1];a.hu(f===n[2],(()=>`Error in conv2dDerFilter: depth of input ${f}) must match input depth in filter (${n[2]}.`)),a.hu(m===n[3],(()=>`Error in conv2dDerFilter: depth of dy (${m}) must match output depth for filter (${n[3]}).`)),o.m("conv2dDerFilter",l,p);const g={x:h,dy:d},y={strides:i,pad:l,dataFormat:c,dimRoundingMode:p,filterShape:n};return r.BV.runKernel(s.wUP,g,y)}})},9832:function(e,t,n){"use strict";n.d(t,{_:function(){return l}});var r=n(7097),s=n(9121),a=n(569),o=n(2582),i=n(2668),u=n(4968);const l=(0,i.op)({conv2DBackpropInput_:function(e,t,n,i,l,c="NHWC",p){a.hu(e.length===t.rank,(()=>`Length of inShape (${e.length}) and rank of dy (${t.rank}) must match`));let h=e,d=t,f=!1;3===t.rank&&(f=!0,d=(0,u.X)(t,[1,t.shape[0],t.shape[1],t.shape[2]]),h=[1,e[0],e[1],e[2]]),a.hu(4===h.length,(()=>`Error in conv2dDerInput: inShape must be length 4, but got length ${h.length}.`)),a.hu(4===d.rank,(()=>`Error in conv2dDerInput: dy must be rank 4, but got rank ${d.rank}`)),a.hu(4===n.rank,(()=>
1`Error in conv2dDerInput: filter must be rank 4, but got rank ${n.rank}`));const m="NHWC"===c?h[3]:h[1],g="NHWC"===c?d.shape[3]:d.shape[1];a.hu(m===n.shape[2],(()=>`Error in conv2dDerInput: depth of input (${m}) must match input depth for filter ${n.shape[2]}.`)),a.hu(g===n.shape[3],(()=>`Error in conv2dDerInput: depth of output (${g}) must match output depth for filter ${n.shape[3]}.`)),o.m("conv2dDerInput",l,p);const y={dy:d,filter:n},b={strides:i,pad:l,dataFormat:c,dimRoundingMode:p,inputShape:h},x=r.BV.runKernel(s.wm,y,b);return f?(0,u.X)(x,[x.shape[1],x.shape[2],x.shape[3]]):x}})},1405:function(e,t,n){"use strict";n.d(t,{b:function(){return a}});var r=n(3740),s=n(9832);const a=(0,n(2668).op)({conv2dTranspose_:function(e,t,n,a,o,i){const u=(0,r._1)(e,"x","conv2dTranspose"),l=(0,r._1)(t,"filter","conv2dTranspose");return(0,s._)(n,u,l,a,o,"NHWC",i)}})},7594:function(e,t,n){"use strict";n.d(t,{_:function(){return u}});var r=n(7097),s=n(9121),a=n(569),o=n(2668),i=n(4968);const u=(0,o.op)({conv3DBackpropInput_:function(e,t,n,o,u){a.hu(e.length===t.rank,(()=>`Length of inShape (${e.length}) and rank of dy (${t.rank}) must match`));let l=e,c=t,p=!1;4===t.rank&&(p=!0,c=(0,i.X)(t,[1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]]),l=[1,e[0],e[1],e[2],e[3]]);const h=l[4],d=c.shape[4];a.hu(5===l.length,(()=>`Error in conv3dDerInput: inShape must be length 5, but got length ${l.length}.`)),a.hu(5===c.rank,(()=>`Error in conv3dDerInput: dy must be rank 5, but got rank ${c.rank}`)),a.hu(5===n.rank,(()=>`Error in conv3dDerInput: filter must be rank 5, but got rank ${n.rank}`)),a.hu(h===n.shape[3],(()=>`Error in conv3dDerInput: depth of input (${h}) must match input depth for filter ${n.shape[3]}.`)),a.hu(d===n.shape[4],(()=>`Error in conv3dDerInput: depth of output (${d}) must match output depth for filter ${n.shape[4]}.`));const f={dy:c,filter:n},m={pad:u,strides:o,inputShape:l},g=r.BV.runKernel(s.ik2,f,m);return p?(0,i.X)(g,[g.shape[1],g.shape[2],g.shape[3],g.shape[4]]):g}})},2582:function(e,t,n){"use strict";n.d(t,{Rf:function(){return s},Xw:function(){return a},pl:function(){return o},Ix:function(){return i},jw:function(){return u},aO:function(){return l},I0:function(){return f},jT:function(){return m},sl:function(){return g},m:function(){return y}});var r=n(569);function s(e,t,n,r,s="NHWC",a){return i(e,[...t,e[3]],n,a,r,null,null,g(s))}function a(e,t,n,r,s,a,o="channelsLast"){const[u,l]=c(t);let p;if("channelsLast"===o)p=[u,l,e[3],e[3]];else{if("channelsFirst"!==o)throw new Error(`Unknown dataFormat ${o}`);p=[u,l,e[1],e[1]]}return i(e,p,n,r,s,a,!1,o)}function o(e,t,n,r,s,a,o="NDHWC"){const[i,l,c]=p(t);let h,d;if("NDHWC"===o)d="channelsLast",h=[i,l,c,e[4],e[4]];else{if("NCDHW"!==o)throw new Error(`Unknown dataFormat ${o}`);d="channelsFirst",h=[i,l,c,e[1],e[1]]}return u(e,h,n,r,s,!1,d,a)}function i(e,t,n,r,s,a,o=!1,i="channelsLast"){let[u,p,f,m]=[-1,-1,-1,-1];if("channelsLast"===i)[u,p,f,m]=e;else{if("channelsFirst"!==i)throw new Error(`Unknown dataFormat ${i}`);[u,m,p,f]=e}const[g,y,,b]=t,[x,w]=c(n),[v,k]=c(r),I=h(g,v),N=h(y,k),{padInfo:S,outHeight:T,outWidth:C}=function(e,t,n,r,s,a,o,i,u){let c,p,h;if("number"===typeof e){c={top:e,bottom:e,left:e,right:e,type:0===e?"VALID":"NUMBER"};const s=function(e,t,n,r,s){null==r&&(r=l(e,t,n));const a=e[0],o=e[1],i=d((a-t+2*r)/n+1,s),u=d((o-t+2*r)/n+1,s);return[i,u]}([t,n],a,r,e,i);p=s[0],h=s[1]}else if("same"===e){p=Math.ceil(t/r),h=Math.ceil(n/s);const e=Math.max(0,(p-1)*r+a-t),i=Math.max(0,(h-1)*s+o-n),u=Math.floor(e/2),l=e-u,d=Math.floor(i/2);c={top:u,bottom:l,left:d,right:i-d,type:"SAME"}}else if("valid"===e)c={top:0,bottom:0,left:0,right:0,type:"VALID"},p=Math.ceil((t-a+1)/r),h=Math.ceil((n-o+1)/s);else{if("object"!==typeof e)throw Error(`Unknown padding parameter: ${e}`);{const l="channelsLast"===u?e[1][0]:e[2][0],f="channelsLast"===u?e[1][1]:e[2][1],m="channelsLast"===u?e[2][0]:e[3][0],g="channelsLast"===u?e[2][1]:e[3][1];c={top:l,bottom:f,left:m,right:g,type:0===l&&0===f&&0===m&&0===g?"VALID":"EXPLICIT"},p=d((t-a+l+f)/r+1,i),h=d((n-o+m+g)/s+1,i)}}return{padInfo:c,outHeight:p,outWidth:h}}(s,p,f,x,w,I,N,a,i),E=o?b*m:b;let $;return"channelsFirst"===i?$=[u,E,T,C]:"channelsLast"===i&&($=[u,T,C,E]),{batchSize:u,dataFormat:i,inHeight:p,inWidth:f,inChannels:m,outHeight:T,outWidth:C,outChannels:E,padInfo:S,strideHeight:x,strideWidth:w,filterHeight:g,filterWidth:y,effectiveFilterHeight:I,effectiveFilterWidth:N,dilationHeight:v,dilationWidth:k,inShape:e,outShape:$,filterShape:t}}function u(e,t,n,r,s,a=!1,o="channelsLast",i){let[u,c,f,m,g]=[-1,-1,-1,-1,-1];if("channelsLast"===o)[u,c,f,m,g]=e;else{if("channelsFirst"!==o)throw new Error(`Unknown dataFormat ${o}`);[u,g,c,f,m]=e}
1const[y,b,x,,w]=t,[v,k,I]=p(n),[N,S,T]=p(r),C=h(y,N),E=h(b,S),$=h(x,T),{padInfo:A,outDepth:D,outHeight:_,outWidth:R}=function(e,t,n,r,s,a,o,i,u,c,p){let h,f,m,g;if("number"===typeof e){h={top:e,bottom:e,left:e,right:e,front:e,back:e,type:0===e?"VALID":"NUMBER"};const a=function(e,t,n,r,s,a){null==s&&(s=l(e,t,r));const o=e[0],i=e[1],u=e[2],c=d((o-t+2*s)/r+1,a),p=d((i-t+2*s)/r+1,a),h=d((u-t+2*s)/r+1,a);return[c,p,h,n]}([t,n,r,1],i,1,s,e,p);f=a[0],m=a[1],g=a[2]}else if("same"===e){f=Math.ceil(t/s),m=Math.ceil(n/a),g=Math.ceil(r/o);const e=(f-1)*s+i-t,l=(m-1)*a+u-n,p=(g-1)*o+c-r,d=Math.floor(e/2),y=e-d,b=Math.floor(l/2),x=l-b,w=Math.floor(p/2);h={top:b,bottom:x,left:w,right:p-w,front:d,back:y,type:"SAME"}}else{if("valid"!==e)throw Error(`Unknown padding parameter: ${e}`);h={top:0,bottom:0,left:0,right:0,front:0,back:0,type:"VALID"},f=Math.ceil((t-i+1)/s),m=Math.ceil((n-u+1)/a),g=Math.ceil((r-c+1)/o)}return{padInfo:h,outDepth:f,outHeight:m,outWidth:g}}(s,c,f,m,v,k,I,C,E,$,i),F=a?w*g:w;let O;return"channelsFirst"===o?O=[u,F,D,_,R]:"channelsLast"===o&&(O=[u,D,_,R,F]),{batchSize:u,dataFormat:o,inDepth:c,inHeight:f,inWidth:m,inChannels:g,outDepth:D,outHeight:_,outWidth:R,outChannels:F,padInfo:A,strideDepth:v,strideHeight:k,strideWidth:I,filterDepth:y,filterHeight:b,filterWidth:x,effectiveFilterDepth:C,effectiveFilterHeight:E,effectiveFilterWidth:$,dilationDepth:N,dilationHeight:S,dilationWidth:T,inShape:e,outShape:O,filterShape:t}}function l(e,t,n,r=1){const s=h(t,r);return Math.floor((e[0]*(n-1)-n+s)/2)}function c(e){return"number"===typeof e?[e,e,e]:2===e.length?[e[0],e[1],1]:e}function p(e){return"number"===typeof e?[e,e,e]:e}function h(e,t){return t<=1?e:e+(e-1)*(t-1)}function d(e,t){if(!t)return Math.trunc(e);switch(t){case"round":return Math.round(e);case"ceil":return Math.ceil(e);case"floor":return Math.floor(e);default:throw new Error(`Unknown roundingMode ${t}`)}}function f(e){const[t,n,r]=c(e);return 1===t&&1===n&&1===r}function m(e,t){return f(e)||f(t)}function g(e){if("NHWC"===e)return"channelsLast";if("NCHW"===e)return"channelsFirst";throw new Error(`Unknown dataFormat ${e}`)}function y(e,t,n){if(null!=n){if("string"===typeof t)throw Error(`Error in ${e}: pad must be an integer when using dimRoundingMode ${n} but got pad ${t}.`);if("number"===typeof t)r.hu(r.GN(t),(()=>`Error in ${e}: pad must be an integer when using dimRoundingMode ${n} but got pad ${t}.`));else{if("object"!==typeof t)throw Error(`Error in ${e}: Unknown padding parameter: ${t}`);t.forEach((t=>{t.forEach((t=>{r.hu(r.GN(t),(()=>`Error in ${e}: pad must be an integer when using dimRoundingMode ${n} but got pad ${t}.`))}))}))}}}},173:function(e,t,n){"use strict";n.d(t,{m:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({cos_:function(e){const t={x:(0,a._1)(e,"x","cos","float32")};return r.BV.runKernel(s.mc4,t)}})},2699:function(e,t,n){"use strict";n.d(t,{f:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({cosh_:function(e){const t={x:(0,a._1)(e,"x","cosh","float32")};return r.BV.runKernel(s.TR1,t)}})},9640:function(e,t,n){"use strict";n.d(t,{$:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({cumprod_:function(e,t=0,n=!1,o=!1){const i={x:(0,a._1)(e,"x","cumprod")},u={axis:t,exclusive:n,reverse:o};return r.BV.runKernel(s.Byc,i,u)}})},7405:function(e,t,n){"use strict";n.d(t,{z:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({cumsum_:function(e,t=0,n=!1,o=!1){const i={x:(0,a._1)(e,"x","cumsum")},u={axis:t,exclusive:n,reverse:o};return r.BV.runKernel(s.iHb,i,u)}})},9112:function(e,t,n){"use strict";n.d(t,{n:function(){return i}});var r=n(7097),s=n(9121),a=n(3740),o=n(569);const i=(0,n(2668).op)({depthToSpace_:function(e,t,n="NHWC"){const i=(0,a._1)(e,"x","depthToSpace","float32"),u="NHWC"===n?i.shape[1]:i.shape[2],l="NHWC"===n?i.shape[2]:i.shape[3],c="NHWC"===n?i.shape[3]:i.shape[1];o.hu(t>1,(()=>`blockSize should be > 1 for depthToSpace, but was: ${t}`)),o.hu(u*t>=0,(()=>`Negative dimension size caused by overflow when multiplying\n    ${u} and ${t}  for depthToSpace with input shape\n    ${i.shape}`)),o.hu(l*t>=0,(()=>
1`Negative dimension size caused by overflow when multiplying\n    ${l} and ${t} for depthToSpace with input shape\n        ${i.shape}`)),o.hu(c%(t*t)===0,(()=>`Dimension size must be evenly divisible by ${t*t} but is ${c} for depthToSpace with input shape ${i.shape}`));const p={x:i},h={blockSize:t,dataFormat:n};return r.BV.runKernel(s.T0n,p,h)}})},4718:function(e,t,n){"use strict";n.d(t,{B:function(){return c}});var r=n(7097),s=n(9121),a=n(3740),o=n(569),i=n(2582),u=n(2668),l=n(4968);const c=(0,u.op)({depthwiseConv2d_:function(e,t,n,u,c="NHWC",p=[1,1],h){const d=(0,a._1)(e,"x","depthwiseConv2d","float32"),f=(0,a._1)(t,"filter","depthwiseConv2d","float32");let m=d,g=!1;3===d.rank&&(g=!0,m=(0,l.X)(d,[1,d.shape[0],d.shape[1],d.shape[2]])),o.hu(4===m.rank,(()=>`Error in depthwiseConv2d: input must be rank 4, but got rank ${m.rank}.`)),o.hu(4===f.rank,(()=>`Error in depthwiseConv2d: filter must be rank 4, but got rank ${f.rank}.`));const y="NHWC"===c?m.shape[3]:m.shape[1];o.hu(y===f.shape[2],(()=>`Error in depthwiseConv2d: number of input channels (${y}) must match the inChannels dimension in filter ${f.shape[2]}.`)),i.m("depthwiseConv2d",u,h);const b={x:m,filter:f},x={strides:n,pad:u,dataFormat:c,dilations:p,dimRoundingMode:h},w=r.BV.runKernel(s.cie,b,x);return g?(0,l.X)(w,[w.shape[1],w.shape[2],w.shape[3]]):w}})},8098:function(e,t,n){"use strict";n.d(t,{z:function(){return i}});var r=n(7097),s=n(9121),a=n(2668),o=n(4968);const i=(0,a.op)({depthwiseConv2dNativeBackpropFilter_:function(e,t,n,a,i,u=[1,1],l){let c=e;3===e.rank&&(c=(0,o.X)(e,[1,e.shape[0],e.shape[1],e.shape[2]]));let p=t;3===p.rank&&(p=(0,o.X)(t,[1,t.shape[0],t.shape[1],t.shape[2]]));const h={x:c,dy:p},d={strides:a,pad:i,dimRoundingMode:l,dilations:u,filterShape:n};return r.BV.runKernel(s.sL$,h,d)}})},4375:function(e,t,n){"use strict";n.d(t,{v:function(){return i}});var r=n(7097),s=n(9121),a=n(2668),o=n(4968);const i=(0,a.op)({depthwiseConv2dNativeBackpropInput_:function(e,t,n,a,i,u=[1,1],l){let c=t,p=!1;3===t.rank&&(p=!0,c=(0,o.X)(t,[1,t.shape[0],t.shape[1],t.shape[2]]));const h={dy:c,filter:n},d={strides:a,pad:i,dimRoundingMode:l,dilations:u,inputShape:e},f=r.BV.runKernel(s.y7R,h,d);return p?(0,o.X)(f,[f.shape[1],f.shape[2],f.shape[3]]):f}})},557:function(e,t,n){"use strict";n.d(t,{W:function(){return l}});var r=n(7097),s=n(9121),a=n(3740),o=n(569),i=n(2668),u=n(4968);const l=(0,i.op)({dilation2d_:function(e,t,n,i,l=[1,1],c="NHWC"){const p=(0,a._1)(e,"x","dilation2d"),h=(0,a._1)(t,"filter","dilation2d");o.hu(3===p.rank||4===p.rank,(()=>`Error in dilation2d: input must be rank 3 or 4, but got rank ${p.rank}.`)),o.hu(3===h.rank,(()=>`Error in dilation2d: filter must be rank 3, but got rank ${h.rank}.`)),o.hu("NHWC"===c,(()=>`Error in dilation2d: Only NHWC is currently supported, but got dataFormat of ${c}`));let d=p,f=!1;3===p.rank&&(d=(0,u.X)(p,[1,p.shape[0],p.shape[1],p.shape[2]]),f=!0);const m={x:d,filter:h},g={strides:n,pad:i,dilations:l},y=r.BV.runKernel(s.p4S,m,g);return f?(0,u.X)(y,[y.shape[1],y.shape[2],y.shape[3]]):y}})},1274:function(e,t,n){"use strict";n.d(t,{h:function(){return u}});var r=n(7097),s=n(9121),a=n(747),o=n(3740),i=n(9165);const u=(0,n(2668).op)({div_:function(e,t){let n=(0,o._1)(e,"a","div"),u=(0,o._1)(t,"b","div");if([n,u]=(0,a.makeTypesMatch)(n,u),"int32"===n.dtype&&"int32"===u.dtype)return(0,i.q)(n,u);const l={a:n,b:u};return r.BV.runKernel(s.oHH,l,{})}})},9322:function(e,t,n){"use strict";n.d(t,{N:function(){return c}});var r=n(747),s=n(3740),a=n(1274),o=n(6477),i=n(2668),u=n(5912),l=n(6577);const c=(0,i.op)({divNoNan_:function(e,t){let n=(0,s._1)(e,"a","div"),i=(0,s._1)(t,"b","div");[n,i]=(0,r.makeTypesMatch)(n,i);const c=(0,a.h)(n,i),p=(0,l.P)(c),h=(0,o.D)(i,p);return(0,u.a)(h,p,c)}})},548:function(e,t,n){"use strict";n.d(t,{A:function(){return u}});var r=n(3740),s=n(569),a=n(8687),o=n(2668),i=n(4968);const u=(0,o.op)({dot_:function(e,t){const n=(0,r._1)(e,"t1","dot"),o=(0,r._1)(t,"t2","dot");s.hu((1===n.rank||2===n.rank)&&(1===o.rank||2===o.rank),(()=>`Error in dot: inputs must all be rank 1 or 2, but got ranks ${n.rank} and ${o.rank}.`));const u=1===n.rank?n.size:n.shape[1],l=1===o.rank?o.size:o.shape[0];if(s.hu(u===l,(()=>`Error in dot: inner dimensions of inputs must match, but got ${u} and ${l}.`)),1===n.rank&&1===o.rank){const e=(0,i.X)(n,[1,-1]),t=(0,i.X)(o,[-1,1]),r=(0,a.O)(e,t);return(0,i.X)(r,[])}if(1===n.rank&&2===o.rank){const e=(0,i.X)(n,[1,-1]),t=(0,i.X)(o,[o.shape[0],o.shape[1]]),r=(0,a.O)(e,t);return(0,i.X)(r,[r.size])}if(2===n.rank&&1===o.rank){const e=(0,i.X)(o,[-1,1]),t=(0,a.O)(n,e);return(0,i.X)(t,[t.size])}{const e=(0,i.X)(o,[o.shape[0],o.shape[1]]);return(0,a.O)(n,e)}}})},3233:function(e,t,n){"use strict";n.d(t,{p:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({elu_:function(e){const t={x:(0,a._1)(e,"x","elu","float32")};return r.BV.runKernel(s.SX0,t)}})}
1,6477:function(e,t,n){"use strict";n.d(t,{D:function(){return u}});var r=n(7097),s=n(9121),a=n(747),o=n(3740),i=n(2200);const u=(0,n(2668).op)({equal_:function(e,t){let n=(0,o._1)(e,"a","equal","string_or_numeric"),u=(0,o._1)(t,"b","equal","string_or_numeric");[n,u]=(0,a.makeTypesMatch)(n,u),(0,i.assertAndGetBroadcastShape)(n.shape,u.shape);const l={a:n,b:u};return r.BV.runKernel(s.hdR,l)}})},4650:function(e,t,n){"use strict";n.d(t,{q:function(){return u}});var r=n(7097),s=n(9121),a=n(3740),o=n(569),i=n(2271);const u=(0,n(2668).op)({erf_:function(e){let t=(0,a._1)(e,"x","erf");o.hu("int32"===t.dtype||"float32"===t.dtype,(()=>"Input dtype must be `int32` or `float32`.")),"int32"===t.dtype&&(t=(0,i.p)(t,"float32"));const n={x:t};return r.BV.runKernel(s.Omj,n)}})},1954:function(e,t,n){"use strict";n.d(t,{d:function(){return s}});var r=n(3561);const s=(0,n(2668).op)({euclideanNorm_:function(e,t=null,n=!1){return(0,r.K)(e,"euclidean",t,n)}})},4842:function(e,t,n){"use strict";n.d(t,{Q:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({exp_:function(e){const t={x:(0,a._1)(e,"x","exp")};return r.BV.runKernel(s.NEP,t)}})},1300:function(e,t,n){"use strict";n.d(t,{d:function(){return i}});var r=n(7097),s=n(9121),a=n(3740),o=n(569);const i=(0,n(2668).op)({expandDims_:function(e,t=0){const n=(0,a._1)(e,"x","expandDims","string_or_numeric");o.hu(t<=n.rank,(()=>"Axis must be <= rank of the tensor"));const i={input:n},u={dim:t};return r.BV.runKernel(s.YFo,i,u)}})},3426:function(e,t,n){"use strict";n.d(t,{t:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({expm1_:function(e){const t={x:(0,a._1)(e,"x","expm1")};return r.BV.runKernel(s.Y0y,t)}})},4006:function(e,t,n){"use strict";n.d(t,{h:function(){return a}});var r=n(7097),s=n(9121);function a(e,t,n){const a={shape:e,value:t,dtype:n};return r.BV.runKernel(s.deh,{},a)}},6943:function(e,t,n){"use strict";n.d(t,{G:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({floor_:function(e){const t={x:(0,a._1)(e,"x","floor","float32")};return r.BV.runKernel(s.OR,t)}})},9165:function(e,t,n){"use strict";n.d(t,{q:function(){return i}});var r=n(7097),s=n(9121),a=n(747),o=n(3740);const i=(0,n(2668).op)({floorDiv_:function(e,t){let n=(0,o._1)(e,"a","floorDiv"),i=(0,o._1)(t,"b","floorDiv");[n,i]=(0,a.makeTypesMatch)(n,i);const u={a:n,b:i};return r.BV.runKernel(s.jeX,u)}})},9323:function(e,t,n){"use strict";n.d(t,{Fr:function(){return f},pf:function(){return m},QH:function(){return g},uy:function(){return y}});var r=n(2200),s=n(3233),a=n(9133),o=n(4841),i=n(8151),u=n(7409),l=n(3582),c=n(4968),p=n(625),h=n(1901),d=n(2683);function f(e,t,n){if(null==n||"linear"===n)return e;if("relu"===n)return(0,o.d)(e,(0,h.N)(t));throw new Error(`Cannot compute gradient for fused activation ${n}.`)}function m(e,t){let n=t;const s=r.getReductionAxes(e.shape,t.shape);return s.length>0&&(n=(0,d.S)(n,s)),(0,c.X)(n,e.shape)}function g(e,t,n,r){if("linear"===t)return e;if("relu"===t)return(0,u.U)(e);if("elu"===t)return(0,s.p)(e);if("relu6"===t)return(0,l.b)(e);if("prelu"===t)return(0,i.A)(e,n);if("leakyrelu"===t)return(0,a.h)(e,r);if("sigmoid"===t)return(0,p.X)(e);throw new Error(`Unknown fused activation ${t}.`)}const y=(e,t)=>!(e>0)||"linear"===t},4926:function(e,t,n){"use strict";n.d(t,{I:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({gather_:function(e,t,n=0,o=0){const i={x:(0,a._1)(e,"x","gather"),indices:(0,a._1)(t,"indices","gather","int32")},u={axis:n,batchDims:o};return r.BV.runKernel(s.qi_,i,u)}})},636:function(e,t,n){"use strict";n.d(t,{p:function(){return u}});var r=n(7097),s=n(9121),a=n(747),o=n(3740),i=n(2200);const u=(0,n(2668).op)({greater_:function(e,t){let n=(0,o._1)(e,"a","greater","string_or_numeric"),u=(0,o._1)(t,"b","greater","string_or_numeric");[n,u]=(0,a.makeTypesMatch)(n,u),(0,i.assertAndGetBroadcastShape)(n.shape,u.shape);const l={a:n,b:u};return r.BV.runKernel(s.iZT,l)}})},7630:function(e,t,n){"use strict";n.d(t,{b:function(){return u}});var r=n(7097),s=n(9121),a=n(747),o=n(3740),i=n(2200);const u=(0,n(2668).op)({greaterEqual_:function(e,t){let n=(0,o._1)(e,"a","greaterEqual","string_or_numeric"),u=(0,o._1)(t,"b","greaterEqual","string_or_numeric");[n,u]=(0,a.makeTypesMatch)(n,u),(0,i.assertAndGetBroadcastShape)(n.shape,u.shape);const l={a:n,b:u};return r.BV.runKernel(s.Acj,l)}})},4386:function(e,t,n){"use strict";n.d(t,{a:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({imag_:function(e){const t={input:(0,a._1)(e,"input","imag")};return r.BV.runKernel(s.J_u,t)}})},3305:function(e,t,n){"use strict";n.d(t,{I:function(){return l}});var r=n(7097),s=n(9121),a=n(3740),o=n(569),i=n(2668),u=n(4968);const l=(0,i.op)({resizeBilinear_:function(e,t,n=!1,i=!1){const l=(0,a._1)(e,"images","resizeBilinear");o.hu(3===l.rank||4===l.rank,(()=>`Error in resizeBilinear: x must be rank 3 or 4, but got rank ${l.rank}.`)),o.hu(2===t.length,(()=>`Error in resizeBilinear: new shape must 2D, but got shape ${t}.`)),o.hu(!1===i||!1===n,(()=>"Error in resizeBilinear: If halfPixelCenters is true, alignCorners must be false."));let c=l,p=!1;3===l.rank&&(p=!0,c=(0,u.X)(l,[1,l.shape[0],l.shape[1],l.shape[2]]));const[]=t,h={images:c}
1,d={alignCorners:n,halfPixelCenters:i,size:t},f=r.BV.runKernel(s._Yw,h,d);return p?(0,u.X)(f,[f.shape[1],f.shape[2],f.shape[3]]):f}})},5098:function(e,t,n){"use strict";n.d(t,{j:function(){return l}});var r=n(7097),s=n(9121),a=n(3740),o=n(569),i=n(2668),u=n(4968);const l=(0,i.op)({resizeNearestNeighbor_:function(e,t,n=!1,i=!1){const l=(0,a._1)(e,"images","resizeNearestNeighbor");o.hu(3===l.rank||4===l.rank,(()=>`Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank ${l.rank}.`)),o.hu(2===t.length,(()=>`Error in resizeNearestNeighbor: new shape must 2D, but got shape ${t}.`)),o.hu("float32"===l.dtype||"int32"===l.dtype,(()=>"`images` must have `int32` or `float32` as dtype")),o.hu(!1===i||!1===n,(()=>"Error in resizeNearestNeighbor: If halfPixelCenters is true, alignCorners must be false."));let c=l,p=!1;3===l.rank&&(p=!0,c=(0,u.X)(l,[1,l.shape[0],l.shape[1],l.shape[2]]));const[]=t,h={images:c},d={alignCorners:n,halfPixelCenters:i,size:t},f=r.BV.runKernel(s.dpD,h,d);return p?(0,u.X)(f,[f.shape[1],f.shape[2],f.shape[3]]):f}})},3963:function(e,t,n){"use strict";n.d(t,{x:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({isFinite_:function(e){const t={x:(0,a._1)(e,"x","isFinite")};return r.BV.runKernel(s.avt,t)}})},5853:function(e,t,n){"use strict";n.d(t,{U:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({isInf_:function(e){const t={x:(0,a._1)(e,"x","isInf")};return r.BV.runKernel(s.iWB,t)}})},6230:function(e,t,n){"use strict";n.d(t,{i:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({isNaN_:function(e){const t={x:(0,a._1)(e,"x","isNaN")};return r.BV.runKernel(s.r7n,t)}})},9133:function(e,t,n){"use strict";n.d(t,{h:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({leakyRelu_:function(e,t=.2){const n={x:(0,a._1)(e,"x","leakyRelu")},o={alpha:t};return r.BV.runKernel(s.J$2,n,o)}})},6573:function(e,t,n){"use strict";n.d(t,{d:function(){return u}});var r=n(7097),s=n(9121),a=n(747),o=n(3740),i=n(2200);const u=(0,n(2668).op)({less_:function(e,t){let n=(0,o._1)(e,"a","less","string_or_numeric"),u=(0,o._1)(t,"b","less","string_or_numeric");[n,u]=(0,a.makeTypesMatch)(n,u),(0,i.assertAndGetBroadcastShape)(n.shape,u.shape);const l={a:n,b:u};return r.BV.runKernel(s.vtC,l)}})}
1,624:function(e,t,n){"use strict";n.d(t,{z:function(){return u}});var r=n(7097),s=n(9121),a=n(747),o=n(3740),i=n(2200);const u=(0,n(2668).op)({lessEqual_:function(e,t){let n=(0,o._1)(e,"a","lessEqual","string_or_numeric"),u=(0,o._1)(t,"b","lessEqual","string_or_numeric");[n,u]=(0,a.makeTypesMatch)(n,u),(0,i.assertAndGetBroadcastShape)(n.shape,u.shape);const l={a:n,b:u};return r.BV.runKernel(s.CAk,l)}})},9648:function(e,t,n){"use strict";n.d(t,{G:function(){return l}});var r=n(7097),s=n(9121),a=n(3740),o=n(569),i=n(2668),u=n(4968);const l=(0,i.op)({localResponseNormalization_:function(e,t=5,n=1,i=1,l=.5){const c=(0,a._1)(e,"x","localResponseNormalization");o.hu(4===c.rank||3===c.rank,(()=>`Error in localResponseNormalization: x must be rank 3 or 4 but got\n               rank ${c.rank}.`)),o.hu(o.GN(t),(()=>`Error in localResponseNormalization: depthRadius must be an integer but got depthRadius ${t}.`));let p=c,h=!1;3===c.rank&&(h=!0,p=(0,u.X)(c,[1,c.shape[0],c.shape[1],c.shape[2]]));const d={x:p},f={depthRadius:t,bias:n,alpha:i,beta:l},m=r.BV.runKernel(s.eZ0,d,f);return h?(0,u.X)(m,[m.shape[1],m.shape[2],m.shape[3]]):m}})},2597:function(e,t,n){"use strict";n.d(t,{c:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({log_:function(e){const t={x:(0,a._1)(e,"x","log","float32")};return r.BV.runKernel(s.ZbH,t)}})},7474:function(e,t,n){"use strict";n.d(t,{K:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({log1p_:function(e){const t={x:(0,a._1)(e,"x","log1p")};return r.BV.runKernel(s.kU,t)}})},3888:function(e,t,n){"use strict";n.d(t,{e:function(){return c}});var r=n(633),s=n(3740),a=n(4841),o=n(7370),i=n(2668),u=n(625),l=n(3694);const c=(0,i.op)({logSigmoid_:function(e){const t=(0,s._1)(e,"x","logSigmoid");return(0,r.cb)((e=>({value:(0,o.W)((0,l.W)((0,o.W)(e))),gradFunc:t=>(0,a.d)(t,(0,u.X)((0,o.W)(e)))})))(t)}})},1510:function(e,t,n){"use strict";n.d(t,{C:function(){return d}});var r=n(633),s=n(3740),a=n(2271),o=n(4842),i=n(2597),u=n(3307),l=n(4841),c=n(2668),p=n(827),h=n(2683);const d=(0,c.op)({logSoftmax_:function(e,t=-1){const n=(0,s._1)(e,"logits","logSoftmax");if(-1===t&&(t=n.rank-1),t!==n.rank-1)throw Error(`Log Softmax along a non-last dimension is not yet supported. Logits was rank ${n.rank} and axis was ${t}`);return(0,r.cb)(((e,n)=>{const r=(0,u.F)(e,t,!0),s=(0,p.l)(e,r),c=(0,p.l)((0,a.p)(s,"float32"),(0,i.c)((0,h.S)((0,o.Q)(s),t,!0)));n([c]);return{value:c,gradFunc:(e,n)=>{const[r]=n,s=(0,o.Q)(r);return(0,p.l)(e,(0,l.d)((0,h.S)(e,t,!0),s))}}}))(n)}})},1391:function(e,t,n){"use strict";n.d(t,{l:function(){return f}});var r=n(3740),s=n(569),a=n(6407),o=n(3591),i=n(4842),u=n(2597),l=n(3307),c=n(2668),p=n(4968),h=n(827),d=n(2683);const f=(0,c.op)({logSumExp_:function(e,t=null,n=!1){const c=(0,r._1)(e,"x","logSumExp"),f=(0,s.EC)(t,c.shape),m=(0,l.F)(c,f,!0),g=(0,h.l)(c,m),y=(0,i.Q)(g),b=(0,d.S)(y,f),x=(0,u.c)(b),w=(0,a.I)((0,p.X)(m,x.shape),x);if(n){const e=(0,o.rv)(w.shape,f);return(0,p.X)(w,e)}return w}})},2856:function(e,t,n){"use strict";n.d(t,{H:function(){return i}});var r=n(7097),s=n(9121),a=n(3740),o=n(2200);const i=(0,n(2668).op)({logicalAnd_:function(e,t){const n=(0,a._1)(e,"a","logicalAnd","bool"),i=(0,a._1)(t,"b","logicalAnd","bool");(0,o.assertAndGetBroadcastShape)(n.shape,i.shape);const u={a:n,b:i};return r.BV.runKernel(s.PYm,u)}})},8651:function(e,t,n){"use strict";n.d(t,{h:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({logicalNot_:function(e){const t={x:(0,a._1)(e,"x","logicalNot","bool")};return r.BV.runKernel(s.VfG,t)}})},5750:function(e,t,n){"use strict";n.d(t,{K:function(){return i}});var r=n(7097),s=n(9121),a=n(3740),o=n(2200);const i=(0,n(2668).op)({logicalOr_:function(e,t){const n=(0,a._1)(e,"a","logicalOr","bool"),i=(0,a._1)(t,"b","logicalOr","bool");(0,o.assertAndGetBroadcastShape)(n.shape,i.shape);const u={a:n,b:i};return r.BV.runKernel(s.MZg,u)}})},596:function(e,t,n){"use strict";n.d(t,{e:function(){return u}});var r=n(3740),s=n(2200),a=n(2856),o=n(8651),i=n(5750);const u=(0,n(2668).op)({logicalXor_:function(e,t){const n=(0,r._1)(e,"a","logicalXor","bool"),u=(0,r._1)(t,"b","logicalXor","bool");return(0,s.assertAndGetBroadcastShape)(n.shape,u.shape),(0,a.H)((0,i.K)(e,t),(0,o.h)((0,a.H)(e,t)))}})},8687:function(e,t,n){"use strict";n.d(t,{O:function(){return i}});var r=n(7097),s=n(9121),a=n(747),o=n(3740);const i=(0,n(2668).op)({matMul_:function(e,t,n=!1,i=!1){let u=(0,o._1)(e,"a","matMul"),l=(0,o._1)(t,"b","matMul");[u,l]=(0,a.makeTypesMatch)(u,l);const c={a:u,b:l},p={transposeA:n,transposeB:i};return r.BV.runKernel(s.XLW,c,p)}})},3307:function(e,t,n){"use strict";n.d(t,{F:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({max_:function(e,t=null,n=!1){const o={x:(0,a._1)(e,"x","max")},i={reductionIndices:t,keepDims:n};return r.BV.runKernel(s.YoZ,o,i)}})},1174:function(e,t,n){"use strict";n.d(t,{_:function(){return c}});var r=n(7097),s=n(9121),a=n(3740),o=n(569),i=n(2582),u=n(2668),l=n(4968);const c=(0,u.op)({maxPool_:function(e,t,n,u,c){const p=(0,a._1)(e,"x","maxPool");let h=p,d=!1;3===p.rank&&(d=!0,h=(0,l.X)(p,[1,p.shape[0],p.shape[1],p.shape[2]])),o.hu(4===h.rank,(()=>`Error in maxPool: input must be rank 4 but got rank ${h.rank}
1.`)),o.hu(i.jT(n,1),(()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${n} and dilations '1'`)),i.m("maxPool",u,c);const f={x:h},m={filterSize:t,strides:n,pad:u,dimRoundingMode:c},g=r.BV.runKernel(s.mTV,f,m);return d?(0,l.X)(g,[g.shape[1],g.shape[2],g.shape[3]]):g}})},632:function(e,t,n){"use strict";n.d(t,{g:function(){return l}});var r=n(7097),s=n(9121),a=n(747),o=n(3740),i=n(2200),u=n(2271);const l=(0,n(2668).op)({maximum_:function(e,t){let n=(0,o._1)(e,"a","maximum"),l=(0,o._1)(t,"b","maximum");[n,l]=(0,a.makeTypesMatch)(n,l),"bool"===n.dtype&&(n=(0,u.p)(n,"int32"),l=(0,u.p)(l,"int32")),(0,i.assertAndGetBroadcastShape)(n.shape,l.shape);const c={a:n,b:l};return r.BV.runKernel(s.BMI,c)}})},5130:function(e,t,n){"use strict";n.d(t,{J:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({mean_:function(e,t=null,n=!1){const o={x:(0,a._1)(e,"x","mean")},i={axis:t,keepDims:n};return r.BV.runKernel(s.q2K,o,i)}})},5735:function(e,t,n){"use strict";n.d(t,{V:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({min_:function(e,t=null,n=!1){const o={x:(0,a._1)(e,"x","min")},i={axis:t,keepDims:n};return r.BV.runKernel(s.c17,o,i)}})},4513:function(e,t,n){"use strict";n.d(t,{L:function(){return l}});var r=n(7097),s=n(9121),a=n(747),o=n(3740),i=n(2200),u=n(2271);const l=(0,n(2668).op)({minimum_:function(e,t){let n=(0,o._1)(e,"a","minimum"),l=(0,o._1)(t,"b","minimum");[n,l]=(0,a.makeTypesMatch)(n,l),"bool"===n.dtype&&(n=(0,u.p)(n,"int32"),l=(0,u.p)(l,"int32")),(0,i.assertAndGetBroadcastShape)(n.shape,l.shape);const c={a:n,b:l};return r.BV.runKernel(s.q8u,c)}})},1483:function(e,t,n){"use strict";n.d(t,{V:function(){return i}});var r=n(7097),s=n(9121),a=n(3740),o=n(569);const i=(0,n(2668).op)({mirrorPad_:function(e,t,n){o.hu("reflect"===n||"symmetric"===n,(()=>`Invalid mode. Mode must be either reflect or symmetric. Got ${n}.`));const i=(0,a._1)(e,"x","mirrorPad");if(0===i.rank)throw new Error("mirrorPad(scalar) is not defined. Pass non-scalar to mirrorPad");o.hu(t.length===i.rank,(()=>`Padding doesn't match input. Must be ${i.rank}. Got ${t.length}.`));const u="reflect"===n?1:0;for(let r=0;r<i.rank;r++)o.hu(2===t[r].length,(()=>"Invalid number of paddings. Must be length of 2 each.")),o.hu(t[r][0]>=0&&t[r][0]<=i.shape[r]-u&&t[r][1]>=0&&t[r][1]<=i.shape[r]-u,(()=>`Padding in dimension ${r} cannot be greater than or equal to ${i.shape[r]-u} or less than 0 for input of shape ${i.shape}`));const l={paddings:t,mode:n},c={x:i};return r.BV.runKernel(s.jQs,c,l)}})},5228:function(e,t,n){"use strict";n.d(t,{w:function(){return i}});var r=n(7097),s=n(9121),a=n(747),o=n(3740);const i=(0,n(2668).op)({mod_:function(e,t){let n=(0,o._1)(e,"a","mod"),i=(0,o._1)(t,"b","mod");[n,i]=(0,a.makeTypesMatch)(n,i);const u={a:n,b:i};return r.BV.runKernel(s.Vbg,u)}})},4841:function(e,t,n){"use strict";n.d(t,{d:function(){return i}});var r=n(7097),s=n(9121),a=n(747),o=n(3740);const i=(0,n(2668).op)({mul_:function(e,t){let n=(0,o._1)(e,"a","mul"),i=(0,o._1)(t,"b","mul");[n,i]=(0,a.makeTypesMatch)(n,i);const u={a:n,b:i};return r.BV.runKernel(s.wYn,u)}})},7370:function(e,t,n){"use strict";n.d(t,{W:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({neg_:function(e){const t={x:(0,a._1)(e,"x","neg")};return r.BV.runKernel(s.kuV,t)}})},3561:function(e,t,n){"use strict";n.d(t,{K:function(){return y}});var r=n(3740),s=n(569),a=n(6235),o=n(3591),i=n(3307),u=n(5735),l=n(2668),c=n(3453),p=n(4968),h=n(9494),d=n(3261),f=n(248),m=n(2683);function g(e,t,n=null){if(0===e.rank)return(0,a.W)(e);if(1!==e.rank&&null===n)return g((0,p.X)(e,[-1]),t,n);if(1===e.rank||"number"===typeof n||Array.isArray(n)&&1===n.length){if(1===t)return(0,m.S)((0,a.W)(e),n);if(t===1/0)return(0,i.F)((0,a.W)(e),n);if(t===-1/0)return(0,u.V)((0,a.W)(e),n);if("euclidean"===t||2===t)return(0,d._)((0,m.S)((0,c.s)((0,a.W)(e),(0,h.i)(2,"int32")),n));throw new Error(`Error in norm: invalid ord value: ${t}`)}if(Array.isArray(n)&&2===n.length){if(1===t)return(0,i.F)((0,m.S)((0,a.W)(e),n[0]),n[1]-1);if(t===1/0)return(0,i.F)((0,m.S)((0,a.W)(e),n[1]),n[0]);if(t===-1/0)return(0,u.V)((0,m.S)((0,a.W)(e),n[1]),n[0]);if("fro"===t||"euclidean"===t)return(0,d._)((0,m.S)((0,f.h)(e),n));throw new Error(`Error in norm: invalid ord value: ${t}`)}throw new Error(`Error in norm: invalid axis: ${n}`)}const y=(0,l.op)({norm_:function(e,t="euclidean",n=null,a=!1){const i=g(e=(0,r._1)(e,"x","norm"),t,n);let u=i.shape;if(a){const t=(0,s.EC)(n,e.shape);u=o.rv(i.shape,t)}return(0,p.X)(i,u)}})},6500:function(e,t,n){"use strict";n.d(t,{Q:function(){return u}});var r=n(7097),s=n(9121),a=n(747),o=n(3740),i=n(2200);const u=(0,n(2668).op)({notEqual_:function(e,t){let n=(0,o._1)(e,"a","
1notEqual","string_or_numeric"),u=(0,o._1)(t,"b","notEqual","string_or_numeric");[n,u]=(0,a.makeTypesMatch)(n,u),(0,i.assertAndGetBroadcastShape)(n.shape,u.shape);const l={a:n,b:u};return r.BV.runKernel(s.yQU,l)}})},6708:function(e,t,n){"use strict";n.d(t,{l:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({oneHot_:function(e,t,n=1,o=0,i="int32"){if(t<2)throw new Error(`Error in oneHot: depth must be >=2, but it is ${t}`);const u={indices:(0,a._1)(e,"indices","oneHot","int32")},l={dtype:i,depth:t,onValue:n,offValue:o};return r.BV.runKernel(s.we_,u,l)}})},4917:function(e,t,n){"use strict";n.d(t,{i:function(){return i}});var r=n(7097),s=n(569),a=n(1661),o=n(723);function i(e,t="float32"){if("complex64"===t){const t=i(e,"float32"),n=(0,o.l)(e,"float32");return(0,a.P)(t,n)}const n=(0,s.p8)((0,s.NA)(e),t);return r.BV.makeTensor(n,e,t)}},7846:function(e,t,n){"use strict";n.d(t,{J:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({onesLike_:function(e){const t={x:(0,a._1)(e,"x","onesLike")};return r.BV.runKernel(s.qWM,t)}})},2668:function(e,t,n){"use strict";n.d(t,{z:function(){return a},op:function(){return o}});var r=n(7097),s=n(569);const a="__op";function o(e){const t=Object.keys(e);if(1!==t.length)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 n=t[0];const o=e[n];n.endsWith("_")&&(n=n.substring(0,n.length-1)),n+=a;const i=(...e)=>{r.BV.startScope(n);try{const t=o(...e);return(0,s.tI)(t)&&console.error("Cannot return a Promise inside of tidy."),r.BV.endScope(t),t}catch(t){throw r.BV.endScope(null),t}};return Object.defineProperty(i,"name",{value:n,configurable:!0}),i}},9370:function(e,t,n){"use strict";n.d(t,{zvA:function(){return h.z},WnP:function(){return s.W},Khb:function(){return a.K},__u:function(){return o._},IHx:function(){return i.I},QBD:function(){return d},$6P:function(){return f.$},YjB:function(){return m.Y},NqF:function(){return g.N},vHJ:function(){return y.v},ZRM:function(){return b.Z},VfV:function(){return x.V},z4N:function(){return w.z},fvJ:function(){return v.f},C80:function(){return k.C},wS1:function(){return I.w},uR5:function(){return C},zEQ:function(){return F},tgs:function(){return M.t},Dxk:function(){return B},JY5:function(){return L},p3b:function(){return W},E4h:function(){return O.E},yE8:function(){return P},anm:function(){return Qn},XsQ:function(){return U},UFq:function(){return z.U},f3b:function(){return V.f},pju:function(){return S.p},mDi:function(){return G.m},iUl:function(){return H.i},d9v:function(){return j.d},PYB:function(){return X.P},zoF:function(){return E.z},gME:function(){return q},Izb:function(){return K},MNy:function(){return Q},ZaL:function(){return Y},PAt:function(){return Z.P},Tek:function(){return J.T},bc:function(){return ee.b},pdZ:function(){return te},$QV:function(){return re},mCk:function(){return se.m},f9Y:function(){return ae.f},mew:function(){return ir},$Gn:function(){return oe.$},zbp:function(){return ie.z},ppE:function(){return ue},nTT:function(){return le.n},B10:function(){return ce.B},Ka3:function(){return pe},WmZ:function(){return he.W},hiC:function(){return de.h},NTj:function(){return fe.N},AKD:function(){return me.A},rvX:function(){return ar},WYO:function(){return ge},pyx:function(){return ye.p},GRh:function(){return or},DgJ:function(){return be.D},qNN:function(){return xe.q},d2q:function(){return we.d},Qqt:function(){return ve.Q},dt4:function(){return ke.d},t$B:function(){return Ie.t},iyy:function(){return Se},kp_:function(){return yn.k},hlL:function(){return Te.h},GWj:function(){return Ce.G},qPi:function(){return Ee.q},imm:function(){return r},Iqj:function(){return $e.I},dbB:function(){return sr},pjt:function(){return Ae.p},brS:function(){return De.b},Sxn:function(){return bn.S},asL:function(){return _e.a},BHj:function(){return ls},V3u:function(){return ur},wx0:function(){return xn.w},xVT:function(){return Re.x},UWc:function(){return Fe.U},i2d:function(){return Oe.i},hi7:function(){return Me.h},d9m:function(){return Be.d},zN1:function(){return Le.z},$r2:function(){return cs},SX3:function(){return We},G9k:function(){return Pe.G},cM7:function(){return Ue.c},Krr:function(){return ze.K},e_t:function(){return Ve.e},CmS:function(){return Ge.C},l_t:function(){return He.l},HvI:function(){return je.H},hJK:function(){return Xe.h},K5V:function(){return qe.K},egP:function(){return Ke.e},MB5:function(){return ps},eab:function(){return Ze},OI3:function(){return $.O},Fp7:function(){return Je.F},_sB:function(){return et._},YQQ:function(){return tt},Ip$:function(){return nt},gWQ:function(){return rt.g},J69:function(){return st.J},ry_:function(){return it},VV$:function(){return ut.V},LTh:function(){return lt.L},VdP:function(){return ct.V},wQq:function(){return pt.w},Gi7:function(){return mt},p_:function(){return er},dC7:function(){return A.d},rq4:function(){return gt},SJ_:function(){return yt},W76:function(){return bt.W},KOy:function(){return Zn.K},Quu:function(){return xt.Q},lfX:function(){return wt.l},iUs:function(){return at.i},JpU:function(){return vt.J},op:function(){return h.op},N2O:function(){return kt},vku:function(){return It.v},pNR:function(){return Nt},koy:function(){return St},t1L:function(){return Tt},lGY:function(){return Ct},d_R:function(){return Et.d},sQ3:function(){return $t.s},AL3:function(){return At.A},S0v:function(){return Dt.S},WVs:function(){return _t.W},$gW:function(){return Rt},N89:function(){return Ft},TN_:function(){return Ot},wzB:function(){return Pt},nGf:function(){return Ut},ruB:function(){return zt},LGj:function(){return Vt},w6H:function(){return Gt},kwC:function(){return Ht.k},M25:function(){return jt.M},UYe:function(){return Xt.U},btT:function(){return qt.b},XLQ:function(){return T.X},GYS:function(){return Kt.G},SDf:function(){return Qt},diP:function(){return Yt},sx7:function(){return Zt},mG2:function(){return Jt},QEs:function(){return wn.Q},NMM:function(){return en.N},bp0:function(){return tn.b},iD$:function(){return nn.i},snQ:function(){return nr},zcT:function(){return Ye},U8D:function(){return rn.U},U_I:function(){return sn.U},ODp:function(){return an},XD2:function(){return D.X},Xxe:function(){return on.X},tdS:function(){return us},O$l:function(){return un.O},R_K:function(){return ln.R},tPi:function(){return _.t},jZU:function(){return cn},SmN:function(){return pn},CnO:function(){return hn},p0P:function(){return dn},XAC:function(){return fn.X},Wvh:function(){return mn.W},fBT:function(){return gn.f},rVs:function(){return hs},ers:function(){return rr},uN7:function(){return is},Vl2:function(){return vn.V},_b3:function(){return kn._},h62:function(){return dt.h},$i:function(){return In.$},L9e:function(){return Nn.L},knu:function(){return Sn.k},Nbs:function(){return Tn.N},NXj:function(){return Cn.N},Z_8:function(){return ds},luU:function(){return ft.l},Smz:function(){return En.S},ORZ:function(){return $n.O},AEp:function(){return R.A},XeE:function(){return An.X},RRF:function(){return _n},odF:function(){return Rn},wOQ:function(){return Fn.w},yXz:function(){return On},Bfx:function(){return Mn},xZs:function(){return Bn},Gg6:function(){return Ne.G},hg7:function(){return Ln.h},p4s:function(){return Yn.p},Xu6:function(){return Wn},Two:function(){return Pn.T},pUJ:function(){return Un.p},HHK:function(){return zn.H},GaM:function(){return Vn},VD$:function(){return Gn},arb:function(){return Hn.a},itS:function(){return Xn},lls:function(){return qn.l},P84:function(){return Kn.P}});var r={};n.r(r),n.d(r,{conv2d:function(){return fr},depthwiseConv2d:function(){return yr},matMul:function(){return br}});var s=n(6235),a=n(7839),o=n(1470),i=n(6407),u=n(7097),l=n(9121),c=n(3740),p=n(569),h=n(2668);const d=(0,h.op)({addN_:function(e){p.hu(Array.isArray(e),(()=>"The argument passed to tf.addN() must be a list of tensors")),p.hu(e.length>=1,(()=>`Must pass at least one tensor to tf.addN(), but got ${e.length}`));const t=e.map(((e,t)=>(0,c._1)(e,`tensors${t}`,"addN"))),n=t[0];t.forEach((e=>{if(e.dtype!==n.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")})),t.forEach((e=>{if(!p.cO(e.shape,n.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")}));const r=t;return u.BV.runKernel(l.Xze,r)}});var f=n(781),m=n(2998),g=n(47),y=n(7394),b=n(2421),x=n(1891),w=n(7037),v=n(9812),k=n(369),I=n(5176),N=n(2582),S=n(2271),T=n(4968);const C=(0,h.op)({avgPool3d_:function(e,t,n,r,s,a="NDHWC"){const o=(0,c._1
1)(e,"x","avgPool3d","float32");let i=o,h=!1;4===o.rank&&(h=!0,i=(0,T.X)(o,[1,o.shape[0],o.shape[1],o.shape[2],o.shape[3]])),p.hu(5===i.rank,(()=>`Error in avgPool3d: x must be rank 5 but got rank ${i.rank}.`)),p.hu("NDHWC"===a,(()=>`Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of ${a}`)),(0,N.m)("avgPool3d",r,s);const d={x:i},f={filterSize:t,strides:n,pad:r,dimRoundingMode:s,dataFormat:a};let m=u.BV.runKernel(l._k9,d,f);return m=(0,S.p)(m,i.dtype),h?(0,T.X)(m,[m.shape[1],m.shape[2],m.shape[3],m.shape[4]]):m}});var E=n(6884),$=n(8687),A=n(4841),D=n(625),_=n(2676),R=n(1869);const F=(0,h.op)({basicLSTMCell_:function(e,t,n,r,s,a){const o=(0,c._1)(e,"forgetBias","basicLSTMCell"),u=(0,c._1)(t,"lstmKernel","basicLSTMCell"),l=(0,c._1)(n,"lstmBias","basicLSTMCell"),p=(0,c._1)(r,"data","basicLSTMCell"),h=(0,c._1)(s,"c","basicLSTMCell"),d=(0,c._1)(a,"h","basicLSTMCell"),f=(0,E.z)([p,d],1),m=(0,$.O)(f,u),g=(0,i.I)(m,l),y=g.shape[0],b=g.shape[1]/4,x=[y,b],w=(0,_.t)(g,[0,0],x),v=(0,_.t)(g,[0,b],x),k=(0,_.t)(g,[0,2*b],x),I=(0,_.t)(g,[0,3*b],x),N=(0,i.I)((0,A.d)((0,D.X)(w),(0,R.A)(v)),(0,A.d)(h,(0,D.X)((0,i.I)(o,k))));return[N,(0,A.d)((0,R.A)(N),(0,D.X)(I))]}});var O=n(8441),M=n(7505);const B=(0,h.op)({batchNorm2d_:function(e,t,n,r,s,a){const o=(0,c._1)(e,"x","batchNorm"),i=(0,c._1)(t,"mean","batchNorm"),u=(0,c._1)(n,"variance","batchNorm");let l,h;return null!=s&&(l=(0,c._1)(s,"scale","batchNorm")),null!=r&&(h=(0,c._1)(r,"offset","batchNorm")),p.hu(2===o.rank,(()=>`Error in batchNorm2D: x must be rank 2 but got rank ${o.rank}.`)),p.hu(2===i.rank||1===i.rank,(()=>`Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank ${i.rank}.`)),p.hu(2===u.rank||1===u.rank,(()=>`Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank ${u.rank}.`)),null!=l&&p.hu(2===l.rank||1===l.rank,(()=>`Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank ${l.rank}.`)),null!=h&&p.hu(2===h.rank||1===h.rank,(()=>`Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank ${h.rank}.`)),(0,M.t)(o,i,u,h,l,a)}});const L=(0,h.op)({batchNorm3d_:function(e,t,n,r,s,a){const o=(0,c._1)(e,"x","batchNorm"),i=(0,c._1)(t,"mean","batchNorm"),u=(0,c._1)(n,"variance","batchNorm");let l,h;return null!=s&&(l=(0,c._1)(s,"scale","batchNorm")),null!=r&&(h=(0,c._1)(r,"offset","batchNorm")),p.hu(3===o.rank,(()=>`Error in batchNorm3D: x must be rank 3 but got rank ${o.rank}.`)),p.hu(3===i.rank||1===i.rank,(()=>`Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank ${i.rank}.`)),p.hu(3===u.rank||1===u.rank,(()=>`Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank ${u.rank}.`)),null!=l&&p.hu(3===l.rank||1===l.rank,(()=>`Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank ${l.rank}.`)),null!=h&&p.hu(3===h.rank||1===h.rank,(()=>`Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank ${h.rank}.`)),(0,M.t)(o,i,u,h,l,a)}});const W=(0,h.op)({batchNorm4d_:function(e,t,n,r,s,a){const o=(0,c._1)(e,"x","batchNorm"),i=(0,c._1)(t,"mean","batchNorm"),u=(0,c._1)(n,"variance","batchNorm");let l,h;return null!=s&&(l=(0,c._1)(s,"scale","batchNorm")),null!=r&&(h=(0,c._1)(r,"offset","batchNorm")),p.hu(4===o.rank,(()=>`Error in batchNorm4D: x must be rank 4 but got rank ${o.rank}.`)),p.hu(4===i.rank||1===i.rank,(()=>`Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank ${i.rank}.`)),p.hu(4===u.rank||1===u.rank,(()=>`Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank ${u.rank}.`)),null!=l&&p.hu(4===l.rank||1===l.rank,(()=>`Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank ${l.rank}.`)),null!=h&&p.hu(4===h.rank||1===h.rank,(()=>`Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank ${h.rank}.`)),(0,M.t)(o,i,u,h,l,a)}});const P=(0,h.op)({bincount_:function(e,t,n){const r=(0,c._1)(e,"x","bincount"),s=(0,c._1)(t,"weights","bincount");p.hu("int32"===r.dtype,(()=>`Error in bincount: input dtype must be int32, but got ${r.dtype}`)),p.hu(n>=0,(()=>`size must be non-negative, but got ${n}.`)),p.hu(s.size===r.size||0===s.size,(()=>`Error in bincount: weights must have the same size as input or0-length, but got input shape: ${r.shape}, weights shape: ${s.shape}.`));const a={x:r,weights:s},o={size:n};return u.BV.runKernel(l.zvY,a,o)}});
1const U=(0,h.op)({broadcastArgs_:function(e,t){const n=(0,c._1)(e,"s0","broadcastArgs","int32"),r=(0,c._1)(t,"s1","broadcastArgs","int32");if(1!==n.rank)throw new Error(`broadcastArgs(): first input must be a vector (rank=1). Has rank ${n.rank}`);if(1!==r.rank)throw new Error(`broadcastArgs(): second input must be a vector (rank=1). Has rank ${r.rank}`);const s={s0:n,s1:r};return u.BV.runKernel(l.eEB,s)}});var z=n(8247),V=n(2657),G=n(6825),H=n(2279),j=n(8723),X=n(1661);const q=(0,h.op)({concat1d_:function(e){return(0,E.z)(e,0)}});const K=(0,h.op)({concat2d_:function(e,t){return(0,E.z)(e,t)}});const Q=(0,h.op)({concat3d_:function(e,t){return(0,E.z)(e,t)}});const Y=(0,h.op)({concat4d_:function(e,t){return(0,E.z)(e,t)}});var Z=n(1355),J=n(4794),ee=n(1405);const te=(0,h.op)({conv3d_:function(e,t,n,r,s="NDHWC",a=[1,1,1]){const o=(0,c._1)(e,"x","conv3d"),i=(0,c._1)(t,"filter","conv3d");let h=o,d=!1;4===o.rank&&(d=!0,h=(0,T.X)(o,[1,o.shape[0],o.shape[1],o.shape[2],o.shape[3]])),p.hu(5===h.rank,(()=>`Error in conv3d: input must be rank 5, but got rank ${h.rank}.`)),p.hu(5===i.rank,(()=>`Error in conv3d: filter must be rank 5, but got rank ${i.rank}.`)),p.hu(h.shape[4]===i.shape[3],(()=>`Error in conv3d: depth of input (${h.shape[4]}) must match input depth for filter ${i.shape[3]}.`)),p.hu((0,N.jT)(n,a),(()=>`Error in conv3D: Either strides or dilations must be 1. Got strides ${n} and dilations '${a}'`)),p.hu("NDHWC"===s,(()=>`Error in conv3d: got dataFormat of ${s} but only NDHWC is currently supported.`));const f={x:h,filter:i},m={strides:n,pad:r,dataFormat:s,dilations:a},g=u.BV.runKernel(l.x12,f,m);return d?(0,T.X)(g,[g.shape[1],g.shape[2],g.shape[3],g.shape[4]]):g}});var ne=n(7594);const re=(0,h.op)({conv3dTranspose_:function(e,t,n,r,s){const a=(0,c._1)(e,"x","conv3dTranspose"),o=(0,c._1
1)(t,"filter","conv3dTranspose");return(0,ne._)(n,a,o,r,s)}});var se=n(173),ae=n(2699),oe=n(9640),ie=n(7405);const ue=(0,h.op)({denseBincount_:function(e,t,n,r=!1){const s=(0,c._1)(e,"x","denseBincount"),a=(0,c._1)(t,"weights","denseBincount");p.hu("int32"===s.dtype,(()=>`Error in denseBincount: input dtype must be int32, but got ${s.dtype}`)),p.hu(s.rank<=2,(()=>`Error in denseBincount: input must be at most rank 2, but got rank ${s.rank}.`)),p.hu(n>=0,(()=>`size must be non-negative, but got ${n}.`)),p.hu(a.size===s.size||0===a.size,(()=>`Error in denseBincount: weights must have the same shape as x or 0-length, but got x shape: ${s.shape}, weights shape: ${a.shape}.`));const o={x:s,weights:a},i={size:n,binaryOutput:r};return u.BV.runKernel(l.QRR,o,i)}});var le=n(9112),ce=n(4718);const pe=(0,h.op)({diag_:function(e){const t={x:(0,c._1)(e,"x","diag")};return u.BV.runKernel(l.$w,t)}});var he=n(557),de=n(1274),fe=n(9322),me=n(548);const ge=(0,h.op)({einsum_:function(e,...t){const n=t.map(((e,t)=>(0,c._1)(e,`tensors${t}`,"einsum"))),r={equation:e};return u.BV.runKernel(l.$g6,n,r)}});var ye=n(3233),be=n(6477),xe=n(4650),we=n(1954),ve=n(4842),ke=n(1300),Ie=n(3426),Ne=n(7501);const Se=(0,h.op)({eye_:function(e,t,n,r="float32"){null==t&&(t=e);const s=(0,V.f)([e,t],r),a=e<=t?e:t;for(let i=0;i<a;++i)s.set(1,i,i);const o=(0,T.X)(s.toTensor(),[e,t]);if(null==n)return o;if(1===n.length)return(0,Ne.G)((0,ke.d)(o,0),[n[0],1,1]);if(2===n.length)return(0,Ne.G)((0,ke.d)((0,ke.d)(o,0),0),[n[0],n[1],1,1]);if(3===n.length)return(0,Ne.G)((0,ke.d)((0,ke.d)((0,ke.d)(o,0),0),0),[n[0],n[1],n[2],1,1]);throw new Error(`eye() currently supports only 1D and 2D batchShapes, but received ${n.length}D.`)}});var Te=n(4006),Ce=n(6943),Ee=n(9165),$e=n(4926),Ae=n(636),De=n(7630),_e=n(4386),Re=n(3963),Fe=n(5853),Oe=n(6230),Me=n(9133),Be=n(6573),Le=n(624);function We(e,t,n){if(n<=0)throw new Error("The number of values should be positive.");const r={start:e,stop:t,num:n};return u.BV.runKernel(l.e7N,{},r)}var Pe=n(9648),Ue=n(2597),ze=n(7474),Ve=n(3888),Ge=n(1510),He=n(1391),je=n(2856),Xe=n(8651),qe=n(5750),Ke=n(596);const Qe=2147483648;const Ye=(0,h.op)({searchSorted_:function(e,t,n="left"){const r=(0,c._1)(e,"sortedSequence","searchSorted"),s=(0,c._1)(t,"values","searchSorted"),a=r.shape[r.shape.length-1],o=s.shape[s.shape.length-1],i=(0,T.X)(r,[-1,a]),h=(0,T.X)(s,[-1,o]);if(i.rank<2)throw new Error("Sorted input argument must be at least 2-dimensional");if(i.shape[0]!==h.shape[0])throw new Error("Leading dimension of 'sortedSequence' and 'values' must match.");if((0,p.NA)(h.shape)>=Qe)throw new Error("values tensor size must less than 2147483648");if(i.shape[1]>=Qe)throw new Error(`trailing dim_size must less than 2147483648 for int32 output type, was ${i.shape[1]}`);const d={sortedSequence:i,values:h},f={side:n};return u.BV.runKernel(l.nr8,d,f)}});function Ze(e,t){return Ye(e,t,"left")}var Je=n(3307),et=n(1174);const tt=(0,h.op)({maxPool3d_:function(e,t=[1,1,1],n,r,s,a="NDHWC"){const o=(0,c._1)(e,"x","maxPool3d");let i=o,h=!1;4===o.rank&&(h=!0,i=(0,T.X)(o,[1,o.shape[0],o.shape[1],o.shape[2],o.shape[3]])),p.hu(5===i.rank,(()=>`Error in maxPool3d: x must be rank 5 but got rank ${i.rank}.`)),p.hu("NDHWC"===a,(()=>`Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of ${a}`)),(0,N.m)("maxPool3d",r,s);const d={x:i},f={filterSize:t,strides:n,pad:r,dimRoundingMode:s,dataFormat:a},m=u.BV.runKernel(l.OAf,d,f);return h?(0,T.X)(m,[m.shape[1],m.shape[2],m.shape[3],m.shape[4]]):m}});const nt=(0,h.op)({maxPoolWithArgmax_:function(e,t,n,r,s=!1){const a={x:(0,c._1)(e,"x","maxPoolWithArgmax")},o={filterSize:t,strides:n,pad:r,includeBatchInIndex:s},i=u.BV.runKernel(l.vFR,a,o);return{result:i[0],indexes:i[1]}}});var rt=n(632),st=n(5130),at=n(4917),ot=n(4077);function it(e,t,{indexing:n="xy"}={}){if("xy"!==n&&"ij"!==n)throw new TypeError(`${n} is not a valid third argument to meshgrid`);if(void 0===e)return[];let r=(0,c._1)(e,"x","meshgrid",e instanceof ot.es?e.dtype:"float32");if(void 0===t)return[r];let s=(0,c._1)(t,"y","meshgrid",t instanceof ot.es?t.dtype:"float32");const a=(0,p.NA)(r.shape),o=(0,p.NA)(s.shape);return"xy"===n?(r=(0,T.X)(r,[1,-1]),s=(0,T.X)(s,[-1,1]),[(0,$.O)((0,at.i)([o,1],r.dtype),r),(0,$.O)(s,(0,at.i)([1,a],s.dtype))]):(r=(0,T.X)(r,[-1,1]),s=(0,T.X)(s,[1,-1]),[(0,$.O)(r,(0,at.i)([1,o],r.dtype)),(0,$.O)((0,at.i)([a,1],s.dtype),s)])}var ut=n(5735),lt=n(4513),ct=n(1483),pt=n(5228),ht=n(3591),dt=n(248),ft=n(827);const mt=(0,h.op)({moments_:function(e,t=null,n=!1){e=(0,c._1)(e,"x","moments");const r=(0,p.EC)(t,e.shape),s=(0,st.J)(e,r,n);let a=s.shape;n||(a=(0,ht.rv)(s.shape,r));const o=(0,dt.h)((0,ft.l)((0,S.p)(e,"float32"),(0,T.X)(s,a)));return{mean:s,variance:(0,st.J)(o,r,n)}}});const gt=(0,h.op)({multiRNNCell_:function(e,t,n,r){const s=(0,c._1
1)(t,"data","multiRNNCell"),a=(0,c.sI)(n,"c","multiRNNCell"),o=(0,c.sI)(r,"h","multiRNNCell");let i=s;const u=[];for(let c=0;c<e.length;c++){const t=e[c](i,a[c],o[c]);u.push(t[0]),u.push(t[1]),i=t[1]}const l=[],p=[];for(let c=0;c<u.length;c+=2)l.push(u[c]),p.push(u[c+1]);return[l,p]}});const yt=(0,h.op)({multinomial_:function(e,t,n,r=!1){const s=(0,c._1)(e,"logits","multinomial"),a=s.size,o=s.rank;if(a<2)throw new Error(`Error in multinomial: you need at least 2 outcomes, but got ${a}.`);if(o>2)throw new Error(`Rank of probabilities must be 1 or 2, but is ${o}`);n=n||Math.random();const i={logits:1===o?(0,T.X)(s,[1,-1]):s},p={numSamples:t,seed:n,normalized:r},h=u.BV.runKernel(l.NZg,i,p);return 1===o?(0,T.X)(h,[h.size]):h}});var bt=n(7370),xt=n(6500),wt=n(6708),vt=n(7846);const kt=(0,h.op)({outerProduct_:function(e,t){const n=(0,c._1)(e,"v1","outerProduct"),r=(0,c._1)(t,"v2","outerProduct");p.hu(1===n.rank&&1===r.rank,(()=>`Error in outerProduct: inputs must be rank 1, but got ranks ${n.rank} and ${r.rank}.`));const s=(0,T.X)(n,[-1,1]),a=(0,T.X)(r,[1,-1]);return(0,$.O)(s,a)}});var It=n(9682);const Nt=(0,h.op)({pad1d_:function(e,t,n=0){return(0,p.hu)(2===t.length,(()=>"Invalid number of paddings. Must be length of 2.")),(0,It.v)(e,[t],n)}});const St=(0,h.op)({pad2d_:function(e,t,n=0){return(0,p.hu)(2===t.length&&2===t[0].length&&2===t[1].length,(()=>"Invalid number of paddings. Must be length of 2 each.")),(0,It.v)(e,t,n)}});const Tt=(0,h.op)({pad3d_:function(e,t,n=0){return(0,p.hu)(3===t.length&&2===t[0].length&&2===t[1].length&&2===t[2].length,(()=>"Invalid number of paddings. Must be length of 2 each.")),(0,It.v)(e,t,n)}});const Ct=(0,h.op)({pad4d_:function(e,t,n=0){return(0,p.hu)(4===t.length&&2===t[0].length&&2===t[1].length&&2===t[2].length&&2===t[3].length,(()=>"Invalid number of paddings. Must be length of 2 each.")),(0,It.v)(e,t,n)}});var Et=n(5860),$t=n(3453),At=n(8151),Dt=n(9798),_t=n(9451);const Rt=(0,h.op)({raggedGather_:function(e,t,n,r){const s={paramsNestedSplits:e.map(((e,t)=>(0,c._1)(e,`tensors${t}`,"raggedGather","int32"))),paramsDenseValues:(0,c._1)(t,"paramsDenseValues","raggedGather"),indices:(0,c._1)(n,"indices","raggedGather","int32")},a={outputRaggedRank:r},o=u.BV.runKernel(l.dDz,s,a);return{outputNestedSplits:o.slice(0,o.length-1),outputDenseValues:o[o.length-1]}}});const Ft=(0,h.op)({raggedTensorToTensor_:function(e,t,n,r,s){const a=(0,c._1)(e,"shape","raggedTensorToTensor","int32"),o=(0,c._1
1)(t,"values","raggedTensorToTensor"),i={shape:a,values:o,defaultValue:(0,c._1)(n,"defaultValue","raggedTensorToTensor",o.dtype),rowPartitionTensors:r.map(((e,t)=>(0,c._1)(e,`tensors${t}`,"raggedTensorToTensor","int32")))},p={rowPartitionTypes:s};return u.BV.runKernel(l.BiW,i,p)}});const Ot=(0,h.op)({rand_:function(e,t,n){const r=(0,p.NA)(e);let s=null;if(null==n||"float32"===n)s=new Float32Array(r);else if("int32"===n)s=new Int32Array(r);else{if("bool"!==n)throw new Error(`Unknown data type ${n}`);s=new Uint8Array(r)}for(let a=0;a<r;a++)s[a]=t();return u.BV.makeTensor(s,e,n)}});var Mt=n(6377);class Bt{constructor(e,t,n,r,s){this.mean=e,this.stdDev=t,this.dtype=n,this.nextVal=NaN,this.truncated=r,this.truncated&&(this.upper=this.mean+2*this.stdDev,this.lower=this.mean-2*this.stdDev);const a=s||Math.random();this.random=Mt.alea(a.toString())}nextValue(){if(!isNaN(this.nextVal)){const e=this.nextVal;return this.nextVal=NaN,e}let e,t,n=!1;for(;!n;){let r,s,a;do{r=2*this.random()-1,s=2*this.random()-1,a=r*r+s*s}while(a>=1||0===a);const o=Math.sqrt(-2*Math.log(a)/a);e=this.mean+this.stdDev*r*o,t=this.mean+this.stdDev*s*o,this.truncated&&!this.isValidTruncated(e)||(n=!0)}return this.truncated&&!this.isValidTruncated(t)||(this.nextVal=this.convertValue(t)),this.convertValue(e)}convertValue(e){return null==this.dtype||"float32"===this.dtype?e:Math.round(e)}isValidTruncated(e){return e<=this.upper&&e>=this.lower}}class Lt{constructor(e,t,n,r){this.alpha=e,this.beta=1/t,this.dtype=n;const s=r||Math.random();this.randu=Mt.alea(s.toString()),this.randn=new Bt(0,1,n,!1,this.randu()),this.d=e<1?e+2/3:e-1/3,this.c=1/Math.sqrt(9*this.d)}nextValue(){let e,t,n,r,s,a;for(;;){do{r=this.randn.nextValue(),a=1+this.c*r}while(a<=0);if(a*=a*a,e=r*r,t=1-.331*e*e,n=.5*e+this.d*(1-a+Math.log(a)),s=this.randu(),s<t||Math.log(s)<n)break}return a=1/this.beta*this.d*a,this.alpha<1&&(a*=Math.pow(this.randu(),1/this.alpha)),this.convertValue(a)}convertValue(e){return"float32"===this.dtype?e:Math.round(e)}}class Wt{constructor(e=0,t=1,n,r){if(this.canReturnFloat=()=>null==this.dtype||"float32"===this.dtype,this.min=e,this.range=t-e,this.dtype=n,null==r&&(r=Math.random()),"number"===typeof r&&(r=r.toString()),!this.canReturnFloat()&&this.range<=1)throw new Error(`The difference between ${e} - ${t} <= 1 and dtype is not float`);this.random=Mt.alea(r)}convertValue(e){return this.canReturnFloat()?e:Math.round(e)}nextValue(){return this.convertValue(this.min+this.range*this.random())}}const Pt=(0,h.op)({randomGamma_:function(e,t,n=1,r="float32",s){if(null==n&&(n=1),null==r&&(r="float32"),"float32"!==r&&"int32"!==r)throw new Error(`Unsupported data type ${r}`);const a=new Lt(t,n,r,s),o=(0,V.f)(e,r);for(let i=0;i<o.values.length;i++)o.values[i]=a.nextValue();return o.toTensor()}});const Ut=(0,h.op)({randomNormal_:function(e,t=0,n=1,r,s){if(null!=r&&"bool"===r)throw new Error(`Unsupported data type ${r}`);const a=new Bt(t,n,r,!1,s),o=(0,V.f)(e,r);for(let i=0;i<o.values.length;i++)o.values[i]=a.nextValue();return o.toTensor()}});const zt=(0,h.op)({randomStandardNormal_:function(e,t,n){if(null!=t&&"bool"===t)throw new Error(`Unsupported data type ${t}`);return Ut(e,0,1,t,n)}});const Vt=(0,h.op)({randomUniform_:function(e,t=0,n=1,r="float32",s){const a=(0,V.f)(e,r),o=new Wt(t,n,null,s);for(let i=0;i<a.values.length;i++)a.values[i]=o.nextValue();return a.toTensor()}});function Gt(e,t,n=1,r="float32"){if(0===n)throw new Error("Cannot have a step of zero");const s={start:e,stop:t,step:n,dtype:r};return u.BV.runKernel(l.e6w,{},s)}var Ht=n(766),jt=n(9036),Xt=n(7409),qt=n(3582),Kt=n(7486);const Qt=(0,h.op)({reverse1d_:function(e){const t=(0,c._1)(e,"x","reverse");return p.hu(1===t.rank,(()=>`Error in reverse1D: x must be rank 1 but got rank ${t.rank}.`)),(0,Kt.G)(t,0)}});const Yt=(0,h.op)({reverse2d_:function(e,t){const n=(0,c._1)(e,"x","reverse");return p.hu(2===n.rank,(()=>`Error in reverse2D: x must be rank 2 but got rank ${n.rank}.`)),(0,Kt.G)(n,t)}});const Zt=(0,h.op)({reverse3d_:function(e,t){const n=(0,c._1)(e,"x","reverse");return p.hu(3===n.rank,(()=>`Error in reverse3D: x must be rank 3 but got rank ${n.rank}
1.`)),(0,Kt.G)(n,t)}});const Jt=(0,h.op)({reverse4d_:function(e,t){const n=(0,c._1)(e,"x","reverse");return p.hu(4===n.rank,(()=>`Error in reverse4D: x must be rank 4 but got rank ${n.rank}.`)),(0,Kt.G)(n,t)}});var en=n(7809),tn=n(2634),nn=n(9494),rn=n(5503),sn=n(8678);const an=async function(e,t){const n=(0,c._1)(e,"x","setdiff1d"),r=(0,c._1)(t,"y","setdiff1d");p.hu(n.dtype===r.dtype,(()=>`x and y should have the same dtype, but got x (${n.dtype}) and y (${r.dtype}).`)),p.hu(1===n.rank,(()=>`x should be 1D tensor, but got x (${n.shape}).`)),p.hu(1===r.rank,(()=>`y should be 1D tensor, but got y (${r.shape}).`));const s=await n.data(),a=await r.data(),o=new Set(a);let i=0;for(let c=0;c<s.length;c++)o.has(s[c])||i++;const u=new ot.YD([i],n.dtype),l=new ot.YD([i],"int32");for(let c=0,p=0;c<s.length;c++)o.has(s[c])||(u.values[p]=s[c],l.values[p]=c,p++);return[u.toTensor(),l.toTensor()]};var on=n(4434),un=n(9331),ln=n(3254);const cn=(0,h.op)({slice1d_:function(e,t,n){const r=(0,c._1)(e,"x","slice1d");return p.hu(1===r.rank,(()=>`slice1d expects a rank-1 tensor, but got a rank-${r.rank} tensor`)),(0,_.t)(r,[t],[n])}});const pn=(0,h.op)({slice2d_:function(e,t,n){const r=(0,c._1)(e,"x","slice2d");return p.hu(2===r.rank,(()=>`slice2d expects a rank-2 tensor, but got a rank-${r.rank} tensor`)),(0,_.t)(r,t,n)}});const hn=(0,h.op)({slice3d_:function(e,t,n){const r=(0,c._1)(e,"x","slice3d");return p.hu(3===r.rank,(()=>`slice3d expects a rank-3 tensor, but got a rank-${r.rank} tensor`)),(0,_.t)(r,t,n)}});const dn=(0,h.op)({slice4d_:function(e,t,n){const r=(0,c._1)(e,"x","slice4d");return p.hu(4===r.rank,(()=>`slice4d expects a rank-4 tensor, but got a rank-${r.rank} tensor`)),(0,_.t)(r,t,n)}});var fn=n(2817),mn=n(3694),gn=n(7918),yn=n(7020),bn=n(8447),xn=n(4415),wn=n(3710),vn=n(8644),kn=n(3261),In=n(5265),Nn=n(9590),Sn=n(2991),Tn=n(1901),Cn=n(5158),En=n(2683),$n=n(1173),An=n(701),Dn=n(7852);function _n(e,t){(0,p.Cq)(e);const n=(0,c.C)(e,t);if(1!==n.length)throw new Error("tensor1d() requires values to be a flat/TypedArray");return(0,Dn.H)(e,null,n,t)}function Rn(e,t,n){if((0,p.Cq)(e),null!=t&&2!==t.length)throw new Error("tensor2d() requires shape to have two numbers");const r=(0,c.C)(e,n);if(2!==r.length&&1!==r.length)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(1===r.length&&null==t)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return(0,Dn.H)(e,t,r,n)}var Fn=n(9906);function On(e,t,n){if((0,p.Cq)(e),null!=t&&4!==t.length)throw new Error("tensor4d() requires shape to have four numbers");const r=(0,c.C)(e,n);if(4!==r.length&&1!==r.length)throw new Error("tensor4d() requires values to be number[][][][] or flat/TypedArray");if(1===r.length&&null==t)throw new Error("tensor4d() requires shape to be provided when `values` are a flat array");return(0,Dn.H)(e,t,r,n)}function Mn(e,t,n){if((0,p.Cq)(e),null!=t&&5!==t.length)throw new Error("tensor5d() requires shape to have five numbers");const r=(0,c.C)(e,n);if(5!==r.length&&1!==r.length)throw new Error("tensor5d() requires values to be number[][][][][] or flat/TypedArray");if(1===r.length&&null==t)throw new Error("tensor5d() requires shape to be provided when `values` are a flat array");return(0,Dn.H)(e,t,r,n)}function Bn(e,t,n){if((0,p.Cq)(e),null!=t&&6!==t.length)throw new Error("tensor6d() requires shape to have six numbers");const r=(0,c.C)(e,n);if(6!==r.length&&1!==r.length)throw new Error("tensor6d() requires values to be number[][][][][][] or flat/TypedArray");if(1===r.length&&null==t)throw new Error("tensor6d() requires shape to be provided when `values` are a flat array");return t=t||r,(0,Dn.H)(e,t,r,n)}var Ln=n(3243);const Wn=(0,h.op)({truncatedNormal_:function(e,t=0,n=1,r,s){if(null!=r&&"bool"===r)throw new Error("Unsupported data type $ { dtype }");const a=new Bt(t,n,r,!0,s),o=(0,V.f)(e,r);for(let i=0;i<o.values.length;i++)o.values[i]=a.nextValue();return o.toTensor()}});var Pn=n(9608),Un=n(8749),zn=n(4136);function Vn(e,t){return Ye(e,t,"right")}function Gn(e,t=!0,n,r){return u.BV.makeVariable(e,t,n,r)}
1var Hn=n(5912),jn=n(8333);const Xn=async function(e){const t=(0,c._1)(e,"condition","whereAsync","bool"),n=await t.data(),r=(0,jn.Z)(t.shape,n);return e!==t&&t.dispose(),r};var qn=n(723),Kn=n(6577);const Qn=async function(e,t,n){const r=(0,c._1)(e,"tensor","boolMask"),s=(0,c._1)(t,"mask","boolMask","bool"),a=null==n?0:n,o=s.rank,i=r.shape;p.hu(o>0,(()=>"mask cannot be scalar")),p.k5(i.slice(a,a+o),s.shape,"mask's shape must match the first K dimensions of tensor's shape,");let u=1;for(let c=a;c<a+o;c++)u*=i[c];const l=i.slice(0,a).concat([u],i.slice(a+o)),h=(0,T.X)(r,l),d=(0,T.X)(s,[-1]),f=await Xn(d),m=(0,Nn.L)(f,[1]),g=(0,$e.I)(h,m,a);return e!==r&&r.dispose(),t!==s&&s.dispose(),m.dispose(),h.dispose(),d.dispose(),f.dispose(),g};var Yn=n(9065),Zn=n(3561),Jn=n(747);const er=(0,h.op)({movingAverage_:function(e,t,n,r,s=!0){const a=(0,c._1)(e,"v","movingAverage"),o=(0,c._1)(t,"x","movingAverage"),u=(0,c._1)(n,"decay","movingAverage");(0,Jn.assertTypesMatch)(a,o),p.hu(p.cO(a.shape,o.shape),(()=>"Shape mismatch in v and x"));const l=(0,nn.i)(1),h=(0,ft.l)(l,u);let d=(0,A.d)((0,ft.l)(o,a),h);if(s){p.hu(null!=r,(()=>"When using zeroDebias: true, step is required."));const e=(0,c._1)(r,"step","movingAverage");d=(0,de.h)(d,(0,ft.l)(l,(0,$t.s)(u,e)))}return(0,i.I)(a,d)}});var tr=n(3028);const nr=(0,h.op)({scatterND_:function(e,t,n){const r=(0,c._1)(e,"indices","scatterND","int32"),s=(0,c._1)(t,"updates","scatterND");tr.b0(s,r,n);const a={indices:r,updates:s},o={shape:n};return u.BV.runKernel(l.xQA,a,o)}});const rr=(0,h.op)({sparseToDense_:function(e,t,n,r=0){const s=(0,c._1)(e,"sparseIndices","sparseToDense","int32"),a=(0,c._1
1)(t,"sparseValues","sparseToDense","string_or_numeric"),o=(0,c._1)(r,"defaultValue","sparseToDense",a.dtype);!function(e,t,n,r){if("int32"!==e.dtype)throw new Error(`tf.sparseToDense() expects the indices to be int32 type, but the dtype was ${e.dtype}.`);if(e.rank>2)throw new Error(`sparseIndices should be a scalar, vector, or matrix, but got shape ${e.shape}.`);const s=e.rank>0?e.shape[0]:1,a=e.rank>1?e.shape[1]:1;if(n.length!==a)throw new Error(`outputShape has incorrect number of elements:, ${n.length}, should be: ${a}.`);const o=t.size;if(0!==t.rank&&(1!==t.rank||o!==s))throw new Error(`sparseValues has incorrect shape ${t.shape}, should be [] or [${s}]`);if(t.dtype!==r.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}(s,a,n,o);const i={sparseIndices:s,sparseValues:a,defaultValue:o},p={outputShape:n};return u.BV.runKernel(l.D2d,i,p)}});const sr=(0,h.op)({gatherND_:function(e,t){const n=(0,c._1)(t,"indices","gatherND","int32"),r={params:(0,c._1)(e,"x","gatherND","string_or_numeric"),indices:n};return u.BV.runKernel(l.q1x,r)}});const ar=(0,h.op)({dropout_:function(e,t,n,r){const s=(0,c._1)(e,"x","dropout");if(p.hu("float32"===s.dtype,(()=>`x has to be a floating point tensor since it's going to be scaled, but got a ${s.dtype} tensor instead.`)),p.hu(t>=0&&t<1,(()=>`rate must be a float in the range [0, 1), but got ${t}.`)),0===t)return e instanceof ot.es?s.clone():s;const a=function(e,t){if(null==t)return e.shape.slice();if(p.cO(e.shape,t))return t;if(e.shape.length===t.length){const n=[];for(let r=0;r<e.shape.length;r++)null==t[r]&&null!=e.shape[r]?n.push(e.shape[r]):n.push(t[r]);return n}return t}(s,n),o=1-t,u=(0,de.h)((0,Ce.G)((0,i.I)(Vt(a,0,1,"float32",r),o)),o);return(0,A.d)(s,u)}});function or(e){return Math.floor(Math.pow(2,Math.ceil(Math.log(e)/Math.log(2))))}function ir(e,t,n){const r=1-e%2,s=new Float32Array(e);for(let a=0;a<e;++a){const o=2*Math.PI*a/(e+r-1);s[a]=t-n*Math.cos(o)}return _n(s,"float32")}const ur=async function(e,t,n=1){const r=(0,c._1)(e,"predictions","inTopK"),s=(0,c._1)(t,"targets","inTopK");(0,p.hu)(r.rank>1,(()=>`inTopK() expects the predictions to be of rank 2 or higher, but got ${r.rank}`)),(0,p.hu)(r.rank-1===s.rank,(()=>`predictions rank should be 1 larger than targets rank, but got predictions rank ${r.rank} and targets rank ${s.rank}`)),(0,p.k5)(r.shape.slice(0,r.shape.length-1),s.shape,"predictions's shape should be align with the targets' shape, except the last dimension.");const a=r.shape[r.shape.length-1];(0,p.hu)(n>0&&n<=a,(()=>`'k' passed to inTopK() must be > 0 && <= the predictions last dimension (${a}), but got ${n}`));const o=await r.data(),i=await s.data(),[u,l]=[o.length/a,a],h=(0,p.WP)("bool",u);for(let c=0;c<u;c++){const e=c*l,t=o.subarray(e,e+l),r=[];for(let n=0;n<t.length;n++)r.push({value:t[n],index:n});r.sort(((e,t)=>t.value-e.value)),h[c]=0;for(let s=0;s<n;s++)if(r[s].index===i[c]){h[c]=1;break}}return e!==r&&r.dispose(),t!==s&&s.dispose(),(0,An.X)(h,s.shape,"bool")};var lr=n(633),cr=n(2200),pr=n(6013),hr=n(9832),dr=n(9323);const fr=(0,h.op)({fusedConv2d_:function({x:e,filter:t,strides:n,pad:r,dataFormat:s="NHWC",dilations:a=[1,1],dimRoundingMode:o,bias:h,activation:d="linear",preluActivationWeights:f,leakyreluAlpha:m}){if(d=d||"linear",!1===(0,dr.uy)(u.BV.state.gradientDepth,d)){p.hu("NHWC"===s,(()=>`Error in fused conv2d: got dataFormat of ${s} but only NHWC is currently supported for the case of gradient depth is 0 and the activation is not linear.`));let u=(0,J.T)(e,t,n,r,s,a,o);return null!=h&&(u=(0,i.I)(u,h)),(0,dr.QH)(u,d,f,m)}const g=(0,c._1)(e,"x","conv2d","float32"),y=(0,c._1)(t,"filter","conv2d","float32");let b=g,x=!1;3===g.rank&&(x=!0,b=(0,T.X)(g,[1,g.shape[0],g.shape[1],g.shape[2]])),p.hu(4===b.rank,(()=>`Error in fused conv2d: input must be rank 4, but got rank ${b.rank}.`)),p.hu(4===y.rank,(()=>`Error in fused conv2d: filter must be rank 4, but got rank ${y.rank}.`)),N.m("fused conv2d",r,o);const w="NHWC"===s?b.shape[3]:b.shape[1];p.hu(y.shape[2]===w,(()=>`Error in conv2d: depth of input (${w}) must match input depth for filter ${y.shape[2]}.`)),p.hu(N.jT(n,a),(()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${n} and dilations '${a}'`));const v=N.Ix(b.shape,y.shape,n,a,r,o);let k,I;
1if(null!=h&&(k=(0,c._1)(h,"bias","fused conv2d"),[k]=(0,Jn.makeTypesMatch)(k,g),"NHWC"===s?cr.assertAndGetBroadcastShape(v.outShape,k.shape):(p.hu(k.shape.length<=1,(()=>`Error in fused conv2d: only supports scalar or 1-D Tensor bias for NCHW format but got the bias of rank-${k.shape.length}.`)),p.hu(0===k.shape.length||k.shape[0]===v.outChannels||1===k.shape[0],(()=>`Error in fused conv2d: bias shape (${k.shape}) is not compatible with the number of output channels (${v.outChannels})`)))),null!=f){const e=f.shape;if(p.hu(e.length<=1||3===e.length,(()=>`Error in fused conv2d: only supports scalar, 1-D Tensor or 3-D Tensor PReLU activation weights but got a tensor of rank-${e.length}.`)),1===e.length)p.hu(1===e[0]||e[0]===v.outChannels,(()=>`Error in fused conv2d: PReLU activation weights (${e}) is not compatible with the number of output channels (${v.outChannels}).`));else if(3===e.length)try{cr.assertAndGetBroadcastShape(e,v.outShape)}catch($){const t=`Error in fused conv2d: PReLU activation weights (${e}) is not compatible with the output shape of the conv2d (${v.outShape}).`;throw Error(t)}I=(0,c._1)(f,"prelu weights","fused conv2d")}const S=(e,t)=>{p.hu("NHWC"===s,(()=>`Error in gradient of fused conv2D: got dataFormat of ${s} but only NHWC is currently supported.`));const[o,i,u,l]=t,c=(0,dr.Fr)(e,u,d);p.hu(N.I0(a),(()=>`Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${a}'`));const h=[(0,hr._)(i.shape,c,o,n,r),(0,pr.p)(i,c,o.shape,n,r)];if(null!=l){const e=(0,dr.pf)(l,c);h.push(e)}return h},C={x:b,filter:y,bias:k,preluActivationWeights:I},E={strides:n,pad:r,dataFormat:s,dilations:a,dimRoundingMode:o,activation:d,leakyreluAlpha:m};if(null==h){return(0,lr.cb)(((e,t,n)=>{let r=u.BV.runKernel(l._V0,C,E);return n([t,e,r]),x&&(r=(0,T.X)(r,[r.shape[1],r.shape[2],r.shape[3]])),{value:r,gradFunc:S}}))(b,y)}return(0,lr.cb)(((e,t,n,r)=>{let s=u.BV.runKernel(l._V0,C,E);return r([t,e,s,n]),x&&(s=(0,T.X)(s,[s.shape[1],s.shape[2],s.shape[3]])),{value:s,gradFunc:S}}))(b,y,k)}});var mr=n(8098),gr=n(4375);const yr=(0,h.op)({fusedDepthwiseConv2d_:function({x:e,filter:t,strides:n,pad:r,dataFormat:s="NHWC",dilations:a=[1,1],dimRoundingMode:o,bias:h,activation:d="linear",preluActivationWeights:f,leakyreluAlpha:m}){if(!1===(0,dr.uy)(u.BV.state.gradientDepth,d)){let u=(0,ce.B)(e,t,n,r,s,a,o);return null!=h&&(u=(0,i.I)(u,h)),(0,dr.QH)(u,d,f,m)}const g=(0,c._1)(e,"x","depthwiseConv2d","float32"),y=(0,c._1)(t,"filter","depthwiseConv2d","float32");let b=g,x=!1;3===g.rank&&(x=!0,b=(0,T.X)(g,[1,g.shape[0],g.shape[1],g.shape[2]])),p.hu(4===b.rank,(()=>`Error in fused depthwiseConv2d: input must be rank 4, but got rank ${b.rank}.`)),p.hu(4===y.rank,(()=>`Error in fused depthwiseConv2d: filter must be rank 4, but got rank ${y.rank}.`)),p.hu(b.shape[3]===y.shape[2],(()=>`Error in fused depthwiseConv2d: number of input channels (${b.shape[3]}) must match the inChannels dimension in filter ${y.shape[2]}.`)),null==a&&(a=[1,1]),p.hu(N.jT(n,a),(()=>`Error in fused depthwiseConv2d: Either strides or dilations must be 1. Got strides ${n} and dilations '${a}'`)),N.m("fused depthwiseConv2d",r,o);const w=N.Ix(b.shape,y.shape,n,a,r,o,!0);let v,k;null!=h&&(v=(0,c._1)(h,"bias","fused conv2d"),[v]=(0,Jn.makeTypesMatch)(v,g),cr.assertAndGetBroadcastShape(w.outShape,v.shape)),null!=f&&(k=(0,c._1)(f,"prelu weights","fused depthwiseConv2d"));const I=(e,t)=>{p.hu(N.I0(a),(()=>`Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '${a}'`));const[s,i,u,l]=t,c=(0,dr.Fr)(e,u,d),h=(0,gr.v)(i.shape,c,s,n,r,a,o),f=(0,mr.z)(i,c,s.shape,n,r,a,o);if(null!=l){return[h,f,(0,dr.pf)(v,c)]}return[h,f]},S={x:b,filter:y,bias:v,preluActivationWeights:k},C={strides:n,pad:r,dataFormat:s,dilations:a,dimRoundingMode:o,activation:d,leakyreluAlpha:m};if(null==h){return(0,lr.cb)(((e,t,n)=>{let r=u.BV.runKernel(l.luS,S,C);return n([t,e,r]),x&&(r=(0,T.X)(r,[r.shape[1],r.shape[2],r.shape[3]])),{value:r,gradFunc:I}}))(b,y)}return(0,lr.cb)(((e,t,n,r)=>{let s=u.BV.runKernel(l.luS,S,C);return r([t,e,s,n]),x&&(s=(0,T.X)(s,[s.shape[1],s.shape[2],s.shape[3]])),{value:s,gradFunc:I}}))(b,y,v)}});const br=(0,h.op)({fusedMatMul_:function({a:e,b:t,transposeA:n=!1,transposeB:r=!1,bias:s,activation:a="linear",preluActivationWeights:o,leakyreluAlpha:h=.2}){if(!1===(0,dr.uy)(u.BV.state.gradientDepth,a)){let u=(0,$.O)(e,t,n,r);return null!=s&&(u=(0,i.I)(u,s)),(0,dr.QH)(u,a,o,h)}
1let d=(0,c._1)(e,"a","fused matMul"),f=(0,c._1)(t,"b","fused matMul");[d,f]=(0,Jn.makeTypesMatch)(d,f);const m=n?d.shape[d.rank-2]:d.shape[d.rank-1],g=r?f.shape[f.rank-1]:f.shape[f.rank-2],y=n?d.shape[d.rank-1]:d.shape[d.rank-2],b=r?f.shape[f.rank-2]:f.shape[f.rank-1],x=d.shape.slice(0,-2),w=f.shape.slice(0,-2),v=p.NA(x),k=p.NA(w);p.hu(m===g,(()=>`Error in fused matMul: inner shapes (${m}) and (${g}) of Tensors with shapes ${d.shape} and ${f.shape} and transposeA=${n} and transposeB=${r} must match.`));const I=cr.assertAndGetBroadcastShape(d.shape.slice(0,-2),f.shape.slice(0,-2)).concat([y,b]),N=n?(0,T.X)(d,[v,m,y]):(0,T.X)(d,[v,y,m]),S=r?(0,T.X)(f,[k,b,g]):(0,T.X)(f,[k,g,b]);let C,E;null!=s&&(C=(0,c._1)(s,"bias","fused matMul"),[C]=(0,Jn.makeTypesMatch)(C,d),cr.assertAndGetBroadcastShape(I,C.shape)),null!=o&&(E=(0,c._1)(o,"prelu weights","fused matMul"));const A=(e,t)=>{const[o,i,u,l]=t,c=(0,dr.Fr)((0,T.X)(e,u.shape),u,a);let p,h;if(n||r?!n&&r?(p=(0,$.O)(c,i,!1,!1),h=(0,$.O)(c,o,!0,!1)):n&&!r?(p=(0,$.O)(i,c,!1,!0),h=(0,$.O)(o,c,!1,!1)):(p=(0,$.O)(i,c,!0,!0),h=(0,$.O)(c,o,!0,!0)):(p=(0,$.O)(c,i,!1,!0),h=(0,$.O)(o,c,!0,!1)),null!=s){return[p,h,(0,dr.pf)(l,c)]}return[p,h]},D={a:N,b:S,bias:C,preluActivationWeights:E},_={transposeA:n,transposeB:r,activation:a,leakyreluAlpha:h};if(null==s){return(0,lr.cb)(((e,t,n)=>{const r=u.BV.runKernel(l.usg,D,_);return n([e,t,r]),{value:(0,T.X)(r,I),gradFunc:A}}))(N,S)}return(0,lr.cb)(((e,t,n,r)=>{const s=u.BV.runKernel(l.usg,D,_);return r([e,t,s,n]),{value:(0,T.X)(s,I),gradFunc:A}}))(N,S,C)}});const xr=(0,h.op)({hammingWindow_:function(e){return ir(e,.54,.46)}});const wr=(0,h.op)({hannWindow_:function(e){return ir(e,.5,.5)}});const vr=(0,h.op)({frame_:function(e,t,n,r=!1,s=0){let a=0;const o=[];for(;a+t<=e.size;)o.push((0,_.t)(e,a,t)),a+=n;if(r)for(;a<e.size;){const r=a+t-e.size,i=(0,E.z)([(0,_.t)(e,a,t-r),(0,Te.h)([r],s)]);o.push(i),a+=n}return 0===o.length?Rn([],[0,t]):(0,T.X)((0,E.z)(o),[o.length,t])}});const kr=(0,h.op)({stft_:function(e,t,n,r,s=wr){null==r&&(r=or(t));const a=vr(e,t,n),o=(0,A.d)(a,s(t));return(0,wn.Q)(o,r)}});const Ir=(0,h.op)({cropAndResize_:function(e,t,n,r,s="bilinear",a=0){const o=(0,c._1)(e,"image","cropAndResize"),i=(0,c._1)(t,"boxes","cropAndResize","float32"),h=(0,c._1)(n,"boxInd","cropAndResize","int32"),d=i.shape[0];p.hu(4===o.rank,(()=>`Error in cropAndResize: image must be rank 4,but got rank ${o.rank}.`)),p.hu(2===i.rank&&4===i.shape[1],(()=>`Error in cropAndResize: boxes must be have size [${d},4] but had shape ${i.shape}.`)),p.hu(1===h.rank&&h.shape[0]===d,(()=>`Error in cropAndResize: boxInd must be have size [${d}] but had shape ${i.shape}.`)),p.hu(2===r.length,(()=>`Error in cropAndResize: cropSize must be of length 2, but got length ${r.length}.`)),p.hu(r[0]>=1&&r[1]>=1,(()=>`cropSize must be atleast [1,1], but was ${r}`)),p.hu("bilinear"===s||"nearest"===s,(()=>`method must be bilinear or nearest, but was ${s}`));const f={image:o,boxes:i,boxInd:h},m={method:s,extrapolationValue:a,cropSize:r};return u.BV.runKernel(l.VcC,f,m)}});const Nr=(0,h.op)({flipLeftRight_:function(e){const t=(0,c._1)(e,"image","flipLeftRight","float32");p.hu(4===t.rank,(()=>`Error in flipLeftRight: image must be rank 4,but got rank ${t.rank}.`));const n={image:t};return u.BV.runKernel(l.Uyb,n,{})}});const Sr=(0,h.op)({grayscaleToRGB_:function(e){const t=(0,c._1)(e,"image","grayscaleToRGB"),n=t.rank-1,r=t.shape[n];p.hu(t.rank>=2,(()=>`Error in grayscaleToRGB: images must be at least rank 2, but got rank ${t.rank}.`)),p.hu(1===r,(()=>`Error in grayscaleToRGB: last dimension of a grayscale image should be size 1, but got size ${r}.`));const s=new Array(t.rank);return s.fill(1,0,n),s[n]=3,(0,Ne.G)(t,s)}});const Tr=(0,h.op)({rotateWithOffset_:function(e,t,n=0,r=.5){const s=(0,c._1)(e,"image","rotateWithOffset","float32");p.hu(4===s.rank,(()=>`Error in rotateWithOffset: image must be rank 4,but got rank ${s.rank}.`));const a={image:s},o={radians:t,fillValue:n,center:r};return u.BV.runKernel(l.b9H,a,o)}});function Cr(e,t,n,r,s,a){null==r&&(r=.5),null==s&&(s=Number.NEGATIVE_INFINITY),null==a&&(a=0);const o=e.shape[0];return n=Math.min(n,o),p.hu(0<=r&&r<=1,(()=>`iouThreshold must be in [0, 1], but was '${r}'`)),p.hu(2===e.rank,(()=>`boxes must be a 2D tensor, but was of rank '${e.rank}'`)),p.hu(4===e.shape[1],(()=>`boxes must have 4 columns, but 2nd dimension was ${e.shape[1]}`)),p.hu(1===t.rank,(()=>"scores must be a 1D tensor")),p.hu(t.shape[0]===o,(()=>`scores has incompatible shape with boxes. Expected ${o}, but was ${t.shape[0]}`)),p.hu(0<=a&&a<=1,(()=>`softNmsSigma must be in [0, 1], but was '${a}'`)),{maxOutputSize:n,iouThreshold:r,scoreThreshold:s,softNmsSigma:a}}const Er=(0,h.op)({nonMaxSuppression_:function(e,t,n,r=.5,s=Number.NEGATIVE_INFINITY){const a=(0,c._1
1)(e,"boxes","nonMaxSuppression","float32"),o=(0,c._1)(t,"scores","nonMaxSuppression","float32"),i=Cr(a,o,n,r,s),p={maxOutputSize:n=i.maxOutputSize,iouThreshold:r=i.iouThreshold,scoreThreshold:s=i.scoreThreshold};return u.BV.runKernel(l.uv1,{boxes:a,scores:o},p)}});var $r=n(3337);const Ar=async function(e,t,n,r=.5,s=Number.NEGATIVE_INFINITY){const a=(0,c._1)(e,"boxes","nonMaxSuppressionAsync"),o=(0,c._1)(t,"scores","nonMaxSuppressionAsync"),i=Cr(a,o,n,r,s);n=i.maxOutputSize,r=i.iouThreshold,s=i.scoreThreshold;const u=await Promise.all([a.data(),o.data()]),l=u[0],p=u[1],{selectedIndices:h}=(0,$r.GP)(l,p,n,r,s);return a!==e&&a.dispose(),o!==t&&o.dispose(),_n(h,"int32")};const Dr=(0,h.op)({nonMaxSuppressionWithScore_:function(e,t,n,r=.5,s=Number.NEGATIVE_INFINITY,a=0){const o=(0,c._1)(e,"boxes","nonMaxSuppression"),i=(0,c._1)(t,"scores","nonMaxSuppression"),p=Cr(o,i,n,r,s,a),h={boxes:o,scores:i},d={maxOutputSize:n=p.maxOutputSize,iouThreshold:r=p.iouThreshold,scoreThreshold:s=p.scoreThreshold,softNmsSigma:a=p.softNmsSigma},f=u.BV.runKernel(l.W0H,h,d);return{selectedIndices:f[0],selectedScores:f[1]}}});const _r=async function(e,t,n,r=.5,s=Number.NEGATIVE_INFINITY,a=0){const o=(0,c._1)(e,"boxes","nonMaxSuppressionAsync"),i=(0,c._1)(t,"scores","nonMaxSuppressionAsync"),u=Cr(o,i,n,r,s,a);n=u.maxOutputSize,r=u.iouThreshold,s=u.scoreThreshold,a=u.softNmsSigma;const l=await Promise.all([o.data(),i.data()]),p=l[0],h=l[1],{selectedIndices:d,selectedScores:f}=(0,$r.pA)(p,h,n,r,s,a);return o!==e&&o.dispose(),i!==t&&i.dispose(),{selectedIndices:_n(d,"int32"),selectedScores:_n(f)}};const Rr=(0,h.op)({nonMaxSuppressionPadded_:function(e,t,n,r=.5,s=Number.NEGATIVE_INFINITY,a=!1){const o=(0,c._1)(e,"boxes","nonMaxSuppression"),i=(0,c._1)(t,"scores","nonMaxSuppression"),p=Cr(o,i,n,r,s,null),h={boxes:o,scores:i},d={maxOutputSize:p.maxOutputSize,iouThreshold:p.iouThreshold,scoreThreshold:p.scoreThreshold,padToMaxOutputSize:a},f=u.BV.runKernel(l.cye,h,d);return{selectedIndices:f[0],validOutputs:f[1]}}});const Fr=async function(e,t,n,r=.5,s=Number.NEGATIVE_INFINITY,a=!1){const o=(0,c._1)(e,"boxes","nonMaxSuppressionAsync"),i=(0,c._1)(t,"scores","nonMaxSuppressionAsync"),u=Cr(o,i,n,r,s,null),l=u.maxOutputSize,p=u.iouThreshold,h=u.scoreThreshold,[d,f]=await Promise.all([o.data(),i.data()]),{selectedIndices:m,validOutputs:g}=(0,$r.qP)(d,f,l,p,h,a);return o!==e&&o.dispose(),i!==t&&i.dispose(),{selectedIndices:_n(m,"int32"),validOutputs:(0,nn.i)(g,"int32")}};var Or=n(3305),Mr=n(5098);const Br=(0,h.op)({threshold_:function(e,t="binary",n=!1,r=.5){const s=(0,c._1)(e,"image","threshold"),a=s.shape[0]*s.shape[1];let o,u,l,h,d=(0,A.d)(_n([r]),255);if(p.hu(3===s.rank,(()=>`Error in threshold: image must be rank 3,but got rank ${s.rank}.`)),p.hu(3===s.shape[2]||1===s.shape[2],(()=>`Error in threshold: image color channel must be equal to 3 or 1but got ${s.shape[2]}.`)),p.hu("int32"===s.dtype||"float32"===s.dtype,(()=>`Error in dtype: image dtype must be int32 or float32,but got dtype ${s.dtype}.`)),p.hu("otsu"===t||"binary"===t,(()=>`Method must be binary or otsu, but was ${t}`)),3===s.shape[2]){[o,u,l]=(0,vn.V)(s,[1,1,1],-1);const e=(0,A.d)(o,.2989),t=(0,A.d)(u,.587),n=(0,A.d)(l,.114);h=(0,i.I)((0,i.I)(e,t),n)}else h=e;if("otsu"===t){d=function(e,t){let n,r,s,a,o,u,l=_n([-1]),c=_n([0]),p=_n([0]);for(let h=0;h<e.size-1;h++){n=(0,_.t)(e,0,h+1),r=(0,_.t)(e,h+1),o=(0,de.h)((0,En.S)(n),t),u=(0,de.h)((0,En.S)(r),t);const d=(0,En.S)((0,A.d)(n,Gt(0,n.size)));s=(0,de.h)(d,(0,En.S)(n));const f=(0,Te.h)(r.shape,n.size),m=(0,i.I)(Gt(0,r.size),f),g=(0,A.d)(r,m);a=(0,de.h)((0,En.S)(g),(0,En.S)(r));const y=(0,ft.l)(s,a),b=(0,ft.l)(s,a),x=(0,A.d)(o,u);p=(0,A.d)((0,A.d)(x,y),b);const w=(0,Ae.p)(p,c);c=(0,Hn.a)(w,p,c),l=(0,Hn.a)(w,_n([h]),l)}return l}(P((0,S.p)((0,en.N)(h),"int32"),(0,An.X)([]),256),a)}const f=n?(0,Le.z)(h,d):(0,Ae.p)(h,d);return(0,S.p)((0,A.d)(f,255),"int32")}});const Lr=(0,h.op)({transform_:function(e,t,n="nearest",r="constant",s=0,a){const o=(0,c._1)(e,"image","transform","float32"),i=(0,c._1)(t,"transforms","transform","float32");p.hu(4===o.rank,(()=>`Error in transform: image must be rank 4,but got rank ${o.rank}.`)),p.hu(2===i.rank&&(i.shape[0]===o.shape[0]||1===i.shape[0])&&8===i.shape[1],(()=>"Error in transform: Input transform should be batch x 8 or 1 x 8")),p.hu(null==a||2===a.length,(()=>`Error in transform: outputShape must be [height, width] or null, but got ${a}.`));const h={image:o,transforms:i},d={interpolation:n,fillMode:r,fillValue:s,outputShape:a};return u.BV.runKernel(l.wx7,h,d)}});const Wr=(0,h.op)({bandPart_:function(e,t,n){(0,p.hu)(t%1===0,(()=>`bandPart(): numLower must be an integer, got ${t}.`)),(0,p.hu)(n%1===0,(()=>`bandPart(): numUpper must be an integer, got ${n}.`));const r=(0,c._1)(e,"a","bandPart");(0,p.hu)(r.rank>=2,(()=>`bandPart(): Rank must be at least 2, got ${r.rank}.`));const s=r.shape,[a,o]=r.shape.slice(-2);if(!(t<=a))throw new Error(`bandPart(): numLower (${t}) must not be greater than the number of rows (${a}).`);if(!(n<=o))throw new Error(`bandPart(): numUpper (${n}) must not be greater than the number of columns (${o}).`);t<0&&(t=a),n<0&&(n=o);const i=(0,T.X)(Gt(0,a,1,"int32"),[-1,1]),u=Gt(0,o,1,"int32"),l=(0,ft.l)(i,u),h=(0,je.H)((0,Le.z)(l,(0,nn.i)(+t,"int32")),(0,De.b)(l,(0,nn.i)(-n,"int32"))),d=(0,qn.l)([a,o],r.dtype);return(0,T.X)((0,Sn.k)((0,zn.H)((0,T.X)(r,[-1,a,o])).map((e=>(0,Hn.a)(h,e,d)))),s)}});const Pr=(0,h.op)({gramSchmidt_:function(e){let t;if(Array.isArray(e)){t=!1,(0,p.hu)(null!=e&&e.length>0,(()=>"Gram-Schmidt process: input must not be null, undefined, or empty"));const n=e[0].shape[0];for(let t=1;t<e.length;++t)(0,p.hu)(e[t].shape[0]===n,(()=>
1`Gram-Schmidt: Non-unique lengths found in the input vectors: (${e[t].shape[0]} vs. ${n})`))}else t=!0,e=(0,vn.V)(e,e.shape[0],0).map((e=>(0,Nn.L)(e,[0])));(0,p.hu)(e.length<=e[0].shape[0],(()=>`Gram-Schmidt: Number of vectors (${e.length}) exceeds number of dimensions (${e[0].shape[0]}).`));const n=[],r=e;for(let s=0;s<e.length;++s)n.push(u.BV.tidy((()=>{let e=r[s];if(s>0)for(let t=0;t<s;++t){const r=(0,A.d)((0,En.S)((0,A.d)(n[t],e)),n[t]);e=(0,ft.l)(e,r)}return(0,de.h)(e,(0,Zn.K)(e,"euclidean"))})));return t?(0,Sn.k)(n,0):n}});var Ur=n(4368);function zr(e,t=!1){return u.BV.tidy((()=>{(0,p.hu)(2===e.shape.length,(()=>`qr2d() requires a 2D Tensor, but got a ${e.shape.length}D Tensor.`));const n=e.shape[0],r=e.shape[1];let s=Se(n),a=(0,j.d)(e);const o=Rn([[1]],[1,1]);let i=(0,j.d)(o);const l=n>=r?r:n;for(let e=0;e<l;++e){const t=a,l=i,c=s;[i,a,s]=u.BV.tidy((()=>{const t=(0,_.t)(a,[e,e],[n-e,1]),u=(0,Zn.K)(t),l=(0,_.t)(a,[e,e],[1,1]),c=(0,Hn.a)((0,Ae.p)(l,0),Rn([[-1]]),Rn([[1]])),p=(0,ft.l)(l,(0,A.d)(c,u)),h=(0,de.h)(t,p);i=1===h.shape[0]?(0,j.d)(o):(0,E.z)([o,(0,_.t)(h,[1,0],[h.shape[0]-1,h.shape[1]])],0);const d=(0,bt.W)((0,de.h)((0,$.O)(c,p),u)),f=(0,_.t)(a,[e,0],[n-e,r]),m=(0,A.d)(d,i),g=(0,Yn.p)(i);if(0===e)a=(0,ft.l)(f,(0,$.O)(m,(0,$.O)(g,f)));else{const t=(0,ft.l)(f,(0,$.O)(m,(0,$.O)(g,f)));a=(0,E.z)([(0,_.t)(a,[0,0],[e,r]),t],0)}const y=(0,Yn.p)(m),b=(0,_.t)(s,[0,e],[n,s.shape[1]-e]);if(0===e)s=(0,ft.l)(b,(0,$.O)((0,$.O)(b,i),y));else{const t=(0,ft.l)(b,(0,$.O)((0,$.O)(b,i),y));s=(0,E.z)([(0,_.t)(s,[0,0],[n,e]),t],1)}return[i,a,s]})),(0,Ur.B9)([t,l,c])}return!t&&n>r&&(s=(0,_.t)(s,[0,0],[n,r]),a=(0,_.t)(a,[0,0],[r,r])),[s,a]}))}const Vr=(0,h.op)({qr_:function(e,t=!1){if((0,p.hu)(e.rank>=2,(()=>`qr() requires input tensor to have a rank >= 2, but got rank ${e.rank}`)),2===e.rank)return zr(e,t);{const n=e.shape.slice(0,e.shape.length-2).reduce(((e,t)=>e*t)),r=(0,zn.H)((0,T.X)(e,[n,e.shape[e.shape.length-2],e.shape[e.shape.length-1]]),0),s=[],a=[];r.forEach((e=>{const[n,r]=zr(e,t);s.push(n),a.push(r)}));return[(0,T.X)((0,Sn.k)(s,0),e.shape),(0,T.X)((0,Sn.k)(a,0),e.shape)]}}});var Gr;!function(e){e[e.NONE=0]="NONE",e[e.MEAN=1]="MEAN",e[e.SUM=2]="SUM",e[e.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"}(Gr||(Gr={}));const Hr=(0,h.op)({computeWeightedLoss_:function(e,t,n=Gr.SUM_BY_NONZERO_WEIGHTS){const r=(0,c._1)(e,"losses","computeWeightedLoss");let s=null;
1null!=t&&(s=(0,c._1)(t,"weights","computeWeightedLoss"));const a=null==s?r:(0,A.d)(r,s);if(n===Gr.NONE)return a;if(n===Gr.SUM)return(0,En.S)(a);if(n===Gr.MEAN){if(null==s)return(0,st.J)(a);{const e=r.size/s.size,t=(0,de.h)((0,En.S)(a),(0,En.S)(s));return e>1?(0,de.h)(t,(0,nn.i)(e)):t}}if(n===Gr.SUM_BY_NONZERO_WEIGHTS){if(null==s)return(0,de.h)((0,En.S)(a),(0,nn.i)(r.size));{const e=(0,A.d)(s,(0,at.i)(r.shape)),t=(0,S.p)((0,En.S)((0,xt.Q)(e,(0,nn.i)(0))),"float32");return(0,de.h)((0,En.S)(a),t)}}throw Error(`Unknown reduction: ${n}`)}});const jr=(0,h.op)({absoluteDifference_:function(e,t,n,r=Gr.SUM_BY_NONZERO_WEIGHTS){const a=(0,c._1)(e,"labels","absoluteDifference"),o=(0,c._1)(t,"predictions","absoluteDifference");let i=null;null!=n&&(i=(0,c._1)(n,"weights","absoluteDifference")),(0,p.k5)(a.shape,o.shape,"Error in absoluteDifference: ");const u=(0,s.W)((0,ft.l)(a,o));return Hr(u,i,r)}});const Xr=(0,h.op)({cosineDistance_:function(e,t,n,r,s=Gr.SUM_BY_NONZERO_WEIGHTS){const a=(0,c._1)(e,"labels","cosineDistance"),o=(0,c._1)(t,"predictions","cosineDistance");let i=null;null!=r&&(i=(0,c._1)(r,"weights","cosineDistance")),(0,p.k5)(a.shape,o.shape,"Error in cosineDistance: ");const u=(0,nn.i)(1),l=(0,ft.l)(u,(0,En.S)((0,A.d)(a,o),n,!0));return Hr(l,i,s)}});const qr=(0,h.op)({hingeLoss_:function(e,t,n,r=Gr.SUM_BY_NONZERO_WEIGHTS){let s=(0,c._1)(e,"labels","hingeLoss");const a=(0,c._1)(t,"predictions","hingeLoss");let o=null;null!=n&&(o=(0,c._1)(n,"weights","hingeLoss")),(0,p.k5)(s.shape,a.shape,"Error in hingeLoss: ");const i=(0,nn.i)(1);s=(0,ft.l)((0,A.d)((0,nn.i)(2),s),i);const u=(0,Xt.U)((0,ft.l)(i,(0,A.d)(s,a)));return Hr(u,o,r)}});const Kr=(0,h.op)({huberLoss_:function(e,t,n,r=1,a=Gr.SUM_BY_NONZERO_WEIGHTS){const o=(0,c._1)(e,"labels","huberLoss"),u=(0,c._1)(t,"predictions","huberLoss");let l=null;null!=n&&(l=(0,c._1)(n,"weights","huberLoss")),(0,p.k5)(o.shape,u.shape,"Error in huberLoss: ");const h=(0,nn.i)(r),d=(0,s.W)((0,ft.l)(u,o)),f=(0,lt.L)(d,h),m=(0,ft.l)(d,f),g=(0,i.I)((0,A.d)((0,nn.i)(.5),(0,dt.h)(f)),(0,A.d)(h,m));return Hr(g,l,a)}});const Qr=(0,h.op)({logLoss_:function(e,t,n,r=1e-7,s=Gr.SUM_BY_NONZERO_WEIGHTS){const a=(0,c._1)(e,"labels","logLoss"),o=(0,c._1)(t,"predictions","logLoss");let u=null;null!=n&&(u=(0,c._1)(n,"weights","logLoss")),(0,p.k5)(a.shape,o.shape,"Error in logLoss: ");const l=(0,nn.i)(1),h=(0,nn.i)(r),d=(0,bt.W)((0,A.d)(a,(0,Ue.c)((0,i.I)(o,h)))),f=(0,A.d)((0,ft.l)(l,a),(0,Ue.c)((0,i.I)((0,ft.l)(l,o),h))),m=(0,ft.l)(d,f);return Hr(m,u,s)}});const Yr=(0,h.op)({meanSquaredError_:function(e,t,n,r=Gr.SUM_BY_NONZERO_WEIGHTS){const s=(0,c._1)(e,"labels","meanSquaredError"),a=(0,c._1
1)(t,"predictions","meanSquaredError");let o=null;null!=n&&(o=(0,c._1)(n,"weights","meanSquaredError")),(0,p.k5)(s.shape,a.shape,"Error in meanSquaredError: ");const i=(0,In.$)(s,a);return Hr(i,o,r)}});const Zr=(0,h.op)({sigmoidCrossEntropy_:function(e,t,n,r=0,a=Gr.SUM_BY_NONZERO_WEIGHTS){let o=(0,c._1)(e,"multiClassLabels","sigmoidCrossEntropy");const u=(0,c._1)(t,"logits","sigmoidCrossEntropy");let l=null;if(null!=n&&(l=(0,c._1)(n,"weights","sigmoidCrossEntropy")),(0,p.k5)(o.shape,u.shape,"Error in sigmoidCrossEntropy: "),r>0){const e=(0,nn.i)(r),t=(0,nn.i)(1),n=(0,nn.i)(.5);o=(0,i.I)((0,A.d)(o,(0,ft.l)(t,e)),(0,A.d)(n,e))}const h=function(e,t){const n=(0,c._1)(e,"labels","sigmoidCrossEntropyWithLogits"),r=(0,c._1)(t,"logits","sigmoidCrossEntropyWithLogits");(0,p.k5)(n.shape,r.shape,"Error in sigmoidCrossEntropyWithLogits: ");const a=(0,Xt.U)(r),o=(0,A.d)(r,n),u=(0,ze.K)((0,ve.Q)((0,bt.W)((0,s.W)(r))));return(0,i.I)((0,ft.l)(a,o),u)}(o,u);return Hr(h,l,a)}});const Jr=(0,h.op)({softmaxCrossEntropy_:function(e,t,n,r=0,s=Gr.SUM_BY_NONZERO_WEIGHTS){let a=(0,c._1)(e,"onehotLabels","softmaxCrossEntropy");const o=(0,c._1)(t,"logits","softmaxCrossEntropy");let u=null;if(null!=n&&(u=(0,c._1)(n,"weights","softmaxCrossEntropy")),(0,p.k5)(a.shape,o.shape,"Error in softmaxCrossEntropy: "),r>0){const e=(0,nn.i)(r),t=(0,nn.i)(1),n=(0,nn.i)(a.shape[1]);a=(0,i.I)((0,A.d)(a,(0,ft.l)(t,e)),(0,de.h)(e,n))}const l=function(e,t,n=-1){if(-1===n&&(n=t.rank-1),n!==t.rank-1)throw Error(`Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank ${t.rank} and dim was ${n}`);return(0,lr.cb)(((e,t,r)=>{const s=(0,He.l)(t,[n],!0),a=(0,ft.l)((0,S.p)(t,"float32"),s);r([e,a]);const o=(0,bt.W)((0,A.d)(a,e));return{value:(0,En.S)(o,[n]),gradFunc:(e,t)=>{const[r,s]=t,a=(0,ht.rv)(e.shape,[n]);return[(0,A.d)((0,T.X)(e,a),(0,ft.l)((0,S.p)(r,"float32"),(0,ve.Q)(s))),(0,A.d)((0,T.X)(e,a),(0,ft.l)((0,ve.Q)(s),(0,S.p)(r,"float32")))]}}}))(e,t)}(a,o);return Hr(l,u,s)}});const es=(0,h.op)({sparseFillEmptyRows_:function(e,t,n,r){const s=(0,c._1)(e,"indices","sparseFillEmptyRows","int32"),a=(0,c._1
1)(t,"values","sparseFillEmptyRows"),o=(0,c._1)(n,"denseShape","sparseFillEmptyRows","int32"),i=(0,c._1)(r,"defaultValue","sparseFillEmptyRows",a.dtype);if(2!==s.rank)throw new Error(`Indices should be Tensor2D but received shape\n        ${s.shape}`);if(1!==a.rank)throw new Error(`Values should be Tensor1D but received shape ${a.shape}`);if(1!==o.rank)throw new Error(`Dense shape should be Tensor1D but received shape ${o.shape}`);if(0!==i.rank)throw new Error(`Default value should be a scalar but received shape ${i.shape}`);const p={indices:s,values:a,denseShape:o,defaultValue:i},h=u.BV.runKernel(l.O3z,p);return{outputIndices:h[0],outputValues:h[1],emptyRowIndicator:h[2],reverseIndexMap:h[3]}}});const ts=(0,h.op)({sparseReshape_:function(e,t,n){const r=(0,c._1)(e,"inputIndices","sparseReshape","int32"),s=(0,c._1)(t,"inputShape","sparseReshape","int32"),a=(0,c._1)(n,"newShape","sparseReshape","int32");if(2!==r.rank)throw new Error(`Input indices should be Tensor2D but received shape\n        ${r.shape}`);if(1!==s.rank)throw new Error(`Input shape should be Tensor1D but received shape ${s.shape}`);if(1!==a.rank)throw new Error(`New shape should be Tensor1D but received shape ${a.shape}`);const o={inputIndices:r,inputShape:s,newShape:a},i=u.BV.runKernel(l.nhH,o);return{outputIndices:i[0],outputShape:i[1]}}});const ns=(0,h.op)({sparseSegmentMean_:function(e,t,n){const r=(0,c._1)(e,"data","sparseSegmentMean"),s=(0,c._1)(t,"indices","sparseSegmentMean","int32"),a=(0,c._1
1)(n,"segmentIds","sparseSegmentMean","int32");if(r.rank<1)throw new Error("Data should be at least 1 dimensional but received scalar");if(1!==s.rank)throw new Error(`Indices should be Tensor1D but received shape\n          ${s.shape}`);if(1!==a.rank)throw new Error(`Segment ids should be Tensor1D but received shape\n          ${a.shape}`);const o={data:r,indices:s,segmentIds:a};return u.BV.runKernel(l.w3H,o)}});const rs=(0,h.op)({sparseSegmentSum_:function(e,t,n){const r=(0,c._1)(e,"data","sparseSegmentSum"),s=(0,c._1)(t,"indices","sparseSegmentSum","int32"),a=(0,c._1)(n,"segmentIds","sparseSegmentSum","int32");if(r.rank<1)throw new Error("Data should be at least 1 dimensional but received scalar");if(1!==s.rank)throw new Error(`Indices should be Tensor1D but received shape\n         ${s.shape}`);if(1!==a.rank)throw new Error(`Segment ids should be Tensor1D but received shape\n         ${a.shape}`);const o={data:r,indices:s,segmentIds:a};return u.BV.runKernel(l.ZjV,o)}});const ss=(0,h.op)({stringNGrams_:function(e,t,n,r,s,a,o,i){const p=(0,c._1)(e,"data","stringNGrams","string");if("string"!==p.dtype)throw new Error("Data must be of datatype string");if(1!==p.shape.length)throw new Error(`Data must be a vector, saw: ${p.shape}`);const h=(0,c._1)(t,"dataSplits","stringNGrams");if("int32"!==h.dtype)throw new Error("Data splits must be of datatype int32");const d={separator:n,nGramWidths:r,leftPad:s,rightPad:a,padWidth:o,preserveShortSequences:i},f={data:p,dataSplits:h},m=u.BV.runKernel(l._JP,f,d);return{nGrams:m[0],nGramsSplits:m[1]}}});const as=(0,h.op)({stringSplit_:function(e,t,n=!0){const r=(0,c._1)(e,"input","stringSplit","string"),s=(0,c._1)(t,"delimiter","stringSplit","string");if(1!==r.rank)throw new Error(`Input should be Tensor1D but received shape ${r.shape}`);if(0!==s.rank)throw new Error(`Delimiter should be a scalar but received shape ${s.shape}`);const a={skipEmpty:n},o={input:r,delimiter:s},i=u.BV.runKernel(l.s1s,o,a);return{indices:i[0],values:i[1],shape:i[2]}}});const os=(0,h.op)({stringToHashBucketFast_:function(e,t){const n=(0,c._1)(e,"input","stringToHashBucketFast","string"),r={numBuckets:t};if(t<=0)throw new Error("Number of buckets must be at least 1");const s={input:n};return u.BV.runKernel(l.XkS,s,r)}}),is={fft:yn.k,ifft:bn.S,rfft:wn.Q,irfft:xn.w},us={hammingWindow:xr,hannWindow:wr,frame:vr,stft:kr},ls={flipLeftRight:Nr,grayscaleToRGB:Sr,resizeNearestNeighbor:Mr.j,resizeBilinear:Or.I,rotateWithOffset:Tr,cropAndResize:Ir,nonMaxSuppression:Er,nonMaxSuppressionAsync:Ar,nonMaxSuppressionWithScore:Dr,nonMaxSuppressionWithScoreAsync:_r,nonMaxSuppressionPadded:Rr,nonMaxSuppressionPaddedAsync:Fr,threshold:Br,transform:Lr},cs={bandPart:Wr,gramSchmidt:Pr,qr:Vr},ps={absoluteDifference:jr,computeWeightedLoss:Hr,cosineDistance:Xr,hingeLoss:qr,huberLoss:Kr,logLoss:Qr,meanSquaredError:Yr,sigmoidCrossEntropy:Zr,softmaxCrossEntropy:Jr},hs={sparseFillEmptyRows:es,sparseReshape:ts,sparseSegmentMean:ns,sparseSegmentSum:rs},ds={stringNGrams:ss,stringSplit:as,stringToHashBucketFast:os}},9682:function(e,t,n){"use strict";n.d(t,{v:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({pad_:function(e,t,n=0){const o=(0,a._1)(e,"x","pad");if(0===o.rank)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");const i={paddings:t,constantValue:n},u={x:o};return r.BV.runKernel(s.lyA,u,i)}})},5860:function(e,t,n){"use strict";n.d(t,{d:function(){return h}});var r=n(3740),s=n(569),a=n(5176),o=n(8441),i=n(2582),u=n(1174),l=n(2668),c=n(4968),p=n(7918);const h=(0,l.op)({pool_:function(e,t,n,l,h,d,f){null==h&&(h=[1,1]),null==d&&(d=1),0===l&&(l="valid");const m=(0,r._1)(e,"x","maxPool");let g=m,y=!1;3===m.rank&&(y=!0,g=(0,c.X)(m,[1,m.shape[0],m.shape[1],m.shape[2]])),s.hu(i.jT(d,h),(()=>`Error in pool: Either strides or dilations must be 1. Got strides ${d} and dilations '${h}'`));const b=i.Xw(g.shape,t,d,h,l),x=[b.dilationHeight,b.dilationWidth];let w;w="same"===l?function(e,t){const n=e.map(((e,n)=>e+(e-1)*(t[n]-1))).map((e=>e-1)),r=n.map((e=>Math.floor(e/2))),s=n.map(((e,t)=>e-r[t]));return n.map(((e,t)=>[r[t],s[t]]))}([b.filterHeight,b.filterWidth],x):[[0,0],[0,0]];const v=1===x[0]&&1===x[1],[k,I]=function(e,t,n){const r=n.map((e=>e[0])),s=n.map((e=>e[1])),a=e.concat(r,s),o=t.map(((e,t)=>(e-a[t]%e)%e)),i=s.map(((e,t)=>e+o[t])),u=t.map(((e,t)=>
1[r[t],i[t]])),l=t.map(((e,t)=>[0,o[t]]));return[u,l]}([b.inHeight,b.inWidth],x,w),N=v?l:"valid",S=v?g:(0,p.f)(g,x,k),T=("avg"===n?()=>(0,a.w)(S,t,d,N,f):()=>(0,u._)(S,t,d,N,f))(),C=v?T:(0,o.E)(T,x,I);return y?(0,c.X)(C,[C.shape[1],C.shape[2],C.shape[3]]):C}})},3453:function(e,t,n){"use strict";n.d(t,{s:function(){return i}});var r=n(7097),s=n(9121),a=n(747),o=n(3740);const i=(0,n(2668).op)({pow_:function(e,t){let n=(0,o._1)(e,"base","pow"),i=(0,o._1)(t,"exp","pow");[n,i]=(0,a.makeTypesMatch)(n,i);const u={a:n,b:i};return r.BV.runKernel(s.pe_,u)}})},8151:function(e,t,n){"use strict";n.d(t,{A:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({prelu_:function(e,t){const n={x:(0,a._1)(e,"x","prelu"),alpha:(0,a._1)(t,"alpha","prelu")};return r.BV.runKernel(s.o0g,n)}})},9798:function(e,t,n){"use strict";function r(e,t=!1){console.log(e.toString(t))}n.d(t,{S:function(){return r}})},9451:function(e,t,n){"use strict";n.d(t,{W:function(){return i}});var r=n(7097),s=n(9121),a=n(3740),o=n(2271);const i=(0,n(2668).op)({prod_:function(e,t=null,n=!1){let i=(0,a._1)(e,"x","prod");"bool"===i.dtype&&(i=(0,o.p)(i,"int32"));const u={x:i},l={axis:t,keepDims:n};return r.BV.runKernel(s.DlI,u,l)}})},766:function(e,t,n){"use strict";n.d(t,{k:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({real_:function(e){const t={input:(0,a._1)(e,"input","real")};return r.BV.runKernel(s.xJR,t)}})},9036:function(e,t,n){"use strict";n.d(t,{M:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({reciprocal_:function(e){const t={x:(0,a._1)(e,"x","reciprocal")};return r.BV.runKernel(s.$HU,t)}})},7409:function(e,t,n){"use strict";n.d(t,{U:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({relu_:function(e){const t={x:(0,a._1)(e,"x","relu")};return r.BV.runKernel(s.qkr,t)}})},3582:function(e,t,n){"use strict";n.d(t,{b:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({relu6_:function(e){const t={x:(0,a._1)(e,"x","relu6")};return r.BV.runKernel(s.SbG,t)}})},4968:function(e,t,n){"use strict";n.d(t,{X:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({reshape_:function(e,t){const n={x:(0,a._1)(e,"x","reshape","string_or_numeric")},o={shape:t};return r.BV.runKernel(s.HZH,n,o)}})},7486:function(e,t,n){"use strict";n.d(t,{G:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({reverse_:function(e,t){const n={x:(0,a._1)(e,"x","reverse")},o={dims:t};return r.BV.runKernel(s.mKl,n,o)}})},7809:function(e,t,n){"use strict";n.d(t,{N:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({round_:function(e){const t={x:(0,a._1)(e,"x","round")};return r.BV.runKernel(s.e07,t)}})},2634:function(e,t,n){"use strict";n.d(t,{b:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({rsqrt_:function(e){const t={x:(0,a._1)(e,"x","rsqrt","float32")};return r.BV.runKernel(s.bV0,t)}})},9494:function(e,t,n){"use strict";n.d(t,{i:function(){return a}});var r=n(569),s=n(7852);function a(e,t){if(((0,r.fU)(e)&&"string"!==t||Array.isArray(e))&&"complex64"!==t)throw new Error("Error creating a new Scalar: value must be a primitive (number|boolean|string)");if("string"===t&&(0,r.fU)(e)&&!(e instanceof Uint8Array))throw new Error("When making a scalar from encoded string, the value must be `Uint8Array`.");return(0,s.H)(e,[],[],t)}},3028:function(e,t,n){"use strict";n.d(t,{l5:function(){return s},b0:function(){return a},SU:function(){return o}});var r=n(569);function s(e,t,n){const r=t.rank>1?t.shape[t.rank-1]:1,s=t.rank>1?t.rank-1:1,a=`Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: ${n.shape}, indices.shape: ${t.shape}, shape: ${e}, sliceDim: ${r}, and batchDim: ${s}.`;if(n.rank<s)throw new Error(a+` update.rank < ${s}. `);if(e.length<r+(n.rank-s))throw new Error(a+` Output shape length < ${r+(n.rank-s)}`);if(n.rank!==s+e.length-r)throw new Error(a+" update.rank != "+(s+e.length-r));for(let o=0;o<s;++o)if(n.shape[o]!==t.shape[o])throw new Error(a+` updates.shape[${o}] (${n.shape[o]}
1) != indices.shape[${o}] (${t.shape[o]}).`);for(let o=0;o<n.rank-s;++o)if(n.shape[o+s]!==e[o+r])throw new Error(a+` updates.shape[${o+s}] (${n.shape[o+s]}) != shape[${o+s}] (${e[o+s]})`)}function a(e,t,n){if(t.rank<1)throw new Error(`tf.scatterND() expects the indices to be rank 1 or higher, but the rank was ${t.rank}.`);if(e.rank<1)throw new Error(`tf.scatterND() expects the updates to be rank 1 or higher, but the rank was ${e.rank}.`);if("int32"!==t.dtype)throw new Error(`The dtype of 'indices' should be int32, but got dtype: ${t.dtype}`);if(n.length<1)throw new Error(`Output rank must be greater or equal to 1, but got shape: ${n}`);if(0===n.length){if(0===t.size)throw new Error(`Indices specified for empty output. indices shape: ${t.shape}`);if(0===e.size)throw new Error(`Updates specified for empty output. updates shape: ${e.shape}`)}s(n,t,e)}function o(e,t,n){const s=t.shape.length,a=s>1?t.shape[s-1]:1,o=n.length;let i=1;for(let r=a;r<o;++r)i*=n[r];const u=a<1?1:a;return{sliceRank:a,numUpdates:(0,r.NA)(t.shape)/u,sliceSize:i,strides:[...(0,r.e3)(n.slice(0,a)),1],outputSize:(0,r.NA)(n)}}},5503:function(e,t,n){"use strict";n.d(t,{U:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({selu_:function(e){const t={x:(0,a._1)(e,"x","selu")};return r.BV.runKernel(s.oFR,t)}})},3179:function(e,t,n){"use strict";n.d(t,{y:function(){return r},$:function(){return s}});const r=1.7580993408473768,s=1.0507009873554805},8678:function(e,t,n){"use strict";n.d(t,{U:function(){return l}});var r=n(3740),s=n(569),a=n(4794),o=n(4718),i=n(2668),u=n(4968);const l=(0,i.op)({separableConv2d_:function(e,t,n,i,l,c=[1,1],p="NHWC"){const h=(0,r._1)(e,"x","separableConv2d"),d=(0,r._1)(t,"depthwiseFilter","separableConv2d"),f=(0,r._1)(n,"pointwiseFilter","separableConv2d");let m=h,g=!1;if(3===h.rank&&(g=!0,m=(0,u.X)(h,[1,h.shape[0],h.shape[1],h.shape[2]])),"NCHW"===p)throw new Error("separableConv2d currently does not support dataFormat NCHW; only NHWC is supported");s.hu(4===m.rank,(()=>`Error in separableConv2d: input must be rank 4, but got rank ${m.rank}.`)),s.hu(4===d.rank,(()=>`Error in separableConv2d: depthwise filter must be rank 4, but got rank ${d.rank}.`)),s.hu(4===f.rank,(()=>`Error in separableConv2d: pointwise filter must be rank 4, but got rank ${d.rank}.`)),s.hu(1===f.shape[0],(()=>`Error in separableConv2d: the first dimension of pointwise filter  must be 1, but got ${f.shape[0]}.`)),s.hu(1===f.shape[1],(()=>`Error in separableConv2d: the second dimension of pointwise filter must be 1, but got ${f.shape[1]}.`));const y=d.shape[2],b=d.shape[3];s.hu(f.shape[2]===y*b,(()=>`Error in separableConv2d: the third dimension of pointwise filter must be ${y*b}, but got ${f.shape[2]}.`));const x=(0,o.B)(m,d,i,l,p,c),w=(0,a.T)(x,f,1,"valid",p);return g?(0,u.X)(w,[w.shape[1],w.shape[2],w.shape[3]]):w}})},625:function(e,t,n){"use strict";n.d(t,{X:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({sigmoid_:function(e){const t={x:(0,a._1)(e,"x","sigmoid","float32")};return r.BV.runKernel(s.a5O,t)}})},4434:function(e,t,n){"use strict";n.d(t,{X:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({sign_:function(e){const t={x:(0,a._1)(e,"x","sign")};return r.BV.runKernel(s.i5y,t)}})},9331:function(e,t,n){"use strict";n.d(t,{O:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({sin_:function(e){const t={x:(0,a._1)(e,"x","sin","float32")};return r.BV.runKernel(s.RQH,t)}})},3254:function(e,t,n){"use strict";n.d(t,{R:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({sinh_:function(e){const t={x:(0,a._1)(e,"x","sinh")};return r.BV.runKernel(s.wYB,t)}})},2676:function(e,t,n){"use strict";n.d(t,{t:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({slice_:function(e,t,n){const o=(0,a._1)(e,"x","slice","string_or_numeric");if(0===o.rank)throw new Error("Slicing scalar is not possible");const i={x:o},u={begin:t,size:n};return r.BV.runKernel(s.p2w,i,u)}})},7650:function(e,t,n){"use strict";n.r(t),n.d(t,{assertParamsValid:function(){return s},maskToAxes:function(){return a},computeOutShape:function(){return o},stridesWithElidedDims:function(){return i},getNormalizedAxes:function(){return c},startIndicesWithElidedDims:function(){return p},stopIndicesWithElidedDims:function(){return h},stridesForAxis:function(){return d},startForAxis:function(){return f},stopForAxis:function(){return m},isSliceContinous:function(){return g},computeFlatOffset:function(){return y},parseSliceParams:function(){return b},sliceInfo:function(){return x}});var r=n(569);function s(e,t,n){const s=e.shape.length;r.hu(s===t.length,(()=>`Error in slice${s}D: Length of begin ${t} must match the rank of the array (${s}).`)),r.hu(s===n.length,(()=>`Error in slice${s}D: Length of size ${n} must match the rank of the array (${s}).`));for(let a=0;a<s;++a)r.hu(t[a]+n[a]<=e.shape[a],(()=>`Error in slice${s}D: begin[${a}] + size[${a}] (${t[a]+n[a]}) would overflow input.shape[${a}] (${e.shape[a]})`))}function a(e){const t=[];let n=0;for(;e>0;)1&e&&t.push(n),e/=2,n++;return t}function o(e,t,n){const r=[];for(let s=0;s<e.length;s++)r[s]=Math.ceil((t[s]-e[s])/n[s]);return r}function i(e,t,n,r){const s=[...e];for(let a=s.length;a<r.length;a++)s.push(1);for(let a=0;a<n;a++)0===a?s[t]=1:(s.splice(t,0,1),s.pop());return s}function u(e,t,n){return n<=e?n:n-(t-1)}function l(e,t){const n=[];for(let r=0;r<e;r++)n.push(t+r);return n}function c(e,t,n,r,s,a,o,u,l){const c=e.length;let g=new Array(c),y=new Array(c),b=new Array(c);if(t.length&&n>0){const l=t[0],c=n+1;g=p(o,l,c,r,e),y=h(u,l,c,s,e),b=i(a,l,c,e)}else for(let i=0;i<c;i++)g[i]=f(o,r,a,e,i,l),y[i]=m(u,s,a,e,i,l),b[i]=d(a,i,l);return{begin:g,end:y,strides:b}}
vendor: 4,265 bytes, line 1
1function p(e,t,n,r,s){const a=[...s],o=l(n,t);for(let i=0;i<a.length;i++)if(o.indexOf(i)>-1)a[i]=0;else{const s=u(t,n,i);let o=r[s];e&1<<s&&(o=0),a[i]=o}return a}function h(e,t,n,s,a){const o=[...a],i=l(n,t);for(let r=0;r<o.length;r++)if(i.indexOf(r)>-1)o[r]=Number.MAX_SAFE_INTEGER;else{const a=u(t,n,r);let i=s[a];e&1<<a&&(i=Number.MAX_SAFE_INTEGER),o[r]=i}for(let u=0;u<o.length;u++){const e=a[u];o[u]<0&&(o[u]+=e),o[u]=r.uZ(0,o[u],a[u])}return o}function d(e,t,n){let r=e[t];return(n&1<<t||null==r)&&(r=1),r}function f(e,t,n,s,a,o){let i=t[a];const u=n[a]||1;(e&1<<a||o&1<<a||null==i)&&(i=u>0?Number.MIN_SAFE_INTEGER:Number.MAX_SAFE_INTEGER);const l=s[a];return i<0&&(i+=l),i=r.uZ(0,i,l-1),i}function m(e,t,n,s,a,o){let i=t[a];const u=n[a]||1;(e&1<<a||o&1<<a||null==i)&&(i=u>0?Number.MAX_SAFE_INTEGER:Number.MIN_SAFE_INTEGER);const l=s[a];return i<0&&(i+=l),i=u>0?r.uZ(0,i,l):r.uZ(-1,i,l-1),i}function g(e,t,n){let r=n.length;for(let s=0;s<n.length;s++)if(n[s]>1){r=s;break}for(let s=r+1;s<n.length;s++)if(t[s]>0||n[s]!==e[s])return!1;return!0}function y(e,t){let n=e.length>0?e[e.length-1]:1;for(let r=0;r<e.length-1;r++)n+=e[r]*t[r];return n}function b(e,t,n){let s;const a=e.shape.length;let o;return s="number"===typeof t?[t,...new Array(a-1).fill(0)]:t.length<a?t.concat(new Array(a-t.length).fill(0)):t.slice(),s.forEach((e=>{r.hu(-1!==e,(()=>"slice() does not support negative begin indexing."))})),o=null==n?new Array(a).fill(-1):"number"===typeof n?[n,...new Array(a-1).fill(-1)]:n.length<a?n.concat(new Array(a-n.length).fill(-1)):n,o=o.map(((t,n)=>t>=0?t:(r.hu(-1===t,(()=>`Negative size values should be exactly -1 but got ${t} for the slice() size at index ${n}.`)),e.shape[n]-s[n]))),[s,o]}function x(e,t,n,r,s,a,o,i,u){let l;if(null==r?(l=new Array(t.length),l.fill(1)):l=r,null!=o&&0!==(o&o-1))throw new Error("Multiple ellipses in slice is not allowed.");let c=!1;const p={dims:l.length,numAddAxisAfterEllipsis:0,begin:t.slice(),end:n.slice(),strides:l.slice(),beginMask:s,endMask:a,ellipsisMask:o,newAxisMask:i,shrinkAxisMask:u};for(let b=0;b<p.dims;b++)c&&0!==(1<<b&i)&&p.numAddAxisAfterEllipsis++,1<<b&o&&(c=!0);c||(p.ellipsisMask|=1<<p.dims,p.dims++);const h={dims:e.length,beginMask:0,endMask:0,beginValid:!1,endValid:!1};!function(e,t){t.beginMask=0,t.endMask=0,t.shrinkAxisMask=0;let n=0;t.beginValid=null!=e.begin,t.endValid=null!=e.end,t.begin=new Array(t.dims),t.end=new Array(t.dims),t.strides=new Array(t.dims),t.finalShapeGatherIndices=[],t.finalShapeGatherIndicesSparse=[],t.inputShapeGatherIndicesSparse=new Array(t.dims);for(let r=0;r<e.dims;r++)if(1<<r&e.ellipsisMask){const s=Math.min(t.dims-(e.dims-r)+1+e.numAddAxisAfterEllipsis,t.dims);for(;n<s;n++)t.begin[n]=0,t.end[n]=0,t.strides[n]=1,t.beginMask|=1<<n,t.endMask|=1<<n,t.finalShapeGatherIndices.push(n),t.finalShapeGatherIndicesSparse.push(-1),t.inputShapeGatherIndicesSparse[n]=r}else if(1<<r&e.newAxisMask)t.finalShapeGatherIndices.push(-2),t.finalShapeGatherIndicesSparse.push(-1);else{if(n===t.begin.length)throw Error(`Index out of range using input dim ${n}; input has only ${t.dims} dims, ${t.begin.length}.`);null!=e.begin&&(t.begin[n]=e.begin[r]),null!=e.end&&(t.end[n]=e.end[r]),t.strides[n]=e.strides[r],e.beginMask&1<<r&&(t.beginMask|=1<<n),e.endMask&1<<r&&(t.endMask|=1<<n),e.shrinkAxisMask&1<<r?(t.finalShapeGatherIndices.push(-1),t.finalShapeGatherIndicesSparse.push(-1),t.shrinkAxisMask|=1<<n):(t.finalShapeGatherIndices.push(n),t.finalShapeGatherIndicesSparse.push(r)),t.inputShapeGatherIndicesSparse[n]=r,n++}}(p,h);let d=!0,f=!0,m=!0;const g=[],y=[];for(let b=0;b<e.length;++b){if(0===h.strides[b])throw Error(`strides[${b}] must be non-zero`);const t=!!(h.shrinkAxisMask&1<<b),n=e[b];if(-1===n){g.push(t?1:-1);continue}const r=[h.beginMask&1<<b,h.endMask&1<<b],s=[h.strides[b]>0?0:-1,h.strides[b]>0?n:n-1];if(t&&h.strides[b]<=0)throw Error("only stride 1 allowed on non-range indexing.");m=m&&1===h.strides[b];const a=!!(h.beginMask&1<<b&&h.endMask&1<<b);if(h.beginValid&&h.endValid){if(t){const e=h.begin[b]<0?n+h.begin[b]:h.begin[b];if(h.begin[b]=e,h.end[b]=h.begin[b]+1,e<0||e>=n)throw Error(`slice index ${h.begin[b]} of dimension ${b} out of bounds.`)}else h.begin[b]=w(h.begin[b],0,h.strides[b],n,r,s),h.end[b]=w(h.end[b],1,h.strides[b],n,r,s);
1const e=1===h.strides[b]&&0===h.begin[b]&&h.end[b]===n;d=d&&e,f=f&&(0===b&&1===h.strides[b]||e)}else d=d&&1===h.strides[b]&&a,f=f&&(0===b&&1===h.strides[b]||a);let o,i=!1;if(h.beginValid&&h.endValid?(o=h.end[b]-h.begin[b],i=!0):t?(o=1,i=!0):a&&n>=0&&(o=h.strides[b]<0?-n:n,i=!0),i){let e;e=0===o||o<0!==h.strides[b]<0?0:Math.trunc(o/h.strides[b])+(o%h.strides[b]!==0?1:0),g.push(e)}else g.push(-1)}for(let b=0;b<h.finalShapeGatherIndices.length;++b){const e=h.finalShapeGatherIndices[b];e>=0?y.push(g[e]):-2===e&&y.push(1)}return{finalShapeSparse:y.filter(((e,t)=>-2!==h.finalShapeGatherIndices[t])),finalShape:y,isIdentity:d,sliceDim0:f,isSimpleSlice:m,begin:h.begin,end:h.end,strides:h.strides}}function w(e,t,n,r,s,a){if(s[t])return n>0?a[t]:a[t+1&1];{const t=e<0?r+e:e;return t<a[0]?a[0]:t>a[1]?a[1]:t}}},2817:function(e,t,n){"use strict";n.d(t,{X:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({softmax_:function(e,t=-1){const n=(0,a._1)(e,"logits","softmax","float32");if(-1===t&&(t=n.rank-1),t!==n.rank-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${n.rank} and dim was ${t}`);const o={logits:n},i={dim:t};return r.BV.runKernel(s.Gcp,o,i)}})},3694:function(e,t,n){"use strict";n.d(t,{W:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({softplus_:function(e){const t={x:(0,a._1)(e,"x","softplus")};return r.BV.runKernel(s.MRv,t)}})},7918:function(e,t,n){"use strict";n.d(t,{f:function(){return i}});var r=n(7097),s=n(9121),a=n(3740),o=n(569);const i=(0,n(2668).op)({spaceToBatchND_:function(e,t,n){const i=(0,a._1)(e,"x","spaceToBatchND");o.hu(i.rank>=1+t.length,(()=>`input rank ${i.rank} should be > than [blockShape] ${t.length}`)),o.hu(n.length===t.length,(()=>`paddings.shape[0] ${n.length} must be equal to [blockShape] ${t.length}`)),o.hu(i.shape.reduce(((e,r,s)=>s>0&&s<=t.length?e&&(r+n[s-1][0]+n[s-1][1])%t[s-1]===0:e),!0),(()=>`input spatial dimensions ${i.shape.slice(1)} with paddings ${n.toString()} must be divisible by blockShapes ${t.toString()}`));const u={x:i},l={blockShape:t,paddings:n};return r.BV.runKernel(s.TQc,u,l)}})},7020:function(e,t,n){"use strict";n.d(t,{k:function(){return o}});var r=n(7097),s=n(9121),a=n(569);const o=(0,n(2668).op)({fft_:function(e){(0,a.hu)("complex64"===e.dtype,(()=>`The dtype for tf.spectral.fft() must be complex64 but got ${e.dtype}.`));const t={input:e};return r.BV.runKernel(s.vwp,t)}})},8447:function(e,t,n){"use strict";n.d(t,{S:function(){return o}});var r=n(7097),s=n(9121),a=n(569);const o=(0,n(2668).op)({ifft_:function(e){(0,a.hu)("complex64"===e.dtype,(()=>`The dtype for tf.spectral.ifft() must be complex64 but got ${e.dtype}.`));const t={input:e};return r.BV.runKernel(s.Qg5,t)}})},4415:function(e,t,n){"use strict";n.d(t,{w:function(){return f}});var r=n(1661),s=n(6884),a=n(4386),o=n(4841),i=n(2668),u=n(766),l=n(4968),c=n(7486),p=n(9494),h=n(2676),d=n(8447);const f=(0,i.op)({irfft_:function(e){const t=e.shape[e.shape.length-1],n=e.size/t;let i;if(t<=2){const r=(0,l.X)(e,[n,t]);i=(0,d.S)(r)}else{const f=[n,2*(t-1)],m=(0,l.X)((0,u.k)(e),[n,t]),g=(0,l.X)((0,a.a)(e),[n,t]),y=(0,c.G)((0,h.t)(m,[0,1],[n,t-2]),1),b=(0,o.d)((0,c.G)((0,h.t)(g,[0,1],[n,t-2]),1),(0,p.i)(-1)),x=(0,s.z)([m,y],1),w=(0,s.z)([g,b],1),v=(0,l.X)((0,r.P)(x,w),[f[0],f[1]]);i=(0,d.S)(v)}if(i=(0,u.k)(i),3===e.rank&&0!==e.shape[0]){const t=i,n=e.shape[0];i=(0,l.X)(i,[n,i.shape[0]/n,i.shape[1]]),t.dispose()}return i}})},3710:function(e,t,n){"use strict";n.d(t,{Q:function(){return m}});var r=n(569),s=n(1661),a=n(6884),o=n(4386),i=n(2668),u=n(766),l=n(4968),c=n(2676),p=n(8644),h=n(723),d=n(6577),f=n(7020);const m=(0,i.op)({rfft_:function(e,t){(0,r.hu)("float32"===e.dtype,(()=>`The dtype for rfft() must be real value but got ${e.dtype}`));let n=e.shape[e.shape.length-1];const i=e.size/n;let m;if(null!=t&&t<n){const r=e.shape.map((e=>0)),s=e.shape.map((e=>e));s[e.shape.length-1]=t,m=(0,c.t)(e,r,s),n=t}else if(null!=t&&t>n){const r=e.shape.map((e=>e));r[e.shape.length-1]=t-n,m=(0,a.z)([e,(0,h.l)(r)],e.shape.length-1),n=t}else m=e;const g=(0,d.P)(m),y=(0,l.X)((0,s.P)(m,g),[i,n]),b=(0,f.k)(y),x=Math.floor(n/2)+1,w=(0,u.k)(b),v=(0,o.a)(b),k=(0,p.V)(w,[x,n-x],w.shape.length-1),I=(0,p.V)(v,[x,n-x],v.shape.length-1),N=m.shape.slice();return N[m.shape.length-1]=x,(0,l.X)((0,s.P)(k[0],I[0]),N)}})},8644:function(e,t,n){"use strict";n.d(t,{V:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({split_:function(e,t,n=0){const o={x:(0,a._1)(e,"x","split")},i={numOrSizeSplits:t,axis:n};return r.BV.runKernel(s.L8s,o,i)}})},3261:function(e,t,n){"use strict";n.d(t,{_:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({sqrt_:function(e){const t={x:(0,a._1)(e,"x","sqrt","float32")};return r.BV.runKernel(s.FKq,t)}})},248:function(e,t,n){"use strict";n.d(t,{h:function(){return a}});var r=n(7097),s=n(3740);const a=(0,n(2668).op)({square_:function(e){const t=(0,s._1)(e,"x","square");return r.BV.runKernel("Square",{x:t},{})}})},5265:function(e,t,n){"use strict";n.d(t,{$:function(){return u}});var r=n(7097),s=n(9121),a=n(747),o=n(3740),i=n(2200);const u=(0,n(2668).op)({squaredDifference_:function(e,t){let n=(0,o._1)(e,"a","squaredDifference"),u=(0,o._1)(t,"b","squaredDifference");[n,u]=(0,a.makeTypesMatch)(n,u),(0,i.assertAndGetBroadcastShape)(n.shape,u.shape);const l={a:n,b:u};return r.BV.runKernel(s._tC,l,{})}})},9590:function(e,t,n){"use strict";n.d(t,{L:function(){return i}});var r=n(3740),s=n(569),a=n(2668),o=n(4968);const i=(0,a.op)({squeeze_:function(e,t){const n=(0,r._1)(e,"x","squeeze","string_or_numeric");return(0,o.X)(n,(0,s.bp)(n.shape,t).newShape)}})},2991:function(e,t,n){"use strict";n.d(t,{k:function(){return i}});var r=n(7097),s=n(9121),a=n(3740),o=n(569);const i=(0,n(2668).op)({stack_:function(e,t=0){const n=(0,a.sI)(e,"tensors","stack","string_or_numeric");o.hu(n.length>=1,(()=>"Pass at least one tensor to tf.stack")),n.length>0&&o.hu(t<=n[0].rank,(()=>"Axis must be <= rank of the tensor"));const i=n,u={axis:t};return r.BV.runKernel(s.QiL,i,u)}})},1901:function(e,t,n){"use strict";n.d(t,{N:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({step_:function(e,t=0){const n={x:(0,a._1)(e,"x","step")},o={alpha:t};return r.BV.runKernel(s.h8e,n,o)}})},5158:function(e,t,n){"use strict";n.d(t,{N:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({stridedSlice_:function(e,t,n,o,i=0,u=0,l=0,c=0,p=0){const h={x:(0,a._1)(e,"x","stridedSlice","string_or_numeric")},d={begin:t,end:n,strides:o,beginMask:i,endMask:u,ellipsisMask:l,newAxisMask:c,shrinkAxisMask:p};return r.BV.runKernel(s.jQk,h,d)}})},827:function(e,t,n){"use strict";n.d(t,{l:function(){return i}});var r=n(7097),s=n(9121),a=n(747),o=n(3740);const i=(0,n(2668).op)({sub_:function(e,t){let n=(0,o._1)(e,"a","sub"),i=(0,o._1)(t,"b","sub");[n,i]=(0,a.makeTypesMatch)(n,i);const u={a:n,b:i};return r.BV.runKernel(s.Tr8,u)}})},2683:function(e,t,n){"use strict";n.d(t,{S:function(){return i}});var r=n(7097),s=n(9121),a=n(3740),o=n(2271);const i=(0,n(2668).op)({sum_:function(e,t=null,n=!1){let i=(0,a._1)(e,"x","sum");"bool"===i.dtype&&(i=(0,o.p)(i,"int32"));const u={x:i},l={axis:t,keepDims:n};return r.BV.runKernel(s.GBy,u,l)}})},1173:function(e,t,n){"use strict";n.d(t,{O:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({tan_:function(e){const t={x:(0,a._1)(e,"x","tan","float32")};return r.BV.runKernel(s.sEM,t)}})},1869:function(e,t,n){"use strict";n.d(t,{A:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({tanh_:function(e){const t={x:(0,a._1)(e,"x","tanh","float32")};return r.BV.runKernel(s.MIZ,t)}})},701:function(e,t,n){"use strict";n.d(t,{X:function(){return a}});var r=n(3740),s=n(7852);function a(e,t,n){const a=(0,r.C)(e,n);return(0,s.H)(e,t,a,n)}},9906:function(e,t,n){"use strict";n.d(t,{w:function(){return o}});var r=n(3740),s=n(569),a=n(7852);function o(e,t,n){if((0,s.Cq)(e),null!=t&&3!==t.length)throw new Error("tensor3d() requires shape to have three numbers");const o=(0,r.C)(e,n);if(3!==o.length&&1!==o.length)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(1===o.length&&null==t)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return(0,a.H)(e,t,o,n)}},7852:function(e,t,n){"use strict";n.d(t,{H:function(){return o}});var r=n(7097),s=n(569),a=n(9122);function o(e,t,n,o){if(null==o&&(o=(0,s.D2)(e)),"complex64"===o)throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");
1if(!(0,s.fU)(e)&&!Array.isArray(e)&&"number"!==typeof e&&"boolean"!==typeof e&&"string"!==typeof e)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(null!=t){(0,s.Mu)(t);const e=(0,s.NA)(t),r=(0,s.NA)(n);(0,s.hu)(e===r,(()=>`Based on the provided shape, [${t}], the tensor should have ${e} values but has ${r}`));for(let a=0;a<n.length;++a){const e=n[a],r=a!==n.length-1||e!==(0,s.NA)(t.slice(a));(0,s.hu)(n[a]===t[a]||!r,(()=>`Error creating a new Tensor. Inferred shape (${n}) does not match the provided shape (${t}). `))}}return(0,s.fU)(e)||Array.isArray(e)||(e=[e]),t=t||n,e="string"!==o?(0,a.toTypedArray)(e,o):(0,s.xH)(e,[],!0),r.BV.makeTensor(e,t,o)}},7501:function(e,t,n){"use strict";n.d(t,{G:function(){return i}});var r=n(7097),s=n(9121),a=n(3740),o=n(569);const i=(0,n(2668).op)({tile_:function(e,t){const n=(0,a._1)(e,"x","tile","string_or_numeric");o.hu(n.rank===t.length,(()=>`Error in transpose: rank of input ${n.rank} must match length of reps ${t}.`));const i={x:n},u={reps:t};return r.BV.runKernel(s.n9L,i,u)}})},3243:function(e,t,n){"use strict";n.d(t,{h:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({topk_:function(e,t=1,n=!0){const o=(0,a._1)(e,"x","topk");
1if(0===o.rank)throw new Error("topk() expects the input to be of rank 1 or higher");const i=o.shape[o.shape.length-1];if(t<0)throw new Error(`'k' passed to topk() must be >= 0 but got ${t}`);if(t>i)throw new Error(`'k' passed to topk() must be <= the last dimension (${i}) but got ${t}`);const u={x:o},l={k:t,sorted:n},[c,p]=r.BV.runKernel(s.cWu,u,l);return{values:c,indices:p}}})},9065:function(e,t,n){"use strict";n.d(t,{p:function(){return d}});var r=n(7097),s=n(4368),a=n(9121),o=n(3740),i=n(569),u=n(1661),l=n(4386),c=n(7370),p=n(2668),h=n(766);const d=(0,p.op)({transpose_:function(e,t,n){const p=(0,o._1)(e,"x","transpose");if(null==t&&(t=p.shape.map(((e,t)=>t)).reverse()),i.hu(p.rank===t.length,(()=>`Error in transpose: rank of input ${p.rank} must match length of perm ${t}.`)),t.forEach((e=>{i.hu(e>=0&&e<p.rank,(()=>"All entries in 'perm' must be between 0 and "+(p.rank-1)+` but got ${t}`))})),p.rank<=1)return p.clone();const d={x:p},f={perm:t};return"complex64"===p.dtype?(0,s.lu)((()=>{let e=(0,h.k)(p),t=(0,l.a)(p);return e=r.BV.runKernel(a.G3Y,{x:e},f),t=r.BV.runKernel(a.G3Y,{x:t},f),n&&(t=(0,c.W)(t)),(0,u.P)(e,t)})):r.BV.runKernel(a.G3Y,d,f)}})},9608:function(e,t,n){"use strict";n.d(t,{T:function(){return i}});var r=n(7097),s=n(9121),a=n(3740),o=n(569);const i=(0,n(2668).op)({unique_:function(e,t=0){const n=(0,a._1)(e,"x","unique","string_or_numeric");(0,o.hu)(n.rank>0,(()=>"The input tensor must be at least 1D"));const i={x:n},u={axis:t},[l,c]=r.BV.runKernel(s.kpP,i,u);return{values:l,indices:c}}})},8749:function(e,t,n){"use strict";n.d(t,{p:function(){return i}});var r=n(7097),s=n(9121),a=n(3740),o=n(569);const i=(0,n(2668).op)({unsortedSegmentSum_:function(e,t,n){const i=(0,a._1)(e,"x","unsortedSegmentSum"),u=(0,a._1)(t,"segmentIds","unsortedSegmentSum","int32");(0,o.hu)((0,o.GN)(n),(()=>"numSegments must be of dtype int"));const l={x:i,segmentIds:u},c={numSegments:n};return r.BV.runKernel(s.Qvg,l,c)}})},4136:function(e,t,n){"use strict";n.d(t,{H:function(){return i}});var r=n(7097),s=n(9121),a=n(3740),o=n(569);const i=(0,n(2668).op)({unstack_:function(e,t=0){const n=(0,a._1)(e,"x","unstack","string_or_numeric");o.hu(t>=-n.shape.length&&t<n.shape.length,(()=>`Axis = ${t} is not in [-${n.shape.length}, ${n.shape.length})`));const i={value:n},u={axis:t};return r.BV.runKernel(s.ToN,i,u)}})},5912:function(e,t,n){"use strict";n.d(t,{a:function(){return u}});var r=n(7097),s=n(9121),a=n(3740),o=n(8247),i=n(2200);const u=(0,n(2668).op)({where_:function(e,t,n){const u=(0,a._1)(t,"a","where"),l=(0,a._1)(n,"b","where"),c=(0,a._1)(e,"condition","where","bool"),p=(0,i.assertAndGetBroadcastShape)((0,i.assertAndGetBroadcastShape)(c.shape,u.shape),l.shape),h={condition:(0,o.U)(c,p),t:(0,o.U)(u,p),e:(0,o.U)(l,p)};return r.BV.runKernel(s.PhF,h)}})},723:function(e,t,n){"use strict";n.d(t,{l:function(){return o}});var r=n(7097),s=n(569),a=n(1661);function o(e,t="float32"){if("complex64"===t){const t=o(e,"float32"),n=o(e,"float32");return(0,a.P)(t,n)}const n=(0,s.wT)((0,s.NA)(e),t);return r.BV.makeTensor(n,e,t)}},6577:function(e,t,n){"use strict";n.d(t,{P:function(){return o}});var r=n(7097),s=n(9121),a=n(3740);const o=(0,n(2668).op)({zerosLike_:function(e){const t={x:(0,a._1)(e,"x","zerosLike")};return r.BV.runKernel(s.RuY,t)}})},4077:function(e,t,n){"use strict";n.d(t,{es:function(){return b},YD:function(){return p},_w:function(){return w},t3:function(){return x},FZ:function(){return y},Vp:function(){return g},Vi:function(){return m}});var r=n(5938),s=n(569);function a(e,t,n,r){const a=(0,s.e3)(t),i=function(e,t,n,r){const a=(0,s.NA)(t),i=r[r.length-1],u=new Array(i).fill(0),c=t.length,p="complex64"===n?l(e):e;if(c>1)for(let s=0;s<a/i;s++){const e=s*i;for(let t=0;t<i;t++)u[t]=Math.max(u[t],o(p[e+t],0,n).length)}return u}(e,t,n,a),c=t.length,p=u(e,t,n,a,i),h=["Tensor"];return r&&(h.push(`  dtype: ${n}`),h.push(`  rank: ${c}`),h.push(`  shape: [${t}]`),h.push("  values:")),h.push(p.map((e=>"    "+e)).join("\n")),h.join("\n")}function o(e,t,n){let r;return r=Array.isArray(e)?`${parseFloat(e[0].toFixed(7))} + ${parseFloat(e[1].toFixed(7))}j`:(0,s.HD)(e)?`'${e}'`:"bool"===n?i(e):parseFloat(e.toFixed(7)).toString(),(0,s.oj)(r,t)}function i(e){return 0===e?"false":"true"}function u(e,t,n,r,s,a=!0){const c="complex64"===n?2:1,p=t[0],h=t.length;if(0===h){if("complex64"===n){return[o(l(e)[0],0,n)]}return"bool"===n?[i(e[0])]:[e[0].toString()]}if(1===h){if(p>20){const t=3*c;let r=Array.from(e.slice(0,t)),a=Array.from(e.slice((p-3)*c,p*c));return"complex64"===n&&(r=l(r),a=l(a)),["["+r.map(((e,t)=>o(e,s[t],n))).join(", ")+", ..., "+a.map(((e,t)=>o(e,s[p-3+t],n))).join(", ")+"]"]}return["["+("complex64"===n?l(e):Array.from(e)).map(((e,t)=>o(e,s[t],n))).join(", ")+"]"]}const d=t.slice(1),f=r.slice(1),m=r[0]*c,g=[];if(p>20){for(let t=0;t<3;t++){const r=t*m,a=r+m;g.push(...u(e.slice(r,a),d,n,f,s,!1))}g.push("...");for(let t=p-3;t<p;t++){const r=t*m,a=r+m;g.push(...u(e.slice(r,a),d,n,f,s,t===p-1))}}else for(let o=0;o<p;o++){const t=o*m,r=t+m;g.push(...u(e.slice(t,r),d,n,f,s,o===p-1))}const y=2===h?",":"";g[0]="["+g[0]+y;for(let o=1;o<g.length-1;o++)g[o]=" "+g[o]+y;let b=",\n";for(let o=2;o<h;o++)b+="\n";
1return g[g.length-1]=" "+g[g.length-1]+"]"+(a?"":b),g}function l(e){const t=[];for(let n=0;n<e.length;n+=2)t.push([e[n],e[n+1]]);return t}var c=n(9122);class p{constructor(e,t,n){if(this.dtype=t,this.shape=e.slice(),this.size=s.NA(e),null!=n){const e=n.length;s.hu(e===this.size,(()=>`Length of values '${e}' does not match the size inferred by the shape '${this.size}'.`))}if("complex64"===t)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=n||s.rQ(t,this.size),this.strides=(0,s.e3)(e)}set(e,...t){0===t.length&&(t=[0]),s.hu(t.length===this.rank,(()=>`The number of provided coordinates (${t.length}) must match the rank (${this.rank})`));const n=this.locToIndex(t);this.values[n]=e}get(...e){0===e.length&&(e=[0]);let t=0;for(const r of e){if(r<0||r>=this.shape[t]){const t=`Requested out of range element at ${e}.   Buffer shape=${this.shape}`;throw new Error(t)}t++}let n=e[e.length-1];for(let r=0;r<e.length-1;++r)n+=this.strides[r]*e[r];return this.values[n]}locToIndex(e){if(0===this.rank)return 0;if(1===this.rank)return e[0];let t=e[e.length-1];for(let n=0;n<e.length-1;++n)t+=this.strides[n]*e[n];return t}indexToLoc(e){if(0===this.rank)return[];if(1===this.rank)return[e];const t=new Array(this.shape.length);for(let n=0;n<t.length-1;++n)t[n]=Math.floor(e/this.strides[n]),e-=t[n]*this.strides[n];return t[t.length-1]=e,t}get rank(){return this.shape.length}toTensor(){return h().makeTensor(this.values,this.shape,this.dtype)}}let h=null,d=null,f=null;function m(e){h=e}function g(e){d=e}function y(e){f=e}class b{constructor(e,t,n,r){this.kept=!1,this.isDisposedInternal=!1,this.shape=e.slice(),this.dtype=t||"float32",this.size=s.NA(e),this.strides=(0,s.e3)(e),this.dataId=n,this.id=r,this.rankType=this.rank<5?this.rank.toString():"higher"}get rank(){return this.shape.length}async buffer(){const e=await this.data();return d.buffer(this.shape,this.dtype,e)}bufferSync(){return d.buffer(this.shape,this.dtype,this.dataSync())}async array(){const e=await this.data();return(0,s.GX)(this.shape,e,"complex64"===this.dtype)}arraySync(){return(0,s.GX)(this.shape,this.dataSync(),"complex64"===this.dtype)}async data(){this.throwIfDisposed();const e=h().read(this.dataId);if("string"===this.dtype){const n=await e;try{return n.map((e=>c.decodeString(e)))}catch(t){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(),h().readToGPU(this.dataId,e)}dataSync(){this.throwIfDisposed();const e=h().readSync(this.dataId);if("string"===this.dtype)try{return e.map((e=>c.decodeString(e)))}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();const e=await h().read(this.dataId);return"string"===this.dtype?e:new Uint8Array(e.buffer)}dispose(){this.isDisposed||(h().disposeTensor(this),this.isDisposedInternal=!0)}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(e=!1){return d.print(this,e)}clone(){return this.throwIfDisposed(),d.clone(this)}toString(e=!1){return a(this.dataSync(),this.shape,this.dtype,e)}cast(e){return this.throwIfDisposed(),d.cast(this,e)}variable(e=!0,t,n){return this.throwIfDisposed(),h().makeVariable(this,e,t,n)}}function x(){return(0,r.R)("Tensor",(()=>b))}Object.defineProperty(b,Symbol.hasInstance,{value:e=>!!e&&null!=e.data&&null!=e.dataSync&&null!=e.throwIfDisposed}),x();class w extends b{constructor(e,t,n,r){super(e.shape,e.dtype,e.dataId,r),this.trainable=t,this.name=n}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(!s.cO(e.shape,this.shape))throw new Error(`shape of the new value (${e.shape}) and previous value (${this.shape}) must match`);h().disposeTensor(this),this.dataId=e.dataId,h().incRef(this,null)}dispose(){h().disposeVariable(this),this.isDisposedInternal=!0}}Object.defineProperty(w,Symbol.hasInstance,{value:e=>e instanceof b&&null!=e.assign&&e.assign instanceof Function})},747:function(e,t,n){"use strict";n.r(t),n.d(t,{makeTypesMatch:function(){return o},assertTypesMatch:function(){return i},isTensorInList:function(){return u},getTensorsInContainer:function(){return l}});var r=n(4077),s=n(1221),a=n(569);function o(e,t){if(e.dtype===t.dtype)return[e,t];const n=(0,s.x8)(e.dtype,t.dtype);return[e.cast(n),t.cast(n)]}function i(e,t){(0,a.hu)(e.dtype===t.dtype,(()=>`The dtypes of the first(${e.dtype}) and second(${t.dtype}) input must match`))}function u(e,t){return t.some((t=>
1t.id===e.id))}function l(e){const t=[];return c(e,t,new Set),t}function c(e,t,n){if(null==e)return;if(e instanceof r.es)return void t.push(e);if(s=e,!Array.isArray(s)&&"object"!==typeof s)return;var s;const a=e;for(const r in a){const e=a[r];n.has(e)||(n.add(e),c(e,t,n))}}},3740:function(e,t,n){"use strict";n.d(t,{C:function(){return u},_1:function(){return p},sI:function(){return h}});var r=n(7097),s=n(2885),a=n(4077),o=n(569),i=n(9122);function u(e,t){let n=e;if((0,o.fU)(e))return"string"===t?[]:[e.length];if(!Array.isArray(e))return[];const r=[];for(;Array.isArray(n)||(0,o.fU)(n)&&"string"!==t;)r.push(n.length),n=n[0];return Array.isArray(e)&&(0,s.OB)().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&l(e,r,[]),r}function l(e,t,n){if(n=n||[],!Array.isArray(e)&&!(0,o.fU)(e))return void(0,o.hu)(0===t.length,(()=>`Element arr[${n.join("][")}] is a primitive, but should be an array/TypedArray of ${t[0]} elements`));(0,o.hu)(t.length>0,(()=>`Element arr[${n.join("][")}] should be a primitive, but is an array of ${e.length} elements`)),(0,o.hu)(e.length===t[0],(()=>`Element arr[${n.join("][")}] should have ${t[0]} elements, but has ${e.length} elements`));const r=t.slice(1);for(let s=0;s<e.length;++s)l(e[s],r,n.concat(s))}function c(e,t,n,r){if("string_or_numeric"!==e){if(null==e)throw new Error("Expected dtype cannot be null.");if("numeric"!==e&&e!==t||"numeric"===e&&"string"===t)throw new Error(`Argument '${n}' passed to '${r}' must be ${e} tensor, but got ${t} tensor`)}}function p(e,t,n,s="numeric"){if(e instanceof a.es)return c(s,e.dtype,t,n),e;let l=(0,o.D2)(e);if("string"!==l&&["bool","int32","float32"].indexOf(s)>=0&&(l=s),c(s,l,t,n),null==e||!(0,o.fU)(e)&&!Array.isArray(e)&&"number"!==typeof e&&"boolean"!==typeof e&&"string"!==typeof e){const r=null==e?"null":e.constructor.name;throw new Error(`Argument '${t}' passed to '${n}' must be a Tensor or TensorLike, but got '${r}'`)}const p=u(e,l);(0,o.fU)(e)||Array.isArray(e)||(e=[e]);const h="string"!==l?(0,i.toTypedArray)(e,l):(0,o.xH)(e,[],!0);return r.BV.makeTensor(h,p,l)}function h(e,t,n,r="numeric"){if(!Array.isArray(e))throw new Error(`Argument ${t} passed to ${n} must be a \`Tensor[]\` or \`TensorLike[]\``);return e.map(((e,s)=>p(e,`${t}[${s}]`,n,r)))}},1221:function(e,t,n){"use strict";var r,s,a,o,i;n.d(t,{x8:function(){return l},z4:function(){return c}}),function(e){e.R0="R0",e.R1="R1",e.R2="R2",e.R3="R3",e.R4="R4",e.R5="R5",e.R6="R6"}(r||(r={})),function(e){e.float32="float32",e.int32="int32",e.bool="int32",e.complex64="complex64"}(s||(s={})),function(e){e.float32="float32",e.int32="int32",e.bool="bool",e.complex64="complex64"}(a||(a={})),function(e){e.float32="float32",e.int32="float32",e.bool="float32",e.complex64="complex64"}(o||(o={})),function(e){e.float32="complex64",e.int32="complex64",e.bool="complex64",e.complex64="complex64"}(i||(i={}));const u={float32:o,int32:s,bool:a,complex64:i};function l(e,t){if("string"===e||"string"===t){if("string"===e&&"string"===t)return"string";throw new Error(`Can not upcast ${e} with ${t}`)}return u[e][t]}function c(e){return l(e,"int32")}},9122:function(e,t,n){"use strict";n.r(t),n.d(t,{arraysEqual:function(){return s.cO},assert:function(){return s.hu},assertNonNegativeIntegerDimensions:function(){return s.Mu},assertNonNull:function(){return s.Cq},assertShapesMatch:function(){return s.k5},bytesFromStringArray:function(){return s.Ub},bytesPerElement:function(){return s.bT},checkConversionForErrors:function(){return s.D5},clamp:function(){return s.uZ},computeStrides:function(){return s.e3},createScalarValue:function(){return x},createShuffledIndices:function(){return s.U$},decodeString:function(){return N},distSquared:function(){return s.E7},encodeString:function(){return I},fetch:function(){return k},fingerPrint64:function(){return b},flatten:function(){return s.xH},getArrayFromDType:function(){return s.rQ},getTypedArrayFromDType:function(){return s.WP},hasEncodingLoss:function(){return s.QB},hexToLong:function(){return i},indexToLoc:function(){return s.NE},inferDtype:function(){return s.D2},inferFromImplicitShape:function(){return s.JZ},isBoolean:function(){return s.jn},isFunction:function(){return s.mf},isInt:function(){return s.GN},isNumber:function(){return s.hj},isPromise:function(){return s.tI},isScalarShape:function(){return s.N9},isString:function(){return s.HD},isTypedArray:function(){return s.fU},isValidDtype:function(){return s.LP},locToIndex:function(){return s.qy},makeOnesTypedArray:function(){return s.p8},makeZerosNestedTypedArray:function(){return s.l6},makeZerosTypedArray:function(){return s.wT},nearestDivisor:function(){return s.jP},nearestLargerEven:function(){return s.nY},now:function(){return v},parseAxisParam:function(){return s.EC},randUniform:function(){return s.bj},repeatedTry:function(){return s.WD},rightPad:function(){return s.oj},shuffle:function(){return s.TV},shuffleCombo:function(){return s.d7},sizeFromShape:function(){return s.NA},sizeToSquarishShape:function(){return s.YP},squeezeShape:function(){return s.bp},sum:function(){return s.Sm},swap:function(){return s.LF},tanh:function(){return s.AE},toNestedArray:function(){return s.GX},toTypedArray:function(){return w}});var r=n(2885),s=n(569),a=n(3720);const o=n.n(a)()||a;function i(e){return o.fromString(e,!0,16)}const u=i("c3a5c85c97cb3127"),l=i("b492b66fbe98f273"),c=i("9ae16a3b2f90404f");function p(e){return e.xor(e.shru(47))}function h(e,t,n){const r=e.slice(t,t+n);return o.fromBytes(Array.from(r),!0,!0)}function d(e,t){return h(e,t,8)}function f(e,t){return h(e,t,4)}function m(e,t){return 0===t?e:e.shru(t).or(e.shl(64-t))}function g(e,t,n=i("9ddfea08eb382d69")){let r=e.xor(t).mul(n);r=r.xor(r.shru(47));let s=t.xor(r).mul(n);return s=s.xor(s.shru(47)),s=s.mul(n),s}function y(e,t,n,r){return function(e,t,n,r,s,a){s=s.add(e),a=m(a.add(s).add(r),21);const o=s;return s=(s=s.add(t)).add(n),a=a.add(m(s,44)),[s.add(r),a.add(o)]}(d(e,t),d(e,t+8),d(e,t+16),d(e,t+24),n,r)}function b(e,t=e.length){const n=o.fromNumber(81,!0);if(t<=32)return t<=16?function(e,t=e.length){if(t>=8){const n=c.add(2*t),r=d(e,0).add(c),s=d(e,t-8);return g(m(s,37).mul(n).add(r),m(r,25).add(s).mul(n),n)}if(t>=4){const n=c.add(2*t);return g(f(e,0).shl(3).add(t),f(e,t-4),n)}if(t>0){const n=e[0]+(e[t>>1]<<8),r=t+(e[t-1]<<2);return p(c.mul(n).xor(u.mul(r))).mul(c)}return c}(e,t):function(e,t=e.length){const n=c.add(2*t),r=d(e,0).mul(l),s=d(e,8),a=d(e,t-8).mul(n),o=d(e,t-16).mul(c);return g(m(r.add(s),43).add(m(a,30)).add(o),r.add(m(s.add(c),18)).add(a),n)}(e,t);if(t<=64)return function(e,t=e.length){const n=c.add(2*t),r=d(e,0).mul(c),s=d(e,8),a=d(e,t-8).mul(n),o=d(e,t-16).mul(c),i=m(r.add(s),43).add(m(a,30)).add(o),u=g(i,r.add(m(s.add(c),18)).add(a),n),l=d(e,16).mul(n),p=d(e,24),h=i.add(d(e,t-32)).mul(n),f=u.add(d(e,t-24)).mul(n);return g(m(l.add(p),43).add(m(h,30)).add(f),l.add(m(p.add(r),18)).add(h),n)}(e,t);let r=n,s=n.mul(l).add(113),a=p(s.mul(c).add(113)).mul(c),i=[o.UZERO,o.UZERO],h=[o.UZERO,o.UZERO];r=r.mul(c).add(d(e,0));let b=0;const x=64*(t-1>>6),w=x+(t-1&63)-63;do{r=m(r.add(s).add(i[0]).add(d(e,b+8)),37).mul(l),s=m(s.add(i[1]).add(d(e,b+48)),42).mul(l),r=r.xor(h[1]),s=s.add(i[0]).add(d(e,b+40)),a=m(a.add(h[0]),33).mul(l),i=y(e,b,i[1].mul(l),r.add(h[0])),h=y(e,b+32,a.add(h[1]),s.add(d(e,b+16))),[a,r]=[r,a],b+=64}while(b!==x);const v=l.add(a.and(255).shl(1));return b=w,h[0]=h[0].add(t-1&63),i[0]=i[0].add(h[0]),h[0]=h[0].add(i[0]),r=m(r.add(s).add(i[0]).add(d(e,b+8)),37).mul(v),s=m(s.add(i[1]).add(d(e,b+48)),42).mul(v),r=r.xor(h[1].mul(9)),s=s.add(i[0].mul(9).add(d(e,b+40))),a=m(a.add(h[0]),33).mul(v),i=y(e,b,i[1].mul(v),r.add(h[0])),h=y(e,b+32,a.add(h[1]),s.add(d(e,b+16))),[a,r]=[r,a],g(g(i[0],h[0],v).add(p(s).mul(u)).add(a),g(i[1],h[1],v).add(r),v)}function x(e,t){return"string"===t?I(e):w([e],t)}function w(e,t){if("string"===t)throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(e)&&(e=s.xH(e)),(0,r.OB)().getBool("DEBUG")&&s.D5(e,t),function(e,t){return e instanceof Float32Array&&"float32"===t||e instanceof Int32Array&&"int32"===t||e instanceof Uint8Array&&"bool"===t}(e,t))return e;if(null==t||"float32"===t||"complex64"===t)return new Float32Array(e);if("int32"===t)return new Int32Array(e);if("bool"===t){const t=new Uint8Array(e.length);for(let n=0;n<t.length;++n)0!==Math.round(e[n])&&(t[n]=1);return t}throw new Error(`Unknown data type ${t}`)}function v(){return(0,r.OB)().platform.now()}function k(e,t){return(0,r.OB)().platform.fetch(e,t)}function I(e,t="utf-8"){return t=t||"utf-8",(0,r.OB)().platform.encode(e,t)}function N(e,t="utf-8"){return t=t||"utf-8",(0,r.OB)().platform.decode(e,t)}},569:function(e,t,n){"use strict";function r(e){let t=e.length,n=0;for(;t>0;
1)n=Math.random()*t|0,t--,i(e,t,n)}function s(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 n=e.length,r=0;for(;n>0;)r=Math.random()*n|0,n--,i(e,n,r),i(t,n,r)}function a(e,t,n){return Math.max(e,Math.min(t,n))}function o(e){return e%2===0?e:e+1}function i(e,t,n){const r=e[t];e[t]=e[n],e[n]=r}function u(e){let t=0;for(let n=0;n<e.length;n++)t+=e[n];return t}function l(e,t){const n=Math.random();return t*n+(1-n)*e}function c(e,t){let n=0;for(let r=0;r<e.length;r++){const s=Number(e[r])-Number(t[r]);n+=s*s}return n}function p(e,t){if(!e)throw new Error("string"===typeof t?t:t())}function h(e,t,n=""){p(y(e,t),(()=>n+` Shapes ${e} and ${t} must match`))}function d(e){p(null!=e,(()=>"The input to the tensor constructor must be a non-null value."))}function f(e,t=[],n=!1){if(null==t&&(t=[]),Array.isArray(e)||_(e)&&!n)for(let r=0;r<e.length;++r)f(e[r],t,n);else t.push(e);return t}function m(e){if(0===e.length)return 1;let t=e[0];for(let n=1;n<e.length;n++)t*=e[n];return t}function g(e){return 0===e.length}function y(e,t){if(e===t)return!0;if(null==e||null==t)return!1;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function b(e){return e%1===0}function x(e){if(null!=Math.tanh)return Math.tanh(e);if(e===1/0)return 1;if(e===-1/0)return-1;{const t=Math.exp(2*e);return(t-1)/(t+1)}}function w(e){const t=Math.ceil(Math.sqrt(e));return[t,Math.ceil(e/t)]}function v(e){const t=new Uint32Array(e);for(let n=0;n<e;++n)t[n]=n;return r(t),t}function k(e,t){return t<=e.length?e:e+" ".repeat(t-e.length)}function I(e,t=(e=>0),n,r=setTimeout){return new Promise(((s,a)=>{let o=0;const i=()=>{if(e())return void s();o++;const u=t(o);null!=n&&o>=n?a():r(i,u)};i()}))}function N(e,t){let n=1,r=-1;for(let a=0;a<e.length;++a)if(e[a]>=0)n*=e[a];else if(-1===e[a]){if(-1!==r)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${r} and dim ${a}`);r=a}else if(e[a]<0)throw Error(`Shapes can not be < 0. Found ${e[a]} at dim ${a}`);if(-1===r){if(t>0&&t!==n)throw Error(`Size(${t}) must match the product of shape ${e}`);return e}if(0===n)throw Error(`Cannot infer the missing size in [${e}] when there are 0 elements`);if(t%n!==0)throw Error(`The implicit shape can't be a fractional number. Got ${t} / ${n}`);const s=e.slice();return s[r]=t/n,s}function S(e,t){const n=t.length;return p((e=null==e?t.map(((e,t)=>t)):[].concat(e)).every((e=>e>=-n&&e<n)),(()=>`All values in axis param must be in range [-${n}, ${n}) but got axis ${e}`)),p(e.every((e=>b(e))),(()=>`All values in axis param must be integers but got axis ${e}`)),e.map((e=>e<0?n+e:e))}function T(e,t){const n=[],r=[],s=null!=t&&Array.isArray(t)&&0===t.length,a=null==t||s?null:S(t,e).sort();let o=0;for(let i=0;i<e.length;++i){if(null!=a){if(a[o]===i&&1!==e[i])throw new Error(`Can't squeeze axis ${i} since its dim '${e[i]}' is not 1`);(null==a[o]||a[o]>i)&&1===e[i]&&(n.push(e[i]),r.push(i)),a[o]<=i&&o++}1!==e[i]&&(n.push(e[i]),r.push(i))}return{newShape:n,keptDims:r}}function C(e,t){let n=null;if(null==e||"float32"===e)n=new Float32Array(t);else if("int32"===e)n=new Int32Array(t);else{if("bool"!==e)throw new Error(`Unknown data type ${e}`);n=new Uint8Array(t)}return n}function E(e,t){let n=null;if(null==e||"float32"===e)n=new Float32Array(t);else if("int32"===e)n=new Int32Array(t);else if("bool"===e)n=new Uint8Array(t);else{if("string"!==e)throw new Error(`Unknown data type ${e}`);n=new Array(t)}return n}function $(e,t){for(let n=0;n<e.length;n++){const r=e[n];if(isNaN(r)||!isFinite(r))throw Error(`A tensor of type ${t} being uploaded contains ${r}.`)}}function A(e){return"bool"===e||"complex64"===e||"float32"===e||"int32"===e||"string"===e}function D(e,t){return"complex64"!==t&&(("float32"!==t||"complex64"===e)&&(("int32"!==t||"float32"===e||"complex64"===e)&&("bool"!==t||"bool"!==e)))}function _(e){return e instanceof Float32Array||e instanceof Int32Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray}function R(e){if("float32"===e||"int32"===e)return 4;if("complex64"===e)return 8;if("bool"===e)return 1;throw new Error(`Unknown dtype ${e}`)}function F(e){if(null==e)return 0;let t=0;return e.forEach((e=>t+=e.length)),t}function O(e){return"string"===typeof e||e instanceof String}function M(e){return"boolean"===typeof e}function B(e){return"number"===typeof e}function L(e){return Array.isArray(e)?L(e[0]):e instanceof Float32Array?"float32":e instanceof Int32Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray?"int32":B(e)?"float32":O(e)?"string":M(e)?"bool":"float32"}function W(e){return!!(e&&e.constructor&&e.call&&e.apply)}function P(e,t){for(let n=t;n<e;++n)if(e%n===0)return n;return e}function U(e){const t=e.length;if(t<2)return[];const n=new Array(t-1);n[t-2]=e[t-1];for(let r=t-3;r>=0;--r)n[r]=n[r+1]*e[r+1];return n}function z(e,t,n,r=!1){const s=new Array;
1if(1===t.length){const a=t[0]*(r?2:1);for(let t=0;t<a;t++)s[t]=n[e+t]}else{const a=t[0],o=t.slice(1),i=o.reduce(((e,t)=>e*t))*(r?2:1);for(let t=0;t<a;t++)s[t]=z(e+t*i,o,n,r)}return s}function V(e,t,n=!1){if(0===e.length)return t[0];const r=e.reduce(((e,t)=>e*t))*(n?2:1);if(0===r)return[];if(r!==t.length)throw new Error(`[${e}] does not match the input size ${t.length}${n?" for a complex tensor":""}.`);return z(0,e,t,n)}function G(e,t){const n=H(e,t);for(let r=0;r<n.length;r++)n[r]=1;return n}function H(e,t){if(null==t||"float32"===t||"complex64"===t)return new Float32Array(e);if("int32"===t)return new Int32Array(e);if("bool"===t)return new Uint8Array(e);throw new Error(`Unknown data type ${t}`)}function j(e,t){const n=e.reduce(((e,t)=>e*t),1);if(null==t||"float32"===t)return V(e,new Float32Array(n));if("int32"===t)return V(e,new Int32Array(n));if("bool"===t)return V(e,new Uint8Array(n));throw new Error(`Unknown data type ${t}`)}function X(e){e.forEach((t=>{p(Number.isInteger(t)&&t>=0,(()=>`Tensor must have a shape comprised of positive integers but got shape [${e}].`))}))}function q(e,t,n){if(0===t)return 0;if(1===t)return e[0];let r=e[e.length-1];for(let s=0;s<e.length-1;++s)r+=n[s]*e[s];return r}function K(e,t,n){if(0===t)return[];if(1===t)return[e];const r=new Array(t);for(let s=0;s<r.length-1;++s)r[s]=Math.floor(e/n[s]),e-=r[s]*n[s];return r[r.length-1]=e,r}function Q(e){return e&&e.then&&"function"===typeof e.then}n.d(t,{TV:function(){return r},d7:function(){return s},uZ:function(){return a},nY:function(){return o},LF:function(){return i},Sm:function(){return u},bj:function(){return l},E7:function(){return c},hu:function(){return p},k5:function(){return h},Cq:function(){return d},xH:function(){return f},NA:function(){return m},N9:function(){return g},cO:function(){return y},GN:function(){return b},AE:function(){return x},YP:function(){return w},U$:function(){return v},oj:function(){return k},WD:function(){return I},JZ:function(){return N},EC:function(){return S},bp:function(){return T},WP:function(){return C},rQ:function(){return E},D5:function(){return $},LP:function(){return A},QB:function(){return D},fU:function(){return _},bT:function(){return R},Ub:function(){return F},HD:function(){return O},jn:function(){return M},hj:function(){return B},D2:function(){return L},mf:function(){return W},jP:function(){return P},e3:function(){return U},GX:function(){return V},p8:function(){return G},wT:function(){return H},l6:function(){return j},Mu:function(){return X},qy:function(){return q},NE:function(){return K},tI:function(){return Q}})},8819:function(e,t,n){"use strict";n.d(t,{Gc:function(){return y},GD:function(){return v},aI:function(){return I}});var r=n(2623),s=n(9840),a=n(2931);class o extends r.m7h.Serializable{getConfig(){return{}}}class i extends o{apply(e,t=1){return s.py(e,t)}}i.className="elu",r.m7h.registerClass(i);class u extends o{apply(e){return r.U8D(e)}}u.className="selu",r.m7h.registerClass(u);class l extends o{apply(e){return r.UYe(e)}}l.className="relu",r.m7h.registerClass(l);class c extends o{apply(e){return(0,r.lub)((()=>r.LTh(6,r.UYe(e))))}}c.className="relu6",r.m7h.registerClass(c);class p extends o{apply(e){return e}}p.className="linear",r.m7h.registerClass(p);class h extends o{apply(e){return r.XD2(e)}}h.className="sigmoid",r.m7h.registerClass(h);class d extends o{apply(e){return s.HX(e)}}d.className="hardSigmoid",r.m7h.registerClass(d);class f extends o{apply(e){return r.Wvh(e)}}f.className="softplus",r.m7h.registerClass(f);class m extends o{apply(e){return s.O(e)}}m.className="softsign",r.m7h.registerClass(m);class g extends o{apply(e){return r.AEp(e)}}g.className="tanh",r.m7h.registerClass(g);class y extends o{apply(e,t=-1){return r.XAC(e,t)}}y.className="softmax",r.m7h.registerClass(y);class b extends o{apply(e,t=-1){return r.CmS(e,t)}}b.className="logSoftmax",r.m7h.registerClass(b);class x extends o{apply(e,t=1){return(0,r.lub)((()=>r.dC7(r.XD2(r.dC7(e,t)),e)))}}x.className="swish",r.m7h.registerClass(x);class w extends o{apply(e){return(0,r.lub)((()=>r.dC7(e,r.AEp(r.Wvh(e)))))}}function v(e){return e.getClassName()}function k(e,t={}
1){return(0,a.tU)(e,r.m7h.SerializationMap.getMap().classNameMap,t,"activation")}function I(e){if(null==e){const e={className:"linear",config:{}};return k(e)}if("string"===typeof e){const t={};return t.className=e,t.config={},k(t)}return e instanceof o?e:k(e)}w.className="mish",r.m7h.registerClass(w)},2012:function(e,t,n){"use strict";n.d(t,{Ho:function(){return a},rf:function(){return o}});var r=n(2623);let s;function a(){return null==s&&(s=(0,r.y3$)().epsilon()),s}function o(){return"channelsLast"}},1944:function(e,t,n){"use strict";n.d(t,{L:function(){return s},s:function(){return o}});let r=0;function s(){return r++}const a={};function o(e=""){return e in a||(a[e]=0),a[e]+=1,e+a[e].toString()}},9840:function(e,t,n){"use strict";n.d(t,{pj:function(){return u},dt:function(){return l},rx:function(){return c},xH:function(){return p},Uz:function(){return h},c9:function(){return d},uI:function(){return m},mV:function(){return g},GZ:function(){return y},Gg:function(){return b},nG:function(){return x},AK:function(){return w},Iq:function(){return v},h6:function(){return k},a2:function(){return N},py:function(){return S},O:function(){return T},rv:function(){return C},HX:function(){return E},KC:function(){return $}});var r=n(2623),s=n(8090),a=n(588),o=n(6040),i=n(2012);function u(e,t){return r.pju(e,t)}function l(e,t=-1){const n=e.shape.slice();return t<0&&(t=n.length+t+1),n.splice(t,0,1),r.XLQ(e,n)}function c(e,t){return(0,r.lub)((()=>{if(2!==e.shape.length)throw new a.nu(`repeat() expects a rank-2 tensor, but received a rank-${e.shape.length} tensor.`);return b(l(e,1),[1,t,1])}))}function p(e){const t=[o.NS(e.shape)];return r.XLQ(e,t)}function h(e){if(e.rank<=1)throw new a.nu(`batchFlatten requires a minimum rank of 2. Got rank: ${e.rank}.`);const t=[e.shape[0],o.NS(e.shape,1)];return r.XLQ(e,t)}function d(e,t,n){return(0,r.lub)((()=>{switch(e.rank){case 1:return r.jZU(e,t,n);case 2:return r.SmN(e,[t,0],[n,e.shape[1]]);case 3:return r.CnO(e,[t,0,0],[n,e.shape[1],e.shape[2]]);case 4:return r.p0P(e,[t,0,0,0],[n,e.shape[1],e.shape[2],e.shape[3]]);case 5:return r.tPi(e,[t,0,0,0,0],[n,e.shape[1],e.shape[2],e.shape[3],e.shape[4]]);case 6:return r.tPi(e,[t,0,0,0,0,0],[n,e.shape[1],e.shape[2],e.shape[3],e.shape[4],e.shape[5]]);default:throw new a.nu(`sliceAlongFirstAxis() received an unsupported tensor rank: ${e.rank}`)}}))}function f(e,t,n){return(0,r.lub)((()=>{switch(e.rank){case 1:return r.jZU(e,t,n);case 2:return r.SmN(e,[0,t],[e.shape[0],n]);case 3:return r.CnO(e,[0,0,t],[e.shape[0],e.shape[1],n]);case 4:return r.p0P(e,[0,0,0,t],[e.shape[0],e.shape[1],e.shape[2],n]);default:throw new a.nu(`sliceAlongLastAxis() received an unsupported tensor rank: ${e.rank}`)}}))}function m(e,t,n,s){return(0,r.lub)((()=>{switch(e.rank){case 1:return r.jZU(e,t,n);case 2:switch(s){case 1:return d(e,t,n);case 2:return f(e,t,n);default:throw new a.nu(`The axis is not within the rank of the tensor ${s}`)}case 3:switch(s){case 1:return d(e,t,n);case 2:return r.CnO(e,[0,t,0],[e.shape[0],n,e.shape[2]]);case 3:return f(e,t,n);default:throw new a.nu(`The axis is not within the rank of the tensor ${s}`)}case 4:switch(s){case 1:return d(e,t,n);case 2:return r.p0P(e,[0,t,0,0],[e.shape[0],n,e.shape[2],e.shape[3]]);case 3:return r.p0P(e,[0,0,t,0],[e.shape[0],e.shape[1],n,e.shape[3]]);case 4:return f(e,t,n);default:throw new a.nu(`The axis is not within the rank of the tensor ${s}`)}default:throw new a.nu(`sliceAlongLastAxis() received an unsupported tensor rank: ${e.rank}`)}}))}function g(e,t=-1){let n;return t<0&&(n=e[0].rank,t=0!==n?n:0),t===e[0].rank&&(t=-1),r.zoF(e,t)}function y(e,t){switch(e.rank){case 1:return r.gME([e,t]);case 2:return r.Izb([e,t],0);case 3:return r.MNy([e,t],0);case 4:return r.ZaL([e,t],0);default:throw new a.nu(`concatAlongFirstAxis() received an unsupported tensor rank: ${e.rank}`)}}function b(e,t){if(Array.isArray(t)||(t=[t]),e.rank!==t.length)throw new a.nu(`The length of input n (${t.length}) does not match the number of dimensions in input x (${e.rank})`);return r.Gg6(e,t)}function x(e,t=0,n=1,s,a){return r.nGf(e,t,n,s,a)}function w(e,t,n,s){if(e.rank<2||t.rank<2)throw new a.nj(`dot requires both inputs to be rank >= 2 but got x shape = ${e.shape} and y shape = ${t.shape}`);if(t.rank>=3){if(e.shape.slice(-1)[0]!==t.shape.slice(-2)[0])throw new a.nj(`If rank y >= 3, then the second last dim of y must equal the last dim of x but got x shape = ${e.shape} and  y shape = ${t.shape}`)}if(2===e.rank&&2===t.rank){const a=!1,o=!1;return r.imm.matMul({a:e,b:t,transposeA:a,transposeB:o,bias:s?I(e.rank,s,(0,i.rf)()):null,activation:n})}{const a=e.shape.slice(),o=a.pop();e=r.XLQ(e,[-1,o]);const u=t.shape.slice(),l=u.pop(),c=u.pop(),p=[...u,l],h=Array.from({length:t.rank},((e,n)=>0===n?t.rank-2:n<=t.rank-2?n-1:n));t=r.XLQ(r.p4s(t,h),[c,-1]);const d=[...a,...p],f=!1,m=!1;return r.XLQ(r.imm.matMul({a:e,b:t,transposeA:f,transposeB:m,bias:s?I(e.rank,s,(0,i.rf)()):null,activation:n}),d)}}function v(e,t,n){return(0,r.lub)((()=>(t=Array.isArray(t)?(0,r.RRF)(t,"int32"):r.pju(t,"int32"),r.Iqj(e,t,n))))}function k(e){return r.dC7(e,e)}function I(e,t,n){const s=t.shape;if(1!==t.rank&&t.rank!==e)throw new a.nu(`Unexpected bias dimensions: ${t.rank}; expected it to be 1 or ${e}`);if(5===e){if("channelsFirst"===n)return 1===s.length?r.XLQ(t,[1,s[0],1,1,1]):r.XLQ(t,[1,s[3],s[0],s[1],s[2]]);if("channelsLast"===n)return 1===s.length?r.XLQ(t,[1,1,1,1,s[0]]):r.XLQ(t,[1].concat(s))}else if(4===e){if("channelsFirst"===n)return 1===s.length?r.XLQ(t,[1,s[0],1,1]):r.XLQ(t,[1,s[2],s[0],s[1]]);if("channelsLast"===n)return 1===s.length?r.XLQ(t,[1,1,1,s[0]]):r.XLQ(t,[1].concat(s))}else if(3===e){if("channelsFirst"===n)return 1===s.length?r.XLQ(t,[1,s[0],1]):r.XLQ(t,[1,s[1],s[0]]);if("channelsLast"===n)return 1===s.length?r.XLQ(t,[1,1,s[0]]):r.XLQ(t,[1].concat(s))}else if(e<3)return t;throw new a.nu(`Unsupported input rank by biasAdd: ${t.rank}`)}function N(e,t,n){return(0,r.lub)((()=>(null==n&&(n=(0,i.rf)()),(0,s.cj)(n),r.IHx(e,I(e.rank,t,n)))))}function S(e,t=1){if(1!==t)throw new a.nj(`Support for alpha values other than 1 (${t}) is not implemented yet.`);return r.pyx(e)}function T(e){return(0,r.lub)((()=>r.hiC(e,r.IHx(r.WnP(e),1))))}function C(e,t,n,s){return(0,r.lub)((()=>r.rvX(e,t,n,s)))}function E(e){return(0,r.lub)((()=>{const t=r.IHx(.5,r.dC7(.2,e));return r.iUl(t,0,1)}))}function $(e,t,n=!1){return n?e():t()}},8891:function(e,t,n){"use strict";n.d(t,{ex:function(){return u},CZ:function(){return d},m$:function(){return m}});var r,s=n(2623),a=n(588),o=n(3146),i=n(2931);!function(e){e[e.SILENT=0]="SILENT",e[e.VERBOSE=1]="VERBOSE"}(r||(r={}));class u{constructor(){this.validationData=null}setParams(e){this.params=e}async onEpochBegin(e,t){}async onEpochEnd(e,t){}async onBatchBegin(e,t){}async onBatchEnd(e,t){}async onTrainBegin(e){}async onTrainEnd(e){}setModel(e){}}class l{constructor(e,t=10){null==e&&(e=[]),this.callbacks=e,this.queueLength=t}append(e){this.callbacks.push(e)}setParams(e){for(const t of this.callbacks)t.setParams(e)}setModel(e){for(const t of this.callbacks)t.setModel(e)}async onEpochBegin(e,t){null==t&&(t={});for(const n of this.callbacks)await n.onEpochBegin(e,t)}async onEpochEnd(e,t){null==t&&(t={});for(const n of this.callbacks)await n.onEpochEnd(e,t)}async onBatchBegin(e,t){null==t&&(t={});for(const n of this.callbacks)await n.onBatchBegin(e,t)}async onBatchEnd(e,t){null==t&&(t={});for(const n of this.callbacks)await n.onBatchEnd(e,t)}async onTrainBegin(e){null==e&&(e={});for(const t of this.callbacks)await t.onTrainBegin(e)}async onTrainEnd(e){null==e&&(e={});for(const t of this.callbacks)await t.onTrainEnd(e)}}class c extends u{constructor(){super()}async onEpochBegin(e){this.seen=0,this.totals={}}async onBatchEnd(e,t){null==t&&(t={});const n=null==t.size?0:t.size;this.seen+=n;for(const r in t){const e=t[r];if("number"===typeof e)this.totals.hasOwnProperty(r)||(this.totals[r]=0),this.totals[r]=this.totals[r]+e*n;else{let t;r in this.totals?t=this.totals[r]:this.totals[r]=0;const a=(0,s.lub)((()=>(0,s.IHx)(this.totals[r],(0,s.dC7)(e,n))));
1this.totals[r]=a,null!=t&&t.dispose()}}}async onEpochEnd(e,t){if(null!=t)for(const n of this.params.metrics)null!=this.totals[n]&&("number"===typeof this.totals[n]?t[n]=this.totals[n]/this.seen:(0,s.lub)((()=>{const e=(0,s.dC7)((0,s.hiC)(1,this.seen),this.totals[n]);t[n]=e,this.totals[n].dispose(),(0,s.CnY)(t[n])})))}}class p extends u{async onTrainBegin(e){this.epoch=[],this.history={}}async onEpochEnd(e,t){null==t&&(t={}),this.epoch.push(e);for(const n in t)null==this.history[n]&&(this.history[n]=[]),this.history[n].push(t[n])}async syncData(){const e=[],t=[],n=[];for(const s in this.history){const r=this.history[s];for(let a=0;a<r.length;++a)if("number"!==typeof r[a]){const o=r[a];e.push(o.data()),t.push(s),n.push(a)}}const r=await Promise.all(e);for(let s=0;s<r.length;++s){this.history[t[s]][n[s]].dispose(),this.history[t[s]][n[s]]=r[s][0]}}}class h extends u{constructor(e,t){if(super(),this.currentEpoch=0,this.nowFunc=e.nowFunc,this.nextFrameFunc=e.nextFrameFunc||s.glt,this.yieldEvery=t||"auto","auto"===this.yieldEvery&&(this.yieldEvery=125),"never"===this.yieldEvery&&null!=e.onYield)throw new Error("yieldEvery is `never` but you provided an `onYield` callback. Either change `yieldEvery` or remove the callback");s.D5U.isNumber(this.yieldEvery)&&(this.maybeWait=i.Ds(this.maybeWait.bind(this),this.yieldEvery,this.nowFunc)),this.trainBegin=e.onTrainBegin,this.trainEnd=e.onTrainEnd,this.epochBegin=e.onEpochBegin,this.epochEnd=e.onEpochEnd,this.batchBegin=e.onBatchBegin,this.batchEnd=e.onBatchEnd,this.yield=e.onYield}async maybeWait(e,t,n){const r=[];null!=this.yield&&(await(0,o.Z)(n),r.push(this.yield(e,t,n))),r.push(this.nextFrameFunc()),await Promise.all(r)}async onEpochBegin(e,t){this.currentEpoch=e,null!=this.epochBegin&&(await(0,o.Z)(t),await this.epochBegin(e,t))}async onEpochEnd(e,t){const n=[];null!=this.epochEnd&&(await(0,o.Z)(t),n.push(this.epochEnd(e,t))),"epoch"===this.yieldEvery&&n.push(this.nextFrameFunc()),await Promise.all(n)}async onBatchBegin(e,t){null!=this.batchBegin&&(await(0,o.Z)(t),await this.batchBegin(e,t))}async onBatchEnd(e,t){const n=[];null!=this.batchEnd&&(await(0,o.Z)(t),n.push(this.batchEnd(e,t))),"batch"===this.yieldEvery?n.push(this.nextFrameFunc()):s.D5U.isNumber(this.yieldEvery)&&n.push(this.maybeWait(this.currentEpoch,e,t)),await Promise.all(n)}async onTrainBegin(e){null!=this.trainBegin&&(await(0,o.Z)(e),await this.trainBegin(e))}async onTrainEnd(e){null!=this.trainEnd&&(await(0,o.Z)(e),await this.trainEnd(e))}}function d(e,t){if(null==e&&(e={}),e instanceof u)return[e];if(Array.isArray(e)&&e[0]instanceof u)return e;return i.zZ(e).map((e=>new h(e,t)))}class f{constructor(){}static registerCallbackConstructor(e,t){s.D5U.assert(e>=0&&Number.isInteger(e),(()=>`Verbosity level is expected to be an integer >= 0, but got ${e}`)),f.checkForDuplicate(t),null==f.constructors[e]&&(f.constructors[e]=[]),f.constructors[e].push(t)}static checkForDuplicate(e){for(const t in f.constructors){f.constructors[+t].forEach((t=>{if(t===e)throw new a.nu("Duplicate callback constructor.")}))}}static clear(){f.constructors={}}static createCallbacks(e){const t=[];for(const n in f.constructors){const r=+n;e>=r&&t.push(...f.constructors[r])}return t.map((e=>new e))}}function m(e,t,n,r,s,a,o,i,u){const h=new p,d=[new c,...f.createCallbacks(t)];null!=e&&d.push(...e),d.push(h);const m=new l(d);return m.setParams({epochs:n,initialEpoch:r,samples:s,steps:a,batchSize:o,verbose:t,doValidation:i,metrics:u}),{callbackList:m,history:h}}f.constructors={}},8090:function(e,t,n){"use strict";n.d(t,{cj:function(){return o},wU:function(){return i},zb:function(){return u},Lp:function(){return l},f4:function(){return p},MU:function(){return h},w8:function(){return d}});var r=n(4685),s=n(2931);const a=new Map;function o(e){(0,s.xn)(r.PS,"DataFormat",e)}function i(e){(0,s.xn)(r.Mz,"InterpolationFormat",e)}function u(e){(0,s.xn)(r.zx,"PaddingMode",e)}function l(e){(0,s.xn)(r.MK,"PoolMode",e)}const c=[];function p(e,t){c.push(e);try{const e=t();return c.pop(),e}catch(n){throw c.pop(),n}}function h(e){if(!m(e))throw new Error("Not a valid tensor name: '"+e+"'");return(0===c.length?"":c.join("/")+"/")+e}function d(e){if(!m(e))throw new Error("Not a valid tensor name: '"+e+"'");a.has(e)||a.set(e,0);const t=a.get(e);if(a.set(e,a.get(e)+1),t>0){const n=`${e}_${t}`;return a.set(n,1),n}return e}const f=new RegExp(/^[A-Za-z0-9][-A-Za-z0-9\._\/]*$/);function m(e){return!!e.match(f)}},4079:function(e,t,n){"use strict";n.d(t,{xF:function(){return d},Ad:function(){return m}});var r=n(2623),s=n(2012),a=n(2931);function o(e,t){return(0,r.lub)((()=>r._b3(r.Smz(r.dC7(e,e),t,!0))))}
1class i extends r.m7h.Serializable{getConfig(){return{}}}class u extends i{constructor(e){super(),this.defaultMaxValue=2,this.defaultAxis=0,this.maxValue=null!=e.maxValue?e.maxValue:this.defaultMaxValue,this.axis=null!=e.axis?e.axis:this.defaultAxis}apply(e){return(0,r.lub)((()=>{const t=o(e,this.axis),n=r.iUl(t,0,this.maxValue);return r.dC7(e,r.hiC(n,r.IHx((0,s.Ho)(),t)))}))}getConfig(){return{maxValue:this.maxValue,axis:this.axis}}}u.className="MaxNorm",r.m7h.registerClass(u);class l extends i{constructor(e){super(),this.defaultAxis=0,this.axis=null!=e.axis?e.axis:this.defaultAxis}apply(e){return(0,r.lub)((()=>r.hiC(e,r.IHx((0,s.Ho)(),o(e,this.axis)))))}getConfig(){return{axis:this.axis}}}l.className="UnitNorm",r.m7h.registerClass(l);class c extends i{apply(e){return r.UYe(e)}}c.className="NonNeg",r.m7h.registerClass(c);class p extends i{constructor(e){super(),this.defaultMinValue=0,this.defaultMaxValue=1,this.defaultRate=1,this.defaultAxis=0,this.minValue=null!=e.minValue?e.minValue:this.defaultMinValue,this.maxValue=null!=e.maxValue?e.maxValue:this.defaultMaxValue,this.rate=null!=e.rate?e.rate:this.defaultRate,this.axis=null!=e.axis?e.axis:this.defaultAxis}apply(e){return(0,r.lub)((()=>{const t=o(e,this.axis),n=r.IHx(r.dC7(this.rate,r.iUl(t,this.minValue,this.maxValue)),r.dC7(1-this.rate,t));return r.dC7(e,r.hiC(n,r.IHx((0,s.Ho)(),t)))}))}getConfig(){return{minValue:this.minValue,maxValue:this.maxValue,rate:this.rate,axis:this.axis}}}p.className="MinMaxNorm",r.m7h.registerClass(p);const h={maxNorm:"MaxNorm",minMaxNorm:"MinMaxNorm",nonNeg:"NonNeg",unitNorm:"UnitNorm"};function d(e){return(0,a.Kj)(e)}function f(e,t={}){return(0,a.tU)(e,r.m7h.SerializationMap.getMap().classNameMap,t,"constraint")}function m(e){if(null==e)return null;if("string"===typeof e){return f({className:e in h?h[e]:e,config:{}})}return e instanceof i?e:f(e)}},7802:function(e,t,n){"use strict";n.d(t,{l2:function(){return l},ht:function(){return d},kS:function(){return h}});var r=n(2623),s=n(588);class a{constructor(e){this.maxEntries=e||100,this.cache=new Map}get(e){let t;return this.cache.has(e)&&(t=this.cache.get(e),this.cache.delete(e),this.cache.set(e,t)),t}put(e,t){if(this.cache.has(e))this.cache.delete(e);else if(this.cache.size>=this.maxEntries){const e=this.cache.keys().next().value;this.cache.delete(e)}this.cache.set(e,t)}getMaxEntries(){return this.maxEntries}setMaxEntries(e){if(e<0)throw new Error(`The maxEntries of LRU caches must be at least 0, but got ${e}.`);if(this.maxEntries>e)for(let t=0;t<this.maxEntries-e;t++){const e=this.cache.keys().next().value;this.cache.delete(e)}this.maxEntries=e}}var o=n(2931),i=n(4396),u=n(163);class l{constructor(e){if(this.id2Value={},this.id2Mask={},this.name2Id={},e instanceof l)for(const t in e.id2Value)this.id2Value[t]=e.id2Value[t],t in e.id2Mask&&(this.id2Mask[t]=e.id2Mask[t]);else{if(null==e)return;for(const t of e)this.add(t.key,t.value)}}add(e,t,n){if(null!=this.id2Value[e.id])throw new s.nu(`Duplicate key: name=${e.name}, id=${e.id}`);return this.id2Value[e.id]=function(e,t){if(null==e.dtype||e.dtype===t.dtype)return t;try{return(0,r.pju)(t,e.dtype)}catch(n){throw new s.nu(`The dtype of the feed (${t.dtype}) can not be cast to the dtype of the key '${e.name}' (${e.dtype}).`)}}(e,t),this.name2Id[e.name]=e.id,null!=n&&(this.id2Mask[e.id]=n),this}addFeed(e){this.add(e.key,e.value)}hasKey(e){return null!=this.id2Value[e.id]}names(){return Object.keys(this.name2Id)}getValue(e){if(e instanceof u.Iy){if(null==this.id2Value[e.id])throw new s.nu(`Nonexistent key: ${e.name}`);return this.id2Value[e.id]}{const t=this.name2Id[e];if(null==t)throw new s.nu(`Feed dict has no SymbolicTensor name: ${e}`);return this.id2Value[t]}}getMask(e){if(e instanceof u.Iy){if(null==this.id2Value[e.id])throw new s.nu(`Nonexistent key: ${e.name}`);return this.id2Mask[e.id]}{const t=this.name2Id[e];if(null==t)throw new s.nu(`Feed dict has no SymbolicTensor name: ${e}`);return this.id2Mask[t]}}disposeMasks(){null!=this.id2Mask&&(0,r.B90)(this.id2Mask)}}const c=new a,p=new a;function h(e){null!=c&&c.setMaxEntries(e),null!=p&&p.setMaxEntries(e)}function d(e,t,n,s){const a=null!=n&&n.training,u=Array.isArray(e),h=u?e:[e],d=h.map((e=>e.name)),y=[],b=t.names();for(const r of d)-1!==b.indexOf(r)?y.push(t.getValue(r)):y.push(null);null!=s&&(s.maxNumTensors=-1/0,s.minNumTensors=1/0);const x=d.join(",")+"|"+t.names().sort().join(",");let w,v=c.get(x);if(null==v){const e=function(e,t){r.D5U.assert(null!=e&&e.length>0,(()=>"Expected at least one fetch, got none"));let n=[],s={};if(1===e.length){const r=m(e[0],t);n=r.sorted,s=r.recipientMap}else{const r=new Set;for(const a of e){const{sorted:e,recipientMap:o}=m(a,t);for(const t of e)r.has(t.name)||(n.push(t),r.add(t.name));for(const t in o)null==s[t]&&(s[t]=new Set),o[t].forEach((e=>s[t].add(e)))}}return{sorted:n,recipientCounts:f(s)}}(h,t);v=e.sorted,w=e.recipientCounts,c.put(x,v),p.put(x,w)}w={},a||Object.assign(w,p.get(x));const k=new l(t);for(let l=0;l<v.length;++l){if(null!=s){const e=(0,r.sq6)().numTensors;e>s.maxNumTensors&&(s.maxNumTensors=e),e<s.minNumTensors&&(s.minNumTensors=e)}const e=v[l],u=e.sourceLayer;if(u instanceof i.l)continue;const c=[],p=[],h=[];let f=!1;for(const n of e.inputs){const e=k.getValue(n),r=k.getMask(n);c.push(e),p.push(r),null!=r&&(f=!0),a||(w[n.name]--,0!==w[n.name]||t.hasKey(n)||-1!==d.indexOf(n.name)||e.isDisposed||!0===n.sourceLayer.stateful||h.push(e))}f&&((n=n||{}).mask=p[0]);const m=(0,o.zZ)(u.apply(c,n));let b=null;u.supportsMasking&&(b=u.computeMask(c,p));const x=g(e),I=Array.isArray(x)?x:[x];for(let t=0;t<I.length;++t){k.hasKey(I[t])||k.add(I[t],m[t],Array.isArray(b)?b[0]:b);const e=d.indexOf(I[t].name);-1!==e&&(y[e]=m[t])}a||(0,r.B90)(h)}return k.disposeMasks(),u?y:y[0]}function f(e){const t={};for(const n in e)t[n]=e[n].size;return t}function m(e,t){const n=new Set,r=[],s={};for(const i of t.names())n.add(i);const a=[],o=[];for(a.push(e);a.length>0;){const e=a[a.length-1];if(n.has(e.name)){a.pop();continue}const t=o[o.length-1]===a.length-1;if(0===e.inputs.length||t)a.pop(),r.push(e),n.add(e.name),t&&o.pop();else{o.push(a.length-1);for(const t of e.inputs)null==s[t.name]&&(s[t.name]=new Set),s[t.name].add(e.name),n.has(t.name)||a.push(t)}}return{sorted:r,recipientMap:s}}function g(e){let t;
1if(1===e.sourceLayer.inboundNodes.length)t=e.sourceLayer.output;else{let n=null;for(let t=0;t<e.sourceLayer.inboundNodes.length;++t)for(const r of e.sourceLayer.inboundNodes[t].outputTensors)if(r.id===e.id){n=t;break}t=e.sourceLayer.getOutputAt(n)}return t}},4396:function(e,t,n){"use strict";n.d(t,{l:function(){return i},I:function(){return u}});var r=n(2623),s=n(1944),a=n(588),o=n(163);class i extends o.mh{constructor(e){if(super({dtype:e.dtype,name:null!=e.name?e.name:(0,s.s)("input").toString()}),null==e.batchSize&&(e.batchSize=null),null==e.sparse&&(e.sparse=!1),this.trainable=!1,this.built=!0,this.sparse=e.sparse,null!=e.inputShape&&null!=e.batchInputShape)throw new a.nu("Only provide the inputShape OR batchInputShape argument to inputLayer, not both at the same time.");let t=e.batchInputShape;if(null==t){if(null==e.inputShape)throw new a.nu("An InputLayer should be passed either a `batchInputShape` or an `inputShape`.");t=[e.batchSize].concat(e.inputShape)}else if(null!=e.batchSize)throw new a.nu("Cannot specify batchSize if batchInputShape is specified when creating an InputLayer.");const n=e.dtype||"float32";this.batchInputShape=t,this.dtype=n,this.inputSpec=[{shape:t}];const r=new o.Iy(this.dtype,this.batchInputShape,this,[],{},this.name);r.nodeIndex=0,r.tensorIndex=0,new o.NB({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:[r],outputTensors:[r],inputMasks:[null],outputMasks:[null],inputShapes:[t],outputShapes:[t]})}apply(e,t){throw new a.nu(`Cannot pass any input to an InputLayer's apply() method. InputLayer name: ${this.name}`)}dispose(){return{refCountAfterDispose:this._refCount,numDisposedVariables:0}}getConfig(){return{batchInputShape:this.batchInputShape,dtype:this.dtype,sparse:this.sparse,name:this.name}}}function u(e){if(null==e.batchShape&&null==e.shape)throw new Error("Please provide to Input either a `shape` or a `batchShape` argument. Note that `shape` does not include the batch dimension.");if(null!=e.batchShape&&null!=e.shape)throw new a.nu("Please provide either a `shape` or `batchShape` argument to Input, but not both.");let t=e.batchShape;null!=e.shape&&null==t&&(t=[null].concat(e.shape));let n=e.dtype;null==n&&(n="float32");return new i({batchInputShape:t,name:e.name,dtype:n,sparse:e.sparse}).inboundNodes[0].outputTensors[0]}i.className="InputLayer",r.m7h.registerClass(i)},163:function(e,t,n){"use strict";n.d(t,{Zg:function(){return h},Iy:function(){return d},NB:function(){return m},mh:function(){return y},hA:function(){return b}});var r=n(2623),s=n(1944),a=n(8090),o=n(588),i=n(6696),u=n(2931),l=n(7538),c=n(3013),p=n(1653);class h{constructor(e){this.dtype=e.dtype,this.shape=e.shape,null!=e.shape?this.ndim=e.shape.length:this.ndim=e.ndim,this.maxNDim=e.maxNDim,this.minNDim=e.minNDim,this.axes=e.axes||{}}}class d{constructor(e,t,n,r,o,i,u){this.dtype=e,this.shape=t,this.sourceLayer=n,this.inputs=r,this.callArgs=o,this.outputTensorIndex=u,this.id=(0,s.L)(),null!=i&&(this.originalName=(0,a.MU)(i),this.name=(0,a.w8)(this.originalName)),this.rank=t.length}}let f=0;class m{constructor(e,t){this.callArgs=t,this.id=f++,this.outboundLayer=e.outboundLayer,this.inboundLayers=e.inboundLayers,this.nodeIndices=e.nodeIndices,this.tensorIndices=e.tensorIndices,this.inputTensors=e.inputTensors,this.outputTensors=e.outputTensors,this.inputMasks=e.inputMasks,this.outputMasks=e.outputMasks,this.inputShapes=e.inputShapes,this.outputShapes=e.outputShapes;for(const n of e.inboundLayers)null!=n&&n.outboundNodes.push(this);e.outboundLayer.inboundNodes.push(this)}getConfig(){const e=[];for(const t of this.inboundLayers)null!=t?e.push(t.name):e.push(null);return{outboundLayer:this.outboundLayer?this.outboundLayer.name:null,inboundLayers:e,nodeIndices:this.nodeIndices,tensorIndices:this.tensorIndices}}}let g=0;class y extends r.m7h.Serializable{constructor(e={}){super(),this._callHook=null,this._addedWeightNames=[],this._stateful=!1,this.id=g++,this.activityRegularizer=null,this.inputSpec=null,this.supportsMasking=!1,this._trainableWeights=[],this._nonTrainableWeights=[],this._losses=[],this._updates=[],this._built=!1,this.inboundNodes=[],this.outboundNodes=[];let t=e.name;if(!t){const e=this.getClassName();t=u.D1(e)+"_"+(0,s.s)(e)}if(this.name=t,this.trainable_=null==e.trainable||e.trainable,null!=e.inputShape||null!=e.batchInputShape){let t;if(null!=e.batchInputShape)t=e.batchInputShape;else if(null!=e.inputShape){let n=null;null!=e.batchSize&&(n=e.batchSize),t=[n].concat(e.inputShape)}this.batchInputShape=t;let n=e.dtype;null==n&&(n=e.inputDType),null==n&&(n="float32"),this.dtype=n}null!=e.weights?this.initialWeights=e.weights:this.initialWeights=null,this._refCount=null,this.fastWeightInitDuringBuild=!1}
1static nodeKey(e,t){return e.name+"_ib-"+t.toString()}getNodeAtIndex(e,t){if(0===this.inboundNodes.length)throw new o.LH(`The layer has never been called and thus has no defined ${t}.`);if(this.inboundNodes.length<=e)throw new o.nu(`Asked to get ${t} at node ${e}, but the layer has only ${this.inboundNodes.length} inbound nodes.`);return this.inboundNodes[e]}getInputAt(e){return u.Bq(this.getNodeAtIndex(e,"input").inputTensors)}getOutputAt(e){return u.Bq(this.getNodeAtIndex(e,"output").outputTensors)}get input(){if(this.inboundNodes.length>1)throw new o.j1(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer input" is ill-defined. Use \`getInputAt(nodeIndex)\` instead.`);if(0===this.inboundNodes.length)throw new o.j1(`Layer ${this.name} is not connected, no input to return.`);return u.Bq(this.getNodeAtIndex(0,"input").inputTensors)}get output(){if(0===this.inboundNodes.length)throw new o.j1(`Layer ${this.name} has no inbound nodes.`);if(this.inboundNodes.length>1)throw new o.j1(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer output" is ill-defined. Use \`getOutputAt(nodeIndex)\` instead.`);return u.Bq(this.getNodeAtIndex(0,"output").outputTensors)}get losses(){return this._losses}calculateLosses(){return this.losses.map((e=>e()))}get updates(){return this._updates}get built(){return this._built}set built(e){this._built=e}get trainable(){return this.trainable_}set trainable(e){this._trainableWeights.forEach((t=>t.trainable=e)),this.trainable_=e}get trainableWeights(){return this.trainable_?this._trainableWeights.filter((e=>e.trainable)):[]}set trainableWeights(e){this._trainableWeights=e}get nonTrainableWeights(){return this.trainable?this._trainableWeights.filter((e=>!e.trainable)).concat(this._nonTrainableWeights):this._trainableWeights.concat(this._nonTrainableWeights)}set nonTrainableWeights(e){this._nonTrainableWeights=e}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}get stateful(){return this._stateful}resetStates(){if(!this.stateful)throw new Error("Cannot call the resetStates() method of a non-stateful Layer object.")}assertInputCompatibility(e){if(e=u.zZ(e),null==this.inputSpec||0===this.inputSpec.length)return;const t=u.zZ(this.inputSpec);if(e.length!==t.length)throw new o.nu(`Layer ${this.name} expects ${t.length} inputs, but it received ${e.length} input tensors. Input received: ${e}`);for(let n=0;n<e.length;n++){const r=e[n],s=t[n];if(null==s)continue;const a=r.rank;if(null!=s.ndim&&a!==s.ndim)throw new o.nu(`Input ${n} is incompatible with layer ${this.name}: expected ndim=${s.ndim}, found ndim=${a}`);if(null!=s.maxNDim&&a>s.maxNDim)throw new o.nu(`Input ${n} is incompatible with layer ${this.name}: expected max_ndim=${s.maxNDim}, found ndim=${a}`);if(null!=s.minNDim&&a<s.minNDim)throw new o.nu(`Input ${n} is incompatible with layer ${this.name}: expected min_ndim=${s.minNDim}, found ndim=${a}.`);if(null!=s.dtype&&r.dtype!==s.dtype)throw new o.nu(`Input ${n} is incompatible with layer ${this.name} : expected dtype=${s.dtype}, found dtype=${r.dtype}.`);if(s.axes){const e=r.shape;for(const t in s.axes){const r=Number(t),a=s.axes[t],i=r>=0?e[r]:e[e.length+r];if(null!=a&&-1===[a,null].indexOf(i))throw new o.nu(`Input ${n} is incompatible with layer ${this.name}: expected axis ${r} of input shape to have value ${a} but got shape ${e}.`)}}if(null!=s.shape)for(let e=0;e<s.shape.length;++e){const t=s.shape[e],a=r.shape[e];if(null!=t&&null!=a&&t!==a)throw new o.nu(`Input ${n} is incompatible with layer ${this.name}: expected shape=${s.shape}, found shape=${r.shape}.`)}}}call(e,t){return e}invokeCallHook(e,t){null!=this._callHook&&this._callHook(e,t)}setCallHook(e){this._callHook=e}clearCallHook(){this._callHook=null}apply(e,t){t=t||{},this.assertNotDisposed();const n=u.zZ(e);let r=!0;for(const a of n)if(!(a instanceof d)){r=!1;break}let s=!0;for(const a of n)if(a instanceof d){s=!1;break}if(r===s)throw new o.nu("Arguments to apply() must be all SymbolicTensors or all Tensors");return(0,a.f4)(this.name,(()=>{if(!this.built){this.assertInputCompatibility(e);const t=[];for(const n of u.zZ(e))t.push(n.shape);this.build(u.Bq(t)),this.built=!0,this.initialWeights&&this.setWeights(this.initialWeights),null===this._refCount&&s&&(this._refCount=1)}if(this.assertInputCompatibility(e),s){let r=this.call(e,t);const s=u.zZ(r),a=[];for(let e of s)-1!==n.indexOf(e)&&(e=e.clone()),a.push(e);if(r=u.Bq(a),null!=this.activityRegularizer)throw new o.nj("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return r}{const n=function(e){e=u.zZ(e);const t=[];for(const n of e)t.push(n.shape);return u.Bq(t)}(e),r=this.computeOutputShape(n);let s;const a="float32";if(this.warnOnIncompatibleInputShape(Array.isArray(e)?n[0]:n),s=null!=r&&r.length>0&&Array.isArray(r[0])?r.map(((n,r)=>new d(a,n,this,u.zZ(e),t,this.name,r))):new d(a,r,this,u.zZ(e),t,this.name),this.addInboundNode(e,s,null,null,n,r,t),this._refCount++,null!=this.activityRegularizer)throw new o.nj("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return s}}))}warnOnIncompatibleInputShape(e){if(null!=this.batchInputShape)if(e.length!==this.batchInputShape.length)console.warn(`The rank of the input tensor provided (shape: ${JSON.stringify(e)}) does not match that of the batchInputShape (${JSON.stringify(this.batchInputShape)}) of the layer ${this.name}`);else{let t=!1;this.batchInputShape.forEach(((n,r)=>{null!=n&&null!=e[r]&&e[r]!==n&&(t=!0)})),t&&console.warn(`The shape of the input tensor (${JSON.stringify(e)}) does not match the expectation of layer ${this.name}: ${JSON.stringify(this.batchInputShape)}`)}}
1get outputShape(){if(null==this.inboundNodes||0===this.inboundNodes.length)throw new o.j1(`The layer ${this.name} has never been called and thus has no defined output shape.`);const e=[];for(const t of this.inboundNodes){const n=JSON.stringify(t.outputShapes);-1===e.indexOf(n)&&e.push(n)}if(1===e.length){const e=this.inboundNodes[0].outputShapes;return Array.isArray(e)&&Array.isArray(e[0])&&1===e.length?e[0]:e}throw new o.j1(`The layer ${this.name} has multiple inbound nodes with different output shapes. Hence the notion of "output shape" is ill-defined for the layer.`)}countParams(){if(!this.built)throw new o.LH(`You tried to call countParams() on ${this.name}, but the layer is not built yet. Build it first by calling build(batchInputShape).`);return c.t(this.weights)}build(e){this.built=!0}getWeights(e=!1){return(0,p.FQ)(e?this.trainableWeights:this.weights)}setWeights(e){(0,r.lub)((()=>{const t=this.weights;if(t.length!==e.length)throw new o.nu(`You called setWeights(weights) on layer "${this.name}" with a weight list of length ${e.length}, but the layer was expecting ${t.length} weights. Provided weights: ${e}...`);if(0===t.length)return;const n=[],s=(0,p.FQ)(t);for(let a=0;a<s.length;++a){const i=s[a],u=t[a],l=e[a];if(!r.D5U.arraysEqual(i.shape,l.shape))throw new o.nu(`Layer weight shape ${i.shape} not compatible with provided weight shape ${l.shape}`);n.push([u,l])}(0,p.zb)(n)}))}addWeight(e,t,n,r,s,a,u,l){if(-1!==this._addedWeightNames.indexOf(e))throw new o.nu(`Duplicate weight name ${e} for layer ${this.name}`);this._addedWeightNames.push(e),null==n&&(n="float32"),this.fastWeightInitDuringBuild&&(r=null!=l?l():(0,i.L5)("zeros"));const c=r.apply(t,n),h=new p.fU(c,n,e,a,u);return c.dispose(),null!=s&&this.addLoss((()=>s.apply(h.read()))),null==a&&(a=!0),a?this._trainableWeights.push(h):this._nonTrainableWeights.push(h),h}setFastWeightInitDuringBuild(e){this.fastWeightInitDuringBuild=e}addLoss(e){null==e||Array.isArray(e)&&0===e.length||(e=u.zZ(e),void 0!==this._losses&&null!==this._losses&&this.losses.push(...e))}computeOutputShape(e){return e}computeMask(e,t){if(!this.supportsMasking){if(null!=t){if(!Array.isArray(t))throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`);t.forEach((e=>{if(null!=e)throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`)}))}return null}return t}addInboundNode(e,t,n,r,s,a,o=null){const i=u.zZ(e);t=u.zZ(t),n=u.zZ(n),r=u.zZ(r),s=l.x6(s),a=l.x6(a);const c=[],p=[],h=[];for(const u of i)c.push(u.sourceLayer),p.push(u.nodeIndex),h.push(u.tensorIndex);new m({outboundLayer:this,inboundLayers:c,nodeIndices:p,tensorIndices:h,inputTensors:i,outputTensors:t,inputMasks:n,outputMasks:r,inputShapes:s,outputShapes:a},o);for(let u=0;u<t.length;u++)t[u].sourceLayer=this,t[u].nodeIndex=this.inboundNodes.length-1,t[u].tensorIndex=u}getConfig(){const e={name:this.name,trainable:this.trainable};return null!=this.batchInputShape&&(e.batchInputShape=this.batchInputShape),null!=this.dtype&&(e.dtype=this.dtype),e}disposeWeights(){return this.weights.forEach((e=>e.dispose())),this.weights.length}assertNotDisposed(){if(0===this._refCount)throw new Error(`Layer '${this.name}' is already disposed.`)}dispose(){if(!this.built)throw new Error(`Cannot dispose Layer ${this.name} because it has not been built yet.`);if(null===this._refCount)throw new Error(`Cannot dispose Layer ${this.name} because it has not been used yet.`);this.assertNotDisposed();let e=0;return 0===--this._refCount&&(e=this.disposeWeights()),{refCountAfterDispose:this._refCount,numDisposedVariables:e}}}function b(e,t,n){if((null==t||null!=n&&n>0)&&(t=e.sourceLayer,n=e.nodeIndex),0===t.inboundNodes.length)return[e];{const e=t.inboundNodes[n];if(0===e.inboundLayers.length)return e.inputTensors;{const t=[];for(let n=0;n<e.inboundLayers.length;n++){const r=b(e.inputTensors[n],e.inboundLayers[n],e.nodeIndices[n]);for(const e of r)-1===t.indexOf(e)&&t.push(e)}return t}}}},8913:function(e,t,n){"use strict";n.d(t,{y:function(){return p},D:function(){return d}});var r=n(2623),s=n(8891),a=n(588),o=n(3146),i=n(2931),u=n(6529);function l(e,t){let n,s;const a=t;n=a.xs,s=a.ys,r.D5U.assert(null!=n&&null!=s,(()=>`A Dataset iterator for fitDataset() is expected to generate objects of the form \`{xs: xVal, ys: yVal}\`, where the two values may be \`tf.Tensor\`, an array of Tensors, or a map of string to Tensor.  The provided Dataset instead generates ${t}`));
1const o=c("input",e.inputNames,n),i=c("output",e.outputNames,s),u=o[0].shape[0];r.D5U.assert(o.length===e.inputs.length,(()=>`LayersModel has ${e.inputs.length} inputs, but the dataset provides ${o.length} inputs.  (Expected input keys: ${JSON.stringify(e.inputNames)})`)),r.D5U.assert(i.length===e.outputs.length,(()=>`LayersModel has ${e.outputs.length} outputs, but the dataset provides ${i.length} outputs.  (Expected output keys: ${JSON.stringify(e.outputNames)})`));for(let l=0;l<o.length;l++)r.D5U.assert(o[l].shape[0]===u,(()=>`Batch size mismatch: input ${e.inputNames[l]} has ${o[l].shape[0]}; expected  ${u} based on input ${e.inputNames[0]}.`));for(let l=0;l<i.length;l++)r.D5U.assert(i[l].shape[0]===u,(()=>`Batch size mismatch: output ${e.outputNames[l]} has ${i[l].shape[0]}; expected  ${u} based on input ${e.inputNames[0]}.`));return{xs:o,ys:i}}function c(e,t,n){if(n instanceof r.esB)return[n];if(Array.isArray(n))return r.D5U.assert(n.length===t.length,(()=>`Received an array of ${n.length} Tensors, but expected ${t.length} to match the ${e} keys ${t}.`)),n;{const r=[];for(const s of t){if(null==n[s])throw new a.nu(`The feature data generated by the dataset lacks the required ${e} key '${s}'.`);r.push(n[s])}return r}}async function p(e,t,n){const c=null!=n.batchesPerEpoch;if(r.D5U.assert(null!=e.optimizer,(()=>"You must compile a model before training/testing. Use LayersModel.compile(modelCompileConfig).")),r.D5U.assert(null!=n,(()=>"For fitDataset(), the 2nd argument (config) is required, but it is not provided in this call.")),r.D5U.assert(null!=n.epochs&&n.epochs>0&&Number.isInteger(n.epochs),(()=>`For fitDataset(), config.epochs is expected to be a positive integer, but got ${n.epochs}`)),r.D5U.assert(!c||n.batchesPerEpoch>0&&Number.isInteger(n.batchesPerEpoch),(()=>`For fitDataset(), config.batchesPerEpoch is expected to be a positive integer if specified, but got ${n.batchesPerEpoch}`)),r.D5U.assert(null==n.validationSplit,(()=>"`validationSplit` is not supported by `fitDataset()`. Use validationData instead.")),e.isTraining)throw new Error("Cannot start training because another fit() call is ongoing.");e.isTraining=!0;try{const p=null!=n.validationData;let d,f;if(p)if(h(n.validationData))r.D5U.assert(null==n.validationBatches||n.validationBatches>0&&Number.isInteger(n.validationBatches),(()=>`For fitDataset() with dataset-based validation, config.validationBatches is expected not to be provided, or to be a positive integer, but got ${n.validationBatches}`));else{const e=function(e){if(3===e.length)throw new a.nj("Validation with sample weights is not implemented yet.");return{xs:e[0],ys:e[1]}}(n.validationData);d=e.xs,f=e.ys}const m=e.makeTrainFunction(),g=e.getDedupedMetricsNames();let y;y=p?g.slice().concat(g.map((e=>"val_"+e))):g.slice();const b=(0,s.CZ)(n.callbacks,n.yieldEvery),x=null==n.verbose?1:n.verbose,{callbackList:w,history:v}=(0,s.m$)(b,x,n.epochs,null,null,function(e,t){let n=null;null!=t.batchesPerEpoch?n=t.batchesPerEpoch:Number.isFinite(e.size)&&(n=e.size);return n}(t,n),null,p,y);w.setModel(e),e.history=v,await w.onTrainBegin(),e.stopTraining_=!1;let k=null==n.initialEpoch?0:n.initialEpoch,I=await t.iterator();for(;k<n.epochs;){const s={};await w.onEpochBegin(k);let a=0,y=0;for(c||(I=await t.iterator());!c||a<n.batchesPerEpoch;){const t=await I.next();if(c&&t.done){console.warn(`You provided \`batchesPerEpoch\` as ${n.batchesPerEpoch}, but your dataset iterator ran out of data after ${a} batches; interrupting training. Make sure that your dataset can generate at least \`batchesPerEpoch * epochs\` batches (in this case, `+n.batchesPerEpoch*n.epochs+" batches). You may need to use the repeat() function when building your dataset.");break}if(null!=t.value){const{xs:s,ys:i}=l(e,t.value),c={};c.batch=y,c.size=s[0].shape[0],await w.onBatchBegin(y,c);const p=[];if(null!=n.classWeight){const t=(0,u.Vf)(n.classWeight,e.outputNames);for(let e=0;e<t.length;++e)p.push(await(0,u.tl)(i[e],null,t[e]))}const h=s.concat(i).concat(p),d=m(h);r.B90(h);for(let e=0;e<g.length;++e){const t=g[e],n=d[e];c[t]=n,r.CnY(n)}await w.onBatchEnd(y,c),(0,o.i)(c),y++,a++}if(c?a>=n.batchesPerEpoch:t.done){if(p){let t;t=h(n.validationData)?(0,i.zZ)(await e.evaluateDataset(n.validationData,{batches:n.validationBatches})):(0,i.zZ)(e.evaluate(d,f,{batchSize:null==n.validationBatchSize?32:n.validationBatchSize,verbose:0}));for(let n=0;n<e.metricsNames.length;++n)s[`val_${e.metricsNames[n]}`]=t[n]}break}if(e.stopTraining_)break}if(await w.onEpochEnd(k,s),k++,e.stopTraining_)break}return await w.onTrainEnd(),await e.history.syncData(),e.history}finally{e.isTraining=!1}}function h(e){return"function"===typeof e.iterator}async function d(e,t,n){const s=null!=(n=n||{}).batches,o=e.testFunction;let u=[];
1if(n.verbose>0)throw new a.nj("Verbose mode is not implemented yet.");r.D5U.assert(!s||n.batches>0&&Number.isInteger(n.batches),(()=>`Test loop expects \`batches\` to be a positive integer, but received ${JSON.stringify(n.batches)}`));const c="function"===typeof t.next?t:await t.iterator();let p=0,h=0;for(;!s||h<n.batches;){const t=await c.next();if(u=r.lub((()=>{if(t.value){const{xs:n,ys:s}=l(e,t.value),a=n.concat(s),i=r.lub((()=>o(a)));if(r.B90(a),0===h)for(let e=0;e<i.length;++e)u.push((0,r.iD$)(0));const c=a[0].shape[0];for(let e=0;e<i.length;++e){const t=i[e],n=u[e];u[e]=r.lub((()=>r.IHx(u[e],r.dC7(c,t)))),h>0&&r.B90(n)}r.B90(i),p+=c,++h}return u})),t.done){s&&console.warn(`Your dataset iterator ran out of data during evaluateDataset(). Interrupting evalution. Make sure that your dataset can generate at least \`batches\` batches (in this case, ${n.batches} batches). You may need to use the repeat() function when building your dataset.`);break}}for(let a=0;a<u.length;++a){const e=u[a];u[a]=r.hiC(u[a],p),r.B90(e)}return(0,i.Bq)(u)}},6347:function(e,t,n){"use strict";n.d(t,{fQ:function(){return l},sf:function(){return c},YX:function(){return p},R_:function(){return h},uU:function(){return d},YV:function(){return f},kS:function(){return m}});var r=n(2623),s=n(9840),a=n(8891),o=n(588),i=n(3146),u=n(6040);function l(e){r.D5U.assert(e>0&&Number.isInteger(e),(()=>`batchSize is required to be a positive integer, but got ${e}`))}function c(e,t,n){return null==e?[null]:Array.isArray(e)?e.map((e=>(0,s.c9)(e,t,n-t))):(0,s.c9)(e,t,n-t)}function p(e,t){return r.lub((()=>null==e?null:Array.isArray(e)?e.map((e=>p(e,t))):(0,s.Iq)(e,"int32"===t.dtype?t:r.pju(t,"int32"))))}function h(e,t){const n=[];let r=0,s=null;for(;r<e;)s=r+t,s>=e&&(s=e),n.push([r,s]),r=s;return n}async function d(e,t,n,d={}){if(e.isTraining)throw new Error("Cannot start training because another fit() call is ongoing.");let f,g,y,b,x,w,v,k,I;e.isTraining=!0;try{const N=null==d.batchSize?32:d.batchSize;l(N);const S=!1,T=await e.standardizeUserData(t,n,d.sampleWeight,d.classWeight,S,N);f=T[0],g=T[1],I=T[2];let C,E=!1;if(null!=d.validationData&&d.validationData.length>0){if(E=!0,2!==d.validationData.length)throw 3===d.validationData.length?new o.nj("validationData including sample weights is not supported yet."):new o.nu(`When passing validation data, it must contain 2 (valX, valY) or 3 (valX, valY, valSampleWeight) items; ${d.validationData} is invalid.`);x=d.validationData[0],w=d.validationData[1];const t=!0,n=await e.standardizeUserData(x,w,null,null,t,N);v=n[0],k=n[1],C=v.concat(k)}else if(null!=d.validationSplit&&d.validationSplit>0&&d.validationSplit<1){E=!0;const e=Math.floor(f[0].shape[0]*(1-d.validationSplit)),t=f[0].shape[0];v=c(f,e,t),y=f,f=c(f,0,e),k=c(g,e,t),b=g,g=c(g,0,e),C=v.concat(k)}else null!=d.validationSteps&&(E=!0);const $=f.concat(g).concat(I);e.checkTrainableWeightsConsistency();const A=e.makeTrainFunction(),D=e.getDedupedMetricsNames();let _,R;E?(e.makeTestFunction(),_=e.testFunction,R=D.slice().concat(D.map((e=>"val_"+e)))):(_=null,C=[],R=D.slice());const F=(0,a.CZ)(d.callbacks,d.yieldEvery);return await async function(e,t,n,l,c,d,f,m,g,y,b,x,w,v,k){null==c&&(c=32),null==d&&(d=1),null==b&&(b=!0),null==w&&(w=0);let I=!1;if(null!=g&&null!=y&&(I=!0),null!=k&&(I=!0,null==v))throw new o.nu("Can only use `validationSteps` when doing step-wise training, i.e., `stepsPerEpoch` must be set.");const N=e.checkNumSamples(n,c,v,"steps_per_epoch");let S;null!=N&&(S=(0,u.w6)(0,N)),null==f&&(f=1);const{callbackList:T,history:C}=(0,a.m$)(m,f,d,w,N,v,c,I,x);T.setModel(e),e.history=C,await T.onTrainBegin(),e.stopTraining_=!1;for(let a=w;a<d;++a){await T.onEpochBegin(a);const u={};if(null!=v)throw new o.nj("stepsPerEpoch mode is not implemented yet.");{if("batch"===b)throw new o.nj("batch shuffling is not implemneted yet");b&&r.D5U.shuffle(S);const a=(0,r.RRF)(S),d=h(N,c);for(let o=0;o<d.length;++o){const h={};if(await T.onBatchBegin(o,h),r.lub((()=>{const i=d[o][0],f=d[o][1],m=(0,s.c9)(a,i,f-i);h.batch=o,h.size=f-i;const b=p(n,m),x=t(b);for(let e=0;e<l.length;++e){const t=l[e],n=x[e];h[t]=n,r.CnY(n)}if(o===d.length-1&&I){const t=e.testLoop(g,y,c);for(let e=0;e<l.length;++e){const n=l[e],s=t[e];r.CnY(s),u["val_"+n]=s}}})),await T.onBatchEnd(o,h),(0,i.i)(h),e.stopTraining_)break}a.dispose()}if(await T.onEpochEnd(a,u),e.stopTraining_)break}return await T.onTrainEnd(),await e.history.syncData(),e.history}(e,A,$,D,N,d.epochs,d.verbose,F,_,C,d.shuffle,R,d.initialEpoch,null,null)}finally{e.isTraining=!1,m(f,t),m(g,n),m(y,t),m(b,n),m(v,x),m(k,w),null!=I&&r.B90(I)}}function f(e){const t=[];e instanceof r.esB&&(e=[e]);for(let n=0;n<e.length;++n){const r=e[n];if(1===r.rank)t.push((0,s.dt)(r,1));else{if(0===r.rank)throw new Error("Expected tensor to be at least 1D, but received a 0D tensor (scalar).");t.push(r)}}return t}function m(e,t){if(null==e)return;const n=[];if(t instanceof r.esB)n.push(t.id);else if(Array.isArray(t))t.forEach((e=>n.push(e.id)));else if(null!=t)for(const r in t){const e=t[r];n.push(e.id)}const s=[];if(e instanceof r.esB)-1===n.indexOf(e.id)&&s.push(e);else if(Array.isArray(e))e.forEach((e=>{-1===n.indexOf(e.id)&&s.push(e)}));else if(null!=e)for(const r in e){const t=e[r];-1===n.indexOf(t.id)&&s.push(t)}s.forEach((e=>{e.isDisposed||e.dispose()}))}},6529:function(e,t,n){"use strict";n.d(t,{Vf:function(){return a},tl:function(){return o},mo:function(){return i}});var r=n(2623);function s(e,t,n){const r=t.length;if(null==e||Array.isArray(e)&&0===e.length)return t.map((e=>null));if(1===r)return Array.isArray(e)&&1===e.length?e:"object"===typeof e&&t[0]in e?[e[t[0]]]:[e];if(Array.isArray(e)){if(e.length!==r)throw new Error(`Provided ${n} is an array of ${e.length} element(s), but the model has ${r} outputs. Make sure a set of weights is provided for each model output.`);return e}if("object"===typeof e&&Object.keys(e).length>0&&"object"===typeof e[Object.keys(e)[0]]){const n=[];return t.forEach((t=>{t in e?n.push(e[t]):n.push(null)})),n}throw new Error(`The model has multiple (${r}) outputs, so ${n} must be either an array with ${r} elements or an object with ${t} keys. Provided ${n} not understood: ${JSON.stringify(e)}`)}function a(e,t){return s(e,t,"classWeight")}async function o(e,t,n,s){if(null!=t||null!=s)throw new Error("Support sampleWeight is not implemented yet");if(null!=n){const t=(0,r.lub)((()=>
1{if(1===e.shape.length)return(0,r.d9v)(e);if(2===e.shape.length){if(e.shape[1]>1){const t=1;return(0,r.NqF)(e,t)}if(1===e.shape[1])return(0,r.XLQ)(e,[e.shape[0]]);throw new Error(`Encountered unexpected last-dimension size (${e.shape[1]}) during handling of class weights. The size is expected to be >= 1.`)}throw new Error(`Unexpected rank of target (y) tensor (${e.rank}) during handling of class weights. The rank is expected to be 1 or 2.`)})),s=Array.from(await t.data());(0,r.B90)(t);const a=[];return s.forEach((e=>{if(null==n[e])throw new Error(`classWeight must contain all classes in the training data. The class ${e} exists in the data but not in classWeight`);a.push(n[e])})),(0,r.RRF)(a,"float32")}return null}function i(e,t){return(0,r.dC7)(e,t)}},588:function(e,t,n){"use strict";n.d(t,{j1:function(){return r},LH:function(){return s},nu:function(){return a},nj:function(){return o},ps:function(){return i}});class r extends Error{constructor(e){super(e),Object.setPrototypeOf(this,r.prototype)}}class s extends Error{constructor(e){super(e),Object.setPrototypeOf(this,s.prototype)}}class a extends Error{constructor(e){super(e),Object.setPrototypeOf(this,a.prototype)}}class o extends Error{constructor(e){super(e),Object.setPrototypeOf(this,o.prototype)}}class i extends Error{constructor(e){super(e),Object.setPrototypeOf(this,i.prototype)}}Error},6696:function(e,t,n){"use strict";n.d(t,{m7:function(){return p},M6:function(){return d},L5:function(){return A},Cx:function(){return $}});var r=n(2623),s=n(9840),a=n(8090),o=n(588);const i=["fanIn","fanOut","fanAvg"],u=["normal","uniform","truncatedNormal"];var l=n(2931),c=n(6040);class p extends r.m7h.Serializable{fromConfigUsesCustomObjects(){return!1}getConfig(){return{}}}class h extends p{apply(e,t){return(0,r.lls)(e,t)}}h.className="Zeros",r.m7h.registerClass(h);class d extends p{apply(e,t){return(0,r.iUs)(e,t)}}d.className="Ones",r.m7h.registerClass(d);class f extends p{constructor(e){if(super(),"object"!==typeof e)throw new o.nu(`Expected argument of type ConstantConfig but got ${e}`);if(void 0===e.value)throw new o.nu(`config must have value set but got ${e}`);this.value=e.value}apply(e,t){return(0,r.lub)((()=>(0,r.dC7)((0,r.iD$)(this.value),(0,r.iUs)(e,t))))}getConfig(){return{value:this.value}}}f.className="Constant",r.m7h.registerClass(f);class m extends p{constructor(e){super(),this.DEFAULT_MINVAL=-.05,this.DEFAULT_MAXVAL=.05,this.minval=e.minval||this.DEFAULT_MINVAL,this.maxval=e.maxval||this.DEFAULT_MAXVAL,this.seed=e.seed}apply(e,t){return(0,r.LGj)(e,this.minval,this.maxval,t)}getConfig(){return{minval:this.minval,maxval:this.maxval,seed:this.seed}}}m.className="RandomUniform",r.m7h.registerClass(m);class g extends p{constructor(e){super(),this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=e.mean||this.DEFAULT_MEAN,this.stddev=e.stddev||this.DEFAULT_STDDEV,this.seed=e.seed}apply(e,t){if("float32"!==(t=t||"float32")&&"int32"!==t)throw new o.nj(`randomNormal does not support dType ${t}.`);return s.nG(e,this.mean,this.stddev,t,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}}g.className="RandomNormal",r.m7h.registerClass(g);class y extends p{constructor(e){super(),this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=e.mean||this.DEFAULT_MEAN,this.stddev=e.stddev||this.DEFAULT_STDDEV,this.seed=e.seed}apply(e,t){if("float32"!==(t=t||"float32")&&"int32"!==t)throw new o.nj(`truncatedNormal does not support dType ${t}.`);return(0,r.Xu6)(e,this.mean,this.stddev,t,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}}y.className="TruncatedNormal",r.m7h.registerClass(y);class b extends p{constructor(e){super(),this.gain=null!=e.gain?e.gain:1}apply(e,t){return(0,r.lub)((()=>{if(2!==e.length||e[0]!==e[1])throw new o.nu("Identity matrix initializer can only be used for 2D square matrices.");return(0,r.dC7)(this.gain,(0,r.iyy)(e[0]))}))}getConfig(){return{gain:this.gain}}}b.className="Identity",r.m7h.registerClass(b);class x extends p{constructor(e){if(super(),e.scale<0)throw new o.nu(`scale must be a positive float. Got: ${e.scale}`);var t;this.scale=null==e.scale?1:e.scale,this.mode=null==e.mode?"fanIn":e.mode,t=this.mode,(0,l.xn)(i,"FanMode",t),this.distribution=null==e.distribution?"normal":e.distribution,function(e){(0,l.xn)(u,"Distribution",e)}(this.distribution),this.seed=e.seed}apply(e,t){const n=function(e,t="channelsLast"){let n,r;if((0,a.cj)(t),2===e.length)n=e[0],r=e[1];else if(-1!==[3,4,5].indexOf(e.length)){if("channelsFirst"===t){const t=(0,c.NS)(e,2);n=e[1]*t,r=e[0]*t}else if("channelsLast"===t){const t=(0,c.NS)(e,0,e.length-2);n=e[e.length-2]*t,r=e[e.length-1]*t}}else{const t=(0,c.NS)(e);n=Math.sqrt(t),r=Math.sqrt(t)}return[n,r]}(e),s=n[0],i=n[1];let u=this.scale;if("fanIn"===this.mode?u/=Math.max(1,s):"fanOut"===this.mode?u/=Math.max(1,i):u/=Math.max(1,(s+i)/2),"normal"===this.distribution){const n=Math.sqrt(u);
1if("float32"!==(t=t||"float32")&&"int32"!==t)throw new o.nj(`${this.getClassName()} does not support dType ${t}.`);return(0,r.Xu6)(e,0,n,t,this.seed)}{const n=Math.sqrt(3*u);return(0,r.LGj)(e,-n,n,t)}}getConfig(){return{scale:this.scale,mode:this.mode,distribution:this.distribution,seed:this.seed}}}x.className="VarianceScaling",r.m7h.registerClass(x);class w extends x{constructor(e){super({scale:1,mode:"fanAvg",distribution:"uniform",seed:null==e?null:e.seed})}getClassName(){return x.className}}w.className="GlorotUniform",r.m7h.registerClass(w);class v extends x{constructor(e){super({scale:1,mode:"fanAvg",distribution:"normal",seed:null==e?null:e.seed})}getClassName(){return x.className}}v.className="GlorotNormal",r.m7h.registerClass(v);class k extends x{constructor(e){super({scale:2,mode:"fanIn",distribution:"normal",seed:null==e?null:e.seed})}getClassName(){return x.className}}k.className="HeNormal",r.m7h.registerClass(k);class I extends x{constructor(e){super({scale:2,mode:"fanIn",distribution:"uniform",seed:null==e?null:e.seed})}getClassName(){return x.className}}I.className="HeUniform",r.m7h.registerClass(I);class N extends x{constructor(e){super({scale:1,mode:"fanIn",distribution:"normal",seed:null==e?null:e.seed})}getClassName(){return x.className}}N.className="LeCunNormal",r.m7h.registerClass(N);class S extends x{constructor(e){super({scale:1,mode:"fanIn",distribution:"uniform",seed:null==e?null:e.seed})}getClassName(){return x.className}}S.className="LeCunNormal",r.m7h.registerClass(S);class T extends p{constructor(e){if(super(),this.DEFAULT_GAIN=1,this.gain=null==e.gain?this.DEFAULT_GAIN:e.gain,this.seed=e.seed,null!=this.seed)throw new o.nj("Random seed is not implemented for Orthogonal Initializer yet.")}apply(e,t){return(0,r.lub)((()=>{if(e.length<2)throw new o.nj("Shape must be at least 2D.");e[0]*e[1]>2e3&&console.warn(`Orthogonal initializer is being called on a matrix with more than 2000 (${e[0]*e[1]}) elements: Slowness may result.`);const t=e[0]>e[1]?[e[1],e[0]]:e,n=s.nG(t,0,1,"float32");let a=r.$r2.gramSchmidt(n);return e[0]>e[1]&&(a=(0,r.p4s)(a)),(0,r.dC7)(this.gain,a)}))}getConfig(){return{gain:this.gain,seed:this.seed}}}T.className="Orthogonal",r.m7h.registerClass(T);const C={constant:"Constant",glorotNormal:"GlorotNormal",glorotUniform:"GlorotUniform",heNormal:"HeNormal",heUniform:"HeUniform",identity:"Identity",leCunNormal:"LeCunNormal",leCunUniform:"LeCunUniform",ones:"Ones",orthogonal:"Orthogonal",randomNormal:"RandomNormal",randomUniform:"RandomUniform",truncatedNormal:"TruncatedNormal",varianceScaling:"VarianceScaling",zeros:"Zeros"};function E(e,t={}){return(0,l.tU)(e,r.m7h.SerializationMap.getMap().classNameMap,t,"initializer")}function $(e){return(0,l.Kj)(e)}function A(e){if("string"===typeof e){const t=e in C?C[e]:e;if("GlorotNormal"===t)return new v;if("GlorotUniform"===t)return new w;if("HeNormal"===t)return new k;if("HeUniform"===t)return new I;if("LeCunNormal"===t)return new N;if("LeCunUniform"===t)return new S;{const e={};return e.className=t,e.config={},E(e)}}return e instanceof p?e:E(e)}},4685:function(e,t,n){"use strict";n.d(t,{PS:function(){return r},Mz:function(){return s},zx:function(){return a},MK:function(){return o},eY:function(){return i}});const r=["channelsFirst","channelsLast"],s=["nearest","bilinear"],a=["valid","same","causal"],o=["max","avg"],i=["sum","mul","concat","ave"]},9897:function(e,t,n){"use strict";n.d(t,{v:function(){return a}});var r=n(2623),s=n(2931);function a(e,t={},n=!1){return(0,s.tU)(e,r.m7h.SerializationMap.getMap().classNameMap,t,"layer",n)}},3146:function(e,t,n){"use strict";n.d(t,{Z:function(){return s},i:function(){return a}});var r=n(2623);async function s(e){if(null==e)return;const t=[],n=[],s=[];for(const r in e){const a=e[r];if("number"!==typeof a){const e=a;t.push(e.data()),n.push(r),s.push(e)}}if(t.length>0){const a=await Promise.all(t);for(let t=0;t<a.length;++t)e[n[t]]=a[t][0];(0,r.B90)(s)}}function a(e){if(null!=e)for(const t in e){const n=e[t];"number"!==typeof n&&n.dispose()}}},6275:function(e,t,n){"use strict";n.d(t,{Eq:function(){return i},FD:function(){return u},ke:function(){return l},t3:function(){return c},uq:function(){return h},KM:function(){return d},fO:function(){return f},Ls:function(){return g},dr:function(){return y},U2:function(){return b}});var r=n(2623),s=n(2012),a=n(9840),o=n(588);function i(e,t){return(0,r.lub)((()=>{"float32"!==e.dtype&&(e=r.pju(e,"float32"));const n=r.Smz(a.h6(e),t,!0),o=r.hlL(n.shape,(0,s.Ho)()),i=r._b3(r.gWQ(n,o));return r.hiC(e,i)}))}function u(e,t){return(0,r.lub)((()=>r.J69(a.h6(r.luU(t,e)),-1)))}function l(e,t){return(0,r.lub)((()=>r.J69(r.WnP(r.luU(t,e)),-1)))}function c(e,t){return(0,r.lub)((()=>{const n=r.luU(e,t),a=r.iUl(r.WnP(e),(0,s.Ho)(),Number.MAX_VALUE),o=r.WnP(r.hiC(n,a));return r.dC7(100,r.J69(o,-1))}))}function p(e,t){return(0,r.lub)((()=>{const n=r.iUl(t,(0,s.Ho)(),Number.MAX_VALUE),o=r.cM7(r.IHx(1,n)),i=r.iUl(e,(0,s.Ho)(),Number.MAX_VALUE),u=r.cM7(r.IHx(1,i));return r.J69(a.h6(r.luU(o,u)),-1)}))}function h(e,t,n=!1){return(0,r.lub)((()=>
1{if(n)t=r.XAC(t);else{const e=r.Smz(t,t.shape.length-1,!0);t=r.hiC(t,e)}return t=r.iUl(t,(0,s.Ho)(),1-(0,s.Ho)()),r.W76(r.Smz(r.dC7(r.pju(e,"float32"),r.cM7(t)),t.shape.length-1))}))}function d(e,t,n=!1){return(0,r.lub)((()=>{const o=r.pju(r.GWj(a.xH(e)),"int32"),i=(t=r.iUl(t,(0,s.Ho)(),1-(0,s.Ho)())).shape;return h(r.XLQ(r.lfX(o,i[i.length-1]),i),t,n)}))}function f(e,t){return(0,r.lub)((()=>{let n;return n=r.iUl(t,(0,s.Ho)(),1-(0,s.Ho)()),n=r.cM7(r.hiC(n,r.luU(1,n))),r.J69(function(e,t){if(!r.D5U.arraysEqual(e.shape,t.shape))throw new o.nu(`logits and labels must have the same shape, but got shapes ${JSON.stringify(e.shape)} and ${JSON.stringify(t.shape)}`);return(0,r.lub)((()=>{const n=r.UYe(t),s=r.W76(r.WnP(t));return r.IHx(r.luU(n,r.dC7(t,e)),r.Krr(r.Qqt(s)))}))}(e,n),-1)}))}function m(e,t){return(0,r.lub)((()=>{const n=r.iUl(e,(0,s.Ho)(),1),a=r.iUl(t,(0,s.Ho)(),1);return r.Smz(r.dC7(e,r.cM7(r.hiC(n,a))),-1)}))}function g(e,t){return(0,r.lub)((()=>{const n=i(e,-1),s=i(t,-1),a=r.dC7(n,s);return r.W76(r.Smz(a,-1))}))}const y={meanSquaredError:u,meanAbsoluteError:l,meanAbsolutePercentageError:c,meanSquaredLogarithmicError:p,squaredHinge:function(e,t){return(0,r.lub)((()=>{const n=r.gWQ(0,r.luU(1,r.dC7(e,t)));return r.J69(a.h6(n),-1)}))},hinge:function(e,t){return(0,r.lub)((()=>{const n=r.gWQ(0,r.luU(1,r.dC7(e,t)));return r.J69(n,-1)}))},categoricalHinge:function(e,t){return(0,r.lub)((()=>{const n=r.Smz(r.dC7(e,t),-1),s=r.Fp7(r.dC7(r.luU(1,e),t),-1);return r.gWQ(0,r.IHx(1,r.luU(s,n)))}))},logcosh:function(e,t){return(0,r.lub)((()=>{const n=Math.log(2),s=r.luU(t,e),a=r.luU(r.IHx(s,r.Wvh(r.dC7(-2,s))),n);return r.J69(a,-1)}))},categoricalCrossentropy:h,sparseCategoricalCrossentropy:d,binaryCrossentropy:f,kullbackLeiblerDivergence:m,poisson:function(e,t){return(0,r.lub)((()=>{const n=r.cM7(r.IHx((0,s.Ho)(),t));return r.J69(r.luU(t,r.dC7(e,n)),-1)}))},cosineProximity:g};function b(e){if("string"===typeof e){if(e in y)return y[e];let t=`Unknown loss ${e}`;throw e.toLowerCase().includes("softmaxcrossentropy")&&(t=`Unknown loss ${e}. Use "categoricalCrossentropy" as the string name for tf.losses.softmaxCrossEntropy`),new o.nu(t)}return e}},7629:function(e,t,n){"use strict";n.d(t,{_F:function(){return u},G5:function(){return l},fO:function(){return p},TY:function(){return h},uq:function(){return x},KM:function(){return v},U2:function(){return I},aI:function(){return N}});var r=n(2623),s=n(9840),a=n(588),o=n(6275),i=n(2931);function u(e,t){return(0,r.lub)((()=>{const n=r.dC7(.5,r.JpU(t)),a=s.pj(r.pjt(t,n),e.dtype);return r.J69(r.DgJ(e,a),-1)}))}function l(e,t){return(0,r.lub)((()=>s.pj(r.DgJ(r.NqF(e,-1),r.NqF(t,-1)),"float32")))}function c(e,t){return(0,r.lub)((()=>r.pju(r.Smz(r.HvI(r.DgJ(e,1),r.DgJ(t,1))),"float32")))}function p(e,t){return(0,o.fO)(e,t)}function h(e,t){return e.rank===t.rank&&(e=r.L9e(e,[e.rank-1])),(t=r.NqF(t,-1)).dtype!==e.dtype&&(t=r.pju(t,e.dtype)),r.pju(r.DgJ(e,t),"float32")}const d=o.FD,f=o.FD,m=o.ke,g=o.ke,y=o.t3,b=o.t3,x=o.uq,w=o.Ls,v=o.KM,k={binaryAccuracy:u,categoricalAccuracy:l,precision:function(e,t){return(0,r.lub)((()=>{const n=c(e,t),s=function(e,t){return(0,r.lub)((()=>r.pju(r.Smz(r.HvI(r.DgJ(e,0),r.DgJ(t,1))),"float32")))}(e,t),a=r.IHx(n,s);return r.pju(r.arb(r.pjt(a,0),r.hiC(n,a),0),"float32")}))},categoricalCrossentropy:x,sparseCategoricalCrossentropy:v,mse:d,MSE:f,mae:m,MAE:g,mape:y,MAPE:b,cosine:w};function I(e){if("string"===typeof e&&e in k)return k[e];if("string"!==typeof e&&null!=e)return e;throw new a.nu(`Unknown metric ${e}`)}function N(e){if(i.hu(null!==e,`Unknown LossOrMetricFn ${e}`),"string"===typeof e)return e;{let t;for(const n of Object.keys(o.dr))if(o.dr[n]===e){t=n;break}if(void 0!==t)return t;for(const n of Object.keys(k))if(k[n]===e){t=n;break}return void 0!==t?t:e.name}}},2328:function(e,t,n){"use strict";n.d(t,{j:function(){return o}});var r=n(2623),s=n(2012),a=n(588);function o(e){const t={Adagrad:()=>r.p_j.adagrad(.01),Adadelta:()=>r.p_j.adadelta(1,.95,(0,s.Ho)()),Adam:()=>r.p_j.adam(.001,.9,.999,(0,s.Ho)()),Adamax:()=>r.p_j.adamax(.002,.9,.999,(0,s.Ho)(),0),RMSProp:()=>r.p_j.rmsprop(.001,.9,0,(0,s.Ho)()),SGD:()=>r.p_j.sgd(.01)};if(t.adagrad=t.Adagrad,t.adadelta=t.Adadelta,t.adam=t.Adam,t.adamax=t.Adamax,t.rmsprop=t.RMSProp,t.sgd=t.SGD,e in t)return t[e]();throw new a.nu(`Unknown Optimizer ${e}`)}},539:function(e,t,n){"use strict";n.d(t,{SG:function(){return c},EC:function(){return h}});var r=n(2623),s=n(9840),a=n(2931);function o(e){if(null!=e&&"object"!==typeof e)throw new Error(`Argument to L1L2 regularizer's constructor is expected to be an object, but received: ${e}`)}
1class i extends r.m7h.Serializable{}class u extends i{constructor(e){super(),o(e),this.l1=null==e||null==e.l1?.01:e.l1,this.l2=null==e||null==e.l2?.01:e.l2,this.hasL1=0!==this.l1,this.hasL2=0!==this.l2}apply(e){return(0,r.lub)((()=>{let t=(0,r.lls)([1]);return this.hasL1&&(t=(0,r.IHx)(t,(0,r.Smz)(r.dC7(this.l1,(0,r.WnP)(e))))),this.hasL2&&(t=(0,r.IHx)(t,(0,r.Smz)(r.dC7(this.l2,s.h6(e))))),r.XLQ(t,[])}))}getConfig(){return{l1:this.l1,l2:this.l2}}static fromConfig(e,t){return new e({l1:t.l1,l2:t.l2})}}u.className="L1L2",r.m7h.registerClass(u);const l={l1l2:"L1L2"};function c(e){return(0,a.Kj)(e)}function p(e,t={}){return(0,a.tU)(e,r.m7h.SerializationMap.getMap().classNameMap,t,"regularizer")}function h(e){if(null==e)return null;if("string"===typeof e){return p({className:e in l?l[e]:e,config:{}})}return e instanceof i?e:p(e)}},8374:function(e,t,n){"use strict";n.d(t,{WE:function(){return s}});const r=1048576;function s(e,t,n=!1){if(null==e||"object"!==typeof e||Object.getPrototypeOf(e)!==Object.prototype||!a(e))throw new Error("User-defined metadata is expected to be a JSON object, but is not.");if(n){const n=JSON.stringify(e);n.length>r&&console.warn(`User-defined metadata of model "${t}" is too large in size (length=${n.length} when serialized). It is not recommended to store such large objects in user-defined metadata. Please make sure its serialized length is <= 1048576.`)}}function a(e){if(null===e)return!0;if("object"===typeof e){if(Object.getPrototypeOf(e)===Object.prototype){const t=Object.keys(e);for(const n of t){if("string"!==typeof n)return!1;if(!a(e[n]))return!1}return!0}if(Array.isArray(e)){for(const t of e)if(!a(t))return!1;return!0}return!1}{const t=typeof e;return"string"===t||"number"===t||"boolean"===t}}},6517:function(e,t,n){"use strict";n.d(t,{AF:function(){return o},kt:function(){return i},$U:function(){return u}});var r=n(588),s=n(2931),a=n(6040);function o(e,t,n){if("number"===typeof e)return(0,s.JE)(e,t);if(e.length!==t)throw new r.nu(`The ${n} argument must be an integer or tuple of ${t} integers. Received: ${e.length} elements.`);for(let s=0;s<t;++s){const o=e[s];if(!(0,a.U)(o))throw new r.nu(`The ${n} argument must be an integer or tuple of ${t} integers. Received: ${JSON.stringify(e)} including a non-integer number ${o}`)}return e}function i(e,t,n,r,s=1){if(null==e)return e;let a;return a="same"===n?e:e-(t+(t-1)*(s-1))+1,Math.floor((a+r-1)/r)}function u(e,t,n,s){if(null==e)return null;if("valid"===s)e=e*t+(0,a.Fp)([n-t,0]);else{if("same"!==s)throw new r.nu(`Unsupport padding mode: ${s}.`);e*=t}return e}},2931:function(e,t,n){"use strict";n.d(t,{JE:function(){return a},hu:function(){return o},QX:function(){return i},Bq:function(){return u},zZ:function(){return l},D1:function(){return c},zW:function(){return p},Kj:function(){return d},tU:function(){return m},L7:function(){return g},Tw:function(){return y},nK:function(){return b},xn:function(){return x},Mx:function(){return w},iQ:function(){return v},Ds:function(){return I},WT:function(){return N}});var r=n(2623),s=n(588);function a(e,t){if(Array.isArray(e)){let n=[];for(let r=0;r<t;r++)n=n.concat(e);return n}{const n=new Array(t);return n.fill(e),n}}function o(e,t){if(!e)throw new s.ps(t)}function i(e,t){let n=0;for(const r of e)r===t&&n++;return n}function u(e){return 1===e.length?e[0]:e}function l(e){return Array.isArray(e)?e:[e]}function c(e){const t=e.replace(/(.)([A-Z][a-z0-9]+)/g,"$1_$2").replace(/([a-z])([A-Z])/g,"$1_$2").toLowerCase();return"_"!==t[0]?t:"private"+t}function p(e){return e.length<=1||-1===e.indexOf("_")?e:e.replace(/[_]+(\w|$)/g,((e,t)=>t.toUpperCase()))}let h={};function d(e){if(null===e||void 0===e)return null;const t={};return t.className=e.getClassName(),t.config=e.getConfig(),t}function f(e){if(null!=e&&"object"===typeof e)if(Array.isArray(e))e.forEach((e=>f(e)));else{const t=Object.keys(e);for(const n of t){const t=e[n];null!=t&&"object"===typeof t&&(Array.isArray(t)||"ndarray"!==t.type||"number"!==typeof t.value?f(t):e[n]=t.value)}}}function m(e,t={},n={},r="object",a=!1){if("string"===typeof e){const a=e;let o;if(a in n)o=n[a];else if(a in h)o=h[a];else if(o=t[a],null==o)throw new s.nu(`Unknown ${r}: ${e}. This may be due to one of the following reasons:\n1. The ${r} is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code.\n2. The custom ${r} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);return o}{const o=e;if(null==o.className||null==o.config)throw new s.nu(`${r}: Improper config format: ${JSON.stringify(o)}.\n'className' and 'config' must set.`);const i=o.className;let u,l;if(i in n?[u,l]=n[i]:i in h?[u,l]=h.className:i in t&&([u,l]=t[i]),null==u)throw new s.nu(`Unknown ${r}: ${i}. This may be due to one of the following reasons:\n1. The ${r} is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code.\n2. The custom ${r} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);if(null!=l){const e={};for(const n of Object.keys(h))e[n]=h[n];for(const s of Object.keys(n))e[s]=n[s];o.config.customObjects=e;const t=Object.assign({},h);for(const s of Object.keys(n))h[s]=n[s];f(o.config);const r=l(u,o.config,n,a);return h=Object.assign({},t),r}{const e=Object.assign({},h);for(const r of Object.keys(n))h[r]=n[r];const t=new u(o.config);return h=Object.assign({},e),t}}}function g(e,t){return-1*function(e,t){return e<t?-1:e>t?1:0}(e,t)}function y(e){if(null==e)return e;const t=[];for(const n of e)-1===t.indexOf(n)&&t.push(n);return t}function b(e){if(null==e)throw new s.nu(`Invalid value in obj: ${JSON.stringify(e)}`);for(const t in e)if(e.hasOwnProperty(t))return!1;return!0}function x(e,t,n){if(null!=n&&e.indexOf(n)<0)throw new s.nu(`${n} is not a valid ${t}.  Valid values are ${e} or null/undefined.`)}function w(e,t,n=0,r=1/0){return o(n>=0),o(r>=n),Array.isArray(e)&&e.length>=n&&e.length<=r&&e.every((e=>typeof e===t))}function v(e,t){Array.isArray(e)?(r.D5U.assert(e.length>0,(()=>`${t} is unexpectedly an empty array.`)),e.forEach(((e,n)=>v(e,`element ${n+1} of ${t}`)))):r.D5U.assert(Number.isInteger(e)&&e>0,(()=>`Expected ${t} to be a positive integer, but got ${k(e)}.`))}function k(e){return null===e?"null":Array.isArray(e)?"["+e.map((e=>k(e))).join(",")+"]":"string"===typeof e?`"${e}"`:`${e}`}function I(e,t,n){let s,a=null!=n?n():r.D5U.now();return(...o)=>{const i=null!=n?n():r.D5U.now();return i-a<t||(a=i,s=e(...o)),s}}function N(e){return"relu"===e?"relu":"linear"===e?"linear":"elu"===e?"elu":null}},618:function(e,t,n){"use strict";n.d(t,{I:function(){return s}});var r=n(3013);function s(e,t,n,s=console.log){const u=function(e){let t=!0;const n=[],r=[];for(const s in e.nodesByDepth)n.push(e.nodesByDepth[s]);for(const s of n){if(s.length>1||1===s.length&&s[0].inboundLayers.length>1){t=!1;break}r.push(...s)}if(t)for(const s of e.layers){let e=!1;for(const n of s.inboundNodes)if(-1!==r.indexOf(n)){if(e){t=!1;break}e=!0}if(!t)break}return t}(e),l=["Layer (type)","Input Shape","Output shape","Param #"];let c;if(u?(t=t||90,n=n||[.32,.61,.89,1]):(t=t||115,n=n||[.24,.48,.7,.8,1]),n[n.length-1]<=1&&(n=n.map((e=>Math.floor(t*e)))),!u){l.push("Receives inputs"),c=[];for(const t in e.nodesByDepth)c.push(...e.nodesByDepth[t])}s("_".repeat(t)),a(l,n,s),s("=".repeat(t));const p=e.layers;for(let r=0;r<p.length;++r)u?o(p[r],n,s):i(p[r],n,c,s),s((r===p.length-1?"=":"_").repeat(t));e.checkTrainableWeightsConsistency();const h=function(e){let t;t=null!=e.collectedTrainableWeights?(0,r.t)(e.collectedTrainableWeights):(0,r.t)(e.trainableWeights);return t}(e),d=(0,r.t)(e.nonTrainableWeights);s(`Total params: ${h+d}`),s(`Trainable params: ${h}`),s(`Non-trainable params: ${d}`),s("_".repeat(t))}function a(e,t,n=console.log){let r="";for(let s=0;s<e.length;++s)s>0&&(r=r.slice(0,r.length-1)+" "),r+=e[s],r=r.slice(0,t[s]),r+=" ".repeat(t[s]-r.length);n(r)}function o(e,t,n){let r,s;try{s=e.inboundNodes.map((e=>JSON.stringify(e.inputShapes))).join(",")}catch(o){s="multiple"}try{r=JSON.stringify(e.outputShape)}catch(o){r="multiple"}a([`${e.name} (${e.getClassName()})`,s,r,e.countParams().toString()],t,n)}function i(e,t,n,r){let s,o;try{o=e.inboundNodes.map((e=>JSON.stringify(e.inputShapes))).join(",")}catch(p){o="multiple"}try{s=JSON.stringify(e.outputShape)}
1catch(p){s="multiple"}const i=[];for(const a of e.inboundNodes)if(!(null!=n&&n.length>0&&-1===n.indexOf(a)))for(let e=0;e<a.inboundLayers.length;++e){const t=a.inboundLayers[e].name,n=a.nodeIndices[e],r=a.tensorIndices[e];i.push(`${t}[${n}][${r}]`)}const u=e.name,l=e.getClassName(),c=0===i.length?"":i[0];a([`${u} (${l})`,o,s,e.countParams().toString(),c],t,r);for(let h=1;h<i.length;++h)a(["","","","",i[h]],t,r)}},6040:function(e,t,n){"use strict";n.d(t,{U:function(){return s},NS:function(){return a},VV:function(){return o},Fp:function(){return i},w6:function(){return u}});var r=n(588);function s(e){return e===parseInt(e.toString(),10)}function a(e,t,n){null==t&&(t=0),null==n&&(n=e.length);let r=1;for(let s=t;s<n;++s)r*=e[s];return r}function o(e){if(0===e.length)return Number.NaN;let t=Number.POSITIVE_INFINITY;for(let n=0;n<e.length;n++){const r=e[n];r<t&&(t=r)}return t}function i(e){if(0===e.length)return Number.NaN;let t=Number.NEGATIVE_INFINITY;for(let n=0;n<e.length;n++){const r=e[n];r>t&&(t=r)}return t}function u(e,t){if(t<e)throw new r.nu(`end (${t}) < begin (${e}) is forbidden.`);const n=[];for(let r=e;r<t;++r)n.push(r);return n}},1977:function(e,t,n){"use strict";n.d(t,{a:function(){return a},q:function(){return o}});var r=n(2931);function s(e,t,n){return("inboundNodes"===e||"outputLayers"===e||"inputLayers"===e)&&0===t&&"string"===typeof n}function a(e,t){if(null===e)return null;if("string"===typeof e)return r.zW(e);if("number"===typeof e||"boolean"===typeof e)return e;if(e instanceof Array){const n=[],r=e.length;for(let o=0;o<r;++o){const r=e[o];s(t,o,r)?n.push(r):n.push(a(r,t))}return n}{const t={};for(const n of Object.keys(e)){const s=e[n];if("name"===n&&"string"===typeof s)t[n]=s;else{const e=r.zW(n);t[e]=a(s,e)}}return t}}function o(e,t){if(null===e||void 0===e)return null;if("string"===typeof e)return r.D1(e);if("number"===typeof e||"boolean"===typeof e)return e;if(e instanceof Array){const n=[],r=e.length;for(let a=0;a<r;++a){const r=e[a];s(t,a,r)?n.push(r):n.push(o(r,t))}return n}{const t={};for(const n of Object.keys(e)){const s=e[n],a=r.D1(n);t[a]="name"!==n&&"className"!==n||"string"!==typeof s?o(s,n):s}return t}}},7538:function(e,t,n){"use strict";n.d(t,{XO:function(){return s},x6:function(){return a},nQ:function(){return o},Wf:function(){return i}});var r=n(588);function s(e){return Array.isArray(e)&&Array.isArray(e[0])}function a(e){return 0===e.length?[]:Array.isArray(e[0])?e:[e]}function o(e){let t;if(Array.isArray(e)){if(1!==e.length)throw new r.nu(`Expected Tensor length to be 1; got ${e.length}`);t=e[0]}else t=e;return t}function i(e){if(Array.isArray(e)&&Array.isArray(e[0])){if(1===e.length)return(e=e)[0];throw new r.nu(`Expected exactly 1 Shape; got ${e.length}`)}return e}},3013:function(e,t,n){"use strict";function r(e){let t=0;for(const n of e)0===n.shape.length?t+=1:t+=n.shape.reduce(((e,t)=>e*t));return t}n.d(t,{t:function(){return r}})},1653:function(e,t,n){"use strict";n.d(t,{fU:function(){return i},FQ:function(){return u},zb:function(){return l}});var r=n(2623),s=n(1944),a=n(8090);n(588);const o="Variable";class i{constructor(e,t="float32",n="Variable",i=!0,u=null){this.dtype=null==t?"float32":t,this.shape=e.shape,this.id=(0,s.L)(),n=null==n?o:n,this.originalName=(0,a.MU)(n),this.name=(0,a.w8)(this.originalName),this.trainable_=i,this.constraint=u,this.val=r.VD$(e,this.trainable_,this.name,this.dtype)}read(){return this.assertNotDisposed(),this.val}write(e){return this.assertNotDisposed(),function(e,t){if(e.shape.toString()!==t.shape.toString())throw new Error("Shape mismatch: "+JSON.stringify(e.shape)+" vs. "+JSON.stringify(t.shape))}(this.val,e),this.val.id!==e.id&&(this.val.assign(e),null!=this.constraint&&this.val.assign(this.constraint.apply(this.val))),this}dispose(){this.assertNotDisposed(),this.val.dispose()}assertNotDisposed(){if(this.val.isDisposed)throw new Error(`LayersVariable ${this.name} is already disposed.`)}get trainable(){return this.trainable_}set trainable(e){this.trainable_=e,this.val.trainable=e}}function u(e){return e.map((e=>e.read()))}function l(e){e.forEach((e=>{e[0].write(e[1])}))}},7385:function(e,t,n){"use strict";n.d(t,{i:function(){return r}});const r="3.21.0"},2087:function(e,t,n){"use strict";n.d(t,{Xhn:function(){return s.Xhn},SRH:function(){return s.SRH}});var r={};n.r(r),n.d(r,{addImpl:function(){return Bo},bincountImpl:function(){return $i},bincountReduceImpl:function(){return Ai}
1,castImpl:function(){return _o},ceilImpl:function(){return Ri},concatImpl:function(){return Wi},equalImpl:function(){return ku},expImpl:function(){return Ru},expm1Impl:function(){return Lu},floorImpl:function(){return tl},gatherNdImpl:function(){return ll},gatherV2Impl:function(){return pl},greaterEqualImpl:function(){return gl},greaterImpl:function(){return dl},lessEqualImpl:function(){return $l},lessImpl:function(){return Tl},linSpaceImpl:function(){return _l},logImpl:function(){return Fl},maxImpl:function(){return Kl},maximumImpl:function(){return Zl},minimumImpl:function(){return uc},multiplyImpl:function(){return fu},negImpl:function(){return bc},notEqualImpl:function(){return Tc},prodImpl:function(){return Wc},raggedGatherImpl:function(){return Gc},raggedTensorToTensorImpl:function(){return Qc},rangeImpl:function(){return Zc},rsqrtImpl:function(){return cp},scatterImpl:function(){return dp},sigmoidImpl:function(){return Io},simpleAbsImpl:function(){return jo},sliceImpl:function(){return Si},sparseFillEmptyRowsImpl:function(){return Rp},sparseReshapeImpl:function(){return Op},sparseSegmentReductionImpl:function(){return Bp},sqrtImpl:function(){return zp},squaredDifferenceImpl:function(){return jp},stridedSliceImpl:function(){return Yp},stringNGramsImpl:function(){return eh},stringSplitImpl:function(){return rh},stringToHashBucketFastImpl:function(){return ah},subImpl:function(){return Gu},tileImpl:function(){return ph},topKImpl:function(){return mh},transposeImpl:function(){return Jo},uniqueImpl:function(){return kh}});var s=n(2623),a=n(9121),o=n(2271),i=n(4841),u=n(1901);const l={kernelName:a.SYM,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>(0,i.d)(e,(0,u.N)((0,o.p)(n,"float32"),-1))}}};var c=n(1274),p=n(7370),h=n(9494),d=n(3261),f=n(248),m=n(827);const g={kernelName:a.VGw,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>{const t=(0,f.h)((0,o.p)(n,"float32")),r=(0,d._)((0,m.l)((0,h.i)(1),t));return(0,p.W)((0,c.h)(e,r))}}}},y={kernelName:a.SpW,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>{const t=(0,d._)((0,m.l)((0,f.h)((0,o.p)(n,"float32")),1));return(0,c.h)(e,t)}}}};var b=n(2200),x=n(4968),w=n(2683);const v={kernelName:a.mm_,inputsToSave:["a","b"],gradFunc:(e,t)=>{const[n,r]=t,s=b.assertAndGetBroadcastShape(n.shape,r.shape);return{a:()=>{let t=e;const r=b.getReductionAxes(n.shape,s);return r.length>0&&(t=(0,w.S)(t,r)),(0,x.X)(t,n.shape)},b:()=>{let t=e;const n=b.getReductionAxes(r.shape,s);return n.length>0&&(t=(0,w.S)(t,n)),(0,x.X)(t,r.shape)}}}},k={kernelName:a.Xze,saveAllInputs:!0,gradFunc:(e,t)=>{const n={};return t.forEach(((t,r)=>{n[r]=()=>e.clone()})),n}};var I=n(6577);const N={kernelName:a.sJF,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>(0,I.P)(n)}}},S={kernelName:a.aJk,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>(0,I.P)(n)}}},T={kernelName:a.M2y,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>(0,c.h)(e,(0,d._)((0,m.l)((0,h.i)(1),(0,f.h)((0,o.p)(n,"float32")))))}}};var C=n(6407);const E={kernelName:a.qw7,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>{const t=(0,d._)((0,C.I)((0,h.i)(1),(0,f.h)((0,o.p)(n,"float32"))));return(0,c.h)(e,t)}}}},$={kernelName:a.QCc,inputsToSave:["a","b"],gradFunc:(e,t)=>{const[n,r]=t,s=(0,b.assertAndGetBroadcastShape)(n.shape,r.shape);return{a:()=>{const t=(0,C.I)((0,f.h)(n),(0,f.h)(r));let a=(0,i.d)(e,(0,c.h)(r,t));const o=(0,b.getReductionAxes)(n.shape,s);return o.length>0&&(a=(0,w.S)(a,o)),(0,x.X)(a,n.shape)},b:()=>{const t=(0,C.I)((0,f.h)(n),(0,f.h)(r));let a=(0,p.W)((0,i.d)(e,(0,c.h)(n,t)));const o=(0,b.getReductionAxes)(r.shape,s);return o.length>0&&(a=(0,w.S)(a,o)),(0,x.X)(a,r.shape)}}}},A={kernelName:a.jMg,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>(0,c.h)(e,(0,C.I)((0,f.h)((0,o.p)(n,"float32")),1))}}},D={kernelName:a.Oyi,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>(0,c.h)(e,(0,m.l)((0,h.i)(1),(0,f.h)((0,o.p)(n,"float32"))))}}};var _=n(7097),R=n(3740),F=n(569),O=n(2582),M=n(2668);const B=(0,M.op)({avgPool3dGrad_:function(e,t,n,r,s,o){const i=(0,R._1)(e,"dy","avgPool3dGrad"),u=(0,R._1)(t,"input","avgPool3dGrad");let l=i,c=u,p=!1;4===u.rank&&(p=!0,l=(0,x.X)(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]]),c=(0,x.X)(u,[1,u.shape[0],u.shape[1],u.shape[2],u.shape[3]])),F.hu(5===l.rank,(()=>`Error in avgPool3dGrad: dy must be rank 5 but got rank ${l.rank}.`)),F.hu(5===c.rank,(()=>`Error in avgPool3dGrad: input must be rank 5 but got rank ${c.rank}.`)),(0,O.m)("avgPool3dGrad",s,o);const h={dy:l,input:c},d={filterSize:n,strides:r,pad:s,dimRoundingMode:o},f=_.BV.runKernel(a.IMb,h,d);return p?(0,x.X)(f,[f.shape[1],f.shape[2],f.shape[3],f.shape[4]]):f}}
1),L={kernelName:a._k9,inputsToSave:["x"],gradFunc:(e,t,n)=>{const[r]=t,{filterSize:s,strides:a,pad:o,dimRoundingMode:i}=n;return{x:()=>B(e,r,s,a,o,i)}}};const W=(0,M.op)({avgPoolGrad_:function(e,t,n,r,s){const o=(0,R._1)(e,"dy","avgPoolGrad"),i=(0,R._1)(t,"input","avgPoolGrad");F.hu(i.rank===o.rank,(()=>`Rank of input (${i.rank}) does not match rank of dy (${o.rank})`));let u=i,l=o,c=!1;3===i.rank&&(c=!0,u=(0,x.X)(i,[1,i.shape[0],i.shape[1],i.shape[2]]),l=(0,x.X)(o,[1,o.shape[0],o.shape[1],o.shape[2]])),F.hu(4===l.rank,(()=>`Error in avgPoolGrad: dy must be rank 4 but got rank ${l.rank}.`)),F.hu(4===u.rank,(()=>`Error in avgPoolGrad: input must be rank 4 but got rank ${u.rank}.`));const p={dy:l,input:u},h={filterSize:n,strides:r,pad:s},d=_.BV.runKernel(a.ROF,p,h);return c?(0,x.X)(d,[d.shape[1],d.shape[2],d.shape[3]]):d}}),P={kernelName:a.JhU,inputsToSave:["x"],gradFunc:(e,t,n)=>{const[r]=t,{filterSize:s,strides:a,pad:o}=n;return{x:()=>W(e,r,s,a,o)}}};var U=n(8687);const z={kernelName:a.XLW,inputsToSave:["a","b"],gradFunc:(e,t,n)=>{const[r,s]=t,{transposeA:a,transposeB:o}=n;return a||o?!a&&o?{a:()=>(0,U.O)(e,s,!1,!1),b:()=>(0,U.O)(e,r,!0,!1)}:a&&!o?{a:()=>(0,U.O)(s,e,!1,!0),b:()=>(0,U.O)(r,e,!1,!1)}:{a:()=>(0,U.O)(s,e,!0,!0),b:()=>(0,U.O)(e,r,!0,!0)}:{a:()=>(0,U.O)(e,s,!1,!0),b:()=>(0,U.O)(r,e,!0,!1)}}};var V=n(7918);const G={kernelName:a.zws,gradFunc:(e,t,n)=>{const{blockShape:r,crops:s}=n;return{x:()=>(0,V.f)(e,r,s)}}},H={kernelName:a.Ly9,gradFunc:(e,t,n)=>{const r=n,s=r.inputShape,a=r.shape,o=Array.from(a);for(let u=s.length-1;u>=0;u--)if(s[u]===a[u])o[u]=1;else if(1!==s[u])throw new Error(`broadcastTo(): [${s}] cannot be broadcast to [${a}].`);const i=[];for(let u=0;u<o.length;u++)o[u]>1&&i.push(u);return{x:()=>(0,w.S)(e,i,!0)}}},j={kernelName:a.RFZ,gradFunc:e=>({x:()=>e.clone()})},X={kernelName:a.gJX,gradFunc:e=>({x:()=>(0,I.P)(e)})};var q=n(7630),K=n(624),Q=n(2856),Y=n(5912);const Z={kernelName:a.xnO,inputsToSave:["x"],gradFunc:(e,t,n)=>{const[r]=t,{clipValueMin:s,clipValueMax:a}=n;return{x:()=>(0,Y.a)((0,Q.H)((0,q.b)(r,s),(0,K.z)(r,a)),e,(0,I.P)(e))}}},J={kernelName:a.yj2,inputsToSave:["x"],gradFunc:l.gradFunc};var ee=n(8644);const te={kernelName:a.Eh3,saveAllInputs:!0,gradFunc:(e,t,n)=>{const r=t.map((e=>e.shape)),{axis:s}=n,a=(0,F.EC)(s,t[0].shape)[0],o=r.map((e=>e[a]));return(0,ee.V)(e,o,a).map((e=>()=>e))}};var ne=n(6013),re=n(9832);const se={kernelName:a.mhS,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{const[r,s]=t,{dilations:a,strides:o,pad:i,dataFormat:u}=n;return F.hu(O.I0(a),(()=>`Error in gradient of conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${a}'`)),{x:()=>(0,re._)(r.shape,e,s,o,i,u),filter:()=>(0,ne.p)(r,e,s.shape,o,i,u)}}};var ae=n(4794);const oe={kernelName:a.wm,inputsToSave:["dy","filter"],gradFunc:(e,t,n)=>{const[r,s]=t,{strides:a,pad:o,dataFormat:i,dimRoundingMode:u}=n;return{dy:()=>(0,ae.T)(e,s,a,o,i,1,u),filter:()=>(0,ne.p)(e,r,s.shape,a,o,i,u)}}};const ie=(0,M.op)({conv3DBackpropFilter_:function(e,t,n,r,s){let o=e;4===e.rank&&(o=(0,x.X)(e,[1,e.shape[0],e.shape[1],e.shape[2],e.shape[3]]));let i=t;4===i.rank&&(i=(0,x.X)(t,[1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]])),F.hu(5===o.rank,(()=>`Error in conv3dDerFilter: input must be rank 5, but got shape ${o.shape}.`)),F.hu(5===i.rank,(()=>`Error in conv3dDerFilter: dy must be rank 5, but got shape ${i.shape}.`)),F.hu(5===n.length,(()=>`Error in conv3dDerFilter: filterShape must be length 5, but got ${n}.`)),F.hu(o.shape[4]===n[3],(()=>`Error in conv3dDerFilter: depth of input ${o.shape[4]}) must match input depth in filter (${n[3]}.`)),F.hu(i.shape[4]===n[4],(()=>`Error in conv3dDerFilter: depth of dy (${i.shape[4]}) must match output depth for filter (${n[4]}).`));const u={x:o,dy:i},l={strides:r,pad:s,filterShape:n};return _.BV.runKernel(a.o2y,u,l)}});var ue=n(7594);const le={kernelName:a.x12,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{const{dilations:r,strides:s,pad:a}=n;F.hu((0,O.I0)(r),(()=>`Error in gradient of conv3D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${r}'`));const[o,i]=t;return{x:()=>(0,ue._)(o.shape,e,i,s,a),filter:()=>ie(o,e,i.shape,s,a)}}};var ce=n(9331);const pe={kernelName:a.mc4,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>(0,i.d)((0,p.W)((0,ce.O)((0,o.p)(n,"float32"))),e)}}};var he=n(3254);const de={kernelName:a.TR1,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>(0,i.d)((0,he.R)((0,o.p)(n,"float32")),e)}}};var fe=n(3591),me=n(7405),ge=n(9065);const ye={kernelName:a.iHb,inputsToSave:["x"],gradFunc:(e,t,n)=>{const[r]=t,{axis:s,exclusive:a,reverse:o}=n;return{x:()=>{const t=(0,fe.Q3)([s],r.rank);let n=(0,me.z)(e,s,a,!o);return null!=t&&(n=(0,ge.p)(n,t)),n}}}};var be=n(8098),xe=n(4375);
1const we={kernelName:a.cie,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{const{dilations:r,strides:s,pad:a,dimRoundingMode:o}=n,i=null==r?[1,1]:r;F.hu(O.I0(i),(()=>`Error in gradient of depthwiseConv2dNative: dilation rates greater than 1 are not yet supported. Got dilations '${i}'`));const[u,l]=t;return F.hu(4===u.rank,(()=>`Error in gradient of depthwiseConv2dNative: input must be rank 4, but got rank ${u.rank}.`)),F.hu(4===l.rank,(()=>`Error in gradient of depthwiseConv2dNative: filter must be rank 4, but got rank ${l.rank}.`)),F.hu(u.shape[3]===l.shape[2],(()=>`Error in gradient of depthwiseConv2d: number of input channels (${u.shape[3]}) must match the inChannels dimension in filter ${l.shape[2]}.`)),F.hu(O.jT(s,i),(()=>`Error in gradient of depthwiseConv2d: Either strides or dilations must be  1. Got strides ${s} and dilations '${i}'.`)),O.m("depthwiseConv2d",a,o),{x:()=>(0,xe.v)(u.shape,e,l,s,a,i,o),filter:()=>(0,be.z)(u,e,l.shape,s,a,i,o)}}},ve={kernelName:a.p4S,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{const[r,s]=t,o={x:r,filter:s,dy:e},i={x:r,filter:s,dy:e};return{x:()=>_.BV.runKernel(a.ekb,o,n),filter:()=>_.BV.runKernel(a.Vn9,i,n)}}},ke={kernelName:a.SX0,outputsToSave:[!0],gradFunc:(e,t)=>{const[n]=t,r={dy:e,y:n};return{x:()=>_.BV.runKernel(a.HEU,r)}}};var Ie=n(4842);const Ne={kernelName:a.Omj,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t,r=(0,i.d)((0,Ie.Q)((0,p.W)((0,f.h)(n))),2/Math.sqrt(Math.PI));return{x:()=>(0,i.d)(e,r)}}},Se={kernelName:a.NEP,outputsToSave:[!0],gradFunc:(e,t)=>{const[n]=t;return{x:()=>(0,i.d)(e,n)}}},Te={kernelName:a.YFo,inputsToSave:["input"],gradFunc:(e,t)=>{const[n]=t;return{input:()=>(0,x.X)(e,n.shape)}}},Ce={kernelName:a.Y0y,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>(0,i.d)(e,(0,Ie.Q)(n))}}},Ee={kernelName:a.OR,gradFunc:e=>({x:()=>(0,I.P)(e)})},$e={kernelName:a.jeX,inputsToSave:["a","b"],gradFunc:(e,t)=>{const[n,r]=t,s=(0,b.assertAndGetBroadcastShape)(n.shape,r.shape);return{a:()=>{const t=(0,c.h)(e,(0,o.p)(r,"float32")),a=(0,b.getReductionAxes)(n.shape,s);return a.length>0?(0,x.X)((0,w.S)(t,a),n.shape):t},b:()=>{let t=(0,i.d)(e,(0,o.p)(n,"float32"));const a=(0,b.getReductionAxes)(r.shape,s);a.length>0&&(t=(0,x.X)((0,w.S)(t,a),r.shape));const u=(0,f.h)(r);return(0,p.W)((0,c.h)(t,(0,o.p)(u,"float32")))}}}};var Ae=n(2634),De=n(7501);const _e={kernelName:a.sHE,inputsToSave:["x","mean","variance","scale"],gradFunc:(e,t,n)=>{const{varianceEpsilon:r}=n,[s,a,o,u]=t,l=null==u?(0,h.i)(1):u,c=(0,b.getReductionAxes)(a.shape,s.shape),p=[];if(1===a.rank){for(let e=0;e<s.shape.length-1;++e)p.push(s.shape[e]);p.push(1)}const d=(0,m.l)(s,a),f=(0,i.d)(e,l),g=(0,Ae.b)((0,C.I)(o,(0,h.i)(r))),y=(0,i.d)((0,i.d)((0,i.d)(g,g),g),(0,h.i)(-.5));return{x:()=>1===a.rank?(0,x.X)((0,i.d)((0,i.d)(e,(0,De.G)((0,x.X)(g,[1,1,1,a.shape[0]]),p)),l),s.shape):(0,x.X)((0,i.d)((0,i.d)(e,g),l),s.shape),mean:()=>{let e=(0,i.d)((0,i.d)(g,(0,h.i)(-1)),f);return 1===a.rank&&(e=(0,w.S)(e,c)),(0,x.X)(e,a.shape)},variance:()=>{let e=(0,i.d)((0,i.d)(y,d),f);return 1===a.rank&&(e=(0,w.S)(e,c)),(0,x.X)(e,a.shape)},scale:()=>{const t=(0,i.d)(d,g);let n=(0,i.d)(e,t);return 1===a.rank&&(n=(0,w.S)(n,c)),(0,x.X)(n,a.shape)},offset:()=>{let t=e;return 1===a.rank&&(t=(0,w.S)(t,c)),(0,x.X)(t,a.shape)}}}};var Re=n(8749);const Fe={kernelName:a.qi_,inputsToSave:["x","indices"],gradFunc:(e,t,n)=>{const[r,s]=t,{axis:a}=n,o=(0,F.EC)(a,r.shape)[0];return{x:()=>{const t=r.shape,n=s.size,i=t.slice(0,o),u=i.length,l=t.slice(a,t.length).slice(1),c=l.length,p=Oe(0,u),h=Oe(u+1,u+1+c),d=Me([i,[n],l]),f=(0,x.X)(e,d),m=(0,x.X)(s,[n]),g=Me([[u],p,h]),y=(0,ge.p)(f,g);let b=(0,Re.p)(y,m,r.shape[o]);const w=(0,fe.LJ)(g);return b=(0,ge.p)(b,w),b},indices:()=>s}}};function Oe(e,t){const n=[];for(let r=e;r<t;++r)n.push(r);return n}function Me(e){const t=[];for(let n=0;n<e.length;++n)for(let r=0;r<e[n].length;++r)t.push(e[n][r]);return t}const Be={kernelName:a.Acj,inputsToSave:["a","b"],gradFunc:(e,t)=>{const[n,r]=t;return{a:()=>(0,I.P)(n),b:()=>(0,I.P)(r)}}},Le={kernelName:a.iJz,gradFunc:e=>({x:()=>(0,o.p)(e,"float32")})}
1,We={kernelName:a.avt,gradFunc:e=>({x:()=>(0,I.P)(e)})},Pe={kernelName:a.iWB,gradFunc:e=>({x:()=>(0,I.P)(e)})},Ue={kernelName:a.r7n,gradFunc:e=>({x:()=>(0,I.P)(e)})};var ze=n(636);const Ve={kernelName:a.J$2,inputsToSave:["x"],gradFunc:(e,t,n)=>{const[r]=t,{alpha:s}=n,a=(0,ze.p)(r,0);return{x:()=>(0,Y.a)(a,e,(0,i.d)(e,s))}}},Ge={kernelName:a.kU,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>(0,c.h)(e,(0,C.I)(n,1))}}},He={kernelName:a.ZbH,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>(0,c.h)(e,(0,o.p)(n,"float32"))}}},je={kernelName:a.qCd,inputsToSave:[],outputsToSave:[!0],gradFunc:(e,t,n)=>{const[r]=t,{axis:s}=n;return{logits:()=>{const t=(0,Ie.Q)(r);return(0,m.l)(e,(0,i.d)((0,w.S)(e,s,!0),t))}}}};const Xe=(0,M.op)({localResponseNormalizationBackprop_:function(e,t,n,r=5,s=1,o=1,i=.5){const u={x:e,y:t,dy:n},l={depthRadius:r,bias:s,alpha:o,beta:i};return _.BV.runKernel(a.Hhh,u,l)}}),qe={kernelName:a.eZ0,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{const[r,s]=t,{depthRadius:a,bias:o,alpha:i,beta:u}=n;return{x:()=>Xe(r,s,e,a,o,i,u)}}};var Ke=n(6477);function Qe(e,t,n,r){return t.rank<n.rank&&(t=(0,x.X)(t,fe.rv(t.shape,r))),e.rank<n.rank&&(e=(0,x.X)(e,fe.rv(e.shape,r))),{x:()=>(0,i.d)(e,(0,o.p)((0,Ke.D)(n,t),e.dtype))}}const Ye={kernelName:a.YoZ,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{const r=n,{reductionIndices:s}=r,a=t[0],o=Qe(e,t[1],a,F.EC(s,a.shape));return{x:()=>o.x()}}};var Ze=n(6573);const Je={kernelName:a.BMI,inputsToSave:["a","b"],gradFunc:(e,t)=>{const[n,r]=t;return{a:()=>(0,i.d)(e,(0,o.p)((0,q.b)(n,r),"float32")),b:()=>(0,i.d)(e,(0,o.p)((0,Ze.d)(n,r),"float32"))}}};const et=(0,M.op)({maxPool3dGrad_:function(e,t,n,r,s,o,i){const u=(0,R._1)(e,"dy","maxPool3dGrad"),l=(0,R._1)(t,"input","maxPool3dGrad"),c=(0,R._1)(n,"output","maxPool3dGrad");let p=u,h=l,d=c,f=!1;4===l.rank&&(f=!0,p=(0,x.X)(u,[1,u.shape[0],u.shape[1],u.shape[2],u.shape[3]]),h=(0,x.X)(l,[1,l.shape[0],l.shape[1],l.shape[2],l.shape[3]]),d=(0,x.X)(c,[1,c.shape[0],c.shape[1],c.shape[2],c.shape[3]])),F.hu(5===p.rank,(()=>`Error in maxPool3dGrad: dy must be rank 5 but got rank ${p.rank}.`)),F.hu(5===h.rank,(()=>`Error in maxPool3dGrad: input must be rank 5 but got rank ${h.rank}.`)),F.hu(5===d.rank,(()=>`Error in maxPool3dGrad: output must be rank 5 but got rank ${d.rank}.`)),(0,O.m)("maxPool3dGrad",o,i);const m={dy:p,input:h,output:d},g={filterSize:r,strides:s,pad:o,dimRoundingMode:i},y=_.BV.runKernel(a.OU7,m,g);return f?(0,x.X)(y,[y.shape[1],y.shape[2],y.shape[3],y.shape[4]]):y}}),tt={kernelName:a.OAf,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{const[r,s]=t,{filterSize:a,strides:o,pad:i,dimRoundingMode:u}=n;return{x:()=>et(e,r,s,a,o,i,u)}}};const nt=(0,M.op)({maxPoolGrad_:function(e,t,n,r,s,o,i){const u=(0,R._1)(e,"dy","maxPoolGrad"),l=(0,R._1)(t,"input","maxPoolGrad"),c=(0,R._1)(n,"output","maxPoolGrad");F.hu(l.rank===u.rank,(()=>`Rank of input (${l.rank}) does not match rank of dy (${u.rank})`)),F.hu(4===u.rank,(()=>`Error in maxPoolGrad: dy must be rank 4 but got rank ${u.rank}.`)),F.hu(4===l.rank,(()=>`Error in maxPoolGrad: input must be rank 4 but got rank ${l.rank}.`)),O.m("maxPoolGrad",o,i);const p={dy:u,input:l,output:c},h={filterSize:r,strides:s,pad:o,dimRoundingMode:i};return _.BV.runKernel(a.OV7,p,h)}}),rt={kernelName:a.mTV,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{const[r,s]=t,{filterSize:a,strides:o,pad:i}=n;return{x:()=>nt(e,r,s,a,o,i)}}};var st=n(4917);const at={kernelName:a.q2K,inputsToSave:["x"],gradFunc:(e,t,n)=>{const[r]=t,{axis:s}=n,a=F.EC(s,r.shape),o=(0,fe.kz)(r.shape,a)[1],u=F.NA(o);return{x:()=>{const t=r.shape.slice();a.forEach((e=>{t[e]=1}));const n=(0,x.X)(e,t);return(0,c.h)((0,i.d)(n,(0,st.i)(r.shape,"float32")),u)}}}},ot={kernelName:a.c17,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{const r=n,{axis:s}=r,[a,o]=t,i=Qe(e,o,a,F.EC(s,a.shape));return{x:()=>i.x()}}},it={kernelName:a.q8u,inputsToSave:["a","b"],gradFunc:(e,t)=>{const[n,r]=t;return{a:()=>(0,i.d)(e,(0,o.p)((0,K.z)(n,r),"float32")),b:()=>(0,i.d)(e,(0,o.p)((0,ze.p)(n,r),"float32"))}}};var ut=n(2676);const lt={kernelName:a.jQs,inputsToSave:["x"],gradFunc:(e,t,n)=>{const r=t[0],{paddings:s}=n,a=s.map((e=>e[0]));return{x:()=>(0,ut.t)(e,a,r.shape)}}};var ct=n(6943);const pt={kernelName:a.Vbg,inputsToSave:["a","b"],gradFunc:(e,t)=>{const[n,r]=t,s=(0,b.assertAndGetBroadcastShape)(n.shape,r.shape);return{a:()=>{const t=(0,b.getReductionAxes)(n.shape,s);return t.length>0?(0,x.X)((0,w.S)(e,t),n.shape):e},b:()=>{const t=(0,i.d)(e,(0,p.W)((0,ct.G)((0,c.h)(n,r)))),a=(0,b.getReductionAxes)(r.shape,s);return a.length>0?(0,x.X)((0,w.S)(t,a),r.shape):t}}}},ht={kernelName:a.wYn,inputsToSave:["a","b"],gradFunc:(e,t)=>{const[n,r]=t,s=(0,b.assertAndGetBroadcastShape)(n.shape,r.shape);return{a:()=>{const t=(0,i.d)(e,(0,o.p)(r,"float32")),a=(0,b.getReductionAxes)(n.shape,s);return a.length>0?(0,x.X)((0,w.S)(t,a),n.shape):t},b:()=>{const t=(0,i.d)(e,(0,o.p)(n,"float32")),a=(0,b.getReductionAxes)(r.shape,s);return a.length>0?(0,x.X)((0,w.S)(t,a),r.shape):t}}}}
1,dt={kernelName:a.kuV,gradFunc:e=>({x:()=>(0,p.W)(e)})};var ft=n(723);const mt={kernelName:a.we_,inputsToSave:["indices"],gradFunc:(e,t)=>{const n=t[0];return{indices:()=>(0,ft.l)(n.shape,"float32")}}},gt={kernelName:a.qWM,gradFunc:e=>({x:()=>(0,I.P)(e)})};var yt=n(4136);const bt={kernelName:a.QiL,saveAllInputs:!0,gradFunc:(e,t,n)=>{const{axis:r}=n;return(0,yt.H)(e,r).map((e=>()=>e))}},xt={kernelName:a.lyA,inputsToSave:["x"],gradFunc:(e,t,n)=>{const r=t[0],{paddings:s}=n,a=s.map((e=>e[0]));return{x:()=>(0,ut.t)(e,a,r.shape)}}};var wt=n(2597),vt=n(3453);const kt={kernelName:a.pe_,inputsToSave:["a","b"],outputsToSave:[!0],gradFunc:(e,t)=>{const[n,r,s]=t,a=n,u=r,l=b.assertAndGetBroadcastShape(a.shape,u.shape);return{a:()=>{const t=(0,o.p)(u,"float32");let n=(0,i.d)(e,(0,i.d)(t,(0,vt.s)(a,(0,m.l)(t,(0,h.i)(1)))));const r=b.getReductionAxes(a.shape,l);return r.length>0&&(n=(0,w.S)(n,r)),(0,x.X)(n,a.shape)},b:()=>{const t=(0,ze.p)(a,0),n=(0,Y.a)(t,(0,wt.c)(a),(0,I.P)(a));let r=(0,i.d)(e,(0,i.d)(s,n));const o=b.getReductionAxes(u.shape,l);return o.length>0&&(r=(0,w.S)(r,o)),(0,x.X)(r,u.shape)}}}},It={kernelName:a.o0g,inputsToSave:["x","alpha"],gradFunc:(e,t)=>{const[n,r]=t,s=(0,ze.p)(n,0);return{x:()=>(0,Y.a)(s,e,(0,i.d)(e,r)),alpha:()=>{let t=(0,Y.a)(s,(0,I.P)(e),(0,i.d)(e,n));const a=(0,b.getReductionAxes)(r.shape,e.shape);return a.length>0&&(t=(0,w.S)(t,a)),(0,x.X)(t,r.shape)}}}};var Nt=n(9640);function St(e,t,n){const r=e.shape.length,s=r-n.length,a=fe.Q3(n,r);let o=e;null!=a&&(o=(0,ge.p)(e,a));const u=o.shape.slice(),l=u.splice(r-n.length,n.length).reduce(((e,t)=>e*t),1);u.push(l);let c=function(e,t,n){const r=e.shape.slice();r[n]=1;const s=(0,x.X)(t,r),a=(0,Nt.$)(e,n,!0,!1),o=(0,Nt.$)(e,n,!0,!0),u=(0,i.d)(a,o);return(0,i.d)(s,u)}(o.reshape(u),t,s);if(c=c.reshape(o.shape),null!=a){const e=fe.LJ(a);c=(0,ge.p)(c,e)}return c}const Tt={kernelName:a.DlI,inputsToSave:["x"],gradFunc:(e,t,n)=>{const[r]=t,{axis:s}=n;let a=[];return a=void 0===s||null===s?r.shape.map(((e,t)=>t)):"number"===typeof s?[s]:s,{x:()=>St(r,e,a)}}},Ct={kernelName:a.oHH,inputsToSave:["a","b"],gradFunc:(e,t)=>{const[n,r]=t,s=b.assertAndGetBroadcastShape(n.shape,r.shape);return{a:()=>{const t=(0,c.h)(e,(0,o.p)(r,"float32")),a=b.getReductionAxes(n.shape,s);return a.length>0?(0,x.X)((0,w.S)(t,a),n.shape):t},b:()=>{let t=(0,i.d)(e,(0,o.p)(n,"float32"));const a=b.getReductionAxes(r.shape,s);a.length>0&&(t=(0,x.X)((0,w.S)(t,a),r.shape));const u=(0,f.h)(r);return(0,p.W)((0,c.h)(t,(0,o.p)(u,"float32")))}}}},Et={kernelName:a.$HU,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>(0,c.h)(e,(0,p.W)((0,f.h)(n)))}}},$t={kernelName:a.SbG,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t,r=(0,i.d)((0,K.z)(n,6),(0,u.N)(n));return{x:()=>(0,i.d)(e,(0,o.p)(r,"float32"))}}},At={kernelName:a.qkr,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>(0,i.d)(e,(0,o.p)((0,u.N)(n),"float32"))}}},Dt={kernelName:a.HZH,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>(0,x.X)(e,n.shape)}}},_t={kernelName:a._Yw,inputsToSave:["images"],gradFunc:(e,t,n)=>{const[r]=t,s={dy:e,images:r};return{images:()=>_.BV.runKernel(a.zbQ,s,n)}}},Rt={kernelName:a.dpD,inputsToSave:["images"],gradFunc:(e,t,n)=>{const[r]=t,s={dy:e,images:r};return{images:()=>_.BV.runKernel(a.Hmb,s,n)}}};var Ft=n(7486);const Ot={kernelName:a.mKl,gradFunc:(e,t,n)=>{const{dims:r}=n,s=(0,F.EC)(r,e.shape);return{x:()=>(0,Ft.G)(e,s)}}},Mt={kernelName:a.e07,gradFunc:e=>({x:()=>(0,I.P)(e)})},Bt={kernelName:a.bV0,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>(0,p.W)((0,c.h)(e,(0,i.d)((0,vt.s)(n,1.5),2)))}}};var Lt=n(8651);const Wt={kernelName:a.PhF,inputsToSave:["condition"],gradFunc:(e,t)=>{const[n]=t;return{condition:()=>(0,o.p)((0,I.P)(n),"float32"),t:()=>(0,i.d)(e,(0,o.p)(n,e.dtype)),e:()=>(0,i.d)(e,(0,o.p)((0,Lt.h)(n),e.dtype))}}};var Pt=n(3179);const Ut={kernelName:a.oFR,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>{const t=(0,ze.p)(n,(0,h.i)(0)),r=(0,h.i)(Pt.y),s=(0,h.i)(Pt.$),a=(0,i.d)(e,s),u=(0,i.d)((0,i.d)(e,r),(0,Ie.Q)((0,o.p)(n,"float32")));return(0,Y.a)(t,a,u)}}}},zt={kernelName:a.a5O,outputsToSave:[!0],gradFunc:(e,t)=>{const[n]=t;return{x:()=>(0,i.d)(e,(0,i.d)(n,(0,m.l)((0,h.i)(1),n)))}}}
1,Vt={kernelName:a.i5y,gradFunc:e=>({x:()=>(0,I.P)(e)})};var Gt=n(173);const Ht={kernelName:a.RQH,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>(0,i.d)((0,Gt.m)((0,o.p)(n,"float32")),e)}}};var jt=n(2699);const Xt={kernelName:a.wYB,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>(0,i.d)((0,jt.f)((0,o.p)(n,"float32")),e)}}};var qt=n(9682),Kt=n(7650);const Qt={kernelName:a.p2w,inputsToSave:["x"],gradFunc:(e,t,n)=>{const[r]=t,{begin:s,size:a}=n,o=r.shape,[i,u]=(0,Kt.parseSliceParams)(r,s,a),l=[];for(let c=0;c<e.rank;c++)l.push([i[c],o[c]-i[c]-u[c]]);return{x:()=>(0,qt.v)(e,l)}}},Yt={kernelName:a.Gcp,outputsToSave:[!0],gradFunc:(e,t,n)=>{const[r]=t,{dim:s}=n,a=(0,i.d)(e,r);return{logits:()=>(0,m.l)(a,(0,i.d)((0,w.S)(a,[s],true),r))}}};var Zt=n(625);const Jt={kernelName:a.MRv,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>(0,i.d)(e,(0,Zt.X)(n))}}};var en=n(8441);const tn={kernelName:a.TQc,gradFunc:(e,t,n)=>{const{blockShape:r,paddings:s}=n;return{x:()=>(0,en.E)(e,r,s)}}};var nn=n(6884);const rn={kernelName:a.L8s,gradFunc:(e,t,n)=>{const{axis:r}=n;return{x:()=>(0,nn.z)(e,r)}}},sn={kernelName:a.FKq,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>(0,c.h)(e,(0,i.d)((0,d._)((0,o.p)(n,"float32")),2))}}},an={kernelName:a.bK0,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>(0,i.d)(e,(0,i.d)((0,o.p)(n,"float32"),2))}}},on={kernelName:a._tC,inputsToSave:["a","b"],gradFunc:(e,t)=>{const[n,r]=t,s=(0,h.i)(2);return{a:()=>(0,i.d)(e,(0,i.d)(s,(0,m.l)(n,r))),b:()=>(0,i.d)(e,(0,i.d)(s,(0,m.l)(r,n)))}}}
1,un={kernelName:a.h8e,gradFunc:e=>({x:()=>(0,I.P)(e)})},ln={kernelName:a.Tr8,inputsToSave:["a","b"],gradFunc:(e,t)=>{const[n,r]=t,s=b.assertAndGetBroadcastShape(n.shape,r.shape);return{a:()=>{let t=e;const r=b.getReductionAxes(n.shape,s);return r.length>0&&(t=(0,w.S)(t,r)),(0,x.X)(t,n.shape)},b:()=>{let t=e;const n=b.getReductionAxes(r.shape,s);return n.length>0&&(t=(0,w.S)(t,n)),(0,x.X)((0,p.W)(t),r.shape)}}}},cn={kernelName:a.GBy,inputsToSave:["x"],gradFunc:(e,t,n)=>{const[r]=t,s=r.shape.slice(),{axis:a}=n;(0,F.EC)(a,r.shape).forEach((e=>{s[e]=1}));const o=(0,x.X)(e,s),u=(0,i.d)(o,(0,st.i)(r.shape,"float32"));return{x:()=>u}}},pn={kernelName:a.sEM,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>(0,c.h)(e,(0,f.h)((0,Gt.m)(n)))}}},hn={kernelName:a.MIZ,outputsToSave:[!0],gradFunc:(e,t)=>{const[n]=t;return{x:()=>(0,i.d)((0,m.l)((0,h.i)(1),(0,f.h)(n)),e)}}},dn={kernelName:a.n9L,inputsToSave:["x"],gradFunc:(e,t,n)=>{const[r]=t,{reps:s}=n;return{x:()=>{let t=(0,I.P)(r);if(1===r.rank)for(let n=0;n<s[0];++n)t=(0,C.I)(t,(0,ut.t)(e,[n*r.shape[0]],[r.shape[0]]));else if(2===r.rank)for(let n=0;n<s[0];++n)for(let a=0;a<s[1];++a)t=(0,C.I)(t,(0,ut.t)(e,[n*r.shape[0],a*r.shape[1]],[r.shape[0],r.shape[1]]));else if(3===r.rank)for(let n=0;n<s[0];++n)for(let a=0;a<s[1];++a)for(let o=0;o<s[2];++o)t=(0,C.I)(t,(0,ut.t)(e,[n*r.shape[0],a*r.shape[1],o*r.shape[2]],[r.shape[0],r.shape[1],r.shape[2]]));else{if(4!==r.rank)throw new Error(`Gradient for tile operation is not implemented for rank-${r.rank} tensors yet.`);for(let n=0;n<s[0];++n)for(let a=0;a<s[1];++a)for(let o=0;o<s[2];++o)for(let i=0;i<s[3];++i)t=(0,C.I)(t,(0,ut.t)(e,[n*r.shape[0],a*r.shape[1],o*r.shape[2],i*r.shape[3]],[r.shape[0],r.shape[1],r.shape[2],r.shape[3]]))}return t}}}},fn={kernelName:a.G3Y,gradFunc:(e,t,n)=>{const r=n,{perm:s}=r,a=fe.LJ(s);return{x:()=>(0,ge.p)(e,a)}}};var mn=n(2991);const gn={kernelName:a.ToN,gradFunc:(e,t,n)=>{const r=n,{axis:s}=r;return{value:()=>(0,mn.k)(e,s)}}};var yn=n(1300),bn=n(4926),xn=n(632);const wn={kernelName:a.Qvg,inputsToSave:["segmentIds"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>function(e,t){const n=(0,xn.g)(t,(0,I.P)(t)),r=(0,bn.I)(e,n);let s=(0,q.b)(t,(0,h.i)(0,"int32"));const a=r.rank-s.rank;for(let i=0;i<a;++i)s=(0,yn.d)(s,i+1);s=(0,Q.H)(s,(0,st.i)(r.shape,"bool"));const o=(0,I.P)(r);return(0,Y.a)(s,r,o)}(e,n)}}};
1const vn={kernelName:a.RuY,gradFunc:e=>({x:()=>(0,I.P)(e)})};var kn=n(6151);const In=[l,g,y,v,k,N,S,T,E,$,A,D,L,P,z,G,H,j,X,Z,J,te,oe,se,le,pe,de,ye,we,ve,Ct,ke,Ne,Se,Te,Ce,$e,Ee,_e,Fe,Be,Le,We,Pe,Ue,Ve,Ge,He,je,qe,Ye,Ye,Je,tt,rt,at,ot,it,lt,pt,ht,dt,mt,gt,bt,xt,xt,kt,It,Tt,Et,$t,At,Dt,_t,Rt,Ot,Mt,Bt,Wt,Ut,zt,Vt,Ht,Xt,Qt,Yt,Jt,tn,tn,rn,rn,sn,on,an,un,ln,cn,pn,hn,dn,fn,gn,wn,vn];for(const Nv of In)(0,kn.Li)(Nv);var Nn=n(6235),Sn=n(4077);(0,Sn.t3)().prototype.abs=function(){return this.throwIfDisposed(),(0,Nn.W)(this)};var Tn=n(7839);(0,Sn.t3)().prototype.acos=function(){return this.throwIfDisposed(),(0,Tn.K)(this)};var Cn=n(1470);(0,Sn.t3)().prototype.acosh=function(){return this.throwIfDisposed(),(0,Cn._)(this)},(0,Sn.t3)().prototype.add=function(e){return this.throwIfDisposed(),(0,C.I)(this,e)};var En=n(781);(0,Sn.t3)().prototype.all=function(e,t){return this.throwIfDisposed(),(0,En.$)(this,e,t)};var $n=n(2998);(0,Sn.t3)().prototype.any=function(e,t){return this.throwIfDisposed(),(0,$n.Y)(this,e,t)};var An=n(47);(0,Sn.t3)().prototype.argMax=function(e){return this.throwIfDisposed(),(0,An.N)(this,e)};var Dn=n(7394);(0,Sn.t3)().prototype.argMin=function(e){return this.throwIfDisposed(),(0,Dn.v)(this,e)},(0,Sn.t3)().prototype.asScalar=function(){return this.throwIfDisposed(),(0,F.hu)(1===this.size,(()=>"The array must have only 1 element.")),(0,x.X)(this,[])},(0,Sn.t3)().prototype.asType=function(e){return this.throwIfDisposed(),(0,o.p)(this,e)},(0,Sn.t3)().prototype.as1D=function(){return this.throwIfDisposed(),(0,x.X)(this,[this.size])},(0,Sn.t3)().prototype.as2D=function(e,t){return this.throwIfDisposed(),(0,x.X)(this,[e,t])},(0,Sn.t3)().prototype.as3D=function(e,t,n){return this.throwIfDisposed(),(0,x.X)(this,[e,t,n])},(0,Sn.t3)().prototype.as4D=function(e,t,n,r){return this.throwIfDisposed(),(0,x.X)(this,[e,t,n,r])},(0,Sn.t3)().prototype.as5D=function(e,t,n,r,s){return this.throwIfDisposed(),(0,x.X)(this,[e,t,n,r,s])};var _n=n(2421);(0,Sn.t3)().prototype.asin=function(){return this.throwIfDisposed(),(0,_n.Z)(this)};var Rn=n(1891);(0,Sn.t3)().prototype.asinh=function(){return this.throwIfDisposed(),(0,Rn.V)(this)};var Fn=n(7037);(0,Sn.t3)().prototype.atan=function(){return this.throwIfDisposed(),(0,Fn.z)(this)};var On=n(9812);(0,Sn.t3)().prototype.atan2=function(e){return this.throwIfDisposed(),(0,On.f)(this,e)};var Mn=n(369);(0,Sn.t3)().prototype.atanh=function(){return this.throwIfDisposed(),(0,Mn.C)(this)};var Bn=n(5176);(0,Sn.t3)().prototype.avgPool=function(e,t,n,r){return this.throwIfDisposed(),(0,Bn.w)(this,e,t,n,r)},(0,Sn.t3)().prototype.batchToSpaceND=function(e,t){return this.throwIfDisposed(),(0,en.E)(this,e,t)};var Ln=n(7505);(0,Sn.t3)().prototype.batchNorm=function(e,t,n,r,s){return this.throwIfDisposed(),(0,Ln.t)(this,e,t,n,r,s)};var Wn=n(8247);(0,Sn.t3)().prototype.broadcastTo=function(e){return this.throwIfDisposed(),(0,Wn.U)(this,e)},(0,Sn.t3)().prototype.cast=function(e){return this.throwIfDisposed(),(0,o.p)(this,e)};var Pn=n(6825);(0,Sn.t3)().prototype.ceil=function(){return this.throwIfDisposed(),(0,Pn.m)(this)};var Un=n(2279);(0,Sn.t3)().prototype.clipByValue=function(e,t){return this.throwIfDisposed(),(0,Un.i)(this,e,t)},(0,Sn.t3)().prototype.concat=function(e,t){return this.throwIfDisposed(),e instanceof Sn.es&&(e=[e]),(0,nn.z)([this,...e],t)};var zn=n(1355);(0,Sn.t3)().prototype.conv1d=function(e,t,n,r,s,a){return this.throwIfDisposed(),(0,zn.P)(this,e,t,n,r,s,a)};var Vn=n(1405);(0,Sn.t3)().prototype.conv2dTranspose=function(e,t,n,r,s){return this.throwIfDisposed(),(0,Vn.b)(this,e,t,n,r,s)},(0,Sn.t3)().prototype.conv2d=function(e,t,n,r,s,a){return this.throwIfDisposed(),(0,ae.T)(this,e,t,n,r,s,a)},(0,Sn.t3)().prototype.cos=function(){return this.throwIfDisposed(),(0,Gt.m)(this)},(0,Sn.t3)().prototype.cosh=function(){return this.throwIfDisposed(),(0,jt.f)(this)},(0,Sn.t3)().prototype.cumprod=function(e,t,n){return this.throwIfDisposed(),(0,Nt.$)(this,e,t,n)},(0,Sn.t3)().prototype.cumsum=function(e,t,n){return this.throwIfDisposed(),(0,me.z)(this,e,t,n)};var Gn=n(9112);(0,Sn.t3)().prototype.depthToSpace=function(e,t){return this.throwIfDisposed(),(0,Gn.n)(this,e,t)};var Hn=n(4718);(0,Sn.t3)().prototype.depthwiseConv2d=function(e,t,n,r,s,a){return this.throwIfDisposed(),(0,Hn.B)(this,e,t,n,r,s,a)};var jn=n(557);
1(0,Sn.t3)().prototype.dilation2d=function(e,t,n,r,s){return this.throwIfDisposed(),(0,jn.W)(this,e,t,n,r,s)};var Xn=n(9322);(0,Sn.t3)().prototype.divNoNan=function(e){return this.throwIfDisposed(),(0,Xn.N)(this,e)},(0,Sn.t3)().prototype.div=function(e){return this.throwIfDisposed(),(0,c.h)(this,e)};var qn=n(548);(0,Sn.t3)().prototype.dot=function(e){return this.throwIfDisposed(),(0,qn.A)(this,e)};var Kn=n(3233);(0,Sn.t3)().prototype.elu=function(){return this.throwIfDisposed(),(0,Kn.p)(this)},(0,Sn.t3)().prototype.equal=function(e){return this.throwIfDisposed(),(0,Ke.D)(this,e)};var Qn=n(4650);(0,Sn.t3)().prototype.erf=function(){return this.throwIfDisposed(),(0,Qn.q)(this)};var Yn=n(1954);(0,Sn.t3)().prototype.euclideanNorm=function(e,t){return this.throwIfDisposed(),(0,Yn.d)(this,e,t)},(0,Sn.t3)().prototype.exp=function(){return this.throwIfDisposed(),(0,Ie.Q)(this)},(0,Sn.t3)().prototype.expandDims=function(e){return this.throwIfDisposed(),(0,yn.d)(this,e)};var Zn=n(3426);(0,Sn.t3)().prototype.expm1=function(){return this.throwIfDisposed(),(0,Zn.t)(this)};var Jn=n(7020);(0,Sn.t3)().prototype.fft=function(){return this.throwIfDisposed(),(0,Jn.k)(this)},(0,Sn.t3)().prototype.flatten=function(){return this.throwIfDisposed(),(0,x.X)(this,[this.size])},(0,Sn.t3)().prototype.floor=function(){return this.throwIfDisposed(),(0,ct.G)(this)};var er=n(9165);(0,Sn.t3)().prototype.floorDiv=function(e){return this.throwIfDisposed(),(0,er.q)(this,e)},(0,Sn.t3)().prototype.gather=function(e,t){return this.throwIfDisposed(),(0,bn.I)(this,e,t)},(0,Sn.t3)().prototype.greaterEqual=function(e){return this.throwIfDisposed(),(0,q.b)(this,e)},(0,Sn.t3)().prototype.greater=function(e){return this.throwIfDisposed(),(0,ze.p)(this,e)};var tr=n(8447);(0,Sn.t3)().prototype.ifft=function(){return this.throwIfDisposed(),(0,tr.S)(this)};var nr=n(4415);(0,Sn.t3)().prototype.irfft=function(){return this.throwIfDisposed(),(0,nr.w)(this)};var rr=n(3963);(0,Sn.t3)().prototype.isFinite=function(){return this.throwIfDisposed(),(0,rr.x)(this)};var sr=n(5853);(0,Sn.t3)().prototype.isInf=function(){return this.throwIfDisposed(),(0,sr.U)(this)};var ar=n(6230);(0,Sn.t3)().prototype.isNaN=function(){return this.throwIfDisposed(),(0,ar.i)(this)};var or=n(9133);(0,Sn.t3)().prototype.leakyRelu=function(e){return this.throwIfDisposed(),(0,or.h)(this,e)},(0,Sn.t3)().prototype.lessEqual=function(e){return this.throwIfDisposed(),(0,K.z)(this,e)},(0,Sn.t3)().prototype.less=function(e){return this.throwIfDisposed(),(0,Ze.d)(this,e)};var ir=n(9648);(0,Sn.t3)().prototype.localResponseNormalization=function(e,t,n,r){return this.throwIfDisposed(),(0,ir.G)(this,e,t,n,r)};var ur=n(3888);(0,Sn.t3)().prototype.logSigmoid=function(){return this.throwIfDisposed(),(0,ur.e)(this)};var lr=n(1510);(0,Sn.t3)().prototype.logSoftmax=function(e){return this.throwIfDisposed(),(0,lr.C)(this,e)};var cr=n(1391);(0,Sn.t3)().prototype.logSumExp=function(e,t){return this.throwIfDisposed(),(0,cr.l)(this,e,t)},(0,Sn.t3)().prototype.log=function(){return this.throwIfDisposed(),(0,wt.c)(this)};var pr=n(7474);(0,Sn.t3)().prototype.log1p=function(){return this.throwIfDisposed(),(0,pr.K)(this)},(0,Sn.t3)().prototype.logicalAnd=function(e){return this.throwIfDisposed(),(0,Q.H)(this,e)},(0,Sn.t3)().prototype.logicalNot=function(){return this.throwIfDisposed(),(0,Lt.h)(this)};var hr=n(5750);(0,Sn.t3)().prototype.logicalOr=function(e){return this.throwIfDisposed(),(0,hr.K)(this,e)};var dr=n(596);(0,Sn.t3)().prototype.logicalXor=function(e){return this.throwIfDisposed(),(0,dr.e)(this,e)},(0,Sn.t3)().prototype.matMul=function(e,t,n){return this.throwIfDisposed(),(0,U.O)(this,e,t,n)};var fr=n(1174);(0,Sn.t3)().prototype.maxPool=function(e,t,n,r){return this.throwIfDisposed(),(0,fr._)(this,e,t,n,r)};var mr=n(3307);(0,Sn.t3)().prototype.max=function(e,t){return this.throwIfDisposed(),(0,mr.F)(this,e,t)},(0,Sn.t3)().prototype.maximum=function(e){return this.throwIfDisposed(),(0,xn.g)(this,e)};var gr=n(5130);(0,Sn.t3)().prototype.mean=function(e,t){return this.throwIfDisposed(),(0,gr.J)(this,e,t)};var yr=n(5735);(0,Sn.t3)().prototype.min=function(e,t){return this.throwIfDisposed(),(0,yr.V)(this,e,t)};var br=n(4513);(0,Sn.t3)().prototype.minimum=function(e){return this.throwIfDisposed(),(0,br.L)(this,e)};var xr=n(1483);(0,Sn.t3)().prototype.mirrorPad=function(e,t){return this.throwIfDisposed(),(0,xr.V)(this,e,t)};var wr=n(5228);(0,Sn.t3)().prototype.mod=function(e){return this.throwIfDisposed(),(0,wr.w)(this,e)},(0,Sn.t3)().prototype.mul=function(e){return this.throwIfDisposed(),(0,i.d)(this,e)},(0,Sn.t3)().prototype.neg=function(){return this.throwIfDisposed(),(0,p.W)(this)};var vr=n(3561);(0,Sn.t3)().prototype.norm=function(e,t,n){return this.throwIfDisposed(),(0,vr.K)(this,e,t,n)};var kr=n(6500);(0,Sn.t3)().prototype.notEqual=function(e){return this.throwIfDisposed(),(0,kr.Q)(this,e)};var Ir=n(6708);(0,Sn.t3)().prototype.oneHot=function(e,t=1,n=0){return this.throwIfDisposed(),(0,Ir.l)(this,e,t,n)};var Nr=n(7846);(0,Sn.t3)().prototype.onesLike=function(){return this.throwIfDisposed(),(0,Nr.J)(this)},(0,Sn.t3)().prototype.pad=function(e,t){return this.throwIfDisposed(),(0,qt.v)(this,e,t)};var Sr=n(5860);(0,Sn.t3)().prototype.pool=function(e,t,n,r,s,a){return this.throwIfDisposed(),(0,Sr.d)(this,e,t,n,r,s,a)},(0,Sn.t3)().prototype.pow=function(e){return this.throwIfDisposed(),(0,vt.s)(this,e)};var Tr=n(8151);(0,Sn.t3)().prototype.prelu=function(e){return this.throwIfDisposed(),(0,Tr.A)(this,e)};var Cr=n(9451);(0,Sn.t3)().prototype.prod=function(e,t){return this.throwIfDisposed(),(0,Cr.W)(this,e,t)};var Er=n(9036);(0,Sn.t3)().prototype.reciprocal=function(){return this.throwIfDisposed(),(0,Er.M)(this)};var $r=n(7409);(0,Sn.t3)().prototype.relu=function(){return this.throwIfDisposed(),(0,$r.U)(this)};var Ar=n(3582);(0,Sn.t3)().prototype.relu6=function(){return this.throwIfDisposed(),(0,Ar.b)(this)},(0,Sn.t3)().prototype.reshapeAs=function(e){return this.throwIfDisposed(),(0,x.X)(this,e.shape)},(0,Sn.t3)().prototype.reshape=function(e){return this.throwIfDisposed(),(0,x.X)(this,e)};var Dr=n(3305);(0,Sn.t3)().prototype.resizeBilinear=function(e,t,n){return this.throwIfDisposed(),(0,Dr.I)(this,e,t,n)};var _r=n(5098);(0,Sn.t3)().prototype.resizeNearestNeighbor=function(e,t,n){return this.throwIfDisposed(),(0,_r.j)(this,e,t,n)},(0,Sn.t3)().prototype.reverse=function(e){return this.throwIfDisposed(),(0,Ft.G)(this,e)};var Rr=n(3710);(0,Sn.t3)().prototype.rfft=function(){return this.throwIfDisposed(),(0,Rr.Q)(this)};var Fr=n(7809);(0,Sn.t3)().prototype.round=function(){return this.throwIfDisposed(),(0,Fr.N)(this)},(0,Sn.t3)().prototype.rsqrt=function(){return this.throwIfDisposed(),(0,Ae.b)(this)};var Or=n(5503);(0,Sn.t3)().prototype.selu=function(){return this.throwIfDisposed(),(0,Or.U)(this)};var Mr=n(8678);(0,Sn.t3)().prototype.separableConv2d=function(e,t,n,r,s,a){return this.throwIfDisposed(),(0,Mr.U)(this,e,t,n,r,s,a)},(0,Sn.t3)().prototype.sigmoid=function(){return this.throwIfDisposed(),(0,Zt.X)(this)};var Br=n(4434);(0,Sn.t3)().prototype.sign=function(){return this.throwIfDisposed(),(0,Br.X)(this)},(0,Sn.t3)().prototype.sin=function(){return this.throwIfDisposed(),(0,ce.O)(this)},(0,Sn.t3)().prototype.sinh=function(){return this.throwIfDisposed(),(0,he.R)(this)},(0,Sn.t3)().prototype.slice=function(e,t){return this.throwIfDisposed(),(0,ut.t)(this,e,t)};var Lr=n(2817);(0,Sn.t3)().prototype.softmax=function(e){return this.throwIfDisposed(),(0,Lr.X)(this,e)};var Wr=n(3694);(0,Sn.t3)().prototype.softplus=function(){return this.throwIfDisposed(),(0,Wr.W)(this)},(0,Sn.t3)().prototype.spaceToBatchND=function(e,t){return this.throwIfDisposed(),(0,V.f)(this,e,t)},(0,Sn.t3)().prototype.split=function(e,t){return this.throwIfDisposed(),(0,ee.V)(this,e,t)},(0,Sn.t3)().prototype.sqrt=function(){return this.throwIfDisposed(),(0,d._)(this)},(0,Sn.t3)().prototype.square=function(){return this.throwIfDisposed(),(0,f.h)(this)};var Pr=n(5265);(0,Sn.t3)().prototype.squaredDifference=function(e){return this.throwIfDisposed(),(0,Pr.$)(this,e)};var Ur=n(9590);(0,Sn.t3)().prototype.squeeze=function(e){return this.throwIfDisposed(),(0,Ur.L)(this,e)},(0,Sn.t3)().prototype.stack=function(e,t){this.throwIfDisposed();const n=e instanceof Sn.es?[this,e]:[this,...e];return(0,mn.k)(n,t)},(0,Sn.t3)().prototype.step=function(e){return this.throwIfDisposed(),(0,u.N)(this,e)};var zr=n(5158);(0,Sn.t3)().prototype.stridedSlice=function(e,t,n,r,s,a,o,i){return this.throwIfDisposed(),(0,zr.N)(this,e,t,n,r,s,a,o,i)},(0,Sn.t3)().prototype.sub=function(e){return this.throwIfDisposed(),(0,m.l)(this,e)},(0,Sn.t3)().prototype.sum=function(e,t){return this.throwIfDisposed(),(0,w.S)(this,e,t)};var Vr=n(1173);(0,Sn.t3)().prototype.tan=function(){return this.throwIfDisposed(),(0,Vr.O)(this)};var Gr=n(1869);(0,Sn.t3)().prototype.tanh=function(){return this.throwIfDisposed(),(0,Gr.A)(this)},(0,Sn.t3)().prototype.tile=function(e){return this.throwIfDisposed(),(0,De.G)(this,e)},(0,Sn.t3)().prototype.toBool=function(){return this.throwIfDisposed(),(0,o.p)(this,"bool")},(0,Sn.t3)().prototype.toFloat=function(){return this.throwIfDisposed(),(0,o.p)(this,"float32")},(0,Sn.t3)().prototype.toInt=function(){return this.throwIfDisposed(),(0,o.p)(this,"int32")};var Hr=n(3243);(0,Sn.t3)().prototype.topk=function(e,t){return this.throwIfDisposed(),(0,Hr.h)(this,e,t)},(0,Sn.t3)().prototype.transpose=function(e){return this.throwIfDisposed(),(0,ge.p)(this,e)};var jr=n(9608);(0,Sn.t3)().prototype.unique=function(e){return this.throwIfDisposed(),(0,jr.T)(this,e)},(0,Sn.t3)().prototype.unsortedSegmentSum=function(e,t){return this.throwIfDisposed(),(0,Re.p)(this,e,t)},(0,Sn.t3)().prototype.unstack=function(e){return this.throwIfDisposed(),(0,yt.H)(this,e)},(0,Sn.t3)().prototype.where=function(e,t){return this.throwIfDisposed(),(0,Y.a)(e,this,t)},(0,Sn.t3)().prototype.zerosLike=function(){return this.throwIfDisposed(),(0,I.P)(this)};var Xr=n(7802);(0,s.OBj)().registerFlag("TOPOLOGICAL_SORT_CACHE_MAX_ENTRIES",(()=>100),Xr.kS);var qr=n(4079);var Kr=n(6696);var Qr=n(4396),Yr=n(163),Zr=n(8891),Jr=n(5337),es=n(1944),ts=n(588),ns=n(9897),rs=n(2931),ss=(n(1977),n(7538));class as extends Jr.QV{constructor(e){if(super({inputs:[],outputs:[]}),e=e||{},this.trainable=!0,this.built=!1,this.name=null!=e.name?e.name:(0,es.s)("sequential_"),null!=e.layers
1)for(const t of e.layers)this.add(t)}checkShape(e){if(e.inboundNodes[0].outputTensors[0].shape.some((e=>e<0)))throw new ts.nu(`Negative dimension size caused by adding layer ${e.name} with input shape [${e.inboundNodes[0].inputTensors[0].shape}]`)}add(e){const t=e instanceof as||e instanceof Jr.QV;let n;if(t){if(n=e,1!==n.outputs.length)throw new ts.nu("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");if(1!==n.inputs.length)throw new ts.nu("All layers in a Sequential model should have a single input tensor. For multi-input layers, use the functional API.")}if(0===this.outputs.length){if(0===e.inboundNodes.length){if(null==e.batchInputShape)throw new ts.nu("The first layer in a Sequential model must get an `inputShape` or `batchInputShape` argument.");const t=(0,Qr.I)({batchShape:e.batchInputShape,dtype:e.dtype,name:e.name+"_input"});e.apply(t)}if(t)this.outputs=n.outputs,this.inputs=n.inputs;else{if(1!==e.inboundNodes.length)throw new ts.nu(`A layer added to a Sequential model must not already be connected somewhere else. LayersModel received layer ${e.name} which has ${e.inboundNodes.length} pre-existing inbound connections.`);if(1!==e.inboundNodes[0].outputTensors.length)throw new ts.nu("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(e),this.outputs=[e.inboundNodes[0].outputTensors[0]],this.inputs=(0,Yr.hA)(this.outputs[0])}this.inboundNodes=[],new Yr.NB({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:rs.JE(null,this.inputs.length),outputMasks:[null],inputShapes:this.inputs.map((e=>e.shape)),outputShapes:this.outputs[0].shape})}else{const t=e.apply(this.outputs[0]);if(Array.isArray(t))throw new TypeError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(e),this.outputs=[t],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}this.layers.push(e),this.built=!1}pop(){if(0===this.layers.length)throw new TypeError("There are no layers in the model.");if(this.layers.pop(),0===this.layers.length)this.outputs=[],this.inboundNodes=[],this.outboundNodes=[];else{const e=this.layers.length-1;this.layers[e].outboundNodes=[],this.outputs=[this.layers[e].output],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}}call(e,t){return null==this.model&&this.build(),this.model.call(e,t)}build(e){if((0,ss.Wf)(e),0===this.inputs.length||0===this.outputs.length)throw new TypeError("Sequential model cannot be built: model is empty. Add some layers first.");this.model=new Jr.QV({inputs:this.inputs,outputs:this.outputs[0],name:this.name+"_model"}),this.model.trainable=this.trainable,this.supportsMasking=this.model.supp
1ortsMasking,this.inputLayers=this.model.inputLayers,this.inputLayersNodeIndices=this.model.inputLayersNodeIndices,this.inputLayersTensorIndices=this.model.inputLayersTensorIndices,this.outputLayers=this.model.outputLayers,this.outputLayersNodeIndices=this.model.outputLayersNodeIndices,this.outputLayersTensorIndices=this.model.outputLayersTensorIndices,this.nodesByDepth=this.model.nodesByDepth,this.containerNodes=this.model.containerNodes,this.outputNames=this.model.outputNames,this.inputNames=this.model.inputNames,this.built=!0}countParams(){return this.built||this.build(),super.countParams()}summary(e,t,n=console.log){this.built||this.build(),super.summary(e,t,n)}setWeights(e){null==this.model&&this.build(),this.model.setWeights(e)}evaluate(e,t,n={}){if(!this.built)throw new ts.LH("The model needs to be compiled before being used.");return this.model.evaluate(e,t,n)}async evaluateDataset(e,t){if(!this.built)throw new ts.LH("The model needs to be compiled before being used.");return this.model.evaluateDataset(e,t)}predict(e,t={}){return null==this.model&&this.build(),this.model.predict(e,t)}predictOnBatch(e){return null==this.model&&this.build(),this.model.predictOnBatch(e)}compile(e){this.build(),this.model.compile(e),this.optimizer_=this.model.optimizer,this.isOptimizerOwned=this.model.isOptimizerOwned,this.loss=this.model.loss,this.metrics=this.model.metrics,this.metricsTensors=this.model.metricsTensors,this.metricsNames=this.model.metricsNames}get optimizer(){return null==this.model?void 0:this.model.optimizer}set optimizer(e){this.model.optimizer=e}async fit(e,t,n={}){if(!this.built)throw new ts.LH("The model needs to be compiled before being used.");return this.model.fit(e,t,n)}async fitDataset(e,t){if(!this.built)throw new ts.LH("The model needs to be compiled before being used.");return this.model.fitDataset(e,t)}async trainOnBatch(e,t){return this.model.trainOnBatch(e,t)}static fromConfig(e,t,n={},r=!1){let a,o={};if(t instanceof Array){if(null==t[0].className||"Merge"===t[0].className)throw new ts.nu("Legacy serialization format not supported yet.");a=t}else s.D5U.assert(null!=t.layers,(()=>"When the config data for a Sequential model is not an Array, it must be an Object that contains the 'layers' field.")),a=t.layers,delete t.layers,o=t;const i=new e(o);if(!(i instanceof as))throw new ts.nj(`Sequential.fromConfig called on non-Sequential input: ${i}`);for(const s of a){const e=void 0,t=(0,ns.v)(s,e,r);r&&t.setFastWeightInitDuringBuild(!0),i.add(t)}return i}set stopTraining(e){if(null==this.model)throw new ts.nu("Cannot set the stopTraining property of a sequential model before it is compiled.");this.model.stopTraining=e}get stopTraining(){if(null==this.model)throw new ts.nu("Cannot get the stopTraining property of a sequential model before it is compiled.");return this.model.stopTraining}getConfig(){const e=[];for(const t of this.layers){const n={};n.className=t.getClassName(),n.config=t.getConfig(),e.push(n)}return{name:this.name,layers:e}}}as.className="Sequential",s.m7h.registerClass(as);var os=n(8819),is=n(539);class us extends Yr.mh{constructor(e){super(null==e?{}:e),this.supportsMasking=!0,null!=e&&(this.maxValue=e.maxValue)}call(e,t){e=(0,ss.nQ)(e);let n=(0,s.UYe)(e);return null!=this.maxValue&&(n=(0,s.iUl)(n,0,this.maxValue)),n}computeOutputShape(e){return e}getConfig(){const e={maxValue:this.maxValue},t=super.getConfig();return Object.assign(e,t),e}}us.className="ReLU",s.m7h.registerClass(us);class ls extends Yr.mh{constructor(e){super(null==e?{}:e),this.DEFAULT_ALPHA=.3,null==e&&(e={}),this.alpha=null==e.alpha?this.DEFAULT_ALPHA:e.alpha}call(e,t){const n=(0,ss.nQ)(e);return(0,s.hi7)(n,this.alpha)}computeOutputShape(e){return e}getConfig(){const e={alpha:this.alpha},t=super.getConfig();return Object.assign(e,t),e}}ls.className="LeakyReLU",s.m7h.registerClass(ls);class cs extends Yr.mh{constructor(e){if(super(null==e?{}:e),this.DEFAULT_ALPHA_INITIALIZER="zeros",null==e&&(e={}),this.supportsMasking=!0,this.alphaInitializer=(0,Kr.L5)(e.alphaInitializer||this.DEFAULT_ALPHA_INITIALIZER),this.alphaRegularizer=(0,is.EC)(e.alphaRegularizer),this.alphaConstraint=(0,qr.Ad)(e.alphaConstraint),null==e.sharedAxes)this.sharedAxes=null;else if(Array.isArray(e.sharedAxes))this.sharedAxes=e.sharedAxes;else{if("number"!==typeof e.sharedAxes)throw new ts.nu(`Expected sharedAxes to be a number or an array of numbers, but got ${e.sharedAxes}`);this.sharedAxes=[e.sharedAxes]}}build(e){const t=(e=(0,ss.Wf)(e)).slice(1);if(null!=this.sharedAxes)for(const r of this.sharedAxes)t[r-1]=1;this.alpha=this.addWeight("alpha",t,"float32",this.alphaInitializer,this.alphaRegularizer,!0,this.alphaConstraint);const n={};if(null!=this.sharedAxes)for(let r=1;r<e.length;++r)n[r]=e[r];
1this.inputSpec=[new Yr.Zg({ndim:e.length,axes:n})],this.built=!0}call(e,t){return e=(0,ss.nQ)(e),(0,s.AL3)(e,this.alpha.read())}getConfig(){const e={alphaInitializer:(0,Kr.Cx)(this.alphaInitializer),alphaRegularizer:(0,is.SG)(this.alphaRegularizer),alphaConstraint:(0,qr.xF)(this.alphaConstraint),sharedAxes:this.sharedAxes},t=super.getConfig();return Object.assign(e,t),e}}cs.className="PReLU",s.m7h.registerClass(cs);class ps extends Yr.mh{constructor(e){if(super(null==e?{}:e),this.DEFAULT_ALPHA=1,null==e&&(e={}),null!=e.alpha&&e.alpha!==this.DEFAULT_ALPHA)throw new ts.nj(`Non-default alpha value (${e.alpha}) is not supported by the ELU layer yet.`);this.alpha=null==e.alpha?this.DEFAULT_ALPHA:e.alpha}call(e,t){const n=(0,ss.nQ)(e);return(0,s.pyx)(n)}computeOutputShape(e){return e}getConfig(){const e={alpha:this.alpha},t=super.getConfig();return Object.assign(e,t),e}}ps.className="ELU",s.m7h.registerClass(ps);class hs extends Yr.mh{constructor(e){super(null==e?{}:e),this.DEFAULT_THETA=1,null==e&&(e={}),this.theta=null==e.theta?this.DEFAULT_THETA:e.theta}call(e,t){const n=(0,ss.nQ)(e);return(0,s.dC7)(n,(0,s.pju)((0,s.pjt)(n,this.theta),"float32"))}computeOutputShape(e){return e}getConfig(){const e={theta:this.theta},t=super.getConfig();return Object.assign(e,t),e}}hs.className="ThresholdedReLU",s.m7h.registerClass(hs);class ds extends Yr.mh{constructor(e){super(null==e?{}:e),this.DEFAULT_AXIS=1,null==e&&(e={}),this.softmax=(new os.Gc).apply,this.axis=null==e.axis?this.DEFAULT_AXIS:e.axis}call(e,t){const n=(0,ss.nQ)(e);return this.softmax(n,this.axis)}computeOutputShape(e){return e}getConfig(){const e={axis:this.axis},t=super.getConfig();return Object.assign(e,t),e}}ds.className="Softmax",s.m7h.registerClass(ds);var fs=n(5650),ms=n(2012),gs=n(9840),ys=n(8090),bs=n(6517);class xs extends fs.nx{constructor(e){super(2,e),this.depthwiseKernel=null,this.depthMultiplier=null==e.depthMultiplier?1:e.depthMultiplier,this.depthwiseInitializer=(0,Kr.L5)(e.depthwiseInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.depthwiseConstraint=(0,qr.Ad)(e.depthwiseConstraint),this.depthwiseRegularizer=(0,is.EC)(e.depthwiseRegularizer)}build(e){if((e=(0,ss.Wf)(e)).length<4)throw new ts.nu(`Inputs to DepthwiseConv2D should have rank 4. Received input shape: ${JSON.stringify(e)}.`);const t="channelsFirst"===this.dataFormat?1:3;if(null==e[t]||e[t]<0)throw new ts.nu(`The channel dimension of the inputs to DepthwiseConv2D should be defined, but is not (${e[t]}).`);const n=e[t],r=[this.kernelSize[0],this.kernelSize[1],n,this.depthMultiplier];this.depthwiseKernel=this.addWeight("depthwise_kernel",r,null,this.depthwiseInitializer,this.depthwiseRegularizer,!0,this.depthwiseConstraint),this.useBias?this.bias=this.addWeight("bias",[n*this.depthMultiplier],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(e,t){return(0,s.lub)((()=>{let t=function(e,t,n=[1,1],r="valid",a,o){return(0,s.lub)((()=>{null==a&&(a=(0,ms.rf)()),(0,ys.cj)(a);let i=(0,fs.aP)(e,a);if(4!==e.rank)throw new ts.nu(`Input for depthwiseConv2d is required to be 4-D, but is instead ${e.rank}-D`);if(4!==t.rank)throw new ts.nu(`depthwiseKernel is required to be 4-D, but is instead ${t.rank}-D`);return i=s.B10(i,t,n,"same"===r?"same":"valid","NHWC",o),"channelsFirst"===a&&(i=s.p4s(i,[0,3,1,2])),i}))}(e=(0,ss.nQ)(e),this.depthwiseKernel.read(),this.strides,this.padding,this.dataFormat,null);return this.useBias&&(t=gs.a2(t,this.bias.read(),this.dataFormat)),null!=this.activation&&(t=this.activation.apply(t)),t}))}computeOutputShape(e){e=(0,ss.Wf)(e);const t="channelsFirst"===this.dataFormat?e[2]:e[1],n="channelsFirst"===this.dataFormat?e[3]:e[2],r="channelsFirst"===this.dataFormat?e[1]*this.depthMultiplier:e[3]*this.depthMultiplier,s=(0,bs.kt)(t,this.kernelSize[0],this.padding,this.strides[0]),a=(0,bs.kt)(n,this.kernelSize[1],this.padding,this.strides[1]);return"channelsFirst"===this.dataFormat?[e[0],r,s,a]:[e[0],s,a,r]}getConfig(){const e=super.getConfig();return e.depthMultiplier=this.depthMultiplier,e.depthwiseInitializer=(0,Kr.Cx)(this.depthwiseInitializer),e.depthwiseRegularizer=(0,is.SG)(this.depthwiseRegularizer),e.depthwiseConstraint=(0,qr.xF)(this.depthwiseRegularizer),e}}xs.className="DepthwiseConv2D",s.m7h.registerClass(xs);var ws=n(6014),vs=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"===typeof Object.getOwnPropertySymbols){var s=0;for(r=Object.getOwnPropertySymbols(e);s<r.length;s++)t.indexOf(r[s])<0&&Object.prototype.propertyIsEnumerable.call(e,r[s])&&(n[r[s]]=e[r[s]])}return n};class ks extends ws.$p{constructor(e){if(e.unroll)throw new ts.nj("Unrolling is not possible with convolutional RNNs.");if(Array.isArray(e.cell))throw new ts.nj("It is not possible at the moment to stack convolutional cells.");
1super(e),this.inputSpec=[new Yr.Zg({ndim:5})]}call(e,t){return s.lub((()=>{if(null!=this.cell.dropoutMask&&(s.B90(this.cell.dropoutMask),this.cell.dropoutMask=null),null!=this.cell.recurrentDropoutMask&&(s.B90(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null),t&&t.constants)throw new ts.nu("ConvRNN2D cell does not support constants");const n=null==t?null:t.mask,r=null==t?null:t.training,a=null==t?null:t.initialState;return super.call(e,{mask:n,training:r,initialState:a})}))}computeOutputShape(e){let t=this.computeSingleOutputShape(e);return this.returnSequences||(t=[t[0],...t.slice(2)]),this.returnState&&(t=[t,...Array(2).fill([e[0],...t.slice(-3)])]),t}getInitialState(e){return s.lub((()=>{const{stateSize:t}=this.cell,n=e.shape,r=this.computeSingleOutputShape(n),a=[r[0],...r.slice(2)],o=s.lls(a);return Array.isArray(t)?Array(t.length).fill(o):[o]}))}resetStates(e,t=!1){s.lub((()=>{if(!this.stateful)throw new ts.j1("Cannot call resetStates() on an RNN Layer that is not stateful.");const n=this.inputSpec[0].shape,r=this.computeSingleOutputShape(n),a=[r[0],...r.slice(2)];if(null==n[0])throw new ts.nu("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(null==this.getStates())Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map((()=>s.lls(a))):this.states_=[s.lls(a)];else if(null==e)s.B90(this.states_),null!=this.keptStates&&(s.B90(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map((()=>s.lls(a))):this.states_[0]=s.lls(a);else{if(Array.isArray(e)||(e=[e]),e.length!==this.states_.length)throw new ts.nu(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${e.length} state value(s). Input received: ${e}`);t?this.keptStates.push(this.states_.slice()):s.B90(this.states_);for(let t=0;t<this.states_.length;++t){const n=e[t],r=a;if(!s.D5U.arraysEqual(n.shape,r))throw new ts.nu(`State ${t} is incompatible with layer ${this.name}: expected shape=${r}, received shape=${n.shape}`);this.states_[t]=n}}this.states_=this.states_.map((e=>s.CnY(e.clone())))}))}computeSingleOutputShape(e){const{dataFormat:t,filters:n,kernelSize:r,padding:s,strides:a,dilationRate:o}=this.cell,i="channelsFirst"===t,u=e[i?3:2],l=e[i?4:3],c=(0,bs.kt)(u,r[0],s,a[0],o[0]),p=(0,bs.kt)(l,r[1],s,a[1],o[1]);return[...e.slice(0,2),...i?[n,c,p]:[c,p,n]]}}ks.className="ConvRNN2D";class Is extends ws.U7{constructor(e){const{filters:t,kernelSize:n,strides:r,padding:s,dataFormat:a,dilationRate:o}=e;super(Object.assign({},e,{units:t})),this.filters=t,(0,rs.iQ)(this.filters,"filters"),this.kernelSize=(0,bs.AF)(n,2,"kernelSize"),this.kernelSize.forEach((e=>(0,rs.iQ)(e,"kernelSize"))),this.strides=(0,bs.AF)(r||1,2,"strides"),this.strides.forEach((e=>(0,rs.iQ)(e,"strides"))),this.padding=s||"valid",(0,ys.zb)(this.padding),this.dataFormat=a||"channelsLast",(0,ys.cj)(this.dataFormat),this.dilationRate=(0,bs.AF)(o||1,2,"dilationRate"),this.dilationRate.forEach((e=>(0,rs.iQ)(e,"dilationRate")))}build(e){var t;e=(0,ss.Wf)(e);const n="channelsFirst"===this.dataFormat?1:e.length-1;if(null==e[n])throw new ts.nu(`The channel dimension of the input should be defined. Found ${e[n]}`);const r=e[n],a=this.kernelSize.concat([r,4*this.filters]);this.kernel=this.addWeight("kernel",a,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint);const o=this.kernelSize.concat([this.filters,4*this.filters]);if(this.recurrentKernel=this.addWeight("recurrent_kernel",o,null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias){let e;if(this.unitForgetBias){const n=this.biasInitializer,r=this.filters;e=new((t=class extends Kr.m7{apply(e,t){const a=n.apply([r]),o=s.iUs([r]),i=n.apply([2*r]);return gs.mV([a,o,i])}}).className="CustomInit",t)}else e=this.biasInitializer;this.bias=this.addWeight("bias",[4*this.filters],null,e,this.biasRegularizer,!0,this.biasConstraint)}this.built=!0}call(e,t){return s.lub((()=>
1{if(3!==e.length)throw new ts.nu(`ConvLSTM2DCell expects 3 input Tensors (inputs, h, c), got ${e.length}.`);const n=t.training||!1,r=e[0],a=e[1],o=e[2];0<this.dropout&&this.dropout<1&&null==this.dropoutMask&&(this.dropoutMask=(0,ws._0)({ones:()=>s.JpU(r),rate:this.dropout,training:n,count:4,dropoutFunc:this.dropoutFunc}));const i=this.dropoutMask,u=(e,t,n)=>t&&t[n]?s.dC7(t[n],e):e;let l=u(r,i,0),c=u(r,i,1),p=u(r,i,2),h=u(r,i,3);0<this.recurrentDropout&&this.recurrentDropout<1&&null==this.recurrentDropoutMask&&(this.recurrentDropoutMask=(0,ws._0)({ones:()=>s.JpU(a),rate:this.recurrentDropout,training:n,count:4,dropoutFunc:this.dropoutFunc}));const d=this.recurrentDropoutMask;let f=u(a,d,0),m=u(a,d,1),g=u(a,d,2),y=u(a,d,3);const[b,x,w,v]=s.Vl2(this.kernel.read(),4,3),[k,I,N,S]=this.useBias?s.Vl2(this.bias.read(),4):[null,null,null,null];l=this.inputConv(l,b,k,this.padding),c=this.inputConv(c,x,I,this.padding),p=this.inputConv(p,w,N,this.padding),h=this.inputConv(h,v,S,this.padding);const[T,C,E,$]=s.Vl2(this.recurrentKernel.read(),4,3);f=this.recurrentConv(f,T),m=this.recurrentConv(m,C),g=this.recurrentConv(g,E),y=this.recurrentConv(y,$);const A=this.recurrentActivation.apply(s.IHx(l,f)),D=this.recurrentActivation.apply(s.IHx(c,m)),_=s.IHx(s.dC7(D,o),s.dC7(A,this.activation.apply(s.IHx(p,g)))),R=s.dC7(this.recurrentActivation.apply(s.IHx(h,y)),this.activation.apply(_));return[R,R,_]}))}getConfig(){const e=super.getConfig(),{units:t}=e,n=vs(e,["units"]),r={filters:this.filters,kernelSize:this.kernelSize,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,strides:this.strides};return Object.assign({},n,r)}inputConv(e,t,n,r){const a=s.Tek(e,t,this.strides,r||"valid","channelsFirst"===this.dataFormat?"NCHW":"NHWC",this.dilationRate);return n?gs.a2(a,n,this.dataFormat):a}recurrentConv(e,t){return s.Tek(e,t,1,"same","channelsFirst"===this.dataFormat?"NCHW":"NHWC")}}Is.className="ConvLSTM2DCell",s.m7h.registerClass(Is);class Ns extends ks{constructor(e){const t=new Is(e);super(Object.assign({},e,{cell:t}))}static fromConfig(e,t){return new e(t)}}Ns.className="ConvLSTM2D",s.m7h.registerClass(Ns);var Ss=n(6040);class Ts extends Yr.mh{constructor(e){super(e),this.rate=Math.max(Math.min(e.rate,1),0),this.noiseShape=e.noiseShape,this.seed=e.seed,this.supportsMasking=!0}getNoiseShape(e){if(null==this.noiseShape)return this.noiseShape;const t=e.shape,n=[];for(let r=0;r<this.noiseShape.length;++r)n.push(null==this.noiseShape[r]?t[r]:this.noiseShape[r]);return n}call(e,t){return(0,s.lub)((()=>{this.invokeCallHook(e,t);const n=(0,ss.nQ)(e);if(0<this.rate&&this.rate<1){const e=null!=t.training&&t.training,r=this.getNoiseShape(n);return gs.KC((()=>gs.rv(n,this.rate,r,this.seed)),(()=>n),e)}return e}))}getConfig(){const e={rate:this.rate,noiseShape:this.noiseShape,seed:this.seed},t=super.getConfig();return Object.assign(e,t),e}dispose(){return super.dispose()}}Ts.className="Dropout",s.m7h.registerClass(Ts);class Cs extends Ts{constructor(e){super(e),this.inputSpec=[{ndim:3}]}getNoiseShape(e){const t=e.shape;return[t[0],1,t[2]]}}Cs.className="SpatialDropout1D",s.m7h.registerClass(Cs);class Es extends Yr.mh{constructor(e){if(super(e),this.activation=null,this.useBias=!0,this.kernel=null,this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",null==e.batchInputShape&&null==e.inputShape&&null!=e.inputDim){let t=null;null!=e.batchSize&&(t=e.batchSize),this.batchInputShape=[t,e.inputDim]}this.units=e.units,(0,rs.iQ)(this.units,"units"),this.activation=(0,os.aI)(e.activation),null!=e.useBias&&(this.useBias=e.useBias),this.kernelInitializer=(0,Kr.L5)(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.biasInitializer=(0,Kr.L5)(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelConstraint=(0,qr.Ad)(e.kernelConstraint),this.biasConstraint=(0,qr.Ad)(e.biasConstraint),this.kernelRegularizer=(0,is.EC)(e.kernelRegularizer),this.biasRegularizer=(0,is.EC)(e.biasRegularizer),this.activityRegularizer=(0,is.EC)(e.activityRegularizer),this.supportsMasking=!0,this.inputSpec=[{minNDim:2}]}build(e){const t=(e=(0,ss.Wf)(e))[e.length-1];null==this.kernel&&(this.kernel=this.addWeight("kernel",[t,this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint))),this.inputSpec=[{minNDim:2,axes:{[-1]:t}}],this.built=!0}computeOutputShape(e){const t=(e=(0,ss.Wf)(e)).slice();return t[t.length-1]=this.units,t}call(e,t){return(0,s.lub)((()=>{this.invokeCallHook(e,t);const n=(0,ss.nQ)(e),r=(0,rs.WT)(this.activation.getClassName());let s;return null!=r?s=gs.AK(n,this.kernel.read(),r,this.bias?this.bias.read():null):(s=gs.AK(n,this.kernel.read()),null!=this.bias&&(s=gs.a2(s,this.bias.read())),null!=this.activation&&(s=this.activation.apply(s))),s}))}getConfig(){const e={units:this.units,activation:(0,os.GD)(this.activation),useBias:this.useBias,kernelInitializer:(0,Kr.Cx)(this.kernelInitializer),biasInitializer:(0,Kr.Cx)(this.biasInitializer),kernelRegularizer:(0,is.SG)(this.kernelRegularizer),biasRegularizer:(0,is.SG)(this.biasRegularizer),activityRegularizer:(0,is.SG)(this.activityRegularizer),kernelConstraint:(0,qr.xF)(this.kernelConstraint),biasConstraint:(0,qr.xF)(this.biasConstraint)},t=super.getConfig();return Object.assign(e,t),e}}
1Es.className="Dense",s.m7h.registerClass(Es);class $s extends Yr.mh{constructor(e){super(e=e||{}),this.inputSpec=[{minNDim:3}],this.dataFormat=e.dataFormat}computeOutputShape(e){e=(0,ss.Wf)(e);for(const t of e.slice(1))if(null==t)throw new ts.nu(`The shape of the input to "Flatten" is not fully defined (got ${e.slice(1)}). Make sure to pass a complete "input_shape" or "batch_input_shape" argument to the first layer in your model.`);return[e[0],(0,Ss.NS)(e,1)]}call(e,t){return(0,s.lub)((()=>{this.invokeCallHook(e,t);let n=(0,ss.nQ)(e);if("channelsFirst"===this.dataFormat&&n.rank>1){const e=[0];for(let t=2;t<n.rank;++t)e.push(t);e.push(1),n=(0,s.p4s)(n,e)}return gs.Uz(n)}))}getConfig(){const e={};null!=this.dataFormat&&(e.dataFormat=this.dataFormat);const t=super.getConfig();return Object.assign(e,t),e}}$s.className="Flatten",s.m7h.registerClass($s);class As extends Yr.mh{constructor(e){super(e),this.supportsMasking=!0,this.activation=(0,os.aI)(e.activation)}call(e,t){return(0,s.lub)((()=>{this.invokeCallHook(e,t);const n=(0,ss.nQ)(e);return this.activation.apply(n)}))}getConfig(){const e={activation:(0,os.GD)(this.activation)},t=super.getConfig();return Object.assign(e,t),e}}As.className="Activation",s.m7h.registerClass(As);class Ds extends Yr.mh{constructor(e){super(e),this.n=e.n,this.inputSpec=[{ndim:2}]}computeOutputShape(e){return[e[0],this.n,e[1]]}call(e,t){return(0,s.lub)((()=>(e=(0,ss.nQ)(e),gs.rx(e,this.n))))}getConfig(){const e={n:this.n},t=super.getConfig();return Object.assign(e,t),e}}Ds.className="RepeatVector",s.m7h.registerClass(Ds);class _s extends Yr.mh{constructor(e){super(e),this.targetShape=e.targetShape;for(let t=0;t<this.targetShape.length;++t)this.isUnknown(this.targetShape[t])&&(this.targetShape[t]=null)}isUnknown(e){return e<0||null==e}fixUnknownDimension(e,t){const n="Total size of new array must be unchanged.",r=t.slice();let s=1,a=null;for(let i=0;i<r.length;++i){const e=r[i];if(this.isUnknown(e)){if(null!==a)throw new ts.nu("Can only specifiy one unknown dimension.");a=i}else s*=e}const o=(0,Ss.NS)(e);if(null!==a){if(0===s||o%s!==0)throw new ts.nu(n);r[a]=o/s}else if(o!==s)throw new ts.nu(n);return r}computeOutputShape(e){let t=!1;for(let n=0;n<e.length;++n)if(this.isUnknown(e[n])){t=!0;break}return t?e.slice(0,1).concat(this.targetShape):e.slice(0,1).concat(this.fixUnknownDimension(e.slice(1),this.targetShape))}call(e,t){return(0,s.lub)((()=>{this.invokeCallHook(e,t);const n=(0,ss.nQ)(e),r=n.shape,a=r.slice(0,1).concat(this.fixUnknownDimension(r.slice(1),this.targetShape));return(0,s.XLQ)(n,a)}))}getConfig(){const e={targetShape:this.targetShape},t=super.getConfig();return Object.assign(e,t),e}}_s.className="Reshape",s.m7h.registerClass(_s);class Rs extends Yr.mh{constructor(e){if(super(e),null==e.dims)throw new Error("Required configuration field `dims` is missing during Permute constructor call.");if(!Array.isArray(e.dims))throw new Error(`Permute constructor requires \`dims\` to be an Array, but received ${e.dims} instead.`);const t=(0,Ss.w6)(1,e.dims.length+1);if(!s.D5U.arraysEqual(e.dims.slice().sort(),t))throw new Error("Invalid permutation `dims`: "+JSON.stringify(e.dims)+" `dims` must contain consecutive integers starting from 1.");this.dims=e.dims,this.dimsIncludingBatch=[0].concat(this.dims),this.inputSpec=[new Yr.Zg({ndim:this.dims.length+1})]}computeOutputShape(e){const t=(e=(0,ss.Wf)(e)).slice();return this.dims.forEach(((n,r)=>{t[r+1]=e[n]})),t}call(e,t){return(0,s.p4s)((0,ss.nQ)(e),this.dimsIncludingBatch)}getConfig(){const e={dims:this.dims},t=super.getConfig();return Object.assign(e,t),e}}Rs.className="Permute",s.m7h.registerClass(Rs);class Fs extends Yr.mh{constructor(e){super(null==e?{}:e),this.supportsMasking=!0,this.maskValue=null!=e?null==e.maskValue?0:e.maskValue:0}computeOutputShape(e){return e}getConfig(){const e=super.getConfig(),t={maskValue:this.maskValue};return Object.assign(t,e),t}computeMask(e,t){const n=(0,ss.nQ)(e);return(0,s.YjB)((0,s.Quu)(n,this.maskValue),-1)}call(e,t){return(0,s.lub)((()=>{this.invokeCallHook(e,t);const n=(0,ss.nQ)(e),r=(0,s.YjB)((0,s.Quu)(n,this.maskValue),-1,!0);return(0,s.dC7)(n,(0,s.pju)(r,n.dtype))}))}}Fs.className="Masking",s.m7h.registerClass(Fs);class Os extends Yr.mh{constructor(e){if(super(e),this.embeddings=null,this.DEFAULT_EMBEDDINGS_INITIALIZER="randomUniform",null==e.batchInputShape&&null==e.inputShape){let t=null;null!=e.batchSize&&(t=e.batchSize),null==e.inputLength?this.batchInputShape=[t,null]:this.batchInputShape=[t].concat(rs.zZ(e.inputLength))}this.inputDim=e.inputDim,rs.iQ(this.inputDim,"inputDim"),this.outputDim=e.outputDim,rs.iQ(this.outputDim,"outputDim"),this.embeddingsInitializer=(0,Kr.L5)(e.embeddingsInitializer||this.DEFAULT_EMBEDDINGS_INITIALIZER),this.embeddingsRegularizer=(0,is.EC)(e.embeddingsRegularizer),this.activityRegularizer=(0,is.EC)(e.activityRegularizer),this.embeddingsConstraint=(0,qr.Ad)(e.embeddingsConstraint),this.maskZero=e.maskZero,this.supportsMasking=e.maskZero,this.inputLength=e.inputLength}build(e){this.embeddings=this.addWeight("embeddings",[this.inputDim,this.outputDim],this.dtype,this.embeddingsInitializer,this.embeddingsRegularizer,!0,this.embeddingsConstraint),this.built=!0}warnOnIncompatibleInputShape(e){}computeMask(e,t){return(0,s.lub)((()=>this.maskZero?(e=(0,ss.nQ)(e),(0,s.Quu)(e,(0,s.P84)(e))):null))}computeOutputShape(e){if(e=(0,ss.Wf)(e),null==this.inputLength)return[...e,this.outputDim];const t=rs.zZ(this.inputLength);
1if(t.length!==e.length-1)throw new ts.nu(`"inputLength" is ${this.inputLength}, but received input shape has shape ${e}`);{let n=0;for(let r=0;r<t.length;++r){const s=t[r],a=e[r+1];if(null!=s&&null!=a&&s!==a)throw new ts.nu(`"inputLength" is ${this.inputLength}, but received input shape has shape ${e}`);null==s&&(t[n]=a),n++}}return[e[0],...t,this.outputDim]}call(e,t){return(0,s.lub)((()=>{this.invokeCallHook(e,t);let n=(0,ss.nQ)(e);"int32"!==n.dtype&&(n=gs.pj(n,"int32"));const r=gs.Iq(this.embeddings.read(),(0,s.XLQ)(n,[n.size]));return(0,s.XLQ)(r,(0,ss.Wf)(this.computeOutputShape(n.shape)))}))}getConfig(){const e={inputDim:this.inputDim,outputDim:this.outputDim,embeddingsInitializer:(0,Kr.Cx)(this.embeddingsInitializer),embeddingsRegularizer:(0,is.SG)(this.embeddingsRegularizer),activityRegularizer:(0,is.SG)(this.activityRegularizer),embeddingsConstraint:(0,qr.xF)(this.embeddingsConstraint),maskZero:this.maskZero,inputLength:this.inputLength},t=super.getConfig();return Object.assign(e,t),e}}Os.className="Embedding",s.m7h.registerClass(Os);var Ms=n(6275);class Bs extends Yr.mh{constructor(e){super(e||{}),this.supportsMasking=!0}mergeFunction(e){throw new ts.nj}computeElementwiseOpOutputShape(e,t){if(null==e||null==t)return null;if(e.length<t.length)return this.computeElementwiseOpOutputShape(t,e);if(0===t.length)return e;const n=e.slice(0,e.length-t.length);for(let r=0;r<t.length;++r){const s=e[e.length-t.length+r],a=t[r];if(null==s||null==a||s<0||a<0)n.push(null);else if(1===s)n.push(a);else if(1===a)n.push(s);else{if(s!==a)throw new ts.nu("Operands could not be broadcast together with shapes "+JSON.stringify(e)+" "+JSON.stringify(t));n.push(s)}}return n}build(e){if(Array.isArray(e)&&!Array.isArray(e[0])&&(e=[(0,ss.Wf)(e)]),(e=e).length<2)throw new ts.nu(`A merge layer should be called on an Array of at least 2 inputs. Got ${e.length} input(s).`);let t=[];for(const s of e)null!=s&&null!==s[0]&&t.push(s[0]);if(t=rs.Tw(t),t.length>1)throw new ts.nu(`Can not merge tensors with different batch sizes. Got tensors with shapes: ${JSON.stringify(e)}.`);let n=null==e[0]?null:e[0].slice(1);for(let s=1;s<e.length;++s){const t=null==e[s]?null:e[s].slice(1);n=this.computeElementwiseOpOutputShape(n,t)}const r=e.map((e=>e.length));-1===e.indexOf(null)&&1===rs.Tw(r).length?this.reshapeRequired=!1:this.reshapeRequired=!0}call(e,t){return(0,s.lub)((()=>{if(e=e,this.reshapeRequired){const t=[],n=e.map((e=>e.rank));if(-1===n.indexOf(null)){const r=Ss.Fp(n);for(let n of e){const e=n.rank;for(let t=0;t<r-e;++t)n=gs.dt(n,1);t.push(n)}return this.mergeFunction(t)}{let n=!1;for(const o of e){const e=o.rank;if(null==e){const e=o.shape,r=e[0],a=e.slice(1).concat([r]);let i=s.XLQ(o,[r].concat(Ss.NS(e.slice(1))));i=s.p4s(i,[1,0]),i=s.XLQ(i,a),t.push(i),n=!0}else if(e>1){const r=Ss.w6(1,e).concat([0]);t.push(s.p4s(o,r)),n=!0}else t.push(o)}let r=this.mergeFunction(t);const a=r.rank;if(n)if(null==a){const e=r.shape,t=e[e.length-1],n=[t].concat(e.slice(0,e.length-1));r=s.XLQ(s.p4s(s.XLQ(r,[-1,t]),[1,0]),n)}else if(a>1){const e=[a-1].concat(Ss.w6(0,a-1));r=s.p4s(r,e)}return r}}return this.mergeFunction(e)}))}computeOutputShape(e){let t;t=null==(e=e)[0]?null:e[0].slice(1);for(let r=1;r<e.length;++r){const n=null==e[r]?null:e[r].slice(1);t=this.computeElementwiseOpOutputShape(t,n)}let n=[];for(const r of e)null!=r&&null!==r[0]&&n.push(r[0]);return n=rs.Tw(n),t=1===n.length?n.concat(t):[null].concat(t),t}computeMask(e,t){return s.lub((()=>{if(null==t)return null;if(!Array.isArray(t))throw new ts.nu("`mask` should be an Array");if(!Array.isArray(e))throw new ts.nu("`inputs` should be an Array");if(t.length!==e.length)throw new ts.nu(`The Array 'inputs' and 'mask' are expected to have the same length, but have different lengths (${e.length} vs ${t.length})`);if(t.every((e=>null==e)))return null;let n=(t=t.map((e=>null==e?e:s.dt4(e,0))))[0];for(let e=1;e<t.length-1;++e)n=s.HvI(n,t[e]);return n}))}}class Ls extends Bs{constructor(e){super(e)}mergeFunction(e){return(0,s.lub)((()=>{let t=e[0].clone();for(let n=1;n<e.length;++n)t=s.IHx(t,e[n]);return t}))}}Ls.className="Add",s.m7h.registerClass(Ls);class Ws extends Bs{constructor(e){super(e)}mergeFunction(e){return(0,s.lub)((()=>{let t=e[0].clone();for(let n=1;n<e.length;++n)t=s.dC7(t,e[n]);return t}))}}Ws.className="Multiply",s.m7h.registerClass(Ws);class Ps extends Bs{constructor(e){super(e)}mergeFunction(e){return(0,s.lub)((()=>{let t=e[0].clone();for(let n=1;n<e.length;++n)t=s.IHx(t,e[n]);return s.dC7(1/e.length,t)}))}}Ps.className="Average",s.m7h.registerClass(Ps);class Us extends Bs{constructor(e){super(e)}mergeFunction(e){return(0,s.lub)((()=>{let t=e[0];for(let n=1;n<e.length;++n)t=s.gWQ(t,e[n]);return t}))}}Us.className="Maximum",s.m7h.registerClass(Us);class zs extends Bs{constructor(e){super(e)}mergeFunction(e){return(0,s.lub)((()=>{let t=e[0];for(let n=1;n<e.length;++n)t=s.LTh(t,e[n]);return t}))}}zs.className="Minimum",s.m7h.registerClass(zs);class Vs extends Bs{constructor(e){super(e),this.DEFAULT_AXIS=-1,null==e&&(e={}),this.axis=null==e.axis?this.DEFAULT_AXIS:e.axis,this.supportsMasking=!0,this.reshapeRequired=!1}build(e){if(!Array.isArray(e)||!Array.isArray(e[0])||1===e.length)throw new ts.nu("A `Concatenate` layer should be called on a list of at least 2 inputs");e=e;let t=!0;for(const r of e)if(null!=r){t=!1;break}if(t)return;const n=[];for(let r=0;r<e.length;++r){const t=e[r].slice();t.splice(this.axis,1);let a=!1;for(const e of n)if(s.D5U.arraysEqual(e,t)){a=!0;break}a||n.push(t)}if(n.length>1)throw new ts.nu("A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got input shapes: "+JSON.stringify(e))}mergeFunction(e){return(0,s.lub)((()=>
1gs.mV(e,this.axis)))}computeOutputShape(e){if(!Array.isArray(e)||!Array.isArray(e[0]))throw new ts.nu("A `Concatenate` layer should be called on a list of inputs.");const t=e,n=t[0].slice(),r=this.axis<0?n.length+this.axis:this.axis;for(const s of t.slice(1)){if(null==n[r]||null==s[r]){n[r]=null;break}n[r]+=s[r]}return n}computeMask(e,t){if(null==t)return null;if(!Array.isArray(t))throw new ts.nu("`mask` should be an array for Concatenate");if(!Array.isArray(e))throw new ts.nu("`inputs` should be an array for Concatenate");if(t.length!==e.length)throw new ts.nu(`Mismatch in the length of mask (${t.length}) and the legnth of inputs (${e.length})`);return s.lub((()=>{let n=!0;if(t.forEach((e=>{null==e||(n=!1)})),n)return null;const r=[];for(let o=0;o<e.length;++o)null==t[o]?r.push(s.pju(s.JpU(e[o]),"bool")):t[o].rank<e[o].rank?r.push(s.dt4(t[o],-1)):r.push(t[o]);const a=s.zoF(r,this.axis);return s.$6P(a,-1,!1)}))}getConfig(){const e={axis:this.axis},t=super.getConfig();return Object.assign(e,t),e}}function Gs(e,t){for(;e<0;)e+=t;return e}Vs.className="Concatenate",s.m7h.registerClass(Vs);class Hs extends Bs{constructor(e){super(e),this.axes=e.axes,this.normalize=null!=e.normalize&&e.normalize,this.supportsMasking=!0,this.reshapeRequired=!1}build(e){s.D5U.assert(Array.isArray(e)&&2===e.length&&Array.isArray(e[0])&&Array.isArray(e[1]),(()=>"A `Dot` layer should be called on a list of exactly 2 inputs."));const t=e[0],n=e[1];if(t.length>3||n.length>3)throw new ts.nj("Dot layer does not support tensors of 4D or higher rank yet.");const r=this.interpretAxes(t,n);if(t[r[0]]!==n[r[1]])throw new ts.nu(`Dimension incompatibility: ${t[r[0]]} !== ${n[r[1]]}`)}mergeFunction(e){if(2!==e.length)throw new ts.nu(`A \`Dot\` layer must be called on exactly 2 inputs, but received ${e.length} input(s).`);let t,n=e[0],r=e[1];return t=Array.isArray(this.axes)?this.axes.map(((t,n)=>Gs(t,e[n].shape.length))):[Gs(this.axes,n.shape.length),Gs(this.axes,r.shape.length)],this.normalize&&(n=(0,Ms.Eq)(n,t[0]),r=(0,Ms.Eq)(r,t[1])),function(e,t,n){if(e.shape.length>3||t.shape.length>3)throw new ts.nj("batchDot is not implemented for tensors of 4D or higher rank yet");if(s.D5U.assert(e.shape.length>=2,(()=>`batchDot requires the rank of x to be >= 2, but got ${e.shape.length}`)),s.D5U.assert(e.shape.length>=2,(()=>`batchDot requires the rank of y to be >= 2, but got ${t.shape.length}`)),"number"===typeof n&&(n=[n,n]),"complex64"===e.dtype||"complex64"===t.dtype)throw new ts.nj("batchDot is not implemented for complex64-type Tensors yet.");const r=e.shape.length,a=t.shape.length;null==n&&(n=[r-1,a-2]);const o=n;return s.lub((()=>{let n,i;if(r>a){n=r-a;const e=[];for(let t=0;t<n;++t)e.push(1);t=s.XLQ(t,t.shape.concat(e))}else if(a>r){n=a-r;const t=[];for(let e=0;e<n;++e)t.push(1);e=s.XLQ(e,e.shape.concat(t))}else n=0;if(2===e.shape.length&&2===t.shape.length)i=o[0]===o[1]?s.Smz(s.dC7(e,t),o[0]):s.Smz(s.dC7(s.p4s(e,[1,0]),t),o[1]);else{const n=o[0]!==e.shape.length-1,r=o[1]===t.shape.length-1;i=s.OI3(e,t,n,r)}if(n>0){let e;e=r>a?r+a-3:r-1;const t=[];for(let r=e;r<e+n;++r)t.push(r);i=s.L9e(i,t)}return 1===i.shape.length&&(i=s.dt4(i,1)),i}))}(n,r,t)}interpretAxes(e,t){let n;return n=Array.isArray(this.axes)?this.axes:[Gs(this.axes,e.length),Gs(this.axes,t.length)],n}computeOutputShape(e){s.D5U.assert(Array.isArray(e)&&2===e.length&&Array.isArray(e[0])&&Array.isArray(e[1]),(()=>"A `Dot` layer should be called on a list of exactly 2 inputs."));const t=e[0].slice(),n=e[1].slice();if(t.length>3||n.length>3)throw new ts.nj("Dot layer does not support tensors of 4D or higher rank yet.");const r=this.interpretAxes(t,n);t.splice(r[0],1),n.splice(r[1],1),n.splice(0,1);const a=t.concat(n);return 1===a.length&&a.push(1),a}computeMask(e,t){return null}getConfig(){const e={axes:this.axes,normalize:this.normalize},t=super.getConfig();return Object.assign(e,t),e}}Hs.className="Dot",s.m7h.registerClass(Hs);class js extends Yr.mh{constructor(e){super(e),this.supportsMasking=!0,this.stddev=e.stddev}computeOutputShape(e){return e}getConfig(){const e=super.getConfig(),t={stddev:this.stddev};return Object.assign(t,e),t}call(e,t){return(0,s.lub)((()=>{this.invokeCallHook(e,t);const n=(0,ss.nQ)(e);return gs.KC((()=>(0,s.IHx)(gs.nG(n.shape,0,this.stddev),n)),(()=>n),t.training||!1)}))}}js.className="GaussianNoise",s.m7h.registerClass(js);class Xs extends Yr.mh{constructor(e){super(e),this.supportsMasking=!0,this.rate=e.rate}computeOutputShape(e){return e}getConfig(){const e=super.getConfig(),t={rate:this.rate};return Object.assign(t,e),t}call(e,t){return(0,s.lub)((()=>{this.invokeCallHook(e,t);const n=(0,ss.nQ)(e);if(this.rate>0&&this.rate<1){const e=()=>{const e=Math.sqrt(this.rate/(1-this.rate));return(0,s.dC7)(n,gs.nG(n.shape,1,e))};return gs.KC(e,(()=>n),t.training||!1)}return n}))}}Xs.className="GaussianDropout",s.m7h.registerClass(Xs);class qs extends Yr.mh{constructor(e){super(e),this.supportsMasking=!0,this.rate=e.rate,this.noiseShape=e.noiseShape}_getNoiseShape(e){return this.noiseShape||(0,ss.nQ)(e).shape}computeOutputShape(e){return e}getConfig(){const e=super.getConfig(),t={rate:this.rate};return Object.assign(t,e),t}call(e,t){return(0,s.lub)((()=>
1{if(this.rate<1&&this.rate>0){const n=this._getNoiseShape(e),r=()=>{const t=(0,ss.nQ)(e),r=-1.7580993408473766;let a=(0,s.brS)((0,s.LGj)(n),this.rate);a=gs.pj(a,"float32");const o=((1-this.rate)*(1+this.rate*r**2))**-.5,i=-o*r*this.rate,u=(0,s.IHx)((0,s.dC7)(t,a),(0,s.dC7)((0,s.IHx)(a,-1),r));return(0,s.IHx)((0,s.dC7)(u,o),i)};return gs.KC(r,(()=>(0,ss.nQ)(e)),t.training||!1)}return e}))}}function Ks(e,t,n,r,a,o=.001){let i;if(2===e.rank)i=s.Dxk(e,t,n,r,a,o);else if(3===e.rank)i=s.JY5(e,t,n,r,a,o);else{if(4!==e.rank)throw new ts.nj(`batchNormalization is not implemented for array of rank ${e.rank} yet`);i=s.p3b(e,t,n,r,a,o)}return i}function Qs(e,t,n,r,a=.001){return s.D5U.arraysEqual(r.slice().sort(),Ss.w6(0,e.rank-1))?function(e,t,n,r,a=.001){return(0,s.lub)((()=>{const o=s.Gi7(e,r),i=o.mean,u=o.variance;return[Ks(e,i,u,n,t,a),i,u]}))}(e,t,n,r,a):function(e,t,n,r,a=.001){return(0,s.lub)((()=>{const o=s.Gi7(e,r),i=o.mean,u=o.variance,l=[];for(const t of Ss.w6(0,e.rank))-1!==r.indexOf(t)?l.push(1):l.push(e.shape[t]);const c=(0,s.XLQ)(i,l),p=(0,s.XLQ)(u,l),h=null==t?null:(0,s.XLQ)(t,l),d=null==n?null:(0,s.XLQ)(n,l);return[Ks(e,c,p,d,h,a),i,u]}))}(e,t,n,r,a)}qs.className="AlphaDropout",s.m7h.registerClass(qs);class Ys extends Yr.mh{constructor(e){null==e&&(e={}),super(e),this.supportsMasking=!0,this.axis=null==e.axis?-1:e.axis,this.momentum=null==e.momentum?.99:e.momentum,this.epsilon=null==e.epsilon?.001:e.epsilon,this.center=null==e.center||e.center,this.scale=null==e.scale||e.scale,this.betaInitializer=(0,Kr.L5)(e.betaInitializer||"zeros"),this.gammaInitializer=(0,Kr.L5)(e.gammaInitializer||"ones"),this.movingMeanInitializer=(0,Kr.L5)(e.movingMeanInitializer||"zeros"),this.movingVarianceInitializer=(0,Kr.L5)(e.movingVarianceInitializer||"ones"),this.betaConstraint=(0,qr.Ad)(e.betaConstraint),this.gammaConstraint=(0,qr.Ad)(e.gammaConstraint),this.betaRegularizer=(0,is.EC)(e.betaRegularizer),this.gammaRegularizer=(0,is.EC)(e.gammaRegularizer)}build(e){e=(0,ss.Wf)(e);const t=this.axis>=0?this.axis:this.axis+e.length,n=e[t];if(null==n)throw new ts.nu(`Axis ${t} of input tensor should have a defined dimension but the layer received an input with shape ${JSON.stringify(e)}.`);this.inputSpec=[new Yr.Zg({ndim:e.length,axes:{[t]:n}})];const r=[n];this.scale&&(this.gamma=this.addWeight("gamma",r,null,this.gammaInitializer,this.gammaRegularizer,!0,this.gammaConstraint)),this.center&&(this.beta=this.addWeight("beta",r,null,this.betaInitializer,this.betaRegularizer,!0,this.betaConstraint)),this.movingMean=this.addWeight("moving_mean",r,null,this.movingMeanInitializer,null,!1),this.movingVariance=this.addWeight("moving_variance",r,null,this.movingVarianceInitializer,null,!1),this.built=!0}call(e,t){return(0,s.lub)((()=>{const n=null!=t.training&&t.training,r=(0,ss.nQ)(e),a=r.shape,o=a.length,i=Ss.w6(0,o),u=this.axis>=0?this.axis:this.axis+o;i.splice(u,1);const l=rs.JE(1,o);l[u]=a[u];const c=i.slice();c.sort();const p=!s.D5U.arraysEqual(c,Ss.w6(0,o).slice(0,o-1));if(!n)return(()=>{if(p){const e=(0,s.XLQ)(this.movingMean.read(),l),t=(0,s.XLQ)(this.movingVariance.read(),l),n=this.center?(0,s.XLQ)(this.beta.read(),l):null,a=this.scale?(0,s.XLQ)(this.gamma.read(),l):null;return Ks(r,e,t,n,a,this.epsilon)}return Ks(r,this.movingMean.read(),this.movingVariance.read(),null==this.beta?null:this.beta.read(),null==this.gamma?null:this.gamma.read(),this.epsilon)})();const[h,d,f]=Qs(r,this.gamma.read(),this.beta.read(),i,this.epsilon),m=(e,t,n)=>{s.lub((()=>{const r=1-n,a=e.read(),o=s.dC7(s.luU(a,t),r);e.write(s.luU(a,o))}))};return(()=>{m(this.movingMean,d,this.momentum),m(this.movingVariance,f,this.momentum)})(),h}))}getConfig(){const e={axis:this.axis,momentum:this.momentum,epsilon:this.epsilon,center:this.center,scale:this.scale,betaInitializer:(0,Kr.Cx)(this.betaInitializer),gammaInitializer:(0,Kr.Cx)(this.gammaInitializer),movingMeanInitializer:(0,Kr.Cx)(this.movingMeanInitializer),movingVarianceInitializer:(0,Kr.Cx)(this.movingVarianceInitializer),betaRegularizer:(0,is.SG)(this.betaRegularizer),gammaRegularizer:(0,is.SG)(this.gammaRegularizer),betaConstraint:(0,qr.xF)(this.betaConstraint),gammaConstraint:(0,qr.xF)(this.gammaConstraint)},t=super.getConfig();return Object.assign(e,t),e}}Ys.className="BatchNormalization",s.m7h.registerClass(Ys);class Zs extends Yr.mh{constructor(e){if(null==e&&(e={}),super(e),this.axis=null==e.axis?-1:e.axis,"number"===typeof this.axis){if(!Number.isInteger(this.axis))throw new Error(`Expected axis to be an integer, but received ${this.axis}`)}else{if(!Array.isArray(this.axis))throw new Error(`Expected axis to be an integer or an array of integers, but received ${JSON.stringify(this.axis)}`);for(const e of this.axis)if(!Number.isInteger(e))throw new Error(`Expected axis to be an array of integers, but received ${JSON.stringify(this.axis)}`)}this.epsilon=null==e.epsilon?.001:e.epsilon,this.center=null==e.center||e.center,this.scale=null==e.scale||e.scale,this.betaInitializer=(0,Kr.L5)(e.betaInitializer||"zeros"),this.gammaInitializer=(0,Kr.L5)(e.gammaInitializer||"ones"),this.betaRegularizer=(0,is.EC)(e.betaRegularizer),this.gammaRegularizer=(0,is.EC)(e.gammaRegularizer),this.supportsMasking=!0}build(e){const t=(e=(0,ss.Wf)(e)).length;"number"===typeof this.axis&&(this.axis=[this.axis]);for(let r=0;r<this.axis.length;++r)this.axis[r]<0&&(this.axis[r]+=t);for(const r of this.axis)if(r<0||r>=t)throw new Error(`Invalid axis: ${r}`);if(this.axis.length!==rs.Tw(this.axis).length)throw new Error(`Found duplicate axes in: ${this.axis}`);const n=this.axis.map((t=>e[t]));this.scale?this.gamma=this.addWeight("gamma",n,"float32",this.gammaInitializer,this.gammaRegularizer,true):this.gamma=null,this.center?this.beta=this.addWeight("beta",n,"float32",this.betaInitializer,this.betaRegularizer,true):this.beta=null,this.built=!0}call(e,t){const n=(0,ss.nQ)(e),r=n.shape,a=r.length;return(0,s.lub)((()=>{let{mean:e,variance:t}=(0,s.Gi7)(n,this.axis,!0);const o=rs.JE(1,a);for(const n of this.axis)o[n]=r[n];const i=e=>null!=e&&e.shape.length!==a?s.XLQ(e,o):e;let u=this.scale?i(this.gamma.read()):null,l=this.center?i(this.beta.read()):null;const c=[],p=[];for(let n=0;n<a;++n)-1!==this.axis.indexOf(n)?(c.push(r[n]),p.push(1)):(c.push(1),p.push(r[n]));return e=s.Gg6(e,c),t=s.Gg6(t,c),null!=u&&(u=s.Gg6(u,p)),null!=l&&(l=s.Gg6(l,p)),Ks(n,e,t,l,u,this.epsilon)}))}getConfig(){const e={axis:this.axis,epsilon:this.epsilon,center:this.center,scale:this.scale,betaInitializer:(0,Kr.Cx)(this.betaInitializer),gammaInitializer:(0,Kr.Cx)(this.gammaInitializer),betaRegularizer:(0,is.SG)(this.betaRegularizer),gammaRegularizer:(0,is.SG)(this.gammaRegularizer)},t=super.getConfig();return Object.assign(e,t),e}}Zs.className="LayerNormalization",s.m7h.registerClass(Zs);class Js extends Yr.mh{constructor(e){if(null==e&&(e={}),super(e),this.dataFormat=null==e.dataFormat?(0,ms.rf)():e.dataFormat,null==e.padding)this.padding=[[1,1],[1,1]];else if("number"===typeof e.padding)this.padding=[[e.padding,e.padding],[e.padding,e.padding]];else{if(e.padding=e.padding,2!==e.padding.length)throw new ts.nu(`ZeroPadding2D expects padding to be a length-2 array, but received a length-${e.padding.length} array.`);let t,n;if("number"===typeof e.padding[0])t=[e.padding[0],e.padding[0]],n=[e.padding[1],e.padding[1]];else{if(e.padding=e.padding,2!==e.padding[0].length)throw new ts.nu(`ZeroPadding2D expects height padding to be a length-2 array, but received a length-${e.padding[0].length} array.`);if(t=e.padding[0],2!==e.padding[1].length)throw new ts.nu(`ZeroPadding2D expects width padding to be a length-2 array, but received a length-${e.padding[1].length} array.`);n=e.padding[1]}this.padding=[t,n]}
1this.inputSpec=[new Yr.Zg({ndim:4})]}computeOutputShape(e){let t,n;return e=(0,ss.Wf)(e),"channelsFirst"===this.dataFormat?(t=null!=e[2]&&e[2]>=0?e[2]+this.padding[0][0]+this.padding[0][1]:null,n=null!=e[3]&&e[3]>=0?e[3]+this.padding[1][0]+this.padding[1][1]:null,[e[0],e[1],t,n]):(t=null!=e[1]&&e[1]>=0?e[1]+this.padding[0][0]+this.padding[0][1]:null,n=null!=e[2]&&e[2]>=0?e[2]+this.padding[1][0]+this.padding[1][1]:null,[e[0],t,n,e[3]])}call(e,t){return(0,s.lub)((()=>{return t=(0,ss.nQ)(e),n=this.padding,r=this.dataFormat,(0,s.lub)((()=>{if(4!==t.rank)throw new ts.nu(`temporalPadding expects input tensor to be 4-D, but received a ${t.rank}-D tensor.`);if(null==n&&(n=[[1,1],[1,1]]),2!==n.length||2!==n[0].length||2!==n[1].length)throw new ts.nu("spatial2dPadding expects `padding` to be an Array of two Arrays, each of which is an Array of two integers.");if(null==r&&(r=(0,ms.rf)()),"channelsLast"!==r&&"channelsFirst"!==r)throw new ts.nu(`Unknown data format: ${r}. Supported data formats are 'channelsLast' and 'channelsFirst.`);let e;return e="channelsFirst"===r?[[0,0],[0,0],n[0],n[1]]:[[0,0],n[0],n[1],[0,0]],s.vku(t,e)}));var t,n,r}))}getConfig(){const e={padding:this.padding,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}}function ea(e,t,n,r,a,o){return(0,s.lub)((()=>{let i;(0,ys.cj)(a),(0,ys.Lp)(o),(0,ys.zb)(r),null==n&&(n=[1,1]),null==r&&(r="valid"),null==a&&(a=(0,ms.rf)()),null==o&&(o="max"),e=(0,fs.aP)(e,a);const u="same"===r?"same":"valid";return i="max"===o?s._sB(e,t,n,u):s.wS1(e,t,n,u),"channelsFirst"===a&&(i=s.p4s(i,[0,3,1,2])),i}))}function ta(e,t,n,r,a,o){return(0,s.lub)((()=>{let i;(0,ys.cj)(a),(0,ys.Lp)(o),(0,ys.zb)(r),null==n&&(n=[1,1,1]),null==r&&(r="valid"),null==a&&(a=(0,ms.rf)()),null==o&&(o="max"),e=(0,fs.fN)(e,a);const u="same"===r?"same":"valid";return i="max"===o?s.YQQ(e,t,n,u):s.uR5(e,t,n,u),"channelsFirst"===a&&(i=s.p4s(i,[0,4,1,2,3])),i}))}Js.className="ZeroPadding2D",s.m7h.registerClass(Js);class na extends Yr.mh{constructor(e){if(null==e.poolSize&&(e.poolSize=2),super(e),"number"===typeof e.poolSize)this.poolSize=[e.poolSize];else{if(!Array.isArray(e.poolSize)||1!==e.poolSize.length||"number"!==typeof e.poolSize[0])throw new ts.nu(`poolSize for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(e.poolSize)}`);this.poolSize=e.poolSize}if((0,rs.iQ)(this.poolSize,"poolSize"),null==e.strides)this.strides=this.poolSize;else if("number"===typeof e.strides)this.strides=[e.strides];else{if(!Array.isArray(e.strides)||1!==e.strides.length||"number"!==typeof e.strides[0])throw new ts.nu(`strides for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(e.strides)}`);this.strides=e.strides}(0,rs.iQ)(this.strides,"strides"),this.padding=null==e.padding?"valid":e.padding,(0,ys.zb)(this.padding),this.inputSpec=[new Yr.Zg({ndim:3})]}computeOutputShape(e){e=(0,ss.Wf)(e);const t=(0,bs.kt)(e[1],this.poolSize[0],this.padding,this.strides[0]);return[e[0],t,e[2]]}call(e,t){return(0,s.lub)((()=>{this.invokeCallHook(e,t),e=gs.dt((0,ss.nQ)(e),2);const n=this.poolingFunction((0,ss.nQ)(e),[this.poolSize[0],1],[this.strides[0],1],this.padding,"channelsLast");return s.L9e(n,[2])}))}getConfig(){const e={poolSize:this.poolSize,padding:this.padding,strides:this.strides},t=super.getConfig();return Object.assign(e,t),e}}class ra extends na{constructor(e){super(e)}poolingFunction(e,t,n,r,s){return(0,ys.cj)(s),(0,ys.zb)(r),ea(e,t,n,r,s,"max")}}ra.className="MaxPooling1D",s.m7h.registerClass(ra);class sa extends na{constructor(e){super(e)}poolingFunction(e,t,n,r,s){return(0,ys.cj)(s),(0,ys.zb)(r),ea(e,t,n,r,s,"avg")}}sa.className="AveragePooling1D",s.m7h.registerClass(sa);class aa extends Yr.mh{constructor(e){if(null==e.poolSize&&(e.poolSize=[2,2]),super(e),this.poolSize=Array.isArray(e.poolSize)?e.poolSize:[e.poolSize,e.poolSize],null==e.strides)this.strides=this.poolSize;else if(Array.isArray(e.strides)){if(2!==e.strides.length)throw new ts.nu(`If the strides property of a 2D pooling layer is an Array, it is expected to have a length of 2, but received length ${e.strides.length}.`);this.strides=e.strides}else this.strides=[e.strides,e.strides];(0,rs.iQ)(this.poolSize,"poolSize"),(0,rs.iQ)(this.strides,"strides"),this.padding=null==e.padding?"valid":e.padding,this.dataFormat=null==e.dataFormat?"channelsLast":e.dataFormat,(0,ys.cj)(this.dataFormat),(0,ys.zb)(this.padding),this.inputSpec=[new Yr.Zg({ndim
1:4})]}computeOutputShape(e){e=(0,ss.Wf)(e);let t="channelsFirst"===this.dataFormat?e[2]:e[1],n="channelsFirst"===this.dataFormat?e[3]:e[2];return t=(0,bs.kt)(t,this.poolSize[0],this.padding,this.strides[0]),n=(0,bs.kt)(n,this.poolSize[1],this.padding,this.strides[1]),"channelsFirst"===this.dataFormat?[e[0],e[1],t,n]:[e[0],t,n,e[3]]}call(e,t){return(0,s.lub)((()=>(this.invokeCallHook(e,t),this.poolingFunction((0,ss.nQ)(e),this.poolSize,this.strides,this.padding,this.dataFormat))))}getConfig(){const e={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}}class oa extends aa{constructor(e){super(e)}poolingFunction(e,t,n,r,s){return(0,ys.cj)(s),(0,ys.zb)(r),ea(e,t,n,r,s,"max")}}oa.className="MaxPooling2D",s.m7h.registerClass(oa);class ia extends aa{constructor(e){super(e)}poolingFunction(e,t,n,r,s){return(0,ys.cj)(s),(0,ys.zb)(r),ea(e,t,n,r,s,"avg")}}ia.className="AveragePooling2D",s.m7h.registerClass(ia);class ua extends Yr.mh{constructor(e){if(null==e.poolSize&&(e.poolSize=[2,2,2]),super(e),this.poolSize=Array.isArray(e.poolSize)?e.poolSize:[e.poolSize,e.poolSize,e.poolSize],null==e.strides)this.strides=this.poolSize;else if(Array.isArray(e.strides)){if(3!==e.strides.length)throw new ts.nu(`If the strides property of a 3D pooling layer is an Array, it is expected to have a length of 3, but received length ${e.strides.length}.`);this.strides=e.strides}else this.strides=[e.strides,e.strides,e.strides];(0,rs.iQ)(this.poolSize,"poolSize"),(0,rs.iQ)(this.strides,"strides"),this.padding=null==e.padding?"valid":e.padding,this.dataFormat=null==e.dataFormat?"channelsLast":e.dataFormat,(0,ys.cj)(this.dataFormat),(0,ys.zb)(this.padding),this.inputSpec=[new Yr.Zg({ndim:5})]}computeOutputShape(e){e=(0,ss.Wf)(e);let t="channelsFirst"===this.dataFormat?e[2]:e[1],n="channelsFirst"===this.dataFormat?e[3]:e[2],r="channelsFirst"===this.dataFormat?e[4]:e[3];return t=(0,bs.kt)(t,this.poolSize[0],this.padding,this.strides[0]),n=(0,bs.kt)(n,this.poolSize[1],this.padding,this.strides[1]),r
1=(0,bs.kt)(r,this.poolSize[2],this.padding,this.strides[2]),"channelsFirst"===this.dataFormat?[e[0],e[1],t,n,r]:[e[0],t,n,r,e[4]]}call(e,t){return(0,s.lub)((()=>(this.invokeCallHook(e,t),this.poolingFunction((0,ss.nQ)(e),this.poolSize,this.strides,this.padding,this.dataFormat))))}getConfig(){const e={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}}class la extends ua{constructor(e){super(e)}poolingFunction(e,t,n,r,s){return(0,ys.cj)(s),(0,ys.zb)(r),ta(e,t,n,r,s,"max")}}la.className="MaxPooling3D",s.m7h.registerClass(la);class ca extends ua{constructor(e){super(e)}poolingFunction(e,t,n,r,s){return(0,ys.cj)(s),(0,ys.zb)(r),ta(e,t,n,r,s,"avg")}}ca.className="AveragePooling3D",s.m7h.registerClass(ca);class pa extends Yr.mh{constructor(e){super(e),this.inputSpec=[new Yr.Zg({ndim:3})]}computeOutputShape(e){return[e[0],e[2]]}call(e,t){throw new ts.nj}}class ha extends pa{constructor(e){super(e||{})}call(e,t){return(0,s.lub)((()=>{const t=(0,ss.nQ)(e);return s.J69(t,1)}))}}ha.className="GlobalAveragePooling1D",s.m7h.registerClass(ha);class da extends pa{constructor(e){super(e||{})}call(e,t){return(0,s.lub)((()=>{const t=(0,ss.nQ)(e);return s.Fp7(t,1)}))}}da.className="GlobalMaxPooling1D",s.m7h.registerClass(da);class fa extends Yr.mh{constructor(e){super(e),this.dataFormat=null==e.dataFormat?"channelsLast":e.dataFormat,(0,ys.cj)(this.dataFormat),this.inputSpec=[new Yr.Zg({ndim:4})]}computeOutputShape(e){return e=e,"channelsLast"===this.dataFormat?[e[0],e[3]]:[e[0],e[1]]}call(e,t){throw new ts.nj}getConfig(){const e={dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}}class ma extends fa{call(e,t){return(0,s.lub)((()=>{const t=(0,ss.nQ)(e);return"channelsLast"===this.dataFormat?s.J69(t,[1,2]):s.J69(t,[2,3])}))}}ma.className="GlobalAveragePooling2D",s.m7h.registerClass(ma);class ga extends fa{call(e,t){return(0,s.lub)((()=>{const t=(0,ss.nQ)(e);return"channelsLast"===this.dataFormat?s.Fp7(t,[1,2]):s.Fp7(t,[2,3])}))}}ga.className="GlobalMaxPooling2D",s.m7h.registerClass(ga);var ya=n(4685);class ba extends Yr.mh{constructor(e){super(e),this.layer=e.layer}build(e){this.built=!0}get trainable(){return null!=this.layer&&this.layer.trainable}set trainable(e){null!=this.layer&&(this.layer.trainable=e)}get trainableWeights(){return this.layer.trainableWeights}get nonTrainableWeights(){return this.layer.nonTrainableWeights}get updates(){return this.layer._updates}get losses(){return this.layer.losses}getWeights(){return this.layer.getWeights()}setWeights(e){this.layer.setWeights(e)}getConfig(){const e={layer:{className:this.layer.getClassName(),config:this.layer.getConfig()}},t=super.getConfig();return Object.assign(e,t),e}setFastWeightInitDuringBuild(e){super.setFastWeightInitDuringBuild(e),null!=this.layer&&this.layer.setFastWeightInitDuringBuild(e)}static fromConfig(e,t,n={}){const r=t.layer,s=(0,ns.v)(r,n);delete t.layer;const a={layer:s};return Object.assign(a,t),new e(a)}}class xa extends ba{constructor(e){super(e),this.supportsMasking=!0}build(e){if((e=(0,ss.Wf)(e)).length<3)throw new ts.nu(`TimeDistributed layer expects an input shape >= 3D, but received input shape ${JSON.stringify(e)}`);this.inputSpec=[{shape:e}];const t=[e[0]].concat(e.slice(2));this.layer.built||(this.layer.build(t),this.layer.built=!0),super.build(e)}computeOutputShape(e){const t=[(e=(0,ss.Wf)(e))[0]].concat(e.slice(2)),n=this.layer.computeOutputShape(t),r=e[1];return[n[0],r].concat(n.slice(1))}call(e,t){return(0,s.lub)((()=>{e=(0,ss.nQ)(e);return(0,ws.nd)(((e,n)=>[(0,ss.nQ)(this.layer.call(e,t)),[]]),e,[],!1,null,null,!1,!0)[1]}))}}xa.className="TimeDistributed",s.m7h.registerClass(xa);class wa extends ba{constructor(e){super(e);const t=e.layer.getConfig(),n={};n.className=e.layer.getClassName(),n.config=t,this.forwardLayer=(0,ns.v)(n),t.goBackwards=!0!==t.goBackwards;const r={};var s;if(r.className=e.layer.getClassName(),r.config=t,this.backwardLayer=(0,ns.v)(r),this.forwardLayer.name="forward_"+this.forwardLayer.name,this.backwardLayer.name="backward_"+this.backwardLayer.name,this.mergeMode=void 0===e.mergeMode?"concat":e.mergeMode,s=this.mergeMode,rs.xn(ya.eY,"BidirectionalMergeMode",s),e.weights)throw new ts.nj("weights support is not implemented for Bidirectional layer yet.");this._stateful=e.layer.stateful,this.returnSequences=e.layer.returnSequences,this.returnState=e.layer.returnState,this.supportsMasking=!0,this._trainable=!0,this.inputSpec=e.layer.inputSpec,this.numConstants=null}get trainable(){return this._trainable}set trainable(e){this._trainable=e,null!=this.forwardLayer&&(this.forwardLayer.trainable=e),null!=this.backwardLayer&&(this.backwardLayer.trainable=e)}getWeights(){return this.forwardLayer.getWeights().concat(this.backwardLayer.getWeights())}setWeights(e){const t=e.length,n=Math.floor(t/2);this.forwardLayer.setWeights(e.slice(0,n)),this.backwardLayer.setWeights(e.slice(n))}computeOutputShape(e){let t,n,r,s=this.forwardLayer.computeOutputShape(e);return Array.isArray(s)&&Array.isArray(s[0])||(s=[s]),s=s,this.returnState?(r=s.slice(1),t=s[0]):t=s[0],t=t,"concat"===this.mergeMode?(t[t.length-1]*=2,n=[t]):n=null==this.mergeMode?[t,t.slice()]:[t],this.returnState?null==this.mergeMode?n.concat(r).concat(r.slice()):[t].concat(r).concat(r.slice()):rs.Bq(n)}apply(e,t){let n=null==t?null:t.initialState,r=null==t?null:t.constants;null==t&&(t={});const s=(0,ws.lx)(e,n,r,this.numConstants);if(e=s.inputs,n=s.initialState,r=s.constants,Array.isArray(e)&&(n=e.slice(1),e=e[0]),(null==n||0===n.length)&&null==r)return super.apply(e,t);const a=[],o=[];if(null!=n){const e=n.length;if(e%2>0)throw new ts.nu("When passing `initialState` to a Bidrectional RNN, the state should be an Array containing the states of the underlying RNNs.");t.initialState=n,a.push(...n);const r=n.map((e=>new Yr.Zg({shape:e.shape})));this.forwardLayer.stateSpec=r.slice(0,e/2),this.backwardLayer.stateSpec=r.slice(e/2),o.push(...r)}if(null!=r)throw new ts.nj("Support for constants in Bidirectional layers is not implemented yet.");const i=a[0]instanceof Yr.Iy;for(const u of a)if(u instanceof Yr.Iy!==i)throw new ts.nu("The initial state of a Bidirectional layer cannot be specified as a mix of symbolic and non-symbolic tensors");if(i){const n=[e].concat(a),r=this.inputSpec.concat(o),s=this.inputSpec;this.inputSpec=r;const i=super.apply(n,t);return this.inputSpec=s,i}return super.apply(e,t)}call(e,t){return(0,s.lub)((()=>{const n=t.initialState;let r,a,o,i;if(null==n)r=this.forwardLayer.call(e,t),a=this.backwardLayer.call(e,t);else{const s=n.slice(0,n.length/2),o=n.slice(n.length/2);r=this.forwardLayer.call(e,Object.assign(t,{initialState:s})),a=this.backwardLayer.call(e,Object.assign(t,{initialState:o}))}return this.returnState&&(Array.isArray(r)&&(o=r.slice(1).concat(a.slice(1))),r=r[0],a=a[0]),this.returnSequences&&(a=s.GYS(a,1)),"concat"===this.mergeMode?i=gs.mV([r,a]):"sum"===this.mergeMode?i=s.IHx(r,a):"ave"===this.mergeMode?i=s.dC7(.5,s.IHx(r,a)):"mul"===this.mergeMode?i=s.dC7(r,a):null==this.mergeMode&&(i=[r,a]),this.returnState?null==this.mergeMode?i.concat(o):[i].concat(o):i}))}resetStates(e){this.forwardLayer.resetStates(),this.backwardLayer.resetStates()}build(e){(0,ys.f4)(this.forwardLayer.name,(()=>{this.forwardLayer.build(e)})),(0,ys.f4)(this.backwardLayer.name,(()=>{this.backwardLayer.build(e)})),this.built=!0}computeMask(e,t){let n;if(Array.isArray(t)&&(t=t[0]),n=this.returnSequences?null==this.mergeMode?[t,t]:t:null==this.mergeMode?[null,null]:null,this.returnState){const e=this.forwardLayer.states.map((e=>null));return Array.isArray(n)?n.concat(e).concat(e):[n].concat(e).concat(e)}return n}get trainableWeights(){return this.forwardLayer.trainableWeights.concat(this.backwardLayer.trainableWeights)}get nonTrainableWeights(){return this.forwardLayer.nonTrainableWeights.concat(this.backwardLayer.nonTrainableWeights)}setFastWeightInitDuringBuild(e){super.setFastWeightInitDuringBuild(e),null!=this.forwardLayer&&this.forwardLayer.setFastWeightInitDuringBuild(e),null!=this.backwardLayer&&this.backwardLayer.setFastWeightInitDuringBuild(e)}getConfig(){const e={mergeMode:this.mergeMode},t=super.getConfig();return Object.assign(e,t),e}static fromConfig(e,t){const n=(0,ns.v)(t.layer);if(delete t.layer,null!=t.numConstants)throw new ts.nj("Deserialization of a Bidirectional layer with numConstants present is not supported yet.");const r=t;return r.layer=n,new e(r)}}wa.className="Bidirectional",s.m7h.registerClass(wa);class va extends Yr.mh{constructor(e){super(e),this.scale=e.scale,e.offset?this.offset=e.offset:this.offset=0}getConfig(){const e={scale:this.scale,offset:this.offset},t=super.getConfig();return Object.assign(e,t),e}call(e,t){return(0,s.lub)((()=>("float32"!==(e=(0,ss.nQ)(e)).dtype&&(e=gs.pj(e,"float32")),(0,s.IHx)((0,s.dC7)(e,this.scale),this.offset))))}}va.className="Rescaling",s.m7h.registerClass(va);n(7629);n(3146);Zr.ex;n(1653);var ka,Ia=n(7385),Na=n(4618),Sa=n(6377);function Ta(e,t,n=new Map,r=new Set){if(null==e)return null;if("function"===typeof Blob&&e instanceof Blob)return e.slice();if(r.has(e))throw new Error("Circular references are not supported.");
vendor: 9,630 bytes, line 1
1if(n.has(e))return n.get(e);const s=t(e);if(s.recurse&&null!==s.value)throw new Error("A deep map function may not return both a value and recurse=true.");if(s.recurse){if(Aa(e)){const s=Array.isArray(e)?[]:{};r.add(e);for(const a in e){const o=Ta(e[a],t,n,r);s[a]=o}return r.delete(e),e.__proto__&&(s.__proto__=e.__proto__),s}throw new Error(`Can't recurse into non-iterable type: ${e}`)}return n.set(e,s.value),s.value}function Ca(e,t=$a){return Ea(e,t)}function Ea(e,t,n=new Set){const r=e[0];if(n.has(r))throw new Error("Circular references are not supported.");const s=t(e);if(s.recurse&&null!==s.value)throw new Error("A deep zip function may not return both a value and recurse=true.");if(s.recurse){if(Aa(r)){const s=Array.isArray(r)?[]:{};n.add(r);for(const a in r){const r=Ea(e.map((e=>e[a])),t,n);s[a]=r}return n.delete(r),s}throw new Error(`Can't recurse into non-iterable type: ${r}`)}return s.value}function $a(e){return null===e?null:Aa(e[0])?{value:null,recurse:!0}:{value:e,recurse:!1}}function Aa(e){let t=!1;if(s.OBj().get("IS_BROWSER"))t=e instanceof TextDecoder;else{const{StringDecoder:r}=n(8963);t=e instanceof r}return null!=e&&!ArrayBuffer.isView(e)&&(Array.isArray(e)||"object"===typeof e&&!(e instanceof s.esB)&&!(e instanceof Promise)&&!t)}function Da(e){return function(e,t){return Ta(e,t)}(e,_a)}function _a(e){return e instanceof s.esB?{value:e.clone(),recurse:!1}:Aa(e)?{value:null,recurse:!0}:{value:e,recurse:!1}}class Ra{constructor(e){if(this.capacity=e,this.begin=0,this.end=0,null==e)throw new RangeError("Can't create a ring buffer of unknown capacity.");if(e<1)throw new RangeError("Can't create ring buffer of capacity < 1.");this.data=new Array(e),this.doubledCapacity=2*e}wrap(e){for(;e<0;)e+=this.doubledCapacity;return e%this.doubledCapacity}get(e){if(e<0)throw new RangeError("Can't get item at a negative index.");return this.data[e%this.capacity]}set(e,t){if(e<0)throw new RangeError("Can't set item at a negative index.");this.data[e%this.capacity]=t}length(){let e=this.end-this.begin;return e<0&&(e=this.doubledCapacity+e),e}isFull(){return this.length()===this.capacity}isEmpty(){return 0===this.length()}push(e){if(this.isFull())throw new RangeError("Ring buffer is full.");this.set(this.end,e),this.end=this.wrap(this.end+1)}pushAll(e){for(const t of e)this.push(t)}pop(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");this.end=this.wrap(this.end-1);const e=this.get(this.end);return this.set(this.end,void 0),e}unshift(e){if(this.isFull())throw new RangeError("Ring buffer is full.");this.begin=this.wrap(this.begin-1),this.set(this.begin,e)}shift(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");const e=this.get(this.begin);return this.set(this.begin,void 0),this.begin=this.wrap(this.begin+1),e}shuffleExcise(e){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");const t=this.wrap(this.begin+e),n=this.get(t);return this.set(t,this.pop()),n}}class Fa extends Ra{constructor(){super(Fa.INITIAL_CAPACITY)}isFull(){return!1}push(e){super.isFull()&&this.expand(),super.push(e)}unshift(e){super.isFull()&&this.expand(),super.unshift(e)}expand(){const e=2*this.capacity,t=new Array(e),n=this.length();for(let r=0;r<n;r++)t[r]=this.get(this.wrap(this.begin+r));this.data=t,this.capacity=e,this.doubledCapacity=2*this.capacity,this.begin=0,this.end=n}}function Oa(e){return new Wa(e)}function Ma(e,t){return new Qa(e,t)}Fa.INITIAL_CAPACITY=32;class Ba{async toArray(){const e=[];let t=await this.next();for(;!t.done;)e.push(t.value),t=await this.next();return e}async toArrayForTest(){const e=this.prefetch(100),t=[];let n=await e.next();for(;!n.done;)t.push(n.value),n=await e.next();return t}async resolveFully(){let e=await this.next();for(;!e.done;)e=await this.next()}async resolveWhile(e){let t=await this.next(),n=e(t.value);for(;!t.done&&n;)t=await this.next(),n=e(t.value)}handleErrors(e){return new ja(this,e)}filter(e){return new Ga(this,e)}map(e){return new Ha(this,e)}mapAsync(e){return new Xa(this,e)}serialMapAsync(e){return new Xa(this,e).serial()}flatmap(e){return new Ka(this,e)}async forEachAsync(e){return this.map(e).resolveFully()}async serialForEach(e){return this.serialMapAsync(e).resolveWhile((e=>!0===e))}rowMajorBatch(e,t=!0){return new Va(this,e,t)}columnMajorBatch(e,t=!0,n=$a){return this.rowMajorBatch(e,t).map((e=>Ca(e,n)))}concatenate(e,t){return new Qa(new La([this,e]),t)}take(e){return e<0||null==e?this:new za(this,e)}skip(e){return e<0||null==e?this:new Ua(this,e)}prefetch(e){return new Ya(this,e)}shuffle(e,t){return new Za(this,e,t)}serial(){return new Pa(this)}}class La extends Ba{constructor(e){super(),this.items=e,this.trav=0}summary(){return`Array of ${this.items.length} items`}async next(){if(this.trav>=this.items.length)return{value:null,done:!0};const e=this.items[this.trav];return this.trav++,{value:Da(e),done:!1}}}class Wa extends Ba{constructor(e){super(),this.nextFn=e}summary(){return"Function call"}async next(){try{return this.nextFn()}catch(e){throw e.message=`Error thrown while iterating through a dataset: ${e.message}`,e}}}class Pa extends Ba{constructor(e){super(),this.upstream=e,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Serial`}async next(){return this.lastRead=this.lastRead.then((()=>this.serialNext())),this.lastRead}async serialNext(){return this.upstream.next()}}class Ua extends Ba{constructor(e,t){super(),this.upstream=e,this.maxCount=t,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Skip`}async next(){return this.lastRead=this.lastRead.then((()=>this.serialNext())),this.lastRead}async serialNext(){for(;this.count++<this.maxCount;){const e=await this.upstream.next();if(e.done)return e;s.B90(e.value)}return this.upstream.next()}}class za extends Ba{constructor(e,t){super(),this.upstream=e,this.maxCount=t,this.count=0}summary(){return`${this.upstream.summary()} -> Take`}async next(){return this.count++>=this.maxCount?{value:null,done:!0}:this.upstream.next()}}class Va extends Ba{constructor(e,t,n=!0){super(),this.upstream=e,this.batchSize=t,this.enableSmallLastBatch=n,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> RowMajorBatch`}async next(){return this.lastRead=this.lastRead.then((()=>this.serialNext())),this.lastRead}async serialNext(){const e=[];for(;e.length<this.batchSize;){const t=await this.upstream.next();if(t.done)return this.enableSmallLastBatch&&e.length>0?{value:e,done:!1}:{value:null,done:!0};e.push(t.value)}return{value:e,done:!1}}}class Ga extends Ba{constructor(e,t){super(),this.upstream=e,this.predicate=t,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Filter`}async next(){return this.lastRead=this.lastRead.then((()=>this.serialNext())),this.lastRead}async serialNext(){for(;;){const e=await this.upstream.next();if(e.done||this.predicate(e.value))return e;s.B90(e.value)}}}class Ha extends Ba{constructor(e,t){super(),this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> Map`}async next(){const e=await this.upstream.next();if(e.done)return{value:null,done:!0};const t=s.piX.getTensorsInContainer(e.value),n=this.transform(e.value),r=s.piX.getTensorsInContainer(n);for(const a of t)s.piX.isTensorInList(a,r)||a.dispose();return{value:n,done:!1}}}class ja extends Ba{constructor(e,t){super(),this.upstream=e,this.handler=t,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> handleErrors`}async next(){return this.lastRead=this.lastRead.then((()=>this.serialNext())),this.lastRead}async serialNext(){for(;;)try{return await this.upstream.next()}catch(e){if(!this.handler(e))return{value:null,done:!0}}}}class Xa extends Ba{constructor(e,t){super(),this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> AsyncMap`}async next(){const e=await this.upstream.next();if(e.done)return{value:null,done:!0};const t=s.piX.getTensorsInContainer(e.value),n=await this.transform(e.value),r=s.piX.getTensorsInContainer(n);for(const a of t)s.piX.isTensorInList(a,r)||a.dispose();return{value:n,done:!1}}}class qa extends Ba{constructor(){super(),this.outputQueue=new Fa,this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then((()=>this.serialNext())),this.lastRead}async serialNext(){for(;0===this.outputQueue.length();)if(!(await this.pump()))return{value:null,done:!0};return{value:this.outputQueue.shift(),done:!1}}}class Ka extends qa{constructor(e,t){super(),this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> Flatmap`}async pump(){const e=await this.upstream.next();if(e.done)return!1;const t=s.piX.getTensorsInContainer(e.value),n=this.transform(e.value),r=s.piX.getTensorsInContainer(n);this.outputQueue.pushAll(n);for(const a of t)s.piX.isTensorInList(a,r)||a.dispose();return!0}}class Qa extends Ba{constructor(e,t){super(),this.baseErrorHandler=t,this.lastRead=null,this.iterator=null,this.moreIterators=e}summary(){return"TODO: fill in upstream of chained summaries -> Chained"}async next(){return this.lastRead=this.readFromChain(this.lastRead),this.lastRead}async readFromChain(e){if(await e,null==this.iterator){const e=await this.moreIterators.next();if(e.done)return{value:null,done:!0};this.iterator=e.value,null!=this.baseErrorHandler&&(this.iterator=this.iterator.handleErrors(this.baseErrorHandler))}const t=await this.iterator.next();return t.done?(this.iterator=null,this.readFromChain(e)):t}}
1!function(e){e[e.FAIL=0]="FAIL",e[e.SHORTEST=1]="SHORTEST",e[e.LONGEST=2]="LONGEST"}(ka||(ka={}));class Ya extends Ba{constructor(e,t){super(),this.upstream=e,this.bufferSize=t,this.buffer=new Ra(t)}summary(){return`${this.upstream.summary()} -> Prefetch`}refill(){for(;!this.buffer.isFull();){const e=this.upstream.next();this.buffer.push(e)}}next(){return this.refill(),this.buffer.shift()}}class Za extends Ya{constructor(e,t,n){super(e,t),this.upstream=e,this.windowSize=t,this.upstreamExhausted=!1,this.random=Sa.alea(n||s.D5U.now().toString()),this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then((()=>this.serialNext())),this.lastRead}randomInt(e){return Math.floor(this.random()*e)}chooseIndex(){return this.randomInt(this.buffer.length())}async serialNext(){for(this.upstreamExhausted||this.refill();!this.buffer.isEmpty();){const e=this.chooseIndex(),t=await this.buffer.shuffleExcise(e);if(!t.done)return this.refill(),t;this.upstreamExhausted=!0}return{value:null,done:!0}}}class Ja{constructor(){this.size=null}batch(e,t=!0){const n=this;let r;return s.D5U.assert(e>0,(()=>`batchSize needs to be positive, but it is\n      ${e}`)),r=this.size===1/0||null==this.size?this.size:t?Math.ceil(this.size/e):Math.floor(this.size/e),eo((async()=>(await n.iterator()).columnMajorBatch(e,t,to)),r)}concatenate(e){const t=this;let n;return n=this.size===1/0||e.size===1/0?1/0:null!=this.size&&null!=e.size?this.size+e.size:null,eo((async()=>(await t.iterator()).concatenate(await e.iterator())),n)}filter(e){const t=this;let n;return n=this.size===1/0?1/0:null,eo((async()=>(await t.iterator()).filter((t=>s.lub((()=>e(t)))))),n)}async forEachAsync(e){return(await this.iterator()).forEachAsync(e)}map(e){const t=this;return eo((async()=>(await t.iterator()).map((t=>s.lub((()=>e(t)))))),this.size)}mapAsync(e){const t=this;return eo((async()=>(await t.iterator()).mapAsync(e)),this.size)}prefetch(e){if(null==e)throw new RangeError("`Dataset.prefetch()` requires bufferSize to be specified.");const t=this;return eo((async()=>(await t.iterator()).prefetch(e)),this.size)}repeat(e){const t=this;let n;return n=null!=this.size&&e>0?this.size*e:0===e?0:null!=this.size&&(void 0===e||e<0)?1/0:null,eo((async()=>Ma(Oa((async()=>({value:await t.iterator(),done:!1}))).take(e))),n)}skip(e){const t=this;let n;return n=null!=this.size&&e>=0&&this.size>=e?this.size-e:null!=this.size&&(this.size<e||void 0===e||e<0)?0:null,eo((async()=>(await t.iterator()).skip(e)),n)}shuffle(e,t,n=!0){if(null==e||e<0)throw null==this.size?new RangeError("`Dataset.shuffle()` requires bufferSize to be specified."):new RangeError(`\`Dataset.shuffle()\` requires bufferSize to be specified.  If your data fits in main memory (for regular JS objects), and/or GPU memory (for \`tf.Tensor\`s), consider setting bufferSize to the dataset size (${this.size} elements)`);const r=this,a=Sa.alea(t||s.D5U.now().toString());return eo((async()=>{let t=a.int32();return n&&(t+=a.int32()),(await r.iterator()).shuffle(e,t.toString())}),this.size)}take(e){const t=this;let n;return n=null!=this.size&&this.size>e?e:null!=this.size&&this.size<=e?this.size:null,eo((async()=>(await t.iterator()).take(e)),n)}async toArray(){if(this.size===1/0)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArray()}async toArrayForTest(){if(this.size===1/0)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArrayForTest()}}function eo(e,t=null){return new class extends Ja{constructor(){super(...arguments),this.size=t}async iterator(){return e()}}}function to(e){if(null===e)return null;if(function(e){return null==e||null===(t=e)||"object"!==typeof t&&"function"!==typeof t||Array.isArray(e)||"object"===typeof e&&e instanceof s.esB||s.D5U.isTypedArray(e);var t}(e[0])){return{value:function(e){if(0===e.length)throw new Error("Can't make a batch of zero elements.");return e[0]instanceof s.esB?s.knu(e):s.XeE(e)}(e),recurse:!1}}return{value:null,recurse:!0}}Ja.MAX_BUFFER_SIZE=1e4;Symbol("out"),Symbol("field"),Symbol("quote"),Symbol("quoteafterquote"),Symbol("quoteinquote");n(8764).Buffer;function no(e,t){Array.isArray(e)||(e=[e]),e.forEach((e=>{null!=e&&s.D5U.assert("complex64"!==e.dtype,(()=>`${t} does not support complex64 tensors in the CPU backend.`))}))}const ro=s.GDt.ZA;class so extends s.Zuw{constructor(){super(),this.blockSize=48,this.firstUse=!0,this.data=new s.JLz(this,(0,s.SRH)())}nextDataId(){return so.nextDataId++}write(e,t,n){this.firstUse&&(this.firstUse=!1,(0,s.OBj)().get("IS_NODE")&&s.Wap.warn("\n============================\nHi, looks like you are running TensorFlow.js in Node.js. To speed things up dramatically, install our node backend, visit https://github.com/tensorflow/tfjs-node for more details. \n============================"));const r={id:this.nextDataId()};return this.data.set(r,{values:e,dtype:n,refCount:1}),r}makeTensorInfo(e,t,n){let r;if("string"===t&&null!=n&&n.length>0&&s.D5U.isString(n[0])){const a=n.map((e=>s.D5U.encodeString(e)));r=this.write(a,e,t)}else r=this.write(n,e,t);return{dataId:r,shape:e,dtype:t}}refCount(e){if(this.data.has(e)){return this.data.get(e).refCount}return 0}incRef(e){this.data.get(e).refCount++}decRef(e){if(this.data.has(e)){this.data.get(e).refCount--}}
1move(e,t,n,r,s){this.data.set(e,{values:t,dtype:r,refCount:s})}numDataIds(){return this.data.numDataIds()}async read(e){return this.readSync(e)}readSync(e){const{dtype:t,complexTensorInfos:n}=this.data.get(e);if("complex64"===t){const e=this.readSync(n.real.dataId),t=this.readSync(n.imag.dataId);return s.Wap.mergeRealAndImagArrays(e,t)}return this.data.get(e).values}bufferSync(e){const t=this.readSync(e.dataId);if("string"===e.dtype)try{const n=t.map((e=>s.D5U.decodeString(e)));return(0,s.f3b)(e.shape,e.dtype,n)}catch(n){throw new Error("Failed to decode encoded string bytes into utf-8")}return(0,s.f3b)(e.shape,e.dtype,t)}makeOutput(e,t,n){return(0,s.SRH)().makeTensorFromTensorInfo(this.makeTensorInfo(t,n,e),this)}disposeData(e,t=!1){if(this.data.has(e)){if(this.data.get(e).refCount--,!t&&this.data.get(e).refCount>0)return!1;const{complexTensorInfos:n}=this.data.get(e);null!=n&&(this.disposeData(n.real.dataId,!0),this.disposeData(n.imag.dataId,!0)),this.data.delete(e)}return!0}disposeIntermediateTensorInfo(e){this.disposeData(e.dataId)}async time(e){const t=s.D5U.now();e();return{kernelMs:s.D5U.now()-t}}memory(){return{unreliable:!0,reasons:["The reported memory is an upper bound. Due to automatic garbage collection, the true allocated memory may be less."]}}where(e){no([e],"where");const t=this.readSync(e.dataId);return ro(e.shape,t)}dispose(){}floatPrecision(){return 32}epsilon(){return super.epsilon()}}so.nextDataId=0;function ao(e,t,n){return({inputs:r,attrs:a,backend:o})=>{const{x:i}=r;if(no(i,e),"string"===i.dtype||"string"===n)throw new Error("unaryKernelFunc does not support string input/output");const u=o,l=u.data.get(i.dataId).values,c=s.D5U.sizeFromShape(i.shape),p=n||i.dtype,h=s.D5U.getArrayFromDType(p,c);for(let e=0;e<c;++e)h[e]=t(l[e],a);return u.makeTensorInfo(i.shape,p,h)}}function oo(e,t,n){return({inputs:r,attrs:s,backend:a})=>{const{x:o}=r;if(no(o,e),"string"===o.dtype||"string"===n)throw new Error("unaryKernelFunc does not support string input/output");const i=a,u=i.data.get(o.dataId).values,l=n||o.dtype,c=t(u,l,s);return i.makeTensorInfo(o.shape,l,c)}}(0,s.jqO)("cpu",(()=>new so),1);const io=ao(s.SX0,(e=>e>=0?e:Math.exp(e)-1)),uo={kernelName:s.SX0,backendName:"cpu",kernelFunc:io};function lo(e){const{inputs:t,backend:n}=e,{x:r}=t;return n.incRef(r.dataId),{dataId:r.dataId,shape:r.shape,dtype:r.dtype}}const co={kernelName:s.iJz,backendName:"cpu",kernelFunc:lo};function po(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{alpha:o}=r;no([a],"leakyRelu");const i=s.D5U.sizeFromShape(a.shape),u=n.data.get(a.dataId).values,l=s.D5U.getTypedArrayFromDType("float32",i);for(let s=0;s<u.length;s++)l[s]=u[s]<0?o*u[s]:u[s];return n.makeTensorInfo(a.shape,"float32",l)}const ho={kernelName:s.J$2,backendName:"cpu",kernelFunc:po};function fo(e){return(t,n,r,a,o)=>{const i=s.Wap.assertAndGetBroadcastShape(t,n),u=i.length,l=s.D5U.computeStrides(i),c=s.D5U.sizeFromShape(i),p=s.D5U.getTypedArrayFromDType(o,c),h=t.length,d=n.length,f=s.D5U.computeStrides(t),m=s.D5U.computeStrides(n),g=s.Wap.getBroadcastDims(t,i),y=s.Wap.getBroadcastDims(n,i);if(g.length+y.length===0)for(let s=0;s<p.length;++s)p[s]=e(r[s%r.length],a[s%a.length]);else for(let b=0;b<p.length;++b){const t=s.D5U.indexToLoc(b,u,l),n=t.slice(-h);g.forEach((e=>n[e]=0));const o=s.D5U.locToIndex(n,h,f),i=t.slice(-d);y.forEach((e=>i[e]=0));const c=s.D5U.locToIndex(i,d,m);p[b]=e(r[o],a[c])}return[p,i]}}const mo=fo(((e,t)=>e<0?t*e:e));function go(e){const{inputs:t,backend:n}=e,{x:r,alpha:s}=t;no([r,s],"prelu");const a=n.data.get(r.dataId).values,o=n.data.get(s.dataId).values,[i,u]=mo(r.shape,s.shape,a,o,"float32");return n.makeTensorInfo(u,"float32",i)}const yo={kernelName:s.o0g,backendName:"cpu",kernelFunc:go},bo=ao(s.qkr,(e=>Math.max(0,e))),xo={kernelName:s.qkr,backendName:"cpu",kernelFunc:bo},wo=ao(s.SbG,(e=>Math.min(Math.max(0,e),6))),vo={kernelName:s.SbG,backendName:"cpu",kernelFunc:wo};function ko(e){return(t,n,r)=>{const a=s.D5U.getTypedArrayFromDType(n,t.length);for(let s=0;s<t.length;++s)a[s]=e(t[s],r);return a}}const Io=ko((e=>1/(1+Math.exp(-e)))),No=ao(s.a5O,(e=>1/(1+Math.exp(-e)))),So={kernelName:s.a5O,backendName:"cpu",kernelFunc:No};
vendor: 112,026 bytes, line 1
1function To(e,t,n,r,s){if("linear"===n)return lo({inputs:{x:t},backend:e});if("relu"===n)return bo({inputs:{x:t},backend:e});if("elu"===n)return io({inputs:{x:t},backend:e});if("relu6"===n)return wo({inputs:{x:t},backend:e});if("prelu"===n)return go({inputs:{x:t,alpha:r},backend:e});if("leakyrelu"===n)return po({inputs:{x:t},backend:e,attrs:{alpha:s}});if("sigmoid"===n)return No({inputs:{x:t},backend:e});throw new Error(`Activation ${n} has not been implemented for the CPU backend.`)}function Co(e){const{inputs:t,backend:n}=e,{real:r,imag:s}=t,a=n.data.get(r.dataId).values,o=n.data.get(s.dataId).values,i=n.makeTensorInfo(r.shape,"complex64");return n.data.get(i.dataId).complexTensorInfos={real:n.makeTensorInfo(r.shape,"float32",a),imag:n.makeTensorInfo(s.shape,"float32",o)},i}const Eo={kernelName:s.Zz9,backendName:"cpu",kernelFunc:Co};function $o(e,t,n="float32"){if("complex64"===n){return Co({inputs:{real:$o(e,t,"float32"),imag:$o(e,t,"float32")},backend:e})}const r=s.D5U.makeZerosTypedArray(s.D5U.sizeFromShape(t),n);return e.makeTensorInfo(t,n,r)}function Ao(e){const{inputs:t,backend:n}=e,{input:r}=t,s=n.data.get(r.dataId).complexTensorInfos.real,a=n.data.get(s.dataId).values;return n.makeTensorInfo(s.shape,s.dtype,a)}const Do={kernelName:s.xJR,backendName:"cpu",kernelFunc:Ao};function _o(e,t,n,r){if("int32"===r){return[t,"int32",Int32Array.from(e)]}if("bool"===r){const r=s.D5U.toTypedArray([0],n),[a,o]=fo(((e,t)=>e!==t?1:0))(t,[],e,r,"bool");return[o,"bool",a]}throw new Error(`Error in Cast: failed to cast ${n} to ${r}`)}function Ro(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dtype:o}=r;if("complex64"===o){if("complex64"===a.dtype)return lo({inputs:{x:a},backend:n});const e=$o(n,a.shape,a.dtype),t=Ro({inputs:{x:a},backend:n,attrs:{dtype:"float32"}}),r=Co({inputs:{real:t,imag:e},backend:n});return n.disposeIntermediateTensorInfo(e),n.disposeIntermediateTensorInfo(t),r}if("complex64"===a.dtype){const e=Ao({inputs:{input:a},backend:n}),t=Ro({inputs:{x:e},backend:n,attrs:{dtype:o}});return n.disposeIntermediateTensorInfo(e),t}if(!s.D5U.hasEncodingLoss(a.dtype,o)){const e=lo({inputs:{x:a},backend:n});return{dataId:e.dataId,shape:e.shape,dtype:o}}const i=n.data.get(a.dataId).values,[u,l,c]=_o(i,a.shape,a.dtype,o);return n.makeTensorInfo(u,l,c)}const Fo={kernelName:s.RFZ,backendName:"cpu",kernelFunc:Ro};function Oo(e,t,n,r){return null==n?({inputs:n,backend:a})=>{const{a:o,b:i}=n,u=a;no([o,i],e);const l=u.data.get(o.dataId).values,c=u.data.get(i.dataId).values,p="string"===o.dtype?s.Wap.fromUint8ToStringArray(l):l,h="string"===o.dtype?s.Wap.fromUint8ToStringArray(c):c,d=r||o.dtype,[f,m]=t(o.shape,i.shape,p,h,d);return u.makeTensorInfo(m,d,f)}:({inputs:e,backend:s})=>{const{a:a,b:o}=e,i=s;if("complex64"===a.dtype||"complex64"===o.dtype){const e=Ro({inputs:{x:a},backend:i,attrs:{dtype:"complex64"}}),t=i.data.get(e.dataId),r=t.complexTensorInfos.real,s=t.complexTensorInfos.imag,u=i.data.get(r.dataId).values,l=i.data.get(s.dataId).values,c=Ro({inputs:{x:o},backend:i,attrs:{dtype:"complex64"}}),p=i.data.get(c.dataId),h=p.complexTensorInfos.real,d=p.complexTensorInfos.imag,f=i.data.get(h.dataId).values,m=i.data.get(d.dataId).values,[g,y,b]=n(a.shape,o.shape,u,l,f,m),x=i.makeTensorInfo(b,"float32",g),w=i.makeTensorInfo(b,"float32",y),v=Co({inputs:{real:x,imag:w},backend:i});return i.disposeIntermediateTensorInfo(e),i.disposeIntermediateTensorInfo(c),i.disposeIntermediateTensorInfo(x),i.disposeIntermediateTensorInfo(w),v}{const e=i.data.get(a.dataId).values,n=i.data.get(o.dataId).values,s=r||a.dtype,[u,l]=t(a.shape,o.shape,e,n,s);return i.makeTensorInfo(l,s,u)}}}function Mo(e){return(t,n,r,a,o,i)=>{const u=s.Wap.assertAndGetBroadcastShape(t,n),l=s.D5U.sizeFromShape(u),c=u.length,p=s.D5U.computeStrides(u),h=s.D5U.getTypedArrayFromDType("float32",l),d=s.D5U.getTypedArrayFromDType("float32",l),f=s.Wap.getBroadcastDims(t,u),m=s.Wap.getBroadcastDims(n,u),g=s.Wap.mergeRealAndImagArrays(r,a),y=s.Wap.mergeRealAndImagArrays(o,i),b=t.length,x=s.D5U.computeStrides(t),w=n.length,v=s.D5U.computeStrides(n);if(f.length+m.length===0)for(let s=0;s<h.length;s++){const t=s%g.length,n=s%y.length,r=e(g[2*t],g[2*t+1],y[2*n],y[2*n+1]);h[s]=r.real,d[s]=r.imag}else for(let k=0;k<h.length;k++){const t=s.D5U.indexToLoc(k,c,p),n=t.slice(-b);f.forEach((e=>n[e]=0));const r=s.D5U.locToIndex(n,b,x),a=t.slice(-w);m.forEach((e=>a[e]=0));const o=s.D5U.locToIndex(a,w,v),i=e(g[2*r],g[2*r+1],y[2*o],y[2*o+1]);h[k]=i.real,d[k]=i.imag}return[h,d,u]}}const Bo=fo(((e,t)=>e+t)),Lo=Mo(((e,t,n,r)=>({real:e+n,imag:t+r}))),Wo=Oo(s.mm_,Bo,Lo),Po={kernelName:s.mm_,backendName:"cpu",kernelFunc:Wo};function Uo(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{shape:o}=r,i=s.D5U.sizeFromShape(a.shape),u=s.D5U.inferFromImplicitShape(o,i),l=s.D5U.sizeFromShape(u);s.D5U.assert(i===l,(()=>`The new shape (${u}) has ${l} elements and the old shape (${a.shape}) has ${i} elements. The new shape and old shape must have the same number of elements.`)),n.incRef(a.dataId);const c=n.data.get(a.dataId);if(null!=c.complexTensorInfos){const e=c.complexTensorInfos.real,t=c.complexTensorInfos.imag;e.shape=u,t.shape=u}return{dataId:a.dataId,shape:u,dtype:a.dtype}}const zo={kernelName:s.HZH,backendName:"cpu",kernelFunc:Uo};function Vo(e){const{inputs:t,backend:n,attrs:r}=e,{a:a,b:o}=t,{transposeA:i,transposeB:u}=r;no([a,o],"matMul");const l=a.shape.length,c=o.shape.length,p=i?a.shape[l-2]:a.shape[l-1],h=u?o.shape[c-1]:o.shape[c-2],d=i?a.shape[l-1]:a.shape[l-2],f=u?o.shape[c-2]:o.shape[c-1],m=a.shape.slice(0,-2),g=o.shape.slice(0,-2),y=s.D5U.sizeFromShape(m),b=s.D5U.sizeFromShape(g),x=s.Jyw.assertAndGetBroadcastShape(a.shape.slice(0,-2),o.shape.slice(0,-2)).concat([d,f]);s.D5U.assert(p===h,(()=>`Error in matMul: inner shapes (${p}) and (${h}) of Tensors with shapes ${a.shape} and ${o.shape} and transposeA=${i} and transposeB=${u} must match.`));const w=u?[b,f,h]:[b,h,f],v=Uo({inputs:{x:a},backend:n,attrs:{shape:i?[y,p,d]:[y,d,p]}}),k=Uo({inputs:{x:o},backend:n,attrs:{shape:w}}),I=i?v.shape[1]:v.shape[2],N=i?v.shape[2]:v.shape[1],S=u?k.shape[1]:k.shape[2],T=Math.max(y,b),C=n.data.get(v.dataId).values,E=n.data.get(k.dataId).values,$=s.D5U.computeStrides(v.shape),A=s.D5U.computeStrides(k.shape),[D,_,R]=i?[$[0],1,$[1]]:[$[0],$[1],1],[F,O,M]=u?[1,A[1],A[0]]:[A[1],1,A[0]],B=N*S,L=(0,s.f3b)([T,N,S],v.dtype),W=L.values,P=n.blockSize;for(let s=0;s<T;s++)for(let e=0;e<N;e+=P)for(let t=0;t<S;t+=P)for(let n=0;n<I;n+=P){const r=Math.min(e+P,N),a=Math.min(t+P,S),o=Math.min(n+P,I);for(let i=e;i<r;i++)for(let e=t;e<a;e++){let t=0;for(let r=n;r<o;r++){const n=Math.min(s,y-1)*D,a=Math.min(s,b-1)*M;t+=C[n+i*_+r*R]*E[r*F+e*O+a]}W[s*B+(i*S+e)]+=t}}return n.disposeIntermediateTensorInfo(v),n.disposeIntermediateTensorInfo(k),n.makeTensorInfo(x,L.dtype,L.values)}const Go={kernelName:s.XLW,backendName:"cpu",kernelFunc:Vo};const Ho={kernelName:s.usg,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{a:s,b:a,bias:o,preluActivationWeights:i}=t,{transposeA:u,transposeB:l,activation:c,leakyreluAlpha:p}=r;let h,d,f;const m=[];h=Vo({inputs:{a:s,b:a},attrs:{transposeA:u,transposeB:l},backend:n}),o&&(d=Wo({inputs:{a:h,b:o},backend:n}),m.push(h),h=d),c&&(f=To(n,h,c,i,p),m.push(h),h=f);for(const g of m)n.disposeIntermediateTensorInfo(g);return h}};function jo(e){const t=new Float32Array(e.length);for(let n=0;n<e.length;++n)t[n]=Math.abs(e[n]);return t}const Xo={kernelName:s.SYM,backendName:"cpu",kernelFunc:e=>{const{x:t}=e.inputs,n=e.backend;no(t,"abs");let r=new Float32Array(s.D5U.sizeFromShape(t.shape));return r=jo(n.data.get(t.dataId).values),n.makeOutput(r,t.shape,t.dtype)}},qo=ao(s.VGw,(e=>Math.acos(e))),Ko={kernelName:s.VGw,backendName:"cpu",kernelFunc:qo},Qo=ao(s.SpW,(e=>Math.acosh(e))),Yo={kernelName:s.SpW,backendName:"cpu",kernelFunc:Qo};const Zo={kernelName:s.Xze,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n}=e,r=t;no(t,"addN");const a=r.map((e=>n.data.get(e.dataId).values)),o=(0,s.f3b)(r[0].shape,r[0].dtype),i=o.values;for(let s=0;s<r.length;s++){const e=a[s];for(let t=0;t<i.length;t++)i[t]+=e[t]}return n.makeTensorInfo(o.shape,o.dtype,o.values)}};function Jo(e,t,n,r,a){const o=t.length,i=s.D5U.sizeFromShape(t),u=s.D5U.computeStrides(t),l=s.D5U.computeStrides(a),c=s.D5U.getTypedArrayFromDType(n,s.D5U.sizeFromShape(a));for(let p=0;p<i;++p){const t=s.D5U.indexToLoc(p,o,u),n=new Array(t.length);for(let e=0;e<n.length;e++)n[e]=t[r[e]];c[s.D5U.locToIndex(n,o,l)]=e[p]}return c}function ei(e){const{inputs:t,attrs:n,backend:r}=e,{x:s}=t,{perm:a}=n;no(s,"transpose");const o=s.shape.length,i=new Array(o);for(let l=0;l<i.length;l++)i[l]=s.shape[a[l]];const u=Jo(r.data.get(s.dataId).values,s.shape,s.dtype,a,i);return{dataId:r.write(u,i,s.dtype),shape:i,dtype:s.dtype}}const ti={kernelName:s.G3Y,backendName:"cpu",kernelFunc:ei};const ni={kernelName:s.oT6,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:o,keepDims:i}=r;no(a,"all");const u=s.D5U.parseAxisParam(o,a.shape);let l=u;const c=s.Wap.getAxesPermutation(l,a.shape.length);let p=a;null!=c&&(p=ei({inputs:{x:a},backend:n,attrs:{perm:c}}),l=s.Wap.getInnerMostAxes(l.length,a.shape.length)),s.Wap.assertAxesAreInnerMostDims("all",l,p.shape.length);const[h,d]=s.Wap.computeOutAndReduceShapes(p.shape,l),f=s.D5U.sizeFromShape(d),m=s.D5U.makeZerosTypedArray(s.D5U.sizeFromShape(h),p.dtype),g=n.data.get(p.dataId).values;for(let s=0;s<m.length;++s){const e=s*f;let t=g[e];for(let n=0;n<f;++n){const r=g[e+n];t=t&&r}m[s]=t}null!=c&&n.disposeIntermediateTensorInfo(p);const y=n.makeTensorInfo(h,p.dtype,m);if(i){const e=Uo({inputs:{x:y},backend:n,attrs:{shape:s.Wap.expandShapeToKeepDim(h,u)}});return n.disposeIntermediateTensorInfo(y),e}return y}};const ri={kernelName:s.IKK,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:o,keepDims:i}=r;no(a,"any");const u=s.D5U.parseAxisParam(o,a.shape);let l=u;const c=s.Wap.getAxesPermutation(l,a.shape.length);let p=a;null!=c&&(p=ei({inputs:{x:a},backend:n,attrs:{perm:c}}),l=s.Wap.getInnerMostAxes(l.length,a.shape.length)),s.Wap.assertAxesAreInnerMostDims("any",l,p.shape.length);const[h,d]=s.Wap.computeOutAndReduceShapes(p.shape,l),f=s.D5U.sizeFromShape(d),m=s.D5U.makeZerosTypedArray(s.D5U.sizeFromShape(h),p.dtype),g=n.data.get(p.dataId).values;for(let s=0;s<m.length;++s){const e=s*f;let t=g[e];for(let n=0;n<f;++n){const r=g[e+n];t=t||r}m[s]=t}null!=c&&n.disposeIntermediateTensorInfo(p);const y=n.makeTensorInfo(h,p.dtype,m);if(i){const e=Uo({inputs:{x:y},backend:n,attrs:{shape:s.Wap.expandShapeToKeepDim(h,u)}});return n.disposeIntermediateTensorInfo(y),e}return y}};const si={kernelName:s.sJF,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:o}=r;no(a,"argMax");let i=s.D5U.parseAxisParam(o,a.shape);const u=s.Wap.getAxesPermutation(i,a.shape.length);let l=a;const c=[];null!=u&&(l=ei({inputs:{x:a},backend:n,attrs:{perm:u}}),c.push(l),i=s.Wap.getInnerMostAxes(i.length,l.shape.length)),i=[i[0]],s.Wap.assertAxesAreInnerMostDims("argMax",i,l.shape.length);const[p,h]=s.Wap.computeOutAndReduceShapes(l.shape,i),d=s.D5U.sizeFromShape(p),f=s.D5U.makeZerosTypedArray(d,"int32"),m=s.D5U.sizeFromShape(h),g=n.data.get(l.dataId).values;for(let s=0;s<f.length;++s){const e=s*m;let t=g[e],n=0;for(let r=0;r<m;++r){const s=g[e+r];s>t&&(t=s,n=r)}f[s]=n}return c.forEach((e=>n.disposeIntermediateTensorInfo(e))),n.makeTensorInfo(p,"int32",f)}};const ai={kernelName:s.aJk,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:o}=r;no(a,"argMin");let i=s.D5U.parseAxisParam(o,a.shape);const u=s.Wap.getAxesPermutation(i,a.shape.length);let l=a;const c=[];null!=u&&(l=ei({inputs:{x:a},backend:n,attrs:{perm:u}}),c.push(l),i=s.Wap.getInnerMostAxes(i.length,l.shape.length)),i=[i[0]],s.Wap.assertAxesAreInnerMostDims("argMin",i,l.shape.length);const[p,h]=s.Wap.computeOutAndReduceShapes(l.shape,i),d=s.D5U.sizeFromShape(p),f=s.D5U.makeZerosTypedArray(d,"int32"),m=s.D5U.sizeFromShape(h),g=n.data.get(l.dataId).values;for(let s=0;s<f.length;++s){const e=s*m;let t=g[e],n=0;for(let r=0;r<m;++r){const s=g[e+r];s<t&&(t=s,n=r)}f[s]=n}return c.forEach((e=>n.disposeIntermediateTensorInfo(e))),n.makeTensorInfo(p,"int32",f)}},oi=ao(s.M2y,(e=>Math.asin(e))),ii={kernelName:s.M2y,backendName:"cpu",kernelFunc:oi},ui=ao(s.qw7,(e=>Math.asinh(e))),li={kernelName:s.qw7,backendName:"cpu",kernelFunc:ui},ci=ao(s.jMg,(e=>Math.atan(e))),pi={kernelName:s.jMg,backendName:"cpu",kernelFunc:ci},hi=fo(((e,t)=>Math.atan2(e,t))),di=Oo(s.QCc,hi),fi={kernelName:s.QCc,backendName:"cpu",kernelFunc:di},mi=ao(s.Oyi,(e=>Math.atanh(e))),gi={kernelName:s.Oyi,backendName:"cpu",kernelFunc:mi};function yi(e,t,n,r,a,o){const i=a.strideHeight,u=a.strideWidth,l=a.dilationHeight,c=a.dilationWidth,p=a.effectiveFilterHeight,h=a.effectiveFilterWidth,d=a.padInfo.top,f=a.padInfo.left,m="max"===o?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,g=(0,s.f3b)(a.outShape,n),y=g.values,b=a.outShape[1]*a.outShape[2]*a.outShape[3],x=a.outShape[2]*a.outShape[3],w=a.outShape[3];for(let s=0;s<a.batchSize;++s){const t=s*b,n=s*r[0];for(let s=0;s<a.inChannels;++s)for(let g=0;g<a.outHeight;++g){const b=g*i-d,v=Math.max(0,b),k=Math.min(a.inHeight,p+b),I=t+g*x;for(let t=0;t<a.outWidth;++t){const i=t*u-f,p=Math.max(0,i),d=Math.min(a.inWidth,h+i);let g=m,b=0,x=0;for(let t=v;t<k;t+=l){const a=n+t*r[1];for(let t=p;t<d;t+=c){const n=e[a+t*r[2]+s];"max"===o&&n>g?g=n:"avg"===o&&(b+=n,x++)}if(isNaN(g))break}y[I+t*w+s]="avg"===o?b/x:g}}}return g}function bi(e,t,n,r,a=!1,o=!1){const i=(0,s.f3b)(r.outShape,"int32"),u=r.strideHeight,l=r.strideWidth,c=r.dilationHeight,p=r.dilationWidth,h=r.effectiveFilterHeight,d=r.effectiveFilterWidth,f=r.padInfo.top,m=r.padInfo.left,g=(0,s.f3b)(t,n,e);for(let s=0;s<r.batchSize;++s)for(let e=0;e<r.inChannels;++e)for(let t=0;t<r.outHeight;++t){const n=t*u-f;let y=n;for(;y<0;)y+=c;const b=Math.min(r.inHeight,h+n);for(let u=0;u<r.outWidth;++u){const h=u*l-m;let f=h;for(;f<0;)f+=p;const x=Math.min(r.inWidth,d+h);let w=Number.NEGATIVE_INFINITY,v=-1;for(let t=y;t<b;t+=c){const i=t-n;for(let n=f;n<x;n+=p){const u=n-h,l=g.get(s,t,n,e);l>w&&(w=l,v=a?o?((s*r.inHeight+t)*r.inWidth+n)*r.inChannels+e:(t*r.inWidth+n)*r.inChannels+e:i*d+u)}}i.set(v,s,t,u,e)}}return i}function xi(e,t,n,r,a,o){const i=a.strideDepth,u=a.strideHeight,l=a.strideWidth,c=a.dilationDepth,p=a.dilationHeight,h=a.dilationWidth,d=a.effectiveFilterDepth,f=a.effectiveFilterHeight,m=a.effectiveFilterWidth,g=a.padInfo.front,y=a.padInfo.top,b=a.padInfo.left,x="max"===o?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,w=(0,s.f3b)(a.outShape,n),v=w.values,k=a.outShape[1]*a.outShape[2]*a.outShape[3]*a.outShape[4],I=a.outShape[2]*a.outShape[3]*a.outShape[4],N=a.outShape[3]*a.outShape[4],S=a.outShape[4];for(let s=0;s<a.batchSize;++s){const t=s*k,n=s*r[0];for(let s=0;s<a.inChannels;++s)for(let w=0;w<a.outDepth;++w){const k=w*i-g;let T=k;for(;T<0;)T+=c;const C=Math.min(a.inDepth,d+k),E=t+w*I;for(let t=0;t<a.outHeight;++t){const i=t*u-y;let d=i;for(;d<0;)d+=p;const g=Math.min(a.inHeight,f+i),w=E+t*N;for(let t=0;t<a.outWidth;++t){const i=t*l-b;let u=i;for(;u<0;)u+=h;const f=Math.min(a.inWidth,m+i),y=w+t*S;let k=x,I=0,N=0;for(let t=T;t<C;t+=c){const a=n+t*r[1];for(let t=d;t<g;t+=p){const n=a+t*r[2];for(let t=u;t<f;t+=h){const a=e[n+t*r[3]+s];if("max"===o&&a>k?k=a:"avg"===o&&(I+=a,N++),isNaN(k))break}if(isNaN(k))break}if(isNaN(k))break}v[y+s]="avg"===o?I/N:k}}}}return w}const wi={kernelName:s.JhU,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t;no(a,"avgPool");const{filterSize:o,strides:i,pad:u,dimRoundingMode:l}=r;s.D5U.assert(s.Wap.eitherStridesOrDilationsAreOne(i,1),(()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${i} and dilations '1'`));const c=s.Wap.computePool2DInfo(a.shape,o,i,1,u,l);let p;if(1===c.filterWidth&&1===c.filterHeight&&s.D5U.arraysEqual(c.inShape,c.outShape))p=lo({inputs:{x:a},backend:n});else{const e=n.data.get(a.dataId).values,t=s.D5U.computeStrides(a.shape),r=yi(e,a.shape,a.dtype,t,c,"avg");p=n.makeTensorInfo(c.outShape,a.dtype,r.values)}return p}};const vi={kernelName:s._k9,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{filterSize:o,strides:i,pad:u,dimRoundingMode:l,dataFormat:c}=r;no(a,"avgPool3d");const p=s.Wap.computePool3DInfo(a.shape,o,i,1,u,l,c),h=xi(n.data.get(a.dataId).values,a.shape,a.dtype,s.D5U.computeStrides(a.shape),p,"avg");return n.makeTensorInfo(h.shape,"float32",h.values)}};const ki={kernelName:s.IMb,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{dy:a,input:o}=t,{filterSize:i,strides:u,pad:l,dimRoundingMode:c}=r;no([a,o],"avgPool3DGrad");const p=s.Wap.computePool3DInfo(o.shape,i,u,1,l,c),h=p.strideDepth,d=p.strideHeight,f=p.strideWidth,m=p.filterDepth,g=p.filterHeight,y=p.filterWidth,b=p.dilationDepth,x=p.dilationHeight,w=p.dilationWidth,v=p.effectiveFilterDepth,k=p.effectiveFilterHeight,I=p.effectiveFilterWidth,N=v-1-p.padInfo.front,S=I-1-p.padInfo.left,T=k-1-p.padInfo.top,C=(0,s.f3b)(o.shape,"float32"),E=1/(m*g*y),$=n.bufferSync(a);for(let s=0;s<p.batchSize;++s)for(let e=0;e<p.inChannels;++e)for(let t=0;t<p.inDepth;++t)for(let n=0;n<p.inHeight;++n)for(let r=0;r<p.inWidth;++r){const a=t-N,o=n-T,i=r-S;let u=0;for(let t=0;t<v;t+=b){const n=(a+t)/h;if(!(n<0||n>=p.outDepth||Math.floor(n)!==n))for(let t=0;t<k;t+=x){const r=(o+t)/d;if(!(r<0||r>=p.outHeight||Math.floor(r)!==r))for(let t=0;t<I;t+=w){const a=(i+t)/f;if(a<0||a>=p.outWidth||Math.floor(a)!==a)continue;u+=$.get(s,n,r,a,e)}}}C.set(u*E,s,t,n,r,e)}return n.makeTensorInfo(C.shape,C.dtype,C.values)}};const Ii={kernelName:s.ROF,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{dy:a,input:o}=t,i=o;no([a,o],"avgPoolGrad");const{filterSize:u,strides:l,pad:c}=r,p=s.Wap.computePool2DInfo(i.shape,u,l,1,c),h=p.strideHeight,d=p.strideWidth,f=p.filterHeight,m=p.filterWidth,g=p.dilationHeight,y=p.dilationWidth,b=p.effectiveFilterHeight,x=p.effectiveFilterWidth,w=x-1-p.padInfo.left,v=b-1-p.padInfo.top,k=(0,s.f3b)(i.shape,"float32"),I=1/(f*m),N=n.data.get(a.dataId).values,S=(0,s.f3b)(a.shape,"float32",N);for(let s=0;s<p.batchSize;++s)for(let e=0;e<p.inChannels;++e)for(let t=0;t<p.inHeight;++t)for(let n=0;n<p.inWidth;++n){const r=t-v,a=n-w;let o=0;for(let t=0;t<b;t+=g){const n=(r+t)/h;if(!(n<0||n>=p.outHeight||Math.floor(n)!==n))for(let t=0;t<x;t+=y){const r=(a+t)/d;if(r<0||r>=p.outWidth||Math.floor(r)!==r)continue;o+=S.get(s,n,r,e)}}k.set(o*I,s,t,n,e)}return n.makeTensorInfo(k.shape,k.dtype,k.values)}};const Ni={kernelName:s.sHE,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a,scale:o,offset:i,mean:u,variance:l}=t;s.D5U.assert(u.shape.length===l.shape.length,(()=>"Batch normalization gradient requires mean and variance to have equal ranks.")),s.D5U.assert(null==i||u.shape.length===i.shape.length,(()=>"Batch normalization gradient requires mean and offset to have equal ranks.")),s.D5U.assert(null==o||u.shape.length===o.shape.length,(()=>"Batch normalization gradient requires mean and scale to have equal ranks.")),no([a,u,l,o,i],"batchNorm");let{varianceEpsilon:c}=r;null==c&&(c=.001);const p=n.data.get(a.dataId).values,h=n.data.get(u.dataId).values,d=n.data.get(l.dataId).values,f=o?n.data.get(o.dataId).values:new Float32Array([1]),m=i?n.data.get(i.dataId).values:new Float32Array([0]),g=new Float32Array(p.length),y=m.length,b=f.length,x=d.length,w=h.length;let v=0,k=0,I=0,N=0;for(let s=0;s<p.length;++s)g[s]=m[v++]+(p[s]-h[k++])*f[I++]/Math.sqrt(d[N++]+c),v>=y&&(v=0),k>=w&&(k=0),I>=b&&(I=0),N>=x&&(N=0);return n.makeTensorInfo(a.shape,a.dtype,g)}};function Si(e,t,n,r,a){const o=s.kuN.isSliceContinous(r,t,n),i=s.D5U.sizeFromShape(n),u=s.D5U.computeStrides(r);if(o){const n=s.kuN.computeFlatOffset(t,u);return"string"===a?e.slice(n,n+i):e.subarray(n,n+i)}const l="string"===a?s.Wap.fromUint8ToStringArray(e):e,c=(0,s.f3b)(r,a,l),p=(0,s.f3b)(n,a);for(let s=0;s<p.size;++s){const e=p.indexToLoc(s),n=e.map(((e,n)=>e+t[n]));p.set(c.get(...n),...e)}return"string"===a?s.Wap.fromStringArrayToUint8(p.values):p.values}function Ti(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{begin:o,size:i}=r;no(a,"slice");const[u,l]=s.kuN.parseSliceParams(a,o,i);s.kuN.assertParamsValid(a,u,l);const c=Si(n.data.get(a.dataId).values,u,l,a.shape,a.dtype);return n.makeTensorInfo(l,a.dtype,c)}const Ci={kernelName:s.p2w,backendName:"cpu",kernelFunc:Ti};const Ei={kernelName:s.zws,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{blockShape:o,crops:i}=r;no([a],"batchToSpaceND");const u=o.reduce(((e,t)=>e*t)),l=s.Wap.getReshaped(a.shape,o,u),c=s.Wap.getPermuted(l.length,o.length),p=s.Wap.getReshapedPermuted(a.shape,o,u),h=s.Wap.getSliceBeginCoords(i,o.length),d=s.Wap.getSliceSize(p,i,o.length),f=Uo({inputs:{x:a},backend:n,attrs:{shape:l}}),m=ei({inputs:{x:f},backend:n,attrs:{perm:c}}),g=Uo({inputs:{x:m},backend:n,attrs:{shape:p}}),y=Ti({inputs:{x:g},backend:n,attrs:{begin:h,size:d}});return n.disposeIntermediateTensorInfo(f),n.disposeIntermediateTensorInfo(m),n.disposeIntermediateTensorInfo(g),y}};function $i(e,t,n,r,a){const o=s.D5U.sizeFromShape(r),i=s.D5U.makeZerosTypedArray(a,n);for(let s=0;s<e.length;s++){const n=e[s];if(n<0)throw new Error("Input x must be non-negative!");n>=a||(i[n]+=o>0?t[s]:1)}return i}function Ai(e,t,n,r=!1){const a=e.shape[0],o=e.shape[1],i=(0,s.f3b)([a,n],t.dtype);for(let s=0;s<a;s++)for(let a=0;a<o;a++){const o=e.get(s,a);if(o<0)throw new Error("Input x must be non-negative!");o>=n||(r?i.set(1,s,o):t.size>0?i.set(i.get(s,o)+t.get(s,a),s,o):i.set(i.get(s,o)+1,s,o))}return i}const Di={kernelName:s.zvY,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:s,weights:a}=t,{size:o}=r,i=$i(n.data.get(s.dataId).values,n.data.get(a.dataId).values,a.dtype,a.shape,o);return n.makeTensorInfo([o],a.dtype,i)}};const _i={kernelName:s.eEB,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n}=e,{s0:r,s1:a}=t,o=n.data.get(r.dataId).values,i=n.data.get(a.dataId).values,u=s.Wap.assertAndGetBroadcastShape(Array.from(o),Array.from(i));return n.makeTensorInfo([u.length],"int32",Int32Array.from(u))}},Ri=ko((e=>Math.ceil(e))),Fi=oo(s.gJX,Ri),Oi={kernelName:s.gJX,backendName:"cpu",kernelFunc:Fi},Mi=ao(s.xnO,((e,t)=>{const n=t;return e>n.clipValueMax?n.clipValueMax:e<n.clipValueMin?n.clipValueMin:e})),Bi={kernelName:s.xnO,backendName:"cpu",kernelFunc:Mi},Li={kernelName:s.yj2,backendName:"cpu",kernelFunc:e=>{const{x:t}=e.inputs,n=e.backend,r=new Float32Array(s.D5U.sizeFromShape(t.shape)),a=n.data.get(t.dataId),o=a.complexTensorInfos.real,i=a.complexTensorInfos.imag,u=n.data.get(o.dataId).values,l=n.data.get(i.dataId).values;for(let s=0;s<u.length;s++){const e=u[s],t=l[s];r[s]=Math.hypot(e,t)}return n.makeOutput(r,t.shape,"float32")}};function Wi(e,t,n,r){const a=s.D5U.getArrayFromDType(n,s.D5U.sizeFromShape(t));if(r&&"string"!==n){let t=0;e.forEach((e=>{const n=s.D5U.sizeFromShape(e.shape);a.set(e.vals,t),t+=n}))}else{let r=0;e.forEach((e=>{const o="string"===n?s.Wap.fromUint8ToStringArray(e.vals):e.vals;let i=0;for(let n=0;n<e.shape[0];++n){const s=n*t[1]+r;for(let t=0;t<e.shape[1];++t)a[s+t]=o[i++]}r+=e.shape[1]}))}return a}function Pi(e){const{inputs:t,backend:n}=e,{input:r}=t,s=n.data.get(r.dataId).complexTensorInfos.imag,a=n.data.get(s.dataId).values;return n.makeTensorInfo(s.shape,s.dtype,a)}const Ui={kernelName:s.J_u,backendName:"cpu",kernelFunc:Pi};function zi(e){const{inputs:t,backend:n,attrs:r}=e,{axis:a}=r,o=s.D5U.parseAxisParam(a,t[0].shape)[0],i=t.map((e=>e.shape));s.Wap.assertParamsConsistent(i,o);let u=s.Wap.computeOutShape(t.map((e=>e.shape)),o);if(0===s.D5U.sizeFromShape(u))return n.makeTensorInfo(u,t[0].dtype,[]);const l=t.filter((e=>s.D5U.sizeFromShape(e.shape)>0));if(1===l.length)return lo({inputs:{x:l[0]},backend:n});if("complex64"===l[0].dtype){const e=l.map((e=>Ao({inputs:{input:e},backend:n}))),t=l.map((e=>Pi({inputs:{input:e},backend:n}))),r=zi({inputs:e,backend:n,attrs:{axis:o}}),s=zi({inputs:t,backend:n,attrs:{axis:o}}),a=Co({inputs:{real:r,imag:s},backend:n});return e.forEach((e=>n.disposeIntermediateTensorInfo(e))),t.forEach((e=>n.disposeIntermediateTensorInfo(e))),n.disposeIntermediateTensorInfo(r),n.disposeIntermediateTensorInfo(s),a}const c=l.map((e=>{const t=s.D5U.sizeFromShape(e.shape.slice(o));return Uo({inputs:{x:e},backend:n,attrs:{shape:[-1,t]}})})),p=c.map((e=>({vals:n.data.get(e.dataId).values,shape:e.shape})));u=s.Wap.computeOutShape(c.map((e=>e.shape)),1);const h=1===c[0].shape[0],d=Wi(p,u,t[0].dtype,h),f=s.Wap.computeOutShape(l.map((e=>e.shape)),o),m=n.makeTensorInfo(f,t[0].dtype,d);return c.forEach((e=>n.disposeIntermediateTensorInfo(e))),m}const Vi={kernelName:s.Eh3,backendName:"cpu",kernelFunc:zi};function Gi(e){const{inputs:t,backend:n,attrs:r}=e,{x:a,filter:o}=t,{strides:i,pad:u,dataFormat:l,dilations:c,dimRoundingMode:p}=r;no([a,o],"conv2d");const h=s.Wap.convertConv2DDataFormat(l),d=s.Wap.computeConv2DInfo(a.shape,o.shape,i,c,u,p,!1,h),f=d.filterHeight,m=d.filterWidth,g=d.dilationHeight,y=d.dilationWidth,b=d.padInfo.left,x=d.padInfo.top,w="channelsLast"===d.dataFormat,v=new s.YDk(d.outShape,a.dtype),k=s.D5U.computeStrides(a.shape),I=s.D5U.computeStrides(o.shape),N=k[0],S=w?k[1]:k[2],T=w?k[2]:1,C=w?1:k[1],E=v.strides[0],$=w?v.strides[1]:v.strides[2],A=w?v.strides[2]:1,D=w?1:v.strides[1],_=n.data.get(a.dataId).values,R=n.data.get(o.dataId).values,F=v.values;for(let s=0;s<d.batchSize;++s){const e=s*N,t=s*E;for(let n=0;n<d.outHeight;++n){const r=t+n*$,s=n*d.strideHeight-x;for(let t=0;t<f;++t){const n=s+t*g;if(n<0||n>=d.inHeight)continue;const a=t*I[0],o=e+n*S;for(let e=0;e<d.outWidth;++e){const t=r+e*A,n=e*d.strideWidth-b;for(let e=0;e<m;++e){const r=n+e*y;if(r<0||r>=d.inWidth)continue;const s=o+r*T;let i=a+e*I[1];for(let e=0;e<d.inChannels;++e){const n=_[s+e*C];for(let e=0;e<d.outChannels;++e)F[t+e*D]+=n*R[i+e];i+=d.outChannels}}}}}}return n.makeTensorInfo(v.shape,v.dtype,F)}const Hi={kernelName:s.mhS,backendName:"cpu",kernelFunc:Gi};const ji={kernelName:s.wUP,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a,dy:o}=t,{strides:i,pad:u,dataFormat:l,dimRoundingMode:c,filterShape:p}=r;no([a,o],"conv2dBackpropFilter");const h=s.Wap.convertConv2DDataFormat(l),d=s.Wap.computeConv2DInfo(a.shape,p,i,1,u,c,!1,h),{strideHeight:f,strideWidth:m,filterHeight:g,filterWidth:y}=d,b="channelsLast"===d.dataFormat,x=new s.YDk(d.filterShape,"float32"),w=d.padInfo.left,v=d.padInfo.top,k=n.data.get(a.dataId).values,I=n.data.get(o.dataId).values,N=new s.YDk(a.shape,a.dtype,k),S=new s.YDk(o.shape,o.dtype,I);for(let s=0;s<g;++s){const e=Math.max(0,Math.ceil((v-s)/f)),t=Math.min(d.outHeight,(d.inHeight+v-s)/f);for(let n=0;n<y;++n){const r=Math.max(0,Math.ceil((w-n)/m)),a=Math.min(d.outWidth,(d.inWidth+w-n)/m);for(let o=0;o<d.inChannels;++o)for(let i=0;i<d.outChannels;++i){let u=0;for(let l=0;l<d.batchSize;++l)for(let c=e;c<t;++c){const e=s+c*f-v;for(let t=r;t<a;++t){const r=n+t*m-w;u+=b?N.get(l,e,r,o)*S.get(l,c,t,i):N.get(l,o,e,r)*S.get(l,i,c,t)}}x.set(u,s,n,o,i)}}}return n.makeTensorInfo(x.shape,x.dtype,x.values)}};const Xi={kernelName:s.wm,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{dy:a,filter:o}=t,{inputShape:i,strides:u,pad:l,dataFormat:c,dimRoundingMode:p}=r;no([a,o],"conv2dBackpropInput");const h=s.D5U.computeStrides(o.shape),d=s.D5U.computeStrides(a.shape);let f=s.Wap.convertConv2DDataFormat(c);const m=s.Wap.computeConv2DInfo(i,o.shape,u,1,l,p,!1,f),g=new s.YDk(m.inShape,"float32"),y=g.values,b=n.data.get(a.dataId).values,x=n.data.get(o.dataId).values,[w,v,k]=h,{batchSize:I,filterHeight:N,filterWidth:S,inChannels:T,inHeight:C,inWidth:E,outChannels:$,outHeight:A,outWidth:D,strideHeight:_,strideWidth:R}=m;f=m.dataFormat;const F=N-1-m.padInfo.top,O=S-1-m.padInfo.left,M="channelsLast"===f,B=g.strides[0],L=M?g.strides[1]:g.strides[2],W=M?g.strides[2]:1,P=M?1:g.strides[1],U=d[0],z=M?d[1]:d[2],V=M?d[2]:1,G=M?1:d[1];for(let s=0;s<I;++s)for(let e=0;e<T;++e)for(let t=0;t<C;++t){const n=t-F,r=Math.max(0,Math.ceil(n/_)),a=Math.min(A,(N+n)/_);for(let o=0;o<E;++o){const i=o-O,u=Math.max(0,Math.ceil(i/R)),l=Math.min(D,(S+i)/R);let c=0;for(let t=r;t<a;++t){const r=t*_-n;for(let n=u;n<l;++n){const a=U*s+z*t+V*n,o=w*(N-1-r)+v*(S-1-(n*R-i))+k*e;for(let e=0;e<$;++e){c+=b[a+G*e]*x[o+e]}}}y[B*s+L*t+W*o+P*e]=c}}return n.makeTensorInfo(g.shape,g.dtype,g.values)}};const qi={kernelName:s.x12,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a,filter:o}=t,{strides:i,pad:u,dilations:l}=r;no([a,o],"conv3d");const c=s.Wap.computeConv3DInfo(a.shape,o.shape,i,l,u),{filterDepth:p,filterHeight:h,filterWidth:d,dilationDepth:f,dilationHeight:m,dilationWidth:g,padInfo:y}=c,b=y.front,x=y.left,w=y.top,v=new s.YDk(c.outShape,a.dtype),k=n.data.get(a.dataId).values,I=n.data.get(o.dataId).values,N=v.values,S=s.D5U.computeStrides(a.shape),T=s.D5U.computeStrides(o.shape);for(let s=0;s<c.batchSize;++s){const e=s*S[0],t=s*v.strides[0];for(let n=0;n<c.outDepth;++n){const r=t+n*v.strides[1],s=n*c.strideDepth-b;for(let t=0;t<p;++t){const n=s+t*f;if(n<0||n>=c.inDepth)continue;const a=t*T[0],o=e+n*S[1];for(let e=0;e<c.outHeight;++e){const t=r+e*v.strides[2],n=e*c.strideHeight-w;for(let e=0;e<h;++e){const r=n+e*m;if(r<0||r>=c.inHeight)continue;const s=a+e*T[1],i=o+r*S[2];for(let e=0;e<c.outWidth;++e){const n=t+e*c.outChannels,r=e*c.strideWidth-x;for(let e=0;e<d;++e){const t=r+e*g;if(t<0||t>=c.inWidth)continue;const a=s+e*T[2],o=i+t*c.inChannels;let u=a;for(let e=0;e<c.inChannels;++e){const t=k[o+e];for(let e=0;e<c.outChannels;++e)N[n+e]+=t*I[u+e];u+=c.outChannels}}}}}}}}return n.makeTensorInfo(v.shape,v.dtype,v.values)}};const Ki={kernelName:s.o2y,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a,dy:o}=t,{strides:i,pad:u,filterShape:l}=r;no([a,o],"conv3dBackpropFilterV2");const c=s.D5U.computeStrides(a.shape),p=s.D5U.computeStrides(o.shape),h=s.Wap.computeConv3DInfo(a.shape,l,i,1,u),d=h.strideDepth,f=h.strideHeight,m=h.strideWidth,g=h.filterDepth,y=h.filterHeight,b=h.filterWidth,x=new s.YDk(h.filterShape,"float32"),w=x.values,[v,k,I,N]=x.strides,S=n.data.get(o.dataId).values,[T,C,E,$]=p,A=n.data.get(a.dataId).values,[D,_,R,F]=c,O=h.padInfo.front,M=h.padInfo.left,B=h.padInfo.top;for(let s=0;s<g;++s){const e=Math.max(0,Math.ceil((O-s)/d)),t=Math.min(h.outDepth,(h.inDepth+O-s)/d),n=s*v;for(let r=0;r<y;++r){const a=Math.max(0,Math.ceil((B-r)/f)),o=Math.min(h.outHeight,(h.inHeight+B-r)/f),i=r*k+n;for(let n=0;n<b;++n){const u=Math.max(0,Math.ceil((M-n)/m)),l=Math.min(h.outWidth,(h.inWidth+M-n)/m),c=n*I+i;for(let i=0;i<h.inChannels;++i){const p=i*N+c;for(let c=0;c<h.outChannels;++c){let g=0;for(let p=0;p<h.batchSize;++p){const h=p*D,y=p*T;for(let p=e;p<t;++p){const e=(s+p*d-O)*_+h,t=p*C+y;for(let s=a;s<o;++s){const a=(r+s*f-B)*R+e,o=s*E+t;for(let e=u;e<l;++e){const t=e*$+o;g+=A[(n+e*m-M)*F+a+i]*S[t+c]}}}}w[p+c]=g}}}}}return n.makeTensorInfo(x.shape,x.dtype,x.values)}};const Qi={kernelName:s.ik2,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{dy:a,filter:o}=t,{pad:i,strides:u,inputShape:l}=r;no([a],"conv3dBackpropInputV2");const c=s.D5U.computeStrides(a.shape),p=s.D5U.computeStrides(o.shape),h=s.Wap.computeConv3DInfo(l,o.shape,u,1,i),d=new s.YDk(h.inShape,"float32"),f=d.values,[m,g,y,b]=d.strides,x=n.data.get(a.dataId).values,[w,v,k,I]=c,N=n.data.get(o.dataId).values,[S,T,C,E]=p,{batchSize:$,filterDepth:A,filterHeight:D,filterWidth:_,inChannels:R,inDepth:F,inHeight:O,inWidth:M,outChannels:B,outDepth:L,outHeight:W,outWidth:P,strideDepth:U,strideHeight:z,strideWidth:V}=h,G=A-1-h.padInfo.front,H=D-1-h.padInfo.top,j=_-1-h.padInfo.left;for(let s=0;s<$;++s)for(let e=0;e<R;++e)for(let t=0;t<F;++t){const n=t-G,r=Math.max(0,Math.ceil(n/U)),a=Math.min(L,(A+n)/U);for(let o=0;o<O;++o){const i=o-H,u=Math.max(0,Math.ceil(i/z)),l=Math.min(W,(D+i)/z);for(let c=0;c<M;++c){const p=c-j,h=Math.max(0,Math.ceil(p/V)),d=Math.min(P,(_+p)/V);let $=0;for(let t=r;t<a;++t){const r=t*U-n;for(let n=u;n<l;++n){const a=n*z-i;for(let o=h;o<d;++o){const i=w*s+v*t+k*n+I*o,u=S*(A-1-r)+T*(D-1-a)+C*(_-1-(o*V-p))+E*e;for(let e=0;e<B;++e){$+=x[i+e]*N[u+e]}}}}f[m*s+g*t+y*o+b*c+e]=$}}}return n.makeTensorInfo(d.shape,d.dtype,d.values)}},Yi=ao(s.mc4,(e=>Math.cos(e))),Zi={kernelName:s.mc4,backendName:"cpu",kernelFunc:Yi},Ji=ao(s.TR1,(e=>Math.cosh(e))),eu={kernelName:s.TR1,backendName:"cpu",kernelFunc:Ji};const tu={kernelName:s.VcC,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{image:a,boxes:o,boxInd:i}=t,{cropSize:u,method:l,extrapolationValue:c}=r,[p,h,d,f]=a.shape,m=o.shape[0],[g,y]=u,b=(0,s.f3b)([m,g,y,f],"float32"),x=n.data.get(o.dataId).values,w=n.data.get(i.dataId).values,v=n.data.get(a.dataId).values,k=s.D5U.computeStrides(a.shape),I=s.D5U.computeStrides(b.shape);for(let s=0;s<m;s++){const e=4*s,t=x[e],n=x[e+1],r=x[e+2],a=x[e+3],o=w[s];if(o>=p)continue;const i=g>1?(r-t)*(h-1)/(g-1):0,u=y>1?(a-n)*(d-1)/(y-1):0;for(let p=0;p<g;p++){const e=g>1?t*(h-1)+p*i:.5*(t+r)*(h-1);if(e<0||e>h-1)for(let t=0;t<y;t++)for(let e=0;e<f;e++){const n=e+t*I[2]+p*I[1]+s*I[0];b.values[n]=c}else if("bilinear"===l){const t=Math.floor(e),r=Math.ceil(e),i=e-t;for(let e=0;e<y;e++){const l=y>1?n*(d-1)+e*u:.5*(n+a)*(d-1);if(l<0||l>d-1){for(let t=0;t<f;t++){const n=t+e*I[2]+p*I[1]+s*I[0];b.values[n]=c}continue}const h=Math.floor(l),m=Math.ceil(l),g=l-h;for(let n=0;n<f;n++){let a=n+h*k[2]+t*k[1]+o*k[0];const u=v[a];a=n+m*k[2]+t*k[1]+o*k[0];const l=v[a];a=n+h*k[2]+r*k[1]+o*k[0];const c=v[a];a=n+m*k[2]+r*k[1]+o*k[0];const d=u+(l-u)*g,f=c+(v[a]-c)*g;a=n+e*I[2]+p*I[1]+s*I[0],b.values[a]=d+(f-d)*i}}}else for(let t=0;t<y;++t){const r=y>1?n*(d-1)+t*u:.5*(n+a)*(d-1);if(r<0||r>d-1){for(let e=0;e<f;e++){const n=e+t*I[2]+p*I[1]+s*I[0];b.values[n]=c}continue}const i=Math.round(r),l=Math.round(e);for(let e=0;e<f;e++){const n=e+i*k[2]+l*k[1]+o*k[0],r=e+t*I[2]+p*I[1]+s*I[0];b.values[r]=v[n]}}}}return n.makeTensorInfo(b.shape,b.dtype,b.values)}};const nu={kernelName:s.Byc,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:o,exclusive:i,reverse:u}=r;no(a,"cumprod");const l=s.Wap.getAxesPermutation([o],a.shape.length);let c=a;null!=l&&(c=ei({inputs:{x:a},backend:n,attrs:{perm:l}}));const p=s.Wap.getInnerMostAxes(1,a.shape.length)[0];if(p!==c.shape.length-1)throw new Error(`backend.cumprod in CPU expects an inner-most axis=${c.shape.length-1} but got axis=${p}`);const h=(0,s.x8V)(c.dtype,"int32"),d=s.D5U.makeOnesTypedArray(s.D5U.sizeFromShape(c.shape),h),f=n.data.get(c.dataId).values,m=c.shape[c.shape.length-1],g=u?(e,t)=>e+m-t-1:(e,t)=>e+t;for(let s=0;s<f.length;s+=m)for(let e=0;e<m;e++){const t=g(s,e);if(0===e)d[t]=i?1:f[t];else{const n=g(s,e-1);d[t]=i?f[n]*d[n]:f[t]*d[n]}}const y=n.makeTensorInfo(c.shape,h,d);if(null!=l){const e=ei({inputs:{x:y},backend:n,attrs:{perm:s.Wap.getUndoAxesPermutation(l)}});return n.disposeIntermediateTensorInfo(y),n.disposeIntermediateTensorInfo(c),e}return y}};const ru={kernelName:s.iHb,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:o,exclusive:i,reverse:u}=r;no(a,"cumsum");const l=s.Wap.getAxesPermutation([o],a.shape.length);let c=a;null!=l&&(c=ei({inputs:{x:a},backend:n,attrs:{perm:l}}));const p=s.Wap.getInnerMostAxes(1,a.shape.length)[0];if(p!==c.shape.length-1)throw new Error(`backend.cumsum in CPU expects an inner-most axis=${c.shape.length-1} but got axis=${p}`);const h=(0,s.x8V)(c.dtype,"int32"),d=s.D5U.makeZerosTypedArray(s.D5U.sizeFromShape(c.shape),h),f=n.data.get(c.dataId).values,m=c.shape[c.shape.length-1],g=u?(e,t)=>e+m-t-1:(e,t)=>e+t;for(let s=0;s<f.length;s+=m)for(let e=0;e<m;e++){const t=g(s,e);if(0===e)d[t]=i?0:f[t];else{const n=g(s,e-1);d[t]=i?f[n]+d[n]:f[t]+d[n]}}const y=n.makeTensorInfo(c.shape,h,d);if(null!=l){const e=ei({inputs:{x:y},backend:n,attrs:{perm:s.Wap.getUndoAxesPermutation(l)}});return n.disposeIntermediateTensorInfo(y),n.disposeIntermediateTensorInfo(c),e}return y}};const su={kernelName:s.QRR,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:s,weights:a}=t,{size:o,binaryOutput:i}=r;if(1===s.shape.length){const e=$i(n.data.get(s.dataId).values,n.data.get(a.dataId).values,a.dtype,a.shape,o);return n.makeTensorInfo([o],a.dtype,e)}if(2===s.shape.length){const e=Ai(n.bufferSync(s),n.bufferSync(a),o,i);return n.makeTensorInfo(e.shape,a.dtype,e.values)}throw new Error(`Error in denseBincount: input must be at most rank 2, but got rank${s.shape.length}.`)}};const au={kernelName:s.T0n,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{blockSize:o,dataFormat:i}=r;s.D5U.assert("NHWC"===i,(()=>`Only NHWC dataFormat supported on CPU for depthToSpace. Got ${i}`));const u=a.shape[0],l=a.shape[1],c=a.shape[2],p=a.shape[3],h=l*o,d=c*o,f=p/(o*o),m=n.data.get(a.dataId).values,g=new Float32Array(u*h*d*f);let y=0;for(let s=0;s<u;++s)for(let e=0;e<h;++e){const t=Math.floor(e/o),n=e%o;for(let e=0;e<d;++e){const r=Math.floor(e/o),a=(n*o+e%o)*f;for(let e=0;e<f;++e){const n=e+a+p*(r+c*(t+l*s));g[y++]=m[n]}}}return n.makeTensorInfo([u,h,d,f],a.dtype,g)}};function ou(e){const{inputs:t,backend:n,attrs:r}=e,{x:a,filter:o}=t,{strides:i,pad:u,dilations:l,dimRoundingMode:c}=r;no([a,o],"depthwiseConv2DNative");const p=s.D5U.computeStrides(a.shape),h=s.D5U.computeStrides(o.shape);let d=l;null==d&&(d=[1,1]),s.D5U.assert(s.Wap.eitherStridesOrDilationsAreOne(i,d),(()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${i} and dilations '${d}'`));const f=s.Wap.computeConv2DInfo(a.shape,o.shape,i,d,u,c,!0),{filterHeight:m,filterWidth:g,dilationHeight:y,dilationWidth:b,padInfo:x}=f,w=x.left,v=x.top,k=f.outChannels/f.inChannels,I=new s.YDk(f.outShape,a.dtype),N=n.data.get(a.dataId).values,S=n.data.get(o.dataId).values,T=I.values;for(let s=0;s<f.batchSize;++s){const e=s*p[0],t=s*I.strides[0];for(let n=0;n<f.outHeight;++n){const r=t+n*I.strides[1],s=n*f.strideHeight-v;for(let t=0;t<m;++t){const n=s+t*y;if(n<0||n>=f.inHeight)continue;const a=t*h[0],o=e+n*p[1];for(let e=0;e<f.outWidth;++e){const t=r+e*I.strides[2],n=e*f.strideWidth-w;for(let e=0;e<g;++e){const r=n+e*b;if(r<0||r>=f.inWidth)continue;const s=a+e*h[1],i=o+r*f.inChannels;let u=t,l=s;for(let e=0;e<f.inChannels;++e){const t=N[i+e];for(let e=0;e<k;++e)T[u+e]+=t*S[l+e];u+=k,l+=k}}}}}}return n.makeTensorInfo(I.shape,I.dtype,I.values)}const iu={kernelName:s.cie,backendName:"cpu",kernelFunc:ou};const uu={kernelName:s.sL$,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a,dy:o}=t,{strides:i,dilations:u,pad:l,dimRoundingMode:c,filterShape:p}=r;no([a,o],"depthwiseConv2dNativeBackpropFilter");const h=s.Wap.computeConv2DInfo(a.shape,p,i,u,l,c,!0),{strideHeight:d,strideWidth:f,filterHeight:m,filterWidth:g}=h,y=new s.YDk(h.filterShape,"float32"),b=h.padInfo.left,x=h.padInfo.top,w=h.outChannels/h.inChannels,v=n.data.get(a.dataId).values,k=new s.YDk(a.shape,a.dtype,v),I=n.data.get(o.dataId).values,N=new s.YDk(o.shape,o.dtype,I);for(let s=0;s<m;++s){const e=Math.max(0,Math.ceil((x-s)/d)),t=Math.min(h.outHeight,(h.inHeight+x-s)/d);for(let n=0;n<g;++n){const r=Math.max(0,Math.ceil((b-n)/f)),a=Math.min(h.outWidth,(h.inWidth+b-n)/f);for(let o=0;o<h.outChannels;++o){const i=Math.trunc(o/w),u=o%w;let l=0;for(let c=0;c<h.batchSize;++c)for(let u=e;u<t;++u){const e=s+u*d-x;for(let t=r;t<a;++t){const r=n+t*f-b;l+=k.get(c,e,r,i)*N.get(c,u,t,o)}}y.set(l,s,n,i,u)}}}return n.makeTensorInfo(y.shape,y.dtype,y.values)}};const lu={kernelName:s.y7R,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{dy:a,filter:o}=t,{strides:i,dilations:u,pad:l,dimRoundingMode:c,inputShape:p}=r;no([a,o],"depthwiseConv2DNativeBackpropInput");const h=s.D5U.computeStrides(a.shape),d=s.D5U.computeStrides(o.shape),f=s.Wap.computeConv2DInfo(p,o.shape,i,u,l,c,!0),m=new s.YDk(f.inShape,"float32"),g=m.values,[y,b,x]=m.strides,w=n.data.get(a.dataId).values,[v,k,I]=h,N=n.data.get(o.dataId).values,[S,T,C]=d,{batchSize:E,filterHeight:$,filterWidth:A,inChannels:D,inHeight:_,inWidth:R,outChannels:F,outHeight:O,outWidth:M,strideHeight:B,strideWidth:L}=f,W=$-1-f.padInfo.top,P=A-1-f.padInfo.left,U=F/D;for(let s=0;s<E;++s)for(let e=0;e<D;++e)for(let t=0;t<_;++t){const n=t-W,r=Math.max(0,Math.ceil(n/B)),a=Math.min(O,($+n)/B);for(let o=0;o<R;++o){const i=o-P,u=Math.max(0,Math.ceil(i/L)),l=Math.min(M,(A+i)/L);let c=0;for(let t=r;t<a;++t){const r=t*B-n;for(let n=u;n<l;++n){const a=v*s+k*t+I*n,o=S*($-1-r)+T*(A-1-(n*L-i))+C*e;for(let t=0;t<U;++t){c+=w[a+(e*U+t)]*N[o+t]}}}g[y*s+b*t+x*o+e]=c}}return n.makeTensorInfo(m.shape,m.dtype,m.values)}};const cu={kernelName:s.$w,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n}=e,{x:r}=t,a=s.D5U.sizeFromShape(r.shape),o=n.data.get(r.dataId).values,i=(0,s.f3b)([a,a],r.dtype),u=i.values;for(let s=0;s<o.length;s++)u[s*a+s]=o[s];const l=[...r.shape,...r.shape];return n.makeTensorInfo(l,i.dtype,i.values)}},pu={kernelName:s.p4S,backendName:"cpu",kernelFunc:({inputs:e,backend:t,attrs:n})=>{const{x:r,filter:a}=e,{strides:o,pad:i,dilations:u}=n,l=t,c=l.data.get(r.dataId).values,p=r.shape.length,h=l.data.get(a.dataId).values,d=a.shape.length,{batchSize:f,inHeight:m,inWidth:g,inChannels:y,outHeight:b,outWidth:x,padInfo:w,strideHeight:v,strideWidth:k,filterHeight:I,filterWidth:N,dilationHeight:S,dilationWidth:T,outShape:C}=s.Wap.computeDilation2DInfo(r.shape,a.shape,o,i,"NHWC",u),E=s.D5U.sizeFromShape(C),$=C.length,A=s.D5U.getArrayFromDType(r.dtype,E);for(let D=0;D<f;++D)for(let e=0;e<b;++e){const t=e*v-w.top;for(let n=0;n<x;++n){const o=n*k-w.left;for(let i=0;i<y;++i){let u=Number.MIN_SAFE_INTEGER;for(let e=0;e<I;++e){const n=t+e*S;if(n>=0&&n<m)for(let t=0;t<N;++t){const l=o+t*T;if(l>=0&&l<g){const o=s.D5U.locToIndex([D,n,l,i],p,s.D5U.computeStrides(r.shape)),f=s.D5U.locToIndex([e,t,i],d,s.D5U.computeStrides(a.shape)),m=c[o]+h[f];m>u&&(u=m)}}}A[s.D5U.locToIndex([D,e,n,i],$,s.D5U.computeStrides(C))]=u}}}return{dataId:l.write(s.D5U.toTypedArray(A,r.dtype),C,r.dtype),shape:C,dtype:r.dtype}}},hu={kernelName:s.Vn9,backendName:"cpu",kernelFunc:({inputs:e,backend:t,attrs:n})=>{const{x:r,filter:a,dy:o}=e,{strides:i,pad:u,dilations:l}=n,c=t,p=s.D5U.toNestedArray(r.shape,c.data.get(r.dataId).values),h=s.D5U.toNestedArray(a.shape,c.data.get(a.dataId).values),{batchSize:d,inHeight:f,inWidth:m,inChannels:g,outHeight:y,outWidth:b,padInfo:x,strideHeight:w,strideWidth:v,filterHeight:k,filterWidth:I,dilationHeight:N,dilationWidth:S,outShape:T}=s.Wap.computeDilation2DInfo(r.shape,a.shape,i,u,"NHWC",l);s.D5U.assert(o.rank===T.length,(()=>`Error in ${s.Vn9}, dy must have the same rank as output ${T.length}, but got ${o.rank}`));const C=s.D5U.toNestedArray(T,c.data.get(o.dataId).values),E=s.D5U.makeZerosNestedTypedArray(a.shape,a.dtype);for(let s=0;s<d;++s)for(let e=0;e<y;++e){const t=e*w-x.top;for(let n=0;n<b;++n){const r=n*v-x.left;for(let a=0;a<g;++a){let o=Number.MIN_SAFE_INTEGER,i=0,u=0;for(let e=0;e<k;++e){const n=t+e*N;if(n>=0&&n<f)for(let t=0;t<I;++t){const l=r+t*S;if(l>=0&&l<m){const r=p[s][n][l][a]+h[e][t][a];r>o&&(o=r,i=e,u=t)}}}E[i][u][a]+=C[s][e][n][a]}}}return{dataId:c.write(s.D5U.toTypedArray(E,r.dtype),a.shape,a.dtype),shape:a.shape,dtype:a.dtype}}},du={kernelName:s.ekb,backendName:"cpu",kernelFunc:({inputs:e,backend:t,attrs:n})=>{const{x:r,filter:a,dy:o}=e,{strides:i,pad:u,dilations:l}=n,c=t,p=s.D5U.toNestedArray(r.shape,c.data.get(r.dataId).values),h=s.D5U.toNestedArray(a.shape,c.data.get(a.dataId).values),{batchSize:d,inHeight:f,inWidth:m,inChannels:g,outHeight:y,outWidth:b,padInfo:x,strideHeight:w,strideWidth:v,filterHeight:k,filterWidth:I,dilationHeight:N,dilationWidth:S,outShape:T}=s.Wap.computeDilation2DInfo(r.shape,a.shape,i,u,"NHWC",l);s.D5U.assert(o.rank===T.length,(()=>`Error in ${s.ekb}, dy must have the same rank as output ${T.length}, but got ${o.rank}`));const C=s.D5U.toNestedArray(T,c.data.get(o.dataId).values),E=s.D5U.makeZerosNestedTypedArray(r.shape,r.dtype);for(let s=0;s<d;++s)for(let e=0;e<y;++e){const t=e*w-x.top;for(let n=0;n<b;++n){const r=n*v-x.left;for(let a=0;a<g;++a){let o=Number.MIN_SAFE_INTEGER,i=t<0?0:t,u=r<0?0:r;for(let e=0;e<k;++e){const n=t+e*N;if(n>=0&&n<f)for(let t=0;t<I;++t){const l=r+t*S;if(l>=0&&l<m){const r=p[s][n][l][a]+h[e][t][a];r>o&&(o=r,i=n,u=l)}}}E[s][i][u][a]+=C[s][e][n][a]}}}return{dataId:c.write(s.D5U.toTypedArray(E,r.dtype),r.shape,r.dtype),shape:r.shape,dtype:r.dtype}}},fu=fo(((e,t)=>e*t)),mu=Mo(((e,t,n,r)=>({real:e*n-t*r,imag:e*r+t*n}))),gu=Oo(s.wYn,fu,mu),yu={kernelName:s.wYn,backendName:"cpu",kernelFunc:gu};function bu(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:o,keepDims:i}=r;let u;no(a,"sum"),u="bool"===a.dtype?Ro({inputs:{x:a},backend:n,attrs:{dtype:"int32"}}):lo({inputs:{x:a},backend:n});const l=u.shape.length,c=s.D5U.parseAxisParam(o,u.shape),p=s.Wap.getAxesPermutation(c,l);let h=c,d=u;null!=p&&(d=ei({inputs:{x:u},backend:n,attrs:{perm:p}}),h=s.Wap.getInnerMostAxes(h.length,l)),s.Wap.assertAxesAreInnerMostDims("sum",h,d.shape.length);const[f,m]=s.Wap.computeOutAndReduceShapes(d.shape,h);let g=$o(n,f,s.Wap.upcastType(d.dtype,"int32"));const y=s.D5U.sizeFromShape(m),b=n.data.get(g.dataId).values,x=n.data.get(d.dataId).values;for(let s=0;s<b.length;++s){const e=s*y;let t=0;for(let n=0;n<y;++n)t+=x[e+n];b[s]=t}if(i){const e=g;g=Uo({inputs:{x:g},backend:n,attrs:{shape:s.Wap.expandShapeToKeepDim(g.shape,c)}}),n.disposeIntermediateTensorInfo(e)}return n.disposeIntermediateTensorInfo(u),null!=p&&n.disposeIntermediateTensorInfo(d),g}const xu={kernelName:s.GBy,backendName:"cpu",kernelFunc:bu};const wu={kernelName:s.$g6,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{equation:a}=r,o=t,{allDims:i,summedDims:u,idDims:l}=s.Wap.decodeEinsumEquation(a,o.length);s.Wap.checkEinsumDimSizes(i.length,l,o);const{path:c,steps:p}=s.Wap.getEinsumComputePath(u,l),h=p.length;let d=null,f=i.length;const m=[];for(let g=0;g<h;++g){for(const e of p[g]){const{permutationIndices:t,expandDims:r}=s.Wap.getEinsumPermutation(f,l[e]);let a;s.Wap.isIdentityPermutation(t)?a=o[e]:(a=ei({inputs:{x:o[e]},backend:n,attrs:{perm:t}}),m.push(a));const i=a.shape.slice();for(let e=0;e<r.length;++e)i.splice(r[e],0,1);s.D5U.arraysEqual(a.shape,i)||(a=Uo({inputs:{x:a},backend:n,attrs:{shape:i}}),m.push(a)),null===d?d=a:(d=gu({inputs:{a:a,b:d},backend:n}),m.push(d))}g<h-1&&(c[g]>=0&&(d=bu({inputs:{x:d},backend:n,attrs:{axis:c[g]-(i.length-f),keepDims:!1}}),m.push(d)),f--)}for(const s of m)s!==d&&n.disposeIntermediateTensorInfo(s);return d}};const vu={kernelName:s.HEU,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n}=e,{dy:r,y:a}=t;no([r,a],"eluGrad");const o=new Float32Array(s.D5U.sizeFromShape(a.shape)),i=n.data.get(a.dataId).values,u=n.data.get(r.dataId).values;for(let s=0;s<i.length;++s){const e=i[s];o[s]=e>=1?u[s]:u[s]*(e+1)}return n.makeTensorInfo(a.shape,"float32",o)}},ku=fo(((e,t)=>e===t?1:0)),Iu=Oo(s.hdR,ku,null,"bool"),Nu={kernelName:s.hdR,backendName:"cpu",kernelFunc:Iu},Su=s.Wap.ERF_P,Tu=s.Wap.ERF_A1,Cu=s.Wap.ERF_A2,Eu=s.Wap.ERF_A3,$u=s.Wap.ERF_A4,Au=s.Wap.ERF_A5,Du=ao(s.Omj,(e=>{const t=Math.sign(e),n=Math.abs(e),r=1/(1+Su*n);return t*(1-((((Au*r+$u)*r+Eu)*r+Cu)*r+Tu)*r*Math.exp(-n*n))})),_u={kernelName:s.Omj,backendName:"cpu",kernelFunc:Du},Ru=ko((e=>Math.exp(e))),Fu=oo(s.NEP,Ru,"float32"),Ou={kernelName:s.NEP,backendName:"cpu",kernelFunc:Fu};function Mu(e){const{inputs:t,backend:n,attrs:r}=e,{input:a}=t,{dim:o}=r,i=a.shape.length,u=a.shape.slice();let l=o;return o<0&&(s.D5U.assert(-(i+1)<=o,(()=>`Axis must be in the interval [${-(i+1)}, ${i}]`)),l=i+o+1),u.splice(l,0,1),Uo({inputs:{x:a},backend:n,attrs:{shape:u}})}const Bu={kernelName:s.YFo,backendName:"cpu",kernelFunc:Mu},Lu=ko((e=>Math.expm1(e))),Wu=oo(s.Y0y,Lu),Pu={kernelName:s.Y0y,backendName:"cpu",kernelFunc:Wu},Uu=fo(((e,t)=>e/t)),zu=Oo(s.oHH,Uu),Vu={kernelName:s.oHH,backendName:"cpu",kernelFunc:zu},Gu=fo(((e,t)=>e-t)),Hu=Mo(((e,t,n,r)=>({real:e-n,imag:t-r}))),ju=Oo(s.Tr8,Gu,Hu),Xu={kernelName:s.Tr8,backendName:"cpu",kernelFunc:ju};function qu(e,t,n){const r=e.shape,a=r[0],o=r[1],i=n.data.get(e.dataId),u=i.complexTensorInfos.real,l=i.complexTensorInfos.imag,c=[a,o],p=s.D5U.sizeFromShape(c),h=s.D5U.getTypedArrayFromDType("float32",p),d=s.D5U.getTypedArrayFromDType("float32",p);for(let y=0;y<a;y++){const e=Ti({inputs:{x:u},backend:n,attrs:{begin:[y,0],size:[1,o]}}),r=Ti({inputs:{x:l},backend:n,attrs:{begin:[y,0],size:[1,o]}}),a=Co({inputs:{real:e,imag:r},backend:n}),{real:i,imag:c}=Ku(a,t,n),p=s.Wap.mergeRealAndImagArrays(i,c);for(let t=0;t<o;t++){const e=s.Wap.getComplexWithIndex(p,t);h[y*o+t]=e.real,d[y*o+t]=e.imag}n.disposeIntermediateTensorInfo(e),n.disposeIntermediateTensorInfo(r),n.disposeIntermediateTensorInfo(a)}const f=n.makeTensorInfo(c,"float32",h),m=n.makeTensorInfo(c,"float32",d),g=Co({inputs:{real:f,imag:m},backend:n});return n.disposeIntermediateTensorInfo(f),n.disposeIntermediateTensorInfo(m),g}function Ku(e,t,n){const r=s.D5U.sizeFromShape(e.shape),a=n.data.get(e.dataId),o=n.data.get(a.complexTensorInfos.real.dataId).values,i=n.data.get(a.complexTensorInfos.imag.dataId).values;if(0===((u=r)&u-1)){const a=Qu(o,i,r,t,n),u=[e.shape[0],e.shape[1]];if(t){const e=n.makeTensorInfo(u,"float32",a.real),t=n.makeTensorInfo(u,"float32",a.imag),o=n.makeTensorInfo([],"float32",s.D5U.createScalarValue(r,"float32")),i=lo({inputs:{x:o},backend:n}),l=Vu.kernelFunc({inputs:{a:e,b:o},backend:n}),c=Vu.kernelFunc({inputs:{a:t,b:i},backend:n}),p=n.data.get(l.dataId).values,h=n.data.get(c.dataId).values;return n.disposeIntermediateTensorInfo(e),n.disposeIntermediateTensorInfo(t),n.disposeIntermediateTensorInfo(o),n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(l),n.disposeIntermediateTensorInfo(c),{real:p,imag:h}}return a}{const e=function(e,t,n){const r=new Float32Array(2*t);for(let a=0;a<t;a++){let o=0,i=0;for(let r=0;r<t;r++){const u=s.Wap.exponent(a*r,t,n),l=s.Wap.getComplexWithIndex(e,r);o+=l.real*u.real-l.imag*u.imag,i+=l.real*u.imag+l.imag*u.real}n&&(o/=t,i/=t),s.Wap.assignToTypedArray(r,o,i,a)}return r}(s.Wap.mergeRealAndImagArrays(o,i),r,t);return s.Wap.splitRealAndImagArrays(e)}var u}function Qu(e,t,n,r,a){if(1===n)return{real:e,imag:t};const o=s.Wap.mergeRealAndImagArrays(e,t),i=n/2,u=s.Wap.complexWithEvenIndex(o),l=u.real,c=u.imag,p=[l.length],h=a.makeTensorInfo(p,"float32",l),d=a.makeTensorInfo(p,"float32",c),f=Co({inputs:{real:h,imag:d},backend:a}),m=s.Wap.complexWithOddIndex(o),g=m.real,y=m.imag,b=[g.length],x=a.makeTensorInfo(b,"float32",g),w=a.makeTensorInfo(b,"float32",y),v=Co({inputs:{real:x,imag:w},backend:a}),k=Qu(l,c,i,r,a),I=k.real,N=k.imag,S=[I.length],T=a.makeTensorInfo(S,"float32",I),C=a.makeTensorInfo(S,"float32",N),E=Co({inputs:{real:T,imag:C},backend:a}),$=Qu(g,y,i,r,a),A=$.real,D=$.imag,_=[A.length],R=a.makeTensorInfo(_,"float32",A),F=a.makeTensorInfo(_,"float32",D),O=Co({inputs:{real:R,imag:F},backend:a}),M=s.Wap.exponents(n,r),B=[M.real.length],L=a.makeTensorInfo(B,"float32",M.real),W=a.makeTensorInfo(B,"float32",M.imag),P=Co({inputs:{real:L,imag:W},backend:a}),U=gu({inputs:{a:P,b:O},backend:a}),z=Wo({inputs:{a:E,b:U},backend:a}),V=ju({inputs:{a:E,b:U},backend:a}),G=Ao({inputs:{input:z},backend:a}),H=Ao({inputs:{input:V},backend:a}),j=Pi({inputs:{input:z},backend:a}),X=Pi({inputs:{input:V},backend:a}),q=zi({inputs:[G,H],backend:a,attrs:{axis:0}}),K=zi({inputs:[j,X],backend:a,attrs:{axis:0}}),Q=a.data.get(q.dataId).values,Y=a.data.get(K.dataId).values;return a.disposeIntermediateTensorInfo(h),a.disposeIntermediateTensorInfo(d),a.disposeIntermediateTensorInfo(f),a.disposeIntermediateTensorInfo(x),a.disposeIntermediateTensorInfo(w),a.disposeIntermediateTensorInfo(v),a.disposeIntermediateTensorInfo(T),a.disposeIntermediateTensorInfo(C),a.disposeIntermediateTensorInfo(E),a.disposeIntermediateTensorInfo(R),a.disposeIntermediateTensorInfo(F),a.disposeIntermediateTensorInfo(O),a.disposeIntermediateTensorInfo(L),a.disposeIntermediateTensorInfo(W),a.disposeIntermediateTensorInfo(P),a.disposeIntermediateTensorInfo(U),a.disposeIntermediateTensorInfo(z),a.disposeIntermediateTensorInfo(V),a.disposeIntermediateTensorInfo(G),a.disposeIntermediateTensorInfo(j),a.disposeIntermediateTensorInfo(H),a.disposeIntermediateTensorInfo(X),a.disposeIntermediateTensorInfo(q),a.disposeIntermediateTensorInfo(K),{real:Q,imag:Y}}const Yu={kernelName:s.vwp,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n}=e,{input:r}=t,a=s.D5U.sizeFromShape(r.shape),o=r.shape[r.shape.length-1],i=Uo({inputs:{x:r},backend:n,attrs:{shape:[a/o,o]}}),u=qu(i,!1,n),l=Uo({inputs:{x:u},backend:n,attrs:{shape:r.shape}});return n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(u),l}};function Zu(e){const{backend:t,attrs:n}=e,{shape:r,value:a,dtype:o}=n,i=o||s.D5U.inferDtype(a),u=s.D5U.getArrayFromDType(i,s.D5U.sizeFromShape(r));return function(e,t,n){e.fill(t)}(u,a),t.makeTensorInfo(r,i,u)}const Ju={kernelName:s.deh,backendName:"cpu",kernelFunc:Zu};const el={kernelName:s.Uyb,backendName:"cpu",kernelFunc:({inputs:e,attrs:t,backend:n})=>{const{image:r}=e,a=n,o=s.D5U.getTypedArrayFromDType(r.dtype,s.D5U.sizeFromShape(r.shape)),[i,u,l,c]=r.shape,p=a.data.get(r.dataId).values;for(let s=0;s<i;s++){const e=s*l*u*c;for(let t=0;t<u;t++){const n=t*(l*c);for(let t=0;t<l;t++){const r=t*c;for(let s=0;s<c;s++){const a=Math.round(l-t-1),i=e+n+r+s;let u=p[i];if(a>=0&&a<l){u=p[e+n+a*c+s]}o[i]=u}}}}return{dataId:a.write(o,r.shape,r.dtype),shape:r.shape,dtype:r.dtype}}},tl=ko((e=>Math.floor(e))),nl=oo(s.OR,tl),rl={kernelName:s.OR,backendName:"cpu",kernelFunc:nl},sl=fo(((e,t)=>Math.floor(e/t))),al=Oo(s.jeX,sl,null,"int32"),ol={kernelName:s.jeX,backendName:"cpu",kernelFunc:al};const il={kernelName:s._V0,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:s,filter:a,bias:o,preluActivationWeights:i}=t,{strides:u,pad:l,dataFormat:c,dilations:p,dimRoundingMode:h,activation:d,leakyreluAlpha:f}=r;let m=Gi({inputs:{x:s,filter:a},backend:n,attrs:{strides:u,pad:l,dataFormat:c,dilations:p,dimRoundingMode:h}});if(o){const e=m;if("NCHW"===c&&1===o.shape.length&&1!==o.shape[0]){const e=Uo({inputs:{x:o},backend:n,attrs:{shape:[o.shape[0],1,1]}});m=Wo({inputs:{a:m,b:e},backend:n}),n.disposeIntermediateTensorInfo(e)}else m=Wo({inputs:{a:m,b:o},backend:n});n.disposeIntermediateTensorInfo(e)}if(d){const e=m;if("NCHW"===c&&"prelu"===d&&1===i.shape.length&&1!==i.shape[0]){const e=Uo({inputs:{x:i},backend:n,attrs:{shape:[i.shape[0],1,1]}});m=To(n,m,d,e,f),n.disposeIntermediateTensorInfo(e)}else m=To(n,m,d,i,f);n.disposeIntermediateTensorInfo(e)}return m}};const ul={kernelName:s.luS,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:s,filter:a,bias:o,preluActivationWeights:i}=t,{strides:u,pad:l,dataFormat:c,dilations:p,dimRoundingMode:h,activation:d,leakyreluAlpha:f}=r;let m=ou({inputs:{x:s,filter:a},backend:n,attrs:{strides:u,pad:l,dataFormat:c,dilations:p,dimRoundingMode:h}});if(o){const e=m;m=Wo({inputs:{a:m,b:o},backend:n}),n.disposeIntermediateTensorInfo(e)}if(d){const e=m;m=To(n,m,d,i,f),n.disposeIntermediateTensorInfo(e)}return m}};function ll(e,t,n,r,a,o,i,u,l){const c=(0,s.f3b)([r,o],n);for(let s=0;s<r;s++){const n=[];let r=0;for(let t=0;t<a;t++){const o=e[s*a+t];r+=o*i[t],n.push(o)}if(r<0||r>=l/o)throw new Error(`Invalid indices: ${n} does not index into ${u}`);for(let e=0;e<o;e++)c.values[s*o+e]=t.get(...t.indexToLoc(r*o+e))}return c}const cl={kernelName:s.q1x,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n}=e,{params:r,indices:a}=t,o=s.D5U.sizeFromShape(r.shape),i=a.shape,u=i[i.length-1],[l,c,p,h]=s.Wap.prepareAndValidate(r,a);if(0===c)return n.makeTensorInfo(l,r.dtype,[]);const d=ll(n.data.get(a.dataId).values,n.bufferSync(r),r.dtype,c,u,p,h,r.shape,o);return n.makeTensorInfo(l,r.dtype,d.values)}};function pl(e,t,n){const r=(0,s.f3b)(n,e.dtype);for(let s=0;s<r.size;++s){const n=r.indexToLoc(s).slice(),a=n[0],o=n[2],i=t.locToIndex([a,o]);n[2]=t.values[i];const u=e.locToIndex(n);0<=u&&u<e.values.length&&(r.values[s]=e.values[u])}return r}const hl={kernelName:s.qi_,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a,indices:o}=t,{axis:i,batchDims:u}=r;no([a,o],"gatherV2");const l=s.D5U.parseAxisParam(i,a.shape)[0],c=n.data.get(o.dataId).values,p=a.shape[l];for(let w=0;w<c.length;++w){const e=c[w];s.D5U.assert(e<=p-1&&e>=0,(()=>`GatherV2: the index value ${e} is not in [0, ${p-1}]`))}let h=u;null==u&&(h=0);const d=s.D5U.sizeFromShape(o.shape),f=s.Wap.segment_util.collectGatherOpShapeInfo(a,o,l,h),m=Uo({inputs:{x:a},backend:n,attrs:{shape:[f.batchSize,f.outerSize,f.dimSize,f.sliceSize]}}),g=Uo({inputs:{x:o},backend:n,attrs:{shape:[f.batchSize,d/f.batchSize]}}),y=[f.batchSize,f.outerSize,d/f.batchSize,f.sliceSize],b=n.bufferSync(g),x=pl(n.bufferSync(m),b,y);return n.disposeIntermediateTensorInfo(m),n.disposeIntermediateTensorInfo(g),n.makeTensorInfo(f.outputShape,x.dtype,x.values)}},dl=fo(((e,t)=>e>t?1:0)),fl=Oo(s.iZT,dl,null,"bool"),ml={kernelName:s.iZT,backendName:"cpu",kernelFunc:fl},gl=fo(((e,t)=>e>=t?1:0)),yl=Oo(s.Acj,gl,null,"bool"),bl={kernelName:s.Acj,backendName:"cpu",kernelFunc:yl};const xl={kernelName:s.Qg5,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n}=e,{input:r}=t,a=s.D5U.sizeFromShape(r.shape),o=r.shape[r.shape.length-1],i=Uo({inputs:{x:r},backend:n,attrs:{shape:[a/o,o]}}),u=qu(i,!0,n),l=Uo({inputs:{x:u},backend:n,attrs:{shape:r.shape}});return n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(u),l}},wl=ao(s.avt,(e=>Number.isFinite(e)?1:0),"bool"),vl={kernelName:s.avt,backendName:"cpu",kernelFunc:wl},kl=ao(s.iWB,(e=>Math.abs(e)===1/0?1:0),"bool"),Il={kernelName:s.iWB,backendName:"cpu",kernelFunc:kl},Nl=ao(s.r7n,(e=>Number.isNaN(e)?1:0),"bool"),Sl={kernelName:s.r7n,backendName:"cpu",kernelFunc:Nl},Tl=fo(((e,t)=>e<t?1:0)),Cl=Oo(s.vtC,Tl,null,"bool"),El={kernelName:s.vtC,backendName:"cpu",kernelFunc:Cl},$l=fo(((e,t)=>e<=t?1:0)),Al=Oo(s.CAk,$l,null,"bool"),Dl={kernelName:s.CAk,backendName:"cpu",kernelFunc:Al};function _l(e,t,n){const r=(t-e)/(n-1),a=s.D5U.makeZerosTypedArray(n,"float32");a[0]=e;for(let s=1;s<a.length;s++)a[s]=a[s-1]+r;return a}const Rl={kernelName:s.e7N,backendName:"cpu",kernelFunc:function(e){const{backend:t,attrs:n}=e,{start:r,stop:s,num:a}=n,o=_l(r,s,a);return t.makeTensorInfo([o.length],"float32",o)}},Fl=ko((e=>Math.log(e))),Ol=oo(s.ZbH,Fl),Ml={kernelName:s.ZbH,backendName:"cpu",kernelFunc:Ol},Bl=ao(s.kU,(e=>Math.log1p(e))),Ll={kernelName:s.kU,backendName:"cpu",kernelFunc:Bl},Wl=fo(((e,t)=>e&&t)),Pl=Oo(s.PYm,Wl,null,"bool"),Ul={kernelName:s.PYm,backendName:"cpu",kernelFunc:Pl},zl=ao(s.VfG,(e=>e?0:1),"bool"),Vl={kernelName:s.VfG,backendName:"cpu",kernelFunc:zl},Gl=fo(((e,t)=>e||t)),Hl=Oo(s.MZg,Gl,null,"bool"),jl={kernelName:s.MZg,backendName:"cpu",kernelFunc:Hl};const Xl={kernelName:s.eZ0,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{depthRadius:o,bias:i,alpha:u,beta:l}=r;no(a,"LRN");const c=a.shape[3],p=c-1,h=n.data.get(a.dataId).values,d=s.D5U.sizeFromShape(a.shape),f=new Float32Array(d);function m(e){const t=e%c;let n=e-t+Math.max(0,t-o);const r=e-t+Math.min(t+o,p);let s=0;for(;n<=r;n++){const e=h[n];s+=e*e}return s}for(let s=0;s<d;s++){const e=m(s),t=h[s]*Math.pow(i+u*e,-l);f[s]=t}return n.makeTensorInfo(a.shape,a.dtype,f)}};const ql={kernelName:s.Hhh,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a,y:o,dy:i}=t,{depthRadius:u,bias:l,alpha:c,beta:p}=r;no(i,"LRNGrad");const h=s.D5U.sizeFromShape(i.shape),d=i.shape[3],f=n.data.get(i.dataId).values,m=n.data.get(a.dataId).values,g=n.data.get(o.dataId).values,y=new Float32Array(h),b=h;for(let s=0;s<b;s++){const e=s%d,t=s-e+Math.max(0,e-u),n=s-e+Math.min(d,e+u+1);let r=0;for(let s=t;s<n;s++)r+=Math.pow(m[s],2);r=c*r+l;for(let a=t;a<n;a++){let e=-2*c*p*m[a]*g[s]/r;s===a&&(e+=Math.pow(r,-p)),e*=f[s],y[a]+=e}}return n.makeTensorInfo(i.shape,a.dtype,y)}};function Kl(e,t,n,r){const a=s.D5U.getTypedArrayFromDType(r,s.D5U.sizeFromShape(n));for(let s=0;s<a.length;++s){const n=s*t;let r=e[n];for(let s=0;s<t;++s){const t=e[n+s];(Number.isNaN(t)||t>r)&&(r=t)}a[s]=r}return a}function Ql(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{reductionIndices:o,keepDims:i}=r,u=n;let l=a.shape;const c=l.length,p=s.D5U.parseAxisParam(o,l);let h=p;const d=s.Wap.getAxesPermutation(h,c);let f=u.data.get(a.dataId).values;if(null!=d){const e=new Array(c);for(let t=0;t<e.length;t++)e[t]=l[d[t]];f=Jo(f,l,a.dtype,d,e),h=s.Wap.getInnerMostAxes(h.length,c),l=e}no(a,"max"),s.Wap.assertAxesAreInnerMostDims("max",h,c);const[m,g]=s.Wap.computeOutAndReduceShapes(l,h),y=Kl(f,s.D5U.sizeFromShape(g),m,a.dtype),b=u.write(y,m,a.dtype);let x=m;if(i){x=s.Wap.expandShapeToKeepDim(m,p)}return{dataId:b,shape:x,dtype:a.dtype}}const Yl={kernelName:s.YoZ,backendName:"cpu",kernelFunc:Ql},Zl=fo(((e,t)=>Math.max(e,t))),Jl=Oo(s.BMI,Zl),ec={kernelName:s.BMI,backendName:"cpu",kernelFunc:Jl};const tc={kernelName:s.mTV,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t;no(a,"maxPool");const{filterSize:o,strides:i,pad:u,dimRoundingMode:l}=r;s.D5U.assert(s.Wap.eitherStridesOrDilationsAreOne(i,1),(()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${i} and dilations '1'`));const c=s.Wap.computePool2DInfo(a.shape,o,i,1,u,l);let p;if(1===c.filterWidth&&1===c.filterHeight&&s.D5U.arraysEqual(c.inShape,c.outShape))p=lo({inputs:{x:a},backend:n});else{const e=n.data.get(a.dataId).values,t=s.D5U.computeStrides(a.shape),r=yi(e,a.shape,a.dtype,t,c,"max");p=n.makeTensorInfo(c.outShape,a.dtype,r.values)}return p}};const nc={kernelName:s.OAf,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{filterSize:o,strides:i,pad:u,dimRoundingMode:l,dataFormat:c}=r;no(a,"maxPool3d");const p=s.Wap.computePool3DInfo(a.shape,o,i,1,u,l,c),h=xi(n.data.get(a.dataId).values,a.shape,a.dtype,s.D5U.computeStrides(a.shape),p,"max");return n.makeTensorInfo(h.shape,"float32",h.values)}};const rc={kernelName:s.OU7,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{dy:a,input:o}=t,{filterSize:i,strides:u,pad:l,dimRoundingMode:c}=r;no([a,o],"maxPool3DGrad");const p=s.Wap.computePool3DInfo(o.shape,i,u,1,l,c),h=function(e,t){const n=(0,s.f3b)(t.outShape,"int32"),r=t.strideDepth,a=t.strideHeight,o=t.strideWidth,i=t.dilationDepth,u=t.dilationHeight,l=t.dilationWidth,c=t.effectiveFilterDepth,p=t.effectiveFilterHeight,h=t.effectiveFilterWidth,d=t.padInfo.front,f=t.padInfo.top,m=t.padInfo.left;for(let s=0;s<t.batchSize;++s)for(let g=0;g<t.inChannels;++g)for(let y=0;y<t.outDepth;++y){const b=y*r-d;let x=b;for(;x<0;)x+=i;const w=Math.min(t.inDepth,c+b);for(let r=0;r<t.outHeight;++r){const c=r*a-f;let d=c;for(;d<0;)d+=u;const v=Math.min(t.inHeight,p+c);for(let a=0;a<t.outWidth;++a){const f=a*o-m;let k=f;for(;k<0;)k+=l;const I=Math.min(t.inWidth,h+f);let N=Number.NEGATIVE_INFINITY,S=-1;for(let t=x;t<w;t+=i){const n=t-b;for(let r=d;r<v;r+=u){const a=r-c;for(let o=k;o<I;o+=l){const i=o-f,u=e.get(s,t,r,o,g);u>=N&&(N=u,S=n*p*h+a*p+i)}}}n.set(S,s,y,r,a,g)}}}return n}(n.bufferSync(o),p),d=p.strideDepth,f=p.strideHeight,m=p.strideWidth,g=p.dilationDepth,y=p.dilationHeight,b=p.dilationWidth,x=p.effectiveFilterDepth,w=p.effectiveFilterHeight,v=p.effectiveFilterWidth,k=x-1-p.padInfo.front,I=v-1-p.padInfo.left,N=w-1-p.padInfo.top,S=(0,s.f3b)(o.shape,"float32"),T=n.bufferSync(a);for(let s=0;s<p.batchSize;++s)for(let e=0;e<p.inChannels;++e)for(let t=0;t<p.inDepth;++t)for(let n=0;n<p.inHeight;++n)for(let r=0;r<p.inWidth;++r){const a=t-k,o=n-N,i=r-I;let u=0;for(let t=0;t<x;t+=g){const n=(a+t)/d;if(!(n<0||n>=p.outDepth||Math.floor(n)!==n))for(let r=0;r<w;r+=y){const a=(o+r)/f;if(!(a<0||a>=p.outHeight||Math.floor(a)!==a))for(let o=0;o<v;o+=b){const l=(i+o)/m;if(l<0||l>=p.outWidth||Math.floor(l)!==l)continue;const c=x*w*v-1-h.get(s,n,a,l,e)===t*w*v+r*v+o?1:0;if(0===c)continue;u+=T.get(s,n,a,l,e)*c}}}S.set(u,s,t,n,r,e)}return n.makeTensorInfo(S.shape,S.dtype,S.values)}};const sc={kernelName:s.OV7,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{dy:a,input:o,output:i}=t,u=o;no([o,i],"maxPoolGrad");const{filterSize:l,strides:c,pad:p,dimRoundingMode:h}=r,d=s.Wap.computePool2DInfo(u.shape,l,c,1,p,h),f=n.data.get(u.dataId).values,m=(0,s.f3b)(d.outShape,u.dtype,bi(f,u.shape,u.dtype,d).values),g=d.strideHeight,y=d.strideWidth,b=d.dilationHeight,x=d.dilationWidth,w=d.effectiveFilterHeight,v=d.effectiveFilterWidth,k=v-1-d.padInfo.left,I=w-1-d.padInfo.top,N=(0,s.f3b)(u.shape,"float32"),S=n.data.get(a.dataId).values,T=(0,s.f3b)(a.shape,"float32",S);for(let s=0;s<d.batchSize;++s)for(let e=0;e<d.inChannels;++e)for(let t=0;t<d.inHeight;++t)for(let n=0;n<d.inWidth;++n){const r=t-I,a=n-k;let o=0;for(let t=0;t<w;t+=b){const n=(r+t)/g;if(!(n<0||n>=d.outHeight||Math.floor(n)!==n))for(let r=0;r<v;r+=x){const i=(a+r)/y;if(i<0||i>=d.outWidth||Math.floor(i)!==i)continue;const u=w*v-1-m.get(s,n,i,e)===t*v+r?1:0;if(0===u)continue;o+=T.get(s,n,i,e)*u}}N.set(o,s,t,n,e)}return n.makeTensorInfo(N.shape,N.dtype,N.values)}};const ac={kernelName:s.vFR,backendName:"cpu",kernelFunc:({inputs:e,attrs:t,backend:n})=>{const{x:r}=e,{filterSize:a,strides:o,pad:i,includeBatchInIndex:u}=t,l=n;no(r,"MaxPoolWithArgmax");const c=l.data.get(r.dataId).values,p=s.Wap.computePool2DInfo(r.shape,a,o,[1,1],i),[h,d]=function(e,t,n,r,a){const o=yi(e,0,n,s.D5U.computeStrides(t),a,"max"),i=bi(e,t,n,a,!0,r);return[o.values,i.values]}(c,r.shape,r.dtype,u,p),f=l.write(h,p.outShape,r.dtype),m=l.write(d,p.outShape,r.dtype);return[{dataId:f,shape:p.outShape,dtype:r.dtype},{dataId:m,shape:p.outShape,dtype:"int32"}]}};const oc={kernelName:s.q2K,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:o,keepDims:i}=r,u=s.D5U.parseAxisParam(o,a.shape),l=s.Wap.computeOutAndReduceShapes(a.shape,u)[1],c=s.D5U.sizeFromShape(l),p=[],h=n.makeTensorInfo([],"float32",new Float32Array([c]));p.push(h);const d=Ro({inputs:{x:a},backend:n,attrs:{dtype:"float32"}});p.push(d);const f=zu({inputs:{a:d,b:h},backend:n});p.push(f);const m=bu({inputs:{x:f},backend:n,attrs:{axis:o,keepDims:i}});return p.forEach((e=>n.disposeIntermediateTensorInfo(e))),m}};const ic={kernelName:s.c17,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:o,keepDims:i}=r;no(a,"min");const u=s.D5U.parseAxisParam(o,a.shape);let l=u;const c=s.Wap.getAxesPermutation(l,a.shape.length);let p=a;null!=c&&(p=ei({inputs:{x:a},backend:n,attrs:{perm:c}}),l=s.Wap.getInnerMostAxes(l.length,a.shape.length)),s.Wap.assertAxesAreInnerMostDims("min",l,p.shape.length);const[h,d]=s.Wap.computeOutAndReduceShapes(p.shape,l),f=s.D5U.sizeFromShape(d),m=s.D5U.makeZerosTypedArray(s.D5U.sizeFromShape(h),p.dtype),g=n.data.get(p.dataId).values;for(let s=0;s<m.length;++s){const e=s*f;let t=g[e];for(let n=0;n<f;++n){const r=g[e+n];(Number.isNaN(r)||r<t)&&(t=r)}m[s]=t}null!=c&&n.disposeIntermediateTensorInfo(p);const y=n.makeTensorInfo(h,p.dtype,m);if(i){const e=Uo({inputs:{x:y},backend:n,attrs:{shape:s.Wap.expandShapeToKeepDim(h,u)}});return n.disposeIntermediateTensorInfo(y),e}return y}},uc=fo(((e,t)=>Math.min(e,t))),lc=Oo(s.q8u,uc),cc={kernelName:s.q8u,backendName:"cpu",kernelFunc:lc};const pc={kernelName:s.jQs,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{paddings:o,mode:i}=r;no(a,"mirrorPad");const u=o.map(((e,t)=>e[0]+a.shape[t]+e[1])),l=o.map((e=>e[0])),c=o.map(((e,t)=>e[0]+a.shape[t])),p="reflect"===i?0:1,h=n.data.get(a.dataId).values,d=a.shape.length,f=s.D5U.computeStrides(a.shape),m=s.D5U.sizeFromShape(u),g=u.length,y=s.D5U.computeStrides(u),b=s.D5U.getTypedArrayFromDType(a.dtype,m);for(let x=0;x<m;x++){let e=s.D5U.indexToLoc(x,g,y);for(let n=0;n<g;n++)e[n]<l[n]?e[n]=2*l[n]-e[n]-p:e[n]>=c[n]&&(e[n]=2*(c[n]-1)-e[n]+p);e=e.map(((e,t)=>e-l[t]));const t=s.D5U.locToIndex(e,d,f);b[x]=h[t]}return{dataId:n.write(b,u,a.dtype),shape:u,dtype:a.dtype}}},hc=fo(((e,t)=>{const n=e%t;return e<0&&t<0||e>=0&&t>=0?n:(n+t)%t})),dc=Oo(s.Vbg,hc),fc={kernelName:s.Vbg,backendName:"cpu",kernelFunc:dc};function mc(e){const{inputs:t,backend:n,attrs:r}=e,{logits:a}=t,{dim:o}=r,i=a.shape.length;let u=o;if(-1===u&&(u=i-1),u!==i-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${i} and dim was ${u}`);const l=s.D5U.parseAxisParam([u],a.shape),c=Ql({inputs:{x:a},backend:n,attrs:{reductionIndices:l,keepDims:!1}}),p=s.Wap.expandShapeToKeepDim(c.shape,l),h=Uo({inputs:{x:c},backend:n,attrs:{shape:p}}),d=ju({inputs:{a:a,b:h},backend:n}),f=Fu({inputs:{x:d},backend:n}),m=bu({inputs:{x:f},backend:n,attrs:{axis:l,keepDims:!1}}),g=Uo({inputs:{x:m},backend:n,attrs:{shape:p}}),y=zu({inputs:{a:f,b:g},backend:n});return n.disposeIntermediateTensorInfo(c),n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(f),n.disposeIntermediateTensorInfo(m),n.disposeIntermediateTensorInfo(g),y}const gc={kernelName:s.Gcp,backendName:"cpu",kernelFunc:mc};const yc={kernelName:s.NZg,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{logits:a}=t,{numSamples:o,seed:i,normalized:u}=r;no(a,"multinomial");const l=u?a:mc({inputs:{logits:a},backend:n,attrs:{dim:-1}}),c=l.shape[0],p=l.shape[1],h=n.data.get(l.dataId).values,d=[c,o],f=s.D5U.makeZerosTypedArray(s.D5U.sizeFromShape(d),"int32");for(let s=0;s<c;++s){const e=s*p,t=new Float32Array(p-1);t[0]=h[e];for(let s=1;s<t.length;++s)t[s]=t[s-1]+h[e+s];const n=Sa.alea(i.toString()),r=s*o;for(let s=0;s<o;++s){const e=n();f[r+s]=t.length;for(let n=0;n<t.length;n++)if(e<t[n]){f[r+s]=n;break}}}return u||n.disposeIntermediateTensorInfo(l),n.makeTensorInfo(d,"int32",f)}};function bc(e,t,n){const r=s.D5U.createScalarValue(-1,n);return fu([],t,r,e,n)}const xc={kernelName:s.kuV,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n}=e,{x:r}=t;no(r,"neg");const s=n.data.get(r.dataId).values,[a,o]=bc(s,r.shape,r.dtype);return n.makeTensorInfo(o,r.dtype,a)}},wc=s.GDt.GP;const vc={kernelName:s.uv1,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{boxes:s,scores:a}=t,{maxOutputSize:o,iouThreshold:i,scoreThreshold:u}=r;no(s,"NonMaxSuppression");const l=n.data.get(s.dataId).values,c=n.data.get(a.dataId).values,{selectedIndices:p}=wc(l,c,o,i,u);return n.makeTensorInfo([p.length],"int32",new Int32Array(p))}},kc=s.GDt.qP;const Ic={kernelName:s.cye,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{boxes:s,scores:a}=t,{maxOutputSize:o,iouThreshold:i,scoreThreshold:u,padToMaxOutputSize:l}=r;no(s,"NonMaxSuppressionPadded");const c=n.data.get(s.dataId).values,p=n.data.get(a.dataId).values,{selectedIndices:h,validOutputs:d}=kc(c,p,o,i,u,l);return[n.makeTensorInfo([h.length],"int32",new Int32Array(h)),n.makeTensorInfo([],"int32",new Int32Array([d]))]}},Nc=s.GDt.pA;const Sc={kernelName:s.W0H,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{boxes:s,scores:a}=t,{maxOutputSize:o,iouThreshold:i,scoreThreshold:u,softNmsSigma:l}=r;no(s,"NonMaxSuppressionWithScore");const c=n.data.get(s.dataId).values,p=n.data.get(a.dataId).values,h=o,d=i,f=u,m=l,{selectedIndices:g,selectedScores:y}=Nc(c,p,h,d,f,m);return[n.makeTensorInfo([g.length],"int32",new Int32Array(g)),n.makeTensorInfo([y.length],"float32",new Float32Array(y))]}},Tc=fo(((e,t)=>e!==t?1:0)),Cc=Oo(s.yQU,Tc,null,"bool"),Ec={kernelName:s.yQU,backendName:"cpu",kernelFunc:Cc};const $c={kernelName:s.we_,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{indices:a}=t,{dtype:o,depth:i,onValue:u,offValue:l}=r;no(a,"oneHot");const c=s.D5U.sizeFromShape(a.shape),p=new Float32Array(c*i);p.fill(l);const h=n.data.get(a.dataId).values;for(let s=0;s<c;++s)h[s]>=0&&h[s]<i&&(p[s*i+h[s]]=u);return n.makeTensorInfo([...a.shape,i],o,p)}};function Ac(e){const{inputs:t,backend:n}=e,{x:r}=t;if("string"===r.dtype)throw new Error("zerosLike is not supported for string tensors");if("complex64"===r.dtype){const e=Ao({inputs:{input:r},backend:n}),t=Ac({inputs:{x:e},backend:n}),s=Pi({inputs:{input:r},backend:n}),a=Ac({inputs:{x:s},backend:n}),o=Co({inputs:{real:t,imag:a},backend:n});return n.disposeIntermediateTensorInfo(e),n.disposeIntermediateTensorInfo(t),n.disposeIntermediateTensorInfo(s),n.disposeIntermediateTensorInfo(a),o}return Zu({backend:n,attrs:{shape:r.shape,value:0,dtype:r.dtype}})}const Dc={kernelName:s.RuY,backendName:"cpu",kernelFunc:Ac};const _c={kernelName:s.qWM,backendName:"cpu",kernelFunc:function e(t){const{inputs:n,backend:r}=t,{x:s}=n;if("string"===s.dtype)throw new Error("onesLike is not supported for string tensors");if("complex64"===s.dtype){const t=Ao({inputs:{input:s},backend:r}),n=e({inputs:{x:t},backend:r}),a=Pi({inputs:{input:s},backend:r}),o=Ac({inputs:{x:a},backend:r}),i=Co({inputs:{real:n,imag:o},backend:r});return r.disposeIntermediateTensorInfo(t),r.disposeIntermediateTensorInfo(n),r.disposeIntermediateTensorInfo(a),r.disposeIntermediateTensorInfo(o),i}return Zu({backend:r,attrs:{shape:s.shape,value:1,dtype:s.dtype}})}};function Rc(e){const{inputs:t,backend:n,attrs:r}=e,{axis:a}=r;if(1===t.length)return Mu({inputs:{input:t[0]},backend:n,attrs:{dim:a}});const o=t[0].shape,i=t[0].dtype;t.forEach((e=>{s.D5U.assertShapesMatch(o,e.shape,"All tensors passed to stack must have matching shapes"),s.D5U.assert(i===e.dtype,(()=>"All tensors passed to stack must have matching dtypes"))}));const u=[],l=zi({inputs:t.map((e=>{const t=Mu({inputs:{input:e},backend:n,attrs:{dim:a}});return u.push(t),t})),backend:n,attrs:{axis:a}});return u.forEach((e=>n.disposeIntermediateTensorInfo(e))),l}const Fc={kernelName:s.QiL,backendName:"cpu",kernelFunc:Rc};const Oc={kernelName:s.lyA,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{paddings:o,constantValue:i}=r;no(a,"pad");const u=o.map(((e,t)=>e[0]+a.shape[t]+e[1])),l=o.map((e=>e[0])),c=n.data.get(a.dataId).values,p=s.D5U.sizeFromShape(a.shape),h=a.shape.length,d=s.D5U.computeStrides(a.shape),f=s.D5U.sizeFromShape(u),m=u.length,g=s.D5U.computeStrides(u),y=s.D5U.getTypedArrayFromDType(a.dtype,f);0!==i&&y.fill(i);for(let b=0;b<p;b++){const e=s.D5U.indexToLoc(b,h,d).map(((e,t)=>e+l[t]));y[s.D5U.locToIndex(e,m,g)]=c[b]}return{dataId:n.write(y,u,a.dtype),shape:u,dtype:a.dtype}}},Mc=fo(((e,t)=>Math.pow(e,t))),Bc=Oo(s.pe_,Mc),Lc={kernelName:s.pe_,backendName:"cpu",kernelFunc:Bc};function Wc(e,t,n,r){const[a,o]=s.Wap.computeOutAndReduceShapes(e,r),i=(0,s.x8V)(t,"int32"),u=s.D5U.makeZerosTypedArray(s.D5U.sizeFromShape(a),i),l=s.D5U.sizeFromShape(o);for(let s=0;s<u.length;++s){const e=s*l;let t=1;for(let r=0;r<l;++r)t*=n[e+r];u[s]=t}return{outVals:u,outShape:a,outDtype:i}}const Pc={kernelName:s.DlI,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:o,keepDims:i}=r;no(a,"prod");const u=a.shape.length,l=s.D5U.parseAxisParam(o,a.shape),c=s.Wap.getAxesPermutation(l,u);let p=l,h=a;const d=[];null!=c&&(h=ei({inputs:{x:a},backend:n,attrs:{perm:c}}),d.push(h),p=s.Wap.getInnerMostAxes(p.length,u));const f=n.data.get(h.dataId).values,{outVals:m,outShape:g,outDtype:y}=Wc(h.shape,h.dtype,f,p);let b=g;return i&&(b=s.Wap.expandShapeToKeepDim(g,l)),d.forEach((e=>n.disposeIntermediateTensorInfo(e))),n.makeTensorInfo(b,y,m)}};function Uc(e,t,n,r){const s=[];let a=0;const o=t.length-1+n.length,i=new Array(o).fill(null).map((()=>[0]));!function(e,t){for(let n=0;n<e.length;++n){const r=e[n],s=n===e.length-1?t:e[n+1].length;if(0===r.length)throw new Error("Ragged splits may not be empty");if(r[0]<0)throw new Error("Ragged splits must be non-negative");if(r[r.length-1]>s)throw new Error("Ragged splits must not point past values");for(let e=1;e<r.length;++e)if(r[e-1]>r[e])throw new Error("Ragged splits must be sorted in ascending order")}}(n,r);let u=1;for(let l=0;l<t.length-1;++l){u*=t[l];const e=t[l+1];for(let t=1;t<u+1;++t)i[l].push(t*e)}for(let l=0;l<e.length;++l){let r=e[l],o=e[l]+1;for(let e=0;e<n.length;++e){const s=n[e],a=e+t.length-1;if(a>=0){const e=i[a],t=e[e.length-1]-s[r];for(let n=r;n<o;++n)i[a].push(s[n+1]+t)}r=s[r],o=s[o]}o!==r&&(s.push([r,o]),a+=o-r)}return{outSplits:i,valueSlices:s,numValues:a}}function zc(e,t){const n=e.slice(0,t);for(;n.length<t;)n.push(1);for(let r=t;r<e.length;r++)n[t-1]*=e[r];return n}function Vc(e,t,n,r,a){const o=t.slice();o[0]=a;const i=s.D5U.getArrayFromDType(n,s.D5U.sizeFromShape(o)),u=e.length;return function(e,t,n,r,s,a){const o=zc(t,2)[1],i=zc(a,2)[1];let u=0;for(const l of n)for(let t=l[0];t<l[1];++t){for(let n=0;n<r;++n)s[u*i+n]=e[t*o+n];++u}}(e,t,r,0===u?0:u/t[0],i,o),[i,o]}function Gc(e,t,n,r,a,o,i,u){if(0===e.length)throw new Error("paramsNestedSplits must be non empty");if(0===t[0].length)throw new Error("Split tensors must not be scalars");if(function(e,t,n){e.forEach(((e,r)=>{if(e<0||e>=n){const a=s.D5U.indexToLoc(r,t.length,s.D5U.computeStrides(t)).join(",");throw new Error(`indices[${a}] = ${e} is not in [0, ${n})`)}}))}(o,i,t[0][0]-1),0===r.length)throw new Error("params.rank must be nonzero");const l=r[0],{outSplits:c,valueSlices:p,numValues:h}=Uc(o,i,e,l),d=function(e){const t=[];for(let n=0;n<e.length;++n){const r=e[n].length,a=s.D5U.getArrayFromDType("int32",r);t.push(a),e[n].forEach(((e,t)=>a[t]=e))}return t}(c),f=Vc(n,r,a,p,h);return[d,f[0],f[1]]}const Hc={kernelName:s.dDz,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{paramsNestedSplits:s,paramsDenseValues:a,indices:o}=t,{outputRaggedRank:i}=r,u=s.map((e=>n.data.get(e.dataId).values)),l=s.map((e=>e.shape)),c=n.data.get(a.dataId).values,p=n.data.get(o.dataId).values,[h,d,f]=Gc(u,l,c,a.shape,a.dtype,p,o.shape),m=h.map((e=>n.makeTensorInfo([e.length],"int32",e))),g=n.makeTensorInfo(f,a.dtype,d);return m.concat([g])}};var jc=s.Wap.RowPartitionType;class Xc{constructor(e,t,n,r,a,o,i,u,l,c){this.shape=e,this.shapeShape=t,this.values=n,this.valuesShape=r,this.valuesDType=a,this.defaultValue=o,this.defaultValueShape=i,this.rowPartitionValues=u,this.rowPartitionValuesShapes=l,this.rowPartitionTypes=s.Wap.getRowPartitionTypesHelper(c),this.raggedRank=s.Wap.getRaggedRank(this.rowPartitionTypes)}getRowPartitionTypeByDimension(e){return this.rowPartitionTypes[0]===jc.FIRST_DIM_SIZE?this.rowPartitionTypes[e+1]:this.rowPartitionTypes[e]}getRowPartitionTensor(e){return this.rowPartitionTypes[0]===jc.FIRST_DIM_SIZE?this.rowPartitionValues[e+1]:this.rowPartitionValues[e]}getMaxWidth(e){const t=this.getRowPartitionTensor(e-1);switch(this.getRowPartitionTypeByDimension(e-1)){case jc.VALUE_ROWIDS:return Xc.getMaxWidthValueRowID(t);case jc.ROW_SPLITS:return Xc.getMaxWidthRowSplit(t);default:throw new Error(`Cannot handle partition type ${jc[this.getRowPartitionTypeByDimension(e-1)]}`)}}static getMaxWidthRowSplit(e){const t=e.length;if(0===t||1===t)return 0;let n=0;for(let r=0;r<t-1;++r){const t=e[r+1]-e[r];t>n&&(n=t)}return n}static getMaxWidthValueRowID(e){const t=e.length;if(0===t)return 0;let n=0,r=e[0],s=0;for(let a=1;a<t;++a){const t=e[a];t!==r&&(r=t,s=Math.max(a-n,s),n=a)}return Math.max(t-n,s)}tensorShapeFromTensor(e,t,n=!0){if(0===t.length){if(-1===e[0])return[];throw new Error("The only valid scalar shape tensor is the fully unknown shape specified as -1.")}return Kc(e,n)}calculateOutputSize(e){const t=this.valuesShape,n=this.defaultValueShape;s.Wap.validateDefaultValueShape(n,t);const r=this.tensorShapeFromTensor(this.shape,this.shapeShape),a=s.Wap.combineRaggedTensorToTensorShapes(this.raggedRank,r,t);a[0]<0&&(a[0]=e);for(let s=1;s<=this.raggedRank;++s)a[s]<0&&(a[s]=this.getMaxWidth(s));return a}calculateFirstParentOutputIndex(e,t,n){const r=Math.min(e,n),a=[];let o=0;for(let s=0;s<r;++s,o+=t)a.push(o);for(let s=r;s<e;++s)a.push(-1);return s.D5U.assert(a.length===e,(()=>"Final length of result must be equal to firstDimension.")),a}calculateOutputIndexRowSplit(e,t,n,r){const s=e.length,a=[];for(let o=0;o<s-1;++o){const s=e[o+1]-e[o];let i=Math.min(r,s),u=t[o];-1===u&&(i=0);for(let e=0;e<i;++e)a.push(u),u+=n;for(let e=0;e<s-i;++e)a.push(-1)}if(s>0&&a.length!==e[s-1])throw new Error("Invalid row split size.");return a}calculateOutputIndexValueRowID(e,t,n,r){const s=e.length,a=[];if(0===s)return[];let o=0,i=e[0];if(i>=t.length)throw new Error(`Got currentValueRowId=${i}, which is not less than ${t.length}`);let u=t[i];a.push(u);for(let l=1;l<s;++l){const s=e[l];if(s===i)u>=0&&(++o,o<r?u+=n:u=-1);else{if(o=0,i=s,s>=t.length)throw new Error(`Got nextValueRowId=${s} which is not less than ${t.length}`);u=t[s]}a.push(u)}if(a.length!==e.length)throw new Error("Invalid row ids.");return a}calculateOutputIndex(e,t,n,r){const s=this.getRowPartitionTensor(e),a=this.getRowPartitionTypeByDimension(e);switch(a){case jc.VALUE_ROWIDS:return this.calculateOutputIndexValueRowID(s,t,n,r);case jc.ROW_SPLITS:if(s.length-1>t.length)throw new Error(`Row partition size is greater than output size: ${s.length-1} > ${t.length}`);return this.calculateOutputIndexRowSplit(s,t,n,r);default:throw new Error(`Unsupported partition type: ${jc[a]}`)}}getFirstDimensionSize(){const e=this.rowPartitionValues[0];if(0===this.rowPartitionTypes.length)throw new Error("No row_partition_types given.");const t=this.rowPartitionTypes[0];switch(t){case jc.FIRST_DIM_SIZE:return e[0];case jc.VALUE_ROWIDS:throw new Error("Cannot handle VALUE_ROWIDS in first dimension.");case jc.ROW_SPLITS:return this.rowPartitionValuesShapes[0][0]-1;default:throw new Error(`Cannot handle type ${jc[t]}`)}}compute(){if(this.rowPartitionValues[0].length<=0)throw new Error("Invalid first partition input. Tensor requires at least one element.");const e=this.getFirstDimensionSize(),t=this.calculateOutputSize(e),n=new Array(this.raggedRank+1);n[n.length-1]=1;for(let s=n.length-2;s>=0;--s)n[s]=n[s+1]*t[s+1];const r=Kc(t,!1),a=s.D5U.getArrayFromDType(this.valuesDType,s.D5U.sizeFromShape(r));if(n[0]*t[0]>0){let s=this.calculateFirstParentOutputIndex(e,n[0],t[0]);for(let e=1;e<=this.raggedRank;++e){s=this.calculateOutputIndex(e-1,s,n[e],t[e])}this.setOutput(this.raggedRank,s,a,r)}return[r,a]}setOutput(e,t,n,r){if(0===n.length)return;const a=this.values,o=n;let i=r.slice();i=i.slice(e+1);const u=s.D5U.sizeFromShape(i),l=t.length;let c=this.defaultValue;if(c.length!==u&&1!==c.length){const e=this.defaultValueShape;(0,s.lub)((()=>{const t=(0,s.XLQ)(c,e),n=(0,s.UFq)(t,i);c=n.dataSync()}))}let p=0,h=0,d=0;for(let s=0;s<=l;++s){let e=s<l?t[s]:-1;if(e!==d){if(h<d){const e=a.subarray(p*u);qc(o.subarray(h*u),e,(d-h)*u)}if(s>=l){const t=n.length;e=Math.floor(t/u)}if(e>d)if(1===this.defaultValue.length)o.subarray(d*u,e*u).fill(this.defaultValue[0]),d=e;else for(;e>d;){qc(o.slice(d*u),c,u),++d}e<0?(p=s+1,h=d):(p=s,h=d,d=h+1)}else++d}}}function qc(e,t,n){for(let r=0;r<n;r++)e[r]=t[r]}function Kc(e,t){const n=[];for(let r of e){if(r<0){if(!t)throw new Error(`Dimension ${r} must be >= 0`);if(r<-1)throw new Error(`Dimension ${r} must be >= -1`);r=-1}n.push(r)}return n}function Qc(e,t,n,r,s,a,o,i,u,l){return new Xc(e,t,n,r,s,a,o,i,u,l).compute()}const Yc={kernelName:s.BiW,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{shape:s,values:a,defaultValue:o,rowPartitionTensors:i}=t,{rowPartitionTypes:u}=r,l=n.data.get(s.dataId).values,c=n.data.get(a.dataId).values,p=n.data.get(o.dataId).values,h=i.map((e=>n.data.get(e.dataId).values)),d=i.map((e=>e.shape)),[f,m]=Qc(l,s.shape,c,a.shape,a.dtype,p,o.shape,h,d,u);return n.makeTensorInfo(f,a.dtype,m)}};function Zc(e,t,n,r){if(e===t||e<t&&n<0||t<e&&n>1)return s.D5U.makeZerosTypedArray(0,r);const a=Math.abs(Math.ceil((t-e)/n)),o=s.D5U.makeZerosTypedArray(a,r);t<e&&1===n&&(n=-1),o[0]=e;for(let s=1;s<o.length;s++)o[s]=o[s-1]+n;return o}const Jc={kernelName:s.e6w,backendName:"cpu",kernelFunc:function(e){const{backend:t,attrs:n}=e,{start:r,stop:s,dtype:a,step:o}=n,i=Zc(r,s,o,a);return t.makeTensorInfo([i.length],a,i)}},ep=ao(s.$HU,(e=>1/e)),tp={kernelName:s.$HU,backendName:"cpu",kernelFunc:ep};const np={kernelName:s._Yw,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{images:a}=t,{alignCorners:o,halfPixelCenters:i,size:u}=r;no(a,"resizeBilinear");const l=s.D5U.computeStrides(a.shape),[c,p]=u,[h,d,f,m]=a.shape,g=n.data.get(a.dataId).values,y=new Float32Array(s.D5U.sizeFromShape([h,c,p,m])),b=[o&&c>1?d-1:d,o&&p>1?f-1:f],x=[o&&c>1?c-1:c,o&&p>1?p-1:p];let w=0;const v=b[0]/x[0],k=b[1]/x[1];for(let s=0;s<h;s++)for(let e=0;e<c;e++){let t;t=i?v*(e+.5)-.5:v*e;const n=Math.max(0,Math.floor(t)),r=t-n,a=Math.min(d-1,Math.ceil(t)),o=s*l[0]+n*l[1],u=s*l[0]+a*l[1];for(let e=0;e<p;e++){let t;t=i?k*(e+.5)-.5:k*e;const n=Math.max(0,Math.floor(t)),s=t-n,a=Math.min(f-1,Math.ceil(t)),c=o+n*l[2],p=u+n*l[2],h=o+a*l[2],d=u+a*l[2];for(let e=0;e<m;e++){const t=g[c+e],n=g[p+e],a=t+(g[h+e]-t)*s,o=a+(n+(g[d+e]-n)*s-a)*r;y[w++]=o}}}return n.makeTensorInfo([h,c,p,m],"float32",y)}};const rp={kernelName:s.zbQ,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{images:a,dy:o}=t,{alignCorners:i}=r;no([o,a],"resizeBilinearGrad");const u=s.D5U.computeStrides(a.shape),[l,c,p,h]=a.shape,[,d,f]=o.shape,m=new Float32Array(l*c*p*h),g=[i&&d>1?c-1:c,i&&f>1?p-1:p],y=[i&&d>1?d-1:d,i&&f>1?f-1:f],b=g[0]/y[0],x=g[1]/y[1],w=n.data.get(o.dataId).values;let v=0;for(let s=0;s<l;s++){const e=s*u[0];for(let t=0;t<d;t++){const n=t*b,r=Math.floor(n),s=Math.min(Math.ceil(n),c-1),a=e+r*u[1],o=e+s*u[1],i=n-r,l=1-i;for(let e=0;e<f;e++){const t=e*x,n=Math.floor(t),r=Math.min(Math.ceil(t),p-1),s=t-n,c=1-s,d=a+n*u[2],f=a+r*u[2],g=o+n*u[2],y=o+r*u[2],b=l*c,k=l*s,I=i*c,N=i*s;for(let e=0;e<h;e++){const t=w[v++];m[d+e]+=t*b,m[f+e]+=t*k,m[g+e]+=t*I,m[y+e]+=t*N}}}}return n.makeTensorInfo([l,p,c,h],"float32",m)}};const sp={kernelName:s.dpD,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{images:a}=t,{alignCorners:o,halfPixelCenters:i,size:u}=r;no(a,"resizeNearestNeighbor");const l=s.D5U.computeStrides(a.shape),[c,p]=u,[h,d,f,m]=a.shape,g=n.data.get(a.dataId).values,y=new Float32Array(h*c*p*m),b=[o&&c>1?d-1:d,o&&p>1?f-1:f],x=[o&&c>1?c-1:c,o&&p>1?p-1:p],w=b[0]/x[0],v=b[1]/x[1];let k=0;for(let s=0;s<h;s++){const e=s*l[0];for(let t=0;t<c;t++){const n=i?w*(t+.5):w*t;let r=Math.min(d-1,o?Math.round(n):Math.floor(n));i&&(r=Math.max(0,r));const s=e+r*l[1];for(let e=0;e<p;e++){const t=i?v*(e+.5):v*e;let n=Math.min(f-1,o?Math.round(t):Math.floor(t));i&&(n=Math.max(0,n));const r=s+n*l[2];for(let e=0;e<m;e++){const t=g[r+e];y[k++]=t}}}}return n.makeTensorInfo([h,c,p,m],a.dtype,y)}};const ap={kernelName:s.Hmb,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{images:a,dy:o}=t,{alignCorners:i}=r;no([o,a],"resizeNearestNeighborGrad");const u=s.D5U.computeStrides(a.shape),l=s.D5U.computeStrides(o.shape),[c,p,h,d]=a.shape,[,f,m]=o.shape,g=new Float32Array(c*p*h*d),y=n.data.get(o.dataId).values,b=[i&&f>1?p-1:p,i&&m>1?h-1:h],x=[i&&f>1?f-1:f,i&&m>1?m-1:m],w=b[0]/x[0],v=b[1]/x[1],k=1/w,I=1/v,N=2*Math.ceil(k)+2,S=2*Math.ceil(I)+2;for(let s=0;s<c;s++){const e=s*u[0];for(let t=0;t<p;t++){const n=e+t*u[1],r=Math.floor(t*k),s=Math.floor(r-N/2);for(let a=0;a<h;a++){const r=n+a*u[2],o=Math.floor(a*I),c=Math.floor(o-S/2);for(let n=0;n<d;n++){let o=0;for(let r=0;r<N;r++){const u=r+s;if(u<0||u>=f)continue;const d=e+u*l[1],g=u*w;if(t===Math.min(p-1,i?Math.round(g):Math.floor(g)))for(let e=0;e<S;e++){const t=e+c;if(t<0||t>=m)continue;const r=d+t*l[2],s=t*v;a===Math.min(h-1,i?Math.round(s):Math.floor(s))&&(o+=y[r+n])}}g[r+n]=o}}}}return n.makeTensorInfo(a.shape,a.dtype,g)}};const op={kernelName:s.mKl,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dims:o}=r;no(a,"reverse");const i=a.shape.length,u=s.D5U.parseAxisParam(o,a.shape);if(0===i)return lo({inputs:{x:a},backend:n});const l=new s.YDk(a.shape,a.dtype),c=n.bufferSync(a);for(let s=0;s<l.size;s++){const e=l.indexToLoc(s),t=e.slice();u.forEach((e=>t[e]=a.shape[e]-1-t[e])),l.set(c.get(...t),...e)}return n.makeTensorInfo(l.shape,l.dtype,l.values)}},ip={kernelName:s.b9H,backendName:"cpu",kernelFunc:({inputs:e,attrs:t,backend:n})=>{const{image:r}=e,{radians:a,fillValue:o,center:i}=t,u=n,l=s.D5U.getTypedArrayFromDType(r.dtype,s.D5U.sizeFromShape(r.shape)),[c,p,h,d]=r.shape,[f,m]=s.Wap.getImageCenter(i,p,h),g=Math.sin(a),y=Math.cos(a),b=u.data.get(r.dataId).values;for(let s=0;s<c;s++){const e=s*h*p*d;for(let t=0;t<p;t++){const n=t*(h*d);for(let r=0;r<h;r++){const s=r*d;for(let a=0;a<d;a++){const i=[c,t,r,a],u=i[2],x=i[1];let w=(u-f)*y-(x-m)*g,v=(u-f)*g+(x-m)*y;w=Math.round(w+f),v=Math.round(v+m);let k=o;if("number"!==typeof o&&(k=3===a?255:o[a]),w>=0&&w<h&&v>=0&&v<p){k=b[e+v*(h*d)+w*d+a]}l[e+n+s+a]=k}}}}return{dataId:u.write(l,r.shape,r.dtype),shape:r.shape,dtype:r.dtype}}},up=ao(s.e07,(e=>{const t=Math.floor(e);return e-t<.5?Math.floor(e):e-t>.5?Math.ceil(e):t%2===0?t:t+1})),lp={kernelName:s.e07,backendName:"cpu",kernelFunc:up},cp=ko((e=>1/Math.sqrt(e))),pp=oo(s.bV0,cp),hp={kernelName:s.bV0,backendName:"cpu",kernelFunc:pp};function dp(e,t,n,r,a,o,i,u,l,c){const p=[r/a,a],h=e.values,d=t.values;if(0===r)return(0,s.f3b)(n,t.dtype);const f=(0,s.f3b)(p,t.dtype);"string"===typeof l||"number"===typeof l?f.values.fill(l):"boolean"===typeof l&&f.values.fill(+l);for(let s=0;s<o;s++){const e=[];let o=0;for(let t=0;t<i;t++){const n=h[s*i+t];e.push(n),o+=n*u[t]}if(o<0||o>=r/a)throw new Error(`Invalid indices: ${e} does not index into ${n}`);for(let n=0;n<a;n++)c?f.values[o*a+n]+=d[s*a+n]:f.values[o*a+n]=0===t.rank?d[0]:d[s*a+n]}return f}const fp={kernelName:s.xQA,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{indices:a,updates:o}=t,{shape:i}=r,{sliceRank:u,numUpdates:l,sliceSize:c,strides:p,outputSize:h}=s.Wap.calculateShapes(o,a,i),d=dp(n.bufferSync(a),n.bufferSync(o),i,h,c,l,u,p,0,!0);return n.makeTensorInfo(i,d.dtype,d.values)}};function mp(e,t){let n=0,r=e.length,s=0;for(;n<r;)s=Math.floor((n+r)/2),e[s]<t?n=s+1:r=s;return r}function gp(e,t){let n=0,r=e.length,s=0;for(;n<r;)s=Math.floor((n+r)/2),e[s]<=t?n=s+1:r=s;return r}const yp={kernelName:s.nr8,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{sortedSequence:a,values:o}=t,{side:i}=r,u=function(e,t,n,r,a,o){const i=s.D5U.getArrayFromDType("int32",n*a);for(let s=0;s<n;++s){const n=e.slice(s*r,(s+1)*r),u=s*a;for(let e=0;e<a;++e)i[u+e]="left"===o?mp(n,t[e+u]):gp(n,t[e+u])}return i}(n.data.get(a.dataId).values,n.data.get(o.dataId).values,a.shape[0],a.shape[1],o.shape[1],i);return n.makeTensorInfo(o.shape,"int32",u)}};const bp={kernelName:s.PhF,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n}=e,{condition:r,t:a,e:o}=t;no([r,a,o],"select");const i=r.shape.length,u=n.data.get(r.dataId).values,l=n.data.get(a.dataId).values,c=n.data.get(o.dataId).values,p=(0,s.x8V)(a.dtype,o.dtype),h=s.D5U.makeZerosTypedArray(s.D5U.sizeFromShape(a.shape),p);let d=0;const f=0===i||i>1||1===a.shape.length?1:s.D5U.sizeFromShape(a.shape.slice(1));for(let s=0;s<u.length;s++)for(let e=0;e<f;e++)1===u[s]?h[d++]=l[s]:h[d++]=c[s];return n.makeTensorInfo(a.shape,p,h)}},xp=s.Wap.SELU_SCALEALPHA,wp=s.Wap.SELU_SCALE,vp=ao(s.oFR,(e=>e>=0?wp*e:xp*(Math.exp(e)-1))),kp={kernelName:s.oFR,backendName:"cpu",kernelFunc:vp},Ip=ao(s.i5y,(e=>e<0?-1:e>0?1:0)),Np={kernelName:s.i5y,backendName:"cpu",kernelFunc:Ip},Sp=ao(s.RQH,(e=>Math.sin(e))),Tp={kernelName:s.RQH,backendName:"cpu",kernelFunc:Sp},Cp=ao(s.wYB,(e=>Math.sinh(e))),Ep={kernelName:s.wYB,backendName:"cpu",kernelFunc:Cp},$p=Math.log(1.1920928955078125e-7)+2,Ap=ao(s.MRv,(e=>{const t=e>-$p,n=e<$p,r=Math.exp(e);let s;return s=n?r:t?e:Math.log(1+r),s})),Dp={kernelName:s.MRv,backendName:"cpu",kernelFunc:Ap};const _p={kernelName:s.TQc,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{blockShape:o,paddings:i}=r;no([a],"spaceToBatchND");const u=s.D5U.sizeFromShape(o),l=[[0,0]];l.push(...i);for(let s=1+o.length;s<a.shape.length;++s)l.push([0,0]);const c=Oc.kernelFunc({inputs:{x:a},backend:n,attrs:{paddings:l,constantValue:0}}),p=s.Wap.getReshaped(c.shape,o,u,!1),h=s.Wap.getPermuted(p.length,o.length,!1),d=s.Wap.getReshapedPermuted(c.shape,o,u,!1),f=Uo({inputs:{x:c},backend:n,attrs:{shape:p}}),m=ei({inputs:{x:f},backend:n,attrs:{perm:h}}),g=Uo({inputs:{x:m},backend:n,attrs:{shape:d}});return n.disposeIntermediateTensorInfo(c),n.disposeIntermediateTensorInfo(f),n.disposeIntermediateTensorInfo(m),g}};function Rp(e,t,n,r,a,o,i){const u=t[0],l=o[0],c=new Array(l),p=new Array(u),h=t[1];if(0===l){if(0!==u)throw new Error(s.Wap.getSparseFillEmptyRowsIndicesDenseShapeMismatch(u));return[s.D5U.getArrayFromDType(n,0),[0,h],s.D5U.getArrayFromDType(a,0),c,p]}let d=!0,f=0;const m=new Array(l).fill(0);for(let y=0;y<u;++y){const t=e[y*h];if(t<0)throw new Error(s.Wap.getSparseFillEmptyRowsNegativeIndexErrorMessage(y,t));if(t>=l)throw new Error(s.Wap.getSparseFillEmptyRowsOutOfRangeIndexErrorMessage(y,t,l));++m[t],d=d&&t>=f,f=t}let g=!0;for(let s=0;s<l;++s){const e=0===m[s];c[s]=e,g=g&&!e,m[s]=Math.max(m[s],1),s>0&&(m[s]+=m[s-1])}if(g&&d){const t=e,n=r;for(let e=0;e<u;++e)p[e]=e;return[t,[u,h],n,c,p]}{const t=m[l-1],o=s.D5U.getArrayFromDType(n,t*h),d=s.D5U.getArrayFromDType(a,t),f=new Array(l).fill(0);for(let n=0;n<u;++n){const t=e[n*h],s=f[t],a=(0===t?0:m[t-1])+s;f[t]++;for(let r=0;r<h;++r)o[a*h+r]=e[n*h+r];d[a]=r[n],p[n]=a}for(let e=0;e<l;++e){if(0===f[e]){const t=0===e?0:m[e-1];o[t*h+0]=e;for(let e=1;e<h;++e)o[t*h+e]=0;d[t]=i}}return[o,[t,h],d,c,p]}}const Fp={kernelName:s.O3z,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n}=e,{indices:r,values:s,denseShape:a,defaultValue:o}=t;if(1!==a.shape.length)throw new Error(`Dense shape must be a vector, saw:\n        ${a.shape}`);if(2!==r.shape.length)throw new Error(`Indices must be a matrix, saw:\n        ${r.shape}`);if(1!==s.shape.length)throw new Error(`Values must be a vector, saw:\n        ${s.shape}`);if(0!==o.shape.length)throw new Error(`Default value must be a scalar, saw:\n        ${o.shape}`);const i=n.data.get(r.dataId).values,u=n.data.get(s.dataId).values,l=n.data.get(a.dataId).values,c=n.data.get(o.dataId).values[0],[p,h,d,f,m]=Rp(i,r.shape,r.dtype,u,s.dtype,l,c);return[n.makeTensorInfo(h,r.dtype,p),n.makeTensorInfo([h[0]],s.dtype,d),n.makeTensorInfo([f.length],"bool",new Uint8Array(f.map((e=>Number(e))))),n.makeTensorInfo([m.length],r.dtype,new Int32Array(m))]}};function Op(e,t,n,r,a){const o=s.D5U.sizeFromShape(r),i=t[0],u=a.length,l=[];let c=1,p=-1;for(let g=0;g<u;++g){const e=a[g];if(-1===e){if(-1!==p)throw new Error(s.Wap.getSparseReshapeMultipleNegativeOneOutputDimErrorMessage(p,g));p=g,l.push(1)}else{if(e<0)throw new Error(s.Wap.getSparseReshapeNegativeOutputDimErrorMessage(g,e));c*=e,l.push(e)}}if(-1!==p){if(c<=0)throw new Error(s.Wap.getSparseReshapeEmptyTensorZeroOutputDimErrorMessage());const e=Math.trunc(o/c);if(c*e!==o)throw new Error(s.Wap.getSparseReshapeInputOutputMultipleErrorMessage(r,l));l[p]=e}if(s.D5U.sizeFromShape(l)!==o)throw new Error(s.Wap.getSparseReshapeInputOutputMismatchErrorMessage(r,l));const h=r.length,d=[];if(h>0){d[h-1]=1;for(let e=h-2;e>=0;--e)d[e]=d[e+1]*r[e+1]}const f=[];if(u>0){f[u-1]=1;for(let e=u-2;e>=0;--e)f[e]=f[e+1]*l[e+1]}const m=s.D5U.getArrayFromDType(n,i*u);for(let s=0;s<i;++s){let t=0;for(let n=0;n<h;++n)t+=e[s*h+n]*d[n];for(let e=0;e<u;++e)m[s*u+e]=Math.trunc(t/f[e]),t%=f[e]}return[m,[i,u],l]}const Mp={kernelName:s.nhH,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n}=e,{inputIndices:r,inputShape:s,newShape:a}=t;if(2!==r.shape.length)throw new Error(`Input indices should be a matrix but received shape\n        ${r.shape}`);if(1!==s.shape.length)throw new Error(`Input shape should be a vector but received shape\n        ${s.shape}`);if(1!==a.shape.length)throw new Error(`Target shape should be a vector but received shape ${a.shape}`);const o=Array.from(n.data.get(s.dataId).values),i=n.data.get(r.dataId).values,u=Array.from(n.data.get(a.dataId).values),[l,c,p]=Op(i,r.shape,r.dtype,o,u);return[n.makeTensorInfo(c,r.dtype,l),n.makeTensorInfo([p.length],a.dtype,new Int32Array(p))]}};function Bp(e,t,n,r,a,o=!1,i=0){const u=r.length,l=[t[0],e.length/t[0]],c=l[1],p=u>0?a[u-1]+1:0;if(p<0)throw new Error(s.Wap.getSparseSegmentReductionNegativeSegmentIdsErrorMessage());const h=t.slice();h[0]=p;const d=h.reduce(((e,t)=>e*t),1),f=s.D5U.getArrayFromDType(n,d);if(0===u)return p>0&&f.fill(i),[f,h];if(p<=0)throw new Error(s.Wap.getSparseSegmentReductionNegativeSegmentIdsErrorMessage());let m=0,g=1,y=0,b=a[m];for(;;){let t=0;if(g<u){if(t=a[g],b===t){++g;continue}if(b>=t)throw new Error(s.Wap.getSparseSegmentReductionNonIncreasingSegmentIdsErrorMessage())}if(b<0||b>=p)throw new Error(s.Wap.getSparseSegmentReductionSegmentIdOutOfRangeErrorMessage(b,p));b>y&&f.fill(i,y*c,b*c);for(let n=m;n<g;++n){const t=r[n];if(t<0||t>=l[0])throw new Error(s.Wap.getSparseSegmentReductionIndicesOutOfRangeErrorMessage(n,r[n],l[0]));for(let n=0;n<c;n++)f[b*c+n]+=e[t*c+n]}if(o)for(let e=0;e<c;e++)f[b*c+e]/=g-m;if(m=g,++g,y=b+1,b=t,g>u)break}return y<p&&f.fill(i,y*c,p*c),[f,h]}const Lp={kernelName:s.w3H,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n}=e,{data:r,indices:s,segmentIds:a}=t;if(r.shape.length<1)throw new Error("Data should be at least 1 dimensional but received scalar");if(1!==s.shape.length)throw new Error(`Indices should be a vector but received shape\n          ${s.shape}`);if(1!==a.shape.length)throw new Error(`Segment ids should be a vector but received shape\n          ${a.shape}`);if(s.shape[0]!==a.shape[0])throw new Error("segmentIds and indices should have same size.");const o=n.data.get(r.dataId).values,i=n.data.get(s.dataId).values,u=n.data.get(a.dataId).values,[l,c]=Bp(o,r.shape,r.dtype,i,u,!0);return n.makeTensorInfo(c,r.dtype,l)}};const Wp={kernelName:s.ZjV,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n}=e,{data:r,indices:s,segmentIds:a}=t;if(r.shape.length<1)throw new Error("Data should be at least 1 dimensional but received scalar");if(1!==s.shape.length)throw new Error(`Indices should be a vector but received shape\n         ${s.shape}`);if(1!==a.shape.length)throw new Error(`Segment ids should be a vector but received shape\n         ${a.shape}`);if(s.shape[0]!==a.shape[0])throw new Error("segmentIds and indices should have same size.");const o=n.data.get(r.dataId).values,i=n.data.get(s.dataId).values,u=n.data.get(a.dataId).values,[l,c]=Bp(o,r.shape,r.dtype,i,u);return n.makeTensorInfo(c,r.dtype,l)}};const Pp={kernelName:s.D2d,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{sparseIndices:a,sparseValues:o,defaultValue:i}=t,{outputShape:u}=r,{sliceRank:l,numUpdates:c,sliceSize:p,strides:h,outputSize:d}=s.Wap.calculateShapes(o,a,u),f=!1,m=n.bufferSync(a);let g;switch(o.dtype){case"bool":g=dp(m,n.bufferSync(o),u,d,p,c,l,h,Boolean(n.data.get(i.dataId).values[0]),f);break;case"float32":g=dp(m,n.bufferSync(o),u,d,p,c,l,h,n.data.get(i.dataId).values[0],f);break;case"int32":g=dp(m,n.bufferSync(o),u,d,p,c,l,h,n.data.get(i.dataId).values[0],f);break;case"string":g=dp(m,n.bufferSync(o),u,d,p,c,l,h,s.D5U.decodeString(n.data.get(i.dataId).values[0]),f);break;default:throw new Error(`Unsupported type ${o.dtype}`)}return n.makeTensorInfo(u,g.dtype,g.values)}};const Up={kernelName:s.L8s,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{numOrSizeSplits:o,axis:i}=r,u=s.D5U.parseAxisParam(i,a.shape)[0],l=s.Wap.prepareSplitSize(a,o,u),c=new Array(a.shape.length).fill(0),p=a.shape.slice();return l.map((e=>{const t=[...p];t[u]=e;const r=Ti({inputs:{x:a},backend:n,attrs:{begin:c,size:t}});return c[u]+=e,r}))}},zp=ko((e=>Math.sqrt(e))),Vp=ao(s.FKq,(e=>Math.sqrt(e))),Gp={kernelName:s.FKq,backendName:"cpu",kernelFunc:Vp},Hp={kernelName:s.bK0,backendName:"cpu",kernelFunc:({inputs:e,backend:t})=>{const{x:n}=e,r=t;no(n,"square");const s=r.data.get(n.dataId).values,a=new Float32Array(s.length);for(let o=0;o<s.length;++o){const e=s[o];a[o]=e*e}return{dataId:r.write(a,n.shape,n.dtype),shape:n.shape,dtype:n.dtype}}},jp=fo(((e,t)=>{const n=e-t;return n*n})),Xp=Oo(s._tC,jp),qp={kernelName:s._tC,backendName:"cpu",kernelFunc:Xp},Kp=ao(s.h8e,((e,t)=>{const n=t;return isNaN(e)?NaN:e>0?1:n.alpha})),Qp={kernelName:s.h8e,backendName:"cpu",kernelFunc:Kp};function Yp(e,t,n,r){const a=(0,s.f3b)(e,t.dtype);for(let s=0;s<a.size;s++){const e=a.indexToLoc(s),o=new Array(e.length);for(let t=0;t<o.length;t++)o[t]=e[t]*n[t]+r[t];a.set(t.get(...o),...e)}return a}const Zp={kernelName:s.jQk,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{begin:o,end:i,strides:u,beginMask:l,endMask:c,ellipsisMask:p,newAxisMask:h,shrinkAxisMask:d}=r;no(a,"stridedSlice");const{finalShapeSparse:f,finalShape:m,isIdentity:g,sliceDim0:y,isSimpleSlice:b,begin:x,end:w,strides:v}=s.kuN.sliceInfo(a.shape,o,i,u,l,c,p,h,d);let k;if(g)k=Uo({inputs:{x:a},backend:n,attrs:{shape:m}});else if(y||b){s.D5U.assert(a.shape.length>=1,(()=>`Input must have rank at least 1, got: ${a.shape.length}`));const e=s.kuN.computeOutShape(x,w,v),t=Ti({inputs:{x:a},backend:n,attrs:{begin:x,size:e}});k=Uo({inputs:{x:t},backend:n,attrs:{shape:m}}),n.disposeIntermediateTensorInfo(t)}else{const e=Yp(f,n.bufferSync(a),v,x);k=n.makeTensorInfo(m,e.dtype,e.values)}return k}};class Jp{constructor(e,t,n,r,a,o){this.separator=s.D5U.encodeString(e),this.nGramWidths=t,this.leftPad=s.D5U.encodeString(n),this.rightPad=s.D5U.encodeString(r),this.padWidth=a,this.preserveShort=o}getPadWidth(e){return Math.min(this.padWidth<0?e-1:this.padWidth,e-1)}getNumNGrams(e,t){const n=this.getPadWidth(t);return Math.max(0,e+2*n-t+1)}createNGrams(e,t,n,r,s,a){for(let o=0;o<s;++o){const i=this.getPadWidth(a),u=Math.max(0,i-o),l=Math.max(0,i-(s-(o+1))),c=a-(u+l),p=t+(u>0?0:o-i);let h=0;h+=u*this.leftPad.length;for(let t=0;t<c;++t)h+=e[p+t].length;h+=l*this.rightPad.length;h+=(u+l+c-1)*this.separator.length,n[r+o]=new Uint8Array(h);const d=n[r+o];let f=0;const m=e=>e.forEach((e=>d[f++]=e));for(let e=0;e<u;++e)m(this.leftPad),m(this.separator);for(let t=0;t<c-1;++t)m(e[p+t]),m(this.separator);if(c>0){m(e[p+c-1]);for(let e=0;e<l;++e)m(this.separator),m(this.rightPad)}else{for(let e=0;e<l-1;++e)m(this.rightPad),m(this.separator);m(this.rightPad)}}}compute(e,t){const n=e.length,r=t.length;if(r>0){let e=t[0];if(0!==e)throw new Error(`First split value must be 0, got ${e}`);for(let s=1;s<r;++s){let r=t[s]>=e;if(r=r&&t[s]<=n,!r)throw new Error(`Invalid split value ${t[s]}, must be in [${e}, ${n}]`);e=t[s]}if(e!==n)throw new Error(`Last split value must be data size. Expected ${n}, got ${e}`)}const a=r-1,o=s.D5U.getArrayFromDType("int32",r);if(0===n||0===r){const e=new Array(n);for(let t=0;t<=a;++t)o[t]=0;return[e,o]}o[0]=0;for(let s=1;s<=a;++s){const e=t[s]-t[s-1];let n=0;this.nGramWidths.forEach((t=>{n+=this.getNumNGrams(e,t)})),this.preserveShort&&e>0&&0===n&&(n=1),o[s]=o[s-1]+n}const i=new Array(o[a]);for(let s=0;s<a;++s){const n=t[s];let r=o[s];if(this.nGramWidths.forEach((a=>{const o=t[s+1]-t[s],u=this.getNumNGrams(o,a);this.createNGrams(e,n,i,r,u,a),r+=u})),this.preserveShort&&r===o[s]){const a=t[s+1]-t[s];if(0===a)continue;const o=a+2*this.padWidth,u=1;this.createNGrams(e,n,i,r,u,o)}}return[i,o]}}function eh(e,t,n,r,s,a,o,i){return new Jp(n,r,s,a,o,i).compute(e,t)}const th={kernelName:s._JP,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{separator:s,nGramWidths:a,leftPad:o,rightPad:i,padWidth:u,preserveShortSequences:l}=r,{data:c,dataSplits:p}=t,h=n.data.get(c.dataId).values,d=n.data.get(p.dataId).values,[f,m]=eh(h,d,s,a,o,i,u,l);return[n.makeTensorInfo([f.length],"string",f),n.makeTensorInfo(p.shape,"int32",m)]}};function nh(e,t,n,r){if(!e.length)return;if(0===t.length){for(let t=0;t<e.length;++t)r.push(e.subarray(t,t+1));return}if(1===t.length){const s=t[0];let a=e.indexOf(s);for(;-1!==a;){const t=e.subarray(0,a);n&&0===t.length||r.push(t),a=(e=e.subarray(a+1)).indexOf(s)}return void(n&&0===e.length||r.push(e))}let s=0;for(let a=0;a<e.length+1;a++)if(a===e.length||-1!==t.indexOf(e[a])){const t=e.subarray(s,a);n&&0===t.length||r.push(t),s=a+1}}function rh(e,t,n){const r=e.length,a=[];let o=0,i=0;const u=new Array(r);for(let s=0;s<r;++s){const r=a.length;nh(e[s],t,n,a);const l=a.length-r;u[s]=l,o+=l,i=Math.max(i,l)}const l=s.D5U.getArrayFromDType("int32",2*o),c=new Array(o),p=[r,i];let h=0;for(let s=0;s<r;++s)for(let e=0;e<u[s];++e)l[2*h]=s,l[2*h+1]=e,c[h]=a[h],++h;return[l,c,p]}const sh={kernelName:s.s1s,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{skipEmpty:s}=r,{input:a,delimiter:o}=t;if("string"!==a.dtype)throw new Error("Input must be of datatype string");if(1!==a.shape.length)throw new Error(`Input must be a vector, got shape: ${a.shape}`);if(0!==o.shape.length)throw new Error(`Delimiter must be a scalar, got shape: ${o.shape}`);const i=n.data.get(a.dataId).values,u=n.data.get(o.dataId).values[0],[l,c,p]=rh(i,u,s),h=c.length;return[n.makeTensorInfo([h,2],"int32",l),n.makeTensorInfo([h],"string",c),n.makeTensorInfo([2],"int32",new Int32Array(p))]}};function ah(e,t){const n=s.D5U.getArrayFromDType("int32",e.length);for(let r=0;r<e.length;++r)n[r]=s.D5U.fingerPrint64(e[r]).modulo(t).getLowBitsUnsigned();return n}const oh={kernelName:s.XkS,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{numBuckets:s}=r,{input:a}=t;if("string"!==a.dtype)throw new Error("Input must be of datatype string");if(s<=0)throw new Error("Number of buckets must be at least 1");const o=ah(n.data.get(a.dataId).values,s);return n.makeTensorInfo(a.shape,"int32",o)}},ih=ao(s.sEM,(e=>Math.tan(e))),uh={kernelName:s.sEM,backendName:"cpu",kernelFunc:ih},lh=ao(s.MIZ,(e=>Math.tanh(e))),ch={kernelName:s.MIZ,backendName:"cpu",kernelFunc:lh};function ph(e,t){const n=new Array(e.rank);for(let s=0;s<n.length;s++)n[s]=e.shape[s]*t[s];const r=(0,s.f3b)(n,e.dtype);for(let s=0;s<r.values.length;++s){const t=r.indexToLoc(s),n=new Array(e.rank);for(let r=0;r<n.length;r++)n[r]=t[r]%e.shape[r];const a=e.locToIndex(n);r.values[s]=e.values[a]}return r}const hh={kernelName:s.n9L,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:s}=t,{reps:a}=r;no(s,"tile");const o=ph(n.bufferSync(s),a);return n.makeTensorInfo(o.shape,o.dtype,o.values)}},dh=(e,t)=>{const n=t.value-e.value;return 0===n?e.index-t.index:n};function fh(e,t,n=0,r=e.length-1){for(;r>n;){if(r-n>600){const s=r-n+1,a=t-n+1,o=Math.log(s),i=.5*Math.exp(2*o/3),u=.5*Math.sqrt(o*i*(s-i)/s)*Math.sign(a-s/2);fh(e,t,Math.max(n,Math.floor(t-a*i/s+u)),Math.min(r,Math.floor(t+(s-a)*i/s+u)))}const a=e[t];let o=n,i=r;for(s.D5U.swap(e,n,t),dh(e[r],a)>0&&s.D5U.swap(e,n,r);o<i;){for(s.D5U.swap(e,o,i),o++,i--;dh(e[o],a)<0;)o+=1;for(;dh(e[i],a)>0;)i-=1}0===dh(e[n],a)?s.D5U.swap(e,n,i):(i+=1,s.D5U.swap(e,i,r)),i<=t&&(n=i+1),t<=i&&(r=i-1)}}function mh(e,t,n,r,a){const o=t[t.length-1],[i,u]=[e.length/o,o],l=s.D5U.getTypedArrayFromDType(n,i*r),c=s.D5U.getTypedArrayFromDType("int32",i*r);for(let s=0;s<i;s++){const t=s*u,n=e.subarray(t,t+u);let o=new Array(n.length);n.forEach(((e,t)=>o[t]={value:e,index:t})),r<o.length&&(fh(o,r),o=o.slice(0,r)),a&&o.sort(dh);const i=s*r,p=l.subarray(i,i+r),h=c.subarray(i,i+r);for(let e=0;e<r;e++)p[e]=o[e].value,h[e]=o[e].index}const p=t.slice();return p[p.length-1]=r,[(0,s.f3b)(p,n,l),(0,s.f3b)(p,"int32",c)]}const gh={kernelName:s.cWu,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:s}=t,{k:a,sorted:o}=r;no(s,"topk");const i=n.data.get(s.dataId).values,[u,l]=mh(i,s.shape,s.dtype,a,o);return[n.makeTensorInfo(u.shape,u.dtype,u.values),n.makeTensorInfo(l.shape,l.dtype,l.values)]}};const yh={kernelName:s.wx7,backendName:"cpu",kernelFunc:function(e){const{inputs:t,attrs:n,backend:r}=e,{image:a,transforms:o}=t,{interpolation:i,fillMode:u,fillValue:l,outputShape:c}=n,[p,h,d,f]=a.shape,[m,g]=null!=c?c:[h,d],y=[p,m,g,f],b=s.D5U.computeStrides(a.shape),x=b[0],w=b[1],v=b[2],k=s.D5U.computeStrides(y),I=k[0],N=k[1],S=k[2],T=s.D5U.getTypedArrayFromDType(a.dtype,s.D5U.sizeFromShape(y));T.fill(l);const C=r.data.get(a.dataId).values,E=r.data.get(o.dataId).values;for(let s=0;s<p;++s){const e=1===o.shape[0]?E:E.subarray(8*s,8*s+8);for(let t=0;t<m;++t)for(let n=0;n<g;++n)for(let r=0;r<f;++r){let a;const o=e[6]*n+e[7]*t+1;if(0===o)continue;const c=(e[0]*n+e[1]*t+e[2])/o,p=(e[3]*n+e[4]*t+e[5])/o,f=bh(c,d,u),m=bh(p,h,u);switch(i){case"nearest":a=wh(C,h,d,x,w,v,s,m,f,r,l);break;case"bilinear":a=vh(C,h,d,x,w,v,s,m,f,r,l);break;default:throw new Error(`Error in Transform: Expect 'nearest' or 'bilinear', but got ${i}`)}T[s*I+t*N+n*S+r]=a}return r.makeTensorInfo(y,a.dtype,T)}return{dataId:r.write(T,y,a.dtype),shape:a.shape,dtype:a.dtype}}};function bh(e,t,n){switch(n){case"reflect":return function(e,t){let n=e;if(n<0)if(t<=1)n=0;else{const e=2*t;n<e&&(n=e*Math.trunc(-n/e)+n),n=n<-t?n+e:-n-1}else if(n>t-1)if(t<=1)n=0;else{const e=2*t;n-=e*Math.trunc(n/e),n>=t&&(n=e-n-1)}return s.D5U.clamp(0,n,t-1)}(e,t);case"wrap":return function(e,t){let n=e;if(n<0)if(t<=1)n=0;else{const e=t-1;n+=t*(Math.trunc(-n/e)+1)}else if(n>t-1)if(t<=1)n=0;else{const e=t-1;n-=t*Math.trunc(n/e)}return s.D5U.clamp(0,n,t-1)}(e,t);case"nearest":return function(e,t){return s.D5U.clamp(0,e,t-1)}(e,t);case"constant":default:return function(e,t){return e}(e)}}function xh(e,t,n,r,s,a,o,i,u,l,c){return 0<=i&&i<t&&0<=u&&u<n?e[o*r+i*s+u*a+l]:c}function wh(e,t,n,r,s,a,o,i,u,l,c){return xh(e,t,n,r,s,a,o,Math.round(i),Math.round(u),l,c)}function vh(e,t,n,r,s,a,o,i,u,l,c){const p=Math.floor(i),h=Math.floor(u),d=p+1,f=h+1;return(d-i)*((f-u)*xh(e,t,n,r,s,a,o,p,h,l,c)+(u-h)*xh(e,t,n,r,s,a,o,p,f,l,c))+(i-p)*((f-u)*xh(e,t,n,r,s,a,o,d,h,l,c)+(u-h)*xh(e,t,n,r,s,a,o,d,f,l,c))}function kh(e,t,n,r){const a=s.D5U.parseAxisParam(t,n)[0],o=[1,n[0],1];for(let s=0;s<a;s++)o[0]*=n[s];o[1]=n[a];for(let s=a+1;s<n.length;s++)o[2]*=n[s];const i={},u=new Int32Array(n[a]),l=new s.YDk(o,r,e),c=[],p=1===o[0]&&1===o[2];for(let s=0;s<n[a];s++){let t;if(p)t=e[s].toString();else{const e=[];for(let t=0;t<o[0];t++)for(let n=0;n<o[2];n++)e.push(l.get(t,s,n));t=e.join(",")}if(void 0!==i[t])u[s]=i[t];else{const e=Object.keys(i).length;i[t]=e,u[s]=e,c.push(s)}}const h=o.slice();h[1]=Object.keys(i).length;const d=new s.YDk(h,r);c.forEach(((e,t)=>{for(let n=0;n<o[0];n++)for(let r=0;r<o[2];r++)d.set(l.get(n,e,r),n,t,r)}));const f=n.slice();return f[a]=h[1],{outputValues:d.values,outputShape:f,indices:u}}const Ih={kernelName:s.kpP,backendName:"cpu",kernelFunc:function(e){const{inputs:t,attrs:n,backend:r}=e,{axis:s}=n,{x:a}=t;no(a,"unique");const o=r.data.get(a.dataId).values,{outputValues:i,outputShape:u,indices:l}=kh(o,s,a.shape,a.dtype);return[r.makeTensorInfo(u,a.dtype,i),r.makeTensorInfo([l.length],"int32",l)]}};const Nh={kernelName:s.ToN,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{value:s}=t;let{axis:a}=r;a<0&&(a+=s.shape.length);const o=s.shape.length,i=s.shape[a],u=new Array(o-1);let l=0;for(let d=0;d<o;d++)d!==a&&(u[l++]=s.shape[d]);const c=new Array(o).fill(0),p=s.shape.slice();p[a]=1;const h=new Array(i);for(let d=0;d<h.length;d++){c[a]=d;const e=Ti({inputs:{x:s},backend:n,attrs:{begin:c,size:p}});h[d]=Uo({inputs:{x:e},backend:n,attrs:{shape:u}}),n.disposeIntermediateTensorInfo(e)}return h}};const Sh={kernelName:s.Qvg,backendName:"cpu",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a,segmentIds:o}=t,{numSegments:i}=r;no(a,"unsortedSegmentSum");const u=[],l=[],c=a.shape.length-o.shape.length;let p=o;for(let s=0;s<c;++s){const e=Mu({inputs:{input:p},backend:n,attrs:{dim:s+1}});p=e,l.push(e)}for(let d=0;d<i;++d){const e=s.D5U.createScalarValue(d,"int32"),t=n.makeTensorInfo([],"int32",e),r=Iu({inputs:{a:t,b:p},backend:n}),o=Ro({inputs:{x:r},backend:n,attrs:{dtype:"float32"}}),i=gu({inputs:{a:o,b:a},backend:n}),c=bu({inputs:{x:i},backend:n,attrs:{axis:0,keepDims:!1}});u.push(c),l.push(t),l.push(r),l.push(o),l.push(i),l.push(c)}
1const h=Rc({inputs:u,backend:n,attrs:{axis:0}});return l.forEach((e=>n.disposeIntermediateTensorInfo(e))),h}},Th=[Ho,Xo,Ko,Yo,Po,Zo,ni,ri,si,ai,ii,li,pi,fi,gi,wi,vi,ki,Ii,Go,Ni,Ei,Di,_i,Fo,Oi,Bi,Eo,Li,Vi,Hi,ji,Xi,qi,Ki,Qi,Zi,eu,tu,nu,ru,su,au,iu,uu,lu,cu,pu,hu,du,wu,uo,vu,Nu,_u,Ou,Bu,Pu,Yu,Ju,el,rl,ol,il,ul,cl,hl,ml,bl,co,xl,Ui,vl,Il,Sl,ho,El,Dl,Rl,Ml,Ll,Ul,Vl,jl,Xl,ql,Yl,ec,tc,nc,rc,sc,ac,oc,ic,cc,pc,fc,yc,yu,xc,vc,Ic,Sc,Ec,$c,_c,Fc,Oc,Lc,yo,Pc,Hc,Yc,Jc,Do,Vu,tp,xo,vo,zo,np,rp,sp,ap,op,ip,lp,hp,fp,yp,bp,kp,So,Np,Tp,Ep,Ci,gc,Dp,_p,Fp,Mp,Lp,Wp,Pp,Up,Gp,Hp,qp,Qp,Zp,th,sh,oh,Xu,xu,uh,ch,hh,gh,yh,ti,Ih,Nh,Sh,Dc];for(const Nv of Th)(0,s.wCN)(Nv);const Ch={},Eh={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function $h(e,t){if(!(e in Ch)||null!=t){const n=function(e,t){if(1!==e&&2!==e)throw new Error("Cannot get WebGL rendering context, WebGL is disabled.");const n=null==t?function(e){if("undefined"!==typeof OffscreenCanvas&&2===e)return new OffscreenCanvas(300,150);if("undefined"!==typeof document)return document.createElement("canvas");throw new Error("Cannot create a canvas in this context")}(e):t;n.addEventListener("webglcontextlost",(t=>{t.preventDefault(),delete Ch[e]}),!1),(0,s.OBj)().getBool("SOFTWARE_WEBGL_ENABLED")&&(Eh.failIfMajorPerformanceCaveat=!1);if(1===e)return n.getContext("webgl",Eh)||n.getContext("experimental-webgl",Eh);return n.getContext("webgl2",Eh)}(e,t);if(null===n)return console.log("Could not get context for WebGL version",e),null;Ch[e]=n}const n=Ch[e];return null==n||n.isContextLost()?(delete Ch[e],$h(e)):(n.disable(n.DEPTH_TEST),n.disable(n.STENCIL_TEST),n.disable(n.BLEND),n.disable(n.DITHER),n.disable(n.POLYGON_OFFSET_FILL),n.disable(n.SAMPLE_COVERAGE),n.enable(n.SCISSOR_TEST),n.enable(n.CULL_FACE),n.cullFace(n.BACK),Ch[e])}var Ah,Dh,_h;function Rh(e,t){return[t,e]}function Fh(e){const t=s.D5U.sizeFromShape(e),n=Math.ceil(t/4);return s.D5U.sizeToSquarishShape(n)}function Oh(e,t){return[Math.max(1,Math.ceil(t/2)),Math.max(1,Math.ceil(e/2))]}function Mh(e,t){const n=e;let r,a,o,i,u,l,c,p,h,d;return 2===(0,s.OBj)().getNumber("WEBGL_VERSION")?(r=n.R32F,a=n.R16F,o=n.RGBA16F,i=n.RGBA32F,u=n.RED,c=4,p=1,h=n.HALF_FLOAT,d=n.FLOAT,l=n.RGBA8):(r=e.RGBA,a=e.RGBA,o=e.RGBA,i=n.RGBA,u=e.RGBA,c=4,p=4,h=null!=t?t.HALF_FLOAT_OES:null,d=e.FLOAT,l=e.RGBA),{internalFormatFloat:r,internalFormatHalfFloat:a,internalFormatPackedHalfFloat:o,internalFormatPackedFloat:i,textureFormatFloat:u,downloadTextureFormat:l,downloadUnpackNumChannels:c,defaultNumChannels:p,textureTypeHalfFloat:h,textureTypeFloat:d}}function Bh(e,t){const n=t();return(0,s.OBj)().getBool("DEBUG")&&function(e){const t=e.getError();if(t!==e.NO_ERROR)throw new Error("WebGL Error: "+function(e,t){switch(t){case e.NO_ERROR:return"NO_ERROR";case e.INVALID_ENUM:return"INVALID_ENUM";case e.INVALID_VALUE:return"INVALID_VALUE";case e.INVALID_OPERATION:return"INVALID_OPERATION";case e.INVALID_FRAMEBUFFER_OPERATION:return"INVALID_FRAMEBUFFER_OPERATION";case e.OUT_OF_MEMORY:return"OUT_OF_MEMORY";case e.CONTEXT_LOST_WEBGL:return"CONTEXT_LOST_WEBGL";default:return`Unknown error code ${t}`}}(e,t))}(e),n}!function(e){e[e.DENSE=0]="DENSE",e[e.SHARED_BATCH=1]="SHARED_BATCH"}(Ah||(Ah={})),function(e){e[e.RENDER=0]="RENDER",e[e.UPLOAD=1]="UPLOAD",e[e.PIXELS=2]="PIXELS",e[e.DOWNLOAD=3]="DOWNLOAD"}(Dh||(Dh={})),function(e){e[e.UNPACKED_FLOAT16=0]="UNPACKED_FLOAT16",e[e.UNPACKED_FLOAT32=1]="UNPACKED_FLOAT32",e[e.PACKED_4X1_UNSIGNED_BYTE=2]="PACKED_4X1_UNSIGNED_BYTE",e[e.PACKED_2X2_FLOAT32=3]="PACKED_2X2_FLOAT32",e[e.PACKED_2X2_FLOAT16=4]="PACKED_2X2_FLOAT16"}(_h||(_h={}));function Lh(e){return!!((0,s.OBj)().getBool("WEBGL_RENDER_FLOAT32_ENABLED")||0===e||5.96e-8<Math.abs(e)&&Math.abs(e)<65504)}function Wh(e,t){return qh(e,(()=>e.getExtension(t)),'Extension "'+t+'" not supported on this browser.')}const Ph=/ERROR: [0-9]+:([0-9]+):/g;function Uh(e,t){const n=Ph.exec(t);if(null==n)return console.log(`Couldn't parse line number in error: ${t}`),void console.log(e);const r=+n[1],a=e.split("\n"),o=a.length.toString().length+2,i=a.map(((e,t)=>s.D5U.rightPad((t+1).toString(),o)+e));let u=0;for(let s=0;s<i.length;s++)u=Math.max(i[s].length,u);const l=i.slice(0,r-1),c=i.slice(r-1,r),p=i.slice(r);console.log(l.join("\n")),console.log(t.split("\n")[0]),console.log(`%c ${s.D5U.rightPad(c[0],u)}`,"border:1px solid red; background-color:#e3d2d2; color:#a61717"),console.log(p.join("\n"))}function zh(e,t){if(Bh(e,(()=>e.validateProgram(t))),!1===e.getProgramParameter(t,e.VALIDATE_STATUS))throw console.log(e.getProgramInfoLog(t)),new Error("Shader program validation failed.")}function Vh(e,t,n,r,s,a,o){const i=e.getAttribLocation(t,n);return-1!==i&&(Bh(e,(()=>e.bindBuffer(e.ARRAY_BUFFER,r))),Bh(e,(()=>e.vertexAttribPointer(i,s,e.FLOAT,!1,a,o))),Bh(e,(()=>e.enableVertexAttribArray(i))),!0)}function Gh(e,t,n,r){Bh(e,(()=>function(e,t,n){Kh(e,n),Bh(e,(()=>e.activeTexture(e.TEXTURE0+n))),Bh(e,(()=>e.bindTexture(e.TEXTURE_2D,t)))}(e,t,r))),Bh(e,(()=>e.uniform1i(n,r)))}function Hh(e,t,n){Bh(e,(()=>e.bindFramebuffer(e.FRAMEBUFFER,n))),Bh(e,(()=>e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0)))}function jh(e,t){Bh(e,(()=>e.bindFramebuffer(e.FRAMEBUFFER,t))),Bh(e,(()=>e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,null,0)))}function Xh(e){const t=e.checkFramebufferStatus(e.FRAMEBUFFER);if(t!==e.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+function(e,t){switch(t){case e.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case e.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return`unknown error ${t}`}}(e,t))}function qh(e,t,n){const r=Bh(e,(()=>t()));if(null==r)throw new Error(n);return r}function Kh(e,t){const n=e.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,r=t+e.TEXTURE0;if(r<e.TEXTURE0||r>n){throw new Error(`textureUnit must be in ${`[gl.TEXTURE0, gl.TEXTURE${n}]`}.`)}}function Qh(e,t=2){return s.D5U.sizeFromShape(e.slice(0,e.length-t))}function Yh(e){if(0===e.length)throw Error("Cannot get rows and columns of an empty shape array.");return[e.length>1?e[e.length-2]:1,e[e.length-1]]}function Zh(e){let t=[1,1,1];return 0===e.length||1===e.length&&1===e[0]||(t=[Qh(e),...Yh(e)]),t}function Jh(e){return e%2===0}function ed(e,t){if(e=e.slice(-2),t=t.slice(-2),s.D5U.arraysEqual(e,t))return!0;
1if(!e.length||!t.length)return!0;if(0===e[0]||0===e[1]||0===t[0]||0===t[1])return!0;if(e.length!==t.length){const n=e.slice(-1)[0],r=t.slice(-1)[0];if(n===r)return!0;if(Jh(n)&&Jh(r)&&(1===e[0]||1===t[0]))return!0}return e[1]===t[1]&&Jh(e[0])&&Jh(t[0])}let td,nd;function rd(e,t){return null!=e.getExtension(t)}function sd(e){try{if(null!=$h(e))return!0}catch(t){return console.log("Error when getting WebGL context: ",t),!1}return!1}function ad(e){if(0===e)return!1;const t=$h(e);if(1!==e){if(rd(t,"EXT_color_buffer_float"))return od(t);const e="EXT_color_buffer_half_float";if(rd(t,e)){const n=t.getExtension(e);return function(e,t){const n=Mh(e,t),r=e.createTexture();e.bindTexture(e.TEXTURE_2D,r);const s=1,a=1;e.texImage2D(e.TEXTURE_2D,0,n.internalFormatHalfFloat,s,a,0,n.textureFormatFloat,n.textureTypeHalfFloat,null);const o=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,o),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,r,0);const i=e.checkFramebufferStatus(e.FRAMEBUFFER)===e.FRAMEBUFFER_COMPLETE;return e.bindTexture(e.TEXTURE_2D,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.deleteTexture(r),e.deleteFramebuffer(o),i}(t,n)}return!1}if(!rd(t,"OES_texture_float"))return!1;if(!rd(t,"WEBGL_color_buffer_float"))return!1;return od(t)}function od(e){const t=Mh(e),n=e.createTexture();e.bindTexture(e.TEXTURE_2D,n);e.texImage2D(e.TEXTURE_2D,0,t.internalFormatFloat,1,1,0,t.textureFormatFloat,t.textureTypeFloat,null);const r=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,r),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,n,0);const s=e.checkFramebufferStatus(e.FRAMEBUFFER)===e.FRAMEBUFFER_COMPLETE;return e.bindTexture(e.TEXTURE_2D,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.deleteTexture(n),e.deleteFramebuffer(r),s}function id(e,t){Array.isArray(e)||(e=[e]),e.forEach((e=>{null!=e&&s.D5U.assert("complex64"!==e.dtype,(()=>`${t} does not support complex64 tensors in the WebGL backend.`))}))}const ud=(0,s.OBj)();ud.registerFlag("HAS_WEBGL",(()=>ud.getNumber("WEBGL_VERSION")>0)),ud.registerFlag("WEBGL_VERSION",(()=>sd(2)?2:sd(1)?1:0)),ud.registerFlag("WEBGL_CHECK_NUMERICAL_PROBLEMS",(()=>!1)),ud.registerFlag("WEBGL_BUFFER_SUPPORTED",(()=>2===ud.get("WEBGL_VERSION"))),ud.registerFlag("WEBGL_CPU_FORWARD",(()=>!0)),ud.registerFlag("WEBGL_FORCE_F16_TEXTURES",(()=>!1)),ud.registerFlag("WEBGL_PACK",(()=>ud.getBool("HAS_WEBGL"))),ud.registerFlag("WEBGL_PACK_NORMALIZATION",(()=>ud.getBool("WEBGL_PACK"))),ud.registerFlag("WEBGL_PACK_CLIP",(()=>ud.getBool("WEBGL_PACK"))),ud.registerFlag("WEBGL_PACK_DEPTHWISECONV",(()=>ud.getBool("WEBGL_PACK"))),ud.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",(()=>ud.getBool("WEBGL_PACK"))),ud.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",(()=>ud.getBool("WEBGL_PACK"))),ud.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",(()=>ud.getBool("WEBGL_PACK"))),ud.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",(()=>ud.getBool("WEBGL_PACK"))),ud.registerFlag("WEBGL_PACK_REDUCE",(()=>ud.getBool("WEBGL_PACK"))),ud.registerFlag("WEBGL_LAZILY_UNPACK",(()=>ud.getBool("WEBGL_PACK"))),ud.registerFlag("WEBGL_CONV_IM2COL",(()=>ud.getBool("WEBGL_PACK"))),ud.registerFlag("WEBGL_MAX_TEXTURE_SIZE",(()=>function(e){if(null==td){const t=$h(e);td=t.getParameter(t.MAX_TEXTURE_SIZE)}return td}(ud.getNumber("WEBGL_VERSION")))),ud.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",(()=>function(e){if(null==nd){const t=$h(e);nd=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,nd)}(ud.getNumber("WEBGL_VERSION")))),ud.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",(()=>{const e=ud.getNumber("WEBGL_VERSION");return 0===e?0:function(e){if(0===e)return 0;let t;const n=$h(e);return t=rd(n,"EXT_disjoint_timer_query_webgl2")&&2===e?2:rd(n,"EXT_disjoint_timer_query")?1:0,t}(e)})),ud.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",(()=>ud.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&!s.C2$.isMobile())),ud.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",(()=>function(e){if(0===e)return!1;const t=$h(e);if(1===e){if(!rd(t,"OES_texture_float"))return!1}else if(!rd(t,"EXT_color_buffer_float"))return!1;return od(t)}(ud.getNumber("WEBGL_VERSION")))),ud.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",(()=>!ud.getBool("WEBGL_FORCE_F16_TEXTURES")&&ud.getBool("WEBGL_RENDER_FLOAT32_CAPABLE"))),ud.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",(()=>ad(ud.getNumber("WEBGL_VERSION")))),ud.registerFlag("WEBGL_FENCE_API_ENABLED",(()=>{return 2===(e=ud.getNumber("WEBGL_VERSION"))&&null!=$h(e).fenceSync;var e})),ud.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",(()=>ud.getBool("WEBGL_RENDER_FLOAT32_ENABLED")?4:0)),ud.registerFlag("WEBGL_DELET
1E_TEXTURE_THRESHOLD",(()=>-1),(e=>{if(e<0&&-1!==e)throw new Error(`WEBGL_DELETE_TEXTURE_THRESHOLD must be -1 (indicating never delete) or at least 0, but got ${e}.`)})),ud.registerFlag("WEBGL_FLUSH_THRESHOLD",(()=>s.C2$.isMobile()?1:-1),(e=>{if(e<0&&-1!==e)throw new Error(`WEBGL_FLUSH_THRESHOLD must be -1 (indicating never manual flush) or at least 0, but got ${e}.`)})),ud.registerFlag("CPU_HANDOFF_SIZE_THRESHOLD",(()=>128)),ud.registerFlag("WEBGL_USE_SHAPES_UNIFORMS",(()=>!1)),ud.registerFlag("TOPK_LAST_DIM_CPU_HANDOFF_SIZE_THRESHOLD",(()=>1e5)),ud.registerFlag("TOPK_K_CPU_HANDOFF_THRESHOLD",(()=>128)),ud.registerFlag("WEBGL_EXP_CONV",(()=>!1)),ud.registerFlag("SOFTWARE_WEBGL_ENABLED",(()=>ud.getBool("IS_TEST"))),ud.registerFlag("WEBGL_MAX_SIZE_FOR_NARROW_TEXTURE",(()=>1/0)),ud.registerFlag("WEBGL_AUTO_SQUARIFY_NARROW_TEXTURE_SHAPE",(()=>!1)),ud.registerFlag("WEBGL2_ISNAN_CUSTOM",(()=>!1));var ld=n(9610),cd=n(5156);function pd(e,t,n,r){const a=n.map(((e,n)=>{const r={logicalShape:e.shape,texShape:e.isUniform?null:e.texData.texShape,isUniform:e.isUniform,isPacked:!e.isUniform&&e.texData.isPacked,flatOffset:null};return null!=e.texData&&null!=e.texData.slice&&e.texData.slice.flatOffset>0&&(r.flatOffset=e.texData.slice.flatOffset),{name:t.variableNames[n],shapeInfo:r}})),o=a.map((e=>e.shapeInfo)),i={logicalShape:r.shape,texShape:r.texData.texShape,isUniform:!1,isPacked:r.texData.isPacked,flatOffset:null},u=cd.Vm(a,i,t),l=function(e,t){const n=qh(e,(()=>e.createShader(e.FRAGMENT_SHADER)),"Unable to create fragment WebGLShader.");if(Bh(e,(()=>e.shaderSource(n,t))),Bh(e,(()=>e.compileShader(n))),(0,s.OBj)().get("ENGINE_COMPILE_ONLY"))return n;if(!1===e.getShaderParameter(n,e.COMPILE_STATUS))throw Uh(t,e.getShaderInfoLog(n)),new Error("Failed to compile fragment shader.");return n}(e.gl,u),c=e.createProgram(l);return(0,s.OBj)().get("ENGINE_COMPILE_ONLY")?{program:t,fragmentShader:l,source:u,webGLProgram:c,inShapeInfos:o,outShapeInfo:i,uniformLocations:null,customUniformLocations:null,infLoc:null,nanLoc:null,inShapesLocations:null,inTexShapesLocations:null,outShapeLocation:null,outShapeStridesLocation:null,outTexShapeLocation:null}:Object.assign({program:t,fragmentShader:l,source:u,webGLProgram:c,inShapeInfos:o,outShapeInfo:i},hd(e,t,c))}function hd(e,t,n){const r={},a={},o={},i=[];let u,l,c,p=null,h=null;h=e.getUniformLocation(n,"NAN",!1),1===(0,s.OBj)().getNumber("WEBGL_VERSION")&&(p=e.getUniformLocation(n,"INFINITY",!1));const d=!1;for(let s=0;s<t.variableNames.length;s++){const i=t.variableNames[s];r[i]=e.getUniformLocation(n,i,d),r[`offset${i}`]=e.getUniformLocation(n,`offset${i}`,d),t.enableShapeUniforms&&(a[`${i}Shape`]=e.getUniformLocation(n,`${i}Shape`,d),o[`${i}TexShape`]=e.getUniformLocation(n,`${i}TexShape`,d))}return t.enableShapeUniforms&&(u=e.getUniformLocation(n,"outShape",d),c=e.getUniformLocation(n,"outShapeStrides",d),l=e.getUniformLocation(n,"outTexShape",d)),t.customUniforms&&t.customUniforms.forEac
1h(((t,r)=>{i[r]=e.getUniformLocation(n,t.name,d)})),{uniformLocations:r,customUniformLocations:i,infLoc:p,nanLoc:h,inShapesLocations:a,inTexShapesLocations:o,outShapeLocation:u,outShapeStridesLocation:c,outTexShapeLocation:l}}function dd(e,t){if(e.length!==t.length)throw Error(`Binary was compiled with ${e.length} inputs, but was executed with ${t.length} inputs`);e.forEach(((e,n)=>{const r=e.logicalShape,a=t[n],o=a.shape;if(!s.D5U.arraysEqual(r,o))throw Error(`Binary was compiled with different shapes than the current args. Shapes ${r} and ${o} must match`);if(e.isUniform&&a.isUniform)return;const i=e.texShape,u=a.isUniform?null:a.texData.texShape;if(!s.D5U.arraysEqual(i,u))throw Error(`Binary was compiled with different texture shapes than the current args. Shape ${i} and ${u} must match`)}))}function fd(e){return(0,s.OBj)().getBool("WEBGL_USE_SHAPES_UNIFORMS")&&e<=4}var md=n(8110);class gd{constructor(e){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0,this.outPackingScheme=Ah.DENSE,this.customUniforms=[{name:"texShape",type:"ivec2"}];const t=(0,ld.A)();this.outputShape=e,this.enableShapeUniforms=fd(this.outputShape.length),this.userCode=`\n      ivec3 outCoordsFromFlatIndex(int index) {\n        ${this.enableShapeUniforms?md.Kn(["r","c","d"],e):md.RW(["r","c","d"],e)}\n        return ivec3(r, c, d);\n      }\n\n      void main() {\n        ivec2 resTexRC = ivec2(resultUV.yx * vec2(texShape[0], texShape[1]));\n        int index = 4 * (resTexRC.x * texShape[1] + resTexRC.y);\n\n        vec4 result = vec4(0.);\n\n        for (int i=0; i<4; i++) {\n          int flatIndex = index + i;\n          ivec3 rc = outCoordsFromFlatIndex(flatIndex);\n          result[i] = getA(rc.x, rc.y, rc.z);\n        }\n\n        ${t.output} = result;\n      }\n    `}}class yd{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outPackingScheme=Ah.DENSE,this.customUniforms=[{name:"texShape",type:"ivec2"}];const t=(0,ld.A)();this.outputShape=e,this.enableShapeUniforms=fd(this.outputShape.length),this.userCode=`\n      ivec3 outCoordsFromFlatIndex(int index) {\n        ${this.enableShapeUniforms?md.Kn(["r","c","d"],e):md.RW(["r","c","d"],e)}\n        return ivec3(r, c, d);\n      }\n\n      void main() {\n        ivec2 resTexRC = ivec2(resultUV.yx * vec2(texShape[0], texShape[1]));\n        int index = 4 * (resTexRC.x * texShape[1] + resTexRC.y);\n\n        vec4 result = vec4(0.);\n\n        for (int i=0; i<4; i++) {\n          int flatIndex = index + i;\n          ivec3 rc = outCoordsFromFlatIndex(flatIndex);\n          result[i] = getChannel(getA(rc.x, rc.y, rc.z), vec2(rc.y, rc.z));\n        }\n\n        ${t.output} = result;\n      }\n    `}}class bd{constructor(e){this.variableNames=["A"],this.outTexUsage=Dh.DOWNLOAD;const t=(0,ld.A)();this.outputShape=e,this.userCode=`\n      ${md.ye}\n\n      void main() {\n        float x = getAAtOutCoords();\n        ${t.output} = encode_float(x);\n      }\n    `}}class xd{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outTexUsage=Dh.DOWNLOAD;const t=(0,ld.A)();this.outputShape=e,this.userCode=`\n      ${md.ye}\n\n      void main() {\n        ivec3 coords = getOutputCoords();\n        float x = getChannel(getAAtOutCoords(), vec2(coords.y, coords.z));\n        ${t.output} = encode_float(x);\n      }\n    `}}class wd{constructor(e,t=!1){this.variableNames=["A"],this.customUniforms=[{name:"texShape",type:"ivec2"}];const n=(0,ld.A)();this.outputShape=e,this.enableShapeUniforms=fd(this.outputShape.length);let r="result";t&&(r="floor(result * 255. + 0.5)"),this.userCode=`\n      ${this.enableShapeUniforms?md.nc():md.ku(e)}\n\n      void main() {\n        ivec3 coords = getOutputCoords();\n\n        int flatIndex = getFlatIndex(coords);\n        int offset = imod(flatIndex, 4);\n\n        flatIndex = idiv(flatIndex, 4, 1.);\n\n        int r = flatIndex / texShape[1];\n        int c = imod(flatIndex, texShape[1]);\n        vec2 uv = (vec2(c, r) + halfCR) / vec2(texShape[1], texShape[0]);\n        vec4 values = ${n.texture2D}(A, uv);\n\n        float result;\n\n        if(offset == 0) {\n          result = values[0];\n        } else if(offset == 1) {\n          result = values[1];\n        } else if(offset == 2) {\n          result = values[2];\n        } else {\n          result = values[3];\n        }\n\n        ${n.output} = vec4(${r}, 0., 0., 0.);\n      }\n    `}}class vd{constructor(e,t=!1){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0,this.customUniforms=[{name:"texShape",type:"ivec2"}];const n=(0,ld.A)();this.outputShape=e,this.enableShapeUniforms=fd(this.outputShape.length);let r="",s="result";t&&(s="floor(result * 255. + 0.5)");for(let a=0;a<=1;a++)for(let t=0;t<=1;t++){const s=2*a+t;r+=`\n          localCoords = coords;\n          if(localCoords[2] + ${t} < ${this.enableShapeUniforms?"outShape[2]":`${e[2]}`}
1) {\n          localCoords[2] += ${t};\n          if (localCoords[1] + ${a} < ${this.enableShapeUniforms?"outShape[1]":`${e[1]}`}) {\n            localCoords[1] += ${a};\n\n            flatIndex = getFlatIndex(localCoords);\n            offset = imod(flatIndex, 4);\n\n            flatIndex = idiv(flatIndex, 4, 1.);\n\n            int r = flatIndex / texShape[1];\n            int c = imod(flatIndex, texShape[1]);\n            vec2 uv = (vec2(c, r) + halfCR) / vec2(texShape[1], texShape[0]);\n            values = ${n.texture2D}(A, uv);\n\n            if (offset == 0) {\n              result[${s}] = values[0];\n            } else if (offset == 1) {\n              result[${s}] = values[1];\n            } else if (offset == 2) {\n              result[${s}] = values[2];\n            } else {\n              result[${s}] = values[3];\n            }\n          }\n        }\n        `}this.userCode=`\n        ${this.enableShapeUniforms?md.nc():md.ku(e)}\n\n        void main() {\n          ivec3 coords = getOutputCoords();\n\n          vec4 result = vec4(0.);\n          int flatIndex, r, c, offset;\n          ivec3 localCoords;\n          vec2 uv;\n          vec4 values;\n\n          ${r}\n\n          ${n.output} = ${s};\n        }\n    `}}function kd(e){const t=(0,ld.A)();return function(e,t){const n=qh(e,(()=>e.createShader(e.VERTEX_SHADER)),"Unable to create vertex WebGLShader.");if(Bh(e,(()=>e.shaderSource(n,t))),Bh(e,(()=>e.compileShader(n))),!1===e.getShaderParameter(n,e.COMPILE_STATUS))throw console.log(e.getShaderInfoLog(n)),new Error("Failed to compile vertex shader.");return n}(e,`${t.version}\n    precision highp float;\n    ${t.attribute} vec3 clipSpacePos;\n    ${t.attribute} vec2 uv;\n    ${t.varyingVs} vec2 resultUV;\n\n    void main() {\n      gl_Position = vec4(clipSpacePos, 1);\n      resultUV = uv;\n    }`)}function Id(e){return function(e,t){const n=qh(e,(()=>e.createBuffer()),"Unable to create WebGLBuffer");return Bh(e,(()=>e.bindBuffer(e.ARRAY_BUFFER,n))),Bh(e,(()=>e.bufferData(e.ARRAY_BUFFER,t,e.STATIC_DRAW))),n}(e,new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]))}function Nd(e){return function(e,t){const n=qh(e,(()=>e.createBuffer()),"Unable to create WebGLBuffer");return Bh(e,(()=>e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n))),Bh(e,(()=>e.bufferData(e.ELEMENT_ARRAY_BUFFER,t,e.STATIC_DRAW))),n}(e,new Uint16Array([0,1,2,2,1,3]))}function Sd(e,t,n,r,a,o){!function(e,t){const n=(0,s.OBj)().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(e<=0||t<=0)throw new Error(`Requested texture size [${e}x${t}] is invalid.`);if(e>n||t>n)throw new Error(`Requested texture size [${e}x${t}] greater than WebGL maximum on this browser / GPU [${n}x${n}].`)}(t,n);const i=function(e){return qh(e,(()=>e.createTexture()),"Unable to create WebGLTexture.")}(e),u=e.TEXTURE_2D;return Bh(e,(()=>e.bindTexture(u,i))),Bh(e,(()=>e.texParameteri(u,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE))),Bh(e,(()=>e.texParameteri(u,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE))),Bh(e,(()=>e.texParameteri(u,e.TEXTURE_MIN_FILTER,e.NEAREST))),Bh(e,(()=>e.texParameteri(u,e.TEXTURE_MAG_FILTER,e.NEAREST))),1===(0,s.OBj)().getNumber("WEBGL_VERSION")?Bh(e,(()=>e.texImage2D(u,0,r,t,n,0,a,o,null))):Bh(e,(()=>e.texStorage2D(u,1,r,t,n))),Bh(e,(()=>e.bindTexture(e.TEXTURE_2D,null))),{texture:i,texShape:[n,t]}}function Td(e){return e.internalFormatFloat}function Cd(e){return e.internalFormatHalfFloat}function Ed(e){return e.downloadTextureFormat}function $d(e){return e.internalFormatPackedFloat}function Ad(e){return e.internalFormatPackedHalfFloat}function Dd(e,t,n,r,s,a,o,i){const u=e,l=new Float32Array(function(e,t){const[n,r]=Oh(e,t);return n*r*4}(a,o));return u.bindBuffer(u.PIXEL_PACK_BUFFER,t),u.getBufferSubData(u.PIXEL_PACK_BUFFER,0,l),u.bindBuffer(u.PIXEL_PACK_BUFFER,null),l}class _d{constructor(e){this.outputTexture=null,this.program=null,this.disposed=!1,this.vertexAttrsAreBound=!1,this.itemsToPoll=[];const t=(0,s.OBj)().getNumber("WEBGL_VERSION");null!=e?(this.gl=e,function(e,t){Ch[e]=t}(t,e)):this.gl=$h(t);let n="WEBGL_color_buffer_float";const r="EXT_color_buffer_half_float";if(this.parallelCompilationExtension=this.gl.getExtension("KHR_parallel_shader_compile"),1===(0,s.OBj)().getNumber("WEBGL_VERSION")){const e="OES_texture_float",t="OES_texture_half_float";if(this.textureFloatExtension=Wh(this.gl,e),rd(this.gl,t))this.textureHalfFloatExtension=Wh(this.gl,t);else if((0,s.OBj)().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support half float textures, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.");if(this.colorBufferFloatExtension=this.gl.getExtension(n),rd(this.gl,r))this.colorBufferHalfFloatExtension=Wh(this.gl,r);else if((0,s.OBj)().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support color renderable half floats, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.")}else if(n="EXT_color_buffer_float",rd(this.gl,n))this.colorBufferFloatExtension=this.gl.getExtension(n);else{if(!rd(this.gl,r))throw new Error("GL context does not support color renderable floats");this.colorBufferHalfFloatExtension=this.gl.getExtension(r)}this.vertexBuffer=Id(this.gl),this.indexBuffer=Nd(this.gl),this.framebuffer=function(e){return qh(e,(()=>e.createFramebuffer()),"Unable to create WebGLFramebuffer.")}(this.gl),this.textureConfig=Mh(this.gl,this.textureHalfFloatExtension)}get debug(){return(0,s.OBj)().getBool("DEBUG")}dispose(){if(this.disposed)return;null!=this.program&&console.warn("Disposing a GPGPUContext that still has a bound WebGLProgram. This is probably a resource leak, delete the program with GPGPUContext.deleteProgram before disposing."),null!=this.outputTexture&&console.warn("Disposing a GPGPUContext that still has a bound output matrix texture.  This is probably a resource leak, delete the output matrix texture with GPGPUContext.deleteMatrixTexture before disposing.");const e=this.gl;Bh(e,(()=>e.finish())),Bh(e,(()=>e.bindFramebuffer(e.FRAMEBUFFER,null))),Bh(e,(()=>e.deleteFramebuffer(this.framebuffer))),Bh(e,(()=>e.bindBuffer(e.ARRAY_BUFFER,null))),Bh(e,(()=>e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null))),Bh(e,(()=>e.deleteBuffer(this.indexBuffer))),this.disposed=!0}createFloat32MatrixTexture(e,t){return this.throwIfDisposed(),function(e,t,n,r){const[s,a]=Rh(t,n);return Sd(e,s,a,Td(r),r.textureFormatFloat,e.FLOAT)}(this.gl,e,t,this.textureConfig)}createFloat16MatrixTexture(e,t){return this.throwIfDisposed(),function(e,t,n,r){const[s,a]=Rh(t,n);return Sd(e,s,a,Cd(r),r.textureFormatFloat,r.textureTypeHalfFloat)}(this.gl,e,t,this.textureConfig)}createUnsignedBytesMatrixTexture(e,t){return this.throwIfDisposed(),function(e,t,n,r){const[s,a]=Rh(t,n);return Sd(e,s,a,Ed(r),e.RGBA,e.UNSIGNED_BYTE)}(this.gl,e,t,this.textureConfig)}uploadPixelDataToTexture(e,t){this.throwIfDisposed(),function(e,t,n){Bh(e,(()=>e.bindTexture(e.TEXTURE_2D,t))),n.data instanceof Uint8Array?2===(0,s.OBj)().getNumber("WEBGL_VERSION")?Bh(e,(()=>e.texSubImage2D(e.TEXTURE_2D,0,0,0,n.width,n.height,e.RGBA,e.UNSIGNED_BYTE,n.data))):Bh(e,(()=>e.texImage2D(e.TEXTURE_2D,0,e.RGBA,n.width,n.height,0,e.RGBA,e.UNSIGNED_BYTE,n.data))):2===(0,s.OBj)().getNumber("WEBGL_VERSION")?Bh(e,(()=>e.texSubImage2D(e.TEXTURE_2D,0,0,0,e.RGBA,e.UNSIGNED_BYTE,n))):Bh(e,(()=>e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,n))),Bh(e,(()=>e.bindTexture(e.TEXTURE_2D,null)))}(this.gl,e,t)}uploadDenseMatrixToTexture(e,t,n,r){this.throwIfDisposed(),function(e,t,n,r,a,o){let i,u,l;Bh(e,(()=>e.bindTexture(e.TEXTURE_2D,t))),a instanceof Uint8Array?(i=new Uint8Array(n*r*4),u=e.UNSIGNED_BYTE,l=e.RGBA):(i=new Float32Array(n*r*4),u=e.FLOAT,l=o.internalFormatPackedFloat),i.set(a),2===(0,s.OBj)().getNumber("WEBGL_VERSION")?Bh(e,(()=>e.texSubImage2D(e.TEXTURE_2D,0,0,0,n,r,e.RGBA,u,i))):Bh(e,(()=>e.texImage2D(e.TEXTURE_2D,0,l,n,r,0,e.RGBA,u,i))),Bh(e,(()=>e.bindTexture(e.TEXTURE_2D,null)))}(this.gl,e,t,n,r,this.textureConfig)}createFloat16PackedMatrixTexture(e,t){return this.throwIfDisposed(),function(e,t,n,r){const[s,a]=Oh(t,n);return Sd(e,s,a,Ad(r),e.RGBA,r.textureTypeHalfFloat)}(this.gl,e,t,this.textureConfig)}createPackedMatrixTexture(e,t){return this.throwIfDisposed(),function(e,t,n,r){const[s,a]=Oh(t,n);return Sd(e,s,a,$d(r),e.RGBA,e.FLOAT)}(this.gl,e,t,this.textureConfig)}deleteMatrixTexture(e){this.throwIfDisposed(),this.outputTexture===e&&(jh(this.gl,this.framebuffer),this.outputTexture=null),Bh(this.gl,(()=>this.gl.deleteTexture(e)))}downloadByteEncodedFloatMatrixFromOutputTexture(e,t,n){return this.downloadMatrixDriver(e,(()=>function(e,t,n,r){const[s,a]=Rh(t,n),o=new Uint8Array(t*n*4);return Bh(e,(()=>e.readPixels(0,0,s,a,r.downloadTextureFormat,e.UNSIGNED_BYTE,o))),new Float32Array(o.buffer)}(this.gl,t,n,this.textureConfig)))}downloadPackedMatrixFromBuffer(e,t,n,r,s,a){return Dd(this.gl,e,0,0,0,s,a,this.textureConfig)}downloadFloat32MatrixFromBuffer(e,t){return function(e,t,n){const r=e,s=new Float32Array(n);return r.bindBuffer(r.PIXEL_PACK_BUFFER,t),r.getBufferSubData(r.PIXEL_PACK_BUFFER,0,s),r.bindBuffer(r.PIXEL_PACK_BUFFER,null),s}(this.gl,e,t)}createBufferFromTexture(e,t,n){this.bindTextureToFrameBuffer(e);const r=function(e,t,n,r){const s=e.createBuffer();Bh(e,(()=>e.bindBuffer(e.PIXEL_PACK_BUFFER,s)));const a=16*t*n;return Bh(e,(()=>e.bufferData(e.PIXEL_PACK_BUFFER,a,e.STREAM_READ))),Bh(e,(()=>e.readPixels(0,0,n,t,e.RGBA,e.FLOAT,0))),Bh(e,(()=>e.bindBuffer(e.PIXEL_PACK_BUFFER,null))),s}(this.gl,t,n,this.textureConfig);return this.unbindTextureToFrameBuffer(),r}createAndWaitForFence(){const e=this.createFence(this.gl);
1return this.pollFence(e)}createFence(e){let t,n;if((0,s.OBj)().getBool("WEBGL_FENCE_API_ENABLED")){const r=e,s=r.fenceSync(r.SYNC_GPU_COMMANDS_COMPLETE,0);e.flush(),n=()=>{const e=r.clientWaitSync(s,0,0);return e===r.ALREADY_SIGNALED||e===r.CONDITION_SATISFIED},t=s}else(0,s.OBj)().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(t=this.beginQuery(),this.endQuery(),n=()=>this.isQueryAvailable(t,(0,s.OBj)().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))):n=()=>!0;return{query:t,isFencePassed:n}}downloadMatrixFromPackedTexture(e,t,n){return this.downloadMatrixDriver(e,(()=>function(e,t,n){const r=new Float32Array(t*n*4);return Bh(e,(()=>e.readPixels(0,0,n,t,e.RGBA,e.FLOAT,r))),r}(this.gl,t,n)))}createProgram(e){this.throwIfDisposed();const t=this.gl;null==this.vertexShader&&(this.vertexShader=kd(t));const n=function(e){return qh(e,(()=>e.createProgram()),"Unable to create WebGLProgram.")}(t);return Bh(t,(()=>t.attachShader(n,this.vertexShader))),Bh(t,(()=>t.attachShader(n,e))),function(e,t){if(Bh(e,(()=>e.linkProgram(t))),!(0,s.OBj)().get("ENGINE_COMPILE_ONLY")&&!1===e.getProgramParameter(t,e.LINK_STATUS))throw console.log(e.getProgramInfoLog(t)),new Error("Failed to link vertex and fragment shaders.")}(t,n),this.debug&&zh(t,n),this.vertexAttrsAreBound||(this.setProgram(n),this.vertexAttrsAreBound=function(e,t,n){return Bh(e,(()=>e.bindBuffer(e.ARRAY_BUFFER,n))),Vh(e,t,"clipSpacePos",n,3,20,0)&&Vh(e,t,"uv",n,2,20,12)}(t,this.program,this.vertexBuffer)),n}deleteProgram(e){this.throwIfDisposed(),e===this.program&&(this.program=null),null!=e&&Bh(this.gl,(()=>this.gl.deleteProgram(e)))}setProgram(e){this.throwIfDisposed(),this.program=e,null!=this.program&&this.debug&&zh(this.gl,this.program),Bh(this.gl,(()=>this.gl.useProgram(e)))}getUniformLocation(e,t,n=!0){return this.throwIfDisposed(),n?function(e,t,n){return qh(e,(()=>e.getUniformLocation(t,n)),'uniform "'+n+'" not present in program.')}(this.gl,e,t):function(e,t,n){return e.getUniformLocation(t,n)}(this.gl,e,t)}getAttributeLocation(e,t){return this.throwIfDisposed(),Bh(this.gl,(()=>this.gl.getAttribLocation(e,t)))}getUniformLocationNoThrow(e,t){return this.throwIfDisposed(),this.gl.getUniformLocation(e,t)}setInputMatrixTexture(e,t,n){this.throwIfDisposed(),this.throwIfNoProgram(),Gh(this.gl,e,t,n)}setOutputMatrixTexture(e,t,n){this.setOutputMatrixTextureDriver(e,n,t)}setOutputPackedMatrixTexture(e,t,n){this.throwIfDisposed();const[r,s]=Oh(t,n);this.setOutputMatrixTextureDriver(e,r,s)}setOutputMatrixWriteRegion(e,t,n,r){this.setOutputMatrixWriteRegionDriver(n,e,r,t)}setOutputPackedMatrixWriteRegion(e,t,n,r){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")}debugValidate(){null!=this.program&&zh(this.gl,this.program),Xh(this.gl)}executeProgram(){this.throwIfDisposed(),this.throwIfNoProgram();const e=this.gl;this.debug&&this.debugValidate(),Bh(e,(()=>e.drawElements(e.TRIANGLES,6,e.UNSIGNED_SHORT,0)))}blockUntilAllProgramsCompleted(){this.throwIfDisposed(),Bh(this.gl,(()=>this.gl.finish()))}getQueryTimerExtension(){return null==this.disjointQueryTimerExtension&&(this.disjointQueryTimerExtension=Wh(this.gl,2===(0,s.OBj)().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension}getQueryTimerExtensionWebGL2(){return this.getQueryTimerExtension()}getQueryTimerExtensionWebGL1(){return this.getQueryTimerExtension()}beginQuery(){if(2===(0,s.OBj)().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")){const e=this.gl,t=this.getQueryTimerExtensionWebGL2(),n=e.createQuery();return e.beginQuery(t.TIME_ELAPSED_EXT,n),n}const e=this.getQueryTimerExtensionWebGL1(),t=e.createQueryEXT();return e.beginQueryEXT(e.TIME_ELAPSED_EXT,t),t}endQuery(){if(2===(0,s.OBj)().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")){const e=this.gl,t=this.getQueryTimerExtensionWebGL2();return void e.endQuery(t.TIME_ELAPSED_EXT)}const e=this.getQueryTimerExtensionWebGL1();e.endQueryEXT(e.TIME_ELAPSED_EXT)}async waitForQueryAndGetTime(e){return await s.D5U.repeatedTry((()=>this.disposed||this.isQueryAvailable(e,(0,s.OBj)().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")))),this.getQueryTime(e,(0,s.OBj)().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}getQueryTime(e,t){if(0===t)return null;if(2===t){const t=this.gl;return t.getQueryParameter(e,t.QUERY_RESULT)/1e6}{const t=this.getQueryTimerExtensionWebGL1();return t.getQueryObjectEXT(e,t.QUERY_RESULT_EXT)/1e6}}isQueryAvailable(e,t){if(0===t)return!0;
vendor: 4,607 bytes, line 1
1if(2===t){const t=this.gl,n=this.getQueryTimerExtensionWebGL2(),r=t.getQueryParameter(e,t.QUERY_RESULT_AVAILABLE);return null==this.disjoint&&(this.disjoint=this.gl.getParameter(n.GPU_DISJOINT_EXT)),r&&!this.disjoint}{const t=this.getQueryTimerExtensionWebGL1(),n=t.getQueryObjectEXT(e,t.QUERY_RESULT_AVAILABLE_EXT);return null==this.disjoint&&(this.disjoint=this.gl.getParameter(t.GPU_DISJOINT_EXT)),n&&!this.disjoint}}pollFence(e){return new Promise((t=>{this.addItemToPoll((()=>e.isFencePassed()),(()=>t()))}))}pollItems(){const e=function(e){let t=0;for(;t<e.length;++t){if(!e[t]())break}return t-1}(this.itemsToPoll.map((e=>e.isDoneFn)));for(let t=0;t<=e;++t){const{resolveFn:e}=this.itemsToPoll[t];e()}this.itemsToPoll=this.itemsToPoll.slice(e+1)}addItemToPoll(e,t){if(this.itemsToPoll.push({isDoneFn:e,resolveFn:t}),this.itemsToPoll.length>1)return;let n;"setTimeoutCustom"in(0,s.OBj)().platform&&(n=(0,s.OBj)().platform.setTimeoutCustom.bind((0,s.OBj)().platform)),s.D5U.repeatedTry((()=>(this.pollItems(),0===this.itemsToPoll.length)),(()=>0),null,n)}bindTextureToFrameBuffer(e){this.throwIfDisposed(),Hh(this.gl,e,this.framebuffer),this.debug&&Xh(this.gl)}unbindTextureToFrameBuffer(){null!=this.outputTexture?(Hh(this.gl,this.outputTexture,this.framebuffer),this.debug&&Xh(this.gl)):jh(this.gl,this.framebuffer)}downloadMatrixDriver(e,t){this.bindTextureToFrameBuffer(e);const n=t();return this.unbindTextureToFrameBuffer(),n}setOutputMatrixTextureDriver(e,t,n){this.throwIfDisposed();const r=this.gl;Hh(r,e,this.framebuffer),this.debug&&Xh(r),this.outputTexture=e,Bh(r,(()=>r.viewport(0,0,t,n))),Bh(r,(()=>r.scissor(0,0,t,n)))}setOutputMatrixWriteRegionDriver(e,t,n,r){this.throwIfDisposed(),Bh(this.gl,(()=>this.gl.scissor(e,t,n,r)))}throwIfDisposed(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")}throwIfNoProgram(){if(null==this.program)throw new Error("No GPU program is currently set.")}}const{addImpl:Rd,bincountImpl:Fd,bincountReduceImpl:Od,castImpl:Md,ceilImpl:Bd,concatImpl:Ld,equalImpl:Wd,expImpl:Pd,expm1Impl:Ud,floorImpl:zd,gatherNdImpl:Vd,gatherV2Impl:Gd,greaterImpl:Hd,greaterEqualImpl:jd,lessImpl:Xd,lessEqualImpl:qd,linSpaceImpl:Kd,logImpl:Qd,maxImpl:Yd,maximumImpl:Zd,minimumImpl:Jd,multiplyImpl:ef,negImpl:tf,notEqualImpl:nf,prodImpl:rf,raggedGatherImpl:sf,raggedTensorToTensorImpl:af,rangeImpl:of,rsqrtImpl:uf,scatterImpl:lf,sigmoidImpl:cf,simpleAbsImpl:pf,sliceImpl:hf,sparseFillEmptyRowsImpl:df,sparseReshapeImpl:ff,sparseSegmentReductionImpl:mf,sqrtImpl:gf,stridedSliceImpl:yf,stringNGramsImpl:bf,stringSplitImpl:xf,stringToHashBucketFastImpl:wf,subImpl:vf,tileImpl:kf,topKImpl:If,transposeImpl:Nf,uniqueImpl:Sf}=r;function Tf(e,t){return["x","y","z","w","u","v"].slice(0,t).map((t=>`${e}.${t}`))}function Cf(e,t){return 1===t?[e]:Tf(e,t)}class Ef{constructor(e){if(this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0,this.outputShape=e,this.rank=e.length,this.enableShapeUniforms=fd(this.outputShape.length),0===this.rank)this.userCode="\n        void main() {\n          setOutput(vec4(getA(), 0., 0., 0.));\n        }\n      ";else{const e=Cf("rc",this.rank),t=(0,cd.kW)(this.rank),n=this.getOutOfBoundsCondition(e),r=this.getSetup(e),s=this.getOutput(e);this.userCode=`\n        void main() {\n          ${t} rc = getOutputCoords();\n\n          if(${n}) {\n            setOutput(vec4(0));\n          } else {\n            ${r}\n\n            setOutput(vec4(${s}));\n          }\n        }\n      `}}getSourceCoordsArr(e){const t=[];for(let n=0;n<=1;n++)for(let r=0;r<=1;r++){let s=`${0===n?"r":"rp1"}, ${0===r?"c":"cp1"}`;for(let t=2;t<this.rank;t++)s=`${e[e.length-1-t]},`+s;t.push(s)}return t}getOutOfBoundsCondition(e){if(1===this.rank)return`rc > ${this.enableShapeUniforms?"outShape":this.outputShape[0]}`;let t="";for(let n=this.rank-2;n<this.rank;n++)t+=`${e[n]} >= ${this.enableShapeUniforms?`outShape[${n}]`:this.outputShape[n]}`,n<this.rank-1&&(t+="||");return t}getSetup(e){if(1===this.rank)return"";const t=e.slice(-2),n=this.enableShapeUniforms?`outShape[${this.rank} - 1]`:this.outputShape[this.rank-1],r=this.enableShapeUniforms?`outShape[${this.rank} - 2]`:this.outputShape[this.rank-2];return`\n      int r = ${t[0]};\n      int c = ${t[1]};\n      int rp1 = r + 1;\n      int cp1 = c + 1;\n\n      bool cEdge = cp1 >= ${n};\n      bool rEdge = rp1 >= ${r};\n    `}getOutput(e){const t=this.getSourceCoordsArr(e);if(1===this.rank){return`getA(rc), (rc + 1 >= ${this.enableShapeUniforms?"outShape":this.outputShape[0]} ? 0. : getA(rc + 1)), 0, 0`}return`getA(${t[0]}),\n            cEdge ? 0. : getA(${t[1]}
1),\n            rEdge ? 0. : getA(${t[2]}),\n            rEdge || cEdge ? 0. : getA(${t[3]})`}}class $f{constructor(e,t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.customUniforms=[{name:"inputShape",type:"ivec3"}],this.outputShape=e,this.enableShapeUniforms=fd(this.outputShape.length);let n="";for(let a=0;a<4;a++){let e="thisRC = rc;";a%2===1&&(e+="thisRC.z += 1;"),a>1&&(e+="thisRC.y += 1;"),n+=`\n        ${e}\n        ${a>0?"if(thisRC.y < rows && thisRC.z < cols){":""}\n          int flatIndex = getFlatIndex(thisRC);\n\n          ivec3 inputRC = inputCoordsFromReshapedOutCoords(flatIndex);\n          vec2 inputRCInnerDims = vec2(float(inputRC.y),float(inputRC.z));\n\n          result[${a}] =\n            getChannel(getA(inputRC.x, inputRC.y, inputRC.z), inputRCInnerDims);\n        ${a>0?"}":""}\n      `}var r,s;this.userCode=`\n      ${r=t,s=this.enableShapeUniforms,`\n    ivec3 inputCoordsFromReshapedOutCoords(int index) {\n      ${s?md.al(["r","c","d"],"inputShape"):md.RW(["r","c","d"],r)}\n      return ivec3(r, c, d);\n    }\n  `}\n      ${this.enableShapeUniforms?md.nc():md.ku(e)}\n\n      void main() {\n        ivec3 rc = getOutputCoords();\n\n        vec4 result = vec4(0.);\n\n        ivec3 thisRC;\n        int rows = ${this.enableShapeUniforms?"outShape[1]":e[1]};\n        int cols = ${this.enableShapeUniforms?"outShape[2]":e[2]};\n\n        ${n}\n\n        setOutput(result);\n      }\n    `}}class Af{constructor(e){this.gpgpu=e,this.numUsedTextures=0,this.numFreeTextures=0,this._numBytesAllocated=0,this._numBytesFree=0,this.freeTextures={},this.logEnabled=!1,this.usedTextures={}}acquireTexture(e,t,n){const r=_f(t,n),s=Rf(e,r,n);s in this.freeTextures||(this.freeTextures[s]=[]),s in this.usedTextures||(this.usedTextures[s]=[]);const a=Df(e,r,this.gpgpu.gl,this.gpgpu.textureConfig,n);if(this.freeTextures[s].length>0){this.numFreeTextures--,this.numUsedTextures++,this._numBytesFree-=a,this.log();const e=this.freeTextures[s].shift();return this.usedTextures[s].push(e),e}let o;return r===_h.PACKED_2X2_FLOAT32?o=this.gpgpu.createPackedMatrixTexture(e[0],e[1]):r===_h.PACKED_2X2_FLOAT16?o=this.gpgpu.createFloat16PackedMatrixTexture(e[0],e[1]):r===_h.UNPACKED_FLOAT32?o=this.gpgpu.createFloat32MatrixTexture(e[0],e[1]):r===_h.UNPACKED_FLOAT16?o=this.gpgpu.createFloat16MatrixTexture(e[0],e[1]):r===_h.PACKED_4X1_UNSIGNED_BYTE&&(o=this.gpgpu.createUnsignedBytesMatrixTexture(e[0],e[1])),this.usedTextures[s].push(o),this.numUsedTextures++,this._numBytesAllocated+=a,this.log(),o}releaseTexture(e,t,n,r){if(null==this.freeTextures)return;const a=_f(n,r),o=Rf(t,a,r);o in this.freeTextures||(this.freeTextures[o]=[]);const i=Df(t,a,this.gpgpu.gl,this.gpgpu.textureConfig,r),u=(0,s.OBj)().get("WEBGL_DELETE_TEXTURE_THRESHOLD");-1!==u&&this._numBytesAllocated>u?(this.gpgpu.deleteMatrixTexture(e.texture),this._numBytesAllocated-=i):(this.freeTextures[o].push(e),this.numFreeTextures++,this._numBytesFree+=i),this.numUsedTextures--;const l=this.usedTextures[o],c=l.indexOf(e);if(c<0)throw new Error("Cannot release a texture that was never provided by this texture manager");l.splice(c,1),this.log()}log(){if(!this.logEnabled)return;const e=this.numFreeTextures+this.numUsedTextures;console.log("Free/Used",`${this.numFreeTextures} / ${this.numUsedTextures}`,`(${e})`);const t=this._numBytesFree/this._numBytesAllocated;console.log(`Bytes allocated: ${this._numBytesAllocated}`),console.log(`Bytes unused: ${this._numBytesFree} (${Math.round(100*t)}%)`)}get numBytesAllocated(){return this._numBytesAllocated}get numBytesFree(){return this._numBytesFree}getNumUsedTextures(){return this.numUsedTextures}getNumFreeTextures(){return this.numFreeTextures}dispose(){if(null!=this.freeTextures){for(const e in this.freeTextures)this.freeTextures[e].forEach((e=>{this.gpgpu.deleteMatrixTexture(e.texture)}));for(const e in this.usedTextures)this.usedTextures[e].forEach((e=>{this.gpgpu.deleteMatrixTexture(e.texture)}));this.freeTextures=null,this.usedTextures=null,this.numUsedTextures=0,this.numFreeTextures=0,this._numBytesAllocated=0,this._numBytesFree=0}}}
1function Df(e,t,n,r,s){const a=function(e,t){switch(e){case _h.PACKED_2X2_FLOAT32:return $d(t);case _h.PACKED_2X2_FLOAT16:return Ad(t);case _h.UNPACKED_FLOAT32:return Td(t);case _h.UNPACKED_FLOAT16:return Cd(t);case _h.PACKED_4X1_UNSIGNED_BYTE:return Ed(t);default:throw new Error(`Unknown physical texture type ${e}`)}}(t,r);let o;if(s){const[t,n]=Oh(e[0],e[1]);o=t*n}else{const[t,n]=Rh(e[0],e[1]);o=t*n}return o*function(e,t){const n=e;if(t===n.R32F)return 4;if(t===n.R16F)return 2;if(t===n.RGBA32F)return 16;if(t===e.RGBA)return 16;if(t===n.RGBA16F)return 8;if(t===n.RGBA8)return 4;throw new Error(`Unknown internal format ${t}`)}(n,a)}function _f(e,t){if(e===Dh.UPLOAD)return _h.PACKED_2X2_FLOAT32;if(e===Dh.RENDER||null==e)return function(e){return(0,s.OBj)().getBool("WEBGL_RENDER_FLOAT32_ENABLED")?e?_h.PACKED_2X2_FLOAT32:_h.UNPACKED_FLOAT32:e?_h.PACKED_2X2_FLOAT16:_h.UNPACKED_FLOAT16}(t);if(e===Dh.DOWNLOAD||e===Dh.PIXELS)return _h.PACKED_4X1_UNSIGNED_BYTE;throw new Error(`Unknown logical texture type ${e}`)}function Rf(e,t,n){return`${e[0]}_${e[1]}_${t}_${n}`}class Ff{constructor(e,t){this.variableNames=["A"],this.outputShape=e,this.enableShapeUniforms=fd(this.outputShape.length),this.userCode=`\n      float unaryOperation(float x) {\n        ${t}\n      }\n\n      void main() {\n        float x = getAAtOutCoords();\n        float y = unaryOperation(x);\n\n        setOutput(y);\n      }\n    `}}const Of="return abs(x);";const Mf="return x;";class Bf{constructor(e,t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.enableShapeUniforms=fd(this.outputShape.length),this.userCode=`\n      vec4 unaryOperation(vec4 x) {\n        ${t}\n      }\n\n      void main() {\n        vec4 x = getAAtOutCoords();\n        vec4 y = unaryOperation(x);\n\n        setOutput(y);\n      }\n    `}}class Lf{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outputShape=e,this.enableShapeUniforms=fd(this.outputShape.length);const t=e.length,n=Cf("rc",t),r=(0,cd.kW)(t),s=function(e,t){if(1===e)return"rc";let n="";for(let r=0;r<e;r++)n+=t[r],r<e-1&&(n+=",");return n}(t,n),a=n.slice(-2),o=t<=1?"rc":`vec2(${a.join(",")})`;this.userCode=`\n      void main() {\n        ${r} rc = getOutputCoords();\n        vec4 packedInput = getA(${s});\n\n        setOutput(getChannel(packedInput, ${o}));\n      }\n    `}}const Wf=s.GDt.ZA,Pf={};const Uf=(0,s.OBj)().getNumber("CPU_HANDOFF_SIZE_THRESHOLD");class zf extends s.Zuw{constructor(e){if(super(),this.pendingRead=new WeakMap,this.pendingDisposal=new WeakSet,this.dataRefCount=new WeakMap,this.numBytesInGPU=0,this.uploadWaitMs=0,this.downloadWaitMs=0,this.lastGlFlushTime=0,this.warnedAboutMemory=!1,this.pendingDeletes=0,this.disposed=!1,!(0,s.OBj)().getBool("HAS_WEBGL"))throw new Error("WebGL is not supported on this device");let t;if(null!=e){if(e instanceof _d)t=e;else{const n=$h((0,s.OBj)().getNumber("WEBGL_VERSION"),e);t=new _d(n)}this.binaryCache={},this.gpgpuCreatedLocally=!1}else{const e=$h((0,s.OBj)().getNumber("WEBGL_VERSION"));t=new _d(e),this.binaryCache=((n=(0,s.OBj)().getNumber("WEBGL_VERSION"))in Pf||(Pf[n]={}),Pf[n]),this.gpgpuCreatedLocally=!0}var n;this.gpgpu=t,this.canvas=this.gpgpu.gl.canvas,this.textureManager=new Af(this.gpgpu),this.numMBBeforeWarning=null==(0,s.OBj)().global.screen?1024:(0,s.OBj)().global.screen.height*(0,s.OBj)().global.screen.width*window.devicePixelRatio*600/1024/1024,this.texData=new s.JLz(this,(0,s.SRH)())}nextDataId(){return zf.nextDataId++}numDataIds(){return this.texData.numDataIds()-this.pendingDeletes}write(e,t,n){if(((0,s.OBj)().getBool("WEBGL_CHECK_NUMERICAL_PROBLEMS")||(0,s.OBj)().getBool("DEBUG"))&&this.checkNumericalProblems(e),"complex64"===n&&null!=e)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");const r={id:this.nextDataId()};return this.texData.set(r,{shape:t,dtype:n,values:e,usage:Dh.UPLOAD,refCount:1}),r}refCount(e){if(this.texData.has(e)){return this.texData.get(e).refCount}return 0}incRef(e){this.texData.get(e).refCount++}decRef(e){if(this.texData.has(e)){this.texData.get(e).refCount--}}move(e,t,n,r,a){if((0,s.OBj)().getBool("DEBUG")&&this.checkNumericalProblems(t),"complex64"===r)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");this.texData.set(e,{shape:n,dtype:r,values:t,usage:Dh.UPLOAD,refCount:a})}disposeIntermediateTensorInfo(e){this.disposeData(e.dataId)}readSync(e){const t=this.texData.get(e),{values:n,dtype:r,complexTensorInfos:a,slice:o,shape:i,isPacked:u}=t;if(null!=o){let t;t=u?new Bf(i,Mf):new Ff(i,Mf);const n=this.runWebGLProgram(t,[{dataId:e,shape:i,dtype:r}],r),s=this.readSync(n.dataId);return this.disposeIntermediateTensorInfo(n),s}if(null!=n)return this.convertAndCacheOnCPU(e);if("string"===r)return n;const l=null!=this.activeTimers;let c,p;if(l&&(c=s.D5U.now()),"complex64"===r){const e=this.readSync(a.real.dataId),t=this.readSync(a.imag.dataId);p=s.Wap.mergeRealAndImagArrays(e,t)}else p=this.getValuesFromTexture(e);return l&&(this.downloadWaitMs+=s.D5U.now()-c),this.convertAndCacheOnCPU(e,p)}async read(e){if(this.pendingRead.has(e)){const t=this.pendingRead.get(e);return new Promise((e=>t.push(e)))}const t=this.texData.get(e),{values:n,shape:r,slice:a,dtype:o,complexTensorInfos:i,isPacked:u}=t;if(null!=a){let t;t=u?new Bf(r,Mf):new Ff(r,Mf);const n=this.runWebGLProgram(t,[{dataId:e,shape:r,dtype:o}],o),s=this.read(n.dataId);return this.disposeIntermediateTensorInfo(n),s}if(null!=n)return this.convertAndCacheOnCPU(e);if((0,s.OBj)().getBool("DEBUG")&&!(0,s.OBj)().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")&&2===(0,s.OBj)().getNumber("WEBGL_VERSION"))throw new Error("tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.");let l,c,p=null;if("complex64"!==o&&(0,s.OBj)().get("WEBGL_BUFFER_SUPPORTED")){l=this.decode(e);const t=this.texData.get(l.dataId);p=this.gpgpu.createBufferFromTexture(t.texture.texture,...Fh(r))}if(this.pendingRead.set(e,[]),"complex64"!==o&&await this.gpgpu.createAndWaitForFence(),"complex64"===o){const e=await Promise.all([this.read(i.real.dataId),this.read(i.imag.dataId)]),t=e[0],n=e[1];c=s.Wap.mergeRealAndImagArrays(t,n)}else if(null==p)c=this.getValuesFromTexture(e);else{const e=s.D5U.sizeFromShape(r);c=this.gpgpu.downloadFloat32MatrixFromBuffer(p,e)}if(null!=l&&this.disposeIntermediateTensorInfo(l),null!=p){const e=this.gpgpu.gl;Bh(e,(()=>e.deleteBuffer(p)))}const h=this.convertAndCacheOnCPU(e,c),d=this.pendingRead.get(e);return this.pendingRead.delete(e),d.forEach((e=>e(h))),this.pendingDisposal.has(e)&&(this.pendingDisposal.delete(e),this.disposeData(e)&&(0,s.SRH)().removeDataId(e,this),this.pendingDeletes--),h}readToGPU(e,t={}){const n=this.texData.get(e),{values:r,shape:a,slice:o,dtype:i,isPacked:u,texture:l}=n;if("complex64"===i)throw new Error("Does not support reading texture for complex64 dtype.");if(null!=o){let n;n=u?new Bf(a,Mf):new Ff(a,Mf);const r=this.runWebGLProgram(n,[{dataId:e,shape:a,dtype:i}],i),s=this.readToGPU(r,t);return this.disposeIntermediateTensorInfo(r),s}if(null==l)throw null!=r?new Error("Data is not on GPU but on CPU."):new Error("There is no data on GPU or CPU.");const c=this.decode(e,t.customTexShape),p=(0,s.SRH)().makeTensorFromTensorInfo(c),h=this.texData.get(c.dataId);return Object.assign({tensorRef:p},h.texture)}bufferSync(e){const t=this.readSync(e.dataId);if("string"===e.dtype)try{const n=t.map((e=>s.D5U.decodeString(e)));return(0,s.f3b)(e.shape,e.dtype,n)}catch(n){throw new Error("Failed to decode encoded string bytes into utf-8")}return(0,s.f3b)(e.shape,e.dtype,t)}
1checkNumericalProblems(e){if(null!=e)for(let t=0;t<e.length;t++){const n=e[t];if(!Lh(n)){if((0,s.OBj)().getBool("WEBGL_RENDER_FLOAT32_CAPABLE"))throw Error(`The value ${n} cannot be represented with your current settings. Consider enabling float32 rendering: 'tf.env().set('WEBGL_RENDER_FLOAT32_ENABLED', true);'`);throw Error(`The value ${n} cannot be represented on this device.`)}}}getValuesFromTexture(e){const{shape:t,dtype:n,isPacked:r}=this.texData.get(e),a=s.D5U.sizeFromShape(t);if((0,s.OBj)().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")){const n=this.decode(e),r=this.texData.get(n.dataId),s=this.gpgpu.downloadMatrixFromPackedTexture(r.texture.texture,...Fh(t)).subarray(0,a);return this.disposeIntermediateTensorInfo(n),s}const o=(0,s.OBj)().getBool("WEBGL_PACK")&&!0===r,i=o?Zh(t):t,u=o?new xd(i):new bd(i),l=this.runWebGLProgram(u,[{shape:i,dtype:n,dataId:e}],"float32"),c=this.texData.get(l.dataId),p=this.gpgpu.downloadByteEncodedFloatMatrixFromOutputTexture(c.texture.texture,c.texShape[0],c.texShape[1]).subarray(0,a);return this.disposeIntermediateTensorInfo(l),p}timerAvailable(){return(0,s.OBj)().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0}time(e){const t=this.activeTimers,n=[];let r=!1;null==this.programTimersStack?(this.programTimersStack=n,r=!0):this.activeTimers.push(n),this.activeTimers=n,e();const a=s.D5U.flatten(this.activeTimers.map((e=>e.query))).filter((e=>null!=e)),o=s.D5U.flatten(this.activeTimers.map((e=>e.name))).filter((e=>null!=e));this.activeTimers=t,r&&(this.programTimersStack=null);const i={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:null,wallMs:null};return(async()=>{if((0,s.OBj)().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0){const e=await Promise.all(a);i.kernelMs=s.D5U.sum(e),i.getExtraProfileInfo=()=>e.map(((e,t)=>({name:o[t],ms:e}))).map((e=>`${e.name}: ${e.ms}`)).join(", ")}else i.kernelMs={error:"WebGL query timers are not supported in this environment."};return this.uploadWaitMs=0,this.downloadWaitMs=0,i})()}memory(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU,numBytesInGPUAllocated:this.textureManager.numBytesAllocated,numBytesInGPUFree:this.textureManager.numBytesFree}}startTimer(){return(0,s.OBj)().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?this.gpgpu.beginQuery():{startMs:s.D5U.now(),endMs:null}}endTimer(e){return(0,s.OBj)().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?(this.gpgpu.endQuery(),e):(e.endMs=s.D5U.now(),e)}async getQueryTime(e){if((0,s.OBj)().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0)return this.gpgpu.waitForQueryAndGetTime(e);const t=e;return t.endMs-t.startMs}disposeData(e,t=!1){if(this.pendingDisposal.has(e))return!1;if(!this.texData.has(e))return!0;if(t?this.texData.get(e).refCount=0:this.texData.get(e).refCount--,!t&&this.texData.get(e).refCount>0)return!1;if(this.pendingRead.has(e))return this.pendingDisposal.add(e),this.pendingDeletes++,!1;this.releaseGPUData(e);const{complexTensorInfos:n}=this.texData.get(e);return null!=n&&(this.disposeData(n.real.dataId,t),this.disposeData(n.imag.dataId,t)),this.texData.delete(e),!0}releaseGPUData(e){const{texture:t,dtype:n,texShape:r,usage:s,isPacked:a,slice:o}=this.texData.get(e),i=o&&o.origDataId||e,u=this.dataRefCount.get(i);u>1?this.dataRefCount.set(i,u-1):(this.dataRefCount.delete(i),null!=t&&(this.numBytesInGPU-=this.computeBytes(r,n),this.textureManager.releaseTexture(t,r,s,a)));const l=this.texData.get(e);l.texture=null,l.texShape=null,l.isPacked=!1,l.slice=null}getTexture(e){return this.uploadToGPU(e),this.texData.get(e).texture.texture}getDataInfo(e){return this.texData.get(e)}shouldExecuteOnCPU(e,t=Uf){return(0,s.OBj)().getBool("WEBGL_CPU_FORWARD")&&e.every((e=>null==this.texData.get(e.dataId).texture&&s.D5U.sizeFromShape(e.shape)<t))}getGPGPUContext(){return this.gpgpu}where(e){s.Wap.warn("tf.where() in webgl locks the UI thread. Call tf.whereAsync() instead");const t=e.dataSync();return Wf(e.shape,t)}packedUnaryOp(e,t,n){const r=new Bf(e.shape,t),a=this.compileAndRun(r,[e],n);return(0,s.SRH)().makeTensorFromTensorInfo(a)}abs(e){if(this.shouldExecuteOnCPU([e])&&"complex64"!==e.dtype){const t=pf(this.texData.get(e.dataId).values);return this.makeOutput(e.shape,e.dtype,t)}if((0,s.OBj)().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,Of,e.dtype);const t=new Ff(e.shape,Of),n=this.compileAndRun(t,[e]);return(0,s.SRH)().makeTensorFromTensorInfo(n)}makeTensorInfo(e,t,n){let r;if("string"===t&&null!=n&&n.length>0&&s.D5U.isString(n[0])){const a=n.map((e=>s.D5U.encodeString(e)));r=this.write(a,e,t)}else r=this.write(n,e,t);return this.texData.get(r).usage=null,{dataId:r,shape:e,dtype:t}}makeOutput(e,t,n){return(0,s.SRH)().makeTensorFromTensorInfo(this.makeTensorInfo(e,t,n),this)}unpackTensor(e){const t=new Lf(e.shape);return this.runWebGLProgram(t,[e],e.dtype)}packTensor(e){const t=new Ef(e.shape);return this.runWebGLProgram(t,[e],e.dtype,null,!0)}packedReshape(e,t){const n=[Qh(e.shape),...Yh(e.shape)],r={dtype:e.dtype,shape:n,dataId:e.dataId},s=[Qh(t),...Yh(t)],a=new $f(s,n),o=[n],i=this.runWebGLProgram(a,[r],e.dtype,o,!0);return{dataId:i.dataId,shape:t,dtype:i.dtype}}decode(e,t){const n=this.texData.get(e),{isPacked:r,shape:a,dtype:o}=n;
1if(null!=t){const e=s.D5U.sizeFromShape(a),n=t[0]*t[1]*4;s.D5U.assert(e<=n,(()=>"customTexShape is too small. Row * Column * 4 should be equal or larger than the size of the tensor data."))}const i=Zh(a);let u;u=r?new yd(i):new gd(i);const l=[null!=t?t:Fh(i)];return{dtype:o,shape:a,dataId:this.runWebGLProgram(u,[{shape:i,dtype:o,dataId:e}],o,l,!0,t).dataId}}runWebGLProgram(e,t,n,r,a=!1,o){const i=this.makeTensorInfo(e.outputShape,n),u=this.texData.get(i.dataId);if(e.packedOutput&&(u.isPacked=!0),e.outPackingScheme===Ah.DENSE){const t=null!=o?o:Fh(e.outputShape);u.texShape=t.map((e=>2*e))}if(null!=e.outTexUsage&&(u.usage=e.outTexUsage),0===s.D5U.sizeFromShape(i.shape))return u.values=s.D5U.getTypedArrayFromDType(i.dtype,0),i;const l=[],c=t.map((t=>{if("complex64"===t.dtype)throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");let n=this.texData.get(t.dataId);if(null==n.texture){if(!e.packedInputs&&s.D5U.sizeFromShape(t.shape)<=(0,s.OBj)().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:t.shape,texData:null,isUniform:!0,uniformValues:n.values};e.packedInputs&&(n.isPacked=!0,n.shape=t.shape)}if(this.uploadToGPU(t.dataId),!!n.isPacked!==!!e.packedInputs)t=n.isPacked?this.unpackTensor(t):this.packTensor(t),l.push(t),n=this.texData.get(t.dataId);else if(n.isPacked&&!ed(n.shape,t.shape)){const e=t,r=t.shape;t.shape=n.shape,t=this.packedReshape(t,r),l.push(t),n=this.texData.get(t.dataId),e.shape=r}return{shape:t.shape,texData:n,isUniform:!1}}));this.uploadToGPU(i.dataId);const p={shape:i.shape,texData:u,isUniform:!1},h=function(e,t,n){let r="";t.concat(n).forEach((t=>{const a=null!=t.texData&&null!=t.texData.slice&&t.texData.slice.flatOffset>0;if(e.enableShapeUniforms&&!t.isUniform){const o=t.texData.texShape,{useSqueezeShape:i,uniformShape:u,keptDims:l}=cd.Tt(e.packedInputs,t.shape,o);let c="",p="",h="";if(1===u.length&&e.packedInputs){const e=[Math.ceil(o[0]/2),Math.ceil(o[1]/2)];c=`${e[0]>1}_${e[1]>1}`}else if(2!==u.length||e.packedInputs){if(u.length>2&&!e.packedInputs){const e=s.D5U.computeStrides(u);h=`${e[0]===o[1]}_${e[e.length-1]===o[1]}`}}else p=`${u[0]>1}_${u[1]>1}`;const d=t.shape.length,f=2===u.length&&s.D5U.arraysEqual(t.shape,o),m=1===s.D5U.sizeFromShape(t.shape),g=s.Wap.getBroadcastDims(t.shape,n.shape),y=!e.packedInputs&&d===n.shape.length&&s.D5U.arraysEqual(o,n.texData.texShape),b=e.packedInputs||u.length>2?"":`${o[0]>1}_${o[1]>1}`;r+=`${d}_${y}_${i?l:""}_${u.length}_${m}_${g}_${f}_${c}_${p}_${h}_${b}_${a}`}else{const e=t.isUniform?"uniform":t.texData.texShape;r+=`${t.shape}_${e}_${a}`}}));const a=e.userCode;let o=e.constructor.name;return o+="_"+r+"_"+a+`${(0,s.OBj)().getNumber("WEBGL_VERSION")}`,o}(e,c,p),d=this.getAndSaveBinary(h,(()=>pd(this.gpgpu,e,c,p))),f=null!=this.activeTimers;let m;f&&(m=this.startTimer()),(0,s.OBj)().get("ENGINE_COMPILE_ONLY")||function(e,t,n,r,a){t.program.enableShapeUniforms||(dd(t.inShapeInfos,n),dd([t.outShapeInfo],[r]));const o=r.texData.texture,i=r.texData.texShape;r.texData.isPacked?e.setOutputPackedMatrixTexture(o.texture,i[0],i[1]):e.setOutputMatrixTexture(o.texture,i[0],i[1]),e.setProgram(t.webGLProgram),1===(0,s.OBj)().getNumber("WEBGL_VERSION")&&null!==t.infLoc&&e.gl.uniform1f(t.infLoc,1/0),null!==t.nanLoc&&e.gl.uniform1f(t.nanLoc,NaN),n.forEach(((n,r)=>{const a=t.program.variableNames[r],o=t.uniformLocations[a],i=t.uniformLocations[`offset${a}`],u=t.inShapesLocations[`${a}Shape`],l=t.inTexShapesLocations[`${a}TexShape`];if(u){const{uniformShape:r}=cd.Tt(t.program.packedInputs,n.shape,n.texData.texShape);switch(r.length){case 1:e.gl.uniform1iv(u,new Int32Array(r));break;case 2:e.gl.uniform2iv(u,new Int32Array(r));break;case 3:e.gl.uniform3iv(u,new Int32Array(r));break;case 4:e.gl.uniform4iv(u,new Int32Array(r))}}if(l&&e.gl.uniform2i(l,n.texData.texShape[0],n.texData.texShape[1]),null!=o)if(n.isUniform)if(s.D5U.sizeFromShape(n.shape)<2)e.gl.uniform1f(o,n.uniformValues[0]);else{let t=n.uniformValues;t instanceof Float32Array||(t=new Float32Array(t)),e.gl.uniform1fv(o,t)}else null!=n.texData.slice&&null!=i&&e.gl.uniform1i(i,n.texData.slice.flatOffset),e.setInputMatrixTexture(n.texData.texture.texture,o,r)}));const u=t.outShapeLocation;if(u)switch(r.shape.length){case 1:e.gl.uniform1iv(u,new Int32Array(r.shape));break;case 2:e.gl.uniform2iv(u,new Int32Array(r.shape));break;case 3:e.gl.uniform3iv(u,new Int32Array(r.shape));break;case 4:e.gl.uniform4iv(u,new Int32Array(r.shape))}if(t.outShapeStridesLocation){const n=s.D5U.computeStrides(r.shape);switch(r.shape.length){case 2:e.gl.uniform1iv(t.outShapeStridesLocation,new Int32Array(n));break;case 3:e.gl.uniform2iv(t.outShapeStridesLocation,new Int32Array(n));break;case 4:e.gl.uniform3iv(t.outShapeStridesLocation,new Int32Array(n))}}t.outTexShapeLocation&&e.gl.uniform2i(t.outTexShapeLocation,r.texData.texShape[0],r.texData.texShape[1]),t.program.customUniforms&&a&&t.program.customUniforms.forEac
1h(((n,r)=>{const s=t.customUniformLocations[r],o=a[r];if("float"===n.type)e.gl.uniform1fv(s,o);else if("vec2"===n.type)e.gl.uniform2fv(s,o);else if("vec3"===n.type)e.gl.uniform3fv(s,o);else if("vec4"===n.type)e.gl.uniform4fv(s,o);else if("int"===n.type)e.gl.uniform1iv(s,o);else if("ivec2"===n.type)e.gl.uniform2iv(s,o);else if("ivec3"===n.type)e.gl.uniform3iv(s,o);else{if("ivec4"!==n.type)throw Error(`uniform type ${n.type} is not supported yet.`);e.gl.uniform4iv(s,o)}})),e.executeProgram()}(this.gpgpu,d,c,p,r),l.forEach((e=>this.disposeIntermediateTensorInfo(e))),f&&(m=this.endTimer(m),this.activeTimers.push({name:e.constructor.name,query:this.getQueryTime(m)}));const g=(0,s.OBj)().get("WEBGL_FLUSH_THRESHOLD");if(g>0){const e=s.D5U.now();e-this.lastGlFlushTime>g&&(this.gpgpu.gl.flush(),this.lastGlFlushTime=e)}if(!(0,s.OBj)().getBool("WEBGL_LAZILY_UNPACK")&&u.isPacked&&!1===a){const e=this.unpackTensor(i);return this.disposeIntermediateTensorInfo(i),e}return i}compileAndRun(e,t,n,r,s=!1){n=n||t[0].dtype;return this.runWebGLProgram(e,t,n,r,s)}getAndSaveBinary(e,t){return e in this.binaryCache||(this.binaryCache[e]=t()),this.binaryCache[e]}getTextureManager(){return this.textureManager}dispose(){if(!this.disposed){if(!(0,s.OBj)().getBool("IS_TEST")){Object.keys(this.binaryCache).forEach((e=>{this.gpgpu.deleteProgram(this.binaryCache[e].webGLProgram),delete this.binaryCache[e]}))}this.textureManager.dispose(),null!=this.canvas&&"undefined"!==typeof HTMLCanvasElement&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0}}floatPrecision(){return null==this.floatPrecisionValue&&(this.floatPrecisionValue=(0,s.lub)((()=>{if(!(0,s.OBj)().get("WEBGL_RENDER_FLOAT32_ENABLED")){const e=(0,s.OBj)().getBool("DEBUG");(0,s.OBj)().set("DEBUG",!1);const t=this.abs((0,s.iD$)(1e-8)).dataSync()[0];if((0,s.OBj)().set("DEBUG",e),t>0)return 32}return 16}))),this.floatPrecisionValue}epsilon(){return 32===this.floatPrecision()?1e-7:1e-4}uploadToGPU(e){const t=this.texData.get(e),{shape:n,dtype:r,values:a,texture:o,usage:i,isPacked:u}=t;if(null!=o)return;const l=null!=this.activeTimers;let c;l&&(c=s.D5U.now());let p=t.texShape;if(null==p&&(p=function(e,t=!1){let n=(0,s.OBj)().getNumber("WEBGL_MAX_TEXTURE_SIZE"),r=(0,s.OBj)().getNumber("WEBGL_MAX_SIZE_FOR_NARROW_TEXTURE");if(r===1/0&&(0,s.OBj)().getBool("WEBGL_AUTO_SQUARIFY_NARROW_TEXTURE_SHAPE")&&(r=n/2),t&&(n*=2,r*=2,1===(e=e.map(((t,n)=>n>=e.length-2?s.D5U.nearestLargerEven(e[n]):e[n]))).length&&(e=[2,e[0]])),2!==e.length){const t=s.D5U.squeezeShape(e);e=t.newShape}let a=s.D5U.sizeFromShape(e),o=null;e.length<=1&&a<=n?o=[1,a]:2===e.length&&e[0]<=n&&e[1]<=n?o=e:3===e.length&&e[0]*e[1]<=n&&e[2]<=n?o=[e[0]*e[1],e[2]]:3===e.length&&e[0]<=n&&e[1]*e[2]<=n?o=[e[0],e[1]*e[2]]:4===e.length&&e[0]*e[1]*e[2]<=n&&e[3]<=n?o=[e[0]*e[1]*e[2],e[3]]:4===e.length&&e[0]<=n&&e[1]*e[2]*e[3]<=n&&(o=[e[0],e[1]*e[2]*e[3]]);const i=null!=o&&Math.max(...o)>r&&Math.min(...o)<=(t?2:1)&&Math.min(...o)>0;if(null==o||i)if(t){const t=Qh(e);let n=2,r=2;e.length&&([n,r]=Yh(e)),a=t*(n/2)*(r/2),o=s.D5U.sizeToSquarishShape(a).map((e=>2*e))}else o=s.D5U.sizeToSquarishShape(a);return o}(n,u),t.texShape=p),null!=a){const e=Zh(n);let o,i=p[1],h=p[0];const d=a instanceof Uint8Array||a instanceof Uint8ClampedArray;!u&&d||([i,h]=Oh(p[0],p[1])),o=u?new vd(e,d):new wd(e,d);const f=d?[h,i]:p,m=this.makeTensorInfo(f,r),g=this.texData.get(m.dataId);g.usage=d?Dh.PIXELS:Dh.UPLOAD,g.texShape=f,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(m.dataId),i,h,a);const y=[[h,i]],b=!0,x=this.runWebGLProgram(o,[m],r,y,b),w=this.texData.get(x.dataId);t.texShape=w.texShape,t.isPacked=w.isPacked,t.usage=w.usage,(0,s.OBj)().get("ENGINE_COMPILE_ONLY")?this.disposeData(x.dataId):(t.texture=w.texture,t.values=null,this.texData.delete(x.dataId)),this.disposeIntermediateTensorInfo(m),l&&(this.uploadWaitMs+=s.D5U.now()-c)}else{const e=this.acquireTexture(p,i,r,u);t.texture=e}}convertAndCacheOnCPU(e,t){const n=this.texData.get(e),{dtype:r}=n;return this.releaseGPUData(e),null!=t&&(n.values=function(e,t){if("float32"===t||"complex64"===t)return e;if("int32"===t||"bool"===t){const n="int32"===t?new Int32Array(e.length):new Uint8Array(e.length);for(let t=0;t<n.length;++t)n[t]=Math.round(e[t]);return n}throw new Error(`Unknown dtype ${t}`)}(t,r)),n.values}acquireTexture(e,t,n,r){if(this.numBytesInGPU+=this.computeBytes(e,n),!this.warnedAboutMemory&&this.numBytesInGPU>1024*this.numMBBeforeWarning*1024){const e=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn(`High memory usage in GPU: ${e} MB, most likely due to a memory leak`)}return this.textureManager.acquireTexture(e,t,r)}computeBytes(e,t){return e[0]*e[1]*s.D5U.bytesPerElement(t)}checkCompileCompletion(){for(const[,e]of Object.entries(this.binaryCache))this.checkCompletion_(e)}async checkCompileCompletionAsync(){const e=[];
1if(this.gpgpu.parallelCompilationExtension){for(const[,t]of Object.entries(this.binaryCache))e.push(this.checkCompletionAsync_(t));return Promise.all(e)}for(const[,t]of Object.entries(this.binaryCache)){const n=new Promise((e=>{try{this.checkCompletion_(t),e(!0)}catch(n){throw n}}));e.push(n)}return Promise.all(e)}async checkCompletionAsync_(e){return this.gpgpu.gl.getProgramParameter(e.webGLProgram,this.gpgpu.parallelCompilationExtension.COMPLETION_STATUS_KHR)?this.checkCompletion_(e):(await(0,s.glt)(),this.checkCompletionAsync_(e))}checkCompletion_(e){if(!1===this.gpgpu.gl.getProgramParameter(e.webGLProgram,this.gpgpu.gl.LINK_STATUS)){if(console.log(this.gpgpu.gl.getProgramInfoLog(e.webGLProgram)),!1===this.gpgpu.gl.getShaderParameter(e.fragmentShader,this.gpgpu.gl.COMPILE_STATUS))throw Uh(e.source,this.gpgpu.gl.getShaderInfoLog(e.fragmentShader)),new Error("Failed to compile fragment shader.");throw new Error("Failed to link vertex and fragment shaders.")}return!0}getUniformLocations(){for(const[,e]of Object.entries(this.binaryCache)){const{uniformLocations:t,customUniformLocations:n,infLoc:r,nanLoc:s,inShapesLocations:a,inTexShapesLocations:o,outShapeLocation:i,outShapeStridesLocation:u,outTexShapeLocation:l}=hd(this.gpgpu,e.program,e.webGLProgram);e.uniformLocations=t,e.customUniformLocations=n,e.infLoc=r,e.nanLoc=s,e.inShapesLocations=a,e.inTexS
1hapesLocations=o,e.outShapeLocation=i,e.outShapeStridesLocation=u,e.outTexShapeLocation=l}}}zf.nextDataId=0;s.C2$.isBrowser()&&(0,s.jqO)("webgl",(()=>new zf),2);class Vf{constructor(e,t,n){this.variableNames=["A","B"],this.outputShape=s.Wap.assertAndGetBroadcastShape(t,n),this.enableShapeUniforms=fd(this.outputShape.length),this.userCode=`\n      float binaryOperation(float a, float b) {\n        ${e}\n      }\n\n      void main() {\n        float a = getAAtOutCoords();\n        float b = getBAtOutCoords();\n        setOutput(binaryOperation(a, b));\n      }\n    `}}class Gf{constructor(e,t,n,r=!1){this.variableNames=["A","B"],this.supportsBroadcasting=!0,this.packedInputs=!0,this.packedOutput=!0,this.outputShape=s.Wap.assertAndGetBroadcastShape(t,n);const a=this.outputShape.length;this.enableShapeUniforms=fd(a);let o="";if(r)if(0===a||1===s.D5U.sizeFromShape(this.outputShape))o="\n          result.y = 0.;\n          result.z = 0.;\n          result.w = 0.;\n        ";else{if(o=`\n          ${(0,cd.kW)(a)} coords = getOutputCoords();\n        `,1===a)this.enableShapeUniforms?o+="\n            result.y = (coords + 1) >= outShape ? 0. : result.y;\n            result.z = 0.;\n            result.w = 0.;\n          ":o+=`\n            result.y = (coords + 1) >= ${this.outputShape[0]} ? 0. : result.y;\n            result.z = 0.;\n            result.w = 0.;\n          `;else{const e=Cf("coords",a);this.enableShapeUniforms?o+=`\n            bool nextRowOutOfBounds =\n              (${e[a-2]} + 1) >= outShape[${a} - 2];\n            bool nextColOutOfBounds =\n              (${e[a-1]} + 1) >= outShape[${a} - 1];\n            result.y = nextColOutOfBounds ? 0. : result.y;\n            result.z = nextRowOutOfBounds ? 0. : result.z;\n            result.w = nextColOutOfBounds || nextRowOutOfBounds ? 0. : result.w;\n          `:o+=`\n            bool nextRowOutOfBounds =\n              (${e[a-2]} + 1) >= ${this.outputShape[a-2]};\n            bool nextColOutOfBounds =\n              (${e[a-1]} + 1) >= ${this.outputShape[a-1]};\n            result.y = nextColOutOfBounds ? 0. : result.y;\n            result.z = nextRowOutOfBounds ? 0. : result.z;\n            result.w = nextColOutOfBounds || nextRowOutOfBounds ? 0. : result.w;\n          `}}this.userCode=`\n      vec4 binaryOperation(vec4 a, vec4 b) {\n        ${e}\n      }\n\n      void main() {\n        vec4 a = getAAtOutCoords();\n        vec4 b = getBAtOutCoords();\n\n        vec4 result = binaryOperation(a, b);\n        ${o}\n\n        setOutput(result);\n      }\n    `}}function Hf(e){const{inputs:t,backend:n}=e,{x:r}=t;return n.incRef(r.dataId),{dataId:r.dataId,shape:r.shape,dtype:r.dtype}}const jf={kernelName:s.iJz,backendName:"webgl",kernelFunc:Hf};function Xf(e){const{inputs:t,backend:n}=e,{real:r,imag:s}=t,a=n.makeTensorInfo(r.shape,"complex64"),o=n.texData.get(a.dataId),i=Hf({inputs:{x:r},backend:n}),u=Hf({inputs:{x:s},backend:n});return o.complexTensorInfos={real:i,imag:u},a}const qf={kernelName:s.Zz9,backendName:"webgl",kernelFunc:Xf},Kf="return (a < 0.) ? b * a : a;",Qf="\n  vec4 aLessThanZero = vec4(lessThan(a, vec4(0.)));
1\n  return (aLessThanZero * (b * a)) + ((vec4(1.0) - aLessThanZero) * a);\n";const Yf={kernelName:s.J$2,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{alpha:o}=r,i=n.makeTensorInfo([],"float32",s.D5U.createScalarValue(o,"float32")),u=(0,s.OBj)().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Gf(Qf,a.shape,i.shape):new Vf(Kf,a.shape,i.shape),l=n.runWebGLProgram(u,[a,i],"float32");return n.disposeIntermediateTensorInfo(i),l}},Zf="return (a < 0.) ? b * a : a;",Jf="\n  vec4 aLessThanZero = vec4(lessThan(a, vec4(0.)));\n  return (aLessThanZero * (b * a)) + ((vec4(1.0) - aLessThanZero) * a);\n";const em={kernelName:s.o0g,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n}=e,{x:r,alpha:a}=t,o=(0,s.OBj)().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Gf(Jf,r.shape,a.shape):new Vf(Zf,r.shape,a.shape);return n.runWebGLProgram(o,[r,a],"float32")}};function tm({opSnippet:e,packedOpSnippet:t,cpuKernelImpl:n,dtype:r}){return({inputs:a,backend:o})=>{const{x:i}=a,u=o,l=r||i.dtype;if(u.shouldExecuteOnCPU([i])&&null!=n){const e=u.texData.get(i.dataId),t=n(e.values,l);return u.makeTensorInfo(i.shape,l,t)}let c;return c=(0,s.OBj)().getBool("WEBGL_PACK_UNARY_OPERATIONS")&&null!=t?new Bf(i.shape,t):new Ff(i.shape,e),u.runWebGLProgram(c,[i],l)}}function nm({opSnippet:e,packedOpSnippet:t,checkOutOfBounds:n=!1,supportsComplex:r=!1,cpuKernelImpl:a,dtype:o}){return({inputs:i,backend:u})=>{const{a:l,b:c}=i,p=u;if(r&&"complex64"===l.dtype){const t=p.texData.get(l.dataId),n=p.texData.get(c.dataId),[r,a]=[[t.complexTensorInfos.real,n.complexTensorInfos.real],[t.complexTensorInfos.imag,n.complexTensorInfos.imag]].map((t=>{const[n,r]=t,a={dataId:n.dataId,dtype:n.dtype,shape:l.shape},o={dataId:r.dataId,dtype:r.dtype,shape:c.shape},i=new Vf(e,l.shape,c.shape);return p.runWebGLProgram(i,[a,o],(0,s.x8V)(n.dtype,r.dtype))})),o=Xf({inputs:{real:r,imag:a},backend:p});return p.disposeIntermediateTensorInfo(r),p.disposeIntermediateTensorInfo(a),o}const h=o||(0,s.x8V)(l.dtype,c.dtype);if(("string"===l.dtype||"string"===c.dtype||p.shouldExecuteOnCPU([l,c]))&&null!=a){const e=p.texData.get(l.dataId).values,t=p.texData.get(c.dataId).values,n="string"===l.dtype?s.Wap.fromUint8ToStringArray(e):e,r="string"===l.dtype?s.Wap.fromUint8ToStringArray(t):t,[o,i]=a(l.shape,c.shape,n,r,h),u=p.makeTensorInfo(i,h);return p.texData.get(u.dataId).values=o,u}let d;return d=(0,s.OBj)().getBool("WEBGL_PACK_BINARY_OPERATIONS")&&null!=t?new Gf(t,l.shape,c.shape,n):new Vf(e,l.shape,c.shape),p.runWebGLProgram(d,[l,c],h)}}
vendor: 23,835 bytes, line 1
1function rm(e,t=!1){if("linear"===e)return"return x;";if("relu"===e)return t?"\n  vec4 result = x * vec4(greaterThanEqual(x, vec4(0.0)));\n  bvec4 isNaN = isnan(x);\n\n  result.r = isNaN.r ? x.r : result.r;\n  result.g = isNaN.g ? x.g : result.g;\n  result.b = isNaN.b ? x.b : result.b;\n  result.a = isNaN.a ? x.a : result.a;\n\n  return result;\n":"if (isnan(x)) return x;\n  return (x < 0.0) ? 0.0 : x;\n";if("elu"===e)return t?"\n  vec4 result;\n\n  result.r = (x.r >= 0.0) ? x.r : (exp(x.r) - 1.0);\n  result.g = (x.g >= 0.0) ? x.g : (exp(x.g) - 1.0);\n  result.b = (x.b >= 0.0) ? x.b : (exp(x.b) - 1.0);\n  result.a = (x.a >= 0.0) ? x.a : (exp(x.a) - 1.0);\n\n  return result;\n":"return (x >= 0.0) ? x : (exp(x) - 1.0);";if("relu6"===e)return t?"\n  vec4 result = min(x, vec4(6.)) * vec4(greaterThanEqual(x, vec4(0.0)));\n  bvec4 isNaN = isnan(x);\n\n  result.r = isNaN.r ? x.r : result.r;\n  result.g = isNaN.g ? x.g : result.g;\n  result.b = isNaN.b ? x.b : result.b;\n  result.a = isNaN.a ? x.a : result.a;\n\n  return result;\n":"if (isnan(x)) return x;\n  return (x < 0.0) ? 0.0 : min(6.0, x);\n";if("prelu"===e)return t?Jf:Zf;if("leakyrelu"===e)return t?Qf:Kf;if("sigmoid"===e)return"return 1.0 / (1.0 + exp(-1.0 * x));";throw new Error(`Activation ${e} has not been implemented for the WebGL backend.`)}class sm{constructor(e,t,n,r=!1,s=!1,a=!1,o=null,i=!1,u=!1){this.variableNames=["matrixA","matrixB"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=n,this.enableShapeUniforms=fd(this.outputShape.length);const l=r?e[1]:e[2],c=Math.ceil(l/2),p=r?"i * 2, rc.y":"rc.y, i * 2",h=s?"rc.z, i * 2":"i * 2, rc.z",d=r?["a.xxyy","a.zzww"]:["a.xxzz","a.yyww"],f=s?["b.xzxz","b.ywyw"]:["b.xyxy","b.zwzw"];let m="",g="";o&&(m=i?`vec4 activation(vec4 a) {\n          vec4 b = getPreluActivationWeightsAtOutCoords();\n          ${o}\n        }`:u?`vec4 activation(vec4 a) {\n          vec4 b = getLeakyreluAlphaAtOutCoords();\n          ${o}\n        }`:`vec4 activation(vec4 x) {\n          ${o}\n        }`,g="result = activation(result);");const y=a?"result += getBiasAtOutCoords();":"";a&&this.variableNames.push("bias"),i&&this.variableNames.push("preluActivationWeights"),u&&this.variableNames.push("leakyreluAlpha");let b="rc.x",x="rc.x";e[0]<t[0]?b=`int(min(float(rc.x), ${e[0]-1}.))`:t[0]<e[0]&&(x=`int(min(float(rc.x), ${t[0]-1}.))`),this.userCode=`\n      ${m}\n      // Don't use uniform for sharedDimensionPacked for performance.\n      const float sharedDimension = ${c}.0;\n\n      vec4 dot2x2ARowBCol(ivec3 rc) {\n        vec4 result = vec4(0);\n        for (int i = 0; i < ${c}; i++) {\n          int batchA = ${b};\n          int batchB = ${x};\n          vec4 a = getMatrixA(batchA, ${p});\n          vec4 b = getMatrixB(batchB, ${h});\n\n          // These swizzled products need to be separately added.\n          // See: https://github.com/tensorflow/tfjs/issues/1735\n          result += (${d[0]} * ${f[0]});\n          result += (${d[1]} * ${f[1]});\n        }\n        return result;\n      }\n\n      void main() {\n        ivec3 rc = getOutputCoords();\n        vec4 result = dot2x2ARowBCol(rc);\n\n        ${y}\n\n        ${g}\n\n        setOutput(result);\n      }\n    `}}const am="return areal * breal - aimag * bimag;",om="return areal * bimag + aimag * breal;";class im{constructor(e,t,n){this.variableNames=["AReal","AImag","BReal","BImag"],this.outputShape=s.Wap.assertAndGetBroadcastShape(t,n),this.userCode=`\n      float binaryOpComplex(\n          float areal, float aimag, float breal, float bimag) {\n        ${e}\n      }\n\n      void main() {\n        float areal = getARealAtOutCoords();\n        float aimag = getAImagAtOutCoords();\n        float breal = getBRealAtOutCoords();\n        float bimag = getBImagAtOutCoords();\n        setOutput(binaryOpComplex(areal, aimag, breal, bimag));\n      }\n    `}}const um="return a * b;";function lm(e){const{inputs:t,backend:n}=e,{a:r,b:a}=t,o=s.Wap.upcastType(r.dtype,a.dtype);if("complex64"===r.dtype){const e=n.texData.get(r.dataId),t=n.texData.get(a.dataId),s=new im(am,r.shape,a.shape),o=new im(om,r.shape,a.shape),i=[{dataId:e.complexTensorInfos.real.dataId,dtype:e.complexTensorInfos.real.dtype,shape:r.shape},{dataId:e.complexTensorInfos.imag.dataId,dtype:e.complexTensorInfos.imag.dtype,shape:r.shape},{dataId:t.complexTensorInfos.real.dataId,dtype:t.complexTensorInfos.real.dtype,shape:a.shape},{dataId:t.complexTensorInfos.imag.dataId,dtype:t.complexTensorInfos.imag.dtype,shape:a.shape}],u=n.runWebGLProgram(s,i,"float32"),l=n.runWebGLProgram(o,i,"float32"),c=Xf({inputs:{real:u,imag:l},backend:n});return n.disposeIntermediateTensorInfo(u),n.disposeIntermediateTensorInfo(l),c}if(n.shouldExecuteOnCPU([r,a])){const e=n.texData.get(r.dataId),t=n.texData.get(a.dataId),[s,i]=ef(r.shape,a.shape,e.values,t.values,o),u=n.makeTensorInfo(i,o);return n.texData.get(u.dataId).values=s,u}let i;return i=(0,s.OBj)().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Gf(um,r.shape,a.shape):new Vf(um,r.shape,a.shape),n.runWebGLProgram(i,[r,a],o)}const cm={kernelName:s.wYn,backendName:"webgl",kernelFunc:lm};function pm(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{shape:o}=r,i=n,u=s.D5U.sizeFromShape(a.shape),l=s.D5U.inferFromImplicitShape(o,u),c=s.D5U.sizeFromShape(l);s.D5U.assert(u===c,(()=>`The new shape (${l}) has ${c} elements and the old shape (${a.shape}) has ${u} elements. The new shape and old shape must have the same number of elements.`));const p=i.texData.get(a.dataId);return!p.isPacked||ed(a.shape,l)||null!==p.texture&&ed(p.shape,l)?(i.incRef(a.dataId),{dataId:a.dataId,shape:l,dtype:a.dtype}):function(e,t,n){const r=[Qh(e.shape),...Yh(e.shape)],s={dtype:e.dtype,shape:r,dataId:e.dataId},a=[Qh(t),...Yh(t)],o=new $f(a,r),i=[r],u=n.runWebGLProgram(o,[s],e.dtype,i,!0);return{dataId:u.dataId,shape:t,dtype:u.dtype}}(a,l,i)}const hm={kernelName:s.HZH,backendName:"webgl",kernelFunc:pm};class dm{constructor(e,t){this.variableNames=["x"];const{windowSize:n,batchSize:r,inSize:a,outSize:o}=e;this.outputShape=[r,o];const i=4*Math.floor(n/4),u=n%4;let l="sumValue += dot(values, ones);";if(null!=t){const e=1/t;l=`sumValue += dot(values * ${s.D5U.isInt(e)?e.toPrecision(2):e}, ones);`}let c="";a%n>0&&(c=`\n        if (inIdx < 0 || inIdx >= ${a}) {\n          return 0.0;\n        }\n      `),this.userCode=`\n      const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n      float getValue(int batch, int inIdx) {\n        ${c}\n        return getX(batch, inIdx);\n      }\n\n      void main() {\n        ivec2 coords = getOutputCoords();\n        int batch = coords[0];\n        int outIdx = coords[1];\n        int inOffset = outIdx * ${n};\n\n        float sumValue = 0.0;\n\n        for (int i = 0; i < ${i}; i += 4) {\n          int inIdx = inOffset + i;\n          vec4 values = vec4(\n            getValue(batch, inIdx),\n            getValue(batch, inIdx + 1),\n            getValue(batch, inIdx + 2),\n            getValue(batch, inIdx + 3)\n          );\n\n          ${l}\n        }\n\n        int inIdx = inOffset + ${i};\n        if (${1===u}) {\n          vec4 values = vec4(getValue(batch, inIdx), 0.0, 0.0, 0.0);\n\n          ${l}\n        } else if (${2===u}) {\n          vec4 values = vec4(\n            getValue(batch, inIdx),\n            getValue(batch, inIdx + 1), 0.0, 0.0);\n\n          ${l}\n        } else if (${3===u}) {\n          vec4 values = vec4(\n            getValue(batch, inIdx),\n            getValue(batch, inIdx + 1),\n            getValue(batch, inIdx + 2), 0.0);\n\n          ${l}\n        }\n        setOutput(sumValue);\n      }\n    `}}class fm{constructor(e,t){this.variableNames=["x"];const{windowSize:n,batchSize:r,inSize:s,outSize:a}=e;this.outputShape=[r,a];let o="0.0",i="";"prod"===t?o="1.0":"min"===t?(o="1.0 / 1e-20",i="min"):"max"===t&&(o="-1.0 / 1e-20",i="max");let u=`${t}(${t}(${t}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;"sum"===t?u="sumValue":"prod"===t?u="prodValue":"all"===t?u="allValue":"any"===t&&(u="anyValue");const l=4*Math.floor(n/4),c=n%4;let p=`\n      if (${"sum"===t}) {\n        sumValue += dot(values, ones);\n      } else if (${"prod"===t}) {\n        vec2 tmp = vec2(values[0], values[1]) * vec2(values[2], values[3]);\n        prodValue *= tmp[0] * tmp[1];\n      } else {\n        minMaxValue = ${i}(values, minMaxValue);\n        if (${"min"===t} || ${"max"===t}) {\n          minMaxValue = ${i}(values, minMaxValue);\n          bvec4 isNaN = isnan(values);\n          if (isNaN.r || isNaN.g || isNaN.b || isNaN.a) {\n            minMaxValue = vec4(NAN);\n          }\n        }\n      }\n    `,h="vec4";"all"===t?(o="1.0",p="\n        bool reducedAllValue = all(values);\n        float floatedReducedAllValue = float(reducedAllValue);\n        allValue = float(allValue >= 1.0 && floatedReducedAllValue >= 1.0);\n      ",h="bvec4"):"any"===t&&(o="0.0",p="\n        bool reducedAnyValue = any(values);\n        float floatedReducedAnyValue = float(reducedAnyValue);\n        anyValue = float(anyValue >= 1.0 || floatedReducedAnyValue >= 1.0);\n      ",h="bvec4");let d="";s%n>0&&(d=`\n        if (inIdx < 0 || inIdx >= ${s}) {\n          return initializationValue;\n        }\n      `),this.userCode=`\n      const float initializationValue = ${o};\n      const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n      float getValue(int batch, int inIdx) {\n        ${d}\n        return getX(batch, inIdx);\n      }\n\n      void main() {\n        ivec2 coords = getOutputCoords();\n        int batch = coords[0];\n        int outIdx = coords[1];\n        int inOffset = outIdx * ${n};\n\n        vec4 minMaxValue = vec4(${o});\n        float prodValue = 1.0;\n        float sumValue = 0.0;\n        float allValue = 1.0;\n        float anyValue = 0.0;\n\n        for (int i = 0; i < ${l}; i += 4) {\n          int inIdx = inOffset + i;\n          ${h} values = ${h}(\n            getValue(batch, inIdx),\n            getValue(batch, inIdx + 1),\n            getValue(batch, inIdx + 2),\n            getValue(batch, inIdx + 3)\n          );\n\n          ${p}\n        }\n\n        int inIdx = inOffset + ${l};\n        if (${1===c}) {\n          ${h} values = ${h}(\n            getValue(batch, inIdx),\n            initializationValue,\n            initializationValue,\n            initializationValue\n          );\n\n          ${p}\n        } else if (${2===c}) {\n          ${h} values = ${h}(\n            getValue(batch, inIdx),\n            getValue(batch, inIdx + 1),\n            initializationValue,\n            initializationValue\n          );\n\n          ${p}\n        } else if (${3===c}) {\n          ${h} values = ${h}(\n            getValue(batch, inIdx),\n            getValue(batch, inIdx + 1),\n            getValue(batch, inIdx + 2),\n            initializationValue\n          );\n\n          ${p}\n        }\n        setOutput(${u});\n      }\n    `}}function mm(e,t,n,r){const a=function(e){const t=[];for(;0===t.length||1!==t[t.length-1].outSize;){const n=t.length?t[t.length-1].outSize:e[1],r=s.Wap.computeOptimalWindowSize(n);t.push({inSize:n,windowSize:r,outSize:Math.ceil(n/r)})}return t}(e.shape);let o=e;for(let s=0;s<a.length;s++){const{inSize:i,windowSize:u,outSize:l}=a[s];let c,p;c="mean"===n?0===s?new dm({windowSize:u,inSize:i,batchSize:e.shape[0],outSize:l},i):new dm({windowSize:u,inSize:i,batchSize:e.shape[0],outSize:l}):new fm({windowSize:u,inSize:i,batchSize:e.shape[0],outSize:l},n),p=o,o=r.runWebGLProgram(c,[o],t),p.dataId!==e.dataId&&r.disposeIntermediateTensorInfo(p)}return o}class gm{constructor(e,t){this.variableNames=["A"];const n=new Array(e.length);for(let a=0;a<n.length;a++)n[a]=e[t[a]];this.outputShape=n,this.rank=n.length;const r=(0,cd.kW)(this.rank),s=function(e){const t=e.length;if(t>6)throw Error(`Transpose for rank ${t} is not yet supported`);const n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u","resRC.v"],r=new Array(t);for(let s=0;s<e.length;s++)r[e[s]]=n[s];return r.join()}(t);this.userCode=`\n    void main() {\n      ${r} resRC = getOutputCoords();\n      setOutput(getA(${s}));\n    }\n    `}}class ym{constructor(e,t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0;const n=new Array(e.length);for(let l=0;l<n.length;l++)n[l]=e[t[l]];if(this.outputShape=n,this.rank=n.length,this.rank>6)throw Error(`Packed transpose for rank ${this.rank} is not yet supported.`);const r=(0,cd.kW)(this.rank),s=Tf("rc",this.rank),a=new Array(this.rank);for(let l=0;l<t.length;l++)a[t[l]]=s[l];const o=`vec2(${a.slice(-2).join()})`,i=`++${s[this.rank-1]} < ${n[this.rank-1]}`,u=`getChannel(getA(${a.join()}), ${o})`;this.userCode=`\n    void main() {\n      ${r} rc = getOutputCoords();\n      vec4 result = vec4(0.);\n      result[0] = ${u};\n      if(${i}) {\n        result[1] = ${u};\n      }\n      --${s[this.rank-1]};\n      if(++${s[this.rank-2]} < ${n[this.rank-2]}) {\n        result[2] = ${u};\n        if(${i}) {\n          result[3] = ${u};\n        }\n      }\n      setOutput(result);\n    }\n    `}}function bm(e,t,n){const r=(0,s.OBj)().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new ym(e.shape,t):new gm(e.shape,t);return n.runWebGLProgram(r,[e],e.dtype)}function xm(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:o,keepDims:i}=r;return function(e,t,n,r){const a=t,o=e.shape.length,i=s.D5U.parseAxisParam(a,e.shape);let u=i;const l=s.Wap.getAxesPermutation(u,o),c=null!=l;let p=e;c&&(p=bm(e,l,r),u=s.Wap.getInnerMostAxes(u.length,o)),s.Wap.assertAxesAreInnerMostDims("sum",u,o);const[h,d]=s.Wap.computeOutAndReduceShapes(p.shape,u);let f=h;n&&(f=s.Wap.expandShapeToKeepDim(h,i));const m=s.D5U.sizeFromShape(d),g=pm({inputs:{x:p},attrs:{shape:[s.D5U.sizeFromShape(e.shape)/m,m]},backend:r}),y=mm(g,(0,s.z4k)(e.dtype),"sum",r),b=pm({inputs:{x:y},attrs:{shape:f},backend:r});return r.disposeIntermediateTensorInfo(g),r.disposeIntermediateTensorInfo(y),c&&r.disposeIntermediateTensorInfo(p),b}(a,o,i,n)}const wm={kernelName:s.GBy,backendName:"webgl",kernelFunc:xm};function vm(e){const{inputs:t,backend:n,attrs:r}=e,{x:s}=t,{perm:a}=r,o=n,i=s.shape.length,u=new Array(i);for(let c=0;c<u.length;c++)u[c]=s.shape[a[c]];let l;if(o.shouldExecuteOnCPU([s])){const e=o.texData.get(s.dataId).values,t=Nf(e,s.shape,s.dtype,a,u);l=o.makeTensorInfo(u,s.dtype);o.texData.get(l.dataId).values=t}else l=bm(s,a,o);return l}const km={kernelName:s.G3Y,backendName:"webgl",kernelFunc:vm};function Im({a:e,b:t,transposeA:n,transposeB:r,backend:a,bias:o=null,preluActivationWeights:i=null,leakyreluAlpha:u=0,activation:l=null}){const c=e.shape.length,p=t.shape.length,h=n?e.shape[c-2]:e.shape[c-1],d=r?t.shape[p-1]:t.shape[p-2],f=n?e.shape[c-1]:e.shape[c-2],m=r?t.shape[p-2]:t.shape[p-1],g=e.shape.slice(0,-2),y=t.shape.slice(0,-2),b=s.D5U.sizeFromShape(g),x=s.D5U.sizeFromShape(y),w=s.Jyw.assertAndGetBroadcastShape(e.shape.slice(0,-2),t.shape.slice(0,-2)).concat([f,m]);s.D5U.assert(h===d,(()=>`Error in matMul: inner shapes (${h}) and (${d}) of Tensors with shapes ${e.shape} and ${t.shape} and transposeA=${n} and transposeB=${r} must match.`));const v=n?[b,h,f]:[b,f,h],k=r?[x,m,d]:[x,d,m],I=pm({inputs:{x:e},backend:a,attrs:{shape:v}}),N=pm({inputs:{x:t},backend:a,attrs:{shape:k}}),S=[I,N],T=Math.max(b,x),C=n?I.shape[1]:I.shape[2],E=null!=o,$=null!=i,A="leakyrelu"===l,D=null!=l?rm(l,!0):null;let _;if((1===f||1===m)&&C>1e3&&!1===(E||$||A||null!=D)){let e=I,t=N;n&&(e=vm({inputs:{x:I},backend:a,attrs:{perm:[0,2,1]}}),S.push(e)),r&&(t=vm({inputs:{x:N},backend:a,attrs:{perm:[0,2,1]}}),S.push(t));const s=1===m;let o=e;1!==m&&(o=pm({inputs:{x:e},backend:a,attrs:{shape:[T,C,1]}}),S.push(o));const i=1===m?2:1;let u=t;s&&(u=pm({inputs:{x:t},backend:a,attrs:{shape:[T,1,C]}}),S.push(u));const l=lm({inputs:{a:o,b:u},backend:a});_=xm({inputs:{x:l},backend:a,attrs:{axis:i,keepDims:!0}}),S.push(l)}else{const l=(0,s.x8V)(e.dtype,t.dtype),c=new sm(v,k,[T,f,m],n,r,E,D,$,A),p=[I,N];if(null!=o&&p.push(o),$&&p.push(i),A){const e=a.makeTensorInfo([],"float32",s.D5U.createScalarValue(u,"float32"));p.push(e),S.push(e)}_=a.runWebGLProgram(c,p,l)}const R=pm({inputs:{x:_},backend:a,attrs:{shape:w}});S.push(_);for(const s of S)a.disposeIntermediateTensorInfo(s);return R}const Nm={kernelName:s.usg,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{a:s,b:a,bias:o,preluActivationWeights:i}=t,{transposeA:u,transposeB:l,activation:c,leakyreluAlpha:p}=r;return Im({a:s,b:a,transposeA:u,transposeB:l,backend:n,bias:o,preluActivationWeights:i,leakyreluAlpha:p,activation:c})}},Sm="return abs(x);";const Tm={kernelName:s.SYM,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n}=e,{x:r}=t;if(n.shouldExecuteOnCPU([r])&&"complex64"!==r.dtype){const e=n.texData.get(r.dataId),t=pf(e.values);return n.makeTensorInfo(r.shape,r.dtype,t)}let a;return a=(0,s.OBj)().getBool("WEBGL_PACK_UNARY_OPERATIONS")?new Bf(r.shape,Sm):new Ff(r.shape,Sm),n.runWebGLProgram(a,[r],r.dtype)}},Cm=tm({opSnippet:"if (isnan(x)) return x;\n  if (abs(x) > 1.) {\n    return NAN;\n  }\n  return acos(x);\n"}),Em={kernelName:s.VGw,backendName:"webgl",kernelFunc:Cm},$m=tm({opSnippet:"if (isnan(x)) return x;\n  if (x < 1.0) return NAN;\nreturn log(x + sqrt(x * x - 1.0));"}),Am={kernelName:s.SpW,backendName:"webgl",kernelFunc:$m},Dm="return a + b;",_m=nm({opSnippet:Dm,packedOpSnippet:Dm,supportsComplex:!0,cpuKernelImpl:Rd}),Rm={kernelName:s.mm_,backendName:"webgl",kernelFunc:_m};class Fm{constructor(e,t){this.outputShape=[],this.outputShape=e,this.variableNames=t.map(((e,t)=>`T${t}`));const n=[];this.variableNames.forEach((e=>{n.push(`float v${e} = get${e}AtOutCoords();`)}));const r=this.variableNames.map((e=>`v${e}`)).join(" + ");this.userCode=`\n      void main() {\n        ${n.join("\n        ")}\n\n        float result = ${r};\n        setOutput(result);\n      }\n    `}}class Om{constructor(e,t){this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.variableNames=t.map(((e,t)=>`T${t}`));const n=[];this.variableNames.forEach((e=>{n.push(`vec4 v${e} = get${e}AtOutCoords();`)}));const r=this.variableNames.map((e=>`v${e}`)).join(" + ");this.userCode=`\n      void main() {\n        ${n.join("\n        ")}\n\n        vec4 result = ${r};\n        setOutput(result);\n      }\n    `}}const Mm={kernelName:s.Xze,backendName:"webgl",kernelFunc:function e(t){const{inputs:n,backend:r}=t,a=n;if(1===a.length)return Hf({inputs:{x:a[0]},backend:r});if(a.length>(0,s.OBj)().get("WEBGL_MAX_TEXTURES_IN_SHADER")){const t=Math.floor(a.length/2),n=e({inputs:a.slice(0,t),backend:r}),s=e({inputs:a.slice(t),backend:r});return e({inputs:[n,s],backend:r})}const o=a.map((e=>e.dtype)).reduce(((e,t)=>(0,s.x8V)(e,t))),i=a.map((e=>e.shape)),u=(0,s.OBj)().getBool("WEBGL_PACK")?new Om(a[0].shape,i):new Fm(a[0].shape,i);return r.runWebGLProgram(u,a,o)}};const Bm={kernelName:s.oT6,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:o,keepDims:i}=r,u=a.shape.length,l=s.D5U.parseAxisParam(o,a.shape);let c=l;const p=s.Wap.getAxesPermutation(c,u);let h=a;null!=p&&(h=vm({inputs:{x:a},backend:n,attrs:{perm:p}}),c=s.Wap.getInnerMostAxes(c.length,u)),s.Wap.assertAxesAreInnerMostDims("all",c,u);const[d,f]=s.Wap.computeOutAndReduceShapes(h.shape,c),m=pm({inputs:{x:h},backend:n,attrs:{shape:[-1,s.D5U.sizeFromShape(f)]}}),g=mm(m,m.dtype,"all",n);let y;if(i){y=pm({inputs:{x:g},backend:n,attrs:{shape:s.Wap.expandShapeToKeepDim(d,l)}})}else y=pm({inputs:{x:g},backend:n,attrs:{shape:d}});return n.disposeIntermediateTensorInfo(m),n.disposeIntermediateTensorInfo(g),null!=p&&n.disposeIntermediateTensorInfo(h),y}};const Lm={kernelName:s.IKK,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:o,keepDims:i}=r,u=a.shape.length,l=s.D5U.parseAxisParam(o,a.shape);let c=l;const p=s.Wap.getAxesPermutation(c,u);let h=a;null!=p&&(h=vm({inputs:{x:a},backend:n,attrs:{perm:p}}),c=s.Wap.getInnerMostAxes(c.length,u)),s.Wap.assertAxesAreInnerMostDims("any",c,u);const[d,f]=s.Wap.computeOutAndReduceShapes(h.shape,c),m=pm({inputs:{x:h},backend:n,attrs:{shape:[-1,s.D5U.sizeFromShape(f)]}}),g=mm(m,m.dtype,"any",n);let y;if(i){y=pm({inputs:{x:g},backend:n,attrs:{shape:s.Wap.expandShapeToKeepDim(d,l)}})}else y=pm({inputs:{x:g},backend:n,attrs:{shape:d}});return n.disposeIntermediateTensorInfo(m),n.disposeIntermediateTensorInfo(g),null!=p&&n.disposeIntermediateTensorInfo(h),y}};class Wm{constructor(e,t,n){this.variableNames=["A"];const{windowSize:r,batchSize:s,outSize:a}=e;n||this.variableNames.push("bestIndicesA"),this.outputShape=[s,a];const o="max"===t?">":"<",i=n?"inOffset + i;":"round(getBestIndicesA(batch, inOffset + i));";this.userCode=`\n      void main() {\n        ivec2 coords = getOutputCoords();\n        int batch = coords[0];\n        int outIdx = coords[1];\n        int inOffset = outIdx * ${r};\n\n        int bestIndex = inOffset;\n        float bestValue = getA(batch, bestIndex);\n\n        for (int i = 0; i < ${r}; i++) {\n          int inIdx = ${i};\n          float candidate = getA(batch, inIdx);\n          if (candidate ${o} bestValue) {\n            bestValue = candidate;\n            bestIndex = inIdx;\n          }\n        }\n        setOutput(float(bestIndex));\n      }\n    `}}class Pm{constructor(e,t,n,r){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,s.D5U.assert(e.length>2,(()=>`Packed arg${n.charAt(0).toUpperCase()+n.slice(1)} supports only inputs with rank above 2.`));const a=e[e.length-1],o=Math.ceil(a/t);this.outputShape=e.slice(0,-1),o>1&&this.outputShape.push(o),r||this.variableNames.push("bestIndicesA");const i=this.outputShape,u=i.length,l=(0,cd.kW)(u),c=Cf("coords",u);let p,h;if(1===o){h=u+1;const e=(0,cd.kW)(h);p=`\n        ${e} sourceLocR = ${e}(${c.join()}, 0);\n        ++${c[u-1]};\n        ${e} sourceLocG = ${e}(${c.join()}, 0);\n        ++${c[u-2]};\n        ${e} sourceLocA = ${e}(${c.join()}, 0);\n        --${c[u-1]};\n        ${e} sourceLocB = ${e}(${c.join()}, 0);\n        --${c[u-2]};`}else h=u,p=`\n        ${l} sourceLocR = coords;\n        ++${c[u-1]};\n        ${l} sourceLocG = coords;\n        ++${c[u-2]};\n        ${l} sourceLocA = coords;\n        --${c[u-1]};\n        ${l} sourceLocB = coords;\n        --${c[u-2]};`;const d=["x","y","z","w","u","v"].slice(0,h),f="."+d[h-1],m=d.map((e=>"int "+e)),g=Cf("sourceLocR",h-1).concat("inIdx.r"),y=Cf("sourceLocG",h-1).concat("inIdx.g"),b=Cf("sourceLocB",h-1).concat("inIdx.b"),x=Cf("sourceLocA",h-1).concat("inIdx.a"),w="max"===n?"greaterThan":"lessThan",v=r?"":`\n          inIdx = round(vec4(getBestIndicesAChannel(${g.join()}),\n                             getBestIndicesAChannel(${y.join()}),\n                             getBestIndicesAChannel(${b.join()}),\n                             getBestIndicesAChannel(${x.join()})));`,k=`vec4(\n            getAChannel(${g.join()}),\n            hasNextCol ? getAChannel(${y.join()}) : 0.,\n            hasNextRow ? getAChannel(${b.join()}) : 0.,\n            hasNextRow && hasNextCol ? getAChannel(${x.join()}) : 0.)`,I=r?"":`\n      float getBestIndicesAChannel(${m.join()}) {\n        return getChannel(getBestIndicesA(${d.join()}),\n                                          vec2(${d.slice(-2).join()}));\n      }`;this.userCode=`\n      float getAChannel(${m.join()}) {\n        return getChannel(getA(${d.join()}),\n                               vec2(${d.slice(-2).join()}));\n      }\n      ${I}\n      void main() {\n        ${l} coords = getOutputCoords();\n        bool hasNextCol = ${c[u-1]} < ${i[u-1]-1};\n        bool hasNextRow = ${c[u-2]} < ${i[u-2]-1};\n        ${p}\n        ivec4 srcIdx = ivec4(sourceLocR${f}, sourceLocG${f},\n          sourceLocB${f}, sourceLocA${f}) * ${t};\n        ivec4 inIdx = srcIdx;\n        vec4 bestIndex = vec4(inIdx);\n        vec4 bestValue = ${k};\n\n        for (int i = 0; i < ${t};
1 i++) {\n          inIdx = srcIdx;\n          ${v}\n          vec4 candidate = ${k};\n          bvec4 nan = isnan(candidate);\n          bvec4 replace = bvec4(\n            vec4(${w}(candidate, bestValue)) * (vec4(1.0) - vec4(nan)));\n\n          bestValue = vec4(replace.x  ? candidate.x : bestValue.x,\n                           replace.y  ? candidate.y : bestValue.y,\n                           replace.z  ? candidate.z : bestValue.z,\n                           replace.w  ? candidate.w : bestValue.w);\n          bestIndex = mix(bestIndex, vec4(inIdx), vec4(replace));\n          srcIdx++;\n        }\n        setOutput(bestIndex);\n      }\n    `}}function Um(e,t,n,r=null){let a=t.shape[0],o=t.shape[1];null!=r&&(a=r.shape[0],o=r.shape[1]);const i=s.Wap.computeOptimalWindowSize(o),u={windowSize:i,inSize:o,batchSize:a,outSize:Math.ceil(o/i)},l=new Wm(u,n,null==r),c=[t];null!=r&&c.push(r);const p=e.runWebGLProgram(l,c,"int32");if(1===p.shape[1])return p;const h=Um(e,t,n,p);return e.disposeIntermediateTensorInfo(p),h}function zm(e,t,n,r=null){const a=null!=r?r.shape:t.shape,o=a[a.length-1],i=s.Wap.computeOptimalWindowSize(o),u=new Pm(a,i,n,null==r),l=null==r?[t]:[t,r],c=e.runWebGLProgram(u,l,"int32");if(c.shape.length===t.shape.length){const r=zm(e,t,n,c);return e.disposeIntermediateTensorInfo(c),r}return c}function Vm(e,t,n,r){const a=[n];if(s.Wap.assertAxesAreInnerMostDims("arg"+r.charAt(0).toUpperCase()+r.slice(1),a,t.shape.length),!(0,s.OBj)().getBool("WEBGL_PACK_REDUCE")||t.shape.length<=2){const n=[],o=e.texData.get(t.dataId);let i=t;null!==o&&o.isPacked&&(i=e.unpackTensor(t),n.push(i));const[u,l]=s.Wap.computeOutAndReduceShapes(i.shape,a),c=s.D5U.sizeFromShape(l),p=pm({inputs:{x:i},backend:e,attrs:{shape:[-1,c]}});n.push(p);const h=Um(e,p,r);n.push(h);const d=pm({inputs:{x:h},backend:e,attrs:{shape:u}});return n.forEach((t=>e.disposeIntermediateTensorInfo(t))),d}return zm(e,t,r)}const Gm={kernelName:s.sJF,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:o}=r;let i=s.D5U.parseAxisParam(o,a.shape);const u=s.Wap.getAxesPermutation(i,a.shape.length);let l=a;const c=[];null!=u&&(l=vm({inputs:{x:a},backend:n,attrs:{perm:u}}),c.push(l),i=s.Wap.getInnerMostAxes(i.length,l.shape.length)),s.Wap.assertAxesAreInnerMostDims("argMax",[i[0]],l.shape.length);const p=Vm(n,l,i[0],"max");return c.forEach((e=>n.disposeIntermediateTensorInfo(e))),p}};const Hm={kernelName:s.aJk,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:o}=r;let i=s.D5U.parseAxisParam(o,a.shape);const u=s.Wap.getAxesPermutation(i,a.shape.length);let l=a;const c=[];null!=u&&(l=vm({inputs:{x:a},backend:n,attrs:{perm:u}}),c.push(l),i=s.Wap.getInnerMostAxes(i.length,l.shape.length)),s.Wap.assertAxesAreInnerMostDims("argMin",[i[0]],l.shape.length);const p=Vm(n,l,i[0],"min");return c.forEach((e=>n.disposeIntermediateTensorInfo(e))),p}},jm=tm({opSnippet:"if (isnan(x)) return x;\n  if (abs(x) > 1.) {\n    return NAN;\n  }\n  return asin(x);\n"}),Xm={kernelName:s.M2y,backendName:"webgl",kernelFunc:jm},qm=tm({opSnippet:"if (isnan(x)) return x;return log(x + sqrt(x * x + 1.0));"}),Km={kernelName:s.qw7,backendName:"webgl",kernelFunc:qm},Qm=tm({opSnippet:"if (isnan(x)) return x;\n  return atan(x);\n"}),Ym={kernelName:s.jMg,backendName:"webgl",kernelFunc:Qm},Zm=nm({opSnippet:"\n  if (isnan(a)) return a;\n  if (isnan(b)) return b;\n\n  return atan(a, b);\n",packedOpSnippet:"\n  vec4 result = atan(a, b);\n  bvec4 isNaNA = isnan(a);\n  bvec4 isNaNB = isnan(b);\n  bvec4 isNaN = bvec4(isNaNA.x || isNaNB.x, isNaNA.y || isNaNB.y, isNaNA.z || isNaNB.z, isNaNA.w || isNaNB.w);\n  \n  result.r = isNaN.r ? NAN : result.r;\n  result.g = isNaN.g ? NAN : result.g;\n  result.b = isNaN.b ? NAN : result.b;\n  result.a = isNaN.a ? NAN : result.a;\n\n  return result;\n"}),Jm={kernelName:s.QCc,backendName:"webgl",kernelFunc:Zm},eg=tm({opSnippet:"if (isnan(x)) return x;\n  if ((x < -1.0) || (x > 1.0)) return NAN;\nreturn (log(1.0 + x) - log(1.0 - x)) / 2.0;"}),tg={kernelName:s.Oyi,backendName:"webgl",kernelFunc:eg};class ng{constructor(e,t,n,r=!1,s=!1){if(this.variableNames=["x"],"avg"===t&&n)throw new Error("Cannot compute positions for average pool.");const a=e.filterWidth,o=e.strideHeight,i=e.strideWidth,u=e.dilationHeight,l=e.dilationWidth,c=e.effectiveFilterHeight,p=e.effectiveFilterWidth,h=e.padInfo.top,d=e.padInfo.left;this.outputShape=e.outShape;const f="avg"===t,m=`((batch  * ${e.inHeight} + xR) * ${e.inWidth} + xC) * ${e.inChannels} + d`,g=`(xR * ${e.inWidth} + xC) * ${e.inChannels} + d`;let y="0.0";if(f||(y="-1.0 / 1e-20"),n){const t=">=";return void(this.userCode=`\n        const ivec2 strides = ivec2(${o}, ${i});\n        const ivec2 pads = ivec2(${h}, ${d});\n\n        void main() {\n          ivec4 coords = getOutputCoords();\n          int batch = coords[0];\n          int d = coords[3];\n\n          ivec2 xRCCorner = coords.yz * strides - pads;\n          int xRCorner = xRCCorner.x;\n          int xCCorner = xRCCorner.y;\n\n          // max/min x(?, ?, d) to get y(yR, yC, d).\n          // ? = to be determined\n          float minMaxValue = 0.0;\n          float minMaxValueFound = 0.0;\n          int minMaxPosition = 0;\n          float avgValue = 0.0;\n\n          for (int wR = 0; wR < ${c};\n              wR += ${u}) {\n            int xR = xRCorner + wR;\n\n            if (xR < 0 || xR >= ${e.inHeight}) {\n              continue;\n            }\n\n            for (int wC = 0; wC < ${p};\n                wC += ${l}) {\n              int xC = xCCorner + wC;\n\n              if (xC < 0 || xC >= ${e.inWidth}) {\n                continue;\n              }\n\n              float value = getX(batch, xR, xC, d);\n\n              // If a min / max value has already been found, use it. If not,\n              // use the current value.\n              float currMinMaxValue = mix(\n                  value, minMaxValue, minMaxValueFound);\n              if (value ${t} currMinMaxValue) {\n                minMaxValue = value;\n                minMaxValueFound = 1.0;\n                minMaxPosition = ${r?s?m:g:`wR * ${p} + wC`};\n              }\n            }\n          }\n          setOutput(float(minMaxPosition));\n        }\n      `)}let b=`${t}(${t}(${t}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;"avg"===t&&(b="avgValue / count");const x=4*Math.floor(a/4),w=a%4,v=`\n      if (${f}
1) {\n        avgValue += dot(values, ones);\n      } else {\n        minMaxValue = max(values, minMaxValue);\n      }\n    `;this.userCode=`\n      const ivec2 strides = ivec2(${o}, ${i});\n      const ivec2 pads = ivec2(${h}, ${d});\n      const float initializationValue = ${y};\n      const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n      float count = 0.0;\n\n      float getValue(int batch, int xR, int xC, int d) {\n        if (xC < 0 || xC >= ${e.inWidth}) {\n          return initializationValue;\n        }\n        count += 1.0;\n        return getX(batch, xR, xC, d);\n      }\n\n      void main() {\n        ivec4 coords = getOutputCoords();\n        int batch = coords[0];\n        int d = coords[3];\n\n        ivec2 xRCCorner = coords.yz * strides - pads;\n        int xRCorner = xRCCorner.x;\n        int xCCorner = xRCCorner.y;\n\n        // max/min x(?, ?, d) to get y(yR, yC, d).\n        // ? = to be determined\n        vec4 minMaxValue = vec4(${y});\n        float avgValue = 0.0;\n        count = 0.0;\n\n        for (int wR = 0; wR < ${c};\n            wR += ${u}) {\n          int xR = xRCorner + wR;\n\n          if (xR < 0 || xR >= ${e.inHeight}) {\n            continue;\n          }\n\n          for (int wC = 0; wC < ${x}; wC += 4) {\n            int xC = xCCorner + wC * ${l};\n\n            vec4 values = vec4(\n              getValue(batch, xR, xC, d),\n              getValue(batch, xR, xC + ${l}, d),\n              getValue(batch, xR, xC + 2 * ${l}, d),\n              getValue(batch, xR, xC + 3 * ${l}, d)\n            );\n\n            ${v}\n          }\n\n          int xC = xCCorner + ${x};\n          if (${1===w}) {\n            vec4 values = vec4(\n              getValue(batch, xR, xC, d),\n              initializationValue,\n              initializationValue,\n              initializationValue\n            );\n\n            ${v}\n          } else if (${2===w}) {\n            vec4 values = vec4(\n              getValue(batch, xR, xC, d),\n              getValue(batch, xR, xC + ${l}, d),\n              initializationValue,\n              initializationValue\n            );\n\n            ${v}\n          } else if (${3===w}) {\n            vec4 values = vec4(\n              getValue(batch, xR, xC, d),\n              getValue(batch, xR, xC + ${l}, d),\n              getValue(batch, xR, xC + 2 * ${l}, d),\n              initializationValue\n            );\n\n            ${v}\n          }\n        }\n        setOutput(${b});\n      }\n    `}}class rg{constructor(e,t,n,r=!1,s=!1){if(this.variableNames=["x"],"avg"===t&&n)throw new Error("Cannot compute positions for average pool.");const a=e.filterWidth,o=e.strideDepth,i=e.strideHeight,u=e.strideWidth,l=e.dilationDepth,c=e.dilationHeight,p=e.dilationWidth,h=e.effectiveFilterDepth,d=e.effectiveFilterHeight,f=e.effectiveFilterWidth,m=e.padInfo.front,g=e.padInfo.top,y=e.padInfo.left;this.outputShape=e.outShape;const b="avg"===t;let x="0.0";if(b||(x="-1.0 / 1e-20"),n){const t=">=";return void(this.userCode=`\n        const ivec3 strides =\n            ivec3(${o}, ${i}, ${u});\n        const ivec3 pads = ivec3(${m}, ${g}, ${y});\n\n        void main() {\n          ivec5 coords = getOutputCoords();\n          int batch = coords.x;\n          int ch = coords.u;\n\n          ivec3 xCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;\n          int xDCorner = xCorner.x;\n          int xRCorner = xCorner.y;\n          int xCCorner = xCorner.z;\n\n          // max/min x(?, ?, ?, ch) to get y(yD, yR, yC, ch).\n          // ? = to be determined\n          float minMaxValue = 0.0;\n          float minMaxValueFound = 0.0;\n          int minMaxPosition = 0;\n\n          for (int wD = 0; wD < ${h};\n              wD += ${l}) {\n            int xD = xDCorner + wD;\n\n            if (xD < 0 || xD >= ${e.inDepth}) {\n              continue;\n            }\n\n            for (int wR = 0; wR < ${d};\n                wR += ${c}) {\n              int xR = xRCorner + wR;\n\n              if (xR < 0 || xR >= ${e.inHeight}) {\n                continue;\n              }\n\n              for (int wC = 0; wC < ${f};\n                  wC += ${p}) {\n                int xC = xCCorner + wC;\n\n                if (xC < 0 || xC >= ${e.inWidth}) {\n                  continue;\n                }\n\n                float value = getX(batch, xD, xR, xC, ch);\n\n                // If a min / max value has already been found, use it. If not,\n                // use the current value.\n                float currMinMaxValue = mix(\n                    value, minMaxValue, minMaxValueFound);\n                if (value ${t} currMinMaxValue) {\n                  minMaxValue = value;\n                  minMaxValueFound = 1.0;\n                  minMaxPosition = ${r?s?`(((batch * ${e.inDepth} + xD) * ${e.inHeight} + xR) * ${e.inWidth} + xC) * ${e.inChannels} + ch`:`((xD * ${e.inHeight} + xR) * ${e.inWidth} + xC) * ${e.inChannels} + ch`:`wD * ${d} * ${f} +\n                      wR * ${f} + wC`};\n                }\n              }\n            }\n          }\n          setOutput(float(minMaxPosition));\n        }\n      `)}let w=`${t}(${t}(${t}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;"avg"===t&&(w="avgValue / count");const v=4*Math.floor(a/4),k=a%4,I=`\n      if (${b}
1) {\n        avgValue += dot(values, ones);\n      } else {\n        minMaxValue = max(values, minMaxValue);\n      }\n    `;this.userCode=`\n      const ivec3 strides =\n        ivec3(${o}, ${i}, ${u});\n      const ivec3 pads = ivec3(${m}, ${g}, ${y});\n      const float initializationValue = ${x};\n      const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n      float count = 0.0;\n\n      float getValue(int batch, int xD, int xR, int xC, int ch) {\n        if (xC < 0 || xC >= ${e.inWidth}) {\n          return initializationValue;\n        }\n        count += 1.0;\n        return getX(batch, xD, xR, xC, ch);\n      }\n\n      void main() {\n        ivec5 coords = getOutputCoords();\n        int batch = coords.x;\n        int ch = coords.u;\n\n        ivec3 xCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;\n        int xDCorner = xCorner.x;\n        int xRCorner = xCorner.y;\n        int xCCorner = xCorner.z;\n\n        // max/min x(?, ?, ?, d) to get y(yD, yR, yC, ch).\n        // ? = to be determined\n        vec4 minMaxValue = vec4(${x});\n        float avgValue = 0.0;\n        count = 0.0;\n\n        for (int wD = 0; wD < ${h};\n            wD += ${l}) {\n          int xD = xDCorner + wD;\n\n          if (xD < 0 || xD >= ${e.inDepth}) {\n            continue;\n          }\n\n          for (int wR = 0; wR < ${d};\n            wR += ${c}) {\n            int xR = xRCorner + wR;\n\n            if (xR < 0 || xR >= ${e.inHeight}) {\n              continue;\n            }\n\n            for (int wC = 0; wC < ${v}; wC += 4) {\n              int xC = xCCorner + wC * ${p};\n\n              vec4 values = vec4(\n                getValue(batch, xD, xR, xC, ch),\n                getValue(batch, xD, xR, xC + ${p}, ch),\n                getValue(batch, xD, xR, xC + 2 * ${p}, ch),\n                getValue(batch, xD, xR, xC + 3 * ${p}, ch)\n              );\n\n              ${I}\n            }\n\n            int xC = xCCorner + ${v};\n            if (${1===k}) {\n              vec4 values = vec4(\n                getValue(batch, xD, xR, xC, ch),\n                initializationValue,\n                initializationValue,\n                initializationValue\n              );\n\n              ${I}\n            } else if (${2===k}) {\n              vec4 values = vec4(\n                getValue(batch, xD, xR, xC, ch),\n                getValue(batch, xD, xR, xC + ${p}, ch),\n                initializationValue,\n                initializationValue\n              );\n\n              ${I}\n            } else if (${3===k}) {\n              vec4 values = vec4(\n                getValue(batch, xD, xR, xC, ch),\n                getValue(batch, xD, xR, xC + ${p}, ch),\n                getValue(batch, xD, xR, xC + 2 * ${p}, ch),\n                initializationValue\n              );\n\n              ${I}\n            }\n          }\n          setOutput(${w});\n        }\n      }\n    `}}const sg={kernelName:s.JhU,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t;id(a,"avgPool");const{filterSize:o,strides:i,pad:u,dimRoundingMode:l}=r;s.D5U.assert(s.Wap.eitherStridesOrDilationsAreOne(i,1),(()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${i} and dilations '1'`));const c=s.Wap.computePool2DInfo(a.shape,o,i,1,u,l);if(1===c.filterWidth&&1===c.filterHeight&&s.D5U.arraysEqual(c.inShape,c.outShape))return Hf({inputs:{x:a},backend:n});const p=new ng(c,"avg",!1);return n.runWebGLProgram(p,[a],"float32")}};const ag={kernelName:s._k9,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{filterSize:o,strides:i,pad:u,dimRoundingMode:l,dataFormat:c}=r,p=s.Wap.computePool3DInfo(a.shape,o,i,[1,1,1],u,l,c),h=new rg(p,"avg",!1);return n.runWebGLProgram(h,[a],"float32")}};class og{constructor(e){this.variableNames=["dy"],this.outputShape=e.inShape;const t=e.filterHeight,n=e.filterWidth,r=e.strideHeight,s=e.strideWidth,a=e.dilationHeight,o=e.dilationWidth,i=e.effectiveFilterHeight,u=e.effectiveFilterWidth,l=i-1-e.padInfo.top,c=u-1-e.padInfo.left,p=1/(t*n);this.userCode=`\n      const ivec2 pads = ivec2(${l}, ${c});\n      const float avgMultiplier = float(${p});\n\n      void main() {\n        ivec4 coords = getOutputCoords();\n        int b = coords[0];\n        int d = coords[3];\n\n        ivec2 dyRCCorner = coords.yz - pads;\n        int dyRCorner = dyRCCorner.x;\n        int dyCCorner = dyRCCorner.y;\n\n        // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).\n        // ? = to be determined. : = across all values in that axis.\n        float dotProd = 0.0;\n        for (int wR = 0; wR < ${i};\n            wR += ${a}) {\n          float dyR = float(dyRCorner + wR) / ${r}.0;\n\n          if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || fract(dyR) > 0.0) {\n            continue;\n          }\n          int idyR = int(dyR);\n\n          for (int wC = 0; wC < ${u};\n            wC+= ${o}) {\n            float dyC = float(dyCCorner + wC) / ${s}.0;\n\n            if (dyC < 0.0 || dyC >= ${e.outWidth}.0 ||\n                fract(dyC) > 0.0) {\n              continue;\n            }\n            int idyC = int(dyC);\n\n            float dyValue = getDy(b, idyR, idyC, d);\n\n            dotProd += dyValue * avgMultiplier;\n          }\n        }\n        setOutput(dotProd);\n      }\n    `}}class ig{constructor(e){this.variableNames=["dy"],this.outputShape=e.inShape;const t=e.filterDepth,n=e.filterHeight,r=e.filterWidth,s=e.strideDepth,a=e.strideHeight,o=e.strideWidth,i=e.dilationDepth,u=e.dilationHeight,l=e.dilationWidth,c=e.effectiveFilterDepth,p=e.effectiveFilterHeight,h=e.effectiveFilterWidth,d=c-1-e.padInfo.front,f=p-1-e.padInfo.top,m=h-1-e.padInfo.left,g=1/(t*n*r);this.userCode=`\n      const ivec3 pads = ivec3(${d}, ${f}, ${m});\n      const float avgMultiplier = float(${g});\n\n      void main() {\n        ivec5 coords = getOutputCoords();\n        int batch = coords.x;\n        int ch = coords.u;\n\n        ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;\n        int dyDCorner = dyCorner.x;\n        int dyRCorner = dyCorner.y;\n        int dyCCorner = dyCorner.z;\n\n        // Convolve dy(?, ?, ?, d) with pos mask(:, :, :, ch) to get\n        // dx(x
1D, xR, xC, ch).\n        // ? = to be determined. : = across all values in that axis.\n        float dotProd = 0.0;\n\n        for (int wD = 0; wD < ${c};\n            wD += ${i}) {\n          float dyD = float(dyDCorner + wD) / ${s}.0;\n\n          if (dyD < 0.0 || dyD >= ${e.outDepth}.0 || fract(dyD) > 0.0) {\n            continue;\n          }\n          int idyD = int(dyD);\n\n          for (int wR = 0; wR < ${p};\n              wR += ${u}) {\n            float dyR = float(dyRCorner + wR) / ${a}.0;\n\n            if (dyR < 0.0 || dyR >= ${e.outHeight}.0 ||\n                fract(dyR) > 0.0) {\n              continue;\n            }\n            int idyR = int(dyR);\n\n            for (int wC = 0; wC < ${h};\n                wC += ${l}) {\n              float dyC = float(dyCCorner + wC) / ${o}.0;\n\n              if (dyC < 0.0 || dyC >= ${e.outWidth}.0 ||\n                  fract(dyC) > 0.0) {\n                continue;\n              }\n              int idyC = int(dyC);\n\n              float dyValue = getDy(batch, idyD, idyR, idyC, ch);\n\n              dotProd += dyValue * avgMultiplier;\n            }\n          }\n        }\n        setOutput(dotProd);\n      }\n    `}}const ug={kernelName:s.IMb,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{dy:a,input:o}=t,i=o,{filterSize:u,strides:l,pad:c,dimRoundingMode:p}=r,h=s.Wap.computePool3DInfo(i.shape,u,l,[1,1,1],c,p),d=new ig(h);return n.runWebGLProgram(d,[a],i.dtype)}};const lg={kernelName:s.ROF,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{dy:a,input:o}=t,i=o;id([a,o],"avgPoolGrad");const{filterSize:u,strides:l,pad:c}=r,p=s.Wap.computePool2DInfo(i.shape,u,l,1,c),h=new og(p);return n.runWebGLProgram(h,[a],i.dtype)}};const cg={kernelName:s.XLW,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{a:s,b:a}=t,{transposeA:o,transposeB:i}=r;return Im({a:s,b:a,transposeA:o,transposeB:i,backend:n})}};class pg{constructor(e,t,n,r,a,o){this.outputShape=[],this.variableNames=["x","mean","variance"],s.Wap.assertAndGetBroadcastShape(e,t),s.Wap.assertAndGetBroadcastShape(e,n);let i="0.0";null!=r&&(s.Wap.assertAndGetBroadcastShape(e,r),this.variableNames.push("offset"),i="getOffsetAtOutCoords()");let u="1.0";null!=a&&(s.Wap.assertAndGetBroadcastShape(e,a),this.variableNames.push("scale"),u="getScaleAtOutCoords()"),this.outputShape=e,this.userCode=`\n      void main() {\n        float x = getXAtOutCoords();\n        float mean = getMeanAtOutCoords();\n        float variance = getVarianceAtOutCoords();\n        float offset = ${i};\n        float scale = ${u};\n        float inv = scale * inversesqrt(variance + float(${o}));\n        setOutput(dot(vec3(x, -mean, offset), vec3(inv, inv, 1)));\n      }\n    `}}class hg{constructor(e,t,n,r,a,o){this.packedInputs=!0,this.packedOutput=!0,this.variableNames=["x","mean","variance"],s.Wap.assertAndGetBroadcastShape(e,t),s.Wap.assertAndGetBroadcastShape(e,n);let i="vec4(0.0)";null!=r&&(s.Wap.assertAndGetBroadcastShape(e,r),this.variableNames.push("offset"),i="getOffsetAtOutCoords()");let u="vec4(1.0)";null!=a&&(s.Wap.assertAndGetBroadcastShape(e,a),this.variableNames.push("scale"),u="getScaleAtOutCoords()"),this.outputShape=e,this.userCode=`\n      void main() {\n        vec4 offset = ${i};\n        vec4 scale = ${u};\n\n        vec4 x = getXAtOutCoords();\n        vec4 mean = getMeanAtOutCoords();\n        vec4 variance = getVarianceAtOutCoords();\n\n        vec4 inv = scale * inversesqrt(variance + vec4(${o}));\n\n        setOutput((x - mean) * inv + offset);\n      }\n    `}}const dg={kernelName:s.sHE,backendName:"webgl",kernelFunc:({inputs:e,backend:t,attrs:n})=>{const{x:r,mean:a,variance:o,offset:i,scale:u}=e;s.D5U.assert(a.shape.length===o.shape.length,(()=>"Batch normalization gradient requires mean and variance to have equal ranks.")),s.D5U.assert(null==i||a.shape.length===i.shape.length,(()=>"Batch normalization gradient requires mean and offset to have equal ranks.")),s.D5U.assert(null==u||a.shape.length===u.shape.length,(()=>"Batch normalization gradient requires mean and scale to have equal ranks."));let{varianceEpsilon:l}=n;null==l&&(l=.001);const c=[r,a,o];let p=null;null!=i&&(p=i.shape,c.push(i));let h=null;null!=u&&(h=u.shape,c.push(u));const d=(0,s.OBj)().getBool("WEBGL_PACK_NORMALIZATION")?new hg(r.shape,a.shape,o.shape,p,h,l):new pg(r.shape,a.shape,o.shape,p,h,l);return t.runWebGLProgram(d,c,c[0].dtype)}};class fg{constructor(e){this.variableNames=["source"],this.outputShape=e,this.rank=e.length;const t=(0,cd.kW)(this.rank);this.customUniforms=[{name:"start",arrayIndex:this.rank,type:"int"}];const n=function(e){if(1===e)return"sourceLoc";if(e<=6)return mg.slice(0,e).map((e=>"sourceLoc."+e)).join(",");throw Error(`Slicing for rank ${e} is not yet supported`)}(this.rank);let r;r=`\n        ${t} sourceLoc;\n        ${t} coords = getOutputCoords();\n        ${e.map(((e,t)=>`sourceLoc.${mg[t]} = start[${t}] + coords.${mg[t]};`)).join("\n")}\n      `,this.userCode=`\n      void main() {\n        ${r}\n        setOutput(getSource(${n}));\n      }\n    `}}const mg=["x","y","z","w","u","v"];class gg{constructor(e){this.variableNames=["source"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.rank=e.length,this.customUniforms=[{name:"start",arrayIndex:this.rank,type:"int"}];const t=(0,cd.kW)(this.rank),n=Cf("coords",this.rank),r=Cf("sourceLoc",this.rank),s=1===this.rank?"sourceLoc":`vec2(${r.slice(-2).join()})`,a=`getChannel(getSource(${r.join()}), ${s})`,o=`\n      result.x = ${a};\n      if (++${n[this.rank-1]} < ${e[this.rank-1]}) {\n        ++${r[this.rank-1]};\n        result.y = ${a};\n        --${r[this.rank-1]};\n      }\n    `,i=1===this.rank?"":`\n      --${n[this.rank-1]};\n      if (++${n[this.rank-2]} < ${e[this.rank-2]}) {\n        ++${r[this.rank-2]};\n        result.z = ${a};\n        if (++${n[this.rank-1]} < ${e[this.rank-1]}) {\n          ++${r[this.rank-1]};\n          result.w = ${a};\n        }\n      }
1\n    `,u=this.rank<=4?`sourceLoc = coords +\n            ${t}(${e.map(((e,t)=>`start[${t}]`)).join()});`:e.map(((e,t)=>`${r[t]} = ${n[t]} + start[${t}];`)).join("\n");this.userCode=`\n      void main() {\n        ${t} coords = getOutputCoords();\n        ${t} sourceLoc;\n        ${u}\n        vec4 result = vec4(0.);\n        ${o}\n        ${i}\n        setOutput(result);\n      }\n    `}}function yg(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{begin:o,size:i}=r,[u,l]=s.kuN.parseSliceParams(a,o,i);if(s.kuN.assertParamsValid(a,u,l),0===s.D5U.sizeFromShape(l))return n.makeTensorInfo(l,a.dtype,[]);if(n.shouldExecuteOnCPU([a])||"string"===a.dtype){const e=n.texData.get(a.dataId),t=hf(e.values,u,l,a.shape,a.dtype);return n.makeTensorInfo(l,a.dtype,t)}const{isPacked:c}=n.texData.get(a.dataId),p=s.kuN.isSliceContinous(a.shape,u,l);if(c||!p){const e=(0,s.OBj)().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new gg(l):new fg(l),t=[u];return n.runWebGLProgram(e,[a],a.dtype,t)}return n.uploadToGPU(a.dataId),function(e,t,n,r){const a=r.texData.get(e.dataId),o=r.makeTensorInfo(n,e.dtype),i=r.texData.get(o.dataId);Object.assign(i,a),i.refCount=1,i.shape=n,i.dtype=e.dtype;let u=s.kuN.computeFlatOffset(t,s.D5U.computeStrides(e.shape));a.slice&&(u+=a.slice.flatOffset),i.slice={flatOffset:u,origDataId:a.slice&&a.slice.origDataId||e.dataId};const l=r.dataRefCount.get(i.slice.origDataId)||1;return r.dataRefCount.set(i.slice.origDataId,l+1),o}(a,u,l,n)}const bg={kernelName:s.p2w,backendName:"webgl",kernelFunc:yg},xg={kernelName:s.zws,backendName:"webgl",kernelFunc:e=>{const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{blockShape:o,crops:i}=r;s.D5U.assert(a.shape.length<=4,(()=>"batchToSpaceND for rank > 4 with a WebGL backend not implemented yet"));const u=o.reduce(((e,t)=>e*t)),l=s.Wap.getReshaped(a.shape,o,u),c=s.Wap.getPermuted(l.length,o.length),p=s.Wap.getReshapedPermuted(a.shape,o,u),h=s.Wap.getSliceBeginCoords(i,o.length),d=s.Wap.getSliceSize(p,i,o.length),f=[],m=pm({inputs:{x:a},backend:n,attrs:{shape:l}}),g=vm({inputs:{x:m},backend:n,attrs:{perm:c}}),y=pm({inputs:{x:g},backend:n,attrs:{shape:p}}),b=yg({inputs:{x:y},backend:n,attrs:{begin:h,size:d}});return f.push(m),f.push(g),f.push(y),f.forEach((e=>n.disposeIntermediateTensorInfo(e))),b}};const wg={kernelName:s.zvY,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:s,weights:a}=t,{size:o}=r,i=n.readSync(s.dataId),u=n.readSync(a.dataId),l=Fd(i,u,a.dtype,a.shape,o);return n.makeTensorInfo([o],a.dtype,l)}};const vg={kernelName:s.eEB,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n}=e,{s0:r,s1:a}=t,o=n.readSync(r.dataId),i=n.readSync(a.dataId),u=s.Wap.assertAndGetBroadcastShape(Array.from(o),Array.from(i));return n.makeTensorInfo([u.length],"int32",Int32Array.from(u))}},kg=nm({opSnippet:"return float(a != b);",cpuKernelImpl:nf,dtype:"bool"}),Ig={kernelName:s.yQU,backendName:"webgl",kernelFunc:kg};function Ng(e){const{inputs:t,backend:n}=e,{input:r}=t;return Hf({inputs:{x:n.texData.get(r.dataId).complexTensorInfos.real},backend:n})}const Sg={kernelName:s.xJR,backendName:"webgl",kernelFunc:Ng};const Tg={kernelName:s.RFZ,backendName:"webgl",kernelFunc:function e(t){const{inputs:n,backend:r,attrs:a}=t,{x:o}=n,{dtype:i}=a;if("complex64"===i){if("complex64"===o.dtype)return Hf({inputs:{x:o},backend:r});const t=s.lls(o.shape),n=e({inputs:{x:o},backend:r,attrs:{dtype:"float32"}}),a=Xf({inputs:{real:n,imag:t},backend:r});return t.dispose(),r.disposeIntermediateTensorInfo(n),a}if("complex64"===o.dtype){const t=Ng({inputs:{input:o},backend:r}),n=e({inputs:{x:t},backend:r,attrs:{dtype:i}});return r.disposeIntermediateTensorInfo(t),n}if(!s.D5U.hasEncodingLoss(o.dtype,i)){const e=Hf({inputs:{x:o},backend:r});return{dataId:e.dataId,shape:e.shape,dtype:i}}if(r.shouldExecuteOnCPU([o])){const e=r.texData.get(o.dataId).values,[t,n,s]=Md(e,o.shape,o.dtype,i);return r.makeTensorInfo(t,n,s)}if("int32"===i)return function(e,t){const n=new Ff(e.shape,"return float(int(x));"),r=t.runWebGLProgram(n,[e],"int32");return{dataId:r.dataId,shape:r.shape,dtype:r.dtype}}(o,r);if("bool"===i){const e=r.makeTensorInfo([],"bool",s.D5U.getTypedArrayFromDType("bool",1)),t=kg({inputs:{a:o,b:e},backend:r});return r.disposeIntermediateTensorInfo(e),t}throw new Error(`Error in Cast: failed to cast ${o.dtype} to ${i}`)}},Cg="return ceil(x);",Eg=tm({opSnippet:Cg,packedOpSnippet:Cg,cpuKernelImpl:Bd}),$g={kernelName:s.gJX,backendName:"webgl",kernelFunc:Eg};class Ag{constructor(e){this.variableNames=["A"],this.customUniforms=[{name:"minVal",type:"float"},{name:"maxVal",type:"float"}],this.outputShape=e,this.userCode="\n\n      void main() {\n        float value = getAAtOutCoords();\n        if (isnan(value)) {\n          setOutput(value);\n          return;\n        }\n\n        setOutput(clamp(value, minVal, maxVal));\n      }\n    "}}class Dg{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.customUniforms=[{name:"minVal",type:"float"},{name:"maxVal",type:"float"}],this.outputShape=e,this.userCode="\n      void main() {\n        vec4 value = getAAtOutCoords();\n\n        if (any(isnan(value))) {\n          setOutput(value);\n          return;\n        }\n\n        setOutput(clamp(value, vec4(minVal), vec4(maxVal)));\n      }\n    "}}const _g={kernelName:s.xnO,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{clipValueMin:o,clipValueMax:i}=r;let u;u=(0,s.OBj)().getBool("WEBGL_PACK_CLIP")?new Dg(a.shape):new Ag(a.shape);const l=[[o],[i]];return n.runWebGLProgram(u,[a],a.dtype,l)}};class Rg{constructor(e){this.variableNames=["real","imag"],this.outputShape=e,this.userCode="\n      void main() {\n        float re = abs(getRealAtOutCoords());\n        float im = abs(getImagAtOutCoords());\n        float mx = max(re, im);\n\n        // sadly the length function in glsl is not underflow-safe\n        // (at least not on Intel GPUs). So the safe solution is\n        // to ensure underflow-safety in all cases.\n        setOutput(\n          mx == 0.0 ? 0.0 : mx * length(vec2(1, min(re, im)/mx))\n        );\n      }\n    "}}function Fg(e,t){return{dataId:t.dataId,dtype:t.dtype,shape:e.shape}}const Og={kernelName:s.yj2,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n}=e,{x:r}=t,s=n.texData.get(r.dataId),a=new Rg(r.shape),o=[Fg(r,s.complexTensorInfos.real),Fg(r,s.complexTensorInfos.imag)];return n.runWebGLProgram(a,o,o[0].dtype)}};class Mg{constructor(e){this.outputShape=[],this.outputShape=s.Wap.computeOutShape(e,1),this.variableNames=e.map(((e,t)=>`T${t}`));const t=new Array(e.length-1);t[0]=e[0][1];for(let s=1;s<t.length;s++)t[s]=t[s-1]+e[s][1];const n=[`if (yC < ${t[0]}) setOutput(getT0(yR, yC));`];for(let s=1;s<t.length;s++){const e=t[s-1];n.push(`else if (yC < ${t[s]}) setOutput(getT${s}(yR, yC-${e}));`)}const r=t.length,a=t[t.length-1];n.push(`else setOutput(getT${r}(yR, yC-${a}));`),this.userCode=`\n      void main() {\n        ivec2 coords = getOutputCoords();\n        int yR = coords.x;\n        int yC = coords.y;\n\n        ${n.join("\n        ")}\n      }\n    `}}class Bg{constructor(e,t){this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[],this.outputShape=s.Wap.computeOutShape(e,t);const n=this.outputShape,r=n.length,a=(0,cd.kW)(r),o=Cf("coords",r),i=["x","y","z","w","u","v"].slice(0,r);this.variableNames=e.map(((e,t)=>`T${t}`));const u=new Array(e.length-1);u[0]=e[0][t];for(let s=1;s<u.length;s++)u[s]=u[s-1]+e[s][t];const l=i[t],c=i.slice(-2),p=i.join();let h=`if (${l} < ${u[0]}) {\n        return getChannel(\n            getT0(${p}), vec2(${c.join()}));\n        }`;for(let s=1;s<u.length;s++){const e=u[s-1];h+=`\n        if (${l} < ${u[s]}  && ${l} >= ${u[s-1]}) {\n          return getChannel(\n            getT${s}(${Lg(i,l,e)}),\n            vec2(${Lg(c,l,e)}));\n        }`}const d=u.length,f=u[u.length-1];h+=`\n        return getChannel(\n          getT${d}(${Lg(i,l,f)}),\n          vec2(${Lg(c,l,f)}));`,this.userCode=`\n      float getValue(${i.map((e=>"int "+e))}) {\n        ${h}\n      }\n\n      void main() {\n        ${a} coords = getOutputCoords();\n        vec4 result = vec4(getValue(${o}), 0., 0., 0.);\n\n        ${o[r-1]} = ${o[r-1]} + 1;\n        if (${o[r-1]} < ${n[r-1]}) {\n          result.g = getValue(${o});\n        }\n\n        ${o[r-2]} = ${o[r-2]} + 1;\n        if (${o[r-2]} < ${n[r-2]}) {\n          result.a = getValue(${o});\n        }\n\n        ${o[r-1]} = ${o[r-1]} - 1;\n        if (${o[r-2]} < ${n[r-2]} &&\n            ${o[r-1]} < ${n[r-1]}) {\n          result.b = getValue(${o});\n        }\n        setOutput(result);\n      }\n    `}}function Lg(e,t,n){const r=e.indexOf(t);return e.map(((e,t)=>t===r?`${e} - ${n}`:e)).join()}function Wg(e){const{inputs:t,backend:n}
vendor: 7,054 bytes, line 1
1=e,{input:r}=t;return Hf({inputs:{x:n.texData.get(r.dataId).complexTensorInfos.imag},backend:n})}const Pg={kernelName:s.J_u,backendName:"webgl",kernelFunc:Wg};function Ug(e,t,n){const r=e[0].dtype;if("complex64"===r){const r=e.map((e=>Ng({inputs:{input:e},backend:n}))),s=e.map((e=>Wg({inputs:{input:e},backend:n}))),a=Ug(r,t,n),o=Ug(s,t,n),i=Xf({inputs:{real:a,imag:o},backend:n});return r.forEach((e=>n.disposeIntermediateTensorInfo(e))),s.forEach((e=>n.disposeIntermediateTensorInfo(e))),n.disposeIntermediateTensorInfo(a),n.disposeIntermediateTensorInfo(o),i}let a=n.shouldExecuteOnCPU(e);if("string"===r&&(a=!0),a){const a=e.map((e=>{const r=s.D5U.sizeFromShape(e.shape.slice(t));return pm({inputs:{x:e},backend:n,attrs:{shape:[-1,r]}})})),o=a.map((e=>({vals:n.readSync(e.dataId),shape:e.shape}))),i=s.Wap.computeOutShape(a.map((e=>e.shape)),1),u=1===a[0].shape[0],l=Ld(o,i,r,u),c=s.Wap.computeOutShape(e.map((e=>e.shape)),t),p=n.makeTensorInfo(c,r,l);return a.forEach((e=>n.disposeIntermediateTensorInfo(e))),p}const o=(0,s.OBj)().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER");if(e.length>o){const r=[];for(let a=0;a<e.length;a+=o){const s=e.slice(a,a+o);r.push(Ug(s,t,n))}const s=Ug(r,t,n);for(const e of r)n.disposeIntermediateTensorInfo(e);return s}if((0,s.OBj)().getBool("WEBGL_PACK_ARRAY_OPERATIONS")&&e[0].shape.length>1){const s=new Bg(e.map((e=>e.shape)),t);return n.runWebGLProgram(s,e,r)}const{tensors2D:i,outShape:u}=function(e,t,n){const r=s.Wap.computeOutShape(e.map((e=>e.shape)),t);return{tensors2D:e.map((e=>pm({inputs:{x:e},attrs:{shape:[-1,s.D5U.sizeFromShape(e.shape.slice(t))]},backend:n}))),outShape:r}}(e,t,n),l=new Mg(i.map((e=>e.shape))),c=n.runWebGLProgram(l,i,r);i.forEach((e=>n.disposeIntermediateTensorInfo(e)));const p=pm({inputs:{x:c},attrs:{shape:u},backend:n});return n.disposeIntermediateTensorInfo(c),p}function zg(e){const{inputs:t,backend:n,attrs:r}=e,{axis:a}=r,o=s.D5U.parseAxisParam(a,t[0].shape)[0],i=t.map((e=>e.shape));s.Wap.assertParamsConsistent(i,o);const u=s.Wap.computeOutShape(t.map((e=>e.shape)),o);if(0===s.D5U.sizeFromShape(u))return n.makeTensorInfo(u,t[0].dtype,[]);const l=t.filter((e=>s.D5U.sizeFromShape(e.shape)>0));return 1===l.length?Hf({inputs:{x:l[0]},backend:n}):Ug(l,o,n)}const Vg={kernelName:s.Eh3,backendName:"webgl",kernelFunc:zg};class Gg{constructor(e,t=!1,n=null,r=!1,s=!1){this.variableNames=["x","W"],this.outputShape=e.outShape;const a=e.padInfo.top,o=e.padInfo.left,i=e.strideHeight,u=e.strideWidth,l=e.dilationHeight,c=e.dilationWidth,p=e.filterHeight,h=e.filterWidth,d=4*Math.floor(e.inChannels/4),f=e.inChannels%4,m="channelsLast"===e.dataFormat,g=m?1:2,y=m?2:3,b=m?3:1;let x="",w="";n&&(x=r?`float activation(float a) {\n          float b = getPreluActivationWeightsAtOutCoords();\n          ${n}\n        }`:s?`float activation(float a) {\n          float b = getLeakyreluAlphaAtOutCoords();\n          ${n}\n        }`:`\n          float activation(float x) {\n            ${n}\n          }\n        `,w="result = activation(result);");const v=t?"result += getBiasAtOutCoords();":"";t&&this.variableNames.push("bias"),r&&this.variableNames.push("preluActivationWeights"),s&&this.variableNames.push("leakyreluAlpha"),this.userCode=`\n      ${x}\n\n      const ivec2 strides = ivec2(${i}, ${u});\n      const ivec2 pads = ivec2(${a}, ${o});\n\n      void main() {\n        ivec4 coords = getOutputCoords();\n        int batch = coords[0];\n        int d2 = coords[${b}];\n\n        ivec2 xRCCorner =\n            ivec2(coords[${g}], coords[${y}]) * strides - pads;\n        int xRCorner = xRCCorner.x;\n        int xCCorner = xRCCorner.y;\n\n        // Convolve x(?, ?, d1) with w(:, :, d1, d2) to get y(yR, yC, d2).\n        // ? = to be determined. : = across all values in that axis.\n        float dotProd = 0.0;\n        for (int wR = 0; wR < ${p}; wR++) {\n          int xR = xRCorner + wR * ${l};\n\n          if (xR < 0 || xR >= ${e.inHeight}) {\n            continue;\n          }\n\n          for (int wC = 0; wC < ${h}; wC++) {\n            int xC = xCCorner + wC * ${c};\n\n            if (xC < 0 || xC >= ${e.inWidth}) {\n              continue;\n            }\n\n            for (int d1 = 0; d1 < ${d}; d1 += 4) {\n              vec4 wValues = vec4(\n                getW(wR, wC, d1, d2),\n                getW(wR, wC, d1 + 1, d2),\n                getW(wR, wC, d1 + 2, d2),\n                getW(wR, wC, d1 + 3, d2)\n              );\n\n              if (${m}) {\n                vec4 xValues = vec4(\n                  getX(batch, xR, xC, d1),\n                  getX(batch, xR, xC, d1 + 1),\n                  getX(batch, xR, xC, d1 + 2),\n                  getX(batch, xR, xC, d1 + 3)\n                );\n                dotProd += dot(xValues, wValues);\n              } else {\n                vec4 xValues = vec4(\n                  getX(batch, d1, xR, xC),\n                  getX(batch, d1 + 1, xR, xC),\n                  getX(batch, d1 + 2, xR, xC),\n                  getX(batch, d1 + 3, xR, xC)\n                );\n                dotProd += dot(xValues, wValues);\n              }\n            }\n\n            if (${1===f}) {\n\n              if (${m}) {\n                dotProd +=\n                    getX(batch, xR, xC, ${d}) *\n                    getW(wR, wC, ${d}, d2);\n              } else {\n                dotProd +=\n                    getX(batch, ${d}, xR, xC) *\n                    getW(wR, wC, ${d}, d2);\n              }\n\n            } else if (${2===f}) {\n              vec2 wValues = vec2(\n                getW(wR, wC, ${d}, d2),\n                getW(wR, wC, ${d} + 1, d2)\n              );\n\n              if (${m}) {\n                vec2 xValues = vec2(\n                  getX(batch, xR, xC, ${d}),\n                  getX(batch, xR, xC, ${d} + 1)\n                );\n                dotProd += dot(xValues, wValues);\n              } else {\n                vec2 xValues = vec2(\n                  getX(batch, ${d}, xR, xC),\n                  getX(batch, ${d} + 1, xR, xC)\n                );\n                dotProd += dot(xValues, wValues);\n              }\n\n            } else if (${3===f}) {\n              vec3 wValues = vec3(\n                getW(wR, wC, ${d}, d2),\n                getW(wR, wC, ${d} + 1, d2),\n                getW(wR, wC, ${d} + 2, d2)\n              );\n\n              if (${m}) {\n                vec3 xValues = vec3(\n                  getX(batch, xR, xC, ${d}),\n                  getX(batch, xR, xC, ${d} + 1),\n                  getX(batch, xR, xC, ${d} + 2)\n                );\n                dotProd += dot(xValues, wValues);\n              } else {\n                vec3 xValues = vec3(\n                  getX(batch, ${d}, xR, xC),\n                  getX(batch, ${d} + 1, xR, xC),\n                  getX(batch, ${d} + 2, xR, xC)\n                );\n                dotProd += dot(xValues, wValues);\n              }\n\n            }\n          }\n        }\n\n        float result = dotProd;\n        ${v}\n        ${w}\n        setOutput(result);\n      }\n    `}}
vendor: 4,175 bytes, line 1
1class Hg{constructor(e){this.variableNames=["x","W"],this.outputShape=e.outShape;const t=e.padInfo.front,n=e.padInfo.top,r=e.padInfo.left,s=e.strideDepth,a=e.strideHeight,o=e.strideWidth,i=e.dilationDepth,u=e.dilationHeight,l=e.dilationWidth,c=e.filterDepth,p=e.filterHeight,h=e.filterWidth,d=4*Math.floor(e.inChannels/4),f=e.inChannels%4;this.userCode=`\n      const ivec3 strides = ivec3(${s}, ${a}, ${o});\n      const ivec3 pads = ivec3(${t}, ${n}, ${r});\n\n      void main() {\n        ivec5 coords = getOutputCoords();\n        int batch = coords.x;\n        int d2 = coords.u;\n\n        ivec3 xFRCCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;\n        int xFCorner = xFRCCorner.x;\n        int xRCorner = xFRCCorner.y;\n        int xCCorner = xFRCCorner.z;\n\n        // Convolve x(?, ?, ?, d1) with w(:, :, :, d1, d2) to get\n        // y(yF, yR, yC, d2). ? = to be determined. : = across all\n        // values in that axis.\n        float dotProd = 0.0;\n        for (int wF = 0; wF < ${c}; wF++) {\n          int xF = xFCorner + wF * ${i};\n\n          if (xF < 0 || xF >= ${e.inDepth}) {\n            continue;\n          }\n\n          for (int wR = 0; wR < ${p}; wR++) {\n            int xR = xRCorner + wR * ${u};\n\n            if (xR < 0 || xR >= ${e.inHeight}) {\n              continue;\n            }\n\n            for (int wC = 0; wC < ${h}; wC++) {\n              int xC = xCCorner + wC * ${l};\n\n              if (xC < 0 || xC >= ${e.inWidth}) {\n                continue;\n              }\n\n              for (int d1 = 0; d1 < ${d}; d1 += 4) {\n                vec4 xValues = vec4(\n                  getX(batch, xF, xR, xC, d1),\n                  getX(batch, xF, xR, xC, d1 + 1),\n                  getX(batch, xF, xR, xC, d1 + 2),\n                  getX(batch, xF, xR, xC, d1 + 3)\n                );\n                vec4 wValues = vec4(\n                  getW(wF, wR, wC, d1, d2),\n                  getW(wF, wR, wC, d1 + 1, d2),\n                  getW(wF, wR, wC, d1 + 2, d2),\n                  getW(wF, wR, wC, d1 + 3, d2)\n                );\n\n                dotProd += dot(xValues, wValues);\n              }\n\n              if (${1===f}) {\n                dotProd +=\n                  getX(batch, xF, xR, xC, ${d}) *\n                  getW(wF, wR, wC, ${d}, d2);\n              } else if (${2===f}) {\n                vec2 xValues = vec2(\n                  getX(batch, xF, xR, xC, ${d}),\n                  getX(batch, xF, xR, xC, ${d} + 1)\n                );\n                vec2 wValues = vec2(\n                  getW(wF, wR, wC, ${d}, d2),\n                  getW(wF, wR, wC, ${d} + 1, d2)\n                );\n                dotProd += dot(xValues, wValues);\n              } else if (${3===f}) {\n                vec3 xValues = vec3(\n                  getX(batch, xF, xR, xC, ${d}),\n                  getX(batch, xF, xR, xC, ${d} + 1),\n                  getX(batch, xF, xR, xC, ${d} + 2)\n                );\n                vec3 wValues = vec3(\n                  getW(wF, wR, wC, ${d}, d2),\n                  getW(wF, wR, wC, ${d} + 1, d2),\n                  getW(wF, wR, wC, ${d} + 2, d2)\n                );\n                dotProd += dot(xValues, wValues);\n              }\n            }\n          }\n        }\n        setOutput(dotProd);\n      }\n    `}}class jg{constructor(e,t=!1,n=null,r=!1,a=!1){this.variableNames=["x","W"],this.packedInputs=!0,this.packedOutput=!0,this.customUniforms=[{name:"pads",type:"ivec2"},{name:"strides",type:"ivec2"},{name:"dilations",type:"ivec2"},{name:"inDims",type:"ivec2"}],this.outputShape=e.outShape,this.enableShapeUniforms=fd(this.outputShape.length);const o=e.padInfo.left,i=e.strideWidth,u=e.dilationWidth,l=e.filterHeight,c=e.filterWidth,p=c;let h="\n       int xR; int xC; int xCOffset;\n       vec4 wTexel; vec4 previous; vec4 final;";for(let s=0;s<c;s++)h+=`\n           vec4 xTexelC${2*s};\n           int xTexelC${2*s}Ready;\n           vec4 xTexelC${2*s+1};\n           int xTexelC${2*s+1}Ready;\n           vec4 xC${s};`;h+=`\n     for (int r = 0; r < ${l}; r++) {\n      for (int d1 = 0; d1 < ${e.inChannels}; d1 += 2) {\n       `;
1for(let s=0;s<c;s++)h+=`\n           xTexelC${2*s} = vec4(0.0);\n           xTexelC${2*s}Ready = 0;\n           xTexelC${2*s+1} = vec4(0.0);\n           xTexelC${2*s+1}Ready = 0;\n           xC${s} = vec4(0.0);`;h+="\n         xR = xRCorner + r * dilations[0];\n         if (xR >=0 && xR < inDims[0]) {\n       ";for(let g=0;g<(p+1)/2;g++){const t=2*g;if(h+=`\n           xC = xCCorner + ${t*u};\n           `,1===i){if(t<c&&(o%2===1?(h+=`\n                 xCOffset = xC + 1;\n                 if (xCOffset >= 0 && xCOffset < inDims[1] && xTexelC${t}Ready == 0) {\n                   xTexelC${t} = getX(batch, xR, xCOffset, d1);\n\n                   // Need to manually clear unused channels in case\n                   // we're reading from recycled texture.\n                   if (xCOffset + 1 >= inDims[1]) {\n                     xTexelC${t}.zw = vec2(0.0);\n                   }\n                   xTexelC${t}Ready = 1;\n                 }\n               `,h+=1===u&&t>0?`\n                 xC${t} = vec4(xTexelC${t-2}.zw, xTexelC${t}.xy);\n                 `:`\n                   xCOffset = xC + 1 - 2;\n\n                   if (xCOffset >= 0 && xCOffset < inDims[1]) {\n                     previous = getX(batch, xR, xCOffset, d1);\n\n                     // Need to manually clear unused channels in case\n                     // we're reading from recycled texture.\n                     if (xCOffset + 1 >= inDims[1]) {\n                       previous.zw = vec2(0.0);\n                     }\n\n                     xC${t} = vec4(previous.zw, xTexelC${t}.xy);\n                   } else {\n                     xC${t} = vec4(0.0, 0.0, xTexelC${t}.xy);\n                   }\n                   `):h+=`\n                 if (xC >= 0 && xC < inDims[1] && xTexelC${t}Ready == 0) {\n                   xTexelC${t} = getX(batch, xR, xC, d1);\n                   if (xC + 1 >= inDims[1]) {\n                     xTexelC${t}.zw = vec2(0.0);\n                   }\n                   xTexelC${t}Ready = 1;\n                 }\n\n                 xC${t} = xTexelC${t};\n                 `,t+1<c)){const e=o%2===0?s.D5U.nearestLargerEven(u):u;u%2===0&&o%2===1||u%2!==0&&o%2!==1?(h+=`\n                   xCOffset = xC + imod(pads[1], 2) + ${e};\n\n                   if (xCOffset >= 0 && xCOffset < inDims[1] && xTexelC${t+1}Ready == 0) {\n                     xTexelC${t+1} = getX(batch, xR, xCOffset, d1);\n\n                     // Need to manually clear unused channels in case\n                     // we're reading from recycled texture.\n                     if (xCOffset + 1 >= inDims[1]) {\n                       xTexelC${t+1}.zw = vec2(0.0);\n                     }\n                     xTexelC${t+1}Ready = 1;\n                   }\n                   `,h+=u>1?`\n                     xCOffset -= 2;\n                     if (xCOffset >= 0 && xCOffset < inDims[1]) {\n                      previous = getX(batch, xR, xCOffset, d1);\n                      xC${t+1} = vec4(previous.zw, xTexelC${t+1}.xy);\n                     } else {\n                      xC${t+1} = vec4(0.0, 0.0, xTexelC${t+1}.xy);\n                     }\n                     `:`\n                     xC${t+1} = vec4(xTexelC${t}.zw, xTexelC${t+1}.xy);\n                     `):h+=1===e?`\n                     xC${t+1} = xTexelC${t};\n                     `:`\n                     xCOffset = xC + ${e};\n\n                     if (xCOffset >= 0 && xCOffset < inDims[1] && xTexelC${t+1}Ready == 0) {\n                       xTexelC${t+1} = getX(batch, xR, xCOffset, d1);\n                       if (xCOffset + 1 >= inDims[1]) {\n                         xTexelC${t+1}.zw = vec2(0.0);\n                       }\n                       xTexelC${t+1}Ready = 1;\n                     }\n\n                     xC${t+1} = xTexelC${t+1};\n                     `}}else t<c&&(o%2===1?(h+=`\n                 xCOffset = xC + 1 - strides[1];\n                 if(xCOffset >= 0 && xCOffset < inDims[1] && xTexelC${t}Ready == 0) {\n                   xTexelC${t} = getX(batch, xR, xCOffset, d1);\n                   // Need to manually clear unused channels in case\n                   // we're reading from recycled texture.\n                   if (xCOffset + 1 >= inDims[1]) {\n                     xTexelC${t}.zw = vec2(0.0);\n                   }\n                   xTexelC${t}Ready = 1;\n                 }\n\n                 if(xC + 1 >= 0 && xC + 1 < inDims[1] && xTexelC${t+1}Ready == 0) {\n                   xTexelC${t+1} = getX(batch, xR, xC + 1, d1);\n                   // Need to manually clear unused channels in case\n                   // we're reading from recycled texture.\n                   if (xC + 2 >= inDims[1]) {\n                     xTexelC${t+1}.zw = vec2(0.0);\n                   }\n                   xTexelC${t+1}Ready = 1;\n                 }\n\n                 xC${t} = vec4(xTexelC${t}.zw, xTexelC${t+1}.zw);\n               `,t+1<c&&(h+=`\n                   final = vec4(0.0);\n                   xCOffset = xC + 1 + strides[1];\n                   if(xCOffset >= 0 && xCOffset < inDims[1]) {\n                     final = getX(batch, xR, xCOffset, d1);\n                   }\n                   xC${t+1} = vec4(xTexelC${t+1}.xy, final.xy);\n                 `)):(h+=`\n                 if(xC >= 0 && xC < inDims[1] && xTexelC${t}Ready == 0) {\n                   xTexelC${t} = getX(batch, xR, xC, d1);\n                   if (xC + 1 >= inDims[1]) {\n                     xTexelC${t}.zw = vec2(0.0);\n                   }\n                   xTexelC${t}Ready = 1;\n                 }\n\n                 xCOffset = xC + strides[1];\n                 if(xCOffset >= 0 && xCOffset < inDims[1] && xTexelC${t+1}Ready == 0) {\n                   xTexelC${t+1} = getX(batch, xR, xCOffset, d1);\n                   if (xCOffset + 1 >= inDims[1]) {\n                     xTexelC${t+1}.zw = vec2(0.);\n                   }\n                   xTexelC${t+1}Ready = 1;\n                 }\n\n                 xC${t} = vec4(\n                   xTexelC${t}.xy, xTexelC${t+1}.xy);\n               `,t+1<c&&(h+=`\n                   xC${t+1} = vec4(xTexelC${t}.zw, xTexelC${t+1}.zw);\n                 `)));t<c&&(h+=`\n             wTexel = getW(r, ${t}, d1, d2);\n             dotProd += xC${t}.xxzz * vec4(wTexel.xy, wTexel.xy);\n             if(d1 + 1 < ${e.inChannels}) {\n               dotProd += xC${t}.yyww * vec4(wTexel.zw, wTexel.zw);\n             }\n           `,t+1<c&&(h+=`\n               wTexel = getW(r, ${t+1}, d1, d2);\n               dotProd += xC${t+1}.xxzz * vec4(wTexel.xy, wTexel.xy);\n               if(d1 + 1 < ${e.inChannels}) {\n                 dotProd += xC${t+1}.yyww * vec4(wTexel.zw, wTexel.zw);\n               }\n             `))}h+="\n     }\n   ",h+="\n     }\n   ",h+="\n     }\n   ";let d="",f="";n&&(d=r?`vec4 activation(vec4 a) {\n           vec4 b = getPreluActivationWeightsAtOutCoords();\n           ${n}\n         }`:a?`vec4 activation(vec4 a) {\n           vec4 b = getLeakyreluAlphaAtOutCoords();\n           ${n}\n         }
1`:`vec4 activation(vec4 x) {\n           ${n}\n         }`,f="result = activation(result);");const m=t?"result += getBiasAtOutCoords();":"";t&&this.variableNames.push("bias"),r&&this.variableNames.push("preluActivationWeights"),a&&this.variableNames.push("leakyreluAlpha"),this.userCode=`\n       ${d}\n\n       void main() {\n         ivec4 coords = getOutputCoords();\n         int batch = coords.x;\n         ivec2 xRCCorner = coords.yz * strides - pads;\n         int d2 = coords.w;\n         int xRCorner = xRCCorner.x;\n         int xCCorner = xRCCorner.y;\n\n         //intialize dotProd with a small epsilon seems to reduce GPU accuracy loss.\n         vec4 dotProd = vec4(0.000000000000001);\n\n         ${h}\n\n         vec4 result = dotProd - vec4(0.000000000000001);\n         ${m}\n         ${f}\n         setOutput(result);\n       }\n     `}}class Xg{constructor(e,t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.customUniforms=[{name:"inputShape",type:"ivec4"},{name:"pad",type:"ivec2"},{name:"stride",type:"ivec2"},{name:"dilation",type:"ivec2"},{name:"inChannels",type:"int"},{name:"itemsPerBlockRow",type:"int"},{name:"outWidth",type:"int"}],this.outputShape=e,this.enableShapeUniforms=fd(this.outputShape.length);const{dataFormat:n}=t,r=(0,ld.A)(),s="channelsLast"===n,a=s?1:2,o=s?2:3,i=this.enableShapeUniforms?"if(blockIndex < outShape[2] && pos < outShape[1]) {":`if(blockIndex < ${e[2]} && pos < ${e[1]}) {`;let u="";for(let l=0;l<=1;l++)for(let e=0;e<=1;e++)u+=`\n          blockIndex = rc.z + ${e};\n          pos = rc.y + ${l};\n\n          ${i}\n            offsetY = int(blockIndex / outWidth) * stride[0] - pad[0];\n            d0 = offsetY + dilation[0] * (pos / itemsPerBlockRow);\n\n            if(d0 < inputShape[${a}] && d0 >= 0) {\n              // Use custom imod instead mod. On Intel GPU, mod may generate\n              // unexpected value.\n              // https://github.com/tensorflow/tfjs/issues/5447\n              offsetX = imod(blockIndex, outWidth) * stride[1] - pad[1];\n              d1 = offsetX + dilation[1] * (imod(pos, itemsPerBlockRow) /\n                  inChannels);\n\n              if(d1 < inputShape[${o}] && d1 >= 0) {\n\n                ch = imod(pos, inChannels);\n\n                if (${s}) {\n                  innerDims = vec2(d1, ch);\n                  result[${2*l+e}] = getChannel(\n                    getA(rc.x, d0, int(innerDims.x),\n                    int(innerDims.y)), innerDims);\n                } else {\n                  innerDims = vec2(d0, d1);\n                  result[${2*l+e}] = getChannel(\n                    getA(rc.x, ch, int(innerDims.x),\n                    int(innerDims.y)), innerDims);\n                }\n              }\n            }\n          }\n        `;this.userCode=`\n      void main() {\n        ivec3 rc = getOutputCoords();\n\n        vec4 result = vec4(0);\n\n        int blockIndex, pos, offsetY, d0, offsetX, d1, ch;\n        vec2 innerDims;\n\n        ${u}\n\n        ${r.output} = result;\n      }\n    `}}function qg(e,t){const n=e.length;return n>=3?t?[...e.slice(0,-3),e[n-3]*e[n-2],e[n-1]]:[...e.slice(0,-3),e[n-3],e[n-2]*e[n-1]]:!t&&1===n&&e[0]>1?[e[0],1]:null}function Kg({x:e,filter:t,convInfo:n,backend:r,bias:a=null,preluActivationWeights:o=null,leakyreluAlpha:i=0,activation:u=null}){const l=e.shape,c=r.texData.get(e.dataId),p=n.inChannels,h=l[0]*l[1]*l[2],d=n.outChannels,f="channelsLast"===n.dataFormat;let m;const g=[];if(null!=o){const e=qg(o.shape,f);null!=e&&(o=pm({inputs:{x:o},backend:r,attrs:{shape:e}}),g.push(o))}if(null!=a){const e=qg(a.shape,f);null!=e&&(a=pm({inputs:{x:a},backend:r,attrs:{shape:e}}),g.push(a))}if(!((1===h||1===d)&&p>1e3)&&c.isPacked&&f&&null!=c.texture&&l[2]%2!==0&&s.D5U.arraysEqual(c.shape.slice(-3),l.slice(-3))){const p=l[0]*l[1]*(l[2]+1),h={dataId:e.dataId,shape:[1,p,n.inChannels],dtype:e.dtype},d=c.shape;c.shape=c.shape.slice(),c.shape[c.shape.length-2]++,s.D5U.assert(ed(c.shape,h.shape),(()=>`packed reshape ${c.shape} to ${h.shape} isn't free`));const f=pm({inputs:{x:t},backend:r,attrs:{shape:[1,n.inChannels,n.outChannels]}});g.push(f);const y=Im({a:h,b:f,backend:r,transposeA:false,transposeB:false,bias:a,activation:u,preluActivationWeights:o,leakyreluAlpha:i}),b=r.texData.get(y.dataId);s.D5U.assert(b.isPacked,(()=>"batchMatMul result is expected to be packed")),c.shape=d,b.shape=n.outShape,m=Hf({inputs:{x:y},backend:r}),m.shape=n.outShape,g.push(y)}else{const s=n.outHeight*n.outWidth,l=pm({inputs:{x:e},backend:r,attrs:{shape:f?[n.batchSize,s,n.inChannels]:[n.batchSize,n.inChannels,s]}}),c=pm({inputs:{x:t},backend:r,attrs:{shape:[1,n.inChannels,n.outChannels]}}),p=Im({a:f?l:c,b:f?c:l,transposeA:!f,transposeB:false,backend:r,bias:a,activation:u,preluActivationWeights:o,leakyreluAlpha:i});m=pm({inputs:{x:p},backend:r,attrs:{shape:n.outShape}}),g.push(l),g.push(c),g.push(p)}for(const s of g)r.disposeIntermediateTensorInfo(s);return m}function Qg({x:e,filter:t,convInfo:n,backend:r,bias:a=null,preluActivationWeights:o=null,leakyreluAlpha:i=0,activation:u=null}){const{filterWidth:l,filterHeight:c,inChannels:p,outWidth:h,outHeight:d,dataFormat:f}
vendor: 6,138 bytes, line 1
1=n,m="channelsLast"===f,g=l*c*p,y=d*h,b=[n.batchSize,g,y],x=[];if(null!=o){const e=qg(o.shape,m);null!=e&&(o=pm({inputs:{x:o},backend:r,attrs:{shape:e}}),x.push(o))}if(null!=a){const e=qg(a.shape,m);null!=e&&(a=pm({inputs:{x:a},backend:r,attrs:{shape:e}}),x.push(a))}const w=pm({inputs:{x:t},backend:r,attrs:{shape:[1,g,s.D5U.sizeFromShape(t.shape)/g]}});x.push(w);const v=new Xg(b,n),k=[e.shape,[n.padInfo.top,n.padInfo.left],[n.strideHeight,n.strideWidth],[n.dilationHeight,n.dilationWidth],[n.inChannels],[n.filterWidth*n.inChannels],[n.outWidth]],I=r.runWebGLProgram(v,[e],"float32",k),N=pm({inputs:{x:I},backend:r,attrs:{shape:b}});x.push(I),x.push(N);const S=null!=a,T=null!=o,C="leakyrelu"===u,E=u?rm(u,!0):null,$=new sm(m?N.shape:w.shape,m?w.shape:N.shape,m?[n.batchSize,y,n.outChannels]:[n.batchSize,n.outChannels,y],!0,!1,S,E,T,C),A=m?[N,w]:[w,N];if(a&&A.push(a),T&&A.push(o),C){const e=r.makeTensorInfo([],"float32",s.D5U.createScalarValue(i,"float32"));A.push(e),x.push(e)}const D=r.runWebGLProgram($,A,"float32"),_=pm({inputs:{x:D},backend:r,attrs:{shape:n.outShape}});x.push(D);for(const s of x)r.disposeIntermediateTensorInfo(s);return _}const Yg={kernelName:s.mhS,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a,filter:o}=t,{strides:i,pad:u,dataFormat:l,dilations:c,dimRoundingMode:p}=r,h=s.Wap.convertConv2DDataFormat(l),d=s.Wap.computeConv2DInfo(a.shape,o.shape,i,c,u,p,!1,h);let f;if(1!==d.filterHeight||1!==d.filterWidth||1!==d.dilationHeight||1!==d.dilationWidth||1!==d.strideHeight||1!==d.strideWidth||"SAME"!==d.padInfo.type&&"VALID"!==d.padInfo.type)if(d.strideWidth<=2&&"channelsLast"===h&&(0,s.OBj)().getBool("WEBGL_EXP_CONV")){const e=new jg(d),t=[[d.padInfo.top,d.padInfo.left],[d.strideHeight,d.strideWidth],[d.dilationHeight,d.dilationWidth],[d.inHeight,d.inWidth]];f=n.runWebGLProgram(e,[a,o],"float32",t)}else if((0,s.OBj)().getBool("WEBGL_CONV_IM2COL"))f=Qg({x:a,filter:o,convInfo:d,backend:n});else{const e=new Gg(d);f=n.runWebGLProgram(e,[a,o],"float32")}else f=Kg({x:a,filter:o,convInfo:d,backend:n});const m=pm({inputs:{x:f},backend:n,attrs:{shape:d.outShape}});return n.disposeIntermediateTensorInfo(f),m}};class Zg{constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;const t=e.strideHeight,n=e.strideWidth,r=e.padInfo.top,s=e.padInfo.left,a="channelsLast"===e.dataFormat;this.userCode=`\n      void main() {\n        ivec4 coords = getOutputCoords();\n        int wR = coords.x;\n        int wC = coords.y;\n        int d1 = coords.z;\n        int d2 = coords.w;\n\n        // Convolve x(?, ?, d1) with dy(:, :, d2) to get dw(wR, wC, d1, d2).\n        // ? = to be determined. : = across all values in that axis.\n        float dotProd = 0.0;\n\n        for (int b = 0; b < ${e.batchSize}; b++) {\n          for (int yR = 0; yR < ${e.outHeight}; yR++) {\n            int xR = wR + yR * ${t} - ${r};\n\n            if (xR < 0 || xR >= ${e.inHeight}) {\n              continue;\n            }\n\n            for (int yC = 0; yC < ${e.outWidth}; yC++) {\n              int xC = wC + yC * ${n} - ${s};\n\n              if (xC < 0 || xC >= ${e.inWidth}) {\n                continue;\n              }\n\n              if (${a}) {\n                float dyValue = getDy(b, yR, yC, d2);\n                float xValue = getX(b, xR, xC, d1);\n                dotProd += (xValue * dyValue);\n              } else {\n                float dyValue = getDy(b, d2, yR, yC);\n                float xValue = getX(b, d1, xR, xC);\n                dotProd += (xValue * dyValue);\n              }\n\n            }\n          }\n        }\n        setOutput(dotProd);\n      }\n    `}}class Jg{constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;const t=e.filterHeight,n=e.filterWidth,r=e.strideHeight,s=e.strideWidth,a="channelsLast"===e.dataFormat,o=t-1-e.padInfo.top,i=n-1-e.padInfo.left,u=a?1:2,l=a?2:3,c=a?3:1;this.userCode=`\n      const ivec2 pads = ivec2(${o}, ${i});\n\n      void main() {\n        ivec4 coords = getOutputCoords();\n        int batch = coords[0];\n        int d1 = coords[${c}];\n\n        ivec2 dyCorner = ivec2(coords[${u}], coords[${l}]) - pads;\n        int dyRCorner = dyCorner.x;\n        int dyCCorner = dyCorner.y;\n\n        // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\n        // ? = to be determined. : = across all values in that axis.\n        float dotProd = 0.0;\n        for (int wR = 0; wR < ${t}; wR++) {\n          float dyR = float(dyRCorner + wR) / ${r}.0;\n\n          if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || fract(dyR) > 0.0) {\n            continue;\n          }\n          int idyR = int(dyR);\n\n          int wRPerm = ${t} - 1 - wR;\n\n          for (int wC = 0; wC < ${n}; wC++) {\n            float dyC = float(dyCCorner + wC) / ${s}.0;\n\n            if (dyC < 0.0 || dyC >= ${e.outWidth}.0 ||\n                fract(dyC) > 0.0) {\n              continue;\n            }\n            int idyC = int(dyC);\n\n            int wCPerm = ${n} - 1 - wC;\n\n            for (int d2 = 0; d2 < ${e.outChannels}; d2++) {\n\n              if (${a}) {\n                float xValue = getDy(batch, idyR, idyC, d2);\n                float wValue = getW(wRPerm, wCPerm, d1, d2);\n                dotProd += xValue * wValue;\n              } else {\n                float xValue = getDy(batch, d2, idyR, idyC);\n                float wValue = getW(wRPerm, wCPerm, d1, d2);\n                dotProd += xValue * wValue;\n              }\n\n            }\n          }\n        }\n        setOutput(dotProd);\n      }\n    `}}class ey{constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;const t=e.strideDepth,n=e.strideHeight,r=e.strideWidth,s=e.padInfo.front,a=e.padInfo.top,o=e.padInfo.left;this.userCode=`\n      void main() {\n        ivec5 coords = getOutputCoords();\n        int wF = coords.x;\n        int wR = coords.y;\n        int wC = coords.z;\n        int d1 = coords.w;\n        int d2 = coords.u;\n\n        float dotProd = 0.0;\n\n        for (int b = 0; b < ${e.batchSize}; b++) {\n          for (int yF = 0; yF < ${e.outDepth};
1 yF++) {\n            int xF = wF + yF * ${t} - ${s};\n\n            if (xF < 0 || xF >= ${e.inDepth}) {\n              continue;\n            }\n\n            for (int yR = 0; yR < ${e.outHeight}; yR++) {\n              int xR = wR + yR * ${n} - ${a};\n\n              if (xR < 0 || xR >= ${e.inHeight}) {\n                continue;\n              }\n\n              for (int yC = 0; yC < ${e.outWidth}; yC++) {\n                int xC = wC + yC * ${r} - ${o};\n\n                if (xC < 0 || xC >= ${e.inWidth}) {\n                  continue;\n                }\n\n                float dyValue = getDy(b, yF, yR, yC, d2);\n                float xValue = getX(b, xF, xR, xC, d1);\n                dotProd += (xValue * dyValue);\n              }\n            }\n          }\n        }\n        setOutput(dotProd);\n      }\n    `}}class ty{constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;const t=e.filterDepth,n=e.filterHeight,r=e.filterWidth,s=e.strideDepth,a=e.strideHeight,o=e.strideWidth,i=t-1-e.padInfo.front,u=n-1-e.padInfo.top,l=r-1-e.padInfo.left;this.userCode=`\n      const ivec3 pads = ivec3(${i}, ${u}, ${l});\n\n      void main() {\n        ivec5 coords = getOutputCoords();\n        int batch = coords.x;\n        int d1 = coords.u;\n\n\n        ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;\n        int dyFCorner = dyCorner.x;\n        int dyRCorner = dyCorner.y;\n        int dyCCorner = dyCorner.z;\n\n        float dotProd = 0.0;\n        for (int wF = 0; wF < ${t}; wF++) {\n          float dyF = float(dyFCorner + wF) / ${s}.0;\n\n          if (dyF < 0.0 || dyF >= ${e.outDepth}.0 || fract(dyF) > 0.0) {\n            continue;\n          }\n          int idyF = int(dyF);\n\n          int wFPerm = ${t} - 1 - wF;\n\n          for (int wR = 0; wR < ${n}; wR++) {\n            float dyR = float(dyRCorner + wR) / ${a}.0;\n\n            if (dyR < 0.0 || dyR >= ${e.outHeight}.0 ||\n              fract(dyR) > 0.0) {\n              continue;\n            }\n            int idyR = int(dyR);\n\n            int wRPerm = ${n} - 1 - wR;\n\n            for (int wC = 0; wC < ${r}; wC++) {\n              float dyC = float(dyCCorner + wC) / ${o}.0;\n\n              if (dyC < 0.0 || dyC >= ${e.outWidth}.0 ||\n                  fract(dyC) > 0.0) {\n                continue;\n              }\n              int idyC = int(dyC);\n\n              int wCPerm = ${r} - 1 - wC;\n\n              for (int d2 = 0; d2 < ${e.outChannels}; d2++) {\n                float xValue = getDy(batch, idyF, idyR, idyC, d2);\n                float wValue = getW(wFPerm, wRPerm, wCPerm, d1, d2);\n                dotProd += xValue * wValue;\n              }\n            }\n          }\n        }\n        setOutput(dotProd);\n      }\n    `}}const ny={kernelName:s.wUP,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a,dy:o}=t,{strides:i,pad:u,dataFormat:l,dimRoundingMode:c,filterShape:p}=r,h=s.Wap.convertConv2DDataFormat(l),d=s.Wap.computeConv2DInfo(a.shape,p,i,1,u,c,!1,h),f=new Zg(d);return n.runWebGLProgram(f,[a,o],"float32")}};const ry={kernelName:s.wm,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{dy:a,filter:o}=t,{inputShape:i,strides:u,pad:l,dataFormat:c,dimRoundingMode:p}=r,h=s.Wap.convertConv2DDataFormat(c),d=s.Wap.computeConv2DInfo(i,o.shape,u,1,l,p,!1,h),f=new Jg(d);return n.runWebGLProgram(f,[a,o],"float32")}};const sy={kernelName:s.x12,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a,filter:o}=t,{strides:i,pad:u,dilations:l}=r,c=s.Wap.computeConv3DInfo(a.shape,o.shape,i,l,u),p=new Hg(c);return n.runWebGLProgram(p,[a,o],"float32")}};const ay={kernelName:s.o2y,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a,dy:o}=t,{strides:i,pad:u,filterShape:l}=r,c=s.Wap.computeConv3DInfo(a.shape,l,i,1,u),p=new ey(c);return n.runWebGLProgram(p,[a,o],"float32")}};const oy={kernelName:s.ik2,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{dy:a,filter:o}=t,{pad:i,strides:u,inputShape:l}=r,c=s.Wap.computeConv3DInfo(l,o.shape,u,1,i),p=new ty(c);return n.runWebGLProgram(p,[a,o],"float32")}},iy=tm({opSnippet:"if (isnan(x)) return x;\n  return cos(x);\n"}),uy={kernelName:s.mc4,backendName:"webgl",kernelFunc:iy},ly=tm({opSnippet:"\n  float e2x = exp(-x);\n  return (e2x + 1.0 / e2x) / 2.0;\n"}),cy={kernelName:s.TR1,backendName:"webgl",kernelFunc:ly};
vendor: 16,962 bytes, line 1
1class py{constructor(e,t,n,r,s){this.variableNames=["Image","Boxes","BoxInd"],this.outputShape=[];const[a,o,i,u]=e,[l]=t,[c,p]=n;this.outputShape=[l,c,p,u];const h="bilinear"===r?1:0,[d,f]=[o-1+".0",i-1+".0"],[m,g,y]=c>1?[""+(o-1)/(c-1),"(y2-y1) * height_ratio",`y1*${d} + float(y)*(height_scale)`]:["0.0","0.0",`0.5 * (y1+y2) * ${d}`],[b,x,w]=p>1?[""+(i-1)/(p-1),"(x2-x1) * width_ratio",`x1*${f} + float(x)*(width_scale)`]:["0.0","0.0",`0.5 * (x1+x2) * ${f}`];this.userCode=`\n      const float height_ratio = float(${m});\n      const float width_ratio = float(${b});\n      void main() {\n        ivec4 coords = getOutputCoords();\n        int b = coords[0];\n        int y = coords[1];\n        int x = coords[2];\n        int d = coords[3];\n\n        // get box vals\n        float y1 = getBoxes(b,0);\n        float x1 = getBoxes(b,1);\n        float y2 = getBoxes(b,2);\n        float x2 = getBoxes(b,3);\n\n        // get image in batch index\n        int bInd = round(getBoxInd(b));\n        if(bInd < 0 || bInd >= ${a}) {\n          return;\n        }\n\n        float height_scale = ${g};\n        float width_scale = ${x};\n\n        float in_y = ${y};\n        if( in_y < 0.0 || in_y > ${d} ) {\n          setOutput(float(${s}));\n          return;\n        }\n        float in_x = ${w};\n        if( in_x < 0.0 || in_x > ${f} ) {\n          setOutput(float(${s}));\n          return;\n        }\n\n        vec2 sourceFracIndexCR = vec2(in_x,in_y);\n        if(${h} == 1) {\n          // Compute the four integer indices.\n          ivec2 sourceFloorCR = ivec2(sourceFracIndexCR);\n          ivec2 sourceCeilCR = ivec2(ceil(sourceFracIndexCR));\n\n          float topLeft = getImage(b, sourceFloorCR.y, sourceFloorCR.x, d);\n          float bottomLeft = getImage(b, sourceCeilCR.y, sourceFloorCR.x, d);\n          float topRight = getImage(b, sourceFloorCR.y, sourceCeilCR.x, d);\n          float bottomRight = getImage(b, sourceCeilCR.y, sourceCeilCR.x, d);\n\n          vec2 fracCR = sourceFracIndexCR - vec2(sourceFloorCR);\n\n          float top = topLeft + (topRight - topLeft) * fracCR.x;\n          float bottom = bottomLeft + (bottomRight - bottomLeft) * fracCR.x;\n          float newValue = top + (bottom - top) * fracCR.y;\n          setOutput(newValue);\n        } else {\n          // Compute the coordinators of nearest neighbor point.\n          ivec2 sourceNearestCR = ivec2(floor(\n            sourceFracIndexCR + vec2(0.5,0.5)));\n          float newValue = getImage(b, sourceNearestCR.y, sourceNearestCR.x, d);\n          setOutput(newValue);\n        }\n      }\n    `}}const hy={kernelName:s.VcC,backendName:"webgl",kernelFunc:e=>{const{inputs:t,backend:n,attrs:r}=e,{image:s,boxes:a,boxInd:o}=t,{cropSize:i,method:u,extrapolationValue:l}=r,c=new py(s.shape,a.shape,i,u,l);return n.runWebGLProgram(c,[s,a,o],"float32")}};var dy;!function(e){e.Prod="*",e.Sum="+"}(dy||(dy={}));class fy{constructor(e,t,n,r){this.op=e,this.outputShape=t,this.variableNames=["x"],this.customUniforms=[{name:"index",type:"float"}];const s=this.outputShape.length,a=this.op===dy.Prod?"1.0":"0.0",o=n?a:`getX(${my(s,"coords",this.op)})`,i=this.outputShape[this.outputShape.length-1];let u="",l="";n?(u=r?"end != "+(i-1):"end != 0",l=r?"end + 1":"end - 1"):(u=r?`end + pow2 < ${i}`:"end >= pow2",l=r?"end + pow2":"end - pow2"),this.userCode=`\n      void main() {\n        ${(0,cd.kW)(s)} coords = getOutputCoords();\n        int end = ${gy(s,"coords",this.op)};\n        float val = ${o};\n        int pow2 = int(pow(2.0, index));\n        if (${u}) {\n          int idx = ${l};\n          ${gy(s,"coords",this.op)} = idx;\n          val ${this.op}= getX(${my(s,"coords",this.op)});\n        }\n        setOutput(val);\n      }\n    `}}function my(e,t,n){if(1===e)return`${t}`;if(2===e)return`${t}.x, ${t}.y`;if(3===e)return`${t}.x, ${t}.y, ${t}.z`;if(4===e)return`${t}.x, ${t}.y, ${t}.z, ${t}.w`;throw new Error(`Cumulative ${n} for rank ${e} is not yet supported`)}function gy(e,t,n){if(1===e)return`${t}`;if(2===e)return`${t}.y`;if(3===e)return`${t}.z`;if(4===e)return`${t}.w`;throw new Error(`Cumulative ${n} for rank ${e} is not yet supported`)}function yy(e,t,n,r,a,o){const i=t.shape.length,u=s.Wap.getAxesPermutation([r],i);let l=t;null!=u&&(l=vm({inputs:{x:t},backend:n,attrs:{perm:u}}));const c=s.Wap.getInnerMostAxes(1,i)[0];if(c!==i-1)throw new Error(`WebGL cumprod shader expects an inner-most axis=${t.shape.length-1} but got axis=${r}`);const p=l.shape[c];let h=Hf({inputs:{x:l},backend:n});for(let s=0;s<=Math.ceil(Math.log2(p))-1;s++){const t=new fy(e,l.shape,!1,o),r=[[s]],a=h;h=n.runWebGLProgram(t,[h],h.dtype,r),n.disposeIntermediateTensorInfo(a)}if(a){const t=new fy(e,l.shape,a,o),r=h;h=n.runWebGLProgram(t,[h],h.dtype),n.disposeIntermediateTensorInfo(r)}if(null!=u){const e=vm({inputs:{x:h},backend:n,attrs:{perm:s.Wap.getUndoAxesPermutation(u)}});return n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(l),e}return h}const by={kernelName:s.Byc,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:s}=t,{axis:a,exclusive:o,reverse:i}=r;return yy(dy.Prod,s,n,a,o,i)}};const xy={kernelName:s.iHb,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:s}=t,{axis:a,exclusive:o,reverse:i}=r;return yy(dy.Sum,s,n,a,o,i)}};const wy={kernelName:s.QRR,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:s,weights:a}=t,{size:o,binaryOutput:i}=r;if(1===s.shape.length){const e=n.readSync(s.dataId),t=n.readSync(a.dataId),r=Fd(e,t,a.dtype,a.shape,o);return n.makeTensorInfo([o],a.dtype,r)}if(2===s.shape.length){const e=n.bufferSync(s),t=n.bufferSync(a),r=Od(e,t,o,i);return n.makeTensorInfo(r.shape,a.dtype,r.values)}throw new Error(`Error in denseBincount: input must be at most rank 2, but got rank${s.shape.length}.`)}};class vy{constructor(e,t,n){this.variableNames=["x"],this.outputShape=[],this.outputShape=e,this.blockSize=t,this.dataFormat=n,this.userCode=`\n    void main() {\n      ivec4 coords = getOutputCoords();\n      int b = coords[0];\n      int h = ${this.getHeightCoordString()};\n      int w = ${this.getWidthCoordString()};\n      int d = ${this.getDepthCoordString()};\n\n      int in_h = h / ${t};\n      int offset_h = imod(h, ${t});\n      int in_w = w / ${t};\n      int offset_w = imod(w, ${t});\n      int offset_d = (offset_h * ${t} + offset_w) *\n        ${this.getOutputDepthSize()};\n      int in_d = d + offset_d;\n\n      float result = ${this.getInputSamplingString()};\n      setOutput(result);\n    }\n  `}getHeightCoordString(){return"NHWC"===this.dataFormat?"coords[1]":"coords[2]"}getWidthCoordString(){return"NHWC"===this.dataFormat?"coords[2]":"coords[3]"}getDepthCoordString(){return"NHWC"===this.dataFormat?"coords[3]":"coords[1]"}getOutputDepthSize(){return"NHWC"===this.dataFormat?this.outputShape[3]:this.outputShape[1]}getInputSamplingString(){return"NHWC"===this.dataFormat?"getX(b, in_h, in_w, in_d)":"getX(b, in_d, in_h, in_w)"}}const ky={kernelName:s.T0n,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:s}=t,{blockSize:a,dataFormat:o}=r,i=s.shape[0],u=("NHWC"===o?s.shape[1]:s.shape[2])*a,l=("NHWC"===o?s.shape[2]:s.shape[3])*a,c=("NHWC"===o?s.shape[3]:s.shape[1])/(a*a),p=new vy("NHWC"===o?[i,u,l,c]:[i,c,u,l],a,o);return n.runWebGLProgram(p,[s],s.dtype)}};class Iy{constructor(e,t=!1,n=null,r=!1,s=!1){this.variableNames=["x","W"],this.customUniforms=[{name:"pads",type:"ivec2"},{name:"strides",type:"ivec2"},{name:"dilations",type:"ivec2"},{name:"inDims",type:"ivec2"}],this.outputShape=e.outShape,this.enableShapeUniforms=fd(this.outputShape.length);const a=e.filterHeight,o=e.filterWidth,i=e.outChannels/e.inChannels;let u="",l="";n&&(u=r?`float activation(float a) {\n          float b = getPreluActivationWeightsAtOutCoords();\n          ${n}\n        }`:s?`float activation(float a) {\n          float b = getLeakyreluAlphaAtOutCoords();\n          ${n}\n        }`:`\n          float activation(float x) {\n            ${n}\n          }\n        `,l="result = activation(result);");const c=t?"result += getBiasAtOutCoords();":"";t&&this.variableNames.push("bias"),r&&this.variableNames.push("preluActivationWeights"),s&&this.variableNames.push("leakyreluAlpha"),this.userCode=`\n      ${u}\n\n      void main() {\n        ivec4 coords = getOutputCoords();\n        int batch = coords.x;\n        ivec2 xRCCorner = coords.yz * strides - pads;\n        int d2 = coords.w;\n        int d1 = d2 / ${i};\n        int q = d2 - d1 * ${i};\n\n        int xRCorner = xRCCorner.x;\n        int xCCorner = xRCCorner.y;\n\n        // Convolve x(?, ?, d1) with w(:, :, d1, q) to get y(yR, yC, d2).\n        // ? = to be determined. : = across all values in that axis.\n        float dotProd = 0.0;\n        // TO DO(dsmilkov): Flatten the two for loops and vec4 the operations.\n        for (int wR = 0; wR < ${a}; wR++) {\n          int xR = xRCorner + wR * dilations[0];\n\n          if (xR < 0 || xR >= inDims[0]) {\n            continue;\n          }\n\n          for (int wC = 0; wC < ${o}; wC++) {\n            int xC = xCCorner + wC * dilations[1];\n\n            if (xC < 0 || xC >= inDims[1]) {\n              continue;\n            }\n\n            float xVal = getX(batch, xR, xC, d1);\n            float wVal = getW(wR, wC, d1, q);\n            dotProd += xVal * wVal;\n          }\n        }\n\n        float result = dotProd;\n        ${c}\n        ${l}\n        setOutput(result);\n      }\n    `}}class Ny{constructor(e,t=!1,n=null,r=!1,a=!1){this.variableNames=["x","W"],this.packedInputs=!0,this.packedOutput=!0,this.customUniforms=[{name:"pads",type:"ivec2"},{name:"strides",type:"ivec2"},{name:"dilations",type:"ivec2"},{name:"inDims",type:"ivec2"}],this.outputShape=e.outShape,this.enableShapeUniforms=fd(this.outputShape.length);const o=e.outChannels/e.inChannels,i=e.padInfo.left,u=e.strideWidth,l=e.dilationWidth,c=e.filterHeight,p=e.filterWidth,h=p;let d="\n      int xR; int xC; int xCOffset;\n      vec4 wTexel; vec4 previous; vec4 final;";for(let s=0;s<p;s++)d+=`\n          vec4 xTexelC${2*s};\n          int xTexelC${2*s}Ready;\n          vec4 xTexelC${2*s+1};\n          int xTexelC${2*s+1}Ready;\n          vec4 xC${s};`;d+=`\n    for (int r = 0; r < ${c}; r++) {\n      `;for(let s=0;s<p;s++)d+=`\n          xTexelC${2*s} = vec4(0.0);\n          xTexelC${2*s}Ready = 0;\n          xTexelC${2*s+1} = vec4(0.0);\n          xTexelC${2*s+1}Ready = 0;\n          xC${s} = vec4(0.0);`;d+="\n        xR = xRCorner + r * dilations[0];\n        if (xR >=0 && xR < inDims[0]) {\n      ";for(let y=0;y<(h+1)/2;y++){const e=2*y;if(d+=`\n          xC = xCCorner + ${e*l};\n          `,1===u){if(e<p&&(i%2===1?(d+=`\n                xCOffset = xC + 1;\n                if (xCOffset >= 0 && xCOffset < inDims[1] && xTexelC${e}Ready == 0) {\n                  xTexelC${e} = getX(batch, xR, xCOffset, d1);\n\n                  // Need to manually clear unused channels in case\n                  // we're reading from recycled texture.\n                  if (xCOffset + 1 >= inDims[1]) {\n                    xTexelC${e}.zw = vec2(0.0);\n                  }\n                  xTexelC${e}Ready = 1;\n                }\n              `,d+=1===l&&e>0?`\n                xC${e} = vec4(xTexelC${e-2}.zw, xTexelC${e}.xy);\n                `:`\n                  xCOffset = xC + 1 - 2;\n\n                  if (xCOffset >= 0 && xCOffset < inDims[1]) {\n                    previous = getX(batch, xR, xCOffset, d1);\n\n                    // Need to manually clear unused channels in case\n                    // we're reading from recycled texture.\n                    if (xCOffset + 1 >= inDims[1]) {\n                      previous.zw = vec2(0.0);\n                    }\n\n                    xC${e} = vec4(previous.zw, xTexelC${e}.xy);\n                  } else {\n                    xC${e} = vec4(0.0, 0.0, xTexelC${e}.xy);\n                  }\n                  `):d+=`\n                if (xC >= 0 && xC < inDims[1] && xTexelC${e}Ready == 0) {\n                  xTexelC${e} = getX(batch, xR, xC, d1);\n                  if (xC + 1 >= inDims[1]) {\n                    xTexelC${e}.zw = vec2(0.0);\n                  }\n                  xTexelC${e}Ready = 1;\n                }\n\n                xC${e} = xTexelC${e};\n                `,e+1<p)){const t=i%2===0?s.D5U.nearestLargerEven(l):l;l%2===0&&i%2===1||l%2!==0&&i%2!==1?(d+=`\n                  xCOffset = xC + imod(pads[1], 2) + ${t};\n\n                  if (xCOffset >= 0 && xCOffset < inDims[1] && xTexelC${e+1}Ready == 0) {\n                    xTexelC${e+1} = getX(batch, xR, xCOffset, d1);\n\n                    // Need to manually clear unused channels in case\n                    // we're reading from recycled texture.\n                    if (xCOffset + 1 >= inDims[1]) {\n                      xTexelC${e+1}.zw = vec2(0.0);\n                    }\n                    xTexelC${e+1}Ready = 1;\n                  }\n                  `,d+=l>1?`\n                    xCOffset -= 2;\n                    if (xCOffset >= 0 && xCOffset < inDims[1]) {\n                     previous = getX(batch, xR, xCOffset, d1);\n                     xC${e+1} = vec4(previous.zw, xTexelC${e+1}.xy);\n                    } else {\n                     xC${e+1} = vec4(0.0, 0.0, xTexelC${e+1}.xy);\n                    }\n                    `:`\n                    xC${e+1} = vec4(xTexelC${e}.zw, xTexelC${e+1}.xy);\n                    `):d+=1===t?`\n                    xC${e+1} = xTexelC${e};\n                    `:`\n                    xCOffset = xC + ${t};\n\n                    if (xCOffset >= 0 && xCOffset < inDims[1] && xTexelC${e+1}Ready == 0) {\n                      xTexelC${e+1} = getX(batch, xR, xCOffset, d1);\n                      if (xCOffset + 1 >= inDims[1]) {\n                        xTexelC${e+1}.zw = vec2(0.0);\n                      }\n                      xTexelC${e+1}Ready = 1;\n                    }\n\n                    xC${e+1} = xTexelC${e+1};\n                    `}}else e<p&&(i%2===1?(d+=`\n                xCOffset = xC + 1 - strides[1];\n                if(xCOffset >= 0 && xCOffset < inDims[1] && xTexelC${e}Ready == 0) {\n                  xTexelC${e} = getX(batch, xR, xCOffset, d1);\n                  // Need to manually clear unused channels in case\n                  // we're reading from recycled texture.\n                  if (xCOffset + 1 >= inDims[1]) {\n                    xTexelC${e}.zw = vec2(0.0);\n                  }\n                  xTexelC${e}Ready = 1;\n                }\n\n                if(xC + 1 >= 0 && xC + 1 < inDims[1] && xTexelC${e+1}Ready == 0) {\n                  xTexelC${e+1} = getX(batch, xR, xC + 1, d1);\n                  // Need to manually clear unused channels in case\n                  // we're reading from recycled texture.\n                  if (xC + 2 >= inDims[1]) {\n                    xTexelC${e+1}.zw = vec2(0.0);\n                  }\n                  xTexelC${e+1}Ready = 1;\n                }\n\n                xC${e} = vec4(xTexelC${e}.zw, xTexelC${e+1}.zw);\n              `,e+1<p&&(d+=`\n                  final = vec4(0.0);\n                  xCOffset = xC + 1 + strides[1];\n                  if(xCOffset >= 0 && xCOffset < inDims[1]) {\n                    final = getX(batch, xR, xCOffset, d1);\n                  }\n                  xC${e+1} = vec4(xTexelC${e+1}.xy, final.xy);\n                `)):(d+=`\n                if(xC >= 0 && xC < inDims[1] && xTexelC${e}Ready == 0) {\n                  xTexelC${e} = getX(batch, xR, xC, d1);\n                  if (xC + 1 >= inDims[1]) {\n                    xTexelC${e}.zw = vec2(0.0);\n                  }\n                  xTexelC${e}Ready = 1;\n                }\n\n                xCOffset = xC + strides[1];\n                if(xCOffset >= 0 && xCOffset < inDims[1] && xTexelC${e+1}Ready == 0) {\n                  xTexelC${e+1} = getX(batch, xR, xCOffset, d1);\n                  if (xCOffset + 1 >= inDims[1]) {\n                    xTexelC${e+1}.zw = vec2(0.);\n                  }\n                  xTexelC${e+1}Ready = 1;\n                }\n\n                xC${e} = vec4(\n                  xTexelC${e}.xy, xTexelC${e+1}.xy);\n              `,e+1<p&&(d+=`\n                  xC${e+1} = vec4(xTexelC${e}.zw, xTexelC${e+1}.zw);\n                `)));e<p&&(d+=`\n            wTexel = getW(r, ${e}, d1, q);\n            dotProd += xC${e} * vec4(wTexel.xz, wTexel.xz);\n          `,e+1<p&&(d+=`\n              wTexel = getW(r, ${e+1}, d1, q);\n              dotProd += xC${e+1} * vec4(wTexel.xz, wTexel.xz);\n            `))}d+="\n    }\n  ",d+="\n      }\n    ";let f="",m="";n&&(f=r?`vec4 activation(vec4 a) {\n          vec4 b = getPreluActivationWeightsAtOutCoords();\n          ${n}\n        }`:a?`vec4 activation(vec4 a) {\n          vec4 b = getLeakyreluAlphaAtOutCoords();\n          ${n}\n        }
1`:`vec4 activation(vec4 x) {\n          ${n}\n        }`,m="result = activation(result);");const g=t?"result += getBiasAtOutCoords();":"";t&&this.variableNames.push("bias"),r&&this.variableNames.push("preluActivationWeights"),a&&this.variableNames.push("leakyreluAlpha"),this.userCode=`\n      ${f}\n\n      void main() {\n        ivec4 coords = getOutputCoords();\n        int batch = coords.x;\n        ivec2 xRCCorner = coords.yz * strides - pads;\n        int d2 = coords.w;\n        int d1 = d2 / ${o};\n        int q = d2 - d1 * ${o};\n        int xRCorner = xRCCorner.x;\n        int xCCorner = xRCCorner.y;\n\n        //intialize dotProd with a small epsilon seems to reduce GPU accuracy loss.\n        vec4 dotProd = vec4(0.000000000000001);\n\n        ${d}\n\n        vec4 result = dotProd - vec4(0.000000000000001);\n        ${g}\n        ${m}\n        setOutput(result);\n      }\n    `}}const Sy={kernelName:s.cie,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a,filter:o}=t,{strides:i,pad:u,dilations:l,dimRoundingMode:c}=r;let p=l;null==p&&(p=[1,1]),s.D5U.assert(s.Wap.eitherStridesOrDilationsAreOne(i,p),(()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${i} and dilations '${p}'`));const h=s.Wap.computeConv2DInfo(a.shape,o.shape,i,p,u,c,!0);let d;d=(0,s.OBj)().getBool("WEBGL_PACK_DEPTHWISECONV")&&h.strideWidth<=2&&h.outChannels/h.inChannels===1?new Ny(h):new Iy(h);const f=[[h.padInfo.top,h.padInfo.left],[h.strideHeight,h.strideWidth],[h.dilationHeight,h.dilationWidth],[h.inHeight,h.inWidth]];return n.runWebGLProgram(d,[a,o],"float32",f)}};class Ty{constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;const t=e.strideHeight,n=e.strideWidth,r=e.padInfo.top,s=e.padInfo.left,a=e.outChannels/e.inChannels;this.userCode=`\n      void main() {\n        ivec4 coords = getOutputCoords();\n        int wR = coords.x;\n        int wC = coords.y;\n        int d1 = coords.z;\n        int dm = coords.w;\n        int d2 = d1 * ${a} + dm;\n\n        float dotProd = 0.0;\n\n        // TO DO: Vec4 over the batch size\n        for (int b = 0; b < ${e.batchSize}; b++) {\n          for (int yR = 0; yR < ${e.outHeight}; yR++) {\n            int xR = wR + yR * ${t} - ${r};\n\n            if (xR < 0 || xR >= ${e.inHeight}) {\n              continue;\n            }\n\n            for (int yC = 0; yC < ${e.outWidth}; yC++) {\n              int xC = wC + yC * ${n} - ${s};\n\n              if (xC < 0 || xC >= ${e.inWidth}) {\n                continue;\n              }\n\n              float dyValue = getDy(b, yR, yC, d2);\n              float xValue = getX(b, xR, xC, d1);\n              dotProd += (xValue * dyValue);\n            }\n          }\n        }\n        setOutput(dotProd);\n      }\n    `}}class Cy{constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;const t=e.filterHeight,n=e.filterWidth,r=e.strideHeight,s=e.strideWidth,a=t-1-e.padInfo.top,o=n-1-e.padInfo.left,i=e.outChannels/e.inChannels;this.userCode=`\n      const ivec2 pads = ivec2(${a}, ${o});\n\n      void main() {\n        ivec4 coords = getOutputCoords();\n        int batch = coords[0];\n        int d1 = coords[3];\n        ivec2 dyCorner = coords.yz - pads;\n        int dyRCorner = dyCorner.x;\n        int dyCCorner = dyCorner.y;\n\n        float dotProd = 0.0;\n\n        for (int wR = 0; wR < ${t}; wR++) {\n          float dyR = float(dyRCorner + wR) / ${r}.0;\n\n          if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || fract(dyR) > 0.0) {\n            continue;\n          }\n          int idyR = int(dyR);\n\n          int wRPerm = ${t} - 1 - wR;\n\n          for (int wC = 0; wC < ${n}; wC++) {\n            float dyC = float(dyCCorner + wC) / ${s}.0;\n\n            if (dyC < 0.0 || dyC >= ${e.outWidth}.0 ||\n                fract(dyC) > 0.0) {\n              continue;\n            }\n            int idyC = int(dyC);\n\n            int wCPerm = ${n} - 1 - wC;\n\n            // TO DO: Vec4 over the channelMul\n            for (int dm = 0; dm < ${i}; dm++) {\n              int d2 = d1 * ${i} + dm;\n              float xValue = getDy(batch, idyR, idyC, d2);\n              float wValue = getW(wRPerm, wCPerm, d1, dm);\n              dotProd += xValue * wValue;\n            }\n          }\n        }\n        setOutput(dotProd);\n      }\n    `}}const Ey={kernelName:s.sL$,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a,dy:o}=t,{strides:i,dilations:u,pad:l,dimRoundingMode:c,filterShape:p}=r,h=s.Wap.computeConv2DInfo(a.shape,p,i,u,l,c,!0),d=new Ty(h);return n.runWebGLProgram(d,[a,o],"float32")}};const $y={kernelName:s.y7R,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{dy:a,filter:o}=t,{strides:i,dilations:u,pad:l,dimRoundingMode:c,inputShape:p}=r,h=s.Wap.computeConv2DInfo(p,o.shape,i,u,l,c,!0),d=new Cy(h);return n.runWebGLProgram(d,[a,o],"float32")}};class Ay{constructor(e){this.variableNames=["X"],this.outputShape=[e,e],this.userCode="\n      void main() {\n          ivec2 coords = getOutputCoords();\n          float val = coords[0] == coords[1] ? getX(coords[0]) : 0.0;\n          setOutput(val);\n      }\n    "}}const Dy={kernelName:s.$w,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n}=e,{x:r}=t,a=[...r.shape,...r.shape],o=s.D5U.sizeFromShape(r.shape),i=pm({inputs:{x:r},backend:n,attrs:{shape:[o]}}),u=new Ay(o),l=n.runWebGLProgram(u,[i],i.dtype),c=pm({inputs:{x:l},backend:n,attrs:{shape:a}});return n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(l),c}};class _y{constructor(e){this.variableNames=["x","W"],this.outputShape=e.outShape;const{inHeight:t,inWidth:n,padInfo:r,strideHeight:s,strideWidth:a,filterHeight:o,filterWidth:i,dilationHeight:u,dilationWidth:l}=e,{top:c,left:p}=r;this.userCode=`\n      const ivec2 strides = ivec2(${s}, ${a});\n      const ivec2 pads = ivec2(${c}, ${p});\n      const float neg_infinity = -3.4e38;\n\n      void main() {\n        ivec4 coords = getOutputCoords();\n        int batch = coords.x;\n        int d1 = coords.w;\n        ivec2 outTopLeftCorner =\n            coords.yz * strides - pads;\n        int hBeg = outTopLeftCorner.x;\n        int wBeg = outTopLeftCorner.y;\n\n        float curVal = neg_infinity;\n        for (int h = 0; h < ${o}; h++) {\n          int hIn = hBeg + h * ${u};\n\n          if (hIn >= 0 && hIn < ${t}
1) {\n            for (int w = 0; w < ${i}; w++) {\n              int wIn = wBeg + w * ${l};\n\n              if (wIn >= 0 && wIn < ${n}) {\n                float xVal = getX(batch, hIn, wIn, d1);\n                float wVal = getW(h, w, d1);\n\n                float val = xVal + wVal;\n                if (val > curVal) {\n                  curVal = val;\n                }\n              }\n            }\n          }\n        }\n\n        float result = curVal;\n        setOutput(result);\n      }\n    `}}const Ry={kernelName:s.p4S,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a,filter:o}=t,{strides:i,pad:u,dilations:l}=r,c=s.Wap.computeDilation2DInfo(a.shape,o.shape,i,u,"NHWC",l);let p;const h=new _y(c);p=n.runWebGLProgram(h,[a,o],"float32");const d=pm({inputs:{x:p},backend:n,attrs:{shape:c.outShape}});return n.disposeIntermediateTensorInfo(p),d}};const Fy={kernelName:s.$g6,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{equation:a}=r,o=t,{allDims:i,summedDims:u,idDims:l}=s.Wap.decodeEinsumEquation(a,o.length);s.Wap.checkEinsumDimSizes(i.length,l,o);const{path:c,steps:p}=s.Wap.getEinsumComputePath(u,l),h=p.length;let d=null,f=i.length;const m=[];for(let g=0;g<h;++g){for(const e of p[g]){const{permutationIndices:t,expandDims:r}=s.Wap.getEinsumPermutation(f,l[e]);let a;s.Wap.isIdentityPermutation(t)?a=o[e]:(a=vm({inputs:{x:o[e]},backend:n,attrs:{perm:t}}),m.push(a));const i=a.shape.slice();for(let e=0;e<r.length;++e)i.splice(r[e],0,1);s.D5U.arraysEqual(a.shape,i)||(a=pm({inputs:{x:a},backend:n,attrs:{shape:i}}),m.push(a)),null===d?d=a:(d=lm({inputs:{a:a,b:d},backend:n}),m.push(d))}g<h-1&&(c[g]>=0&&(d=xm({inputs:{x:d},backend:n,attrs:{axis:c[g]-(i.length-f),keepDims:!1}}),m.push(d)),f--)}for(const s of m)s!==d&&n.disposeIntermediateTensorInfo(s);return d}},Oy=tm({opSnippet:"return (x >= 0.0) ? x : (exp(x) - 1.0);",packedOpSnippet:"\n  vec4 result;\n\n  result.r = (x.r >= 0.0) ? x.r : (exp(x.r) - 1.0);\n  result.g = (x.g >= 0.0) ? x.g : (exp(x.g) - 1.0);\n  result.b = (x.b >= 0.0) ? x.b : (exp(x.b) - 1.0);\n  result.a = (x.a >= 0.0) ? x.a : (exp(x.a) - 1.0);\n\n  return result;\n"}),My={kernelName:s.SX0,backendName:"webgl",kernelFunc:Oy},By={kernelName:s.HEU,backendName:"webgl",kernelFunc:e=>{const{inputs:t,backend:n}=e,{dy:r,y:a}=t,o=(0,s.OBj)().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Gf("\n  vec4 bGTEZero = vec4(greaterThanEqual(b, vec4(0.)));
1\n  return (bGTEZero * a) + ((vec4(1.0) - bGTEZero) * (a * (b + vec4(1.0))));\n",r.shape,a.shape):new Vf("return (b >= 1.0) ? a : a * (b + 1.0);",r.shape,a.shape);return n.runWebGLProgram(o,[r,a],r.dtype)}},Ly=nm({opSnippet:"return float(a == b);",packedOpSnippet:"\n  return vec4(equal(a, b));\n",dtype:"bool",cpuKernelImpl:Wd}),Wy={kernelName:s.hdR,backendName:"webgl",kernelFunc:Ly},Py=tm({opSnippet:`\n  // Error function is calculated approximately with elementary function.\n  // See "Handbook of Mathematical Functions with Formulas,\n  // Graphs, and Mathematical Tables", Abramowitz and Stegun.\n  float p = ${s.Wap.ERF_P};\n  float a1 = ${s.Wap.ERF_A1};\n  float a2 = ${s.Wap.ERF_A2};\n  float a3 = ${s.Wap.ERF_A3};\n  float a4 = ${s.Wap.ERF_A4};\n  float a5 = ${s.Wap.ERF_A5};\n\n  float sign = sign(x);\n  x = abs(x);\n  float t = 1.0 / (1.0 + p * x);\n  return sign * (1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*exp(-x*x));\n`}),Uy={kernelName:s.Omj,backendName:"webgl",kernelFunc:Py},zy=tm({opSnippet:"if (isnan(x)) return x;\n  return exp(x);\n",packedOpSnippet:"\n  vec4 result = exp(x);\n  bvec4 isNaN = isnan(x);\n  result.r = isNaN.r ? x.r : result.r;\n  result.g = isNaN.g ? x.g : result.g;\n  result.b = isNaN.b ? x.b : result.b;\n  result.a = isNaN.a ? x.a : result.a;\n\n  return result;\n",cpuKernelImpl:Pd,dtype:"float32"}),Vy={kernelName:s.NEP,backendName:"webgl",kernelFunc:zy};function Gy(e){const{inputs:t,attrs:n,backend:r}=e,{dim:a}=n,{input:o}=t,i=o.shape.length,u=o.shape.slice();let l=a;return a<0&&(s.D5U.assert(-(i+1)<=a,(()=>`Axis must be in the interval [${-(i+1)}, ${i}]`)),l=i+a+1),u.splice(l,0,1),pm({inputs:{x:o},backend:r,attrs:{shape:u}})}const Hy={kernelName:s.YFo,backendName:"webgl",kernelFunc:Gy},jy="return exp(x) - 1.0;",Xy=tm({opSnippet:jy,packedOpSnippet:jy,cpuKernelImpl:Ud}),qy={kernelName:s.Y0y,backendName:"webgl",kernelFunc:Xy};class Ky{constructor(e,t,n){this.variableNames=["real","imag"];const r=t[1];this.outputShape=t;const s=n?`2.0 * ${Math.PI}`:`-2.0 * ${Math.PI}`,a=n?`${r}.0`:"1.0";let o;if("real"===e)o="return real * expR - imag * expI;";else{if("imag"!==e)throw new Error(`FFT component must be either "real" or "imag", got ${e}.`);o="return real * expI + imag * expR;"}this.userCode=`\n      const float exponentMultiplier = ${s};\n\n      float unaryOpComplex(float real, float expR, float imag, float expI) {\n        ${o}\n      }\n\n      float mulMatDFT(int batch, int index) {\n        float indexRatio = float(index) / float(${r});\n        float exponentMultiplierTimesIndexRatio =\n            exponentMultiplier * indexRatio;\n\n        float result = 0.0;\n\n        for (int i = 0; i < ${r}; i++) {\n          // x = (-2|2 * PI / N) * index * i;\n          float x = exponentMultiplierTimesIndexRatio * float(i);\n          float expR = cos(x);\n          float expI = sin(x);\n          float real = getReal(batch, i);\n          float imag = getImag(batch, i);\n\n          result +=\n              unaryOpComplex(real, expR, imag, expI) / ${a};\n        }\n\n        return result;\n      }\n\n      void main() {\n        ivec2 coords = getOutputCoords();\n        setOutput(mulMatDFT(coords[0], coords[1]));\n      }\n    `}}function Qy(e,t,n){const r=n.texData.get(e.dataId),a=s.D5U.sizeFromShape(e.shape),o=e.shape[e.shape.length-1],i=pm({inputs:{x:e},backend:n,attrs:{shape:[a/o,o]}}),u=i.shape,l=new Ky("real",u,t),c=new Ky("imag",u,t),p=[{dataId:r.complexTensorInfos.real.dataId,dtype:r.complexTensorInfos.real.dtype,shape:u},{dataId:r.complexTensorInfos.imag.dataId,dtype:r.complexTensorInfos.imag.dtype,shape:u}],h=n.runWebGLProgram(l,p,"float32"),d=n.runWebGLProgram(c,p,"float32"),f=Xf({inputs:{real:h,imag:d},backend:n});n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(d);const m=pm({inputs:{x:f},backend:n,attrs:{shape:e.shape}});return n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(f),m}const Yy={kernelName:s.vwp,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n}=e,{input:r}=t;return Qy(r,!1,n)}};class Zy{constructor(e,t){this.outputShape=[],this.customUniforms=[{name:"value",type:"float"}],this.variableNames=["x"],this.outputShape=e,this.userCode="\n      void main() {\n        // In
1put can be obtained from uniform value.\n        setOutput(value);\n      }\n    "}}function Jy(e){const{backend:t,attrs:n}=e,{shape:r,value:a}=n;let{dtype:o}=n;if(o=o||s.D5U.inferDtype(a),"string"===o){const e=s.D5U.getArrayFromDType(o,s.D5U.sizeFromShape(r));return e.fill(a),t.makeTensorInfo(r,o,e)}{const e=new Zy(r,a),n=[[a]];return t.runWebGLProgram(e,[],o,n)}}const eb={kernelName:s.deh,backendName:"webgl",kernelFunc:Jy};class tb{constructor(e){this.variableNames=["Image"],this.outputShape=[];const t=e[2];this.outputShape=e,this.userCode=`\n        void main() {\n          ivec4 coords = getOutputCoords();\n          int x = coords[2];\n\n          int coordX = ${t} - x - 1;\n          float outputValue;\n          if(coordX >= 0 && coordX < ${t}) {\n            outputValue = getImage(coords[0], coords[1], coordX, coords[3]);\n          } else {\n            outputValue = getImage(coords[0], coords[1], coords[2], coords[3]);\n          }\n          setOutput(outputValue);\n        }\n    `}}const nb={kernelName:s.Uyb,backendName:"webgl",kernelFunc:({inputs:e,backend:t})=>{const{image:n}=e,r=t,s=new tb(n.shape);return r.runWebGLProgram(s,[n],n.dtype)}},rb="return floor(x);",sb=tm({opSnippet:rb,packedOpSnippet:rb,cpuKernelImpl:zd}),ab={kernelName:s.OR,backendName:"webgl",kernelFunc:sb},ob=nm({opSnippet:"\n  float s = sign(a) * sign(b);\n  int ia = round(a);\n  int ib = round(b);\n  if (ib != 0) {\n    // Windows (D3D) wants guaranteed non-zero int division at compile-time.\n    return float(idiv(ia, ib, s));\n  } else {\n    return NAN;\n  }\n",packedOpSnippet:"\n  ivec4 ia = round(a);\n  ivec4 ib = round(b);\n  bvec4 cond = notEqual(ib, ivec4(0));\n  ivec4 result = ivec4(0);\n  vec4 s = sign(a) * sign(b);\n\n  // Windows (D3D) wants guaranteed non-zero int division at compile-time.\n  if (cond[0]) {\n    result[0] = idiv(ia[0], ib[0], s[0]);\n  }\n  if (cond[1]) {\n    result[1] = idiv(ia[1], ib[1], s[1]);\n  }\n  if (cond[2]) {\n    result[2] = idiv(ia[2], ib[2], s[2]);\n  }\n  if (cond[3]) {\n    result[3] = idiv(ia[3], ib[3], s[3]);\n  }\n  return vec4(result);\n",dtype:"int32"}),ib={kernelName:s.jeX,backendName:"webgl",kernelFunc:ob};class ub{constructor(e){this.variableNames=["A"];const t=(0,ld.A)(),[n,r]=e;this.outputShape=e,this.userCode=`\n      void main() {\n        ivec3 coords = getOutputCoords();\n        int texR = coords[0];\n        int texC = coords[1];\n        int depth = coords[2];\n        vec2 uv = (vec2(texC, texR) + halfCR) / vec2(${r}.0, ${n}.0);\n\n        vec4 values = ${t.texture2D}(A, uv);\n        float value;\n        if (depth == 0) {\n          value = values.r;\n        } else if (depth == 1) {\n          value = values.g;\n        } else if (depth == 2) {\n          value = values.b;\n        } else if (depth == 3) {\n          value = values.a;\n        }\n\n        setOutput(floor(value * 255.0 + 0.5));\n      }\n    `}}class lb{constructor(e){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;const t=(0,ld.A)(),[n,r]=e;this.outputShape=e,this.userCode=`\n      void main() {\n        ivec3 coords = getOutputCoords();\n        int texR = coords[0];\n        int texC = coords[1];\n        int depth = coords[2];\n\n        vec4 result = vec4(0.);\n\n        for(int row=0; row<=1; row++) {\n          for(int col=0; col<=1; col++) {\n            texC = coords[1] + row;\n            depth = coords[2] + col;\n\n            vec2 uv = (vec2(texC, texR) + halfCR) /\n                       vec2(${r}.0, ${n}.0);\n            vec4 values = ${t.texture2D}(A, uv);\n            float value;\n            if (depth == 0) {\n              value = values.r;\n            } else if (depth == 1) {\n              value = values.g;\n            } else if (depth == 2) {\n              value = values.b;\n            } else if (depth == 3) {\n              value = values.a;\n            }\n\n            result[row * 2 + col] = floor(value * 255.0 + 0.5);\n          }\n        }\n\n        ${t.output} = result;\n      }\n    `}}const cb={kernelName:s.eBW,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e;let{pixels:a}=t;const{numChannels:o}=r,i="undefined"!==typeof HTMLVideoElement&&a instanceof HTMLVideoElement,u="undefined"!==typeof HTMLImageElement&&a instanceof HTMLImageElement,[l,c]=i?[a.videoWidth,a.videoHeight]:[a.width,a.height],p=[c,l],h=[c,l,o];if(u||i){const e=(0,s.OBj)().getBool("CANVAS2D_WILL_READ_FREQUENTLY_FOR_GPU");null!=pb&&e===hb||(hb=e,pb=document.createElement("canvas").getContext("2d",{willReadFrequently:hb})),pb.canvas.width=l,pb.canvas.height=c,pb.drawImage(a,0,0,l,c),a=pb.canvas}const d=n.makeTensorInfo(p,"int32");n.texData.get(d.dataId).usage=Dh.PIXELS,n.gpgpu.uploadPixelDataToTexture(n.getTexture(d.dataId),a);const f=(0,s.OBj)().getBool("WEBGL_PACK")?new lb(h):new ub(h),m=n.runWebGLProgram(f,[d],"int32");return n.disposeData(d.dataId),m}};let pb,hb=(0,s.OBj)().getBool("CANVAS2D_WILL_READ_FREQUENTLY_FOR_GPU");const db={kernelName:s._V0,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}
vendor: 10,721 bytes, line 1
1=e,{x:a,filter:o,bias:i,preluActivationWeights:u}=t,{strides:l,pad:c,dataFormat:p,dilations:h,dimRoundingMode:d,activation:f,leakyreluAlpha:m}=r,g=s.Wap.convertConv2DDataFormat(p),y=s.Wap.computeConv2DInfo(a.shape,o.shape,l,h,c,d,!1,g);let b;const x=[],w=null!=i,v=null!=u,k="leakyrelu"===f,I=()=>{const e=[a,o],t=(e,t)=>{if("NCHW"===t&&1===e.shape.length&&1!==e.shape[0]){const t=pm({inputs:{x:e},backend:n,attrs:{shape:[e.shape[0],1,1]}});return x.push(t),t}return e};if(w&&e.push(t(i,p)),v&&e.push(t(u,p)),k){const t=n.makeTensorInfo([],"float32",s.D5U.createScalarValue(m,"float32"));e.push(t),x.push(t)}return e};if(1!==y.filterHeight||1!==y.filterWidth||1!==y.dilationHeight||1!==y.dilationWidth||1!==y.strideHeight||1!==y.strideWidth||"SAME"!==y.padInfo.type&&"VALID"!==y.padInfo.type)if(y.strideWidth<=2&&"channelsLast"===g&&(0,s.OBj)().getBool("WEBGL_EXP_CONV")){const e=f?rm(f,!0):null,t=new jg(y,w,e,v,k),r=[[y.padInfo.top,y.padInfo.left],[y.strideHeight,y.strideWidth],[y.dilationHeight,y.dilationWidth],[y.inHeight,y.inWidth]],s=I();b=n.runWebGLProgram(t,s,"float32",r)}else if((0,s.OBj)().getBool("WEBGL_CONV_IM2COL"))b=Qg({x:a,filter:o,convInfo:y,backend:n,bias:i,activation:f,preluActivationWeights:u,leakyreluAlpha:m});else{const e=f?rm(f,!1):null,t=new Gg(y,w,e,v,k),r=I();b=n.runWebGLProgram(t,r,"float32")}else b=Kg({x:a,filter:o,convInfo:y,backend:n,bias:i,activation:f,preluActivationWeights:u,leakyreluAlpha:m});const N=pm({inputs:{x:b},backend:n,attrs:{shape:y.outShape}});return x.push(b),x.forEach((e=>n.disposeIntermediateTensorInfo(e))),N}};const fb={kernelName:s.luS,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a,filter:o,bias:i,preluActivationWeights:u}=t,{strides:l,pad:c,dilations:p,dimRoundingMode:h,activation:d,leakyreluAlpha:f}=r,m=[];let g=p;null==g&&(g=[1,1]),s.D5U.assert(s.Wap.eitherStridesOrDilationsAreOne(l,g),(()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${l} and dilations '${g}'`));const y=s.Wap.computeConv2DInfo(a.shape,o.shape,l,g,c,h,!0),b=(0,s.OBj)().getBool("WEBGL_PACK_DEPTHWISECONV")&&y.strideWidth<=2&&y.outChannels/y.inChannels===1,x=d?rm(d,b):null,w=[a,o],v=null!=i,k=null!=u,I="leakyrelu"===d;if(v&&w.push(i),k&&w.push(u),I){const e=n.makeTensorInfo([],"float32",s.D5U.createScalarValue(f,"float32"));w.push(e),m.push(e)}let N;N=b?new Ny(y,v,x,k,I):new Iy(y,v,x,k,I);const S=[[y.padInfo.top,y.padInfo.left],[y.strideHeight,y.strideWidth],[y.dilationHeight,y.dilationWidth],[y.inHeight,y.inWidth]],T=n.runWebGLProgram(N,w,"float32",S);return m.forEach((e=>n.disposeIntermediateTensorInfo(e))),T}};class mb{constructor(e,t,n,r){this.sliceDim=e,this.strides=t,this.paramsShape=r,this.variableNames=["x","indices"],this.outputShape=n;const s=(0,cd.kW)(n.length);let a="\n    int index;";for(let o=0;o<this.sliceDim;o++)a+=`\n          index = round(getIndices(coords[0], ${o}));\n          out_of_bounds = out_of_bounds || index < 0;\n          out_of_bounds = out_of_bounds || index >= ${this.paramsShape[o]};\n          flattenIndex += index * ${this.strides[o]};`;this.userCode=`\n         void main() {\n          ${s} coords = getOutputCoords();\n          int flattenIndex = 0;\n          bool out_of_bounds = false;\n\n          ${a}\n\n          setOutput(out_of_bounds ? 0.0 : getX(flattenIndex, coords[1]));\n        }\n      `}}const gb={kernelName:s.q1x,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n}=e,{params:r,indices:a}=t,o=a.shape,i=o[o.length-1],u=s.D5U.sizeFromShape(r.shape),[l,c,p,h]=s.Wap.prepareAndValidate(r,a),d=pm({inputs:{x:a},backend:n,attrs:{shape:[c,i]}}),f=pm({inputs:{x:r},backend:n,attrs:{shape:[s.D5U.sizeFromShape(r.shape)/p,p]}});if(n.shouldExecuteOnCPU([r,a])||"string"===r.dtype){const e=n.readSync(a.dataId),t=n.bufferSync(r),s=Vd(e,t,r.dtype,c,i,p,h,r.shape,u);return n.makeTensorInfo(l,r.dtype,s.values)}const m=new mb(i,h,[c,p],r.shape),g=n.runWebGLProgram(m,[f,d],f.dtype),y=pm({inputs:{x:g},backend:n,attrs:{shape:l}});return n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(f),n.disposeIntermediateTensorInfo(g),y}};class yb{constructor(e,t){this.variableNames=["A","indices"],this.outputShape=t,this.rank=t.length;const n=(0,cd.kW)(this.rank),r=function(e,t){const n=["resRC.x","resRC.y","resRC.z","resRC.w"],r=[];for(let s=0;s<e.length;s++)2===s?r.push("index"):r.push(`${n[s]}`);return r.join()}(e);this.userCode=`\n      void main() {\n        ${n} resRC = getOutputCoords();\n        int index = int(getIndices(resRC.x, resRC.z));\n        float inBounds = (index >= 0) && (index < ${e[2]}) ? 1.0 : 0.0;\n        setOutput(inBounds * getA(${r}));\n      }\n    `}}function bb(e){const{inputs:t,backend:n,attrs:r}=e,{x:a,indices:o}=t,{axis:i,batchDims:u}=r,l=s.D5U.parseAxisParam(i,a.shape)[0];if((0,s.OBj)().get("DEBUG")){const e=n.readSync(o.dataId),t=a.shape[l];for(let n=0;n<e.length;++n){const r=e[n];s.D5U.assert(r<=t-1&&r>=0,(()=>`GatherV2: the index value ${r} is not in [0, ${t-1}]`))}}const c=s.Wap.segment_util.collectGatherOpShapeInfo(a,o,l,u),p=s.D5U.sizeFromShape(o.shape),h=[],d=pm({inputs:{x:a},backend:n,attrs:{shape:[c.batchSize,c.outerSize,c.dimSize,c.sliceSize]}}),f=pm({inputs:{x:o},backend:n,attrs:{shape:[c.batchSize,p/c.batchSize]}});h.push(d),h.push(f);const m=[c.batchSize,c.outerSize,p/c.batchSize,c.sliceSize];if(n.shouldExecuteOnCPU([a,o])||"string"===a.dtype){const e=n.bufferSync(f),t=n.bufferSync(d),r=Gd(t,e,m);return h.forEach((e=>n.disposeIntermediateTensorInfo(e))),n.makeTensorInfo(c.outputShape,r.dtype,r.values)}const g=new yb(d.shape,m),y=n.runWebGLProgram(g,[d,f],d.dtype);h.push(y);const b=pm({inputs:{x:y},backend:n,attrs:{shape:c.outputShape}});return h.forEach((e=>n.disposeIntermediateTensorInfo(e))),b}const xb={kernelName:s.qi_,backendName:"webgl",kernelFunc:bb},wb=nm({opSnippet:"return float(a > b);",packedOpSnippet:"\n  return vec4(greaterThan(a, b));\n",cpuKernelImpl:Hd,dtype:"bool"}),vb={kernelName:s.iZT,backendName:"webgl",kernelFunc:wb},kb=nm({opSnippet:"return float(a >= b);",packedOpSnippet:"\n  return vec4(greaterThanEqual(a, b));\n",dtype:"bool",cpuKernelImpl:jd}),Ib={kernelName:s.Acj,backendName:"webgl",kernelFunc:kb};const Nb={kernelName:s.Qg5,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n}=e,{input:r}=t;return Qy(r,!0,n)}},Sb=tm({opSnippet:"return float(!isnan(x) && !isinf(x));",dtype:"bool"}),Tb={kernelName:s.avt,backendName:"webgl",kernelFunc:Sb},Cb=tm({opSnippet:"return float(isinf(x));",dtype:"bool"}),Eb={kernelName:s.iWB,backendName:"webgl",kernelFunc:Cb},$b=tm({opSnippet:"return float(isnan(x));",dtype:"bool"}),Ab={kernelName:s.r7n,backendName:"webgl",kernelFunc:$b},Db=nm({opSnippet:"return float(a < b);",packedOpSnippet:"\n  return vec4(lessThan(a, b));\n",cpuKernelImpl:Xd,dtype:"bool"}),_b={kernelName:s.vtC,backendName:"webgl",kernelFunc:Db},Rb=nm({opSnippet:"return float(a <= b);",packedOpSnippet:"\n  return vec4(lessThanEqual(a, b));\n",cpuKernelImpl:qd,dtype:"bool"}),Fb={kernelName:s.CAk,backendName:"webgl",kernelFunc:Rb};const Ob={kernelName:s.e7N,backendName:"webgl",kernelFunc:function(e){const{backend:t,attrs:n}=e,{start:r,stop:s,num:a}=n,o=Kd(r,s,a);return t.makeTensorInfo([o.length],"float32",o)}},Mb=tm({opSnippet:"if (isnan(x)) return x;\n  return x < 0.0 ? 0./0. : log(x);\n",packedOpSnippet:"\n  vec4 result = log(x);\n  bvec4 isNaN = isnan(x);\n  result.r = isNaN.r ? x.r : (x.r < 0.0 ? 0./0. : result.r);\n  result.g = isNaN.g ? x.g : (x.g < 0.0 ? 0./0. : result.g);\n  result.b = isNaN.b ? x.b : (x.b < 0.0 ? 0./0. : result.b);\n  result.a = isNaN.a ? x.a : (x.a < 0.0 ? 0./0. : result.a);\n  return result;\n",cpuKernelImpl:Qd}),Bb={kernelName:s.ZbH,backendName:"webgl",kernelFunc:Mb},Lb=tm({opSnippet:"if (isnan(x)) return x;\n  return log(1.0 + x);\n"}),Wb={kernelName:s.kU,backendName:"webgl",kernelFunc:Lb},Pb=nm({opSnippet:"return float(a >= 1.0 && b >= 1.0);",packedOpSnippet:"\n  return vec4(\n    vec4(greaterThanEqual(a, vec4(1.0))) *\n    vec4(greaterThanEqual(b, vec4(1.0))));\n",dtype:"bool"}),Ub={kernelName:s.PYm,backendName:"webgl",kernelFunc:Pb},zb=tm({opSnippet:"return float(!(x >= 1.0));"}),Vb={kernelName:s.VfG,backendName:"webgl",kernelFunc:zb},Gb=nm({opSnippet:"return float(a >= 1.0 || b >= 1.0);",packedOpSnippet:"\n  return min(\n    vec4(greaterThanEqual(a, vec4(1.0))) +\n    vec4(greaterThanEqual(b, vec4(1.0))),\n    vec4(1.0));\n",dtype:"bool"}),Hb={kernelName:s.MZg,backendName:"webgl",kernelFunc:Gb};class jb{constructor(e,t,n,r,s){this.variableNames=["x"],this.outputShape=[];const a=t,o=e[3]-1;let i;this.outputShape=e;const u=`float(${n}) + float(${r}) * sum`;i=.5===s?`inversesqrt(${u})`:1===s?`1.0/(${u})`:`exp(log(${u}) * float(-${s}));`,this.userCode=`\n      void main() {\n        ivec4 coords = getOutputCoords();\n        int b = coords[0];\n        int r = coords[1];\n        int c = coords[2];\n        int d = coords[3];\n        float x = getX(b, r, c, d);\n        float sum = 0.0;\n        for (int j = -${a}; j <= ${a}; j++) {\n          int idx = d + j;\n          if (idx >= 0 && idx <=  ${o}) {\n            float z = getX(b, r, c, idx);\n            sum += z * z;\n          }\n        }\n        float val = x * ${i};\n        setOutput(val);\n      }\n    `}}class Xb{constructor(e,t,n,r,s){this.variableNames=["x"],this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0;const a=t,o=e[3]-1;let i;this.outputShape=e;const u=`float(${n}) + float(${r}) * sum`;i=.5===s?`inversesqrt(${u})`:1===s?`1.0/(${u})`:`exp(log(${u}) * float(-${s}));`,this.userCode=`\n      void main() {\n        ivec4 coords = getOutputCoords();\n        int b = coords.x;\n        int r = coords.y;\n        int c = coords.z;\n        int d = coords.w;\n\n        bool hasNextCol = d < ${this.outputShape[3]};\n        bool hasNextRow = c < ${this.outputShape[2]};\n\n        vec4 sum = vec4(0.);\n        vec4 xFragAtOutputCoords = getX(b, r, c, d);\n\n        vec4 xAtOutputCoords = vec4(\n          getChannel(xFragAtOutputCoords, vec2(c, d)),\n          hasNextCol ?\n            getChannel(xFragAtOutputCoords, vec2(c, d + 1)) : 0.0,\n          hasNextRow ?\n            getChannel(xFragAtOutputCoords , vec2(c + 1, d)) : 0.0,\n          (hasNextRow && hasNextCol) ?\n            getChannel(xFragAtOutputCoords, vec2(c + 1, d + 1)) : 0.0\n        );\n\n        int firstChannel = d - ${a};\n        vec2 cache = vec2(0.);\n        if(firstChannel >= 0){\n          vec4 firstChannelFrag = getX(b, r, c, firstChannel);\n          cache.x = getChannel(firstChannelFrag, vec2(c, firstChannel));\n            if(hasNextRow){\n              cache.y = getChannel(firstChannelFrag, vec2(c + 1, firstChannel));\n            }\n        }
1\n\n        ivec2 depth = ivec2(d, d + 1);\n        for (int j = - ${a}; j <= ${a}; j++) {\n          ivec2 idx = depth + j;\n          bvec2 aboveLowerBound = greaterThanEqual(idx, ivec2(0));\n          bvec2 belowUpperBound = lessThanEqual(idx, ivec2(${o}));\n\n          bool depthInRange = aboveLowerBound.x && belowUpperBound.x;\n          bool depthPlusOneInRange = aboveLowerBound.y && belowUpperBound.y;\n\n          if(depthInRange || depthPlusOneInRange){\n            vec4 z = vec4(0.);\n            vec4 xFragAtCurrentDepth;\n            z.xz = cache.xy;\n            if(depthPlusOneInRange && hasNextCol){\n              xFragAtCurrentDepth = idx.y != d ?\n                getX(b, r, c, idx.y) : xFragAtOutputCoords;\n              z.y = getChannel(xFragAtCurrentDepth, vec2(c, idx.y));\n              if(hasNextRow){\n                z.w = getChannel(xFragAtCurrentDepth, vec2(c + 1, idx.y));\n              }\n            }\n            cache.xy = z.yw;\n            sum += z * z;\n          }\n        }\n        vec4 result = xAtOutputCoords * ${i};\n        setOutput(result);\n      }\n    `}}const qb={kernelName:s.eZ0,backendName:"webgl",kernelFunc:e=>{const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{depthRadius:o,bias:i,alpha:u,beta:l}=r,c=(0,s.OBj)().getBool("WEBGL_PACK_NORMALIZATION")?new Xb(a.shape,o,i,u,l):new jb(a.shape,o,i,u,l);return n.runWebGLProgram(c,[a],a.dtype)}};class Kb{constructor(e,t,n,r,s){this.variableNames=["inputImage","outputImage","dy"],this.outputShape=[],this.outputShape=e,this.depth=e[3],this.depthRadius=t,this.bias=n,this.alpha=r,this.beta=s,this.userCode=`\n      void main() {\n        ivec4 coords = getOutputCoords();\n        int b = coords[0];\n        int r = coords[1];\n        int c = coords[2];\n\n        float result = 0.0;\n        for (int d = 0; d < ${this.depth}; ++d) {\n          int depthBegin = int(max(0.0, float(d - ${t})));\n          int depthEnd = int(min(float(${this.depth}),\n              float(d + ${t} + 1)));\n\n          const int MIN_DEPTH_BEGIN = 0;\n          const int MAX_DEPTH_END = ${this.depth};\n\n          float norm = 0.0;\n          for (int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k) {\n            if (k < depthBegin){\n              continue;\n            }\n            else if (k >= depthBegin && k < depthEnd) {\n              norm += getInputImage(b, r, c, k) * getInputImage(b, r, c, k);\n            }\n            else {\n              break;\n            }\n          }\n\n          norm = float(${r}) * norm + float(${n});\n\n          for(int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k){\n            if (k < depthBegin){\n              continue;\n            }\n            else if (k >= depthBegin && k < depthEnd){\n              float dyi = -2.0 * float(${r})\n                * float(${s})\n                * getInputImage(b ,r ,c, k) * getOutputImage(b, r, c, d)\n                / norm;\n              if (k == d) {\n                dyi += pow(norm, -1.0 * ${s});\n              }\n              if (k == coords[3]) {\n                dyi *= getDy(b, r, c, d);\n                result += dyi;\n              }\n            }\n            else {\n              break;\n            }\n          }\n      }\n      setOutput(result);\n      }\n    `}}const Qb={kernelName:s.Hhh,backendName:"webgl",kernelFunc:e=>{const{inputs:t,backend:n,attrs:r}=e,{x:s,y:a,dy:o}=t,{depthRadius:i,bias:u,alpha:l,beta:c}=r,p=new Kb(s.shape,i,u,l,c);return n.runWebGLProgram(p,[s,a,o],s.dtype)}};function Yb(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{reductionIndices:o,keepDims:i}=r,u=a.shape.length,l=s.D5U.parseAxisParam(o,a.shape);let c=l;const p=s.Wap.getAxesPermutation(c,u),h=null!=p,d=n.shouldExecuteOnCPU([a]);let f=a;if(h){if(d){const e=n.texData.get(f.dataId).values,t=new Array(u);for(let n=0;n<t.length;n++)t[n]=a.shape[p[n]];const r=Nf(e,a.shape,a.dtype,p,t);f=n.makeTensorInfo(t,a.dtype);n.texData.get(f.dataId).values=r}else f=bm(a,p,n);c=s.Wap.getInnerMostAxes(c.length,u)}s.Wap.assertAxesAreInnerMostDims("max",c,u);const[m,g]=s.Wap.computeOutAndReduceShapes(f.shape,c);let y,b=m;if(i&&(b=s.Wap.expandShapeToKeepDim(m,l)),d){const e=n.texData.get(f.dataId).values,t=Yd(e,s.D5U.sizeFromShape(g),b,a.dtype);y=n.makeTensorInfo(b,a.dtype);n.texData.get(y.dataId).values=t}else y=function(e,t,n,r){const a=s.D5U.sizeFromShape(t),o=pm({inputs:{x:e},attrs:{shape:[s.D5U.sizeFromShape(e.shape)/a,a]},backend:r}),i=mm(o,e.dtype,"max",r),u=pm({inputs:{x:i},attrs:{shape:n},backend:r});return r.disposeIntermediateTensorInfo(o),r.disposeIntermediateTensorInfo(i),u}(f,g,b,n);return h&&n.disposeIntermediateTensorInfo(f),y}const Zb={kernelName:s.YoZ,backendName:"webgl",kernelFunc:Yb},Jb=nm({opSnippet:"\n  if (isnan(a)) return a;\n  if (isnan(b)) return b;\n\n  return max(a, b);\n",packedOpSnippet:"\n  vec4 result = vec4(max(a, b));\n  bvec4 isNaNA = isnan(a);\n  bvec4 isNaNB = isnan(b);\n  bvec4 isNaN = bvec4(isNaNA.x || isNaNB.x, isNaNA.y || isNaNB.y, isNaNA.z || isNaNB.z, isNaNA.w || isNaNB.w);
1\n  \n  result.r = isNaN.r ? NAN : result.r;\n  result.g = isNaN.g ? NAN : result.g;\n  result.b = isNaN.b ? NAN : result.b;\n  result.a = isNaN.a ? NAN : result.a;\n\n  return result;\n",cpuKernelImpl:Zd}),ex={kernelName:s.BMI,backendName:"webgl",kernelFunc:Jb};const tx={kernelName:s.mTV,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t;id(a,"maxPool");const{filterSize:o,strides:i,pad:u,dimRoundingMode:l}=r;s.D5U.assert(s.Wap.eitherStridesOrDilationsAreOne(i,1),(()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${i} and dilations '1'`));const c=s.Wap.computePool2DInfo(a.shape,o,i,1,u,l);if(1===c.filterWidth&&1===c.filterHeight&&s.D5U.arraysEqual(c.inShape,c.outShape))return Hf({inputs:{x:a},backend:n});const p=new ng(c,"max",!1);return n.runWebGLProgram(p,[a],a.dtype)}};const nx={kernelName:s.OAf,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{filterSize:o,strides:i,pad:u,dataFormat:l,dimRoundingMode:c}=r,p=s.Wap.computePool3DInfo(a.shape,o,i,[1,1,1],u,c,l),h=new rg(p,"max",!1);return n.runWebGLProgram(h,[a],a.dtype)}};class rx{constructor(e){this.variableNames=["dy","maxPos"],this.outputShape=e.inShape;const t=e.strideHeight,n=e.strideWidth,r=e.dilationHeight,s=e.effectiveFilterHeight,a=e.effectiveFilterWidth,o=s-1-e.padInfo.top,i=a-1-e.padInfo.left,u=s*a-1;this.userCode=`\n      const ivec2 pads = ivec2(${o}, ${i});\n\n      void main() {\n        ivec4 coords = getOutputCoords();\n        int b = coords[0];\n        int d = coords[3];\n\n        ivec2 dyRCCorner = coords.yz - pads;\n        int dyRCorner = dyRCCorner.x;\n        int dyCCorner = dyRCCorner.y;\n\n        // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).\n        // ? = to be determined. : = across all values in that axis.\n        float dotProd = 0.0;\n        for (int wR = 0; wR < ${s};\n          wR += ${r}) {\n          float dyR = float(dyRCorner + wR) / ${t}.0;\n\n          if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || fract(dyR) > 0.0) {\n            continue;\n          }\n          int idyR = int(dyR);\n\n          for (int wC = 0; wC < ${a}; wC++) {\n            float dyC = float(dyCCorner + wC) / ${n}.0;\n\n            if (dyC < 0.0 || dyC >= ${e.outWidth}.0 ||\n                fract(dyC) > 0.0) {\n              continue;\n            }\n            int idyC = int(dyC);\n\n            float dyValue = getDy(b, idyR, idyC, d);\n            int maxPosValue = ${u} - int(getMaxPos(b, idyR, idyC, d));\n\n            // Get the current value, check it against the value from the\n            // position matrix.\n            int curPosValue = wR * ${a} + wC;\n            float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0);\n\n            dotProd += dyValue * mask;\n          }\n        }\n        setOutput(dotProd);\n      }\n    `}}class sx{constructor(e){this.variableNames=["dy","maxPos"],this.outputShape=e.inShape;const t=e.strideDepth,n=e.strideHeight,r=e.strideWidth,s=e.dilationDepth,a=e.dilationHeight,o=e.dilationWidth,i=e.effectiveFilterDepth,u=e.effectiveFilterHeight,l=e.effectiveFilterWidth,c=i-1-e.padInfo.front,p=u-1-e.padInfo.top,h=l-1-e.padInfo.left,d=i*u*l-1;this.userCode=`\n      const ivec3 pads = ivec3(${c}, ${p}, ${h});\n\n      void main() {\n        ivec5 coords = getOutputCoords();\n        int batch = coords.x;\n        int ch = coords.u;\n\n        ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;\n        int dyDCorner = dyCorner.x;\n        int dyRCorner = dyCorner.y;\n        int dyCCorner = dyCorner.z;\n\n        // Convolve dy(?, ?, ?, ch) with pos mask(:, :, :, d) to get\n        // dx(xD, xR, xC, ch).\n        // ? = to be determined. : = across all values in that axis.\n        float dotProd = 0.0;\n\n        for (int wD = 0; wD < ${i};\n           wD += ${s}) {\n          float dyD = float(dyDCorner + wD) / ${t}.0;\n\n          if (dyD < 0.0 || dyD >= ${e.outDepth}.0 || fract(dyD) > 0.0) {\n            continue;\n          }\n          int idyD = int(dyD);\n\n          for (int wR = 0; wR < ${u};\n              wR += ${a}) {\n            float dyR = float(dyRCorner + wR) / ${n}.0;\n\n            if (dyR < 0.0 || dyR >= ${e.outHeight}.0 ||\n                fract(dyR) > 0.0) {\n              continue;\n            }\n            int idyR = int(dyR);\n\n            for (int wC = 0; wC < ${l};\n                wC += ${o}) {\n              float dyC = float(dyCCorner + wC) / ${r}.0;\n\n              if (dyC < 0.0 || dyC >= ${e.outWidth}.0 ||\n                  fract(dyC) > 0.0) {\n                continue;\n              }\n              int idyC = int(dyC);\n\n              float dyValue = getDy(batch, idyD, idyR, idyC, ch);\n              int maxPosValue = ${d} -\n                  int(getMaxPos(batch, idyD, idyR, idyC, ch));\n\n              // Get the current value, check it against the value from the\n              // position matrix.\n              int curPosValue =\n                  wD * ${u} * ${l} +\n                  wR * ${l} + wC;\n              float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0);\n\n              dotProd += dyValue * mask;\n            }\n          }\n        }\n        setOutput(dotProd);\n      }\n    `}}const ax={kernelName:s.OU7,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{dy:a,input:o}=t,i=o,{filterSize:u,strides:l,pad:c,dimRoundingMode:p}=r,h=s.Wap.computePool3DInfo(i.shape,u,l,[1,1,1],c,p),d=new rg(h,"max",!0),f=n.runWebGLProgram(d,[i],i.dtype),m=new sx(h),g=n.runWebGLProgram(m,[a,f],i.dtype);return n.disposeIntermediateTensorInfo(f),g}};const ox={kernelName:s.OV7,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{dy:a,input:o,output:i}=t,u=o;id([o,i],"maxPoolGrad");const{filterSize:l,strides:c,pad:p,dimRoundingMode:h}=r,d=s.Wap.computePool2DInfo(u.shape,l,c,1,p,h),f=new ng(d,"max",!0),m=n.runWebGLProgram(f,[u],u.dtype),g=new rx(d),y=n.runWebGLProgram(g,[a,m],u.dtype);return n.disposeIntermediateTensorInfo(m),y}};const ix={kernelName:s.vFR,backendName:"webgl",kernelFunc:({input
vendor: 4,740 bytes, line 1
1s:e,attrs:t,backend:n})=>{const{x:r}=e,{filterSize:a,strides:o,pad:i,includeBatchInIndex:u}=t,l=n;s.D5U.assert(4===r.shape.length,(()=>`Error in maxPool: input must be rank 4 but got rank ${r.shape.length}.`));const c=[1,1];s.D5U.assert(s.Wap.eitherStridesOrDilationsAreOne(o,c),(()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${o} and dilations '${c}'`));const p=s.Wap.computePool2DInfo(r.shape,a,o,c,i),[h,d]=function(e,t,n,r){let s=new ng(n,"max",!1);const a=r.runWebGLProgram(s,[e],"float32");return s=new ng(n,"max",!0,!0,t),[a,r.runWebGLProgram(s,[e],"float32")]}(r,u,p,l);return[h,d]}};const ux={kernelName:s.q2K,backendName:"webgl",kernelFunc:({inputs:e,attrs:t,backend:n})=>{const{x:r}=e,{keepDims:a,axis:o}=t,i=n,u=r.shape.length,l=s.D5U.parseAxisParam(o,r.shape);let c=l;const p=s.Wap.getAxesPermutation(c,u),h=null!=p,d=i.shouldExecuteOnCPU([r]),f=[];let m=r;if(h){if(d){const e=i.texData.get(m.dataId).values,t=new Array(u);for(let s=0;s<t.length;s++)t[s]=r.shape[p[s]];const n=Nf(e,r.shape,r.dtype,p,t);m=i.makeTensorInfo(t,r.dtype);i.texData.get(m.dataId).values=n}else m=bm(r,p,i);f.push(m),c=s.Wap.getInnerMostAxes(c.length,u)}s.Wap.assertAxesAreInnerMostDims("sum",c,u);const[g,y]=s.Wap.computeOutAndReduceShapes(m.shape,c);let b=g;a&&(b=s.Wap.expandShapeToKeepDim(g,l));const x=function(e,t,n,r){const a=s.D5U.sizeFromShape(t),o=pm({inputs:{x:e},attrs:{shape:[s.D5U.sizeFromShape(e.shape)/a,a]},backend:r}),i=mm(o,"float32","mean",r),u=pm({inputs:{x:i},attrs:{shape:n},backend:r});return r.disposeIntermediateTensorInfo(o),r.disposeIntermediateTensorInfo(i),u}(m,y,b,i);for(const s of f)i.disposeIntermediateTensorInfo(s);return x}};const lx={kernelName:s.c17,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:o,keepDims:i}=r,u=a.shape.length,l=s.D5U.parseAxisParam(o,a.shape);let c=l;const p=s.Wap.getAxesPermutation(c,u);let h=a;null!=p&&(h=vm({inputs:{x:a},backend:n,attrs:{perm:p}}),c=s.Wap.getInnerMostAxes(c.length,a.shape.length)),s.Wap.assertAxesAreInnerMostDims("min",c,u);const[d,f]=s.Wap.computeOutAndReduceShapes(h.shape,c),m=pm({inputs:{x:h},backend:n,attrs:{shape:[-1,s.D5U.sizeFromShape(f)]}}),g=mm(m,m.dtype,"min",n);let y;if(i){y=pm({inputs:{x:g},backend:n,attrs:{shape:s.Wap.expandShapeToKeepDim(d,l)}})}else y=pm({inputs:{x:g},backend:n,attrs:{shape:d}});return n.disposeIntermediateTensorInfo(m),n.disposeIntermediateTensorInfo(g),null!=p&&n.disposeIntermediateTensorInfo(h),y}},cx=nm({opSnippet:"\n  if (isnan(a)) return a;\n  if (isnan(b)) return b;\n\n  return min(a, b);\n",packedOpSnippet:"\n  vec4 result = vec4(min(a, b));\n  bvec4 isNaNA = isnan(a);\n  bvec4 isNaNB = isnan(b);\n  bvec4 isNaN = bvec4(isNaNA.x || isNaNB.x, isNaNA.y || isNaNB.y, isNaNA.z || isNaNB.z, isNaNA.w || isNaNB.w);\n  \n  result.r = isNaN.r ? NAN : result.r;\n  result.g = isNaN.g ? NAN : result.g;\n  result.b = isNaN.b ? NAN : result.b;\n  result.a = isNaN.a ? NAN : result.a;\n\n  return result;\n",cpuKernelImpl:Jd}),px={kernelName:s.q8u,backendName:"webgl",kernelFunc:cx};class hx{constructor(e,t,n){this.variableNames=["x"],this.outputShape=t.map(((t,n)=>t[0]+e[n]+t[1]));const r=e.length,s=(0,cd.kW)(r),a=t.map((e=>e[0])).join(","),o=t.map(((t,n)=>t[0]+e[n])).join(","),i=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,r),u="reflect"===n?0:1;this.userCode=1!==r?`\n      ${s} start = ${s}(${a});\n      ${s} end = ${s}(${o});\n\n      void main() {\n        ${s} outC = getOutputCoords();\n        for (int i = 0; i < ${r}; i++) {\n          if (outC[i] < start[i]) {\n            outC[i] = start[i] * 2 - outC[i] - ${u};\n          } else if(outC[i] >= end[i]) {\n            outC[i] = (end[i] - 1) * 2 - outC[i] + ${u};\n          }\n        }\n        ${s} coords = outC - start;\n        setOutput(getX(${i}));\n      }\n    `:`\n        int start = ${a};\n        int end = ${o};\n\n        void main() {\n          int outC = getOutputCoords();\n          if (outC < start) {\n            outC = start * 2 - outC - ${u};\n          } else if(outC >= end) {\n            outC = (end - 1) * 2 - outC + ${u};\n          }\n          setOutput(getX(outC - start));\n        }\n      `}}class dx{constructor(e,t,n){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t.map(((t,n)=>t[0]+e[n]+t[1]));const r=e.length,s=(0,cd.kW)(r),a=t.map((e=>e[0])).join(","),o=t.map(((t,n)=>t[0]+e[n])).join(","),i=Cf("rc",r),u=Cf("source",r),l=`${i[r-1]} < ${this.outputShape[r-1]}`,c=1===r?"source":`vec2(${u.slice(-2).join()})`,p="reflect"===n?0:1;let h="";if(1===r){const e=`\n        ${s} source = rc;\n        if (source < start) {\n          source = start * 2 - source - ${p};\n        } else if (source >
1= end) {\n          source = (end - 1) * 2 - source + ${p};\n        }\n        source -= start;\n      `;h=`\n        ${s} rc = outputLoc;\n        ${e}\n        result[0] = getChannel(getX(${u.join()}), ${c});\n        ${i[r-1]} += 1;\n        if(${l}) {\n          ${e}\n          result[1] = getChannel(getX(${u.join()}), ${c});\n        }\n      `}else{const e=`\n        ${s} source = rc;\n        ${s} lt = ${s}(lessThan(source, start));\n        ${s} gte = ${s}(greaterThanEqual(source, end));\n        ${s} orig = 1 - (lt + gte);\n        source = orig * source +\n                lt * (start * 2 - source - ${p}) +\n                gte * ((end - 1) * 2 - source + ${p});\n        source -= start;\n      `;h=`\n        ${s} rc = outputLoc;\n        ${e}\n        result[0] = getChannel(getX(${u.join()}), ${c});\n        ${i[r-1]} += 1;\n        if(${l}) {\n          ${e}\n          result[1] = getChannel(getX(${u.join()}), ${c});\n        }\n        rc = outputLoc;\n        ${i[r-2]} += 1;\n        if(${i[r-2]} < ${this.outputShape[r-2]}) {\n          ${e}\n          result[2] = getChannel(getX(${u.join()}), ${c});\n          ${i[r-1]} += 1;\n          if(${l}) {\n            ${e}\n            result[3] = getChannel(getX(${u.join()}), ${c});\n          }\n        }\n      `}this.userCode=`\n      const ${s} start = ${s}(${a});\n      const ${s} end = ${s}(${o});\n\n      void main() {\n        ${s} outputLoc = getOutputCoords();\n        vec4 result = vec4(0.);\n        ${h}\n        setOutput(result);\n      }\n    `}}const fx={kernelName:s.jQs,backendName:"webgl",kernelFunc:({inputs:e,backend:t,attrs:n})=>{const{x:r}=e,{paddings:a,mode:o}=n,i=(0,s.OBj)().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new dx(r.shape,a,o):new hx(r.shape,a,o);return t.runWebGLProgram(i,[r],r.dtype)}},mx=nm({opSnippet:"if (b == 0.0) return NAN;\n  return mod(a, b);",packedOpSnippet:"\n  vec4 result = mod(a, b);\n  bvec4 isNaN = equal(b, vec4(0.0));\n  \n  result.r = isNaN.r ? NAN : result.r;\n  result.g = isNaN.g ? NAN : result.g;\n  result.b = isNaN.b ? NAN : result.b;\n  result.a = isNaN.a ? NAN : result.a;\n\n  return result;\n"}),gx={kernelName:s.Vbg,backendName:"webgl",kernelFunc:mx};class yx{constructor(e,t,n){this.variableNames=["probs"],this.customUniforms=[{name:"seed",type:"float"}],this.outputShape=[e,n],this.userCode=`\n      void main() {\n        ivec2 coords = getOutputCoords();\n        int batch = coords[0];\n\n        float r = random(seed);\n        float cdf = 0.0;\n\n        for (int i = 0; i < ${t-1}; i++) {\n          cdf += getProbs(batch, i);\n\n          if (r < cdf) {\n            setOutput(float(i));\n            return;\n          }\n        }\n\n        // If no other event happened, last event happened.\n        setOutput(float(${t-1}));\n      }\n    `}}const bx=nm({opSnippet:"\nif (a == b) {\n  return 1.0;\n};\nreturn a / b;",packedOpSnippet:"\n  // vec4 one = vec4(equal(a, b));\n  // return one + (vec4(1.0) - one) * a / b;\n  vec4 result = a / b;\n  if(a.x == b.x) {\n    result.x = 1.;\n  }\n  if(a.y == b.y) {\n    result.y = 1.;\n  }\n  if(a.z == b.z) {\n    result.z = 1.;\n  }\n  if(a.w == b.w) {\n    result.w = 1.;\n  }\n\n  return result;\n",checkOutOfBounds:!0}),xx={kernelName:s.oHH,backendName:"webgl",kernelFunc:bx},wx="return a - b;",vx=nm({opSnippet:wx,packedOpSnippet:wx,supportsComplex:!0,cpuKernelImpl:vf}),kx={kernelName:s.Tr8,backendName:"webgl",kernelFunc:vx};function Ix(e){const{inputs:t,backend:n,attrs:r}=e,{logits:a}=t,{dim:o}=r,i=s.D5U.parseAxisParam([o],a.shape),u=Yb({inputs:{x:a},backend:n,attrs:{reductionIndices:i,keepDims:!1}}),l=s.Wap.expandShapeToKeepDim(u.shape,i),c=pm({inputs:{x:u},backend:n,attrs:{shape:l}}),p=vx({inputs:{a:a,b:c},backend:n}),h=zy({inputs:{x:p},backend:n}),d=xm({inputs:{x:h},backend:n,attrs:{axis:i,keepDims:!1}}),f=pm({inputs:{x:d},backend:n,attrs:{shape:l}}),m=bx({inputs:{a:h,b:f},backend:n});return n.disposeIntermediateTensorInfo(u),n.disposeIntermediateTensorInfo(c),n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(f),m}const Nx={kernelName:s.Gcp,backendName:"webgl",kernelFunc:Ix};const Sx={kernelName:s.NZg,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{logits:s}=t,{numSamples:a,seed:o,normalized:i}=r,u=i?s:Ix({inputs:{logits:s},backend:n,attrs:{dim:s.shape.length-1}}),l=u.shape[0],c=u.shape[1],p=new yx(l,c,a),h=[[o]],d=n.runWebGLProgram(p,[u],"int32",h);return i||n.disposeIntermediateTensorInfo(u),d}};const Tx={kernelName:s.kuV,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n}=e,{x:r}=t;if(n.shouldExecuteOnCPU([r])){const e=n.texData.get(r.dataId),[t,s]=tf(e.values,r.shape,r.dtype);return n.makeTensorInfo(s,r.dtype,t)}let a;return a=(0,s.OBj)().getBool("WEBGL_PACK_UNARY_OPERATIONS")?new Bf(r.shape,"\n  vec4 result = -x;\n  bvec4 isNaN = isnan(x);\n\n  result.r = isNaN.r ? x.r : result.r;\n  result.g = isNaN.g ? x.g : result.g;\n  result.b = isNaN.b ? x.b : result.b;\n  result.a = isNaN.a ? x.a : result.a;\n\n  return result;\n"):new Ff(r.shape,"if (isnan(x)) return x;\n  return -x;\n"),n.runWebGLProgram(a,[r],r.dtype)}},Cx=s.GDt.GP;const Ex={kernelName:s.uv1,backendName:"webgl",kernelFunc:function(e){s.Wap.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");const{inputs:t,backend:n,attrs:r}=e,{boxes:a,scores:o}=t,{maxOutputSize:i,iouThreshold:u,scoreThreshold:l}=r,c=n.readSync(a.dataId),p=n.readSync(o.dataId),{selectedIndices:h}=Cx(c,p,i,u,l);return n.makeTensorInfo([h.length],"int32",new Int32Array(h))}},$x=s.GDt.qP;const Ax={kernelName:s.cye,backendName:"webgl",kernelFunc:function(e){s.Wap.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");const{inputs:t,backend:n,attrs:r}=e,{boxes:a,scores:o}=t,{maxOutputSize:i,iouThreshold:u,scoreThreshold:l,padToMaxOutputSize:c}=r,p=n.readSync(a.dataId),h=n.readSync(o.dataId),{selectedIndices:d,validOutputs:f}=$x(p,h,i,u,l,c);return[n.makeTensorInfo([d.length],"int32",new Int32Array(d)),n.makeTensorInfo([],"int32",new Int32Array([f]))]}},Dx=s.GDt.pA;const _x={kernelName:s.W0H,backendName:"webgl",kernelFunc:function(e){s.Wap.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");const{inputs:t,backend:n,attrs:r}=e,{boxes:a,scores:o}=t,{maxOutputSize:i,iouThreshold:u,scoreThreshold:l,softNmsSigma:c}=r,p=n.readSync(a.dataId),h=n.readSync(o.dataId),d=i,f=u,m=l,g=c,{selectedIndices:y,selectedScores:b}=Dx(p,h,d,f,m,g);return[n.makeTensorInfo([y.length],"int32",new Int32Array(y)),n.makeTensorInfo([b.length],"float32",new Float32Array(b))]}};class Rx{constructor(e,t,n,r){this.variableNames=["indices"],this.outputShape=[e,t],this.userCode=`\n      void main() {\n        ivec2 coords = getOutputCoords();\n        int index = round(getIndices(coords.x));\n        setOutput(mix(float(${r}), float(${n}),\n                      float(index == coords.y)));\n      }\n    `}}const Fx={kernelName:s.we_,backendName:"webgl",kernelFunc:e=>{const{inputs:t,backend:n,attrs:r}=e,{indices:a}=t,{dtype:o,depth:i,onValue:u,offValue:l}=r,c=s.D5U.sizeFromShape(a.shape),p=new Rx(c,i,u,l),h=pm({inputs:{x:a},backend:n,attrs:{shape:[c]}}),d=n.runWebGLProgram(p,[h],o);n.disposeIntermediateTensorInfo(h);const f=pm({inputs:{x:d},backend:n,attrs:{shape:[...a.shape,i]}});return n.disposeIntermediateTensorInfo(d),f}};function Ox(e){const{inputs:t,backend:n}=e,{x:r}=t;if("complex64"===r.dtype){const e=Ng({inputs:{input:r},backend:n}
vendor: 5,332 bytes, line 1
1),t=Ox({inputs:{x:e},backend:n}),s=Wg({inputs:{input:r},backend:n}),a=Ox({inputs:{x:s},backend:n}),o=Xf({inputs:{real:t,imag:a},backend:n});return n.disposeIntermediateTensorInfo(e),n.disposeIntermediateTensorInfo(t),n.disposeIntermediateTensorInfo(s),n.disposeIntermediateTensorInfo(a),o}return Jy({attrs:{shape:r.shape,dtype:r.dtype,value:"string"===r.dtype?"":0},backend:n})}const Mx={kernelName:s.RuY,backendName:"webgl",kernelFunc:Ox};const Bx={kernelName:s.qWM,backendName:"webgl",kernelFunc:function e(t){const{inputs:n,backend:r}=t,{x:s}=n;if("string"===s.dtype)throw new Error("onesLike is not supported under string dtype");if("complex64"===s.dtype){const t=Ng({inputs:{input:s},backend:r}),n=e({inputs:{x:t},backend:r}),a=Wg({inputs:{input:s},backend:r}),o=Ox({inputs:{x:a},backend:r}),i=Xf({inputs:{real:n,imag:o},backend:r});return r.disposeIntermediateTensorInfo(t),r.disposeIntermediateTensorInfo(n),r.disposeIntermediateTensorInfo(a),r.disposeIntermediateTensorInfo(o),i}return Jy({attrs:{shape:s.shape,dtype:s.dtype,value:1},backend:r})}};const Lx={kernelName:s.QiL,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{axis:a}=r;if(1===t.length)return Gy({inputs:{input:t[0]},backend:n,attrs:{dim:a}});const o=t[0].shape,i=t[0].dtype;t.forEach((e=>{s.D5U.assertShapesMatch(o,e.shape,"All tensors passed to stack must have matching shapes"),s.D5U.assert(i===e.dtype,(()=>"All tensors passed to stack must have matching dtypes"))}));const u=[],l=zg({inputs:t.map((e=>{const t=Gy({inputs:{input:e},backend:n,attrs:{dim:a}});return u.push(t),t})),backend:n,attrs:{axis:a}});return u.forEach((e=>n.disposeIntermediateTensorInfo(e))),l}};class Wx{constructor(e,t,n){this.variableNames=["x"],this.customUniforms=[{name:"value",type:"float"}],this.outputShape=t.map(((t,n)=>t[0]+e[n]+t[1]));const r=e.length,s=(0,cd.kW)(r),a=t.map((e=>e[0])).join(","),o=t.map(((t,n)=>t[0]+e[n])).join(","),i=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,r);this.userCode=1!==r?`\n      ${s} start = ${s}(${a});\n      ${s} end = ${s}(${o});\n\n      void main() {\n        ${s} outC = getOutputCoords();\n        if (any(lessThan(outC, start)) || any(greaterThanEqual(outC, end))) {\n          setOutput(value);\n        } else {\n          ${s} coords = outC - start;\n          setOutput(getX(${i}));\n        }\n      }\n    `:`\n        int start = ${a};\n        int end = ${o};\n\n        void main() {\n          int outC = getOutputCoords();\n          if (outC < start || outC >= end) {\n            setOutput(value);\n          } else {\n            setOutput(getX(outC - start));\n          }\n        }\n      `}}class Px{constructor(e,t,n){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.customUniforms=[{name:"value",type:"float"}],this.outputShape=t.map(((t,n)=>t[0]+e[n]+t[1]));const r=e.length,s=(0,cd.kW)(r),a=t.map((e=>e[0])).join(","),o=t.map(((t,n)=>t[0]+e[n])).join(","),i=Cf("rc",r),u=Cf("source",r),l=`${i[r-1]} < ${this.outputShape[r-1]}`,c=1===r?"source":`vec2(${u.slice(-2).join()})`,p=[`${s} rc = outputLoc;`,`${i[r-1]} += 1;\n       if(${l}) {\n      `,1===r?"":`}\n       rc = outputLoc;\n       ${i[r-2]} += 1;\n       if(${i[r-2]} < ${this.outputShape[r-2]}) {`,1===r?"":`  ${i[r-1]} += 1;\n         if(${l}) {`],h=1===r?"rc < start || rc >= end":"any(lessThan(rc, start)) || any(greaterThanEqual(rc, end))";let d="";for(let f=0,m=1===r?2:4;f<m;f++)d+=`\n        ${p[f]}\n        if (${h}) {\n          result[${f}] = float(value);\n        } else {\n          ${s} source = rc - start;\n          result[${f}] = getChannel(getX(${u.join()}), ${c});\n        }\n      `;d+=1===r?"} ":"}}",this.userCode=`\n      const ${s} start = ${s}(${a});\n      const ${s} end = ${s}(${o});\n\n      void main() {\n        ${s} outputLoc = getOutputCoords();\n        vec4 result = vec4(0.);\n        ${d}\n        setOutput(result);\n      }\n    `}}const Ux=e=>{const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{paddings:o,constantValue:i}=r;if(0===s.D5U.sizeFromShape(a.shape)){return Jy({backend:n,attrs:{shape:o.map(((e,t)=>e[0]+a.shape[t]+e[1])),value:i,dtype:a.dtype}})}const u=(0,s.OBj)().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new Px(a.shape,o,i):new Wx(a.shape,o,i),l=[[i]];return n.runWebGLProgram(u,[a],a.dtype,l)},zx={kernelName:s.lyA,backendName:"webgl",kernelFunc:Ux},Vx=nm({opSnippet:"\n  if(a < 0.0 && floor(b) < b){\n    return NAN;\n  }\n  if (b == 0.0) {\n    return 1.0;\n  }\n  return (round(mod(b, 2.0)) != 1) ?\n      pow(abs(a), b) : sign(a) * pow(abs(a), b);\n",packedOpSnippet:"\n  // isModRound1 has 1 for components with round(mod(b, 2.0)) == 1, 0 otherwise.\n  vec4 isModRound1 = vec4(equal(round(mod(b, 2.0)), ivec4(1)));\n  vec4 multiplier = sign(a) * isModRound1 + (vec4(1.0) - isModRound1);\n  vec4 result = multiplier * pow(abs(a), b);\n\n  // Ensure that a^0 = 1, including 0^0 = 1 as this correspond to TF and JS\n  bvec4 isExpZero = equal(b, vec4(0.0));\n  result.r = isExpZero.r ? 1.0 : result.r;\n  result.g = isExpZero.g ? 1.0 : result.g;\n  result.b = isExpZero.b ? 1.0 : result.b;\n  result.a = isExpZero.a ? 1.0 : result.a;\n\n  bvec4 isNaN1 = lessThan(a, vec4(0.0));\n  bvec4 isNaN2 = lessThan(floor(b), b);\n  bvec4 isNaN = bvec4(isNaN1.x && isNaN2.x, isNaN1.y && isNaN2.y, isNaN1.z && isNaN2.z, isNaN1.w && isNaN2.
1w);\n  \n  result.r = isNaN.r ? NAN : result.r;\n  result.g = isNaN.g ? NAN : result.g;\n  result.b = isNaN.b ? NAN : result.b;\n  result.a = isNaN.a ? NAN : result.a;\n\n  return result;\n"}),Gx={kernelName:s.pe_,backendName:"webgl",kernelFunc:Vx};const Hx={kernelName:s.DlI,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:o,keepDims:i}=r,u=a.shape.length,l=[],c=s.D5U.parseAxisParam(o,a.shape);let p=c;const h=s.Wap.getAxesPermutation(p,u);let d,f=a;if(null!=h&&(f=vm({inputs:{x:a},backend:n,attrs:{perm:h}}),p=s.Wap.getInnerMostAxes(p.length,u),l.push(f)),s.Wap.assertAxesAreInnerMostDims("prod",p,u),n.shouldExecuteOnCPU([f])){const e=n.texData.get(f.dataId).values,{outVals:t,outShape:r,outDtype:s}=rf(f.shape,f.dtype,e,p);d=n.makeTensorInfo(r,s,t)}else{const[e,t]=s.Wap.computeOutAndReduceShapes(f.shape,p),r=s.D5U.sizeFromShape(t),o=pm({inputs:{x:f},backend:n,attrs:{shape:[-1,r]}}),i=mm(o,(0,s.z4k)(a.dtype),"prod",n);d=pm({inputs:{x:i},backend:n,attrs:{shape:e}}),l.push(o),l.push(i)}if(i){l.push(d);const e=s.Wap.expandShapeToKeepDim(d.shape,c);d=pm({inputs:{x:d},backend:n,attrs:{shape:e}})}return l.forEach((e=>n.disposeIntermediateTensorInfo(e))),d}};const jx={kernelName:s.dDz,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{paramsNestedSplits:s,paramsDenseValues:a,indices:o}=t,{outputRaggedRank:i}=r,u=s.map((e=>n.readSync(e.dataId))),l=s.map((e=>e.shape)),c=n.readSync(a.dataId),p=n.readSync(o.dataId),[h,d,f]=sf(u,l,c,a.shape,a.dtype,p,o.shape,i),m=h.map((e=>n.makeTensorInfo([e.length],"int32",e))),g=n.makeTensorInfo(f,a.dtype,d);return m.concat([g])}};const Xx={kernelName:s.BiW,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{shape:s,values:a,defaultValue:o,rowPartitionTensors:i}=t,{rowPartitionTypes:u}=r,l=n.readSync(s.dataId),c=n.readSync(a.dataId),p=n.readSync(o.dataId),h=i.map((e=>n.readSync(e.dataId))),d=i.map((e=>e.shape)),[f,m]=af(l,s.shape,c,a.shape,a.dtype,p,o.shape,h,d,u);return n.makeTensorInfo(f,a.dtype,m)}},qx=e=>{const{backend:t,attrs:n}=e,{start:r,stop:s,step:a,dtype:o}=n,i=of(r,s,a,o);return t.makeTensorInfo([i.length],o,i)},Kx={kernelName:s.e6w,backendName:"webgl",kernelFunc:qx},Qx=tm({opSnippet:"return 1.0 / x;"}),Yx={kernelName:s.$HU,backendName:"webgl",kernelFunc:Qx},Zx=tm({opSnippet:"if (isnan(x)) return x;\n  return (x < 0.0) ? 0.0 : x;\n",packedOpSnippet:"\n  vec4 result = x * vec4(greaterThanEqual(x, vec4(0.0)));\n  bvec4 isNaN = isnan(x);\n\n  result.r = isNaN.r ? x.r : result.r;\n  result.g = isNaN.g ? x.g : result.g;\n  result.b = isNaN.b ? x.b : result.b;\n  result.a = isNaN.a ? x.a : result.a;\n\n  return result;\n"}),Jx={kernelName:s.qkr,backendName:"webgl",kernelFunc:Zx},ew=tm({opSnippet:"if (isnan(x)) return x;\n  return (x < 0.0) ? 0.0 : min(6.0, x);\n",packedOpSnippet:"\n  vec4 result = min(x, vec4(6.)) * vec4(greaterThanEqual(x, vec4(0.0)));\n  bvec4 isNaN = isnan(x);\n\n  result.r = isNaN.r ? x.r : result.r;\n  result.g = isNaN.g ? x.g : result.g;\n  result.b = isNaN.b ? x.b : result.b;\n  result.a = isNaN.a ? x.a : result.a;\n\n  return result;\n"}),tw={kernelName:s.SbG,backendName:"webgl",kernelFunc:ew};class nw{constructor(e,t,n,r,s){this.variableNames=["A"],this.outputShape=[];const[a,o,i,u]=e;this.outputShape=[a,t,n,u];const l=[r&&t>1?o-1:o,r&&n>1?i-1:i],c=[r&&t>1?t-1:t,r&&n>1?n-1:n];let p;p=s?"(vec2(yRC) + vec2(0.5)) * effectiveInputOverOutputRatioRC - vec2(0.5)":"vec2(yRC) * effectiveInputOverOutputRatioRC",this.userCode=`\n      const vec2 effectiveInputOverOutputRatioRC = vec2(\n          ${l[0]/c[0]},\n          ${l[1]/c[1]});\n      const vec2 inputShapeRC = vec2(${o}.0, ${i}.0);\n\n      void main() {\n        ivec4 coords = getOutputCoords();\n        int b = coords[0];\n        int d = coords[3];\n        ivec2 yRC = coords.yz;\n\n        // Fractional source index.\n        vec2 sourceFracIndexRC = ${p};\n\n        // Compute the four integer indices.\n        ivec2 sourceFloorRC = ivec2(max(sourceFracIndexRC, vec2(0.0)));\n        ivec2 sourceCeilRC = ivec2(\n          min(inputShapeRC - 1.0, ceil(sourceFracIndexRC)));\n\n        float topLeft = getA(b, sourceFloorRC.x, sourceFloorRC.y, d);\n        float bottomLeft = getA(b, sourceCeilRC.x, sourceFloorRC.y, d);\n        float topRight = getA(b, sourceFloorRC.x, sourceCeilRC.y, d);\n        float bottomRight = getA(b, sourceCeilRC.x, sourceCeilRC.y, d);\n\n        vec2 fracRC = sourceFracIndexRC - vec2(sourceFloorRC);\n\n        float top = topLeft + (topRight - topLeft) * fracRC.y;\n        float bottom = bottomLeft + (bottomRight - bottomLeft) * fracRC.y;\n        float newValue = top + (bottom - top) * fracRC.x;\n\n        setOutput(newValue);\n      }\n    `}}
vendor: 3,261 bytes, line 1
1class rw{constructor(e,t,n,r,s){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[];const[a,o,i,u]=e;this.outputShape=[a,t,n,u];const l=[r&&t>1?o-1:o,r&&n>1?i-1:i],c=[r&&t>1?t-1:t,r&&n>1?n-1:n];let p;p=s?"(vec3(yRC) + vec3(0.5)) * effectiveInputOverOutputRatioRC - vec3(0.5)":"vec3(yRC) * effectiveInputOverOutputRatioRC",this.userCode=`\n      const vec3 effectiveInputOverOutputRatioRC = vec3(\n          ${l[0]/c[0]},\n          ${l[1]/c[1]},\n          ${l[1]/c[1]});\n      const vec3 inputShapeRC = vec3(${o}.0, ${i}.0,\n                                     ${i}.0);\n\n      float getAValue(int b, int r, int c, int d) {\n        return getChannel(getA(b, r, c, d), vec2(c, d));\n      }\n\n      void main() {\n        ivec4 coords = getOutputCoords();\n        int b = coords[0];\n        int d = coords[3];\n        // Calculate values for next column in yRC.z.\n        ivec3 yRC = coords.yzz + ivec3(0, 0, 1);\n\n        // Fractional source index.\n        vec3 sourceFracIndexRC = ${p};\n\n        // Compute the four integer indices.\n        ivec3 sourceFloorRC = ivec3(max(sourceFracIndexRC, vec3(0.0)));\n        ivec3 sourceCeilRC = ivec3(\n          min(inputShapeRC - 1.0, ceil(sourceFracIndexRC)));\n\n        // Should we calculate next column and row elements in 2x2 packed cell.\n        bool hasNextCol = d < ${u-1};\n        bool hasNextRow = coords.z < ${n-1};\n\n        // In parallel, construct four corners for all four components in\n        // packed 2x2 cell.\n        vec4 topLeft = vec4(\n          getAValue(b, sourceFloorRC.x, sourceFloorRC.y, d),\n          hasNextCol ? getAValue(b, sourceFloorRC.x, sourceFloorRC.y, d + 1)\n                     : 0.0,\n          hasNextRow ? getAValue(b, sourceFloorRC.x, sourceFloorRC.z, d)\n                     : 0.0,\n          (hasNextRow && hasNextCol) ?\n            getAValue(b, sourceFloorRC.x, sourceFloorRC.z, d + 1) : 0.0);\n\n        vec4 bottomLeft = vec4(\n          getAValue(b, sourceCeilRC.x, sourceFloorRC.y, d),\n          hasNextCol ? getAValue(b, sourceCeilRC.x, sourceFloorRC.y, d + 1)\n                     : 0.0,\n          hasNextRow ? getAValue(b, sourceCeilRC.x, sourceFloorRC.z, d)\n                     : 0.0,\n          (hasNextRow && hasNextCol) ?\n            getAValue(b, sourceCeilRC.x, sourceFloorRC.z, d + 1) : 0.0);\n\n        vec4 topRight = vec4(\n          getAValue(b, sourceFloorRC.x, sourceCeilRC.y, d),\n          hasNextCol ? getAValue(b, sourceFloorRC.x, sourceCeilRC.y, d + 1)\n                     : 0.0,\n          hasNextRow ? getAValue(b, sourceFloorRC.x, sourceCeilRC.z, d)\n                     : 0.0,\n          (hasNextRow && hasNextCol) ?\n            getAValue(b, sourceFloorRC.x, sourceCeilRC.z, d + 1) : 0.0);\n\n        vec4 bottomRight = vec4(\n          getAValue(b, sourceCeilRC.x, sourceCeilRC.y, d),\n          hasNextCol ? getAValue(b, sourceCeilRC.x, sourceCeilRC.y, d + 1)\n                     : 0.0,\n          hasNextRow ? getAValue(b, sourceCeilRC.x, sourceCeilRC.z, d)\n                     : 0.0,\n          (hasNextRow && hasNextCol) ?\n            getAValue(b, sourceCeilRC.x, sourceCeilRC.z, d + 1) : 0.0);\n\n        vec3 fracRC = sourceFracIndexRC - vec3(sourceFloorRC);
1\n\n        vec4 top = mix(topLeft, topRight, fracRC.yyzz);\n        vec4 bottom = mix(bottomLeft, bottomRight, fracRC.yyzz);\n        vec4 newValue = mix(top, bottom, fracRC.x);\n\n        setOutput(newValue);\n      }\n    `}}const sw={kernelName:s._Yw,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{images:a}=t,{alignCorners:o,halfPixelCenters:i,size:u}=r,[l,c]=u,p=(0,s.OBj)().getBool("WEBGL_PACK_IMAGE_OPERATIONS")?new rw(a.shape,l,c,o,i):new nw(a.shape,l,c,o,i);return n.runWebGLProgram(p,[a],"float32")}};class aw{constructor(e,t,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=t;const[,r,s]=t,[,a,o]=e,i=[n&&a>1?r-1:r,n&&o>1?s-1:s],u=[n&&a>1?a-1:a,n&&o>1?o-1:o],l=i[0]/u[0],c=i[1]/u[1],p=1/l,h=1/c,d=2*Math.ceil(p)+2,f=2*Math.ceil(h)+2;this.userCode=`\n      void main() {\n        ivec4 coords = getOutputCoords();\n        int b = coords[0];\n        int d = coords[3];\n        int r = coords[1];\n        int c = coords[2];\n\n        float accumulator = 0.0;\n\n        const float heightScale = float(${l});\n        const float widthScale = float(${c});\n\n        const float invHeightScale = float(${p});\n        const float invWidthScale = float(${h});\n\n        const int winHeight = int(${d});\n        const int winWidth = int(${f});\n\n        // Compute bounds for where in dy we will look\n        float startRLerp = floor(float(r) * invHeightScale);\n        int startDyR = int(startRLerp - float(winHeight / 2));\n\n        float startCLerp = floor(float(c) * invWidthScale);\n        int startDyC = int(startCLerp - float(winWidth / 2));\n\n        // Loop over dy\n        for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {\n          int dyR = dyROffset + startDyR;\n\n          // Guard against the window exceeding the bounds of dy\n          if (dyR < 0 || dyR >= ${a}) {\n            continue;\n          }\n\n          for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {\n            int dyC = dyCOffset + startDyC;\n\n            // Guard against the window exceeding the bounds of dy\n            if (dyC < 0 || dyC >= ${o}) {\n              continue;\n            }\n\n            float dxR = float(dyR) * heightScale;\n            int topDxRIndex = int(floor(dxR));\n            int bottomDxRIndex = int(min(ceil(dxR), ${r-1}.0));\n            float dxRLerp = dxR - float(topDxRIndex);\n            float inverseDxRLerp = 1.0 - dxRLerp;\n\n            float dxC = float(dyC) * widthScale;\n            int leftDxCIndex = int(floor(dxC));\n            int rightDxCIndex = int(min(ceil(dxC), ${s-1}.0));\n            float dxCLerp = dxC - float(leftDxCIndex);\n            float inverseDxCLerp = 1.0 - dxCLerp;\n\n            if (r == topDxRIndex && c == leftDxCIndex) {\n              // topLeft\n              accumulator +=\n                getDy(b, dyR, dyC, d) * inverseDxRLerp * inverseDxCLerp;\n            }\n\n            if (r == topDxRIndex && c == rightDxCIndex) {\n              // topRight\n              accumulator += getDy(b, dyR, dyC, d) * inverseDxRLerp * dxCLerp;\n            }\n\n            if (r == bottomDxRIndex && c == leftDxCIndex) {\n              // bottomLeft\n              accumulator += getDy(b, dyR, dyC, d) * dxRLerp * inverseDxCLerp;\n            }\n\n            if (r == bottomDxRIndex && c == rightDxCIndex) {\n              // bottomRight\n              accumulator += getDy(b, dyR, dyC, d) * dxRLerp * dxCLerp;\n            }\n          }\n        }\n        // End loop over dy\n\n        setOutput(accumulator);\n      }\n    `}}const ow={kernelName:s.zbQ,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{images:s,dy:a}=t,{alignCorners:o}=r,i=new aw(a.shape,s.shape,o);return n.runWebGLProgram(i,[a],a.dtype)}};class iw{constructor(e,t,n,r,s){this.variableNames=["A"],this.outputShape=[];const[a,o,i,u]=e;this.outputShape=[a,t,n,u];const l=[r&&t>1?o-1:o,r&&n>1?i-1:i],c=[r&&t>1?t-1:t,r&&n>1?n-1:n],p=r?"0.5":"0.0";let h;h=s?"max((vec2(yRC) + vec2(0.5)) * effectiveInputOverOutputRatioRC, vec2(0.0))":"vec2(yRC) * effectiveInputOverOutputRatioRC",this.userCode=`\n      const vec2 effectiveInputOverOutputRatioRC = vec2(\n          ${l[0]/c[0]},\n          ${l[1]/c[1]});\n      const vec2 inputShapeRC = vec2(${o}.0, ${i}.0);\n\n      void main() {\n        ivec4 coords = getOutputCoords();\n        int b = coords[0];\n        int d = coords[3];\n        ivec2 yRC = coords.yz;\n\n        // Fractional source index.\n        vec2 sourceFracIndexRC = ${h};\n\n        // Compute the coordinators of nearest neighbor point.\n        ivec2 sourceNearestRC = ivec2(\n          min(inputShapeRC - 1.0, floor(sourceFracIndexRC + ${p})));\n        float newValue = getA(b, sourceNearestRC.x, sourceNearestRC.y, d);\n\n        setOutput(newValue);\n      }\n    `}}
vendor: 8,178 bytes, line 1
1class uw{constructor(e,t,n,r,s){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[];const[a,o,i,u]=e;this.outputShape=[a,t,n,u];const l=[r&&t>1?o-1:o,r&&n>1?i-1:i],c=[r&&t>1?t-1:t,r&&n>1?n-1:n],p=r?"0.5":"0.0";let h;h=s?"max((vec3(yRC) + vec3(0.5)) * effectiveInputOverOutputRatioRC, vec3(0.0))":"vec3(yRC) * effectiveInputOverOutputRatioRC",this.userCode=`\n      const vec3 effectiveInputOverOutputRatioRC = vec3(\n          ${l[0]/c[0]},\n          ${l[1]/c[1]},\n          ${l[1]/c[1]});\n      const vec3 inputShapeRC = vec3(${o}.0, ${i}.0,\n                                     ${i}.0);\n\n      float getAValue(int b, int r, int c, int d) {\n        return getChannel(getA(b, r, c, d), vec2(c, d));\n      }\n\n      void main() {\n        ivec4 coords = getOutputCoords();\n        int b = coords[0];\n        int d = coords[3];\n        // Calculate values for next column in yRC.z.\n        ivec3 yRC = coords.yzz + ivec3(0, 0, 1);\n\n        // Fractional source index.\n        vec3 sourceFracIndexRC = ${h};\n\n        // Compute the coordinators of nearest neighbor point.\n        ivec3 sourceNearestRC = ivec3(\n          min(inputShapeRC - 1.0, floor(sourceFracIndexRC + ${p})));\n\n        // Should we calculate next column and row elements in 2x2 packed cell.\n        bool hasNextCol = d < ${u-1};\n        bool hasNextRow = coords.z < ${n-1};\n\n        vec4 newValue = vec4(\n          getAValue(b, sourceNearestRC.x, sourceNearestRC.y, d),\n          hasNextCol ? getAValue(b, sourceNearestRC.x, sourceNearestRC.y, d + 1)\n                     : 0.0,\n          hasNextRow ? getAValue(b, sourceNearestRC.x, sourceNearestRC.z, d)\n                     : 0.0,\n          (hasNextRow && hasNextCol) ?\n            getAValue(b, sourceNearestRC.x, sourceNearestRC.z, d + 1) : 0.0);\n\n        setOutput(newValue);\n      }\n    `}}const lw={kernelName:s.dpD,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{images:a}=t,{alignCorners:o,halfPixelCenters:i,size:u}=r,[l,c]=u,p=(0,s.OBj)().getBool("WEBGL_PACK_IMAGE_OPERATIONS")?new uw(a.shape,l,c,o,i):new iw(a.shape,l,c,o,i);return n.runWebGLProgram(p,[a],a.dtype)}};class cw{constructor(e,t,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=t;const[,r,s]=t,[,a,o]=e,i=[n&&a>1?r-1:r,n&&o>1?s-1:s],u=[n&&a>1?a-1:a,n&&o>1?o-1:o],l=i[0]/u[0],c=i[1]/u[1],p=1/l,h=1/c,d=2*Math.ceil(p)+2,f=2*Math.ceil(h)+2;this.userCode=`\n      void main() {\n        ivec4 coords = getOutputCoords();\n        int b = coords[0];\n        int d = coords[3];\n        int r = coords[1];\n        int c = coords[2];\n\n        float accumulator = 0.0;\n\n        const float heightScale = float(${l});\n        const float widthScale = float(${c});\n\n        const float invHeightScale = float(${p});\n        const float invWidthScale = float(${h});\n\n        const int winHeight = int(${d});\n        const int winWidth = int(${f});\n\n        // Compute bounds for where in dy we will look\n        float startRLerp = floor(float(r) * invHeightScale);\n        int startDyR = int(floor(startRLerp - float(winHeight / 2)));\n\n        float startCLerp = floor(float(c) * invWidthScale);\n        int startDyC = int(floor(startCLerp - float(winWidth / 2)));\n\n        // Loop over dy\n        for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {\n          int dyR = dyROffset + startDyR;\n\n          // Guard against the window exceeding the bounds of dy\n          if (dyR < 0 || dyR >= ${a}) {\n            continue;\n          }\n\n          for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {\n            int dyC = dyCOffset + startDyC;\n\n            // Guard against the window exceeding the bounds of dy\n            if (dyC < 0 || dyC >= ${o}) {\n              continue;\n            }\n\n            float sourceFracRow =\n              float(${i[0]}) *\n                (float(dyR) / float(${u[0]}));\n\n            float sourceFracCol =\n                float(${i[1]}) *\n                  (float(dyC) / float(${u[1]}));\n\n            int sourceNearestRow = int(min(\n                float(int(${r}) - 1),\n                ${n} ? float(round(sourceFracRow)) :\n                                  float(floor(sourceFracRow))));\n\n            int sourceNearestCol = int(min(\n                float(int(${s}) - 1),\n                ${n} ? float(round(sourceFracCol)) :\n                                  float(floor(sourceFracCol))));\n\n            if (r == sourceNearestRow && c == sourceNearestCol) {\n              accumulator += getDy(b, dyR, dyC, d);\n            }\n          }\n        }\n        // End loop over dy\n\n        setOutput(accumulator);\n      }\n    `}}const pw={kernelName:s.Hmb,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{images:s,dy:a}=t,{alignCorners:o}=r,i=new cw(a.shape,s.shape,o);return n.runWebGLProgram(i,[a],a.dtype)}};class hw{constructor(e,t){this.variableNames=["x"];const n=e.length;if(n>4)throw new Error(`WebGL backend: Reverse of rank-${n} tensor is not yet supported`);if(this.outputShape=e,1===n)return void(this.userCode=`\n        void main() {\n          int coord = getOutputCoords();\n          setOutput(getX(${e[0]} - coord - 1));\n        }\n      `);const r=e.map(((n,r)=>(n=>-1!==t.indexOf(n)&&1!==e[n]?`${e[n]} - coords[${n}] - 1`:`coords[${n}]`)(r))).join(","),s=(0,cd.kW)(n);this.userCode=`\n      void main() {\n        ${s} coords = getOutputCoords();\n        setOutput(getX(${r}));\n      }\n    `}}class dw{constructor(e,t){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0;const n=e.length;if(n>4)throw new Error(`WebGL backend: Reverse of rank-${n} tensor is not yet supported`);this.outputShape=e;const r=Cf("rc",n),s=`${r[n-1]} + 1 < ${this.outputShape[n-1]}`,a=`${r[n-2]} + 1 < ${this.outputShape[n-2]}`,o=(0,cd.kW)(n);function i(n){const r=e.map(((r,s)=>function(n,r){return-1!==t.indexOf(n)&&1!==e[n]?`${e[n]} - ${r[n]} - 1`:`${r[n]}`}(s,n)));return`getChannel(getX(${r.join(",")}), vec2(${r.slice(-2).join(",")}))`}this.userCode=1===n?`\n        void main(){\n          int rc = getOutputCoords();\n          vec4 result = vec4(0.);\n          result.r = getChannel(getX(${e[0]} - rc - 1),\n            ${e[0]} - rc - 1);\n          if(${s}){\n              result.g = getChannel(getX(${e[0]} - (rc  + 1) - 1),\n                ${e[0]} - (rc  + 1) - 1);\n          }\n          setOutput(result);\n        }\n      `:`\n        void main() {\n          ${o} rc = getOutputCoords();\n          vec4 result = vec4(0.);\n          result.r = ${function(e){return i(e)}(r.slice())};\n          if(${s}){\n            result.g = ${function(e){return e[n-1]="("+e[n-1]+" + 1)",i(e)}(r.slice())};\n          }\n          if(${a}) {\n            result.b = ${function(e){return e[n-2]="("+e[n-2]+" + 1)",i(e)}(r.slice())};\n            if(${s}) {\n              result.a = ${function(e){return e[n-1]="("+e[n-1]+" + 1)",e[n-2]="("+e[n-2]+" + 1)",i(e)}(r.slice())};\n            }\n          }\n          setOutput(result);\n        }\n    `}}const fw={kernelName:s.mKl,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dims:o}=r,i=a.shape.length,u=s.D5U.parseAxisParam(o,a.shape);if(0===i)return Hf({inputs:{x:a},backend:n});const l=(0,s.OBj)().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new dw(a.shape,u):new hw(a.shape,u);return n.runWebGLProgram(l,[a],a.dtype)}};class mw{constructor(e,t){this.variableNames=["Image"],this.outputShape=[],this.customUniforms=[{name:"params",type:"vec4"}];const n=e[1],r=e[2];this.outputShape=e;let s="";s="number"===typeof t?`float outputValue = ${t.toFixed(2)};`:`\n        vec3 fill = vec3(${t.join(",")});\n        float outputValue = fill[coords[3]];`,this.userCode=`\n        void main() {\n          ivec4 coords = getOutputCoords();\n          int x = coords[2];\n          int y = coords[1];\n          float coordXFloat = (float(x) - params[0]) * params[3] -\n            (float(y) - params[1]) * params[2];\n          float coordYFloat = (float(x) - params[0]) * params[2] +\n            (float(y) - params[1]) * params[3];
1\n          int coordX = int(round(coordXFloat + params[0]));\n          int coordY = int(round(coordYFloat + params[1]));\n          ${s}\n          if(coordX >= 0 && coordX < ${r} && coordY >= 0 && coordY < ${n}) {\n            outputValue = getImage(coords[0], coordY, coordX, coords[3]);\n          }\n          setOutput(outputValue);\n        }\n    `}}const gw={kernelName:s.b9H,backendName:"webgl",kernelFunc:({inputs:e,attrs:t,backend:n})=>{const{image:r}=e,{radians:a,fillValue:o,center:i}=t,u=n,l=new mw(r.shape,o),[c,p]=s.Wap.getImageCenter(i,r.shape[1],r.shape[2]),h=[[c,p,Math.sin(a),Math.cos(a)]];return u.runWebGLProgram(l,[r],r.dtype,h)}},yw=tm({opSnippet:"\n  // OpenGL ES does not support round function.\n  // The algorithm is based on banker's rounding.\n  float base = floor(x);\n  if ((x - base) < 0.5) {\n    return floor(x);\n  } else if ((x - base) > 0.5) {\n    return ceil(x);\n  } else {\n    if (mod(base, 2.0) == 0.0) {\n      return base;\n    } else {\n      return base + 1.0;\n    }\n  }\n"}),bw={kernelName:s.e07,backendName:"webgl",kernelFunc:yw},xw=tm({opSnippet:"return inversesqrt(x);",cpuKernelImpl:uf}),ww={kernelName:s.bV0,backendName:"webgl",kernelFunc:xw};class vw{constructor(e,t,n,r,s,a,o=!0){this.variableNames=["updates","indices","defaultValue"],this.outputShape=a;const i=(0,cd.kW)(s.length),u=(0,cd.kW)(a.length);let l="";1===n?l="i":2===n&&(l="i, j");const c=`getIndices(${l})`;let p="";1===r?p="i":2===r&&(p="i, coords[1]");const h=`getUpdates(${p})`,d=t>1?"strides[j]":"strides";this.userCode=`\n        ${i} strides = ${i}(${s});\n\n        void main() {\n          ${u} coords = getOutputCoords();\n          float sum = 0.0;\n          bool found = false;\n          for (int i = 0; i < ${e}; i++) {\n            int flattenedIndex = 0;\n            for (int j = 0; j < ${t}; j++) {\n              int index = round(${c});\n              flattenedIndex += index * ${d};\n            }\n            if (flattenedIndex == coords[0]) {\n              sum += ${h};\n              found = true;\n            }\n          }\n          setOutput(mix(getDefaultValue(), sum, float(found)));\n        }\n      `}}const kw={kernelName:s.xQA,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{indices:a,updates:o}=t,{shape:i}=r,{sliceRank:u,numUpdates:l,sliceSize:c,strides:p,outputSize:h}=s.Wap.calculateShapes(o,a,i),d=[h/c,c];if(0===h)return n.makeTensorInfo(i,a.dtype);const f=pm({inputs:{x:a},backend:n,attrs:{shape:[l,u]}}),m=pm({inputs:{x:o},backend:n,attrs:{shape:[l,c]}}),g=n.makeTensorInfo([],"float32",new Float32Array([0])),y=new vw(l,u,f.shape.length,m.shape.length,p,d),b=n.runWebGLProgram(y,[m,f,g],m.dtype),x=pm({inputs:{x:b},backend:n,attrs:{shape:i}});return n.disposeIntermediateTensorInfo(f),n.disposeIntermediateTensorInfo(m),n.disposeIntermediateTensorInfo(b),n.disposeIntermediateTensorInfo(g),x}};class Iw{constructor(e,t,n,r){this.variableNames=["sortedSequence","values"],this.customUniforms=[{name:"numInputs",type:"int"}],this.outputShape=[e,n];const a=`for (int i = 0; i < ${Math.ceil(Math.log2(t+1))}; ++i) { if (left >= right) break;`,o=2===(0,s.OBj)().getNumber("WEBGL_VERSION")?"while (left < right) {":a,i="left"===r?"<":"<=";this.userCode=`\n       int findBound(int batch, float value) {\n         int left = 0;\n         int right = numInputs;\n         int mid;\n         ${o}\n           mid = (left + right) / 2;\n           if (getSortedSequence(batch, mid) ${i} value) {\n             left = mid + 1;\n           } else {\n             right = mid;\n           }\n         }\n         return right;\n       }\n\n       void main() {\n         ivec2 coords = getOutputCoords();\n         int batch = coords[0];\n         int valueIndex = coords[1];\n\n         float value = getValues(batch, valueIndex);\n\n         setOutput(float(findBound(batch, value)));\n       }\n     `}}const Nw={kernelName:s.nr8,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{sortedSequence:s,values:a}=t,{side:o}=r,i=new Iw(s.shape[0],s.shape[1],a.shape[1],o),u=[[s.shape[1]]];return n.runWebGLProgram(i,[s,a],"int32",u)}};class Sw{constructor(e,t,n){let r,s;if(this.variableNames=["c","a","b"],this.outputShape=t,n>4)throw Error(`Where for rank ${n} is not yet supported`);if(1===n)s="resRC",r="resRC";else{const n=["resRC.x","resRC.y","resRC.z","resRC.w"],a=[],o=[];for(let r=0;r<t.length;r++)o.push(`${n[r]}`),r<e&&a.push(`${n[r]}`);r=a.join(),s=o.join()}const a=(0,cd.kW)(n);this.userCode=`\n      void main() {\n        ${a} resRC = getOutputCoords();\n        float cVal = getC(${r});\n        if (cVal >= 1.0) {\n          setOutput(getA(${s}));\n        } else {\n          setOutput(getB(${s}));\n        }\n      }\n    `}}const Tw={kernelName:s.PhF,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n}=e,{condition:r,t:a,e:o}=t,i=new Sw(r.shape.length,a.shape,a.shape.length);return n.runWebGLProgram(i,[r,a,o],(0,s.x8V)(a.dtype,o.dtype))}},Cw=tm({opSnippet:`\n  // Stable and Attracting Fixed Point (0, 1) for Normalized Weights.\
1n  // see: https://arxiv.org/abs/1706.02515\n  float scaleAlpha = ${s.Wap.SELU_SCALEALPHA};\n  float scale = ${s.Wap.SELU_SCALE};\n  return (x >= 0.0) ? scale * x : scaleAlpha * (exp(x) - 1.0);\n`}),Ew={kernelName:s.oFR,backendName:"webgl",kernelFunc:Cw},$w=tm({opSnippet:"if (isnan(x)) return x;\n  return 1.0 / (1.0 + exp(-1.0 * x));\n",packedOpSnippet:"\n  vec4 result = 1.0 / (1.0 + exp(-1.0 * x));\n  bvec4 isNaN = isnan(x);\n\n  result.r = isNaN.r ? x.r : result.r;\n  result.g = isNaN.g ? x.g : result.g;\n  result.b = isNaN.b ? x.b : result.b;\n  result.a = isNaN.a ? x.a : result.a;\n\n  return result;\n",cpuKernelImpl:cf}),Aw={kernelName:s.a5O,backendName:"webgl",kernelFunc:$w},Dw=tm({opSnippet:"\n  if (isnan(x)) { return 0.0; }\n  return sign(x);\n"}),_w={kernelName:s.i5y,backendName:"webgl",kernelFunc:Dw},Rw=tm({opSnippet:"if (isnan(x)) return x;\n  return sin(x);\n"}),Fw={kernelName:s.RQH,backendName:"webgl",kernelFunc:Rw},Ow=tm({opSnippet:"\n  float e2x = exp(x);\n  return (e2x - 1.0 / e2x) / 2.0;\n"}),Mw={kernelName:s.wYB,backendName:"webgl",kernelFunc:Ow},Bw=tm({opSnippet:"\n  float epsilon = 1.1920928955078125e-7;\n  float threshold = log(epsilon) + 2.0;\n\n  bool too_large = x > -threshold;\n  bool too_small = x < threshold;\n\n  float result;\n  float exp_x = exp(x);\n\n  if (too_large){\n    result = x;\n  }\n  else if (too_small){\n    result = exp_x;\n  }\n  else{\n    result = log(exp_x + 1.0);\n  }\n  return result;\n"}),Lw={kernelName:s.MRv,backendName:"webgl",kernelFunc:Bw},Ww={kernelName:s.TQc,backendName:"webgl",kernelFunc:e=>{const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{blockShape:o,paddings:i}=r;s.D5U.assert(a.shape.length<=4,(()=>"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet"));const u=o.reduce(((e,t)=>e*t)),l=[[0,0]];l.push(...i);for(let s=1+o.length;s<a.shape.length;++s)l.push([0,0]);const c=[],p=Ux({inputs:{x:a},backend:n,attrs:{paddings:l,constantValue:0}}),h=s.Wap.getReshaped(p.shape,o,u,!1),d=s.Wap.getPermuted(h.length,o.length,!1),f=s.Wap.getReshapedPermuted(p.shape,o,u,!1),m=pm({inputs:{x:p},backend:n,attrs:{shape:h}}),g=vm({inputs:{x:m},backend:n,attrs:{perm:d}}),y=pm({inputs:{x:g},backend:n,attrs:{shape:f}});return c.push(p),c.push(m),c.push(g),c.forEach((e=>n.disposeIntermediateTensorInfo(e))),y}};const Pw={kernelName:s.O3z,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n}=e,{indices:r,values:s,denseShape:a,defaultValue:o}=t;if(1!==a.shape.length)throw new Error(`Dense shape must be a vector, saw:\n         ${a.shape}`);if(2!==r.shape.length)throw new Error(`Indices must be a matrix, saw:\n         ${r.shape}`);if(1!==s.shape.length)throw new Error(`Values must be a vector, saw:\n         ${s.shape}`);if(0!==o.shape.length)throw new Error(`Default value must be a scalar, saw:\n        ${o.shape}`);const i=n.readSync(r.dataId),u=n.readSync(s.dataId),l=n.readSync(a.dataId),c=n.readSync(o.dataId)[0],[p,h,d,f,m]=df(i,r.shape,r.dtype,u,s.dtype,l,c);return[n.makeTensorInfo(h,r.dtype,p),n.makeTensorInfo([h[0]],s.dtype,d),n.makeTensorInfo([f.length],"bool",new Uint8Array(f.map((e=>Number(e))))),n.makeTensorInfo([m.length],r.dtype,new Int32Array(m))]}};const Uw={kernelName:s.nhH,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n}=e,{inputIndices:r,inputShape:s,newShape:a}=t;if(2!==r.shape.length)throw new Error(`Input indices should be a matrix but received shape ${r.shape}`);if(1!==s.shape.length)throw new Error(`Input shape should be a vector but received shape ${s.shape}`);if(1!==a.shape.length)throw new Error(`Target shape should be a vector but received shape ${a.shape}`);const o=Array.from(n.readSync(s.dataId)),i=n.readSync(r.dataId),u=Array.from(n.readSync(a.dataId)),[l,c,p]=ff(i,r.shape,r.dtype,o,u);return[n.makeTensorInfo(c,r.dtype,l),n.makeTensorInfo([p.length],a.dtype,new Int32Array(p))]}};const zw={kernelName:s.w3H,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n}=e,{data:r,indices:s,segmentIds:a}=t;if(r.shape.length<1)throw new Error("Data should be at least 1 dimensional but received scalar");if(1!==s.shape.length)throw new Error(`Indices should be a vector but received shape\n              ${s.shape}`);if(1!==a.shape.length)throw new Error(`Segment ids should be a vector but received shape\n              ${a.shape}`);const o=n.readSync(r.dataId),i=n.readSync(s.dataId),u=n.readSync(a.dataId),[l,c]=mf(o,r.shape,r.dtype,i,u,!0);return n.makeTensorInfo(c,r.dtype,l)}};const Vw={kernelName:s.ZjV,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n}=e,{data:r,indices:s,segmentIds:a}=t;if(r.shape.length<1)throw new Error("Data should be at least 1 dimensional but received scalar");
vendor: 6,699 bytes, line 1
1if(1!==s.shape.length)throw new Error(`Indices should be a vector but received shape\n             ${s.shape}`);if(1!==a.shape.length)throw new Error(`Segment ids should be a vector but received shape\n             ${a.shape}`);const o=n.readSync(r.dataId),i=n.readSync(s.dataId),u=n.readSync(a.dataId),[l,c]=mf(o,r.shape,r.dtype,i,u);return n.makeTensorInfo(c,r.dtype,l)}};const Gw={kernelName:s.D2d,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{sparseIndices:a,sparseValues:o,defaultValue:i}=t,{outputShape:u}=r,{sliceRank:l,numUpdates:c,sliceSize:p,strides:h,outputSize:d}=s.Wap.calculateShapes(o,a,u);if("string"===o.dtype){const e=n.bufferSync(a),t=n.bufferSync(o),r=s.D5U.decodeString(n.readSync(i.dataId)[0]),f=lf(e,t,u,d,p,c,l,h,r,false);return n.makeTensorInfo(u,f.dtype,f.values)}const f=new vw(c,l,a.shape.length,o.shape.length,h,[d,1],false),m=n.runWebGLProgram(f,[o,a,i],o.dtype),g=pm({inputs:{x:m},backend:n,attrs:{shape:u}});return n.disposeIntermediateTensorInfo(m),g}};const Hw={kernelName:s.L8s,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{numOrSizeSplits:o,axis:i}=r,u=s.D5U.parseAxisParam(i,a.shape)[0],l=s.Wap.prepareSplitSize(a,o,u),c=a.shape.length,p=new Array(c).fill(0),h=a.shape.slice();return l.map((e=>{const t=[...h];t[u]=e;const r=yg({inputs:{x:a},backend:n,attrs:{begin:p,size:t}});return p[u]+=e,r}))}},jw="return sqrt(x);",Xw=tm({opSnippet:jw,packedOpSnippet:jw,cpuKernelImpl:gf}),qw={kernelName:s.FKq,backendName:"webgl",kernelFunc:Xw},Kw=tm({opSnippet:"return x * x;"}),Qw={kernelName:s.bK0,backendName:"webgl",kernelFunc:Kw},Yw="return (a - b) * (a - b);",Zw=nm({opSnippet:Yw,packedOpSnippet:Yw}),Jw={kernelName:s._tC,backendName:"webgl",kernelFunc:Zw};const ev={kernelName:s.h8e,backendName:"webgl",kernelFunc:function({inputs:e,attrs:t,backend:n}){const{x:r}=e,s=`if (isnan(x)) return x;\n    return x > 0.0 ? 1.0 : float(${t.alpha});\n  `,a=new Ff(r.shape,s);return n.runWebGLProgram(a,[r],r.dtype)}};class tv{constructor(e,t,n){this.variableNames=["x"],this.outputShape=n;const r=n.length,s=(0,cd.kW)(n.length),a=(0,cd.kW)(n.length);let o="";if(1===r)o="coords * strides + begin";else{let e=0;o=n.map(((t,r)=>(e++,1===n.length?`coords * strides[${r}] + begin[${r}]`:`coords[${e-1}] * strides[${r}] + begin[${r}]`))).join(",")}this.userCode=`\n      ${s} begin = ${s}(${e});\n      ${s} strides = ${s}(${t});\n\n      void main() {\n        ${a} coords = getOutputCoords();\n        setOutput(getX(${o}));\n      }\n    `}}const nv={kernelName:s.jQk,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{begin:o,end:i,strides:u,beginMask:l,endMask:c,ellipsisMask:p,newAxisMask:h,shrinkAxisMask:d}=r,{finalShapeSparse:f,finalShape:m,isIdentity:g,sliceDim0:y,isSimpleSlice:b,begin:x,end:w,strides:v}=s.kuN.sliceInfo(a.shape,o,i,u,l,c,p,h,d);let k;if(g)k=pm({inputs:{x:a},backend:n,attrs:{shape:m}});else if(y||b){s.D5U.assert(a.shape.length>=1,(()=>`Input must have rank at least 1, got: ${a.shape.length}`));const e=s.kuN.computeOutShape(x,w,v),t=yg({inputs:{x:a},backend:n,attrs:{begin:x,size:e}});k=pm({inputs:{x:t},backend:n,attrs:{shape:m}}),n.disposeIntermediateTensorInfo(t)}else{if(n.shouldExecuteOnCPU([a])){const e=n.readSync(a.dataId),t=(0,s.f3b)(a.shape,a.dtype,e),r=yf(f,t,v,x);k=n.makeTensorInfo(m,a.dtype,r.values)}else{const e=new tv(x,v,f);k=n.runWebGLProgram(e,[a],a.dtype)}}const I=pm({inputs:{x:k},backend:n,attrs:{shape:m}});return n.disposeIntermediateTensorInfo(k),I}};const rv={kernelName:s._JP,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{separator:s,nGramWidths:a,leftPad:o,rightPad:i,padWidth:u,preserveShortSequences:l}=r,{data:c,dataSplits:p}=t,h=n.readSync(c.dataId),d=n.readSync(p.dataId),[f,m]=bf(h,d,s,a,o,i,u,l);return[n.makeTensorInfo([f.length],"string",f),n.makeTensorInfo(p.shape,"int32",m)]}};const sv={kernelName:s.s1s,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{skipEmpty:s}=r,{input:a,delimiter:o}=t;if("string"!==a.dtype)throw new Error("Input must be of datatype string");if(1!==a.shape.length)throw new Error(`Input must be a vector, got shape: ${a.shape}`);if(0!==o.shape.length)throw new Error(`Delimiter must be a scalar, got shape: ${o.shape}`);const i=n.readSync(a.dataId),u=n.readSync(o.dataId)[0],[l,c,p]=xf(i,u,s),h=c.length;return[n.makeTensorInfo([h,2],"int32",l),n.makeTensorInfo([h],"string",c),n.makeTensorInfo([2],"int32",new Int32Array(p))]}};const av={kernelName:s.XkS,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{numBuckets:s}=r,{input:a}=t;if("string"!==a.dtype)throw new Error("Input must be of datatype string");if(s<=0)throw new Error("Number of buckets must be at least 1");const o=n.readSync(a.dataId),i=wf(o,s);return n.makeTensorInfo(a.shape,"int32",i)}},ov=tm({opSnippet:"return tan(x);"}),iv={kernelName:s.sEM,backendName:"webgl",kernelFunc:ov},uv=tm({opSnippet:"\n  float e2x = exp(-2.0 * abs(x));\n  return sign(x) * (1.0 - e2x) / (1.0 + e2x);\n"}),lv={kernelName:s.MIZ,backendName:"webgl",kernelFunc:uv};class cv{constructor(e,t){this.variableNames=["A"];const n=new Array(e.length);for(let a=0;a<n.length;a++)n[a]=e[a]*t[a];this.outputShape=n,this.rank=n.length;const r=(0,cd.kW)(this.rank),s=function(e){const t=e.length;if(t>5)throw Error(`Tile for rank ${t} is not yet supported`);if(1===t)return`imod(resRC, ${e[0]})`;const n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u"],r=[];for(let s=0;s<e.length;s++)r.push(`imod(${n[s]}, ${e[s]})`);return r.join()}(e);this.userCode=`\n      void main() {\n        ${r} resRC = getOutputCoords();\n        setOutput(getA(${s}));\n      }\n    `}}function pv(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{reps:o}=r;if("string"===a.dtype||a.shape.length>5){const e=n.readSync(a.dataId),t="string"===a.dtype?e.map((e=>s.D5U.decodeString(e))):e,r=(0,s.f3b)(a.shape,a.dtype,t),i=kf(r,o);return n.makeTensorInfo(i.shape,i.dtype,i.values)}const i=new cv(a.shape,o);return n.runWebGLProgram(i,[a],a.dtype)}const hv={kernelName:s.n9L,backendName:"webgl",kernelFunc:pv};class dv{constructor(e){this.variableNames=["x","indices"],this.customUniforms=[{name:"n",type:"int"},{name:"firstPass",type:"int"},{name:"negativeInf",type:"float"},{name:"dir",type:"int"},{name:"inc",type:"int"}],this.outputShape=e,this.userCode="\n       void main() {\n         ivec2 coords = getOutputCoords();\n         int batch = coords[0];\n         int elemIdx = coords[1];\n\n         // We compare elements pair-wise within a group of size 2 * inc.\n         // The comparing rule for each group alternates between ascending\n         // and desce
1nding. Within each group, we compare each pair at\n         // positions i and i+inc. To decide whether an element at position i\n         // is x0 or x1, we mod it by 2 * inc, if the result is smaller than\n         // inc, it is in the first half of the group, we denote it as x0,\n         // otherwise we denote it as x1.\n         // For example, as shown in the Bitonic top K paper referenced above,\n         // Figure5(a) shows that element[1] is in the\n         // second half of the group when group size is 2, but it is in the\n         // first half of the group when group size is 4.\n\n         bool isFirstInPair = imod(elemIdx, 2 * inc) < inc;\n         int i = isFirstInPair ? elemIdx : elemIdx - inc;\n\n         int i0 = firstPass == 1 ? i : int(getIndices(batch, i));\n         int i1 = firstPass == 1 ? i + inc : int(getIndices(batch, i + inc));\n         float x0 = i0 < n ? getX(batch, i0) : negativeInf;\n         float x1 = i1 < n ? getX(batch, i1) : negativeInf;\n\n         // Denotes which direction indices are in (ascending or descending).\n         bool reverse = imod(elemIdx, 2 * dir) >= dir;\n         bool isGreater = x0 > x1 || (x0 == x1 && i1 > i0);\n         if (reverse == isGreater) { // Elements in opposite order of direction\n           int iTemp = i0;\n           i0 = i1;\n           i1 = iTemp;\n         }\n         if (isFirstInPair) {\n            setOutput(float(i0));\n         } else {\n            setOutput(float(i1));\n         }\n       }\n     "}}class fv{constructor(e){this.variableNames=["x","indices"],this.customUniforms=[{name:"n",type:"int"},{name:"firstPass",type:"int"},{name:"k",type:"int"}],this.outputShape=e,this.userCode="\n    void main() {\n         // Takes max of indices (0, k), (1, k + 1), (2, k + 2) ...\n         ivec2 coords = getOutputCoords();\n         int batch = coords[0];\n         int elemIdx = coords[1];\n\n         // The output size is half of the previous size.\n         // If the previous sequence is | | | | _ _ _ _  | | | |  _ _ _ _ (k=4),\n         // we only need to output the indices at positions |, the indices at\n         // positions _ can be thrown away, see Figure5(b) After Phase 2\n         // (Merge phase) in the Bitonic Top K paper referenced above.\n         // For example, the paper shows we only need to output the orange bars.\n         // The output sequence should look like this | | | | | | | |.\n         // Because the sequence is halved, to map the output index back\n         // to the previous sequence to find the corresponding value,\n         // we need to double the index. When we double the index,\n         // we basically interpolate a position, so 2i looks like\n         // | _ | _ | _ | _ | _ | _ | _. We move the | to the first k position\n         // of each 2k positions by - elemIdx % k. E.g. for output at\n         // index 4,5,6,7, we want to get the corresponding element at\n         // original index 8,9,10,11, for output at index 8,9,10,11,\n         // we want to get the corresponding element at original index\n         // 16,17,18,19, so on and so forth.\n\n         int i = elemIdx < k ? elemIdx : (elemIdx * 2 - imod(elemIdx, k));\n         int i0 = firstPass == 1 ? i : int(getIndices(batch, i));\n         int i1 = firstPass == 1 ? i + k : int(getIndices(batch, i + k));\n\n         float x0 = getX(batch, i0);\n         float x1 = i1 < n ? getX(batch, i1) : x0;\n\n         setOutput(x0 >= x1 ? float(i0) : float(i1));\n       }\n     "}}function mv(e,t){null!==t&&e.disposeIntermediateTensorInfo(t)}function gv(e){let t=1;for(;t<e;)t*=2;return t}const yv={kernelName:s.cWu,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{k:o,sorted:i}=r,u=(0,s.OBj)().getNumber("TOPK_LAST_DIM_CPU_HANDOFF_SIZE_THRESHOLD"),l=(0,s.OBj)().getNumber("TOPK_K_CPU_HANDOFF_THRESHOLD"),c=a.shape,p=c[c.length-1];if(n.shouldExecuteOnCPU([a])||p<u||o>l){const e=n.readSync(a.dataId),[t,r]=If(e,c,a.dtype,o,i);return[n.makeTensorInfo(t.shape,t.dtype,t.values),n.makeTensorInfo(r.shape,r.dtype,r.values)]}if(0===o)return c[c.length-1]=0,[n.makeTensorInfo(c,a.dtype,[]),n.makeTensorInfo(c,"int32",[])];if(1===p)return[a,Jy({attrs:{shape:c,dtype:"int32",value:0},backend:n})];const h=n.texData.get(a.dataId),d=null!==h&&h.isPacked,f=d?n.unpackTensor(a):a,m=s.D5U.sizeFromShape(c)/p,g=pm({inputs:{x:f},attrs:{shape:[m,p]},backend:n});d&&mv(n,f);const y=gv(o),b=gv(p);let x=null;const w=()=>null===x?[g,g]:[g,x],v=(e,t,r)=>{const s=w(),a=new dv(r),o=[[p],[null===x?1:0],[Number.NEGATIVE_INFINITY],[e],[t]],i=x;x=n.runWebGLProgram(a,s,"int32",o),mv(n,i)};for(let s=1;s<y;s*=2){const e=2*s;for(let t=s;t>=1;t/=2)v(e,t,[m,b])}for(let s=b;s>y;s/=2){const e=w(),t=new fv([m,s/2]),r=[[p],[null===x?1:0],[y]],a=x;x=n.runWebGLProgram(t,e,"int32",r),mv(n,a);const o=y/2,i=2*o;for(let n=o;n>=1;n/=2)v(i,n,x.shape)}let k=x;x=yg({inputs:{x:x},backend:n,attrs:{begin:0,size:[m,o]}}),mv(n,k);let I=bb({inputs:{x:g,indices:x},backend:n,attrs:{axis:1,batchDims:1}});mv(n,g);const N=c.slice(0,-1);N.push(o),k=x,x=pm({inputs:{x:x},attrs:{shape:N},backend:n}),mv(n,k);const S=I;return I=pm({inputs:{x:I},attrs:{shape:N},backend:n}),mv(n,S),[I,x]}};class bv{constructor(e,t,n,r,s,a){this.variableNames=["Image","Transforms"],this.outputShape=a;const o="nearest"===n?1:2;let i;switch(r){case"constant":i=1;break;case"reflect":i=2;break;case"wrap":i=3;break;case"nearest":i=4;break;default:i=1}this.userCode=`\n            float mapCoord(float outCoord, float len) {\n              float inCoord = outCoord;\n              if(${i} == 2) {\n                if (inCoord < 0.0) {\n                  if (len <= 1.0) {\n                    inCoord = 0.0;\n                  } else {\n                    float sz2 = 2.0 * len;\n                    if (inCoord < sz2) {\n                      inCoord = sz2 * float(int(float(-inCoord / sz2))) +\n                      inCoord;\n                    }\n                    inCoord = inCoord < -len ? inCoord + sz2 : -inCoord - 1.0;\n                  }\n                } else if (inCoord > len - 1.0) {\n                  if (len <= 1.0) {\n                    inCoord = 0.0;\n                  } else {\n                    float sz2 = 2.0 * len;\n                    inCoord -= sz2 * float(int(float(inCoord / sz2)));\n                    if (inCoord >= len) {\n                      inCoord = sz2 - inCoord - 1.0;\n                    }\n                  }\n                }\n                return clamp(inCoord, 0.0, len - 1.0);\n              } else if (${i} == 3) {\n                if (inCoord < 0.0) {\n                  if (len <= 1.0) {\n                    inCoord = 0.0;\n                  } else {\n                    float sz = len - 1.0;\n                    inCoord += len * (float(int(float(-inCoord / sz))) + 1.0);\n                  }\n                } else if (inCoord > len - 1.0) {\n                  if (len <= 1.0) {\n                    inCoord = 0.0;\n                  } else {\n                    float sz = len - 1.0;\n                    inCoord -= len * float(int(float(inCoord / sz)));\n                  }\n                }\n                return clamp(inCoord, 0.0, len - 1.0);\n              } else if (${i} == 4) {\n                return clamp(outCoord, 0.0, len - 1.0);\n              } else {\n                return outCoord;\n              }\n            }\n\n            float readWithFillValue(int batch, int coordY, int coordX,\n              int channel) {\n              float outputValue;\n              if (0 <= coordY && coordY < ${e} && 0 <= coordX && coordX < ${t}
1) {\n                  outputValue = getImage(batch, coordY, coordX, channel);\n              } else {\n                outputValue = float(${s});\n              }\n              return outputValue;\n            }\n\n            void main() {\n              ivec4 coords = getOutputCoords();\n              float outputValue;\n              int batch = coords[0];\n              int x = coords[2];\n              int y = coords[1];\n              int channel = coords[3];\n              float xf = float(x);\n              float yf = float(y);\n              float a1 = getTransforms(batch, 0);\n              float a2 = getTransforms(batch, 1);\n              float a3 = getTransforms(batch, 2);\n              float b1 = getTransforms(batch, 3);\n              float b2 = getTransforms(batch, 4);\n              float b3 = getTransforms(batch, 5);\n              float c1 = getTransforms(batch, 6);\n              float c2 = getTransforms(batch, 7);\n              float projection = c1 * xf + c2 * yf + 1.0;\n              if (projection == 0.0) {\n                outputValue = float(${s});\n              } else {\n                float inX = (a1 * xf + a2 * yf + a3) / projection;\n                float inY = (b1 * xf + b2 * yf + b3) / projection;\n                float mapX = mapCoord(inX, float(${t}));\n                float mapY = mapCoord(inY, float(${e}));\n\n                if (${o} == 1) {\n                  int coordY = int(round(mapY));
1\n                  int coordX = int(round(mapX));\n                  outputValue = readWithFillValue(batch, coordY, coordX,\n                    channel);\n                } else {\n                  float yFloor = floor(mapY);\n                  float xFloor = floor(mapX);\n                  float yCeil = yFloor + 1.0;\n                  float xCeil = xFloor + 1.0;\n                  float valueYFloor = (xCeil - mapX) *\n                  readWithFillValue(batch, int(yFloor), int(xFloor), channel) +\n                  (mapX - xFloor) *\n                  readWithFillValue(batch, int(yFloor), int(xCeil), channel);\n                  float valueYCeil = (xCeil - mapX) *\n                  readWithFillValue(batch, int(yCeil), int(xFloor), channel) +\n                  (mapX - xFloor) *\n                  readWithFillValue(batch, int(yCeil), int(xCeil), channel);\n                  outputValue = (yCeil - mapY) * valueYFloor +\n                  (mapY - yFloor) * valueYCeil;\n                }\n              }\n              setOutput(outputValue);\n            }\n        `}}const xv={kernelName:s.wx7,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{image:s,transforms:a}=t,{interpolation:o,fillMode:i,fillValue:u,outputShape:l}=r,[c,p,h,d]=s.shape,[f,m]=null!=l?l:[p,h],g=new bv(p,h,o,i,u,[c,f,m,d]);return n.runWebGLProgram(g,[s,a],"float32")}};const wv={kernelName:s.kpP,backendName:"webgl",kernelFunc:function(e){const{inputs:t,attrs:n,backend:r}=e,{axis:s}=n,{x:a}=t;id(a,"unique"),console.warn("WARNING: ","UI might be locked temporarily as data is being downloaded");const o=r.readSync(a.dataId),{outputValues:i,outputShape:u,indices:l}=Sf(o,s,a.shape,a.dtype);return[r.makeTensorInfo(u,a.dtype,i),r.makeTensorInfo([l.length],"int32",l)]}};const vv={kernelName:s.ToN,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{value:s}=t;let{axis:a}=r;a<0&&(a+=s.shape.length);const o=s,i=o.shape.length,u=s.shape[a],l=new Array(i-1);let c=0;for(let m=0;m<i;m++)m!==a&&(l[c++]=o.shape[m]);const p=[],h=new Array(i).fill(0),d=o.shape.slice();d[a]=1;const f=new Array(u);for(let m=0;m<f.length;m++){h[a]=m;const e=yg({inputs:{x:o},backend:n,attrs:{begin:h,size:d}}),t=pm({inputs:{x:e},backend:n,attrs:{shape:l}});f[m]=t,p.push(e)}return p.forEach((e=>n.disposeIntermediateTensorInfo(e))),f}};class kv{constructor(e,t){this.variableNames=["x","segmentIds"];const n=e.windowSize,r=e.batchSize,s=e.inSize,a=e.numSegments,o=a*Math.ceil(s/n);this.outputShape=[r,o];const i=4*Math.floor(n/4),u=n%4,l="\n        sumValue += dot(values, segFilter);\n    ";let c="";s%n>0&&(c=`\n        if (inIdx < 0 || inIdx >= ${s}) {\n          return initializationValue;\n        }\n      `);let p="";s%n>0&&(p=`\n        if (inIdx < 0 || inIdx >= ${s}) {\n          return -1.0;\n        }\n      `),this.userCode=`\n      const float initializationValue = 0.0;\n\n      float getValue(int batch, int inIdx) {\n        ${c}\n        return getX(batch, inIdx);\n      }\n\n      float getSegmentIdAtIndex(int inIdx) {\n        ${p}\n        return getSegmentIds(inIdx);\n      }\n\n      void main() {\n        ivec2 coords = getOutputCoords();\n        int batch = coords[0];\n        int outIdx = coords[1];\n        int inOffset = int(floor(float(outIdx) / float(\n          ${a})) * float(${n}));\n        int currentSeg = int(mod(float(outIdx), float(${a})));\n\n        float sumValue = 0.0;\n\n        for (int i = 0; i < ${i}; i += 4) {\n          int inIdx = inOffset + i;\n          vec4 values = vec4(\n            getValue(batch, inIdx),\n            getValue(batch, inIdx + 1),\n            getValue(batch, inIdx + 2),\n            getValue(batch, inIdx + 3)\n          );\n\n          vec4 segFilter = vec4(\n            int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n            int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n            int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,\n            int(getSegmentIdAtIndex(inIdx + 3)) == currentSeg ? 1 : 0\n          );\n\n          ${l}\n        }\n\n        int inIdx = inOffset + ${i};\n        if (${1===u}) {\n          vec4 values = vec4(\n            getValue(batch, inIdx),\n            initializationValue,\n            initializationValue,\n            initializationValue\n          );\n\n          int inIdxSeg = int(getSegmentIdAtIndex(inIdx));\n\n          vec4 segFilter = vec4(\n            int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n            0,\n            0,\n            0\n          );\n\n          ${l}\n        } else if (${2===u}) {\n          vec4 values = vec4(\n            getValue(batch, inIdx),\n            getValue(batch, inIdx + 1),\n            initializationValue,\n            initializationValue\n          );\n\n          vec4 segFilter = vec4(\n            int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n            int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n              0,\n              0\n          );\n\n          ${l}\n        } else if (${3===u}) {\n          vec4 values = vec4(\n            getValue(batch, inIdx),\n            getValue(batch, inIdx + 1),\n            getValue(batch, inIdx + 2),\n            initializationValue\n          );\n\n          vec4 segFilter = vec4(\n            int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n            int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n            int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,\n            0\n          );\n\n          ${l}\n        }\n        setOutput(sumValue);\n      }\n    `}}const Iv=[Nm,Tm,Em,Am,Rm,Mm,Bm,Lm,Gm,Hm,Xm,Km,Ym,Jm,tg,sg,ag,ug,lg,cg,dg,xg,wg,vg,Tg,$g,_g,qf,Og,Vg,Yg,ny,ry,sy,ay,oy,uy,cy,hy,by,xy,wy,ky,Sy,Ey,$y,Dy,Ry,Fy,My,By,Wy,Uy,Vy,Hy,qy,Yy,eb,nb,ab,ib,cb,db,fb,gb,xb,vb,Ib,jf,Nb,Pg,Tb,Eb,Ab,Yf,_b,Fb,Ob,Bb,Wb,Ub,Vb,Hb,qb,Qb,Zb,ex,tx,nx,ax,ox,ix,ux,lx,px,fx,gx,Sx,cm,Tx,Ex,Ax,_x,Ig,Fx,Bx,Lx,zx,Gx,em,Hx,jx,Xx,Kx,Sg,xx,Yx,Jx,tw,hm,sw,ow,lw,pw,fw,gw,bw,ww,kw,Nw,Tw,Ew,Aw,_w,Fw,Mw,bg,Nx,Lw,Ww,Pw,Uw,zw,Vw,Gw,Hw,qw,Qw,Jw,ev,nv,rv,sv,av,kx,wm,iv,lv,hv,yv,xv,km,wv,vv,{kernelName:s.Qvg,backendName:"webgl",kernelFunc:function(e){const{inputs:t,backend:n,attrs:r}=e,{x:a,segmentIds:o}=t,{numSegments:i}=r,u=a.shape.length,l=[];let c=0;const p=s.Wap.getAxesPermutation([c],u);let h=a;null!=p&&(h=vm({inputs:{x:a},backend:n,attrs:{perm:p}}),l.push(h),c=s.Wap.getInnerMostAxes(1,u)[0]);const d=s.Wap.segment_util.computeOutShape(h.shape,c,i),f=s.D5U.sizeFromShape([h.shape[c]]),m=pm({inputs:{x:h},backend:n,attrs:{shape:[-1,f]}});l.push(m);const g=(0,s.z4k)(a.dtype),y=(e,t,r,a,o)=>{const i=e.shape[0],u=e.shape[1],c=s.Wap.segment_util.segOpComputeOptimalWindowSize(u,o),p=new kv({windowSize:c,inSize:u,batchSize:i,numSegments:o},t),h=n.compileAndRun(p,[e,r],a);if(l.push(h),h.shape[1]===o)return h;const d=qx({backend:n,attrs:{start:0,stop:o,step:1,dtype:"float32"}}),f=pv({inputs:{x:d},backend:n,attrs:{reps:[u/c]}});l.push(d),l.push(f);return y(h,t,f,a,o)},b=pm({inputs:{x:y(m,"unsortedSegmentSum",o,g,i)},backend:n,attrs:{shape:d}});let x=b;if(null!=p){l.push(b);const e=s.Wap.getUndoAxesPermutation(p);x=vm({inputs:{x:x},backend:n,attrs:{perm:e}})}return l.forEach((e=>n.disposeIntermediateTensorInfo(e))),x}},Mx];for(const Nv of Iv)(0,s.wCN)(Nv);s.jTM,Ia.i,Na.gJ},9742:function(e,t){"use strict";t.byteLength=function(e){var t=u(e),n=t[0],r=t[1];return 3*(n+r)/4-r},t.toByteArray=function(e){var t,n,a=u(e),o=a[0],i=a[1],l=new s(function(e,t,n){return 3*(t+n)/4-n}(0,o,i)),c=0,p=i>0?o-4:o;for(n=0;n<p;n+=4)t=r[e.charCodeAt(n)]<<18|r[e.charCodeAt(n+1)]<<12|r[e.charCodeAt(n+2)]<<6|r[e.charCodeAt(n+3)],l[c++]=t>>16&255,l[c++]=t>>8&255,l[c++]=255&t;2===i&&(t=r[e.charCodeAt(n)]<<2|r[e.charCodeAt(n+1)]>>4,l[c++]=255&t);1===i&&(t=r[e.charCodeAt(n)]<<10|r[e.charCodeAt(n+1)]<<4|r[e.charCodeAt(n+2)]>>2,l[c++]=t>>8&255,l[c++]=255&t);return l},t.fromByteArray=function(e){for(var t,r=e.length,s=r%3,a=[],o=16383,i=0,u=r-s;i<u;i+=o)a.push(l(e,i,i+o>u?u:i+o));1===s?(t=e[r-1],a.push(n[t>>2]+n[t<<4&63]+"==")):2===s&&(t=(e[r-2]<<8)+e[r-1],a.push(n[t>>10]+n[t>>4&63]+n[t<<2&63]+"="));return a.join("")};for(var n=[],r=[],s="undefined"!==typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
1+/",o=0,i=a.length;o<i;++o)n[o]=a[o],r[a.charCodeAt(o)]=o;function u(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function l(e,t,r){for(var s,a,o=[],i=t;i<r;i+=3)s=(e[i]<<16&16711680)+(e[i+1]<<8&65280)+(255&e[i+2]),o.push(n[(a=s)>>18&63]+n[a>>12&63]+n[a>>6&63]+n[63&a]);return o.join("")}r["-".charCodeAt(0)]=62,r["_".charCodeAt(0)]=63},8764:function(e,t,n){"use strict";var r=n(9742),s=n(645),a="function"===typeof Symbol&&"function"===typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;t.Buffer=u,t.SlowBuffer=function(e){+e!=e&&(e=0);return u.alloc(+e)},t.INSPECT_MAX_BYTES=50;var o=2147483647;function i(e){if(e>o)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return Object.setPrototypeOf(t,u.prototype),t}function u(e,t,n){if("number"===typeof e){if("string"===typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return p(e)}return l(e,t,n)}function l(e,t,n){if("string"===typeof e)return function(e,t){"string"===typeof t&&""!==t||(t="utf8");if(!u.isEncoding(t))throw new TypeError("Unknown encoding: "+t);var n=0|m(e,t),r=i(n),s=r.write(e,t);s!==n&&(r=r.slice(0,s));return r}(e,t);if(ArrayBuffer.isView(e))return h(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(z(e,ArrayBuffer)||e&&z(e.buffer,ArrayBuffer))return d(e,t,n);if("undefined"!==typeof SharedArrayBuffer&&(z(e,SharedArrayBuffer)||e&&z(e.buffer,SharedArrayBuffer)))return d(e,t,n);if("number"===typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');var r=e.valueOf&&e.valueOf();if(null!=r&&r!==e)return u.from(r,t,n);var s=function(e){if(u.isBuffer(e)){var t=0|f(e.length),n=i(t);return 0===n.length||e.copy(n,0,0,t),n}if(void 0!==e.length)return"number"!==typeof e.length||V(e.length)?i(0):h(e);if("Buffer"===e.type&&Array.isArray(e.data))return h(e.data)}(e);if(s)return s;if("undefined"!==typeof Symbol&&null!=Symbol.toPrimitive&&"function"===typeof e[Symbol.toPrimitive])return u.from(e[Symbol.toPrimitive]("string"),t,n);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function c(e){if("number"!==typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function p(e){return c(e),i(e<0?0:0|f(e))}function h(e){for(var t=e.length<0?0:0|f(e.length),n=i(t),r=0;r<t;r+=1)n[r]=255&e[r];return n}function d(e,t,n){if(t<0||e.byteLength<t)throw new RangeError('"offset" is outside of buffer bounds');if(e.byteLength<t+(n||0))throw new RangeError('"length" is outside of buffer bounds');var r;return r=void 0===t&&void 0===n?new Uint8Array(e):void 0===n?new Uint8Array(e,t):new Uint8Array(e,t,n),Object.setPrototypeOf(r,u.prototype),r}function f(e){if(e>=o)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o.toString(16)+" bytes");return 0|e}function m(e,t){if(u.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||z(e,ArrayBuffer))return e.byteLength;if("string"!==typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var n=e.length,r=arguments.length>2&&!0===arguments[2];if(!r&&0===n)return 0;for(var s=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":return W(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return P(e).length;default:if(s)return r?-1:W(e).length;t=(""+t).toLowerCase(),s=!0}}function g(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return D(this,t,n);case"utf8":case"utf-8":return C(this,t,n);case"ascii":return $(this,t,n);case"latin1":case"binary":return A(this,t,n);case"base64":return T(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return _(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function y(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}
vendor: 1,992 bytes, line 1
1function b(e,t,n,r,s){if(0===e.length)return-1;if("string"===typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),V(n=+n)&&(n=s?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(s)return-1;n=e.length-1}else if(n<0){if(!s)return-1;n=0}if("string"===typeof t&&(t=u.from(t,r)),u.isBuffer(t))return 0===t.length?-1:x(e,t,n,r,s);if("number"===typeof t)return t&=255,"function"===typeof Uint8Array.prototype.indexOf?s?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):x(e,[t],n,r,s);throw new TypeError("val must be string, number or Buffer")}function x(e,t,n,r,s){var a,o=1,i=e.length,u=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;o=2,i/=2,u/=2,n/=2}function l(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(s){var c=-1;for(a=n;a<i;a++)if(l(e,a)===l(t,-1===c?0:a-c)){if(-1===c&&(c=a),a-c+1===u)return c*o}else-1!==c&&(a-=a-c),c=-1}else for(n+u>i&&(n=i-u),a=n;a>=0;a--){for(var p=!0,h=0;h<u;h++)if(l(e,a+h)!==l(t,h)){p=!1;break}if(p)return a}return-1}function w(e,t,n,r){n=Number(n)||0;var s=e.length-n;r?(r=Number(r))>s&&(r=s):r=s;var a=t.length;r>a/2&&(r=a/2);for(var o=0;o<r;++o){var i=parseInt(t.substr(2*o,2),16);if(V(i))return o;e[n+o]=i}return o}function v(e,t,n,r){return U(W(t,e.length-n),e,n,r)}function k(e,t,n,r){return U(function(e){for(var t=[],n=0;n<e.length;++n)t.push(255&e.charCodeAt(n));return t}(t),e,n,r)}function I(e,t,n,r){return k(e,t,n,r)}function N(e,t,n,r){return U(P(t),e,n,r)}function S(e,t,n,r){return U(function(e,t){for(var n,r,s,a=[],o=0;o<e.length&&!((t-=2)<0);++o)r=(n=e.charCodeAt(o))>>8,s=n%256,a.push(s),a.push(r);return a}(t,e.length-n),e,n,r)}function T(e,t,n){return 0===t&&n===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,n))}function C(e,t,n){n=Math.min(e.length,n);for(var r=[],s=t;s<n;){var a,o,i,u,l=e[s],c=null,p=l>239?4:l>223?3:l>191?2:1;if(s+p<=n)switch(p){case 1:l<128&&(c=l);break;
vendor: 13,196 bytes, line 1
1case 2:128===(192&(a=e[s+1]))&&(u=(31&l)<<6|63&a)>127&&(c=u);break;case 3:a=e[s+1],o=e[s+2],128===(192&a)&&128===(192&o)&&(u=(15&l)<<12|(63&a)<<6|63&o)>2047&&(u<55296||u>57343)&&(c=u);break;case 4:a=e[s+1],o=e[s+2],i=e[s+3],128===(192&a)&&128===(192&o)&&128===(192&i)&&(u=(15&l)<<18|(63&a)<<12|(63&o)<<6|63&i)>65535&&u<1114112&&(c=u)}null===c?(c=65533,p=1):c>65535&&(c-=65536,r.push(c>>>10&1023|55296),c=56320|1023&c),r.push(c),s+=p}return function(e){var t=e.length;if(t<=E)return String.fromCharCode.apply(String,e);var n="",r=0;for(;r<t;)n+=String.fromCharCode.apply(String,e.slice(r,r+=E));return n}(r)}t.kMaxLength=o,u.TYPED_ARRAY_SUPPORT=function(){try{var e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),42===e.foo()}catch(n){return!1}}(),u.TYPED_ARRAY_SUPPORT||"undefined"===typeof console||"function"!==typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(u.prototype,"parent",{enumerable:!0,get:function(){if(u.isBuffer(this))return this.buffer}}),Object.defineProperty(u.prototype,"offset",{enumerable:!0,get:function(){if(u.isBuffer(this))return this.byteOffset}}),u.poolSize=8192,u.from=function(e,t,n){return l(e,t,n)},Object.setPrototypeOf(u.prototype,Uint8Array.prototype),Object.setPrototypeOf(u,Uint8Array),u.alloc=function(e,t,n){return function(e,t,n){return c(e),e<=0?i(e):void 0!==t?"string"===typeof n?i(e).fill(t,n):i(e).fill(t):i(e)}(e,t,n)},u.allocUnsafe=function(e){return p(e)},u.allocUnsafeSlow=function(e){return p(e)},u.isBuffer=function(e){return null!=e&&!0===e._isBuffer&&e!==u.prototype},u.compare=function(e,t){if(z(e,Uint8Array)&&(e=u.from(e,e.offset,e.byteLength)),z(t,Uint8Array)&&(t=u.from(t,t.offset,t.byteLength)),!u.isBuffer(e)||!u.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;for(var n=e.length,r=t.length,s=0,a=Math.min(n,r);s<a;++s)if(e[s]!==t[s]){n=e[s],r=t[s];break}return n<r?-1:r<n?1:0},u.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},u.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return u.alloc(0);var n;if(void 0===t)for(t=0,n=0;n<e.length;++n)t+=e[n].length;var r=u.allocUnsafe(t),s=0;for(n=0;n<e.length;++n){var a=e[n];if(z(a,Uint8Array)&&(a=u.from(a)),!u.isBuffer(a))throw new TypeError('"list" argument must be an Array of Buffers');a.copy(r,s),s+=a.length}return r},u.byteLength=m,u.prototype._isBuffer=!0,u.prototype.swap16=function(){var e=this.length;if(e%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)y(this,t,t+1);return this},u.prototype.swap32=function(){var e=this.length;if(e%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)y(this,t,t+3),y(this,t+1,t+2);return this},u.prototype.swap64=function(){var e=this.length;if(e%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)y(this,t,t+7),y(this,t+1,t+6),y(this,t+2,t+5),y(this,t+3,t+4);return this},u.prototype.toString=function(){var e=this.length;return 0===e?"":0===arguments.length?C(this,0,e):g.apply(this,arguments)},u.prototype.toLocaleString=u.prototype.toString,u.prototype.equals=function(e){if(!u.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===u.compare(this,e)},u.prototype.inspect=function(){var e="",n=t.INSPECT_MAX_BYTES;return e=this.toString("hex",0,n).replace(/(.{2})/g,"$1 ").trim(),this.length>n&&(e+=" ... "),"<Buffer "+e+">"},a&&(u.prototype[a]=u.prototype.inspect),u.prototype.compare=function(e,t,n,r,s){if(z(e,Uint8Array)&&(e=u.from(e,e.offset,e.byteLength)),!u.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===s&&(s=this.length),t<0||n>e.length||r<0||s>this.length)throw new RangeError("out of range index");if(r>=s&&t>=n)return 0;if(r>=s)return-1;if(t>=n)return 1;if(this===e)return 0;for(var a=(s>>>=0)-(r>>>=0),o=(n>>>=0)-(t>>>=0),i=Math.min(a,o),l=this.slice(r,s),c=e.slice(t,n),p=0;p<i;++p)if(l[p]!==c[p]){a=l[p],o=c[p];break}return a<o?-1:o<a?1:0},u.prototype.includes=function(e,t,n){return-1!==this.indexOf(e,t,n)},u.prototype.indexOf=function(e,t,n){return b(this,e,t,n,!0)},u.prototype.lastIndexOf=function(e,t,n){return b(this,e,t,n,!1)},u.prototype.write=function(e,t,n,r){if(void 0===t)r="utf8",n=this.length,t=0;else if(void 0===n&&"string"===typeof t)r=t,n=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(n)?(n>>>=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var s=this.length-t;if((void 0===n||n>s)&&(n=s),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var a=!1;;)switch(r){case"hex":return w(this,e,t,n);case"utf8":case"utf-8":return v(this,e,t,n);case"ascii":return k(this,e,t,n);case"latin1":case"binary":return I(this,e,t,n);case"base64":return N(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return S(this,e,t,n);default:if(a)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),a=!0}},u.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var E=4096;function $(e,t,n){var r="";n=Math.min(e.length,n);for(var s=t;s<n;++s)r+=String.fromCharCode(127&e[s]);return r}function A(e,t,n){var r="";n=Math.min(e.length,n);for(var s=t;s<n;++s)r+=String.fromCharCode(e[s]);return r}function D(e,t,n){var r=e.length;(!t||t<0)&&(t=0),(!n||n<0||n>r)&&(n=r);for(var s="",a=t;a<n;++a)s+=G[e[a]];return s}function _(e,t,n){for(var r=e.slice(t,n),s="",a=0;a<r.length;a+=2)s+=String.fromCharCode(r[a]+256*r[a+1]);return s}function R(e,t,n){if(e%1!==0||e<0)throw new RangeError("offset is not uint");if(e+t>n)throw new RangeError("Trying to access beyond buffer length")}function F(e,t,n,r,s,a){if(!u.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>s||t<a)throw new RangeError('"value" argument is out of bounds');if(n+r>e.length)throw new RangeError("Index out of range")}function O(e,t,n,r,s,a){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function M(e,t,n,r,a){return t=+t,n>>>=0,a||O(e,0,n,4),s.write(e,t,n,r,23,4),n+4}function B(e,t,n,r,a){return t=+t,n>>>=0,a||O(e,0,n,8),s.write(e,t,n,r,52,8),n+8}u.prototype.slice=function(e,t){var n=this.length;(e=~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t<e&&(t=e);var r=this.subarray(e,t);return Object.setPrototypeOf(r,u.prototype),r},u.prototype.readUIntLE=function(e,t,n){e>>>=0,t>>>=0,n||R(e,t,this.length);for(var r=this[e],s=1,a=0;++a<t&&(s*=256);)r+=this[e+a]*s;return r},u.prototype.readUIntBE=function(e,t,n){e>>>=0,t>>>=0,n||R(e,t,this.length);for(var r=this[e+--t],s=1;t>0&&(s*=256);)r+=this[e+--t]*s;return r},u.prototype.readUInt8=function(e,t){return e>>>=0,t||R(e,1,this.length),this[e]},u.prototype.readUInt16LE=function(e,t){return e>>>=0,t||R(e,2,this.length),this[e]|this[e+1]<<8},u.prototype.readUInt16BE=function(e,t){return e>>>=0,t||R(e,2,this.length),this[e]<<8|this[e+1]},u.prototype.readUInt32LE=function(e,t){return e>>>=0,t||R(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},u.prototype.readUInt32BE=function(e,t){return e>>>=0,t||R(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},u.prototype.readIntLE=function(e,t,n){e>>>=0,t>>>=0,n||R(e,t,this.length);for(var r=this[e],s=1,a=0;++a<t&&(s*=256);)r+=this[e+a]*s;return r>=(s*=128)&&(r-=Math.pow(2,8*t)),r},u.prototype.readIntBE=function(e,t,n){e>>>=0,t>>>=0,n||R(e,t,this.length);for(var r=t,s=1,a=this[e+--r];r>0&&(s*=256);)a+=this[e+--r]*s;return a>=(s*=128)&&(a-=Math.pow(2,8*t)),a},u.prototype.readInt8=function(e,t){return e>>>=0,t||R(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},u.prototype.readInt16LE=function(e,t){e>>>=0,t||R(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},u.prototype.readInt16BE=function(e,t){e>>>=0,t||R(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},u.prototype.readInt32LE=function(e,t){return e>>>=0,t||R(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},u.prototype.readInt32BE=function(e,t){return e>>>=0,t||R(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},u.prototype.readFloatLE=function(e,t){return e>>>=0,t||R(e,4,this.length),s.read(this,e,!0,23,4)},u.prototype.readFloatBE=function(e,t){return e>>>=0,t||R(e,4,this.length),s.read(this,e,!1,23,4)},u.prototype.readDoubleLE=function(e,t){return e>>>=0,t||R(e,8,this.length),s.read(this,e,!0,52,8)},u.prototype.readDoubleBE=function(e,t){return e>>>=0,t||R(e,8,this.length),s.read(this,e,!1,52,8)},u.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t>>>=0,n>>>=0,r)||F(this,e,t,n,Math.pow(2,8*n)-1,0);var s=1,a=0;for(this[t]=255&e;++a<n&&(s*=256);)this[t+a]=e/s&255;return t+n},u.prototype.writeUIntBE=function(e,t,n,r){(e=+e,t>>>=0,n>>>=0,r)||F(this,e,t,n,Math.pow(2,8*n)-1,0);var s=n-1,a=1;for(this[t+s]=255&e;--s>=0&&(a*=256);)this[t+s]=e/a&255;return t+n},u.prototype.writeUInt8=function(e,t,n){return e=+e,t>>>=0,n||F(this,e,t,1,255,0),this[t]=255&e,t+1},u.prototype.writeUInt16LE=function(e,t,n){return e=+e,t>>>=0,n||F(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},u.prototype.writeUInt16BE=function(e,t,n){return e=+e,t>>>=0,n||F(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},u.prototype.writeUInt32LE=function(e,t,n){return e=+e,t>>>=0,n||F(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},u.prototype.writeUInt32BE=function(e,t,n){return e=+e,t>>>=0,n||F(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},u.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t>>>=0,!r){var s=Math.pow(2,8*n-1);F(this,e,t,n,s-1,-s)}var a=0,o=1,i=0;for(this[t]=255&e;++a<n&&(o*=256);)e<0&&0===i&&0!==this[t+a-1]&&(i=1),this[t+a]=(e/o>>0)-i&255;return t+n},u.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t>>>=0,!r){var s=Math.pow(2,8*n-1);F(this,e,t,n,s-1,-s)}var a=n-1,o=1,i=0;for(this[t+a]=255&e;--a>=0&&(o*=256);)e<0&&0===i&&0!==this[t+a+1]&&(i=1),this[t+a]=(e/o>>0)-i&255;return t+n},u.prototype.writeInt8=function(e,t,n){return e=+e,t>>>=0,n||F(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},u.prototype.writeInt16LE=function(e,t,n){return e=+e,t>>>=0,n||F(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},u.prototype.writeInt16BE=function(e,t,n){return e=+e,t>>>=0,n||F(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},u.prototype.writeInt32LE=function(e,t,n){return e=+e,t>>>=0,n||F(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},u.prototype.writeInt32BE=function(e,t,n){return e=+e,t>>>=0,n||F(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},u.prototype.writeFloatLE=function(e,t,n){return M(this,e,t,!0,n)},u.prototype.writeFloatBE=function(e,t,n){return M(this,e,t,!1,n)},u.prototype.writeDoubleLE=function(e,t,n){return B(this,e,t,!0,n)},u.prototype.writeDoubleBE=function(e,t,n){return B(this,e,t,!1,n)},u.prototype.copy=function(e,t,n,r){if(!u.isBuffer(e))throw new TypeError("argument should be a Buffer");if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t<r-n&&(r=e.length-t+n);var s=r-n;if(this===e&&"function"===typeof Uint8Array.prototype.copyWithin)this.copyWithin(t,n,r);else if(this===e&&n<t&&t<r)for(var a=s-1;a>=0;--a)e[a+t]=this[a+n];else Uint8Array.prototype.set.call(e,this.subarray(n,r),t);return s},u.prototype.fill=function(e,t,n,r){if("string"===typeof e){if("string"===typeof t?(r=t,t=0,n=this.length):"string"===typeof n&&(r=n,n=this.length),void 0!==r&&"string"!==typeof r)throw new TypeError("encoding must be a string");if("string"===typeof r&&!u.isEncoding(r))throw new TypeError("Unknown encoding: "+r);if(1===e.length){var s=e.charCodeAt(0);("utf8"===r&&s<128||"latin1"===r)&&(e=s)}}else"number"===typeof e?e&=255:"boolean"===typeof e&&(e=Number(e));if(t<0||this.length<t||this.length<n)throw new RangeError("Out of range index");if(n<=t)return this;var a;if(t>>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"===typeof e)for(a=t;a<n;++a)this[a]=e;else{var o=u.isBuffer(e)?e:u.from(e,r),i=o.length;
vendor: 12,780 bytes, line 1
1if(0===i)throw new TypeError('The value "'+e+'" is invalid for argument "value"');for(a=0;a<n-t;++a)this[a+t]=o[a%i]}return this};var L=/[^+/0-9A-Za-z-_]/g;function W(e,t){var n;t=t||1/0;for(var r=e.length,s=null,a=[],o=0;o<r;++o){if((n=e.charCodeAt(o))>55295&&n<57344){if(!s){if(n>56319){(t-=3)>-1&&a.push(239,191,189);continue}if(o+1===r){(t-=3)>-1&&a.push(239,191,189);continue}s=n;continue}if(n<56320){(t-=3)>-1&&a.push(239,191,189),s=n;continue}n=65536+(s-55296<<10|n-56320)}else s&&(t-=3)>-1&&a.push(239,191,189);if(s=null,n<128){if((t-=1)<0)break;a.push(n)}else if(n<2048){if((t-=2)<0)break;a.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;a.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;a.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return a}function P(e){return r.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(L,"")).length<2)return"";for(;e.length%4!==0;)e+="=";return e}(e))}function U(e,t,n,r){for(var s=0;s<r&&!(s+n>=t.length||s>=e.length);++s)t[s+n]=e[s];return s}function z(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function V(e){return e!==e}var G=function(){for(var e="0123456789abcdef",t=new Array(256),n=0;n<16;++n)for(var r=16*n,s=0;s<16;++s)t[r+s]=e[n]+e[s];return t}()},645:function(e,t){t.read=function(e,t,n,r,s){var a,o,i=8*s-r-1,u=(1<<i)-1,l=u>>1,c=-7,p=n?s-1:0,h=n?-1:1,d=e[t+p];for(p+=h,a=d&(1<<-c)-1,d>>=-c,c+=i;c>0;a=256*a+e[t+p],p+=h,c-=8);for(o=a&(1<<-c)-1,a>>=-c,c+=r;c>0;o=256*o+e[t+p],p+=h,c-=8);if(0===a)a=1-l;else{if(a===u)return o?NaN:1/0*(d?-1:1);o+=Math.pow(2,r),a-=l}return(d?-1:1)*o*Math.pow(2,a-r)},t.write=function(e,t,n,r,s,a){var o,i,u,l=8*a-s-1,c=(1<<l)-1,p=c>>1,h=23===s?Math.pow(2,-24)-Math.pow(2,-77):0,d=r?0:a-1,f=r?1:-1,m=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(i=isNaN(t)?1:0,o=c):(o=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-o))<1&&(o--,u*=2),(t+=o+p>=1?h/u:h*Math.pow(2,1-p))*u>=2&&(o++,u/=2),o+p>=c?(i=0,o=c):o+p>=1?(i=(t*u-1)*Math.pow(2,s),o+=p):(i=t*Math.pow(2,p-1)*Math.pow(2,s),o=0));s>=8;e[n+d]=255&i,d+=f,i/=256,s-=8);for(o=o<<s|i,l+=s;l>0;e[n+d]=255&o,d+=f,o/=256,l-=8);e[n+d-f]|=128*m}},3720:function(e){e.exports=n;var t=null;try{t=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(S){}function n(e,t,n){this.low=0|e,this.high=0|t,this.unsigned=!!n}function r(e){return!0===(e&&e.__isLong__)}n.prototype.__isLong__,Object.defineProperty(n.prototype,"__isLong__",{value:!0}),n.isLong=r;var s={},a={};function o(e,t){var n,r,o;return t?(o=0<=(e>>>=0)&&e<256)&&(r=a[e])?r:(n=u(e,(0|e)<0?-1:0,!0),o&&(a[e]=n),n):(o=-128<=(e|=0)&&e<128)&&(r=s[e])?r:(n=u(e,e<0?-1:0,!1),o&&(s[e]=n),n)}function i(e,t){if(isNaN(e))return t?y:g;if(t){if(e<0)return y;if(e>=d)return k}else{if(e<=-f)return I;if(e+1>=f)return v}return e<0?i(-e,t).neg():u(e%h|0,e/h|0,t)}function u(e,t,r){return new n(e,t,r)}n.fromInt=o,n.fromNumber=i,n.fromBits=u;var l=Math.pow;function c(e,t,n){if(0===e.length)throw Error("empty string");if("NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return g;if("number"===typeof t?(n=t,t=!1):t=!!t,(n=n||10)<2||36<n)throw RangeError("radix");var r;if((r=e.indexOf("-"))>0)throw Error("interior hyphen");if(0===r)return c(e.substring(1),t,n).neg();for(var s=i(l(n,8)),a=g,o=0;o<e.length;o+=8){var u=Math.min(8,e.length-o),p=parseInt(e.substring(o,o+u),n);if(u<8){var h=i(l(n,u));a=a.mul(h).add(i(p))}else a=(a=a.mul(s)).add(i(p))}return a.unsigned=t,a}function p(e,t){return"number"===typeof e?i(e,t):"string"===typeof e?c(e,t):u(e.low,e.high,"boolean"===typeof t?t:e.unsigned)}n.fromString=c,n.fromValue=p;var h=4294967296,d=h*h,f=d/2,m=o(1<<24),g=o(0);n.ZERO=g;var y=o(0,!0);n.UZERO=y;var b=o(1);n.ONE=b;var x=o(1,!0);n.UONE=x;var w=o(-1);n.NEG_ONE=w;var v=u(-1,2147483647,!1);n.MAX_VALUE=v;var k=u(-1,-1,!0);n.MAX_UNSIGNED_VALUE=k;var I=u(0,-2147483648,!1);n.MIN_VALUE=I;var N=n.prototype;N.toInt=function(){return this.unsigned?this.low>>>0:this.low},N.toNumber=function(){return this.unsigned?(this.high>>>0)*h+(this.low>>>0):this.high*h+(this.low>>>0)},N.toString=function(e){if((e=e||10)<2||36<e)throw RangeError("radix");if(this.isZero())return"0";if(this.isNegative()){if(this.eq(I)){var t=i(e),n=this.div(t),r=n.mul(t).sub(this);return n.toString(e)+r.toInt().toString(e)}return"-"+this.neg().toString(e)}for(var s=i(l(e,6),this.unsigned),a=this,o="";;){var u=a.div(s),c=(a.sub(u.mul(s)).toInt()>>>0).toString(e);if((a=u).isZero())return c+o;for(;c.length<6;)c="0"+c;o=""+c+o}},N.getHighBits=function(){return this.high},N.getHighBitsUnsigned=function(){return this.high>>>0},N.getLowBits=function(){return this.low},N.getLowBitsUnsigned=function(){return this.low>>>0},N.getNumBitsAbs=function(){if(this.isNegative())return this.eq(I)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,t=31;t>0&&0==(e&1<<t);t--);return 0!=this.high?t+33:t+1},N.isZero=function(){return 0===this.high&&0===this.low},N.eqz=N.isZero,N.isNegative=function(){return!this.unsigned&&this.high<0},N.isPositive=function(){return this.unsigned||this.high>=0},N.isOdd=function(){return 1===(1&this.low)},N.isEven=function(){return 0===(1&this.low)},N.equals=function(e){return r(e)||(e=p(e)),(this.unsigned===e.unsigned||this.high>>>31!==1||e.high>>>31!==1)&&(this.high===e.high&&this.low===e.low)},N.eq=N.equals,N.notEquals=function(e){return!this.eq(e)},N.neq=N.notEquals,N.ne=N.notEquals,N.lessThan=function(e){return this.comp(e)<0},N.lt=N.lessThan,N.lessThanOrEqual=function(e){return this.comp(e)<=0},N.lte=N.lessThanOrEqual,N.le=N.lessThanOrEqual,N.greaterThan=function(e){return this.comp(e)>0},N.gt=N.greaterThan,N.greaterThanOrEqual=function(e){return this.comp(e)>=0},N.gte=N.greaterThanOrEqual,N.ge=N.greaterThanOrEqual,N.compare=function(e){if(r(e)||(e=p(e)),this.eq(e))return 0;var t=this.isNegative(),n=e.isNegative();return t&&!n?-1:!t&&n?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},N.comp=N.compare,N.negate=function(){return!this.unsigned&&this.eq(I)?I:this.not().add(b)},N.neg=N.negate,N.add=function(e){r(e)||(e=p(e));var t=this.high>>>16,n=65535&this.high,s=this.low>>>16,a=65535&this.low,o=e.high>>>16,i=65535&e.high,l=e.low>>>16,c=0,h=0,d=0,f=0;return d+=(f+=a+(65535&e.low))>>>16,h+=(d+=s+l)>>>16,c+=(h+=n+i)>>>16,c+=t+o,u((d&=65535)<<16|(f&=65535),(c&=65535)<<16|(h&=65535),this.unsigned)},N.subtract=function(e){return r(e)||(e=p(e)),this.add(e.neg())},N.sub=N.subtract,N.multiply=function(e){if(this.isZero())return g;if(r(e)||(e=p(e)),t)return u(t.mul(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned);if(e.isZero())return g;if(this.eq(I))return e.isOdd()?I:g;if(e.eq(I))return this.isOdd()?I:g;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(m)&&e.lt(m))return i(this.toNumber()*e.toNumber(),this.unsigned);var n=this.high>>>16,s=65535&this.high,a=this.low>>>16,o=65535&this.low,l=e.high>>>16,c=65535&e.high,h=e.low>>>16,d=65535&e.low,f=0,y=0,b=0,x=0;return b+=(x+=o*d)>>>16,y+=(b+=a*d)>>>16,b&=65535,y+=(b+=o*h)>>>16,f+=(y+=s*d)>>>16,y&=65535,f+=(y+=a*h)>>>16,y&=65535,f+=(y+=o*c)>>>16,f+=n*d+s*h+a*c+o*l,u((b&=65535)<<16|(x&=65535),(f&=65535)<<16|(y&=65535),this.unsigned)},N.mul=N.multiply,N.divide=function(e){if(r(e)||(e=p(e)),e.isZero())throw Error("division by zero");var n,s,a;if(t)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?u((this.unsigned?t.div_u:t.div_s)(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?y:g;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return y;if(e.gt(this.shru(1)))return x;a=y}else{if(this.eq(I))return e.eq(b)||e.eq(w)?I:e.eq(I)?b:(n=this.shr(1).div(e).shl(1)).eq(g)?e.isNegative()?b:w:(s=this.sub(e.mul(n)),a=n.add(s.div(e)));if(e.eq(I))return this.unsigned?y:g;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();a=g}for(s=this;s.gte(e);){n=Math.max(1,Math.floor(s.toNumber()/e.toNumber()));for(var o=Math.ceil(Math.log(n)/Math.LN2),c=o<=48?1:l(2,o-48),h=i(n),d=h.mul(e);d.isNegative()||d.gt(s);)d=(h=i(n-=c,this.unsigned)).mul(e);h.isZero()&&(h=b),a=a.add(h),s=s.sub(d)}return a},N.div=N.divide,N.modulo=function(e){return r(e)||(e=p(e)),t?u((this.unsigned?t.rem_u:t.rem_s)(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},N.mod=N.modulo,N.rem=N.modulo,N.not=function(){return u(~this.low,~this.high,this.unsigned)},N.and=function(e){return r(e)||(e=p(e)),u(this.low&e.low,this.high&e.high,this.unsigned)},N.or=function(e){return r(e)||(e=p(e)),u(this.low|e.low,this.high|e.high,this.unsigned)},N.xor=function(e){return r(e)||(e=p(e)),u(this.low^e.low,this.high^e.high,this.unsigned)},N.shiftLeft=function(e){return r(e)&&(e=e.toInt()),0===(e&=63)?this:e<32?u(this.low<<e,this.high<<e|this.low>>>32-e,this.unsigned):u(0,this.low<<e-32,this.unsigned)},N.shl=N.shiftLeft,N.shiftRight=function(e){return r(e)&&(e=e.toInt()),0===(e&=63)?this:e<32?u(this.low>>>e|this.high<<32-e,this.high>>e,this.unsigned):u(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},N.shr=N.shiftRight,N.shiftRightUnsigned=function(e){if(r(e)&&(e=e.toInt()),0===(e&=63))return this;var t=this.high;return e<32?u(this.low>>>e|t<<32-e,t>>>e,this.unsigned):u(32===e?t:t>>>e-32,0,this.unsigned)},N.shru=N.shiftRightUnsigned,N.shr_u=N.shiftRightUnsigned,N.toSigned=function(){return this.unsigned?u(this.low,this.high,!1):this},N.toUnsigned=function(){return this.unsigned?this:u(this.low,this.high,!0)},N.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},N.toBytesLE=function(){var e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},N.toBytesBE=function(){var e=this.high,t=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,t>>>24,t>>>16&255,t>>>8&255,255&t]},n.fromBytes=function(e,t,r){return r?n.fromBytesLE(e,t):n.fromBytesBE(e,t)},n.fromBytesLE=function(e,t){return new n(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,t)},n.fromBytesBE=function(e,t){return new n(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],t)}},6377:function(e,t,n){var r=n(4832),s=n(8652),a=n(801),o=n(2030),i=n(3618),u=n(9049),l=n(1971);l.alea=r,l.xor128=s,l.xorwow=a,l.xorshift7=o,l.xor4096=i,l.tychei=u,e.exports=l},4832:function(e,t,n){var r;!function(e,s,a){function o(e){var t=this,n=function(){var e=4022871197;return function(t){t=String(t);for(var n=0;n<t.length;n++){var r=.02519603282416938*(e+=t.charCodeAt(n));r-=e=r>>>0,e=(r*=e)>>>0,e+=4294967296*(r-=e)}return 2.3283064365386963e-10*(e>>>0)}}();t.next=function(){var e=2091639*t.s0+2.3283064365386963e-10*t.c;return t.s0=t.s1,t.s1=t.s2,t.s2=e-(t.c=0|e)},t.c=1,t.s0=n(" "),t.s1=n(" "),t.s2=n(" "),t.s0-=n(e),t.s0<0&&(t.s0+=1),t.s1-=n(e),t.s1<0&&(t.s1+=1),t.s2-=n(e),t.s2<0&&(t.s2+=1),n=null}function i(e,t){return t.c=e.c,t.s0=e.s0,t.s1=e.s1,t.s2=e.s2,t}function u(e,t){var n=new o(e),r=t&&t.state,s=n.next;return s.int32=function(){return 4294967296*n.next()|0},s.double=function(){return s()+11102230246251565e-32*(2097152*s()|0)},s.quick=s,r&&("object"==typeof r&&i(r,n),s.state=function(){return i(n,{})}),s}s&&s.exports?s.exports=u:n.amdD&&n.amdO?void 0===(r=function(){return u}.call(t,n,t,s))||(s.exports=r):this.alea=u}(0,e=n.nmd(e),n.amdD)},9049:function(e,t,n){var r;!function(e,s,a){function o(e){var t=this,n="";t.next=function(){var e=t.b,n=t.c,r=t.d,s=t.a;return e=e<<25^e>>>7^n,n=n-r|0,r=r<<24^r>>>8^s,s=s-e|0,t.b=e=e<<20^e>>>12^n,t.c=n=n-r|0,t.d=r<<16^n>>>16^s,t.a=s-e|0},t.a=0,t.b=0,t.c=-1640531527,t.d=1367130551,e===Math.floor(e)?(t.a=e/4294967296|0,t.b=0|e):n+=e;for(var r=0;r<n.length+20;
vendor: 6,281 bytes, line 1
1r++)t.b^=0|n.charCodeAt(r),t.next()}function i(e,t){return t.a=e.a,t.b=e.b,t.c=e.c,t.d=e.d,t}function u(e,t){var n=new o(e),r=t&&t.state,s=function(){return(n.next()>>>0)/4294967296};return s.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},s.int32=n.next,s.quick=s,r&&("object"==typeof r&&i(r,n),s.state=function(){return i(n,{})}),s}s&&s.exports?s.exports=u:n.amdD&&n.amdO?void 0===(r=function(){return u}.call(t,n,t,s))||(s.exports=r):this.tychei=u}(0,e=n.nmd(e),n.amdD)},8652:function(e,t,n){var r;!function(e,s,a){function o(e){var t=this,n="";t.x=0,t.y=0,t.z=0,t.w=0,t.next=function(){var e=t.x^t.x<<11;return t.x=t.y,t.y=t.z,t.z=t.w,t.w^=t.w>>>19^e^e>>>8},e===(0|e)?t.x=e:n+=e;for(var r=0;r<n.length+64;r++)t.x^=0|n.charCodeAt(r),t.next()}function i(e,t){return t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t}function u(e,t){var n=new o(e),r=t&&t.state,s=function(){return(n.next()>>>0)/4294967296};return s.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},s.int32=n.next,s.quick=s,r&&("object"==typeof r&&i(r,n),s.state=function(){return i(n,{})}),s}s&&s.exports?s.exports=u:n.amdD&&n.amdO?void 0===(r=function(){return u}.call(t,n,t,s))||(s.exports=r):this.xor128=u}(0,e=n.nmd(e),n.amdD)},3618:function(e,t,n){var r;!function(e,s,a){function o(e){var t=this;t.next=function(){var e,n,r=t.w,s=t.X,a=t.i;return t.w=r=r+1640531527|0,n=s[a+34&127],e=s[a=a+1&127],n^=n<<13,e^=e<<17,n^=n>>>15,e^=e>>>12,n=s[a]=n^e,t.i=a,n+(r^r>>>16)|0},function(e,t){var n,r,s,a,o,i=[],u=128;for(t===(0|t)?(r=t,t=null):(t+="\0",r=0,u=Math.max(u,t.length)),s=0,a=-32;a<u;++a)t&&(r^=t.charCodeAt((a+32)%t.length)),0===a&&(o=r),r^=r<<10,r^=r>>>15,r^=r<<4,r^=r>>>13,a>=0&&(o=o+1640531527|0,s=0==(n=i[127&a]^=r+o)?s+1:0);for(s>=128&&(i[127&(t&&t.length||0)]=-1),s=127,a=512;a>0;--a)r=i[s+34&127],n=i[s=s+1&127],r^=r<<13,n^=n<<17,r^=r>>>15,n^=n>>>12,i[s]=r^n;e.w=o,e.X=i,e.i=s}(t,e)}function i(e,t){return t.i=e.i,t.w=e.w,t.X=e.X.slice(),t}function u(e,t){null==e&&(e=+new Date);var n=new o(e),r=t&&t.state,s=function(){return(n.next()>>>0)/4294967296};return s.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},s.int32=n.next,s.quick=s,r&&(r.X&&i(r,n),s.state=function(){return i(n,{})}),s}s&&s.exports?s.exports=u:n.amdD&&n.amdO?void 0===(r=function(){return u}.call(t,n,t,s))||(s.exports=r):this.xor4096=u}(0,e=n.nmd(e),n.amdD)},2030:function(e,t,n){var r;!function(e,s,a){function o(e){var t=this;t.next=function(){var e,n,r=t.x,s=t.i;return e=r[s],n=(e^=e>>>7)^e<<24,n^=(e=r[s+1&7])^e>>>10,n^=(e=r[s+3&7])^e>>>3,n^=(e=r[s+4&7])^e<<7,e=r[s+7&7],n^=(e^=e<<13)^e<<9,r[s]=n,t.i=s+1&7,n},function(e,t){var n,r=[];if(t===(0|t))r[0]=t;else for(t=""+t,n=0;n<t.length;++n)r[7&n]=r[7&n]<<15^t.charCodeAt(n)+r[n+1&7]<<13;for(;r.length<8;)r.push(0);for(n=0;n<8&&0===r[n];++n);for(8==n?r[7]=-1:r[n],e.x=r,e.i=0,n=256;n>0;--n)e.next()}(t,e)}function i(e,t){return t.x=e.x.slice(),t.i=e.i,t}function u(e,t){null==e&&(e=+new Date);var n=new o(e),r=t&&t.state,s=function(){return(n.next()>>>0)/4294967296};return s.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},s.int32=n.next,s.quick=s,r&&(r.x&&i(r,n),s.state=function(){return i(n,{})}),s}s&&s.exports?s.exports=u:n.amdD&&n.amdO?void 0===(r=function(){return u}.call(t,n,t,s))||(s.exports=r):this.xorshift7=u}(0,e=n.nmd(e),n.amdD)},801:function(e,t,n){var r;!function(e,s,a){function o(e){var t=this,n="";t.next=function(){var e=t.x^t.x>>>2;return t.x=t.y,t.y=t.z,t.z=t.w,t.w=t.v,(t.d=t.d+362437|0)+(t.v=t.v^t.v<<4^e^e<<1)|0},t.x=0,t.y=0,t.z=0,t.w=0,t.v=0,e===(0|e)?t.x=e:n+=e;for(var r=0;r<n.length+64;r++)t.x^=0|n.charCodeAt(r),r==n.length&&(t.d=t.x<<10^t.x>>>4),t.next()}function i(e,t){return t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t.v=e.v,t.d=e.d,t}function u(e,t){var n=new o(e),r=t&&t.state,s=function(){return(n.next()>>>0)/4294967296};return s.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},s.int32=n.next,s.quick=s,r&&("object"==typeof r&&i(r,n),s.state=function(){return i(n,{})}),s}s&&s.exports?s.exports=u:n.amdD&&n.amdO?void 0===(r=function(){return u}.call(t,n,t,s))||(s.exports=r):this.xorwow=u}(0,e=n.nmd(e),n.amdD)},1971:function(e,t,n){var r;!function(s,a,o){var i,u=256,l=o.pow(u,6),c=o.pow(2,52),p=2*c,h=255;function d(e,t,n){var r=[],h=y(g((t=1==t?{entropy:!0}:t||{}).entropy?[e,b(a)]:null==e?function(){try{var e;return i&&(e=i.randomBytes)?e=e(u):(e=new Uint8Array(u),(s.crypto||s.msCrypto).getRandomValues(e)),b(e)}catch(r){var t=s.navigator,n=t&&t.plugins;return[+new Date,s,n,s.screen,b(a)]}}():e,3),r),d=new f(r),x=function(){for(var e=d.g(6),t=l,n=0;e<c;)e=(e+n)*u,t*=u,n=d.g(1);for(;e>=p;)e/=2,t/=2,n>>>=1;return(e+n)/t};return x.int32=function(){return 0|d.g(4)},x.quick=function(){return d.g(4)/4294967296},x.double=x,y(b(d.S),a),(t.pass||n||function(e,t,n,r){return r&&(r.S&&m(r,d),e.state=function(){return m(d,{})}),n?(o.random=e,t):e})(x,h,"global"in t?t.global:this==o,t.state)}function f(e){var t,n=e.length,r=this,s=0,a=r.i=r.j=0,o=r.S=[];for(n||(e=[n++]);s<u;)o[s]=s++;for(s=0;s<u;s++)o[s]=o[a=h&a+e[s%n]+(t=o[s])],o[a]=t;(r.g=function(e){for(var t,n=0,s=r.i,a=r.j,o=r.S;e--;)t=o[s=h&s+1],n=n*u+o[h&(o[s]=o[a=h&a+t])+(o[a]=t)];return r.i=s,r.j=a,n})(u)}function m(e,t){return t.i=e.i,t.j=e.j,t.S=e.S.slice(),t}function g(e,t){var n,r=[],s=typeof e;if(t&&"object"==s)for(n in e)try{r.push(g(e[n],t-1))}catch(a){}return r.length?r:"string"==s?e:e+"\0"}function y(e,t){for(var n,r=e+"",s=0;s<r.length;)t[h&s]=h&(n^=19*t[h&s])+r.charCodeAt(s++);return b(t)}function b(e){return String.fromCharCode.apply(0,e)}if(y(o.random(),a),e.exports){e.exports=d;try{i=n(5042)}catch(x){}}else void 0===(r=function(){return d}.call(t,n,t,e))||(e.exports=r)}("undefined"!==typeof self?self:this,[],Math)},5861:function(e,t,n){"use strict";function r(e,t,n,r,s,a,o){try{var i=e[a](o),u=i.value}catch(l){return void n(l)}i.done?t(u):Promise.resolve(u).then(r,s)}function s(e){return function(){var t=this,n=arguments;return new Promise((function(s,a){var o=e.apply(t,n);function i(e){r(o,s,a,i,u,"next",e)}function u(e){r(o,s,a,i,u,"throw",e)}i(void 0)}))}}n.d(t,{Z:function(){return s}})}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.