>>0)/4294967296};return c.double=function(){do var l=p.next()>>>11,m=(p.next()>>>0)/4294967296,d=(l+m)/(1<<21);while(d===0);return d},c.int32=p.next,c.quick=c,u&&(typeof u==\"object\"&&n(u,p),c.state=function(){return n(p,{})}),c}e&&e.exports?e.exports=s:t&&t.amd?t(function(){return s}):this.tychei=s})(m1,typeof qw==\"object\"&&qw,typeof define==\"function\"&&define)});var f1=Kt(()=>{});var g1=Kt((h1,Md)=>{(function(r,e,t){var o=256,n=6,s=52,a=\"random\",i=t.pow(o,n),p=t.pow(2,s),u=p*2,c=o-1,l;function m(C,S,k){var _=[];S=S==!0?{entropy:!0}:S||{};var $=g(h(S.entropy?[C,b(e)]:C==null?x():C,3),_),R=new d(_),D=function(){for(var P=R.g(n),O=i,M=0;P=u;)P/=2,O/=2,M>>>=1;return(P+M)/O};return D.int32=function(){return R.g(4)|0},D.quick=function(){return R.g(4)/4294967296},D.double=D,g(b(R.S),e),(S.pass||k||function(P,O,M,L){return L&&(L.S&&f(L,R),P.state=function(){return f(R,{})}),M?(t[a]=P,O):P})(D,$,\"global\"in S?S.global:this==t,S.state)}function d(C){var S,k=C.length,_=this,$=0,R=_.i=_.j=0,D=_.S=[];for(k||(C=[k++]);${var Dq=o1(),Aq=s1(),Fq=i1(),Pq=p1(),Oq=l1(),Mq=d1(),Ku=g1();Ku.alea=Dq;Ku.xor128=Aq;Ku.xorwow=Fq;Ku.xorshift7=Pq;Ku.xor4096=Oq;Ku.tychei=Mq;x1.exports=Ku});var Vv=Kt(()=>{});var Wv=Kt(()=>{});var LB=Kt(()=>{});var BB=Kt(()=>{});var zB=Kt(()=>{});var VB=Kt((Wg,Gv)=>{var Uv=(()=>{var r=typeof document!=\"undefined\"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!=\"undefined\"&&(r=r||__filename),function(e){e=e||{};function t(){return oe.buffer!=He&&Tt(oe.buffer),lt}function o(){return oe.buffer!=He&&Tt(oe.buffer),it}function n(){return oe.buffer!=He&&Tt(oe.buffer),ht}function s(){return oe.buffer!=He&&Tt(oe.buffer),Lr}function a(){return oe.buffer!=He&&Tt(oe.buffer),Mt}function i(){return oe.buffer!=He&&Tt(oe.buffer),to}function p(){return oe.buffer!=He&&Tt(oe.buffer),rr}var u=typeof e!=\"undefined\"?e:{},c,l;u.ready=new Promise(function(F,V){c=F,l=V});var m;typeof process!=\"undefined\"&&process.listeners&&(m={uncaughtException:process.listeners(\"uncaughtException\"),unhandledRejection:process.listeners(\"unhandledRejection\")});var d=Object.assign({},u),f=[],h=\"./this.program\",g=(F,V)=>{throw V},x=typeof window==\"object\",b=typeof importScripts==\"function\",C=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\",S=u.ENVIRONMENT_IS_PTHREAD||!1,k=\"\";function _(F){return u.locateFile?u.locateFile(F,k):k+F}var $,R,D,P;function O(F){if(F instanceof ku)return;j(\"exiting due to exception: \"+F)}if(C){var M=Vv(),L=Wv();b?k=L.dirname(k)+\"/\":k=__dirname+\"/\",$=(V,ue)=>(V=Fp(V)?new URL(V):L.normalize(V),M.readFileSync(V,ue?void 0:\"utf8\")),D=V=>{var ue=$(V,!0);return ue.buffer||(ue=new Uint8Array(ue)),ue},R=(V,ue,$e)=>{V=Fp(V)?new URL(V):L.normalize(V),M.readFile(V,function(Be,Le){Be?$e(Be):ue(Le.buffer)})},process.argv.length>1&&(h=process.argv[1].replace(/\\\\/g,\"/\")),f=process.argv.slice(2),process.on(\"uncaughtException\",function(V){if(!(V instanceof ku))throw V}),process.on(\"unhandledRejection\",function(V){throw V}),g=(V,ue)=>{if(Lo())throw process.exitCode=V,ue;O(ue),process.exit(V)},u.inspect=function(){return\"[Emscripten Module object]\"};let F;try{F=LB()}catch(V){throw console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?'),V}global.Worker=F.Worker}else(x||b)&&(b?k=self.location.href:typeof document!=\"undefined\"&&document.currentScript&&(k=document.currentScript.src),typeof r!=\"undefined\"&&r&&(k=r),k.indexOf(\"blob:\")!==0?k=k.substr(0,k.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1):k=\"\",C||($=F=>{var V=new XMLHttpRequest;return V.open(\"GET\",F,!1),V.send(null),V.responseText},b&&(D=F=>{var V=new XMLHttpRequest;return V.open(\"GET\",F,!1),V.responseType=\"arraybuffer\",V.send(null),new Uint8Array(V.response)}),R=(F,V,ue)=>{var $e=new XMLHttpRequest;$e.open(\"GET\",F,!0),$e.responseType=\"arraybuffer\",$e.onload=()=>{if($e.status==200||$e.status==0&&$e.response){V($e.response);return}ue()},$e.onerror=ue,$e.send(null)}),P=F=>document.title=F);C&&typeof performance==\"undefined\"&&(global.performance=BB().performance);var B=console.log.bind(console),z=console.warn.bind(console);C&&(B=F=>M.writeSync(1,F+`\n`),z=F=>M.writeSync(2,F+`\n`));var U=u.print||B,j=u.printErr||z;Object.assign(u,d),d=null,u.arguments&&(f=u.arguments),u.thisProgram&&(h=u.thisProgram),u.quit&&(g=u.quit);var q=4,Y=Atomics.load,J=Atomics.store,re=Atomics.compareExchange,ne;u.wasmBinary&&(ne=u.wasmBinary);var ee=u.noExitRuntime||!0;typeof WebAssembly!=\"object\"&&vu(\"no native wasm support detected\");var oe,ie,le=!1,be;function _e(F,V){F||vu(V)}var ve=typeof TextDecoder!=\"undefined\"?new TextDecoder(\"utf8\"):void 0;function Fe(F,V,ue){V>>>=0;for(var $e=V+ue,Be=V;F[Be]&&!(Be>=$e);)++Be;if(Be-V>16&&F.buffer&&ve)return ve.decode(F.buffer instanceof SharedArrayBuffer?F.slice(V,Be):F.subarray(V,Be));for(var Le=\"\";V>10,56320|so&1023)}}return Le}function Pe(F,V){return F>>>=0,F?Fe(o(),F,V):\"\"}function st(F,V,ue,$e){if(ue>>>=0,!($e>0))return 0;for(var Be=ue,Le=ue+$e-1,ge=0;ge=55296&&Ne<=57343){var Ft=F.charCodeAt(++ge);Ne=65536+((Ne&1023)<<10)|Ft&1023}if(Ne<=127){if(ue>=Le)break;V[ue++>>>0]=Ne}else if(Ne<=2047){if(ue+1>=Le)break;V[ue++>>>0]=192|Ne>>6,V[ue++>>>0]=128|Ne&63}else if(Ne<=65535){if(ue+2>=Le)break;V[ue++>>>0]=224|Ne>>12,V[ue++>>>0]=128|Ne>>6&63,V[ue++>>>0]=128|Ne&63}else{if(ue+3>=Le)break;V[ue++>>>0]=240|Ne>>18,V[ue++>>>0]=128|Ne>>12&63,V[ue++>>>0]=128|Ne>>6&63,V[ue++>>>0]=128|Ne&63}}return V[ue>>>0]=0,ue-Be}function ct(F,V,ue){return st(F,o(),V,ue)}var He,lt,it,ht,gt,Lr,Mt,to,rr;S&&(He=u.buffer);function Tt(F){He=F,u.HEAP8=lt=new Int8Array(F),u.HEAP16=ht=new Int16Array(F),u.HEAP32=Lr=new Int32Array(F),u.HEAPU8=it=new Uint8Array(F),u.HEAPU16=gt=new Uint16Array(F),u.HEAPU32=Mt=new Uint32Array(F),u.HEAPF32=to=new Float32Array(F),u.HEAPF64=rr=new Float64Array(F)}var or=u.INITIAL_MEMORY||16777216;if(S)oe=u.wasmMemory,He=u.buffer;else if(u.wasmMemory)oe=u.wasmMemory;else if(oe=new WebAssembly.Memory({initial:or/65536,maximum:65536,shared:!0}),!(oe.buffer instanceof SharedArrayBuffer))throw j(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\"),C&&j(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)\"),Error(\"bad memory\");oe&&(He=oe.buffer),or=He.byteLength,Tt(He);var nr,ro=[],oo=[],fr=[],Va=!1;function Lo(){return ee}function Ks(){if(u.preRun)for(typeof u.preRun==\"function\"&&(u.preRun=[u.preRun]);u.preRun.length;)ol(u.preRun.shift());al(ro)}function Xt(){Va=!0,!S&&al(oo)}function Wa(){if(!S){if(u.postRun)for(typeof u.postRun==\"function\"&&(u.postRun=[u.postRun]);u.postRun.length;)d0(u.postRun.shift());al(fr)}}function ol(F){ro.unshift(F)}function nl(F){oo.unshift(F)}function d0(F){fr.unshift(F)}var ki=0,Ap=null,Ua=null;function Cy(F){ki++,u.monitorRunDependencies&&u.monitorRunDependencies(ki)}function wm(F){if(ki--,u.monitorRunDependencies&&u.monitorRunDependencies(ki),ki==0&&(Ap!==null&&(clearInterval(Ap),Ap=null),Ua)){var V=Ua;Ua=null,V()}}function vu(F){u.onAbort&&u.onAbort(F),F=\"Aborted(\"+F+\")\",j(F),le=!0,be=1,F+=\". Build with -sASSERTIONS for more info.\";var V=new WebAssembly.RuntimeError(F);throw l(V),V}var wy=\"data:application/octet-stream;base64,\";function Sm(F){return F.startsWith(wy)}function Fp(F){return F.startsWith(\"file://\")}var hr;hr=\"tfjs-backend-wasm-threaded-simd.wasm\",Sm(hr)||(hr=_(hr));function Im(F){try{if(F==hr&&ne)return new Uint8Array(ne);if(D)return D(F);throw\"both async and sync fetching of the wasm failed\"}catch(V){vu(V)}}function Sy(){if(!ne&&(x||b)){if(typeof fetch==\"function\"&&!Fp(hr))return fetch(hr,{credentials:\"same-origin\"}).then(function(F){if(!F.ok)throw\"failed to load wasm binary file at '\"+hr+\"'\";return F.arrayBuffer()}).catch(function(){return Im(hr)});if(R)return new Promise(function(F,V){R(hr,function(ue){F(new Uint8Array(ue))},V)})}return Promise.resolve().then(function(){return Im(hr)})}function Iy(){var F={env:Om,wasi_snapshot_preview1:Om};function V(ge,Ne){var Ft=ge.exports;if(u.asm=Ft,Dy(u.asm._emscripten_tls_init),nr=u.asm.__indirect_function_table,nl(u.asm.__wasm_call_ctors),ie=Ne,!S){var so=Me.unusedWorkers.length;Me.unusedWorkers.forEach(function(Ha){Me.loadWasmModuleToWorker(Ha,function(){--so||wm(\"wasm-instantiate\")})})}}S||Cy(\"wasm-instantiate\");function ue(ge){V(ge.instance,ge.module)}function $e(ge){return Sy().then(function(Ne){return WebAssembly.instantiate(Ne,F)}).then(function(Ne){return Ne}).then(ge,function(Ne){j(\"failed to asynchronously prepare wasm: \"+Ne),vu(Ne)})}function Be(){return!ne&&typeof WebAssembly.instantiateStreaming==\"function\"&&!Sm(hr)&&!Fp(hr)&&!C&&typeof fetch==\"function\"?fetch(hr,{credentials:\"same-origin\"}).then(function(ge){var Ne=WebAssembly.instantiateStreaming(ge,F);return Ne.then(ue,function(Ft){return j(\"wasm streaming compile failed: \"+Ft),j(\"falling back to ArrayBuffer instantiation\"),$e(ue)})}):$e(ue)}if(u.instantiateWasm)try{var Le=u.instantiateWasm(F,V);return Le}catch(ge){j(\"Module.instantiateWasm callback failed with error: \"+ge),l(ge)}return Be().catch(l),{}}var f0,h0,vm={};function ku(F){this.name=\"ExitStatus\",this.message=\"Program terminated with exit(\"+F+\")\",this.status=F}function vy(F){var V=Me.pthreads[F];delete Me.pthreads[F],V.terminate(),jC(F),Me.runningWorkers.splice(Me.runningWorkers.indexOf(V),1),V.pthread_ptr=0}function ky(F){var V=Me.pthreads[F];V.postMessage({cmd:\"cancel\"})}function sl(F){var V=Me.pthreads[F];_e(V),Me.returnWorkerToPool(V)}function Ny(F){var V=Me.getNewWorker();if(!V)return 6;Me.runningWorkers.push(V),Me.pthreads[F.pthread_ptr]=V,V.pthread_ptr=F.pthread_ptr;var ue={cmd:\"run\",start_routine:F.startRoutine,arg:F.arg,pthread_ptr:F.pthread_ptr};return V.runPthread=()=>{C&&V.ref(),V.postMessage(ue,F.transferList),delete V.runPthread},V.loaded&&V.runPthread(),0}var km={varargs:void 0,get:function(){km.varargs+=4;var F=s()[km.varargs-4>>>2];return F},getStr:function(F){var V=Pe(F);return V}};function Nm(F){if(S)return Ni(1,1,F);be=F,Lo()||(Me.terminateAllThreads(),u.onExit&&u.onExit(F),le=!0),g(F,new ku(F))}function Ty(F,V){if(be=F,!V&&S)throw _m(F),\"unwind\";Nm(F)}var Tm=Ty;function _y(F){if(F instanceof ku||F==\"unwind\")return be;g(1,F)}var Me={unusedWorkers:[],runningWorkers:[],tlsInitFunctions:[],pthreads:{},init:function(){S?Me.initWorker():Me.initMainThread()},initMainThread:function(){for(var F=8;F--;)Me.allocateUnusedWorker()},initWorker:function(){ee=!1},setExitStatus:function(F){be=F},terminateAllThreads:function(){for(var F of Object.values(Me.pthreads))Me.returnWorkerToPool(F);for(var F of Me.unusedWorkers)F.terminate();Me.unusedWorkers=[]},returnWorkerToPool:function(F){var V=F.pthread_ptr;delete Me.pthreads[V],Me.unusedWorkers.push(F),Me.runningWorkers.splice(Me.runningWorkers.indexOf(F),1),F.pthread_ptr=0,C&&F.unref(),jC(V)},receiveObjectTransfer:function(F){},threadInitTLS:function(){Me.tlsInitFunctions.forEach(F=>F())},loadWasmModuleToWorker:function(F,V){F.onmessage=Le=>{var ge=Le.data,Ne=ge.cmd;if(F.pthread_ptr&&(Me.currentProxiedOperationCallerThread=F.pthread_ptr),ge.targetThread&&ge.targetThread!=Wm()){var Ft=Me.pthreads[ge.targetThread];Ft?Ft.postMessage(ge,ge.transferList):j('Internal error! Worker sent a message \"'+Ne+'\" to target pthread '+ge.targetThread+\", but that thread no longer exists!\"),Me.currentProxiedOperationCallerThread=void 0;return}Ne===\"processProxyingQueue\"?il(ge.queue):Ne===\"spawnThread\"?Ny(ge):Ne===\"cleanupThread\"?sl(ge.thread):Ne===\"killThread\"?vy(ge.thread):Ne===\"cancelThread\"?ky(ge.thread):Ne===\"loaded\"?(F.loaded=!0,C&&F.unref(),V&&V(F),F.runPthread&&F.runPthread()):Ne===\"print\"?U(\"Thread \"+ge.threadId+\": \"+ge.text):Ne===\"printErr\"?j(\"Thread \"+ge.threadId+\": \"+ge.text):Ne===\"alert\"?alert(\"Thread \"+ge.threadId+\": \"+ge.text):ge.target===\"setimmediate\"?F.postMessage(ge):Ne===\"callHandler\"?u[ge.handler](...ge.args):Ne&&j(\"worker sent an unknown command \"+Ne),Me.currentProxiedOperationCallerThread=void 0},F.onerror=Le=>{var ge=\"worker sent an error!\";throw j(ge+\" \"+Le.filename+\":\"+Le.lineno+\": \"+Le.message),Le},C&&(F.on(\"message\",function(Le){F.onmessage({data:Le})}),F.on(\"error\",function(Le){F.onerror(Le)}),F.on(\"detachedExit\",function(){}));var ue=[],$e=[\"onExit\",\"onAbort\",\"print\",\"printErr\"];for(var Be of $e)u.hasOwnProperty(Be)&&ue.push(Be);F.postMessage({cmd:\"load\",handlers:ue,urlOrBlob:u.mainScriptUrlOrBlob||r,wasmMemory:oe,wasmModule:ie})},allocateUnusedWorker:function(){var F,V=_(\"tfjs-backend-wasm-threaded-simd.worker.js\");F=new Worker(V),Me.unusedWorkers.push(F)},getNewWorker:function(){return Me.unusedWorkers.length==0&&(Me.allocateUnusedWorker(),Me.loadWasmModuleToWorker(Me.unusedWorkers[0])),Me.unusedWorkers.pop()}};u.PThread=Me;function al(F){for(;F.length>0;)F.shift()(u)}function Ey(){var F=Wm(),V=s()[F+52>>>2],ue=s()[F+56>>>2],$e=V-ue;w0(V,$e),Um(V)}u.establishStackSpace=Ey;function _m(F){if(S)return Ni(2,0,F);try{Tm(F)}catch(V){_y(V)}}var Pp=[];function $y(F){var V=Pp[F];return V||(F>=Pp.length&&(Pp.length=F+1),Pp[F]=V=nr.get(F)),V}function Ry(F,V){var ue=$y(F)(V);Lo()?Me.setExitStatus(ue):C0(ue)}u.invokeEntryPoint=Ry;function Dy(F){Me.tlsInitFunctions.push(F)}function Ay(F){x0(F,!b,1,!x),Me.threadInitTLS()}function Fy(F){S?postMessage({cmd:\"cleanupThread\",thread:F}):sl(F)}function Em(F,V,ue,$e){return S?Ni(3,1,F,V,ue,$e):$m(F,V,ue,$e)}function $m(F,V,ue,$e){if(typeof SharedArrayBuffer==\"undefined\")return j(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\"),6;var Be=[],Le=0;if(S&&(Be.length===0||Le))return Em(F,V,ue,$e);if(Le)return Le;var ge={startRoutine:ue,pthread_ptr:F,arg:$e,transferList:Be};return S?(ge.cmd=\"spawnThread\",postMessage(ge,Be),0):Ny(ge)}function Py(){return 65536}var Oy=!0;function My(){return Oy}function il(F){Atomics.store(s(),F>>2,1),Wm()&&b0(F),Atomics.compareExchange(s(),F>>2,1,0)}u.executeNotifiedProxyingQueue=il;function Ly(F,V,ue,$e){if(F==V)setTimeout(()=>il($e));else if(S)postMessage({targetThread:F,cmd:\"processProxyingQueue\",queue:$e});else{var Be=Me.pthreads[F];if(!Be)return;Be.postMessage({cmd:\"processProxyingQueue\",queue:$e})}return 1}function By(F,V,ue){return-1}function zy(){vu(\"\")}function Nu(F){Nu.shown||(Nu.shown={}),Nu.shown[F]||(Nu.shown[F]=1,C&&(F=\"warning: \"+F),j(F))}function Vy(){C||b||Nu(\"Blocking on the main thread is very dangerous, see https://emscripten.org/docs/porting/pthreads.html#blocking-on-the-main-browser-thread\")}function Wy(){return Date.now()}function Rm(){return 4294901760}function Uy(){return Rm()}var ul;C?ul=()=>{var F=process.hrtime();return F[0]*1e3+F[1]/1e6}:ul=()=>performance.timeOrigin+performance.now();function Gy(F,V,ue){o().copyWithin(F>>>0,V>>>0,V+ue>>>0)}function Hy(){return C?zB().cpus().length:navigator.hardwareConcurrency}function Ky(F){var V=XC(),ue=F();return Um(V),ue}function Ni(F,V){var ue=arguments.length-2,$e=arguments;return Ky(()=>{for(var Be=ue,Le=Gm(Be*8),ge=Le>>3,Ne=0;Ne>>0]=Ft}return y0(F,Be,Le,V)})}var pl=[];function qy(F,V,ue){pl.length=V;for(var $e=ue>>3,Be=0;Be>>0];var Le=F<0,ge=Le?vm[-F-1]:rb[F];return ge.apply(null,pl)}function jy(F){try{return oe.grow(F-He.byteLength+65535>>>16),Tt(oe.buffer),1}catch(V){}}function Xy(F){var V=o().length;if(F=F>>>0,F<=V)return!1;var ue=Rm();if(F>ue)return!1;let $e=(Ft,so)=>Ft+(so-Ft%so)%so;for(var Be=1;Be<=4;Be*=2){var Le=V*(1+.2/Be);Le=Math.min(Le,F+100663296);var ge=Math.min(ue,$e(Math.max(F,Le),65536)),Ne=jy(ge);if(Ne)return!0}return!1}function Yy(){throw\"unwind\"}function Dm(F){return S?Ni(4,1,F):52}function Am(F,V,ue,$e,Be){return S?Ni(5,1,F,V,ue,$e,Be):70}var Qy=[null,[],[]];function Zy(F,V){var ue=Qy[F];V===0||V===10?((F===1?U:j)(Fe(ue,0)),ue.length=0):ue.push(V)}function Fm(F,V,ue,$e){if(S)return Ni(6,1,F,V,ue,$e);for(var Be=0,Le=0;Le>>2],Ne=a()[V+4>>>2];V+=8;for(var Ft=0;Ft>>0]);Be+=Ne}return a()[$e>>>2]=Be,0}function Pm(F){var V=u[\"_\"+F];return V}function Jy(F,V){t().set(F,V>>>0)}function eb(F,V,ue,$e,Be){var Le={string:Br=>{var Bp=0;if(Br!=null&&Br!==0){var v0=(Br.length<<2)+1;Bp=Gm(v0),ct(Br,Bp,v0)}return Bp},array:Br=>{var Bp=Gm(Br.length);return Jy(Br,Bp),Bp}};function ge(Br){return V===\"string\"?Pe(Br):V===\"boolean\"?!!Br:Br}var Ne=Pm(F),Ft=[],so=0;if($e)for(var Ha=0;Ha<$e.length;Ha++){var I0=Le[ue[Ha]];I0?(so===0&&(so=XC()),Ft[Ha]=I0($e[Ha])):Ft[Ha]=$e[Ha]}var YC=Ne.apply(null,Ft);function TG(Br){return so!==0&&Um(so),ge(Br)}return YC=TG(YC),YC}function tb(F,V,ue,$e){ue=ue||[];var Be=ue.every(ge=>ge===\"number\"||ge===\"boolean\"),Le=V!==\"string\";return Le&&Be&&!$e?Pm(F):function(){return eb(F,V,ue,arguments,$e)}}Me.init();var rb=[null,Nm,_m,Em,Dm,Am,Fm],Om={__emscripten_init_main_thread_js:Ay,__emscripten_thread_cleanup:Fy,__pthread_create_js:$m,_emscripten_default_pthread_stack_size:Py,_emscripten_get_now_is_monotonic:My,_emscripten_notify_task_queue:Ly,_emscripten_set_offscreencanvas_size:By,abort:zy,emscripten_check_blocking_allowed:Vy,emscripten_date_now:Wy,emscripten_get_heap_max:Uy,emscripten_get_now:ul,emscripten_memcpy_big:Gy,emscripten_num_logical_cores:Hy,emscripten_receive_on_main_thread_js:qy,emscripten_resize_heap:Xy,emscripten_unwind_to_js_event_loop:Yy,exit:Tm,fd_close:Dm,fd_seek:Am,fd_write:Fm,memory:oe||u.wasmMemory},g0=Iy(),ob=u.___wasm_call_ctors=function(){return(ob=u.___wasm_call_ctors=u.asm.__wasm_call_ctors).apply(null,arguments)},nb=u._init=function(){return(nb=u._init=u.asm.init).apply(null,arguments)},sb=u._init_with_threads_count=function(){return(sb=u._init_with_threads_count=u.asm.init_with_threads_count).apply(null,arguments)},ab=u._get_threads_count=function(){return(ab=u._get_threads_count=u.asm.get_threads_count).apply(null,arguments)},ib=u._register_tensor=function(){return(ib=u._register_tensor=u.asm.register_tensor).apply(null,arguments)},ub=u._dispose_data=function(){return(ub=u._dispose_data=u.asm.dispose_data).apply(null,arguments)},pb=u._dispose=function(){return(pb=u._dispose=u.asm.dispose).apply(null,arguments)},cb=u._Abs=function(){return(cb=u._Abs=u.asm.Abs).apply(null,arguments)},lb=u._Acos=function(){return(lb=u._Acos=u.asm.Acos).apply(null,arguments)},mb=u._Acosh=function(){return(mb=u._Acosh=u.asm.Acosh).apply(null,arguments)},db=u._Add=function(){return(db=u._Add=u.asm.Add).apply(null,arguments)},fb=u._AddN=function(){return(fb=u._AddN=u.asm.AddN).apply(null,arguments)},hb=u._All=function(){return(hb=u._All=u.asm.All).apply(null,arguments)},gb=u._Any=function(){return(gb=u._Any=u.asm.Any).apply(null,arguments)},xb=u._ArgMax=function(){return(xb=u._ArgMax=u.asm.ArgMax).apply(null,arguments)},yb=u._ArgMin=function(){return(yb=u._ArgMin=u.asm.ArgMin).apply(null,arguments)},bb=u._Asin=function(){return(bb=u._Asin=u.asm.Asin).apply(null,arguments)},Cb=u._Asinh=function(){return(Cb=u._Asinh=u.asm.Asinh).apply(null,arguments)},wb=u._Atan=function(){return(wb=u._Atan=u.asm.Atan).apply(null,arguments)},Sb=u._Atan2=function(){return(Sb=u._Atan2=u.asm.Atan2).apply(null,arguments)},Ib=u._Atanh=function(){return(Ib=u._Atanh=u.asm.Atanh).apply(null,arguments)},vb=u._AvgPool=function(){return(vb=u._AvgPool=u.asm.AvgPool).apply(null,arguments)},kb=u._AvgPool3D=function(){return(kb=u._AvgPool3D=u.asm.AvgPool3D).apply(null,arguments)},Nb=u._AvgPool3DGrad=function(){return(Nb=u._AvgPool3DGrad=u.asm.AvgPool3DGrad).apply(null,arguments)},Tb=u._AvgPoolGrad=function(){return(Tb=u._AvgPoolGrad=u.asm.AvgPoolGrad).apply(null,arguments)},_b=u._BatchMatMul=function(){return(_b=u._BatchMatMul=u.asm.BatchMatMul).apply(null,arguments)},Eb=u._Bincount=function(){return(Eb=u._Bincount=u.asm.Bincount).apply(null,arguments)},$b=u._BitwiseAnd=function(){return($b=u._BitwiseAnd=u.asm.BitwiseAnd).apply(null,arguments)},Rb=u._Ceil=function(){return(Rb=u._Ceil=u.asm.Ceil).apply(null,arguments)},Db=u._ClipByValue=function(){return(Db=u._ClipByValue=u.asm.ClipByValue).apply(null,arguments)},Ab=u._Conv2D=function(){return(Ab=u._Conv2D=u.asm.Conv2D).apply(null,arguments)},Fb=u._Conv2DBackpropInput=function(){return(Fb=u._Conv2DBackpropInput=u.asm.Conv2DBackpropInput).apply(null,arguments)},Pb=u._Conv3D=function(){return(Pb=u._Conv3D=u.asm.Conv3D).apply(null,arguments)},Ob=u._Conv3DBackpropFilterV2=function(){return(Ob=u._Conv3DBackpropFilterV2=u.asm.Conv3DBackpropFilterV2).apply(null,arguments)},Mb=u._Conv3DBackpropInputV2=function(){return(Mb=u._Conv3DBackpropInputV2=u.asm.Conv3DBackpropInputV2).apply(null,arguments)},Lb=u._Cos=function(){return(Lb=u._Cos=u.asm.Cos).apply(null,arguments)},Bb=u._Cosh=function(){return(Bb=u._Cosh=u.asm.Cosh).apply(null,arguments)},zb=u._CropAndResize=function(){return(zb=u._CropAndResize=u.asm.CropAndResize).apply(null,arguments)},Vb=u._Cumprod=function(){return(Vb=u._Cumprod=u.asm.Cumprod).apply(null,arguments)},Wb=u._Cumsum=function(){return(Wb=u._Cumsum=u.asm.Cumsum).apply(null,arguments)},Ub=u._DenseBincount=function(){return(Ub=u._DenseBincount=u.asm.DenseBincount).apply(null,arguments)},Gb=u._DepthToSpace=function(){return(Gb=u._DepthToSpace=u.asm.DepthToSpace).apply(null,arguments)},Hb=u._DepthwiseConv2dNative=function(){return(Hb=u._DepthwiseConv2dNative=u.asm.DepthwiseConv2dNative).apply(null,arguments)},Kb=u._Diag=function(){return(Kb=u._Diag=u.asm.Diag).apply(null,arguments)},qb=u._Dilation2D=function(){return(qb=u._Dilation2D=u.asm.Dilation2D).apply(null,arguments)},jb=u._Dilation2DBackpropFilter=function(){return(jb=u._Dilation2DBackpropFilter=u.asm.Dilation2DBackpropFilter).apply(null,arguments)},Xb=u._Dilation2DBackpropInput=function(){return(Xb=u._Dilation2DBackpropInput=u.asm.Dilation2DBackpropInput).apply(null,arguments)},Yb=u._Elu=function(){return(Yb=u._Elu=u.asm.Elu).apply(null,arguments)},Qb=u._EluGrad=function(){return(Qb=u._EluGrad=u.asm.EluGrad).apply(null,arguments)},Zb=u._Equal=function(){return(Zb=u._Equal=u.asm.Equal).apply(null,arguments)},Jb=u._Erf=function(){return(Jb=u._Erf=u.asm.Erf).apply(null,arguments)},eC=u._Exp=function(){return(eC=u._Exp=u.asm.Exp).apply(null,arguments)},tC=u._Expm1=function(){return(tC=u._Expm1=u.asm.Expm1).apply(null,arguments)},rC=u._FlipLeftRight=function(){return(rC=u._FlipLeftRight=u.asm.FlipLeftRight).apply(null,arguments)},oC=u._Floor=function(){return(oC=u._Floor=u.asm.Floor).apply(null,arguments)},nC=u._FloorDiv=function(){return(nC=u._FloorDiv=u.asm.FloorDiv).apply(null,arguments)},sC=u._FusedBatchNorm=function(){return(sC=u._FusedBatchNorm=u.asm.FusedBatchNorm).apply(null,arguments)},aC=u._FusedConv2D=function(){return(aC=u._FusedConv2D=u.asm.FusedConv2D).apply(null,arguments)},iC=u._FusedDepthwiseConv2D=function(){return(iC=u._FusedDepthwiseConv2D=u.asm.FusedDepthwiseConv2D).apply(null,arguments)},uC=u._Gather=function(){return(uC=u._Gather=u.asm.Gather).apply(null,arguments)},pC=u._GatherNd=function(){return(pC=u._GatherNd=u.asm.GatherNd).apply(null,arguments)},cC=u._Greater=function(){return(cC=u._Greater=u.asm.Greater).apply(null,arguments)},lC=u._GreaterEqual=function(){return(lC=u._GreaterEqual=u.asm.GreaterEqual).apply(null,arguments)},mC=u._IsFinite=function(){return(mC=u._IsFinite=u.asm.IsFinite).apply(null,arguments)},dC=u._IsInf=function(){return(dC=u._IsInf=u.asm.IsInf).apply(null,arguments)},fC=u._IsNan=function(){return(fC=u._IsNan=u.asm.IsNan).apply(null,arguments)},hC=u._LRN=function(){return(hC=u._LRN=u.asm.LRN).apply(null,arguments)},gC=u._LRNGrad=function(){return(gC=u._LRNGrad=u.asm.LRNGrad).apply(null,arguments)},xC=u._LeakyRelu=function(){return(xC=u._LeakyRelu=u.asm.LeakyRelu).apply(null,arguments)},yC=u._Less=function(){return(yC=u._Less=u.asm.Less).apply(null,arguments)},bC=u._LessEqual=function(){return(bC=u._LessEqual=u.asm.LessEqual).apply(null,arguments)},CC=u._LinSpace=function(){return(CC=u._LinSpace=u.asm.LinSpace).apply(null,arguments)},wC=u._Log=function(){return(wC=u._Log=u.asm.Log).apply(null,arguments)},SC=u._Log1p=function(){return(SC=u._Log1p=u.asm.Log1p).apply(null,arguments)},IC=u._LogicalAnd=function(){return(IC=u._LogicalAnd=u.asm.LogicalAnd).apply(null,arguments)},vC=u._LogicalNot=function(){return(vC=u._LogicalNot=u.asm.LogicalNot).apply(null,arguments)},kC=u._LogicalOr=function(){return(kC=u._LogicalOr=u.asm.LogicalOr).apply(null,arguments)},NC=u._LogicalXor=function(){return(NC=u._LogicalXor=u.asm.LogicalXor).apply(null,arguments)},TC=u._Max=function(){return(TC=u._Max=u.asm.Max).apply(null,arguments)},_C=u._MaxPool=function(){return(_C=u._MaxPool=u.asm.MaxPool).apply(null,arguments)},EC=u._MaxPool3D=function(){return(EC=u._MaxPool3D=u.asm.MaxPool3D).apply(null,arguments)},$C=u._MaxPool3DGrad=function(){return($C=u._MaxPool3DGrad=u.asm.MaxPool3DGrad).apply(null,arguments)},RC=u._MaxPoolGrad=function(){return(RC=u._MaxPoolGrad=u.asm.MaxPoolGrad).apply(null,arguments)},DC=u._MaxPoolWithArgmax=function(){return(DC=u._MaxPoolWithArgmax=u.asm.MaxPoolWithArgmax).apply(null,arguments)},AC=u._Maximum=function(){return(AC=u._Maximum=u.asm.Maximum).apply(null,arguments)},FC=u._Mean=function(){return(FC=u._Mean=u.asm.Mean).apply(null,arguments)},PC=u._Min=function(){return(PC=u._Min=u.asm.Min).apply(null,arguments)},OC=u._Minimum=function(){return(OC=u._Minimum=u.asm.Minimum).apply(null,arguments)},MC=u._MirrorPad=function(){return(MC=u._MirrorPad=u.asm.MirrorPad).apply(null,arguments)},LC=u._Mod=function(){return(LC=u._Mod=u.asm.Mod).apply(null,arguments)},BC=u._Multinomial=function(){return(BC=u._Multinomial=u.asm.Multinomial).apply(null,arguments)},zC=u._Multiply=function(){return(zC=u._Multiply=u.asm.Multiply).apply(null,arguments)},VC=u._Neg=function(){return(VC=u._Neg=u.asm.Neg).apply(null,arguments)},WC=u._NonMaxSuppressionV3=function(){return(WC=u._NonMaxSuppressionV3=u.asm.NonMaxSuppressionV3).apply(null,arguments)},UC=u._NonMaxSuppressionV4=function(){return(UC=u._NonMaxSuppressionV4=u.asm.NonMaxSuppressionV4).apply(null,arguments)},Mm=u._NonMaxSuppressionV5=function(){return(Mm=u._NonMaxSuppressionV5=u.asm.NonMaxSuppressionV5).apply(null,arguments)},Lm=u._NotEqual=function(){return(Lm=u._NotEqual=u.asm.NotEqual).apply(null,arguments)},cl=u._OneHot=function(){return(cl=u._OneHot=u.asm.OneHot).apply(null,arguments)},GC=u._PadV2=function(){return(GC=u._PadV2=u.asm.PadV2).apply(null,arguments)},HC=u._Pow=function(){return(HC=u._Pow=u.asm.Pow).apply(null,arguments)},Op=u._Prelu=function(){return(Op=u._Prelu=u.asm.Prelu).apply(null,arguments)},Bm=u._Prod=function(){return(Bm=u._Prod=u.asm.Prod).apply(null,arguments)},Mp=u._RealDiv=function(){return(Mp=u._RealDiv=u.asm.RealDiv).apply(null,arguments)},Lp=u._Reciprocal=function(){return(Lp=u._Reciprocal=u.asm.Reciprocal).apply(null,arguments)},KC=u._Relu=function(){return(KC=u._Relu=u.asm.Relu).apply(null,arguments)},K=u._Relu6=function(){return(K=u._Relu6=u.asm.Relu6).apply(null,arguments)},ae=u._ResizeBilinear=function(){return(ae=u._ResizeBilinear=u.asm.ResizeBilinear).apply(null,arguments)},Ee=u._ResizeBilinearGrad=function(){return(Ee=u._ResizeBilinearGrad=u.asm.ResizeBilinearGrad).apply(null,arguments)},at=u._ResizeNearestNeighbor=function(){return(at=u._ResizeNearestNeighbor=u.asm.ResizeNearestNeighbor).apply(null,arguments)},_t=u._ResizeNearestNeighborGrad=function(){return(_t=u._ResizeNearestNeighborGrad=u.asm.ResizeNearestNeighborGrad).apply(null,arguments)},Et=u._Reverse=function(){return(Et=u._Reverse=u.asm.Reverse).apply(null,arguments)},Qe=u._RotateWithOffset=function(){return(Qe=u._RotateWithOffset=u.asm.RotateWithOffset).apply(null,arguments)},Ke=u._Round=function(){return(Ke=u._Round=u.asm.Round).apply(null,arguments)},Ut=u._Rsqrt=function(){return(Ut=u._Rsqrt=u.asm.Rsqrt).apply(null,arguments)},no=u._ScatterNd=function(){return(no=u._ScatterNd=u.asm.ScatterNd).apply(null,arguments)},Ga=u._SearchSorted=function(){return(Ga=u._SearchSorted=u.asm.SearchSorted).apply(null,arguments)},zm=u._SelectV2=function(){return(zm=u._SelectV2=u.asm.SelectV2).apply(null,arguments)},ll=u._Selu=function(){return(ll=u._Selu=u.asm.Selu).apply(null,arguments)},qC=u._Sigmoid=function(){return(qC=u._Sigmoid=u.asm.Sigmoid).apply(null,arguments)},yr=u._Sign=function(){return(yr=u._Sign=u.asm.Sign).apply(null,arguments)},Ti=u._Sin=function(){return(Ti=u._Sin=u.asm.Sin).apply(null,arguments)},Vm=u._Sinh=function(){return(Vm=u._Sinh=u.asm.Sinh).apply(null,arguments)},XU=u._Softmax=function(){return(XU=u._Softmax=u.asm.Softmax).apply(null,arguments)},YU=u._Softplus=function(){return(YU=u._Softplus=u.asm.Softplus).apply(null,arguments)},QU=u._SparseFillEmptyRows=function(){return(QU=u._SparseFillEmptyRows=u.asm.SparseFillEmptyRows).apply(null,arguments)},ZU=u._SparseReshape=function(){return(ZU=u._SparseReshape=u.asm.SparseReshape).apply(null,arguments)},JU=u._SparseSegmentReduction=function(){return(JU=u._SparseSegmentReduction=u.asm.SparseSegmentReduction).apply(null,arguments)},eG=u._SparseToDense=function(){return(eG=u._SparseToDense=u.asm.SparseToDense).apply(null,arguments)},tG=u._Sqrt=function(){return(tG=u._Sqrt=u.asm.Sqrt).apply(null,arguments)},rG=u._Square=function(){return(rG=u._Square=u.asm.Square).apply(null,arguments)},oG=u._SquaredDifference=function(){return(oG=u._SquaredDifference=u.asm.SquaredDifference).apply(null,arguments)},nG=u._Step=function(){return(nG=u._Step=u.asm.Step).apply(null,arguments)},sG=u._StridedSlice=function(){return(sG=u._StridedSlice=u.asm.StridedSlice).apply(null,arguments)},aG=u._Sub=function(){return(aG=u._Sub=u.asm.Sub).apply(null,arguments)},iG=u._Sum=function(){return(iG=u._Sum=u.asm.Sum).apply(null,arguments)},uG=u._Tan=function(){return(uG=u._Tan=u.asm.Tan).apply(null,arguments)},pG=u._Tanh=function(){return(pG=u._Tanh=u.asm.Tanh).apply(null,arguments)},cG=u._TensorScatterUpdate=function(){return(cG=u._TensorScatterUpdate=u.asm.TensorScatterUpdate).apply(null,arguments)},lG=u._Tile=function(){return(lG=u._Tile=u.asm.Tile).apply(null,arguments)},mG=u._TopK=function(){return(mG=u._TopK=u.asm.TopK).apply(null,arguments)},dG=u._Transform=function(){return(dG=u._Transform=u.asm.Transform).apply(null,arguments)},fG=u._Transpose=function(){return(fG=u._Transpose=u.asm.Transpose).apply(null,arguments)},hG=u.__FusedMatMul=function(){return(hG=u.__FusedMatMul=u.asm._FusedMatMul).apply(null,arguments)},gG=u._malloc=function(){return(gG=u._malloc=u.asm.malloc).apply(null,arguments)},xG=u._free=function(){return(xG=u._free=u.asm.free).apply(null,arguments)},yG=u.__emscripten_tls_init=function(){return(yG=u.__emscripten_tls_init=u.asm._emscripten_tls_init).apply(null,arguments)},Wm=u._pthread_self=function(){return(Wm=u._pthread_self=u.asm.pthread_self).apply(null,arguments)},bG=u.___errno_location=function(){return(bG=u.___errno_location=u.asm.__errno_location).apply(null,arguments)},x0=u.__emscripten_thread_init=function(){return(x0=u.__emscripten_thread_init=u.asm._emscripten_thread_init).apply(null,arguments)},CG=u.__emscripten_thread_crashed=function(){return(CG=u.__emscripten_thread_crashed=u.asm._emscripten_thread_crashed).apply(null,arguments)},wG=u._emscripten_main_thread_process_queued_calls=function(){return(wG=u._emscripten_main_thread_process_queued_calls=u.asm.emscripten_main_thread_process_queued_calls).apply(null,arguments)},SG=u._emscripten_main_browser_thread_id=function(){return(SG=u._emscripten_main_browser_thread_id=u.asm.emscripten_main_browser_thread_id).apply(null,arguments)},y0=u._emscripten_run_in_main_runtime_thread_js=function(){return(y0=u._emscripten_run_in_main_runtime_thread_js=u.asm.emscripten_run_in_main_runtime_thread_js).apply(null,arguments)},IG=u._emscripten_dispatch_to_thread_=function(){return(IG=u._emscripten_dispatch_to_thread_=u.asm.emscripten_dispatch_to_thread_).apply(null,arguments)},b0=u.__emscripten_proxy_execute_task_queue=function(){return(b0=u.__emscripten_proxy_execute_task_queue=u.asm._emscripten_proxy_execute_task_queue).apply(null,arguments)},jC=u.__emscripten_thread_free_data=function(){return(jC=u.__emscripten_thread_free_data=u.asm._emscripten_thread_free_data).apply(null,arguments)},C0=u.__emscripten_thread_exit=function(){return(C0=u.__emscripten_thread_exit=u.asm._emscripten_thread_exit).apply(null,arguments)},w0=u._emscripten_stack_set_limits=function(){return(w0=u._emscripten_stack_set_limits=u.asm.emscripten_stack_set_limits).apply(null,arguments)},XC=u.stackSave=function(){return(XC=u.stackSave=u.asm.stackSave).apply(null,arguments)},Um=u.stackRestore=function(){return(Um=u.stackRestore=u.asm.stackRestore).apply(null,arguments)},Gm=u.stackAlloc=function(){return(Gm=u.stackAlloc=u.asm.stackAlloc).apply(null,arguments)},vG=u.dynCall_iijjiiii=function(){return(vG=u.dynCall_iijjiiii=u.asm.dynCall_iijjiiii).apply(null,arguments)},kG=u.dynCall_jiji=function(){return(kG=u.dynCall_jiji=u.asm.dynCall_jiji).apply(null,arguments)};u.keepRuntimeAlive=Lo,u.wasmMemory=oe,u.cwrap=tb,u.ExitStatus=ku,u.PThread=Me;var Hm;Ua=function F(){Hm||S0(),Hm||(Ua=F)};function S0(F){if(F=F||f,ki>0)return;if(S){c(u),Xt(),startWorker(u);return}if(Ks(),ki>0)return;function V(){Hm||(Hm=!0,u.calledRun=!0,!le&&(Xt(),c(u),u.onRuntimeInitialized&&u.onRuntimeInitialized(),Wa()))}u.setStatus?(u.setStatus(\"Running...\"),setTimeout(function(){setTimeout(function(){u.setStatus(\"\")},1),V()},1)):V()}if(u.preInit)for(typeof u.preInit==\"function\"&&(u.preInit=[u.preInit]);u.preInit.length>0;)u.preInit.pop()();S0();var Km;m&&(Km={uncaughtException:process.listeners(\"uncaughtException\").filter(function(F){return!m.uncaughtException.indexOf(F)>-1}),unhandledRejection:process.listeners(\"unhandledRejection\").filter(function(F){return!m.unhandledRejection.indexOf(F)>-1})});var qm;if(typeof WasmBackendModule!=\"undefined\")qm=WasmBackendModule;else if(typeof e!=\"undefined\")qm=e;else throw new Error(\"Could not find wasm module in post.js\");if(Km){var NG=qm._dispose;qm._dispose=function(){NG(),Km.uncaughtException.forEach(function(F){process.removeListener(\"uncaughtException\",F)}),Km.unhandledRejection.forEach(function(F){process.removeListener(\"unhandledRejection\",F)})}}return e.ready}})();typeof Wg==\"object\"&&typeof Gv==\"object\"?Gv.exports=Uv:typeof define==\"function\"&&define.amd?define([],function(){return Uv}):typeof Wg==\"object\"&&(Wg.WasmBackendModuleThreadedSimd=Uv)});var UB=Kt((e3t,WB)=>{WB.exports.wasmWorkerContents=`\"use strict\";var Module={};var ENVIRONMENT_IS_NODE=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require(\"worker_threads\");var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",data=>onmessage({data:data}));var fs=require(\"fs\");Object.assign(global,{self:global,require:require,Module:Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:function(f){(0,eval)(fs.readFileSync(f,\"utf8\")+\"//# sourceURL=\"+f)},postMessage:function(msg){parentPort.postMessage(msg)},performance:global.performance||{now:function(){return Date.now()}}})}var initializedJS=false;var pendingNotifiedProxyingQueues=[];function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,text+\"\n\");return}console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:Module[\"_pthread_self\"]()})}var err=threadPrintErr;self.alert=threadAlert;Module[\"instantiateWasm\"]=(info,receiveInstance)=>{var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);receiveInstance(instance);Module[\"wasmModule\"]=null;return instance.exports};self.onunhandledrejection=e=>{throw e.reason??e};self.startWorker=instance=>{Module=instance;postMessage({\"cmd\":\"loaded\"})};self.onmessage=e=>{try{if(e.data.cmd===\"load\"){Module[\"wasmModule\"]=e.data.wasmModule;for(const handler of e.data.handlers){Module[handler]=function(){postMessage({cmd:\"callHandler\",handler:handler,args:[...arguments]})}}Module[\"wasmMemory\"]=e.data.wasmMemory;Module[\"buffer\"]=Module[\"wasmMemory\"].buffer;Module[\"ENVIRONMENT_IS_PTHREAD\"]=true;if(typeof e.data.urlOrBlob==\"string\"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}WasmBackendModuleThreadedSimd(Module)}else if(e.data.cmd===\"run\"){Module[\"__emscripten_thread_init\"](e.data.pthread_ptr,0,0,1);Module[\"establishStackSpace\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].threadInitTLS();if(!initializedJS){pendingNotifiedProxyingQueues.forEach(queue=>{Module[\"executeNotifiedProxyingQueue\"](queue)});pendingNotifiedProxyingQueues=[];initializedJS=true}try{Module[\"invokeEntryPoint\"](e.data.start_routine,e.data.arg)}catch(ex){if(ex!=\"unwind\"){if(ex instanceof Module[\"ExitStatus\"]){if(Module[\"keepRuntimeAlive\"]()){}else{Module[\"__emscripten_thread_exit\"](ex.status)}}else{throw ex}}}}else if(e.data.cmd===\"cancel\"){if(Module[\"_pthread_self\"]()){Module[\"__emscripten_thread_exit\"](-1)}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processProxyingQueue\"){if(initializedJS){Module[\"executeNotifiedProxyingQueue\"](e.data.queue)}else{pendingNotifiedProxyingQueues.push(e.data.queue)}}else if(e.data.cmd){err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){if(Module[\"__emscripten_thread_crashed\"]){Module[\"__emscripten_thread_crashed\"]()}throw ex}};`});var GB=Kt((Ug,Kv)=>{var Hv=(()=>{var r=typeof document!=\"undefined\"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!=\"undefined\"&&(r=r||__filename),function(e){e=e||{};var t=typeof e!=\"undefined\"?e:{},o,n;t.ready=new Promise(function(K,ae){o=K,n=ae});var s;typeof process!=\"undefined\"&&process.listeners&&(s={uncaughtException:process.listeners(\"uncaughtException\"),unhandledRejection:process.listeners(\"unhandledRejection\")});var a=Object.assign({},t),i=[],p=\"./this.program\",u=(K,ae)=>{throw ae},c=typeof window==\"object\",l=typeof importScripts==\"function\",m=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\",d=\"\";function f(K){return t.locateFile?t.locateFile(K,d):d+K}var h,g,x,b;function C(K){if(K instanceof Ap)return;$(\"exiting due to exception: \"+K)}if(m){var S=Vv(),k=Wv();l?d=k.dirname(d)+\"/\":d=__dirname+\"/\",h=(K,ae)=>(K=Ks(K)?new URL(K):k.normalize(K),S.readFileSync(K,ae?void 0:\"utf8\")),x=K=>{var ae=h(K,!0);return ae.buffer||(ae=new Uint8Array(ae)),ae},g=(K,ae,Ee)=>{K=Ks(K)?new URL(K):k.normalize(K),S.readFile(K,function(at,_t){at?Ee(at):ae(_t.buffer)})},process.argv.length>1&&(p=process.argv[1].replace(/\\\\/g,\"/\")),i=process.argv.slice(2),process.on(\"uncaughtException\",function(K){if(!(K instanceof Ap))throw K}),process.on(\"unhandledRejection\",function(K){throw K}),u=(K,ae)=>{if(it())throw process.exitCode=K,ae;C(ae),process.exit(K)},t.inspect=function(){return\"[Emscripten Module object]\"}}else(c||l)&&(l?d=self.location.href:typeof document!=\"undefined\"&&document.currentScript&&(d=document.currentScript.src),r&&(d=r),d.indexOf(\"blob:\")!==0?d=d.substr(0,d.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1):d=\"\",h=K=>{var ae=new XMLHttpRequest;return ae.open(\"GET\",K,!1),ae.send(null),ae.responseText},l&&(x=K=>{var ae=new XMLHttpRequest;return ae.open(\"GET\",K,!1),ae.responseType=\"arraybuffer\",ae.send(null),new Uint8Array(ae.response)}),g=(K,ae,Ee)=>{var at=new XMLHttpRequest;at.open(\"GET\",K,!0),at.responseType=\"arraybuffer\",at.onload=()=>{if(at.status==200||at.status==0&&at.response){ae(at.response);return}Ee()},at.onerror=Ee,at.send(null)},b=K=>document.title=K);var _=t.print||console.log.bind(console),$=t.printErr||console.warn.bind(console);Object.assign(t,a),a=null,t.arguments&&(i=t.arguments),t.thisProgram&&(p=t.thisProgram),t.quit&&(u=t.quit);var R=4,D;t.wasmBinary&&(D=t.wasmBinary);var P=t.noExitRuntime||!0;typeof WebAssembly!=\"object\"&&fr(\"no native wasm support detected\");var O,M=!1,L;function B(K,ae){K||fr(ae)}var z=typeof TextDecoder!=\"undefined\"?new TextDecoder(\"utf8\"):void 0;function U(K,ae,Ee){ae>>>=0;for(var at=ae+Ee,_t=ae;K[_t]&&!(_t>=at);)++_t;if(_t-ae>16&&K.buffer&&z)return z.decode(K.subarray(ae,_t));for(var Et=\"\";ae<_t;){var Qe=K[ae++];if(!(Qe&128)){Et+=String.fromCharCode(Qe);continue}var Ke=K[ae++]&63;if((Qe&224)==192){Et+=String.fromCharCode((Qe&31)<<6|Ke);continue}var Ut=K[ae++]&63;if((Qe&240)==224?Qe=(Qe&15)<<12|Ke<<6|Ut:Qe=(Qe&7)<<18|Ke<<12|Ut<<6|K[ae++]&63,Qe<65536)Et+=String.fromCharCode(Qe);else{var no=Qe-65536;Et+=String.fromCharCode(55296|no>>10,56320|no&1023)}}return Et}function j(K,ae){return K>>>=0,K?U(ne,K,ae):\"\"}function q(K,ae,Ee,at){if(Ee>>>=0,!(at>0))return 0;for(var _t=Ee,Et=Ee+at-1,Qe=0;Qe=55296&&Ke<=57343){var Ut=K.charCodeAt(++Qe);Ke=65536+((Ke&1023)<<10)|Ut&1023}if(Ke<=127){if(Ee>=Et)break;ae[Ee++>>>0]=Ke}else if(Ke<=2047){if(Ee+1>=Et)break;ae[Ee++>>>0]=192|Ke>>6,ae[Ee++>>>0]=128|Ke&63}else if(Ke<=65535){if(Ee+2>=Et)break;ae[Ee++>>>0]=224|Ke>>12,ae[Ee++>>>0]=128|Ke>>6&63,ae[Ee++>>>0]=128|Ke&63}else{if(Ee+3>=Et)break;ae[Ee++>>>0]=240|Ke>>18,ae[Ee++>>>0]=128|Ke>>12&63,ae[Ee++>>>0]=128|Ke>>6&63,ae[Ee++>>>0]=128|Ke&63}}return ae[Ee>>>0]=0,Ee-_t}function Y(K,ae,Ee){return q(K,ne,ae,Ee)}var J,re,ne,ee,oe,ie,le,be,_e;function ve(K){J=K,t.HEAP8=re=new Int8Array(K),t.HEAP16=ee=new Int16Array(K),t.HEAP32=ie=new Int32Array(K),t.HEAPU8=ne=new Uint8Array(K),t.HEAPU16=oe=new Uint16Array(K),t.HEAPU32=le=new Uint32Array(K),t.HEAPF32=be=new Float32Array(K),t.HEAPF64=_e=new Float64Array(K)}var Fe=t.INITIAL_MEMORY||16777216,Pe,st=[],ct=[],He=[],lt=!1;function it(){return P}function ht(){if(t.preRun)for(typeof t.preRun==\"function\"&&(t.preRun=[t.preRun]);t.preRun.length;)Mt(t.preRun.shift());Ua(st)}function gt(){lt=!0,Ua(ct)}function Lr(){if(t.postRun)for(typeof t.postRun==\"function\"&&(t.postRun=[t.postRun]);t.postRun.length;)rr(t.postRun.shift());Ua(He)}function Mt(K){st.unshift(K)}function to(K){ct.unshift(K)}function rr(K){He.unshift(K)}var Tt=0,or=null,nr=null;function ro(K){Tt++,t.monitorRunDependencies&&t.monitorRunDependencies(Tt)}function oo(K){if(Tt--,t.monitorRunDependencies&&t.monitorRunDependencies(Tt),Tt==0&&(or!==null&&(clearInterval(or),or=null),nr)){var ae=nr;nr=null,ae()}}function fr(K){t.onAbort&&t.onAbort(K),K=\"Aborted(\"+K+\")\",$(K),M=!0,L=1,K+=\". Build with -sASSERTIONS for more info.\";var ae=new WebAssembly.RuntimeError(K);throw n(ae),ae}var Va=\"data:application/octet-stream;base64,\";function Lo(K){return K.startsWith(Va)}function Ks(K){return K.startsWith(\"file://\")}var Xt;Xt=\"tfjs-backend-wasm.wasm\",Lo(Xt)||(Xt=f(Xt));function Wa(K){try{if(K==Xt&&D)return new Uint8Array(D);if(x)return x(K);throw\"both async and sync fetching of the wasm failed\"}catch(ae){fr(ae)}}function ol(){if(!D&&(c||l)){if(typeof fetch==\"function\"&&!Ks(Xt))return fetch(Xt,{credentials:\"same-origin\"}).then(function(K){if(!K.ok)throw\"failed to load wasm binary file at '\"+Xt+\"'\";return K.arrayBuffer()}).catch(function(){return Wa(Xt)});if(g)return new Promise(function(K,ae){g(Xt,function(Ee){K(new Uint8Array(Ee))},ae)})}return Promise.resolve().then(function(){return Wa(Xt)})}function nl(){var K={env:sl,wasi_snapshot_preview1:sl};function ae(Qe,Ke){var Ut=Qe.exports;t.asm=Ut,O=t.asm.memory,ve(O.buffer),Pe=t.asm.__indirect_function_table,to(t.asm.__wasm_call_ctors),oo(\"wasm-instantiate\")}ro(\"wasm-instantiate\");function Ee(Qe){ae(Qe.instance)}function at(Qe){return ol().then(function(Ke){return WebAssembly.instantiate(Ke,K)}).then(function(Ke){return Ke}).then(Qe,function(Ke){$(\"failed to asynchronously prepare wasm: \"+Ke),fr(Ke)})}function _t(){return!D&&typeof WebAssembly.instantiateStreaming==\"function\"&&!Lo(Xt)&&!Ks(Xt)&&!m&&typeof fetch==\"function\"?fetch(Xt,{credentials:\"same-origin\"}).then(function(Qe){var Ke=WebAssembly.instantiateStreaming(Qe,K);return Ke.then(Ee,function(Ut){return $(\"wasm streaming compile failed: \"+Ut),$(\"falling back to ArrayBuffer instantiation\"),at(Ee)})}):at(Ee)}if(t.instantiateWasm)try{var Et=t.instantiateWasm(K,ae);return Et}catch(Qe){$(\"Module.instantiateWasm callback failed with error: \"+Qe),n(Qe)}return _t().catch(n),{}}var d0,ki;function Ap(K){this.name=\"ExitStatus\",this.message=\"Program terminated with exit(\"+K+\")\",this.status=K}function Ua(K){for(;K.length>0;)K.shift()(t)}function Cy(){fr(\"\")}function wm(){return 4294901760}function vu(){return wm()}function wy(K,ae,Ee){ne.copyWithin(K>>>0,ae>>>0,ae+Ee>>>0)}function Sm(K){try{return O.grow(K-J.byteLength+65535>>>16),ve(O.buffer),1}catch(ae){}}function Fp(K){var ae=ne.length;K=K>>>0;var Ee=wm();if(K>Ee)return!1;let at=(Ut,no)=>Ut+(no-Ut%no)%no;for(var _t=1;_t<=4;_t*=2){var Et=ae*(1+.2/_t);Et=Math.min(Et,K+100663296);var Qe=Math.min(Ee,at(Math.max(K,Et),65536)),Ke=Sm(Qe);if(Ke)return!0}return!1}var hr={varargs:void 0,get:function(){hr.varargs+=4;var K=ie[hr.varargs-4>>>2];return K},getStr:function(K){var ae=j(K);return ae}};function Im(K){return 52}function Sy(K,ae,Ee,at,_t){return 70}var Iy=[null,[],[]];function f0(K,ae){var Ee=Iy[K];ae===0||ae===10?((K===1?_:$)(U(Ee,0)),Ee.length=0):Ee.push(ae)}function h0(K,ae,Ee,at){for(var _t=0,Et=0;Et>>2],Ke=le[ae+4>>>2];ae+=8;for(var Ut=0;Ut>>0]);_t+=Ke}return le[at>>>2]=_t,0}function vm(K){var ae=t[\"_\"+K];return ae}function ku(K,ae){re.set(K,ae>>>0)}function vy(K,ae,Ee,at,_t){var Et={string:yr=>{var Ti=0;if(yr!=null&&yr!==0){var Vm=(yr.length<<2)+1;Ti=cl(Vm),Y(yr,Ti,Vm)}return Ti},array:yr=>{var Ti=cl(yr.length);return ku(yr,Ti),Ti}};function Qe(yr){return ae===\"string\"?j(yr):ae===\"boolean\"?!!yr:yr}var Ke=vm(K),Ut=[],no=0;if(at)for(var Ga=0;GaQe===\"number\"||Qe===\"boolean\"),Et=ae!==\"string\";return Et&&_t&&!at?vm(K):function(){return vy(K,ae,Ee,arguments,at)}}var sl={abort:Cy,emscripten_get_heap_max:vu,emscripten_memcpy_big:wy,emscripten_resize_heap:Fp,fd_close:Im,fd_seek:Sy,fd_write:h0},Ny=nl(),km=t.___wasm_call_ctors=function(){return(km=t.___wasm_call_ctors=t.asm.__wasm_call_ctors).apply(null,arguments)},Nm=t._init=function(){return(Nm=t._init=t.asm.init).apply(null,arguments)},Ty=t._init_with_threads_count=function(){return(Ty=t._init_with_threads_count=t.asm.init_with_threads_count).apply(null,arguments)},Tm=t._get_threads_count=function(){return(Tm=t._get_threads_count=t.asm.get_threads_count).apply(null,arguments)},_y=t._register_tensor=function(){return(_y=t._register_tensor=t.asm.register_tensor).apply(null,arguments)},Me=t._dispose_data=function(){return(Me=t._dispose_data=t.asm.dispose_data).apply(null,arguments)},al=t._dispose=function(){return(al=t._dispose=t.asm.dispose).apply(null,arguments)},Ey=t._Abs=function(){return(Ey=t._Abs=t.asm.Abs).apply(null,arguments)},_m=t._Acos=function(){return(_m=t._Acos=t.asm.Acos).apply(null,arguments)},Pp=t._Acosh=function(){return(Pp=t._Acosh=t.asm.Acosh).apply(null,arguments)},$y=t._Add=function(){return($y=t._Add=t.asm.Add).apply(null,arguments)},Ry=t._AddN=function(){return(Ry=t._AddN=t.asm.AddN).apply(null,arguments)},Dy=t._All=function(){return(Dy=t._All=t.asm.All).apply(null,arguments)},Ay=t._Any=function(){return(Ay=t._Any=t.asm.Any).apply(null,arguments)},Fy=t._ArgMax=function(){return(Fy=t._ArgMax=t.asm.ArgMax).apply(null,arguments)},Em=t._ArgMin=function(){return(Em=t._ArgMin=t.asm.ArgMin).apply(null,arguments)},$m=t._Asin=function(){return($m=t._Asin=t.asm.Asin).apply(null,arguments)},Py=t._Asinh=function(){return(Py=t._Asinh=t.asm.Asinh).apply(null,arguments)},Oy=t._Atan=function(){return(Oy=t._Atan=t.asm.Atan).apply(null,arguments)},My=t._Atan2=function(){return(My=t._Atan2=t.asm.Atan2).apply(null,arguments)},il=t._Atanh=function(){return(il=t._Atanh=t.asm.Atanh).apply(null,arguments)},Ly=t._AvgPool=function(){return(Ly=t._AvgPool=t.asm.AvgPool).apply(null,arguments)},By=t._AvgPool3D=function(){return(By=t._AvgPool3D=t.asm.AvgPool3D).apply(null,arguments)},zy=t._AvgPool3DGrad=function(){return(zy=t._AvgPool3DGrad=t.asm.AvgPool3DGrad).apply(null,arguments)},Nu=t._AvgPoolGrad=function(){return(Nu=t._AvgPoolGrad=t.asm.AvgPoolGrad).apply(null,arguments)},Vy=t._BatchMatMul=function(){return(Vy=t._BatchMatMul=t.asm.BatchMatMul).apply(null,arguments)},Wy=t._Bincount=function(){return(Wy=t._Bincount=t.asm.Bincount).apply(null,arguments)},Rm=t._BitwiseAnd=function(){return(Rm=t._BitwiseAnd=t.asm.BitwiseAnd).apply(null,arguments)},Uy=t._Ceil=function(){return(Uy=t._Ceil=t.asm.Ceil).apply(null,arguments)},ul=t._ClipByValue=function(){return(ul=t._ClipByValue=t.asm.ClipByValue).apply(null,arguments)},Gy=t._Conv2D=function(){return(Gy=t._Conv2D=t.asm.Conv2D).apply(null,arguments)},Hy=t._Conv2DBackpropInput=function(){return(Hy=t._Conv2DBackpropInput=t.asm.Conv2DBackpropInput).apply(null,arguments)},Ky=t._Conv3D=function(){return(Ky=t._Conv3D=t.asm.Conv3D).apply(null,arguments)},Ni=t._Conv3DBackpropFilterV2=function(){return(Ni=t._Conv3DBackpropFilterV2=t.asm.Conv3DBackpropFilterV2).apply(null,arguments)},pl=t._Conv3DBackpropInputV2=function(){return(pl=t._Conv3DBackpropInputV2=t.asm.Conv3DBackpropInputV2).apply(null,arguments)},qy=t._Cos=function(){return(qy=t._Cos=t.asm.Cos).apply(null,arguments)},jy=t._Cosh=function(){return(jy=t._Cosh=t.asm.Cosh).apply(null,arguments)},Xy=t._CropAndResize=function(){return(Xy=t._CropAndResize=t.asm.CropAndResize).apply(null,arguments)},Yy=t._Cumprod=function(){return(Yy=t._Cumprod=t.asm.Cumprod).apply(null,arguments)},Dm=t._Cumsum=function(){return(Dm=t._Cumsum=t.asm.Cumsum).apply(null,arguments)},Am=t._DenseBincount=function(){return(Am=t._DenseBincount=t.asm.DenseBincount).apply(null,arguments)},Qy=t._DepthToSpace=function(){return(Qy=t._DepthToSpace=t.asm.DepthToSpace).apply(null,arguments)},Zy=t._DepthwiseConv2dNative=function(){return(Zy=t._DepthwiseConv2dNative=t.asm.DepthwiseConv2dNative).apply(null,arguments)},Fm=t._Diag=function(){return(Fm=t._Diag=t.asm.Diag).apply(null,arguments)},Pm=t._Dilation2D=function(){return(Pm=t._Dilation2D=t.asm.Dilation2D).apply(null,arguments)},Jy=t._Dilation2DBackpropFilter=function(){return(Jy=t._Dilation2DBackpropFilter=t.asm.Dilation2DBackpropFilter).apply(null,arguments)},eb=t._Dilation2DBackpropInput=function(){return(eb=t._Dilation2DBackpropInput=t.asm.Dilation2DBackpropInput).apply(null,arguments)},tb=t._Elu=function(){return(tb=t._Elu=t.asm.Elu).apply(null,arguments)},rb=t._EluGrad=function(){return(rb=t._EluGrad=t.asm.EluGrad).apply(null,arguments)},Om=t._Equal=function(){return(Om=t._Equal=t.asm.Equal).apply(null,arguments)},g0=t._Erf=function(){return(g0=t._Erf=t.asm.Erf).apply(null,arguments)},ob=t._Exp=function(){return(ob=t._Exp=t.asm.Exp).apply(null,arguments)},nb=t._Expm1=function(){return(nb=t._Expm1=t.asm.Expm1).apply(null,arguments)},sb=t._FlipLeftRight=function(){return(sb=t._FlipLeftRight=t.asm.FlipLeftRight).apply(null,arguments)},ab=t._Floor=function(){return(ab=t._Floor=t.asm.Floor).apply(null,arguments)},ib=t._FloorDiv=function(){return(ib=t._FloorDiv=t.asm.FloorDiv).apply(null,arguments)},ub=t._FusedBatchNorm=function(){return(ub=t._FusedBatchNorm=t.asm.FusedBatchNorm).apply(null,arguments)},pb=t._FusedConv2D=function(){return(pb=t._FusedConv2D=t.asm.FusedConv2D).apply(null,arguments)},cb=t._FusedDepthwiseConv2D=function(){return(cb=t._FusedDepthwiseConv2D=t.asm.FusedDepthwiseConv2D).apply(null,arguments)},lb=t._Gather=function(){return(lb=t._Gather=t.asm.Gather).apply(null,arguments)},mb=t._GatherNd=function(){return(mb=t._GatherNd=t.asm.GatherNd).apply(null,arguments)},db=t._Greater=function(){return(db=t._Greater=t.asm.Greater).apply(null,arguments)},fb=t._GreaterEqual=function(){return(fb=t._GreaterEqual=t.asm.GreaterEqual).apply(null,arguments)},hb=t._IsFinite=function(){return(hb=t._IsFinite=t.asm.IsFinite).apply(null,arguments)},gb=t._IsInf=function(){return(gb=t._IsInf=t.asm.IsInf).apply(null,arguments)},xb=t._IsNan=function(){return(xb=t._IsNan=t.asm.IsNan).apply(null,arguments)},yb=t._LRN=function(){return(yb=t._LRN=t.asm.LRN).apply(null,arguments)},bb=t._LRNGrad=function(){return(bb=t._LRNGrad=t.asm.LRNGrad).apply(null,arguments)},Cb=t._LeakyRelu=function(){return(Cb=t._LeakyRelu=t.asm.LeakyRelu).apply(null,arguments)},wb=t._Less=function(){return(wb=t._Less=t.asm.Less).apply(null,arguments)},Sb=t._LessEqual=function(){return(Sb=t._LessEqual=t.asm.LessEqual).apply(null,arguments)},Ib=t._LinSpace=function(){return(Ib=t._LinSpace=t.asm.LinSpace).apply(null,arguments)},vb=t._Log=function(){return(vb=t._Log=t.asm.Log).apply(null,arguments)},kb=t._Log1p=function(){return(kb=t._Log1p=t.asm.Log1p).apply(null,arguments)},Nb=t._LogicalAnd=function(){return(Nb=t._LogicalAnd=t.asm.LogicalAnd).apply(null,arguments)},Tb=t._LogicalNot=function(){return(Tb=t._LogicalNot=t.asm.LogicalNot).apply(null,arguments)},_b=t._LogicalOr=function(){return(_b=t._LogicalOr=t.asm.LogicalOr).apply(null,arguments)},Eb=t._LogicalXor=function(){return(Eb=t._LogicalXor=t.asm.LogicalXor).apply(null,arguments)},$b=t._Max=function(){return($b=t._Max=t.asm.Max).apply(null,arguments)},Rb=t._MaxPool=function(){return(Rb=t._MaxPool=t.asm.MaxPool).apply(null,arguments)},Db=t._MaxPool3D=function(){return(Db=t._MaxPool3D=t.asm.MaxPool3D).apply(null,arguments)},Ab=t._MaxPool3DGrad=function(){return(Ab=t._MaxPool3DGrad=t.asm.MaxPool3DGrad).apply(null,arguments)},Fb=t._MaxPoolGrad=function(){return(Fb=t._MaxPoolGrad=t.asm.MaxPoolGrad).apply(null,arguments)},Pb=t._MaxPoolWithArgmax=function(){return(Pb=t._MaxPoolWithArgmax=t.asm.MaxPoolWithArgmax).apply(null,arguments)},Ob=t._Maximum=function(){return(Ob=t._Maximum=t.asm.Maximum).apply(null,arguments)},Mb=t._Mean=function(){return(Mb=t._Mean=t.asm.Mean).apply(null,arguments)},Lb=t._Min=function(){return(Lb=t._Min=t.asm.Min).apply(null,arguments)},Bb=t._Minimum=function(){return(Bb=t._Minimum=t.asm.Minimum).apply(null,arguments)},zb=t._MirrorPad=function(){return(zb=t._MirrorPad=t.asm.MirrorPad).apply(null,arguments)},Vb=t._Mod=function(){return(Vb=t._Mod=t.asm.Mod).apply(null,arguments)},Wb=t._Multinomial=function(){return(Wb=t._Multinomial=t.asm.Multinomial).apply(null,arguments)},Ub=t._Multiply=function(){return(Ub=t._Multiply=t.asm.Multiply).apply(null,arguments)},Gb=t._Neg=function(){return(Gb=t._Neg=t.asm.Neg).apply(null,arguments)},Hb=t._NonMaxSuppressionV3=function(){return(Hb=t._NonMaxSuppressionV3=t.asm.NonMaxSuppressionV3).apply(null,arguments)},Kb=t._NonMaxSuppressionV4=function(){return(Kb=t._NonMaxSuppressionV4=t.asm.NonMaxSuppressionV4).apply(null,arguments)},qb=t._NonMaxSuppressionV5=function(){return(qb=t._NonMaxSuppressionV5=t.asm.NonMaxSuppressionV5).apply(null,arguments)},jb=t._NotEqual=function(){return(jb=t._NotEqual=t.asm.NotEqual).apply(null,arguments)},Xb=t._OneHot=function(){return(Xb=t._OneHot=t.asm.OneHot).apply(null,arguments)},Yb=t._PadV2=function(){return(Yb=t._PadV2=t.asm.PadV2).apply(null,arguments)},Qb=t._Pow=function(){return(Qb=t._Pow=t.asm.Pow).apply(null,arguments)},Zb=t._Prelu=function(){return(Zb=t._Prelu=t.asm.Prelu).apply(null,arguments)},Jb=t._Prod=function(){return(Jb=t._Prod=t.asm.Prod).apply(null,arguments)},eC=t._RealDiv=function(){return(eC=t._RealDiv=t.asm.RealDiv).apply(null,arguments)},tC=t._Reciprocal=function(){return(tC=t._Reciprocal=t.asm.Reciprocal).apply(null,arguments)},rC=t._Relu=function(){return(rC=t._Relu=t.asm.Relu).apply(null,arguments)},oC=t._Relu6=function(){return(oC=t._Relu6=t.asm.Relu6).apply(null,arguments)},nC=t._ResizeBilinear=function(){return(nC=t._ResizeBilinear=t.asm.ResizeBilinear).apply(null,arguments)},sC=t._ResizeBilinearGrad=function(){return(sC=t._ResizeBilinearGrad=t.asm.ResizeBilinearGrad).apply(null,arguments)},aC=t._ResizeNearestNeighbor=function(){return(aC=t._ResizeNearestNeighbor=t.asm.ResizeNearestNeighbor).apply(null,arguments)},iC=t._ResizeNearestNeighborGrad=function(){return(iC=t._ResizeNearestNeighborGrad=t.asm.ResizeNearestNeighborGrad).apply(null,arguments)},uC=t._Reverse=function(){return(uC=t._Reverse=t.asm.Reverse).apply(null,arguments)},pC=t._RotateWithOffset=function(){return(pC=t._RotateWithOffset=t.asm.RotateWithOffset).apply(null,arguments)},cC=t._Round=function(){return(cC=t._Round=t.asm.Round).apply(null,arguments)},lC=t._Rsqrt=function(){return(lC=t._Rsqrt=t.asm.Rsqrt).apply(null,arguments)},mC=t._ScatterNd=function(){return(mC=t._ScatterNd=t.asm.ScatterNd).apply(null,arguments)},dC=t._SearchSorted=function(){return(dC=t._SearchSorted=t.asm.SearchSorted).apply(null,arguments)},fC=t._SelectV2=function(){return(fC=t._SelectV2=t.asm.SelectV2).apply(null,arguments)},hC=t._Selu=function(){return(hC=t._Selu=t.asm.Selu).apply(null,arguments)},gC=t._Sigmoid=function(){return(gC=t._Sigmoid=t.asm.Sigmoid).apply(null,arguments)},xC=t._Sign=function(){return(xC=t._Sign=t.asm.Sign).apply(null,arguments)},yC=t._Sin=function(){return(yC=t._Sin=t.asm.Sin).apply(null,arguments)},bC=t._Sinh=function(){return(bC=t._Sinh=t.asm.Sinh).apply(null,arguments)},CC=t._Softmax=function(){return(CC=t._Softmax=t.asm.Softmax).apply(null,arguments)},wC=t._Softplus=function(){return(wC=t._Softplus=t.asm.Softplus).apply(null,arguments)},SC=t._SparseFillEmptyRows=function(){return(SC=t._SparseFillEmptyRows=t.asm.SparseFillEmptyRows).apply(null,arguments)},IC=t._SparseReshape=function(){return(IC=t._SparseReshape=t.asm.SparseReshape).apply(null,arguments)},vC=t._SparseSegmentReduction=function(){return(vC=t._SparseSegmentReduction=t.asm.SparseSegmentReduction).apply(null,arguments)},kC=t._SparseToDense=function(){return(kC=t._SparseToDense=t.asm.SparseToDense).apply(null,arguments)},NC=t._Sqrt=function(){return(NC=t._Sqrt=t.asm.Sqrt).apply(null,arguments)},TC=t._Square=function(){return(TC=t._Square=t.asm.Square).apply(null,arguments)},_C=t._SquaredDifference=function(){return(_C=t._SquaredDifference=t.asm.SquaredDifference).apply(null,arguments)},EC=t._Step=function(){return(EC=t._Step=t.asm.Step).apply(null,arguments)},$C=t._StridedSlice=function(){return($C=t._StridedSlice=t.asm.StridedSlice).apply(null,arguments)},RC=t._Sub=function(){return(RC=t._Sub=t.asm.Sub).apply(null,arguments)},DC=t._Sum=function(){return(DC=t._Sum=t.asm.Sum).apply(null,arguments)},AC=t._Tan=function(){return(AC=t._Tan=t.asm.Tan).apply(null,arguments)},FC=t._Tanh=function(){return(FC=t._Tanh=t.asm.Tanh).apply(null,arguments)},PC=t._TensorScatterUpdate=function(){return(PC=t._TensorScatterUpdate=t.asm.TensorScatterUpdate).apply(null,arguments)},OC=t._Tile=function(){return(OC=t._Tile=t.asm.Tile).apply(null,arguments)},MC=t._TopK=function(){return(MC=t._TopK=t.asm.TopK).apply(null,arguments)},LC=t._Transform=function(){return(LC=t._Transform=t.asm.Transform).apply(null,arguments)},BC=t._Transpose=function(){return(BC=t._Transpose=t.asm.Transpose).apply(null,arguments)},zC=t.__FusedMatMul=function(){return(zC=t.__FusedMatMul=t.asm._FusedMatMul).apply(null,arguments)},VC=t._malloc=function(){return(VC=t._malloc=t.asm.malloc).apply(null,arguments)},WC=t._free=function(){return(WC=t._free=t.asm.free).apply(null,arguments)},UC=t.___errno_location=function(){return(UC=t.___errno_location=t.asm.__errno_location).apply(null,arguments)},Mm=t.stackSave=function(){return(Mm=t.stackSave=t.asm.stackSave).apply(null,arguments)},Lm=t.stackRestore=function(){return(Lm=t.stackRestore=t.asm.stackRestore).apply(null,arguments)},cl=t.stackAlloc=function(){return(cl=t.stackAlloc=t.asm.stackAlloc).apply(null,arguments)},GC=t.dynCall_iijjiiii=function(){return(GC=t.dynCall_iijjiiii=t.asm.dynCall_iijjiiii).apply(null,arguments)},HC=t.dynCall_jiji=function(){return(HC=t.dynCall_jiji=t.asm.dynCall_jiji).apply(null,arguments)};t.cwrap=ky;var Op;nr=function K(){Op||Bm(),Op||(nr=K)};function Bm(K){if(K=K||i,Tt>0||(ht(),Tt>0))return;function ae(){Op||(Op=!0,t.calledRun=!0,!M&&(gt(),o(t),t.onRuntimeInitialized&&t.onRuntimeInitialized(),Lr()))}t.setStatus?(t.setStatus(\"Running...\"),setTimeout(function(){setTimeout(function(){t.setStatus(\"\")},1),ae()},1)):ae()}if(t.preInit)for(typeof t.preInit==\"function\"&&(t.preInit=[t.preInit]);t.preInit.length>0;)t.preInit.pop()();Bm();var Mp;s&&(Mp={uncaughtException:process.listeners(\"uncaughtException\").filter(function(K){return!s.uncaughtException.indexOf(K)>-1}),unhandledRejection:process.listeners(\"unhandledRejection\").filter(function(K){return!s.unhandledRejection.indexOf(K)>-1})});var Lp;if(typeof e!=\"undefined\")Lp=e;else if(typeof WasmBackendModuleThreadedSimd!=\"undefined\")Lp=WasmBackendModuleThreadedSimd;else throw new Error(\"Could not find wasm module in post.js\");if(Mp){var KC=Lp._dispose;Lp._dispose=function(){KC(),Mp.uncaughtException.forEach(function(K){process.removeListener(\"uncaughtException\",K)}),Mp.unhandledRejection.forEach(function(K){process.removeListener(\"unhandledRejection\",K)})}}return e.ready}})();typeof Ug==\"object\"&&typeof Kv==\"object\"?Kv.exports=Hv:typeof define==\"function\"&&define.amd?define([],function(){return Hv}):typeof Ug==\"object\"&&(Ug.WasmBackendModule=Hv)});var Bo=class{constructor(e,t){this.backend=e,this.dataMover=t,this.data=new WeakMap,this.dataIdsCount=0}get(e){return this.data.has(e)||this.dataMover.moveData(this.backend,e),this.data.get(e)}set(e,t){this.dataIdsCount++,this.data.set(e,t)}has(e){return this.data.has(e)}delete(e){return this.dataIdsCount--,this.data.delete(e)}numDataIds(){return this.dataIdsCount}},ao=class{refCount(e){return zr(\"refCount\")}incRef(e){return zr(\"incRef\")}timerAvailable(){return!0}time(e){return zr(\"time\")}read(e){return zr(\"read\")}readSync(e){return zr(\"readSync\")}readToGPU(e,t){return zr(\"readToGPU\")}numDataIds(){return zr(\"numDataIds\")}disposeData(e,t){return zr(\"disposeData\")}write(e,t,o){return zr(\"write\")}move(e,t,o,n,s){return zr(\"move\")}createTensorFromGPUData(e,t,o){return zr(\"createTensorFromGPUData\")}memory(){return zr(\"memory\")}floatPrecision(){return zr(\"floatPrecision\")}epsilon(){return this.floatPrecision()===32?1e-7:1e-4}dispose(){return zr(\"dispose\")}};function zr(r){throw new Error(`'${r}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`)}function k0(r){let e=r.length,t=0;for(;e>0;)t=Math.random()*e|0,e--,jm(r,e,t)}function FG(r,e){if(r.length!==e.length)throw new Error(`Array sizes must match to be shuffled together First array length was ${r.length}Second array length was ${e.length}`);let t=r.length,o=0;for(;t>0;)o=Math.random()*t|0,t--,jm(r,t,o),jm(e,t,o)}function Vp(r,e,t){return Math.max(r,Math.min(e,t))}function PG(r){return r%2===0?r:r+1}function jm(r,e,t){let o=r[e];r[e]=r[t],r[t]=o}function OG(r){let e=0;for(let t=0;tt+` Shapes ${r} and ${e} must match`)}function io(r){E(r!=null,()=>\"The input to the tensor constructor must be a non-null value.\")}function ze(r){if(r.length===0)return 1;let e=r[0];for(let t=1;t0,t,o){return new Promise((n,s)=>{let a=0,i=()=>{if(r()){n();return}a++;let p=e(a);if(t!=null&&a>=t){s();return}o!=null?o(i,p):setTimeout(i,p)};i()})}function GG(r,e){let t=1,o=-1;for(let s=0;s=0)t*=r[s];else if(r[s]===-1){if(o!==-1)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${o} and dim ${s}`);o=s}else if(r[s]<0)throw Error(`Shapes can not be < 0. Found ${r[s]} at dim ${s}`);if(o===-1){if(e>0&&e!==t)throw Error(`Size(${e}) must match the product of shape ${r}`);return r}if(t===0)throw Error(`Cannot infer the missing size in [${r}] when there are 0 elements`);if(e%t!==0)throw Error(`The implicit shape can't be a fractional number. Got ${e} / ${t}`);let n=r.slice();return n[o]=e/t,n}function _i(r,e){let t=e.length;return r=r==null?e.map((o,n)=>n):[].concat(r),E(r.every(o=>o>=-t&&o`All values in axis param must be in range [-${t}, ${t}) but got axis ${r}`),E(r.every(o=>Ka(o)),()=>`All values in axis param must be integers but got axis ${r}`),r.map(o=>o<0?t+o:o)}function JC(r,e){let t=[],o=[],n=e!=null&&Array.isArray(e)&&e.length===0,s=e==null||n?null:_i(e,r).sort(),a=0;for(let i=0;ii)&&r[i]===1&&(t.push(r[i]),o.push(i)),s[a]<=i&&a++}r[i]!==1&&(t.push(r[i]),o.push(i))}return{newShape:t,keptDims:o}}function ew(r,e){return Xm(r,e)}function Xm(r,e){let t=null;if(r==null||r===\"float32\")t=new Float32Array(e);else if(r===\"int32\")t=new Int32Array(e);else if(r===\"bool\")t=new Uint8Array(e);else if(r===\"string\")t=new Array(e);else throw new Error(`Unknown data type ${r}`);return t}function tw(r,e){for(let t=0;te+=t.length),e}function zo(r){return typeof r==\"string\"||r instanceof String}function N0(r){return typeof r==\"boolean\"}function T0(r){return typeof r==\"number\"}function Ei(r){return Array.isArray(r)?Ei(r[0]):r instanceof Float32Array?\"float32\":r instanceof Int32Array||r instanceof Uint8Array||r instanceof Uint8ClampedArray?\"int32\":T0(r)?\"float32\":zo(r)?\"string\":N0(r)?\"bool\":\"float32\"}function qs(r){return!!(r&&r.constructor&&r.call&&r.apply)}function Up(r,e){for(let t=e;t=0;--o)t[o]=t[o+1]*r[o+1];return t}function _0(r,e,t,o=!1){let n=new Array;if(e.length===1){let s=e[0]*(o?2:1);for(let a=0;ap*u)*(o?2:1);for(let p=0;pn*s)*(t?2:1);if(o===0)return[];if(o!==e.length)throw new Error(`[${r}] does not match the input size ${e.length}${t?\" for a complex tensor\":\"\"}.`);return _0(0,r,e,t)}function KG(r,e){if(Array.isArray(r))return r;if(e===\"float32\")return r instanceof Float32Array?r:new Float32Array(r);if(e===\"int32\")return r instanceof Int32Array?r:new Int32Array(r);if(e===\"bool\"||e===\"string\")return Uint8Array.from(new Int32Array(r));throw new Error(`Unknown dtype ${e}`)}function ml(r,e){let t=Gp(r,e);for(let o=0;oo*n,1);if(e==null||e===\"float32\")return Tu(r,new Float32Array(t));if(e===\"int32\")return Tu(r,new Int32Array(t));if(e===\"bool\")return Tu(r,new Uint8Array(t));throw new Error(`Unknown data type ${e}`)}function Ct(r){r.forEach(e=>{E(Number.isInteger(e)&&e>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${r}].`)})}function jG(r,e,t){if(e===0)return 0;if(e===1)return r[0];let o=r[r.length-1];for(let n=0;n{let[n,s]=o.split(\":\");this.urlFlags[n]=JG(n,s)})}};function QG(r){let e={};return r.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(t,...o)=>(ZG(e,o[0],o[1]),o.join(\"=\"))),e}function ZG(r,e,t){r[decodeURIComponent(e)]=decodeURIComponent(t||\"\")}function JG(r,e){let t=e.toLowerCase();return t===\"true\"||t===\"false\"?t===\"true\":`${+t}`===t?+t:e}function A(){return nw}var nw=null;function $0(r){nw=r}var sw;function aw(){if(sw==null){let r;if(typeof window!=\"undefined\")r=window;else if(typeof global!=\"undefined\")r=global;else if(typeof process!=\"undefined\")r=process;else if(typeof self!=\"undefined\")r=self;else throw new Error(\"Could not find a global object\");sw=r}return sw}function e4(){let r=aw();return r._tfGlobals==null&&(r._tfGlobals=new Map),r._tfGlobals}function fl(r,e){let t=e4();if(t.has(r))return t.get(r);{let o=e();return t.set(r,o),t.get(r)}}var Xs=\"Abs\",Vo=\"Acos\",Wo=\"Acosh\",uo=\"Add\",Uo=\"AddN\",Go=\"All\",Ho=\"Any\",Ys=\"ArgMax\",Qs=\"ArgMin\",Ko=\"Asin\",qo=\"Asinh\",jo=\"Atan\",Xo=\"Atanh\",Yo=\"Atan2\",Qo=\"AvgPool\",$i=\"AvgPoolGrad\",Zs=\"AvgPool3D\",Ri=\"AvgPool3DGrad\",Zo=\"BatchMatMul\",Js=\"BatchToSpaceND\",Jo=\"Bincount\",qa=\"BitwiseAnd\",qce=\"BroadcastTo\",ea=\"BroadcastArgs\",yo=\"Cast\",en=\"Ceil\",bo=\"ClipByValue\",Di=\"Complex\",Ai=\"ComplexAbs\",ta=\"Concat\",tn=\"Conv2D\",Fi=\"Conv2DBackpropFilter\",rn=\"Conv2DBackpropInput\",on=\"Conv3D\",ja=\"Conv3DBackpropFilterV2\",nn=\"Conv3DBackpropInputV2\",sn=\"Cos\",an=\"Cosh\",un=\"Cumprod\",pn=\"Cumsum\",cn=\"CropAndResize\",ra=\"DenseBincount\",ln=\"DepthToSpace\",mn=\"DepthwiseConv2dNative\",Pi=\"DepthwiseConv2dNativeBackpropFilter\",Oi=\"DepthwiseConv2dNativeBackpropInput\",oa=\"Diag\",dn=\"Dilation2D\",Mi=\"Dilation2DBackpropInput\",Li=\"Dilation2DBackpropFilter\",$u=\"Draw\",fn=\"RealDiv\",Bi=\"Einsum\",hn=\"Elu\",Xa=\"EluGrad\",gn=\"Erf\",xn=\"Equal\",yn=\"Exp\",na=\"ExpandDims\",bn=\"Expm1\",zi=\"FFT\",sa=\"Fill\",Cn=\"FlipLeftRight\",wn=\"Floor\",Sn=\"FloorDiv\",In=\"FusedBatchNorm\",aa=\"GatherV2\",vn=\"GatherNd\",kn=\"Greater\",Nn=\"GreaterEqual\",Co=\"Identity\",Vi=\"IFFT\",Wi=\"Imag\",Tn=\"IsFinite\",_n=\"IsInf\",En=\"IsNan\",$n=\"LeakyRelu\",Rn=\"Less\",Dn=\"LessEqual\",An=\"LinSpace\",Fn=\"Log\",Pn=\"Log1p\",On=\"LogicalAnd\",Mn=\"LogicalNot\",Ln=\"LogicalOr\",R0=\"LogicalXor\",jce=\"LogSoftmax\",Xce=\"LowerBound\",Bn=\"LRN\",Ya=\"LRNGrad\",Yce=\"MatrixBandPart\",zn=\"Max\",Vn=\"Maximum\",Wn=\"MaxPool\",Ui=\"MaxPoolGrad\",ia=\"MaxPool3D\",Gi=\"MaxPool3DGrad\",ua=\"MaxPoolWithArgmax\",Un=\"Mean\",Gn=\"Min\",Hn=\"Minimum\",Kn=\"MirrorPad\",qn=\"Mod\",jn=\"Multinomial\",Xn=\"Multiply\",pa=\"Neg\",Yn=\"NotEqual\",Qn=\"NonMaxSuppressionV3\",Qa=\"NonMaxSuppressionV4\",Zn=\"NonMaxSuppressionV5\",ca=\"OnesLike\",Jn=\"OneHot\",la=\"Pack\",es=\"PadV2\",Qce=\"Pool\",ts=\"Pow\",rs=\"Prelu\",os=\"Prod\",Hp=\"RaggedGather\",Kp=\"RaggedRange\",qp=\"RaggedTensorToTensor\",ma=\"Range\",Hi=\"Real\",ns=\"Reciprocal\",ss=\"Relu\",da=\"Reshape\",as=\"ResizeNearestNeighbor\",Za=\"ResizeNearestNeighborGrad\",is=\"ResizeBilinear\",Ja=\"ResizeBilinearGrad\",us=\"Relu6\",ps=\"Reverse\",cs=\"Round\",ls=\"Rsqrt\",ms=\"ScatterNd\",ds=\"TensorScatterUpdate\",fs=\"SearchSorted\",fa=\"Select\",hs=\"Selu\",ha=\"Slice\",gs=\"Sin\",xs=\"Sinh\",ys=\"Sign\",bs=\"Sigmoid\",Cs=\"Softplus\",ws=\"Sqrt\",Ss=\"Sum\",ga=\"SpaceToBatchND\",xa=\"SplitV\",Is=\"Softmax\",Ki=\"SparseFillEmptyRows\",ei=\"SparseReshape\",ya=\"SparseSegmentMean\",ba=\"SparseSegmentSum\",vs=\"SparseToDense\",ks=\"SquaredDifference\",qi=\"Square\",Ru=\"StaticRegexReplace\",Ns=\"StridedSlice\",Ca=\"StringNGrams\",ji=\"StringSplit\",Xi=\"StringToHashBucketFast\",Ts=\"Sub\",_s=\"Tan\",Es=\"Tanh\",po=\"Tile\",$s=\"TopK\",Rs=\"Transform\",co=\"Transpose\",Yi=\"Unique\",wa=\"Unpack\",Qi=\"UnsortedSegmentSum\",Zce=\"UpperBound\",Sa=\"ZerosLike\",wo=\"Step\",Du=\"FromPixels\",Ds=\"RotateWithOffset\",So=\"_FusedMatMul\",Io=\"FusedConv2D\",vo=\"FusedDepthwiseConv2D\";function Ia(...r){A().getBool(\"IS_TEST\")||A().getBool(\"PROD\")||console.warn(...r)}function t4(...r){A().getBool(\"IS_TEST\")||A().getBool(\"PROD\")||console.log(...r)}var jp=fl(\"kernelRegistry\",()=>new Map),hl=fl(\"gradRegistry\",()=>new Map);function Xp(r,e){let t=uw(r,e);return jp.get(t)}function iw(r){return hl.get(r)}function Ym(r){let e=jp.entries(),t=[];for(;;){let{done:o,value:n}=e.next();if(o)break;let[s,a]=n,[i]=s.split(\"_\");i===r&&t.push(a)}return t}function ti(r){let{kernelName:e,backendName:t}=r,o=uw(e,t);jp.has(o)&&Ia(`The kernel '${e}' for backend '${t}' is already registered`),jp.set(o,r)}function ole(r){let{kernelName:e}=r;hl.has(e)&&A().getBool(\"DEBUG\")&&Ia(`Overriding the gradient for '${e}'`),hl.set(e,r)}function nle(r,e){let t=uw(r,e);if(!jp.has(t))throw new Error(`The kernel '${r}' for backend '${e}' is not registered`);jp.delete(t)}function sle(r){if(!hl.has(r))throw new Error(`The gradient '${r}' for backend is not registered`);hl.delete(r)}function ale(r,e){Ym(r).forEach(o=>{let n=Object.assign({},o,{backendName:e});ti(n)})}function uw(r,e){return`${e}_${r}`}var y={};qe(y,{arraysEqual:()=>br,arraysEqualWithNull:()=>ZC,assert:()=>E,assertNonNegativeIntegerDimensions:()=>Ct,assertNonNull:()=>io,assertShapesMatch:()=>xt,bytesFromStringArray:()=>ow,bytesPerElement:()=>Wp,checkConversionForErrors:()=>tw,clamp:()=>Vp,computeStrides:()=>js,convertBackendValuesAndArrayBuffer:()=>KG,createScalarValue:()=>u4,createShuffledIndices:()=>WG,decodeString:()=>Jp,distSquared:()=>LG,encodeString:()=>Ji,fetch:()=>c4,fingerPrint64:()=>i4,flatten:()=>Fs,getArrayFromDType:()=>Xm,getTypedArrayFromDType:()=>ew,hasEncodingLoss:()=>HG,hexToLong:()=>gl,indexToLoc:()=>XG,inferDtype:()=>Ei,inferFromImplicitShape:()=>GG,isBoolean:()=>N0,isFunction:()=>qs,isInt:()=>Ka,isNumber:()=>T0,isPromise:()=>Eu,isScalarShape:()=>BG,isString:()=>zo,isTypedArray:()=>Pt,isValidDtype:()=>rw,locToIndex:()=>jG,makeOnesTypedArray:()=>ml,makeZerosNestedTypedArray:()=>qG,makeZerosTypedArray:()=>Gp,nearestDivisor:()=>Up,nearestLargerEven:()=>PG,now:()=>Mu,parseAxisParam:()=>_i,randUniform:()=>MG,repeatedTry:()=>UG,rightPad:()=>_u,shuffle:()=>k0,shuffleCombo:()=>FG,sizeFromShape:()=>ze,sizeToSquarishShape:()=>VG,squeezeShape:()=>JC,sum:()=>OG,swap:()=>jm,tanh:()=>zG,toNestedArray:()=>Tu,toTypedArray:()=>Zp});function Qm(r){return r instanceof Float32Array||r instanceof Int32Array||r instanceof Uint8Array||r instanceof Uint8ClampedArray}var mw=zp(U0());var Ou=mw.default||mw;function gl(r){return Ou.fromString(r,!0,16)}var H0=gl(\"c3a5c85c97cb3127\"),Pu=gl(\"b492b66fbe98f273\"),Cr=gl(\"9ae16a3b2f90404f\");function lw(r){return r.xor(r.shru(47))}function K0(r,e,t){let o=r.slice(e,e+t);return Ou.fromBytes(Array.from(o),!0,!0)}function wt(r,e){return K0(r,e,8)}function G0(r,e){return K0(r,e,4)}function Yt(r,e){return e===0?r:r.shru(e).or(r.shl(64-e))}function Zi(r,e,t=gl(\"9ddfea08eb382d69\")){let o=r.xor(e).mul(t);o=o.xor(o.shru(47));let n=e.xor(o).mul(t);return n=n.xor(n.shru(47)),n=n.mul(t),n}function o4(r,e,t,o,n,s){n=n.add(r),s=Yt(s.add(n).add(o),21);let a=n;return n=n.add(e),n=n.add(t),s=s.add(Yt(n,44)),[n.add(o),s.add(a)]}function Jm(r,e,t,o){return o4(wt(r,e),wt(r,e+8),wt(r,e+16),wt(r,e+24),t,o)}function n4(r,e=r.length){if(e>=8){let t=Cr.add(e*2),o=wt(r,0).add(Cr),n=wt(r,e-8),s=Yt(n,37).mul(t).add(o),a=Yt(o,25).add(n).mul(t);return Zi(s,a,t)}if(e>=4){let t=Cr.add(e*2),o=G0(r,0);return Zi(o.shl(3).add(e),G0(r,e-4),t)}if(e>0){let t=r[0],o=r[e>>1],n=r[e-1],s=t+(o<<8),a=e+(n<<2);return lw(Cr.mul(s).xor(H0.mul(a))).mul(Cr)}return Cr}function s4(r,e=r.length){let t=Cr.add(e*2),o=wt(r,0).mul(Pu),n=wt(r,8),s=wt(r,e-8).mul(t),a=wt(r,e-16).mul(Cr);return Zi(Yt(o.add(n),43).add(Yt(s,30)).add(a),o.add(Yt(n.add(Cr),18)).add(s),t)}function a4(r,e=r.length){let t=Cr.add(e*2),o=wt(r,0).mul(Cr),n=wt(r,8),s=wt(r,e-8).mul(t),a=wt(r,e-16).mul(Cr),i=Yt(o.add(n),43).add(Yt(s,30)).add(a),p=Zi(i,o.add(Yt(n.add(Cr),18)).add(s),t),u=wt(r,16).mul(t),c=wt(r,24),l=i.add(wt(r,e-32)).mul(t),m=p.add(wt(r,e-24)).mul(t);return Zi(Yt(u.add(c),43).add(Yt(l,30)).add(m),u.add(Yt(c.add(o),18)).add(l),t)}function i4(r,e=r.length){let t=Ou.fromNumber(81,!0);if(e<=32)return e<=16?n4(r,e):s4(r,e);if(e<=64)return a4(r,e);let o=t,n=t.mul(Pu).add(113),s=lw(n.mul(Cr).add(113)).mul(Cr),a=[Ou.UZERO,Ou.UZERO],i=[Ou.UZERO,Ou.UZERO];o=o.mul(Cr).add(wt(r,0));let p=0,u=(e-1>>6)*64,c=u+(e-1&63)-63;do o=Yt(o.add(n).add(a[0]).add(wt(r,p+8)),37).mul(Pu),n=Yt(n.add(a[1]).add(wt(r,p+48)),42).mul(Pu),o=o.xor(i[1]),n=n.add(a[0]).add(wt(r,p+40)),s=Yt(s.add(i[0]),33).mul(Pu),a=Jm(r,p,a[1].mul(Pu),o.add(i[0])),i=Jm(r,p+32,s.add(i[1]),n.add(wt(r,p+16))),[s,o]=[o,s],p+=64;while(p!==u);let l=Pu.add(s.and(255).shl(1));return p=c,i[0]=i[0].add(e-1&63),a[0]=a[0].add(i[0]),i[0]=i[0].add(a[0]),o=Yt(o.add(n).add(a[0]).add(wt(r,p+8)),37).mul(l),n=Yt(n.add(a[1]).add(wt(r,p+48)),42).mul(l),o=o.xor(i[1].mul(9)),n=n.add(a[0].mul(9).add(wt(r,p+40))),s=Yt(s.add(i[0]),33).mul(l),a=Jm(r,p,a[1].mul(l),o.add(i[0])),i=Jm(r,p+32,s.add(i[1]),n.add(wt(r,p+16))),[s,o]=[o,s],Zi(Zi(a[0],i[0],l).add(lw(n).mul(H0)).add(s),Zi(a[1],i[1],l).add(o),l)}function u4(r,e){return e===\"string\"?Ji(r):Zp([r],e)}function p4(r,e){return r instanceof Float32Array&&e===\"float32\"||r instanceof Int32Array&&e===\"int32\"||r instanceof Uint8Array&&e===\"bool\"}function Zp(r,e){if(e===\"string\")throw new Error(\"Cannot convert a string[] to a TypedArray\");if(Array.isArray(r)&&(r=Fs(r)),A().getBool(\"DEBUG\")&&tw(r,e),p4(r,e))return r;if(e==null||e===\"float32\"||e===\"complex64\")return new Float32Array(r);if(e===\"int32\")return new Int32Array(r);if(e===\"bool\"){let t=new Uint8Array(r.length);for(let o=0;o{n=o()},a,i=Mu();if(this.backendTimer.timerAvailable())a=this.backendTimer.time(s);else{s();for(let u of n)u.dataSync();a=Promise.resolve({kernelMs:Mu()-i})}if(A().getBool(\"CHECK_COMPUTATION_FOR_ERRORS\"))for(let u=0;u{l4(l,c.dtype,e)})}return{kernelName:e,outputs:n,inputs:t,timeMs:a.then(u=>u.kernelMs),extraInfo:a.then(u=>u.getExtraProfileInfo!=null?u.getExtraProfileInfo():\"\")}}logKernelProfile(e){let{kernelName:t,outputs:o,timeMs:n,inputs:s,extraInfo:a}=e;o.forEach(i=>{Promise.all([i.data(),n,a]).then(p=>{this.logger.logKernelProfile(t,i,p[0],p[1],s,p[2])})})}};function l4(r,e,t){if(e!==\"float32\")return!1;for(let o=0;o0?h:\"\"} `}}console.log(`%c${p}\t%c${i}\t%c${u}D ${l}\t%c${c}\t%c${m}\t%c${a}`,\"font-weight:bold\",\"color:red\",\"color:blue\",\"color: orange\",\"color: green\",\"color: steelblue\")}};function q0(r,e,t){let o={},n={};for(let p=0;po[h.id]=!0),d=!0,n[u.id]=!0;break}if(d)break}}let s={};s[t.id]=!0;let a={};for(let p=r.length-1;p>=0;p--){let u=r[p],c=u.inputs;for(let l=0;l=0;n--){let s=e[n],a=[];if(s.outputs.forEach(p=>{let u=r[p.id];u!=null?a.push(u):a.push(null)}),s.gradient==null)throw new Error(`Cannot compute gradient: gradient function not found for ${s.kernelName}.`);let i=s.gradient(a);for(let p in s.inputs){if(!(p in i))throw new Error(`Cannot backprop through input ${p}. Available gradients found: ${Object.keys(i)}.`);let u=t(()=>i[p]());if(u.dtype!==\"float32\")throw new Error(`Error in gradient for op ${s.kernelName}. The gradient of input ${p} must have 'float32' dtype, but has '${u.dtype}'`);let c=s.inputs[p];if(!br(u.shape,c.shape))throw new Error(`Error in gradient for op ${s.kernelName}. The gradient of input '${p}' has shape '${u.shape}', which does not match the shape of the input '${c.shape}'`);if(r[c.id]==null)r[c.id]=u;else{let l=r[c.id];r[c.id]=o(l,u),l.dispose()}}}}var X0=20,xl=3,fw=7;function Y0(r,e,t,o){let n=js(e),s=m4(r,e,t,n),a=e.length,i=td(r,e,t,n,s),p=[\"Tensor\"];return o&&(p.push(` dtype: ${t}`),p.push(` rank: ${a}`),p.push(` shape: [${e}]`),p.push(\" values:\")),p.push(i.map(u=>\" \"+u).join(`\n`)),p.join(`\n`)}function m4(r,e,t,o){let n=ze(e),s=o[o.length-1],a=new Array(s).fill(0),i=e.length,p=t===\"complex64\"?bl(r):r;if(i>1)for(let u=0;uX0){let g=xl*a,x=Array.from(r.slice(0,g)),b=Array.from(r.slice((i-xl)*a,i*a));return t===\"complex64\"&&(x=bl(x),b=bl(b)),[\"[\"+x.map((C,S)=>yl(C,n[S],t)).join(\", \")+\", ..., \"+b.map((C,S)=>yl(C,n[i-xl+S],t)).join(\", \")+\"]\"]}return[\"[\"+(t===\"complex64\"?bl(r):Array.from(r)).map((g,x)=>yl(g,n[x],t)).join(\", \")+\"]\"]}let u=e.slice(1),c=o.slice(1),l=o[0]*a,m=[];if(i>X0){for(let h=0;h0?m[0]+d:\"\");for(let h=1;h`Length of values '${n}' does not match the size inferred by the shape '${this.size}'.`)}if(t===\"complex64\")throw new Error(\"complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).\");this.values=o||Xm(t,this.size),this.strides=js(e)}set(e,...t){t.length===0&&(t=[0]),E(t.length===this.rank,()=>`The number of provided coordinates (${t.length}) must match the rank (${this.rank})`);let o=this.locToIndex(t);this.values[o]=e}get(...e){e.length===0&&(e=[0]);let t=0;for(let n of e){if(n<0||n>=this.shape[t]){let s=`Requested out of range element at ${e}. Buffer shape=${this.shape}`;throw new Error(s)}t++}let o=e[e.length-1];for(let n=0;nJp(o))}catch(o){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(),Ps().readToGPU(this.dataId,e)}dataSync(){this.throwIfDisposed();let e=Ps().readSync(this.dataId);if(this.dtype===\"string\")try{return e.map(t=>Jp(t))}catch(t){throw new Error(\"Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().\")}return e}async bytes(){this.throwIfDisposed();let e=await Ps().read(this.dataId);return this.dtype===\"string\"?e:new Uint8Array(e.buffer)}dispose(){this.isDisposed||(this.kerasMask&&this.kerasMask.dispose(),Ps().disposeTensor(this),this.isDisposedInternal=!0)}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error(\"Tensor is disposed.\")}print(e=!1){return ec.print(this,e)}clone(){return this.throwIfDisposed(),ec.clone(this)}toString(e=!1){let t=this.dataSync();return Y0(t,this.shape,this.dtype,e)}cast(e){return this.throwIfDisposed(),ec.cast(this,e)}variable(e=!0,t,o){return this.throwIfDisposed(),Ps().makeVariable(this,e,t,o)}};Object.defineProperty(mt,Symbol.hasInstance,{value:r=>!!r&&r.data!=null&&r.dataSync!=null&&r.throwIfDisposed!=null});function hw(){return fl(\"Tensor\",()=>mt)}hw();var ri=class extends mt{constructor(e,t,o,n){super(e.shape,e.dtype,e.dataId,n),this.trainable=t,this.name=o}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(!br(e.shape,this.shape))throw new Error(`shape of the new value (${e.shape}) and previous value (${this.shape}) must match`);Ps().disposeTensor(this),this.dataId=e.dataId,Ps().incRef(this,null)}dispose(){Ps().disposeVariable(this),this.isDisposedInternal=!0}};Object.defineProperty(ri,Symbol.hasInstance,{value:r=>r instanceof mt&&r.assign!=null&&r.assign instanceof Function});var rk={};qe(rk,{assertTypesMatch:()=>ww,getTensorsInContainer:()=>Cl,isTensorInList:()=>h4,makeTypesMatch:()=>Oe});var gw;(function(r){r.R0=\"R0\",r.R1=\"R1\",r.R2=\"R2\",r.R3=\"R3\",r.R4=\"R4\",r.R5=\"R5\",r.R6=\"R6\"})(gw||(gw={}));var xw;(function(r){r.float32=\"float32\",r.int32=\"int32\",r.bool=\"int32\",r.complex64=\"complex64\"})(xw||(xw={}));var yw;(function(r){r.float32=\"float32\",r.int32=\"int32\",r.bool=\"bool\",r.complex64=\"complex64\"})(yw||(yw={}));var bw;(function(r){r.float32=\"float32\",r.int32=\"float32\",r.bool=\"float32\",r.complex64=\"complex64\"})(bw||(bw={}));var Cw;(function(r){r.float32=\"complex64\",r.int32=\"complex64\",r.bool=\"complex64\",r.complex64=\"complex64\"})(Cw||(Cw={}));var f4={float32:bw,int32:xw,bool:yw,complex64:Cw};function dt(r,e){if(r===\"string\"||e===\"string\"){if(r===\"string\"&&e===\"string\")return\"string\";throw new Error(`Can not upcast ${r} with ${e}`)}return f4[r][e]}function oi(r){return dt(r,\"int32\")}function rd(r){return r!=null&&typeof r==\"object\"&&\"texture\"in r&&r.texture instanceof WebGLTexture}function od(r){return typeof GPUBuffer!=\"undefined\"&&r!=null&&typeof r==\"object\"&&\"buffer\"in r&&r.buffer instanceof GPUBuffer}function Oe(r,e){if(r.dtype===e.dtype)return[r,e];let t=dt(r.dtype,e.dtype);return[r.cast(t),e.cast(t)]}function ww(r,e){E(r.dtype===e.dtype,()=>`The dtypes of the first(${r.dtype}) and second(${e.dtype}) input must match`)}function h4(r,e){return e.some(t=>t.id===r.id)}function Cl(r){let e=[];return tk(r,e,new Set),e}function tk(r,e,t){if(r==null)return;if(r instanceof mt){e.push(r);return}if(!g4(r))return;let o=r;for(let n in o){let s=o[n];t.has(s)||(t.add(s),tk(s,e,t))}}function g4(r){return Array.isArray(r)||typeof r==\"object\"}function Sw(r){return r.kernelName!=null}var nd=class{constructor(){this.registeredVariables={},this.nextTapeNodeId=0,this.numBytes=0,this.numTensors=0,this.numStringTensors=0,this.numDataBuffers=0,this.gradientDepth=0,this.kernelDepth=0,this.scopeStack=[],this.numDataMovesStack=[],this.nextScopeId=0,this.tensorInfo=new WeakMap,this.profiling=!1,this.activeProfile={newBytes:0,newTensors:0,peakBytes:0,kernels:[],result:null,get kernelNames(){return Array.from(new Set(this.kernels.map(e=>e.name)))}}}dispose(){for(let e in this.registeredVariables)this.registeredVariables[e].dispose()}},wl=class r{constructor(e){this.ENV=e,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new nd}async ready(){if(this.pendingBackendInit!=null)return this.pendingBackendInit.then(()=>{});if(this.backendInstance!=null)return;let e=this.getSortedBackends();for(let t=0;t{t.setupFunc!=null&&t.setupFunc(this.backendInstance)})}disposeRegisteredKernels(e){Ym(e).forEach(o=>{o.disposeFunc!=null&&o.disposeFunc(this.registry[e])})}initializeBackend(e){let t=this.registryFactory[e];if(t==null)throw new Error(`Cannot initialize backend ${e}, no registration found.`);try{let o=t.factory();if(o&&!(o instanceof ao)&&typeof o.then==\"function\"){let n=++this.pendingBackendInitId,s=o.then(a=>n(nthis.registryFactory[t].priority-this.registryFactory[e].priority)}initializeBackendsAndReturnBest(){let e=this.getSortedBackends();for(let t=0;tthis.startScope(o),()=>this.endScope(n),()=>(n=t(),n instanceof Promise&&console.error(\"Cannot return a Promise inside of tidy.\"),n))}scopedRun(e,t,o){e();try{let n=o();return t(),n}catch(n){throw t(),n}}nextTensorId(){return r.nextTensorId++}nextVariableId(){return r.nextVariableId++}clone(e){let t=T.runKernel(Co,{x:e}),o={x:e},n=a=>({x:()=>{let i=\"float32\",p={x:a},u={dtype:i};return T.runKernel(yo,p,u)}}),s=[];return this.addTapeNode(this.state.activeScope.name,o,[t],n,s,{}),t}runKernel(e,t,o){if(this.backendName==null&&this.backend,!(Xp(e,this.backendName)!=null))throw new Error(`Kernel '${e}' not registered for backend '${this.backendName}'`);return this.runKernelFunc({kernelName:e,inputs:t,attrs:o})}shouldCheckForMemLeaks(){return this.ENV.getBool(\"IS_TEST\")}checkKernelForMemLeak(e,t,o){let n=this.backend.numDataIds(),s=0;o.forEach(p=>{s+=p.dtype===\"complex64\"?3:1});let a=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],i=n-t-s-a;if(i>0)throw new Error(`Backend '${this.backendName}' has an internal memory leak (${i} data ids) after running '${e}'`)}runKernelFunc(e){let t,o=[],n=this.isTapeOn(),s=this.state.numBytes,a=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);let i;this.backendName==null&&this.backend;let p,u=Sw(e)?e.kernelName:this.state.activeScope!=null?this.state.activeScope.name:\"\";if(Sw(e)){let{kernelName:f,inputs:h,attrs:g}=e;this.backendName==null&&this.backend;let x=Xp(f,this.backendName);E(x!=null,()=>`Cannot find registered kernel '${f}' for backend '${this.backendName}'`),i=()=>{let b=this.backend.numDataIds();p=x.kernelFunc({inputs:h,attrs:g,backend:this.backend});let C=Array.isArray(p)?p:[p];this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(f,b,C);let S=C.map(k=>k.rank!=null?k:this.makeTensorFromTensorInfo(k));if(n){let k=this.getTensorsForGradient(f,h,S);o=this.saveTensorsForBackwardMode(k)}return S}}else{let{forwardFunc:f}=e,h=g=>{n&&(o=g.map(x=>this.keep(this.clone(x))))};i=()=>{let g=this.backend.numDataIds();p=this.tidy(()=>f(this.backend,h));let x=Array.isArray(p)?p:[p];return this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(u,g,x),x}}let{inputs:c,attrs:l}=e,m=Sw(e)?null:e.backwardsFunc,d;return this.scopedRun(()=>this.state.kernelDepth++,()=>this.state.kernelDepth--,()=>{!this.ENV.getBool(\"DEBUG\")&&!this.state.profiling?t=i():(d=this.profiler.profileKernel(u,c,()=>i()),this.ENV.getBool(\"DEBUG\")&&this.profiler.logKernelProfile(d),t=d.outputs)}),n&&this.addTapeNode(u,c,t,m,o,l),this.state.profiling&&this.state.activeProfile.kernels.push({name:u,bytesAdded:this.state.numBytes-s,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-a,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(c).map(f=>c[f]!=null?c[f].shape:null),outputShapes:t.map(f=>f.shape),kernelTimeMs:d.timeMs,extraInfo:d.extraInfo}),Array.isArray(p)?t:t[0]}saveTensorsForBackwardMode(e){return e.map(o=>this.keep(this.clone(o)))}getTensorsForGradient(e,t,o){let n=iw(e);if(n!=null){let s=n.inputsToSave||[],a=n.outputsToSave||[],i;n.saveAllInputs?(E(Array.isArray(t),()=>\"saveAllInputs is true, expected inputs to be an array.\"),i=Object.keys(t).map(u=>t[u])):i=s.map(u=>t[u]);let p=o.filter((u,c)=>a[c]);return i.concat(p)}return[]}makeTensor(e,t,o,n){if(e==null)throw new Error(\"Values passed to engine.makeTensor() are null\");o=o||\"float32\",n=n||this.backend;let s=e;o===\"string\"&&zo(e[0])&&(s=e.map(p=>Ji(p)));let a=n.write(s,t,o),i=new mt(t,o,a,this.nextTensorId());if(this.trackTensor(i,n),o===\"string\"){let p=this.state.tensorInfo.get(a),u=ow(s);this.state.numBytes+=u-p.bytes,p.bytes=u}return i}makeTensorFromDataId(e,t,o,n){o=o||\"float32\";let s={dataId:e,shape:t,dtype:o};return this.makeTensorFromTensorInfo(s,n)}makeTensorFromTensorInfo(e,t){let{dataId:o,shape:n,dtype:s}=e,a=new mt(n,s,o,this.nextTensorId());return this.trackTensor(a,t),a}makeVariable(e,t=!0,o,n){o=o||this.nextVariableId().toString(),n!=null&&n!==e.dtype&&(e=e.cast(n));let s=new ri(e,t,o,this.nextTensorId());if(this.state.registeredVariables[s.name]!=null)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++,e.dtype===\"string\"&&this.state.numStringTensors++;let o=0;e.dtype!==\"complex64\"&&e.dtype!==\"string\"&&(o=e.size*Wp(e.dtype)),this.state.numBytes+=o,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:o})),e instanceof ri||this.track(e)}incRef(e,t){this.trackTensor(e,t),this.backend.incRef(e.dataId)}removeDataId(e,t){this.state.tensorInfo.has(e)&&this.state.tensorInfo.get(e).backend===t&&(this.state.tensorInfo.delete(e),this.state.numDataBuffers--)}disposeTensor(e){if(!this.state.tensorInfo.has(e.dataId))return;let t=this.state.tensorInfo.get(e.dataId);if(this.state.numTensors--,e.dtype===\"string\"&&(this.state.numStringTensors--,this.state.numBytes-=t.bytes),e.dtype!==\"complex64\"&&e.dtype!==\"string\"){let o=e.size*Wp(e.dtype);this.state.numBytes-=o}t.backend.disposeData(e.dataId)&&this.removeDataId(e.dataId,t.backend)}disposeVariables(){for(let e in this.state.registeredVariables){let t=this.state.registeredVariables[e];this.disposeVariable(t)}}disposeVariable(e){this.disposeTensor(e),this.state.registeredVariables[e.name]!=null&&delete this.state.registeredVariables[e.name]}memory(){let e=this.backend.memory();return e.numTensors=this.state.numTensors,e.numDataBuffers=this.state.numDataBuffers,e.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(e.unreliable=!0,e.reasons==null&&(e.reasons=[]),e.reasons.push(\"Memory usage by string tensors is approximate (2 bytes per character)\")),e}async profile(e){this.state.profiling=!0;let t=this.state.numBytes,o=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(n=>n.totalBytesSnapshot)),this.state.activeProfile.newBytes=this.state.numBytes-t,this.state.activeProfile.newTensors=this.state.numTensors-o;for(let n of this.state.activeProfile.kernels)n.kernelTimeMs=await n.kernelTimeMs,n.extraInfo=await n.extraInfo;return this.state.activeProfile}isTapeOn(){return this.state.gradientDepth>0&&this.state.kernelDepth===0}addTapeNode(e,t,o,n,s,a){let i={id:this.state.nextTapeNodeId++,kernelName:e,inputs:t,outputs:o,saved:s},p=iw(e);p!=null&&(n=p.gradFunc),n!=null&&(i.gradient=u=>(u=u.map((c,l)=>{if(c==null){let m=o[l],d=Gp(m.size,m.dtype);return this.makeTensor(d,m.shape,m.dtype)}return c}),n(u.length>1?u:u[0],s,a))),this.state.activeTape.push(i)}keep(e){return e.kept=!0,e}startTape(){this.state.gradientDepth===0&&(this.state.activeTape=[]),this.state.gradientDepth++}endTape(){this.state.gradientDepth--}startScope(e){let t={track:[],name:\"unnamed scope\",id:this.state.nextScopeId++};e&&(t.name=e),this.state.scopeStack.push(t),this.state.activeScope=t}endScope(e){let t=Cl(e),o=new Set(t.map(s=>s.id));for(let s=0;s{!s.kept&&s.scopeId===n.id&&this.track(s)})}gradients(e,t,o,n=!1){if(E(t.length>0,()=>\"gradients() received an empty list of xs.\"),o!=null&&o.dtype!==\"float32\")throw new Error(`dy must have 'float32' dtype, but has '${o.dtype}'`);let s=this.scopedRun(()=>this.startTape(),()=>this.endTape(),()=>this.tidy(\"forward\",e));E(s instanceof mt,()=>\"The result y returned by f() must be a tensor.\");let a=q0(this.state.activeTape,t,s);if(!n&&a.length===0&&t.length>0)throw new Error(\"Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.\");return this.tidy(\"backward\",()=>{let i={};i[s.id]=o==null?x4(s.shape):o,j0(i,a,u=>this.tidy(u),y4);let p=t.map(u=>i[u.id]);return this.state.gradientDepth===0&&(this.state.activeTape.forEach(u=>{for(let c of u.saved)c.dispose()}),this.state.activeTape=null),{value:s,grads:p}})}customGrad(e){return E(qs(e),()=>\"The f passed in customGrad(f) must be a function.\"),(...t)=>{E(t.every(i=>i instanceof mt),()=>\"The args passed in customGrad(f)(x1, x2,...) must all be tensors\");let o,n={};t.forEach((i,p)=>{n[p]=i});let s=(i,p)=>(o=e(...t,p),E(o.value instanceof mt,()=>\"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor\"),E(qs(o.gradFunc),()=>\"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function.\"),o.value),a=(i,p)=>{let u=o.gradFunc(i,p),c=Array.isArray(u)?u:[u];E(c.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(...).\"),E(c.every(m=>m instanceof mt),()=>\"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors.\");let l={};return c.forEach((m,d)=>{l[d]=()=>m}),l};return this.runKernelFunc({forwardFunc:s,backwardsFunc:a,inputs:n})}}readSync(e){return this.state.tensorInfo.get(e).backend.readSync(e)}read(e){return this.state.tensorInfo.get(e).backend.read(e)}readToGPU(e,t){return this.state.tensorInfo.get(e).backend.readToGPU(e,t)}async time(e){let t=Mu(),o=await this.backend.time(e);return o.wallMs=Mu()-t,o}track(e){return this.state.activeScope!=null&&(e.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(e)),e}get registeredVariables(){return this.state.registeredVariables}reset(){this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new nd;for(let e in this.registry)this.disposeRegisteredKernels(e),this.registry[e].dispose(),delete this.registry[e];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null}};wl.nextTensorId=0;wl.nextVariableId=0;function x4(r){let e=ml(ze(r),\"float32\");return T.makeTensor(e,r,\"float32\")}function Iw(){let r=aw();if(r._tfengine==null){let e=new dl(r);r._tfengine=new wl(e)}return $0(r._tfengine.ENV),Z0(()=>r._tfengine),r._tfengine}var T=Iw();function y4(r,e){let t={a:r,b:e};return T.runKernel(uo,t)}var eu={};qe(eu,{isBrowser:()=>kw,isMobile:()=>w4,mockIsMobile:()=>C4});function b4(){return typeof navigator!=\"undefined\"&&navigator!=null}var vw;function C4(r){vw=r}function w4(r){if(vw!==void 0)return vw;if(r||b4()){if(r||(r=navigator),r.product===\"ReactNative\")return!0;let e=r.userAgent||r.vendor||(typeof window!=\"undefined\"?window.opera:\"\");if(!e){let t=r;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(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(e.substr(0,4))}return!1}function kw(){return typeof window!=\"undefined\"&&window.document!=null||typeof WorkerGlobalScope!=\"undefined\"}var _r=A();_r.registerFlag(\"DEBUG\",()=>!1,r=>{r&&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.\")});_r.registerFlag(\"IS_BROWSER\",()=>kw());_r.registerFlag(\"IS_NODE\",()=>typeof process!=\"undefined\"&&typeof process.versions!=\"undefined\"&&typeof process.versions.node!=\"undefined\");_r.registerFlag(\"IS_CHROME\",()=>typeof navigator!=\"undefined\"&&navigator!=null&&navigator.userAgent!=null&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor));_r.registerFlag(\"IS_SAFARI\",()=>typeof navigator!=\"undefined\"&&navigator!=null&&navigator.userAgent!=null&&/Safari/.test(navigator.userAgent)&&/Apple/.test(navigator.vendor));_r.registerFlag(\"PROD\",()=>!1);_r.registerFlag(\"TENSORLIKE_CHECK_SHAPE_CONSISTENCY\",()=>_r.getBool(\"DEBUG\"));_r.registerFlag(\"DEPRECATION_WARNINGS_ENABLED\",()=>!0);_r.registerFlag(\"IS_TEST\",()=>!1);_r.registerFlag(\"CHECK_COMPUTATION_FOR_ERRORS\",()=>_r.getBool(\"DEBUG\"));_r.registerFlag(\"WRAP_TO_IMAGEBITMAP\",()=>!1);_r.registerFlag(\"CANVAS2D_WILL_READ_FREQUENTLY_FOR_GPU\",()=>!1);_r.registerFlag(\"USE_SETTIMEOUTCUSTOM\",()=>!1);function sr(r,e){let t=r;if(Pt(r))return e===\"string\"?[]:[r.length];if(rd(r)){let n=r.channels||\"RGBA\";return[r.height,r.width*n.length]}else if(od(r))return[r.buffer.size/(e==null?4:Wp(e))];if(!Array.isArray(r))return[];let o=[];for(;Array.isArray(t)||Pt(t)&&e!==\"string\";)o.push(t.length),t=t[0];return Array.isArray(r)&&A().getBool(\"TENSORLIKE_CHECK_SHAPE_CONSISTENCY\")&&nk(r,o,[]),o}function nk(r,e,t){if(t=t||[],!Array.isArray(r)&&!Pt(r)){E(e.length===0,()=>`Element arr[${t.join(\"][\")}] is a primitive, but should be an array/TypedArray of ${e[0]} elements`);return}E(e.length>0,()=>`Element arr[${t.join(\"][\")}] should be a primitive, but is an array of ${r.length} elements`),E(r.length===e[0],()=>`Element arr[${t.join(\"][\")}] should have ${e[0]} elements, but has ${r.length} elements`);let o=e.slice(1);for(let n=0;n=0&&(n=o),ok(o,n,e,t),r==null||!Pt(r)&&!Array.isArray(r)&&typeof r!=\"number\"&&typeof r!=\"boolean\"&&typeof r!=\"string\"){let p=r==null?\"null\":r.constructor.name;throw new Error(`Argument '${e}' passed to '${t}' must be a Tensor or TensorLike, but got '${p}'`)}let s=sr(r,n);!Pt(r)&&!Array.isArray(r)&&(r=[r]);let i=n!==\"string\"?Zp(r,n):Fs(r,[],!0);return T.makeTensor(i,s,n)}function ni(r,e,t,o=\"numeric\"){if(!Array.isArray(r))throw new Error(`Argument ${e} passed to ${t} must be a \\`Tensor[]\\` or \\`TensorLike[]\\``);return r.map((s,a)=>v(s,`${e}[${a}]`,t,o))}var Nw=\"__op\";function N(r){let e=Object.keys(r);if(e.length!==1)throw new Error(`Please provide an object with a single key (operation name) mapping to a function. Got an object with ${e.length} keys.`);let t=e[0],o=r[t];t.endsWith(\"_\")&&(t=t.substring(0,t.length-1)),t=t+Nw;let n=(...s)=>{T.startScope(t);try{let a=o(...s);return Eu(a)&&console.error(\"Cannot return a Promise inside of tidy.\"),T.endScope(a),a}catch(a){throw T.endScope(null),a}};return Object.defineProperty(n,\"name\",{value:t,configurable:!0}),n}function S4(r,e){let t=v(r,\"real\",\"complex\"),o=v(e,\"imag\",\"complex\");xt(t.shape,o.shape,`real and imag shapes, ${t.shape} and ${o.shape}, must match in call to tf.complex().`);let n={real:t,imag:o};return T.runKernel(Di,n)}var Er=N({complex_:S4});function wr(r,e,t,o){if(o==null)o=Ei(r);else if(o===\"complex64\")throw new Error(\"Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).\");if(od(r)||rd(r)){if(o!==\"float32\"&&o!==\"int32\")throw new Error(`Creating tensor from GPU data only supports 'float32'|'int32' dtype, while the dtype is ${o}.`);return T.backend.createTensorFromGPUData(r,e||t,o)}if(!Pt(r)&&!Array.isArray(r)&&typeof r!=\"number\"&&typeof r!=\"boolean\"&&typeof r!=\"string\")throw new Error(\"values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray\");if(e!=null){Ct(e);let n=ze(e),s=ze(t);E(n===s,()=>`Based on the provided shape, [${e}], the tensor should have ${n} values but has ${s}`);for(let a=0;a`Error creating a new Tensor. Inferred shape (${t}) does not match the provided shape (${e}). `)}}return!Pt(r)&&!Array.isArray(r)&&(r=[r]),e=e||t,r=o!==\"string\"?Zp(r,o):Fs(r,[],!0),T.makeTensor(r,e,o)}function ar(r,e,t){let o=sr(r,t);return wr(r,e,o,t)}var si={float32:4,float16:2,int32:4,uint16:2,uint8:1,bool:1,complex64:8};var ir=class r{static join(e){return new r(e).slice()}constructor(e){if(this.shards=[],this.previousShardIndex=0,e==null||(e instanceof Array||(e=[e]),e=e.map(o=>Pt(o)?o.buffer:o),e.length===0))return;this.bufferUniformSize=e[0].byteLength;let t=0;for(let o=0;o=this.byteLength)return-1;if(this.bufferUniformSize!=null)return this.previousShardIndex=Math.floor(e/this.bufferUniformSize),this.previousShardIndex;function t(n){return e=n.end?1:0}if(t(this.shards[this.previousShardIndex])===0)return this.previousShardIndex;let o=I4(this.shards,t);return o===-1?-1:(this.previousShardIndex=o,this.previousShardIndex)}};function I4(r,e){let t=0,o=r.length;for(;t<=o;){let n=Math.floor((o-t)/2)+t,s=e(r[n]);if(s===0)return n;s<0?o=n:t=n+1}return-1}function hme(){A().set(\"PROD\",!0)}function gme(){A().set(\"DEBUG\",!0)}function xme(){A().set(\"DEPRECATION_WARNINGS_ENABLED\",!1),console.warn(\"TensorFlow.js deprecation warnings have been disabled.\")}function Tw(r){A().getBool(\"DEPRECATION_WARNINGS_ENABLED\")&&console.warn(r+\" You can disable deprecation warnings with tf.disableDeprecationWarnings().\")}ek(Tw);function yme(){T.disposeVariables()}function ur(){return T}function bme(){return T.memory()}function Cme(r){return T.profile(r)}function De(r,e){return T.tidy(r,e)}function Ot(r){Cl(r).forEach(t=>t.dispose())}function $r(r){return T.keep(r)}function wme(r){return T.time(r)}function Sme(r){return T.setBackend(r)}function Ime(){return T.ready()}function sk(){return T.backendName}function vme(r){T.removeBackend(r)}function kme(r){return T.findBackend(r)}function Nme(r){return T.findBackendFactory(r)}function tu(r,e,t=1){return T.registerBackend(r,e,t)}function ak(){return T.backend}function Tme(r,e){A().setPlatform(r,e)}var ru=4;async function pk(r,e){let t=[],o=[],n=Array.isArray(r)?r.map(a=>a.name):Object.keys(r);for(let a=0;a{let m=await p.bytes(),d=m.reduce((g,x)=>g+x.length,0)+ru*m.length,f=new Uint8Array(d),h=0;for(let g=0;gt.slice(n+i,n+p));o[s.name]=ck(s,t.slice(n,n+a)),n+=a}return o}function v4(r,e){let t=ze(r.shape),o;if(\"quantization\"in r){let n=r.quantization;o=si[n.dtype]}else if(r.dtype===\"string\"){let n=0;for(let s=0;s(n=await ik(o,n,c),n.slice(u,c)));n=await ik(o,n,a);let i=n.slice(0,a);n=n.slice(a);let p=ck(s,i);if(t[s.name]=p,sk()===\"webgpu\"){let u=ak();\"uploadToGPU\"in u&&ze(p.shape)>=A().get(\"WEBGPU_CPU_HANDOFF_SIZE_THRESHOLD\")&&u.uploadToGPU(p.dataId)}}return t}function N4(r){if(r===null)throw new Error(`Invalid input value: ${JSON.stringify(r)}`);let e=0,t=[];r.forEach(s=>{if(e+=s.byteLength,t.push(s.byteLength===s.buffer.byteLength?s:new s.constructor(s)),!(s instanceof Float32Array||s instanceof Int32Array||s instanceof Uint8Array))throw new Error(`Unsupported TypedArray subtype: ${s.constructor.name}`)});let o=new Uint8Array(e),n=0;return t.forEach(s=>{o.set(new Uint8Array(s.buffer),n),n+=s.byteLength}),o.buffer}var _w=typeof Buffer!=\"undefined\"&&(typeof Blob==\"undefined\"||typeof atob==\"undefined\"||typeof btoa==\"undefined\");function uk(r){return _w?Buffer.byteLength(r,\"utf8\"):new Blob([r]).size}function lk(r){if(_w)return Buffer.from(r).toString(\"base64\");let e=new Uint8Array(r),t=\"\";for(let o=0,n=e.length;o{let o=t<<13,n=0;for(;!(o&8388608);)n-=8388608,o<<=1;return o&=-8388609,n+=947912704,o|n},e=new Uint32Array(2048);e[0]=0;for(let t=1;t<1024;t++)e[t]=r(t);for(let t=1024;t<2048;t++)e[t]=939524096+(t-1024<<13);return e}function _4(){let r=new Uint32Array(64);r[0]=0,r[31]=1199570944,r[32]=2147483648,r[63]=3347054592;for(let e=1;e<31;e++)r[e]=e<<23;for(let e=33;e<63;e++)r[e]=2147483648+(e-32<<23);return r}function E4(){let r=new Uint32Array(64);for(let e=0;e<64;e++)r[e]=1024;return r[0]=r[32]=0,r}function $4(){let r=T4(),e=_4(),t=E4();return o=>{let n=new ArrayBuffer(4*o.length),s=new Uint32Array(n);for(let a=0;a>10]+(i&1023)]+e[i>>10];s[a]=p}return new Float32Array(n)}}var qt=class r{constructor(){this.saveRouters=[],this.loadRouters=[]}static getInstance(){return r.instance==null&&(r.instance=new r),r.instance}static registerSaveRouter(e){r.getInstance().saveRouters.push(e)}static registerLoadRouter(e){r.getInstance().loadRouters.push(e)}static getSaveHandlers(e){return r.getHandlers(e,\"save\")}static getLoadHandlers(e,t){return r.getHandlers(e,\"load\",t)}static getHandlers(e,t,o){let n=[];return(t===\"load\"?r.getInstance().loadRouters:r.getInstance().saveRouters).forEach(a=>{let i=a(e,o);i!==null&&n.push(i)}),n}},fk=r=>qt.registerSaveRouter(r),hk=r=>qt.registerLoadRouter(r),gk=r=>qt.getSaveHandlers(r),xk=(r,e)=>qt.getLoadHandlers(r,e);var Rw=\"tensorflowjs\",Dw=1,Lu=\"models_store\",ou=\"model_info_store\";function yk(){if(!A().getBool(\"IS_BROWSER\"))throw new Error(\"Failed to obtain IndexedDB factory because the current environmentis not a web browser.\");let r=typeof window==\"undefined\"?self:window,e=r.indexedDB||r.mozIndexedDB||r.webkitIndexedDB||r.msIndexedDB||r.shimIndexedDB;if(e==null)throw new Error(\"The current browser does not appear to support IndexedDB.\");return e}function Aw(r){let e=r.result;e.createObjectStore(Lu,{keyPath:\"modelPath\"}),e.createObjectStore(ou,{keyPath:\"modelPath\"})}var ka=class{constructor(e){if(this.indexedDB=yk(),e==null||!e)throw new Error(\"For IndexedDB, modelPath must not be null, undefined or empty.\");this.modelPath=e}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error(\"BrowserLocalStorage.save() does not support saving model topology in binary formats yet.\");return this.databaseAction(this.modelPath,e)}async load(){return this.databaseAction(this.modelPath)}databaseAction(e,t){return new Promise((o,n)=>{let s=this.indexedDB.open(Rw,Dw);s.onupgradeneeded=()=>Aw(s),s.onsuccess=()=>{let a=s.result;if(t==null){let i=a.transaction(Lu,\"readonly\"),u=i.objectStore(Lu).get(this.modelPath);u.onsuccess=()=>{if(u.result==null)return a.close(),n(new Error(`Cannot find model with path '${this.modelPath}' in IndexedDB.`));o(u.result.modelArtifacts)},u.onerror=c=>(a.close(),n(u.error)),i.oncomplete=()=>a.close()}else{t.weightData=ir.join(t.weightData);let i=va(t),p=a.transaction(ou,\"readwrite\"),u=p.objectStore(ou),c;try{c=u.put({modelPath:this.modelPath,modelArtifactsInfo:i})}catch(m){return n(m)}let l;c.onsuccess=()=>{l=a.transaction(Lu,\"readwrite\");let m=l.objectStore(Lu),d;try{d=m.put({modelPath:this.modelPath,modelArtifacts:t,modelArtifactsInfo:i})}catch(f){return n(f)}d.onsuccess=()=>o({modelArtifactsInfo:i}),d.onerror=f=>{u=p.objectStore(ou);let h=u.delete(this.modelPath);h.onsuccess=()=>(a.close(),n(d.error)),h.onerror=g=>(a.close(),n(d.error))}},c.onerror=m=>(a.close(),n(c.error)),p.oncomplete=()=>{l==null?a.close():l.oncomplete=()=>a.close()}}},s.onerror=a=>n(s.error)})}};ka.URL_SCHEME=\"indexeddb://\";var bk=r=>A().getBool(\"IS_BROWSER\")&&!Array.isArray(r)&&r.startsWith(ka.URL_SCHEME)?R4(r.slice(ka.URL_SCHEME.length)):null;qt.registerSaveRouter(bk);qt.registerLoadRouter(bk);function R4(r){return new ka(r)}function D4(r){return r.startsWith(ka.URL_SCHEME)?r.slice(ka.URL_SCHEME.length):r}var ud=class{constructor(){this.indexedDB=yk()}async listModels(){return new Promise((e,t)=>{let o=this.indexedDB.open(Rw,Dw);o.onupgradeneeded=()=>Aw(o),o.onsuccess=()=>{let n=o.result,s=n.transaction(ou,\"readonly\"),i=s.objectStore(ou).getAll();i.onsuccess=()=>{let p={};for(let u of i.result)p[u.modelPath]=u.modelArtifactsInfo;e(p)},i.onerror=p=>(n.close(),t(i.error)),s.oncomplete=()=>n.close()},o.onerror=n=>t(o.error)})}async removeModel(e){return e=D4(e),new Promise((t,o)=>{let n=this.indexedDB.open(Rw,Dw);n.onupgradeneeded=()=>Aw(n),n.onsuccess=()=>{let s=n.result,a=s.transaction(ou,\"readwrite\"),i=a.objectStore(ou),p=i.get(e),u;p.onsuccess=()=>{if(p.result==null)return s.close(),o(new Error(`Cannot find model with path '${e}' in IndexedDB.`));{let c=i.delete(e),l=()=>{u=s.transaction(Lu,\"readwrite\");let d=u.objectStore(Lu).delete(e);d.onsuccess=()=>t(p.result.modelArtifactsInfo),d.onerror=f=>o(p.error)};c.onsuccess=l,c.onerror=m=>(l(),s.close(),o(p.error))}},p.onerror=c=>(s.close(),o(p.error)),a.oncomplete=()=>{u==null?s.close():u.oncomplete=()=>s.close()}},n.onerror=s=>o(n.error)})}};var ai=\"/\",rc=\"tensorflowjs_models\",Ck=\"info\",A4=\"model_topology\",F4=\"weight_specs\",P4=\"weight_data\",O4=\"model_metadata\";function wk(r){return{info:[rc,r,Ck].join(ai),topology:[rc,r,A4].join(ai),weightSpecs:[rc,r,F4].join(ai),weightData:[rc,r,P4].join(ai),modelMetadata:[rc,r,O4].join(ai)}}function Sk(r){for(let e of Object.values(r))window.localStorage.removeItem(e)}function M4(r){let e=r.split(ai);if(e.length<3)throw new Error(`Invalid key format: ${r}`);return e.slice(1,e.length-1).join(ai)}function L4(r){return r.startsWith(Na.URL_SCHEME)?r.slice(Na.URL_SCHEME.length):r}var Na=class{constructor(e){if(!A().getBool(\"IS_BROWSER\")||typeof window==\"undefined\"||typeof window.localStorage==\"undefined\")throw new Error(\"The current environment does not support local storage.\");if(this.LS=window.localStorage,e==null||!e)throw new Error(\"For local storage, modelPath must not be null, undefined or empty.\");this.modelPath=e,this.keys=wk(this.modelPath)}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error(\"BrowserLocalStorage.save() does not support saving model topology in binary formats yet.\");{let t=JSON.stringify(e.modelTopology),o=JSON.stringify(e.weightSpecs),n=va(e),s=ir.join(e.weightData);try{this.LS.setItem(this.keys.info,JSON.stringify(n)),this.LS.setItem(this.keys.topology,t),this.LS.setItem(this.keys.weightSpecs,o),this.LS.setItem(this.keys.weightData,lk(s));let a={format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,signature:e.signature!=null?e.signature:void 0,userDefinedMetadata:e.userDefinedMetadata!=null?e.userDefinedMetadata:void 0,modelInitializer:e.modelInitializer!=null?e.modelInitializer:void 0,initializerSignature:e.initializerSignature!=null?e.initializerSignature:void 0,trainingConfig:e.trainingConfig!=null?e.trainingConfig:void 0};return this.LS.setItem(this.keys.modelMetadata,JSON.stringify(a)),{modelArtifactsInfo:n}}catch(a){throw Sk(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=${n.modelTopologyBytes}, weightSpecsBytes=${n.weightSpecsBytes}, weightDataBytes=${n.weightDataBytes}.`)}}}async load(){let e=JSON.parse(this.LS.getItem(this.keys.info));if(e==null)throw new Error(`In local storage, there is no model with name '${this.modelPath}'`);if(e.modelTopologyType!==\"JSON\")throw new Error(\"BrowserLocalStorage does not support loading non-JSON model topology yet.\");let t={},o=JSON.parse(this.LS.getItem(this.keys.topology));if(o==null)throw new Error(`In local storage, the topology of model '${this.modelPath}' is missing.`);t.modelTopology=o;let n=JSON.parse(this.LS.getItem(this.keys.weightSpecs));if(n==null)throw new Error(`In local storage, the weight specs of model '${this.modelPath}' are missing.`);t.weightSpecs=n;let s=this.LS.getItem(this.keys.modelMetadata);if(s!=null){let i=JSON.parse(s);t.format=i.format,t.generatedBy=i.generatedBy,t.convertedBy=i.convertedBy,i.signature!=null&&(t.signature=i.signature),i.userDefinedMetadata!=null&&(t.userDefinedMetadata=i.userDefinedMetadata),i.modelInitializer!=null&&(t.modelInitializer=i.modelInitializer),i.initializerSignature!=null&&(t.initializerSignature=i.initializerSignature),i.trainingConfig!=null&&(t.trainingConfig=i.trainingConfig)}let a=this.LS.getItem(this.keys.weightData);if(a==null)throw new Error(`In local storage, the binary weight values of model '${this.modelPath}' are missing.`);return t.weightData=mk(a),t}};Na.URL_SCHEME=\"localstorage://\";var Ik=r=>A().getBool(\"IS_BROWSER\")&&!Array.isArray(r)&&r.startsWith(Na.URL_SCHEME)?B4(r.slice(Na.URL_SCHEME.length)):null;qt.registerSaveRouter(Ik);qt.registerLoadRouter(Ik);function B4(r){return new Na(r)}var pd=class{constructor(){E(A().getBool(\"IS_BROWSER\"),()=>\"Current environment is not a web browser\"),E(typeof window==\"undefined\"||typeof window.localStorage!=\"undefined\",()=>\"Current browser does not appear to support localStorage\"),this.LS=window.localStorage}async listModels(){let e={},t=rc+ai,o=ai+Ck;for(let n=0;n\"scheme must not be undefined or null.\"),e.endsWith(oc)&&(e=e.slice(0,e.indexOf(oc))),E(e.length>0,()=>\"scheme must not be an empty string.\");let o=r.getInstance();E(o.managers[e]==null,()=>`A model store manager is already registered for scheme '${e}'.`),o.managers[e]=t}static getManager(e){let t=r.getInstance().managers[e];if(t==null)throw new Error(`Cannot find model manager for scheme '${e}'`);return t}static getSchemes(){return Object.keys(r.getInstance().managers)}};function cd(r){if(r.indexOf(oc)===-1)throw new Error(`The url string provided does not contain a scheme. Supported schemes are: ${Os.getSchemes().join(\",\")}`);return{scheme:r.split(oc)[0],path:r.split(oc)[1]}}async function vk(r,e,t=!1){E(r!==e,()=>`Old path and new path are the same: '${r}'`);let o=qt.getLoadHandlers(r);E(o.length>0,()=>`Copying failed because no load handler is found for source URL ${r}.`),E(o.length<2,()=>`Copying failed because more than one (${o.length}) load handlers for source URL ${r}.`);let n=o[0],s=qt.getSaveHandlers(e);E(s.length>0,()=>`Copying failed because no save handler is found for destination URL ${e}.`),E(s.length<2,()=>`Copying failed because more than one (${o.length}) save handlers for destination URL ${e}.`);let a=s[0],i=cd(r).scheme,p=cd(r).path,u=i===cd(r).scheme,c=await n.load();t&&u&&await Os.getManager(i).removeModel(p);let l=await a.save(c);return t&&!u&&await Os.getManager(i).removeModel(p),l.modelArtifactsInfo}async function kk(){let r=Os.getSchemes(),e={};for(let t of r){let o=await Os.getManager(t).listModels();for(let n in o){let s=t+oc+n;e[s]=o[n]}}return e}async function Nk(r){let e=cd(r);return Os.getManager(e.scheme).removeModel(e.path)}async function Tk(r,e){return vk(r,e,!1)}async function _k(r,e){return vk(r,e,!0)}var Fw=class{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(t!==\"utf-8\"&&t!==\"utf8\")throw new Error(`Browser's encoder only supports utf-8, but got ${t}`);return this.textEncoder==null&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(e)}decode(e,t){return new TextDecoder(t).decode(e)}setTimeoutCustom(e,t){if(typeof window==\"undefined\"||!A().getBool(\"USE_SETTIMEOUTCUSTOM\")){setTimeout(e,t);return}this.functionRefs.push(e),setTimeout(()=>{window.postMessage({name:this.messageName,index:this.functionRefs.length-1},\"*\")},t),this.hasEventListener||(this.hasEventListener=!0,window.addEventListener(\"message\",o=>{if(o.source===window&&o.data.name===this.messageName){o.stopPropagation();let n=this.functionRefs[o.data.index];n(),this.handledMessageCount++,this.handledMessageCount===this.functionRefs.length&&(this.functionRefs=[],this.handledMessageCount=0)}},!0))}isTypedArray(e){return Qm(e)}};if(A().get(\"IS_BROWSER\")){A().setPlatform(\"browser\",new Fw);try{Os.registerManager(Na.URL_SCHEME,new pd)}catch(r){}try{Os.registerManager(ka.URL_SCHEME,new ud)}catch(r){}}var z4={importFetch:()=>Ek()},Pw;var Ow=class{constructor(){this.util=$k(),this.textEncoder=new this.util.TextEncoder}fetch(e,t){return A().global.fetch!=null?A().global.fetch(e,t):(Pw==null&&(Pw=z4.importFetch()),Pw(e,t))}now(){let e=process.hrtime();return e[0]*1e3+e[1]/1e6}encode(e,t){if(t!==\"utf-8\"&&t!==\"utf8\")throw new Error(`Node built-in encoder only supports utf-8, but got ${t}`);return this.textEncoder.encode(e)}decode(e,t){return e.length===0?\"\":new this.util.TextDecoder(t).decode(e)}isTypedArray(e){return this.util.types.isFloat32Array(e)||this.util.types.isInt32Array(e)||this.util.types.isUint8Array(e)||this.util.types.isUint8ClampedArray(e)}};A().get(\"IS_NODE\")&&!A().get(\"IS_BROWSER\")&&A().setPlatform(\"node\",new Ow);function me(r,e=\"float32\",t){return e=e||\"float32\",Ct(r),new tt(r,e,t)}function V4(r,e){let t=v(r,\"x\",\"cast\");if(!rw(e))throw new Error(`Failed to cast to unknown dtype ${e}`);if(e===\"string\"&&t.dtype!==\"string\"||e!==\"string\"&&t.dtype===\"string\")throw new Error(\"Only strings can be casted to strings\");let o={x:t},n={dtype:e};return T.runKernel(yo,o,n)}var Ue=N({cast_:V4});function W4(r){let t={x:v(r,\"x\",\"clone\",\"string_or_numeric\")};return T.runKernel(Co,t)}var Ur=N({clone_:W4});function ld(r,e=!1){console.log(r.toString(e))}Iw();var U4={buffer:me,cast:Ue,clone:Ur,print:ld};J0(U4);function G4(r,e){let t=v(r,\"a\",\"add\"),o=v(e,\"b\",\"add\");[t,o]=Oe(t,o);let n={a:t,b:o};return T.runKernel(uo,n)}var Ce=N({add_:G4});function H4(r,e){let t=v(r,\"a\",\"floorDiv\"),o=v(e,\"b\",\"floorDiv\");[t,o]=Oe(t,o);let n={a:t,b:o};return T.runKernel(Sn,n)}var md=N({floorDiv_:H4});function K4(r,e){let t=v(r,\"a\",\"div\"),o=v(e,\"b\",\"div\");if([t,o]=Oe(t,o),t.dtype===\"int32\"&&o.dtype===\"int32\")return md(t,o);let n={a:t,b:o},s={};return T.runKernel(fn,n,s)}var je=N({div_:K4});function q4(r,e){let t=v(r,\"a\",\"mul\"),o=v(e,\"b\",\"mul\");[t,o]=Oe(t,o);let n={a:t,b:o};return T.runKernel(Xn,n)}var se=N({mul_:q4});function j4(r){let e=v(r,\"x\",\"abs\");if(e.dtype===\"complex64\"){let t={x:e};return T.runKernel(Ai,t)}else{let t={x:e};return T.runKernel(Xs,t)}}var Qt=N({abs_:j4});function X4(r){let t={x:v(r,\"x\",\"acos\")};return T.runKernel(Vo,t)}var Rk=N({acos_:X4});function Y4(r){let t={x:v(r,\"x\",\"acosh\")};return T.runKernel(Wo,t)}var Dk=N({acosh_:Y4});function Q4(r){E(Array.isArray(r),()=>\"The argument passed to tf.addN() must be a list of tensors\"),E(r.length>=1,()=>`Must pass at least one tensor to tf.addN(), but got ${r.length}`);let e=r.map((n,s)=>v(n,`tensors${s}`,\"addN\")),t=e[0];e.forEach(n=>{if(n.dtype!==t.dtype)throw new Error(\"All tensors passed to tf.addN() must have the same dtype\")}),e.forEach(n=>{if(!br(n.shape,t.shape))throw new Error(\"All tensors passed to tf.addN() must have the same shape\")});let o=e;return T.runKernel(Uo,o)}var Ak=N({addN_:Q4});function Z4(r,e=null,t=!1){let n={x:v(r,\"x\",\"all\",\"bool\")},s={axis:e,keepDims:t};return T.runKernel(Go,n,s)}var Fk=N({all_:Z4});function J4(r,e=null,t=!1){let n={x:v(r,\"x\",\"any\",\"bool\")},s={axis:e,keepDims:t};return T.runKernel(Ho,n,s)}var Pk=N({any_:J4});function eH(r,e=0){let o={x:v(r,\"x\",\"argMax\")},n={axis:e};return T.runKernel(Ys,o,n)}var Ok=N({argMax_:eH});function tH(r,e=0){let o={x:v(r,\"x\",\"argMin\")},n={axis:e};return T.runKernel(Qs,o,n)}var Mk=N({argMin_:tH});function rH(r){let t={x:v(r,\"x\",\"asin\")};return T.runKernel(Ko,t)}var Lk=N({asin_:rH});function oH(r){let t={x:v(r,\"x\",\"asinh\")};return T.runKernel(qo,t)}var Bk=N({asinh_:oH});function nH(r){let t={x:v(r,\"x\",\"atan\")};return T.runKernel(jo,t)}var zk=N({atan_:nH});function sH(r,e){let t=v(r,\"a\",\"atan2\"),o=v(e,\"b\",\"atan2\");[t,o]=Oe(t,o);let n={a:t,b:o};return T.runKernel(Yo,n)}var Vk=N({atan2_:sH});function aH(r){let t={x:v(r,\"x\",\"atanh\")};return T.runKernel(Xo,t)}var Wk=N({atanh_:aH});function iH(r,e,t,o,n=\"NHWC\",s){let a=r[3],i=[...e,a],p=Gk(n);return zu(r,i,t,s,o,null,null,p)}function Lw(r,e,t,o,n,s,a=\"channelsLast\"){let[i,p]=Il(e),u;if(a===\"channelsLast\")u=[i,p,r[3],r[3]];else if(a===\"channelsFirst\")u=[i,p,r[1],r[1]];else throw new Error(`Unknown dataFormat ${a}`);return zu(r,u,t,o,n,s,!1,a)}function uH(r,e,t,o,n,s,a=\"NDHWC\"){let[i,p,u]=Mw(e),c,l;if(a===\"NDHWC\")l=\"channelsLast\",c=[i,p,u,r[4],r[4]];else if(a===\"NCDHW\")l=\"channelsFirst\",c=[i,p,u,r[1],r[1]];else throw new Error(`Unknown dataFormat ${a}`);return Uk(r,c,t,o,n,!1,l,s)}function zu(r,e,t,o,n,s,a=!1,i=\"channelsLast\"){let[p,u,c,l]=[-1,-1,-1,-1];if(i===\"channelsLast\")[p,u,c,l]=r;else if(i===\"channelsFirst\")[p,l,u,c]=r;else throw new Error(`Unknown dataFormat ${i}`);let[m,d,,f]=e,[h,g]=Il(t),[x,b]=Il(o),C=nc(m,x),S=nc(d,b),{padInfo:k,outHeight:_,outWidth:$}=lH(n,u,c,h,g,C,S,s,i),R=a?f*l:f,D;return i===\"channelsFirst\"?D=[p,R,_,$]:i===\"channelsLast\"&&(D=[p,_,$,R]),{batchSize:p,dataFormat:i,inHeight:u,inWidth:c,inChannels:l,outHeight:_,outWidth:$,outChannels:R,padInfo:k,strideHeight:h,strideWidth:g,filterHeight:m,filterWidth:d,effectiveFilterHeight:C,effectiveFilterWidth:S,dilationHeight:x,dilationWidth:b,inShape:r,outShape:D,filterShape:e}}function Uk(r,e,t,o,n,s=!1,a=\"channelsLast\",i){let[p,u,c,l,m]=[-1,-1,-1,-1,-1];if(a===\"channelsLast\")[p,u,c,l,m]=r;else if(a===\"channelsFirst\")[p,m,u,c,l]=r;else throw new Error(`Unknown dataFormat ${a}`);let[d,f,h,,g]=e,[x,b,C]=Mw(t),[S,k,_]=Mw(o),$=nc(d,S),R=nc(f,k),D=nc(h,_),{padInfo:P,outDepth:O,outHeight:M,outWidth:L}=mH(n,u,c,l,x,b,C,$,R,D,i),B=s?g*m:g,z;return a===\"channelsFirst\"?z=[p,B,O,M,L]:a===\"channelsLast\"&&(z=[p,O,M,L,B]),{batchSize:p,dataFormat:a,inDepth:u,inHeight:c,inWidth:l,inChannels:m,outDepth:O,outHeight:M,outWidth:L,outChannels:B,padInfo:P,strideDepth:x,strideHeight:b,strideWidth:C,filterDepth:d,filterHeight:f,filterWidth:h,effectiveFilterDepth:$,effectiveFilterHeight:R,effectiveFilterWidth:D,dilationDepth:S,dilationHeight:k,dilationWidth:_,inShape:r,outShape:z,filterShape:e}}function pH(r,e,t,o,n){o==null&&(o=Bw(r,e,t));let s=r[0],a=r[1],i=vl((s-e+2*o)/t+1,n),p=vl((a-e+2*o)/t+1,n);return[i,p]}function cH(r,e,t,o,n,s){n==null&&(n=Bw(r,e[0],o[0]));let a=[0,0,0,t];for(let i=0;i<3;i++)r[i]+2*n>=e[i]&&(a[i]=vl((r[i]-e[i]+2*n)/o[i]+1,s));return a}function Bw(r,e,t,o=1){let n=nc(e,o);return Math.floor((r[0]*(t-1)-t+n)/2)}function Il(r){return typeof r==\"number\"?[r,r,r]:r.length===2?[r[0],r[1],1]:r}function Mw(r){return typeof r==\"number\"?[r,r,r]:r}function nc(r,e){return e<=1?r:r+(r-1)*(e-1)}function lH(r,e,t,o,n,s,a,i,p){let u,c,l;if(typeof r==\"number\"){u={top:r,bottom:r,left:r,right:r,type:r===0?\"VALID\":\"NUMBER\"};let d=pH([e,t],s,o,r,i);c=d[0],l=d[1]}else if(r===\"same\"){c=Math.ceil(e/o),l=Math.ceil(t/n);let m=Math.max(0,(c-1)*o+s-e),d=Math.max(0,(l-1)*n+a-t),f=Math.floor(m/2),h=m-f,g=Math.floor(d/2),x=d-g;u={top:f,bottom:h,left:g,right:x,type:\"SAME\"}}else if(r===\"valid\")u={top:0,bottom:0,left:0,right:0,type:\"VALID\"},c=Math.ceil((e-s+1)/o),l=Math.ceil((t-a+1)/n);else if(typeof r==\"object\"){let m=p===\"channelsLast\"?r[1][0]:r[2][0],d=p===\"channelsLast\"?r[1][1]:r[2][1],f=p===\"channelsLast\"?r[2][0]:r[3][0],h=p===\"channelsLast\"?r[2][1]:r[3][1];u={top:m,bottom:d,left:f,right:h,type:m===0&&d===0&&f===0&&h===0?\"VALID\":\"EXPLICIT\"},c=vl((e-s+m+d)/o+1,i),l=vl((t-a+f+h)/n+1,i)}else throw Error(`Unknown padding parameter: ${r}`);return{padInfo:u,outHeight:c,outWidth:l}}function mH(r,e,t,o,n,s,a,i,p,u,c){let l,m,d,f;if(r===\"valid\"&&(r=0),typeof r==\"number\"){l={top:r,bottom:r,left:r,right:r,front:r,back:r,type:r===0?\"VALID\":\"NUMBER\"};let g=cH([e,t,o,1],[i,p,u],1,[n,s,a],r,c);m=g[0],d=g[1],f=g[2]}else if(r===\"same\"){m=Math.ceil(e/n),d=Math.ceil(t/s),f=Math.ceil(o/a);let h=(m-1)*n+i-e,g=(d-1)*s+p-t,x=(f-1)*a+u-o,b=Math.floor(h/2),C=h-b,S=Math.floor(g/2),k=g-S,_=Math.floor(x/2),$=x-_;l={top:S,bottom:k,left:_,right:$,front:b,back:C,type:\"SAME\"}}else throw Error(`Unknown padding parameter: ${r}`);return{padInfo:l,outDepth:m,outHeight:d,outWidth:f}}function vl(r,e){if(!e)return Math.trunc(r);switch(e){case\"round\":return Math.round(r);case\"ceil\":return Math.ceil(r);case\"floor\":return Math.floor(r);default:throw new Error(`Unknown roundingMode ${e}`)}}function Bu(r){let[e,t,o]=Il(r);return e===1&&t===1&&o===1}function gr(r,e){return Bu(r)||Bu(e)}function Ta(r){return Il(r).every(e=>e>0)}function Gk(r){if(r===\"NHWC\")return\"channelsLast\";if(r===\"NCHW\")return\"channelsFirst\";throw new Error(`Unknown dataFormat ${r}`)}function Lt(r,e,t){if(t!=null){if(typeof e==\"string\")throw Error(`Error in ${r}: pad must be an integer when using dimRoundingMode ${t} but got pad ${e}.`);if(typeof e==\"number\")E(Ka(e),()=>`Error in ${r}: pad must be an integer when using dimRoundingMode ${t} but got pad ${e}.`);else if(typeof e==\"object\")e.forEach(o=>{o.forEach(n=>{E(Ka(n),()=>`Error in ${r}: pad must be an integer when using dimRoundingMode ${t} but got pad ${n}.`)})});else throw Error(`Error in ${r}: Unknown padding parameter: ${e}`)}}function dH(r,e){let o={x:v(r,\"x\",\"reshape\",\"string_or_numeric\")},n={shape:e};return T.runKernel(da,o,n)}var W=N({reshape_:dH});function fH(r,e,t,o,n){let s=v(r,\"x\",\"avgPool\",\"float32\"),a=1;E(gr(t,a),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${t} and dilations '${a}'`);let i=s,p=!1;s.rank===3&&(p=!0,i=W(s,[1,s.shape[0],s.shape[1],s.shape[2]])),E(i.rank===4,()=>`Error in avgPool: x must be rank 4 but got rank ${i.rank}.`),Lt(\"avgPool\",o,n);let u={x:i},c={filterSize:e,strides:t,pad:o,dimRoundingMode:n},l=T.runKernel(Qo,u,c);return l=Ue(l,s.dtype),p?W(l,[l.shape[1],l.shape[2],l.shape[3]]):l}var dd=N({avgPool_:fH});function hH(r,e,t,o,n,s=\"NDHWC\"){let a=v(r,\"x\",\"avgPool3d\",\"float32\"),i=a,p=!1;a.rank===4&&(p=!0,i=W(a,[1,a.shape[0],a.shape[1],a.shape[2],a.shape[3]])),E(i.rank===5,()=>`Error in avgPool3d: x must be rank 5 but got rank ${i.rank}.`),E(s===\"NDHWC\",()=>`Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of ${s}`),E(typeof t==\"number\"&&t>0||Array.isArray(t)&&t[0]>0&&t[1]>0&&t[2]>0,()=>`Error in avgPool3d: Stride must be > 0, but got '${t}'`),Lt(\"avgPool3d\",o,n);let u={x:i},c={filterSize:e,strides:t,pad:o,dimRoundingMode:n,dataFormat:s},l=T.runKernel(Zs,u,c);return l=Ue(l,i.dtype),p?W(l,[l.shape[1],l.shape[2],l.shape[3],l.shape[4]]):l}var Hk=N({avgPool3d_:hH});function gH(r,e=0){E(r.length>=1,()=>\"Pass at least one tensor to concat\");let t=ni(r,\"tensors\",\"concat\",\"string_or_numeric\");if(t[0].dtype===\"complex64\"&&t.forEach(s=>{if(s.dtype!==\"complex64\")throw new Error(`Cannot concatenate complex64 tensors with a tensor\n with dtype ${s.dtype}. `)}),t.length===1)return Ur(t[0]);let o=t,n={axis:e};return T.runKernel(ta,o,n)}var yt=N({concat_:gH});function xH(r,e,t=!1,o=!1){let n=v(r,\"a\",\"matMul\"),s=v(e,\"b\",\"matMul\");[n,s]=Oe(n,s);let a={a:n,b:s},i={transposeA:t,transposeB:o};return T.runKernel(Zo,a,i)}var Ze=N({matMul_:xH});function yH(r){let t={x:v(r,\"x\",\"sigmoid\",\"float32\")};return T.runKernel(bs,t)}var Ea=N({sigmoid_:yH});function bH(r,e,t){let o=v(r,\"x\",\"slice\",\"string_or_numeric\");if(o.rank===0)throw new Error(\"Slicing scalar is not possible\");let n={x:o},s={begin:e,size:t};return T.runKernel(ha,n,s)}var Xe=N({slice_:bH});function CH(r){let t={x:v(r,\"x\",\"tanh\",\"float32\")};return T.runKernel(Es,t)}var kl=N({tanh_:CH});function wH(r,e,t,o,n,s){let a=v(r,\"forgetBias\",\"basicLSTMCell\"),i=v(e,\"lstmKernel\",\"basicLSTMCell\"),p=v(t,\"lstmBias\",\"basicLSTMCell\"),u=v(o,\"data\",\"basicLSTMCell\"),c=v(n,\"c\",\"basicLSTMCell\"),l=v(s,\"h\",\"basicLSTMCell\"),m=yt([u,l],1),d=Ze(m,i),f=Ce(d,p),h=f.shape[0],g=f.shape[1]/4,x=[h,g],b=Xe(f,[0,0],x),C=Xe(f,[0,g],x),S=Xe(f,[0,g*2],x),k=Xe(f,[0,g*3],x),_=Ce(se(Ea(b),kl(C)),se(c,Ea(Ce(a,S)))),$=se(kl(_),Ea(k));return[_,$]}var Kk=N({basicLSTMCell_:wH});function SH(r,e,t){let o=v(r,\"x\",\"batchToSpaceND\"),n=e.reduce((i,p)=>i*p);E(o.rank>=1+e.length,()=>`input rank is ${o.rank} but should be > than blockShape.length ${e.length}`),E(t.length===e.length,()=>`crops.length is ${t.length} but should be equal to blockShape.length ${e.length}`),E(o.shape[0]%n===0,()=>`input tensor batch is ${o.shape[0]} but is not divisible by the product of the elements of blockShape ${e.join(\" * \")} === ${n}`);let s={x:o},a={blockShape:e,crops:t};return T.runKernel(Js,s,a)}var fd=N({batchToSpaceND_:SH});function qk(r){let e;return r.rank===0||r.rank===1?e=W(r,[1,1,1,r.size]):r.rank===2?e=W(r,[1,1,r.shape[0],r.shape[1]]):r.rank===3?e=W(r,[1,r.shape[0],r.shape[1],r.shape[2]]):e=r,e}function IH(r,e,t,o,n,s){s==null&&(s=.001);let a=v(r,\"x\",\"batchNorm\"),i=v(e,\"mean\",\"batchNorm\"),p=v(t,\"variance\",\"batchNorm\"),u;n!=null&&(u=v(n,\"scale\",\"batchNorm\"));let c;o!=null&&(c=v(o,\"offset\",\"batchNorm\")),E(i.rank===p.rank,()=>\"Batch normalization gradient requires mean and variance to have equal ranks.\"),E(c==null||i.rank===c.rank,()=>\"Batch normalization gradient requires mean and offset to have equal ranks.\"),E(u==null||i.rank===u.rank,()=>\"Batch normalization gradient requires mean and scale to have equal ranks.\");let m={x:qk(a),scale:u,offset:c,mean:i,variance:p},d={varianceEpsilon:s},f=T.runKernel(In,m,d);return W(f,a.shape)}var nu=N({batchNorm_:IH});function vH(r,e,t,o,n,s){let a=v(r,\"x\",\"batchNorm\"),i=v(e,\"mean\",\"batchNorm\"),p=v(t,\"variance\",\"batchNorm\"),u;n!=null&&(u=v(n,\"scale\",\"batchNorm\"));let c;return o!=null&&(c=v(o,\"offset\",\"batchNorm\")),E(a.rank===2,()=>`Error in batchNorm2D: x must be rank 2 but got rank ${a.rank}.`),E(i.rank===2||i.rank===1,()=>`Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank ${i.rank}.`),E(p.rank===2||p.rank===1,()=>`Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank ${p.rank}.`),u!=null&&E(u.rank===2||u.rank===1,()=>`Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank ${u.rank}.`),c!=null&&E(c.rank===2||c.rank===1,()=>`Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank ${c.rank}.`),nu(a,i,p,c,u,s)}var jk=N({batchNorm2d_:vH});function kH(r,e,t,o,n,s){let a=v(r,\"x\",\"batchNorm\"),i=v(e,\"mean\",\"batchNorm\"),p=v(t,\"variance\",\"batchNorm\"),u;n!=null&&(u=v(n,\"scale\",\"batchNorm\"));let c;return o!=null&&(c=v(o,\"offset\",\"batchNorm\")),E(a.rank===3,()=>`Error in batchNorm3D: x must be rank 3 but got rank ${a.rank}.`),E(i.rank===3||i.rank===1,()=>`Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank ${i.rank}.`),E(p.rank===3||p.rank===1,()=>`Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank ${p.rank}.`),u!=null&&E(u.rank===3||u.rank===1,()=>`Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank ${u.rank}.`),c!=null&&E(c.rank===3||c.rank===1,()=>`Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank ${c.rank}.`),nu(a,i,p,c,u,s)}var Xk=N({batchNorm3d_:kH});function NH(r,e,t,o,n,s){let a=v(r,\"x\",\"batchNorm\"),i=v(e,\"mean\",\"batchNorm\"),p=v(t,\"variance\",\"batchNorm\"),u;n!=null&&(u=v(n,\"scale\",\"batchNorm\"));let c;return o!=null&&(c=v(o,\"offset\",\"batchNorm\")),E(a.rank===4,()=>`Error in batchNorm4D: x must be rank 4 but got rank ${a.rank}.`),E(i.rank===4||i.rank===1,()=>`Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank ${i.rank}.`),E(p.rank===4||p.rank===1,()=>`Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank ${p.rank}.`),u!=null&&E(u.rank===4||u.rank===1,()=>`Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank ${u.rank}.`),c!=null&&E(c.rank===4||c.rank===1,()=>`Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank ${c.rank}.`),nu(a,i,p,c,u,s)}var Yk=N({batchNorm4d_:NH});function TH(r,e,t){let o=v(r,\"x\",\"bincount\"),n=v(e,\"weights\",\"bincount\");E(o.dtype===\"int32\",()=>`Error in bincount: input dtype must be int32, but got ${o.dtype}`),E(t>=0,()=>`size must be non-negative, but got ${t}.`),E(n.size===o.size||n.size===0,()=>`Error in bincount: weights must have the same size as input or0-length, but got input shape: ${o.shape}, weights shape: ${n.shape}.`);let s={x:o,weights:n},a={size:t};return T.runKernel(Jo,s,a)}var hd=N({bincount_:TH});function _H(r,e){let t=v(r,\"x\",\"bitwiseAnd\"),o=v(e,\"y\",\"bitwiseAnd\");if(!br(t.shape,o.shape))throw new Error(`BitwiseAnd: Tensors must have the same shape. x: ${t.shape}, y: ${o.shape}`);if(t.dtype!==\"int32\"||o.dtype!==\"int32\")throw new Error(`BitwiseAnd: Only supports 'int32' values in tensor, found type of x: ${t.dtype} and type of y: ${o.dtype}`);let n={a:t,b:o};return T.runKernel(qa,n)}var Qk=N({bitwiseAnd_:_H});function EH(r,e){let t=v(r,\"s0\",\"broadcastArgs\",\"int32\"),o=v(e,\"s1\",\"broadcastArgs\",\"int32\");if(t.rank!==1)throw new Error(`broadcastArgs(): first input must be a vector (rank=1). Has rank ${t.rank}`);if(o.rank!==1)throw new Error(`broadcastArgs(): second input must be a vector (rank=1). Has rank ${o.rank}`);let n={s0:t,s1:o};return T.runKernel(ea,n)}var Zk=N({broadcastArgs_:EH});function $H(r,e){let t=v(r,\"broadcastTo\",\"x\"),o=t.shape;if(Ct(e),e.lengtht.rank){let u=t.shape.slice();for(;u.length=0;u--)if(n[u]===e[u])s[u]=1;else if(t.shape[u]!==1)throw new Error(`broadcastTo(): [${o}] cannot be broadcast to [${e}].`);if(s.map((u,c)=>u>1?c:-1).filter(u=>u>=0).length===0)return Ur(t);let i={x:t},p={reps:s};return T.runKernel(po,i,p)}var su=N({broadcastTo_:$H});function RH(r){let t={x:v(r,\"x\",\"ceil\",\"float32\")};return T.runKernel(en,t)}var Jk=N({ceil_:RH});function $a(r,e,t){Ct(r),t=t||Ei(e);let o={shape:r,value:e,dtype:t};return T.runKernel(sa,{},o)}function DH(r,e,t){let o=v(r,\"x\",\"clipByValue\");if(E(e<=t,()=>`Error in clip: min (${e}) must be less than or equal to max (${t}).`),e===t)return $a(o.shape,e,o.dtype);let n={x:o},s={clipValueMin:e,clipValueMax:t};return T.runKernel(bo,n,s)}var e2=N({clipByValue_:DH});function AH(r){return yt(r,0)}var t2=N({concat1d_:AH});function FH(r,e){return yt(r,e)}var r2=N({concat2d_:FH});function PH(r,e){return yt(r,e)}var o2=N({concat3d_:PH});function OH(r,e){return yt(r,e)}var n2=N({concat4d_:OH});function MH(r,e,t,o,n=\"NHWC\",s=[1,1],a){let i=v(r,\"x\",\"conv2d\",\"float32\"),p=v(e,\"filter\",\"conv2d\",\"float32\"),u=i,c=!1;i.rank===3&&(c=!0,u=W(i,[1,i.shape[0],i.shape[1],i.shape[2]])),E(u.rank===4,()=>`Error in conv2d: input must be rank 4, but got rank ${u.rank}.`),E(p.rank===4,()=>`Error in conv2d: filter must be rank 4, but got rank ${p.rank}.`),Lt(\"conv2d\",o,a);let l=n===\"NHWC\"?u.shape[3]:u.shape[1];E(l===p.shape[2],()=>`Error in conv2d: depth of input (${l}) must match input depth for filter ${p.shape[2]}.`),E(gr(t,s),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${t} and dilations '${s}'`),E(Ta(s),()=>\"Error in conv2D: Dilated rates should be larger than 0.\"),E(Ta(t),()=>\"Error in conv2D: Strides should be larger than 0.\");let m={x:u,filter:p},d={strides:t,pad:o,dataFormat:n,dilations:s,dimRoundingMode:a},f=T.runKernel(tn,m,d);return c?W(f,[f.shape[1],f.shape[2],f.shape[3]]):f}var au=N({conv2d_:MH});function LH(r,e,t,o,n=\"NWC\",s=1,a){let i=v(r,\"x\",\"conv1d\"),p=v(e,\"filter\",\"conv1d\"),u=i,c=!1;i.rank===2&&(c=!0,u=W(i,[1,i.shape[0],i.shape[1]])),E(u.rank===3,()=>`Error in conv1d: input must be rank 3, but got rank ${u.rank}.`),E(p.rank===3,()=>`Error in conv1d: filter must be rank 3, but got rank ${p.rank}.`),Lt(\"conv1d\",o,a),E(u.shape[2]===p.shape[1],()=>`Error in conv1d: depth of input (${u.shape[2]}) must match input depth for filter ${p.shape[1]}.`),E(gr(t,s),()=>`Error in conv1D: Either stride or dilation must be 1. Got stride ${t} and dilation '${s}'`),E(Ta(s),()=>\"Error in conv1D: Dilated rates should be larger than 0.\"),E(Ta(t),()=>\"Error in conv1D: Stride should be larger than 0.\"),E(n===\"NWC\",()=>`Error in conv1d: got dataFormat of ${n} but only NWC is currently supported.`);let l=W(p,[1,p.shape[0],p.shape[1],p.shape[2]]),m=W(u,[u.shape[0],1,u.shape[1],u.shape[2]]),g=au(m,l,[1,t],o,\"NHWC\",[1,s],a);return c?W(g,[g.shape[2],g.shape[3]]):W(g,[g.shape[0],g.shape[2],g.shape[3]])}var s2=N({conv1d_:LH});function BH(r,e,t,o,n,s=\"NHWC\",a){E(r.length===e.rank,()=>`Length of inShape (${r.length}) and rank of dy (${e.rank}) must match`);let i=r,p=e,u=!1;e.rank===3&&(u=!0,p=W(e,[1,e.shape[0],e.shape[1],e.shape[2]]),i=[1,r[0],r[1],r[2]]),E(i.length===4,()=>`Error in conv2dDerInput: inShape must be length 4, but got length ${i.length}.`),E(p.rank===4,()=>`Error in conv2dDerInput: dy must be rank 4, but got rank ${p.rank}`),E(t.rank===4,()=>`Error in conv2dDerInput: filter must be rank 4, but got rank ${t.rank}`);let c=s===\"NHWC\"?i[3]:i[1],l=s===\"NHWC\"?p.shape[3]:p.shape[1];E(c===t.shape[2],()=>`Error in conv2dDerInput: depth of input (${c}) must match input depth for filter ${t.shape[2]}.`),E(l===t.shape[3],()=>`Error in conv2dDerInput: depth of output (${l}) must match output depth for filter ${t.shape[3]}.`),Lt(\"conv2dDerInput\",n,a);let m={dy:p,filter:t},d={strides:o,pad:n,dataFormat:s,dimRoundingMode:a,inputShape:i},f=T.runKernel(rn,m,d);return u?W(f,[f.shape[1],f.shape[2],f.shape[3]]):f}var gd=N({conv2DBackpropInput_:BH});function zH(r,e,t,o,n,s){let a=v(r,\"x\",\"conv2dTranspose\"),i=v(e,\"filter\",\"conv2dTranspose\");return gd(t,a,i,o,n,\"NHWC\",s)}var a2=N({conv2dTranspose_:zH});function VH(r,e,t,o,n=\"NDHWC\",s=[1,1,1]){let a=v(r,\"x\",\"conv3d\"),i=v(e,\"filter\",\"conv3d\"),p=a,u=!1;a.rank===4&&(u=!0,p=W(a,[1,a.shape[0],a.shape[1],a.shape[2],a.shape[3]])),E(p.rank===5,()=>`Error in conv3d: input must be rank 5, but got rank ${p.rank}.`),E(i.rank===5,()=>`Error in conv3d: filter must be rank 5, but got rank ${i.rank}.`),E(p.shape[4]===i.shape[3],()=>`Error in conv3d: depth of input (${p.shape[4]}) must match input depth for filter ${i.shape[3]}.`),E(gr(t,s),()=>`Error in conv3D: Either strides or dilations must be 1. Got strides ${t} and dilations '${s}'`),E(n===\"NDHWC\",()=>`Error in conv3d: got dataFormat of ${n} but only NDHWC is currently supported.`),E(Ta(s),()=>\"Error in conv3D: Dilated rates should be larger than 0.\"),E(Ta(t),()=>\"Error in conv3D: Strides should be larger than 0.\");let c={x:p,filter:i},l={strides:t,pad:o,dataFormat:n,dilations:s},m=T.runKernel(on,c,l);return u?W(m,[m.shape[1],m.shape[2],m.shape[3],m.shape[4]]):m}var i2=N({conv3d_:VH});function WH(r,e,t,o,n){E(r.length===e.rank,()=>`Length of inShape (${r.length}) and rank of dy (${e.rank}) must match`);let s=r,a=e,i=!1;e.rank===4&&(i=!0,a=W(e,[1,e.shape[0],e.shape[1],e.shape[2],e.shape[3]]),s=[1,r[0],r[1],r[2],r[3]]);let p=s[4],u=a.shape[4];E(s.length===5,()=>`Error in conv3dDerInput: inShape must be length 5, but got length ${s.length}.`),E(a.rank===5,()=>`Error in conv3dDerInput: dy must be rank 5, but got rank ${a.rank}`),E(t.rank===5,()=>`Error in conv3dDerInput: filter must be rank 5, but got rank ${t.rank}`),E(p===t.shape[3],()=>`Error in conv3dDerInput: depth of input (${p}) must match input depth for filter ${t.shape[3]}.`),E(u===t.shape[4],()=>`Error in conv3dDerInput: depth of output (${u}) must match output depth for filter ${t.shape[4]}.`);let c={dy:a,filter:t},l={pad:n,strides:o,inputShape:s},m=T.runKernel(nn,c,l);return i?W(m,[m.shape[1],m.shape[2],m.shape[3],m.shape[4]]):m}var u2=N({conv3DBackpropInput_:WH});function UH(r,e,t,o,n){let s=v(r,\"x\",\"conv3dTranspose\"),a=v(e,\"filter\",\"conv3dTranspose\");return u2(t,s,a,o,n)}var p2=N({conv3dTranspose_:UH});function GH(r){let t={x:v(r,\"x\",\"cos\",\"float32\")};return T.runKernel(sn,t)}var c2=N({cos_:GH});function HH(r){let t={x:v(r,\"x\",\"cosh\",\"float32\")};return T.runKernel(an,t)}var l2=N({cosh_:HH});function KH(r,e=0,t=!1,o=!1){let s={x:v(r,\"x\",\"cumprod\")},a={axis:e,exclusive:t,reverse:o};return T.runKernel(un,s,a)}var m2=N({cumprod_:KH});function qH(r,e=0,t=!1,o=!1){let s={x:v(r,\"x\",\"cumsum\")},a={axis:e,exclusive:t,reverse:o};return T.runKernel(pn,s,a)}var d2=N({cumsum_:qH});function jH(r,e,t,o=!1){let n=v(r,\"x\",\"denseBincount\"),s=v(e,\"weights\",\"denseBincount\");E(n.dtype===\"int32\",()=>`Error in denseBincount: input dtype must be int32, but got ${n.dtype}`),E(n.rank<=2,()=>`Error in denseBincount: input must be at most rank 2, but got rank ${n.rank}.`),E(t>=0,()=>`size must be non-negative, but got ${t}.`),E(s.size===n.size||s.size===0,()=>`Error in denseBincount: weights must have the same shape as x or 0-length, but got x shape: ${n.shape}, weights shape: ${s.shape}.`);let a={x:n,weights:s},i={size:t,binaryOutput:o};return T.runKernel(ra,a,i)}var f2=N({denseBincount_:jH});function XH(r,e,t=\"NHWC\"){let o=v(r,\"x\",\"depthToSpace\",\"float32\"),n=t===\"NHWC\"?o.shape[1]:o.shape[2],s=t===\"NHWC\"?o.shape[2]:o.shape[3],a=t===\"NHWC\"?o.shape[3]:o.shape[1];E(e>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${e}`),E(n*e>=0,()=>`Negative dimension size caused by overflow when multiplying\n ${n} and ${e} for depthToSpace with input shape\n ${o.shape}`),E(s*e>=0,()=>`Negative dimension size caused by overflow when multiplying\n ${s} and ${e} for depthToSpace with input shape\n ${o.shape}`),E(a%(e*e)===0,()=>`Dimension size must be evenly divisible by ${e*e} but is ${a} for depthToSpace with input shape ${o.shape}`);let i={x:o},p={blockSize:e,dataFormat:t};return T.runKernel(ln,i,p)}var h2=N({depthToSpace_:XH});function YH(r,e,t,o,n=\"NHWC\",s=[1,1],a){let i=v(r,\"x\",\"depthwiseConv2d\",\"float32\"),p=v(e,\"filter\",\"depthwiseConv2d\",\"float32\"),u=i,c=!1;i.rank===3&&(c=!0,u=W(i,[1,i.shape[0],i.shape[1],i.shape[2]])),E(u.rank===4,()=>`Error in depthwiseConv2d: input must be rank 4, but got rank ${u.rank}.`),E(p.rank===4,()=>`Error in depthwiseConv2d: filter must be rank 4, but got rank ${p.rank}.`);let l=n===\"NHWC\"?u.shape[3]:u.shape[1];E(l===p.shape[2],()=>`Error in depthwiseConv2d: number of input channels (${l}) must match the inChannels dimension in filter ${p.shape[2]}.`),Lt(\"depthwiseConv2d\",o,a);let m={x:u,filter:p},d={strides:t,pad:o,dataFormat:n,dilations:s,dimRoundingMode:a},f=T.runKernel(mn,m,d);return c?W(f,[f.shape[1],f.shape[2],f.shape[3]]):f}var sc=N({depthwiseConv2d_:YH});function QH(r){let t={x:v(r,\"x\",\"diag\")};return T.runKernel(oa,t)}var g2=N({diag_:QH});function ZH(r,e,t,o,n=[1,1],s=\"NHWC\"){let a=v(r,\"x\",\"dilation2d\"),i=v(e,\"filter\",\"dilation2d\");E(a.rank===3||a.rank===4,()=>`Error in dilation2d: input must be rank 3 or 4, but got rank ${a.rank}.`),E(i.rank===3,()=>`Error in dilation2d: filter must be rank 3, but got rank ${i.rank}.`),E(s===\"NHWC\",()=>`Error in dilation2d: Only NHWC is currently supported, but got dataFormat of ${s}`);let p=a,u=!1;a.rank===3&&(p=W(a,[1,a.shape[0],a.shape[1],a.shape[2]]),u=!0),E(p.shape[3]===i.shape[2],()=>`Error in dilation2d: input and filter must have the same depth: ${p.shape[3]} vs ${i.shape[2]}`);let c={x:p,filter:i},l={strides:t,pad:o,dilations:n},m=T.runKernel(dn,c,l);return u?W(m,[m.shape[1],m.shape[2],m.shape[3]]):m}var x2=N({dilation2d_:ZH});var Sr={};qe(Sr,{assertAndGetBroadcastShape:()=>rt,getBroadcastDims:()=>y2,getReductionAxes:()=>xd});function y2(r,e){let t=r.length,o=[];for(let n=0;n1&&a===1&&o.unshift(s)}return o}function xd(r,e){let t=[];for(let o=0;o1)&&t.unshift(s)}return t}function rt(r,e){let t=Math.max(r.length,e.length),o=new Array(t);for(let n=0;n`Error in dot: inputs must all be rank 1 or 2, but got ranks ${t.rank} and ${o.rank}.`);let n=t.rank===1?t.size:t.shape[1],s=o.rank===1?o.size:o.shape[0];if(E(n===s,()=>`Error in dot: inner dimensions of inputs must match, but got ${n} and ${s}.`),t.rank===1&&o.rank===1){let a=W(t,[1,-1]),i=W(o,[-1,1]),p=Ze(a,i);return W(p,[])}else if(t.rank===1&&o.rank===2){let a=W(t,[1,-1]),i=W(o,[o.shape[0],o.shape[1]]),p=Ze(a,i);return W(p,[p.size])}else if(t.rank===2&&o.rank===1){let a=W(o,[-1,1]),i=Ze(t,a);return W(i,[i.size])}else{let a=W(o,[o.shape[0],o.shape[1]]);return Ze(t,a)}}var C2=N({dot_:oK});function nK(r,...e){let t=e.map((n,s)=>v(n,`tensors${s}`,\"einsum\")),o={equation:r};return T.runKernel(Bi,t,o)}var iu=N({einsum_:nK});function sK(r){let t={x:v(r,\"x\",\"elu\",\"float32\")};return T.runKernel(hn,t)}var bd=N({elu_:sK});function aK(r,e){let t=v(r,\"x\",\"ensureShape\",\"string_or_numeric\");if(!ZC(t.shape,e))throw new Error(`EnsureShape: Shape of tensor ${t.shape} is not compatible with expected shape ${e}`);return r}var w2=N({ensureShape_:aK});function iK(r){let e=v(r,\"x\",\"erf\");E(e.dtype===\"int32\"||e.dtype===\"float32\",()=>\"Input dtype must be `int32` or `float32`.\"),e.dtype===\"int32\"&&(e=Ue(e,\"float32\"));let t={x:e};return T.runKernel(gn,t)}var S2=N({erf_:iK});function zw(r,e){for(let t=0;tr[s]);return[t,n]}function ii(r,e){let t=e.map(o=>1);return I2(r,t,e)}function pK(r,e,t){E(zw(e,t),()=>`${r} supports only inner-most axes for now. Got axes ${e} and rank-${t} input.`)}function cK(r,e){if(zw(r,e))return null;let t=[];for(let o=0;ot.push(o)),t}function lK(r){return r.map((e,t)=>[t,e]).sort((e,t)=>e[1]-t[1]).map(e=>e[0])}function mK(r,e){let t=[];for(let o=e-r;o\"Axis must be <= rank of the tensor\");let o={input:t},n={dim:e};return T.runKernel(na,o,n)}var Ms=N({expandDims_:IK});function vK(r){let t={x:v(r,\"x\",\"expm1\")};return T.runKernel(bn,t)}var N2=N({expm1_:vK});function kK(r,e){let t=v(r,\"x\",\"tile\",\"string_or_numeric\");E(t.rank===e.length,()=>`Error in transpose: rank of input ${t.rank} must match length of reps ${e}.`);let o={x:t},n={reps:e};return T.runKernel(po,o,n)}var uu=N({tile_:kK});function NK(r,e,t,o=\"float32\"){e==null&&(e=r);let n=me([r,e],o),s=r<=e?r:e;for(let i=0;i`Error in localResponseNormalization: x must be rank 3 or 4 but got\n rank ${s.rank}.`),E(Ka(e),()=>`Error in localResponseNormalization: depthRadius must be an integer but got depthRadius ${e}.`);let a=s,i=!1;s.rank===3&&(i=!0,a=W(s,[1,s.shape[0],s.shape[1],s.shape[2]]));let p={x:a},u={depthRadius:e,bias:t,alpha:o,beta:n},c=T.runKernel(Bn,p,u);return i?W(c,[c.shape[1],c.shape[2],c.shape[3]]):c}var R2=N({localResponseNormalization_:LK});function BK(r){let t={x:v(r,\"x\",\"log\",\"float32\")};return T.runKernel(Fn,t)}var pi=N({log_:BK});function zK(r){let t={x:v(r,\"x\",\"log1p\")};return T.runKernel(Pn,t)}var kd=N({log1p_:zK});function VK(r){return E(qs(r),()=>\"The f passed in grad(f) must be a function\"),(e,t)=>{let o=v(e,\"x\",\"tf.grad\",\"string_or_numeric\"),n=t!=null?v(t,\"dy\",\"tf.grad\"):null;return T.tidy(()=>{let{value:s,grads:a}=T.gradients(()=>r(o),[o],n);return n!=null&&xt(s.shape,n.shape,\"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)\"),Nd(a),a[0]})}}function WK(r){return E(qs(r),()=>\"The f passed in grads(f) must be a function\"),(e,t)=>{E(Array.isArray(e),()=>\"The args passed in grads(f)(args) must be an array of `Tensor`s or `TensorLike`s\");let o=ni(e,\"args\",\"tf.grads\",\"string_or_numeric\"),n=t!=null?v(t,\"dy\",\"tf.grads\"):null;return T.tidy(()=>{let{value:s,grads:a}=T.gradients(()=>r(...o),o,n);return n!=null&&xt(s.shape,n.shape,\"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])\"),Nd(a),a})}}function UK(r){return E(qs(r),()=>\"The f passed in valueAndGrad(f) must be a function\"),(e,t)=>{E(e instanceof mt,()=>\"The x passed in valueAndGrad(f)(x) must be a tensor\"),E(t==null||t instanceof mt,()=>\"The dy passed in valueAndGrad(f)(x, dy) must be a tensor\");let{grads:o,value:n}=T.gradients(()=>r(e),[e],t);return Nd(o),{grad:o[0],value:n}}}function GK(r){return E(qs(r),()=>\"The f passed in valueAndGrads(f) must be a function\"),(e,t)=>{E(Array.isArray(e)&&e.every(n=>n instanceof mt),()=>\"The args passed in valueAndGrads(f)(args) must be array of tensors\"),E(t==null||t instanceof mt,()=>\"The dy passed in valueAndGrads(f)(args, dy) must be a tensor\");let o=T.gradients(()=>r(...e),e,t);return t!=null&&xt(o.value.shape,t.shape,\"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])\"),Nd(o.grads),o}}function Vw(r,e){E(qs(r),()=>\"The f passed in variableGrads(f) must be a function\"),E(e==null||Array.isArray(e)&&e.every(u=>u instanceof ri),()=>\"The varList passed in variableGrads(f, varList) must be an array of variables\");let t=e!=null;if(!t){e=[];for(let u in T.registeredVariables)e.push(T.registeredVariables[u])}let o=t?e.filter(u=>!u.trainable):null,n=e.length;e=e.filter(u=>u.trainable),E(e.length>0,()=>`variableGrads() expects at least one of the input variables to be trainable, but none of the ${n} variables is trainable.`);let s=!0,{value:a,grads:i}=T.gradients(r,e,null,s);E(i.some(u=>u!=null),()=>\"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().\"),E(a.rank===0,()=>`The f passed in variableGrads(f) must return a scalar, but it returned a rank-${a.rank} tensor`);let p={};return e.forEach((u,c)=>{i[c]!=null&&(p[u.name]=i[c])}),o!=null&&o.forEach(u=>p[u.name]=null),{value:a,grads:p}}function Ir(r){return T.customGrad(r)}function Nd(r){if(r.filter(t=>t==null).length>0)throw new Error(`Cannot compute gradient of y=f(x) with respect to x. Make sure that\n the f you passed encloses all operations that lead from x to y.`)}function HK(r){let t={x:v(r,\"x\",\"neg\")};return T.runKernel(pa,t)}var pr=N({neg_:HK});function KK(r){let t={x:v(r,\"x\",\"softplus\")};return T.runKernel(Cs,t)}var Td=N({softplus_:KK});function qK(r){let e=v(r,\"x\",\"logSigmoid\");return Ir(o=>({value:pr(Td(pr(o))),gradFunc:a=>se(a,Ea(pr(o)))}))(e)}var D2=N({logSigmoid_:qK});function jK(r,e){let t=v(r,\"a\",\"sub\"),o=v(e,\"b\",\"sub\");[t,o]=Oe(t,o);let n={a:t,b:o};return T.runKernel(Ts,n)}var Te=N({sub_:jK});function XK(r,e=-1){let t=v(r,\"logits\",\"logSoftmax\");if(e===-1&&(e=t.rank-1),e!==t.rank-1)throw Error(`Log Softmax along a non-last dimension is not yet supported. Logits was rank ${t.rank} and axis was ${e}`);return Ir((n,s)=>{let i=Ra(n,e,!0),p=Te(n,i),u=Te(Ue(p,\"float32\"),pi(ot(_o(p),e,!0)));return s([u]),{value:u,gradFunc:(l,m)=>{let[d]=m,f=!0,h=_o(d);return Te(l,se(ot(l,e,f),h))}}})(t)}var A2=N({logSoftmax_:XK});function YK(r,e=null,t=!1){let o=v(r,\"x\",\"logSumExp\"),n=_i(e,o.shape),s=Ra(o,n,!0),a=Te(o,s),i=_o(a),p=ot(i,n),u=pi(p),c=Ce(W(s,u.shape),u);if(t){let l=ii(c.shape,n);return W(c,l)}return c}var _d=N({logSumExp_:YK});function QK(r,e){let t=v(r,\"a\",\"logicalAnd\",\"bool\"),o=v(e,\"b\",\"logicalAnd\",\"bool\");rt(t.shape,o.shape);let n={a:t,b:o};return T.runKernel(On,n)}var Uu=N({logicalAnd_:QK});function ZK(r){let t={x:v(r,\"x\",\"logicalNot\",\"bool\")};return T.runKernel(Mn,t)}var Ed=N({logicalNot_:ZK});function JK(r,e){let t=v(r,\"a\",\"logicalOr\",\"bool\"),o=v(e,\"b\",\"logicalOr\",\"bool\");rt(t.shape,o.shape);let n={a:t,b:o};return T.runKernel(Ln,n)}var $d=N({logicalOr_:JK});function eq(r,e){let t=v(r,\"a\",\"logicalXor\",\"bool\"),o=v(e,\"b\",\"logicalXor\",\"bool\");return rt(t.shape,o.shape),Uu($d(r,e),Ed(Uu(r,e)))}var F2=N({logicalXor_:eq});var Rd=2147483648;function tq(r,e,t=\"left\"){let o=v(r,\"sortedSequence\",\"searchSorted\"),n=v(e,\"values\",\"searchSorted\"),s=o.shape[o.shape.length-1],a=n.shape[n.shape.length-1],i=W(o,[-1,s]),p=W(n,[-1,a]);if(i.rank<2)throw new Error(\"Sorted input argument must be at least 2-dimensional\");if(i.shape[0]!==p.shape[0])throw new Error(\"Leading dimension of 'sortedSequence' and 'values' must match.\");if(ze(p.shape)>=Rd)throw new Error(`values tensor size must less than ${Rd}`);if(i.shape[1]>=Rd)throw new Error(`trailing dim_size must less than ${Rd} for int32 output type, was ${i.shape[1]}`);let u={sortedSequence:i,values:p},c={side:t};return T.runKernel(fs,u,c)}var _l=N({searchSorted_:tq});function P2(r,e){return _l(r,e,\"left\")}function rq(r,e,t,o,n){let s=v(r,\"x\",\"maxPool\"),a=1,i=s,p=!1;s.rank===3&&(p=!0,i=W(s,[1,s.shape[0],s.shape[1],s.shape[2]])),E(i.rank===4,()=>`Error in maxPool: input must be rank 4 but got rank ${i.rank}.`),E(gr(t,a),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${t} and dilations '${a}'`),Lt(\"maxPool\",o,n);let u={x:i},c={filterSize:e,strides:t,pad:o,dimRoundingMode:n},l=T.runKernel(Wn,u,c);return p?W(l,[l.shape[1],l.shape[2],l.shape[3]]):l}var Dd=N({maxPool_:rq});function oq(r,e=[1,1,1],t,o,n,s=\"NDHWC\"){let a=v(r,\"x\",\"maxPool3d\"),i=a,p=!1;a.rank===4&&(p=!0,i=W(a,[1,a.shape[0],a.shape[1],a.shape[2],a.shape[3]])),E(i.rank===5,()=>`Error in maxPool3d: x must be rank 5 but got rank ${i.rank}.`),E(s===\"NDHWC\",()=>`Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of ${s}`),Lt(\"maxPool3d\",o,n);let u={x:i},c={filterSize:e,strides:t,pad:o,dimRoundingMode:n,dataFormat:s},l=T.runKernel(ia,u,c);return p?W(l,[l.shape[1],l.shape[2],l.shape[3],l.shape[4]]):l}var O2=N({maxPool3d_:oq});function nq(r,e,t,o,n=!1){let a={x:v(r,\"x\",\"maxPoolWithArgmax\")},i={filterSize:e,strides:t,pad:o,includeBatchInIndex:n},p=T.runKernel(ua,a,i);return{result:p[0],indexes:p[1]}}var M2=N({maxPoolWithArgmax_:nq});function sq(r,e){let t=v(r,\"a\",\"maximum\"),o=v(e,\"b\",\"maximum\");[t,o]=Oe(t,o),t.dtype===\"bool\"&&(t=Ue(t,\"int32\"),o=Ue(o,\"int32\")),rt(t.shape,o.shape);let n={a:t,b:o};return T.runKernel(Vn,n)}var Ad=N({maximum_:sq});function aq(r,e=null,t=!1){let n={x:v(r,\"x\",\"mean\")},s={axis:e,keepDims:t};return T.runKernel(Un,n,s)}var Gu=N({mean_:aq});function Gr(r,e=\"float32\"){if(Ct(r),e===\"complex64\"){let o=Gr(r,\"float32\"),n=Gr(r,\"float32\");return Er(o,n)}let t=Gp(ze(r),e);return T.makeTensor(t,r,e)}function Da(r,e=\"float32\"){if(Ct(r),e===\"complex64\"){let o=Da(r,\"float32\"),n=Gr(r,\"float32\");return Er(o,n)}let t=ml(ze(r),e);return T.makeTensor(t,r,e)}function L2(r,e,{indexing:t=\"xy\"}={}){if(t!==\"xy\"&&t!==\"ij\")throw new TypeError(`${t} is not a valid third argument to meshgrid`);if(r===void 0)return[];let o=v(r,\"x\",\"meshgrid\",r instanceof mt?r.dtype:\"float32\");if(e===void 0)return[o];let n=v(e,\"y\",\"meshgrid\",e instanceof mt?e.dtype:\"float32\"),s=ze(o.shape),a=ze(n.shape);return t===\"xy\"?(o=W(o,[1,-1]),n=W(n,[-1,1]),[Ze(Da([a,1],o.dtype),o),Ze(n,Da([1,s],n.dtype))]):(o=W(o,[-1,1]),n=W(n,[1,-1]),[Ze(o,Da([1,a],o.dtype)),Ze(Da([s,1],n.dtype),n)])}function iq(r,e){let t=v(r,\"a\",\"minimum\"),o=v(e,\"b\",\"minimum\");[t,o]=Oe(t,o),t.dtype===\"bool\"&&(t=Ue(t,\"int32\"),o=Ue(o,\"int32\")),rt(t.shape,o.shape);let n={a:t,b:o};return T.runKernel(Hn,n)}var Hu=N({minimum_:iq});function uq(r,e,t){E(t===\"reflect\"||t===\"symmetric\",()=>`Invalid mode. Mode must be either reflect or symmetric. Got ${t}.`);let o=v(r,\"x\",\"mirrorPad\");if(o.rank===0)throw new Error(\"mirrorPad(scalar) is not defined. Pass non-scalar to mirrorPad\");E(e.length===o.rank,()=>`Padding doesn't match input. Must be ${o.rank}. Got ${e.length}.`);let n=t===\"reflect\"?1:0;for(let i=0;i\"Invalid number of paddings. Must be length of 2 each.\"),E(e[i][0]>=0&&e[i][0]<=o.shape[i]-n&&e[i][1]>=0&&e[i][1]<=o.shape[i]-n,()=>`Padding in dimension ${i} cannot be greater than or equal to ${o.shape[i]-n} or less than 0 for input of shape ${o.shape}`);let s={paddings:e,mode:t},a={x:o};return T.runKernel(Kn,a,s)}var B2=N({mirrorPad_:uq});function pq(r,e){let t=v(r,\"a\",\"mod\"),o=v(e,\"b\",\"mod\");[t,o]=Oe(t,o);let n={a:t,b:o};return T.runKernel(qn,n)}var z2=N({mod_:pq});function cq(r,e=null,t=!1){r=v(r,\"x\",\"moments\");let o=_i(e,r.shape),n=Gu(r,o,t),s=n.shape;t||(s=ii(n.shape,o));let a=Zt(Te(Ue(r,\"float32\"),W(n,s))),i=Gu(a,o,t);return{mean:n,variance:i}}var V2=N({moments_:cq});function lq(r,e,t,o){let n=v(e,\"data\",\"multiRNNCell\"),s=ni(t,\"c\",\"multiRNNCell\"),a=ni(o,\"h\",\"multiRNNCell\"),i=n,p=[];for(let l=0;l2)throw new Error(`Rank of probabilities must be 1 or 2, but is ${a}`);t=t||Math.random();let p={logits:a===1?W(n,[1,-1]):n},u={numSamples:e,seed:t,normalized:o},c=T.runKernel(jn,p,u);return a===1?W(c,[c.size]):c}var U2=N({multinomial_:mq});function dq(r,e){let t=v(r,\"a\",\"notEqual\",\"string_or_numeric\"),o=v(e,\"b\",\"notEqual\",\"string_or_numeric\");[t,o]=Oe(t,o),rt(t.shape,o.shape);let n={a:t,b:o};return T.runKernel(Yn,n)}var Fd=N({notEqual_:dq});function fq(r,e,t=1,o=0,n=\"int32\"){if(e<2)throw new Error(`Error in oneHot: depth must be >=2, but it is ${e}`);let a={indices:v(r,\"indices\",\"oneHot\",\"int32\")},i={dtype:n,depth:e,onValue:t,offValue:o};return T.runKernel(Jn,a,i)}var El=N({oneHot_:fq});function hq(r){let t={x:v(r,\"x\",\"onesLike\")};return T.runKernel(ca,t)}var G2=N({onesLike_:hq});function gq(r,e){let t=v(r,\"v1\",\"outerProduct\"),o=v(e,\"v2\",\"outerProduct\");E(t.rank===1&&o.rank===1,()=>`Error in outerProduct: inputs must be rank 1, but got ranks ${t.rank} and ${o.rank}.`);let n=W(t,[-1,1]),s=W(o,[1,-1]);return Ze(n,s)}var H2=N({outerProduct_:gq});function xq(r,e,t=0){let o=v(r,\"x\",\"pad\");if(o.rank===0)throw new Error(\"pad(scalar) is not defined. Pass non-scalar to pad\");let n={paddings:e,constantValue:t},s={x:o};return T.runKernel(es,s,n)}var Aa=N({pad_:xq});function yq(r,e,t=0){return E(e.length===2,()=>\"Invalid number of paddings. Must be length of 2.\"),Aa(r,[e],t)}var K2=N({pad1d_:yq});function bq(r,e,t=0){return E(e.length===2&&e[0].length===2&&e[1].length===2,()=>\"Invalid number of paddings. Must be length of 2 each.\"),Aa(r,e,t)}var q2=N({pad2d_:bq});function Cq(r,e,t=0){return E(e.length===3&&e[0].length===2&&e[1].length===2&&e[2].length===2,()=>\"Invalid number of paddings. Must be length of 2 each.\"),Aa(r,e,t)}var j2=N({pad3d_:Cq});function wq(r,e,t=0){return E(e.length===4&&e[0].length===2&&e[1].length===2&&e[2].length===2&&e[3].length===2,()=>\"Invalid number of paddings. Must be length of 2 each.\"),Aa(r,e,t)}var X2=N({pad4d_:wq});function Sq(r,e,t){let o=v(r,\"x\",\"spaceToBatchND\");E(o.rank>=1+e.length,()=>`input rank ${o.rank} should be > than [blockShape] ${e.length}`),E(t.length===e.length,()=>`paddings.shape[0] ${t.length} must be equal to [blockShape] ${e.length}`),E(o.shape.reduce((a,i,p)=>p>0&&p<=e.length?a&&(i+t[p-1][0]+t[p-1][1])%e[p-1]===0:a,!0),()=>`input spatial dimensions ${o.shape.slice(1)} with paddings ${t.toString()} must be divisible by blockShapes ${e.toString()}`);let n={x:o},s={blockShape:e,paddings:t};return T.runKernel(ga,n,s)}var Pd=N({spaceToBatchND_:Sq});function Iq(r,e,t,o,n,s,a){n==null&&(n=[1,1]),s==null&&(s=1),o===0&&(o=\"valid\");let i=v(r,\"x\",\"maxPool\"),p=i,u=!1;i.rank===3&&(u=!0,p=W(i,[1,i.shape[0],i.shape[1],i.shape[2]])),E(gr(s,n),()=>`Error in pool: Either strides or dilations must be 1. Got strides ${s} and dilations '${n}'`);let c=Lw(p.shape,e,s,n,o),l=[c.dilationHeight,c.dilationWidth],m;o===\"same\"?m=kq([c.filterHeight,c.filterWidth],l):m=[[0,0],[0,0]];let d=l[0]===1&&l[1]===1,[f,h]=vq([c.inHeight,c.inWidth],l,m),g=d?o:\"valid\",x=d?p:Pd(p,l,f),C=(t===\"avg\"?()=>dd(x,e,s,g,a):()=>Dd(x,e,s,g,a))(),S=d?C:fd(C,l,h);return u?W(S,[S.shape[1],S.shape[2],S.shape[3]]):S}function vq(r,e,t){let o=t.map(c=>c[0]),n=t.map(c=>c[1]),s=r.concat(o,n),a=e.map((c,l)=>(c-s[l]%c)%c),i=n.map((c,l)=>c+a[l]),p=e.map((c,l)=>[o[l],i[l]]),u=e.map((c,l)=>[0,a[l]]);return[p,u]}function kq(r,e){let o=r.map((a,i)=>a+(a-1)*(e[i]-1)).map(a=>a-1),n=o.map(a=>Math.floor(a/2)),s=o.map((a,i)=>a-n[i]);return o.map((a,i)=>[n[i],s[i]])}var Y2=N({pool_:Iq});function Nq(r,e){let t=v(r,\"x\",\"prelu\"),o=v(e,\"alpha\",\"prelu\"),n={x:t,alpha:o};return T.runKernel(rs,n)}var Od=N({prelu_:Nq});function Tq(r,e=null,t=!1){let o=v(r,\"x\",\"prod\");o.dtype===\"bool\"&&(o=Ue(o,\"int32\"));let n={x:o},s={axis:e,keepDims:t};return T.runKernel(os,n,s)}var Q2=N({prod_:Tq});function _q(r,e,t,o){let n=r.map((c,l)=>v(c,`tensors${l}`,\"raggedGather\",\"int32\")),s=v(e,\"paramsDenseValues\",\"raggedGather\"),a=v(t,\"indices\",\"raggedGather\",\"int32\"),i={paramsNestedSplits:n,paramsDenseValues:s,indices:a},p={outputRaggedRank:o},u=T.runKernel(Hp,i,p);return{outputNestedSplits:u.slice(0,u.length-1),outputDenseValues:u[u.length-1]}}var Z2=N({raggedGather_:_q});function Eq(r,e,t){let o=v(r,\"starts\",\"raggedRange\"),n=v(e,\"limits\",\"raggedRange\",o.dtype),s=v(t,\"deltas\",\"raggedRange\",o.dtype),a={starts:o,limits:n,deltas:s},i=T.runKernel(Kp,a);return{rtNestedSplits:i[0],rtDenseValues:i[1]}}var J2=N({raggedRange_:Eq});function $q(r,e,t,o,n){let s=v(r,\"shape\",\"raggedTensorToTensor\",\"int32\"),a=v(e,\"values\",\"raggedTensorToTensor\"),i=v(t,\"defaultValue\",\"raggedTensorToTensor\",a.dtype),p=o.map((l,m)=>v(l,`tensors${m}`,\"raggedTensorToTensor\",\"int32\")),u={shape:s,values:a,defaultValue:i,rowPartitionTensors:p},c={rowPartitionTypes:n};return T.runKernel(qp,u,c)}var e1=N({raggedTensorToTensor_:$q});function Rq(r,e,t){Ct(r);let o=ze(r),n=null;if(t==null||t===\"float32\")n=new Float32Array(o);else if(t===\"int32\")n=new Int32Array(o);else if(t===\"bool\")n=new Uint8Array(o);else throw new Error(`Unknown data type ${t}`);for(let s=0;sy1,createVideoElement:()=>Gq,encodeStrings:()=>C1,expectArrayBuffersEqual:()=>Uq,expectArraysClose:()=>Bq,expectArraysEqual:()=>Vq,expectNumbersClose:()=>b1,expectPromiseToFail:()=>zq,expectValuesInRange:()=>Wq,play:()=>Hq,testEpsilon:()=>Ld});var Lq=.001,y1=.1;function Bq(r,e,t){return t==null&&(t=Ld()),Xw(r,e,(o,n)=>Yw(o,n,t))}function Ld(){return T.backend.floatPrecision()===32?Lq:y1}function Xw(r,e,t){let o=!0;if((Pt(r)||Pt(e))&&(o=!1),Pt(r)&&Pt(e)&&(o=!0),o){let a=r.constructor.name,i=e.constructor.name;if(a!==i)throw new Error(`Arrays are of different type. Actual: ${a}. Expected: ${i}`)}if(Array.isArray(r)&&Array.isArray(e)){let a=sr(r),i=sr(e);if(!br(a,i))throw new Error(`Arrays have different shapes. Actual: [${a}]. Expected: [${i}]`)}let n=Pt(r)?r:Fs(r),s=Pt(e)?e:Fs(e);if(n.length!==s.length)throw new Error(`Arrays have different lengths actual: ${n.length} vs expected: ${s.length}.\nActual: ${n}.\nExpected: ${s}.`);for(let a=0;ae.fail(),()=>e()),typeof expect!=\"undefined\"&&expect().nothing()}function Vq(r,e){let t=typeof e==\"string\"||typeof e==\"number\"||typeof e==\"boolean\"?[e]:e;return zo(r)||zo(r[0])||zo(e)||zo(e[0])?Xw(r,t,(o,n)=>o==n):Xw(r,e,(o,n)=>Yw(o,n,0))}function b1(r,e,t){if(t==null&&(t=Ld()),!Yw(r,e,t))throw new Error(`Numbers differ: actual === ${r}, expected === ${e}`);typeof expect!=\"undefined\"&&expect().nothing()}function Yw(r,e,t){return!isFinite(r)&&!isFinite(e)?!0:!(isNaN(r)||isNaN(e)||Math.abs(r-e)>t)}function Wq(r,e,t){for(let o=0;ot)throw new Error(`Value out of range:${r[o]} low: ${e}, high: ${t}`)}function Uq(r,e){let t=new Float32Array(r),o=new Float32Array(e);if(t.length!==o.length)throw new Error(`Expected ArrayBuffer to be of length ${o.length}, but it was ${t.length}`);for(let n=0;n{e.addEventListener(\"loadeddata\",o=>t(e)),e.load()})}async function Hq(r){await r.play(),\"requestVideoFrameCallback\"in r&&await new Promise(e=>{r.requestVideoFrameCallback(e)})}var qu=class{constructor(e,t,o,n,s){this.mean=e,this.stdDev=t,this.dtype=o,this.nextVal=NaN,this.truncated=n,this.truncated&&(this.upper=this.mean+this.stdDev*2,this.lower=this.mean-this.stdDev*2);let a=s||Math.random();this.random=Vd.alea(a.toString())}nextValue(){if(!isNaN(this.nextVal)){let n=this.nextVal;return this.nextVal=NaN,n}let e,t,o=!1;for(;!o;){let n,s,a;do n=2*this.random()-1,s=2*this.random()-1,a=n*n+s*s;while(a>=1||a===0);let i=Math.sqrt(-2*Math.log(a)/a);e=this.mean+this.stdDev*n*i,t=this.mean+this.stdDev*s*i,(!this.truncated||this.isValidTruncated(e))&&(o=!0)}return(!this.truncated||this.isValidTruncated(t))&&(this.nextVal=this.convertValue(t)),this.convertValue(e)}convertValue(e){return this.dtype==null||this.dtype===\"float32\"?e:Math.round(e)}isValidTruncated(e){return e<=this.upper&&e>=this.lower}},Bd=class{constructor(e,t,o,n){this.alpha=e,this.beta=1/t,this.dtype=o;let s=n||Math.random();this.randu=Vd.alea(s.toString()),this.randn=new qu(0,1,o,!1,this.randu()),e<1?this.d=e+2/3:this.d=e-1/3,this.c=1/Math.sqrt(9*this.d)}nextValue(){let e,t,o,n,s,a;for(;;){do n=this.randn.nextValue(),a=1+this.c*n;while(a<=0);if(a*=a*a,e=n*n,t=1-.331*e*e,o=.5*e+this.d*(1-a+Math.log(a)),s=this.randu(),sthis.dtype==null||this.dtype===\"float32\",this.min=e,this.range=t-e,this.dtype=o,n==null&&(n=Math.random()),typeof n==\"number\"&&(n=n.toString()),!this.canReturnFloat()&&this.range<=1)throw new Error(`The difference between ${e} - ${t} <= 1 and dtype is not float`);this.random=Vd.alea(n)}convertValue(e){return this.canReturnFloat()?e:Math.round(e)}nextValue(){return this.convertValue(this.min+this.range*this.random())}};function Kq(r,e,t=1,o=\"float32\",n){if(Ct(r),t==null&&(t=1),o==null&&(o=\"float32\"),o!==\"float32\"&&o!==\"int32\")throw new Error(`Unsupported data type ${o}`);let s=new Bd(e,t,o,n),a=me(r,o);for(let i=0;i`Error in reverse1D: x must be rank 1 but got rank ${e.rank}.`),mo(e,0)}var N1=N({reverse1d_:r6});function o6(r,e){let t=v(r,\"x\",\"reverse\");return E(t.rank===2,()=>`Error in reverse2D: x must be rank 2 but got rank ${t.rank}.`),mo(t,e)}var T1=N({reverse2d_:o6});function n6(r,e){let t=v(r,\"x\",\"reverse\");return E(t.rank===3,()=>`Error in reverse3D: x must be rank 3 but got rank ${t.rank}.`),mo(t,e)}var _1=N({reverse3d_:n6});function s6(r,e){let t=v(r,\"x\",\"reverse\");return E(t.rank===4,()=>`Error in reverse4D: x must be rank 4 but got rank ${t.rank}.`),mo(t,e)}var E1=N({reverse4d_:s6});function a6(r){let t={x:v(r,\"x\",\"round\")};return T.runKernel(cs,t)}var Gd=N({round_:a6});function i6(r){let t={x:v(r,\"x\",\"rsqrt\",\"float32\")};return T.runKernel(ls,t)}var $1=N({rsqrt_:i6});function u6(r){let t={x:v(r,\"x\",\"selu\")};return T.runKernel(hs,t)}var R1=N({selu_:u6});function p6(r,e,t,o,n,s=[1,1],a=\"NHWC\"){let i=v(r,\"x\",\"separableConv2d\"),p=v(e,\"depthwiseFilter\",\"separableConv2d\"),u=v(t,\"pointwiseFilter\",\"separableConv2d\"),c=i,l=!1;if(i.rank===3&&(l=!0,c=W(i,[1,i.shape[0],i.shape[1],i.shape[2]])),a===\"NCHW\")throw new Error(\"separableConv2d currently does not support dataFormat NCHW; only NHWC is supported\");E(c.rank===4,()=>`Error in separableConv2d: input must be rank 4, but got rank ${c.rank}.`),E(p.rank===4,()=>`Error in separableConv2d: depthwise filter must be rank 4, but got rank ${p.rank}.`),E(u.rank===4,()=>`Error in separableConv2d: pointwise filter must be rank 4, but got rank ${p.rank}.`),E(u.shape[0]===1,()=>`Error in separableConv2d: the first dimension of pointwise filter must be 1, but got ${u.shape[0]}.`),E(u.shape[1]===1,()=>`Error in separableConv2d: the second dimension of pointwise filter must be 1, but got ${u.shape[1]}.`);let m=p.shape[2],d=p.shape[3];E(u.shape[2]===m*d,()=>`Error in separableConv2d: the third dimension of pointwise filter must be ${m*d}, but got ${u.shape[2]}.`);let f=sc(c,p,o,n,a,s),g=au(f,u,1,\"valid\",a);return l?W(g,[g.shape[1],g.shape[2],g.shape[3]]):g}var D1=N({separableConv2d_:p6});async function c6(r,e){let t=v(r,\"x\",\"setdiff1d\"),o=v(e,\"y\",\"setdiff1d\");E(t.dtype===o.dtype,()=>`x and y should have the same dtype, but got x (${t.dtype}) and y (${o.dtype}).`),E(t.rank===1,()=>`x should be 1D tensor, but got x (${t.shape}).`),E(o.rank===1,()=>`y should be 1D tensor, but got y (${o.shape}).`);let n=await t.data(),s=await o.data(),a=new Set(s),i=0;for(let c=0;c`slice1d expects a rank-1 tensor, but got a rank-${o.rank} tensor`),Xe(o,[e],[t])}var M1=N({slice1d_:f6});function h6(r,e,t){let o=v(r,\"x\",\"slice2d\");return E(o.rank===2,()=>`slice2d expects a rank-2 tensor, but got a rank-${o.rank} tensor`),Xe(o,e,t)}var L1=N({slice2d_:h6});function g6(r,e,t){let o=v(r,\"x\",\"slice3d\");return E(o.rank===3,()=>`slice3d expects a rank-3 tensor, but got a rank-${o.rank} tensor`),Xe(o,e,t)}var B1=N({slice3d_:g6});function x6(r,e,t){let o=v(r,\"x\",\"slice4d\");return E(o.rank===4,()=>`slice4d expects a rank-4 tensor, but got a rank-${o.rank} tensor`),Xe(o,e,t)}var z1=N({slice4d_:x6});function y6(r,e=-1){let t=v(r,\"logits\",\"softmax\",\"float32\");if(e===-1&&(e=t.rank-1),e!==t.rank-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${t.rank} and dim was ${e}`);let o={logits:t},n={dim:e};return T.runKernel(Is,o,n)}var V1=N({softmax_:y6});function b6(r){E(r.dtype===\"complex64\",()=>`The dtype for tf.spectral.fft() must be complex64 but got ${r.dtype}.`);let e={input:r};return T.runKernel(zi,e)}var uc=N({fft_:b6});function C6(r){E(r.dtype===\"complex64\",()=>`The dtype for tf.spectral.ifft() must be complex64 but got ${r.dtype}.`);let e={input:r};return T.runKernel(Vi,e)}var ju=N({ifft_:C6});function w6(r){let e=r.shape[r.shape.length-1],t=r.size/e,o;if(e<=2){let n=W(r,[t,e]);o=ju(n)}else{let n=[t,2*(e-1)],s=W(ci(r),[t,e]),a=W(pu(r),[t,e]),i=mo(Xe(s,[0,1],[t,e-2]),1),p=se(mo(Xe(a,[0,1],[t,e-2]),1),ke(-1)),u=yt([s,i],1),c=yt([a,p],1),l=W(Er(u,c),[n[0],n[1]]);o=ju(l)}if(o=ci(o),r.rank===3&&r.shape[0]!==0){let n=o,s=r.shape[0];o=W(o,[s,o.shape[0]/s,o.shape[1]]),n.dispose()}return o}var Hd=N({irfft_:w6});function S6(r,e,t=0){let n={x:v(r,\"x\",\"split\")},s={numOrSizeSplits:e,axis:t};return T.runKernel(xa,n,s)}var li=N({split_:S6});function I6(r,e){E(r.dtype===\"float32\",()=>`The dtype for rfft() must be real value but got ${r.dtype}`);let t=r.shape[r.shape.length-1],o=r.size/t,n;if(e!=null&&e0),h=r.shape.map(g=>g);h[r.shape.length-1]=e,n=Xe(r,f,h),t=e}else if(e!=null&&e>t){let f=r.shape.map(h=>h);f[r.shape.length-1]=e-t,n=yt([r,Gr(f)],r.shape.length-1),t=e}else n=r;let s=Gt(n),a=W(Er(n,s),[o,t]),i=uc(a),p=Math.floor(t/2)+1,u=ci(i),c=pu(i),l=li(u,[p,t-p],u.shape.length-1),m=li(c,[p,t-p],c.shape.length-1),d=n.shape.slice();return d[n.shape.length-1]=p,W(Er(l[0],m[0]),d)}var pc=N({rfft_:I6});function v6(r,e){let t=v(r,\"a\",\"squaredDifference\"),o=v(e,\"b\",\"squaredDifference\");[t,o]=Oe(t,o),rt(t.shape,o.shape);let n={a:t,b:o},s={};return T.runKernel(ks,n,s)}var Kd=N({squaredDifference_:v6});function k6(r,e){let t=v(r,\"x\",\"squeeze\",\"string_or_numeric\");return W(t,JC(t.shape,e).newShape)}var cc=N({squeeze_:k6});function N6(r,e=0){let t=ni(r,\"tensors\",\"stack\",\"string_or_numeric\");E(t.length>=1,()=>\"Pass at least one tensor to tf.stack\"),t.length>0&&E(e<=t[0].rank,()=>\"Axis must be <= rank of the tensor\");let o=t,n={axis:e};return T.runKernel(la,o,n)}var vr=N({stack_:N6});function T6(r,e=0){let o={x:v(r,\"x\",\"step\")},n={alpha:e};return T.runKernel(wo,o,n)}var qd=N({step_:T6});function _6(r,e,t,o,n=0,s=0,a=0,i=0,p=0){let c={x:v(r,\"x\",\"stridedSlice\",\"string_or_numeric\")},l={begin:e,end:t,strides:o,beginMask:n,endMask:s,ellipsisMask:a,newAxisMask:i,shrinkAxisMask:p};return T.runKernel(Ns,c,l)}var W1=N({stridedSlice_:_6});function E6(r){let t={x:v(r,\"x\",\"tan\",\"float32\")};return T.runKernel(_s,t)}var U1=N({tan_:E6});function Jt(r,e){io(r);let t=sr(r,e);if(t.length!==1)throw new Error(\"tensor1d() requires values to be a flat/TypedArray\");return wr(r,null,t,e)}function mu(r,e,t){if(io(r),e!=null&&e.length!==2)throw new Error(\"tensor2d() requires shape to have two numbers\");let o=sr(r,t);if(o.length!==2&&o.length!==1)throw new Error(\"tensor2d() requires values to be number[][] or flat/TypedArray\");if(o.length===1&&e==null)throw new Error(\"tensor2d() requires shape to be provided when `values` are a flat/TypedArray\");return wr(r,e,o,t)}function jd(r,e,t){if(io(r),e!=null&&e.length!==3)throw new Error(\"tensor3d() requires shape to have three numbers\");let o=sr(r,t);if(o.length!==3&&o.length!==1)throw new Error(\"tensor3d() requires values to be number[][][] or flat/TypedArray\");if(o.length===1&&e==null)throw new Error(\"tensor3d() requires shape to be provided when `values` are a flat array\");return wr(r,e,o,t)}function G1(r,e,t){if(io(r),e!=null&&e.length!==4)throw new Error(\"tensor4d() requires shape to have four numbers\");let o=sr(r,t);if(o.length!==4&&o.length!==1)throw new Error(\"tensor4d() requires values to be number[][][][] or flat/TypedArray\");if(o.length===1&&e==null)throw new Error(\"tensor4d() requires shape to be provided when `values` are a flat array\");return wr(r,e,o,t)}function H1(r,e,t){if(io(r),e!=null&&e.length!==5)throw new Error(\"tensor5d() requires shape to have five numbers\");let o=sr(r,t);if(o.length!==5&&o.length!==1)throw new Error(\"tensor5d() requires values to be number[][][][][] or flat/TypedArray\");if(o.length===1&&e==null)throw new Error(\"tensor5d() requires shape to be provided when `values` are a flat array\");return wr(r,e,o,t)}function K1(r,e,t){if(io(r),e!=null&&e.length!==6)throw new Error(\"tensor6d() requires shape to have six numbers\");let o=sr(r,t);if(o.length!==6&&o.length!==1)throw new Error(\"tensor6d() requires values to be number[][][][][][] or flat/TypedArray\");if(o.length===1&&e==null)throw new Error(\"tensor6d() requires shape to be provided when `values` are a flat array\");return e=e||o,wr(r,e,o,t)}var du={};qe(du,{calculateShapes:()=>q1,validateInput:()=>lc,validateUpdateShape:()=>Qw});function Qw(r,e,t){let o=e.rank>1?e.shape[e.rank-1]:1,n=e.rank>1?e.rank-1:1,s=`Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: ${t.shape}, indices.shape: ${e.shape}, shape: ${r}, sliceDim: ${o}, and batchDim: ${n}.`;if(t.rank1?e.shape[o-1]:1,s=t.length,a=1;for(let l=n;l= 0 but got ${e}`);if(e>n)throw new Error(`'k' passed to topk() must be <= the last dimension (${n}) but got ${e}`);let s={x:o},a={k:e,sorted:t},[i,p]=T.runKernel($s,s,a);return{values:i,indices:p}}var X1=N({topk_:R6});function D6(r,e=0,t=1,o,n){if(Ct(r),o!=null&&o===\"bool\")throw new Error(\"Unsupported data type $ { dtype }\");let s=new qu(e,t,o,!0,n),a=me(r,o);for(let i=0;i0,()=>\"The input tensor must be at least 1D\");let o={x:t},n={axis:e},[s,a]=T.runKernel(Yi,o,n);return{values:s,indices:a}}var Q1=N({unique_:A6});function F6(r,e,t){let o=v(r,\"x\",\"unsortedSegmentSum\"),n=v(e,\"segmentIds\",\"unsortedSegmentSum\",\"int32\");E(Ka(t),()=>\"numSegments must be of dtype int\");let s={x:o,segmentIds:n},a={numSegments:t};return T.runKernel(Qi,s,a)}var Z1=N({unsortedSegmentSum_:F6});function P6(r,e=0){let t=v(r,\"x\",\"unstack\",\"string_or_numeric\");E(e>=-t.shape.length&&e`Axis = ${e} is not in [-${t.shape.length}, ${t.shape.length})`);let o={value:t},n={axis:e};return T.runKernel(wa,o,n)}var fo=N({unstack_:P6});function J1(r,e){return _l(r,e,\"right\")}function eN(r,e=!0,t,o){return T.makeVariable(r,e,t,o)}function Xd(r,e){let t=[];for(let s=0;s0,()=>\"mask cannot be scalar\"),xt(i.slice(s,s+a),n.shape,\"mask's shape must match the first K dimensions of tensor's shape,\");let p=1;for(let h=s;hi).reverse()),E(o.rank===e.length,()=>`Error in transpose: rank of input ${o.rank} must match length of perm ${e}.`),e.forEach(a=>{E(a>=0&&a`All entries in 'perm' must be between 0 and ${o.rank-1} but got ${e}`)}),o.rank<=1)return o.clone();let n={x:o},s={perm:e};return o.dtype===\"complex64\"?De(()=>{let a=ci(o),i=pu(o);return a=T.runKernel(co,{x:a},s),i=T.runKernel(co,{x:i},s),t&&(i=pr(i)),Er(a,i)}):T.runKernel(co,n,s)}var mc=N({transpose_:B6});function z6(r,e,t,o,n=!0){let s=v(r,\"v\",\"movingAverage\"),a=v(e,\"x\",\"movingAverage\"),i=v(t,\"decay\",\"movingAverage\");ww(s,a),E(br(s.shape,a.shape),()=>\"Shape mismatch in v and x\");let p=ke(1),u=Te(p,i),c=se(Te(a,s),u);if(n){E(o!=null,()=>\"When using zeroDebias: true, step is required.\");let l=v(o,\"step\",\"movingAverage\");c=je(c,Te(p,ui(i,l)))}return Ce(s,c)}var V6=N({movingAverage_:z6});function W6(r,e,t){Ct(t);let o=v(r,\"indices\",\"scatterND\",\"int32\"),n=v(e,\"updates\",\"scatterND\");lc(n,o,t);let s={indices:o,updates:n},a={shape:t};return T.runKernel(ms,s,a)}var U6=N({scatterND_:W6});function tN(r,e,t,o){if(r.dtype!==\"int32\")throw new Error(`tf.sparseToDense() expects the indices to be int32 type, but the dtype was ${r.dtype}.`);if(r.rank>2)throw new Error(`sparseIndices should be a scalar, vector, or matrix, but got shape ${r.shape}.`);let n=r.rank>0?r.shape[0]:1,s=r.rank>1?r.shape[1]:1;if(t.length!==s)throw new Error(`outputShape has incorrect number of elements:, ${t.length}, should be: ${s}.`);let a=e.size;if(!(e.rank===0||e.rank===1&&a===n))throw new Error(`sparseValues has incorrect shape ${e.shape}, should be [] or [${n}]`);if(e.dtype!==o.dtype)throw new Error(\"sparseValues.dtype must match defaultValues.dtype\")}function H6(r,e,t,o=0){Ct(t);let n=v(r,\"sparseIndices\",\"sparseToDense\",\"int32\"),s=v(e,\"sparseValues\",\"sparseToDense\",\"string_or_numeric\"),a=v(o,\"defaultValue\",\"sparseToDense\",s.dtype);tN(n,s,t,a);let i={sparseIndices:n,sparseValues:s,defaultValue:a},p={outputShape:t};return T.runKernel(vs,i,p)}var K6=N({sparseToDense_:H6});function q6(r,e){let t=v(e,\"indices\",\"gatherND\",\"int32\"),n={params:v(r,\"x\",\"gatherND\",\"string_or_numeric\"),indices:t};return T.runKernel(vn,n)}var j6=N({gatherND_:q6});function rN(r,e){if(e==null)return r.shape.slice();if(br(r.shape,e))return e;if(r.shape.length===e.length){let t=[];for(let o=0;o`x has to be a floating point tensor since it's going to be scaled, but got a ${n.dtype} tensor instead.`),E(e>=0&&e<1,()=>`rate must be a float in the range [0, 1), but got ${e}.`),e===0)return r instanceof mt?n.clone():n;let s=rN(n,t),a=1-e,i=je(wd(Ce(ic(s,0,1,\"float32\",o),a)),a);return se(n,i)}var Y6=N({dropout_:X6});function Zw(r){return Math.floor(Math.pow(2,Math.ceil(Math.log(r)/Math.log(2))))}function $l(r,e,t){let o=1-r%2,n=new Float32Array(r);for(let s=0;s1,()=>`inTopK() expects the predictions to be of rank 2 or higher, but got ${o.rank}`),E(o.rank-1===n.rank,()=>`predictions rank should be 1 larger than targets rank, but got predictions rank ${o.rank} and targets rank ${n.rank}`),xt(o.shape.slice(0,o.shape.length-1),n.shape,\"predictions's shape should be align with the targets' shape, except the last dimension.\");let s=o.shape[o.shape.length-1];E(t>0&&t<=s,()=>`'k' passed to inTopK() must be > 0 && <= the predictions last dimension (${s}), but got ${t}`);let a=await o.data(),i=await n.data(),[p,u]=[a.length/s,s],c=ew(\"bool\",p);for(let l=0;lg.value-h.value),c[l]=0;for(let h=0;hnN,depthwiseConv2d:()=>iN,matMul:()=>uN});function J6(r,e,t,o,n,s=\"NHWC\",a){let i=r;r.rank===3&&(i=W(r,[1,r.shape[0],r.shape[1],r.shape[2]]));let p=e;p.rank===3&&(p=W(e,[1,e.shape[0],e.shape[1],e.shape[2]])),E(i.rank===4,()=>`Error in conv2dDerFilter: input must be rank 4, but got shape ${i.shape}.`),E(p.rank===4,()=>`Error in conv2dDerFilter: dy must be rank 4, but got shape ${p.shape}.`),E(t.length===4,()=>`Error in conv2dDerFilter: filterShape must be length 4, but got ${t}.`);let u=s===\"NHWC\"?i.shape[3]:i.shape[1],c=s===\"NHWC\"?p.shape[3]:p.shape[1];E(u===t[2],()=>`Error in conv2dDerFilter: depth of input ${u}) must match input depth in filter (${t[2]}.`),E(c===t[3],()=>`Error in conv2dDerFilter: depth of dy (${c}) must match output depth for filter (${t[3]}).`),Lt(\"conv2dDerFilter\",n,a);let l={x:i,dy:p},m={strides:o,pad:n,dataFormat:s,dimRoundingMode:a,filterShape:t};return T.runKernel(Fi,l,m)}var oN=N({conv2DBackpropFilter_:J6});function Xu(r,e,t){if(t==null||t===\"linear\")return r;if(t===\"relu\")return se(r,qd(e));throw new Error(`Cannot compute gradient for fused activation ${t}.`)}function Yu(r,e){let t=e,o=xd(r.shape,e.shape);return o.length>0&&(t=ot(t,o)),W(t,r.shape)}function Qu(r,e,t,o){if(e===\"linear\")return r;if(e===\"relu\")return lu(r);if(e===\"elu\")return bd(r);if(e===\"relu6\")return Ud(r);if(e===\"prelu\")return Od(r,t);if(e===\"leakyrelu\")return vd(r,o);if(e===\"sigmoid\")return Ea(r);throw new Error(`Unknown fused activation ${e}.`)}var Zu=(r,e)=>!(r>0)||e===\"linear\";function ej({x:r,filter:e,strides:t,pad:o,dataFormat:n=\"NHWC\",dilations:s=[1,1],dimRoundingMode:a,bias:i,activation:p=\"linear\",preluActivationWeights:u,leakyreluAlpha:c}){if(p=p||\"linear\",Zu(T.state.gradientDepth,p)===!1){E(n===\"NHWC\",()=>`Error in fused conv2d: got dataFormat of ${n} but only NHWC is currently supported for the case of gradient depth is 0 and the activation is not linear.`);let _=au(r,e,t,o,n,s,a);return i!=null&&(_=Ce(_,i)),Qu(_,p,u,c)}let l=v(r,\"x\",\"conv2d\",\"float32\"),m=v(e,\"filter\",\"conv2d\",\"float32\"),d=l,f=!1;l.rank===3&&(f=!0,d=W(l,[1,l.shape[0],l.shape[1],l.shape[2]])),E(d.rank===4,()=>`Error in fused conv2d: input must be rank 4, but got rank ${d.rank}.`),E(m.rank===4,()=>`Error in fused conv2d: filter must be rank 4, but got rank ${m.rank}.`),Lt(\"fused conv2d\",o,a);let h=n===\"NHWC\"?d.shape[3]:d.shape[1];E(m.shape[2]===h,()=>`Error in conv2d: depth of input (${h}) must match input depth for filter ${m.shape[2]}.`),E(gr(t,s),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${t} and dilations '${s}'`);let g=zu(d.shape,m.shape,t,s,o,a),x;i!=null&&(x=v(i,\"bias\",\"fused conv2d\"),[x]=Oe(x,l),n===\"NHWC\"?rt(g.outShape,x.shape):(E(x.shape.length<=1,()=>`Error in fused conv2d: only supports scalar or 1-D Tensor bias for NCHW format but got the bias of rank-${x.shape.length}.`),E(x.shape.length===0||x.shape[0]===g.outChannels||x.shape[0]===1,()=>`Error in fused conv2d: bias shape (${x.shape}) is not compatible with the number of output channels (${g.outChannels})`)));let b;if(u!=null){let _=u.shape;if(E(_.length<=1||_.length===3,()=>`Error in fused conv2d: only supports scalar, 1-D Tensor or 3-D Tensor PReLU activation weights but got a tensor of rank-${_.length}.`),_.length===1)E(_[0]===1||_[0]===g.outChannels,()=>`Error in fused conv2d: PReLU activation weights (${_}) is not compatible with the number of output channels (${g.outChannels}).`);else if(_.length===3)try{rt(_,g.outShape)}catch($){let R=`Error in fused conv2d: PReLU activation weights (${_}) is not compatible with the output shape of the conv2d (${g.outShape}).`;throw Error(R)}b=v(u,\"prelu weights\",\"fused conv2d\")}let C=(_,$)=>{E(n===\"NHWC\",()=>`Error in gradient of fused conv2D: got dataFormat of ${n} but only NHWC is currently supported.`);let[R,D,P,O]=$,M=Xu(_,P,p);E(Bu(s),()=>`Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${s}'`);let L=gd(D.shape,M,R,t,o),B=oN(D,M,R.shape,t,o),z=[L,B];if(O!=null){let U=Yu(O,M);z.push(U)}return z},S={x:d,filter:m,bias:x,preluActivationWeights:b},k={strides:t,pad:o,dataFormat:n,dilations:s,dimRoundingMode:a,activation:p,leakyreluAlpha:c};return i==null?Ir(($,R,D)=>{let P=T.runKernel(Io,S,k);return D([R,$,P]),f&&(P=W(P,[P.shape[1],P.shape[2],P.shape[3]])),{value:P,gradFunc:C}})(d,m):Ir(($,R,D,P)=>{let O=T.runKernel(Io,S,k);return P([R,$,O,D]),f&&(O=W(O,[O.shape[1],O.shape[2],O.shape[3]])),{value:O,gradFunc:C}})(d,m,x)}var nN=N({fusedConv2d_:ej});function tj(r,e,t,o,n,s=[1,1],a){let i=r;r.rank===3&&(i=W(r,[1,r.shape[0],r.shape[1],r.shape[2]]));let p=e;p.rank===3&&(p=W(e,[1,e.shape[0],e.shape[1],e.shape[2]]));let u={x:i,dy:p},c={strides:o,pad:n,dimRoundingMode:a,dilations:s,filterShape:t};return T.runKernel(Pi,u,c)}var sN=N({depthwiseConv2dNativeBackpropFilter_:tj});function rj(r,e,t,o,n,s=[1,1],a){let i=e,p=!1;e.rank===3&&(p=!0,i=W(e,[1,e.shape[0],e.shape[1],e.shape[2]]));let u={dy:i,filter:t},c={strides:o,pad:n,dimRoundingMode:a,dilations:s,inputShape:r},l=T.runKernel(Oi,u,c);return p?W(l,[l.shape[1],l.shape[2],l.shape[3]]):l}var aN=N({depthwiseConv2dNativeBackpropInput_:rj});function oj({x:r,filter:e,strides:t,pad:o,dataFormat:n=\"NHWC\",dilations:s=[1,1],dimRoundingMode:a,bias:i,activation:p=\"linear\",preluActivationWeights:u,leakyreluAlpha:c}){if(Zu(T.state.gradientDepth,p)===!1){let k=sc(r,e,t,o,n,s,a);return i!=null&&(k=Ce(k,i)),Qu(k,p,u,c)}let l=v(r,\"x\",\"depthwiseConv2d\",\"float32\"),m=v(e,\"filter\",\"depthwiseConv2d\",\"float32\"),d=l,f=!1;l.rank===3&&(f=!0,d=W(l,[1,l.shape[0],l.shape[1],l.shape[2]])),E(d.rank===4,()=>`Error in fused depthwiseConv2d: input must be rank 4, but got rank ${d.rank}.`),E(m.rank===4,()=>`Error in fused depthwiseConv2d: filter must be rank 4, but got rank ${m.rank}.`),E(d.shape[3]===m.shape[2],()=>`Error in fused depthwiseConv2d: number of input channels (${d.shape[3]}) must match the inChannels dimension in filter ${m.shape[2]}.`),s==null&&(s=[1,1]),E(gr(t,s),()=>`Error in fused depthwiseConv2d: Either strides or dilations must be 1. Got strides ${t} and dilations '${s}'`),Lt(\"fused depthwiseConv2d\",o,a);let h=zu(d.shape,m.shape,t,s,o,a,!0),g;i!=null&&(g=v(i,\"bias\",\"fused conv2d\"),[g]=Oe(g,l),rt(h.outShape,g.shape));let x;u!=null&&(x=v(u,\"prelu weights\",\"fused depthwiseConv2d\"));let b=(k,_)=>{E(Bu(s),()=>`Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '${s}'`);let[$,R,D,P]=_,O=Xu(k,D,p),M=aN(R.shape,O,$,t,o,s,a),L=sN(R,O,$.shape,t,o,s,a);if(P!=null){let B=Yu(g,O);return[M,L,B]}return[M,L]},C={x:d,filter:m,bias:g,preluActivationWeights:x},S={strides:t,pad:o,dataFormat:n,dilations:s,dimRoundingMode:a,activation:p,leakyreluAlpha:c};return i==null?Ir((_,$,R)=>{let D=T.runKernel(vo,C,S);return R([$,_,D]),f&&(D=W(D,[D.shape[1],D.shape[2],D.shape[3]])),{value:D,gradFunc:b}})(d,m):Ir((_,$,R,D)=>{let P=T.runKernel(vo,C,S);return D([$,_,P,R]),f&&(P=W(P,[P.shape[1],P.shape[2],P.shape[3]])),{value:P,gradFunc:b}})(d,m,g)}var iN=N({fusedDepthwiseConv2d_:oj});function nj({a:r,b:e,transposeA:t=!1,transposeB:o=!1,bias:n,activation:s=\"linear\",preluActivationWeights:a,leakyreluAlpha:i=.2}){if(Zu(T.state.gradientDepth,s)===!1){let O=Ze(r,e,t,o);return n!=null&&(O=Ce(O,n)),Qu(O,s,a,i)}let p=v(r,\"a\",\"fused matMul\"),u=v(e,\"b\",\"fused matMul\");[p,u]=Oe(p,u);let c=t?p.shape[p.rank-2]:p.shape[p.rank-1],l=o?u.shape[u.rank-1]:u.shape[u.rank-2],m=t?p.shape[p.rank-1]:p.shape[p.rank-2],d=o?u.shape[u.rank-2]:u.shape[u.rank-1],f=p.shape.slice(0,-2),h=u.shape.slice(0,-2),g=ze(f),x=ze(h);E(c===l,()=>`Error in fused matMul: inner shapes (${c}) and (${l}) of Tensors with shapes ${p.shape} and ${u.shape} and transposeA=${t} and transposeB=${o} must match.`);let C=rt(p.shape.slice(0,-2),u.shape.slice(0,-2)).concat([m,d]),S=t?W(p,[g,c,m]):W(p,[g,m,c]),k=o?W(u,[x,d,l]):W(u,[x,l,d]),_;n!=null&&(_=v(n,\"bias\",\"fused matMul\"),[_]=Oe(_,p),rt(C,_.shape));let $;a!=null&&($=v(a,\"prelu weights\",\"fused matMul\"));let R=(O,M)=>{let[L,B,z,U]=M,j=Xu(W(O,z.shape),z,s),q,Y;if(!t&&!o?(q=Ze(j,B,!1,!0),Y=Ze(L,j,!0,!1)):!t&&o?(q=Ze(j,B,!1,!1),Y=Ze(j,L,!0,!1)):t&&!o?(q=Ze(B,j,!1,!0),Y=Ze(L,j,!1,!1)):(q=Ze(B,j,!0,!0),Y=Ze(j,L,!0,!0)),n!=null){let J=Yu(U,j);return[q,Y,J]}else return[q,Y]},D={a:S,b:k,bias:_,preluActivationWeights:$},P={transposeA:t,transposeB:o,activation:s,leakyreluAlpha:i};return n==null?Ir((M,L,B)=>{let z=T.runKernel(So,D,P);return B([M,L,z]),{value:W(z,C),gradFunc:R}})(S,k):Ir((M,L,B,z)=>{let U=T.runKernel(So,D,P);return z([M,L,U,B]),{value:W(U,C),gradFunc:R}})(S,k,_)}var uN=N({fusedMatMul_:nj});function sj(r){return $l(r,.54,.46)}var pN=N({hammingWindow_:sj});function aj(r){return $l(r,.5,.5)}var Qd=N({hannWindow_:aj});function ij(r,e,t,o=!1,n=0){let s=0,a=[];for(;s+e<=r.size;)a.push(Xe(r,s,e)),s+=t;if(o)for(;s`Error in cropAndResize: image must be rank 4,but got rank ${a.rank}.`),E(i.rank===2&&i.shape[1]===4,()=>`Error in cropAndResize: boxes must be have size [${u},4] but had shape ${i.shape}.`),E(p.rank===1&&p.shape[0]===u,()=>`Error in cropAndResize: boxInd must be have size [${u}] but had shape ${i.shape}.`),E(o.length===2,()=>`Error in cropAndResize: cropSize must be of length 2, but got length ${o.length}.`),E(o[0]>=1&&o[1]>=1,()=>`cropSize must be atleast [1,1], but was ${o}`),E(n===\"bilinear\"||n===\"nearest\",()=>`method must be bilinear or nearest, but was ${n}`);let c={image:a,boxes:i,boxInd:p},l={method:n,extrapolationValue:s,cropSize:o};return T.runKernel(cn,c,l)}var lN=N({cropAndResize_:pj});function cj(r){let e=v(r,\"image\",\"flipLeftRight\",\"float32\");E(e.rank===4,()=>`Error in flipLeftRight: image must be rank 4,but got rank ${e.rank}.`);let t={image:e};return T.runKernel(Cn,t,{})}var mN=N({flipLeftRight_:cj});function lj(r){let e=v(r,\"image\",\"grayscaleToRGB\"),t=e.rank-1,o=e.shape[t];E(e.rank>=2,()=>`Error in grayscaleToRGB: images must be at least rank 2, but got rank ${e.rank}.`),E(o===1,()=>`Error in grayscaleToRGB: last dimension of a grayscale image should be size 1, but got size ${o}.`);let n=new Array(e.rank);return n.fill(1,0,t),n[t]=3,uu(e,n)}var dN=N({grayscaleToRGB_:lj});function mj(r){let e=v(r,\"image\",\"RGBToGrayscale\"),t=e.rank-1,o=e.shape[t];E(e.rank>=2,()=>`Error in RGBToGrayscale: images must be at least rank 2, but got rank ${e.rank}.`),E(o===3,()=>`Error in RGBToGrayscale: last dimension of an RGB image should be size 3, but got size ${o}.`);let n=e.dtype,s=Ue(e,\"float32\"),a=Jt([.2989,.587,.114]),i;switch(e.rank){case 2:i=iu(\"ij,j->i\",s,a);break;case 3:i=iu(\"ijk,k->ij\",s,a);break;case 4:i=iu(\"ijkl,l->ijk\",s,a);break;case 5:i=iu(\"ijklm,m->ijkl\",s,a);break;case 6:i=iu(\"ijklmn,n->ijklm\",s,a);break;default:throw new Error(\"Not a valid tensor rank.\")}return i=Ms(i,-1),Ue(i,n)}var fN=N({rgbToGrayscale_:mj});function dj(r,e,t=0,o=.5){let n=v(r,\"image\",\"rotateWithOffset\",\"float32\");E(n.rank===4,()=>`Error in rotateWithOffset: image must be rank 4,but got rank ${n.rank}.`);let s={image:n},a={radians:e,fillValue:t,center:o};return T.runKernel(Ds,s,a)}var hN=N({rotateWithOffset_:dj});function Eo(r,e,t,o,n,s){o==null&&(o=.5),n==null&&(n=Number.NEGATIVE_INFINITY),s==null&&(s=0);let a=r.shape[0];return t=Math.min(t,a),E(0<=o&&o<=1,()=>`iouThreshold must be in [0, 1], but was '${o}'`),E(r.rank===2,()=>`boxes must be a 2D tensor, but was of rank '${r.rank}'`),E(r.shape[1]===4,()=>`boxes must have 4 columns, but 2nd dimension was ${r.shape[1]}`),E(e.rank===1,()=>\"scores must be a 1D tensor\"),E(e.shape[0]===a,()=>`scores has incompatible shape with boxes. Expected ${a}, but was ${e.shape[0]}`),E(0<=s&&s<=1,()=>`softNmsSigma must be in [0, 1], but was '${s}'`),{maxOutputSize:t,iouThreshold:o,scoreThreshold:n,softNmsSigma:s}}function fj(r,e,t,o=.5,n=Number.NEGATIVE_INFINITY){let s=v(r,\"boxes\",\"nonMaxSuppression\",\"float32\"),a=v(e,\"scores\",\"nonMaxSuppression\",\"float32\"),i=Eo(s,a,t,o,n);t=i.maxOutputSize,o=i.iouThreshold,n=i.scoreThreshold;let p={maxOutputSize:t,iouThreshold:o,scoreThreshold:n};return T.runKernel(Qn,{boxes:s,scores:a},p)}var gN=N({nonMaxSuppression_:fj});function xN(r,e,t){let o=hj(r,e,t),n=o<0?-(o+1):o;r.splice(n,0,e)}function hj(r,e,t){return xj(r,e,t||gj)}function gj(r,e){return r>e?1:r>>1);let i=t(e,r[s]);i>0?o=s+1:(n=s,a=!i)}return a?o:-o-1}function Jd(r,e,t,o,n){return eS(r,e,t,o,n,0)}function ef(r,e,t,o,n,s){return eS(r,e,t,o,n,0,!1,s,!0)}function tf(r,e,t,o,n,s){return eS(r,e,t,o,n,s,!0)}function eS(r,e,t,o,n,s,a=!1,i=!1,p=!1){let u=[];for(let g=0;gn&&u.push({score:e[g],boxIndex:g,suppressBeginIndex:0});u.sort(yN);let c=s>0?-.5/s:0,l=[],m=[];for(;l.length0;){let g=u.pop(),{score:x,boxIndex:b,suppressBeginIndex:C}=g;if(x=C;--k){let _=yj(r,b,l[k]);if(_>=o){S=!0;break}if(g.score=g.score*bj(o,c,_),g.score<=n)break}g.suppressBeginIndex=l.length,S||(g.score===x?(l.push(b),m.push(g.score)):g.score>n&&xN(u,g,yN))}let d=l.length,f=t-d;i&&f>0&&(l.push(...new Array(f).fill(0)),m.push(...new Array(f).fill(0)));let h={selectedIndices:l};return a&&(h.selectedScores=m),p&&(h.validOutputs=d),h}function yj(r,e,t){let o=r.subarray(e*4,e*4+4),n=r.subarray(t*4,t*4+4),s=Math.min(o[0],o[2]),a=Math.min(o[1],o[3]),i=Math.max(o[0],o[2]),p=Math.max(o[1],o[3]),u=Math.min(n[0],n[2]),c=Math.min(n[1],n[3]),l=Math.max(n[0],n[2]),m=Math.max(n[1],n[3]),d=(i-s)*(p-a),f=(l-u)*(m-c);if(d<=0||f<=0)return 0;let h=Math.max(s,u),g=Math.max(a,c),x=Math.min(i,l),b=Math.min(p,m),C=Math.max(x-h,0)*Math.max(b-g,0);return C/(d+f-C)}function bj(r,e,t){let o=Math.exp(e*t*t);return t<=r?o:0}function yN(r,e){return r.score-e.score||r.score===e.score&&e.boxIndex-r.boxIndex}async function Cj(r,e,t,o=.5,n=Number.NEGATIVE_INFINITY){let s=v(r,\"boxes\",\"nonMaxSuppressionAsync\"),a=v(e,\"scores\",\"nonMaxSuppressionAsync\"),i=Eo(s,a,t,o,n);t=i.maxOutputSize,o=i.iouThreshold,n=i.scoreThreshold;let p=await Promise.all([s.data(),a.data()]),u=p[0],c=p[1],{selectedIndices:l}=Jd(u,c,t,o,n);return s!==r&&s.dispose(),a!==e&&a.dispose(),Jt(l,\"int32\")}var bN=Cj;function wj(r,e,t,o=.5,n=Number.NEGATIVE_INFINITY,s=0){let a=v(r,\"boxes\",\"nonMaxSuppression\"),i=v(e,\"scores\",\"nonMaxSuppression\"),p=Eo(a,i,t,o,n,s);t=p.maxOutputSize,o=p.iouThreshold,n=p.scoreThreshold,s=p.softNmsSigma;let u={boxes:a,scores:i},c={maxOutputSize:t,iouThreshold:o,scoreThreshold:n,softNmsSigma:s},l=T.runKernel(Zn,u,c);return{selectedIndices:l[0],selectedScores:l[1]}}var CN=N({nonMaxSuppressionWithScore_:wj});async function Sj(r,e,t,o=.5,n=Number.NEGATIVE_INFINITY,s=0){let a=v(r,\"boxes\",\"nonMaxSuppressionAsync\"),i=v(e,\"scores\",\"nonMaxSuppressionAsync\"),p=Eo(a,i,t,o,n,s);t=p.maxOutputSize,o=p.iouThreshold,n=p.scoreThreshold,s=p.softNmsSigma;let u=await Promise.all([a.data(),i.data()]),c=u[0],l=u[1],{selectedIndices:m,selectedScores:d}=tf(c,l,t,o,n,s);return a!==r&&a.dispose(),i!==e&&i.dispose(),{selectedIndices:Jt(m,\"int32\"),selectedScores:Jt(d)}}var wN=Sj;function Ij(r,e,t,o=.5,n=Number.NEGATIVE_INFINITY,s=!1){let a=v(r,\"boxes\",\"nonMaxSuppression\"),i=v(e,\"scores\",\"nonMaxSuppression\"),p=Eo(a,i,t,o,n,null),u=p.maxOutputSize,c=p.iouThreshold,l=p.scoreThreshold,m={boxes:a,scores:i},d={maxOutputSize:u,iouThreshold:c,scoreThreshold:l,padToMaxOutputSize:s},f=T.runKernel(Qa,m,d);return{selectedIndices:f[0],validOutputs:f[1]}}var SN=N({nonMaxSuppressionPadded_:Ij});async function vj(r,e,t,o=.5,n=Number.NEGATIVE_INFINITY,s=!1){let a=v(r,\"boxes\",\"nonMaxSuppressionAsync\"),i=v(e,\"scores\",\"nonMaxSuppressionAsync\"),p=Eo(a,i,t,o,n,null),u=p.maxOutputSize,c=p.iouThreshold,l=p.scoreThreshold,[m,d]=await Promise.all([a.data(),i.data()]),{selectedIndices:f,validOutputs:h}=ef(m,d,u,c,l,s);return a!==r&&a.dispose(),i!==e&&i.dispose(),{selectedIndices:Jt(f,\"int32\"),validOutputs:ke(h,\"int32\")}}var IN=vj;function kj(r,e,t=!1,o=!1){let n=v(r,\"images\",\"resizeBilinear\");E(n.rank===3||n.rank===4,()=>`Error in resizeBilinear: x must be rank 3 or 4, but got rank ${n.rank}.`),E(e.length===2,()=>`Error in resizeBilinear: new shape must 2D, but got shape ${e}.`),E(o===!1||t===!1,()=>\"Error in resizeBilinear: If halfPixelCenters is true, alignCorners must be false.\");let s=n,a=!1;n.rank===3&&(a=!0,s=W(n,[1,n.shape[0],n.shape[1],n.shape[2]]));let[]=e,i={images:s},p={alignCorners:t,halfPixelCenters:o,size:e},u=T.runKernel(is,i,p);return a?W(u,[u.shape[1],u.shape[2],u.shape[3]]):u}var vN=N({resizeBilinear_:kj});function Nj(r,e,t=!1,o=!1){let n=v(r,\"images\",\"resizeNearestNeighbor\");E(n.rank===3||n.rank===4,()=>`Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank ${n.rank}.`),E(e.length===2,()=>`Error in resizeNearestNeighbor: new shape must 2D, but got shape ${e}.`),E(n.dtype===\"float32\"||n.dtype===\"int32\",()=>\"`images` must have `int32` or `float32` as dtype\"),E(o===!1||t===!1,()=>\"Error in resizeNearestNeighbor: If halfPixelCenters is true, alignCorners must be false.\");let s=n,a=!1;n.rank===3&&(a=!0,s=W(n,[1,n.shape[0],n.shape[1],n.shape[2]]));let[]=e,i={images:s},p={alignCorners:t,halfPixelCenters:o,size:e},u=T.runKernel(as,i,p);return a?W(u,[u.shape[1],u.shape[2],u.shape[3]]):u}var kN=N({resizeNearestNeighbor_:Nj});function Tj(r,e=\"binary\",t=!1,o=.5){let n=v(r,\"image\",\"threshold\"),s=.2989,a=.587,i=.114,p=n.shape[0]*n.shape[1],u=se(Jt([o]),255),c,l,m,d;if(E(n.rank===3,()=>`Error in threshold: image must be rank 3,but got rank ${n.rank}.`),E(n.shape[2]===3||n.shape[2]===1,()=>`Error in threshold: image color channel must be equal to 3 or 1but got ${n.shape[2]}.`),E(n.dtype===\"int32\"||n.dtype===\"float32\",()=>`Error in dtype: image dtype must be int32 or float32,but got dtype ${n.dtype}.`),E(e===\"otsu\"||e===\"binary\",()=>`Method must be binary or otsu, but was ${e}`),n.shape[2]===3){[c,l,m]=li(n,[1,1,1],-1);let g=se(c,s),x=se(l,a),b=se(m,i);d=Ce(Ce(g,x),b)}else d=r;if(e===\"otsu\"){let g=hd(Ue(Gd(d),\"int32\"),ar([]),256);u=_j(g,p)}let f=t?ac(d,u):Wu(d,u);return Ue(se(f,255),\"int32\")}function _j(r,e){let t=Jt([-1]),o=Jt([0]),n=Jt([0]),s,a,i,p,u,c;for(let l=0;l`Error in transform: image must be rank 4,but got rank ${a.rank}.`),E(i.rank===2&&(i.shape[0]===a.shape[0]||i.shape[0]===1)&&i.shape[1]===8,()=>\"Error in transform: Input transform should be batch x 8 or 1 x 8\"),E(s==null||s.length===2,()=>`Error in transform: outputShape must be [height, width] or null, but got ${s}.`);let p={image:a,transforms:i},u={interpolation:t,fillMode:o,fillValue:n,outputShape:s};return T.runKernel(Rs,p,u)}var TN=N({transform_:Ej});function $j(r,e,t){let o=v(r,\"a\",\"bandPart\");E(o.rank>=2,()=>`bandPart(): Rank must be at least 2, got ${o.rank}.`);let n=o.shape,[s,a]=o.shape.slice(-2),i,p;typeof e==\"number\"?(E(e%1===0,()=>`bandPart(): numLower must be an integer, got ${e}.`),E(e<=s,()=>`bandPart(): numLower (${e}) must not be greater than the number of rows (${s}).`),i=v(e<0?s:e,\"numLower\",\"bandPart\")):(E(e.dtype===\"int32\",()=>\"bandPart(): numLower's dtype must be an int32.\"),i=lo(Tl(e,0),s,Hu(e,s))),typeof t==\"number\"?(E(t%1===0,()=>`bandPart(): numUpper must be an integer, got ${t}.`),E(t<=a,()=>`bandPart(): numUpper (${t}) must not be greater than the number of columns (${a}).`),p=v(t<0?a:t,\"numUpper\",\"bandPart\")):(E(t.dtype===\"int32\",()=>\"bandPart(): numUpper's dtype must be an int32.\"),p=lo(Tl(t,0),a,Hu(t,a)));let u=W(cu(0,s,1,\"int32\"),[-1,1]),c=cu(0,a,1,\"int32\"),l=Te(u,c),m=Uu(ac(l,i),Id(l,pr(p))),d=Gr([s,a],o.dtype);return W(vr(fo(W(o,[-1,s,a])).map(f=>lo(m,f,d))),n)}var _N=N({bandPart_:$j});function Rj(r){let e;if(Array.isArray(r)){e=!1,E(r!=null&&r.length>0,()=>\"Gram-Schmidt process: input must not be null, undefined, or empty\");let n=r[0].shape[0];for(let s=1;s`Gram-Schmidt: Non-unique lengths found in the input vectors: (${r[s].shape[0]} vs. ${n})`)}else e=!0,r=li(r,r.shape[0],0).map(n=>cc(n,[0]));E(r.length<=r[0].shape[0],()=>`Gram-Schmidt: Number of vectors (${r.length}) exceeds number of dimensions (${r[0].shape[0]}).`);let t=[],o=r;for(let n=0;n{let s=o[n];if(n>0)for(let a=0;a=2,()=>`qr() requires input tensor to have a rank >= 2, but got rank ${r.rank}`),r.rank===2)return $N(r,e);{let t=r.shape.slice(0,r.shape.length-2).reduce((p,u)=>p*u),o=fo(W(r,[t,r.shape[r.shape.length-2],r.shape[r.shape.length-1]]),0),n=[],s=[];o.forEach(p=>{let[u,c]=$N(p,e);n.push(u),s.push(c)});let a=W(vr(n,0),r.shape),i=W(vr(s,0),r.shape);return[a,i]}}function $N(r,e=!1){return T.tidy(()=>{E(r.shape.length===2,()=>`qr2d() requires a 2D Tensor, but got a ${r.shape.length}D Tensor.`);let t=r.shape[0],o=r.shape[1],n=Cd(t),s=Ur(r),a=mu([[1]],[1,1]),i=Ur(a),p=t>=o?o:t;for(let u=0;u{let d=Xe(s,[u,u],[t-u,1]),f=Vu(d),h=Xe(s,[u,u],[1,1]),g=lo(Wu(h,0),mu([[-1]]),mu([[1]])),x=Te(h,se(g,f)),b=je(d,x);b.shape[0]===1?i=Ur(a):i=yt([a,Xe(b,[1,0],[b.shape[0]-1,b.shape[1]])],0);let C=pr(je(Ze(g,x),f)),S=Xe(s,[u,0],[t-u,o]),k=se(C,i),_=mc(i);if(u===0)s=Te(S,Ze(k,Ze(_,S)));else{let D=Te(S,Ze(k,Ze(_,S)));s=yt([Xe(s,[0,0],[u,o]),D],0)}let $=mc(k),R=Xe(n,[0,u],[t,n.shape[1]-u]);if(u===0)n=Te(R,Ze(Ze(R,i),$));else{let D=Te(R,Ze(Ze(R,i),$));n=yt([Xe(n,[0,0],[t,u]),D],1)}return[i,s,n]}),Ot([c,l,m])}return!e&&t>o&&(n=Xe(n,[0,0],[t,o]),s=Xe(s,[0,0],[o,o])),[n,s]})}var RN=N({qr_:Dj});var $t;(function(r){r[r.NONE=0]=\"NONE\",r[r.MEAN=1]=\"MEAN\",r[r.SUM=2]=\"SUM\",r[r.SUM_BY_NONZERO_WEIGHTS=3]=\"SUM_BY_NONZERO_WEIGHTS\"})($t||($t={}));function Aj(r,e,t=$t.SUM_BY_NONZERO_WEIGHTS){let o=v(r,\"losses\",\"computeWeightedLoss\"),n=null;e!=null&&(n=v(e,\"weights\",\"computeWeightedLoss\"));let s=n==null?o:se(o,n);if(t===$t.NONE)return s;if(t===$t.SUM)return ot(s);if(t===$t.MEAN){if(n==null)return Gu(s);{let a=o.size/n.size,i=je(ot(s),ot(n));return a>1?je(i,ke(a)):i}}if(t===$t.SUM_BY_NONZERO_WEIGHTS){if(n==null)return je(ot(s),ke(o.size));{let a=se(n,Da(o.shape)),i=Ue(ot(Fd(a,ke(0))),\"float32\");return je(ot(s),i)}}throw Error(`Unknown reduction: ${t}`)}var cr=N({computeWeightedLoss_:Aj});function Fj(r,e,t,o=$t.SUM_BY_NONZERO_WEIGHTS){let n=v(r,\"labels\",\"absoluteDifference\"),s=v(e,\"predictions\",\"absoluteDifference\"),a=null;t!=null&&(a=v(t,\"weights\",\"absoluteDifference\")),xt(n.shape,s.shape,\"Error in absoluteDifference: \");let i=Qt(Te(n,s));return cr(i,a,o)}var DN=N({absoluteDifference_:Fj});function Pj(r,e,t,o,n=$t.SUM_BY_NONZERO_WEIGHTS){let s=v(r,\"labels\",\"cosineDistance\"),a=v(e,\"predictions\",\"cosineDistance\"),i=null;o!=null&&(i=v(o,\"weights\",\"cosineDistance\")),xt(s.shape,a.shape,\"Error in cosineDistance: \");let p=ke(1),u=Te(p,ot(se(s,a),t,!0));return cr(u,i,n)}var AN=N({cosineDistance_:Pj});function Oj(r,e,t,o=$t.SUM_BY_NONZERO_WEIGHTS){let n=v(r,\"labels\",\"hingeLoss\"),s=v(e,\"predictions\",\"hingeLoss\"),a=null;t!=null&&(a=v(t,\"weights\",\"hingeLoss\")),xt(n.shape,s.shape,\"Error in hingeLoss: \");let i=ke(1);n=Te(se(ke(2),n),i);let p=lu(Te(i,se(n,s)));return cr(p,a,o)}var FN=N({hingeLoss_:Oj});function Mj(r,e,t,o=1,n=$t.SUM_BY_NONZERO_WEIGHTS){let s=v(r,\"labels\",\"huberLoss\"),a=v(e,\"predictions\",\"huberLoss\"),i=null;t!=null&&(i=v(t,\"weights\",\"huberLoss\")),xt(s.shape,a.shape,\"Error in huberLoss: \");let p=ke(o),u=Qt(Te(a,s)),c=Hu(u,p),l=Te(u,c),m=Ce(se(ke(.5),Zt(c)),se(p,l));return cr(m,i,n)}var PN=N({huberLoss_:Mj});function Lj(r,e,t,o=1e-7,n=$t.SUM_BY_NONZERO_WEIGHTS){let s=v(r,\"labels\",\"logLoss\"),a=v(e,\"predictions\",\"logLoss\"),i=null;t!=null&&(i=v(t,\"weights\",\"logLoss\")),xt(s.shape,a.shape,\"Error in logLoss: \");let p=ke(1),u=ke(o),c=pr(se(s,pi(Ce(a,u)))),l=se(Te(p,s),pi(Ce(Te(p,a),u))),m=Te(c,l);return cr(m,i,n)}var ON=N({logLoss_:Lj});function Bj(r,e,t,o=$t.SUM_BY_NONZERO_WEIGHTS){let n=v(r,\"labels\",\"meanSquaredError\"),s=v(e,\"predictions\",\"meanSquaredError\"),a=null;t!=null&&(a=v(t,\"weights\",\"meanSquaredError\")),xt(n.shape,s.shape,\"Error in meanSquaredError: \");let i=Kd(n,s);return cr(i,a,o)}var MN=N({meanSquaredError_:Bj});function zj(r,e){let t=v(r,\"labels\",\"sigmoidCrossEntropyWithLogits\"),o=v(e,\"logits\",\"sigmoidCrossEntropyWithLogits\");xt(t.shape,o.shape,\"Error in sigmoidCrossEntropyWithLogits: \");let n=lu(o),s=se(o,t),a=kd(_o(pr(Qt(o))));return Ce(Te(n,s),a)}function Vj(r,e,t,o=0,n=$t.SUM_BY_NONZERO_WEIGHTS){let s=v(r,\"multiClassLabels\",\"sigmoidCrossEntropy\"),a=v(e,\"logits\",\"sigmoidCrossEntropy\"),i=null;if(t!=null&&(i=v(t,\"weights\",\"sigmoidCrossEntropy\")),xt(s.shape,a.shape,\"Error in sigmoidCrossEntropy: \"),o>0){let u=ke(o),c=ke(1),l=ke(.5);s=Ce(se(s,Te(c,u)),se(l,u))}let p=zj(s,a);return cr(p,i,n)}var LN=N({sigmoidCrossEntropy_:Vj});function Wj(r,e,t=-1){if(t===-1&&(t=e.rank-1),t!==e.rank-1)throw Error(`Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank ${e.rank} and dim was ${t}`);return Ir((n,s,a)=>{let p=_d(s,[t],!0),u=Te(Ue(s,\"float32\"),p);a([n,u]);let c=pr(se(u,n));return{value:ot(c,[t]),gradFunc:(d,f)=>{let[h,g]=f,x=ii(d.shape,[t]);return[se(W(d,x),Te(Ue(h,\"float32\"),_o(g))),se(W(d,x),Te(_o(g),Ue(h,\"float32\")))]}}})(r,e)}function Uj(r,e,t,o=0,n=$t.SUM_BY_NONZERO_WEIGHTS){let s=v(r,\"onehotLabels\",\"softmaxCrossEntropy\"),a=v(e,\"logits\",\"softmaxCrossEntropy\"),i=null;if(t!=null&&(i=v(t,\"weights\",\"softmaxCrossEntropy\")),xt(s.shape,a.shape,\"Error in softmaxCrossEntropy: \"),o>0){let u=ke(o),c=ke(1),l=ke(s.shape[1]);s=Ce(se(s,Te(c,u)),je(u,l))}let p=Wj(s,a);return cr(p,i,n)}var BN=N({softmaxCrossEntropy_:Uj});function Gj(r,e,t,o){let n=v(r,\"indices\",\"sparseFillEmptyRows\",\"int32\"),s=v(e,\"values\",\"sparseFillEmptyRows\"),a=v(t,\"denseShape\",\"sparseFillEmptyRows\",\"int32\"),i=v(o,\"defaultValue\",\"sparseFillEmptyRows\",s.dtype);if(n.rank!==2)throw new Error(`Indices should be Tensor2D but received shape\n ${n.shape}`);if(s.rank!==1)throw new Error(`Values should be Tensor1D but received shape ${s.shape}`);if(a.rank!==1)throw new Error(`Dense shape should be Tensor1D but received shape ${a.shape}`);if(i.rank!==0)throw new Error(`Default value should be a scalar but received shape ${i.shape}`);let p={indices:n,values:s,denseShape:a,defaultValue:i},u=T.runKernel(Ki,p);return{outputIndices:u[0],outputValues:u[1],emptyRowIndicator:u[2],reverseIndexMap:u[3]}}var zN=N({sparseFillEmptyRows_:Gj});function Hj(r,e,t){let o=v(r,\"inputIndices\",\"sparseReshape\",\"int32\"),n=v(e,\"inputShape\",\"sparseReshape\",\"int32\"),s=v(t,\"newShape\",\"sparseReshape\",\"int32\");if(o.rank!==2)throw new Error(`Input indices should be Tensor2D but received shape\n ${o.shape}`);if(n.rank!==1)throw new Error(`Input shape should be Tensor1D but received shape ${n.shape}`);if(s.rank!==1)throw new Error(`New shape should be Tensor1D but received shape ${s.shape}`);let a={inputIndices:o,inputShape:n,newShape:s},i=T.runKernel(ei,a);return{outputIndices:i[0],outputShape:i[1]}}var VN=N({sparseReshape_:Hj});function Kj(r,e,t){let o=v(r,\"data\",\"sparseSegmentMean\"),n=v(e,\"indices\",\"sparseSegmentMean\",\"int32\"),s=v(t,\"segmentIds\",\"sparseSegmentMean\",\"int32\");if(o.rank<1)throw new Error(\"Data should be at least 1 dimensional but received scalar\");if(n.rank!==1)throw new Error(`Indices should be Tensor1D but received shape\n ${n.shape}`);if(s.rank!==1)throw new Error(`Segment ids should be Tensor1D but received shape\n ${s.shape}`);let a={data:o,indices:n,segmentIds:s};return T.runKernel(ya,a)}var WN=N({sparseSegmentMean_:Kj});function qj(r,e,t){let o=v(r,\"data\",\"sparseSegmentSum\"),n=v(e,\"indices\",\"sparseSegmentSum\",\"int32\"),s=v(t,\"segmentIds\",\"sparseSegmentSum\",\"int32\");if(o.rank<1)throw new Error(\"Data should be at least 1 dimensional but received scalar\");if(n.rank!==1)throw new Error(`Indices should be Tensor1D but received shape\n ${n.shape}`);if(s.rank!==1)throw new Error(`Segment ids should be Tensor1D but received shape\n ${s.shape}`);let a={data:o,indices:n,segmentIds:s};return T.runKernel(ba,a)}var UN=N({sparseSegmentSum_:qj});function jj(r,e,t,o,n,s,a,i){let p=v(r,\"data\",\"stringNGrams\",\"string\");if(p.dtype!==\"string\")throw new Error(\"Data must be of datatype string\");if(p.shape.length!==1)throw new Error(`Data must be a vector, saw: ${p.shape}`);let u=v(e,\"dataSplits\",\"stringNGrams\");if(u.dtype!==\"int32\")throw new Error(\"Data splits must be of datatype int32\");let c={separator:t,nGramWidths:o,leftPad:n,rightPad:s,padWidth:a,preserveShortSequences:i},l={data:p,dataSplits:u},m=T.runKernel(Ca,l,c);return{nGrams:m[0],nGramsSplits:m[1]}}var GN=N({stringNGrams_:jj});function Xj(r,e,t=!0){let o=v(r,\"input\",\"stringSplit\",\"string\"),n=v(e,\"delimiter\",\"stringSplit\",\"string\");if(o.rank!==1)throw new Error(`Input should be Tensor1D but received shape ${o.shape}`);if(n.rank!==0)throw new Error(`Delimiter should be a scalar but received shape ${n.shape}`);let s={skipEmpty:t},a={input:o,delimiter:n},i=T.runKernel(ji,a,s);return{indices:i[0],values:i[1],shape:i[2]}}var HN=N({stringSplit_:Xj});function Yj(r,e){let t=v(r,\"input\",\"stringToHashBucketFast\",\"string\"),o={numBuckets:e};if(e<=0)throw new Error(\"Number of buckets must be at least 1\");let n={input:t};return T.runKernel(Xi,n,o)}var KN=N({stringToHashBucketFast_:Yj});function Qj(r,e,t,o=!0){let n=v(r,\"input\",\"staticRegexReplace\",\"string\"),s={pattern:e,rewrite:t,replaceGlobal:o};return T.runKernel(Ru,{x:n},s)}var qN=N({staticRegexReplace_:Qj});var Zj={fft:uc,ifft:ju,rfft:pc,irfft:Hd},Jj={hammingWindow:pN,hannWindow:Qd,frame:Zd,stft:cN},eX={flipLeftRight:mN,grayscaleToRGB:dN,resizeNearestNeighbor:kN,resizeBilinear:vN,rgbToGrayscale:fN,rotateWithOffset:hN,cropAndResize:lN,nonMaxSuppression:gN,nonMaxSuppressionAsync:bN,nonMaxSuppressionWithScore:CN,nonMaxSuppressionWithScoreAsync:wN,nonMaxSuppressionPadded:SN,nonMaxSuppressionPaddedAsync:IN,threshold:NN,transform:TN},tX={bandPart:_N,gramSchmidt:EN,qr:RN},rX={absoluteDifference:DN,computeWeightedLoss:cr,cosineDistance:AN,hingeLoss:FN,huberLoss:PN,logLoss:ON,meanSquaredError:MN,sigmoidCrossEntropy:LN,softmaxCrossEntropy:BN},oX={sparseFillEmptyRows:zN,sparseReshape:VN,sparseSegmentMean:WN,sparseSegmentSum:UN},nX={stringNGrams:GN,stringSplit:HN,stringToHashBucketFast:KN,staticRegexReplace:qN};var jN={};qe(jN,{Serializable:()=>Rl,SerializationMap:()=>rf,getRegisteredName:()=>aX,registerClass:()=>rS});var sX=new Map,tS=new Map,Rl=class{getClassName(){return this.constructor.className}static fromConfig(e,t){return new e(t)}},rf=class r{constructor(){this.classNameMap={}}static getMap(){return r.instance==null&&(r.instance=new r),r.instance}static register(e){r.getMap().classNameMap[e.className]=[e,e.fromConfig]}};function rS(r,e,t){E(r.className!=null,()=>\"Class being registered does not have the static className property defined.\"),E(typeof r.className==\"string\",()=>\"className is required to be a string, but got type \"+typeof r.className),E(r.className.length>0,()=>\"Class being registered has an empty-string as its className, which is disallowed.\"),typeof e==\"undefined\"&&(e=\"Custom\"),typeof t==\"undefined\"&&(t=r.className);let o=t,n=e+\">\"+o;return rf.register(r),sX.set(n,r),tS.set(r,n),r}function aX(r){return tS.has(r)?tS.get(r):r.className}var kr=class extends Rl{minimize(e,t=!1,o){let{value:n,grads:s}=this.computeGradients(e,o);if(o!=null){let a=o.map(i=>({name:i.name,tensor:s[i.name]}));this.applyGradients(a)}else this.applyGradients(s);return Ot(s),t?n:(n.dispose(),null)}get iterations(){return this.iterations_==null&&(this.iterations_=0),this.iterations_}incrementIterations(){this.iterations_=this.iterations+1}computeGradients(e,t){return Vw(e,t)}dispose(){this.iterations_!=null&&Ot(this.iterations_)}async saveIterations(){return this.iterations_==null&&(this.iterations_=0),{name:\"iter\",tensor:ke(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(kr,Symbol.hasInstance,{value:r=>r.minimize!=null&&r.computeGradients!=null&&r.applyGradients!=null});var Ju=class extends kr{static get className(){return\"Adadelta\"}constructor(e,t,o=null){super(),this.learningRate=e,this.rho=t,this.epsilon=o,this.accumulatedGrads=[],this.accumulatedUpdates=[],o==null&&(this.epsilon=T.backend.epsilon())}applyGradients(e){(Array.isArray(e)?e.map(o=>o.name):Object.keys(e)).forEach((o,n)=>{let s=T.registeredVariables[o],a=!1;this.accumulatedGrads[n]==null&&(this.accumulatedGrads[n]={originalName:`${o}/accum_grad`,variable:De(()=>Gt(s).variable(a))}),this.accumulatedUpdates[n]==null&&(this.accumulatedUpdates[n]={originalName:`${o}/accum_var`,variable:De(()=>Gt(s).variable(a))});let i=Array.isArray(e)?e[n].tensor:e[o];if(i==null)return;let p=this.accumulatedGrads[n].variable,u=this.accumulatedUpdates[n].variable;De(()=>{let c=Ce(se(p,this.rho),se(Zt(i),1-this.rho)),l=se(je(Rr(Ce(u,this.epsilon)),Rr(Ce(p,this.epsilon))),i),m=Ce(se(u,this.rho),se(Zt(l),1-this.rho));p.assign(c),u.assign(m);let d=Ce(se(l,-this.learningRate),s);s.assign(d)})}),this.incrementIterations()}dispose(){this.accumulatedUpdates!=null&&(Ot(this.accumulatedGrads.map(e=>e.variable)),Ot(this.accumulatedUpdates.map(e=>e.variable)))}async getWeights(){let e=[...this.accumulatedGrads,...this.accumulatedUpdates];return[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=e.length/2,o=!1;this.accumulatedGrads=e.slice(0,t).map(n=>({originalName:n.name,variable:n.tensor.variable(o)})),this.accumulatedUpdates=e.slice(t,t*2).map(n=>({originalName:n.name,variable:n.tensor.variable(o)}))}getConfig(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}}static fromConfig(e,t){return new e(t.learningRate,t.rho,t.epsilon)}};var ep=class extends kr{static get className(){return\"Adagrad\"}constructor(e,t=.1){super(),this.learningRate=e,this.initialAccumulatorValue=t,this.accumulatedGrads=[]}applyGradients(e){(Array.isArray(e)?e.map(o=>o.name):Object.keys(e)).forEach((o,n)=>{let s=T.registeredVariables[o];this.accumulatedGrads[n]==null&&(this.accumulatedGrads[n]={originalName:`${o}/accumulator`,variable:De(()=>$a(s.shape,this.initialAccumulatorValue).variable(!1))});let a=Array.isArray(e)?e[n].tensor:e[o];if(a==null)return;let i=this.accumulatedGrads[n].variable;De(()=>{let p=Ce(i,Zt(a));i.assign(p);let u=Ce(se(je(a,Rr(Ce(p,T.backend.epsilon()))),-this.learningRate),s);s.assign(u)})}),this.incrementIterations()}dispose(){this.accumulatedGrads!=null&&Ot(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);let t=!1;this.accumulatedGrads=e.map(o=>({originalName:o.name,variable:o.tensor.variable(t)}))}getConfig(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}}static fromConfig(e,t){return new e(t.learningRate,t.initialAccumulatorValue)}};var tp=class extends kr{static get className(){return\"Adam\"}constructor(e,t,o,n=null){super(),this.learningRate=e,this.beta1=t,this.beta2=o,this.epsilon=n,this.accumulatedFirstMoment=[],this.accumulatedSecondMoment=[],De(()=>{this.accBeta1=ke(t).variable(),this.accBeta2=ke(o).variable()}),n==null&&(this.epsilon=T.backend.epsilon())}applyGradients(e){let t=Array.isArray(e)?e.map(o=>o.name):Object.keys(e);De(()=>{let o=Te(1,this.accBeta1),n=Te(1,this.accBeta2);t.forEach((s,a)=>{let i=T.registeredVariables[s],p=!1;this.accumulatedFirstMoment[a]==null&&(this.accumulatedFirstMoment[a]={originalName:`${s}/m`,variable:De(()=>Gt(i).variable(p))}),this.accumulatedSecondMoment[a]==null&&(this.accumulatedSecondMoment[a]={originalName:`${s}/v`,variable:De(()=>Gt(i).variable(p))});let u=Array.isArray(e)?e[a].tensor:e[s];if(u==null)return;let c=this.accumulatedFirstMoment[a].variable,l=this.accumulatedSecondMoment[a].variable,m=Ce(se(c,this.beta1),se(u,1-this.beta1)),d=Ce(se(l,this.beta2),se(Zt(u),1-this.beta2)),f=je(m,o),h=je(d,n);c.assign(m),l.assign(d);let g=Ce(se(je(f,Ce(Rr(h),this.epsilon)),-this.learningRate),i);i.assign(g)}),this.accBeta1.assign(se(this.accBeta1,this.beta1)),this.accBeta2.assign(se(this.accBeta2,this.beta2))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.accBeta2.dispose(),this.accumulatedFirstMoment!=null&&Ot(this.accumulatedFirstMoment.map(e=>e.variable)),this.accumulatedSecondMoment!=null&&Ot(this.accumulatedSecondMoment.map(e=>e.variable))}async getWeights(){let e=[...this.accumulatedFirstMoment,...this.accumulatedSecondMoment];return[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e),De(()=>{this.accBeta1.assign(ui(this.beta1,this.iterations_+1)),this.accBeta2.assign(ui(this.beta2,this.iterations_+1))});let t=e.length/2,o=!1;this.accumulatedFirstMoment=e.slice(0,t).map(n=>({originalName:n.name,variable:n.tensor.variable(o)})),this.accumulatedSecondMoment=e.slice(t,t*2).map(n=>({originalName:n.name,variable:n.tensor.variable(o)}))}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)}};var rp=class extends kr{static get className(){return\"Adamax\"}constructor(e,t,o,n=null,s=0){super(),this.learningRate=e,this.beta1=t,this.beta2=o,this.epsilon=n,this.decay=s,this.accumulatedFirstMoment=[],this.accumulatedWeightedInfNorm=[],De(()=>{this.iteration=ke(0).variable(),this.accBeta1=ke(t).variable()}),n==null&&(this.epsilon=T.backend.epsilon())}applyGradients(e){let t=Array.isArray(e)?e.map(o=>o.name):Object.keys(e);De(()=>{let o=Te(1,this.accBeta1),n=je(-this.learningRate,Ce(se(this.iteration,this.decay),1));t.forEach((s,a)=>{let i=T.registeredVariables[s],p=!1;this.accumulatedFirstMoment[a]==null&&(this.accumulatedFirstMoment[a]={originalName:`${s}/m`,variable:Gt(i).variable(p)}),this.accumulatedWeightedInfNorm[a]==null&&(this.accumulatedWeightedInfNorm[a]={originalName:`${s}/v`,variable:Gt(i).variable(p)});let u=Array.isArray(e)?e[a].tensor:e[s];if(u==null)return;let c=this.accumulatedFirstMoment[a].variable,l=this.accumulatedWeightedInfNorm[a].variable,m=Ce(se(c,this.beta1),se(u,1-this.beta1)),d=se(l,this.beta2),f=Qt(u),h=Ad(d,f);c.assign(m),l.assign(h);let g=Ce(se(je(n,o),je(m,Ce(h,this.epsilon))),i);i.assign(g)}),this.iteration.assign(Ce(this.iteration,1)),this.accBeta1.assign(se(this.accBeta1,this.beta1))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.iteration.dispose(),this.accumulatedFirstMoment!=null&&Ot(this.accumulatedFirstMoment.map(e=>e.variable)),this.accumulatedWeightedInfNorm!=null&&Ot(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)}};var mi=class extends kr{static get className(){return\"SGD\"}constructor(e){super(),this.learningRate=e,this.setLearningRate(e)}applyGradients(e){(Array.isArray(e)?e.map(o=>o.name):Object.keys(e)).forEach((o,n)=>{let s=Array.isArray(e)?e[n].tensor:e[o];if(s==null)return;let a=T.registeredVariables[o];De(()=>{let i=Ce(se(this.c,s),a);a.assign(i)})}),this.incrementIterations()}setLearningRate(e){this.learningRate=e,this.c!=null&&this.c.dispose(),this.c=$r(ke(-e))}dispose(){this.c.dispose()}async getWeights(){return[await this.saveIterations()]}async setWeights(e){if(e=await this.extractIterations(e),e.length!==0)throw new Error(\"SGD optimizer does not have settable weights.\")}getConfig(){return{learningRate:this.learningRate}}static fromConfig(e,t){return new e(t.learningRate)}};var op=class extends mi{static get className(){return\"Momentum\"}constructor(e,t,o=!1){super(e),this.learningRate=e,this.momentum=t,this.useNesterov=o,this.accumulations=[],this.m=ke(this.momentum)}applyGradients(e){(Array.isArray(e)?e.map(o=>o.name):Object.keys(e)).forEach((o,n)=>{let s=T.registeredVariables[o];this.accumulations[n]==null&&(this.accumulations[n]={originalName:`${o}/momentum`,variable:De(()=>Gt(s).variable(!1))});let a=this.accumulations[n].variable,i=Array.isArray(e)?e[n].tensor:e[o];i!=null&&De(()=>{let p,u=Ce(se(this.m,a),i);this.useNesterov?p=Ce(se(this.c,Ce(i,se(u,this.m))),s):p=Ce(se(this.c,u),s),a.assign(u),s.assign(p)})}),this.incrementIterations()}dispose(){this.m.dispose(),this.accumulations!=null&&Ot(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);let t=!1;this.accumulations=e.map(o=>({originalName:o.name,variable:o.tensor.variable(t)}))}getConfig(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}}static fromConfig(e,t){return new e(t.learningRate,t.momentum,t.useNesterov)}};var np=class extends kr{static get className(){return\"RMSProp\"}constructor(e,t=.9,o=0,n=null,s=!1){if(super(),this.learningRate=e,this.decay=t,this.momentum=o,this.epsilon=n,this.accumulatedMeanSquares=[],this.accumulatedMoments=[],this.accumulatedMeanGrads=[],this.centered=s,n==null&&(this.epsilon=T.backend.epsilon()),e==null)throw new Error(\"learningRate for RMSPropOptimizer must be defined.\")}applyGradients(e){(Array.isArray(e)?e.map(o=>o.name):Object.keys(e)).forEach((o,n)=>{let s=T.registeredVariables[o],a=!1;this.accumulatedMeanSquares[n]==null&&(this.accumulatedMeanSquares[n]={originalName:`${o}/rms`,variable:De(()=>Gt(s).variable(a))}),this.accumulatedMoments[n]==null&&(this.accumulatedMoments[n]={originalName:`${o}/momentum`,variable:De(()=>Gt(s).variable(a))}),this.accumulatedMeanGrads[n]==null&&this.centered&&(this.accumulatedMeanGrads[n]={originalName:`${o}/mg`,variable:De(()=>Gt(s).variable(a))});let i=Array.isArray(e)?e[n].tensor:e[o];if(i==null)return;let p=this.accumulatedMeanSquares[n].variable,u=this.accumulatedMoments[n].variable;De(()=>{let c=Ce(se(p,this.decay),se(Zt(i),1-this.decay));if(this.centered){let l=this.accumulatedMeanGrads[n].variable,m=Ce(se(l,this.decay),se(i,1-this.decay)),d=je(se(i,this.learningRate),Rr(Te(c,Ce(Zt(m),this.epsilon)))),f=Ce(se(u,this.momentum),d);p.assign(c),l.assign(m),u.assign(f);let h=Te(s,f);s.assign(h)}else{let l=Ce(se(p,this.decay),se(Zt(i),1-this.decay)),m=Ce(se(u,this.momentum),je(se(i,this.learningRate),Rr(Ce(l,this.epsilon))));p.assign(l),u.assign(m);let d=Te(s,m);s.assign(d)}})}),this.incrementIterations()}dispose(){this.accumulatedMeanSquares!=null&&Ot(this.accumulatedMeanSquares.map(e=>e.variable)),this.accumulatedMeanGrads!=null&&this.centered&&Ot(this.accumulatedMeanGrads.map(e=>e.variable)),this.accumulatedMoments!=null&&Ot(this.accumulatedMoments.map(e=>e.variable))}async getWeights(){let e=[...this.accumulatedMeanSquares,...this.accumulatedMoments];return this.centered&&e.push(...this.accumulatedMeanGrads),[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=this.centered?e.length/3:e.length/2,o=!1;this.accumulatedMeanSquares=e.slice(0,t).map(n=>({originalName:n.name,variable:n.tensor.variable(o)})),this.accumulatedMoments=e.slice(t,t*2).map(n=>({originalName:n.name,variable:n.tensor.variable(o)})),this.centered&&(this.accumulatedMeanGrads=e.slice(t*2,t*3).map(n=>({originalName:n.name,variable:n.tensor.variable(o)})))}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)}};var iX=[Ju,ep,tp,rp,op,np,mi];function XN(){for(let r of iX)rS(r)}var di={};qe(di,{CompositeArrayBuffer:()=>ir,browserFiles:()=>QN,browserHTTPRequest:()=>tT,concatenateArrayBuffers:()=>dk,copyModel:()=>Tk,decodeWeights:()=>sd,decodeWeightsStream:()=>ad,encodeWeights:()=>pk,fromMemory:()=>rT,fromMemorySync:()=>uS,getLoadHandlers:()=>xk,getModelArtifactsForJSON:()=>tc,getModelArtifactsForJSONSync:()=>$w,getModelArtifactsInfoForJSON:()=>va,getSaveHandlers:()=>gk,getWeightSpecs:()=>Sl,http:()=>nf,isHTTPScheme:()=>of,listModels:()=>kk,loadWeights:()=>JN,moveModel:()=>_k,registerLoadRouter:()=>hk,registerSaveRouter:()=>fk,removeModel:()=>Nk,weightsLoaderFactory:()=>aS,withSaveHandler:()=>oT,withSaveHandlerSync:()=>nT});var uX=\"model\",pX=\".json\",cX=\".weights.bin\";function YN(r){return new Promise(e=>setTimeout(e)).then(r)}var dc=class r{constructor(e){if(!A().getBool(\"IS_BROWSER\"))throw new Error(\"browserDownloads() cannot proceed because the current environment is not a browser.\");e.startsWith(r.URL_SCHEME)&&(e=e.slice(r.URL_SCHEME.length)),(e==null||e.length===0)&&(e=uX),this.modelJsonFileName=e+pX,this.weightDataFileName=e+cX}async save(e){if(typeof document==\"undefined\")throw new Error(\"Browser downloads are not supported in this environment since `document` is not present\");let t=ir.join(e.weightData),o=window.URL.createObjectURL(new Blob([t],{type:\"application/octet-stream\"}));if(e.modelTopology instanceof ArrayBuffer)throw new Error(\"BrowserDownloads.save() does not support saving model topology in binary formats yet.\");{let n=[{paths:[\"./\"+this.weightDataFileName],weights:e.weightSpecs}],s=id(e,n),a=window.URL.createObjectURL(new Blob([JSON.stringify(s)],{type:\"application/json\"})),i=this.modelJsonAnchor==null?document.createElement(\"a\"):this.modelJsonAnchor;if(i.download=this.modelJsonFileName,i.href=a,await YN(()=>i.dispatchEvent(new MouseEvent(\"click\"))),e.weightData!=null){let p=this.weightDataAnchor==null?document.createElement(\"a\"):this.weightDataAnchor;p.download=this.weightDataFileName,p.href=o,await YN(()=>p.dispatchEvent(new MouseEvent(\"click\")))}return{modelArtifactsInfo:va(e)}}}};dc.URL_SCHEME=\"downloads://\";var oS=class{constructor(e){if(e==null||e.length<1)throw new Error(`When calling browserFiles, at least 1 file is required, but received ${e}`);this.jsonFile=e[0],this.weightsFiles=e.slice(1)}async load(){return new Promise((e,t)=>{let o=new FileReader;o.onload=n=>{let s=JSON.parse(n.target.result),a=s.modelTopology;if(a==null){t(new Error(`modelTopology field is missing from file ${this.jsonFile.name}`));return}if(s.weightsManifest==null){t(new Error(`weightManifest field is missing from file ${this.jsonFile.name}`));return}if(this.weightsFiles.length===0){e({modelTopology:a});return}let p=tc(s,u=>this.loadWeights(u));e(p)},o.onerror=n=>t(`Failed to read model topology and weights manifest JSON from file '${this.jsonFile.name}'. BrowserFiles supports loading Keras-style tf.Model artifacts only.`),o.readAsText(this.jsonFile)})}loadWeights(e){let t=[],o=[];for(let a of e)t.push(...a.weights),o.push(...a.paths);let n=this.checkManifestAndWeightFiles(e),s=o.map(a=>this.loadWeightsFile(a,n[a]));return Promise.all(s).then(a=>[t,a])}loadWeightsFile(e,t){return new Promise((o,n)=>{let s=new FileReader;s.onload=a=>{let i=a.target.result;o(i)},s.onerror=a=>n(`Failed to weights data from file of path '${e}'.`),s.readAsArrayBuffer(t)})}checkManifestAndWeightFiles(e){let t=[],o=this.weightsFiles.map(s=>Ew(s.name)),n={};for(let s of e)s.paths.forEach(a=>{let i=Ew(a);if(t.indexOf(i)!==-1)throw new Error(`Duplicate file basename found in weights manifest: '${i}'`);if(t.push(i),o.indexOf(i)===-1)throw new Error(`Weight file with basename '${i}' is not provided.`);n[a]=this.weightsFiles[o.indexOf(i)]});if(t.length!==this.weightsFiles.length)throw new Error(`Mismatch in the number of files in weights manifest (${t.length}) and the number of weight files provided (${this.weightsFiles.length}).`);return n}},lX=r=>A().getBool(\"IS_BROWSER\")&&!Array.isArray(r)&&r.startsWith(dc.URL_SCHEME)?mX(r.slice(dc.URL_SCHEME.length)):null;qt.registerSaveRouter(lX);function mX(r=\"model\"){return new dc(r)}function QN(r){return new oS(r)}function nS(r,e,t,o){a(r),t=t==null?0:t,o=o==null?1:o,i(t,o);let n=0,s=p=>(p.then(u=>{let c=t+ ++n/r.length*(o-t);return e(c),u}),p);function a(p){E(p!=null&&Array.isArray(p)&&p.length>0,()=>\"promises must be a none empty array\")}function i(p,u){E(p>=0&&p<=1,()=>`Progress fraction must be in range [0, 1], but got startFraction ${p}`),E(u>=0&&u<=1,()=>`Progress fraction must be in range [0, 1], but got endFraction ${u}`),E(u>=p,()=>`startFraction must be no more than endFraction, but got startFraction ${p} and endFraction ${u}`)}return Promise.all(r.map(s))}async function sS(r,e){e==null&&(e={});let t=e.fetchFunc==null?A().platform.fetch:e.fetchFunc,o=r.map(l=>t(l,e.requestInit,{isBinary:!0})),i=(e.onProgress==null?await Promise.all(o):await nS(o,e.onProgress,0,.5)).map(l=>l.arrayBuffer());return e.onProgress==null?await Promise.all(i):await nS(i,e.onProgress,.5,1)}function ZN(r,e){var t;let o=e.fetchFunc==null?A().platform.fetch:e.fetchFunc,n=0,s;return(t=e.onProgress)===null||t===void 0||t.call(e,0),new ReadableStream({pull:async a=>{for(var i;nsS(a,{requestInit:o}))(r,e,t)}function aS(r){return async(e,t=\"\",o)=>{let n=e.map(()=>!1),s={},a=o!=null?o.map(()=>!1):[],i=[];if(e.forEach((d,f)=>{let h=0;d.weights.forEach(g=>{let x=\"quantization\"in g?g.quantization.dtype:g.dtype,b=si[x]*ze(g.shape),C=()=>{n[f]=!0,s[f]==null&&(s[f]=[]),s[f].push({manifestEntry:g,groupOffset:h,sizeBytes:b})};o!=null?o.forEach((S,k)=>{S===g.name&&(C(),a[k]=!0)}):C(),i.push(g.name),h+=b})}),!a.every(d=>d)){let d=o.filter((f,h)=>!a[h]);throw new Error(`Could not find weights in manifest with names: ${d.join(\", \")}. \nManifest JSON has weights with names: ${i.join(\", \")}.`)}let p=n.reduce((d,f,h)=>(f&&d.push(h),d),[]),u=[];p.forEach(d=>{e[d].paths.forEach(f=>{let h=t+(t.endsWith(\"/\")?\"\":\"/\")+f;u.push(h)})});let c=await r(u),l={},m=0;return p.forEach(d=>{let f=e[d].paths.length,h=new ir(c.slice(m,m+f));s[d].forEach(x=>{let b=h.slice(x.groupOffset,x.groupOffset+x.sizeBytes),C=sd(b,[x.manifestEntry]);for(let S in C)l[S]=C[S]}),m+=f}),l}}var dX=\"application/octet-stream\",fX=\"application/json\",Dl=class{constructor(e,t){if(this.DEFAULT_METHOD=\"POST\",t==null&&(t={}),this.weightPathPrefix=t.weightPathPrefix,this.weightUrlConverter=t.weightUrlConverter,t.fetchFunc!=null?(E(typeof t.fetchFunc==\"function\",()=>\"Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)\"),this.fetch=t.fetchFunc):this.fetch=A().platform.fetch,E(e!=null&&e.length>0,()=>\"URL path for http must not be null, undefined or empty.\"),Array.isArray(e)&&E(e.length===2,()=>`URL paths for http must have a length of 2, (actual length is ${e.length}).`),this.path=e,t.requestInit!=null&&t.requestInit.body!=null)throw new Error(\"requestInit is expected to have no pre-existing body, but has one.\");this.requestInit=t.requestInit||{},this.loadOptions=t}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error(\"BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.\");let t=Object.assign({method:this.DEFAULT_METHOD},this.requestInit);t.body=new FormData;let o=[{paths:[\"./model.weights.bin\"],weights:e.weightSpecs}],n=id(e,o);if(t.body.append(\"model.json\",new Blob([JSON.stringify(n)],{type:fX}),\"model.json\"),e.weightData!=null){let a=ir.join(e.weightData);t.body.append(\"model.weights.bin\",new Blob([a],{type:dX}),\"model.weights.bin\")}let s=await this.fetch(this.path,t);if(s.ok)return{modelArtifactsInfo:va(e),responses:[s]};throw new Error(`BrowserHTTPRequest.save() failed due to HTTP response status ${s.status}.`)}async loadModelJSON(){let e=await this.fetch(this.path,this.requestInit);if(!e.ok)throw new Error(`Request to ${this.path} failed with status code ${e.status}. Please verify this URL points to the model JSON of the model to load.`);let t;try{t=await e.json()}catch(s){let a=`Failed to parse model JSON of response from ${this.path}.`;throw this.path.endsWith(\".pb\")?a+=\" 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.\":a+=\" Please make sure the server is serving valid JSON for this request.\",new Error(a)}let o=t.modelTopology,n=t.weightsManifest;if(o==null&&n==null)throw new Error(`The JSON from HTTP path ${this.path} contains neither model topology or manifest for weights.`);return t}async load(){if(this.loadOptions.streamWeights)return this.loadStream();let e=await this.loadModelJSON();return tc(e,t=>this.loadWeights(t))}async loadStream(){let e=await this.loadModelJSON(),t=await this.getWeightUrls(e.weightsManifest),o=Sl(e.weightsManifest),n=()=>ZN(t,this.loadOptions);return Object.assign(Object.assign({},e),{weightSpecs:o,getWeightStream:n})}async getWeightUrls(e){let t=Array.isArray(this.path)?this.path[1]:this.path,[o,n]=hX(t),s=this.weightPathPrefix||o,a=[],i=[];for(let p of e)for(let u of p.paths)this.weightUrlConverter!=null?i.push(this.weightUrlConverter(u)):a.push(s+u+n);return this.weightUrlConverter&&a.push(...await Promise.all(i)),a}async loadWeights(e){let t=await this.getWeightUrls(e),o=Sl(e),n=await sS(t,this.loadOptions);return[o,n]}};Dl.URL_SCHEME_REGEX=/^https?:\\/\\//;function hX(r){let e=r.lastIndexOf(\"/\"),t=r.lastIndexOf(\"?\"),o=r.substring(0,e),n=t>e?r.substring(t):\"\";return[o+\"/\",n]}function of(r){return r.match(Dl.URL_SCHEME_REGEX)!=null}var eT=(r,e)=>{if(typeof fetch==\"undefined\"&&(e==null||e.fetchFunc==null))return null;{let t=!0;if(Array.isArray(r)?t=r.every(o=>of(o)):t=of(r),t)return nf(r,e)}return null};qt.registerSaveRouter(eT);qt.registerLoadRouter(eT);function nf(r,e){return new Dl(r,e)}function tT(r,e){return nf(r,e)}var Al=class{constructor(e){this.modelArtifacts=e}load(){return this.modelArtifacts}},sf=class{constructor(e){this.saveHandler=e}save(e){return this.saveHandler(e)}},iS=class{constructor(e){e.load&&(this.load=()=>Promise.resolve(e.load())),e.save&&(this.save=t=>Promise.resolve(e.save(t)))}};function rT(r,e,t,o){let n=arguments;return new iS(uS(...n))}function uS(r,e,t,o){return arguments.length===1?r.modelTopology!=null||r.weightSpecs!=null?new Al(r):(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 Al({modelTopology:r})):(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 Al({modelTopology:r,weightSpecs:e,weightData:t,trainingConfig:o}))}function oT(r){return new sf(r)}function nT(r){return new sf(r)}var aT={};qe(aT,{confusionMatrix:()=>sT});function gX(r,e,t){let o=v(r,\"labels\",\"confusionMatrix\"),n=v(e,\"predictions\",\"confusionMatrix\");E(t==null||t>0&&Number.isInteger(t),()=>`If provided, numClasses must be a positive integer, but got ${t}`),E(o.rank===1,()=>`Expected the rank of labels to be 1, but got ${o.rank}`),E(n.rank===1,()=>`Expected the rank of predictions to be 1, but got ${n.rank}`),E(o.shape[0]===n.shape[0],()=>`Mismatch in the number of examples: ${o.shape[0]} vs. ${n.shape[0]}. Labels and predictions should have the same number of elements.`),E(t>0&&Number.isInteger(t),()=>`numClasses is required to be a positive integer, but got ${t}`);let s=El(Ue(o,\"int32\"),t),a=El(Ue(n,\"int32\"),t),i=mc(s),p=Ze(i,a);return Ue(p,\"int32\")}var sT=N({confusionMatrix_:gX});var cT={};qe(cT,{draw:()=>vX,fromPixels:()=>kX,fromPixelsAsync:()=>wX,toPixels:()=>IX});var sp,iT=!1;function uT(r,e=3){if(e>4)throw new Error(\"Cannot construct Tensor with more than 4 channels from pixels.\");if(r==null)throw new Error(\"pixels passed to tf.browser.fromPixels() can not be null\");let t=!1,o=!1,n=!1,s=!1,a=!1,i=!1;if(r.data instanceof Uint8Array)t=!0;else if(typeof ImageData!=\"undefined\"&&r instanceof ImageData)o=!0;else if(typeof HTMLVideoElement!=\"undefined\"&&r instanceof HTMLVideoElement)n=!0;else if(typeof HTMLImageElement!=\"undefined\"&&r instanceof HTMLImageElement)s=!0;else if(r.getContext!=null)a=!0;else if(typeof ImageBitmap!=\"undefined\"&&r instanceof ImageBitmap)i=!0;else throw new Error(`pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, but was ${r.constructor.name}`);if(Xp(Du,T.backendName)!=null){let f={pixels:r},h={numChannels:e};return T.runKernel(Du,f,h)}let[u,c]=n?[r.videoWidth,r.videoHeight]:[r.width,r.height],l;if(a)l=r.getContext(\"2d\").getImageData(0,0,u,c).data;else if(o||t)l=r.data;else if(s||n||i){if(sp==null)if(typeof document==\"undefined\")if(typeof OffscreenCanvas!=\"undefined\"&&typeof OffscreenCanvasRenderingContext2D!=\"undefined\")sp=new OffscreenCanvas(1,1).getContext(\"2d\");else throw new Error(\"Cannot parse input in current context. Reason: OffscreenCanvas Context2D rendering is not supported.\");else sp=document.createElement(\"canvas\").getContext(\"2d\",{willReadFrequently:!0});sp.canvas.width=u,sp.canvas.height=c,sp.drawImage(r,0,0,u,c),l=sp.getImageData(0,0,u,c).data}let m;if(e===4)m=new Int32Array(l);else{let f=u*c;m=new Int32Array(f*e);for(let h=0;h4||e===2)throw new Error(`toPixels only supports depth of size 1, 3 or 4 but got ${e}`);if(r.dtype!==\"float32\"&&r.dtype!==\"int32\")throw new Error(`Unsupported type for toPixels: ${r.dtype}. Please use float32 or int32 tensors.`)}function SX(r){let e=(r==null?void 0:r.alpha)||1;if(e>1||e<0)throw new Error(`Alpha value ${e} is suppoed to be in range [0 - 1].`)}async function IX(r,e){let t=v(r,\"img\",\"toPixels\");if(!(r instanceof mt)){let u=t;t=Ue(u,\"int32\"),u.dispose()}pT(t);let[o,n]=t.shape.slice(0,2),s=t.rank===2?1:t.shape[2],a=await t.data(),i=t.dtype===\"float32\"?255:1,p=new Uint8ClampedArray(n*o*4);for(let u=0;u1)throw new Error(`Tensor values for a float32 Tensor must be in the range [0 - 1] but encountered ${d}.`)}else if(t.dtype===\"int32\"&&(d<0||d>255))throw new Error(`Tensor values for a int32 Tensor must be in the range [0 - 255] but encountered ${d}.`);s===1?(c[0]=d*i,c[1]=d*i,c[2]=d*i):c[m]=d*i}let l=u*4;p[l+0]=Math.round(c[0]),p[l+1]=Math.round(c[1]),p[l+2]=Math.round(c[2]),p[l+3]=Math.round(c[3])}if(e!=null){iT||Xp($u,T.backendName)!=null&&(console.warn(\"tf.browser.toPixels is not efficient to draw tensor on canvas. Please try tf.browser.draw instead.\"),iT=!0),e.width=n,e.height=o;let u=e.getContext(\"2d\"),c=new ImageData(p,n,o);u.putImageData(c,0,0)}return t!==r&&t.dispose(),p}function vX(r,e,t){let o=v(r,\"img\",\"draw\");if(!(r instanceof mt)){let a=o;o=Ue(a,\"int32\"),a.dispose()}pT(o),SX(t==null?void 0:t.imageOptions);let n={image:o},s={canvas:e,options:t};T.runKernel($u,n,s)}var kX=N({fromPixels_:uT});var af={};qe(af,{prepareAndValidate:()=>lT});function lT(r,e){let t=r.shape.length,o=e.shape.length;if(t<1)throw new Error(`tf.gatherND() expects the input to be rank 1 or higher, but the rank was ${t}.`);if(o<1)throw new Error(`tf.gatherND() expects the indices to be rank 1 or higher, but the rank was ${o}.`);if(e.dtype!==\"int32\")throw new Error(`tf.gatherND() expects the indices to be int32 type, but the dtype was ${e.dtype}.`);if(e.shape[o-1]>t)throw new Error(`index innermost dimension length must be <= tensor rank; saw: ${e.shape[o-1]} vs. ${t}`);if(ze(r.shape)===0)throw new Error(`Requested more than 0 entries, but input is empty. Input shape: ${r.shape}.`);let n=e.shape,s=n[n.length-1],a=1;for(let l=0;ll/u),1].slice(0,s);return[p,a,u,c]}var pt={};qe(pt,{assertParamsValid:()=>TX,computeFlatOffset:()=>DX,computeOutShape:()=>EX,getNormalizedAxes:()=>$X,isSliceContinous:()=>RX,maskToAxes:()=>_X,parseSliceParams:()=>AX,sliceInfo:()=>FX,startForAxis:()=>bT,startIndicesWithElidedDims:()=>gT,stopForAxis:()=>CT,stopIndicesWithElidedDims:()=>xT,stridesForAxis:()=>yT,stridesWithElidedDims:()=>dT});var pS=-2,NX=-1;function TX(r,e,t){let o=r.shape.length;E(o===e.length,()=>`Error in slice${o}D: Length of begin ${e} must match the rank of the array (${o}).`),E(o===t.length,()=>`Error in slice${o}D: Length of size ${t} must match the rank of the array (${o}).`);for(let n=0;n`Error in slice${o}D: begin[${n}] + size[${n}] (${e[n]+t[n]}) would overflow input.shape[${n}] (${r.shape[n]})`)}function _X(r){let e=[],t=0;for(;r>0;)r&1&&e.push(t),r/=2,t++;return e}function EX(r,e,t){let o=[];for(let n=0;n0){let d=e[0],f=t+1;c=gT(a,d,f,o,r),l=xT(i,d,f,n,r),m=dT(s,d,f,r)}else for(let d=0;d-1)s[i]=0;else{let p=fT(e,t,i),u=o[p];r&1<-1)s[i]=Number.MAX_SAFE_INTEGER;else{let p=fT(e,t,i),u=o[p];r&1<
0?a=Number.MIN_SAFE_INTEGER:a=Number.MAX_SAFE_INTEGER);let p=o[n];return a<0&&(a+=p),a=Vp(0,a,p-1),a}function CT(r,e,t,o,n,s){let a=e[n],i=t[n]||1;(r&1<0?a=Number.MAX_SAFE_INTEGER:a=Number.MIN_SAFE_INTEGER);let p=o[n];return a<0&&(a+=p),i>0?a=Vp(0,a,p):a=Vp(-1,a,p-1),a}function RX(r,e,t){let o=t.length;for(let n=0;n1){o=n;break}for(let n=o+1;n0||t[n]!==r[n])return!1;return!0}function DX(r,e){let t=r.length>0?r[r.length-1]:1;for(let o=0;o{E(a!==-1,()=>\"slice() does not support negative begin indexing.\")});let s;return t==null?s=new Array(n).fill(-1):typeof t==\"number\"?s=[t,...new Array(n-1).fill(-1)]:t.lengtha>=0?a:(E(a===-1,()=>`Negative size values should be exactly -1 but got ${a} for the slice() size at index ${i}.`),r.shape[i]-o[i])),[o,s]}function FX(r,e,t,o,n,s,a,i,p){let u;if(o==null?(u=new Array(e.length),u.fill(1)):u=o,a!=null&&a&a-1)throw new Error(\"Multiple ellipses in slice is not allowed.\");let c=!1,l={dims:u.length,numAddAxisAfterEllipsis:0,begin:e.slice(),end:t.slice(),strides:u.slice(),beginMask:n,endMask:s,ellipsisMask:a,newAxisMask:i,shrinkAxisMask:p};for(let C=0;C0?0:-1,m.strides[C]>0?k:k-1];if(S&&m.strides[C]<=0)throw Error(\"only stride 1 allowed on non-range indexing.\");h=h&&m.strides[C]===1;let R=!!(m.beginMask&1<=k)throw Error(`slice index ${m.begin[C]} of dimension ${C} out of bounds.`)}else m.begin[C]=mT(m.begin[C],0,m.strides[C],k,_,$),m.end[C]=mT(m.end[C],1,m.strides[C],k,_,$);let O=m.strides[C]===1&&m.begin[C]===0&&m.end[C]===k;d=d&&O,f=f&&(C===0&&m.strides[C]===1||O)}else d=d&&m.strides[C]===1&&R,f=f&&(C===0&&m.strides[C]===1||R);let D,P=!1;if(m.beginValid&&m.endValid?(D=m.end[C]-m.begin[C],P=!0):S?(D=1,P=!0):R&&k>=0&&(m.strides[C]<0?D=-k:D=k,P=!0),P){let O;D===0||D<0!=m.strides[C]<0?O=0:O=Math.trunc(D/m.strides[C])+(D%m.strides[C]!==0?1:0),g.push(O)}else g.push(-1)}for(let C=0;C=0?x.push(g[S]):S===pS&&x.push(1)}return{finalShapeSparse:x.filter((C,S)=>m.finalShapeGatherIndices[S]!==pS),finalShape:x,isIdentity:d,sliceDim0:f,isSimpleSlice:h,begin:m.begin,end:m.end,strides:m.strides}}function PX(r,e){e.beginMask=0,e.endMask=0,e.shrinkAxisMask=0;let t=0;e.beginValid=r.begin!=null,e.endValid=r.end!=null,e.begin=new Array(e.dims),e.end=new Array(e.dims),e.strides=new Array(e.dims),e.finalShapeGatherIndices=[],e.finalShapeGatherIndicesSparse=[],e.inputShapeGatherIndicesSparse=new Array(e.dims);for(let o=0;o0?s[e]:s[e+1&1];{let a=r<0?o+r:r;return as[1]?s[1]:a}}var OX=\"4.21.0\";var Fl=class{static sgd(e){return new mi(e)}static momentum(e,t,o=!1){return new op(e,t,o)}static rmsprop(e,t=.9,o=0,n=null,s=!1){return new np(e,t,o,n,s)}static adam(e=.001,t=.9,o=.999,n=null){return new tp(e,t,o,n)}static adadelta(e=.001,t=.95,o=null){return new Ju(e,t,o)}static adamax(e=.002,t=.9,o=.999,n=null,s=0){return new rp(e,t,o,n,s)}static adagrad(e,t=.1){return new ep(e,t)}};var OGe=Fl;var MX=typeof requestAnimationFrame!=\"undefined\"?requestAnimationFrame:typeof setImmediate!=\"undefined\"?setImmediate:r=>r();function cS(){return new Promise(r=>MX(()=>r()))}var w={};qe(w,{ERF_A1:()=>e5,ERF_A2:()=>t5,ERF_A3:()=>r5,ERF_A4:()=>o5,ERF_A5:()=>n5,ERF_P:()=>JX,PARALLELIZE_THRESHOLD:()=>uf,RowPartitionType:()=>Fa,SELU_SCALE:()=>ZX,SELU_SCALEALPHA:()=>QX,applyActivation:()=>Qu,assertAndGetBroadcastShape:()=>rt,assertAxesAreInnerMostDims:()=>pK,assertParamsConsistent:()=>LX,assignToTypedArray:()=>c5,axesAreInnerMostDims:()=>zw,calculateShapes:()=>q1,checkEinsumDimSizes:()=>g5,checkPadOnDimRoundingMode:()=>Lt,combineLocations:()=>I2,combineRaggedTensorToTensorShapes:()=>zX,complexWithEvenIndex:()=>i5,complexWithOddIndex:()=>u5,computeConv2DInfo:()=>zu,computeConv3DInfo:()=>Uk,computeDefaultPad:()=>Bw,computeDilation2DInfo:()=>iH,computeOptimalWindowSize:()=>GX,computeOutAndReduceShapes:()=>uK,computeOutShape:()=>BX,computePool2DInfo:()=>Lw,computePool3DInfo:()=>uH,convertConv2DDataFormat:()=>Gk,decodeEinsumEquation:()=>f5,eitherStridesOrDilationsAreOne:()=>gr,expandShapeToKeepDim:()=>ii,exponent:()=>m5,exponents:()=>l5,fromStringArrayToUint8:()=>M5,fromUint8ToStringArray:()=>O5,getAxesPermutation:()=>cK,getBroadcastDims:()=>y2,getComplexWithIndex:()=>p5,getEinsumComputePath:()=>x5,getEinsumPermutation:()=>h5,getFusedBiasGradient:()=>Yu,getFusedDyActivation:()=>Xu,getImageCenter:()=>HX,getInnerMostAxes:()=>mK,getPermuted:()=>qX,getRaggedRank:()=>WX,getReductionAxes:()=>xd,getReshaped:()=>KX,getReshapedPermuted:()=>jX,getRowPartitionTypesHelper:()=>VX,getSliceBeginCoords:()=>XX,getSliceSize:()=>YX,getSparseFillEmptyRowsIndicesDenseShapeMismatch:()=>w5,getSparseFillEmptyRowsNegativeIndexErrorMessage:()=>S5,getSparseFillEmptyRowsOutOfRangeIndexErrorMessage:()=>I5,getSparseReshapeEmptyTensorZeroOutputDimErrorMessage:()=>N5,getSparseReshapeInputOutputMismatchErrorMessage:()=>_5,getSparseReshapeInputOutputMultipleErrorMessage:()=>T5,getSparseReshapeMultipleNegativeOneOutputDimErrorMessage:()=>v5,getSparseReshapeNegativeOutputDimErrorMessage:()=>k5,getSparseSegmentReductionIndicesOutOfRangeErrorMessage:()=>D5,getSparseSegmentReductionNegativeSegmentIdsErrorMessage:()=>E5,getSparseSegmentReductionNonIncreasingSegmentIdsErrorMessage:()=>$5,getSparseSegmentReductionSegmentIdOutOfRangeErrorMessage:()=>R5,getUndoAxesPermutation:()=>lK,isIdentityPermutation:()=>y5,log:()=>t4,mergeRealAndImagArrays:()=>s5,prepareAndValidate:()=>lT,prepareSplitSize:()=>C5,segment_util:()=>mS,shouldFuse:()=>Zu,slice_util:()=>pt,splitRealAndImagArrays:()=>a5,stridesOrDilationsArePositive:()=>Ta,tupleValuesAreOne:()=>Bu,upcastType:()=>dt,validateDefaultValueShape:()=>UX,validateInput:()=>lc,validateUpdateShape:()=>Qw,warn:()=>Ia});function LX(r,e){let t=r[0].length;r.forEach((n,s)=>{E(n.length===t,()=>`Error in concat${t}D: rank of tensors[${s}] must be the same as the rank of the rest (${t})`)}),E(e>=0&&e`Error in concat${t}D: axis must be between 0 and ${t-1}.`);let o=r[0];r.forEach((n,s)=>{for(let a=0;a`Error in concat${t}D: Shape of tensors[${s}] (${n}) does not match the shape of the rest (${o}) along the non-concatenated axis ${s}.`)})}function BX(r,e){let t=r[0].slice();for(let o=1;o=0)if(i>=0){if(i!==s)throw new Error(`rt input.shape and shape=${e} are incompatible: rt input.shape[${n+r}] = ${s} but shape[${n+r}] = ${i}`)}else o[a]=s}return o}function VX(r){let e={FIRST_DIM_SIZE:Fa.FIRST_DIM_SIZE,VALUE_ROWIDS:Fa.VALUE_ROWIDS,ROW_LENGTHS:Fa.ROW_LENGTHS,ROW_SPLITS:Fa.ROW_SPLITS,ROW_LIMITS:Fa.ROW_LIMITS,ROW_STARTS:Fa.ROW_STARTS},t=[];for(let o of r)if(o in e)t.push(e[o]);else break;return t}function WX(r){return r.length===0?0:r[0]===Fa.FIRST_DIM_SIZE?r.length-1:r.length}function UX(r,e){if(r==null||e==null)return;let t=r.length,o=e.length;if(t>=o)throw new Error(`defaultValue.shape=${r} and ragged tensor flatValues.shape=${e}, are incompatible: defaultValue.rank = ${t} must be less than ragged tensor input flatValues.rank = ${o})`);for(let n=0;n=0&&a>=0&&s!==1&&s!==a)throw new Error(`defaultValue.shape=${r}, and ragged tensor input flatValues.shape=${e} are incompatible: defaultValue.shape[${n-r.length}] = ${s} but ragged tensor input.flatValues.shape[${n-r.length}] = ${a}`)}}var uf=30;function GX(r){return r<=uf?r:Up(r,Math.floor(Math.sqrt(r)))}function HX(r,e,t){let o=t*(typeof r==\"number\"?r:r[0]),n=e*(typeof r==\"number\"?r:r[1]);return[o,n]}function KX(r,e,t,o=!0){let n=[];if(o)n=n.concat(e.slice(0)),n.push(r[0]/t),n=n.concat(r.slice(1));else{n=n.concat(r[0]);let s=e.length;for(let a=0;a=e*2+1||a%2===1?s.push(a):n.push(a);o.push(...n),o.push(0),o.push(...s)}return o}function jX(r,e,t,o=!0){let n=[];o?n.push(r[0]/t):n.push(r[0]*t);for(let s=1;s\",d5=/->/g,wT=\",\",ST=\"...\";function f5(r,e){r=r.replace(/\\s/g,\"\");let t=(r.length-r.replace(d5,\"\").length)/lS.length;if(t<1)throw new Error(\"Equations without an arrow are not supported.\");if(t>1)throw new Error(`Equation must contain exactly one arrow (\"${lS}\").`);let[o,n]=r.split(lS);E(o.indexOf(ST)===-1,()=>`The ellipsis notation (\"${ST}\") is not supported yet.`);let s=o.split(wT),a=s.length;if(e!==a)throw new Error(`Expected ${a} input tensors, received ${e}`);if(a>2)throw new Error(\"Support for more than 2 input tensors is not implemented yet.\");let i=[];for(let m=0;mf.indexOf(d)!==-1))throw new Error(`Output subscripts contain the label ${d} not present in the input subscripts.`);i.indexOf(d)===-1&&i.push(d)}for(let m=0;mn!==-1),{permutationIndices:t,expandDims:o}}function g5(r,e,t){let o=new Array(r);for(let n=0;n`Expected dimension ${o[e[n][a]]} at axis ${a} of input shaped ${JSON.stringify(s)}, but got dimension ${s[a]}`)}}function x5(r,e){let t=r,o=[],n=0;r.length===0&&t.push(-1),n=r.length+1;for(let a=0;ae===t)}function b5(r,e){let t=[];for(let o=0;o\"Number of splits must evenly divide the axis.\"),o=new Array(e).fill(r.shape[t]/e);else{let n=e.reduce((a,i)=>(i===-1&&(a+=1),a),0);E(n<=1,()=>\"There should be only one negative value in split array.\");let s=e.indexOf(-1);if(s!==-1){let a=e.reduce((i,p)=>p>0?i+p:i);e[s]=r.shape[t]-a}E(r.shape[t]===e.reduce((a,i)=>a+i),()=>\"The sum of sizes must match the size of the axis dimension.\"),o=e}return o}function w5(r){return`Received SparseTensor with denseShape[0] = 0 but\n indices.shape[0] = ${r}`}function S5(r,e){return`indices(${r}, 0) is invalid: ${e} < 0`}function I5(r,e,t){return`indices(${r}, 0) is invalid: ${e} >= ${t}`}function v5(r,e){return`only one output dimension may be -1, not both ${r} and ${e}`}function k5(r,e){return`size ${r} must be non-negative, not ${e}`}function N5(){return\"reshape cannot infer the missing input size for an empty tensor unless all specified input sizes are non-zero\"}function T5(r,e){let t=ze(r),o=ze(e);return`Input to reshape is a SparseTensor with ${t}\n dense values, but the requested shape requires a multiple of ${o}. inputShape=${r} outputShape= ${e}`}function _5(r,e){let t=ze(r),o=ze(e);return`Input to reshape is a tensor with ${t} dense values, but the requested shape has ${o}. inputShape=${r} outputShape=${e}`}function E5(){return\"segment ids must be >= 0\"}function $5(){return\"segment ids are not increasing\"}function R5(r,e){return`Segment id ${r} out of range [0, ${e}), possibly because segmentIds input is not sorted.`}function D5(r,e,t){return`Bad: indices[${r}] == ${e} out of range [0, ${t})`}var mS={};qe(mS,{collectGatherOpShapeInfo:()=>P5,computeOutShape:()=>F5,segOpComputeOptimalWindowSize:()=>A5});function A5(r,e){let t=!1,o;for(r<=uf?(o=r,t=!0):o=Up(r,Math.floor(Math.sqrt(r)));!t;)o>e||o===r?t=!0:o=Up(r,o+1);return o}function F5(r,e,t){let o=[],n=r.length;for(let s=0;sn))throw new Error(`Expect batchDims in the range of [-${n}, ${n}], but got ${o}`);if(o<0&&(o+=n),o>s)throw new Error(`batchDims (${o}) must be less than rank(x) (\n ${s}).`);if(tJp(e))}catch(e){throw new Error(`Failed to decode encoded string bytes into utf-8, error: ${e}`)}}function M5(r){return r.map(e=>Ji(e))}var Vt={};qe(Vt,{nonMaxSuppressionV3Impl:()=>Jd,nonMaxSuppressionV4Impl:()=>ef,nonMaxSuppressionV5Impl:()=>tf,whereImpl:()=>Xd});XN();var L5=A();L5.registerFlag(\"KEEP_INTERMEDIATE_TENSORS\",()=>!1,r=>{r&&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.\")});var Dr;(function(r){r[r.DT_INVALID=0]=\"DT_INVALID\",r[r.DT_FLOAT=1]=\"DT_FLOAT\",r[r.DT_DOUBLE=2]=\"DT_DOUBLE\",r[r.DT_INT32=3]=\"DT_INT32\",r[r.DT_UINT8=4]=\"DT_UINT8\",r[r.DT_INT16=5]=\"DT_INT16\",r[r.DT_INT8=6]=\"DT_INT8\",r[r.DT_STRING=7]=\"DT_STRING\",r[r.DT_COMPLEX64=8]=\"DT_COMPLEX64\",r[r.DT_INT64=9]=\"DT_INT64\",r[r.DT_BOOL=10]=\"DT_BOOL\",r[r.DT_QINT8=11]=\"DT_QINT8\",r[r.DT_QUINT8=12]=\"DT_QUINT8\",r[r.DT_QINT32=13]=\"DT_QINT32\",r[r.DT_BFLOAT16=14]=\"DT_BFLOAT16\",r[r.DT_QINT16=15]=\"DT_QINT16\",r[r.DT_QUINT16=16]=\"DT_QUINT16\",r[r.DT_UINT16=17]=\"DT_UINT16\",r[r.DT_COMPLEX128=18]=\"DT_COMPLEX128\",r[r.DT_HALF=19]=\"DT_HALF\",r[r.DT_RESOURCE=20]=\"DT_RESOURCE\",r[r.DT_VARIANT=21]=\"DT_VARIANT\",r[r.DT_UINT32=22]=\"DT_UINT32\",r[r.DT_UINT64=23]=\"DT_UINT64\",r[r.DT_FLOAT_REF=101]=\"DT_FLOAT_REF\",r[r.DT_DOUBLE_REF=102]=\"DT_DOUBLE_REF\",r[r.DT_INT32_REF=103]=\"DT_INT32_REF\",r[r.DT_UINT8_REF=104]=\"DT_UINT8_REF\",r[r.DT_INT16_REF=105]=\"DT_INT16_REF\",r[r.DT_INT8_REF=106]=\"DT_INT8_REF\",r[r.DT_STRING_REF=107]=\"DT_STRING_REF\",r[r.DT_COMPLEX64_REF=108]=\"DT_COMPLEX64_REF\",r[r.DT_INT64_REF=109]=\"DT_INT64_REF\",r[r.DT_BOOL_REF=110]=\"DT_BOOL_REF\",r[r.DT_QINT8_REF=111]=\"DT_QINT8_REF\",r[r.DT_QUINT8_REF=112]=\"DT_QUINT8_REF\",r[r.DT_QINT32_REF=113]=\"DT_QINT32_REF\",r[r.DT_BFLOAT16_REF=114]=\"DT_BFLOAT16_REF\",r[r.DT_QINT16_REF=115]=\"DT_QINT16_REF\",r[r.DT_QUINT16_REF=116]=\"DT_QUINT16_REF\",r[r.DT_UINT16_REF=117]=\"DT_UINT16_REF\",r[r.DT_COMPLEX128_REF=118]=\"DT_COMPLEX128_REF\",r[r.DT_HALF_REF=119]=\"DT_HALF_REF\",r[r.DT_RESOURCE_REF=120]=\"DT_RESOURCE_REF\",r[r.DT_VARIANT_REF=121]=\"DT_VARIANT_REF\",r[r.DT_UINT32_REF=122]=\"DT_UINT32_REF\",r[r.DT_UINT64_REF=123]=\"DT_UINT64_REF\"})(Dr||(Dr={}));var IT;(function(r){let e;(function(t){t[t.LEGACY=0]=\"LEGACY\",t[t.V1=1]=\"V1\",t[t.V2=2]=\"V2\"})(e=r.CheckpointFormatVersion||(r.CheckpointFormatVersion={}))})(IT||(IT={}));var fS={};function z5(r,e){let t={tfOpName:r,category:\"custom\",inputs:[],attrs:[],customExecutor:e};fS[r]=t}function pf(r){return fS[r]}function V5(r){delete fS[r]}function I(r,e,t,o,n){let s=e.inputParams[r];if(s&&s.inputIndexStart!==void 0){let i=s.inputIndexStart,p=s.inputIndexEnd===0?void 0:s.inputIndexEnd===void 0?i+1:s.inputIndexEnd,u=i<0?e.inputNames.length+i:i;if(s.type===\"tensor\")return Bt(e.inputNames[u],t,o,n);if(s.type===\"tensors\"){let m=e.inputs.slice(i,p);return e.inputNames.slice(i,p).filter((f,h)=>{var g;return((g=m[h])===null||g===void 0?void 0:g.op)!==\"NoOp\"}).map(f=>Bt(f,t,o,n))}let c=Bt(e.inputNames[u],t,o,n),l=c.dataSync();return s.type===\"number\"?l[0]:y.toNestedArray(c.shape,l)}let a=e.attrParams[r];return a&&a.value}function Bt(r,e,t,o){let[n,s]=Nr(r,t);if(o!=null){let i=o.getHashTableHandleByName(n);if(i!=null)return i}let a=t.currentContextIds.find(i=>!!e[cf(n,i)]);return a!==void 0?e[cf(n,a)][s]:void 0}function hS(r,e,t){return e[cf(r,t.currentContextId)]}function Ls(r,e){let[t,o,n]=Nr(r,e);return[cf(t,e&&e.currentContextId),o,n]}function cf(r,e){return e?`${r}-${e}`:r}function Nr(r,e){if(r===\"\")return[\"\",0,void 0];let t=e!=null&&e.parseNodeNameCache!=null;if(t){let s=e.parseNodeNameCache.get(r);if(s!=null)return s}let o=r.split(\":\"),n;if(o.length===1)n=[r,0,void 0];else{let s=o[0],a=o.length===3?o[1]:void 0,i=Number(o[o.length-1]);n=[s,i,a]}return t&&e.parseNodeNameCache.set(r,n),n}function Pl(r,e,t){let o=I(\"pad\",r,e,t);if(o===\"explicit\"){o=I(\"explicitPaddings\",r,e,t);let n=[[0,0],[0,0],[0,0],[0,0]];for(let s=0;s<4;s++)n[s][0]=o[s*2],n[s][1]=o[s*2+1];return n}return o}function Bs(r){return r.kept?r:Ur(r)}var gS={};qe(gS,{json:()=>W5});var W5=[{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}]},{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}]}];var xS={};qe(xS,{json:()=>U5});var U5=[{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:\"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}]},{tfOpName:\"IsFinite\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"IsInf\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]}];var yS={};qe(yS,{json:()=>G5});var G5=[{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\"}]}];var bS={};qe(bS,{json:()=>H5});var H5=[{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},{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\"}]}];var CS={};qe(CS,{json:()=>K5});var K5=[{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},{tfName:\"T\",name:\"T\",type:\"number\",notSupported:!0}]},{tfOpName:\"RandomUniformInt\",category:\"creation\",inputs:[{start:0,name:\"shape\",type:\"number[]\"}],attrs:[{tfName:\"minval\",name:\"minval\",type:\"number\"},{tfName:\"maxval\",name:\"maxval\",type:\"number\"},{tfName:\"seed\",name:\"seed\",type:\"number\",defaultValue:0},{tfName:\"seed2\",name:\"seed2\",type:\"number\",defaultValue:0,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\"}]}];var wS={};qe(wS,{json:()=>q5});var q5=[{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}]}];var SS={};qe(SS,{json:()=>j5});var j5=[{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\"}]}];var IS={};qe(IS,{json:()=>X5});var X5=[{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},{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\"}]}];var vS={};qe(vS,{json:()=>Y5});var Y5=[{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\"}]},{tfOpName:\"InitializeTable\",category:\"hash_table\",inputs:[{start:0,name:\"tableHandle\",type:\"tensor\"},{start:1,name:\"keys\",type:\"tensor\"},{start:2,name:\"values\",type:\"tensor\"}]},{tfOpName:\"InitializeTableV2\",category:\"hash_table\",inputs:[{start:0,name:\"tableHandle\",type:\"tensor\"},{start:1,name:\"keys\",type:\"tensor\"},{start:2,name:\"values\",type:\"tensor\"}]}];var kS={};qe(kS,{json:()=>Q5});var Q5=[{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\"}]}];var NS={};qe(NS,{json:()=>Z5});var Z5=[{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}]},{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}]},{tfOpName:\"BitwiseAnd\",category:\"logical\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"y\",type:\"tensor\"}]}];var TS={};qe(TS,{json:()=>J5});var J5=[{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\"}]},{tfOpName:\"MatrixBandPart\",category:\"matrices\",inputs:[{start:0,name:\"a\",type:\"tensor\"},{start:1,name:\"numLower\",type:\"tensor\"},{start:1,name:\"numUpper\",type:\"tensor\"}]}];var _S={};qe(_S,{json:()=>e8});var e8=[{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}]},{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\"}]}];var ES={};qe(ES,{json:()=>t8});var t8=[{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\"},{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{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\"}]}];var $S={};qe($S,{json:()=>r8});var r8=[{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}]},{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}]},{tfOpName:\"TensorScatterUpdate\",category:\"slice_join\",inputs:[{start:0,name:\"tensor\",type:\"tensor\"},{start:1,name:\"indices\",type:\"tensor\"},{start:2,name:\"values\",type:\"tensor\"}]}];var RS={};qe(RS,{json:()=>o8});var o8=[{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\"}]}];var DS={};qe(DS,{json:()=>n8});var n8=[{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}]}];var AS={};qe(AS,{json:()=>s8});var s8=[{tfOpName:\"StaticRegexReplace\",category:\"string\",inputs:[{start:0,name:\"input\",type:\"tensor\"}],attrs:[{tfName:\"pattern\",name:\"pattern\",type:\"string\"},{tfName:\"rewrite\",name:\"rewrite\",type:\"string\"},{tfName:\"replace_global\",name:\"replaceGlobal\",type:\"bool\"}]},{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\"}]}];var FS={};qe(FS,{json:()=>a8});var a8=[{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:\"EnsureShape\",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 Ol=class{static get Instance(){return this._instance||(this._instance=new this)}constructor(){let e=[gS,xS,yS,bS,CS,wS,SS,IS,vS,kS,NS,TS,_S,ES,$S,RS,DS,AS,FS],t=[].concat(...e.map(o=>o.json));this.opMappers=t.reduce((o,n)=>(o[n.tfOpName]=n,o),{})}transformGraph(e,t={}){let o=e.node,n=[],s=[],a=[],i=o.reduce((h,g)=>(h[g.name]=this.mapNode(g),g.op.startsWith(\"Placeholder\")?n.push(h[g.name]):g.op===\"Const\"?s.push(h[g.name]):(g.input==null||g.input.length===0)&&a.push(h[g.name]),h),{}),p=[],u=[],c={},l={};t!=null&&(c=this.mapSignatureEntries(t.inputs),l=this.mapSignatureEntries(t.outputs));let m=Object.keys(i);m.forEach(h=>{let g=i[h];g.inputNames.forEach((x,b)=>{let[C,,S]=Ls(x),k=i[C];if(k.outputs!=null){let _=k.outputs.indexOf(S);if(_!==-1){let $=`${C}:${_}`;g.inputNames[b]=$}}g.inputs.push(k),k.children.push(g)})}),Object.keys(l).length===0?m.forEach(h=>{let g=i[h];g.children.length===0&&u.push(g)}):Object.keys(l).forEach(h=>{let[g]=Ls(h),x=i[g];x!=null&&(x.signatureKey=l[h],u.push(x))}),Object.keys(c).length>0?Object.keys(c).forEach(h=>{let[g]=Ls(h),x=i[g];x&&(x.signatureKey=c[h],p.push(x))}):p=n;let d={};e.library!=null&&e.library.function!=null&&(d=e.library.function.reduce((h,g)=>(h[g.signature.name]=this.mapFunction(g),h),{}));let f={nodes:i,inputs:p,outputs:u,weights:s,placeholders:n,signature:t,functions:d};return a.length>0&&(f.initNodes=a),f}mapSignatureEntries(e){return Object.keys(e||{}).reduce((t,o)=>(t[e[o].name]=o,t),{})}mapNode(e){let t=pf(e.op)||this.opMappers[e.op]||{};e.attr==null&&(e.attr={});let o={name:e.name,op:e.op,category:t.category,inputNames:(e.input||[]).map(n=>n.startsWith(\"^\")?n.slice(1):n),inputs:[],children:[],inputParams:{},attrParams:{},rawAttrs:e.attr,outputs:t.outputs};return t.inputs!=null&&(o.inputParams=t.inputs.reduce((n,s)=>(n[s.name]={type:s.type,inputIndexStart:s.start,inputIndexEnd:s.end},n),{})),t.attrs!=null&&(o.attrParams=t.attrs.reduce((n,s)=>{let a=s.type,i;switch(s.type){case\"string\":i=lf(e.attr,s.tfName,s.defaultValue),i===void 0&&s.tfDeprecatedName&&(i=lf(e.attr,s.tfDeprecatedName,s.defaultValue));break;case\"string[]\":i=yf(e.attr,s.tfName,s.defaultValue),i===void 0&&s.tfDeprecatedName&&(i=yf(e.attr,s.tfDeprecatedName,s.defaultValue));break;case\"number\":i=df(e.attr,s.tfName,s.defaultValue||0),i===void 0&&s.tfDeprecatedName&&(i=df(e.attr,s.tfDeprecatedName,s.defaultValue));break;case\"number[]\":i=xf(e.attr,s.tfName,s.defaultValue),i===void 0&&s.tfDeprecatedName&&(i=xf(e.attr,s.tfDeprecatedName,s.defaultValue));break;case\"bool\":i=mf(e.attr,s.tfName,s.defaultValue),i===void 0&&s.tfDeprecatedName&&(i=mf(e.attr,s.tfDeprecatedName,s.defaultValue));break;case\"bool[]\":i=Cf(e.attr,s.tfName,s.defaultValue),i===void 0&&s.tfDeprecatedName&&(i=Cf(e.attr,s.tfDeprecatedName,s.defaultValue));break;case\"shape\":i=gf(e.attr,s.tfName,s.defaultValue),i===void 0&&s.tfDeprecatedName&&(i=gf(e.attr,s.tfDeprecatedName,s.defaultValue));break;case\"shape[]\":i=bf(e.attr,s.tfName,s.defaultValue),i===void 0&&s.tfDeprecatedName&&(i=bf(e.attr,s.tfDeprecatedName,s.defaultValue));break;case\"dtype\":i=ff(e.attr,s.tfName,s.defaultValue),i===void 0&&s.tfDeprecatedName&&(i=ff(e.attr,s.tfDeprecatedName,s.defaultValue));break;case\"dtype[]\":i=hf(e.attr,s.tfName,s.defaultValue),i===void 0&&s.tfDeprecatedName&&(i=hf(e.attr,s.tfDeprecatedName,s.defaultValue));break;case\"func\":i=vT(e.attr,s.tfName,s.defaultValue),i===void 0&&s.tfDeprecatedName&&(i=vT(e.attr,s.tfDeprecatedName,s.defaultValue));break;case\"tensor\":case\"tensors\":break;default:throw new Error(`Unsupported param type: ${s.type} for op: ${e.op}`)}return n[s.name]={value:i,type:a},n},{})),o}mapFunction(e){let t=e.nodeDef,o=[],n=[],s={};t!=null&&(s=t.reduce((l,m)=>(l[m.name]=this.mapNode(m),m.op===\"Const\"&&n.push(l[m.name]),l),{}));let a=[],i=[];e.signature.inputArg.forEach(l=>{let[m]=Ls(l.name),d={name:m,op:\"Placeholder\",inputs:[],inputNames:[],category:\"graph\",inputParams:{},attrParams:{dtype:{value:PS(l.type),type:\"dtype\"}},children:[]};d.signatureKey=l.name,a.push(d),s[m]=d}),Object.keys(s).forEach(l=>{let m=s[l];m.inputNames.forEach((d,f)=>{let[h,,g]=Ls(d),x=s[h];if(x.outputs!=null){let b=x.outputs.indexOf(g);if(b!==-1){let C=`${h}:${b}`;m.inputNames[f]=C}}m.inputs.push(x),x.children.push(m)})});let u=e.ret;e.signature.outputArg.forEach(l=>{let[m,d]=Ls(u[l.name]),f=s[m];f!=null&&(f.defaultOutput=d,i.push(f))});let c=this.mapArgsToSignature(e);return{nodes:s,inputs:a,outputs:i,weights:n,placeholders:o,signature:c}}mapArgsToSignature(e){return{methodName:e.signature.name,inputs:e.signature.inputArg.reduce((t,o)=>(t[o.name]=this.mapArgToTensorInfo(o),t),{}),outputs:e.signature.outputArg.reduce((t,o)=>(t[o.name]=this.mapArgToTensorInfo(o,e.ret),t),{})}}mapArgToTensorInfo(e,t){let o=e.name;return t!=null&&(o=t[o]),{name:o,dtype:e.type}}};function i8(r){let e=A().global;if(typeof e.atob!=\"undefined\")return e.atob(r);if(typeof Buffer!=\"undefined\")return new Buffer(r,\"base64\").toString();throw new Error(\"Unable to decode base64 in this environment. Missing built-in atob() or Buffer()\")}function kT(r,e){let t=Array.isArray(r)?String.fromCharCode.apply(null,r):i8(r);return e?t:t.toLowerCase()}function lf(r,e,t,o=!1){let n=r[e];return n!=null?kT(n.s,o):t}function mf(r,e,t){let o=r[e];return o?o.b:t}function df(r,e,t){let o=r[e]||{},n=o.i!=null?o.i:o.f!=null?o.f:t;return typeof n==\"number\"?n:parseInt(n,10)}function PS(r){switch(typeof r==\"string\"&&(r=Dr[r]),r){case Dr.DT_FLOAT:case Dr.DT_HALF:return\"float32\";case Dr.DT_INT32:case Dr.DT_INT64:case Dr.DT_INT8:case Dr.DT_UINT8:return\"int32\";case Dr.DT_BOOL:return\"bool\";case Dr.DT_DOUBLE:return\"float32\";case Dr.DT_STRING:return\"string\";case Dr.DT_COMPLEX64:case Dr.DT_COMPLEX128:return\"complex64\";default:return null}}function vT(r,e,t){let o=r[e];return o&&o.func?o.func.name:t}function ff(r,e,t){let o=r[e];return o&&o.type?PS(o.type):t}function hf(r,e,t){let o=r[e];return o&&o.list&&o.list.type?o.list.type.map(n=>PS(n)):t}function NT(r){if(!r.unknownRank)return r.dim!=null?r.dim.map(e=>typeof e.size==\"number\"?e.size:parseInt(e.size,10)):[]}function gf(r,e,t){let o=r[e];return o&&o.shape?NT(o.shape):t}function xf(r,e,t){let o=r[e];return o?((o.list.f&&o.list.f.length?o.list.f:o.list.i)||[]).map(n=>typeof n==\"number\"?n:parseInt(n,10)):t}function yf(r,e,t,o=!1){let n=r[e];return n&&n.list&&n.list.s?n.list.s.map(s=>kT(s,o)):t}function bf(r,e,t){let o=r[e];return o&&o.list&&o.list.shape?o.list.shape.map(n=>NT(n)):t}function Cf(r,e,t){let o=r[e];return o&&o.list&&o.list.b?o.list.b:t}var wf=class{constructor(e,t,o){this.node=e,this.tensorMap=t,this.context=o,this.inputs=[],this.attrs={},this.inputs=e.inputNames.map(n=>this.getInput(n)),e.rawAttrs!=null&&(this.attrs=Object.keys(e.rawAttrs).reduce((n,s)=>(n[s]=this.getAttr(s),n),{}))}getInput(e){return Bt(e,this.tensorMap,this.context)}getAttr(e,t){let o=this.node.rawAttrs[e];if(o.tensor!=null)return Bt(e,this.tensorMap,this.context);if(o.i!=null||o.f!=null)return df(this.node.rawAttrs,e,t);if(o.s!=null)return lf(this.node.rawAttrs,e,t);if(o.b!=null)return mf(this.node.rawAttrs,e,t);if(o.shape!=null)return gf(this.node.rawAttrs,e,t);if(o.type!=null)return ff(this.node.rawAttrs,e,t);if(o.list!=null){if(o.list.i!=null||o.list.f!=null)return xf(this.node.rawAttrs,e,t);if(o.list.s!=null)return yf(this.node.rawAttrs,e,t);if(o.list.shape!=null)return bf(this.node.rawAttrs,e,t);if(o.list.b!=null)return Cf(this.node.rawAttrs,e,t);if(o.list.type!=null)return hf(this.node.rawAttrs,e,t)}return t}};var Je={};qe(Je,{OP_SCOPE_SUFFIX:()=>Nw,abs:()=>Qt,acos:()=>Rk,acosh:()=>Dk,add:()=>Ce,addN:()=>Ak,all:()=>Fk,any:()=>Pk,argMax:()=>Ok,argMin:()=>Mk,asin:()=>Lk,asinh:()=>Bk,atan:()=>zk,atan2:()=>Vk,atanh:()=>Wk,avgPool:()=>dd,avgPool3d:()=>Hk,basicLSTMCell:()=>Kk,batchNorm:()=>nu,batchNorm2d:()=>jk,batchNorm3d:()=>Xk,batchNorm4d:()=>Yk,batchToSpaceND:()=>fd,bincount:()=>hd,bitwiseAnd:()=>Qk,booleanMaskAsync:()=>L6,broadcastArgs:()=>Zk,broadcastTo:()=>su,buffer:()=>me,cast:()=>Ue,ceil:()=>Jk,clipByValue:()=>e2,clone:()=>Ur,complex:()=>Er,concat:()=>yt,concat1d:()=>t2,concat2d:()=>r2,concat3d:()=>o2,concat4d:()=>n2,conv1d:()=>s2,conv2d:()=>au,conv2dTranspose:()=>a2,conv3d:()=>i2,conv3dTranspose:()=>p2,cos:()=>c2,cosh:()=>l2,cosineWindow:()=>$l,cumprod:()=>m2,cumsum:()=>d2,denseBincount:()=>f2,depthToSpace:()=>h2,depthwiseConv2d:()=>sc,diag:()=>g2,dilation2d:()=>x2,div:()=>je,divNoNan:()=>b2,dot:()=>C2,dropout:()=>Y6,einsum:()=>iu,elu:()=>bd,enclosingPowerOfTwo:()=>Zw,ensureShape:()=>w2,equal:()=>yd,erf:()=>S2,euclideanNorm:()=>k2,exp:()=>_o,expandDims:()=>Ms,expm1:()=>N2,eye:()=>Cd,fft:()=>uc,fill:()=>$a,floor:()=>wd,floorDiv:()=>md,fused:()=>Jw,gather:()=>Sd,gatherND:()=>j6,greater:()=>Wu,greaterEqual:()=>Id,ifft:()=>ju,imag:()=>pu,image:()=>eX,inTopKAsync:()=>Z6,irfft:()=>Hd,isFinite:()=>T2,isInf:()=>_2,isNaN:()=>E2,leakyRelu:()=>vd,less:()=>Tl,lessEqual:()=>ac,linalg:()=>tX,linspace:()=>$2,localResponseNormalization:()=>R2,log:()=>pi,log1p:()=>kd,logSigmoid:()=>D2,logSoftmax:()=>A2,logSumExp:()=>_d,logicalAnd:()=>Uu,logicalNot:()=>Ed,logicalOr:()=>$d,logicalXor:()=>F2,losses:()=>rX,lowerBound:()=>P2,matMul:()=>Ze,max:()=>Ra,maxPool:()=>Dd,maxPool3d:()=>O2,maxPoolWithArgmax:()=>M2,maximum:()=>Ad,mean:()=>Gu,meshgrid:()=>L2,min:()=>Nl,minimum:()=>Hu,mirrorPad:()=>B2,mod:()=>z2,moments:()=>V2,movingAverage:()=>V6,mul:()=>se,multiRNNCell:()=>W2,multinomial:()=>U2,neg:()=>pr,norm:()=>Vu,notEqual:()=>Fd,oneHot:()=>El,ones:()=>Da,onesLike:()=>G2,op:()=>N,outerProduct:()=>H2,pad:()=>Aa,pad1d:()=>K2,pad2d:()=>q2,pad3d:()=>j2,pad4d:()=>X2,pool:()=>Y2,pow:()=>ui,prelu:()=>Od,print:()=>ld,prod:()=>Q2,raggedGather:()=>Z2,raggedRange:()=>J2,raggedTensorToTensor:()=>e1,rand:()=>t1,randomGamma:()=>S1,randomNormal:()=>Wd,randomStandardNormal:()=>I1,randomUniform:()=>ic,randomUniformInt:()=>v1,range:()=>cu,real:()=>ci,reciprocal:()=>k1,relu:()=>lu,relu6:()=>Ud,reshape:()=>W,reverse:()=>mo,reverse1d:()=>N1,reverse2d:()=>T1,reverse3d:()=>_1,reverse4d:()=>E1,rfft:()=>pc,round:()=>Gd,rsqrt:()=>$1,scalar:()=>ke,scatterND:()=>U6,searchSorted:()=>_l,selu:()=>R1,separableConv2d:()=>D1,setdiff1dAsync:()=>A1,sigmoid:()=>Ea,sign:()=>F1,signal:()=>Jj,sin:()=>P1,sinh:()=>O1,slice:()=>Xe,slice1d:()=>M1,slice2d:()=>L1,slice3d:()=>B1,slice4d:()=>z1,softmax:()=>V1,softplus:()=>Td,spaceToBatchND:()=>Pd,sparse:()=>oX,sparseToDense:()=>K6,spectral:()=>Zj,split:()=>li,sqrt:()=>Rr,square:()=>Zt,squaredDifference:()=>Kd,squeeze:()=>cc,stack:()=>vr,step:()=>qd,stridedSlice:()=>W1,string:()=>nX,sub:()=>Te,sum:()=>ot,tan:()=>U1,tanh:()=>kl,tensor:()=>ar,tensor1d:()=>Jt,tensor2d:()=>mu,tensor3d:()=>jd,tensor4d:()=>G1,tensor5d:()=>H1,tensor6d:()=>K1,tensorScatterUpdate:()=>j1,tile:()=>uu,topk:()=>X1,transpose:()=>mc,truncatedNormal:()=>Y1,unique:()=>Q1,unsortedSegmentSum:()=>Z1,unstack:()=>fo,upperBound:()=>J1,variable:()=>eN,where:()=>lo,whereAsync:()=>Yd,zeros:()=>Gr,zerosLike:()=>Gt});var TT=(r,e,t,o=Je)=>{switch(r.op){case\"BiasAdd\":case\"AddV2\":case\"Add\":return[o.add(I(\"a\",r,e,t),I(\"b\",r,e,t))];case\"AddN\":return[o.addN(I(\"tensors\",r,e,t))];case\"FloorMod\":case\"Mod\":return[o.mod(I(\"a\",r,e,t),I(\"b\",r,e,t))];case\"Mul\":return[o.mul(I(\"a\",r,e,t),I(\"b\",r,e,t))];case\"RealDiv\":case\"Div\":return[o.div(I(\"a\",r,e,t),I(\"b\",r,e,t))];case\"DivNoNan\":return[o.divNoNan(I(\"a\",r,e,t),I(\"b\",r,e,t))];case\"FloorDiv\":return[o.floorDiv(I(\"a\",r,e,t),I(\"b\",r,e,t))];case\"Sub\":return[o.sub(I(\"a\",r,e,t),I(\"b\",r,e,t))];case\"Minimum\":return[o.minimum(I(\"a\",r,e,t),I(\"b\",r,e,t))];case\"Maximum\":return[o.maximum(I(\"a\",r,e,t),I(\"b\",r,e,t))];case\"Pow\":return[o.pow(I(\"a\",r,e,t),I(\"b\",r,e,t))];case\"SquaredDifference\":return[o.squaredDifference(I(\"a\",r,e,t),I(\"b\",r,e,t))];default:throw TypeError(`Node type ${r.op} is not implemented`)}};var _T=(r,e,t,o=Je)=>{switch(r.op){case\"Abs\":case\"ComplexAbs\":return[o.abs(I(\"x\",r,e,t))];case\"Acos\":return[o.acos(I(\"x\",r,e,t))];case\"Acosh\":return[o.acosh(I(\"x\",r,e,t))];case\"Asin\":return[o.asin(I(\"x\",r,e,t))];case\"Asinh\":return[o.asinh(I(\"x\",r,e,t))];case\"Atan\":return[o.atan(I(\"x\",r,e,t))];case\"Atan2\":return[o.atan2(I(\"x\",r,e,t),I(\"y\",r,e,t))];case\"Atanh\":return[o.atanh(I(\"x\",r,e,t))];case\"Ceil\":return[o.ceil(I(\"x\",r,e,t))];case\"Complex\":return[o.complex(I(\"real\",r,e,t),I(\"imag\",r,e,t))];case\"Cos\":return[o.cos(I(\"x\",r,e,t))];case\"Cosh\":return[o.cosh(I(\"x\",r,e,t))];case\"Elu\":return[o.elu(I(\"x\",r,e,t))];case\"Erf\":return[o.erf(I(\"x\",r,e,t))];case\"Exp\":return[o.exp(I(\"x\",r,e,t))];case\"Expm1\":return[o.expm1(I(\"x\",r,e,t))];case\"Floor\":return[o.floor(I(\"x\",r,e,t))];case\"Log\":return[o.log(I(\"x\",r,e,t))];case\"Log1p\":return[o.log1p(I(\"x\",r,e,t))];case\"Imag\":return[o.imag(I(\"x\",r,e,t))];case\"Neg\":return[o.neg(I(\"x\",r,e,t))];case\"Reciprocal\":return[o.reciprocal(I(\"x\",r,e,t))];case\"Real\":return[o.real(I(\"x\",r,e,t))];case\"Relu\":return[o.relu(I(\"x\",r,e,t))];case\"Round\":return[o.round(I(\"x\",r,e,t))];case\"Selu\":return[o.selu(I(\"x\",r,e,t))];case\"Sigmoid\":return[o.sigmoid(I(\"x\",r,e,t))];case\"Sin\":return[o.sin(I(\"x\",r,e,t))];case\"Sign\":return[o.sign(I(\"x\",r,e,t))];case\"Sinh\":return[o.sinh(I(\"x\",r,e,t))];case\"Softplus\":return[o.softplus(I(\"x\",r,e,t))];case\"Sqrt\":return[o.sqrt(I(\"x\",r,e,t))];case\"Square\":return[o.square(I(\"x\",r,e,t))];case\"Tanh\":return[o.tanh(I(\"x\",r,e,t))];case\"Tan\":return[o.tan(I(\"x\",r,e,t))];case\"ClipByValue\":return[o.clipByValue(I(\"x\",r,e,t),I(\"clipValueMin\",r,e,t),I(\"clipValueMax\",r,e,t))];case\"Relu6\":return[o.relu6(I(\"x\",r,e,t))];case\"Rsqrt\":return[o.rsqrt(Bt(r.inputNames[0],e,t))];case\"LeakyRelu\":return[o.leakyRelu(I(\"x\",r,e,t),I(\"alpha\",r,e,t))];case\"Prelu\":return[o.prelu(I(\"x\",r,e,t),I(\"alpha\",r,e,t))];case\"IsNan\":return[o.isNaN(Bt(r.inputNames[0],e,t))];case\"IsInf\":return[o.isInf(Bt(r.inputNames[0],e,t))];case\"IsFinite\":return[o.isFinite(Bt(r.inputNames[0],e,t))];default:throw TypeError(`Node type ${r.op} is not implemented`)}};function Hr(r,e,t=\"\"){if(!(typeof r==\"number\"||typeof e==\"number\")){y.assert(r.length===e.length,()=>t+` Shapes ${r} and ${e} must match`);for(let o=0;ot+` Shapes ${r} and ${e} must match`)}}}function ET(r){return!(typeof r==\"number\"||r.some(e=>e<0))}function fc(r,e,t){let o=Sf(r,t),n=!ET(o);if(n&&e.length===0)throw new Error(`Tried to calculate elements of an empty list with non-fully-defined elementShape: ${o}`);if(n&&e.forEach(s=>{o=Sf(s.shape,o)}),!ET(o))throw new Error(`Non-fully-defined elementShape: ${o}`);return o}function Sf(r,e){if(typeof r==\"number\")return e;if(typeof e==\"number\")return r;if(r.length!==e.length)throw new Error(`Incompatible ranks during merge: ${r} vs. ${e}`);let t=[];for(let o=0;o=0&&s>=0&&n!==s)throw new Error(`Incompatible shape during merge: ${r} vs. ${e}`);t[o]=n>=0?n:s}return t}var If=class{constructor(e,t,o,n,s,a,i){this.name=e,this.dtype=t,this.maxSize=o,this.elementShape=n,this.identicalElementShapes=s,this.dynamicSize=a,this.clearAfterRead=i,this.tensors=[],this.closed_=!1,this.idTensor=ke(0),$r(this.idTensor)}get id(){return this.idTensor.id}get closed(){return this.closed_}clearAndClose(e){this.tensors.forEach(t=>{(e==null||!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()}`);let 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(t=>this.read(t))}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}`);let o=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(this.size()===0&&(this.elementShape==null||this.elementShape.length===0)&&(this.elementShape=t.shape),Hr(this.elementShape,t.shape,`TensorArray ${this.name}: Could not write to TensorArray index ${e}.`),o.read)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${e}, because it has already been read.`);if(o.written)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${e}, because it has already been written.`);o.tensor=t,$r(t),o.written=!0,this.tensors[e]=o}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((o,n)=>this.write(o,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 n=0;n=this.maxSize)throw new Error(`Max index must be < array size (${o} vs. ${this.maxSize})`);this.writeMany(e,fo(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 o=0,n=e.map(p=>(o+=p,o));if(o!==t.shape[0])throw new Error(`Expected sum of lengths to be equal to\n tensor.shape[0], but sum of lengths is\n ${o}, 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`);let s=o===0?0:t.size/o,a=[];De(()=>{t=W(t,[1,o,s]);for(let p=0;p{if(o!==s.dtype)throw new Error(`Invalid data types; op elements ${o}, but list elements ${s.dtype}`);Hr(t,s.shape,\"TensorList shape mismatch: \"),$r(s)}),this.idTensor=ke(0),this.maxNumElements=n,$r(this.idTensor)}copy(){return new r([...this.tensors],this.elementShape,this.elementDtype)}clearAndClose(e){this.tensors.forEach(t=>{(e==null||!e.has(t.id))&&t.dispose()}),this.tensors.length=0,this.idTensor.dispose()}size(){return this.tensors.length}stack(e,t,o=-1){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);if(o!==-1&&this.tensors.length!==o)throw new Error(`Operation expected a list with ${o} elements but got a list with ${this.tensors.length} elements.`);Hr(e,this.elementShape,\"TensorList shape mismatch: \");let n=fc(this.elementShape,this.tensors,e);return De(()=>{let s=this.tensors.map(a=>W(a,n));return vr(s,0)})}popBack(e,t){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);if(this.size()===0)throw new Error(\"Trying to pop from an empty list.\");let o=fc(this.elementShape,this.tensors,e),n=this.tensors.pop();return n.kept=!1,Hr(n.shape,e,\"TensorList shape mismatch: \"),W(n,o)}pushBack(e){if(e.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${e.dtype}, but list elements ${this.elementDtype}`);if(Hr(e.shape,this.elementShape,\"TensorList shape mismatch: \"),this.maxNumElements===this.size())throw new Error(\"Trying to push element into a full list.\");$r(e),this.tensors.push(e)}resize(e){if(e<0)throw new Error(`TensorListResize expects size to be non-negative. Got: ${e}`);if(this.maxNumElements!==-1&&e>this.maxNumElements)throw new Error(`TensorListResize input size ${e} is greater maxNumElement ${this.maxNumElements}.`);let t=new r([],this.elementShape,this.elementDtype,this.maxNumElements);t.tensors.length=e;for(let o=0;othis.tensors.length)throw new Error(`Trying to access element ${e} in a list with ${this.tensors.length} elements.`);if(this.tensors[e]==null)throw new Error(`element at index ${e} is null.`);Hr(this.tensors[e].shape,t,\"TensorList shape mismatch: \");let n=fc(this.elementShape,this.tensors,t);return W(this.tensors[e],n)}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||this.maxNumElements!==-1&&e>=this.maxNumElements)throw new Error(`Trying to set element ${e} in a list with max ${this.maxNumElements} elements.`);Hr(this.elementShape,t.shape,\"TensorList shape mismatch: \"),$r(t),this.tensors[e]!=null&&(this.tensors[e].kept=!1),this.tensors[e]=t}gather(e,t,o){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);Hr(this.elementShape,o,\"TensorList shape mismatch: \"),e=e.slice(0,this.size());let n=fc(this.elementShape,this.tensors,o);return e.length===0?ar([],[0].concat(n)):De(()=>{let s=e.map(a=>W(this.tensors[a],n));return vr(s,0)})}concat(e,t){if(e&&e!==this.elementDtype)throw new Error(`TensorList dtype is ${this.elementDtype} but concat requested dtype ${e}`);Hr(this.elementShape,t,\"TensorList shape mismatch: \");let o=fc(this.elementShape,this.tensors,t);return this.size()===0?ar([],[0].concat(o)):De(()=>{let n=this.tensors.map(s=>W(s,o));return yt(n,0)})}};function $T(r,e,t){let o=r.dtype;if(r.shape.length<1)throw new Error(`Tensor must be at least a vector, but saw shape: ${r.shape}`);if(r.dtype!==t)throw new Error(`Invalid data types; op elements ${r.dtype}, but list elements ${t}`);let n=r.shape.slice(1);Hr(n,e,\"TensorList shape mismatch: \");let s=fo(r);return new hc(s,e,o)}function RT(r,e,t,o){return new hc([],r,e,o)}function DT(r,e,t,o){if(e.length!==r.shape[0])throw new Error(`Expected len(indices) == tensor.shape[0], but saw: ${e.length} vs. ${r.shape[0]}`);let n=Math.max(...e);if(o!=null&&o!==-1&&n>=o)throw new Error(`Max index must be < array size (${n} vs. ${o})`);let s=new hc([],t,r.dtype,o),a=fo(r,0);return e.forEach((i,p)=>{s.setItem(i,a[p])}),s}function AT(r,e,t){let o=0,n=e.map(c=>(o+=c,o));if(o!==r.shape[0])throw new Error(`Expected sum of lengths to be equal to\n tensor.shape[0], but sum of lengths is\n ${o}, and tensor's shape is: ${r.shape}`);let s=r.shape.slice(1),a=Sf(s,t),i=o===0?0:r.size/o,p=De(()=>{let c=[];r=W(r,[1,o,i]);for(let l=0;l{switch(r.op){case\"If\":case\"StatelessIf\":{let o=I(\"thenBranch\",r,e,t),n=I(\"elseBranch\",r,e,t),s=I(\"cond\",r,e,t),a=I(\"args\",r,e,t);return(await s.data())[0]?t.functionMap[o].executeFunctionAsync(a,t.tensorArrayMap,t.tensorListMap):t.functionMap[n].executeFunctionAsync(a,t.tensorArrayMap,t.tensorListMap)}case\"While\":case\"StatelessWhile\":{let o=I(\"body\",r,e,t),n=I(\"cond\",r,e,t),s=I(\"args\",r,e,t),a=await t.functionMap[n].executeFunctionAsync(s,t.tensorArrayMap,t.tensorListMap),i=s.map(c=>c.id),p=await a[0].data();a.forEach(c=>{!c.kept&&i.indexOf(c.id)===-1&&c.dispose()});let u=s;for(;p[0];){let c=u;u=await t.functionMap[o].executeFunctionAsync(u,t.tensorArrayMap,t.tensorListMap);let l=u.map(d=>d.id);c.forEach(d=>{!d.kept&&i.indexOf(d.id)===-1&&l.indexOf(d.id)===-1&&d.dispose()});let m=await t.functionMap[n].executeFunctionAsync(u,t.tensorArrayMap,t.tensorListMap);p=await m[0].data(),m.forEach(d=>{!d.kept&&i.indexOf(d.id)===-1&&l.indexOf(d.id)===-1&&d.dispose()})}return u}case\"LoopCond\":{let o=I(\"pred\",r,e,t);return[Bs(o)]}case\"Switch\":{let o=I(\"pred\",r,e,t),n=I(\"data\",r,e,t);return n.kept||(n=Bs(n)),(await o.data())[0]?[void 0,n]:[n,void 0]}case\"Merge\":{let o=r.inputNames.find(n=>Bt(n,e,t)!==void 0);if(o){let n=Bt(o,e,t);return[Bs(n)]}return}case\"Enter\":{let o=I(\"frameName\",r,e,t),n=I(\"tensor\",r,e,t);return t.enterFrame(o),[Bs(n)]}case\"Exit\":{let o=I(\"tensor\",r,e,t);return t.exitFrame(),[Bs(o)]}case\"NextIteration\":{let o=I(\"tensor\",r,e,t);return t.nextIteration(),[Bs(o)]}case\"TensorArrayV3\":{let o=I(\"size\",r,e,t),n=I(\"dtype\",r,e,t),s=I(\"elementShape\",r,e,t),a=I(\"dynamicSize\",r,e,t),i=I(\"clearAfterRead\",r,e,t),p=I(\"identicalElementShapes\",r,e,t),u=I(\"name\",r,e,t),c=new If(u,n,o,s,p,a,i);return t.addTensorArray(c),[c.idTensor,ke(1)]}case\"TensorArrayWriteV3\":{let o=I(\"tensorArrayId\",r,e,t),n=I(\"index\",r,e,t),s=I(\"tensor\",r,e,t),a=t.getTensorArray(o.id);return a.write(n,s),[a.idTensor]}case\"TensorArrayReadV3\":{let o=I(\"tensorArrayId\",r,e,t),n=I(\"index\",r,e,t);return[t.getTensorArray(o.id).read(n)]}case\"TensorArrayGatherV3\":{let o=I(\"tensorArrayId\",r,e,t),n=I(\"indices\",r,e,t),s=I(\"dtype\",r,e,t);return[t.getTensorArray(o.id).gather(n,s)]}case\"TensorArrayScatterV3\":{let o=I(\"tensorArrayId\",r,e,t),n=I(\"indices\",r,e,t),s=I(\"tensor\",r,e,t),a=t.getTensorArray(o.id);return a.scatter(n,s),[a.idTensor]}case\"TensorArrayConcatV3\":{let o=I(\"tensorArrayId\",r,e,t),n=t.getTensorArray(o.id),s=I(\"dtype\",r,e,t);return[n.concat(s)]}case\"TensorArraySplitV3\":{let o=I(\"tensorArrayId\",r,e,t),n=I(\"tensor\",r,e,t),s=I(\"lengths\",r,e,t),a=t.getTensorArray(o.id);return a.split(s,n),[a.idTensor]}case\"TensorArraySizeV3\":{let o=I(\"tensorArrayId\",r,e,t),n=t.getTensorArray(o.id);return[ke(n.size(),\"int32\")]}case\"TensorArrayCloseV3\":{let o=I(\"tensorArrayId\",r,e,t),n=t.getTensorArray(o.id);return n.clearAndClose(),[n.idTensor]}case\"TensorListSetItem\":{let o=I(\"tensorListId\",r,e,t),n=I(\"index\",r,e,t),s=I(\"tensor\",r,e,t),a=t.getTensorList(o.id);return a.setItem(n,s),[a.idTensor]}case\"TensorListGetItem\":{let o=I(\"tensorListId\",r,e,t),n=I(\"index\",r,e,t),s=I(\"elementShape\",r,e,t),a=I(\"elementDType\",r,e,t);return[t.getTensorList(o.id).getItem(n,s,a)]}case\"TensorListScatterV2\":case\"TensorListScatter\":{let o=I(\"indices\",r,e,t),n=I(\"tensor\",r,e,t),s=I(\"elementShape\",r,e,t),a=I(\"numElements\",r,e,t),i=DT(n,o,s,a);return t.addTensorList(i),[i.idTensor]}case\"TensorListReserve\":case\"EmptyTensorList\":{let o=I(\"elementShape\",r,e,t),n=I(\"elementDType\",r,e,t),s;r.op===\"TensorListReserve\"?s=\"numElements\":s=\"maxNumElements\";let a=I(s,r,e,t),i=r.op===\"TensorListReserve\"?-1:a,p=RT(o,n,a,i);return t.addTensorList(p),[p.idTensor]}case\"TensorListGather\":{let o=I(\"tensorListId\",r,e,t),n=I(\"indices\",r,e,t),s=I(\"elementShape\",r,e,t),a=I(\"elementDType\",r,e,t);return[t.getTensorList(o.id).gather(n,a,s)]}case\"TensorListStack\":{let o=I(\"tensorListId\",r,e,t),n=I(\"elementShape\",r,e,t),s=I(\"elementDType\",r,e,t),a=I(\"numElements\",r,e,t);return[t.getTensorList(o.id).stack(n,s,a)]}case\"TensorListFromTensor\":{let o=I(\"tensor\",r,e,t),n=I(\"elementShape\",r,e,t),s=I(\"elementDType\",r,e,t),a=$T(o,n,s);return t.addTensorList(a),[a.idTensor]}case\"TensorListConcat\":case\"TensorListConcatV2\":{let o=I(\"tensorListId\",r,e,t),n=t.getTensorList(o.id),s=I(\"dtype\",r,e,t),a=I(\"elementShape\",r,e,t);return[n.concat(s,a)]}case\"TensorListPushBack\":{let o=I(\"tensorListId\",r,e,t),n=I(\"tensor\",r,e,t),s=t.getTensorList(o.id);return s.pushBack(n),[s.idTensor]}case\"TensorListPopBack\":{let o=I(\"tensorListId\",r,e,t),n=I(\"elementShape\",r,e,t),s=I(\"elementDType\",r,e,t);return[t.getTensorList(o.id).popBack(n,s)]}case\"TensorListSplit\":{let o=I(\"tensor\",r,e,t),n=I(\"elementShape\",r,e,t),s=I(\"lengths\",r,e,t),a=AT(o,s,n);return t.addTensorList(a),[a.idTensor]}case\"TensorListLength\":{let o=I(\"tensorListId\",r,e,t),n=t.getTensorList(o.id);return[ke(n.size(),\"int32\")]}case\"TensorListResize\":{let o=I(\"tensorListId\",r,e,t),n=I(\"size\",r,e,t),a=t.getTensorList(o.id).resize(n);return t.addTensorList(a),[a.idTensor]}default:throw TypeError(`Node type ${r.op} is not implemented`)}};function PT(r,e,t){let[o,n]=I(\"fusedOps\",r,e,t),s=o===\"biasadd\",a=!s,i=n===\"prelu\",p=o===\"fusedbatchnorm\",u=I(\"numArgs\",r,e,t);if(s){if(i&&u!==2)throw new Error(\"FusedConv2d and DepthwiseConv2d with BiasAdd and Prelu must have two extra arguments: bias and alpha.\");if(!i&&s&&u!==1)throw new Error(\"FusedConv2d and DepthwiseConv2d with BiasAdd must have one extra argument: bias.\")}if(p)throw new Error(\"FusedConv2d and DepthwiseConv2d with FusedBatchNorm is not supported\");let c=I(\"strides\",r,e,t),l=Pl(r,e,t),m=I(\"dataFormat\",r,e,t).toUpperCase(),d=I(\"dilations\",r,e,t),[f,h]=I(\"args\",r,e,t);a&&(h=f,f=void 0);let g=I(\"leakyreluAlpha\",r,e,t);return{stride:c,pad:l,dataFormat:m,dilations:d,biasArg:f,preluArg:h,activationFunc:n,leakyreluAlpha:g}}var OT=(r,e,t,o=Je)=>{switch(r.op){case\"Conv1D\":{let n=I(\"stride\",r,e,t),s=I(\"pad\",r,e,t),a=I(\"dataFormat\",r,e,t).toUpperCase(),i=I(\"dilation\",r,e,t);return[o.conv1d(I(\"x\",r,e,t),I(\"filter\",r,e,t),n,s,a,i)]}case\"Conv2D\":{let n=I(\"strides\",r,e,t),s=Pl(r,e,t),a=I(\"dataFormat\",r,e,t).toUpperCase(),i=I(\"dilations\",r,e,t);return[o.conv2d(I(\"x\",r,e,t),I(\"filter\",r,e,t),[n[1],n[2]],s,a,[i[1],i[2]])]}case\"_FusedConv2D\":{let{stride:n,pad:s,dataFormat:a,dilations:i,biasArg:p,preluArg:u,activationFunc:c,leakyreluAlpha:l}=PT(r,e,t);return[o.fused.conv2d({x:I(\"x\",r,e,t),filter:I(\"filter\",r,e,t),strides:[n[1],n[2]],pad:s,dataFormat:a,dilations:[i[1],i[2]],bias:p,activation:c,preluActivationWeights:u,leakyreluAlpha:l})]}case\"FusedDepthwiseConv2dNative\":{let{stride:n,pad:s,dataFormat:a,dilations:i,biasArg:p,preluArg:u,activationFunc:c,leakyreluAlpha:l}=PT(r,e,t);return[o.fused.depthwiseConv2d({x:I(\"x\",r,e,t),filter:I(\"filter\",r,e,t),strides:[n[1],n[2]],pad:s,dataFormat:a,dilations:[i[1],i[2]],bias:p,activation:c,preluActivationWeights:u,leakyreluAlpha:l})]}case\"Conv2DBackpropInput\":case\"Conv2dTranspose\":{let n=I(\"outputShape\",r,e,t),s=I(\"strides\",r,e,t),a=Pl(r,e,t);return[o.conv2dTranspose(I(\"x\",r,e,t),I(\"filter\",r,e,t),n,[s[1],s[2]],a)]}case\"DepthwiseConv2dNative\":case\"DepthwiseConv2d\":{let n=I(\"strides\",r,e,t),s=Pl(r,e,t),a=I(\"dilations\",r,e,t),i=I(\"dataFormat\",r,e,t).toUpperCase();return[o.depthwiseConv2d(I(\"input\",r,e,t),I(\"filter\",r,e,t),[n[1],n[2]],s,i,[a[1],a[2]])]}case\"Conv3D\":{let n=I(\"strides\",r,e,t),s=I(\"pad\",r,e,t),a=I(\"dataFormat\",r,e,t).toUpperCase(),i=I(\"dilations\",r,e,t);return[o.conv3d(I(\"x\",r,e,t),I(\"filter\",r,e,t),[n[1],n[2],n[3]],s,a,[i[1],i[2],i[3]])]}case\"AvgPool\":{let n=I(\"strides\",r,e,t),s=I(\"pad\",r,e,t),a=I(\"kernelSize\",r,e,t);return[o.avgPool(I(\"x\",r,e,t),[a[1],a[2]],[n[1],n[2]],s)]}case\"MaxPool\":{let n=I(\"strides\",r,e,t),s=I(\"pad\",r,e,t),a=I(\"kernelSize\",r,e,t);return[o.maxPool(I(\"x\",r,e,t),[a[1],a[2]],[n[1],n[2]],s)]}case\"MaxPoolWithArgmax\":{let n=I(\"strides\",r,e,t),s=I(\"pad\",r,e,t),a=I(\"kernelSize\",r,e,t),i=I(\"includeBatchInIndex\",r,e,t),{result:p,indexes:u}=o.maxPoolWithArgmax(I(\"x\",r,e,t),[a[1],a[2]],[n[1],n[2]],s,i);return[p,u]}case\"AvgPool3D\":{let n=I(\"strides\",r,e,t),s=I(\"pad\",r,e,t),a=I(\"kernelSize\",r,e,t);return[o.avgPool3d(I(\"x\",r,e,t),[a[1],a[2],a[3]],[n[1],n[2],n[3]],s)]}case\"MaxPool3D\":{let n=I(\"strides\",r,e,t),s=I(\"pad\",r,e,t),a=I(\"kernelSize\",r,e,t);return[o.maxPool3d(I(\"x\",r,e,t),[a[1],a[2],a[3]],[n[1],n[2],n[3]],s)]}case\"Dilation2D\":{let n=I(\"strides\",r,e,t),s=I(\"pad\",r,e,t),a=I(\"dilations\",r,e,t),i=n[1],p=n[2],u=a[1],c=a[2];return[o.dilation2d(I(\"x\",r,e,t),I(\"filter\",r,e,t),[i,p],s,[u,c],\"NHWC\")]}default:throw TypeError(`Node type ${r.op} is not implemented`)}};var MT=(r,e,t,o=Je)=>{switch(r.op){case\"Fill\":{let n=I(\"shape\",r,e,t),s=I(\"dtype\",r,e,t),a=I(\"value\",r,e,t);return[o.fill(n,a,s)]}case\"LinSpace\":{let n=I(\"start\",r,e,t),s=I(\"stop\",r,e,t),a=I(\"num\",r,e,t);return[o.linspace(n,s,a)]}case\"Multinomial\":{let n=I(\"logits\",r,e,t),s=I(\"numSamples\",r,e,t),a=I(\"seed\",r,e,t);return[o.multinomial(n,s,a)]}case\"OneHot\":{let n=I(\"indices\",r,e,t),s=I(\"depth\",r,e,t),a=I(\"onValue\",r,e,t),i=I(\"offValue\",r,e,t),p=I(\"dtype\",r,e,t);return[o.oneHot(n,s,a,i,p)]}case\"Ones\":return[o.ones(I(\"shape\",r,e,t),I(\"dtype\",r,e,t))];case\"OnesLike\":return[o.onesLike(I(\"x\",r,e,t))];case\"RandomStandardNormal\":return[o.randomStandardNormal(I(\"shape\",r,e,t),I(\"dtype\",r,e,t),I(\"seed\",r,e,t))];case\"RandomUniform\":return[o.randomUniform(I(\"shape\",r,e,t),I(\"minval\",r,e,t),I(\"maxval\",r,e,t),I(\"dtype\",r,e,t))];case\"RandomUniformInt\":return[o.randomUniformInt(I(\"shape\",r,e,t),I(\"minval\",r,e,t),I(\"maxval\",r,e,t),I(\"seed\",r,e,t))];case\"Range\":{let n=I(\"start\",r,e,t),s=I(\"stop\",r,e,t),a=I(\"step\",r,e,t);return[o.range(n,s,a,I(\"dtype\",r,e,t))]}case\"TruncatedNormal\":{let n=I(\"shape\",r,e,t),s=I(\"mean\",r,e,t),a=I(\"stdDev\",r,e,t),i=I(\"seed\",r,e,t);return[o.truncatedNormal(n,s,a,I(\"dtype\",r,e,t),i)]}case\"Zeros\":return[o.zeros(I(\"shape\",r,e,t),I(\"dtype\",r,e,t))];case\"ZerosLike\":return[o.zerosLike(I(\"x\",r,e,t))];default:throw TypeError(`Node type ${r.op} is not implemented`)}};function OS(r,e,t){let o=I(\"boxes\",r,e,t),n=I(\"scores\",r,e,t),s=I(\"maxOutputSize\",r,e,t),a=I(\"iouThreshold\",r,e,t),i=I(\"scoreThreshold\",r,e,t),p=I(\"softNmsSigma\",r,e,t);return{boxes:o,scores:n,maxOutputSize:s,iouThreshold:a,scoreThreshold:i,softNmsSigma:p}}var LT=async(r,e,t,o,n=Je)=>{switch(r.op){case\"NonMaxSuppressionV5\":{let{boxes:s,scores:a,maxOutputSize:i,iouThreshold:p,scoreThreshold:u,softNmsSigma:c}=OS(r,e,t),l=await n.image.nonMaxSuppressionWithScoreAsync(s,a,i,p,u,c);return[l.selectedIndices,l.selectedScores]}case\"NonMaxSuppressionV4\":{let{boxes:s,scores:a,maxOutputSize:i,iouThreshold:p,scoreThreshold:u}=OS(r,e,t),c=I(\"padToMaxOutputSize\",r,e,t),l=await n.image.nonMaxSuppressionPaddedAsync(s,a,i,p,u,c);return[l.selectedIndices,l.validOutputs]}case\"NonMaxSuppressionV3\":case\"NonMaxSuppressionV2\":{let{boxes:s,scores:a,maxOutputSize:i,iouThreshold:p,scoreThreshold:u}=OS(r,e,t);return[await n.image.nonMaxSuppressionAsync(s,a,i,p,u)]}case\"Where\":{let s=n.cast(I(\"condition\",r,e,t),\"bool\"),a=[await n.whereAsync(s)];return s.dispose(),a}case\"ListDiff\":return n.setdiff1dAsync(I(\"x\",r,e,t),I(\"y\",r,e,t));default:throw TypeError(`Node type ${r.op} is not implemented`)}};var BT=(r,e,t,o=Je)=>{switch(r.op){case\"LowerBound\":{let n=I(\"sortedSequence\",r,e,t),s=I(\"values\",r,e,t);return[o.lowerBound(n,s)]}case\"TopKV2\":{let n=I(\"x\",r,e,t),s=I(\"k\",r,e,t),a=I(\"sorted\",r,e,t),i=o.topk(n,s,a);return[i.values,i.indices]}case\"UpperBound\":{let n=I(\"sortedSequence\",r,e,t),s=I(\"values\",r,e,t);return[o.upperBound(n,s)]}case\"Unique\":{let n=I(\"x\",r,e,t),s=o.unique(n);return[s.values,s.indices]}case\"UniqueV2\":{let n=I(\"x\",r,e,t),s=I(\"axis\",r,e,t),a=o.unique(n,s);return[a.values,a.indices]}default:throw TypeError(`Node type ${r.op} is not implemented`)}};var zT=(r,e,t,o=Je)=>{switch(r.op){case\"Const\":return e[r.name];case\"PlaceholderWithDefault\":let n=I(\"default\",r,e,t);return[Bt(r.name,e,t)||n];case\"Placeholder\":return[Bt(r.name,e,t)];case\"Identity\":case\"StopGradient\":case\"FakeQuantWithMinMaxVars\":{let c=I(\"x\",r,e,t);return[Bs(c)]}case\"IdentityN\":return I(\"x\",r,e,t).map(c=>Bs(c));case\"Snapshot\":let s=I(\"x\",r,e,t);return[Bs(s)];case\"Shape\":return[o.tensor1d(I(\"x\",r,e,t).shape,\"int32\")];case\"ShapeN\":return I(\"x\",r,e,t).map(c=>o.tensor1d(c.shape));case\"Size\":return[o.scalar(I(\"x\",r,e,t).size,\"int32\")];case\"Rank\":return[o.scalar(I(\"x\",r,e,t).rank,\"int32\")];case\"NoOp\":return[o.scalar(1)];case\"Print\":let a=I(\"x\",r,e,t),i=I(\"data\",r,e,t),p=I(\"message\",r,e,t),u=I(\"summarize\",r,e,t);console.warn(\"The graph has a tf.print() operation,usually used for debugging, which slows down performance.\"),console.log(p);for(let c=0;ce.dispose()),this.tensorMap.clear(),this.handle.dispose()}size(){return this.tensorMap.size}tensorSize(){return ke(this.size(),\"int32\")}async import(e,t){this.checkKeyAndValueTensor(e,t);let o=await e.data();return this.tensorMap.forEach(n=>n.dispose()),this.tensorMap.clear(),De(()=>{let n=fo(t),s=o.length,a=n.length;y.assert(s===a,()=>`The number of elements doesn't match, keys has ${s} elements, the values has ${a} elements.`);for(let i=0;i{let n=[];for(let s=0;s{switch(r.op){case\"HashTable\":case\"HashTableV2\":{let n=o.getHashTableHandleByName(r.name);if(n!=null)return[n];{let s=I(\"keyDType\",r,e,t),a=I(\"valueDType\",r,e,t),i=new vf(s,a);return o.addHashTable(r.name,i),[i.handle]}}case\"InitializeTable\":case\"InitializeTableV2\":case\"LookupTableImport\":case\"LookupTableImportV2\":{let n=I(\"tableHandle\",r,e,t,o),s=I(\"keys\",r,e,t),a=I(\"values\",r,e,t);return[await o.getHashTableById(n.id).import(s,a)]}case\"LookupTableFind\":case\"LookupTableFindV2\":{let n=I(\"tableHandle\",r,e,t,o),s=I(\"keys\",r,e,t),a=I(\"defaultValue\",r,e,t);return[await o.getHashTableById(n.id).find(s,a)]}case\"LookupTableSize\":case\"LookupTableSizeV2\":{let n=I(\"tableHandle\",r,e,t,o);return[o.getHashTableById(n.id).tensorSize()]}default:throw TypeError(`Node type ${r.op} is not implemented`)}};var WT=(r,e,t,o=Je)=>{switch(r.op){case\"ResizeBilinear\":{let n=I(\"images\",r,e,t),s=I(\"size\",r,e,t),a=I(\"alignCorners\",r,e,t),i=I(\"halfPixelCenters\",r,e,t);return[o.image.resizeBilinear(n,[s[0],s[1]],a,i)]}case\"ResizeNearestNeighbor\":{let n=I(\"images\",r,e,t),s=I(\"size\",r,e,t),a=I(\"alignCorners\",r,e,t),i=I(\"halfPixelCenters\",r,e,t);return[o.image.resizeNearestNeighbor(n,[s[0],s[1]],a,i)]}case\"CropAndResize\":{let n=I(\"image\",r,e,t),s=I(\"boxes\",r,e,t),a=I(\"boxInd\",r,e,t),i=I(\"cropSize\",r,e,t),p=I(\"method\",r,e,t),u=I(\"extrapolationValue\",r,e,t);return[o.image.cropAndResize(n,s,a,i,p,u)]}case\"ImageProjectiveTransformV3\":{let n=I(\"images\",r,e,t),s=I(\"transforms\",r,e,t),a=I(\"outputShape\",r,e,t),i=I(\"fillValue\",r,e,t),p=I(\"interpolation\",r,e,t),u=I(\"fillMode\",r,e,t);return[o.image.transform(n,s,p.toLowerCase(),u.toLowerCase(),i,a)]}default:throw TypeError(`Node type ${r.op} is not implemented`)}};var UT=(r,e,t,o=Je)=>{switch(r.op){case\"Equal\":return[o.equal(I(\"a\",r,e,t),I(\"b\",r,e,t))];case\"NotEqual\":return[o.notEqual(I(\"a\",r,e,t),I(\"b\",r,e,t))];case\"Greater\":return[o.greater(I(\"a\",r,e,t),I(\"b\",r,e,t))];case\"GreaterEqual\":return[o.greaterEqual(I(\"a\",r,e,t),I(\"b\",r,e,t))];case\"Less\":return[o.less(I(\"a\",r,e,t),I(\"b\",r,e,t))];case\"LessEqual\":return[o.lessEqual(I(\"a\",r,e,t),I(\"b\",r,e,t))];case\"LogicalAnd\":return[o.logicalAnd(I(\"a\",r,e,t),I(\"b\",r,e,t))];case\"LogicalNot\":return[o.logicalNot(I(\"a\",r,e,t))];case\"LogicalOr\":return[o.logicalOr(I(\"a\",r,e,t),I(\"b\",r,e,t))];case\"Select\":case\"SelectV2\":return[o.where(I(\"condition\",r,e,t),I(\"a\",r,e,t),I(\"b\",r,e,t))];case\"BitwiseAnd\":return[o.bitwiseAnd(I(\"a\",r,e,t),I(\"b\",r,e,t))];default:throw TypeError(`Node type ${r.op} is not implemented`)}};var GT=(r,e,t,o=Je)=>{switch(r.op){case\"BatchMatMul\":case\"BatchMatMulV2\":case\"MatMul\":return[o.matMul(I(\"a\",r,e,t),I(\"b\",r,e,t),I(\"transposeA\",r,e,t),I(\"transposeB\",r,e,t))];case\"Einsum\":return[o.einsum(I(\"equation\",r,e,t),...I(\"tensors\",r,e,t))];case\"Transpose\":return[o.transpose(I(\"x\",r,e,t),I(\"perm\",r,e,t))];case\"_FusedMatMul\":let[n,s]=I(\"fusedOps\",r,e,t),a=n===\"biasadd\",i=s===\"prelu\",p=I(\"numArgs\",r,e,t),u=I(\"leakyreluAlpha\",r,e,t);if(a){if(i&&p!==2)throw new Error(\"Fused MatMul with BiasAdd and Prelu must have two extra arguments: bias and alpha.\");if(!i&&p!==1)throw new Error(\"Fused MatMul with BiasAdd must have one extra argument: bias.\")}let[c,l]=I(\"args\",r,e,t);return[o.fused.matMul({a:I(\"a\",r,e,t),b:I(\"b\",r,e,t),transposeA:I(\"transposeA\",r,e,t),transposeB:I(\"transposeB\",r,e,t),bias:c,activation:s,preluActivationWeights:l,leakyreluAlpha:u})];case\"MatrixBandPart\":return[o.linalg.bandPart(I(\"a\",r,e,t),I(\"numLower\",r,e,t),I(\"numUpper\",r,e,t))];default:throw TypeError(`Node type ${r.op} is not implemented`)}};var HT=(r,e,t,o=Je)=>{switch(r.op){case\"EuclideanNorm\":return[o.euclideanNorm(I(\"x\",r,e,t),I(\"axis\",r,e,t),I(\"keepDims\",r,e,t))];case\"FusedBatchNorm\":case\"FusedBatchNormV2\":return[o.batchNorm(I(\"x\",r,e,t),I(\"mean\",r,e,t),I(\"variance\",r,e,t),I(\"offset\",r,e,t),I(\"scale\",r,e,t),I(\"epsilon\",r,e,t))];case\"FusedBatchNormV3\":return[o.batchNorm(I(\"x\",r,e,t),I(\"mean\",r,e,t),I(\"variance\",r,e,t),I(\"offset\",r,e,t),I(\"scale\",r,e,t),I(\"epsilon\",r,e,t))];case\"LRN\":return[o.localResponseNormalization(I(\"x\",r,e,t),I(\"radius\",r,e,t),I(\"bias\",r,e,t),I(\"alpha\",r,e,t),I(\"beta\",r,e,t))];case\"Softmax\":return[o.softmax(I(\"x\",r,e,t))];case\"LogSoftmax\":return[o.logSoftmax(I(\"x\",r,e,t))];default:throw TypeError(`Node type ${r.op} is not implemented`)}};var KT=(r,e,t,o=Je)=>{switch(r.op){case\"RaggedGather\":{let{outputNestedSplits:n,outputDenseValues:s}=o.raggedGather(I(\"paramsNestedSplits\",r,e,t),I(\"paramsDenseValues\",r,e,t),I(\"indices\",r,e,t),I(\"outputRaggedRank\",r,e,t));return n.concat(s)}case\"RaggedRange\":{let{rtNestedSplits:n,rtDenseValues:s}=o.raggedRange(I(\"starts\",r,e,t),I(\"limits\",r,e,t),I(\"splits\",r,e,t));return[n,s]}case\"RaggedTensorToTensor\":return[o.raggedTensorToTensor(I(\"shape\",r,e,t),I(\"values\",r,e,t),I(\"defaultValue\",r,e,t),I(\"rowPartitionTensors\",r,e,t),I(\"rowPartitionTypes\",r,e,t))];default:throw TypeError(`Node type ${r.op} is not implemented`)}};var qT=(r,e,t,o=Je)=>{switch(r.op){case\"Max\":{let i=I(\"axis\",r,e,t),p=I(\"keepDims\",r,e,t);return[o.max(I(\"x\",r,e,t),i,p)]}case\"Mean\":{let i=I(\"axis\",r,e,t),p=I(\"keepDims\",r,e,t);return[o.mean(I(\"x\",r,e,t),i,p)]}case\"Min\":{let i=I(\"axis\",r,e,t),p=I(\"keepDims\",r,e,t);return[o.min(I(\"x\",r,e,t),i,p)]}case\"Sum\":{let i=I(\"axis\",r,e,t),p=I(\"keepDims\",r,e,t);return[o.sum(I(\"x\",r,e,t),i,p)]}case\"All\":{let i=I(\"axis\",r,e,t),p=I(\"keepDims\",r,e,t);return[o.all(I(\"x\",r,e,t),i,p)]}case\"Any\":{let i=I(\"axis\",r,e,t),p=I(\"keepDims\",r,e,t);return[o.any(I(\"x\",r,e,t),i,p)]}case\"ArgMax\":{let i=I(\"axis\",r,e,t);return[o.argMax(I(\"x\",r,e,t),i)]}case\"ArgMin\":{let i=I(\"axis\",r,e,t);return[o.argMin(I(\"x\",r,e,t),i)]}case\"Prod\":{let i=I(\"axis\",r,e,t),p=I(\"keepDims\",r,e,t);return[o.prod(I(\"x\",r,e,t),i,p)]}case\"Cumprod\":{let i=I(\"axis\",r,e,t),p=I(\"exclusive\",r,e,t),u=I(\"reverse\",r,e,t);return[o.cumprod(I(\"x\",r,e,t),i,p,u)]}case\"Cumsum\":{let i=I(\"axis\",r,e,t),p=I(\"exclusive\",r,e,t),u=I(\"reverse\",r,e,t);return[o.cumsum(I(\"x\",r,e,t),i,p,u)]}case\"Bincount\":let n=I(\"x\",r,e,t),s=I(\"weights\",r,e,t),a=I(\"size\",r,e,t);return[o.bincount(n,s,a)];case\"DenseBincount\":{let i=I(\"x\",r,e,t),p=I(\"weights\",r,e,t),u=I(\"size\",r,e,t),c=I(\"binaryOutput\",r,e,t);return[o.denseBincount(i,p,u,c)]}default:throw TypeError(`Node type ${r.op} is not implemented`)}};var jT=(r,e,t,o=Je)=>{switch(r.op){case\"ConcatV2\":case\"Concat\":{let n=I(\"n\",r,e,t),s=I(\"axis\",r,e,t),a=I(\"tensors\",r,e,t);return a=a.slice(0,n),[o.concat(a,s)]}case\"Gather\":{let n=I(\"x\",r,e,t),s=I(\"indices\",r,e,t);return[o.gather(n,o.cast(s,\"int32\"),0)]}case\"GatherV2\":{let n=I(\"axis\",r,e,t),s=I(\"batchDims\",r,e,t),a=I(\"x\",r,e,t),i=I(\"indices\",r,e,t);return[o.gather(a,o.cast(i,\"int32\"),n,s)]}case\"Reverse\":{let n=I(\"dims\",r,e,t),s=[];for(let i=0;i{let n=I(\"axis\",r,e,t),s=I(\"tensors\",r,e,t),a=s[0].shape,i=o.squeeze(s[0]).shape,p=s.map(u=>{let c=y.arraysEqual(u.shape,a);if(!c&&!y.arraysEqual(o.squeeze(u).shape,i))throw new Error(\"the input tensors shape does not match\");return c?u:o.reshape(u,a)});return[o.stack(p,n)]});case\"Unpack\":{let n=I(\"axis\",r,e,t),s=I(\"tensor\",r,e,t);return o.unstack(s,n)}case\"Tile\":{let n=I(\"reps\",r,e,t);return[o.tile(I(\"x\",r,e,t),n)]}case\"Split\":case\"SplitV\":{let n=I(\"axis\",r,e,t),s=I(\"numOrSizeSplits\",r,e,t),a=I(\"x\",r,e,t);return o.split(a,s,n)}case\"ScatterNd\":{let n=I(\"indices\",r,e,t),s=I(\"values\",r,e,t),a=I(\"shape\",r,e,t);return[o.scatterND(n,s,a)]}case\"GatherNd\":{let n=I(\"x\",r,e,t),s=I(\"indices\",r,e,t);return[o.gatherND(n,s)]}case\"SparseToDense\":{let n=I(\"sparseIndices\",r,e,t),s=I(\"outputShape\",r,e,t),a=I(\"sparseValues\",r,e,t),i=I(\"defaultValue\",r,e,t);return[o.sparseToDense(n,a,s,a.dtype===i.dtype?i:o.cast(i,a.dtype))]}case\"TensorScatterUpdate\":{let n=I(\"indices\",r,e,t),s=I(\"values\",r,e,t),a=I(\"tensor\",r,e,t);return[o.tensorScatterUpdate(a,n,s)]}default:throw TypeError(`Node type ${r.op} is not implemented`)}};var XT=(r,e,t,o=Je)=>{switch(r.op){case\"SparseFillEmptyRows\":{let{outputIndices:n,outputValues:s,emptyRowIndicator:a,reverseIndexMap:i}=o.sparse.sparseFillEmptyRows(I(\"indices\",r,e,t),I(\"values\",r,e,t),I(\"denseShape\",r,e,t),I(\"defaultValue\",r,e,t));return[n,s,a,i]}case\"SparseReshape\":{let{outputIndices:n,outputShape:s}=o.sparse.sparseReshape(I(\"inputIndices\",r,e,t),I(\"inputShape\",r,e,t),I(\"newShape\",r,e,t));return[n,s]}case\"SparseSegmentMean\":return[o.sparse.sparseSegmentMean(I(\"data\",r,e,t),I(\"indices\",r,e,t),I(\"segmentIds\",r,e,t))];case\"SparseSegmentSum\":return[o.sparse.sparseSegmentSum(I(\"data\",r,e,t),I(\"indices\",r,e,t),I(\"segmentIds\",r,e,t))];default:throw TypeError(`Node type ${r.op} is not implemented`)}};var YT=(r,e,t,o=Je)=>{switch(r.op){case\"FFT\":return[o.fft(I(\"x\",r,e,t))];case\"IFFT\":return[o.ifft(I(\"x\",r,e,t))];case\"RFFT\":return[o.rfft(I(\"x\",r,e,t))];case\"IRFFT\":return[o.irfft(I(\"x\",r,e,t))];default:throw TypeError(`Node type ${r.op} is not implemented`)}};var QT=(r,e,t,o=Je)=>{switch(r.op){case\"StaticRegexReplace\":return[o.string.staticRegexReplace(I(\"input\",r,e,t),I(\"pattern\",r,e,t),I(\"rewrite\",r,e,t),I(\"replaceGlobal\",r,e,t))];case\"StringNGrams\":{let{nGrams:n,nGramsSplits:s}=o.string.stringNGrams(I(\"data\",r,e,t),I(\"dataSplits\",r,e,t),I(\"separator\",r,e,t),I(\"nGramWidths\",r,e,t),I(\"leftPad\",r,e,t),I(\"rightPad\",r,e,t),I(\"padWidth\",r,e,t),I(\"preserveShortSequences\",r,e,t));return[n,s]}case\"StringSplit\":{let{indices:n,values:s,shape:a}=o.string.stringSplit(I(\"input\",r,e,t),I(\"delimiter\",r,e,t),I(\"skipEmpty\",r,e,t));return[n,s,a]}case\"StringToHashBucketFast\":return[o.string.stringToHashBucketFast(I(\"input\",r,e,t),I(\"numBuckets\",r,e,t))];default:throw TypeError(`Node type ${r.op} is not implemented`)}};var ZT=(r,e,t,o=Je)=>{switch(r.op){case\"Cast\":return[o.cast(I(\"x\",r,e,t),I(\"dtype\",r,e,t))];case\"ExpandDims\":{let n=I(\"axis\",r,e,t);return[o.expandDims(I(\"x\",r,e,t),n)]}case\"Squeeze\":{let n=I(\"axis\",r,e,t);return[o.squeeze(I(\"x\",r,e,t),n)]}case\"Reshape\":return[o.reshape(I(\"x\",r,e,t),I(\"shape\",r,e,t))];case\"EnsureShape\":return[o.ensureShape(I(\"x\",r,e,t),I(\"shape\",r,e,t))];case\"MirrorPad\":return[o.mirrorPad(I(\"x\",r,e,t),I(\"padding\",r,e,t),I(\"mode\",r,e,t))];case\"PadV2\":case\"Pad\":return[o.pad(I(\"x\",r,e,t),I(\"padding\",r,e,t),I(\"constantValue\",r,e,t))];case\"SpaceToBatchND\":{let n=I(\"blockShape\",r,e,t),s=I(\"paddings\",r,e,t);return[o.spaceToBatchND(I(\"x\",r,e,t),n,s)]}case\"BatchToSpaceND\":{let n=I(\"blockShape\",r,e,t),s=I(\"crops\",r,e,t);return[o.batchToSpaceND(I(\"x\",r,e,t),n,s)]}case\"DepthToSpace\":{let n=I(\"blockSize\",r,e,t),s=I(\"dataFormat\",r,e,t).toUpperCase();return[o.depthToSpace(I(\"x\",r,e,t),n,s)]}case\"BroadcastTo\":return[o.broadcastTo(I(\"x\",r,e,t),I(\"shape\",r,e,t))];case\"BroadcastArgs\":return[o.broadcastArgs(I(\"s0\",r,e,t),I(\"s1\",r,e,t))];default:throw TypeError(`Node type ${r.op} is not implemented`)}};function MS(r,e,t,o,n=De){let s=((a,i,p)=>{switch(a.category){case\"arithmetic\":return n(()=>TT(a,i,p));case\"basic_math\":return n(()=>_T(a,i,p));case\"control\":return FT(a,i,p);case\"convolution\":return n(()=>OT(a,i,p));case\"creation\":return n(()=>MT(a,i,p));case\"dynamic\":return LT(a,i,p);case\"evaluation\":return n(()=>BT(a,i,p));case\"image\":return n(()=>WT(a,i,p));case\"graph\":return n(()=>zT(a,i,p));case\"logical\":return n(()=>UT(a,i,p));case\"matrices\":return n(()=>GT(a,i,p));case\"normalization\":return n(()=>HT(a,i,p));case\"ragged\":return n(()=>KT(a,i,p));case\"reduction\":return n(()=>qT(a,i,p));case\"slice_join\":return n(()=>jT(a,i,p));case\"sparse\":return n(()=>XT(a,i,p));case\"spectral\":return n(()=>YT(a,i,p));case\"string\":return n(()=>QT(a,i,p));case\"transformation\":return n(()=>ZT(a,i,p));case\"hash_table\":return VT(a,i,p,o);case\"custom\":let u=pf(a.op);if(u&&u.customExecutor)return u.customExecutor(new wf(a,i,p));throw TypeError(`Custom op ${a.op} is not registered.`);default:throw TypeError(`Unknown op '${a.op}'. File an issue at https://github.com/tensorflow/tfjs/issues so we can add it, or register a custom execution with tf.registerOp()`)}})(r,e,t);return y.isPromise(s)?s.then(a=>[].concat(a)):[].concat(s)}var Ml=class{constructor(e={},t={},o={},n={},s){this.weightMap=e,this.tensorArrayMap=t,this.tensorListMap=o,this.functionMap=n,this.parseNodeNameCache=s,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(){let e=[];for(let t=0;tt.id===0&&t.iterationId===0?\"\":`${t.frameName}-${t.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)this.contexts=this.contexts.slice(),this.contexts.splice(-1),this.currentContextIds.shift();else throw new Error(\"Cannot exit frame, the context is empty\")}nextIteration(){if(this.contexts&&this.contexts.length>0){this.contexts=this.contexts.slice(),this.lastId++;let 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))}else throw new Error(\"Cannot increase frame iteration, the context is empty\")}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(let t in this.tensorArrayMap)this.tensorArrayMap[t].clearAndClose(e);for(let t in this.tensorListMap)this.tensorListMap[t].clearAndClose(e)}};function LS(r,e,t,o){let n=new Set,s=[],a=null,i=null,p=new Set,u=new Set(Object.keys(r).map(m=>Nr(m)[0]));o=o||[];let c=new Set(o.map(m=>Nr(m.name)[0])),l=[...e];for(;l.length>0;){let m=l.pop();if((fu(m)||A8(m)||F8(m))&&a==null&&(a=m,i=a.children.map(d=>d.name).filter(d=>n.has(d))),n.add(m.name),t[m.name]==null&&!u.has(m.name)&&!c.has(m.name)){if(m.inputs.length===0){s.push(m.name);continue}m.inputs.forEach(d=>{p.has(d.name)||(p.add(d.name),l.push(d))})}}return{inputs:r,outputs:e,usedNodes:n,missingInputs:s,dynamicNode:a,syncInputs:i}}function JT(r,e){let{usedNodes:t,inputs:o}=e,n=Object.keys(o).map(g=>Nr(g)[0]).map(g=>r.nodes[g]),s=r.initNodes||[],a=g=>t.has(typeof g==\"string\"?g:g.name);function i(g){return[...new Map(g.map(x=>[x.name,x])).values()]}let p=i([...n,...r.weights,...s]).filter(a),u=i([...p,...Object.values(r.nodes)]).filter(a),c=new Map(u.map(g=>[g.name,g])),l={};for(let g of u){l[g.name]=l[g.name]||0;for(let x of g.children)a(x)||(l[x.name]=Number.POSITIVE_INFINITY),l[x.name]=(l[x.name]||0)+1}let m=Object.entries(l).filter(([,g])=>g===0).map(([g])=>g),d=[...m];for(;m.length>0;){let g=m.pop(),x=c.get(g);for(let b of x.children.filter(a))--l[b.name]===0&&(d.push(b.name),m.push(b.name))}let f=d.map(g=>c.get(g)),h=_8(f,p);return E8(h,p),h}function _8(r,e){let t=new Map(r.map(a=>[a.name,a])),o=e.map(a=>a.name),n=new Set(o);for(;o.length>0;){let a=o.pop(),i=t.get(a);for(let p of i.children)!t.has(p.name)||n.has(p.name)||(n.add(p.name),o.push(p.name))}return r.filter(a=>n.has(a.name))}var gc=class extends Error{constructor(e){super(`NodesExecutionOrderError: ${e}`)}};function E8(r,e){let t=new Map(r.map((i,p)=>[i.name,p])),o=new Set(e.map(i=>i.name)),n=i=>o.has(typeof i==\"string\"?i:i.name),s=new Set(r.map(i=>i.name)),a=i=>s.has(typeof i==\"string\"?i:i.name);for(let i of r){for(let p of i.children.filter(a)){if(!t.has(p.name))throw new gc(`Child ${p.name} of node ${i.name} is unreachable.`);if(t.get(i.name)>t.get(p.name))throw new gc(`Node ${i.name} is scheduled to run after its child ${p.name}.`)}if(!n(i))for(let p of i.inputs){if(!t.has(p.name))throw new gc(`Input ${p.name} of node ${i.name} is unreachable.`);if(t.get(p.name)>t.get(i.name))throw new gc(`Node ${i.name} is scheduled to run before its input ${p.name}.`)}}}function e_(r){let e=new Map(r.map((i,p)=>[i.name,p])),t=Number.MAX_SAFE_INTEGER,o=r.map((i,p)=>fu(i)?t:p),n=i=>{let p=o[e.get(i.name)];return p==null?-1:p},s=r.map((i,p)=>i.children.map(n).reduce((u,c)=>Math.max(u,c),o[p])),a=new Map;for(let i=0;ie[o].map(n=>n.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=>{let 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),{})}constructor(e,t){this.graph=e,this.parent=t,this.compiledMap=new Map,this.parseNodeNameCache=new Map,this._weightMap={},this.SEPARATOR=\",\",this._functions={},this._functionExecutorMap={},this.keepIntermediateTensors=!1,this._outputs=e.outputs,this._inputs=e.inputs,this._initNodes=e.initNodes,this._signature=e.signature,this._functions=e.functions,e.functions!=null&&Object.keys(e.functions).forEach(o=>{this._functionExecutorMap[o]=new r(e.functions[o],this)})}getCompilationKey(e,t){let o=e.map(s=>s.name).sort(),n=t.map(s=>s.name).sort();return o.join(this.SEPARATOR)+\"--\"+n.join(this.SEPARATOR)}compile(e,t){let o=LS(e,t,this.weightMap,this._initNodes),{missingInputs:n,dynamicNode:s,syncInputs:a}=o;if(s!=null)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(n.length>0){let u=t.map(l=>l.name),c=Object.keys(e);throw new Error(`Cannot compute the outputs [${u}] from the provided inputs [${c}]. Missing the following inputs: [${n}]`)}let i=JT(this.graph,o),p=e_(i);return{orderedNodes:i,nodeLiveUntilMap:p}}cloneAndKeepTensor(e){if(e==null)return null;let t=e.clone();return $r(t),t}cloneTensorList(e){return e?e.map(o=>this.cloneAndKeepTensor(o)):null}cloneTensorMap(e){return Object.fromEntries(Object.entries(e).map(([t,o])=>[t,this.cloneTensorList(o)]))}execute(e,t){this.disposeIntermediateTensors(),e=this.mapInputs(e);let o=Object.keys(e).sort();this.checkInputs(e),this.checkInputShapeAndType(e),t=this.mapOutputs(t),this.checkOutputs(t);let n=o.map(m=>this.graph.nodes[Nr(m)[0]]),s=t.map(m=>Nr(m)[0]),a=new Set(s),i=s.map(m=>this.graph.nodes[m]);i.length===0&&(i=this._outputs);let p=this.getCompilationKey(n,i),u=this.compiledMap.get(p);u==null&&(u=this.compile(e,i),this.compiledMap.set(p,u));try{this.keepIntermediateTensors=A().getBool(\"KEEP_INTERMEDIATE_TENSORS\")}catch(m){this.keepIntermediateTensors=!1,console.warn(m.message)}let c={},l={};return De(()=>{let m=new Ml(this.weightMap,c,l,this.functionExecutorMap,this.parseNodeNameCache),d=Object.assign({},this.weightMap);this.keepIntermediateTensors&&(this.clonedTensorsMap=this.cloneTensorMap(this.weightMap)),Object.keys(e).forEach(x=>{let[b,C]=Nr(x,m),S=[];S[C]=e[x],d[b]=S,this.keepIntermediateTensors&&(this.clonedTensorsMap[b]=this.cloneTensorList(S))});let f=this.getFrozenTensorIds(d),{orderedNodes:h,nodeLiveUntilMap:g}=u;for(let x of h){if(d[x.name])continue;let b=MS(x,d,m,this._resourceManager);if(y.isPromise(b))throw new Error(`The execution of the op '${x.op}' returned a promise. Please use model.executeAsync() instead.`);d[x.name]=b,this.keepIntermediateTensors&&(this.clonedTensorsMap[x.name]=this.cloneTensorList(b)),this.checkTensorForDisposalWithNodeLiveUntilInfo(x,d,m,f,a,g.get(x.name))}return this.parent==null&&m.dispose(f),t.map(x=>Bt(x,d,m))})}getFrozenTensorIds(e){let t=[].concat.apply([],Object.keys(e).map(o=>e[o]).map(o=>o.map(n=>n.id)));return new Set(t)}checkTensorForDisposal(e,t,o,n,s,a,i){if(!(fu(t)||a.has(e))){for(let p of o[e])p!=null&&(i[p.id]=(i[p.id]||0)+t.children.length);for(let p of t.inputs){if(fu(p))continue;let u=hS(p.name,o,n);if(u!=null)for(let c of u){if(!c||c.kept||s.has(c.id))continue;let l=i[c.id];l===1?(c.dispose(),delete i[c.id]):l!=null&&i[c.id]--}}}}checkTensorForDisposalWithNodeLiveUntilInfo(e,t,o,n,s,a){function i(p){return fu(p)||s.has(p.name)}if(!(fu(e)||a==null))for(let p of a){if(i(p))continue;let u=hS(p.name,t,o);for(let c of u)!c||c.kept||n.has(c.id)||c.dispose()}}async executeAsync(e,t){return this._executeAsync(e,t)}disposeIntermediateTensors(){this.clonedTensorsMap&&(Object.values(this.clonedTensorsMap).forEach(e=>{for(let t of e)t&&!t.isDisposed&&t.dispose()}),this.clonedTensorsMap=null)}getIntermediateTensors(){return this.clonedTensorsMap}async _executeAsync(e,t,o=!1,n={},s={}){this.disposeIntermediateTensors(),o||(e=this.mapInputs(e),this.checkInputs(e),this.checkInputShapeAndType(e),t=this.mapOutputs(t),this.checkOutputs(t));try{this.keepIntermediateTensors=A().getBool(\"KEEP_INTERMEDIATE_TENSORS\")}catch(m){this.keepIntermediateTensors=!1,console.warn(m.message)}let a=new Ml(this.weightMap,n,s,this.functionExecutorMap,this.parseNodeNameCache);this.keepIntermediateTensors&&(this.clonedTensorsMap=this.cloneTensorMap(this.weightMap));let i=await this.executeWithControlFlow(e,a,t,o),p=t.map(m=>Bt(m,i,a)),u=p.map(m=>m.id),c=Object.keys(e).map(m=>e[m].id),l=new Set([...u,...c,...this.weightIds]);return Object.values(i).forEach(m=>{m.forEach(d=>{d&&!d.isDisposed&&!l.has(d.id)&&d.dispose()})}),this.parent==null&&a.dispose(l),p}async executeFunctionAsync(e,t,o){let n=e.reduce((s,a,i)=>(s[this.inputs[i].name]=a,s),{});return this._executeAsync(n,this.outputNodes,!0,t,o)}async executeWithControlFlow(e,t,o,n){let s=Object.keys(e),a=s.map(S=>this.graph.nodes[Nr(S)[0]]),i=o.map(S=>Nr(S)[0]),p=new Set(i),u=i.map(S=>this.graph.nodes[S]);u.length===0&&(u=this._outputs);let{usedNodes:c,missingInputs:l,dynamicNode:m,syncInputs:d}=LS(e,u,this.weightMap,this._initNodes),f=[...a,...this.graph.weights,...this._initNodes||[]].map(S=>({node:S,contexts:t.currentContext})),h=Object.assign({},this.weightMap);Object.keys(e).forEach(S=>{let[k,_]=Nr(S),$=[];$[_]=e[S],h[k]=$});let g={},x=this.getFrozenTensorIds(h),b={};for(;f.length>0;){let S=this.processStack(a,f,t,h,b,x,p,g,c);await Promise.all(S)}m==null&&!n&&console.warn(\"This model execution did not contain any nodes with control flow or dynamic output shapes. You can use model.execute() instead.\");let C=u.filter(S=>!fu(S)&&!Bt(S.name,h,t)).map(S=>S.name);if(C.length>0){let S=\"\";throw m!=null&&(S=`Alternatively, to avoid the dynamic ops, use model.execute() and specify the inputs [${d}]`),new Error(`Cannot compute the outputs [${C}] from the provided inputs [${s}]. Consider providing the following inputs: [${l}]. ${S}`)}return h}processStack(e,t,o,n,s,a,i,p,u){let c=[];for(;t.length>0;){let l=t.pop();o.currentContext=l.contexts;let m=\"\";if(l.node.op===\"Enter\"&&I(\"isConstant\",l.node,n,o)&&([m]=Ls(l.node.name,o)),n[l.node.name]==null){let d=MS(l.node,n,o,this._resourceManager);m||([m]=Ls(l.node.name,o));let f=o.currentContext;y.isPromise(d)?c.push(d.then(h=>(n[m]=h,this.keepIntermediateTensors&&(this.clonedTensorsMap[m]=this.cloneTensorList(h)),o.currentContext=f,this.checkTensorForDisposal(m,l.node,n,o,a,i,p),this.processChildNodes(l.node,t,o,n,s,u),h))):(n[m]=d,this.keepIntermediateTensors&&(this.clonedTensorsMap[m]=this.cloneTensorList(d)),this.checkTensorForDisposal(m,l.node,n,o,a,i,p),this.processChildNodes(l.node,t,o,n,s,u))}else this.processChildNodes(l.node,t,o,n,s,u)}return c}processChildNodes(e,t,o,n,s,a){e.children.forEach(i=>{let[p]=Ls(i.name,o);s[p]||!a.has(i.name)||(i.op===\"Merge\"?i.inputNames.some(u=>!!Bt(u,n,o))&&(s[p]=!0,t.push({contexts:o.currentContext,node:i})):i.inputNames.every(u=>!!Bt(u,n,o))&&(s[p]=!0,t.push({contexts:o.currentContext,node:i})))})}dispose(){Object.keys(this.weightMap).forEach(e=>this.weightMap[e].forEach(t=>t.dispose()))}checkInputShapeAndType(e){Object.keys(e).forEach(t=>{let o=e[t],[n]=Nr(t),s=this.graph.nodes[n];if(s.attrParams.shape&&s.attrParams.shape.value){let a=s.attrParams.shape.value,i=a.length===o.shape.length&&o.shape.every((p,u)=>a[u]===-1||a[u]===p);y.assert(i,()=>`The shape of dict['${s.name}'] provided in model.execute(dict) must be [${a}], but was [${o.shape}]`)}s.attrParams.dtype&&s.attrParams.dtype.value&&y.assert(o.dtype===s.attrParams.dtype.value,()=>`The dtype of dict['${s.name}'] provided in model.execute(dict) must be ${s.attrParams.dtype.value}, but was ${o.dtype}`)})}mapInputs(e){var t,o;let n={};for(let s in e){let a=(o=(t=this._signature)===null||t===void 0?void 0:t.inputs)===null||o===void 0?void 0:o[s];a!=null?n[a.name]=e[s]:n[s]=e[s]}return n}checkInputs(e){let t=Object.keys(e).filter(o=>{let[n]=Nr(o);return this.graph.nodes[n]==null});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(t=>{var o,n;let s=(n=(o=this._signature)===null||o===void 0?void 0:o.outputs)===null||n===void 0?void 0:n[t];return s!=null?s.name:t},{})}checkOutputs(e){e.forEach(t=>{let[o]=Nr(t);if(!this.graph.nodes[o])throw new Error(`The output '${t}' is not found in the graph`)})}};var kf=class{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(let e in this.hashTableMap)this.hashTableMap[e].clearAndClose(),delete this.hashTableMap[e];for(let e in this.hashTableNameToHandle)this.hashTableNameToHandle[e].dispose(),delete this.hashTableNameToHandle[e]}};var P8=\"?tfjs-format=file\",O8=\"model.json\",Bl=class{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}constructor(e,t={},o=di){this.modelUrl=e,this.loadOptions=t,this.version=\"n/a\",this.io=o,t==null&&(this.loadOptions={}),this.resourceManager=new kf}findIOHandler(){let e=this.modelUrl;if(e.load!=null)this.handler=e;else if(this.loadOptions.requestInit!=null)this.handler=this.io.browserHTTPRequest(e,this.loadOptions);else{let t=this.io.getLoadHandlers(e,this.loadOptions);if(t.length===0)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(),this.handler.load==null)throw new Error(\"Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.\");let e=this.handler.load();return y.isPromise(e)?e.then(t=>t.getWeightStream==null?this.loadSync(t):this.loadStreaming(t)):this.loadSync(e)}loadSync(e){let t=this.io.decodeWeights(e.weightData,e.weightSpecs);return this.loadWithWeightMap(e,t)}async loadStreaming(e){if(e.getWeightStream==null)throw new Error(\"Model artifacts missing streamWeights function\");let t=await ad(e.getWeightStream(),e.weightSpecs);return this.loadWithWeightMap(e,t)}loadWithWeightMap(e,t){this.artifacts=e;let o=this.artifacts.modelTopology,n=this.artifacts.signature;if(this.artifacts.userDefinedMetadata!=null){let s=this.artifacts.userDefinedMetadata;s.signature!=null&&(n=s.signature),s.structuredOutputKeys!=null&&(this.structuredOutputKeys=s.structuredOutputKeys)}if(this.signature=n,this.version=`${o.versions.producer}.${o.versions.minConsumer}`,this.executor=new Ll(Ol.Instance.transformGraph(o,this.signature)),this.executor.weightMap=this.convertTensorMapToTensorsMap(t),this.executor.resourceManager=this.resourceManager,e.modelInitializer!=null&&e.modelInitializer.node!=null){let s=Ol.Instance.transformGraph(e.modelInitializer);this.initializer=new Ll(s),this.initializer.weightMap=this.executor.weightMap,this.initializer.resourceManager=this.resourceManager,this.initializerSignature=e.initializerSignature}return!0}async save(e,t){if(typeof e==\"string\"){let o=this.io.getSaveHandlers(e);if(o.length===0)throw new Error(`Cannot find any save handlers for URL '${e}'`);if(o.length>1)throw new Error(`Found more than one (${o.length}) save handlers for URL '${e}'`);e=o[0]}if(e.save==null)throw new Error(\"GraphModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.\");return e.save(this.artifacts)}addStructuredOutputNames(e){if(this.structuredOutputKeys){let t=e instanceof mt?[e]:e,o={};return t.forEach((n,s)=>o[this.structuredOutputKeys[s]]=n),o}return e}predict(e,t){let o=this.execute(e,this.outputNodes);return this.addStructuredOutputNames(o)}async predictAsync(e,t){let o=await this.executeAsync(e,this.outputNodes);return this.addStructuredOutputNames(o)}normalizeInputs(e){var t;if(!(e instanceof mt)&&!Array.isArray(e)){let s=(t=this.signature)===null||t===void 0?void 0:t.inputs;if(s!=null)for(let a in s){let i=s[a];i.resourceId!=null&&(e[a]=this.resourceIdToCapturedInput[i.resourceId])}return e}e=Array.isArray(e)?e:[e];let o=Object.keys(this.resourceIdToCapturedInput).length;if(e.length+o!==this.inputNodes.length)throw new Error(`Input tensor count mismatch, the graph model has ${this.inputNodes.length-o} non-resource placeholders, while there are ${e.length} input tensors provided.`);let n=0;return this.inputNodes.reduce((s,a)=>{var i,p,u;let c=(u=(p=(i=this.signature)===null||i===void 0?void 0:i.inputs)===null||p===void 0?void 0:p[a])===null||u===void 0?void 0:u.resourceId;return c!=null?s[a]=this.resourceIdToCapturedInput[c]:s[a]=e[n++],s},{})}normalizeOutputs(e){return e=e||this.outputNodes,Array.isArray(e)?e:[e]}executeInitializerGraph(){return this.initializer==null?[]:this.initializerSignature==null?this.initializer.execute({},[]):this.initializer.execute({},Object.keys(this.initializerSignature.outputs))}async executeInitializerGraphAsync(){return this.initializer==null?[]:this.initializerSignature==null?this.initializer.executeAsync({},[]):this.initializer.executeAsync({},Object.keys(this.initializerSignature.outputs))}setResourceIdToCapturedInput(e){if(this.resourceIdToCapturedInput={},this.initializerSignature){let t=this.initializerSignature.outputs,o=Object.keys(t);for(let n=0;n1?o:o[0]}async executeAsync(e,t){this.resourceIdToCapturedInput==null&&this.setResourceIdToCapturedInput(await this.executeInitializerGraphAsync()),e=this.normalizeInputs(e),t=this.normalizeOutputs(t);let o=await this.executor.executeAsync(e,t);return o.length>1?o:o[0]}getIntermediateTensors(){return this.executor.getIntermediateTensors()}disposeIntermediateTensors(){this.executor.disposeIntermediateTensors()}convertTensorMapToTensorsMap(e){return Object.keys(e).reduce((t,o)=>(t[o]=[e[o]],t),{})}dispose(){this.executor.dispose(),this.initializer&&(this.initializer.dispose(),this.resourceIdToCapturedInput&&Ot(this.resourceIdToCapturedInput)),this.resourceManager.dispose()}};async function M8(r,e={},t=di){if(r==null)throw new Error(\"modelUrl in loadGraphModel() cannot be null. Please provide a url or an IOHandler that loads the model\");e==null&&(e={}),e.fromTFHub&&typeof r==\"string\"&&(r=B8(r));let o=new Bl(r,e,t);return await o.load(),o}function L8(r){if(r==null)throw new Error(\"modelUrl in loadGraphModelSync() cannot be null. Please provide model artifacts or an IOHandler that loads the model\");let e;if(r instanceof Array){let[o,n]=r;if(!o)throw new Error(\"modelJSON must be the first element of the array\");if(!n||!(n instanceof ArrayBuffer))throw new Error(\"An ArrayBuffer of weights must be the second element of the array\");if(!(\"modelTopology\"in o))throw new Error(\"Model JSON is missing 'modelTopology'\");if(!(\"weightsManifest\"in o))throw new Error(\"Model JSON is missing 'weightsManifest'\");let s=di.getWeightSpecs(o.weightsManifest),a=di.getModelArtifactsForJSONSync(o,s,n);e=di.fromMemorySync(a)}else if(\"load\"in r)e=r;else if(\"modelTopology\"in r&&\"weightSpecs\"in r&&\"weightData\"in r)e=di.fromMemorySync(r);else throw new Error(\"Unknown model format\");let t=new Bl(e);return t.load(),t}function B8(r){return r.endsWith(\"/\")||(r=r+\"/\"),`${r}${O8}${P8}`}var z8=\"4.21.0\";function Q(r,e){Array.isArray(r)||(r=[r]),r.forEach(t=>{t!=null&&y.assert(t.dtype!==\"complex64\",()=>`${e} does not support complex64 tensors in the CPU backend.`)})}var V8=Vt.whereImpl,xc=class r extends ao{nextDataId(){return r.nextDataId++}constructor(){super(),this.blockSize=48,this.firstUse=!0,this.data=new Bo(this,ur())}write(e,t,o){this.firstUse&&(this.firstUse=!1,A().get(\"IS_NODE\")&&w.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============================`));let n={id:this.nextDataId()};return this.data.set(n,{values:e,dtype:o,refCount:1}),n}makeTensorInfo(e,t,o){let n;if(t===\"string\"&&o!=null&&o.length>0&&y.isString(o[0])){let s=o.map(a=>y.encodeString(a));n=this.write(s,e,t)}else n=this.write(o,e,t);return{dataId:n,shape:e,dtype:t}}refCount(e){return this.data.has(e)?this.data.get(e).refCount:0}incRef(e){let t=this.data.get(e);t.refCount++}decRef(e){if(this.data.has(e)){let t=this.data.get(e);t.refCount--}}move(e,t,o,n,s){this.data.set(e,{values:t,dtype:n,refCount:s})}numDataIds(){return this.data.numDataIds()}async read(e){return this.readSync(e)}readSync(e){let{dtype:t,complexTensorInfos:o}=this.data.get(e);if(t===\"complex64\"){let n=this.readSync(o.real.dataId),s=this.readSync(o.imag.dataId);return w.mergeRealAndImagArrays(n,s)}return y.convertBackendValuesAndArrayBuffer(this.data.get(e).values,t)}bufferSync(e){let t=this.readSync(e.dataId);if(e.dtype===\"string\")try{let o=t.map(n=>y.decodeString(n));return me(e.shape,e.dtype,o)}catch(o){throw new Error(\"Failed to decode encoded string bytes into utf-8\")}return me(e.shape,e.dtype,t)}makeOutput(e,t,o){return ur().makeTensorFromTensorInfo(this.makeTensorInfo(t,o,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;let{complexTensorInfos:o}=this.data.get(e);o!=null&&(this.disposeData(o.real.dataId,!0),this.disposeData(o.imag.dataId,!0)),this.data.delete(e)}return!0}disposeIntermediateTensorInfo(e){this.disposeData(e.dataId)}async time(e){let t=y.now();return e(),{kernelMs:y.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){Q([e],\"where\");let t=this.readSync(e.dataId);return V8(e.shape,t)}dispose(){}floatPrecision(){return 32}epsilon(){return super.epsilon()}};xc.nextDataId=0;var Ic={};qe(Ic,{addImpl:()=>VS,bincountImpl:()=>Cc,bincountReduceImpl:()=>Nf,bitwiseAndImpl:()=>WS,castImpl:()=>zS,ceilImpl:()=>US,concatImpl:()=>ap,equalImpl:()=>GS,expImpl:()=>KS,expm1Impl:()=>jS,floorDivImpl:()=>YS,floorImpl:()=>XS,gatherNdImpl:()=>Tf,gatherV2Impl:()=>_f,greaterEqualImpl:()=>ZS,greaterImpl:()=>QS,lessEqualImpl:()=>eI,lessImpl:()=>JS,linSpaceImpl:()=>Ef,logImpl:()=>tI,maxImpl:()=>$f,maximumImpl:()=>rI,minimumImpl:()=>oI,multiplyImpl:()=>zl,negImpl:()=>nI,notEqualImpl:()=>sI,prodImpl:()=>aI,raggedGatherImpl:()=>Rf,raggedRangeImpl:()=>Df,raggedTensorToTensorImpl:()=>Af,rangeImpl:()=>up,rsqrtImpl:()=>uI,scatterImpl:()=>zs,sigmoidImpl:()=>R_,simpleAbsImpl:()=>BS,sliceImpl:()=>pp,sparseFillEmptyRowsImpl:()=>Ff,sparseReshapeImpl:()=>Pf,sparseSegmentReductionImpl:()=>Sc,sqrtImpl:()=>F_,squaredDifferenceImpl:()=>cI,staticRegexReplaceImpl:()=>lI,stridedSliceImpl:()=>Of,stringNGramsImpl:()=>cp,stringSplitImpl:()=>lp,stringToHashBucketFastImpl:()=>mp,subImpl:()=>dI,tileImpl:()=>Mf,topKImpl:()=>Lf,transposeImpl:()=>wc,uniqueImpl:()=>dp});function BS(r){let e=new Float32Array(r.length);for(let t=0;t{let{x:e}=r.inputs,t=r.backend;Q(e,\"abs\");let o=new Float32Array(y.sizeFromShape(e.shape)),n=t.data.get(e.dataId).values;return o=BS(n),t.makeOutput(o,e.shape,e.dtype)},t_={kernelName:Xs,backendName:\"cpu\",kernelFunc:W8};function Ve(r){return(e,t,o,n,s)=>{let a=w.assertAndGetBroadcastShape(e,t),i=a.length,p=y.computeStrides(a),u=y.sizeFromShape(a),c=y.getTypedArrayFromDType(s,u),l=e.length,m=t.length,d=y.computeStrides(e),f=y.computeStrides(t),h=w.getBroadcastDims(e,a),g=w.getBroadcastDims(t,a);if(h.length+g.length===0)for(let x=0;xC[$]=0);let S=y.locToIndex(C,l,d),k=b.slice(-m);g.forEach($=>k[$]=0);let _=y.locToIndex(k,m,f);c[x]=r(o[S],n[_])}return[c,a]}}function Ht(r){let{inputs:e,backend:t}=r,{real:o,imag:n}=e,s=t.data.get(o.dataId).values,a=t.data.get(n.dataId).values,i=t.makeTensorInfo(o.shape,\"complex64\"),p=t.data.get(i.dataId);return p.complexTensorInfos={real:t.makeTensorInfo(o.shape,\"float32\",s),imag:t.makeTensorInfo(n.shape,\"float32\",a)},i}var r_={kernelName:Di,backendName:\"cpu\",kernelFunc:Ht};function yc(r,e,t=\"float32\"){if(t===\"complex64\"){let n=yc(r,e,\"float32\"),s=yc(r,e,\"float32\");return Ht({inputs:{real:n,imag:s},backend:r})}let o=y.makeZerosTypedArray(y.sizeFromShape(e),t);return r.makeTensorInfo(e,t,o)}function lr(r){let{inputs:e,backend:t}=r,{x:o}=e;return t.incRef(o.dataId),{dataId:o.dataId,shape:o.shape,dtype:o.dtype}}var o_={kernelName:Co,backendName:\"cpu\",kernelFunc:lr};function $o(r){let{inputs:e,backend:t}=r,{input:o}=e,n=t.data.get(o.dataId).complexTensorInfos.real,s=t.data.get(n.dataId).values;return t.makeTensorInfo(n.shape,n.dtype,s)}var n_={kernelName:Hi,backendName:\"cpu\",kernelFunc:$o};function zS(r,e,t,o){if(o===\"int32\"){let n=Int32Array.from(r);return[e,\"int32\",n]}if(o===\"bool\"){let n=y.toTypedArray([0],t),[s,a]=Ve((i,p)=>i!==p?1:0)(e,[],r,n,\"bool\");return[a,\"bool\",s]}throw new Error(`Error in Cast: failed to cast ${t} to ${o}`)}function Ro(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{dtype:s}=o;if(s===\"complex64\"){if(n.dtype===\"complex64\")return lr({inputs:{x:n},backend:t});let c=yc(t,n.shape,n.dtype),l=Ro({inputs:{x:n},backend:t,attrs:{dtype:\"float32\"}}),m=Ht({inputs:{real:l,imag:c},backend:t});return t.disposeIntermediateTensorInfo(c),t.disposeIntermediateTensorInfo(l),m}if(n.dtype===\"complex64\"){let c=$o({inputs:{input:n},backend:t}),l=Ro({inputs:{x:c},backend:t,attrs:{dtype:s}});return t.disposeIntermediateTensorInfo(c),l}if(!y.hasEncodingLoss(n.dtype,s)){let c=lr({inputs:{x:n},backend:t});return{dataId:c.dataId,shape:c.shape,dtype:s}}let a=t.data.get(n.dataId).values,[i,p,u]=zS(a,n.shape,n.dtype,s);return t.makeTensorInfo(i,p,u)}var s_={kernelName:yo,backendName:\"cpu\",kernelFunc:Ro};function Ye(r,e,t,o){return t==null?({inputs:n,backend:s})=>{let{a,b:i}=n,p=s;Q([a,i],r);let u=p.data.get(a.dataId).values,c=p.data.get(i.dataId).values,l=a.dtype===\"string\"?w.fromUint8ToStringArray(u):u,m=a.dtype===\"string\"?w.fromUint8ToStringArray(c):c,d=o||a.dtype,[f,h]=e(a.shape,i.shape,l,m,d);return p.makeTensorInfo(h,d,f)}:({inputs:n,backend:s})=>{let{a,b:i}=n,p=s;if(a.dtype===\"complex64\"||i.dtype===\"complex64\"){let u=Ro({inputs:{x:a},backend:p,attrs:{dtype:\"complex64\"}}),c=p.data.get(u.dataId),l=c.complexTensorInfos.real,m=c.complexTensorInfos.imag,d=p.data.get(l.dataId).values,f=p.data.get(m.dataId).values,h=Ro({inputs:{x:i},backend:p,attrs:{dtype:\"complex64\"}}),g=p.data.get(h.dataId),x=g.complexTensorInfos.real,b=g.complexTensorInfos.imag,C=p.data.get(x.dataId).values,S=p.data.get(b.dataId).values,[k,_,$]=t(a.shape,i.shape,d,f,C,S),R=p.makeTensorInfo($,\"float32\",k),D=p.makeTensorInfo($,\"float32\",_),P=Ht({inputs:{real:R,imag:D},backend:p});return p.disposeIntermediateTensorInfo(u),p.disposeIntermediateTensorInfo(h),p.disposeIntermediateTensorInfo(R),p.disposeIntermediateTensorInfo(D),P}else{let u=p.data.get(a.dataId).values,c=p.data.get(i.dataId).values,l=o||a.dtype,[m,d]=e(a.shape,i.shape,u,c,l);return p.makeTensorInfo(d,l,m)}}}function bc(r){return(e,t,o,n,s,a)=>{let i=w.assertAndGetBroadcastShape(e,t),p=y.sizeFromShape(i),u=i.length,c=y.computeStrides(i),l=y.getTypedArrayFromDType(\"float32\",p),m=y.getTypedArrayFromDType(\"float32\",p),d=w.getBroadcastDims(e,i),f=w.getBroadcastDims(t,i),h=w.mergeRealAndImagArrays(o,n),g=w.mergeRealAndImagArrays(s,a),x=e.length,b=y.computeStrides(e),C=t.length,S=y.computeStrides(t);if(d.length+f.length===0)for(let k=0;k$[M]=0);let R=y.locToIndex($,x,b),D=_.slice(-C);f.forEach(M=>D[M]=0);let P=y.locToIndex(D,C,S),O=r(h[R*2],h[R*2+1],g[P*2],g[P*2+1]);l[k]=O.real,m[k]=O.imag}return[l,m,i]}}var VS=Ve((r,e)=>r+e),U8=bc((r,e,t,o)=>({real:r+t,imag:e+o})),Pa=Ye(uo,VS,U8),a_={kernelName:uo,backendName:\"cpu\",kernelFunc:Pa};function Cc(r,e,t,o,n){let s=y.sizeFromShape(o),a=y.makeZerosTypedArray(n,t);for(let i=0;i=n||(s>0?a[p]+=e[i]:a[p]+=1)}return a}function Nf(r,e,t,o=!1){let n=r.shape[0],s=r.shape[1],a=me([n,t],e.dtype);for(let i=0;i=t||(o?a.set(1,i,u):e.size>0?a.set(a.get(i,u)+e.get(i,p),i,u):a.set(a.get(i,u)+1,i,u))}return a}var WS=Ve((r,e)=>r&e),G8=Ye(qa,WS),i_={kernelName:qa,backendName:\"cpu\",kernelFunc:G8};function jt(r){return(e,t,o)=>{let n=y.getArrayFromDType(t,e.length);for(let s=0;s{let{x:a}=o;Q(a,r);let i=s,p=i.data.get(a.dataId).values,u;if(a.dtype===\"string\"){if(!Array.isArray(p))throw new Error(\"String tensor's value was not an instance of Array\");u=w.fromUint8ToStringArray(p)}else u=p;let c=t||a.dtype,l=e(u,c,n);return i.makeTensorInfo(a.shape,c,l)}}var US=jt(r=>Math.ceil(r)),H8=Ar(en,US),u_={kernelName:en,backendName:\"cpu\",kernelFunc:H8};function ap(r,e,t,o){let n=y.getArrayFromDType(t,y.sizeFromShape(e));if(o&&t!==\"string\"){let s=0;r.forEach(a=>{let i=y.sizeFromShape(a.shape);n.set(a.vals,s),s+=i})}else{let s=0;r.forEach(a=>{let i=t===\"string\"?w.fromUint8ToStringArray(a.vals):a.vals,p=0;for(let u=0;ur===e?1:0),HS=Ye(xn,GS,null,\"bool\"),p_={kernelName:xn,backendName:\"cpu\",kernelFunc:HS};var KS=jt(r=>Math.exp(r)),qS=Ar(yn,KS,\"float32\"),c_={kernelName:yn,backendName:\"cpu\",kernelFunc:qS};var jS=jt(r=>Math.expm1(r)),K8=Ar(bn,jS),l_={kernelName:bn,backendName:\"cpu\",kernelFunc:K8};var XS=jt(r=>Math.floor(r)),q8=Ar(wn,XS),m_={kernelName:wn,backendName:\"cpu\",kernelFunc:q8};var YS=Ve((r,e)=>Math.floor(r/e)),j8=Ye(Sn,YS,null,\"int32\"),d_={kernelName:Sn,backendName:\"cpu\",kernelFunc:j8};function Tf(r,e,t,o,n,s,a,i,p){let u=me([o,s],t);for(let c=0;c=p/s)throw new Error(`Invalid indices: ${l} does not index into ${i}`);for(let d=0;dr>e?1:0),X8=Ye(kn,QS,null,\"bool\"),f_={kernelName:kn,backendName:\"cpu\",kernelFunc:X8};var ZS=Ve((r,e)=>r>=e?1:0),Y8=Ye(Nn,ZS,null,\"bool\"),h_={kernelName:Nn,backendName:\"cpu\",kernelFunc:Y8};var JS=Ve((r,e)=>rr<=e?1:0),Z8=Ye(Dn,eI,null,\"bool\"),x_={kernelName:Dn,backendName:\"cpu\",kernelFunc:Z8};function Ef(r,e,t){let o=(e-r)/(t-1),n=y.makeZerosTypedArray(t,\"float32\");n[0]=r;for(let s=1;sMath.log(r)),J8=Ar(Fn,tI),y_={kernelName:Fn,backendName:\"cpu\",kernelFunc:J8};function $f(r,e,t,o){let n=y.getTypedArrayFromDType(o,y.sizeFromShape(t));for(let s=0;si)&&(i=u)}n[s]=i}return n}var rI=Ve((r,e)=>Math.max(r,e)),eY=Ye(Vn,rI),b_={kernelName:Vn,backendName:\"cpu\",kernelFunc:eY};var oI=Ve((r,e)=>Math.min(r,e)),tY=Ye(Hn,oI),C_={kernelName:Hn,backendName:\"cpu\",kernelFunc:tY};var zl=Ve((r,e)=>r*e),rY=bc((r,e,t,o)=>({real:r*t-e*o,imag:r*o+e*t})),ip=Ye(Xn,zl,rY),w_={kernelName:Xn,backendName:\"cpu\",kernelFunc:ip};function nI(r,e,t){let o=y.createScalarValue(-1,t);return zl([],e,o,r,t)}function oY(r){let{inputs:e,backend:t}=r,{x:o}=e;Q(o,\"neg\");let n=t.data.get(o.dataId).values,[s,a]=nI(n,o.shape,o.dtype);return t.makeTensorInfo(a,o.dtype,s)}var S_={kernelName:pa,backendName:\"cpu\",kernelFunc:oY};var sI=Ve((r,e)=>r!==e?1:0),nY=Ye(Yn,sI,null,\"bool\"),I_={kernelName:Yn,backendName:\"cpu\",kernelFunc:nY};function wc(r,e,t,o,n){let s=e.length,a=y.sizeFromShape(e),i=y.computeStrides(e),p=y.computeStrides(n),u=y.getTypedArrayFromDType(t,y.sizeFromShape(n));for(let c=0;ct.disposeIntermediateTensorInfo(b)),t.makeTensorInfo(x,g,f)}var k_={kernelName:os,backendName:\"cpu\",kernelFunc:sY};function aY(r,e,t){r.forEach((o,n)=>{if(o<0||o>=t){let s=y.indexToLoc(n,e.length,y.computeStrides(e)).join(\",\");throw new Error(`indices[${s}] = ${o} is not in [0, ${t})`)}})}function iY(r,e){for(let t=0;tn)throw new Error(\"Ragged splits must not point past values\");for(let s=1;so[s])throw new Error(\"Ragged splits must be sorted in ascending order\")}}function uY(r,e,t,o){let n=[],s=0,a=e.length-1+t.length,i=new Array(a).fill(null).map(()=>[0]);iY(t,o);let p=1;for(let u=0;u=0){let h=i[f],g=h[h.length-1]-d[c];for(let x=c;xn[a]=s)}return e}function N_(r,e){let t=r.slice(0,e);for(;t.length1)throw new Error(\"starts must be a scalar or vector\");if(n.length>1)throw new Error(\"limits must be a scalar or vector\");if(a.length>1)throw new Error(\"deltas must be a scalar or vector\");let i=e.length===0,p=n.length===0,u=a.length===0,c=[];i||c.push(e[0]),p||c.push(n[0]),u||c.push(a[0]);for(let g=1;g0&&bx)S=0;else if(S=Math.ceil(Math.abs((b-x)/C)),S>T_)throw new Error(`Requires ((limit - start) / delta) <= ${T_}`);m[g+1]=m[g]+S}let d=m[l],f=y.getArrayFromDType(t,d),h=0;for(let g=0;go&&(o=s)}return o}static getMaxWidthValueRowID(e){let t=e.length;if(t===0)return 0;let o=0,n=e[0],s=0;for(let a=1;a\"Final length of result must be equal to firstDimension.\"),s}calculateOutputIndexRowSplit(e,t,o,n){let s=e.length,a=[];for(let i=0;i0&&a.length!==e[s-1])throw new Error(\"Invalid row split size.\");return a}calculateOutputIndexValueRowID(e,t,o,n){let s=e.length,a=[];if(s===0)return[];let i=0,p=e[0];if(p>=t.length)throw new Error(`Got currentValueRowId=${p}, which is not less than ${t.length}`);let u=t[p];a.push(u);for(let c=1;c=0&&(++i,i=t.length)throw new Error(`Got nextValueRowId=${l} which is not less than ${t.length}`);u=t[l]}a.push(u)}if(a.length!==e.length)throw new Error(\"Invalid row ids.\");return a}calculateOutputIndex(e,t,o,n){let s=this.getRowPartitionTensor(e),a=this.getRowPartitionTypeByDimension(e);switch(a){case Do.VALUE_ROWIDS:return this.calculateOutputIndexValueRowID(s,t,o,n);case Do.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,o,n);default:throw new Error(`Unsupported partition type: ${Do[a]}`)}}getFirstDimensionSize(){let e=this.rowPartitionValues[0];if(this.rowPartitionTypes.length===0)throw new Error(\"No row_partition_types given.\");let t=this.rowPartitionTypes[0];switch(t){case Do.FIRST_DIM_SIZE:return e[0];case Do.VALUE_ROWIDS:throw new Error(\"Cannot handle VALUE_ROWIDS in first dimension.\");case Do.ROW_SPLITS:return this.rowPartitionValuesShapes[0][0]-1;default:throw new Error(`Cannot handle type ${Do[t]}`)}}compute(){if(this.rowPartitionValues[0].length<=0)throw new Error(\"Invalid first partition input. Tensor requires at least one element.\");let t=this.getFirstDimensionSize(),o=this.calculateOutputSize(t),n=new Array(this.raggedRank+1);n[n.length-1]=1;for(let p=n.length-2;p>=0;--p)n[p]=n[p+1]*o[p+1];let s=E_(o,!1),a=y.getArrayFromDType(this.valuesDType,y.sizeFromShape(s));if(n[0]*o[0]>0){let p=this.calculateFirstParentOutputIndex(t,n[0],o[0]);for(let u=1;u<=this.raggedRank;++u)p=this.calculateOutputIndex(u-1,p,n[u],o[u]);this.setOutput(this.raggedRank,p,a,s)}return[s,a]}setOutput(e,t,o,n){if(o.length===0)return;let s=this.values,a=o,i=n.slice();i=i.slice(e+1);let p=y.sizeFromShape(i),u=t.length,c=this.defaultValue;if(c.length!==p&&c.length!==1){let f=this.defaultValueShape;De(()=>{let h=W(c,f);c=su(h,i).dataSync()})}let l=0,m=0,d=0;for(let f=0;f<=u;++f){let h=f=u){let g=o.length;h=Math.floor(g/p)}if(h>d)if(this.defaultValue.length===1)a.subarray(d*p,h*p).fill(this.defaultValue[0]),d=h;else for(;h>d;){let g=a.slice(d*p);__(g,c,p),++d}h<0?(l=f+1,m=d):(l=f,m=d,d=m+1)}}};function __(r,e,t){for(let o=0;o= 0`);if(o<-1)throw new Error(`Dimension ${o} must be >= -1`);o=-1}t.push(o)}return t}function Af(r,e,t,o,n,s,a,i,p,u){return new iI(r,e,t,o,n,s,a,i,p,u).compute()}function up(r,e,t,o){let n=r===e,s=r1;if(n||s||a)return y.makeZerosTypedArray(0,o);let i=Math.abs(Math.ceil((e-r)/t)),p=y.makeZerosTypedArray(i,o);e1/Math.sqrt(r)),mY=Ar(ls,uI),$_={kernelName:ls,backendName:\"cpu\",kernelFunc:mY};function zs(r,e,t,o,n,s,a,i,p,u){let c=[o/n,n],l=r.values,m=e.values;if(o===0)return me(t,e.dtype);let d=p instanceof tt?p:me(c,e.dtype);typeof p==\"string\"||typeof p==\"number\"?d.values.fill(p):typeof p==\"boolean\"&&d.values.fill(+p);for(let f=0;f=o/n)throw new Error(`Invalid indices: ${h} does not index into ${t}`);for(let x=0;x1/(1+Math.exp(-r))),pI=Ie(bs,r=>1/(1+Math.exp(-r))),D_={kernelName:bs,backendName:\"cpu\",kernelFunc:pI};function pp(r,e,t,o,n){let s=pt.isSliceContinous(o,e,t),a=y.sizeFromShape(t),i=y.computeStrides(o);if(s){let l=pt.computeFlatOffset(e,i);return n===\"string\"?r.slice(l,l+a):r.subarray(l,l+a)}let p=n===\"string\"?w.fromUint8ToStringArray(r):r,u=me(o,n,p),c=me(t,n);for(let l=0;lf+e[h]);c.set(u.get(...d),...m)}return n===\"string\"?w.fromStringArrayToUint8(c.values):c.values}function Ao(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{begin:s,size:a}=o;Q(n,\"slice\");let[i,p]=pt.parseSliceParams(n,s,a);pt.assertParamsValid(n,i,p);let u=t.data.get(n.dataId).values,c=pp(u,i,p,n.shape,n.dtype);return t.makeTensorInfo(p,n.dtype,c)}var A_={kernelName:ha,backendName:\"cpu\",kernelFunc:Ao};function Ff(r,e,t,o,n,s,a){let i=e[0],p=s[0],u=new Array(p),c=new Array(i),l=e[1];if(p===0){if(i!==0)throw new Error(w.getSparseFillEmptyRowsIndicesDenseShapeMismatch(i));let g=y.getArrayFromDType(t,0),x=y.getArrayFromDType(n,0);return[g,[0,l],x,u,c]}let m=!0,d=0,f=new Array(p).fill(0);for(let g=0;g=p)throw new Error(w.getSparseFillEmptyRowsOutOfRangeIndexErrorMessage(g,x,p));++f[x],m=m&&x>=d,d=x}let h=!0;for(let g=0;g0&&(f[g]+=f[g-1])}if(h&&m){let g=r,x=o;for(let b=0;b0){d[m-1]=1;for(let g=m-2;g>=0;--g)d[g]=d[g+1]*o[g+1]}let f=[];if(i>0){f[i-1]=1;for(let g=i-2;g>=0;--g)f[g]=f[g+1]*p[g+1]}let h=y.getArrayFromDType(t,a*i);for(let g=0;g0?n[i-1]+1:0;if(l<0)throw new Error(w.getSparseSegmentReductionNegativeSegmentIdsErrorMessage());let m=e.slice();m[0]=l;let d=m.reduce((C,S)=>C*S,1),f=y.getArrayFromDType(t,d);if(i===0)return l>0&&f.fill(a),[f,m];if(l<=0)throw new Error(w.getSparseSegmentReductionNegativeSegmentIdsErrorMessage());let h=0,g=1,x=0,b=n[h];for(;;){let C=0;if(g=C)throw new Error(w.getSparseSegmentReductionNonIncreasingSegmentIdsErrorMessage())}if(b<0||b>=l)throw new Error(w.getSparseSegmentReductionSegmentIdOutOfRangeErrorMessage(b,l));b>x&&f.fill(a,x*u,b*u);for(let S=h;S=p[0])throw new Error(w.getSparseSegmentReductionIndicesOutOfRangeErrorMessage(S,o[S],p[0]));for(let _=0;_i)break}return xMath.sqrt(r)),dY=Ie(ws,r=>Math.sqrt(r)),P_={kernelName:ws,backendName:\"cpu\",kernelFunc:dY};var cI=Ve((r,e)=>{let t=r-e;return t*t}),fY=Ye(ks,cI),O_={kernelName:ks,backendName:\"cpu\",kernelFunc:fY};var lI=jt((r,e)=>{let{pattern:t,replaceGlobal:o,rewrite:n}=e;return r.replace(new RegExp(t,o?\"g\":\"\"),n)}),hY=Ar(Ru,lI),M_={kernelName:Ru,backendName:\"cpu\",kernelFunc:hY};function Of(r,e,t,o){let n=me(r,e.dtype);for(let s=0;s0?0:i-p),d=0;d+=u*this.leftPad.length;for(let b=0;bb.forEach(C=>h[g++]=C);for(let b=0;b0){x(e[m+l-1]);for(let b=0;b0){let p=t[0];if(p!==0)throw new Error(`First split value must be 0, got ${p}`);for(let u=1;u=p;if(c=c&&t[u]<=o,!c)throw new Error(`Invalid split value ${t[u]}, must be in [${p}, ${o}]`);p=t[u]}if(p!==o)throw new Error(`Last split value must be data size. Expected ${o}, got ${p}`)}let s=n-1,a=y.getArrayFromDType(\"int32\",n);if(o===0||n===0){let p=new Array(o);for(let u=0;u<=s;++u)a[u]=0;return[p,a]}a[0]=0;for(let p=1;p<=s;++p){let u=t[p]-t[p-1],c=0;this.nGramWidths.forEach(l=>{c+=this.getNumNGrams(u,l)}),this.preserveShort&&u>0&&c===0&&(c=1),a[p]=a[p-1]+c}let i=new Array(a[s]);for(let p=0;p{let m=t[p+1]-t[p],d=this.getNumNGrams(m,l);this.createNGrams(e,u,i,c,d,l),c+=d}),this.preserveShort&&c===a[p]){let l=t[p+1]-t[p];if(l===0)continue;let m=l+2*this.padWidth;this.createNGrams(e,u,i,c,1,m)}}return[i,a]}};function cp(r,e,t,o,n,s,a,i){return new mI(t,o,n,s,a,i).compute(r,e)}function gY(r,e,t,o){if(!r.length)return;if(e.length===0){for(let s=0;sr-e),xY=bc((r,e,t,o)=>({real:r-t,imag:e-o})),Vl=Ye(Ts,dI,xY),L_={kernelName:Ts,backendName:\"cpu\",kernelFunc:Vl};function Mf(r,e){let t=new Array(r.rank);for(let n=0;n{let t=e.value-r.value;return t===0?r.index-e.index:t};function B_(r,e,t=0,o=r.length-1){for(;o>t;){if(o-t>600){let i=o-t+1,p=e-t+1,u=Math.log(i),c=.5*Math.exp(2*u/3),l=.5*Math.sqrt(u*c*(i-c)/i)*Math.sign(p-i/2),m=Math.max(t,Math.floor(e-p*c/i+l)),d=Math.min(o,Math.floor(e+(i-p)*c/i+l));B_(r,e,m,d)}let n=r[e],s=t,a=o;for(y.swap(r,t,e),Wl(r[o],n)>0&&y.swap(r,t,o);s0;)a=a-1}Wl(r[t],n)===0?y.swap(r,t,a):(a=a+1,y.swap(r,a,o)),a<=e&&(t=a+1),e<=a&&(o=a-1)}}function Lf(r,e,t,o,n){let s=e[e.length-1],[a,i]=[r.length/s,s],p=y.getTypedArrayFromDType(t,a*o),u=y.getTypedArrayFromDType(\"int32\",a*o);for(let l=0;lf[C]={value:b,index:C}),o{for(let g=0;gnew xc,1);var fI=Ie(hn,r=>r>=0?r:Math.exp(r)-1),z_={kernelName:hn,backendName:\"cpu\",kernelFunc:fI};function hI(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{alpha:s}=o;Q([n],\"leakyRelu\");let a=y.sizeFromShape(n.shape),i=t.data.get(n.dataId).values,p=y.getTypedArrayFromDType(\"float32\",a);for(let u=0;ur<0?e*r:r);function gI(r){let{inputs:e,backend:t}=r,{x:o,alpha:n}=e;Q([o,n],\"prelu\");let s=t.data.get(o.dataId).values,a=t.data.get(n.dataId).values,[i,p]=bY(o.shape,n.shape,s,a,\"float32\");return t.makeTensorInfo(p,\"float32\",i)}var W_={kernelName:rs,backendName:\"cpu\",kernelFunc:gI};var xI=Ie(ss,r=>Math.max(0,r)),U_={kernelName:ss,backendName:\"cpu\",kernelFunc:xI};var yI=Ie(us,r=>Math.min(Math.max(0,r),6)),G_={kernelName:us,backendName:\"cpu\",kernelFunc:yI};function fp(r,e,t,o,n){if(t===\"linear\")return lr({inputs:{x:e},backend:r});if(t===\"relu\")return xI({inputs:{x:e},backend:r});if(t===\"elu\")return fI({inputs:{x:e},backend:r});if(t===\"relu6\")return yI({inputs:{x:e},backend:r});if(t===\"prelu\")return gI({inputs:{x:e,alpha:o},backend:r});if(t===\"leakyrelu\")return hI({inputs:{x:e},backend:r,attrs:{alpha:n}});if(t===\"sigmoid\")return pI({inputs:{x:e},backend:r});throw new Error(`Activation ${t} has not been implemented for the CPU backend.`)}function We(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{shape:s}=o,a=y.sizeFromShape(n.shape),i=y.inferFromImplicitShape(s,a),p=y.sizeFromShape(i);y.assert(a===p,()=>`The new shape (${i}) has ${p} elements and the old shape (${n.shape}) has ${a} elements. The new shape and old shape must have the same number of elements.`),t.incRef(n.dataId);let u=t.data.get(n.dataId);if(u.complexTensorInfos!=null){let c=u.complexTensorInfos.real,l=u.complexTensorInfos.imag;c.shape=i,l.shape=i}return{dataId:n.dataId,shape:i,dtype:n.dtype}}var H_={kernelName:da,backendName:\"cpu\",kernelFunc:We};function bI(r){let{inputs:e,backend:t,attrs:o}=r,{a:n,b:s}=e,{transposeA:a,transposeB:i}=o;Q([n,s],\"matMul\");let p=n.shape.length,u=s.shape.length,c=a?n.shape[p-2]:n.shape[p-1],l=i?s.shape[u-1]:s.shape[u-2],m=a?n.shape[p-1]:n.shape[p-2],d=i?s.shape[u-2]:s.shape[u-1],f=n.shape.slice(0,-2),h=s.shape.slice(0,-2),g=y.sizeFromShape(f),x=y.sizeFromShape(h),C=Sr.assertAndGetBroadcastShape(n.shape.slice(0,-2),s.shape.slice(0,-2)).concat([m,d]);y.assert(c===l,()=>`Error in matMul: inner shapes (${c}) and (${l}) of Tensors with shapes ${n.shape} and ${s.shape} and transposeA=${a} and transposeB=${i} must match.`);let S=a?[g,c,m]:[g,m,c],k=i?[x,d,l]:[x,l,d],_=We({inputs:{x:n},backend:t,attrs:{shape:S}}),$=We({inputs:{x:s},backend:t,attrs:{shape:k}}),R=a?_.shape[1]:_.shape[2],D=a?_.shape[2]:_.shape[1],P=i?$.shape[1]:$.shape[2],O=Math.max(g,x),M=t.data.get(_.dataId).values,L=t.data.get($.dataId).values,B=y.computeStrides(_.shape),z=y.computeStrides($.shape),[U,j,q]=a?[B[0],1,B[1]]:[B[0],B[1],1],[Y,J,re]=i?[1,z[1],z[0]]:[z[1],1,z[0]],ne=D*P,ee=me([O,D,P],_.dtype),oe=ee.values,ie=t.blockSize;for(let le=0;leMath.acos(r)),j_={kernelName:Vo,backendName:\"cpu\",kernelFunc:wY};var SY=Ie(Wo,r=>Math.acosh(r)),X_={kernelName:Wo,backendName:\"cpu\",kernelFunc:SY};function IY(r){let{inputs:e,backend:t}=r,o=e;Q(e,\"addN\");let n=o.map(i=>t.data.get(i.dataId).values),s=me(o[0].shape,o[0].dtype),a=s.values;for(let i=0;ib&&(b=k,C=S)}d[g]=C}return u.forEach(g=>t.disposeIntermediateTensorInfo(g)),t.makeTensorInfo(c,\"int32\",d)}var J_={kernelName:Ys,backendName:\"cpu\",kernelFunc:NY};function TY(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{axis:s}=o;Q(n,\"argMin\");let a=y.parseAxisParam(s,n.shape),i=w.getAxesPermutation(a,n.shape.length),p=n,u=[];i!=null&&(p=St({inputs:{x:n},backend:t,attrs:{perm:i}}),u.push(p),a=w.getInnerMostAxes(a.length,p.shape.length)),a=[a[0]],w.assertAxesAreInnerMostDims(\"argMin\",a,p.shape.length);let[c,l]=w.computeOutAndReduceShapes(p.shape,a),m=y.sizeFromShape(c),d=y.makeZerosTypedArray(m,\"int32\"),f=y.sizeFromShape(l),h=t.data.get(p.dataId).values;for(let g=0;gt.disposeIntermediateTensorInfo(g)),t.makeTensorInfo(c,\"int32\",d)}var eE={kernelName:Qs,backendName:\"cpu\",kernelFunc:TY};var _Y=Ie(Ko,r=>Math.asin(r)),tE={kernelName:Ko,backendName:\"cpu\",kernelFunc:_Y};var EY=Ie(qo,r=>Math.asinh(r)),rE={kernelName:qo,backendName:\"cpu\",kernelFunc:EY};var $Y=Ie(jo,r=>Math.atan(r)),oE={kernelName:jo,backendName:\"cpu\",kernelFunc:$Y};var RY=Ve((r,e)=>Math.atan2(r,e)),DY=Ye(Yo,RY),nE={kernelName:Yo,backendName:\"cpu\",kernelFunc:DY};var AY=Ie(Xo,r=>Math.atanh(r)),sE={kernelName:Xo,backendName:\"cpu\",kernelFunc:AY};function vc(r,e,t,o,n,s){let a=n.strideHeight,i=n.strideWidth,p=n.dilationHeight,u=n.dilationWidth,c=n.effectiveFilterHeight,l=n.effectiveFilterWidth,m=n.padInfo.top,d=n.padInfo.left,f=s===\"max\"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,h=me(n.outShape,t),g=h.values,x=n.outShape[1]*n.outShape[2]*n.outShape[3],b=n.outShape[2]*n.outShape[3],C=n.outShape[3];for(let S=0;Sj?j=ie:s===\"avg\"&&(q+=ie,Y++)}if(isNaN(j))break}let J=M+L*C+$;g[J]=s===\"avg\"?q/Y:j}}}return h}function Bf(r,e,t,o,n=!1,s=!1){let a=me(o.outShape,\"int32\"),i=o.strideHeight,p=o.strideWidth,u=o.dilationHeight,c=o.dilationWidth,l=o.effectiveFilterHeight,m=o.effectiveFilterWidth,d=o.padInfo.top,f=o.padInfo.left,h=me(e,t,r);for(let g=0;gP&&(P=U,n?O=s?((g*o.inHeight+M)*o.inWidth+B)*o.inChannels+x:(M*o.inWidth+B)*o.inChannels+x:O=L*m+z)}}a.set(O,g,b,_,x)}}return a}function zf(r,e,t,o,n,s){let a=n.strideDepth,i=n.strideHeight,p=n.strideWidth,u=n.dilationDepth,c=n.dilationHeight,l=n.dilationWidth,m=n.effectiveFilterDepth,d=n.effectiveFilterHeight,f=n.effectiveFilterWidth,h=n.padInfo.front,g=n.padInfo.top,x=n.padInfo.left,b=s===\"max\"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,C=me(n.outShape,t),S=C.values,k=n.outShape[1]*n.outShape[2]*n.outShape[3]*n.outShape[4],_=n.outShape[2]*n.outShape[3]*n.outShape[4],$=n.outShape[3]*n.outShape[4],R=n.outShape[4];for(let D=0;D_e?_e=gt:s===\"avg\"&&(ve+=gt,Fe++),isNaN(_e))break}if(isNaN(_e))break}if(isNaN(_e))break}let Pe=be+M;S[Pe]=s===\"avg\"?ve/Math.max(Fe,1):_e}}}}return C}function aE(r,e){let t=me(e.outShape,\"int32\"),o=e.strideDepth,n=e.strideHeight,s=e.strideWidth,a=e.dilationDepth,i=e.dilationHeight,p=e.dilationWidth,u=e.effectiveFilterDepth,c=e.effectiveFilterHeight,l=e.effectiveFilterWidth,m=e.padInfo.front,d=e.padInfo.top,f=e.padInfo.left;for(let h=0;h=L&&(L=re,B=U*c*l+q*c+J)}}}t.set(B,h,x,k,D,g)}}}return t}function FY(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e;Q(n,\"avgPool\");let{filterSize:s,strides:a,pad:i,dimRoundingMode:p}=o,u=1;y.assert(w.eitherStridesOrDilationsAreOne(a,u),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${a} and dilations '${u}'`);let c=w.computePool2DInfo(n.shape,s,a,u,i,p),l;if(c.filterWidth===1&&c.filterHeight===1&&y.arraysEqual(c.inShape,c.outShape))l=lr({inputs:{x:n},backend:t});else{let m=t.data.get(n.dataId).values,d=y.computeStrides(n.shape),f=vc(m,n.shape,n.dtype,d,c,\"avg\");l=t.makeTensorInfo(c.outShape,n.dtype,f.values)}return l}var iE={kernelName:Qo,backendName:\"cpu\",kernelFunc:FY};function PY(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{filterSize:s,strides:a,pad:i,dimRoundingMode:p,dataFormat:u}=o;Q(n,\"avgPool3d\");let c=w.computePool3DInfo(n.shape,s,a,1,i,p,u),l=t.data.get(n.dataId).values,m=zf(l,n.shape,n.dtype,y.computeStrides(n.shape),c,\"avg\");return t.makeTensorInfo(m.shape,\"float32\",m.values)}var uE={kernelName:Zs,backendName:\"cpu\",kernelFunc:PY};function OY(r){let{inputs:e,backend:t,attrs:o}=r,{dy:n,input:s}=e,{filterSize:a,strides:i,pad:p,dimRoundingMode:u}=o;Q([n,s],\"avgPool3DGrad\");let c=w.computePool3DInfo(s.shape,a,i,1,p,u),l=c.strideDepth,m=c.strideHeight,d=c.strideWidth,f=c.filterDepth,h=c.filterHeight,g=c.filterWidth,x=c.dilationDepth,b=c.dilationHeight,C=c.dilationWidth,S=c.effectiveFilterDepth,k=c.effectiveFilterHeight,_=c.effectiveFilterWidth,$=S-1-c.padInfo.front,R=_-1-c.padInfo.left,D=k-1-c.padInfo.top,P=me(s.shape,\"float32\"),O=1/(f*h*g),M=t.bufferSync(n);for(let L=0;L=c.outDepth||Math.floor(ee)!==ee))for(let oe=0;oe=c.outHeight||Math.floor(ie)!==ie))for(let le=0;le<_;le+=C){let be=(J+le)/d;if(be<0||be>=c.outWidth||Math.floor(be)!==be)continue;let _e=M.get(L,ee,ie,be,B);re+=_e}}}P.set(re*O,L,z,U,j,B)}return t.makeTensorInfo(P.shape,P.dtype,P.values)}var pE={kernelName:Ri,backendName:\"cpu\",kernelFunc:OY};function MY(r){let{inputs:e,backend:t,attrs:o}=r,{dy:n,input:s}=e,a=s;Q([n,s],\"avgPoolGrad\");let{filterSize:i,strides:p,pad:u}=o,c=w.computePool2DInfo(a.shape,i,p,1,u),l=c.strideHeight,m=c.strideWidth,d=c.filterHeight,f=c.filterWidth,h=c.dilationHeight,g=c.dilationWidth,x=c.effectiveFilterHeight,b=c.effectiveFilterWidth,C=b-1-c.padInfo.left,S=x-1-c.padInfo.top,k=me(a.shape,\"float32\"),_=1/(d*f),$=t.data.get(n.dataId).values,R=me(n.shape,\"float32\",$);for(let D=0;D=c.outHeight||Math.floor(j)!==j))for(let q=0;q=c.outWidth||Math.floor(Y)!==Y)continue;let J=R.get(D,j,Y,P);z+=J}}k.set(z*_,D,O,M,P)}return t.makeTensorInfo(k.shape,k.dtype,k.values)}var cE={kernelName:$i,backendName:\"cpu\",kernelFunc:MY};function LY(r){let{inputs:e,backend:t,attrs:o}=r,{x:n,scale:s,offset:a,mean:i,variance:p}=e;y.assert(i.shape.length===p.shape.length,()=>\"Batch normalization gradient requires mean and variance to have equal ranks.\"),y.assert(a==null||i.shape.length===a.shape.length,()=>\"Batch normalization gradient requires mean and offset to have equal ranks.\"),y.assert(s==null||i.shape.length===s.shape.length,()=>\"Batch normalization gradient requires mean and scale to have equal ranks.\"),Q([n,i,p,s,a],\"batchNorm\");let{varianceEpsilon:u}=o;u==null&&(u=.001);let c=t.data.get(n.dataId).values,l=t.data.get(i.dataId).values,m=t.data.get(p.dataId).values,d=s?t.data.get(s.dataId).values:new Float32Array([1]),f=a?t.data.get(a.dataId).values:new Float32Array([0]),h=new Float32Array(c.length),g=f.length,x=d.length,b=m.length,C=l.length,S=0,k=0,_=0,$=0;for(let R=0;R=g&&(S=0),k>=C&&(k=0),_>=x&&(_=0),$>=b&&($=0);return t.makeTensorInfo(n.shape,n.dtype,h)}var lE={kernelName:In,backendName:\"cpu\",kernelFunc:LY};function BY(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{blockShape:s,crops:a}=o;Q([n],\"batchToSpaceND\");let i=s.reduce((x,b)=>x*b),p=w.getReshaped(n.shape,s,i),u=w.getPermuted(p.length,s.length),c=w.getReshapedPermuted(n.shape,s,i),l=w.getSliceBeginCoords(a,s.length),m=w.getSliceSize(c,a,s.length),d=We({inputs:{x:n},backend:t,attrs:{shape:p}}),f=St({inputs:{x:d},backend:t,attrs:{perm:u}}),h=We({inputs:{x:f},backend:t,attrs:{shape:c}}),g=Ao({inputs:{x:h},backend:t,attrs:{begin:l,size:m}});return t.disposeIntermediateTensorInfo(d),t.disposeIntermediateTensorInfo(f),t.disposeIntermediateTensorInfo(h),g}var mE={kernelName:Js,backendName:\"cpu\",kernelFunc:BY};function zY(r){let{inputs:e,backend:t,attrs:o}=r,{x:n,weights:s}=e,{size:a}=o,i=t.data.get(n.dataId).values,p=t.data.get(s.dataId).values,u=Cc(i,p,s.dtype,s.shape,a);return t.makeTensorInfo([a],s.dtype,u)}var dE={kernelName:Jo,backendName:\"cpu\",kernelFunc:zY};function VY(r){let{inputs:e,backend:t}=r,{s0:o,s1:n}=e,s=t.data.get(o.dataId).values,a=t.data.get(n.dataId).values,i=w.assertAndGetBroadcastShape(Array.from(s),Array.from(a));return t.makeTensorInfo([i.length],\"int32\",Int32Array.from(i))}var fE={kernelName:ea,backendName:\"cpu\",kernelFunc:VY};var WY=Ie(bo,(r,e)=>{let t=e;return r>t.clipValueMax?t.clipValueMax:r{let{x:e}=r.inputs,t=r.backend,o=new Float32Array(y.sizeFromShape(e.shape)),n=t.data.get(e.dataId),s=n.complexTensorInfos.real,a=n.complexTensorInfos.imag,i=t.data.get(s.dataId).values,p=t.data.get(a.dataId).values;for(let u=0;uh.shape);w.assertParamsConsistent(a,s);let i=w.computeOutShape(e.map(h=>h.shape),s);if(y.sizeFromShape(i)===0)return t.makeTensorInfo(i,e[0].dtype,[]);let p=e.filter(h=>y.sizeFromShape(h.shape)>0);if(p.length===1)return lr({inputs:{x:p[0]},backend:t});if(p[0].dtype===\"complex64\"){let h=p.map(S=>$o({inputs:{input:S},backend:t})),g=p.map(S=>Oa({inputs:{input:S},backend:t})),x=hu({inputs:h,backend:t,attrs:{axis:s}}),b=hu({inputs:g,backend:t,attrs:{axis:s}}),C=Ht({inputs:{real:x,imag:b},backend:t});return h.forEach(S=>t.disposeIntermediateTensorInfo(S)),g.forEach(S=>t.disposeIntermediateTensorInfo(S)),t.disposeIntermediateTensorInfo(x),t.disposeIntermediateTensorInfo(b),C}let u=p.map(h=>{let x=[-1,y.sizeFromShape(h.shape.slice(s))];return We({inputs:{x:h},backend:t,attrs:{shape:x}})}),c=u.map(h=>({vals:t.data.get(h.dataId).values,shape:h.shape}));i=w.computeOutShape(u.map(h=>h.shape),1);let l=u[0].shape[0]===1,m=ap(c,i,e[0].dtype,l),d=w.computeOutShape(p.map(h=>h.shape),s),f=t.makeTensorInfo(d,e[0].dtype,m);return u.forEach(h=>t.disposeIntermediateTensorInfo(h)),f}var yE={kernelName:ta,backendName:\"cpu\",kernelFunc:hu};function CI(r){let{inputs:e,backend:t,attrs:o}=r,{x:n,filter:s}=e,{strides:a,pad:i,dataFormat:p,dilations:u,dimRoundingMode:c}=o;Q([n,s],\"conv2d\");let l=w.convertConv2DDataFormat(p),m=w.computeConv2DInfo(n.shape,s.shape,a,u,i,c,!1,l),d=m.filterHeight,f=m.filterWidth,h=m.dilationHeight,g=m.dilationWidth,x=m.padInfo.left,b=m.padInfo.top,C=m.dataFormat===\"channelsLast\",S=new tt(m.outShape,n.dtype),k=y.computeStrides(n.shape),_=y.computeStrides(s.shape),$=k[0],R=C?k[1]:k[2],D=C?k[2]:1,P=C?1:k[1],O=S.strides[0],M=C?S.strides[1]:S.strides[2],L=C?S.strides[2]:1,B=C?1:S.strides[1],z=t.data.get(n.dataId).values,U=t.data.get(s.dataId).values,j=S.values;for(let q=0;q=m.inHeight)continue;let le=oe*_[0],be=Y+ie*R;for(let _e=0;_e=m.inWidth)continue;let ct=le+Pe*_[1],He=be+st*D,lt=ct;for(let it=0;it=u.inDepth)continue;let q=U*D[0],Y=O+j*R[1];for(let J=0;J=u.inHeight)continue;let ie=q+ee*D[1],le=Y+oe*R[2];for(let be=0;be=u.inWidth)continue;let st=ie+Fe*D[2],ct=le+Pe*u.inChannels,He=st;for(let lt=0;ltMath.cos(r)),kE={kernelName:sn,backendName:\"cpu\",kernelFunc:XY};var YY=Ie(an,r=>Math.cosh(r)),NE={kernelName:an,backendName:\"cpu\",kernelFunc:YY};function QY(r){let{inputs:e,backend:t,attrs:o}=r,{image:n,boxes:s,boxInd:a}=e,{cropSize:i,method:p,extrapolationValue:u}=o,[c,l,m,d]=n.shape,f=s.shape[0],[h,g]=i,x=me([f,h,g,d],\"float32\"),b=t.data.get(s.dataId).values,C=t.data.get(a.dataId).values,S=t.data.get(n.dataId).values,k=y.computeStrides(n.shape),_=y.computeStrides(x.shape);for(let $=0;$=c)continue;let B=h>1?(O-D)*(l-1)/(h-1):0,z=g>1?(M-P)*(m-1)/(g-1):0;for(let U=0;U1?D*(l-1)+U*B:.5*(D+O)*(l-1);if(j<0||j>l-1){for(let q=0;q1?P*(m-1)+re*z:.5*(P+M)*(m-1);if(ne<0||ne>m-1){for(let le=0;le1?P*(m-1)+q*z:.5*(P+M)*(m-1);if(Y<0||Y>m-1){for(let ne=0;nex+f-b-1:(x,b)=>x+b;for(let x=0;xx+f-b-1:(x,b)=>x+b;for(let x=0;x`Only NHWC dataFormat supported on CPU for depthToSpace. Got ${a}`);let i=n.shape[0],p=n.shape[1],u=n.shape[2],c=n.shape[3],l=p*s,m=u*s,d=c/(s*s),f=t.data.get(n.dataId).values,h=new Float32Array(i*l*m*d),g=0;for(let x=0;x`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${a} and dilations '${m}'`);let d=w.computeConv2DInfo(n.shape,s.shape,a,m,i,u,!0),{filterHeight:f,filterWidth:h,dilationHeight:g,dilationWidth:x,padInfo:b}=d,C=b.left,S=b.top,k=d.outChannels/d.inChannels,_=new tt(d.outShape,n.dtype),$=t.data.get(n.dataId).values,R=t.data.get(s.dataId).values,D=_.values;for(let P=0;P=d.inHeight)continue;let q=U*l[0],Y=O+j*c[1];for(let J=0;J=d.inWidth)continue;let ie=q+ee*l[1],le=Y+oe*d.inChannels,be=re,_e=ie;for(let ve=0;ve{let{x:o,filter:n}=r,{strides:s,pad:a,dilations:i}=t,p=e,u=p.data.get(o.dataId).values,c=o.shape.length,l=p.data.get(n.dataId).values,m=n.shape.length,{batchSize:d,inHeight:f,inWidth:h,inChannels:g,outHeight:x,outWidth:b,padInfo:C,strideHeight:S,strideWidth:k,filterHeight:_,filterWidth:$,dilationHeight:R,dilationWidth:D,outShape:P}=w.computeDilation2DInfo(o.shape,n.shape,s,a,\"NHWC\",i),O=y.sizeFromShape(P),M=P.length,L=y.getArrayFromDType(o.dtype,O);for(let z=0;z=0&&oe=0&&lere&&(re=ve)}}}let ne=y.locToIndex([z,U,q,J],M,y.computeStrides(P));L[ne]=re}}}return{dataId:p.write(y.toTypedArray(L,o.dtype),P,o.dtype),shape:P,dtype:o.dtype}}};var ME={kernelName:Li,backendName:\"cpu\",kernelFunc:({inputs:r,backend:e,attrs:t})=>{let{x:o,filter:n,dy:s}=r,{strides:a,pad:i,dilations:p}=t,u=e,c=y.toNestedArray(o.shape,u.data.get(o.dataId).values),l=y.toNestedArray(n.shape,u.data.get(n.dataId).values),{batchSize:m,inHeight:d,inWidth:f,inChannels:h,outHeight:g,outWidth:x,padInfo:b,strideHeight:C,strideWidth:S,filterHeight:k,filterWidth:_,dilationHeight:$,dilationWidth:R,outShape:D}=w.computeDilation2DInfo(o.shape,n.shape,a,i,\"NHWC\",p);y.assert(s.rank===D.length,()=>`Error in ${Li}, dy must have the same rank as output ${D.length}, but got ${s.rank}`);let P=y.toNestedArray(D,u.data.get(s.dataId).values),O=y.makeZerosNestedTypedArray(n.shape,n.dtype);for(let L=0;L=0&&ee=0&&ieY&&(Y=le,J=ne,re=oe)}}}O[J][re][q]+=P[L][B][U][q]}}}return{dataId:u.write(y.toTypedArray(O,o.dtype),n.shape,n.dtype),shape:n.shape,dtype:n.dtype}}};var LE={kernelName:Mi,backendName:\"cpu\",kernelFunc:({inputs:r,backend:e,attrs:t})=>{let{x:o,filter:n,dy:s}=r,{strides:a,pad:i,dilations:p}=t,u=e,c=y.toNestedArray(o.shape,u.data.get(o.dataId).values),l=y.toNestedArray(n.shape,u.data.get(n.dataId).values),{batchSize:m,inHeight:d,inWidth:f,inChannels:h,outHeight:g,outWidth:x,padInfo:b,strideHeight:C,strideWidth:S,filterHeight:k,filterWidth:_,dilationHeight:$,dilationWidth:R,outShape:D}=w.computeDilation2DInfo(o.shape,n.shape,a,i,\"NHWC\",p);y.assert(s.rank===D.length,()=>`Error in ${Mi}, dy must have the same rank as output ${D.length}, but got ${s.rank}`);let P=y.toNestedArray(D,u.data.get(s.dataId).values),O=y.makeZerosNestedTypedArray(o.shape,o.dtype);for(let L=0;L=0&&ee=0&&ieY&&(Y=le,J=ee,re=ie)}}}O[L][J][re][q]+=P[L][B][U][q]}}}return{dataId:u.write(y.toTypedArray(O,o.dtype),o.shape,o.dtype),shape:o.shape,dtype:o.dtype}}};function sQ(r){let{inputs:e,backend:t,attrs:o}=r,{image:n}=e,{canvas:s,options:a}=o,{contextOptions:i,imageOptions:p}=a||{},u=(p==null?void 0:p.alpha)||1,c=(i==null?void 0:i.contextType)||\"2d\";if(c!==\"2d\")throw new Error(`Context type ${i.contextType} is not supported by the CPU backend.`);let l=s.getContext(c,(i==null?void 0:i.contextAttributes)||{});if(l==null)throw new Error(`Could not get the context with ${c} type.`);let[m,d]=n.shape.slice(0,2),f=n.shape.length===2?1:n.shape[2],h=t.data.get(n.dataId).values,g=n.dtype===\"float32\"?255:1,x=new Uint8ClampedArray(d*m*4);for(let C=0;C1)throw new Error(`Tensor values for a float32 Tensor must be in the range [0 - 1] but encountered ${$}.`)}else if(n.dtype===\"int32\"&&($<0||$>255))throw new Error(`Tensor values for a int32 Tensor must be in the range [0 - 255] but encountered ${$}.`);f===1?(S[0]=$*g,S[1]=$*g,S[2]=$*g):S[_]=$*g}let k=C*4;x[k+0]=Math.round(S[0]),x[k+1]=Math.round(S[1]),x[k+2]=Math.round(S[2]),x[k+3]=Math.round(S[3])}s.width=d,s.height=m;let b=new ImageData(x,d,m);return l.putImageData(b,0,0),n}var BE={kernelName:$u,backendName:\"cpu\",kernelFunc:sQ};function fi(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{axis:s,keepDims:a}=o;Q(n,\"sum\");let i;n.dtype===\"bool\"?i=Ro({inputs:{x:n},backend:t,attrs:{dtype:\"int32\"}}):i=lr({inputs:{x:n},backend:t});let p=i.shape.length,u=y.parseAxisParam(s,i.shape),c=w.getAxesPermutation(u,p),l=u,m=i;c!=null&&(m=St({inputs:{x:i},backend:t,attrs:{perm:c}}),l=w.getInnerMostAxes(l.length,p)),w.assertAxesAreInnerMostDims(\"sum\",l,m.shape.length);let[d,f]=w.computeOutAndReduceShapes(m.shape,l),h=w.upcastType(m.dtype,\"int32\"),g=yc(t,d,h),x=y.sizeFromShape(f),b=t.data.get(g.dataId).values,C=t.data.get(m.dataId).values;for(let S=0;S=0&&(m=fi({inputs:{x:m},backend:t,attrs:{axis:u[h]-(a.length-d),keepDims:!1}}),f.push(m)),d--)}for(let h of f)h!==m&&t.disposeIntermediateTensorInfo(h);return m}var VE={kernelName:Bi,backendName:\"cpu\",kernelFunc:aQ};function iQ(r){let{inputs:e,backend:t}=r,{dy:o,y:n}=e;Q([o,n],\"eluGrad\");let s=new Float32Array(y.sizeFromShape(n.shape)),a=t.data.get(n.dataId).values,i=t.data.get(o.dataId).values;for(let p=0;p=0?s[p]=i[p]:s[p]=i[p]*(u+1)}return t.makeTensorInfo(n.shape,\"float32\",s)}var WE={kernelName:Xa,backendName:\"cpu\",kernelFunc:iQ};var uQ=w.ERF_P,pQ=w.ERF_A1,cQ=w.ERF_A2,lQ=w.ERF_A3,mQ=w.ERF_A4,dQ=w.ERF_A5,fQ=Ie(gn,r=>{let e=Math.sign(r),t=Math.abs(r),o=1/(1+uQ*t);return e*(1-((((dQ*o+mQ)*o+lQ)*o+cQ)*o+pQ)*o*Math.exp(-t*t))}),UE={kernelName:gn,backendName:\"cpu\",kernelFunc:fQ};function kc(r){let{inputs:e,backend:t,attrs:o}=r,{input:n}=e,{dim:s}=o,a=n.shape.length,i=n.shape.slice(),p=s;return s<0&&(y.assert(-(a+1)<=s,()=>`Axis must be in the interval [${-(a+1)}, ${a}]`),p=a+s+1),i.splice(p,0,1),We({inputs:{x:n},backend:t,attrs:{shape:i}})}var GE={kernelName:na,backendName:\"cpu\",kernelFunc:kc};var hQ=Ve((r,e)=>r/e),Ul=Ye(fn,hQ),Gl={kernelName:fn,backendName:\"cpu\",kernelFunc:Ul};function Vf(r,e,t){let o=r.shape,n=o[0],s=o[1],a=t.data.get(r.dataId),i=a.complexTensorInfos.real,p=a.complexTensorInfos.imag,u=[n,s],c=y.sizeFromShape(u),l=y.getTypedArrayFromDType(\"float32\",c),m=y.getTypedArrayFromDType(\"float32\",c);for(let g=0;g{let{image:o}=r,n=t,s=y.getTypedArrayFromDType(o.dtype,y.sizeFromShape(o.shape)),[a,i,p,u]=o.shape,c=n.data.get(o.dataId).values;for(let m=0;m=0&&C=0,()=>`GatherV2: the index value ${k} is not in [0, ${c-1}]`)}let l=i;i==null&&(l=0);let m=y.sizeFromShape(s.shape),d=w.segment_util.collectGatherOpShapeInfo(n,s,p,l),f=We({inputs:{x:n},backend:t,attrs:{shape:[d.batchSize,d.outerSize,d.dimSize,d.sliceSize]}}),h=We({inputs:{x:s},backend:t,attrs:{shape:[d.batchSize,m/d.batchSize]}}),g=[d.batchSize,d.outerSize,m/d.batchSize,d.sliceSize],x=t.bufferSync(h),b=t.bufferSync(f),C=_f(b,x,g);return t.disposeIntermediateTensorInfo(f),t.disposeIntermediateTensorInfo(h),t.makeTensorInfo(d.outputShape,C.dtype,C.values)}var QE={kernelName:aa,backendName:\"cpu\",kernelFunc:vQ};function kQ(r){let{inputs:e,backend:t}=r,{input:o}=e,n=y.sizeFromShape(o.shape),s=o.shape[o.shape.length-1],a=n/s,i=We({inputs:{x:o},backend:t,attrs:{shape:[a,s]}}),p=Vf(i,!0,t),u=We({inputs:{x:p},backend:t,attrs:{shape:o.shape}});return t.disposeIntermediateTensorInfo(i),t.disposeIntermediateTensorInfo(p),u}var ZE={kernelName:Vi,backendName:\"cpu\",kernelFunc:kQ};var NQ=Ie(Tn,r=>Number.isFinite(r)?1:0,\"bool\"),JE={kernelName:Tn,backendName:\"cpu\",kernelFunc:NQ};var TQ=Ie(_n,r=>Math.abs(r)===1/0?1:0,\"bool\"),e$={kernelName:_n,backendName:\"cpu\",kernelFunc:TQ};var _Q=Ie(En,r=>Number.isNaN(r)?1:0,\"bool\"),t$={kernelName:En,backendName:\"cpu\",kernelFunc:_Q};function EQ(r){let{backend:e,attrs:t}=r,{start:o,stop:n,num:s}=t,a=Ef(o,n,s);return e.makeTensorInfo([a.length],\"float32\",a)}var r$={kernelName:An,backendName:\"cpu\",kernelFunc:EQ};var $Q=Ie(Pn,r=>Math.log1p(r)),o$={kernelName:Pn,backendName:\"cpu\",kernelFunc:$Q};var RQ=Ve((r,e)=>r&&e),DQ=Ye(On,RQ,null,\"bool\"),n$={kernelName:On,backendName:\"cpu\",kernelFunc:DQ};var AQ=Ie(Mn,r=>r?0:1,\"bool\"),s$={kernelName:Mn,backendName:\"cpu\",kernelFunc:AQ};var FQ=Ve((r,e)=>r||e),PQ=Ye(Ln,FQ,null,\"bool\"),a$={kernelName:Ln,backendName:\"cpu\",kernelFunc:PQ};function OQ(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{depthRadius:s,bias:a,alpha:i,beta:p}=o;Q(n,\"LRN\");let u=n.shape[3],c=u-1,l=t.data.get(n.dataId).values,m=y.sizeFromShape(n.shape),d=new Float32Array(m);function f(h){let g=h%u,x=h-g+Math.max(0,g-s),b=h-g+Math.min(g+s,c),C=0;for(;x<=b;x++){let S=l[x];C+=S*S}return C}for(let h=0;h`Error in maxPool: Either strides or dilations must be 1. Got strides ${a} and dilations '${u}'`);let c=w.computePool2DInfo(n.shape,s,a,u,i,p),l;if(c.filterWidth===1&&c.filterHeight===1&&y.arraysEqual(c.inShape,c.outShape))l=lr({inputs:{x:n},backend:t});else{let m=t.data.get(n.dataId).values,d=y.computeStrides(n.shape),f=vc(m,n.shape,n.dtype,d,c,\"max\");l=t.makeTensorInfo(c.outShape,n.dtype,f.values)}return l}var c$={kernelName:Wn,backendName:\"cpu\",kernelFunc:LQ};function BQ(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{filterSize:s,strides:a,pad:i,dimRoundingMode:p,dataFormat:u}=o;Q(n,\"maxPool3d\");let c=w.computePool3DInfo(n.shape,s,a,1,i,p,u),l=t.data.get(n.dataId).values,m=zf(l,n.shape,n.dtype,y.computeStrides(n.shape),c,\"max\");return t.makeTensorInfo(m.shape,\"float32\",m.values)}var l$={kernelName:ia,backendName:\"cpu\",kernelFunc:BQ};function zQ(r){let{inputs:e,backend:t,attrs:o}=r,{dy:n,input:s}=e,{filterSize:a,strides:i,pad:p,dimRoundingMode:u}=o;Q([n,s],\"maxPool3DGrad\");let c=w.computePool3DInfo(s.shape,a,i,1,p,u),l=t.bufferSync(s),m=aE(l,c),d=c.strideDepth,f=c.strideHeight,h=c.strideWidth,g=c.dilationDepth,x=c.dilationHeight,b=c.dilationWidth,C=c.effectiveFilterDepth,S=c.effectiveFilterHeight,k=c.effectiveFilterWidth,_=C-1-c.padInfo.front,$=k-1-c.padInfo.left,R=S-1-c.padInfo.top,D=me(s.shape,\"float32\"),P=t.bufferSync(n);for(let O=0;O=c.outDepth||Math.floor(re)!==re))for(let ne=0;ne=c.outHeight||Math.floor(ee)!==ee))for(let oe=0;oe=c.outWidth||Math.floor(ie)!==ie)continue;let le=C*S*k-1-m.get(O,re,ee,ie,M),be=J*S*k+ne*k+oe,_e=le===be?1:0;if(_e===0)continue;let ve=P.get(O,re,ee,ie,M);Y+=ve*_e}}}D.set(Y,O,L,B,z,M)}return t.makeTensorInfo(D.shape,D.dtype,D.values)}var m$={kernelName:Gi,backendName:\"cpu\",kernelFunc:zQ};function VQ(r){let{inputs:e,backend:t,attrs:o}=r,{dy:n,input:s,output:a}=e,i=s;Q([s,a],\"maxPoolGrad\");let{filterSize:p,strides:u,pad:c,dimRoundingMode:l}=o,m=w.computePool2DInfo(i.shape,p,u,1,c,l),d=t.data.get(i.dataId).values,f=me(m.outShape,i.dtype,Bf(d,i.shape,i.dtype,m).values),h=m.strideHeight,g=m.strideWidth,x=m.dilationHeight,b=m.dilationWidth,C=m.effectiveFilterHeight,S=m.effectiveFilterWidth,k=S-1-m.padInfo.left,_=C-1-m.padInfo.top,$=me(i.shape,\"float32\"),R=t.data.get(n.dataId).values,D=me(n.shape,\"float32\",R);for(let P=0;P=m.outHeight||Math.floor(q)!==q))for(let Y=0;Y=m.outWidth||Math.floor(J)!==J)continue;let re=C*S-1-f.get(P,q,J,O),ne=j*S+Y,ee=re===ne?1:0;if(ee===0)continue;let oe=D.get(P,q,J,O);U+=oe*ee}}$.set(U,P,M,L,O)}return t.makeTensorInfo($.shape,$.dtype,$.values)}var d$={kernelName:Ui,backendName:\"cpu\",kernelFunc:VQ};function f$(r,e,t,o,n){let s=y.computeStrides(e),a=vc(r,e,t,s,n,\"max\"),i=Bf(r,e,t,n,!0,o);return[a.values,i.values]}var h$={kernelName:ua,backendName:\"cpu\",kernelFunc:({inputs:r,attrs:e,backend:t})=>{let{x:o}=r,{filterSize:n,strides:s,pad:a,includeBatchInIndex:i}=e,p=t;Q(o,\"MaxPoolWithArgmax\");let u=p.data.get(o.dataId).values,c=w.computePool2DInfo(o.shape,n,s,[1,1],a),[l,m]=f$(u,o.shape,o.dtype,i,c),d=p.write(l,c.outShape,o.dtype),f=p.write(m,c.outShape,o.dtype);return[{dataId:d,shape:c.outShape,dtype:o.dtype},{dataId:f,shape:c.outShape,dtype:\"int32\"}]}};function WQ(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{axis:s,keepDims:a}=o,i=y.parseAxisParam(s,n.shape),u=w.computeOutAndReduceShapes(n.shape,i)[1],c=y.sizeFromShape(u),l=[],m=t.makeTensorInfo([],\"float32\",new Float32Array([c]));l.push(m);let d=Ro({inputs:{x:n},backend:t,attrs:{dtype:\"float32\"}});l.push(d);let f=Ul({inputs:{a:d,b:m},backend:t});l.push(f);let h=fi({inputs:{x:f},backend:t,attrs:{axis:s,keepDims:a}});return l.forEach(g=>t.disposeIntermediateTensorInfo(g)),h}var g$={kernelName:Un,backendName:\"cpu\",kernelFunc:WQ};function UQ(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{axis:s,keepDims:a}=o;Q(n,\"min\");let i=y.parseAxisParam(s,n.shape),p=i,u=w.getAxesPermutation(p,n.shape.length),c=n;u!=null&&(c=St({inputs:{x:n},backend:t,attrs:{perm:u}}),p=w.getInnerMostAxes(p.length,n.shape.length)),w.assertAxesAreInnerMostDims(\"min\",p,c.shape.length);let[l,m]=w.computeOutAndReduceShapes(c.shape,p),d=y.sizeFromShape(m),f=y.makeZerosTypedArray(y.sizeFromShape(l),c.dtype),h=t.data.get(c.dataId).values;for(let x=0;xC[0]+n.shape[S]+C[1]),p=s.map(C=>C[0]),u=s.map((C,S)=>C[0]+n.shape[S]),c=a===\"reflect\"?0:1,l=t.data.get(n.dataId).values,m=n.shape.length,d=y.computeStrides(n.shape),f=y.sizeFromShape(i),h=i.length,g=y.computeStrides(i),x=y.getTypedArrayFromDType(n.dtype,f);for(let C=0;C=u[_]&&(S[_]=(u[_]-1)*2-S[_]+c);S=S.map((_,$)=>_-p[$]);let k=y.locToIndex(S,m,d);x[C]=l[k]}return{dataId:t.write(x,i,n.dtype),shape:i,dtype:n.dtype}}var y$={kernelName:Kn,backendName:\"cpu\",kernelFunc:GQ};var HQ=Ve((r,e)=>{let t=r%e;return r<0&&e<0||r>=0&&e>=0?t:(t+e)%e}),KQ=Ye(qn,HQ),b$={kernelName:qn,backendName:\"cpu\",kernelFunc:KQ};var w$=zp(jw());function vI(r){let{inputs:e,backend:t,attrs:o}=r,{logits:n}=e,{dim:s}=o,a=n.shape.length,i=s;if(i===-1&&(i=a-1),i!==a-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${a} and dim was ${i}`);let p=y.parseAxisParam([i],n.shape),u=II({inputs:{x:n},backend:t,attrs:{reductionIndices:p,keepDims:!1}}),c=w.expandShapeToKeepDim(u.shape,p),l=We({inputs:{x:u},backend:t,attrs:{shape:c}}),m=Vl({inputs:{a:n,b:l},backend:t}),d=qS({inputs:{x:m},backend:t}),f=fi({inputs:{x:d},backend:t,attrs:{axis:p,keepDims:!1}}),h=We({inputs:{x:f},backend:t,attrs:{shape:c}}),g=Ul({inputs:{a:d,b:h},backend:t});return t.disposeIntermediateTensorInfo(u),t.disposeIntermediateTensorInfo(l),t.disposeIntermediateTensorInfo(m),t.disposeIntermediateTensorInfo(d),t.disposeIntermediateTensorInfo(f),t.disposeIntermediateTensorInfo(h),g}var C$={kernelName:Is,backendName:\"cpu\",kernelFunc:vI};function qQ(r){let{inputs:e,backend:t,attrs:o}=r,{logits:n}=e,{numSamples:s,seed:a,normalized:i}=o;Q(n,\"multinomial\");let p=i?n:vI({inputs:{logits:n},backend:t,attrs:{dim:-1}}),u=p.shape[0],c=p.shape[1],l=t.data.get(p.dataId).values,m=[u,s],d=y.makeZerosTypedArray(y.sizeFromShape(m),\"int32\");for(let f=0;f=0&&l[m]{y.assertShapesMatch(s,c.shape,\"All tensors passed to stack must have matching shapes\"),y.assert(a===c.dtype,()=>\"All tensors passed to stack must have matching dtypes\")});let i=[],p=e.map(c=>{let l=kc({inputs:{input:c},backend:t,attrs:{dim:n}});return i.push(l),l}),u=hu({inputs:p,backend:t,attrs:{axis:n}});return i.forEach(c=>t.disposeIntermediateTensorInfo(c)),u}var $$={kernelName:la,backendName:\"cpu\",kernelFunc:kI};function t7(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{paddings:s,constantValue:a}=o;Q(n,\"pad\");let i=s.map((b,C)=>b[0]+n.shape[C]+b[1]),p=s.map(b=>b[0]),u=t.data.get(n.dataId).values,c=y.sizeFromShape(n.shape),l=n.shape.length,m=y.computeStrides(n.shape),d=y.sizeFromShape(i),f=i.length,h=y.computeStrides(i),g=y.getTypedArrayFromDType(n.dtype,d);a!==0&&g.fill(a);for(let b=0;b