@kubohiroya/turbowarp-teachable-machine 3.2.0 → 3.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/backend-wasm.js +1 -1
- package/dist/backend-webgpu.js +1 -1
- package/dist/composition.js +1 -1
- package/dist/posenet.js +1 -1
- package/dist/runtime.js +2 -2
- package/dist/tm.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -69,7 +69,7 @@ That download, and the artifact a composite runtime fetches, is the version-pinn
|
|
|
69
69
|
jsDelivr:
|
|
70
70
|
|
|
71
71
|
```text
|
|
72
|
-
https://cdn.jsdelivr.net/npm/@kubohiroya/turbowarp-teachable-machine@3.2.
|
|
72
|
+
https://cdn.jsdelivr.net/npm/@kubohiroya/turbowarp-teachable-machine@3.2.1/dist/tm.js
|
|
73
73
|
```
|
|
74
74
|
|
|
75
75
|
The standalone extension loads one reviewed browser runtime that contains one TensorFlow.js 4.22.0
|
|
@@ -81,13 +81,13 @@ Composite runtimes can load or embed the same artifact without rewriting a minif
|
|
|
81
81
|
bundle:
|
|
82
82
|
|
|
83
83
|
```text
|
|
84
|
-
https://cdn.jsdelivr.net/npm/@kubohiroya/turbowarp-teachable-machine@3.2.
|
|
84
|
+
https://cdn.jsdelivr.net/npm/@kubohiroya/turbowarp-teachable-machine@3.2.1/dist/runtime.js
|
|
85
85
|
```
|
|
86
86
|
|
|
87
87
|
To add the published package to another project:
|
|
88
88
|
|
|
89
89
|
```sh
|
|
90
|
-
pnpm add --save-exact @kubohiroya/turbowarp-teachable-machine@3.2.
|
|
90
|
+
pnpm add --save-exact @kubohiroya/turbowarp-teachable-machine@3.2.1
|
|
91
91
|
```
|
|
92
92
|
|
|
93
93
|
### Offline PoseNet bundle API
|
package/dist/backend-wasm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @license Includes TensorFlow.js WASM backend 4.22.0 (Apache-2.0). See https://github.com/kubohiroya/turbowarp-teachable-machine/blob/v3.2.
|
|
1
|
+
/*! @license Includes TensorFlow.js WASM backend 4.22.0 (Apache-2.0). See https://github.com/kubohiroya/turbowarp-teachable-machine/blob/v3.2.1/THIRD_PARTY_NOTICES.md. */
|
|
2
2
|
(function(u){"use strict";function Ka(r,a){for(var s=0;s<a.length;s++){const o=a[s];if(typeof o!="string"&&!Array.isArray(o)){for(const n in o)if(n!=="default"&&!(n in r)){const t=Object.getOwnPropertyDescriptor(o,n);t&&Object.defineProperty(r,n,t.get?t:{enumerable:!0,get:()=>o[n]})}}}return Object.freeze(Object.defineProperty(r,Symbol.toStringTag,{value:"Module"}))}var V;(function(r){r[r.float32=0]="float32",r[r.int32=1]="int32",r[r.bool=2]="bool",r[r.string=3]="string",r[r.complex64=4]="complex64"})(V||(V={}));var Le;(function(r){r[r.linear=0]="linear",r[r.relu=1]="relu",r[r.relu6=2]="relu6",r[r.prelu=3]="prelu",r[r.leakyrelu=4]="leakyrelu",r[r.sigmoid=5]="sigmoid",r[r.elu=6]="elu"})(Le||(Le={}));let Vt;function Ca(r){Vt=r.wasm.cwrap(u._FusedMatMul,null,["number","array","number","number","array","number","number","number","number","number","number","number","number"])}function Xa(r){const{inputs:a,backend:s,attrs:o}=r,{a:n,b:t,bias:d,preluActivationWeights:c}=a;if(n.dtype!=="float32"||t.dtype!=="float32")throw new Error("_FusedMatMul for non non-float32 tensors not yet supported.");const{transposeA:l,transposeB:i,activation:e,leakyreluAlpha:m}=o,g=s.dataIdMap.get(n.dataId).id,f=s.dataIdMap.get(t.dataId).id;let h=0;if(d!=null){const L=s.dataIdMap.get(d.dataId);if(L.shape.length!==1)throw new Error(`_FusedMatMul only supports rank-1 bias but got rank ${L.shape.length}.`);h=L.id}const b=c==null?0:s.dataIdMap.get(c.dataId).id,k=Le[e];if(k==null)throw new Error(`${e} activation not yet supported for FusedConv2D in the wasm backend.`);const w=l?n.shape[2]:n.shape[1],y=i?t.shape[1]:t.shape[2],I=u.broadcast_util.assertAndGetBroadcastShape(n.shape.slice(0,-2),t.shape.slice(0,-2)),A=s.makeOutput([...I,w,y],n.dtype),E=s.dataIdMap.get(A.dataId).id,P=new Uint8Array(new Int32Array(n.shape).buffer),W=new Uint8Array(new Int32Array(t.shape).buffer);return Vt(g,P,n.shape.length,f,W,t.shape.length,l,i,k,h,b,m||0,E),A}const Qa={kernelName:u._FusedMatMul,backendName:"wasm",setupFunc:Ca,kernelFunc:Xa};function $(r,a){let s;function o(t){s=t.wasm.cwrap(r,null,["number","number","number"])}function n(t){const{backend:d,inputs:{x:c}}=t,l=d.dataIdMap.get(c.dataId).id,i=d.makeOutput(c.shape,a||c.dtype),e=d.dataIdMap.get(i.dataId).id;return u.util.sizeFromShape(i.shape)===0||s(l,V[c.dtype],e),i}return{kernelName:r,backendName:"wasm",setupFunc:o,kernelFunc:n}}const Ja=$(u.Abs);const Ya=$(u.Acos);const Za=$(u.Acosh);function j(r,a,s){let o;function n(d){o=d.wasm.cwrap(r,null,["number","array","number","number","array","number","number","number"])}function t(d){const{backend:c,inputs:l}=d,{a:i,b:e}=l,m=c.dataIdMap.get(i.dataId).id,g=c.dataIdMap.get(e.dataId).id,f=s??i.dtype,h=u.backend_util.assertAndGetBroadcastShape(i.shape,e.shape),b=c.makeOutput(h,f);if(u.util.sizeFromShape(h)===0)return b;const k=new Uint8Array(new Int32Array(i.shape).buffer),w=new Uint8Array(new Int32Array(e.shape).buffer),y=c.dataIdMap.get(b.dataId).id;return o(m,k,i.shape.length,g,w,e.shape.length,V[i.dtype],y),b}return{kernelName:r,backendName:"wasm",setupFunc:n,kernelFunc:t}}const ja=j(u.Add);let Gt;function er(r){Gt=r.wasm.cwrap(u.AddN,null,["array","number","number","number"])}function tr(r){const{inputs:a,backend:s}=r,o=s.makeOutput(a[0].shape,a[0].dtype);if(u.util.sizeFromShape(o.shape)===0)return o;const n=a.map(c=>s.dataIdMap.get(c.dataId).id),t=new Uint8Array(new Int32Array(n).buffer),d=s.dataIdMap.get(o.dataId).id;return Gt(t,n.length,V[o.dtype],d),o}const nr={kernelName:u.AddN,backendName:"wasm",setupFunc:er,kernelFunc:tr};function Ye(r){const{inputs:{x:a},backend:s}=r;if(a.dtype==="string")return u.tensor(s.readSync(a.dataId),a.shape,a.dtype);const o=s.makeOutput(a.shape,a.dtype),n=s.typedArrayFromHeap(a);return s.typedArrayFromHeap(o).set(n),o}const ar={kernelName:u.Identity,backendName:"wasm",kernelFunc:Ye};let Ut;function rr(r){Ut=r.wasm.cwrap(u.Transpose,null,["number","array","number","number","number","array","number"])}function we(r){const{inputs:a,backend:s,attrs:o}=r,[n,t]=ur(a.x.shape,o.perm);let d=!0;for(let h=0;h<t.length;h++)t[h]!==h&&(d=!1);const c=sr(a.x.shape,o.perm),l={dataId:a.x.dataId,shape:n,dtype:a.x.dtype};if(d){const h=Ye({inputs:a,backend:s});return h.shape=c,h}const i=s.makeOutput(c,l.dtype),e=s.dataIdMap.get(l.dataId).id,m=s.dataIdMap.get(i.dataId).id,g=new Uint8Array(new Int32Array(t).buffer),f=new Uint8Array(new Int32Array(l.shape).buffer);return Ut(e,f,l.shape.length,V[l.dtype],m,g,t.length),i}function sr(r,a){const s=new Array(r.length);for(let o=0;o<s.length;o++)s[o]=r[a[o]];return s}function ur(r,a){const s=[],o=[];for(let n=0;n<r.length;++n)r[n]!==1&&s.push(r[n]),r[a[n]]!==1&&o.push(a[n]);for(let n=0;n<o.length;++n){let t=-1;for(let d=0;d<o.length;++d)o[d]>=n&&(t===-1||o[t]>o[d])&&(t=d);o[t]=n}return[s,o]}const ir={kernelName:u.Transpose,backendName:"wasm",kernelFunc:we,setupFunc:rr};function ke(r,a,s){const o=r.shape,n=r.shape.length,t=u.util.parseAxisParam(a,o);let d=t;const c=u.backend_util.getAxesPermutation(d,n);let l=null,i=!1;if(c!=null){const e=new Array(n);for(let f=0;f<e.length;f++)e[f]=o[c[f]];d=u.backend_util.getInnerMostAxes(d.length,n),l=we({inputs:{x:r},attrs:{perm:c},backend:s});const m=s.dataIdMap.get(r.dataId).id;s.dataIdMap.get(l.dataId).id!==m&&(i=!0)}return{transposed:l,originalAxes:t,axes:d,inputWasTransposed:i}}let qt;function or(r){qt=r.wasm.cwrap(u.All,null,["number, number, number"])}function dr(r){const{backend:a,inputs:s,attrs:o}=r,{axis:n,keepDims:t}=o,{x:d}=s;let l=a.dataIdMap.get(d.dataId).id,i=d;const{transposed:e,axes:m,originalAxes:g,inputWasTransposed:f}=ke(d,n,a);if(f){const I=a.dataIdMap.get(e.dataId).id;i=e,l=I}const h=i.shape.length;u.backend_util.assertAxesAreInnerMostDims("all",m,h);const[b,k]=u.backend_util.computeOutAndReduceShapes(i.shape,m),w=u.util.sizeFromShape(k),y=a.makeOutput(b,d.dtype);if(u.util.sizeFromShape(i.shape)!==0){const I=a.dataIdMap.get(y.dataId).id;qt(l,w,I)}if(f&&a.disposeData(e.dataId),t){const I=u.backend_util.expandShapeToKeepDim(y.shape,g);y.shape=I}return y}const cr={kernelName:u.All,backendName:"wasm",setupFunc:or,kernelFunc:dr};let Kt;function lr(r){Kt=r.wasm.cwrap(u.Any,null,["number, number, number"])}function pr(r){const{backend:a,inputs:s,attrs:o}=r,{axis:n,keepDims:t}=o,{x:d}=s;let l=a.dataIdMap.get(d.dataId).id,i=d;const{transposed:e,axes:m,originalAxes:g,inputWasTransposed:f}=ke(d,n,a);if(f){const I=a.dataIdMap.get(e.dataId).id;i=e,l=I}const h=i.shape.length;u.backend_util.assertAxesAreInnerMostDims("any",m,h);const[b,k]=u.backend_util.computeOutAndReduceShapes(i.shape,m),w=u.util.sizeFromShape(k),y=a.makeOutput(b,d.dtype);if(u.util.sizeFromShape(i.shape)!==0){const I=a.dataIdMap.get(y.dataId).id;Kt(l,w,I)}if(f&&a.disposeData(e.dataId),t){const I=u.backend_util.expandShapeToKeepDim(y.shape,g);y.shape=I}return y}const mr={kernelName:u.Any,backendName:"wasm",setupFunc:lr,kernelFunc:pr};function Ct(r){let a;function s(n){a=n.wasm.cwrap(r,null,["number","number","number","number","number"])}function o(n){const{backend:t,inputs:d,attrs:c}=n,{axis:l}=c,{x:i}=d,e=t.dataIdMap.get(i.dataId).id;let m=e,g=i;const{transposed:f,axes:h,inputWasTransposed:b}=ke(i,l,t);if(b){const E=t.dataIdMap.get(f.dataId).id;E!==e&&(g=f,m=E)}const k=g.shape.slice(0,-1),w=t.makeOutput(k,"int32"),y=t.dataIdMap.get(w.dataId).id,I=u.util.sizeFromShape(w.shape),A=g.shape[h[0]];return a(m,V[g.dtype],I,A,y),b&&t.disposeData(f.dataId),w}return{kernelName:r,backendName:"wasm",setupFunc:s,kernelFunc:o}}const fr=Ct(u.ArgMax);const hr=Ct(u.ArgMin);const gr=$(u.Asin);const br=$(u.Asinh);const _r=$(u.Atan);const yr=j(u.Atan2);const Ir=$(u.Atanh);let Xt;function wr(r){Xt=r.wasm.cwrap(u.AvgPool,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function kr(r){const{inputs:a,attrs:s,backend:o}=r,n=a.x,t=o.dataIdMap.get(n.dataId).id,{filterSize:d,strides:c,pad:l,dimRoundingMode:i}=s,e=u.backend_util.computePool2DInfo(n.shape,d,c,1,l,i),m=e.filterHeight,g=e.filterWidth,f=e.padInfo.top,h=e.padInfo.right,b=e.padInfo.bottom,k=e.padInfo.left,w=e.strideHeight,y=e.strideWidth,I=e.inChannels;if(e.dataFormat!=="channelsLast")throw new Error(`wasm backend does not support dataFormat:'${e.dataFormat}'. Please use 'channelsLast'.`);if(e.dilationWidth!==1||e.dilationHeight!==1)throw new Error(`was backend only supports average pooling with dilation = [1, 1], got [${e.dilationHeight}, ${e.dilationWidth}].`);const A=o.makeOutput(e.outShape,"float32"),E=o.dataIdMap.get(A.dataId).id;return Xt(t,n.shape[0],n.shape[1],n.shape[2],m,g,f,h,b,k,w,y,I,E),A}const Sr={kernelName:u.AvgPool,backendName:"wasm",setupFunc:wr,kernelFunc:kr};let Qt;function Mr(r){Qt=r.wasm.cwrap("AvgPool3D",null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function vr(r){const{inputs:a,backend:s,attrs:o}=r,{x:n}=a,{filterSize:t,strides:d,pad:c,dimRoundingMode:l,dataFormat:i}=o,e=u.backend_util.computePool3DInfo(n.shape,t,d,1,c,l,i),m=s.makeOutput(e.outShape,n.dtype);return Qt(s.dataIdMap.get(n.dataId).id,s.dataIdMap.get(m.dataId).id,e.batchSize,e.inChannels,e.inDepth,e.inHeight,e.inWidth,e.outDepth,e.outHeight,e.outWidth,e.strideDepth,e.strideHeight,e.strideWidth,e.dilationDepth,e.dilationHeight,e.dilationWidth,e.effectiveFilterDepth,e.effectiveFilterHeight,e.effectiveFilterWidth,e.padInfo.front,e.padInfo.top,e.padInfo.left),m}const Ar={kernelName:u.AvgPool3D,backendName:"wasm",setupFunc:Mr,kernelFunc:vr};let Jt;function xr(r){Jt=r.wasm.cwrap("AvgPool3DGrad",null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function Dr(r){const{inputs:a,backend:s,attrs:o}=r,{dy:n,input:t}=a,{filterSize:d,strides:c,pad:l,dimRoundingMode:i}=o,e=u.backend_util.computePool3DInfo(t.shape,d,c,1,l,i),m=s.makeOutput(t.shape,t.dtype);return Jt(s.dataIdMap.get(n.dataId).id,s.dataIdMap.get(m.dataId).id,e.batchSize,e.inChannels,e.inDepth,e.inHeight,e.inWidth,e.outDepth,e.outHeight,e.outWidth,e.strideDepth,e.strideHeight,e.strideWidth,e.dilationDepth,e.dilationHeight,e.dilationWidth,e.effectiveFilterDepth,e.effectiveFilterHeight,e.effectiveFilterWidth,e.padInfo.front,e.padInfo.top,e.padInfo.left,e.filterDepth,e.filterHeight,e.filterWidth),m}const Fr={kernelName:u.AvgPool3DGrad,backendName:"wasm",setupFunc:xr,kernelFunc:Dr};let Yt;function Nr(r){Yt=r.wasm.cwrap("AvgPoolGrad",null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function Rr(r){const{inputs:a,backend:s,attrs:o}=r,{dy:n,input:t}=a,{filterSize:d,strides:c,pad:l}=o,i=u.backend_util.computePool2DInfo(t.shape,d,c,1,l),e=s.makeOutput(t.shape,t.dtype);return Yt(s.dataIdMap.get(n.dataId).id,s.dataIdMap.get(e.dataId).id,i.batchSize,i.inChannels,i.inHeight,i.inWidth,i.outHeight,i.outWidth,i.strideHeight,i.strideWidth,i.dilationHeight,i.dilationWidth,i.effectiveFilterHeight,i.effectiveFilterWidth,i.padInfo.top,i.padInfo.left,i.filterHeight,i.filterWidth),e}const Pr={kernelName:u.AvgPoolGrad,backendName:"wasm",setupFunc:Nr,kernelFunc:Rr};function ue(r){const{inputs:a,attrs:s}=r,{x:o}=a,{shape:n}=s,t=u.util.sizeFromShape(o.shape),d=u.util.inferFromImplicitShape(n,t);return u.util.assert(t===u.util.sizeFromShape(d),()=>`new shape: ${d}, old shape: ${o.shape}. New shape and old shape must have the same number of elements.`),r.backend.incRef(o.dataId),{dataId:o.dataId,shape:d,dtype:o.dtype}}const Er={kernelName:u.Reshape,backendName:"wasm",kernelFunc:ue};let Zt;function Tr(r){Zt=r.wasm.cwrap(u.BatchMatMul,null,["number","array","number","number","array","number","number","number","number"])}function Br(r){const{inputs:a,backend:s,attrs:o}=r,{a:n,b:t}=a,{transposeA:d,transposeB:c}=o;if(n.dtype!=="float32"||t.dtype!=="float32")throw new Error("BatchMatMul for non non-float32 tensors not yet supported.");const l=n.shape.length,i=t.shape.length,e=d?n.shape[l-2]:n.shape[l-1],m=c?t.shape[i-1]:t.shape[i-2],g=d?n.shape[l-1]:n.shape[l-2],f=c?t.shape[i-2]:t.shape[i-1],h=n.shape.slice(0,-2),b=t.shape.slice(0,-2),k=u.util.sizeFromShape(h),w=u.util.sizeFromShape(b),I=u.broadcast_util.assertAndGetBroadcastShape(n.shape.slice(0,-2),t.shape.slice(0,-2)).concat([g,f]);u.util.assert(e===m,()=>`Error in matMul: inner shapes (${e}) and (${m}) of Tensors with shapes ${n.shape} and ${t.shape} and transposeA=${d} and transposeB=${c} must match.`);const A=d?[k,e,g]:[k,g,e],E=c?[w,f,m]:[w,m,f],P=ue({inputs:{x:n},backend:s,attrs:{shape:A}}),W=ue({inputs:{x:t},backend:s,attrs:{shape:E}}),L=s.dataIdMap.get(P.dataId).id,G=s.dataIdMap.get(W.dataId).id,H=d?P.shape[2]:P.shape[1],q=c?W.shape[1]:W.shape[2],C=Math.max(k,w),Y=s.makeOutput([C,H,q],P.dtype),ie=s.dataIdMap.get(Y.dataId).id,X=new Uint8Array(new Int32Array(P.shape).buffer),te=new Uint8Array(new Int32Array(W.shape).buffer);return Zt(L,X,P.shape.length,G,te,W.shape.length,d,c,ie),s.disposeData(P.dataId),s.disposeData(W.dataId),Y.shape=I,Y}const Or={kernelName:u.BatchMatMul,backendName:"wasm",setupFunc:Tr,kernelFunc:Br};function Wr(r,a,s,o){const n=u.util.getArrayFromDType(s,u.util.sizeFromShape(a));if(o&&s!=="string"){let t=0;r.forEach(d=>{const c=u.util.sizeFromShape(d.shape);n.set(d.vals,t),t+=c})}else{let t=0;r.forEach(d=>{const c=s==="string"?u.backend_util.fromUint8ToStringArray(d.vals):d.vals;let l=0;for(let i=0;i<d.shape[0];++i){const e=i*a[1]+t;for(let m=0;m<d.shape[1];++m)n[e+m]=c[l++]}t+=d.shape[1]})}return n}function zr(r,a,s,o){const n=r===a,t=r<a&&s<0,d=a<r&&s>1;if(n||t||d)return u.util.makeZerosTypedArray(0,o);const c=Math.abs(Math.ceil((a-r)/s)),l=u.util.makeZerosTypedArray(c,o);a<r&&s===1&&(s=-1),l[0]=r;for(let i=1;i<l.length;i++)l[i]=l[i-1]+s;return l}function jt(r,a,s,o,n){const t=u.slice_util.isSliceContinous(o,a,s),d=u.util.sizeFromShape(s),c=u.util.computeStrides(o);if(t){const m=u.slice_util.computeFlatOffset(a,c);return n==="string"?r.slice(m,m+d):r.subarray(m,m+d)}const l=n==="string"?u.backend_util.fromUint8ToStringArray(r):r,i=u.buffer(o,n,l),e=u.buffer(s,n);for(let m=0;m<e.size;++m){const g=e.indexToLoc(m),f=g.map((h,b)=>h+a[b]);e.set(i.get(...f),...g)}return n==="string"?u.backend_util.fromStringArrayToUint8(e.values):e.values}class Hr{constructor(a,s,o,n,t,d){this.separator=u.util.encodeString(a),this.nGramWidths=s,this.leftPad=u.util.encodeString(o),this.rightPad=u.util.encodeString(n),this.padWidth=t,this.preserveShort=d}getPadWidth(a){return Math.min(this.padWidth<0?a-1:this.padWidth,a-1)}getNumNGrams(a,s){const o=this.getPadWidth(s);return Math.max(0,a+2*o-s+1)}createNGrams(a,s,o,n,t,d){for(let c=0;c<t;++c){const l=this.getPadWidth(d),i=Math.max(0,l-c),e=Math.max(0,l-(t-(c+1))),m=d-(i+e),g=s+(i>0?0:c-l);let f=0;f+=i*this.leftPad.length;for(let y=0;y<m;++y)f+=a[g+y].length;f+=e*this.rightPad.length;const h=i+e+m-1;f+=h*this.separator.length,o[n+c]=new Uint8Array(f);const b=o[n+c];let k=0;const w=y=>y.forEach(I=>b[k++]=I);for(let y=0;y<i;++y)w(this.leftPad),w(this.separator);for(let y=0;y<m-1;++y)w(a[g+y]),w(this.separator);if(m>0){w(a[g+m-1]);for(let y=0;y<e;++y)w(this.separator),w(this.rightPad)}else{for(let y=0;y<e-1;++y)w(this.rightPad),w(this.separator);w(this.rightPad)}}}compute(a,s){const o=a.length,n=s.length;if(n>0){let l=s[0];if(l!==0)throw new Error(`First split value must be 0, got ${l}`);for(let i=1;i<n;++i){let e=s[i]>=l;if(e=e&&s[i]<=o,!e)throw new Error(`Invalid split value ${s[i]}, must be in [${l}, ${o}]`);l=s[i]}if(l!==o)throw new Error(`Last split value must be data size. Expected ${o}, got ${l}`)}const t=n-1,d=u.util.getArrayFromDType("int32",n);if(o===0||n===0){const l=new Array(o);for(let i=0;i<=t;++i)d[i]=0;return[l,d]}d[0]=0;for(let l=1;l<=t;++l){const i=s[l]-s[l-1];let e=0;this.nGramWidths.forEach(m=>{e+=this.getNumNGrams(i,m)}),this.preserveShort&&i>0&&e===0&&(e=1),d[l]=d[l-1]+e}const c=new Array(d[t]);for(let l=0;l<t;++l){const i=s[l];let e=d[l];if(this.nGramWidths.forEach(m=>{const g=s[l+1]-s[l],f=this.getNumNGrams(g,m);this.createNGrams(a,i,c,e,f,m),e+=f}),this.preserveShort&&e===d[l]){const m=s[l+1]-s[l];if(m===0)continue;const g=m+2*this.padWidth;this.createNGrams(a,i,c,e,1,g)}}return[c,d]}}function $r(r,a,s,o,n,t,d,c){return new Hr(s,o,n,t,d,c).compute(r,a)}function Lr(r,a,s,o){if(!r.length)return;if(a.length===0){for(let t=0;t<r.length;++t)o.push(r.subarray(t,t+1));return}if(a.length===1){const t=a[0];let d=r.indexOf(t);for(;d!==-1;){const c=r.subarray(0,d);(!s||c.length!==0)&&o.push(c),r=r.subarray(d+1),d=r.indexOf(t)}(!s||r.length!==0)&&o.push(r);return}let n=0;for(let t=0;t<r.length+1;t++)if(t===r.length||a.indexOf(r[t])!==-1){const d=r.subarray(n,t);(!s||d.length!==0)&&o.push(d),n=t+1}}function Vr(r,a,s){const o=r.length,n=[];let t=0,d=0;const c=new Array(o);for(let g=0;g<o;++g){const f=n.length;Lr(r[g],a,s,n);const h=n.length-f;c[g]=h,t+=h,d=Math.max(d,h)}const l=u.util.getArrayFromDType("int32",t*2),i=new Array(t),e=[o,d];let m=0;for(let g=0;g<o;++g)for(let f=0;f<c[g];++f)l[m*2]=g,l[m*2+1]=f,i[m]=n[m],++m;return[l,i,e]}function Gr(r,a){const s=u.util.getArrayFromDType("int32",r.length);for(let o=0;o<r.length;++o)s[o]=u.util.fingerPrint64(r[o]).modulo(a).getLowBitsUnsigned();return s}function Ur(r,a,s,o){const n=u.util.parseAxisParam(a,s)[0],t=[1,s[0],1];for(let h=0;h<n;h++)t[0]*=s[h];t[1]=s[n];for(let h=n+1;h<s.length;h++)t[2]*=s[h];const d=new Map,c=new Int32Array(s[n]),l=new u.TensorBuffer(t,o,r),i=[],e=t[0]===1&&t[2]===1;for(let h=0;h<s[n];h++){let b;if(e)b=r[h].toString();else{const w=[];for(let y=0;y<t[0];y++)for(let I=0;I<t[2];I++)w.push(l.get(y,h,I));b=w.join(",")}const k=d.get(b);if(k!=null)c[h]=k;else{const w=d.size;d.set(b,w),c[h]=w,i.push(h)}}const m=t.slice();m[1]=d.size;const g=new u.TensorBuffer(m,o);i.forEach((h,b)=>{for(let k=0;k<t[0];k++)for(let w=0;w<t[2];w++)g.set(l.get(k,h,w),k,b,w)});const f=s.slice();return f[n]=m[1],{outputValues:g.values,outputShape:f,indices:c}}function Ae(r){const{inputs:{x:a},attrs:{begin:s,size:o},backend:n}=r,[t,d]=u.slice_util.parseSliceParams(a,s,o),c=u.slice_util.isSliceContinous(a.shape,t,d),l=n.readSync(a.dataId),i=n.makeOutput(d,a.dtype),e=u.util.computeStrides(a.shape),m=n.dataIdMap.get(i.dataId);if(c){const h=u.slice_util.computeFlatOffset(t,e);return a.dtype==="string"?m.stringBytes=l.slice(h,h+u.util.sizeFromShape(d)):n.typedArrayFromHeap(i).set(l.subarray(h,h+u.util.sizeFromShape(d))),i}if(a.dtype==="string"){const h=jt(l,t,d,a.shape,a.dtype);return m.stringBytes=h,i}const g=n.typedArrayFromHeap(i),f=a.shape.length;if(f===2)qr(l,e[0],g,t,d);else if(f===3)Kr(l,e[0],e[1],g,t,d);else if(f===4)Cr(l,e[0],e[1],e[2],g,t,d);else{const h=jt(l,t,d,a.shape,a.dtype);g.set(h)}return i}function qr(r,a,s,o,n){let t=0;const d=o[0],c=o[1],l=d+n[0];for(let i=d;i<l;i++){const e=i*a+c;s.set(r.subarray(e,e+n[1]),t),t+=n[1]}}function Kr(r,a,s,o,n,t){let d=0;const c=n[0],l=n[1],i=n[2],e=c+t[0],m=l+t[1];for(let g=c;g<e;g++)for(let f=l;f<m;f++){const h=g*a+f*s+i;o.set(r.subarray(h,h+t[2]),d),d+=t[2]}}function Cr(r,a,s,o,n,t,d){let c=0;const l=t[0],i=t[1],e=t[2],m=l+d[0],g=i+d[1],f=e+d[2],h=t[3];for(let b=l;b<m;b++)for(let k=i;k<g;k++)for(let w=e;w<f;w++){const y=b*a+k*s+w*o+h;n.set(r.subarray(y,y+d[3]),c),c+=d[3]}}const Xr={kernelName:u.Slice,backendName:"wasm",kernelFunc:Ae};function Qr(r){const{inputs:a,backend:s,attrs:o}=r,{x:n}=a,{blockShape:t,crops:d}=o,c=t.reduce((w,y)=>w*y),l=u.backend_util.getReshaped(n.shape,t,c),i=u.backend_util.getPermuted(l.length,t.length),e=u.backend_util.getReshapedPermuted(n.shape,t,c),m=u.backend_util.getSliceBeginCoords(d,t.length),g=u.backend_util.getSliceSize(e,d,t.length),f=ue({inputs:{x:n},backend:s,attrs:{shape:l}}),h=we({inputs:{x:f},backend:s,attrs:{perm:i}}),b=ue({inputs:{x:h},backend:s,attrs:{shape:e}}),k=Ae({inputs:{x:b},backend:s,attrs:{begin:m,size:g}});return s.disposeData(f.dataId),s.disposeData(h.dataId),s.disposeData(b.dataId),k}const Jr={kernelName:u.BatchToSpaceND,backendName:"wasm",kernelFunc:Qr};let en;function Yr(r){en=r.wasm.cwrap(u.Bincount,null,["number","number","boolean","number","number","number"])}function Zr(r){const{backend:a,inputs:s,attrs:o}=r,{x:n,weights:t}=s,{size:d}=o,c=t.shape.reduce((m,g)=>m*g,1)!==0,l=n.shape.length===1?[d]:[n.shape[0],d],i=a.makeOutput(l,t.dtype);function e(m){return a.dataIdMap.get(m.dataId).id}return en(e(n),d,c,e(t),V[t.dtype],e(i)),i}const jr={kernelName:u.Bincount,backendName:"wasm",setupFunc:Yr,kernelFunc:Zr};const es=j(u.BitwiseAnd);function ts(r){const{inputs:a,backend:s}=r,{s0:o,s1:n}=a,t=s.typedArrayFromHeap(o),d=s.typedArrayFromHeap(n),c=u.backend_util.assertAndGetBroadcastShape(Array.from(t),Array.from(d));return s.makeOutput([c.length],"int32",void 0,new Int32Array(c))}const ns={kernelName:u.BroadcastArgs,backendName:"wasm",kernelFunc:ts};function Se(r){const{inputs:{x:a},attrs:{dtype:s},backend:o}=r,n=o.makeOutput(a.shape,s),t=o.typedArrayFromHeap(a);return o.typedArrayFromHeap(n).set(t),n}const as={kernelName:u.Cast,backendName:"wasm",kernelFunc:Se};const rs=$(u.Ceil);let tn;function ss(r){tn=r.wasm.cwrap(u.ClipByValue,null,["number","number","number","number"])}function us(r){const{inputs:a,backend:s,attrs:o}=r,{x:n}=a,{clipValueMin:t,clipValueMax:d}=o,c=s.dataIdMap.get(n.dataId).id,l=s.makeOutput(n.shape,n.dtype),i=s.dataIdMap.get(l.dataId).id;return tn(c,t,d,i),l}const is={kernelName:u.ClipByValue,backendName:"wasm",setupFunc:ss,kernelFunc:us};function nn(r){const{inputs:a,backend:s}=r,o=u.util.parseAxisParam(r.attrs.axis,a[0].shape)[0],n=a.map(f=>f.shape);u.backend_util.assertParamsConsistent(n,o);let t=u.backend_util.computeOutShape(a.map(f=>f.shape),o);const d=a.filter(f=>u.util.sizeFromShape(f.shape)>0);if(d.length===1)return Ye({inputs:{x:d[0]},backend:s});const c=s.makeOutput(t,a[0].dtype);if(u.util.sizeFromShape(t)===0)return c;if(d[0].dtype==="string"){const f=d.map(I=>{const E=[-1,u.util.sizeFromShape(I.shape.slice(o))];return ue({inputs:{x:I},backend:s,attrs:{shape:E}})}),h=f.map(I=>({vals:s.readSync(I.dataId),shape:I.shape}));t=u.backend_util.computeOutShape(f.map(I=>I.shape),1);const b=f[0].shape[0]===1,k=Wr(h,t,a[0].dtype,b),w=u.backend_util.computeOutShape(d.map(I=>I.shape),o);c.shape=w;const y=s.dataIdMap.get(c.dataId);return y.stringBytes=u.backend_util.fromStringArrayToUint8(k),f.forEach(I=>s.disposeData(I.dataId)),c}const l=u.util.sizeFromShape(d[0].shape.slice(0,o));let i=0;const e=d.map(f=>{const h=u.util.sizeFromShape(f.shape.slice(o));return i+=h,h}),m=d.map(f=>s.typedArrayFromHeap(f)),g=s.typedArrayFromHeap(c);for(let f=0;f<l;f++){let h=f*i;for(let b=0;b<m.length;b++){const k=e[b],w=f*k,y=m[b].subarray(w,w+k);g.set(y,h),h+=k}}return c}const os={kernelName:u.Concat,backendName:"wasm",kernelFunc:nn};let an;function ds(r){an=r.wasm.cwrap(u.Conv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function cs(r){const{inputs:a,attrs:s,backend:o}=r,{x:n,filter:t}=a,d=o.dataIdMap.get(n.dataId).id,c=o.dataIdMap.get(t.dataId).id,{strides:l,dilations:i,pad:e,dimRoundingMode:m,dataFormat:g}=s,f=u.backend_util.convertConv2DDataFormat(g),h=u.backend_util.computeConv2DInfo(n.shape,t.shape,l,i,e,m,!1,f),b=h.filterHeight,k=h.filterWidth,w=h.padInfo.top,y=h.padInfo.right,I=h.padInfo.bottom,A=h.padInfo.left,E=h.dilationHeight,P=h.dilationWidth,W=h.strideHeight,L=h.strideWidth,G=h.inChannels,H=h.outChannels,q=h.padInfo.type==="SAME"?1:0;if(h.dataFormat!=="channelsLast")throw new Error(`wasm backend Conv2D does not support dataFormat:'${h.dataFormat}'. Please use 'channelsLast'.`);const C=o.makeOutput(h.outShape,"float32"),Y=o.dataIdMap.get(C.dataId).id;return an(d,n.shape[0],n.shape[1],n.shape[2],c,b,k,w,y,I,A,q,E,P,W,L,G,H,Y),C}const ls={kernelName:u.Conv2D,backendName:"wasm",setupFunc:ds,kernelFunc:cs};let rn;function ps(r){rn=r.wasm.cwrap(u.Conv2DBackpropInput,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function ms(r){const{backend:a,inputs:s,attrs:o}=r,{dy:n,filter:t}=s,{strides:d,pad:c,dataFormat:l,dimRoundingMode:i,inputShape:e}=o,m=1,g=u.backend_util.convertConv2DDataFormat(l),f=u.backend_util.computeConv2DInfo(e,t.shape,d,m,c,i,!1,g),{batchSize:h,filterHeight:b,filterWidth:k,inChannels:w,inHeight:y,inWidth:I,outChannels:A,outHeight:E,outWidth:P,strideHeight:W,strideWidth:L}=f,G=b-1-f.padInfo.top,H=k-1-f.padInfo.left,q=f.dataFormat==="channelsLast",C=u.util.computeStrides(f.inShape),Y=u.util.computeStrides(n.shape),[ie,X,te]=u.util.computeStrides(t.shape),le=C[0],U=q?C[1]:C[2],fe=q?C[2]:1,oe=q?1:C[1],de=Y[0],ge=q?Y[1]:Y[2],ne=q?Y[2]:1,Te=q?1:Y[1],Be=a.makeOutput(f.inShape,"float32"),Ue=a.dataIdMap.get(Be.dataId).id,qe=a.dataIdMap.get(n.dataId).id,Z=a.dataIdMap.get(t.dataId).id;return rn(qe,Z,h,b,k,y,I,w,E,P,A,W,L,G,H,ie,X,te,le,U,fe,oe,de,ge,ne,Te,Ue),Be}const fs={kernelName:u.Conv2DBackpropInput,backendName:"wasm",setupFunc:ps,kernelFunc:ms};let sn;function hs(r){sn=r.wasm.cwrap(u.Conv3D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function gs(r){const{inputs:a,backend:s,attrs:o}=r,{x:n,filter:t}=a,{strides:d,pad:c,dilations:l}=o;if(n.dtype!=="float32")throw new Error(`Tensor x must have dtype float32, got ${n.dtype}`);if(t.dtype!=="float32")throw new Error(`Tensor filter must have dtype float32, got ${t.dtype}`);const i=u.backend_util.computeConv3DInfo(n.shape,t.shape,d,l,c),e=s.makeOutput(i.outShape,n.dtype);return sn(s.dataIdMap.get(n.dataId).id,s.dataIdMap.get(t.dataId).id,s.dataIdMap.get(e.dataId).id,i.batchSize,i.inDepth,i.inHeight,i.inWidth,i.inChannels,i.outDepth,i.outHeight,i.outWidth,i.outChannels,i.strideDepth,i.strideHeight,i.strideWidth,i.dilationDepth,i.dilationHeight,i.dilationWidth,i.filterDepth,i.filterHeight,i.filterWidth,i.padInfo.front,i.padInfo.top,i.padInfo.left),e}const bs={kernelName:u.Conv3D,backendName:"wasm",setupFunc:hs,kernelFunc:gs};let un;function _s(r){un=r.wasm.cwrap(u.Conv3DBackpropFilterV2,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function ys(r){const{inputs:a,backend:s,attrs:o}=r,{x:n,dy:t}=a,{strides:d,pad:c,filterShape:l}=o;if(n.dtype!=="float32")throw new Error(`Tensor dy must have dtype float32, got ${n.dtype}`);if(t.dtype!=="float32")throw new Error(`Tensor filter must have dtype float32, got ${t.dtype}`);const i=u.backend_util.computeConv3DInfo(n.shape,l,d,1,c),e=s.makeOutput(i.filterShape,t.dtype);return un(s.dataIdMap.get(n.dataId).id,s.dataIdMap.get(t.dataId).id,s.dataIdMap.get(e.dataId).id,i.batchSize,i.inDepth,i.inHeight,i.inWidth,i.inChannels,i.outDepth,i.outHeight,i.outWidth,i.outChannels,i.strideDepth,i.strideHeight,i.strideWidth,i.dilationDepth,i.dilationHeight,i.dilationWidth,i.filterDepth,i.filterHeight,i.filterWidth,i.padInfo.front,i.padInfo.top,i.padInfo.left),e}const Is={kernelName:u.Conv3DBackpropFilterV2,backendName:"wasm",setupFunc:_s,kernelFunc:ys};let on;function ws(r){on=r.wasm.cwrap(u.Conv3DBackpropInputV2,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function ks(r){const{inputs:a,backend:s,attrs:o}=r,{dy:n,filter:t}=a,{pad:d,strides:c,inputShape:l}=o;if(n.dtype!=="float32")throw new Error(`Tensor dy must have dtype float32, got ${n.dtype}`);if(t.dtype!=="float32")throw new Error(`Tensor filter must have dtype float32, got ${t.dtype}`);const i=u.backend_util.computeConv3DInfo(l,t.shape,c,1,d),e=s.makeOutput(i.inShape,n.dtype);return on(s.dataIdMap.get(t.dataId).id,s.dataIdMap.get(n.dataId).id,s.dataIdMap.get(e.dataId).id,i.batchSize,i.inDepth,i.inHeight,i.inWidth,i.inChannels,i.outDepth,i.outHeight,i.outWidth,i.outChannels,i.strideDepth,i.strideHeight,i.strideWidth,i.dilationDepth,i.dilationHeight,i.dilationWidth,i.filterDepth,i.filterHeight,i.filterWidth,i.padInfo.front,i.padInfo.top,i.padInfo.left),e}const Ss={kernelName:u.Conv3DBackpropInputV2,backendName:"wasm",setupFunc:ws,kernelFunc:ks};const Ms=$(u.Cos);const vs=$(u.Cosh);var wt;(function(r){r[r.bilinear=0]="bilinear",r[r.nearest=1]="nearest"})(wt||(wt={}));let dn;function As(r){dn=r.wasm.cwrap(u.CropAndResize,null,["number","number","number","number","array","number","number","number","number","number"])}function xs(r){const{backend:a,inputs:s,attrs:o}=r,{method:n,extrapolationValue:t,cropSize:d}=o,{image:c,boxes:l,boxInd:i}=s,e=l.shape[0],[m,g]=d,f=[e,m,g,c.shape[3]];let h=a.dataIdMap.get(c.dataId),b;c.dtype!=="float32"&&(b=Se({backend:a,inputs:{x:c},attrs:{dtype:"float32"}}),h=a.dataIdMap.get(b.dataId));const k=h.id,w=a.dataIdMap.get(l.dataId).id,y=a.dataIdMap.get(i.dataId).id,I=a.makeOutput(f,"float32"),A=a.dataIdMap.get(I.dataId).id,E=new Uint8Array(new Int32Array(c.shape).buffer);return dn(k,w,y,e,E,m,g,wt[n],t,A),b!=null&&a.disposeData(b.dataId),I}const Ds={kernelName:u.CropAndResize,backendName:"wasm",setupFunc:As,kernelFunc:xs};let cn;function Fs(r){cn=r.wasm.cwrap(u.Cumprod,null,["number","number","number","number","number","number"])}function Ns(r){const{inputs:a,backend:s,attrs:o}=r,{x:n}=a,{axis:t,exclusive:d,reverse:c}=o,l=n.shape.length;u.util.assert(n.dtype==="float32"||n.dtype==="int32",()=>`cumprod does not support ${n.dtype} tensors in the WASM backend`);const i=u.backend_util.getAxesPermutation([t],l);let e=n;i!==null&&(e=we({inputs:{x:n},attrs:{perm:i},backend:s}));const m=u.backend_util.getInnerMostAxes(1,l)[0];u.backend_util.assertAxesAreInnerMostDims("cumprod",[m],l);const g=s.makeOutput(e.shape,e.dtype),f=e.shape[m],h=s.dataIdMap.get(e.dataId).id,b=s.dataIdMap.get(g.dataId).id;cn(h,d?1:0,c?1:0,f,b,V[n.dtype]);let k=g;if(i!==null){const w=u.backend_util.getUndoAxesPermutation(i);k=we({inputs:{x:g},attrs:{perm:w},backend:s}),s.disposeData(e.dataId),s.disposeData(g.dataId)}return k}const Rs={kernelName:u.Cumprod,backendName:"wasm",setupFunc:Fs,kernelFunc:Ns};let ln;function Ps(r){ln=r.wasm.cwrap(u.Cumsum,null,["number","number","number","number","number","number"])}function Es(r){const{inputs:a,backend:s,attrs:o}=r,{x:n}=a,{axis:t,exclusive:d,reverse:c}=o,l=n.shape.length;u.util.assert(n.dtype==="float32"||n.dtype==="int32",()=>`cumsum does not support ${n.dtype} tensors in the WASM backend`);const i=u.backend_util.getAxesPermutation([t],l);let e=n;i!==null&&(e=we({inputs:{x:n},attrs:{perm:i},backend:s}));const m=u.backend_util.getInnerMostAxes(1,l)[0];u.backend_util.assertAxesAreInnerMostDims("cumsum",[m],l);const g=s.makeOutput(e.shape,e.dtype),f=e.shape[m],h=s.dataIdMap.get(e.dataId).id,b=s.dataIdMap.get(g.dataId).id;ln(h,d?1:0,c?1:0,f,b,V[n.dtype]);let k=g;if(i!==null){const w=u.backend_util.getUndoAxesPermutation(i);k=we({inputs:{x:g},attrs:{perm:w},backend:s}),s.disposeData(e.dataId),s.disposeData(g.dataId)}return k}const Ts={kernelName:u.Cumsum,backendName:"wasm",setupFunc:Ps,kernelFunc:Es};let pn;function Bs(r){pn=r.wasm.cwrap("DenseBincount",null,["number","array","number","number","boolean","number","number","boolean","number"])}function Os(r){const{backend:a,inputs:s,attrs:o}=r,{x:n,weights:t}=s,{size:d,binaryOutput:c}=o,l=t.shape.reduce((g,f)=>g*f,1)!==0,i=n.shape.length===1?[d]:[n.shape[0],d],e=a.makeOutput(i,t.dtype);function m(g){return a.dataIdMap.get(g.dataId).id}return pn(m(n),new Uint8Array(new Int32Array(n.shape).buffer),n.shape.length,d,l,m(t),V[t.dtype],c,m(e)),e}const Ws={kernelName:u.DenseBincount,backendName:"wasm",setupFunc:Bs,kernelFunc:Os};let mn;function zs(r){mn=r.wasm.cwrap(u.DepthToSpace,null,["number","number","number","array","number","array","array","number","number"])}function Hs(r){const{backend:a,inputs:s,attrs:o}=r,{x:n}=s,{blockSize:t,dataFormat:d}=o,c=n.shape[0],l=d==="NHWC"?n.shape[1]:n.shape[2],i=d==="NHWC"?n.shape[2]:n.shape[3],e=d==="NHWC"?n.shape[3]:n.shape[1],m=l*t,g=i*t,f=e/(t*t),h=d==="NHWC"?[c,m,g,f]:[c,f,m,g],b=a.makeOutput(h,"float32"),w=a.dataIdMap.get(n.dataId).id,y=new Uint8Array(new Int32Array(u.util.computeStrides(n.shape)).buffer),I=new Uint8Array(new Int32Array(h).buffer),A=new Uint8Array(new Int32Array(u.util.computeStrides(h)).buffer),E=a.dataIdMap.get(b.dataId).id;return mn(w,t,d==="NHWC"?1:0,y,n.shape.length-1,I,A,h.length,E),b}const $s={kernelName:u.DepthToSpace,backendName:"wasm",setupFunc:zs,kernelFunc:Hs};let fn;function Ls(r){fn=r.wasm.cwrap(u.DepthwiseConv2dNative,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function Vs(r){const{inputs:a,attrs:s,backend:o}=r,{x:n,filter:t}=a,d=o.dataIdMap.get(n.dataId).id,c=o.dataIdMap.get(t.dataId).id,{strides:l,dilations:i,pad:e,dimRoundingMode:m}=s,g=i??[1,1],f=u.backend_util.computeConv2DInfo(n.shape,t.shape,l,g,e,m,!0),h=f.filterHeight,b=f.filterWidth,k=f.padInfo.top,w=f.padInfo.right,y=f.padInfo.bottom,I=f.padInfo.left,A=f.dilationHeight,E=f.dilationWidth,P=f.strideHeight,W=f.strideWidth,L=f.inChannels,G=f.outChannels,H=f.padInfo.type==="SAME"?1:0;if(f.dataFormat!=="channelsLast")throw new Error(`wasm backend DepthwiseConv2dNative does not support dataFormat:'${f.dataFormat}'. Please use 'channelsLast'.`);const q=o.makeOutput(f.outShape,"float32"),C=o.dataIdMap.get(q.dataId).id;return fn(d,n.shape[0],n.shape[1],n.shape[2],c,h,b,k,w,y,I,H,A,E,P,W,L,G,C),q}const Gs={kernelName:u.DepthwiseConv2dNative,backendName:"wasm",setupFunc:Ls,kernelFunc:Vs};let hn;function Us(r){hn=r.wasm.cwrap("Diag",null,["number","number","number","number"])}function qs(r){const{inputs:a,backend:s}=r,{x:o}=a,n=u.util.sizeFromShape(o.shape),t=s.makeOutput([...o.shape,...o.shape],o.dtype);return hn(s.dataIdMap.get(o.dataId).id,V[o.dtype],n,s.dataIdMap.get(t.dataId).id),t}const Ks={kernelName:u.Diag,backendName:"wasm",setupFunc:Us,kernelFunc:qs};let gn;function Cs(r){gn=r.wasm.cwrap(u.Dilation2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function Xs(r){const{inputs:a,backend:s,attrs:o}=r,{x:n,filter:t}=a,{strides:d,pad:c,dilations:l}=o;if(n.dtype!==t.dtype)throw new Error(`Dilation2D error: x must have the same dtype as filter. Got ${n.dtype} and ${t.dtype}`);const i=u.backend_util.computeDilation2DInfo(n.shape,t.shape,d,c,"NHWC",l),e=s.makeOutput(i.outShape,n.dtype);return gn(s.dataIdMap.get(n.dataId).id,s.dataIdMap.get(t.dataId).id,s.dataIdMap.get(e.dataId).id,V[n.dtype],i.batchSize,i.inChannels,i.inHeight,i.inWidth,i.outHeight,i.outWidth,i.strideHeight,i.strideWidth,i.dilationHeight,i.dilationWidth,i.filterHeight,i.filterWidth,i.padInfo.top,i.padInfo.left),e}const Qs={kernelName:u.Dilation2D,backendName:"wasm",setupFunc:Cs,kernelFunc:Xs};let bn;function Js(r){bn=r.wasm.cwrap(u.Dilation2DBackpropFilter,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function Ys(r){const{inputs:a,backend:s,attrs:o}=r,{x:n,filter:t,dy:d}=a,{strides:c,pad:l,dilations:i}=o;if(n.dtype!==t.dtype||n.dtype!==d.dtype)throw new Error(`Dilation2DBackpropFilter error: x must have the same dtype as filter and dy. Got ${n.dtype}, ${t.dtype}, and ${d.dtype}`);const e=u.backend_util.computeDilation2DInfo(n.shape,t.shape,c,l,"NHWC",i),m=s.makeOutput(t.shape,t.dtype);return bn(s.dataIdMap.get(n.dataId).id,s.dataIdMap.get(t.dataId).id,s.dataIdMap.get(d.dataId).id,s.dataIdMap.get(m.dataId).id,V[n.dtype],e.batchSize,e.inChannels,e.inHeight,e.inWidth,e.outHeight,e.outWidth,e.strideHeight,e.strideWidth,e.dilationHeight,e.dilationWidth,e.filterHeight,e.filterWidth,e.padInfo.top,e.padInfo.left),m}const Zs={kernelName:u.Dilation2DBackpropFilter,backendName:"wasm",setupFunc:Js,kernelFunc:Ys};let _n;function js(r){_n=r.wasm.cwrap(u.Dilation2DBackpropInput,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function eu(r){const{inputs:a,backend:s,attrs:o}=r,{x:n,filter:t,dy:d}=a,{strides:c,pad:l,dilations:i}=o;if(n.dtype!==t.dtype||n.dtype!==d.dtype)throw new Error(`Dilation2DBackpropInput error: x must have the same dtype as filter and dy. Got ${n.dtype}, ${t.dtype}, and ${d.dtype}`);const e=u.backend_util.computeDilation2DInfo(n.shape,t.shape,c,l,"NHWC",i),m=s.makeOutput(n.shape,n.dtype);return _n(s.dataIdMap.get(n.dataId).id,s.dataIdMap.get(t.dataId).id,s.dataIdMap.get(d.dataId).id,s.dataIdMap.get(m.dataId).id,V[n.dtype],e.batchSize,e.inChannels,e.inHeight,e.inWidth,e.outHeight,e.outWidth,e.strideHeight,e.strideWidth,e.dilationHeight,e.dilationWidth,e.filterHeight,e.filterWidth,e.padInfo.top,e.padInfo.left),m}const tu={kernelName:u.Dilation2DBackpropInput,backendName:"wasm",setupFunc:js,kernelFunc:eu};const nu=$(u.Elu);let yn;function au(r){yn=r.wasm.cwrap(u.EluGrad,null,["number","number","number"])}function ru(r){const{inputs:a,backend:s}=r,{dy:o,y:n}=a,t=s.makeOutput(n.shape,"float32"),d=c=>s.dataIdMap.get(c.dataId).id;return yn(d(n),d(o),d(t)),t}const su={kernelName:u.EluGrad,backendName:"wasm",setupFunc:au,kernelFunc:ru};const uu=j(u.Equal,!1,"bool");const iu=$(u.Erf);const ou=$(u.Exp,"float32");function kt(r){const{inputs:a,attrs:s,backend:o}=r,{input:n}=a,{dim:t}=s,d=n.shape.length,c=n.shape.slice();let l=t;return t<0&&(u.util.assert(-(d+1)<=t,()=>`Axis must be in the interval [${-(d+1)}, ${d}]`),l=d+t+1),c.splice(l,0,1),ue({inputs:{x:n},backend:o,attrs:{shape:c}})}const du={kernelName:u.ExpandDims,backendName:"wasm",kernelFunc:kt};const cu=$(u.Expm1,"float32");function In(r){const{attrs:{shape:a,value:s},backend:o}=r;let{attrs:{dtype:n}}=r;n=n||u.util.inferDtype(s);const t=o.makeOutput(a,n);return o.typedArrayFromHeap(t).fill(s),t}const lu={kernelName:u.Fill,backendName:"wasm",kernelFunc:In};let wn;function pu(r){wn=r.wasm.cwrap(u.FlipLeftRight,null,["number","number","number","number","number","number"])}function mu(r){const{inputs:a,backend:s}=r,{image:o}=a,n=s.makeOutput(o.shape,o.dtype),t=s.dataIdMap.get(o.dataId).id,d=s.dataIdMap.get(n.dataId).id,[c,l,i,e]=o.shape;return wn(t,c,l,i,e,d),n}const fu={kernelName:u.FlipLeftRight,backendName:"wasm",kernelFunc:mu,setupFunc:pu};const hu=$(u.Floor);const gu=j(u.FloorDiv);let kn;function bu(r){kn=r.wasm.cwrap(u.FusedBatchNorm,null,["number","number","number","number","number","number","number"])}function _u(r){const{backend:a,inputs:s,attrs:o}=r,{varianceEpsilon:n}=o,{x:t,mean:d,variance:c,offset:l,scale:i}=s,e=a.dataIdMap.get(t.dataId).id,m=a.dataIdMap.get(d.dataId).id,g=a.dataIdMap.get(c.dataId).id,f=l!=null?a.dataIdMap.get(l.dataId).id:0,h=i!=null?a.dataIdMap.get(i.dataId).id:0,b=a.makeOutput(t.shape,t.dtype);if(u.util.sizeFromShape(t.shape)===0)return b;const k=a.dataIdMap.get(b.dataId).id;return kn(e,m,g,f,h,n,k),b}const yu={kernelName:u.FusedBatchNorm,backendName:"wasm",setupFunc:bu,kernelFunc:_u};let Sn;function Iu(r){Sn=r.wasm.cwrap(u.FusedConv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function wu(r){const{inputs:a,attrs:s,backend:o}=r,{x:n,filter:t,bias:d,preluActivationWeights:c}=a,{strides:l,pad:i,dilations:e,dataFormat:m,dimRoundingMode:g,activation:f,leakyreluAlpha:h}=s,b=u.backend_util.computeConv2DInfo(n.shape,t.shape,l,e,i,g),k=Le[f];if(k==null)throw new Error(`${f} activation not yet supported for FusedConv2D in the wasm backend.`);const w=o.dataIdMap.get(n.dataId).id,y=o.dataIdMap.get(t.dataId).id,I=b.outChannels;let A=0;if(d!=null){const ne=o.dataIdMap.get(d.dataId);if(ne.shape.length!==1)throw new Error(`FusedConv2D only supports rank-1 bias but got rank ${ne.shape.length}.`);if(ne.shape[0]!==I)throw new Error(`FusedConv2D bias shape (${ne.shape}) does not match the number of output channels (${I})`);A=ne.id}const E=b.filterHeight,P=b.filterWidth,W=b.padInfo.top,L=b.padInfo.right,G=b.padInfo.bottom,H=b.padInfo.left,q=b.dilationHeight,C=b.dilationWidth,Y=b.strideHeight,ie=b.strideWidth,X=b.inChannels,te=b.padInfo.type==="SAME"?1:0,le=b.batchSize,U=b.inHeight,fe=b.inWidth;if(m!=="NHWC")throw new Error(`wasm backend FusedConv2D does not support dataFormat:'${m}'. Please use 'NHWC'.`);const oe=o.makeOutput(b.outShape,"float32"),de=o.dataIdMap.get(oe.dataId).id,ge=c==null?0:o.dataIdMap.get(c.dataId).id;return Sn(w,le,U,fe,y,E,P,A,W,L,G,H,te,q,C,Y,ie,X,I,k,ge,h||0,de),oe}const ku={kernelName:u.FusedConv2D,backendName:"wasm",setupFunc:Iu,kernelFunc:wu};let Mn;function Su(r){Mn=r.wasm.cwrap(u.FusedDepthwiseConv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function Mu(r){const{inputs:a,attrs:s,backend:o}=r,{x:n,filter:t,bias:d,preluActivationWeights:c}=a,{strides:l,pad:i,dilations:e,dataFormat:m,dimRoundingMode:g,activation:f,leakyreluAlpha:h}=s,b=u.backend_util.computeConv2DInfo(n.shape,t.shape,l,e,i,g,!0),k=Le[f];if(k==null)throw new Error(`${f} activation not yet supported for FusedDepthwiseConv2D in the wasm backend.`);const w=o.dataIdMap.get(n.dataId).id,y=o.dataIdMap.get(t.dataId).id,I=b.outChannels;let A=0;if(d!=null){const ne=o.dataIdMap.get(d.dataId);if(ne.shape.length!==1)throw new Error(`FusedDepthwiseConv2D only supports rank-1 bias but got rank ${ne.shape.length}.`);if(ne.shape[0]!==I)throw new Error(`FusedDepthwiseConv2D bias shape (${ne.shape}) does not match the number of output channels (${I})`);A=ne.id}const E=b.filterHeight,P=b.filterWidth,W=b.padInfo.top,L=b.padInfo.right,G=b.padInfo.bottom,H=b.padInfo.left,q=b.dilationHeight,C=b.dilationWidth,Y=b.strideHeight,ie=b.strideWidth,X=b.inChannels,te=b.padInfo.type==="SAME"?1:0,le=b.batchSize,U=b.inHeight,fe=b.inWidth;if(m!=="NHWC")throw new Error(`wasm backend FusedDepthwiseConv2D does not support dataFormat:'${m}'. Please use 'NHWC'.`);const oe=o.makeOutput(b.outShape,"float32"),de=o.dataIdMap.get(oe.dataId).id,ge=c==null?0:o.dataIdMap.get(c.dataId).id;return Mn(w,le,U,fe,y,E,P,A,W,L,G,H,te,q,C,Y,ie,X,I,k,ge,h||0,de),oe}const vu={kernelName:u.FusedDepthwiseConv2D,backendName:"wasm",setupFunc:Su,kernelFunc:Mu};let vn;function Au(r){vn=r.wasm.cwrap(u.GatherNd,null,["number","number","number","number","number","number","array","number"])}function xu(r){const{backend:a,inputs:s}=r,{params:o,indices:n}=s,[t,d,c,l]=u.gather_util.prepareAndValidate(o,n),i=a.makeOutput(t,o.dtype);if(d===0)return i;const e=n.shape,m=e[e.length-1],f=a.dataIdMap.get(o.dataId).id,b=a.dataIdMap.get(n.dataId).id,k=new Uint8Array(new Int32Array(l).buffer),w=a.dataIdMap.get(i.dataId).id;return vn(f,V[o.dtype],b,d,m,c,k,w),i}const Du={kernelName:u.GatherNd,backendName:"wasm",setupFunc:Au,kernelFunc:xu};let An;function Fu(r){An=r.wasm.cwrap("Gather",null,["number","number","array","number","number","number","array","number"])}function Nu(r){const{backend:a,inputs:s,attrs:o}=r,{x:n,indices:t}=s,{axis:d,batchDims:c}=o,l=u.util.parseAxisParam(d,n.shape)[0],i=a.readSync(t.dataId),e=n.shape[l];for(let G=0;G<i.length;++G){const H=i[G];u.util.assert(H<=e-1&&H>=0,()=>`GatherV2: the index value ${H} is not in [0, ${e-1}]`)}const m=u.backend_util.segment_util.collectGatherOpShapeInfo(n,t,l,c),g=ue({inputs:{x:n},attrs:{shape:[m.batchSize,m.outerSize,m.dimSize,m.sliceSize]},backend:a}),f=u.util.sizeFromShape(t.shape),h=ue({inputs:{x:t},attrs:{shape:[m.batchSize,f/m.batchSize]},backend:a}),b=[m.batchSize,m.outerSize,f/m.batchSize,m.sliceSize],k=a.makeOutput(b,n.dtype);if(u.util.sizeFromShape(n.shape)===0)return k;const w=g.shape.length-1,I=a.dataIdMap.get(g.dataId).id,E=a.dataIdMap.get(h.dataId).id,P=a.dataIdMap.get(k.dataId).id,W=new Uint8Array(new Int32Array(u.util.computeStrides(g.shape)).buffer),L=new Uint8Array(new Int32Array(u.util.computeStrides(b)).buffer);return An(I,V[n.dtype],W,w,E,m.batchSize,L,P),a.disposeData(g.dataId),a.disposeData(h.dataId),k.shape=m.outputShape,k}const Ru={kernelName:u.GatherV2,backendName:"wasm",setupFunc:Fu,kernelFunc:Nu};const Pu=j(u.Greater,!1,"bool");const Eu=j(u.GreaterEqual,!1,"bool");const Tu=$(u.IsFinite,"bool");const Bu=$(u.IsInf,"bool");const Ou=$(u.IsNan,"bool");let xn;function Wu(r){xn=r.wasm.cwrap(u.LeakyRelu,null,["number","number","number","number"])}function zu(r){const{inputs:{x:a},attrs:{alpha:s},backend:o}=r,n=o.dataIdMap.get(a.dataId).id,t=o.makeOutput(a.shape,"float32");if(u.util.sizeFromShape(a.shape)!==0){const d=o.dataIdMap.get(t.dataId).id;xn(n,V[a.dtype],s,d)}return t}const Hu={kernelName:u.LeakyRelu,backendName:"wasm",setupFunc:Wu,kernelFunc:zu};const $u=j(u.Less,!1,"bool");const Lu=j(u.LessEqual,!1,"bool");let Dn;function Vu(r){Dn=r.wasm.cwrap(u.LinSpace,null,["number","number","number","number"])}function Gu(r){const{attrs:a,backend:s}=r,{start:o,stop:n,num:t}=a,d=Math.floor(t),c=s.makeOutput([d],"float32");return Dn(s.dataIdMap.get(c.dataId).id,o,n,d),c}const Uu={kernelName:u.LinSpace,backendName:"wasm",setupFunc:Vu,kernelFunc:Gu};const qu=$(u.Log);const Ku=$(u.Log1p);const Cu=j(u.LogicalAnd,!1,"bool");const Xu=$(u.LogicalNot);const Qu=j(u.LogicalOr,!1,"bool");const Ju=j(u.LogicalXor,!1,"bool");let Fn;function Yu(r){Fn=r.wasm.cwrap(u.LRN,null,["number","number","number","number","number","number","number"])}function Zu(r){const{inputs:a,backend:s,attrs:o}=r,{x:n}=a,{depthRadius:t,bias:d,alpha:c,beta:l}=o;if(n.dtype!=="float32")throw new Error("LRN error: x must have dtype float32");const i=s.makeOutput(n.shape,n.dtype);return Fn(s.dataIdMap.get(n.dataId).id,s.dataIdMap.get(i.dataId).id,n.shape[3],t,d,c,l),i}const ju={kernelName:u.LRN,backendName:"wasm",setupFunc:Yu,kernelFunc:Zu};let Nn;function ei(r){Nn=r.wasm.cwrap(u.LRNGrad,null,["number","number","number","number","number","number","number","number","number"])}function ti(r){const{inputs:a,backend:s,attrs:o}=r,{x:n,y:t,dy:d}=a,{depthRadius:c,bias:l,alpha:i,beta:e}=o;if(n.dtype!=="float32"||t.dtype!=="float32"||d.dtype!=="float32")throw new Error("LRNGrad error: x, y, and dy must have dtype float32");const m=s.makeOutput(n.shape,n.dtype);return Nn(s.dataIdMap.get(n.dataId).id,s.dataIdMap.get(t.dataId).id,s.dataIdMap.get(d.dataId).id,s.dataIdMap.get(m.dataId).id,d.shape[3],c,l,i,e),m}const ni={kernelName:u.LRNGrad,backendName:"wasm",setupFunc:ei,kernelFunc:ti};let Rn;function ai(r){Rn=r.wasm.cwrap(u.Max,null,["number","number","number","number"])}function ri(r){const{backend:a,inputs:s,attrs:o}=r,{reductionIndices:n,keepDims:t}=o,{x:d}=s;let l=a.dataIdMap.get(d.dataId).id,i=d;const{transposed:e,axes:m,originalAxes:g,inputWasTransposed:f}=ke(d,n,a);if(f){const I=a.dataIdMap.get(e.dataId).id;i=e,l=I}const h=i.shape.length;u.backend_util.assertAxesAreInnerMostDims("max",m,h);const[b,k]=u.backend_util.computeOutAndReduceShapes(i.shape,m),w=u.util.sizeFromShape(k),y=a.makeOutput(b,d.dtype);if(u.util.sizeFromShape(i.shape)!==0){const I=a.dataIdMap.get(y.dataId).id;Rn(l,V[d.dtype],w,I)}if(f&&a.disposeData(e.dataId),t){const I=u.backend_util.expandShapeToKeepDim(y.shape,g);y.shape=I}return y}const si={kernelName:u.Max,backendName:"wasm",setupFunc:ai,kernelFunc:ri};const ui=j(u.Maximum);let Pn;function ii(r){Pn=r.wasm.cwrap(u.MaxPool,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function oi(r){const{inputs:a,attrs:s,backend:o}=r,n=a.x,t=o.dataIdMap.get(n.dataId).id;u.util.assert(n.dtype==="float32",()=>`Error in MaxPool: only float32 input is supported. Got ${n.dtype}.`);const{filterSize:d,strides:c,pad:l,dimRoundingMode:i}=s,e=u.backend_util.computePool2DInfo(n.shape,d,c,1,l,i),m=e.filterHeight,g=e.filterWidth,f=e.padInfo.top,h=e.padInfo.right,b=e.padInfo.bottom,k=e.padInfo.left,w=e.dilationHeight,y=e.dilationWidth,I=e.strideHeight,A=e.strideWidth,E=e.inChannels,P=e.outChannels;if(e.dataFormat!=="channelsLast")throw new Error(`wasm backend does not support dataFormat:'${e.dataFormat}'. Please use 'channelsLast'.`);const W=o.makeOutput(e.outShape,"float32"),L=o.dataIdMap.get(W.dataId).id;return Pn(t,n.shape[0],n.shape[1],n.shape[2],m,g,f,h,b,k,w,y,I,A,E,P,L),W}const di={kernelName:u.MaxPool,backendName:"wasm",setupFunc:ii,kernelFunc:oi};let En;function ci(r){En=r.wasm.cwrap("MaxPool3D",null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function li(r){const{inputs:a,backend:s,attrs:o}=r,{x:n}=a,{filterSize:t,strides:d,pad:c,dimRoundingMode:l,dataFormat:i}=o,e=u.backend_util.computePool3DInfo(n.shape,t,d,1,c,l,i),m=s.makeOutput(e.outShape,n.dtype);return En(s.dataIdMap.get(n.dataId).id,s.dataIdMap.get(m.dataId).id,e.batchSize,e.inChannels,e.inDepth,e.inHeight,e.inWidth,e.outDepth,e.outHeight,e.outWidth,e.strideDepth,e.strideHeight,e.strideWidth,e.dilationDepth,e.dilationHeight,e.dilationWidth,e.effectiveFilterDepth,e.effectiveFilterHeight,e.effectiveFilterWidth,e.padInfo.front,e.padInfo.top,e.padInfo.left),m}const pi={kernelName:u.MaxPool3D,backendName:"wasm",setupFunc:ci,kernelFunc:li};let Tn;function mi(r){Tn=r.wasm.cwrap("MaxPool3DGrad",null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function fi(r){const{inputs:a,backend:s,attrs:o}=r,{dy:n,input:t}=a,{filterSize:d,strides:c,pad:l,dimRoundingMode:i}=o,e=u.backend_util.computePool3DInfo(t.shape,d,c,1,l,i),m=s.makeOutput(t.shape,t.dtype);return Tn(s.dataIdMap.get(t.dataId).id,s.dataIdMap.get(n.dataId).id,s.dataIdMap.get(m.dataId).id,e.batchSize,e.inChannels,e.inDepth,e.inHeight,e.inWidth,e.outDepth,e.outHeight,e.outWidth,e.strideDepth,e.strideHeight,e.strideWidth,e.dilationDepth,e.dilationHeight,e.dilationWidth,e.effectiveFilterDepth,e.effectiveFilterHeight,e.effectiveFilterWidth,e.padInfo.front,e.padInfo.top,e.padInfo.left),m}const hi={kernelName:u.MaxPool3DGrad,backendName:"wasm",setupFunc:mi,kernelFunc:fi};let Bn;function gi(r){Bn=r.wasm.cwrap("MaxPoolGrad",null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function bi(r){const{inputs:a,backend:s,attrs:o}=r,{dy:n,input:t}=a,{filterSize:d,strides:c,pad:l,dimRoundingMode:i}=o,e=u.backend_util.computePool2DInfo(t.shape,d,c,1,l,i),m=s.makeOutput(t.shape,t.dtype);return Bn(s.dataIdMap.get(t.dataId).id,s.dataIdMap.get(n.dataId).id,s.dataIdMap.get(m.dataId).id,e.batchSize,e.inChannels,e.inHeight,e.inWidth,e.outHeight,e.outWidth,e.strideHeight,e.strideWidth,e.dilationHeight,e.dilationWidth,e.effectiveFilterHeight,e.effectiveFilterWidth,e.padInfo.top,e.padInfo.left),m}const _i={kernelName:u.MaxPoolGrad,backendName:"wasm",setupFunc:gi,kernelFunc:bi};let On;function yi(r){On=r.wasm.cwrap("MaxPoolWithArgmax",null,["number","number","number","number","boolean","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function Ii(r){const{inputs:a,backend:s,attrs:o}=r,{x:n}=a,{filterSize:t,strides:d,pad:c,includeBatchInIndex:l}=o;u.util.assert(n.shape.length===4,()=>`Error in maxPool: input must be rank 4 but got rank ${n.shape.length}.`);const i=[1,1];u.util.assert(u.backend_util.eitherStridesOrDilationsAreOne(d,i),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${d} and dilations '${i}'`);const e=u.backend_util.computePool2DInfo(n.shape,t,d,[1,1],c),m=s.makeOutput(e.outShape,n.dtype),g=s.makeOutput(e.outShape,"int32");return On(s.dataIdMap.get(n.dataId).id,s.dataIdMap.get(m.dataId).id,s.dataIdMap.get(g.dataId).id,V[n.dtype],l,e.batchSize,e.inChannels,e.inHeight,e.inWidth,e.outHeight,e.outWidth,e.strideHeight,e.strideWidth,e.dilationHeight,e.dilationWidth,e.effectiveFilterHeight,e.effectiveFilterWidth,e.padInfo.top,e.padInfo.left),[m,g]}const wi={kernelName:u.MaxPoolWithArgmax,backendName:"wasm",setupFunc:yi,kernelFunc:Ii};let Wn;function ki(r){Wn=r.wasm.cwrap(u.Mean,null,["number, number, number"])}function Si(r){const{backend:a,inputs:s,attrs:o}=r,{axis:n,keepDims:t}=o,{x:d}=s,c=a.dataIdMap.get(d.dataId).id;let l=c,i=d;const{transposed:e,axes:m,originalAxes:g,inputWasTransposed:f}=ke(d,n,a);let h=m;if(f){const A=a.dataIdMap.get(e.dataId).id;A!==c&&(i=e,l=A,h=u.backend_util.getInnerMostAxes(h.length,i.shape.length))}u.backend_util.assertAxesAreInnerMostDims("mean",h,i.shape.length);const[b,k]=u.backend_util.computeOutAndReduceShapes(i.shape,h),w=u.util.sizeFromShape(k);let y=i;i.dtype!=="float32"&&(y=Se({backend:a,inputs:{x:i},attrs:{dtype:"float32"}}),l=a.dataIdMap.get(y.dataId).id);const I=a.makeOutput(b,"float32");if(u.util.sizeFromShape(i.shape)!==0){const A=a.dataIdMap.get(I.dataId).id;Wn(l,w,A)}if(f&&a.disposeData(e.dataId),t){const A=u.backend_util.expandShapeToKeepDim(I.shape,g);I.shape=A}return i.dtype!=="float32"&&a.disposeData(y.dataId),I}const Mi={kernelName:u.Mean,backendName:"wasm",setupFunc:ki,kernelFunc:Si};let zn;function vi(r){zn=r.wasm.cwrap(u.Min,null,["number","number","number","number"])}function Ai(r){const{backend:a,inputs:s,attrs:o}=r,{axis:n,keepDims:t}=o,{x:d}=s,c=a.dataIdMap.get(d.dataId).id;let l=c,i=d;const{transposed:e,axes:m,originalAxes:g,inputWasTransposed:f}=ke(d,n,a);if(f){const I=a.dataIdMap.get(e.dataId).id;I!==c&&(i=e,l=I)}const h=i.shape.length;u.backend_util.assertAxesAreInnerMostDims("min",m,h);const[b,k]=u.backend_util.computeOutAndReduceShapes(i.shape,m),w=u.util.sizeFromShape(k),y=a.makeOutput(b,i.dtype);if(u.util.sizeFromShape(i.shape)!==0){const I=a.dataIdMap.get(y.dataId).id;zn(l,V[d.dtype],w,I)}if(f&&a.disposeData(e.dataId),t){const I=u.backend_util.expandShapeToKeepDim(y.shape,g);y.shape=I}return y}const xi={kernelName:u.Min,backendName:"wasm",setupFunc:vi,kernelFunc:Ai};const Di=j(u.Minimum);var St;(function(r){r[r.reflect=0]="reflect",r[r.symmetric=1]="symmetric"})(St||(St={}));let Hn;function Fi(r){Hn=r.wasm.cwrap(u.MirrorPad,null,["number","array","number","number","array","array","number","number"])}function Ni(r){const{inputs:{x:a},backend:s,attrs:{paddings:o,mode:n}}=r,t=o.map((h,b)=>h[0]+a.shape[b]+h[1]),d=s.dataIdMap.get(a.dataId).id,c=s.makeOutput(t,a.dtype),l=s.dataIdMap.get(c.dataId).id,i=new Uint8Array(new Int32Array(a.shape).buffer),e=o.map(h=>h[0]),m=o.map(h=>h[1]),g=new Uint8Array(new Int32Array(e).buffer),f=new Uint8Array(new Int32Array(m).buffer);return Hn(d,i,a.shape.length,V[a.dtype],g,f,St[n],l),c}const Ri={kernelName:u.MirrorPad,backendName:"wasm",kernelFunc:Ni,setupFunc:Fi};let $n;function Pi(r){$n=r.wasm.cwrap(u.Softmax,null,["number","number","number","number"])}function Ln(r){const{backend:a,inputs:{logits:s},attrs:{dim:o}}=r,n=a.dataIdMap.get(s.dataId).id,t=a.makeOutput(s.shape,s.dtype),d=a.dataIdMap.get(t.dataId).id,c=s.shape[o],l=u.util.sizeFromShape(s.shape)/c;return u.util.sizeFromShape(t.shape)===0||$n(n,d,c,l),t}const Ei={kernelName:u.Softmax,backendName:"wasm",setupFunc:Pi,kernelFunc:Ln};let Vn;function Ti(r){Vn=r.wasm.cwrap(u.Multinomial,null,["number","number","number","number","number","number"])}function Bi(r){const{inputs:a,backend:s,attrs:o}=r,{logits:n}=a,{numSamples:t,seed:d,normalized:c}=o;if(n.dtype!=="float32")throw new Error(`Tensor logits must have dtype float32, got ${n.dtype}`);const l=c?n:Ln({inputs:{logits:n},backend:s,attrs:{dim:n.shape.length-1}}),[i,e]=l.shape,m=s.makeOutput([i,t],"int32");return Vn(s.dataIdMap.get(l.dataId).id,i,e,t,d,s.dataIdMap.get(m.dataId).id),c||s.disposeData(l.dataId),m}const Oi={kernelName:u.Multinomial,backendName:"wasm",setupFunc:Ti,kernelFunc:Bi};const Wi=j(u.Mod);const zi=j(u.Multiply);const Hi=$(u.Neg);function Mt(r,a){const s=new Int32Array(r.wasm.HEAPU8.buffer,a,4),o=s[0],n=s[1],t=s[2],d=s[3];return r.wasm._free(a),{pSelectedIndices:o,selectedSize:n,pSelectedScores:t,pValidOutputs:d}}let Gn;function $i(r){Gn=r.wasm.cwrap(u.NonMaxSuppressionV3,"number",["number","number","number","number","number"])}function Li(r){const{backend:a,inputs:s,attrs:o}=r,{iouThreshold:n,maxOutputSize:t,scoreThreshold:d}=o,{boxes:c,scores:l}=s,i=a.dataIdMap.get(c.dataId).id,e=a.dataIdMap.get(l.dataId).id,m=Gn(i,e,t,n,d),{pSelectedIndices:g,selectedSize:f,pSelectedScores:h,pValidOutputs:b}=Mt(a,m);return a.wasm._free(h),a.wasm._free(b),a.makeOutput([f],"int32",g)}const Vi={kernelName:u.NonMaxSuppressionV3,backendName:"wasm",setupFunc:$i,kernelFunc:Li};let Un;function Gi(r){Un=r.wasm.cwrap(u.NonMaxSuppressionV4,"number",["number","number","number","number","number","bool"])}function Ui(r){const{backend:a,inputs:s,attrs:o}=r,{iouThreshold:n,maxOutputSize:t,scoreThreshold:d,padToMaxOutputSize:c}=o,{boxes:l,scores:i}=s,e=a.dataIdMap.get(l.dataId).id,m=a.dataIdMap.get(i.dataId).id,g=Un(e,m,t,n,d,c),{pSelectedIndices:f,selectedSize:h,pSelectedScores:b,pValidOutputs:k}=Mt(a,g);a.wasm._free(b);const w=a.makeOutput([h],"int32",f),y=a.makeOutput([],"int32",k);return[w,y]}const qi={kernelName:u.NonMaxSuppressionV4,backendName:"wasm",setupFunc:Gi,kernelFunc:Ui};let qn;function Ki(r){qn=r.wasm.cwrap(u.NonMaxSuppressionV5,"number",["number","number","number","number","number","number"])}function Ci(r){const{backend:a,inputs:s,attrs:o}=r,{iouThreshold:n,maxOutputSize:t,scoreThreshold:d,softNmsSigma:c}=o,{boxes:l,scores:i}=s,e=a.dataIdMap.get(l.dataId).id,m=a.dataIdMap.get(i.dataId).id,g=qn(e,m,t,n,d,c),{pSelectedIndices:f,selectedSize:h,pSelectedScores:b,pValidOutputs:k}=Mt(a,g);a.wasm._free(k);const w=a.makeOutput([h],"int32",f),y=a.makeOutput([h],"float32",b);return[w,y]}const Xi={kernelName:u.NonMaxSuppressionV5,backendName:"wasm",setupFunc:Ki,kernelFunc:Ci};const Qi=j(u.NotEqual,!1,"bool");let Kn;function Ji(r){Kn=r.wasm.cwrap(u.OneHot,null,["number","number","number","number","number"])}function Yi(r){const{inputs:a,backend:s,attrs:o}=r,{indices:n}=a,{dtype:t,depth:d,onValue:c,offValue:l}=o,i=s.makeOutput([...n.shape,d],t),e=s.dataIdMap.get(i.dataId).id,g=s.dataIdMap.get(n.dataId).id;return Kn(g,d,c,l,e),i}const Zi={kernelName:u.OneHot,backendName:"wasm",setupFunc:Ji,kernelFunc:Yi};function ji(r){const{inputs:{x:a},backend:s}=r,o=s.makeOutput(a.shape,a.dtype);return s.typedArrayFromHeap(o).fill(1),o}const eo={kernelName:u.OnesLike,backendName:"wasm",kernelFunc:ji};function to(r){const{inputs:a,backend:s,attrs:o}=r,{axis:n}=o;if(a.length===1)return kt({inputs:{input:a[0]},backend:s,attrs:{dim:n}});const t=a[0].shape,d=a[0].dtype;a.forEach(e=>{u.util.assertShapesMatch(t,e.shape,"All tensors passed to stack must have matching shapes"),u.util.assert(d===e.dtype,()=>"All tensors passed to stack must have matching dtypes")});const c=[],l=a.map(e=>{const m=kt({inputs:{input:e},backend:s,attrs:{dim:n}});return c.push(m),m}),i=nn({inputs:l,backend:s,attrs:{axis:n}});return c.forEach(e=>s.disposeData(e.dataId)),i}const no={kernelName:u.Pack,backendName:"wasm",kernelFunc:to};let Cn;function ao(r){Cn=r.wasm.cwrap(u.PadV2,null,["number","array","number","number","array","array","number","number"])}function ro(r){const{inputs:{x:a},backend:s,attrs:{paddings:o,constantValue:n}}=r,t=o.map((b,k)=>b[0]+a.shape[k]+b[1]);if(u.util.sizeFromShape(a.shape)===0)return In({backend:s,attrs:{shape:t,value:n,dtype:a.dtype}});const d=s.dataIdMap.get(a.dataId).id,c=s.makeOutput(t,a.dtype),i=s.dataIdMap.get(c.dataId).id,e=new Uint8Array(new Int32Array(a.shape).buffer),m=o.map(b=>b[0]),g=o.map(b=>b[1]),f=new Uint8Array(new Int32Array(m).buffer),h=new Uint8Array(new Int32Array(g).buffer);return Cn(d,e,a.shape.length,V[a.dtype],f,h,n,i),c}const Xn={kernelName:u.PadV2,backendName:"wasm",kernelFunc:ro,setupFunc:ao};const so=j(u.Pow);let Qn;function uo(r){Qn=r.wasm.cwrap(u.Prelu,null,["number","number","number"])}function io(r){const{inputs:a,backend:s}=r,{x:o,alpha:n}=a,t=s.dataIdMap.get(o.dataId).id,d=s.dataIdMap.get(n.dataId).id;let c=t;const l=o;let i=l;l.dtype!=="float32"&&(i=Se({backend:s,inputs:{x:o},attrs:{dtype:"float32"}}),c=s.dataIdMap.get(i.dataId).id);const e=s.makeOutput(o.shape,"float32"),m=s.dataIdMap.get(e.dataId).id;return Qn(c,d,m),l.dtype!=="float32"&&s.disposeData(i.dataId),e}const oo={kernelName:u.Prelu,backendName:"wasm",setupFunc:uo,kernelFunc:io};let Jn;function co(r){Jn=r.wasm.cwrap(u.Prod,null,["number","number","number","number"])}function lo(r){const{backend:a,inputs:s,attrs:o}=r,{axis:n,keepDims:t}=o,{x:d}=s,c=a.dataIdMap.get(d.dataId).id;let l=c,i=d;const{transposed:e,axes:m,originalAxes:g,inputWasTransposed:f}=ke(d,n,a);let h=m;if(f){const I=a.dataIdMap.get(e.dataId).id;I!==c&&(i=e,l=I,h=u.backend_util.getInnerMostAxes(h.length,i.shape.length))}u.backend_util.assertAxesAreInnerMostDims("prod",h,i.shape.length);const[b,k]=u.backend_util.computeOutAndReduceShapes(i.shape,h),w=u.util.sizeFromShape(k),y=a.makeOutput(b,i.dtype);if(u.util.sizeFromShape(i.shape)!==0){const I=a.dataIdMap.get(y.dataId).id;Jn(l,w,V[y.dtype],I)}if(f&&a.disposeData(e.dataId),t){const I=u.backend_util.expandShapeToKeepDim(y.shape,g);y.shape=I}return y}const po={kernelName:u.Prod,backendName:"wasm",setupFunc:co,kernelFunc:lo};const mo=r=>{const{backend:a,attrs:s}=r,{start:o,stop:n,step:t,dtype:d}=s,c=zr(o,n,t,d),l=a.makeOutput([c.length],d);return a.typedArrayFromHeap(l).set(c),l},fo={kernelName:u.Range,backendName:"wasm",kernelFunc:mo};const ho=j(u.RealDiv);const go=$(u.Reciprocal);const bo=$(u.Relu);const _o=$(u.Relu6);let Yn;function yo(r){Yn=r.wasm.cwrap(u.ResizeBilinear,null,["number","number","number","number","number","number","number","number","number","number"])}function Io(r){const{backend:a,inputs:s,attrs:o}=r,{images:n}=s,{alignCorners:t,halfPixelCenters:d,size:c}=o,[l,i]=c,[e,m,g,f]=n.shape,h=[e,l,i,f];let b=a.dataIdMap.get(n.dataId),k;b.dtype!=="float32"&&(k=Se({backend:a,inputs:{x:n},attrs:{dtype:"float32"}}),b=a.dataIdMap.get(k.dataId));const w=b.id,y=a.makeOutput(h,"float32");if(u.util.sizeFromShape(n.shape)===0)return y;const I=a.dataIdMap.get(y.dataId).id;return Yn(w,e,m,g,f,l,i,t?1:0,d?1:0,I),k!=null&&a.disposeData(k.dataId),y}const wo={kernelName:u.ResizeBilinear,backendName:"wasm",setupFunc:yo,kernelFunc:Io};let Zn;function ko(r){Zn=r.wasm.cwrap(u.ResizeBilinearGrad,null,["number","number","number","array","array","boolean"])}function So(r){const{inputs:a,backend:s,attrs:o}=r,{images:n,dy:t}=a,{alignCorners:d}=o,c=s.makeOutput(n.shape,"float32");let l=s.dataIdMap.get(n.dataId),i;return l.dtype!=="float32"&&(i=Se({backend:s,inputs:{x:n},attrs:{dtype:"float32"}}),l=s.dataIdMap.get(i.dataId)),Zn(s.dataIdMap.get(n.dataId).id,s.dataIdMap.get(t.dataId).id,s.dataIdMap.get(c.dataId).id,new Uint8Array(new Int32Array(n.shape).buffer),new Uint8Array(new Int32Array(t.shape).buffer),d),i!=null&&s.disposeData(i.dataId),c}const Mo={kernelName:u.ResizeBilinearGrad,backendName:"wasm",setupFunc:ko,kernelFunc:So};let jn;function vo(r){jn=r.wasm.cwrap(u.ResizeNearestNeighbor,null,["number","number","number","number","number","number","number","number","number","number"])}function Ao(r){const{backend:a,inputs:s,attrs:o}=r,{images:n}=s,{alignCorners:t,halfPixelCenters:d,size:c}=o,[l,i]=c,[e,m,g,f]=n.shape,h=[e,l,i,f],b=a.makeOutput(h,"float32");if(u.util.sizeFromShape(n.shape)===0)return b;let k=a.dataIdMap.get(n.dataId),w;k.dtype!=="float32"&&(w=Se({backend:a,inputs:{x:n},attrs:{dtype:"float32"}}),k=a.dataIdMap.get(w.dataId));const y=k.id,I=a.dataIdMap.get(b.dataId).id;return jn(y,e,m,g,f,l,i,t?1:0,d?1:0,I),w!=null&&a.disposeData(w.dataId),b}const xo={kernelName:u.ResizeNearestNeighbor,backendName:"wasm",setupFunc:vo,kernelFunc:Ao};let ea;function Do(r){ea=r.wasm.cwrap(u.ResizeNearestNeighborGrad,null,["number","number","number","array","array","boolean"])}function Fo(r){const{inputs:a,backend:s,attrs:o}=r,{images:n,dy:t}=a,{alignCorners:d}=o,c=s.makeOutput(n.shape,"float32");let l=s.dataIdMap.get(n.dataId),i;return l.dtype!=="float32"&&(i=Se({backend:s,inputs:{x:n},attrs:{dtype:"float32"}}),l=s.dataIdMap.get(i.dataId)),ea(s.dataIdMap.get(n.dataId).id,s.dataIdMap.get(t.dataId).id,s.dataIdMap.get(c.dataId).id,new Uint8Array(new Int32Array(n.shape).buffer),new Uint8Array(new Int32Array(t.shape).buffer),d),i!=null&&s.disposeData(i.dataId),c}const No={kernelName:u.ResizeNearestNeighborGrad,backendName:"wasm",setupFunc:Do,kernelFunc:Fo};let ta;function Ro(r){ta=r.wasm.cwrap(u.Reverse,null,["number","array","number","array","number","number"])}function Po(r){const{inputs:a,backend:s,attrs:o}=r,{x:n}=a,{dims:t}=o,d=u.util.parseAxisParam(t,n.shape);if(n.shape.length===0)return Ye({inputs:{x:n},backend:s});const c=s.makeOutput(n.shape,n.dtype),l=s.dataIdMap.get(n.dataId).id,i=s.dataIdMap.get(c.dataId).id,e=new Uint8Array(new Int32Array(d).buffer),m=new Uint8Array(new Int32Array(n.shape).buffer);ta(l,e,d.length,m,n.shape.length,i);const g=ue({inputs:{x:c},attrs:{shape:n.shape},backend:s});return s.disposeData(c.dataId),g}const Eo={kernelName:u.Reverse,backendName:"wasm",kernelFunc:Po,setupFunc:Ro};let na;function To(r){na=r.wasm.cwrap(u.RotateWithOffset,null,["number","number","number","number","number","number","number","number","array","number","number"])}function Bo(r){const{inputs:a,backend:s,attrs:o}=r,{image:n}=a,{radians:t,fillValue:d,center:c}=o,l=s.makeOutput(n.shape,n.dtype),i=s.dataIdMap.get(n.dataId).id,e=s.dataIdMap.get(l.dataId).id,[m,g,f,h]=n.shape,[b,k]=u.backend_util.getImageCenter(c,g,f),w=d===0,y=255,I=typeof d=="number"?[d,d,d,w?0:y]:[...d,y],A=new Uint8Array(new Int32Array(I).buffer);return na(i,m,g,f,h,t,b,k,A,I.length,e),l}const Oo={kernelName:u.RotateWithOffset,backendName:"wasm",kernelFunc:Bo,setupFunc:To};const Wo=$(u.Round);const zo=$(u.Rsqrt);let aa;function Ho(r){aa=r.wasm.cwrap(u.ScatterNd,null,["number","number","number","number","number","number","array","number","number"])}function $o(r){const{backend:a,inputs:s,attrs:o}=r,{indices:n,updates:t}=s,{shape:d}=o,c=a.makeOutput(d,t.dtype);if(u.util.sizeFromShape(d)===0)return c;const{sliceRank:l,numUpdates:i,sliceSize:e,strides:m,outputSize:g}=u.scatter_util.calculateShapes(t,n,d),h=a.dataIdMap.get(n.dataId).id,k=a.dataIdMap.get(t.dataId).id,w=new Uint8Array(new Int32Array(m).buffer),y=a.dataIdMap.get(c.dataId).id;return aa(h,k,V[t.dtype],l,i,e,w,g,y),c}const Lo={kernelName:u.ScatterNd,backendName:"wasm",setupFunc:Ho,kernelFunc:$o};let ra;function Vo(r){ra=r.wasm.cwrap(u.SearchSorted,null,["number","number","number","number","number","number","bool","number"])}function Go(r){const{inputs:a,backend:s,attrs:o}=r,{sortedSequence:n,values:t}=a,{side:d}=o;if(n.dtype!==t.dtype)throw new Error(`SearchSorted error: sorted_sequence must have the same dtype as values. Got ${n.dtype} and ${t.dtype}`);const c=s.makeOutput(t.shape,"int32");function l(i){return s.dataIdMap.get(i.dataId).id}return ra(l(n),l(t),n.shape[0],n.shape[1],t.shape[1],V[n.dtype],d==="left",l(c)),c}const Uo={kernelName:u.SearchSorted,backendName:"wasm",setupFunc:Vo,kernelFunc:Go};let sa;function qo(r){sa=r.wasm.cwrap("SelectV2",null,["number","number","number","number","number"])}function Ko(r){const{inputs:a,backend:s}=r,{condition:o,t:n,e:t}=a,d=s.dataIdMap.get(o.dataId).id,c=s.dataIdMap.get(n.dataId).id,l=s.dataIdMap.get(t.dataId).id,i=s.makeOutput(n.shape,n.dtype),e=s.dataIdMap.get(i.dataId).id,m=o.shape.length,g=n.shape.length,f=m===0||m>1||g===1?1:u.util.sizeFromShape(n.shape.slice(1));return sa(d,c,l,f,e),i}const Co={kernelName:u.Select,backendName:"wasm",kernelFunc:Ko,setupFunc:qo};const Xo=$(u.Selu);let ua;function Qo(r){ua=r.wasm.cwrap(u.Sigmoid,null,["number","number"])}function Jo(r){const{backend:a,inputs:{x:s}}=r,o=a.dataIdMap.get(s.dataId).id,n=a.makeOutput(s.shape,s.dtype),t=a.dataIdMap.get(n.dataId).id;return u.util.sizeFromShape(n.shape)===0||ua(o,t),n}const Yo={kernelName:"Sigmoid",backendName:"wasm",setupFunc:Qo,kernelFunc:Jo};const Zo=$(u.Sign);const jo=$(u.Sin);const ed=$(u.Sinh);const td=$(u.Softplus);function nd(r){const{inputs:a,backend:s,attrs:o}=r,{x:n}=a,{blockShape:t,paddings:d}=o,c=u.util.sizeFromShape(t),l=[[0,0]];l.push(...d);for(let P=1+t.length;P<n.shape.length;++P)l.push([0,0]);const i=Xn.kernelFunc({inputs:{x:n},backend:s,attrs:{paddings:l,constantValue:0}}),e=u.backend_util.getReshaped(i.shape,t,c,!1),m=u.backend_util.getPermuted(e.length,t.length,!1),g=u.backend_util.getReshapedPermuted(i.shape,t,c,!1),b=ue({inputs:{x:i},backend:s,attrs:{shape:e}}),y=we({inputs:{x:b},backend:s,attrs:{perm:m}}),E=ue({inputs:{x:y},backend:s,attrs:{shape:g}});return s.disposeData(i.dataId),s.disposeData(b.dataId),s.disposeData(y.dataId),E}const ad={kernelName:u.SpaceToBatchND,backendName:"wasm",kernelFunc:nd};let ia;function rd(r){ia=r.wasm.cwrap("SparseFillEmptyRows","number",["number","number","number","number","number","number","number","number","number","number","number","number"])}function sd(r){const{backend:a,inputs:s}=r,{indices:o,values:n,denseShape:t,defaultValue:d}=s,c=o.shape[0],l=o.shape[1],i=a.readSync(t.dataId)[0],e=[c+i,l],m=a.dataIdMap.get(o.dataId).id,g=a.dataIdMap.get(n.dataId).id,f=a.dataIdMap.get(d.dataId).id,h=a.makeOutput(e,o.dtype),b=a.dataIdMap.get(h.dataId).id,k=a.makeOutput(e.slice(0,1),n.dtype),w=a.dataIdMap.get(k.dataId).id,y=a.makeOutput([i],"bool"),I=a.dataIdMap.get(y.dataId).id,A=a.makeOutput([c],o.dtype),E=a.dataIdMap.get(A.dataId).id,P=a.makeOutput([4],"int32"),W=a.dataIdMap.get(P.dataId).id,L=ia(m,g,V[n.dtype],c,i,l,f,b,w,I,E,W),G=a.readSync(P.dataId);let H;switch(G[0]){case 1:{H=u.backend_util.getSparseFillEmptyRowsIndicesDenseShapeMismatch(G[1]);break}case 2:{H=u.backend_util.getSparseFillEmptyRowsNegativeIndexErrorMessage(G[1],G[2]);break}case 3:H=u.backend_util.getSparseFillEmptyRowsOutOfRangeIndexErrorMessage(G[1],G[2],G[3]);break;default:H=""}if(a.disposeData(P.dataId),H)throw a.disposeData(h.dataId),a.disposeData(k.dataId),a.disposeData(y.dataId),a.disposeData(A.dataId),new Error(H);let q=h,C=k;return L!==e[0]&&(q=Ae({inputs:{x:h},attrs:{begin:0,size:[L,l]},backend:a}),C=Ae({inputs:{x:k},attrs:{begin:0,size:L},backend:a}),a.disposeData(h.dataId),a.disposeData(k.dataId)),[q,C,y,A]}const ud={kernelName:u.SparseFillEmptyRows,backendName:"wasm",setupFunc:rd,kernelFunc:sd};let oa;function id(r){oa=r.wasm.cwrap(u.SparseReshape,null,["number","number","number","number","number","number","number"])}function od(r){const{backend:a,inputs:s}=r,{inputIndices:o,inputShape:n,newShape:t}=s;if(o.shape.length!==2)throw new Error(`Input indices should be a matrix but received shape
|
|
3
3
|
${o.shape}`);if(n.shape.length!==1)throw new Error(`Input shape should be a vector but received shape
|
|
4
4
|
${n.shape}`);if(t.shape.length!==1)throw new Error(`Target shape should be a vector but received shape ${t.shape}`);const d=a.dataIdMap.get(o.dataId).id,c=a.dataIdMap.get(n.dataId).id,l=a.dataIdMap.get(t.dataId).id,i=o.shape[0],e=u.util.sizeFromShape(t.shape),m=a.makeOutput([i,e],o.dtype),g=a.dataIdMap.get(m.dataId).id,f=a.makeOutput([e],t.dtype),h=a.dataIdMap.get(f.dataId).id,b=a.makeOutput([3],"int32"),k=a.dataIdMap.get(b.dataId).id;oa(d,c,l,i,g,h,k);const w=a.readSync(b.dataId);let y;switch(w[0]){case 0:{y=u.backend_util.getSparseReshapeMultipleNegativeOneOutputDimErrorMessage(w[1],w[2]);break}case 1:{y=u.backend_util.getSparseReshapeNegativeOutputDimErrorMessage(w[1],w[2]);break}case 2:y=u.backend_util.getSparseReshapeEmptyTensorZeroOutputDimErrorMessage();break;case 3:{const I=Array.from(a.readSync(n.dataId)),A=Array.from(a.readSync(f.dataId));y=u.backend_util.getSparseReshapeInputOutputMultipleErrorMessage(I,A);break}case 4:{const I=Array.from(a.readSync(n.dataId)),A=Array.from(a.readSync(f.dataId));y=u.backend_util.getSparseReshapeInputOutputMismatchErrorMessage(I,A);break}default:y=""}if(a.disposeData(b.dataId),y)throw a.disposeData(m.dataId),a.disposeData(f.dataId),new Error(y);return[m,f]}const dd={kernelName:u.SparseReshape,backendName:"wasm",setupFunc:id,kernelFunc:od};let da;function ca(r){da=r.wasm.cwrap("SparseSegmentReduction",null,["number","number","number","number","number","number","number","number","number"])}function la(r,a){const{backend:s,inputs:o}=r,{data:n,indices:t,segmentIds:d}=o,c=t.shape[0],l=s.readSync(d.dataId,c-1,c)[0],e=c>0?l+1:0;if(e<0)throw new Error(u.backend_util.getSparseSegmentReductionNegativeSegmentIdsErrorMessage());const m=n.shape.slice();m[0]=e;const g=s.dataIdMap.get(n.dataId).id,f=s.dataIdMap.get(t.dataId).id,h=s.dataIdMap.get(d.dataId).id,b=s.makeOutput(m,n.dtype),k=s.dataIdMap.get(b.dataId).id,w=s.makeOutput([4],"int32"),y=s.dataIdMap.get(w.dataId).id;da(g,V[n.dtype],n.shape[0],f,h,k,y,a,0);const I=s.readSync(w.dataId);let A;switch(I[0]){case 0:{A=u.backend_util.getSparseSegmentReductionNegativeSegmentIdsErrorMessage();break}case 1:{A=u.backend_util.getSparseSegmentReductionNonIncreasingSegmentIdsErrorMessage();break}case 2:A=u.backend_util.getSparseSegmentReductionSegmentIdOutOfRangeErrorMessage(I[1],I[2]);break;case 3:A=u.backend_util.getSparseSegmentReductionIndicesOutOfRangeErrorMessage(I[1],I[2],I[3]);break;default:A=""}if(s.disposeData(w.dataId),A)throw s.disposeData(b.dataId),new Error(A);return b}function cd(r){return la(r,!0)}const ld={kernelName:u.SparseSegmentMean,backendName:"wasm",setupFunc:ca,kernelFunc:cd};function pd(r){return la(r,!1)}const md={kernelName:u.SparseSegmentSum,backendName:"wasm",setupFunc:ca,kernelFunc:pd};let pa;function fd(r){pa=r.wasm.cwrap(u.SparseToDense,null,["number","number","number","number","number","number","number","number","array","number","number"])}function hd(r){const{backend:a,inputs:s,attrs:o}=r,{sparseIndices:n,sparseValues:t,defaultValue:d}=s,{outputShape:c}=o,l=a.makeOutput(c,d.dtype);if(u.util.sizeFromShape(c)===0)return l;const{sliceRank:i,numUpdates:e,sliceSize:m,strides:g,outputSize:f}=u.backend_util.calculateShapes(t,n,c),h=a.dataIdMap.get(n.dataId).id,b=a.dataIdMap.get(t.dataId).id,k=a.dataIdMap.get(d.dataId).id,w=new Uint8Array(new Int32Array(g).buffer),y=a.dataIdMap.get(l.dataId).id;return pa(h,b,t.shape.length,k,V[d.dtype],i,e,m,w,f,y),l}const gd={kernelName:u.SparseToDense,backendName:"wasm",setupFunc:fd,kernelFunc:hd};function bd(r){const{inputs:a,attrs:s,backend:o}=r,{x:n}=a,{numOrSizeSplits:t,axis:d}=s,c=u.util.parseAxisParam(d,n.shape)[0],l=u.backend_util.prepareSplitSize(n,t,c),i=new Array(n.shape.length).fill(0),e=n.shape.slice();return l.map(m=>{const g=[...e];g[c]=m;const f=Ae({inputs:{x:n},attrs:{begin:i,size:g},backend:o});return i[c]+=m,f})}const _d={kernelName:u.SplitV,backendName:"wasm",kernelFunc:bd};const yd=$(u.Sqrt);const Id=$(u.Square);const wd=j(u.SquaredDifference);let ma;function kd(r){ma=r.wasm.cwrap(u.Step,null,["number","number","number","number"])}function Sd(r){const{backend:a,inputs:s,attrs:o}=r,{alpha:n}=o,{x:t}=s,d=a.dataIdMap.get(t.dataId).id,c=a.makeOutput(t.shape,t.dtype),l=a.dataIdMap.get(c.dataId).id;return ma(d,n,V[t.dtype],l),c}const Md={kernelName:u.Step,backendName:"wasm",setupFunc:kd,kernelFunc:Sd};let fa;function vd(r){fa=r.wasm.cwrap(u.StridedSlice,null,["number","array","number","array","array","array","array","array","number","number"])}function Ad(r){const{backend:a,inputs:s,attrs:o}=r,{x:n}=s,{begin:t,end:d,strides:c,beginMask:l,endMask:i,ellipsisMask:e,newAxisMask:m,shrinkAxisMask:g}=o,{finalShapeSparse:f,finalShape:h,isIdentity:b,sliceDim0:k,isSimpleSlice:w,begin:y,end:I,strides:A}=u.slice_util.sliceInfo(n.shape,t,d,c,l,i,e,m,g);let E;if(b)E=ue({inputs:{x:n},backend:a,attrs:{shape:h}});else if(k||w){u.util.assert(n.shape.length>=1,()=>`Input must have rank at least 1, got: ${n.shape.length}`);const P=u.slice_util.computeOutShape(y,I,A),W=Ae({inputs:{x:n},backend:a,attrs:{begin:y,size:P}});E=ue({inputs:{x:W},backend:a,attrs:{shape:h}}),a.disposeData(W.dataId)}else{const P=a.makeOutput(f,"float32"),W=a.dataIdMap.get(n.dataId).id,L=new Uint8Array(new Int32Array(u.util.computeStrides(n.shape)).buffer),G=new Uint8Array(new Int32Array(y).buffer),H=new Uint8Array(new Int32Array(I).buffer),q=new Uint8Array(new Int32Array(A).buffer),C=new Uint8Array(new Int32Array(f).buffer),Y=new Uint8Array(new Int32Array(u.util.computeStrides(f)).buffer),ie=a.dataIdMap.get(P.dataId).id;fa(W,L,n.shape.length,G,H,q,C,Y,f.length,ie),E=ue({inputs:{x:P},backend:a,attrs:{shape:h}}),a.disposeData(P.dataId)}return E}const xd={kernelName:u.StridedSlice,backendName:"wasm",setupFunc:vd,kernelFunc:Ad};function Dd(r){const{backend:a,inputs:s,attrs:o}=r,{data:n,dataSplits:t}=s,{separator:d,nGramWidths:c,leftPad:l,rightPad:i,padWidth:e,preserveShortSequences:m}=o,g=a.readSync(n.dataId),f=a.readSync(t.dataId),[h,b]=$r(g,f,d,c,l,i,e,m),k=a.makeOutput([h.length],"string"),w=a.dataIdMap.get(k.dataId);w.stringBytes=h;const y=a.makeOutput(t.shape,"int32");return a.typedArrayFromHeap(y).set(b),[k,y]}const Fd={kernelName:u.StringNGrams,backendName:"wasm",kernelFunc:Dd};function Nd(r){const{backend:a,inputs:s,attrs:o}=r,{input:n,delimiter:t}=s,{skipEmpty:d}=o,c=a.readSync(n.dataId),l=a.readSync(t.dataId),[i,e,m]=Vr(c,l[0],d),g=e.length,f=a.makeOutput([g,2],"int32");a.typedArrayFromHeap(f).set(i);const b=a.makeOutput([g],"string"),k=a.dataIdMap.get(b.dataId);k.stringBytes=e;const w=a.makeOutput([2],"int32");return a.typedArrayFromHeap(w).set(m),[f,b,w]}const Rd={kernelName:u.StringSplit,backendName:"wasm",kernelFunc:Nd};function Pd(r){const{backend:a,inputs:s,attrs:o}=r,{input:n}=s,{numBuckets:t}=o,d=a.readSync(n.dataId),c=Gr(d,t),l=a.makeOutput(n.shape,"int32");return a.typedArrayFromHeap(l).set(c),l}const Ed={kernelName:u.StringToHashBucketFast,backendName:"wasm",kernelFunc:Pd};const Td=j(u.Sub);let ha;function Bd(r){ha=r.wasm.cwrap(u.Sum,null,["number","number","number","number"])}function Od(r){const{backend:a,inputs:s,attrs:o}=r,{axis:n,keepDims:t}=o,{x:d}=s,c=a.dataIdMap.get(d.dataId).id;let l=c,i=d;const{transposed:e,axes:m,originalAxes:g,inputWasTransposed:f}=ke(d,n,a);let h=m;if(f){const I=a.dataIdMap.get(e.dataId).id;I!==c&&(i=e,l=I,h=u.backend_util.getInnerMostAxes(h.length,i.shape.length))}u.backend_util.assertAxesAreInnerMostDims("sum",h,i.shape.length);const[b,k]=u.backend_util.computeOutAndReduceShapes(i.shape,h),w=u.util.sizeFromShape(k),y=a.makeOutput(b,i.dtype);if(u.util.sizeFromShape(i.shape)!==0){const I=a.dataIdMap.get(y.dataId).id;ha(l,w,V[y.dtype],I)}if(f&&a.disposeData(e.dataId),t){const I=u.backend_util.expandShapeToKeepDim(y.shape,g);y.shape=I}return y}const Wd={kernelName:u.Sum,backendName:"wasm",setupFunc:Bd,kernelFunc:Od};const zd=$(u.Tan);const Hd=$(u.Tanh);let ga;function $d(r){ga=r.wasm.cwrap(u.TensorScatterUpdate,null,["number","number","number","number","number","number","array","number","number","number"])}function Ld(r){const{backend:a,inputs:s,attrs:o}=r,{tensor:n,indices:t,updates:d}=s,c=a.makeOutput(n.shape,n.dtype);if(u.util.sizeFromShape(n.shape)===0)return c;const{sliceRank:l,numUpdates:i,sliceSize:e,strides:m,outputSize:g}=u.scatter_util.calculateShapes(d,t,n.shape),h=a.dataIdMap.get(t.dataId).id,k=a.dataIdMap.get(d.dataId).id,y=a.dataIdMap.get(n.dataId).id,I=new Uint8Array(new Int32Array(m).buffer),A=a.dataIdMap.get(c.dataId).id;return ga(h,k,V[d.dtype],l,i,e,I,g,A,y),c}const Vd={kernelName:u.TensorScatterUpdate,backendName:"wasm",setupFunc:$d,kernelFunc:Ld};let ba;function Gd(r){ba=r.wasm.cwrap(u.Tile,null,["number","array","number","array","number","number"])}function Ud(r){const{inputs:a,backend:s,attrs:o}=r,{x:n}=a,t=s.dataIdMap.get(n.dataId).id,{reps:d}=o,c=new Array(n.shape.length);for(let g=0;g<c.length;g++)c[g]=n.shape[g]*d[g];const l=new Uint8Array(new Int32Array(n.shape).buffer),i=new Uint8Array(new Int32Array(c).buffer),e=s.makeOutput(c,n.dtype),m=s.dataIdMap.get(e.dataId).id;return ba(t,l,n.shape.length,i,c.length,V[e.dtype],m),e}const qd={kernelName:u.Tile,backendName:"wasm",setupFunc:Gd,kernelFunc:Ud};let _a;function Kd(r){_a=r.wasm.cwrap(u.TopK,null,["number","array","number","number","number","bool","number","number"])}const Cd=({inputs:r,backend:a,attrs:s})=>{const{x:o}=r,{k:n,sorted:t}=s,d=a.dataIdMap.get(o.dataId).id,c=new Uint8Array(new Int32Array(o.shape).buffer),l=o.shape.slice();l[l.length-1]=n;const i=a.makeOutput(l,o.dtype),e=a.dataIdMap.get(i.dataId).id,m=a.makeOutput(l,"int32"),g=a.dataIdMap.get(m.dataId).id;return _a(d,c,o.shape.length,V[o.dtype],n,t,e,g),[i,m]},Xd={kernelName:u.TopK,backendName:"wasm",setupFunc:Kd,kernelFunc:Cd};let ya;function Qd(r){ya=r.wasm.cwrap(u.Transform,null,["number","number","bool","number","number","number","number","number","number","array","number","array","number","number","number","number","number"])}function Jd(r){const{backend:a,inputs:s,attrs:o}=r,{image:n,transforms:t}=s,{interpolation:d,fillMode:c,fillValue:l,outputShape:i}=o,[e,m,g,f]=n.shape,[h,b]=i??[m,g],k=[e,h,b,f],w=new Uint8Array(new Int32Array(u.util.computeStrides(n.shape)).buffer),y=new Uint8Array(new Int32Array(u.util.computeStrides(k)).buffer),I=a.makeOutput(k,n.dtype),A=a.dataIdMap.get(I.dataId).id,P=a.dataIdMap.get(n.dataId).id,L=a.dataIdMap.get(t.dataId).id,G=d==="nearest"?1:2;let H;switch(c){case"constant":H=1;break;case"reflect":H=2;break;case"wrap":H=3;break;case"nearest":H=4;break;default:H=1;break}return ya(P,L,t.shape[0]>1,e,h,b,f,g,m,w,n.shape.length-1,y,k.length-1,G,H,l,A),I}const Yd={kernelName:u.Transform,backendName:"wasm",setupFunc:Qd,kernelFunc:Jd};function Zd(r){const{inputs:a,attrs:s,backend:o}=r,{axis:n}=s,{x:t}=a,{outputValues:d,outputShape:c,indices:l}=Ur(o.readSync(t.dataId),n,t.shape,t.dtype);return[o.makeOutput(c,t.dtype,void 0,d),o.makeOutput([l.length],"int32",void 0,l)]}const jd={kernelName:u.Unique,backendName:"wasm",kernelFunc:Zd};function ec(r){const{inputs:a,backend:s,attrs:o}=r,{value:n}=a;let{axis:t}=o;t<0&&(t+=n.shape.length);const d=n.shape[t],c=n.shape.length,l=new Array(c-1);let i=0;for(let f=0;f<c;f++)f!==t&&(l[i++]=n.shape[f]);const e=new Array(d),m=new Array(c).fill(0),g=n.shape.slice();g[t]=1;for(let f=0;f<e.length;f++)m[t]=f,e[f]=Ae({inputs:{x:n},attrs:{begin:m,size:g},backend:s});return e.map(({dataId:f,dtype:h})=>({dataId:f,dtype:h,shape:l}))}const tc={kernelName:u.Unpack,backendName:"wasm",kernelFunc:ec};function nc(r){const{inputs:{x:a},backend:s}=r,o=s.makeOutput(a.shape,a.dtype);return s.typedArrayFromHeap(o).fill(0),o}const ac={kernelName:u.ZerosLike,backendName:"wasm",kernelFunc:nc};const rc=[Qa,Ja,Ya,Za,ja,nr,cr,mr,fr,hr,gr,br,_r,yr,Ir,Sr,Pr,Ar,Fr,Or,Jr,jr,es,ns,as,rs,is,os,ls,fs,bs,Is,Ss,Ms,vs,Ds,Rs,Ts,Ws,$s,Gs,Ks,Qs,Zs,tu,nu,su,uu,iu,ou,du,cu,lu,fu,hu,gu,yu,ku,vu,Du,Ru,Pu,Eu,ar,Tu,Bu,Ou,Hu,$u,Lu,Uu,Ku,qu,Cu,Xu,Qu,Ju,ju,ni,si,ui,di,pi,hi,_i,wi,Mi,xi,Di,Ri,Oi,Wi,zi,Hi,Vi,qi,Xi,Qi,Zi,eo,no,Xn,so,oo,po,fo,ho,go,bo,_o,Er,wo,Mo,xo,No,Eo,Oo,Wo,zo,Lo,Uo,Co,Xo,Yo,Zo,jo,ed,Xr,Ei,td,ad,ud,dd,ld,md,gd,_d,yd,Id,wd,Md,xd,Fd,Rd,Ed,Td,Wd,zd,Hd,Vd,qd,Xd,Yd,ir,jd,tc,ac];for(const r of rc)u.registerKernel(r);const vt=u.env();vt.registerFlag("WASM_HAS_SIMD_SUPPORT",async()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,9,1,7,0,65,0,253,15,26,11]))}catch{return!1}}),vt.registerFlag("WASM_HAS_MULTITHREAD_SUPPORT",async()=>{if(vt.get("IS_NODE"))return!1;try{return new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch{return!1}});var Ia=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function wa(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}function sc(r){if(Object.prototype.hasOwnProperty.call(r,"__esModule"))return r;var a=r.default;if(typeof a=="function"){var s=function o(){var n=!1;try{n=this instanceof o}catch{}return n?Reflect.construct(a,arguments,this.constructor):a.apply(this,arguments)};s.prototype=a.prototype}else s={};return Object.defineProperty(s,"__esModule",{value:!0}),Object.keys(r).forEach(function(o){var n=Object.getOwnPropertyDescriptor(r,o);Object.defineProperty(s,o,n.get?n:{enumerable:!0,get:function(){return r[o]}})}),s}var At={exports:{}};const xe=sc(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));var ka;function uc(){return ka||(ka=1,(function(r,a){var s=(()=>{var o=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(o=o||__filename),(function(n){n=n||{};function t(){return U.buffer!=Z&&he(U.buffer),Me}function d(){return U.buffer!=Z&&he(U.buffer),je}function c(){return U.buffer!=Z&&he(U.buffer),et}function l(){return U.buffer!=Z&&he(U.buffer),De}function i(){return U.buffer!=Z&&he(U.buffer),tt}var e=typeof n<"u"?n:{},m,g;e.ready=new Promise(function(p,_){m=p,g=_});var f;typeof process<"u"&&process.listeners&&(f={uncaughtException:process.listeners("uncaughtException"),unhandledRejection:process.listeners("unhandledRejection")});var h=Object.assign({},e),b=(p,_)=>{throw _},k=typeof window=="object",w=typeof importScripts=="function",y=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",I=e.ENVIRONMENT_IS_PTHREAD||!1,A="";function E(p){return e.locateFile?e.locateFile(p,A):A+p}var P,W,L;function G(p){if(p instanceof _e)return;X("exiting due to exception: "+p)}if(y){var H=xe,q=xe;w?A=q.dirname(A)+"/":A=__dirname+"/",P=(_,v)=>(_=We(_)?new URL(_):q.normalize(_),H.readFileSync(_,v?void 0:"utf8")),L=_=>{var v=P(_,!0);return v.buffer||(v=new Uint8Array(v)),v},W=(_,v,R)=>{_=We(_)?new URL(_):q.normalize(_),H.readFile(_,function(T,O){T?R(T):v(O.buffer)})},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),process.on("uncaughtException",function(_){if(!(_ instanceof _e))throw _}),process.on("unhandledRejection",function(_){throw _}),b=(_,v)=>{if(Oe())throw process.exitCode=_,v;G(v),process.exit(_)},e.inspect=function(){return"[Emscripten Module object]"};let p;try{p=xe}catch(_){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),_}Ia.Worker=p.Worker}else(k||w)&&(w?A=self.location.href:typeof document<"u"&&document.currentScript&&(A=document.currentScript.src),typeof o<"u"&&o&&(A=o),A.indexOf("blob:")!==0?A=A.substr(0,A.replace(/[?#].*/,"").lastIndexOf("/")+1):A="",y||(P=p=>{var _=new XMLHttpRequest;return _.open("GET",p,!1),_.send(null),_.responseText},w&&(L=p=>{var _=new XMLHttpRequest;return _.open("GET",p,!1),_.responseType="arraybuffer",_.send(null),new Uint8Array(_.response)}),W=(p,_,v)=>{var R=new XMLHttpRequest;R.open("GET",p,!0),R.responseType="arraybuffer",R.onload=()=>{if(R.status==200||R.status==0&&R.response){_(R.response);return}v()},R.onerror=v,R.send(null)}));y&&typeof performance>"u"&&(Ia.performance=xe.performance);var C=console.log.bind(console),Y=console.warn.bind(console);y&&(C=p=>H.writeSync(1,p+`
|
package/dist/backend-webgpu.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @license Includes TensorFlow.js WebGPU backend 4.22.0 (Apache-2.0). See https://github.com/kubohiroya/turbowarp-teachable-machine/blob/v3.2.
|
|
1
|
+
/*! @license Includes TensorFlow.js WebGPU backend 4.22.0 (Apache-2.0). See https://github.com/kubohiroya/turbowarp-teachable-machine/blob/v3.2.1/THIRD_PARTY_NOTICES.md. */
|
|
2
2
|
(function(d){"use strict";function Nt(s){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(s){for(const e in s)if(e!=="default"){const i=Object.getOwnPropertyDescriptor(s,e);Object.defineProperty(t,e,i.get?i:{enumerable:!0,get:()=>s[e]})}}return t.default=s,Object.freeze(t)}const zt=Nt(d);const X=d.env();X.registerFlag("WEBGPU_DEFERRED_SUBMIT_BATCH_SIZE",()=>15),X.registerFlag("WEBGPU_CPU_FORWARD",()=>!0),X.registerFlag("WEBGPU_MATMUL_PROGRAM_TYPE",()=>-1),X.registerFlag("WEBGPU_USE_NAIVE_CONV2D_TRANSPOSE",()=>!0),X.registerFlag("WEBGPU_USE_LOW_POWER_GPU",()=>!1),X.registerFlag("WEBGPU_CPU_HANDOFF_SIZE_THRESHOLD",()=>1e3),X.registerFlag("WEBGPU_USE_PROFILE_TOOL",()=>!1),X.registerFlag("WEBGPU_IMPORT_EXTERNAL_TEXTURE",()=>!0),X.registerFlag("WEBGPU_USE_NAIVE_CONV2D_DEBUG",()=>!1),X.registerFlag("WEBGPU_THRESHOLD_TO_INCREASE_WORKGROUPS_FOR_MATMUL",()=>-1),X.registerFlag("WEBGPU_CONV_SEPARATE_IM2COL_SHADER",()=>!1),X.registerFlag("WEBGPU_PRINT_SHADER",()=>""),X.registerFlag("WEBGPU_ENGINE_COMPILE_ONLY",()=>!1);class At{constructor(t){t&&(this.vendor=t.vendor,this.architecture=t.architecture,this.intelGPUGeneration=this.getIntelGPUGeneration())}getIntelGPUGeneration(){if(this.isIntel()){if(this.architecture.startsWith("gen"))return Number(this.architecture.match(/\d+/));if(this.architecture.startsWith("xe"))return 12}return 0}isIntel(){return this.vendor==="intel"}}class Ft{constructor(t){this.device=t,this.numUsedBuffers=0,this.numFreeBuffers=0,this.freeBuffers=new Map,this.usedBuffers=new Map,this.numBytesUsed=0,this.numBytesAllocated=0}acquireBuffer(t,e,i=!1,o=!0){let r;const n=Oe(t,e);return o?(this.freeBuffers.has(n)||this.freeBuffers.set(n,[]),this.freeBuffers.get(n).length>0?(r=this.freeBuffers.get(n).pop(),this.numFreeBuffers--):(r=this.device.createBuffer({size:t,usage:e,mappedAtCreation:i}),this.numBytesAllocated+=t)):(r=this.device.createBuffer({size:t,usage:e,mappedAtCreation:i}),this.numBytesAllocated+=t),this.usedBuffers.has(n)||this.usedBuffers.set(n,[]),this.usedBuffers.get(n).push(r),this.numUsedBuffers++,this.numBytesUsed+=t,r}releaseBuffer(t,e=!0){if(this.freeBuffers.size===0)return;const i=t.size,o=t.usage,r=Oe(i,o),n=this.usedBuffers.get(r),a=n.indexOf(t);if(a<0)throw new Error("Cannot find the buffer in buffer manager");n[a]=n[n.length-1],n.pop(),this.numUsedBuffers--,this.numBytesUsed-=i,e?(this.freeBuffers.get(r).push(t),this.numFreeBuffers++):(t.destroy(),this.numBytesAllocated-=i)}getNumUsedBuffers(){return this.numUsedBuffers}getNumFreeBuffers(){return this.numFreeBuffers}dispose(){this.freeBuffers.forEach((t,e)=>{t.forEach(i=>{i.destroy()})}),this.usedBuffers.forEach((t,e)=>{t.forEach(i=>{i.destroy()})}),this.freeBuffers=new Map,this.usedBuffers=new Map,this.numUsedBuffers=0,this.numFreeBuffers=0,this.numBytesUsed=0,this.numBytesAllocated=0}}function Oe(s,t){return`${s}_${t}`}class _t{constructor(t){this.device=t,this.numUsedTextures=0,this.numFreeTextures=0,this.freeTextures=new Map,this.usedTextures=new Map,this.numBytesUsed=0,this.numBytesAllocated=0}acquireTexture(t,e,i,o){const r=He(i),n=t*e*r,a=Ge(t,e,i,o);if(this.freeTextures.has(a)||this.freeTextures.set(a,[]),this.usedTextures.has(a)||this.usedTextures.set(a,[]),this.numBytesUsed+=n,this.numUsedTextures++,this.freeTextures.get(a).length>0){this.numFreeTextures--;const l=this.freeTextures.get(a).shift();return this.usedTextures.get(a).push(l),l}this.numBytesAllocated+=n;const u=this.device.createTexture({size:[t,e],format:i,usage:o});return this.usedTextures.get(a).push(u),u}releaseTexture(t){if(this.freeTextures.size===0)return;const e=t.width,i=t.height,o=t.format,r=t.usage,n=Ge(e,i,o,r);this.freeTextures.has(n)||this.freeTextures.set(n,[]),this.freeTextures.get(n).push(t),this.numFreeTextures++,this.numUsedTextures--;const a=this.usedTextures.get(n),u=a.indexOf(t);if(u<0)throw new Error("Cannot release a texture that was never provided by this texture manager");a.splice(u,1);const l=He(o),c=e*i*l;this.numBytesUsed-=c}getNumUsedTextures(){return this.numUsedTextures}getNumFreeTextures(){return this.numFreeTextures}dispose(){this.freeTextures.forEach((t,e)=>{t.forEach(i=>{i.destroy()})}),this.usedTextures.forEach((t,e)=>{t.forEach(i=>{i.destroy()})}),this.freeTextures=new Map,this.usedTextures=new Map,this.numUsedTextures=0,this.numFreeTextures=0,this.numBytesUsed=0,this.numBytesAllocated=0}}function Ge(s,t,e,i){return`${s}_${t}_${e}_${i}`}function He(s){if(s==="rgba8unorm")return 16;throw new Error(`${s} is not supported!`)}function Lt(s,t){if(Math.max(...s)>5)throw new Error("Cannot symbolically compute strides for rank > 6 tensor.");const e=s.length,i="xyzwuv",o=s.map(n=>`${t}.${i[n]}`),r=new Array(e-1);r[e-2]=o[e-1];for(let n=e-3;n>=0;--n)r[n]=`(${r[n+1]} * ${o[n+1]})`;return r}const Z=(s,t,e)=>e==="int32"?`atomicAdd(${s}, bitcast<i32>(${t}));`:`
|
|
3
3
|
{
|
|
4
4
|
var oldValue = 0;
|
package/dist/composition.js
CHANGED
|
@@ -103,7 +103,7 @@ function confidenceMultiplier(value) {
|
|
|
103
103
|
return Math.max(0, Math.min(1, confidence));
|
|
104
104
|
}
|
|
105
105
|
const name = "@kubohiroya/turbowarp-teachable-machine";
|
|
106
|
-
const version = "3.2.
|
|
106
|
+
const version = "3.2.1";
|
|
107
107
|
const packageMetadata = {
|
|
108
108
|
name,
|
|
109
109
|
version
|
package/dist/posenet.js
CHANGED
package/dist/runtime.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @license Includes TensorFlow.js 4.22.0, Speech Commands 0.5.4, Teachable Machine Pose 0.8.6, Teachable Machine Image 0.8.5, and PoseNet 2.2.2 (Apache-2.0). See https://github.com/kubohiroya/turbowarp-teachable-machine/blob/v3.2.
|
|
1
|
+
/*! @license Includes TensorFlow.js 4.22.0, Speech Commands 0.5.4, Teachable Machine Pose 0.8.6, Teachable Machine Image 0.8.5, and PoseNet 2.2.2 (Apache-2.0). See https://github.com/kubohiroya/turbowarp-teachable-machine/blob/v3.2.1/THIRD_PARTY_NOTICES.md. */
|
|
2
2
|
(function(){"use strict";function bm(n,e){for(var t=0;t<e.length;t++){const s=e[t];if(typeof s!="string"&&!Array.isArray(s)){for(const r in s)if(r!=="default"&&!(r in n)){const o=Object.getOwnPropertyDescriptor(s,r);o&&Object.defineProperty(n,r,o.get?o:{enumerable:!0,get:()=>s[r]})}}}return Object.freeze(Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}))}const x2=1e-7,w2=1e-4;class Yh{constructor(e,t){this.backend=e,this.dataMover=t,this.data=new WeakMap,this.dataIdsCount=0}get(e){return this.data.has(e)||this.dataMover.moveData(this.backend,e),this.data.get(e)}set(e,t){this.dataIdsCount++,this.data.set(e,t)}has(e){return this.data.has(e)}delete(e){return this.dataIdsCount--,this.data.delete(e)}numDataIds(){return this.dataIdsCount}}class ru{refCount(e){return yn("refCount")}incRef(e){return yn("incRef")}timerAvailable(){return!0}time(e){return yn("time")}read(e){return yn("read")}readSync(e){return yn("readSync")}readToGPU(e,t){return yn("readToGPU")}numDataIds(){return yn("numDataIds")}disposeData(e,t){return yn("disposeData")}write(e,t,s){return yn("write")}move(e,t,s,r,o){return yn("move")}createTensorFromGPUData(e,t,s){return yn("createTensorFromGPUData")}memory(){return yn("memory")}floatPrecision(){return yn("floatPrecision")}epsilon(){return this.floatPrecision()===32?x2:w2}dispose(){return yn("dispose")}}function yn(n){throw new Error(`'${n}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`)}function Qr(n){let e=n.length,t=0;for(;e>0;)t=Math.random()*e|0,e--,Bs(n,e,t)}function v2(n,e){if(n.length!==e.length)throw new Error(`Array sizes must match to be shuffled together First array length was ${n.length}Second array length was ${e.length}`);let t=n.length,s=0;for(;t>0;)s=Math.random()*t|0,t--,Bs(n,t,s),Bs(e,t,s)}function ur(n,e,t){return Math.max(n,Math.min(e,t))}function Zh(n){return n%2===0?n:n+1}function Bs(n,e,t){const s=n[e];n[e]=n[t],n[t]=s}function lw(n){let e=0;for(let t=0;t<n.length;t++)e+=n[t];return e}function S2(n,e){const t=Math.random();return e*t+(1-t)*n}function I2(n,e){let t=0;for(let s=0;s<n.length;s++){const r=Number(n[s])-Number(e[s]);t+=r*r}return t}function k(n,e){if(!n)throw new Error(typeof e=="string"?e:e())}function _t(n,e,t=""){k(Ce(n,e),()=>t+` Shapes ${n} and ${e} must match`)}function eo(n){k(n!=null,()=>"The input to the tensor constructor must be a non-null value.")}function q(n){if(n.length===0)return 1;let e=n[0];for(let t=1;t<n.length;t++)e*=n[t];return e}function N2(n){return n.length===0}function uw(n,e){if(n===e)return!0;if(n==null||e==null||n.length!==e.length)return!1;for(let t=0;t<n.length;t++)if(n[t]!==null&&e[t]!==null&&n[t]!==e[t])return!1;return!0}function Ce(n,e){if(n===e)return!0;if(n==null||e==null||n.length!==e.length)return!1;for(let t=0;t<n.length;t++)if(n[t]!==e[t])return!1;return!0}function to(n){return n%1===0}function $2(n){if(Math.tanh!=null)return Math.tanh(n);if(n===1/0)return 1;if(n===-1/0)return-1;{const e=Math.exp(2*n);return(e-1)/(e+1)}}function Jh(n){const e=Math.ceil(Math.sqrt(n));return[e,Math.ceil(n/e)]}function C2(n){const e=new Uint32Array(n);for(let t=0;t<n;++t)e[t]=t;return Qr(e),e}function no(n,e){return e<=n.length?n:n+" ".repeat(e-n.length)}function xm(n,e=r=>0,t,s){return new Promise((r,o)=>{let a=0;const i=()=>{if(n()){r();return}a++;const l=e(a);if(t!=null&&a>=t){o();return}s!=null?s(i,l):setTimeout(i,l)};i()})}function wm(n,e){let t=1,s=-1;for(let o=0;o<n.length;++o)if(n[o]>=0)t*=n[o];else if(n[o]===-1){if(s!==-1)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${s} and dim ${o}`);s=o}else if(n[o]<0)throw Error(`Shapes can not be < 0. Found ${n[o]} at dim ${o}`);if(s===-1){if(e>0&&e!==t)throw Error(`Size(${e}) must match the product of shape ${n}`);return n}if(t===0)throw Error(`Cannot infer the missing size in [${n}] when there are 0 elements`);if(e%t!==0)throw Error(`The implicit shape can't be a fractional number. Got ${e} / ${t}`);const r=n.slice();return r[s]=e/t,r}function Ne(n,e){const t=e.length;return n=n==null?e.map((s,r)=>r):[].concat(n),k(n.every(s=>s>=-t&&s<t),()=>`All values in axis param must be in range [-${t}, ${t}) but got axis ${n}`),k(n.every(s=>to(s)),()=>`All values in axis param must be integers but got axis ${n}`),n.map(s=>s<0?t+s:s)}function Vs(n,e){const t=[],s=[],r=e!=null&&Array.isArray(e)&&e.length===0,o=e==null||r?null:Ne(e,n).sort();let a=0;for(let i=0;i<n.length;++i){if(o!=null){if(o[a]===i&&n[i]!==1)throw new Error(`Can't squeeze axis ${i} since its dim '${n[i]}' is not 1`);(o[a]==null||o[a]>i)&&n[i]===1&&(t.push(n[i]),s.push(i)),o[a]<=i&&a++}n[i]!==1&&(t.push(n[i]),s.push(i))}return{newShape:t,keptDims:s}}function Ct(n,e){return ot(n,e)}function ot(n,e){let t=null;if(n==null||n==="float32")t=new Float32Array(e);else if(n==="int32")t=new Int32Array(e);else if(n==="bool")t=new Uint8Array(e);else if(n==="string")t=new Array(e);else throw new Error(`Unknown data type ${n}`);return t}function cw(n,e){for(let t=0;t<n.length;t++){const s=n[t];if(isNaN(s)||!isFinite(s))throw Error(`A tensor of type ${e} being uploaded contains ${s}.`)}}function hw(n){return n==="bool"||n==="complex64"||n==="float32"||n==="int32"||n==="string"}function vm(n,e){return!(e==="complex64"||e==="float32"&&n!=="complex64"||e==="int32"&&n!=="float32"&&n!=="complex64"||e==="bool"&&n==="bool")}function ou(n){if(n==="float32"||n==="int32")return 4;if(n==="complex64")return 8;if(n==="bool")return 1;throw new Error(`Unknown dtype ${n}`)}function dw(n){if(n==null)return 0;let e=0;return n.forEach(t=>e+=t.length),e}function ws(n){return typeof n=="string"||n instanceof String}function pw(n){return typeof n=="boolean"}function Qh(n){return typeof n=="number"}function so(n){return Array.isArray(n)?so(n[0]):n instanceof Float32Array?"float32":n instanceof Int32Array||n instanceof Uint8Array||n instanceof Uint8ClampedArray?"int32":Qh(n)?"float32":ws(n)?"string":pw(n)?"bool":"float32"}function cr(n){return!!(n&&n.constructor&&n.call&&n.apply)}function ed(n,e){for(let t=e;t<n;++t)if(n%t===0)return t;return n}function pe(n){const e=n.length;if(e<2)return[];const t=new Array(e-1);t[e-2]=n[e-1];for(let s=e-3;s>=0;--s)t[s]=t[s+1]*n[s+1];return t}function fw(n,e,t,s=!1){const r=new Array;if(e.length===1){const o=e[0]*(s?2:1);for(let a=0;a<o;a++)r[a]=t[n+a]}else{const o=e[0],a=e.slice(1),i=a.reduce((l,u)=>l*u)*(s?2:1);for(let l=0;l<o;l++)r[l]=fw(n+l*i,a,t,s)}return r}function Tn(n,e,t=!1){if(n.length===0)return e[0];const s=n.reduce((r,o)=>r*o)*(t?2:1);if(s===0)return[];if(s!==e.length)throw new Error(`[${n}] does not match the input size ${e.length}${t?" for a complex tensor":""}.`);return fw(0,n,e,t)}function mw(n,e){if(Array.isArray(n))return n;if(e==="float32")return n instanceof Float32Array?n:new Float32Array(n);if(e==="int32")return n instanceof Int32Array?n:new Int32Array(n);if(e==="bool"||e==="string")return Uint8Array.from(new Int32Array(n));throw new Error(`Unknown dtype ${e}`)}function td(n,e){const t=Ot(n,e);for(let s=0;s<t.length;s++)t[s]=1;return t}function Ot(n,e){if(e==null||e==="float32"||e==="complex64")return new Float32Array(n);if(e==="int32")return new Int32Array(n);if(e==="bool")return new Uint8Array(n);throw new Error(`Unknown data type ${e}`)}function Sm(n,e){const t=n.reduce((s,r)=>s*r,1);if(e==null||e==="float32")return Tn(n,new Float32Array(t));if(e==="int32")return Tn(n,new Int32Array(t));if(e==="bool")return Tn(n,new Uint8Array(t));throw new Error(`Unknown data type ${e}`)}function bn(n){n.forEach(e=>{k(Number.isInteger(e)&&e>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${n}].`)})}function Xn(n,e,t){if(e===0)return 0;if(e===1)return n[0];let s=n[n.length-1];for(let r=0;r<n.length-1;++r)s+=t[r]*n[r];return s}function ro(n,e,t){if(e===0)return[];if(e===1)return[n];const s=new Array(e);for(let r=0;r<s.length-1;++r)s[r]=Math.floor(n/t[r]),n-=s[r]*t[r];return s[s.length-1]=n,s}function Ws(n){return n&&n.then&&typeof n.then=="function"}const gw="tfjsflags";class Im{constructor(e){this.global=e,this.flags={},this.flagRegistry={},this.urlFlags={},this.getQueryParams=T2,this.populateURLFlags()}setPlatform(e,t){this.platform!=null&&(j().getBool("IS_TEST")||j().getBool("PROD")||console.warn(`Platform ${this.platformName} has already been set. Overwriting the platform with ${e}.`)),this.platformName=e,this.platform=t}registerFlag(e,t,s){if(this.flagRegistry[e]={evaluationFn:t,setHook:s},this.urlFlags[e]!=null){const r=this.urlFlags[e];j().getBool("IS_TEST")||j().getBool("PROD")||console.warn(`Setting feature override from URL ${e}: ${r}.`),this.set(e,r)}}async getAsync(e){return e in this.flags?this.flags[e]:(this.flags[e]=await this.evaluateFlag(e),this.flags[e])}get(e){if(e in this.flags)return this.flags[e];const t=this.evaluateFlag(e);if(Ws(t))throw new Error(`Flag ${e} cannot be synchronously evaluated. Please use getAsync() instead.`);return this.flags[e]=t,this.flags[e]}getNumber(e){return this.get(e)}getBool(e){return this.get(e)}getString(e){return this.get(e)}getFlags(){return this.flags}get features(){return this.flags}set(e,t){if(this.flagRegistry[e]==null)throw new Error(`Cannot set flag ${e} as it has not been registered.`);this.flags[e]=t,this.flagRegistry[e].setHook!=null&&this.flagRegistry[e].setHook(t)}evaluateFlag(e){if(this.flagRegistry[e]==null)throw new Error(`Cannot evaluate flag '${e}': no evaluation function found.`);return this.flagRegistry[e].evaluationFn()}setFlags(e){this.flags=Object.assign({},e)}reset(){this.flags={},this.urlFlags={},this.populateURLFlags()}populateURLFlags(){if(typeof this.global>"u"||typeof this.global.location>"u"||typeof this.global.location.search>"u")return;const e=this.getQueryParams(this.global.location.search);gw in e&&e[gw].split(",").forEach(s=>{const[r,o]=s.split(":");this.urlFlags[r]=E2(r,o)})}}function T2(n){const e={};return n.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(t,...s)=>(k2(e,s[0],s[1]),s.join("="))),e}function k2(n,e,t){n[decodeURIComponent(e)]=decodeURIComponent(t||"")}function E2(n,e){const t=e.toLowerCase();return t==="true"||t==="false"?t==="true":`${+t}`===t?+t:e}function j(){return nd}let nd=null;function A2(n){nd=n}let Nm;function yw(){if(Nm==null){let n;if(typeof window<"u")n=window;else if(typeof global<"u")n=global;else if(typeof process<"u")n=process;else if(typeof self<"u")n=self;else throw new Error("Could not find a global object");Nm=n}return Nm}function R2(){const n=yw();return n._tfGlobals==null&&(n._tfGlobals=new Map),n._tfGlobals}function $m(n,e){const t=R2();if(t.has(n))return t.get(n);{const s=e();return t.set(n,s),t.get(n)}}const Xa="Abs",oo="Acos",ao="Acosh",hr="Add",Ya="AddN",au="All",iu="Any",Za="ArgMax",Ja="ArgMin",io="Asin",lo="Asinh",uo="Atan",co="Atanh",ho="Atan2",Qa="AvgPool",lu="AvgPoolGrad",ei="AvgPool3D",uu="AvgPool3DGrad",ti="BatchMatMul",ni="BatchToSpaceND",cu="Bincount",si="BitwiseAnd",Cm="BroadcastTo",hu="BroadcastArgs",po="Cast",fo="Ceil",mo="ClipByValue",du="Complex",ri="ComplexAbs",oi="Concat",ai="Conv2D",pu="Conv2DBackpropFilter",ii="Conv2DBackpropInput",li="Conv3D",fu="Conv3DBackpropFilterV2",mu="Conv3DBackpropInputV2",go="Cos",yo="Cosh",gu="Cumprod",ui="Cumsum",yu="CropAndResize",bu="DenseBincount",xu="DepthToSpace",ci="DepthwiseConv2dNative",wu="DepthwiseConv2dNativeBackpropFilter",vu="DepthwiseConv2dNativeBackpropInput",Su="Diag",hi="Dilation2D",Iu="Dilation2DBackpropInput",Nu="Dilation2DBackpropFilter",$u="Draw",bo="RealDiv",Cu="Einsum",xo="Elu",Tu="EluGrad",wo="Erf",di="Equal",vo="Exp",pi="ExpandDims",So="Expm1",ku="FFT",Eu="Fill",Au="FlipLeftRight",Io="Floor",No="FloorDiv",fi="FusedBatchNorm",mi="GatherV2",Ru="GatherNd",gi="Greater",$o="GreaterEqual",Co="Identity",Du="IFFT",_u="Imag",To="IsFinite",ko="IsInf",Eo="IsNan",yi="LeakyRelu",bi="Less",xi="LessEqual",Ou="LinSpace",Ao="Log",Ro="Log1p",wi="LogicalAnd",vi="LogicalNot",Si="LogicalOr",bw="LogicalXor",Tm="LogSoftmax",xw="LowerBound",Ii="LRN",Fu="LRNGrad",ww="MatrixBandPart",Ni="Max",Do="Maximum",$i="MaxPool",Lu="MaxPoolGrad",Ci="MaxPool3D",Pu="MaxPool3DGrad",Mu="MaxPoolWithArgmax",Ti="Mean",ki="Min",_o="Minimum",Ei="MirrorPad",Oo="Mod",zu="Multinomial",Fo="Multiply",Ai="Neg",Ri="NotEqual",Bu="NonMaxSuppressionV3",Vu="NonMaxSuppressionV4",Wu="NonMaxSuppressionV5",Di="OnesLike",_i="OneHot",Oi="Pack",Fi="PadV2",vw="Pool",Lo="Pow",Li="Prelu",Pi="Prod",Uu="RaggedGather",Gu="RaggedRange",Hu="RaggedTensorToTensor",ju="Range",qu="Real",Po="Reciprocal",Mo="Relu",Mi="Reshape",zi="ResizeNearestNeighbor",Ku="ResizeNearestNeighborGrad",Bi="ResizeBilinear",Xu="ResizeBilinearGrad",zo="Relu6",Vi="Reverse",Bo="Round",Vo="Rsqrt",Yu="ScatterNd",Zu="TensorScatterUpdate",Ju="SearchSorted",Wi="Select",Wo="Selu",Ui="Slice",Uo="Sin",Go="Sinh",Ho="Sign",jo="Sigmoid",qo="Softplus",Ko="Sqrt",Gi="Sum",Hi="SpaceToBatchND",ji="SplitV",qi="Softmax",Qu="SparseFillEmptyRows",ec="SparseReshape",tc="SparseSegmentMean",nc="SparseSegmentSum",sc="SparseToDense",Xo="SquaredDifference",rc="Square",Ki="StaticRegexReplace",oc="StridedSlice",ac="StringNGrams",ic="StringSplit",lc="StringToHashBucketFast",Yo="Sub",Zo="Tan",Jo="Tanh",Qo="Tile",uc="TopK",cc="Transform",dr="Transpose",hc="Unique",Xi="Unpack",Yi="UnsortedSegmentSum",Sw="UpperBound",Zi="ZerosLike",ea="Step",dc="FromPixels",pc="RotateWithOffset",Ji="_FusedMatMul",Qi="FusedConv2D",el="FusedDepthwiseConv2D";function kn(...n){j().getBool("IS_TEST")||j().getBool("PROD")||console.warn(...n)}function D2(...n){j().getBool("IS_TEST")||j().getBool("PROD")||console.log(...n)}const tl=$m("kernelRegistry",()=>new Map),fc=$m("gradRegistry",()=>new Map);function nl(n,e){const t=Em(n,e);return tl.get(t)}function sd(n){return fc.get(n)}function mc(n){const e=tl.entries(),t=[];for(;;){const{done:s,value:r}=e.next();if(s)break;const[o,a]=r,[i]=o.split("_");i===n&&t.push(a)}return t}function gc(n){const{kernelName:e,backendName:t}=n,s=Em(e,t);tl.has(s)&&kn(`The kernel '${e}' for backend '${t}' is already registered`),tl.set(s,n)}function km(n){const{kernelName:e}=n;fc.has(e)&&j().getBool("DEBUG")&&kn(`Overriding the gradient for '${e}'`),fc.set(e,n)}function Iw(n,e){const t=Em(n,e);if(!tl.has(t))throw new Error(`The kernel '${n}' for backend '${e}' is not registered`);tl.delete(t)}function Nw(n){if(!fc.has(n))throw new Error(`The gradient '${n}' for backend is not registered`);fc.delete(n)}function $w(n,e){mc(n).forEach(s=>{const r=Object.assign({},s,{backendName:e});gc(r)})}function Em(n,e){return`${e}_${n}`}function Cw(n){return n instanceof Float32Array||n instanceof Int32Array||n instanceof Uint8Array||n instanceof Uint8ClampedArray}function Am(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}function yc(n){if(Object.prototype.hasOwnProperty.call(n,"__esModule"))return n;var e=n.default;if(typeof e=="function"){var t=function s(){var r=!1;try{r=this instanceof s}catch{}return r?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};t.prototype=e.prototype}else t={};return Object.defineProperty(t,"__esModule",{value:!0}),Object.keys(n).forEach(function(s){var r=Object.getOwnPropertyDescriptor(n,s);Object.defineProperty(t,s,r.get?r:{enumerable:!0,get:function(){return n[s]}})}),t}var Rm,Tw;function _2(){if(Tw)return Rm;Tw=1,Rm=e;var n=null;try{n=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch{}function e(T,S,A){this.low=T|0,this.high=S|0,this.unsigned=!!A}e.prototype.__isLong__,Object.defineProperty(e.prototype,"__isLong__",{value:!0});function t(T){return(T&&T.__isLong__)===!0}e.isLong=t;var s={},r={};function o(T,S){var A,D,O;return S?(T>>>=0,(O=0<=T&&T<256)&&(D=r[T],D)?D:(A=i(T,(T|0)<0?-1:0,!0),O&&(r[T]=A),A)):(T|=0,(O=-128<=T&&T<128)&&(D=s[T],D)?D:(A=i(T,T<0?-1:0,!1),O&&(s[T]=A),A))}e.fromInt=o;function a(T,S){if(isNaN(T))return S?b:m;if(S){if(T<0)return b;if(T>=f)return I}else{if(T<=-g)return E;if(T+1>=g)return $}return T<0?a(-T,S).neg():i(T%p|0,T/p|0,S)}e.fromNumber=a;function i(T,S,A){return new e(T,S,A)}e.fromBits=i;var l=Math.pow;function u(T,S,A){if(T.length===0)throw Error("empty string");if(T==="NaN"||T==="Infinity"||T==="+Infinity"||T==="-Infinity")return m;if(typeof S=="number"?(A=S,S=!1):S=!!S,A=A||10,A<2||36<A)throw RangeError("radix");var D;if((D=T.indexOf("-"))>0)throw Error("interior hyphen");if(D===0)return u(T.substring(1),S,A).neg();for(var O=a(l(A,8)),F=m,_=0;_<T.length;_+=8){var B=Math.min(8,T.length-_),U=parseInt(T.substring(_,_+B),A);if(B<8){var H=a(l(A,B));F=F.mul(H).add(a(U))}else F=F.mul(O),F=F.add(a(U))}return F.unsigned=S,F}e.fromString=u;function c(T,S){return typeof T=="number"?a(T,S):typeof T=="string"?u(T,S):i(T.low,T.high,typeof S=="boolean"?S:T.unsigned)}e.fromValue=c;var h=65536,d=1<<24,p=h*h,f=p*p,g=f/2,y=o(d),m=o(0);e.ZERO=m;var b=o(0,!0);e.UZERO=b;var w=o(1);e.ONE=w;var x=o(1,!0);e.UONE=x;var v=o(-1);e.NEG_ONE=v;var $=i(-1,2147483647,!1);e.MAX_VALUE=$;var I=i(-1,-1,!0);e.MAX_UNSIGNED_VALUE=I;var E=i(0,-2147483648,!1);e.MIN_VALUE=E;var C=e.prototype;return C.toInt=function(){return this.unsigned?this.low>>>0:this.low},C.toNumber=function(){return this.unsigned?(this.high>>>0)*p+(this.low>>>0):this.high*p+(this.low>>>0)},C.toString=function(S){if(S=S||10,S<2||36<S)throw RangeError("radix");if(this.isZero())return"0";if(this.isNegative())if(this.eq(E)){var A=a(S),D=this.div(A),O=D.mul(A).sub(this);return D.toString(S)+O.toInt().toString(S)}else return"-"+this.neg().toString(S);for(var F=a(l(S,6),this.unsigned),_=this,B="";;){var U=_.div(F),H=_.sub(U.mul(F)).toInt()>>>0,G=H.toString(S);if(_=U,_.isZero())return G+B;for(;G.length<6;)G="0"+G;B=""+G+B}},C.getHighBits=function(){return this.high},C.getHighBitsUnsigned=function(){return this.high>>>0},C.getLowBits=function(){return this.low},C.getLowBitsUnsigned=function(){return this.low>>>0},C.getNumBitsAbs=function(){if(this.isNegative())return this.eq(E)?64:this.neg().getNumBitsAbs();for(var S=this.high!=0?this.high:this.low,A=31;A>0&&(S&1<<A)==0;A--);return this.high!=0?A+33:A+1},C.isZero=function(){return this.high===0&&this.low===0},C.eqz=C.isZero,C.isNegative=function(){return!this.unsigned&&this.high<0},C.isPositive=function(){return this.unsigned||this.high>=0},C.isOdd=function(){return(this.low&1)===1},C.isEven=function(){return(this.low&1)===0},C.equals=function(S){return t(S)||(S=c(S)),this.unsigned!==S.unsigned&&this.high>>>31===1&&S.high>>>31===1?!1:this.high===S.high&&this.low===S.low},C.eq=C.equals,C.notEquals=function(S){return!this.eq(S)},C.neq=C.notEquals,C.ne=C.notEquals,C.lessThan=function(S){return this.comp(S)<0},C.lt=C.lessThan,C.lessThanOrEqual=function(S){return this.comp(S)<=0},C.lte=C.lessThanOrEqual,C.le=C.lessThanOrEqual,C.greaterThan=function(S){return this.comp(S)>0},C.gt=C.greaterThan,C.greaterThanOrEqual=function(S){return this.comp(S)>=0},C.gte=C.greaterThanOrEqual,C.ge=C.greaterThanOrEqual,C.compare=function(S){if(t(S)||(S=c(S)),this.eq(S))return 0;var A=this.isNegative(),D=S.isNegative();return A&&!D?-1:!A&&D?1:this.unsigned?S.high>>>0>this.high>>>0||S.high===this.high&&S.low>>>0>this.low>>>0?-1:1:this.sub(S).isNegative()?-1:1},C.comp=C.compare,C.negate=function(){return!this.unsigned&&this.eq(E)?E:this.not().add(w)},C.neg=C.negate,C.add=function(S){t(S)||(S=c(S));var A=this.high>>>16,D=this.high&65535,O=this.low>>>16,F=this.low&65535,_=S.high>>>16,B=S.high&65535,U=S.low>>>16,H=S.low&65535,G=0,X=0,Z=0,K=0;return K+=F+H,Z+=K>>>16,K&=65535,Z+=O+U,X+=Z>>>16,Z&=65535,X+=D+B,G+=X>>>16,X&=65535,G+=A+_,G&=65535,i(Z<<16|K,G<<16|X,this.unsigned)},C.subtract=function(S){return t(S)||(S=c(S)),this.add(S.neg())},C.sub=C.subtract,C.multiply=function(S){if(this.isZero())return m;if(t(S)||(S=c(S)),n){var A=n.mul(this.low,this.high,S.low,S.high);return i(A,n.get_high(),this.unsigned)}if(S.isZero())return m;if(this.eq(E))return S.isOdd()?E:m;if(S.eq(E))return this.isOdd()?E:m;if(this.isNegative())return S.isNegative()?this.neg().mul(S.neg()):this.neg().mul(S).neg();if(S.isNegative())return this.mul(S.neg()).neg();if(this.lt(y)&&S.lt(y))return a(this.toNumber()*S.toNumber(),this.unsigned);var D=this.high>>>16,O=this.high&65535,F=this.low>>>16,_=this.low&65535,B=S.high>>>16,U=S.high&65535,H=S.low>>>16,G=S.low&65535,X=0,Z=0,K=0,ee=0;return ee+=_*G,K+=ee>>>16,ee&=65535,K+=F*G,Z+=K>>>16,K&=65535,K+=_*H,Z+=K>>>16,K&=65535,Z+=O*G,X+=Z>>>16,Z&=65535,Z+=F*H,X+=Z>>>16,Z&=65535,Z+=_*U,X+=Z>>>16,Z&=65535,X+=D*G+O*H+F*U+_*B,X&=65535,i(K<<16|ee,X<<16|Z,this.unsigned)},C.mul=C.multiply,C.divide=function(S){if(t(S)||(S=c(S)),S.isZero())throw Error("division by zero");if(n){if(!this.unsigned&&this.high===-2147483648&&S.low===-1&&S.high===-1)return this;var A=(this.unsigned?n.div_u:n.div_s)(this.low,this.high,S.low,S.high);return i(A,n.get_high(),this.unsigned)}if(this.isZero())return this.unsigned?b:m;var D,O,F;if(this.unsigned){if(S.unsigned||(S=S.toUnsigned()),S.gt(this))return b;if(S.gt(this.shru(1)))return x;F=b}else{if(this.eq(E)){if(S.eq(w)||S.eq(v))return E;if(S.eq(E))return w;var _=this.shr(1);return D=_.div(S).shl(1),D.eq(m)?S.isNegative()?w:v:(O=this.sub(S.mul(D)),F=D.add(O.div(S)),F)}else if(S.eq(E))return this.unsigned?b:m;if(this.isNegative())return S.isNegative()?this.neg().div(S.neg()):this.neg().div(S).neg();if(S.isNegative())return this.div(S.neg()).neg();F=m}for(O=this;O.gte(S);){D=Math.max(1,Math.floor(O.toNumber()/S.toNumber()));for(var B=Math.ceil(Math.log(D)/Math.LN2),U=B<=48?1:l(2,B-48),H=a(D),G=H.mul(S);G.isNegative()||G.gt(O);)D-=U,H=a(D,this.unsigned),G=H.mul(S);H.isZero()&&(H=w),F=F.add(H),O=O.sub(G)}return F},C.div=C.divide,C.modulo=function(S){if(t(S)||(S=c(S)),n){var A=(this.unsigned?n.rem_u:n.rem_s)(this.low,this.high,S.low,S.high);return i(A,n.get_high(),this.unsigned)}return this.sub(this.div(S).mul(S))},C.mod=C.modulo,C.rem=C.modulo,C.not=function(){return i(~this.low,~this.high,this.unsigned)},C.and=function(S){return t(S)||(S=c(S)),i(this.low&S.low,this.high&S.high,this.unsigned)},C.or=function(S){return t(S)||(S=c(S)),i(this.low|S.low,this.high|S.high,this.unsigned)},C.xor=function(S){return t(S)||(S=c(S)),i(this.low^S.low,this.high^S.high,this.unsigned)},C.shiftLeft=function(S){return t(S)&&(S=S.toInt()),(S&=63)===0?this:S<32?i(this.low<<S,this.high<<S|this.low>>>32-S,this.unsigned):i(0,this.low<<S-32,this.unsigned)},C.shl=C.shiftLeft,C.shiftRight=function(S){return t(S)&&(S=S.toInt()),(S&=63)===0?this:S<32?i(this.low>>>S|this.high<<32-S,this.high>>S,this.unsigned):i(this.high>>S-32,this.high>=0?0:-1,this.unsigned)},C.shr=C.shiftRight,C.shiftRightUnsigned=function(S){if(t(S)&&(S=S.toInt()),S&=63,S===0)return this;var A=this.high;if(S<32){var D=this.low;return i(D>>>S|A<<32-S,A>>>S,this.unsigned)}else return S===32?i(A,0,this.unsigned):i(A>>>S-32,0,this.unsigned)},C.shru=C.shiftRightUnsigned,C.shr_u=C.shiftRightUnsigned,C.toSigned=function(){return this.unsigned?i(this.low,this.high,!1):this},C.toUnsigned=function(){return this.unsigned?this:i(this.low,this.high,!0)},C.toBytes=function(S){return S?this.toBytesLE():this.toBytesBE()},C.toBytesLE=function(){var S=this.high,A=this.low;return[A&255,A>>>8&255,A>>>16&255,A>>>24,S&255,S>>>8&255,S>>>16&255,S>>>24]},C.toBytesBE=function(){var S=this.high,A=this.low;return[S>>>24,S>>>16&255,S>>>8&255,S&255,A>>>24,A>>>16&255,A>>>8&255,A&255]},e.fromBytes=function(S,A,D){return D?e.fromBytesLE(S,A):e.fromBytesBE(S,A)},e.fromBytesLE=function(S,A){return new e(S[0]|S[1]<<8|S[2]<<16|S[3]<<24,S[4]|S[5]<<8|S[6]<<16|S[7]<<24,A)},e.fromBytesBE=function(S,A){return new e(S[4]<<24|S[5]<<16|S[6]<<8|S[7],S[0]<<24|S[1]<<16|S[2]<<8|S[3],A)},Rm}var kw=_2();const Ew=Am(kw),O2=bm({__proto__:null,default:Ew},[kw]);const ta=Ew||O2;function bc(n){return ta.fromString(n,!0,16)}const Aw=bc("c3a5c85c97cb3127"),na=bc("b492b66fbe98f273"),qt=bc("9ae16a3b2f90404f");function Dm(n){return n.xor(n.shru(47))}function Rw(n,e,t){const s=n.slice(e,e+t);return ta.fromBytes(Array.from(s),!0,!0)}function Ge(n,e){return Rw(n,e,8)}function Dw(n,e){return Rw(n,e,4)}function Tt(n,e){return e===0?n:n.shru(e).or(n.shl(64-e))}function pr(n,e,t=bc("9ddfea08eb382d69")){let s=n.xor(e).mul(t);s=s.xor(s.shru(47));let r=e.xor(s).mul(t);return r=r.xor(r.shru(47)),r=r.mul(t),r}function F2(n,e,t,s,r,o){r=r.add(n),o=Tt(o.add(r).add(s),21);const a=r;return r=r.add(e),r=r.add(t),o=o.add(Tt(r,44)),[r.add(s),o.add(a)]}function rd(n,e,t,s){return F2(Ge(n,e),Ge(n,e+8),Ge(n,e+16),Ge(n,e+24),t,s)}function L2(n,e=n.length){if(e>=8){const t=qt.add(e*2),s=Ge(n,0).add(qt),r=Ge(n,e-8),o=Tt(r,37).mul(t).add(s),a=Tt(s,25).add(r).mul(t);return pr(o,a,t)}if(e>=4){const t=qt.add(e*2),s=Dw(n,0);return pr(s.shl(3).add(e),Dw(n,e-4),t)}if(e>0){const t=n[0],s=n[e>>1],r=n[e-1],o=t+(s<<8),a=e+(r<<2);return Dm(qt.mul(o).xor(Aw.mul(a))).mul(qt)}return qt}function P2(n,e=n.length){const t=qt.add(e*2),s=Ge(n,0).mul(na),r=Ge(n,8),o=Ge(n,e-8).mul(t),a=Ge(n,e-16).mul(qt);return pr(Tt(s.add(r),43).add(Tt(o,30)).add(a),s.add(Tt(r.add(qt),18)).add(o),t)}function M2(n,e=n.length){const t=qt.add(e*2),s=Ge(n,0).mul(qt),r=Ge(n,8),o=Ge(n,e-8).mul(t),a=Ge(n,e-16).mul(qt),i=Tt(s.add(r),43).add(Tt(o,30)).add(a),l=pr(i,s.add(Tt(r.add(qt),18)).add(o),t),u=Ge(n,16).mul(t),c=Ge(n,24),h=i.add(Ge(n,e-32)).mul(t),d=l.add(Ge(n,e-24)).mul(t);return pr(Tt(u.add(c),43).add(Tt(h,30)).add(d),u.add(Tt(c.add(s),18)).add(h),t)}function _w(n,e=n.length){const t=ta.fromNumber(81,!0);if(e<=32)return e<=16?L2(n,e):P2(n,e);if(e<=64)return M2(n,e);let s=t,r=t.mul(na).add(113),o=Dm(r.mul(qt).add(113)).mul(qt),a=[ta.UZERO,ta.UZERO],i=[ta.UZERO,ta.UZERO];s=s.mul(qt).add(Ge(n,0));let l=0;const u=(e-1>>6)*64,c=u+(e-1&63)-63;do s=Tt(s.add(r).add(a[0]).add(Ge(n,l+8)),37).mul(na),r=Tt(r.add(a[1]).add(Ge(n,l+48)),42).mul(na),s=s.xor(i[1]),r=r.add(a[0]).add(Ge(n,l+40)),o=Tt(o.add(i[0]),33).mul(na),a=rd(n,l,a[1].mul(na),s.add(i[0])),i=rd(n,l+32,o.add(i[1]),r.add(Ge(n,l+16))),[o,s]=[s,o],l+=64;while(l!==u);const h=na.add(o.and(255).shl(1));return l=c,i[0]=i[0].add(e-1&63),a[0]=a[0].add(i[0]),i[0]=i[0].add(a[0]),s=Tt(s.add(r).add(a[0]).add(Ge(n,l+8)),37).mul(h),r=Tt(r.add(a[1]).add(Ge(n,l+48)),42).mul(h),s=s.xor(i[1].mul(9)),r=r.add(a[0].mul(9).add(Ge(n,l+40))),o=Tt(o.add(i[0]),33).mul(h),a=rd(n,l,a[1].mul(h),s.add(i[0])),i=rd(n,l+32,o.add(i[1]),r.add(Ge(n,l+16))),[o,s]=[s,o],pr(pr(a[0],i[0],h).add(Dm(r).mul(Aw)).add(o),pr(a[1],i[1],h).add(s),h)}function Us(n,e){return e==="string"?vs(n):fr([n],e)}function z2(n,e){return n instanceof Float32Array&&e==="float32"||n instanceof Int32Array&&e==="int32"||n instanceof Uint8Array&&e==="bool"}function fr(n,e){if(e==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(n)&&(n=Ss(n)),j().getBool("DEBUG")&&cw(n,e),z2(n,e))return n;if(e==null||e==="float32"||e==="complex64")return new Float32Array(n);if(e==="int32")return new Int32Array(n);if(e==="bool"){const t=new Uint8Array(n.length);for(let s=0;s<t.length;++s)Math.round(n[s])!==0&&(t[s]=1);return t}else throw new Error(`Unknown data type ${e}`)}function lt(){return j().platform.now()}function Ow(n,e){return j().platform.fetch(n,e)}function vs(n,e="utf-8"){return e=e||"utf-8",j().platform.encode(n,e)}function Gs(n,e="utf-8"){return e=e||"utf-8",j().platform.decode(n,e)}function wt(n){return j().platform.isTypedArray!=null?j().platform.isTypedArray(n):Cw(n)}function Ss(n,e=[],t=!1){if(e==null&&(e=[]),typeof n=="boolean"||typeof n=="number"||typeof n=="string"||Ws(n)||n==null||wt(n)&&t)e.push(n);else if(Array.isArray(n)||wt(n))for(let s=0;s<n.length;++s)Ss(n[s],e,t);else{let s=-1;for(const r of Object.keys(n))/^([1-9]+[0-9]*|0)$/.test(r)&&(s=Math.max(s,Number(r)));for(let r=0;r<=s;r++)Ss(n[r],e,t)}return e}const Fw=Object.freeze(Object.defineProperty({__proto__:null,arraysEqual:Ce,arraysEqualWithNull:uw,assert:k,assertNonNegativeIntegerDimensions:bn,assertNonNull:eo,assertShapesMatch:_t,bytesFromStringArray:dw,bytesPerElement:ou,checkConversionForErrors:cw,clamp:ur,computeStrides:pe,convertBackendValuesAndArrayBuffer:mw,createScalarValue:Us,createShuffledIndices:C2,decodeString:Gs,distSquared:I2,encodeString:vs,fetch:Ow,fingerPrint64:_w,flatten:Ss,getArrayFromDType:ot,getTypedArrayFromDType:Ct,hasEncodingLoss:vm,hexToLong:bc,indexToLoc:ro,inferDtype:so,inferFromImplicitShape:wm,isBoolean:pw,isFunction:cr,isInt:to,isNumber:Qh,isPromise:Ws,isScalarShape:N2,isString:ws,isTypedArray:wt,isValidDtype:hw,locToIndex:Xn,makeOnesTypedArray:td,makeZerosNestedTypedArray:Sm,makeZerosTypedArray:Ot,nearestDivisor:ed,nearestLargerEven:Zh,now:lt,parseAxisParam:Ne,randUniform:S2,repeatedTry:xm,rightPad:no,shuffle:Qr,shuffleCombo:v2,sizeFromShape:q,sizeToSquarishShape:Jh,squeezeShape:Vs,sum:lw,swap:Bs,tanh:$2,toNestedArray:Tn,toTypedArray:fr},Symbol.toStringTag,{value:"Module"}));class B2{constructor(e,t){this.backendTimer=e,this.logger=t,t==null&&(this.logger=new W2)}profileKernel(e,t,s){let r;const o=()=>{r=s()};let a;const i=lt();if(this.backendTimer.timerAvailable())a=this.backendTimer.time(o);else{o();for(const u of r)u.dataSync();a=Promise.resolve({kernelMs:lt()-i})}if(j().getBool("CHECK_COMPUTATION_FOR_ERRORS"))for(let u=0;u<r.length;u++){const c=r[u];c.data().then(h=>{V2(h,c.dtype,e)})}return{kernelName:e,outputs:r,inputs:t,timeMs:a.then(u=>u.kernelMs),extraInfo:a.then(u=>u.getExtraProfileInfo!=null?u.getExtraProfileInfo():"")}}logKernelProfile(e){const{kernelName:t,outputs:s,timeMs:r,inputs:o,extraInfo:a}=e;s.forEach(i=>{Promise.all([i.data(),r,a]).then(l=>{this.logger.logKernelProfile(t,i,l[0],l[1],o,l[2])})})}}function V2(n,e,t){if(e!=="float32")return!1;for(let s=0;s<n.length;s++){const r=n[s];if(isNaN(r)||!isFinite(r))return console.warn(`Found ${r} in the result of '${t}'`),!0}return!1}class W2{logKernelProfile(e,t,s,r,o,a){const i=typeof r=="number"?no(`${r}ms`,9):r.error,l=no(e,25),u=t.rank,c=t.size,h=no(t.shape.toString(),14);let d="";for(const p in o){const f=o[p];if(f!=null){const g=f.shape||t.shape,y=g.length;d+=`${p}: ${y}D ${y>0?g:""} `}}console.log(`%c${l} %c${i} %c${u}D ${h} %c${c} %c${d} %c${a}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}}function U2(n,e,t){const s={},r={};for(let l=0;l<e.length;l++)s[e[l].id]=!0;for(let l=0;l<n.length;l++){const u=n[l],c=u.inputs;for(const h in c){const d=c[h];let p=!1;for(let f=0;f<e.length;f++)if(s[d.id]){u.outputs.forEach(g=>s[g.id]=!0),p=!0,r[u.id]=!0;break}if(p)break}}const o={};o[t.id]=!0;const a={};for(let l=n.length-1;l>=0;l--){const u=n[l],c=u.inputs;for(let h=0;h<u.outputs.length;h++)if(o[u.outputs[h].id]){for(const d in c)o[c[d].id]=!0,a[u.id]=!0;break}}const i=[];for(let l=0;l<n.length;l++){const u=n[l];if(r[u.id]&&a[u.id]){const c={};for(const d in u.inputs){const p=u.inputs[d];s[p.id]&&(c[d]=p)}const h=Object.assign({},u);h.inputs=c,h.outputs=u.outputs,i.push(h)}}return i}function G2(n,e,t,s){for(let r=e.length-1;r>=0;r--){const o=e[r],a=[];if(o.outputs.forEach(l=>{const u=n[l.id];u!=null?a.push(u):a.push(null)}),o.gradient==null)throw new Error(`Cannot compute gradient: gradient function not found for ${o.kernelName}.`);const i=o.gradient(a);for(const l in o.inputs){if(!(l in i))throw new Error(`Cannot backprop through input ${l}. Available gradients found: ${Object.keys(i)}.`);const u=t(()=>i[l]());if(u.dtype!=="float32")throw new Error(`Error in gradient for op ${o.kernelName}. The gradient of input ${l} must have 'float32' dtype, but has '${u.dtype}'`);const c=o.inputs[l];if(!Ce(u.shape,c.shape))throw new Error(`Error in gradient for op ${o.kernelName}. The gradient of input '${l}' has shape '${u.shape}', which does not match the shape of the input '${c.shape}'`);if(n[c.id]==null)n[c.id]=u;else{const h=n[c.id];n[c.id]=s(h,u),h.dispose()}}}}const Lw=20,xc=3,_m=7;function H2(n,e,t,s){const r=pe(e),o=j2(n,e,t,r),a=e.length,i=od(n,e,t,r,o),l=["Tensor"];return s&&(l.push(` dtype: ${t}`),l.push(` rank: ${a}`),l.push(` shape: [${e}]`),l.push(" values:")),l.push(i.map(u=>" "+u).join(`
|
|
3
3
|
`)),l.join(`
|
|
4
4
|
`)}function j2(n,e,t,s){const r=q(e),o=s[s.length-1],a=new Array(o).fill(0),i=e.length,l=t==="complex64"?vc(n):n;if(i>1)for(let u=0;u<r/o;u++){const c=u*o;for(let h=0;h<o;h++)a[h]=Math.max(a[h],wc(l[c+h],0,t).length)}return a}function wc(n,e,t){let s;return Array.isArray(n)?s=`${parseFloat(n[0].toFixed(_m))} + ${parseFloat(n[1].toFixed(_m))}j`:ws(n)?s=`'${n}'`:t==="bool"?s=Pw(n):s=parseFloat(n.toFixed(_m)).toString(),no(s,e)}function Pw(n){return n===0?"false":"true"}function od(n,e,t,s,r,o=!0){const a=t==="complex64"?2:1,i=e[0],l=e.length;if(l===0){if(t==="complex64"){const g=vc(n);return[wc(g[0],0,t)]}return t==="bool"?[Pw(n[0])]:[n[0].toString()]}if(l===1){if(i>Lw){const y=xc*a;let m=Array.from(n.slice(0,y)),b=Array.from(n.slice((i-xc)*a,i*a));return t==="complex64"&&(m=vc(m),b=vc(b)),["["+m.map((w,x)=>wc(w,r[x],t)).join(", ")+", ..., "+b.map((w,x)=>wc(w,r[i-xc+x],t)).join(", ")+"]"]}return["["+(t==="complex64"?vc(n):Array.from(n)).map((y,m)=>wc(y,r[m],t)).join(", ")+"]"]}const u=e.slice(1),c=s.slice(1),h=s[0]*a,d=[];if(i>Lw){for(let g=0;g<xc;g++){const y=g*h,m=y+h;d.push(...od(n.slice(y,m),u,t,c,r,!1))}d.push("...");for(let g=i-xc;g<i;g++){const y=g*h,m=y+h;d.push(...od(n.slice(y,m),u,t,c,r,g===i-1))}}else for(let g=0;g<i;g++){const y=g*h,m=y+h;d.push(...od(n.slice(y,m),u,t,c,r,g===i-1))}const p=l===2?",":"";d[0]="["+(i>0?d[0]+p:"");for(let g=1;g<d.length-1;g++)d[g]=" "+d[g]+p;let f=`,
|
|
@@ -4998,4 +4998,4 @@ return a / b;`,packedOpSnippet:`
|
|
|
4998
4998
|
}
|
|
4999
4999
|
`}}function C9(n){const{inputs:e,backend:t,attrs:s}=n,{x:r,segmentIds:o}=e,{numSegments:a}=s,i=r.shape.length,l=[];let u=0;const c=st([u],i);let h=r;c!=null&&(h=rn({inputs:{x:r},backend:t,attrs:{perm:c}}),l.push(h),u=dt(1,i)[0]);const d=Zv(h.shape,u,a),p=q([h.shape[u]]),f=se({inputs:{x:h},backend:t,attrs:{shape:[-1,p]}});l.push(f);const g=Sc(r.dtype),y=(x,v,$,I,E)=>{const C=x.shape[0],T=x.shape[1],S=Yv(T,E),A={windowSize:S,inSize:T,batchSize:C,numSegments:E},D=new $9(A,v),O=t.compileAndRun(D,[x,$],I);if(l.push(O),O.shape[1]===E)return O;const F=FT({backend:t,attrs:{start:0,stop:E,step:1,dtype:"float32"}}),_=MT({inputs:{x:F},backend:t,attrs:{reps:[T/S]}});return l.push(F),l.push(_),y(O,v,_,I,E)},m=y(f,"unsortedSegmentSum",o,g,a),b=se({inputs:{x:m},backend:t,attrs:{shape:d}});let w=b;if(c!=null){l.push(b);const x=Ir(c);w=rn({inputs:{x:w},backend:t,attrs:{perm:x}})}return l.forEach(x=>t.disposeIntermediateTensorInfo(x)),w}const T9={kernelName:Yi,backendName:"webgl",kernelFunc:C9};const k9=[a5,l5,h5,f5,g5,x5,v5,I5,T5,E5,D5,F5,M5,W5,H5,q5,X5,Q5,t8,s8,a8,d8,f8,b8,w8,$8,T8,R8,UX,O8,z8,U8,X8,J8,eY,nY,rY,lY,cY,dY,fY,gY,bY,vY,IY,TY,EY,DY,FY,PY,zY,WY,GY,qY,XY,YY,JY,e7,n7,r7,a7,l7,h7,f7,g7,x7,S7,N7,C7,WX,k7,P8,A7,D7,O7,HX,L7,M7,B7,U7,j7,K7,Y7,J7,tZ,sZ,oZ,uZ,hZ,pZ,yZ,xZ,vZ,IZ,$Z,EZ,DZ,LZ,WZ,KX,jZ,XZ,JZ,tJ,v8,sJ,oJ,iJ,cJ,fJ,qX,gJ,bJ,wJ,SJ,IJ,S8,MZ,$J,kJ,RJ,YX,FJ,MJ,WJ,HJ,XJ,ZJ,QJ,tQ,rQ,iQ,cQ,pQ,gQ,bQ,SQ,NQ,h8,BZ,CQ,TQ,EQ,RQ,_Q,FQ,PQ,zQ,VQ,UQ,HQ,qQ,XQ,JQ,e9,n9,r9,zZ,s5,a9,l9,c9,p9,y9,w9,r5,S9,N9,T9,rJ];for(const n of k9)gc(n);const E9="4.22.0";const tm=Object.freeze(Object.defineProperty({__proto__:null,Abs:Xa,Acos:oo,Acosh:ao,AdadeltaOptimizer:kp,AdagradOptimizer:Ep,AdamOptimizer:Ap,AdamaxOptimizer:Rp,Add:hr,AddN:Ya,All:au,Any:iu,ArgMax:Za,ArgMin:Ja,Asin:io,Asinh:lo,Atan:uo,Atan2:ho,Atanh:co,AvgPool:Qa,AvgPool3D:ei,AvgPool3DGrad:uu,AvgPoolGrad:lu,BatchMatMul:ti,BatchToSpaceND:ni,Bincount:cu,BitwiseAnd:si,BroadcastArgs:hu,BroadcastTo:Cm,Callback:UI,CallbackList:DS,Cast:po,Ceil:fo,ClipByValue:mo,Complex:du,ComplexAbs:ri,Concat:oi,Conv2D:ai,Conv2DBackpropFilter:pu,Conv2DBackpropInput:ii,Conv3D:li,Conv3DBackpropFilterV2:fu,Conv3DBackpropInputV2:mu,Cos:go,Cosh:yo,CropAndResize:yu,Cumprod:gu,Cumsum:ui,CustomCallback:OS,DataStorage:Yh,DenseBincount:bu,DepthToSpace:xu,DepthwiseConv2dNative:ci,DepthwiseConv2dNativeBackpropFilter:wu,DepthwiseConv2dNativeBackpropInput:vu,Diag:Su,Dilation2D:hi,Dilation2DBackpropFilter:Nu,Dilation2DBackpropInput:Iu,Draw:$u,get ENV(){return nd},EarlyStopping:HI,Einsum:Cu,Elu:xo,EluGrad:Tu,Environment:Im,Equal:di,Erf:wo,Exp:vo,ExpandDims:pi,Expm1:So,FFT:ku,Fill:Eu,FlipLeftRight:Au,Floor:Io,FloorDiv:No,FromPixels:dc,FusedBatchNorm:fi,FusedConv2D:Qi,FusedDepthwiseConv2D:el,GPGPUContext:Hf,GatherNd:Ru,GatherV2:mi,GraphModel:Hx,Greater:gi,GreaterEqual:$o,History:_S,IFFT:Du,Identity:Co,Imag:_u,InputSpec:xt,IsFinite:To,IsInf:ko,IsNan:Eo,KernelBackend:ru,LRN:Ii,LRNGrad:Fu,LayerVariable:NS,LayersModel:sr,LeakyRelu:yi,Less:bi,LessEqual:xi,LinSpace:Ou,Log:Ao,Log1p:Ro,LogSoftmax:Tm,LogicalAnd:wi,LogicalNot:vi,LogicalOr:Si,LogicalXor:bw,LowerBound:xw,MathBackendCPU:Nh,MathBackendWebGL:Fh,MatrixBandPart:ww,Max:Ni,MaxPool:$i,MaxPool3D:Ci,MaxPool3DGrad:Pu,MaxPoolGrad:Lu,MaxPoolWithArgmax:Mu,Maximum:Do,Mean:Ti,Min:ki,Minimum:_o,MirrorPad:Ei,Mod:Oo,MomentumOptimizer:Dp,Multinomial:zu,Multiply:Fo,Neg:Ai,NonMaxSuppressionV3:Bu,NonMaxSuppressionV4:Vu,NonMaxSuppressionV5:Wu,NotEqual:Ri,OP_SCOPE_SUFFIX:ld,OneHot:_i,OnesLike:Di,Optimizer:Es,OptimizerConstructors:yy,Pack:Oi,PadV2:Fi,Pool:vw,Pow:Lo,Prelu:Li,Prod:Pi,RMSPropOptimizer:_p,RNN:fs,RaggedGather:Uu,RaggedRange:Gu,RaggedTensorToTensor:Hu,Range:ju,get Rank(){return ad},Real:qu,RealDiv:bo,Reciprocal:Po,get Reduction(){return Gt},Relu:Mo,Relu6:zo,Reshape:Mi,ResizeBilinear:Bi,ResizeBilinearGrad:Xu,ResizeNearestNeighbor:zi,ResizeNearestNeighborGrad:Ku,Reverse:Vi,RotateWithOffset:pc,Round:Bo,Rsqrt:Vo,SGDOptimizer:eh,ScatterNd:Yu,SearchSorted:Ju,Select:Wi,Selu:Wo,Sequential:Ea,Sigmoid:jo,Sign:Ho,Sin:Uo,Sinh:Go,Slice:Ui,Softmax:qi,Softplus:qo,SpaceToBatchND:Hi,SparseFillEmptyRows:Qu,SparseReshape:ec,SparseSegmentMean:tc,SparseSegmentSum:nc,SparseToDense:sc,SplitV:ji,Sqrt:Ko,Square:rc,SquaredDifference:Xo,StaticRegexReplace:Ki,Step:ea,StridedSlice:oc,StringNGrams:ac,StringSplit:ic,StringToHashBucketFast:lc,Sub:Yo,Sum:Gi,SymbolicTensor:us,Tan:Zo,Tanh:Jo,Tensor:Te,TensorBuffer:ut,TensorScatterUpdate:Zu,Tile:Qo,TopK:uc,Transform:cc,Transpose:dr,Unique:hc,Unpack:Xi,UnsortedSegmentSum:Yi,UpperBound:Sw,Variable:rl,ZerosLike:Zi,_FusedMatMul:Ji,abs:ct,acos:fd,acosh:md,add:J,addN:Qm,all:Cc,any:ul,argMax:Qn,argMin:gd,asin:yd,asinh:bd,atan:xd,atan2:wd,atanh:vd,avgPool:hl,avgPool3d:Sd,backend:al,backend_util:zy,basicLSTMCell:ng,batchNorm:la,batchNorm2d:Id,batchNorm3d:Nd,batchNorm4d:$d,batchToSpaceND:dl,bincount:Cd,bitwiseAnd:sg,booleanMaskAsync:Wg,broadcastArgs:rg,broadcastTo:wr,broadcast_util:$1,browser:gv,buffer:we,callbacks:JB,cast:te,ceil:Td,clipByValue:Jt,clone:Jn,complex:Ns,concat:nt,concat1d:kd,concat2d:Ed,concat3d:Ad,concat4d:Rd,constraints:V3,conv1d:Ac,conv2d:$s,conv2dTranspose:Rc,conv3d:Dd,conv3dTranspose:_d,copyRegisteredKernels:$w,cos:pl,cosh:Dc,cosineWindow:Qc,cumprod:fl,cumsum:_c,customGrad:ns,data:WW,denseBincount:Oc,deprecationWarn:Zw,depthToSpace:Od,depthwiseConv2d:ua,deregisterOp:eV,device_util:Hw,diag:ag,dilation2d:Fd,disableDeprecationWarnings:Yw,dispose:ge,disposeVariables:Jw,div:ie,divNoNan:Ld,dot:Pd,dropout:bp,einsum:Sr,elu:ha,enableDebugMode:Xw,enableProdMode:Kw,enclosingPowerOfTwo:xp,engine:Mn,ensureShape:ig,env:j,equal:an,erf:Fc,euclideanNorm:Md,exp:Qt,expandDims:pt,expm1:zd,eye:Lc,fft:Tl,fill:vr,findBackend:s1,findBackendFactory:r1,floor:fa,floorDiv:$c,forceHalfFloat:jC,fused:Yg,gather:ts,gatherND:jg,gather_util:yv,getBackend:Um,getGradient:sd,getKernel:nl,getKernelsForBackend:mc,gpgpu_util:S6,grad:k1,grads:E1,greater:Ut,greaterEqual:Cs,ifft:ba,imag:ml,image:vn,inTopKAsync:qg,initializers:sM,input:nI,io:Fp,irfft:Xc,isFinite:Bd,isInf:Vd,isNaN:Wd,keep:gt,kernel_impls:Qv,layers:kB,leakyRelu:gl,less:ma,lessEqual:Ys,linalg:Tp,linspace:ug,loadGraphModel:jx,loadGraphModelSync:aW,loadLayersModel:fh,localResponseNormalization:Ud,log:un,log1p:yl,logSigmoid:Hd,logSoftmax:Pc,logSumExp:bl,logicalAnd:An,logicalNot:xl,logicalOr:Mc,logicalXor:jd,losses:ey,lowerBound:hg,matMul:Ie,math:dv,max:ln,maxPool:wl,maxPool3d:Kd,maxPoolWithArgmax:dg,maximum:ss,mean:qe,memory:ud,meshgrid:pg,metrics:HB,min:da,minimum:Zs,mirrorPad:Xd,mod:Yd,model:Sb,models:jB,moments:$r,movingAverage:Ug,mul:M,multiRNNCell:fg,multinomial:mg,neg:We,nextFrame:Mp,norm:pa,notEqual:Cr,oneHot:Ts,ones:en,onesLike:cn,op:P,outerProduct:gg,pad:ks,pad1d:yg,pad2d:bg,pad3d:Zd,pad4d:xg,pool:Jd,pow:es,prelu:Sl,print:pd,prod:Qd,profile:Qw,raggedGather:wg,raggedRange:vg,raggedTensorToTensor:Sg,rand:Ig,randomGamma:Eg,randomNormal:Bc,randomStandardNormal:Ag,randomUniform:Js,randomUniformInt:Rg,range:Tr,ready:Wm,real:ga,reciprocal:ip,registerBackend:cd,registerCallbackConstructor:XM,registerGradient:km,registerKernel:gc,registerOp:QB,regularizers:YB,relu:Bn,relu6:Vc,removeBackend:n1,reshape:z,reverse:wn,reverse1d:Dg,reverse2d:_g,reverse3d:Og,reverse4d:Fg,rfft:kl,round:Wc,rsqrt:Uc,scalar:ue,scatterND:Gg,scatter_util:H1,searchSorted:zc,selu:Gc,separableConv2d:Hc,sequential:tI,serialization:tv,setBackend:t1,setPlatform:o1,setWebGLContext:W$,setdiff1dAsync:Lg,shared:S$,sigmoid:En,sign:lp,signal:Qg,sin:jc,sinh:qc,slice:ke,slice1d:Nl,slice2d:Kc,slice3d:$l,slice4d:ya,slice_util:my,softmax:Cl,softplus:Nr,spaceToBatchND:vl,sparse:ty,sparseToDense:Hg,spectral:Jg,split:tn,sqrt:bt,square:Pe,squaredDifference:Yc,squeeze:Vn,stack:Pt,step:kr,stridedSlice:up,string:ny,sub:ae,sum:le,sumOutType:Sc,tan:cp,tanh:Xs,tensor:Xt,tensor1d:it,tensor2d:rs,tensor3d:xa,tensor4d:hp,tensor5d:Pg,tensor6d:Mg,tensorScatterUpdate:Bg,tensor_util:Ww,test_util:G1,tidy:W,tile:xn,time:e1,topk:pp,train:Ar,transpose:Ee,truncatedNormal:Zc,unique:fp,unregisterGradient:Nw,unregisterKernel:Iw,unsortedSegmentSum:Jc,unstack:hn,upcastType:Kt,upperBound:Vg,util:Fw,valueAndGrad:A1,valueAndGrads:R1,variable:mp,variableGrads:cg,version:{"tfjs-core":gy,"tfjs-backend-cpu":I$,"tfjs-backend-webgl":HC,"tfjs-data":IN,"tfjs-layers":ff,"tfjs-converter":rN,tfjs:E9},version_converter:rN,version_core:gy,version_cpu:I$,version_layers:ff,version_webgl:HC,webgl:VX,webgl_util:kK,where:vt,whereAsync:yp,zeros:at,zerosLike:Ae},Symbol.toStringTag,{value:"Module"}));var BT=function(n,e){return(BT=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,s){t.__proto__=s}||function(t,s){for(var r in s)s.hasOwnProperty(r)&&(t[r]=s[r])})(n,e)};function VT(n,e){function t(){this.constructor=n}BT(n,e),n.prototype=e===null?Object.create(e):(t.prototype=e.prototype,new t)}var _0=function(){return(_0=Object.assign||function(n){for(var e,t=1,s=arguments.length;t<s;t++)for(var r in e=arguments[t])Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}).apply(this,arguments)};function Hr(n,e,t,s){return new(t||(t=Promise))(function(r,o){function a(u){try{l(s.next(u))}catch(c){o(c)}}function i(u){try{l(s.throw(u))}catch(c){o(c)}}function l(u){u.done?r(u.value):new t(function(c){c(u.value)}).then(a,i)}l((s=s.apply(n,[])).next())})}function jr(n,e){var t,s,r,o,a={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return o={next:i(0),throw:i(1),return:i(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function i(l){return function(u){return(function(c){if(t)throw new TypeError("Generator is already executing.");for(;a;)try{if(t=1,s&&(r=2&c[0]?s.return:c[0]?s.throw||((r=s.return)&&r.call(s),0):s.next)&&!(r=r.call(s,c[1])).done)return r;switch(s=0,r&&(c=[2&c[0],r.value]),c[0]){case 0:case 1:r=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,s=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!(r=(r=a.trys).length>0&&r[r.length-1])&&(c[0]===6||c[0]===2)){a=0;continue}if(c[0]===3&&(!r||c[1]>r[0]&&c[1]<r[3])){a.label=c[1];break}if(c[0]===6&&a.label<r[1]){a.label=r[1],r=c;break}if(r&&a.label<r[2]){a.label=r[2],a.ops.push(c);break}r[2]&&a.ops.pop(),a.trys.pop();continue}c=e.call(n,a)}catch(h){c=[6,h],s=0}finally{t=r=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}})([l,u])}}}var WT=(function(){function n(e,t){this.model=e,this.outputStride=t;var s=this.model.inputs[0].shape;k(s[1]===-1&&s[2]===-1,function(){return"Input shape ["+s[1]+", "+s[2]+"] must both be equal to or -1"})}return n.prototype.predict=function(e){var t=this;return W(function(){var s=t.preprocessInput(te(e,"float32")),r=pt(s,0),o=t.model.predict(r).map(function(i){return Vn(i,[0])}),a=t.nameOutputResults(o);return{heatmapScores:En(a.heatmap),offsets:a.offsets,displacementFwd:a.displacementFwd,displacementBwd:a.displacementBwd}})},n.prototype.dispose=function(){this.model.dispose()},n})(),UT=(function(n){function e(){return n!==null&&n.apply(this,arguments)||this}return VT(e,n),e.prototype.preprocessInput=function(t){return W(function(){return ae(ie(t,127.5),1)})},e.prototype.nameOutputResults=function(t){return{offsets:t[0],heatmap:t[1],displacementFwd:t[2],displacementBwd:t[3]}},e})(WT);function O0(n){return Math.floor(n/2)}var A9=(function(){function n(e,t){this.priorityQueue=new Array(e),this.numberOfElements=-1,this.getElementValue=t}return n.prototype.enqueue=function(e){this.priorityQueue[++this.numberOfElements]=e,this.swim(this.numberOfElements)},n.prototype.dequeue=function(){var e=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,e},n.prototype.empty=function(){return this.numberOfElements===-1},n.prototype.size=function(){return this.numberOfElements+1},n.prototype.all=function(){return this.priorityQueue.slice(0,this.numberOfElements+1)},n.prototype.max=function(){return this.priorityQueue[0]},n.prototype.swim=function(e){for(;e>0&&this.less(O0(e),e);)this.exchange(e,O0(e)),e=O0(e)},n.prototype.sink=function(e){for(;2*e<=this.numberOfElements;){var t=2*e;if(t<this.numberOfElements&&this.less(t,t+1)&&t++,!this.less(e,t))break;this.exchange(e,t),e=t}},n.prototype.getValueAt=function(e){return this.getElementValue(this.priorityQueue[e])},n.prototype.less=function(e,t){return this.getValueAt(e)<this.getValueAt(t)},n.prototype.exchange=function(e,t){var s=this.priorityQueue[e];this.priorityQueue[e]=this.priorityQueue[t],this.priorityQueue[t]=s},n})();function R9(n,e,t,s,r,o){for(var a=o.shape,i=a[0],l=a[1],u=!0,c=Math.max(t-r,0),h=Math.min(t+r+1,i),d=c;d<h;++d){for(var p=Math.max(s-r,0),f=Math.min(s+r+1,l),g=p;g<f;++g)if(o.get(d,g,n)>e){u=!1;break}if(!u)break}return u}function D9(n,e,t){for(var s=t.shape,r=s[0],o=s[1],a=s[2],i=new A9(r*o*a,function(d){return d.score}),l=0;l<r;++l)for(var u=0;u<o;++u)for(var c=0;c<a;++c){var h=t.get(l,u,c);h<n||R9(c,h,l,u,e,t)&&i.enqueue({score:h,part:{heatmapY:l,heatmapX:u,id:c}})}return i}var eu=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],nm=eu.length,Wh=eu.reduce(function(n,e,t){return n[e]=t,n},{}),_9=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]],GT=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]],O9=_9.map(function(n){var e=n[0],t=n[1];return[Wh[e],Wh[t]]}),F9=["left_face","right_face","right_upper_leg_front","right_lower_leg_back","right_upper_leg_back","left_lower_leg_front","left_upper_leg_front","left_upper_leg_back","left_lower_leg_back","right_feet","right_lower_leg_front","left_feet","torso_front","torso_back","right_upper_arm_front","right_upper_arm_back","right_lower_arm_back","left_lower_arm_front","left_upper_arm_front","left_upper_arm_back","left_lower_arm_back","right_hand","right_lower_arm_front","left_hand"];function HT(n,e,t,s){return{y:s.get(n,e,t),x:s.get(n,e,t+nm)}}function jT(n,e,t){var s=HT(n.heatmapY,n.heatmapX,n.id,t),r=s.y,o=s.x;return{x:n.heatmapX*e+o,y:n.heatmapY*e+r}}function qT(n,e,t){return n<e?e:n>t?t:n}function L9(n,e,t,s){var r=t-n,o=s-e;return r*r+o*o}function KT(n,e){return{x:n.x+e.x,y:n.y+e.y}}var XT=GT.map(function(n){var e=n[0],t=n[1];return[Wh[e],Wh[t]]}),F0=XT.map(function(n){return n[1]}),YT=XT.map(function(n){return n[0]});function P9(n,e,t){var s=t.shape[2]/2;return{y:t.get(e.y,e.x,n),x:t.get(e.y,e.x,s+n)}}function L0(n,e,t,s){return{y:qT(Math.round(n.y/e),0,t-1),x:qT(Math.round(n.x/e),0,s-1)}}function ZT(n,e,t,s,r,o,a,i){i===void 0&&(i=2);for(var l=s.shape,u=l[0],c=l[1],h=P9(n,L0(e.position,o,u,c),a),d=KT(e.position,h),p=0;p<i;p++){var f=L0(d,o,u,c),g=HT(f.y,f.x,t,r);d=KT({x:f.x*o,y:f.y*o},{x:g.x,y:g.y})}var y=L0(d,o,u,c),m=s.get(y.y,y.x,t);return{position:d,part:eu[t],score:m}}function M9(n,e,t,s,r,o){var a=e.shape[2],i=F0.length,l=new Array(a),u=n.part,c=n.score,h=jT(u,s,t);l[u.id]={score:c,part:eu[u.id],position:h};for(var d=i-1;d>=0;--d){var p=F0[d],f=YT[d];l[p]&&!l[f]&&(l[f]=ZT(d,l[p],f,e,t,s,o))}for(d=0;d<i;++d)p=YT[d],f=F0[d],l[p]&&!l[f]&&(l[f]=ZT(d,l[p],f,e,t,s,r));return l}function JT(n,e,t,s){var r=t.x,o=t.y;return n.some(function(a){var i=a.keypoints[s].position;return L9(o,r,i.y,i.x)<=e})}function z9(n,e,t){return t.reduce(function(s,r,o){var a=r.position,i=r.score;return JT(n,e,a,o)||(s+=i),s},0)/t.length}var B9=1;function QT(n,e,t,s,r,o,a,i){a===void 0&&(a=.5),i===void 0&&(i=20);for(var l=[],u=D9(a,B9,n),c=i*i;l.length<o&&!u.empty();){var h=u.dequeue();if(!JT(l,c,jT(h.part,r,e),h.part.id)){var d=M9(h,n,e,r,t,s),p=z9(l,c,d);l.push({keypoints:d,score:p})}}return l}function V9(n,e){return W(function(){var t=ie(n,ue(e,"int32"));return ae(n,M(t,ue(e,"int32")))})}function W9(n){var e=n.shape,t=e[0],s=e[1],r=e[2];return W(function(){var o=z(n,[t*s,r]),a=Qn(o,0),i=pt(ie(a,ue(s,"int32")),1),l=pt(V9(a,s),1);return nt([i,l],1)})}function U9(n,e){for(var t=e.shape[0],s=new Float32Array(t),r=0;r<t;r++){var o=e.get(r,0),a=e.get(r,1);s[r]=n.get(o,a,r)}return s}function G9(n,e,t,s){return{y:s.get(n,e,t),x:s.get(n,e,t+nm)}}function H9(n,e){for(var t=[],s=0;s<nm;s++){var r=G9(n.get(s,0).valueOf(),n.get(s,1).valueOf(),s,e),o=r.x,a=r.y;t.push(a),t.push(o)}return rs(t,[nm,2])}function j9(n,e,t){return W(function(){var s=H9(n,t);return J(te(M(n.toTensor(),ue(e,"int32")),"float32"),s)})}function ek(n,e,t){return Hr(this,void 0,void 0,function(){var s,r,o,a,i,l,u,c,h,d;return jr(this,function(p){switch(p.label){case 0:return s=0,r=W9(n),[4,Promise.all([n.buffer(),e.buffer(),r.buffer()])];case 1:return o=p.sent(),a=o[0],i=o[1],l=o[2],[4,(u=j9(l,t,i)).buffer()];case 2:return c=p.sent(),h=Array.from(U9(a,l)),d=h.map(function(f,g){return s+=f,{position:{y:c.get(g,0),x:c.get(g,1)},part:eu[g],score:f}}),r.dispose(),u.dispose(),[2,{keypoints:d,score:s/d.length}]}})})}var tk="https://storage.googleapis.com/tfjs-models/savedmodel/posenet/mobilenet/",nk="https://storage.googleapis.com/tfjs-models/savedmodel/posenet/resnet50/";function q9(n,e){var t="model-stride"+n+".json";return e===4?nk+"float/"+t:nk+"quant"+e+"/"+t}function K9(n,e,t){var s={1:"100",.75:"075",.5:"050"},r="model-stride"+n+".json";return t===4?tk+"float/"+s[e]+"/"+r:tk+"quant"+t+"/"+s[e]+"/"+r}var X9=[-123.15,-115.9,-103.06],Y9=(function(n){function e(){return n!==null&&n.apply(this,arguments)||this}return VT(e,n),e.prototype.preprocessInput=function(t){return J(t,X9)},e.prototype.nameOutputResults=function(t){var s=t[0],r=t[1];return{offsets:t[2],heatmap:t[3],displacementFwd:s,displacementBwd:r}},e})(WT);function Z9(n,e,t){return n<t||e<t}function J9(n,e){return O9.reduce(function(t,s){var r=s[0],o=s[1];return Z9(n[r].score,n[o].score,e)||t.push([n[r],n[o]]),t},[])}var sk=Number.NEGATIVE_INFINITY,rk=Number.POSITIVE_INFINITY;function ok(n){return n.reduce(function(e,t){var s=e.maxX,r=e.maxY,o=e.minX,a=e.minY,i=t.position,l=i.x,u=i.y;return{maxX:Math.max(s,l),maxY:Math.max(r,u),minX:Math.min(o,l),minY:Math.min(a,u)}},{maxX:sk,maxY:sk,minX:rk,minY:rk})}function Q9(n){var e=ok(n),t=e.minX,s=e.minY,r=e.maxX,o=e.maxY;return[{x:t,y:s},{x:r,y:s},{x:r,y:o},{x:t,y:o}]}function eee(n){return Hr(this,void 0,void 0,function(){return jr(this,function(e){return[2,Promise.all(n.map(function(t){return t.buffer()}))]})})}function ak(n,e,t,s,r){return s===void 0&&(s=0),r===void 0&&(r=0),{score:n.score,keypoints:n.keypoints.map(function(o){var a=o.score,i=o.part,l=o.position;return{score:a,part:i,position:{x:l.x*t+r,y:l.y*e+s}}})}}function tee(n,e,t,s,r){return s===void 0&&(s=0),r===void 0&&(r=0),t===1&&e===1&&s===0&&r===0?n:n.map(function(o){return ak(o,e,t,s,r)})}function nee(n,e){return{score:n.score,keypoints:n.keypoints.map(function(t){var s=t.score,r=t.part,o=t.position;return{score:s,part:r,position:{x:e-1-o.x,y:o.y}}})}}function see(n,e){return e<=0?n:n.map(function(t){return nee(t,e)})}function sm(n,e){return P0(n,e)?n:Math.floor(n/e)*e+1}function ik(n){k(typeof n=="number"||typeof n=="object",function(){return"Invalid inputResolution "+n+". Should be a number or an object with width and height"}),typeof n=="object"&&(k(typeof n.width=="number",function(){return"inputResolution.width has a value of "+n.width+" which is invalid; it must be a number"}),k(typeof n.height=="number",function(){return"inputResolution.height has a value of "+n.height+" which is invalid; it must be a number"}))}function lk(n,e){return ik(n),typeof n=="object"?[sm(n.height,e),sm(n.width,e)]:[sm(n,e),sm(n,e)]}var ree=[8,16,32];function oee(n){k(typeof n=="number",function(){return"outputStride is not a number"}),k(ree.indexOf(n)>=0,function(){return"outputStride of "+n+" is invalid. It must be either 8, 16, or 32"})}function P0(n,e){return(n-1)%e==0}function aee(n,e){k(typeof n[0]=="number"&&typeof n[1]=="number",function(){return"both resolution values must be a number but had values "+n}),k(P0(n[0],e),function(){return"height of "+n[0]+" is invalid for output stride "+e+"."}),k(P0(n[1],e),function(){return"width of "+n[1]+" is invalid for output stride "+e+"."})}function M0(n){return n instanceof Te?[n.shape[0],n.shape[1]]:[n.height,n.width]}function iee(n){return n instanceof Te?n:ly(n)}function uk(n,e){var t=e[0],s=e[1],r=M0(n),o=r[0],a=r[1],i=s/t,l=[0,0,0,0],u=l[0],c=l[1],h=l[2],d=l[3];return a/o<i?(u=0,c=0,h=Math.round(.5*(i*o-a)),d=Math.round(.5*(i*o-a))):(u=Math.round(.5*(1/i*a-o)),c=Math.round(.5*(1/i*a-o)),h=0,d=0),{resized:W(function(){var p=iee(n);return p=Zd(p,[[u,c],[h,d],[0,0]]),vn.resizeBilinear(p,[t,s])}),padding:{top:u,left:h,right:d,bottom:c}}}function z0(n,e,t,s,r){var o=e[0],a=e[1],i=t[0],l=t[1],u=tee(n,(o+s.top+s.bottom)/i,(a+s.left+s.right)/l,-s.top,-s.left);return r?see(u,a):u}var ck={architecture:"MobileNetV1",outputStride:16,multiplier:.75,inputResolution:257},hk=["MobileNetV1","ResNet50"],dk={MobileNetV1:[8,16,32],ResNet50:[32,16]},pk={MobileNetV1:[.5,.75,1],ResNet50:[1]},fk=[1,2,4];function lee(n){if((n=n||ck).architecture==null&&(n.architecture="MobileNetV1"),hk.indexOf(n.architecture)<0)throw new Error("Invalid architecture "+n.architecture+". Should be one of "+hk);if(n.inputResolution==null&&(n.inputResolution=257),ik(n.inputResolution),n.outputStride==null&&(n.outputStride=16),dk[n.architecture].indexOf(n.outputStride)<0)throw new Error("Invalid outputStride "+n.outputStride+". Should be one of "+dk[n.architecture]+" for architecture "+n.architecture+".");if(n.multiplier==null&&(n.multiplier=1),pk[n.architecture].indexOf(n.multiplier)<0)throw new Error("Invalid multiplier "+n.multiplier+". Should be one of "+pk[n.architecture]+" for architecture "+n.architecture+".");if(n.quantBytes==null&&(n.quantBytes=4),fk.indexOf(n.quantBytes)<0)throw new Error("Invalid quantBytes "+n.quantBytes+". Should be one of "+fk+" for architecture "+n.architecture+".");if(n.architecture==="MobileNetV1"&&n.outputStride===32&&n.multiplier!==1)throw new Error("When using an output stride of 32, you must select 1 as the multiplier.");return n}var mk={flipHorizontal:!1},gk={flipHorizontal:!1,maxDetections:5,scoreThreshold:.5,nmsRadius:20};function uee(n){var e=n.maxDetections,t=n.scoreThreshold,s=n.nmsRadius;if(e<=0)throw new Error("Invalid maxDetections "+e+". Should be > 0");if(t<0||t>1)throw new Error("Invalid scoreThreshold "+t+". Should be in range [0.0, 1.0]");if(s<=0)throw new Error("Invalid nmsRadius "+s+".")}var B0=(function(){function n(e,t){oee(e.outputStride),aee(t,e.outputStride),this.baseModel=e,this.inputResolution=t}return n.prototype.estimateMultiplePoses=function(e,t){return t===void 0&&(t=gk),Hr(this,void 0,void 0,function(){var s,r,o,a,i,l,u,c,h,d,p,f,g,y,m,b,w,x,v,$,I;return jr(this,function(E){switch(E.label){case 0:return s=_0({},gk,t),uee(t),r=this.baseModel.outputStride,o=this.inputResolution,a=M0(e),i=a[0],l=a[1],u=uk(e,o),c=u.resized,h=u.padding,d=this.baseModel.predict(c),p=d.heatmapScores,f=d.offsets,g=d.displacementFwd,y=d.displacementBwd,[4,eee([p,f,g,y])];case 1:return m=E.sent(),b=m[0],w=m[1],x=m[2],v=m[3],[4,QT(b,w,x,v,r,s.maxDetections,s.scoreThreshold,s.nmsRadius)];case 2:return $=E.sent(),I=z0($,[i,l],o,h,s.flipHorizontal),p.dispose(),f.dispose(),g.dispose(),y.dispose(),c.dispose(),[2,I]}})})},n.prototype.estimateSinglePose=function(e,t){return t===void 0&&(t=mk),Hr(this,void 0,void 0,function(){var s,r,o,a,i,l,u,c,h,d,p,f,g,y,m,b;return jr(this,function(w){switch(w.label){case 0:return s=_0({},mk,t),r=this.baseModel.outputStride,o=this.inputResolution,a=M0(e),i=a[0],l=a[1],u=uk(e,o),c=u.resized,h=u.padding,d=this.baseModel.predict(c),p=d.heatmapScores,f=d.offsets,g=d.displacementFwd,y=d.displacementBwd,[4,ek(p,f,r)];case 1:return m=w.sent(),b=z0([m],[i,l],o,h,s.flipHorizontal),p.dispose(),f.dispose(),g.dispose(),y.dispose(),c.dispose(),[2,b[0]]}})})},n.prototype.estimatePoses=function(e,t){return Hr(this,void 0,void 0,function(){return jr(this,function(s){switch(s.label){case 0:return t.decodingMethod!=="single-person"?[3,2]:[4,this.estimateSinglePose(e,t)];case 1:return[2,[s.sent()]];case 2:return[2,this.estimateMultiplePoses(e,t)]}})})},n.prototype.dispose=function(){this.baseModel.dispose()},n})();function cee(n){return Hr(this,void 0,void 0,function(){var e,t,s,r,o,a,i;return jr(this,function(l){switch(l.label){case 0:if(e=n.outputStride,t=n.quantBytes,s=n.multiplier,By==null)throw new Error(`Cannot find TensorFlow.js. If you are using a <script> tag, please also include @tensorflow/tfjs on the page before using this
|
|
5000
5000
|
model.`);return r=K9(e,s,t),[4,jx(n.modelUrl||r)];case 1:return o=l.sent(),a=new UT(o,e),i=lk(n.inputResolution,a.outputStride),[2,new B0(a,i)]}})})}function hee(n){return Hr(this,void 0,void 0,function(){var e,t,s,r,o,a;return jr(this,function(i){switch(i.label){case 0:if(e=n.outputStride,t=n.quantBytes,By==null)throw new Error(`Cannot find TensorFlow.js. If you are using a <script> tag, please also include @tensorflow/tfjs on the page before using this
|
|
5001
|
-
model.`);return s=q9(e,t),[4,jx(n.modelUrl||s)];case 1:return r=i.sent(),o=new Y9(r,e),a=lk(n.inputResolution,o.outputStride),[2,new B0(o,a)]}})})}function yk(n){return n===void 0&&(n=ck),Hr(this,void 0,void 0,function(){return jr(this,function(e){return(n=lee(n)).architecture==="ResNet50"?[2,hee(n)]:n.architecture==="MobileNetV1"?[2,cee(n)]:[2,null]})})}var dee="2.2.2";const pee=Object.freeze(Object.defineProperty({__proto__:null,MobileNet:UT,PoseNet:B0,decodeMultiplePoses:QT,decodeSinglePose:ek,getAdjacentKeyPoints:J9,getBoundingBox:ok,getBoundingBoxPoints:Q9,load:yk,partChannels:F9,partIds:Wh,partNames:eu,poseChain:GT,scaleAndFlipPoses:z0,scalePose:ak,version:dee},Symbol.toStringTag,{value:"Module"}));function fee(n){return(...e)=>new Promise((t,s)=>{n(...e,(r,o)=>{r?s(r):t(o)})})}var bk=function(n,e){return(bk=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,s){t.__proto__=s}||function(t,s){for(var r in s)s.hasOwnProperty(r)&&(t[r]=s[r])})(n,e)};function mee(n,e){function t(){this.constructor=n}bk(n,e),n.prototype=e===null?Object.create(e):(t.prototype=e.prototype,new t)}var V0=function(){return(V0=Object.assign||function(n){for(var e,t=1,s=arguments.length;t<s;t++)for(var r in e=arguments[t])Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}).apply(this,arguments)};function Ke(n,e,t,s){return new(t||(t=Promise))(function(r,o){function a(u){try{l(s.next(u))}catch(c){o(c)}}function i(u){try{l(s.throw(u))}catch(c){o(c)}}function l(u){var c;u.done?r(u.value):(c=u.value,c instanceof t?c:new t(function(h){h(c)})).then(a,i)}l((s=s.apply(n,[])).next())})}function Xe(n,e){var t,s,r,o,a={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return o={next:i(0),throw:i(1),return:i(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function i(l){return function(u){return(function(c){if(t)throw new TypeError("Generator is already executing.");for(;a;)try{if(t=1,s&&(r=2&c[0]?s.return:c[0]?s.throw||((r=s.return)&&r.call(s),0):s.next)&&!(r=r.call(s,c[1])).done)return r;switch(s=0,r&&(c=[2&c[0],r.value]),c[0]){case 0:case 1:r=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,s=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!(r=(r=a.trys).length>0&&r[r.length-1])&&(c[0]===6||c[0]===2)){a=0;continue}if(c[0]===3&&(!r||c[1]>r[0]&&c[1]<r[3])){a.label=c[1];break}if(c[0]===6&&a.label<r[1]){a.label=r[1],r=c;break}if(r&&a.label<r[2]){a.label=r[2],a.ops.push(c);break}r[2]&&a.ops.pop(),a.trys.pop();continue}c=e.call(n,a)}catch(h){c=[6,h],s=0}finally{t=r=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}})([l,u])}}}function mn(n){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&n[e],s=0;if(t)return t.call(n);if(n&&typeof n.length=="number")return{next:function(){return n&&s>=n.length&&(n=void 0),{value:n&&n[s++],done:!n}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function W0(n,e){var t=typeof Symbol=="function"&&n[Symbol.iterator];if(!t)return n;var s,r,o=t.call(n),a=[];try{for(;(e===void 0||e-- >0)&&!(s=o.next()).done;)a.push(s.value)}catch(i){r={error:i}}finally{try{s&&!s.done&&(t=o.return)&&t.call(o)}finally{if(r)throw r.error}}return a}function Uh(){for(var n=[],e=0;e<arguments.length;e++)n=n.concat(W0(arguments[e]));return n}function gee(n){return Ke(this,void 0,void 0,function(){var e,t,s,r,o,a,i;return Xe(this,function(l){switch(l.label){case 0:return e="http://",t="https://",s="file://",n.indexOf(e)!==0&&n.indexOf(t)!==0?[3,3]:[4,fetch(n)];case 1:return[4,l.sent().json()];case 2:return[2,l.sent()];case 3:return n.indexOf(s)!==0?[3,5]:(r=require("fs"),o=fee(r.readFile),i=(a=JSON).parse,[4,o(n.slice(s.length),{encoding:"utf-8"})]);case 4:return[2,i.apply(a,[l.sent()])];case 5:throw new Error("Unsupported URL scheme in metadata URL: "+n+". Supported schemes are: http://, https://, and (node.js-only) file://")}})})}var tu=null;function nu(n){return tu==null&&(tu=al().epsilon()),W(function(){var e=$r(n),t=e.mean,s=e.variance;return ie(ae(n,t),J(bt(s),tu))})}function xk(n){if(n.length<2)throw new Error("Cannot normalize a Float32Array with fewer than 2 elements.");return tu==null&&(tu=al().epsilon()),W(function(){var e=$r(it(n)),t=e.mean,s=e.variance,r=t.arraySync(),o=Math.sqrt(s.arraySync()),a=Array.from(n).map(function(i){return(i-r)/(o+tu)});return new Float32Array(a)})}function yee(){return window.AudioContext||window.webkitAudioContext}function bee(n){return Ke(this,void 0,void 0,function(){return Xe(this,function(e){return[2,navigator.mediaDevices.getUserMedia({audio:n==null||n,video:!1})]})})}function xee(n,e){var t=new(window.AudioContext||window.webkitAudioContext),s=t.createBuffer(1,n.data.length,n.sampleRateHz);s.getChannelData(0).set(n.data);var r=t.createBufferSource();r.buffer=s,r.connect(t.destination),r.start(),r.onended=function(){e?.()}}var U0=(function(){function n(e){var t=this;if(e==null)throw new Error("Required configuration object is missing for BrowserFftFeatureExtractor constructor");if(e.spectrogramCallback==null)throw new Error("spectrogramCallback cannot be null or undefined");if(!(e.numFramesPerSpectrogram>0))throw new Error("Invalid value in numFramesPerSpectrogram: "+e.numFramesPerSpectrogram);if(e.suppressionTimeMillis<0)throw new Error("Expected suppressionTimeMillis to be >= 0, but got "+e.suppressionTimeMillis);if(this.suppressionTimeMillis=e.suppressionTimeMillis,this.spectrogramCallback=e.spectrogramCallback,this.numFrames=e.numFramesPerSpectrogram,this.sampleRateHz=e.sampleRateHz||44100,this.fftSize=e.fftSize||1024,this.frameDurationMillis=this.fftSize/this.sampleRateHz*1e3,this.columnTruncateLength=e.columnTruncateLength||this.fftSize,this.overlapFactor=e.overlapFactor,this.includeRawAudio=e.includeRawAudio,k(this.overlapFactor>=0&&this.overlapFactor<1,function(){return"Expected overlapFactor to be >= 0 and < 1, but got "+t.overlapFactor}),this.columnTruncateLength>this.fftSize)throw new Error("columnTruncateLength "+this.columnTruncateLength+" exceeds fftSize ("+this.fftSize+").");this.audioContextConstructor=yee()}return n.prototype.start=function(e){return Ke(this,void 0,void 0,function(){var t,s,r;return Xe(this,function(o){switch(o.label){case 0:if(this.frameIntervalTask!=null)throw new Error("Cannot start already-started BrowserFftFeatureExtractor");return t=this,[4,bee(e)];case 1:return t.stream=o.sent(),this.audioContext=new this.audioContextConstructor({sampleRate:this.sampleRateHz}),s=this.audioContext.createMediaStreamSource(this.stream),this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=2*this.fftSize,this.analyser.smoothingTimeConstant=0,s.connect(this.analyser),this.freqDataQueue=[],this.freqData=new Float32Array(this.fftSize),this.includeRawAudio&&(this.timeDataQueue=[],this.timeData=new Float32Array(this.fftSize)),r=Math.max(1,Math.round(this.numFrames*(1-this.overlapFactor))),this.tracker=new wee(r,Math.round(this.suppressionTimeMillis/this.frameDurationMillis)),this.frameIntervalTask=setInterval(this.onAudioFrame.bind(this),this.fftSize/this.sampleRateHz*1e3),[2]}})})},n.prototype.onAudioFrame=function(){return Ke(this,void 0,void 0,function(){var e,t,s,r;return Xe(this,function(o){switch(o.label){case 0:return this.analyser.getFloatFrequencyData(this.freqData),this.freqData[0]===-1/0?[2]:(this.freqDataQueue.push(this.freqData.slice(0,this.columnTruncateLength)),this.includeRawAudio&&(this.analyser.getFloatTimeDomainData(this.timeData),this.timeDataQueue.push(this.timeData.slice())),this.freqDataQueue.length>this.numFrames&&this.freqDataQueue.shift(),this.tracker.tick()?(e=wk(this.freqDataQueue),t=vk(e,[1,this.numFrames,this.columnTruncateLength,1]),s=void 0,this.includeRawAudio&&(r=wk(this.timeDataQueue),s=vk(r,[1,this.numFrames*this.fftSize])),[4,this.spectrogramCallback(t,s)]):[3,2]);case 1:o.sent()&&this.tracker.suppress(),ge([t,s]),o.label=2;case 2:return[2]}})})},n.prototype.stop=function(){return Ke(this,void 0,void 0,function(){return Xe(this,function(e){if(this.frameIntervalTask==null)throw new Error("Cannot stop because there is no ongoing streaming activity.");return clearInterval(this.frameIntervalTask),this.frameIntervalTask=null,this.analyser.disconnect(),this.audioContext.close(),this.stream!=null&&this.stream.getTracks().length>0&&this.stream.getTracks()[0].stop(),[2]})})},n.prototype.setConfig=function(e){throw new Error("setConfig() is not implemented for BrowserFftFeatureExtractor.")},n.prototype.getFeatures=function(){throw new Error("getFeatures() is not implemented for BrowserFftFeatureExtractor. Use the spectrogramCallback field of the constructor config instead.")},n})();function wk(n){var e=n[0].length,t=new Float32Array(n.length*e);return n.forEach(function(s,r){return t.set(s,r*e)}),t}function vk(n,e){var t=new Float32Array(q(e));return t.set(n,t.length-n.length),Xt(t,e)}var wee=(function(){function n(e,t){var s=this;this.period=e,this.suppressionTime=t??0,this.counter=0,k(this.period>0,function(){return"Expected period to be positive, but got "+s.period})}return n.prototype.tick=function(){return this.counter++,this.counter%this.period==0&&(this.suppressionOnset==null||this.counter-this.suppressionOnset>this.suppressionTime)},n.prototype.suppress=function(){this.suppressionOnset=this.counter},n})();function rm(n){var e=0;n.forEach(function(r){e+=r.byteLength});var t=new Uint8Array(e),s=0;return n.forEach(function(r){t.set(new Uint8Array(r),s),s+=r.byteLength}),t.buffer}function Sk(n){var e=0;n.forEach(function(r){return e+=r.length});var t=new Float32Array(e),s=0;return n.forEach(function(r){t.set(r,s),s+=r.length}),t}function Ik(n){if(n==null)throw new Error("Received null or undefind string");for(var e=unescape(encodeURIComponent(n)),t=new Uint8Array(e.length),s=0;s<e.length;++s)t[s]=e.charCodeAt(s);return t.buffer}function Nk(n){if(n==null)throw new Error("Received null or undefind buffer");var e=new Uint8Array(n);return decodeURIComponent(escape(String.fromCharCode.apply(String,Uh(e))))}function vee(){function n(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return n()+n()+"-"+n()+"-"+n()+"-"+n()+"-"+n()+n()+n()}function See(n,e){return Math.floor((e-n)*Math.random())+n}function Iee(n,e,t){return k(t>0&&t<1,function(){return"validationSplit is expected to be >0 and <1, but got "+t}),W(function(){for(var s=Qn(e,-1).dataSync(),r=[],o=0;o<s.length;++o){var a=s[o];r[a]==null&&(r[a]=[]),r[a].push(o)}var i=r.length,l=[],u=[];for(r.map(function(p){return Qr(p)}),o=0;o<i;++o)for(var c=r[o],h=Math.round(c.length*(1-t)),d=0;d<c.length;++d)d<h?l.push(c[d]):u.push(c[d]);return{trainXs:ts(n,l),trainYs:ts(e,l),valXs:ts(n,u),valYs:ts(e,u)}})}function Nee(n,e,t){var s,r,o,a,i,l,u,c;k(t>0&&t<1,function(){return"validationSplit is expected to be >0 and <1, but got "+t});for(var h=!Array.isArray(n[0]),d=e,p=[],f=0;f<d.length;++f){var g=d[f];p[g]==null&&(p[g]=[]),p[g].push(f)}var y=p.length,m=[],b=[];for(p.map(function(H){return Qr(H)}),f=0;f<y;++f)for(var w=p[f],x=Math.round(w.length*(1-t)),v=0;v<w.length;++v)v<x?m.push(w[v]):b.push(w[v]);if(h){var $=[],I=[],E=[],C=[];try{for(var T=mn(m),S=T.next();!S.done;S=T.next()){var A=S.value;$.push(n[A]),I.push(e[A])}}catch(H){s={error:H}}finally{try{S&&!S.done&&(r=T.return)&&r.call(T)}finally{if(s)throw s.error}}try{for(var D=mn(b),O=D.next();!O.done;O=D.next())A=O.value,E.push(n[A]),C.push(e[A])}catch(H){o={error:H}}finally{try{O&&!O.done&&(a=D.return)&&a.call(D)}finally{if(o)throw o.error}}return{trainXs:$,trainYs:I,valXs:E,valYs:C}}$=[],I=[],E=[],C=[];try{for(var F=mn(m),_=F.next();!_.done;_=F.next())A=_.value,$.push(n[A]),I.push(e[A])}catch(H){i={error:H}}finally{try{_&&!_.done&&(l=F.return)&&l.call(F)}finally{if(i)throw i.error}}try{for(var B=mn(b),U=B.next();!U.done;U=B.next())A=U.value,E.push(n[A]),C.push(e[A])}catch(H){u={error:H}}finally{try{U&&!U.done&&(c=B.return)&&c.call(B)}finally{if(u)throw u.error}}return{trainXs:$,trainYs:I,valXs:E,valYs:C}}var om="TFJSSCDS",$ee=1,Ha="_background_noise_",G0=(function(){function n(e){if(this.examples={},this.label2Ids={},e!=null)for(var t=Eee(e),s=0,r=0;r<t.manifest.length;++r){var o=t.manifest[r],a=o.spectrogramNumFrames*o.spectrogramFrameSize;o.rawAudioNumSamples!=null&&(a+=o.rawAudioNumSamples),a*=4,this.addExample(Tee({spec:o,data:t.data.slice(s,s+a)})),s+=a}}return n.prototype.addExample=function(e){k(e!=null,function(){return"Got null or undefined example"}),k(e.label!=null&&e.label.length>0,function(){return"Expected label to be a non-empty string, but got "+JSON.stringify(e.label)});var t=vee();return this.examples[t]=e,e.label in this.label2Ids||(this.label2Ids[e.label]=[]),this.label2Ids[e.label].push(t),t},n.prototype.merge=function(e){var t,s,r,o;k(e!==this,function(){return"Cannot merge a dataset into itself"});var a=e.getVocabulary();try{for(var i=mn(a),l=i.next();!l.done;l=i.next()){var u=l.value,c=e.getExamples(u);try{for(var h=(r=void 0,mn(c)),d=h.next();!d.done;d=h.next()){var p=d.value;this.addExample(p.example)}}catch(f){r={error:f}}finally{try{d&&!d.done&&(o=h.return)&&o.call(h)}finally{if(r)throw r.error}}}}catch(f){t={error:f}}finally{try{l&&!l.done&&(s=i.return)&&s.call(i)}finally{if(t)throw t.error}}},n.prototype.getExampleCounts=function(){var e={};for(var t in this.examples){var s=this.examples[t];s.label in e||(e[s.label]=0),e[s.label]++}return e},n.prototype.getExamples=function(e){var t=this;k(e!=null,function(){return"Expected label to be a string, but got "+JSON.stringify(e)}),k(e in this.label2Ids,function(){return'No example of label "'+e+'" exists in dataset'});var s=[];return this.label2Ids[e].forEach(function(r){s.push({uid:r,example:t.examples[r]})}),s},n.prototype.getData=function(e,t){var s=this;k(this.size()>0,function(){return"Cannot get spectrograms as tensors because the dataset is empty"});var r=this.getVocabulary();e!=null?k(r.indexOf(e)!==-1,function(){return"Label "+e+" is not in the vocabulary ("+JSON.stringify(r)+")"}):k(r.length>1,function(){return"One-hot encoding of labels requires the vocabulary to have at least two words, but it has only "+r.length+" word."}),t==null&&(t={});var o,a,i=this.getSortedUniqueNumFrames();i.length===1?(o=t.numFrames==null?i[0]:t.numFrames,a=t.hopFrames==null?1:t.hopFrames):(o=t.numFrames,k(o!=null&&Number.isInteger(o)&&o>0,function(){return"There are "+i.length+" unique lengths among the "+s.size()+" examples of this Dataset, hence numFrames is required. But it is not provided."}),k(o<=i[0],function(){return"numFrames ("+o+") exceeds the minimum numFrames ("+i[0]+") among the examples of the Dataset."}),a=t.hopFrames,k(a!=null&&Number.isInteger(a)&&a>0,function(){return"There are "+i.length+" unique lengths among the "+s.size()+" examples of this Dataset, hence hopFrames is required. But it is not provided."}));var l=t.normalize==null||t.normalize;return W(function(){for(var u,c,h,d=[],p=[],f=[],g=0;g<r.length;++g){var y=r[g];if(e==null||y===e){var m=s.label2Ids[y],b=function(K){var ee,ne,re=s.examples[K].spectrogram,de=re.frameSize;h==null?h=de:k(de===h,function(){return"Mismatch in frameSize ("+de+" vs "+h+")"});var me=re.data.length/de,fe=null;y!==Ha&&(fe=re.keyFrameIndex==null?Ck(re).dataSync()[0]:re.keyFrameIndex);var xe=xa(re.data,[me,de,1]),Se=Aee(me,fe,o,a),Oe=function(_e){var Le=W(function(){var je=ke(xe,[_e[0],0,0],[_e[1]-_e[0],-1,-1]);return l?nu(je):je});t.getDataset?p.push(Le.dataSync()):d.push(Le),e==null&&f.push(g)};try{for(var Fe=(ee=void 0,mn(Se)),Ve=Fe.next();!Ve.done;Ve=Fe.next())Oe(Ve.value)}catch(_e){ee={error:_e}}finally{try{Ve&&!Ve.done&&(ne=Fe.return)&&ne.call(Fe)}finally{if(ee)throw ee.error}}ge(xe)};try{for(var w=(u=void 0,mn(m)),x=w.next();!x.done;x=w.next())b(x.value)}catch(K){u={error:K}}finally{try{x&&!x.done&&(c=w.return)&&c.call(w)}finally{if(u)throw u.error}}}}t.augmentByMixingNoiseRatio!=null&&s.augmentByMixingNoise(t.getDataset?p:d,f,t.augmentByMixingNoiseRatio);var v=t.shuffle==null||t.shuffle;if(t.getDataset){var $=t.datasetBatchSize==null?32:t.datasetBatchSize,I=t.datasetValidationSplit==null?.15:t.datasetValidationSplit;k(I>0&&I<1,function(){return"Invalid dataset validation split: "+I});var E=p.map(function(K,ee){return[K,f[ee]]});Qr(E),p=E.map(function(K){return K[0]});var C=E.map(function(K){return K[1]}),T=Nee(p,C,I),S=T.trainXs,A=T.trainYs,D=T.valXs,O=T.valYs,F=Sh(S).map(function(K){return xa(K,[o,h,1])}),_=Sh(A).map(function(K){return Vn(Ts([K],r.length),[0])}),B=Xx({xs:F,ys:_});v&&(B=B.shuffle(p.length)),B=B.batch($).prefetch(4);var U=Sh(D).map(function(K){return xa(K,[o,h,1])}),H=Sh(O).map(function(K){return Vn(Ts([K],r.length),[0])}),G=Xx({xs:U,ys:H});return[B,G=G.batch($).prefetch(4)]}if(v){var X=[];d.forEach(function(K,ee){X.push({x:K,y:f[ee]})}),Qr(X),d=X.map(function(K){return K.x}),f=X.map(function(K){return K.y})}var Z=e==null?te(Ts(it(f,"int32"),r.length),"float32"):void 0;return{xs:Pt(d),ys:Z}})},n.prototype.augmentByMixingNoise=function(e,t,s){var r,o;if(e==null||e.length===0)throw new Error("Cannot perform augmentation because data is null or empty");for(var a=e[0]instanceof Float32Array,i=this.getVocabulary(),l=[],u=[],c=0;c<t.length;++c)i[t[c]]===Ha?l.push(c):u.push(c);if(l.length===0)throw new Error("Cannot perform augmentation by mixing with noise when there is no example with label "+Ha);var h=[],d=[],p=function(y){var m=l[See(0,l.length)],b=a?it(e[y]):e[y],w=a?it(e[m]):e[m],x=W(function(){return nu(J(b,M(w,s)))});a?h.push(x.dataSync()):h.push(x),d.push(t[y])};try{for(var f=mn(u),g=f.next();!g.done;g=f.next())p(g.value)}catch(y){r={error:y}}finally{try{g&&!g.done&&(o=f.return)&&o.call(f)}finally{if(r)throw r.error}}console.log("Data augmentation: mixing noise: added "+h.length+" examples"),h.forEach(function(y){return e.push(y)}),t.push.apply(t,Uh(d))},n.prototype.getSortedUniqueNumFrames=function(){for(var e,t,s=new Set,r=this.getVocabulary(),o=0;o<r.length;++o){var a=r[o],i=this.label2Ids[a];try{for(var l=(e=void 0,mn(i)),u=l.next();!u.done;u=l.next()){var c=u.value,h=this.examples[c].spectrogram,d=h.data.length/h.frameSize;s.add(d)}}catch(f){e={error:f}}finally{try{u&&!u.done&&(t=l.return)&&t.call(l)}finally{if(e)throw e.error}}}var p=Uh(s);return p.sort(),p},n.prototype.removeExample=function(e){if(!(e in this.examples))throw new Error("Nonexistent example UID: "+e);var t=this.examples[e].label;delete this.examples[e];var s=this.label2Ids[t].indexOf(e);this.label2Ids[t].splice(s,1),this.label2Ids[t].length===0&&delete this.label2Ids[t]},n.prototype.setExampleKeyFrameIndex=function(e,t){if(!(e in this.examples))throw new Error("Nonexistent example UID: "+e);var s=this.examples[e].spectrogram,r=s.data.length/s.frameSize;k(t>=0&&t<r&&Number.isInteger(t),function(){return"Invalid keyFrameIndex: "+t+". Must be >= 0, < "+r+", and an integer."}),s.keyFrameIndex=t},n.prototype.size=function(){return Object.keys(this.examples).length},n.prototype.durationMillis=function(){var e=0;for(var t in this.examples){var s=this.examples[t].spectrogram,r=23.22|s.frameDurationMillis;e+=s.data.length/s.frameSize*r}return e},n.prototype.empty=function(){return this.size()===0},n.prototype.clear=function(){this.examples={}},n.prototype.getVocabulary=function(){var e=new Set;for(var t in this.examples){var s=this.examples[t];e.add(s.label)}var r=Uh(e);return r.sort(),r},n.prototype.serialize=function(e){var t,s,r,o,a=this.getVocabulary();k(!this.empty(),function(){return"Cannot serialize empty Dataset"}),e!=null&&(Array.isArray(e)||(e=[e]),e.forEach(function(m){if(a.indexOf(m)===-1)throw new Error('Word label "'+m+'" does not exist in the vocabulary of this dataset. The vocabulary is: '+JSON.stringify(a)+".")}));var i=[],l=[];try{for(var u=mn(a),c=u.next();!c.done;c=u.next()){var h=c.value;if(e==null||e.indexOf(h)!==-1){var d=this.label2Ids[h];try{for(var p=(r=void 0,mn(d)),f=p.next();!f.done;f=p.next()){var g=f.value,y=Cee(this.examples[g]);i.push(y.spec),l.push(y.data)}}catch(m){r={error:m}}finally{try{f&&!f.done&&(o=p.return)&&o.call(p)}finally{if(r)throw r.error}}}}}catch(m){t={error:m}}finally{try{c&&!c.done&&(s=u.return)&&s.call(u)}finally{if(t)throw t.error}}return kee({manifest:i,data:rm(l)})},n})();function Cee(n){var e=n.rawAudio!=null,t={label:n.label,spectrogramNumFrames:n.spectrogram.data.length/n.spectrogram.frameSize,spectrogramFrameSize:n.spectrogram.frameSize};n.spectrogram.keyFrameIndex!=null&&(t.spectrogramKeyFrameIndex=n.spectrogram.keyFrameIndex);var s=n.spectrogram.data.buffer.slice(0);return e&&(t.rawAudioNumSamples=n.rawAudio.data.length,t.rawAudioSampleRateHz=n.rawAudio.sampleRateHz,s=rm([s,n.rawAudio.data.buffer])),{spec:t,data:s}}function Tee(n){var e={frameSize:n.spec.spectrogramFrameSize,data:new Float32Array(n.data.slice(0,4*n.spec.spectrogramFrameSize*n.spec.spectrogramNumFrames))};n.spec.spectrogramKeyFrameIndex!=null&&(e.keyFrameIndex=n.spec.spectrogramKeyFrameIndex);var t={label:n.spec.label,spectrogram:e};return n.spec.rawAudioNumSamples!=null&&(t.rawAudio={sampleRateHz:n.spec.rawAudioSampleRateHz,data:new Float32Array(n.data.slice(4*n.spec.spectrogramFrameSize*n.spec.spectrogramNumFrames))}),t}function kee(n){var e=Ik(JSON.stringify(n.manifest)),t=Ik(om),s=new Uint32Array([$ee]),r=new Uint32Array([e.byteLength]);return rm([rm([t,s.buffer,r.buffer]),e,n.data])}function Eee(n){k(n!=null,function(){return"Received null or undefined buffer"});var e=0,t=Nk(n.slice(e,om.length));k(t===om,function(){return"Deserialization error: Invalid descriptor"}),e+=om.length,e+=4;var s=new Uint32Array(n,e,1),r=e+=4;e=r+s[0];var o=Nk(n.slice(r,e));return{manifest:JSON.parse(o),data:n.slice(e)}}function Aee(n,e,t,s){if(k(Number.isInteger(n)&&n>0,function(){return"snippetLength must be a positive integer, but got "+n}),e!=null&&k(Number.isInteger(e)&&e>=0,function(){return"focusIndex must be a non-negative integer, but got "+e}),k(Number.isInteger(t)&&t>0,function(){return"windowLength must be a positive integer, but got "+t}),k(Number.isInteger(s)&&s>0,function(){return"windowHop must be a positive integer, but got "+s}),k(t<=n,function(){return"windowLength ("+t+") exceeds snippetLength ("+n+")"}),k(e<n,function(){return"focusIndex ("+e+") equals or exceeds snippetLength ("+n+")"}),t===n)return[[0,n]];var r=[];if(e==null){for(var o=0;o+t<=n;)r.push([o,o+t]),o+=s;return r}var a=Math.floor(t/2),i=e-a;for(i<0?i=0:i+t>n&&(i=n-t);!(i-s<0||e>=i-s+t);)i-=s;for(;i+t<=n&&!(e<i);)r.push([i,i+t]),i+=s;return r}function $k(n){return W(function(){var e=n.data.length/n.frameSize,t=rs(n.data,[e,n.frameSize]);return qe(t,-1)})}function Ck(n){return W(function(){return Qn($k(n))})}var H0="0.5.4",Tk="_unknown_",Gh="tfjs-speech-commands-saved-model-metadata",j0="indexeddb://tfjs-speech-commands-model/",Hh={localStorage:typeof window>"u"?null:window.localStorage};function Ree(n){return n.split(".").slice(0,2).join(".")}var am=.25,kk=(function(){function n(e,t,s){this.MODEL_URL_PREFIX="https://storage.googleapis.com/tfjs-models/tfjs/speech-commands/v"+Ree(H0)+"/browser_fft",this.SAMPLE_RATE_HZ=44100,this.FFT_SIZE=1024,this.DEFAULT_SUPPRESSION_TIME_MILLIS=0,this.streaming=!1,this.transferRecognizers={},k(t==null&&s==null||t!=null&&s!=null,function(){return"modelURL and metadataURL must be both provided or both not provided."}),t==null?(e==null?e=n.DEFAULT_VOCABULARY_NAME:k(n.VALID_VOCABULARY_NAMES.indexOf(e)!==-1,function(){return"Invalid vocabulary name: '"+e+"'"}),this.vocabulary=e,this.modelArtifactsOrURL=this.MODEL_URL_PREFIX+"/"+this.vocabulary+"/model.json",this.metadataOrURL=this.MODEL_URL_PREFIX+"/"+this.vocabulary+"/metadata.json"):(k(e==null,function(){return"vocabulary name must be null or undefined when modelURL is provided"}),this.modelArtifactsOrURL=t,this.metadataOrURL=s),this.parameters={sampleRateHz:this.SAMPLE_RATE_HZ,fftSize:this.FFT_SIZE}}return n.prototype.listen=function(e,t){return Ke(this,void 0,void 0,function(){var s,r,o,a,i,l=this;return Xe(this,function(u){switch(u.label){case 0:if(this.streaming)throw new Error("Cannot start streaming again when streaming is ongoing.");return[4,this.ensureModelLoaded()];case 1:if(u.sent(),t==null&&(t={}),s=t.probabilityThreshold==null?0:t.probabilityThreshold,t.includeEmbedding&&(s=0),k(s>=0&&s<=1,function(){return"Invalid probabilityThreshold value: "+s}),r=t.invokeCallbackOnNoiseAndUnknown!=null&&t.invokeCallbackOnNoiseAndUnknown,t.includeEmbedding&&(r=!0),t.suppressionTimeMillis<0)throw new Error("suppressionTimeMillis is expected to be >= 0, but got "+t.suppressionTimeMillis);return o=t.overlapFactor==null?.5:t.overlapFactor,k(o>=0&&o<1,function(){return"Expected overlapFactor to be >= 0 and < 1, but got "+o}),a=function(c,h){return Ke(l,void 0,void 0,function(){var d,p,f,g,y,m,b,w,x,v,$;return Xe(this,function(I){switch(I.label){case 0:return d=nu(c),t.includeEmbedding?[4,this.ensureModelWithEmbeddingOutputCreated()]:[3,2];case 1:return I.sent(),$=W0(this.modelWithEmbeddingOutput.predict(d),2),p=$[0],f=$[1],[3,3];case 2:p=this.model.predict(d),I.label=3;case 3:return[4,p.data()];case 4:return g=I.sent(),[4,(y=p.argMax(-1)).data()];case 5:return m=I.sent()[0],b=Math.max.apply(Math,Uh(g)),ge([p,y,d]),b<s?[2,!1]:[3,6];case 6:return w=void 0,t.includeSpectrogram?(x={},[4,c.data()]):[3,8];case 7:x.data=I.sent(),x.frameSize=this.nonBatchInputShape[1],w=x,I.label=8;case 8:return v=!0,r||this.words[m]!==Ha&&this.words[m]!==Tk||(v=!1),v&&e({scores:g,spectrogram:w,embedding:f}),[2,v]}})})},i=t.suppressionTimeMillis==null?this.DEFAULT_SUPPRESSION_TIME_MILLIS:t.suppressionTimeMillis,this.audioDataExtractor=new U0({sampleRateHz:this.parameters.sampleRateHz,numFramesPerSpectrogram:this.nonBatchInputShape[0],columnTruncateLength:this.nonBatchInputShape[1],suppressionTimeMillis:i,spectrogramCallback:a,overlapFactor:o}),[4,this.audioDataExtractor.start(t.audioTrackConstraints)];case 2:return u.sent(),this.streaming=!0,[2]}})})},n.prototype.ensureModelLoaded=function(){return Ke(this,void 0,void 0,function(){var e,t,s,r,o=this;return Xe(this,function(a){switch(a.label){case 0:return this.model!=null?[2]:[4,this.ensureMetadataLoaded()];case 1:return a.sent(),typeof this.modelArtifactsOrURL!="string"?[3,3]:[4,fh(this.modelArtifactsOrURL)];case 2:return e=a.sent(),[3,5];case 3:return[4,fh(hv(this.modelArtifactsOrURL.modelTopology,this.modelArtifactsOrURL.weightSpecs,this.modelArtifactsOrURL.weightData))];case 4:e=a.sent(),a.label=5;case 5:if(e.inputs.length!==1)throw new Error("Expected model to have 1 input, but got a model with "+e.inputs.length+" inputs");if(e.inputs[0].shape.length!==4)throw new Error("Expected model to have an input shape of rank 4, but got an input shape of rank "+e.inputs[0].shape.length);if(e.inputs[0].shape[3]!==1)throw new Error("Expected model to have an input shape with 1 as the last dimension, but got input shape"+JSON.stringify(e.inputs[0].shape[3])+"}");if((t=e.outputShape).length!==2)throw new Error("Expected loaded model to have an output shape of rank 2,but received shape "+JSON.stringify(t));if(t[1]!==this.words.length)throw new Error("Mismatch between the last dimension of model's output shape ("+t[1]+") and number of words ("+this.words.length+").");return this.model=e,this.freezeModel(),this.nonBatchInputShape=e.inputs[0].shape.slice(1),this.elementsPerExample=1,e.inputs[0].shape.slice(1).forEach(function(i){return o.elementsPerExample*=i}),this.warmUpModel(),s=this.parameters.fftSize/this.parameters.sampleRateHz*1e3,r=e.inputs[0].shape[1],this.parameters.spectrogramDurationMillis=r*s,[2]}})})},n.prototype.ensureModelWithEmbeddingOutputCreated=function(){return Ke(this,void 0,void 0,function(){var e,t;return Xe(this,function(s){switch(s.label){case 0:return this.modelWithEmbeddingOutput!=null?[2]:[4,this.ensureModelLoaded()];case 1:for(s.sent(),t=this.model.layers.length-2;t>=0;--t)if(this.model.layers[t].getClassName()==="Dense"){e=this.model.layers[t];break}if(e==null)throw new Error("Failed to find second last dense layer in the original model.");return this.modelWithEmbeddingOutput=Sb({inputs:this.model.inputs,outputs:[this.model.outputs[0],e.output]}),[2]}})})},n.prototype.warmUpModel=function(){var e=this;W(function(){for(var t=at([1].concat(e.nonBatchInputShape)),s=0;s<3;++s)e.model.predict(t)})},n.prototype.ensureMetadataLoaded=function(){return Ke(this,void 0,void 0,function(){var e,t,s;return Xe(this,function(r){switch(r.label){case 0:return this.words!=null?[2]:typeof this.metadataOrURL!="string"?[3,2]:[4,gee(this.metadataOrURL)];case 1:return t=r.sent(),[3,3];case 2:t=this.metadataOrURL,r.label=3;case 3:if((e=t).wordLabels==null){if((s=e.words)==null)throw new Error('Cannot find field "words" or "wordLabels" in metadata JSON file');this.words=s}else this.words=e.wordLabels;return[2]}})})},n.prototype.stopListening=function(){return Ke(this,void 0,void 0,function(){return Xe(this,function(e){switch(e.label){case 0:if(!this.streaming)throw new Error("Cannot stop streaming when streaming is not ongoing.");return[4,this.audioDataExtractor.stop()];case 1:return e.sent(),this.streaming=!1,[2]}})})},n.prototype.isListening=function(){return this.streaming},n.prototype.wordLabels=function(){return this.words},n.prototype.params=function(){return this.parameters},n.prototype.modelInputShape=function(){if(this.model==null)throw new Error("Model has not been loaded yet. Load model by calling ensureModelLoaded(), recognize(), or listen().");return this.model.inputs[0].shape},n.prototype.recognize=function(e,t){return Ke(this,void 0,void 0,function(){var s,r,o,a,i,l,u,c,h,d,p,f,g;return Xe(this,function(y){switch(y.label){case 0:return t==null&&(t={}),[4,this.ensureModelLoaded()];case 1:return y.sent(),e!=null?[3,3]:[4,this.recognizeOnline()];case 2:s=y.sent(),e=s.data,y.label=3;case 3:if(e instanceof Te)this.checkInputTensorShape(e),o=e,r=e.shape[0];else{if(e.length%this.elementsPerExample)throw new Error("The length of the input Float32Array "+e.length+" is not divisible by the number of tensor elements per per example expected by the model "+this.elementsPerExample+".");r=e.length/this.elementsPerExample,o=hp(e,[r].concat(this.nonBatchInputShape))}return i={scores:null},t.includeEmbedding?[4,this.ensureModelWithEmbeddingOutputCreated()]:[3,5];case 4:return y.sent(),l=this.modelWithEmbeddingOutput.predict(o),a=l[0],i.embedding=l[1],[3,6];case 5:a=this.model.predict(o),y.label=6;case 6:return r!==1?[3,8]:(u=i,[4,a.data()]);case 7:return u.scores=y.sent(),[3,10];case 8:return c=hn(a),h=c.map(function(m){return m.data()}),d=i,[4,Promise.all(h)];case 9:d.scores=y.sent(),ge(c),y.label=10;case 10:return t.includeSpectrogram?(p=i,f={},e instanceof Te?[4,e.data()]:[3,12]):[3,14];case 11:return g=y.sent(),[3,13];case 12:g=e,y.label=13;case 13:p.spectrogram=(f.data=g,f.frameSize=this.nonBatchInputShape[1],f),y.label=14;case 14:return ge(a),[2,i]}})})},n.prototype.recognizeOnline=function(){return Ke(this,void 0,void 0,function(){var e=this;return Xe(this,function(t){return[2,new Promise(function(s,r){e.audioDataExtractor=new U0({sampleRateHz:e.parameters.sampleRateHz,numFramesPerSpectrogram:e.nonBatchInputShape[0],columnTruncateLength:e.nonBatchInputShape[1],suppressionTimeMillis:0,spectrogramCallback:function(o){return Ke(e,void 0,void 0,function(){var a,i,l;return Xe(this,function(u){switch(u.label){case 0:return a=nu(o),[4,this.audioDataExtractor.stop()];case 1:return u.sent(),i=s,l={},[4,a.data()];case 2:return i.apply(void 0,[(l.data=u.sent(),l.frameSize=this.nonBatchInputShape[1],l)]),a.dispose(),[2,!1]}})})},overlapFactor:0}),e.audioDataExtractor.start()})]})})},n.prototype.createTransfer=function(e){if(this.model==null)throw new Error("Model has not been loaded yet. Load model by calling ensureModelLoaded(), recognizer(), or listen().");k(e!=null&&typeof e=="string"&&e.length>1,function(){return"Expected the name for a transfer-learning recognized to be a non-empty string, but got "+JSON.stringify(e)}),k(this.transferRecognizers[e]==null,function(){return"There is already a transfer-learning model named '"+e+"'"});var t=new Dee(e,this.parameters,this.model);return this.transferRecognizers[e]=t,t},n.prototype.freezeModel=function(){var e,t;try{for(var s=mn(this.model.layers),r=s.next();!r.done;r=s.next())r.value.trainable=!1}catch(o){e={error:o}}finally{try{r&&!r.done&&(t=s.return)&&t.call(s)}finally{if(e)throw e.error}}},n.prototype.checkInputTensorShape=function(e){var t=this.model.inputs[0].shape.length;if(e.shape.length!==t)throw new Error("Expected input Tensor to have rank "+t+", but got rank "+e.shape.length+" that differs ");var s=e.shape.slice(1),r=this.model.inputs[0].shape.slice(1);if(!Ce(s,r))throw new Error("Expected input to have shape [null,"+r+"], but got shape [null,"+s+"]")},n.VALID_VOCABULARY_NAMES=["18w","directional4w"],n.DEFAULT_VOCABULARY_NAME="18w",n})(),Dee=(function(n){function e(t,s,r){var o=n.call(this)||this;return o.name=t,o.parameters=s,o.baseModel=r,k(t!=null&&typeof t=="string"&&t.length>0,function(){return"The name of a transfer model must be a non-empty string, but got "+JSON.stringify(t)}),o.nonBatchInputShape=o.baseModel.inputs[0].shape.slice(1),o.words=null,o.dataset=new G0,o}return mee(e,n),e.prototype.collectExample=function(t,s){return Ke(this,void 0,void 0,function(){var r,o,a,i,l=this;return Xe(this,function(u){if(k(!this.streaming,function(){return"Cannot start collection of transfer-learning example because a streaming recognition or transfer-learning example collection is ongoing"}),k(t!=null&&typeof t=="string"&&t.length>0,function(){return"Must provide a non-empty string when collecting transfer-learning example"}),s==null&&(s={}),s.durationMultiplier!=null&&s.durationSec!=null)throw new Error("durationMultiplier and durationSec are mutually exclusive, but are both specified.");return s.durationSec!=null?(k(s.durationSec>0,function(){return"Expected durationSec to be > 0, but got "+s.durationSec}),o=this.parameters.fftSize/this.parameters.sampleRateHz,r=Math.ceil(s.durationSec/o)):s.durationMultiplier!=null?(k(s.durationMultiplier>=1,function(){return"Expected duration multiplier to be >= 1, but got "+s.durationMultiplier}),r=Math.round(this.nonBatchInputShape[0]*s.durationMultiplier)):r=this.nonBatchInputShape[0],s.snippetDurationSec!=null&&(k(s.snippetDurationSec>0,function(){return"snippetDurationSec is expected to be > 0, but got "+s.snippetDurationSec}),k(s.onSnippet!=null,function(){return"onSnippet must be provided if snippetDurationSec is provided."})),s.onSnippet!=null&&k(s.snippetDurationSec!=null,function(){return"snippetDurationSec must be provided if onSnippet is provided."}),a=this.parameters.fftSize/this.parameters.sampleRateHz,i=a*r,this.streaming=!0,[2,new Promise(function(c){var h=s.snippetDurationSec==null?1:s.snippetDurationSec/i,d=1-h,p=Math.round(1/h),f=0,g=-1,y=[];l.audioDataExtractor=new U0({sampleRateHz:l.parameters.sampleRateHz,numFramesPerSpectrogram:r,columnTruncateLength:l.nonBatchInputShape[1],suppressionTimeMillis:0,spectrogramCallback:function(m,b){return Ke(l,void 0,void 0,function(){var w,x,v,$,I,E,C,T,S,A,D,O,F,_,B,U,H,G,X,Z;return Xe(this,function(K){switch(K.label){case 0:return s.onSnippet!=null?[3,7]:(w=nu(m),v=(x=this.dataset).addExample,$={label:t},I={},[4,w.data()]);case 1:return $.spectrogram=(I.data=K.sent(),I.frameSize=this.nonBatchInputShape[1],I),s.includeRawAudio?(C={},[4,b.data()]):[3,3];case 2:return C.data=K.sent(),C.sampleRateHz=this.audioDataExtractor.sampleRateHz,E=C,[3,4];case 3:E=void 0,K.label=4;case 4:return v.apply(x,[($.rawAudio=E,$)]),w.dispose(),[4,this.audioDataExtractor.stop()];case 5:return K.sent(),this.streaming=!1,this.collateTransferWords(),T=c,S={},[4,m.data()];case 6:return T.apply(void 0,[(S.data=K.sent(),S.frameSize=this.nonBatchInputShape[1],S)]),[3,13];case 7:return[4,m.data()];case 8:for(A=K.sent(),g===-1&&(g=A.length),D=g-1;A[D]!==0&&D>=0;)D--;return O=g-D-1,g=D+1,F=A.slice(A.length-O,A.length),y.push(F),s.onSnippet!=null&&s.onSnippet({data:F,frameSize:this.nonBatchInputShape[1]}),f++!==p?[3,13]:[4,this.audioDataExtractor.stop()];case 9:return K.sent(),this.streaming=!1,this.collateTransferWords(),_=xk(Sk(y)),B={data:_,frameSize:this.nonBatchInputShape[1]},H=(U=this.dataset).addExample,G={label:t,spectrogram:B},s.includeRawAudio?(Z={},[4,b.data()]):[3,11];case 10:return Z.data=K.sent(),Z.sampleRateHz=this.audioDataExtractor.sampleRateHz,X=Z,[3,12];case 11:X=void 0,K.label=12;case 12:H.apply(U,[(G.rawAudio=X,G)]),c(B),K.label=13;case 13:return[2,!1]}})})},overlapFactor:d,includeRawAudio:s.includeRawAudio}),l.audioDataExtractor.start(s.audioTrackConstraints)})]})})},e.prototype.clearExamples=function(){var t=this;k(this.words!=null&&this.words.length>0&&!this.dataset.empty(),function(){return"No transfer learning examples exist for model name "+t.name}),this.dataset.clear(),this.words=null},e.prototype.countExamples=function(){if(this.dataset.empty())throw new Error("No examples have been collected for transfer-learning model named '"+this.name+"' yet.");return this.dataset.getExampleCounts()},e.prototype.getExamples=function(t){return this.dataset.getExamples(t)},e.prototype.setExampleKeyFrameIndex=function(t,s){this.dataset.setExampleKeyFrameIndex(t,s)},e.prototype.removeExample=function(t){this.dataset.removeExample(t),this.collateTransferWords()},e.prototype.isDatasetEmpty=function(){return this.dataset.empty()},e.prototype.loadExamples=function(t,s){var r,o,a,i;s===void 0&&(s=!1);var l=new G0(t);s&&this.clearExamples();var u=l.getVocabulary();try{for(var c=mn(u),h=c.next();!h.done;h=c.next()){var d=h.value,p=l.getExamples(d);try{for(var f=(a=void 0,mn(p)),g=f.next();!g.done;g=f.next()){var y=g.value;this.dataset.addExample(y.example)}}catch(m){a={error:m}}finally{try{g&&!g.done&&(i=f.return)&&i.call(f)}finally{if(a)throw a.error}}}}catch(m){r={error:m}}finally{try{h&&!h.done&&(o=c.return)&&o.call(c)}finally{if(r)throw r.error}}this.collateTransferWords()},e.prototype.serializeExamples=function(t){return this.dataset.serialize(t)},e.prototype.collateTransferWords=function(){this.words=this.dataset.getVocabulary()},e.prototype.collectTransferDataAsTensors=function(t,s){var r=this.nonBatchInputShape[0];t=t||am;var o=Math.round(t*r),a=this.dataset.getData(null,V0({numFrames:r,hopFrames:o},s));return{xs:a.xs,ys:a.ys}},e.prototype.collectTransferDataAsTfDataset=function(t,s,r,o){s===void 0&&(s=.15),r===void 0&&(r=32);var a=this.nonBatchInputShape[0];t=t||am;var i=Math.round(t*a);return this.dataset.getData(null,V0({numFrames:a,hopFrames:i,getDataset:!0,datasetBatchSize:r,datasetValidationSplit:s},o))},e.prototype.train=function(t){return Ke(this,void 0,void 0,function(){var s,r=this;return Xe(this,function(o){return k(this.words!=null&&this.words.length>0,function(){return"Cannot train transfer-learning model '"+r.name+"' because no transfer learning example has been collected."}),k(this.words.length>1,function(){return"Cannot train transfer-learning model '"+r.name+"' because only 1 word label ('"+JSON.stringify(r.words)+"') has been collected for transfer learning. Requires at least 2."}),t.fineTuningEpochs!=null&&k(t.fineTuningEpochs>=0&&Number.isInteger(t.fineTuningEpochs),function(){return"If specified, fineTuningEpochs must be a non-negative integer, but received "+t.fineTuningEpochs}),t==null&&(t={}),this.model==null&&this.createTransferModelFromBaseModel(),this.secondLastBaseDenseLayer.trainable=!1,this.model.compile({loss:"categoricalCrossentropy",optimizer:t.optimizer||"sgd",metrics:["acc"]}),s=t.fitDatasetDurationMillisThreshold==null?6e4:t.fitDatasetDurationMillisThreshold,this.dataset.durationMillis()>s?(console.log("Detected large dataset: total duration = "+this.dataset.durationMillis()+" ms > "+s+" ms. Training transfer model using fitDataset() instead of fit()"),[2,this.trainOnDataset(t)]):[2,this.trainOnTensors(t)]})})},e.prototype.trainOnDataset=function(t){return Ke(this,void 0,void 0,function(){var s,r,o,a,i,l,u,c,h;return Xe(this,function(d){switch(d.label){case 0:return k(t.epochs>0,function(){return"Invalid config.epochs"}),s=t.batchSize==null?32:t.batchSize,r=t.windowHopRatio||am,o=W0(this.collectTransferDataAsTfDataset(r,t.validationSplit,s,{augmentByMixingNoiseRatio:t.augmentByMixingNoiseRatio}),2),a=o[0],i=o[1],l=lt(),[4,this.model.fitDataset(a,{epochs:t.epochs,validationData:t.validationSplit>0?i:null,callbacks:t.callback==null?null:[t.callback]})];case 1:return u=d.sent(),console.log("fitDataset() took "+(lt()-l).toFixed(2)+" ms"),t.fineTuningEpochs!=null&&t.fineTuningEpochs>0?(c=lt(),[4,this.fineTuningUsingTfDatasets(t,a,i)]):[3,3];case 2:return h=d.sent(),console.log("fitDataset() (fine-tuning) took "+(lt()-c).toFixed(2)+" ms"),[2,[u,h]];case 3:return[2,u]}})})},e.prototype.trainOnTensors=function(t){return Ke(this,void 0,void 0,function(){var s,r,o,a,i,l,u,c,h,d;return Xe(this,function(p){switch(p.label){case 0:s=t.windowHopRatio||am,r=this.collectTransferDataAsTensors(s,{augmentByMixingNoiseRatio:t.augmentByMixingNoiseRatio}),o=r.xs,a=r.ys,console.log("Training data: xs.shape = "+o.shape+", ys.shape = "+a.shape),p.label=1;case 1:return p.trys.push([1,,6,7]),t.validationSplit!=null?(c=Iee(o,a,t.validationSplit),i=c.trainXs,l=c.trainYs,u=[c.valXs,c.valYs]):(i=o,l=a),[4,this.model.fit(i,l,{epochs:t.epochs==null?20:t.epochs,validationData:u,batchSize:t.batchSize,callbacks:t.callback==null?null:[t.callback]})];case 2:return h=p.sent(),t.fineTuningEpochs!=null&&t.fineTuningEpochs>0?[4,this.fineTuningUsingTensors(t,i,l,u)]:[3,4];case 3:return d=p.sent(),[2,[h,d]];case 4:return[2,h];case 5:return[3,7];case 6:return ge([o,a,i,l,u]),[7];case 7:return[2]}})})},e.prototype.fineTuningUsingTfDatasets=function(t,s,r){return Ke(this,void 0,void 0,function(){var o,a,i;return Xe(this,function(l){switch(l.label){case 0:return o=this.secondLastBaseDenseLayer.trainable,this.secondLastBaseDenseLayer.trainable=!0,a=t.fineTuningOptimizer==null?"sgd":t.fineTuningOptimizer,this.model.compile({loss:"categoricalCrossentropy",optimizer:a,metrics:["acc"]}),[4,this.model.fitDataset(s,{epochs:t.fineTuningEpochs,validationData:r,callbacks:t.callback==null?null:[t.callback]})];case 1:return i=l.sent(),this.secondLastBaseDenseLayer.trainable=o,[2,i]}})})},e.prototype.fineTuningUsingTensors=function(t,s,r,o){return Ke(this,void 0,void 0,function(){var a,i,l;return Xe(this,function(u){switch(u.label){case 0:return a=this.secondLastBaseDenseLayer.trainable,this.secondLastBaseDenseLayer.trainable=!0,i=t.fineTuningOptimizer==null?"sgd":t.fineTuningOptimizer,this.model.compile({loss:"categoricalCrossentropy",optimizer:i,metrics:["acc"]}),[4,this.model.fit(s,r,{epochs:t.fineTuningEpochs,validationData:o,batchSize:t.batchSize,callbacks:t.fineTuningCallback==null?null:[t.fineTuningCallback]})];case 1:return l=u.sent(),this.secondLastBaseDenseLayer.trainable=a,[2,l]}})})},e.prototype.evaluate=function(t){return Ke(this,void 0,void 0,function(){var s,r=this;return Xe(this,function(o){return k(t.wordProbThresholds!=null&&t.wordProbThresholds.length>0,function(){return"Received null or empty wordProbThresholds"}),s=0,k(this.words[s]===Ha,function(){return"Cannot perform evaluation when the first tag is not "+Ha}),[2,W(function(){for(var a=[],i=0,l=r.collectTransferDataAsTensors(t.windowHopRatio),u=l.xs,c=l.ys.argMax(-1).dataSync(),h=r.model.predict(u),d=ln(ke(h,[0,1],[h.shape[0],h.shape[1]-1]),-1),p=h.shape[0],f=0;f<t.wordProbThresholds.length;++f){for(var g=t.wordProbThresholds[f],y=d.greater(ue(g)).dataSync(),m=0,b=0,w=0,x=0,v=0;v<p;++v)c[v]===s?(m++,y[v]&&w++):(b++,y[v]&&x++);var $=w/m,I=x/b;a.push({probThreshold:g,fpr:$,tpr:I}),console.log("ROC thresh="+g+": fpr="+$.toFixed(4)+", tpr="+I.toFixed(4)),f>0&&(i+=Math.abs(a[f-1].fpr-a[f].fpr)*(a[f-1].tpr+a[f].tpr)/2)}return{rocCurve:a,auc:i}})]})})},e.prototype.createTransferModelFromBaseModel=function(){var t=this;k(this.words!=null,function(){return"No word example is available for tranfer-learning model of name "+t.name});for(var s=this.baseModel.layers,r=s.length-2;r>=0&&s[r].getClassName().toLowerCase()!=="dense";)r--;if(r<0)throw new Error("Cannot find a hidden dense layer in the base model.");this.secondLastBaseDenseLayer=s[r];var o=this.secondLastBaseDenseLayer.output;this.transferHead=tI(),this.transferHead.add(MI({units:this.words.length,activation:"softmax",inputShape:o.shape.slice(1),name:"NewHeadDense"}));var a=this.transferHead.apply(o);this.model=Sb({inputs:this.baseModel.inputs,outputs:a})},e.prototype.modelInputShape=function(){return this.baseModel.inputs[0].shape},e.prototype.getMetadata=function(){return{tfjsSpeechCommandsVersion:H0,modelName:this.name,timeStamp:new Date().toISOString(),wordLabels:this.wordLabels()}},e.prototype.save=function(t){return Ke(this,void 0,void 0,function(){var s,r,o;return Xe(this,function(a){return s=t!=null,t=t||q0(this.name),s||(r=Hh.localStorage.getItem(Gh),(o=r==null?{}:JSON.parse(r))[this.name]=this.getMetadata(),Hh.localStorage.setItem(Gh,JSON.stringify(o))),console.log("Saving model to "+t),[2,this.model.save(t)]})})},e.prototype.load=function(t){return Ke(this,void 0,void 0,function(){var s,r,o;return Xe(this,function(a){switch(a.label){case 0:if(s=t!=null,t=t||q0(this.name),!s){if((r=JSON.parse(Hh.localStorage.getItem(Gh)))==null||r[this.name]==null)throw new Error("Cannot find metadata for transfer model named "+this.name+'"');this.words=r[this.name].wordLabels,console.log("Loaded word list for model named "+this.name+": "+this.words)}return o=this,[4,fh(t)];case 1:return o.model=a.sent(),console.log("Loaded model from "+t+":"),this.model.summary(),[2]}})})},e.prototype.createTransfer=function(t){throw new Error("Creating transfer-learned recognizer from a transfer-learned recognizer is not supported.")},e})(kk);function q0(n){return""+j0+n}function _ee(){return Ke(this,void 0,void 0,function(){var n,e,t;return Xe(this,function(s){switch(s.label){case 0:return[4,S1()];case 1:for(t in n=s.sent(),e=[],n)t.startsWith(j0)&&e.push(t.slice(j0.length));return[2,e]}})})}function Oee(n){return Ke(this,void 0,void 0,function(){var e;return Xe(this,function(t){switch(t.label){case 0:return(e=JSON.parse(Hh.localStorage.getItem(Gh)))==null&&(e={}),e[n]!=null&&delete e[n],Hh.localStorage.setItem(Gh,JSON.stringify(e)),[4,I1(q0(n))];case 1:return t.sent(),[2]}})})}function Ek(n,e,t,s){if(k(t==null&&s==null||t!=null&&s!=null,function(){return"customModelURL and customMetadataURL must be both provided or both not provided."}),t!=null&&k(e==null,function(){return"vocabulary name must be null or undefined when modelURL is provided."}),n==="BROWSER_FFT")return new kk(e,t,s);throw n==="SOFT_FFT"?new Error("SOFT_FFT SpeechCommandRecognizer has not been implemented yet."):new Error("Invalid fftType: '"+n+"'")}var Fee={concatenateFloat32Arrays:Sk,normalizeFloat32Array:xk,normalize:nu,playRawAudio:xee};const Ak=Object.freeze(Object.defineProperty({__proto__:null,BACKGROUND_NOISE_TAG:Ha,Dataset:G0,UNKNOWN_TAG:Tk,create:Ek,deleteSavedTransferModel:Oee,getMaxIntensityFrameIndex:Ck,listSavedTransferModels:_ee,spectrogram2IntensityCurve:$k,utils:Fee,version:H0},Symbol.toStringTag,{value:"Module"}));var K0={},ja={};const qr=yc(tm);var qa={},Rk;function Dk(){if(Rk)return qa;Rk=1;Object.defineProperty(qa,"__esModule",{value:!0}),qa.cropTensor=qa.capture=void 0;var n=qr;function e(s,r){return n.tidy(function(){var o=n.browser.fromPixels(s),a=t(o,r),i=a.expandDims(0);return i.toFloat().div(n.scalar(127)).sub(n.scalar(1))})}qa.capture=e;function t(s,r,o){var a=Math.min(s.shape[0],s.shape[1]),i=s.shape[0]/2,l=i-a/2,u=s.shape[1]/2,c=u-a/2;if(r&&!o){var h=s.slice([l,c,0],[a,a,3]);h=h.reshape([a*a,1,3]);var d=[.2989,.587,.114];return h=n.mul(h,d),h=h.reshape([a,a,3]),h=n.sum(h,-1),h=n.expandDims(h,-1),h}return s.slice([l,c,0],[a,a,3])}return qa.cropTensor=t,qa}var gs={},_k;function Ok(){if(_k)return gs;_k=1;Object.defineProperty(gs,"__esModule",{value:!0}),gs.cropTo=gs.resizeMinTo=gs.resizeMaxTo=gs.resize=void 0;var n=function(){return document.createElement("canvas")};function e(o,a,i){i===void 0&&(i=n()),i.width=o.width*a,i.height=o.height*a;var l=i.getContext("2d");return l.drawImage(o,0,0,i.width,i.height),i}gs.resize=e;function t(o,a,i){i===void 0&&(i=n());var l=Math.max(o.width,o.height);return e(o,a/l,i)}gs.resizeMaxTo=t;function s(o,a,i){i===void 0&&(i=n());var l=Math.min(o.width,o.height);return e(o,a/l,i)}gs.resizeMinTo=s;function r(o,a,i,l){i===void 0&&(i=!1),l===void 0&&(l=n());var u=o.width,c=o.height;o instanceof HTMLVideoElement&&(u=o.videoWidth,c=o.videoHeight);var h=Math.min(u,c),d=a/h,p=Math.ceil(u*d),f=Math.ceil(c*d),g=p-a,y=f-a;l.width=l.height=a;var m=l.getContext("2d");return m.drawImage(o,~~(g/2)*-1,~~(y/2)*-1,p,f),i&&(m.scale(-1,1),m.drawImage(l,a*-1,0)),l}return gs.cropTo=r,gs}var jh={},Fk;function Lk(){if(Fk)return jh;Fk=1;Object.defineProperty(jh,"__esModule",{value:!0}),jh.version=void 0;var n="0.8.4-alpha2";return jh.version=n,jh}var Pk;function Mk(){return Pk||(Pk=1,(function(n){var e=ja&&ja.__awaiter||function(I,E,C,T){function S(A){return A instanceof C?A:new C(function(D){D(A)})}return new(C||(C=Promise))(function(A,D){function O(B){try{_(T.next(B))}catch(U){D(U)}}function F(B){try{_(T.throw(B))}catch(U){D(U)}}function _(B){B.done?A(B.value):S(B.value).then(O,F)}_((T=T.apply(I,E||[])).next())})},t=ja&&ja.__generator||function(I,E){var C={label:0,sent:function(){if(A[0]&1)throw A[1];return A[1]},trys:[],ops:[]},T,S,A,D;return D={next:O(0),throw:O(1),return:O(2)},typeof Symbol=="function"&&(D[Symbol.iterator]=function(){return this}),D;function O(_){return function(B){return F([_,B])}}function F(_){if(T)throw new TypeError("Generator is already executing.");for(;C;)try{if(T=1,S&&(A=_[0]&2?S.return:_[0]?S.throw||((A=S.return)&&A.call(S),0):S.next)&&!(A=A.call(S,_[1])).done)return A;switch(S=0,A&&(_=[_[0]&2,A.value]),_[0]){case 0:case 1:A=_;break;case 4:return C.label++,{value:_[1],done:!1};case 5:C.label++,S=_[1],_=[0];continue;case 7:_=C.ops.pop(),C.trys.pop();continue;default:if(A=C.trys,!(A=A.length>0&&A[A.length-1])&&(_[0]===6||_[0]===2)){C=0;continue}if(_[0]===3&&(!A||_[1]>A[0]&&_[1]<A[3])){C.label=_[1];break}if(_[0]===6&&C.label<A[1]){C.label=A[1],A=_;break}if(A&&C.label<A[2]){C.label=A[2],C.ops.push(_);break}A[2]&&C.ops.pop(),C.trys.pop();continue}_=E.call(I,C)}catch(B){_=[6,B],S=0}finally{T=A=0}if(_[0]&5)throw _[1];return{value:_[0]?_[1]:void 0,done:!0}}};Object.defineProperty(n,"__esModule",{value:!0}),n.loadFromFiles=n.load=n.loadTruncatedMobileNet=n.CustomMobileNet=n.getTopKClasses=n.IMAGE_SIZE=void 0;var s=qr,r=qr,o=Dk(),a=Ok(),i=Lk(),l=1,u="conv_pw_13_relu",c="out_relu",h=.25,d=.35;n.IMAGE_SIZE=224;var p=function(I){return I.packageVersion=I.packageVersion||i.version,I.packageName=I.packageName||"@teachablemachine/image",I.timeStamp=I.timeStamp||new Date().toISOString(),I.userMetadata=I.userMetadata||{},I.modelName=I.modelName||"untitled",I.labels=I.labels||[],I.imageSize=I.imageSize||n.IMAGE_SIZE,I},f=function(I){return!!I&&Array.isArray(I.labels)},g=function(I,E){if(I===1){if(E!==.25&&E!==.5&&E!==.75&&E!==1)return console.warn("Invalid alpha. Options are: 0.25, 0.50, 0.75 or 1.00."),console.log("Loading model with alpha: ",h.toFixed(2)),h}else if(E!==.35&&E!==.5&&E!==.75&&E!==1)return console.warn("Invalid alpha. Options are: 0.35, 0.50, 0.75 or 1.00."),console.log("Loading model with alpha: ",d.toFixed(2)),d;return E},y=function(I){if(I=I||{},I.checkpointUrl&&I.trainingLayer)return(I.alpha||I.version)&&console.warn("Checkpoint URL passed to modelOptions, alpha options are ignored"),[I.checkpointUrl,I.trainingLayer];if(I.version=I.version||l,I.version===1){I.alpha=I.alpha||h,I.alpha=g(I.version,I.alpha),console.log("Loading mobilenet "+I.version+" and alpha "+I.alpha);var E=I.alpha.toFixed(2);return E==="1.00"&&(E="1.0"),["https://storage.googleapis.com/tfjs-models/tfjs/mobilenet_v1_"+E+"_"+n.IMAGE_SIZE+"/model.json",u]}else{if(I.version===2)return I.alpha=I.alpha||d,I.alpha=g(I.version,I.alpha),console.log("Loading mobilenet "+I.version+" and alpha "+I.alpha),["https://storage.googleapis.com/teachable-machine-models/mobilenet_v2_weights_tf_dim_ordering_tf_kernels_"+I.alpha.toFixed(2)+"_"+n.IMAGE_SIZE+"_no_top/model.json",c];throw new Error("MobileNet V"+I.version+" doesn't exist")}},m=function(I){return e(void 0,void 0,void 0,function(){var E,C;return t(this,function(T){switch(T.label){case 0:return typeof I!="string"?[3,3]:[4,fetch(I)];case 1:return C=T.sent(),[4,C.json()];case 2:return E=T.sent(),[3,4];case 3:if(f(I))E=I;else throw new Error("Invalid Metadata provided");T.label=4;case 4:return[2,p(E)]}})})};function b(I,E,C){return C===void 0&&(C=3),e(this,void 0,void 0,function(){var T;return t(this,function(S){switch(S.label){case 0:return[4,E.data()];case 1:return T=S.sent(),[2,s.tidy(function(){C=Math.min(C,T.length);for(var A=[],D=0;D<T.length;D++)A.push({value:T[D],index:D});A.sort(function(B,U){return U.value-B.value});for(var O=new Float32Array(C),F=new Int32Array(C),D=0;D<C;D++)O[D]=A[D].value,F[D]=A[D].index;for(var _=[],D=0;D<F.length;D++)_.push({className:I[F[D]],probability:O[D]});return _})]}})})}n.getTopKClasses=b;var w=(function(){function I(E,C){this.model=E,this._metadata=p(C)}return Object.defineProperty(I,"EXPECTED_IMAGE_SIZE",{get:function(){return n.IMAGE_SIZE},enumerable:!1,configurable:!0}),I.prototype.getMetadata=function(){return this._metadata},I.prototype.getTotalClasses=function(){var E=this.model.output,C=E.shape[1];return C},I.prototype.getClassLabels=function(){return this._metadata.labels},I.prototype.predictTopK=function(E,C,T){return C===void 0&&(C=10),T===void 0&&(T=!1),e(this,void 0,void 0,function(){var S,A,D,O=this;return t(this,function(F){switch(F.label){case 0:return S=a.cropTo(E,this._metadata.imageSize,T),A=s.tidy(function(){var _=o.capture(S,O._metadata.grayscale);return O.model.predict(_)}),[4,b(this._metadata.labels,A,C)];case 1:return D=F.sent(),r.dispose(A),[2,D]}})})},I.prototype.predict=function(E,C){return C===void 0&&(C=!1),e(this,void 0,void 0,function(){var T,S,A,D,O,F=this;return t(this,function(_){switch(_.label){case 0:return T=a.cropTo(E,this._metadata.imageSize,C),S=s.tidy(function(){var B=o.capture(T,F._metadata.grayscale);return F.model.predict(B)}),[4,S.data()];case 1:for(A=_.sent(),D=[],O=0;O<A.length;O++)D.push({className:this._metadata.labels[O],probability:A[O]});return r.dispose(S),[2,D]}})})},I.prototype.dispose=function(){this.truncatedModel.dispose()},I})();n.CustomMobileNet=w;function x(I){return e(this,void 0,void 0,function(){var E,C,T,S,A,D,O,A,D,O;return t(this,function(F){switch(F.label){case 0:return E=y(I),C=E[0],T=E[1],[4,s.loadLayersModel(C)];case 1:return S=F.sent(),I&&I.version===1?(A=S.getLayer(T),D=s.model({inputs:S.inputs,outputs:A.output}),O=s.sequential(),O.add(D),O.add(s.layers.flatten()),[2,O]):(A=S.getLayer(T),D=s.model({inputs:S.inputs,outputs:A.output}),O=s.sequential(),O.add(D),O.add(s.layers.globalAveragePooling2d({})),[2,O])}})})}n.loadTruncatedMobileNet=x;function v(I,E){return e(this,void 0,void 0,function(){var C,T,S;return t(this,function(A){switch(A.label){case 0:return[4,s.loadLayersModel(I)];case 1:return C=A.sent(),E?[4,m(E)]:[3,3];case 2:return S=A.sent(),[3,4];case 3:S=null,A.label=4;case 4:return T=S,[2,new w(C,T)]}})})}n.load=v;function $(I,E,C){return e(this,void 0,void 0,function(){var T,S,A,D;return t(this,function(O){switch(O.label){case 0:return[4,s.loadLayersModel(s.io.browserFiles([I,E]))];case 1:return T=O.sent(),[4,new Response(C).json()];case 2:return S=O.sent(),C?[4,m(S)]:[3,4];case 3:return D=O.sent(),[3,5];case 4:D=null,O.label=5;case 5:return A=D,[2,new w(T,A)]}})})}n.loadFromFiles=$})(ja)),ja}var Ln={},im={exports:{}},Lee=im.exports,zk;function Pee(){return zk||(zk=1,(function(n){(function(e,t,s){function r(l){var u=this,c=i();u.next=function(){var h=2091639*u.s0+u.c*23283064365386963e-26;return u.s0=u.s1,u.s1=u.s2,u.s2=h-(u.c=h|0)},u.c=1,u.s0=c(" "),u.s1=c(" "),u.s2=c(" "),u.s0-=c(l),u.s0<0&&(u.s0+=1),u.s1-=c(l),u.s1<0&&(u.s1+=1),u.s2-=c(l),u.s2<0&&(u.s2+=1),c=null}function o(l,u){return u.c=l.c,u.s0=l.s0,u.s1=l.s1,u.s2=l.s2,u}function a(l,u){var c=new r(l),h=u&&u.state,d=c.next;return d.int32=function(){return c.next()*4294967296|0},d.double=function(){return d()+(d()*2097152|0)*11102230246251565e-32},d.quick=d,h&&(typeof h=="object"&&o(h,c),d.state=function(){return o(c,{})}),d}function i(){var l=4022871197,u=function(c){c=c.toString();for(var h=0;h<c.length;h++){l+=c.charCodeAt(h);var d=.02519603282416938*l;l=d>>>0,d-=l,d*=l,l=d>>>0,d-=l,l+=d*4294967296}return(l>>>0)*23283064365386963e-26};return u}t&&t.exports?t.exports=a:this.alea=a})(Lee,n)})(im)),im.exports}var lm={exports:{}},Mee=lm.exports,Bk;function zee(){return Bk||(Bk=1,(function(n){(function(e,t,s){function r(i){var l=this,u="";l.x=0,l.y=0,l.z=0,l.w=0,l.next=function(){var h=l.x^l.x<<11;return l.x=l.y,l.y=l.z,l.z=l.w,l.w^=l.w>>>19^h^h>>>8},i===(i|0)?l.x=i:u+=i;for(var c=0;c<u.length+64;c++)l.x^=u.charCodeAt(c)|0,l.next()}function o(i,l){return l.x=i.x,l.y=i.y,l.z=i.z,l.w=i.w,l}function a(i,l){var u=new r(i),c=l&&l.state,h=function(){return(u.next()>>>0)/4294967296};return h.double=function(){do var d=u.next()>>>11,p=(u.next()>>>0)/4294967296,f=(d+p)/(1<<21);while(f===0);return f},h.int32=u.next,h.quick=h,c&&(typeof c=="object"&&o(c,u),h.state=function(){return o(u,{})}),h}t&&t.exports?t.exports=a:this.xor128=a})(Mee,n)})(lm)),lm.exports}var um={exports:{}},Bee=um.exports,Vk;function Vee(){return Vk||(Vk=1,(function(n){(function(e,t,s){function r(i){var l=this,u="";l.next=function(){var h=l.x^l.x>>>2;return l.x=l.y,l.y=l.z,l.z=l.w,l.w=l.v,(l.d=l.d+362437|0)+(l.v=l.v^l.v<<4^(h^h<<1))|0},l.x=0,l.y=0,l.z=0,l.w=0,l.v=0,i===(i|0)?l.x=i:u+=i;for(var c=0;c<u.length+64;c++)l.x^=u.charCodeAt(c)|0,c==u.length&&(l.d=l.x<<10^l.x>>>4),l.next()}function o(i,l){return l.x=i.x,l.y=i.y,l.z=i.z,l.w=i.w,l.v=i.v,l.d=i.d,l}function a(i,l){var u=new r(i),c=l&&l.state,h=function(){return(u.next()>>>0)/4294967296};return h.double=function(){do var d=u.next()>>>11,p=(u.next()>>>0)/4294967296,f=(d+p)/(1<<21);while(f===0);return f},h.int32=u.next,h.quick=h,c&&(typeof c=="object"&&o(c,u),h.state=function(){return o(u,{})}),h}t&&t.exports?t.exports=a:this.xorwow=a})(Bee,n)})(um)),um.exports}var cm={exports:{}},Wee=cm.exports,Wk;function Uee(){return Wk||(Wk=1,(function(n){(function(e,t,s){function r(i){var l=this;l.next=function(){var c=l.x,h=l.i,d,p;return d=c[h],d^=d>>>7,p=d^d<<24,d=c[h+1&7],p^=d^d>>>10,d=c[h+3&7],p^=d^d>>>3,d=c[h+4&7],p^=d^d<<7,d=c[h+7&7],d=d^d<<13,p^=d^d<<9,c[h]=p,l.i=h+1&7,p};function u(c,h){var d,p=[];if(h===(h|0))p[0]=h;else for(h=""+h,d=0;d<h.length;++d)p[d&7]=p[d&7]<<15^h.charCodeAt(d)+p[d+1&7]<<13;for(;p.length<8;)p.push(0);for(d=0;d<8&&p[d]===0;++d);for(d==8?p[7]=-1:p[d],c.x=p,c.i=0,d=256;d>0;--d)c.next()}u(l,i)}function o(i,l){return l.x=i.x.slice(),l.i=i.i,l}function a(i,l){i==null&&(i=+new Date);var u=new r(i),c=l&&l.state,h=function(){return(u.next()>>>0)/4294967296};return h.double=function(){do var d=u.next()>>>11,p=(u.next()>>>0)/4294967296,f=(d+p)/(1<<21);while(f===0);return f},h.int32=u.next,h.quick=h,c&&(c.x&&o(c,u),h.state=function(){return o(u,{})}),h}t&&t.exports?t.exports=a:this.xorshift7=a})(Wee,n)})(cm)),cm.exports}var hm={exports:{}},Gee=hm.exports,Uk;function Hee(){return Uk||(Uk=1,(function(n){(function(e,t,s){function r(i){var l=this;l.next=function(){var c=l.w,h=l.X,d=l.i,p,f;return l.w=c=c+1640531527|0,f=h[d+34&127],p=h[d=d+1&127],f^=f<<13,p^=p<<17,f^=f>>>15,p^=p>>>12,f=h[d]=f^p,l.i=d,f+(c^c>>>16)|0};function u(c,h){var d,p,f,g,y,m=[],b=128;for(h===(h|0)?(p=h,h=null):(h=h+"\0",p=0,b=Math.max(b,h.length)),f=0,g=-32;g<b;++g)h&&(p^=h.charCodeAt((g+32)%h.length)),g===0&&(y=p),p^=p<<10,p^=p>>>15,p^=p<<4,p^=p>>>13,g>=0&&(y=y+1640531527|0,d=m[g&127]^=p+y,f=d==0?f+1:0);for(f>=128&&(m[(h&&h.length||0)&127]=-1),f=127,g=512;g>0;--g)p=m[f+34&127],d=m[f=f+1&127],p^=p<<13,d^=d<<17,p^=p>>>15,d^=d>>>12,m[f]=p^d;c.w=y,c.X=m,c.i=f}u(l,i)}function o(i,l){return l.i=i.i,l.w=i.w,l.X=i.X.slice(),l}function a(i,l){i==null&&(i=+new Date);var u=new r(i),c=l&&l.state,h=function(){return(u.next()>>>0)/4294967296};return h.double=function(){do var d=u.next()>>>11,p=(u.next()>>>0)/4294967296,f=(d+p)/(1<<21);while(f===0);return f},h.int32=u.next,h.quick=h,c&&(c.X&&o(c,u),h.state=function(){return o(u,{})}),h}t&&t.exports?t.exports=a:this.xor4096=a})(Gee,n)})(hm)),hm.exports}var dm={exports:{}},jee=dm.exports,Gk;function qee(){return Gk||(Gk=1,(function(n){(function(e,t,s){function r(i){var l=this,u="";l.next=function(){var h=l.b,d=l.c,p=l.d,f=l.a;return h=h<<25^h>>>7^d,d=d-p|0,p=p<<24^p>>>8^f,f=f-h|0,l.b=h=h<<20^h>>>12^d,l.c=d=d-p|0,l.d=p<<16^d>>>16^f,l.a=f-h|0},l.a=0,l.b=0,l.c=-1640531527,l.d=1367130551,i===Math.floor(i)?(l.a=i/4294967296|0,l.b=i|0):u+=i;for(var c=0;c<u.length+20;c++)l.b^=u.charCodeAt(c)|0,l.next()}function o(i,l){return l.a=i.a,l.b=i.b,l.c=i.c,l.d=i.d,l}function a(i,l){var u=new r(i),c=l&&l.state,h=function(){return(u.next()>>>0)/4294967296};return h.double=function(){do var d=u.next()>>>11,p=(u.next()>>>0)/4294967296,f=(d+p)/(1<<21);while(f===0);return f},h.int32=u.next,h.quick=h,c&&(typeof c=="object"&&o(c,u),h.state=function(){return o(u,{})}),h}t&&t.exports?t.exports=a:this.tychei=a})(jee,n)})(dm)),dm.exports}var X0={exports:{}},Hk;function Kee(){return Hk||(Hk=1,(function(n){(function(e,t){var s=this,r=256,o=6,a=52,i="random",l=t.pow(r,o),u=t.pow(2,a),c=u*2,h=r-1,d;function p(x,v,$){var I=[];v=v==!0?{entropy:!0}:v||{};var E=m(y(v.entropy?[x,w(e)]:x??b(),3),I),C=new f(I),T=function(){for(var S=C.g(o),A=l,D=0;S<u;)S=(S+D)*r,A*=r,D=C.g(1);for(;S>=c;)S/=2,A/=2,D>>>=1;return(S+D)/A};return T.int32=function(){return C.g(4)|0},T.quick=function(){return C.g(4)/4294967296},T.double=T,m(w(C.S),e),(v.pass||$||function(S,A,D,O){return O&&(O.S&&g(O,C),S.state=function(){return g(C,{})}),D?(t[i]=S,A):S})(T,E,"global"in v?v.global:this==t,v.state)}t["seed"+i]=p;function f(x){var v,$=x.length,I=this,E=0,C=I.i=I.j=0,T=I.S=[];for($||(x=[$++]);E<r;)T[E]=E++;for(E=0;E<r;E++)T[E]=T[C=h&C+x[E%$]+(v=T[E])],T[C]=v;(I.g=function(S){for(var A,D=0,O=I.i,F=I.j,_=I.S;S--;)A=_[O=h&O+1],D=D*r+_[h&(_[O]=_[F=h&F+A])+(_[F]=A)];return I.i=O,I.j=F,D})(r)}function g(x,v){return v.i=x.i,v.j=x.j,v.S=x.S.slice(),v}function y(x,v){var $=[],I=typeof x,E;if(v&&I=="object")for(E in x)try{$.push(y(x[E],v-1))}catch{}return $.length?$:I=="string"?x:x+"\0"}function m(x,v){for(var $=x+"",I,E=0;E<$.length;)v[h&E]=h&(I^=v[h&E]*19)+$.charCodeAt(E++);return w(v)}function b(){try{var x;return d&&(x=d.randomBytes)?x=x(r):(x=new Uint8Array(r),(s.crypto||s.msCrypto).getRandomValues(x)),w(x)}catch{var v=s.navigator,$=v&&v.plugins;return[+new Date,s,$,s.screen,w(e)]}}function w(x){return String.fromCharCode.apply(0,x)}if(m(t.random(),e),n.exports){n.exports=p;try{d=M1}catch{}}})([],Math)})(X0)),X0.exports}var Y0,jk;function Xee(){if(jk)return Y0;jk=1;var n=Pee(),e=zee(),t=Vee(),s=Uee(),r=Hee(),o=qee(),a=Kee();return a.alea=n,a.xor128=e,a.xorwow=t,a.xorshift7=s,a.xor4096=r,a.tychei=o,Y0=a,Y0}var qk;function Yee(){if(qk)return Ln;qk=1;var n=Ln&&Ln.__extends||(function(){var f=function(g,y){return f=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(m,b){m.__proto__=b}||function(m,b){for(var w in b)b.hasOwnProperty(w)&&(m[w]=b[w])},f(g,y)};return function(g,y){f(g,y);function m(){this.constructor=g}g.prototype=y===null?Object.create(y):(m.prototype=y.prototype,new m)}})(),e=Ln&&Ln.__awaiter||function(f,g,y,m){function b(w){return w instanceof y?w:new y(function(x){x(w)})}return new(y||(y=Promise))(function(w,x){function v(E){try{I(m.next(E))}catch(C){x(C)}}function $(E){try{I(m.throw(E))}catch(C){x(C)}}function I(E){E.done?w(E.value):b(E.value).then(v,$)}I((m=m.apply(f,g||[])).next())})},t=Ln&&Ln.__generator||function(f,g){var y={label:0,sent:function(){if(w[0]&1)throw w[1];return w[1]},trys:[],ops:[]},m,b,w,x;return x={next:v(0),throw:v(1),return:v(2)},typeof Symbol=="function"&&(x[Symbol.iterator]=function(){return this}),x;function v(I){return function(E){return $([I,E])}}function $(I){if(m)throw new TypeError("Generator is already executing.");for(;y;)try{if(m=1,b&&(w=I[0]&2?b.return:I[0]?b.throw||((w=b.return)&&w.call(b),0):b.next)&&!(w=w.call(b,I[1])).done)return w;switch(b=0,w&&(I=[I[0]&2,w.value]),I[0]){case 0:case 1:w=I;break;case 4:return y.label++,{value:I[1],done:!1};case 5:y.label++,b=I[1],I=[0];continue;case 7:I=y.ops.pop(),y.trys.pop();continue;default:if(w=y.trys,!(w=w.length>0&&w[w.length-1])&&(I[0]===6||I[0]===2)){y=0;continue}if(I[0]===3&&(!w||I[1]>w[0]&&I[1]<w[3])){y.label=I[1];break}if(I[0]===6&&y.label<w[1]){y.label=w[1],w=I;break}if(w&&y.label<w[2]){y.label=w[2],y.ops.push(I);break}w[2]&&y.ops.pop(),y.trys.pop();continue}I=g.call(f,y)}catch(E){I=[6,E],b=0}finally{m=w=0}if(I[0]&5)throw I[1];return{value:I[0]?I[1]:void 0,done:!0}}};Object.defineProperty(Ln,"__esModule",{value:!0}),Ln.createTeachable=Ln.TeachableMobileNet=void 0;var s=qr,r=qr,o=Dk(),a=Mk(),i=Xee(),l=.15,u=function(f){return typeof f.dataId=="object"&&typeof f.shape=="object"};function c(f,g){var y=new Array(g).fill(0);return y[f]=1,y}function h(f,g){for(var y,m=f.length,b=f.slice(),w=m-1;w>0;w-=1){var x=void 0;g?x=Math.floor(g()*(w+1)):x=Math.floor(Math.random()*(w+1)),y=[b[x],b[w]],b[w]=y[0],b[x]=y[1]}return b}var d=(function(f){n(g,f);function g(y,m){var b=f.call(this,s.sequential(),m)||this;return b.totalSamples=0,b.examples=[],b.truncatedModel=y,b}return Object.defineProperty(g.prototype,"asSequentialModel",{get:function(){return this.model},enumerable:!1,configurable:!0}),Object.defineProperty(g.prototype,"isTrained",{get:function(){return!!this.model&&this.model.layers&&this.model.layers.length>2},enumerable:!1,configurable:!0}),Object.defineProperty(g.prototype,"isPrepared",{get:function(){return!!this.trainDataset},enumerable:!1,configurable:!0}),Object.defineProperty(g.prototype,"numClasses",{get:function(){return this._metadata.labels.length},enumerable:!1,configurable:!0}),g.prototype.addExample=function(y,m){return e(this,void 0,void 0,function(){var b,w,x;return t(this,function(v){return b=u(m)?m:o.capture(m,this._metadata.grayscale),w=this.truncatedModel.predict(b),x=w.dataSync(),b.dispose(),w.dispose(),this.examples[y].push(x),this.totalSamples++,[2]})})},g.prototype.predict=function(y,m){return m===void 0&&(m=!1),e(this,void 0,void 0,function(){return t(this,function(b){if(!this.model)throw new Error("Model has not been trained yet, called train() first");return[2,f.prototype.predict.call(this,y,m)]})})},g.prototype.predictTopK=function(y,m,b){return m===void 0&&(m=10),b===void 0&&(b=!1),e(this,void 0,void 0,function(){return t(this,function(w){if(!this.model)throw new Error("Model has not been trained yet, called train() first");return[2,f.prototype.predictTopK.call(this,y,m,b)]})})},g.prototype.prepare=function(){for(var y in this.examples)if(y.length===0)throw new Error("Add some examples before training");var m=this.convertToTfDataset();this.trainDataset=m.trainDataset,this.validationDataset=m.validationDataset},g.prototype.convertToTfDataset=function(){for(var y=0;y<this.examples.length;y++)this.examples[y]=h(this.examples[y],this.seed);for(var m=[],b=[],w=function(C){var T=c(C,x.numClasses),S=x.examples[C].length,A=Math.ceil(l*S),D=S-A,O=x.examples[C].slice(0,D).map(function(_){return{data:_,label:T}}),F=x.examples[C].slice(D).map(function(_){return{data:_,label:T}});m=m.concat(O),b=b.concat(F)},x=this,y=0;y<this.examples.length;y++)w(y);m=h(m,this.seed),b=h(b,this.seed);var v=s.data.array(m.map(function(C){return C.data})),$=s.data.array(b.map(function(C){return C.data})),I=s.data.array(m.map(function(C){return C.label})),E=s.data.array(b.map(function(C){return C.label}));return{trainDataset:s.data.zip({xs:v,ys:I}),validationDataset:s.data.zip({xs:$,ys:E})}},g.prototype.save=function(y,m){return e(this,void 0,void 0,function(){return t(this,function(b){return[2,this.model.save(y,m)]})})},g.prototype.train=function(y,m){return m===void 0&&(m={}),e(this,void 0,void 0,function(){var b,w,x,v,$,I,E,C,T,S=this;return t(this,function(A){switch(A.label){case 0:if(b=m.onTrainEnd||(function(){}),m.onTrainEnd=function(D){S.__stopTrainingResolve&&(S.__stopTrainingResolve(),S.__stopTrainingResolve=null),b(D)},this.isPrepared||this.prepare(),w=this.getLabels().length,r.util.assert(w===this.numClasses,function(){return"Can not train, has "+w+" labels and "+S.numClasses+" classes"}),x=this.truncatedModel.outputs[0].shape.slice(1),v=s.util.sizeFromShape(x),this.seed?$=s.initializers.varianceScaling({seed:3.14}):$=s.initializers.varianceScaling({}),this.trainingModel=s.sequential({layers:[s.layers.dense({inputShape:[v],units:y.denseUnits,activation:"relu",kernelInitializer:$,useBias:!0}),s.layers.dense({kernelInitializer:$,useBias:!1,activation:"softmax",units:this.numClasses})]}),I=s.train.adam(y.learningRate),this.trainingModel.compile({optimizer:I,loss:"categoricalCrossentropy",metrics:["accuracy"]}),!(y.batchSize>0))throw new Error("Batch size is 0 or NaN. Please choose a non-zero fraction");return E=this.trainDataset.batch(y.batchSize),C=this.validationDataset.batch(y.batchSize),[4,this.trainingModel.fitDataset(E,{epochs:y.epochs,validationData:C,callbacks:m})];case 1:return A.sent(),T=s.sequential(),T.add(this.truncatedModel),T.add(this.trainingModel),this.model=T,I.dispose(),[2,this.model]}})})},g.prototype.prepareDataset=function(){for(var y=0;y<this.numClasses;y++)this.examples[y]=[]},g.prototype.setLabel=function(y,m){this._metadata.labels[y]=m},g.prototype.setLabels=function(y){this._metadata.labels=y,this.prepareDataset()},g.prototype.getLabel=function(y){return this._metadata.labels[y]},g.prototype.getLabels=function(){return this._metadata.labels},g.prototype.setName=function(y){this._metadata.modelName=y},g.prototype.getName=function(){return this._metadata.modelName},g.prototype.stopTraining=function(){var y=this,m=new Promise(function(b,w){y.trainingModel.stopTraining=!0,y.__stopTrainingResolve=b});return m},g.prototype.dispose=function(){this.trainingModel.dispose(),f.prototype.dispose.call(this)},g.prototype.calculateAccuracyPerClass=function(){return e(this,void 0,void 0,function(){var y,m,b,w,x,v,$,I,E,C,B,T,S,A,D,O,F,_,B,U=this;return t(this,function(H){switch(H.label){case 0:return y=this.validationDataset.mapAsync(function(G){return e(U,void 0,void 0,function(){return t(this,function(X){return[2,G.xs]})})}),m=this.validationDataset.mapAsync(function(G){return e(U,void 0,void 0,function(){return t(this,function(X){return[2,G.ys]})})}),b=Math.min(m.size,32),w=Math.ceil(m.size/b),x=y.batch(b),v=m.batch(b),[4,x.iterator()];case 1:return $=H.sent(),[4,v.iterator()];case 2:I=H.sent(),E=[],C=[],B=0,H.label=3;case 3:return B<w?[4,$.next()]:[3,7];case 4:return T=H.sent(),S=this.trainingModel.predict(T.value),A=S.argMax(1),E.push(A),[4,I.next()];case 5:D=H.sent(),O=D.value.argMax(1),C.push(O),T.value.dispose(),S.dispose(),D.value.dispose(),H.label=6;case 6:return B++,[3,3];case 7:if(F=s.concat(C),_=s.concat(E),w!==1)for(B=0;B<E.length;B++)E[B].dispose(),C[B].dispose();return[2,{reference:F,predictions:_}]}})})},g.prototype.setSeed=function(y){this.seed=i(y)},g})(a.CustomMobileNet);Ln.TeachableMobileNet=d;function p(f,g){return e(this,void 0,void 0,function(){var y;return t(this,function(m){switch(m.label){case 0:return[4,a.loadTruncatedMobileNet(g)];case 1:return y=m.sent(),[2,new d(y,f)]}})})}return Ln.createTeachable=p,Ln}var ys={};function pm(n){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?pm=function(t){return typeof t}:pm=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},pm(n)}function Z0(n,e,t){var s=t.value;if(typeof s!="function")throw new TypeError("@boundMethod decorator can only be applied to methods not: ".concat(pm(s)));var r=!1;return{configurable:!0,get:function(){if(r||this===n.prototype||this.hasOwnProperty(e)||typeof s!="function")return s;var a=s.bind(this);return r=!0,Object.defineProperty(this,e,{configurable:!0,get:function(){return a},set:function(l){s=l,delete this[e]}}),r=!1,a},set:function(a){s=a}}}function Kk(n){var e;return typeof Reflect<"u"&&typeof Reflect.ownKeys=="function"?e=Reflect.ownKeys(n.prototype):(e=Object.getOwnPropertyNames(n.prototype),typeof Object.getOwnPropertySymbols=="function"&&(e=e.concat(Object.getOwnPropertySymbols(n.prototype)))),e.forEach(function(t){if(t!=="constructor"){var s=Object.getOwnPropertyDescriptor(n.prototype,t);typeof s.value=="function"&&Object.defineProperty(n.prototype,t,Z0(n,t,s))}}),n}function Zee(){return arguments.length===1?Kk.apply(void 0,arguments):Z0.apply(void 0,arguments)}const Xk=yc(Object.freeze(Object.defineProperty({__proto__:null,boundClass:Kk,boundMethod:Z0,default:Zee},Symbol.toStringTag,{value:"Module"})));var Yk;function Jee(){if(Yk)return ys;Yk=1;var n=ys&&ys.__decorate||function(l,u,c,h){var d=arguments.length,p=d<3?u:h===null?h=Object.getOwnPropertyDescriptor(u,c):h,f;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")p=Reflect.decorate(l,u,c,h);else for(var g=l.length-1;g>=0;g--)(f=l[g])&&(p=(d<3?f(p):d>3?f(u,c,p):f(u,c))||p);return d>3&&p&&Object.defineProperty(u,c,p),p},e=ys&&ys.__awaiter||function(l,u,c,h){function d(p){return p instanceof c?p:new c(function(f){f(p)})}return new(c||(c=Promise))(function(p,f){function g(b){try{m(h.next(b))}catch(w){f(w)}}function y(b){try{m(h.throw(b))}catch(w){f(w)}}function m(b){b.done?p(b.value):d(b.value).then(g,y)}m((h=h.apply(l,u||[])).next())})},t=ys&&ys.__generator||function(l,u){var c={label:0,sent:function(){if(p[0]&1)throw p[1];return p[1]},trys:[],ops:[]},h,d,p,f;return f={next:g(0),throw:g(1),return:g(2)},typeof Symbol=="function"&&(f[Symbol.iterator]=function(){return this}),f;function g(m){return function(b){return y([m,b])}}function y(m){if(h)throw new TypeError("Generator is already executing.");for(;c;)try{if(h=1,d&&(p=m[0]&2?d.return:m[0]?d.throw||((p=d.return)&&p.call(d),0):d.next)&&!(p=p.call(d,m[1])).done)return p;switch(d=0,p&&(m=[m[0]&2,p.value]),m[0]){case 0:case 1:p=m;break;case 4:return c.label++,{value:m[1],done:!1};case 5:c.label++,d=m[1],m=[0];continue;case 7:m=c.ops.pop(),c.trys.pop();continue;default:if(p=c.trys,!(p=p.length>0&&p[p.length-1])&&(m[0]===6||m[0]===2)){c=0;continue}if(m[0]===3&&(!p||m[1]>p[0]&&m[1]<p[3])){c.label=m[1];break}if(m[0]===6&&c.label<p[1]){c.label=p[1],p=m;break}if(p&&c.label<p[2]){c.label=p[2],c.ops.push(m);break}p[2]&&c.ops.pop(),c.trys.pop();continue}m=u.call(l,c)}catch(b){m=[6,b],d=0}finally{h=p=0}if(m[0]&5)throw m[1];return{value:m[0]?m[1]:void 0,done:!0}}};Object.defineProperty(ys,"__esModule",{value:!0}),ys.Webcam=void 0;var s=Xk,r=Ok(),o={facingMode:"user",frameRate:24},a=function(l){return l.facingMode=l.facingMode||o.facingMode,l.frameRate=l.frameRate||o.frameRate,l.aspectRatio=l.aspectRatio||o.aspectRatio,l},i=(function(){function l(u,c,h){u===void 0&&(u=400),c===void 0&&(c=400),h===void 0&&(h=!1),this.width=u,this.height=c,this.flip=h}return l.prototype.getWebcam=function(u){if(u===void 0&&(u={}),!window.navigator.mediaDevices||!window.navigator.mediaDevices.getUserMedia)return Promise.reject("Your browser does not support WebRTC. Please try another one.");u.width=640;var c=a(u),h=document.createElement("video");return window.navigator.mediaDevices.getUserMedia({video:c}).then(function(d){return h.srcObject=d,h.addEventListener("loadedmetadata",function(p){var f=h.videoWidth,g=h.videoHeight;h.width=f,h.height=g}),h},function(){return Promise.reject("Could not open your camera. You may have denied access.")})},l.prototype.setup=function(u){return u===void 0&&(u={}),e(this,void 0,void 0,function(){var c;return t(this,function(h){switch(h.label){case 0:return this.webcam?[3,2]:(c=this,[4,this.getWebcam(u)]);case 1:c.webcam=h.sent(),this.canvas||(this.canvas=document.createElement("canvas"),this.canvas.width=this.width,this.canvas.height=this.height),h.label=2;case 2:return[2]}})})},l.prototype.play=function(){var u=this.webcam.play();return u},l.prototype.pause=function(){this.webcam.pause()},l.prototype.stop=function(){this.stopStreamedVideo(this.webcam)},l.prototype.update=function(){this.renderCameraToCanvas()},l.prototype.stopStreamedVideo=function(u){var c=u.srcObject,h=c.getTracks();h.forEach(function(d){d.stop()}),u.srcObject=null},l.prototype.renderCameraToCanvas=function(){if(this.canvas&&this.webcam){var u=this.canvas.getContext("2d");if(this.webcam.videoWidth!==0){var c=r.cropTo(this.webcam,this.width,this.flip);u.drawImage(c,0,0)}}},n([s.default],l.prototype,"getWebcam",null),n([s.default],l.prototype,"setup",null),n([s.default],l.prototype,"play",null),n([s.default],l.prototype,"pause",null),n([s.default],l.prototype,"stop",null),n([s.default],l.prototype,"update",null),n([s.default],l.prototype,"stopStreamedVideo",null),n([s.default],l.prototype,"renderCameraToCanvas",null),l})();return ys.Webcam=i,ys}var Zk;function Qee(){return Zk||(Zk=1,(function(n){Object.defineProperty(n,"__esModule",{value:!0});var e=Mk();Object.defineProperty(n,"IMAGE_SIZE",{enumerable:!0,get:function(){return e.IMAGE_SIZE}}),Object.defineProperty(n,"CustomMobileNet",{enumerable:!0,get:function(){return e.CustomMobileNet}}),Object.defineProperty(n,"load",{enumerable:!0,get:function(){return e.load}}),Object.defineProperty(n,"loadFromFiles",{enumerable:!0,get:function(){return e.loadFromFiles}}),Object.defineProperty(n,"loadTruncatedMobileNet",{enumerable:!0,get:function(){return e.loadTruncatedMobileNet}});var t=Yee();Object.defineProperty(n,"TeachableMobileNet",{enumerable:!0,get:function(){return t.TeachableMobileNet}}),Object.defineProperty(n,"createTeachable",{enumerable:!0,get:function(){return t.createTeachable}});var s=Jee();Object.defineProperty(n,"Webcam",{enumerable:!0,get:function(){return s.Webcam}});var r=Lk();Object.defineProperty(n,"version",{enumerable:!0,get:function(){return r.version}})})(K0)),K0}var Jk=Qee();const Qk=bm({__proto__:null,default:Am(Jk)},[Jk]);var gn={},Kn={};const e2=yc(pee);var Je={};const ete=yc(By);var J0={},t2;function tte(){return t2||(t2=1,(function(n){Object.defineProperty(n,"__esModule",{value:!0}),n.partNames=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],n.NUM_KEYPOINTS=n.partNames.length,n.partIds=n.partNames.reduce(function(t,s,r){return t[s]=r,t},{});var e=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]];n.poseChain=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]],n.connectedPartIndices=e.map(function(t){var s=t[0],r=t[1];return[n.partIds[s],n.partIds[r]]}),n.partChannels=["left_face","right_face","right_upper_leg_front","right_lower_leg_back","right_upper_leg_back","left_lower_leg_front","left_upper_leg_front","left_upper_leg_back","left_lower_leg_back","right_feet","right_lower_leg_front","left_feet","torso_front","torso_back","right_upper_arm_front","right_upper_arm_back","right_lower_arm_back","left_lower_arm_front","left_upper_arm_front","left_upper_arm_back","left_lower_arm_back","right_hand","right_lower_arm_front","left_hand"]})(J0)),J0}var n2;function s2(){if(n2)return Je;n2=1;var n=Je&&Je.__awaiter||function(S,A,D,O){return new(D||(D=Promise))(function(F,_){function B(G){try{H(O.next(G))}catch(X){_(X)}}function U(G){try{H(O.throw(G))}catch(X){_(X)}}function H(G){G.done?F(G.value):new D(function(X){X(G.value)}).then(B,U)}H((O=O.apply(S,A||[])).next())})},e=Je&&Je.__generator||function(S,A){var D={label:0,sent:function(){if(_[0]&1)throw _[1];return _[1]},trys:[],ops:[]},O,F,_,B;return B={next:U(0),throw:U(1),return:U(2)},typeof Symbol=="function"&&(B[Symbol.iterator]=function(){return this}),B;function U(G){return function(X){return H([G,X])}}function H(G){if(O)throw new TypeError("Generator is already executing.");for(;D;)try{if(O=1,F&&(_=G[0]&2?F.return:G[0]?F.throw||((_=F.return)&&_.call(F),0):F.next)&&!(_=_.call(F,G[1])).done)return _;switch(F=0,_&&(G=[G[0]&2,_.value]),G[0]){case 0:case 1:_=G;break;case 4:return D.label++,{value:G[1],done:!1};case 5:D.label++,F=G[1],G=[0];continue;case 7:G=D.ops.pop(),D.trys.pop();continue;default:if(_=D.trys,!(_=_.length>0&&_[_.length-1])&&(G[0]===6||G[0]===2)){D=0;continue}if(G[0]===3&&(!_||G[1]>_[0]&&G[1]<_[3])){D.label=G[1];break}if(G[0]===6&&D.label<_[1]){D.label=_[1],_=G;break}if(_&&D.label<_[2]){D.label=_[2],D.ops.push(G);break}_[2]&&D.ops.pop(),D.trys.pop();continue}G=A.call(S,D)}catch(X){G=[6,X],F=0}finally{O=_=0}if(G[0]&5)throw G[1];return{value:G[0]?G[1]:void 0,done:!0}}};Object.defineProperty(Je,"__esModule",{value:!0});var t=ete,s=tte();function r(S,A,D){return S<D||A<D}function o(S,A){return s.connectedPartIndices.reduce(function(D,O){var F=O[0],_=O[1];return r(S[F].score,S[_].score,A)||D.push([S[F],S[_]]),D},[])}Je.getAdjacentKeyPoints=o;var a=Number.NEGATIVE_INFINITY,i=Number.POSITIVE_INFINITY;function l(S){return S.reduce(function(A,D){var O=A.maxX,F=A.maxY,_=A.minX,B=A.minY,U=D.position,H=U.x,G=U.y;return{maxX:Math.max(O,H),maxY:Math.max(F,G),minX:Math.min(_,H),minY:Math.min(B,G)}},{maxX:a,maxY:a,minX:i,minY:i})}Je.getBoundingBox=l;function u(S){var A=l(S),D=A.minX,O=A.minY,F=A.maxX,_=A.maxY;return[{x:D,y:O},{x:F,y:O},{x:F,y:_},{x:D,y:_}]}Je.getBoundingBoxPoints=u;function c(S){return n(this,void 0,void 0,function(){return e(this,function(A){return[2,Promise.all(S.map(function(D){return D.buffer()}))]})})}Je.toTensorBuffers3D=c;function h(S,A,D,O,F){return O===void 0&&(O=0),F===void 0&&(F=0),{score:S.score,keypoints:S.keypoints.map(function(_){var B=_.score,U=_.part,H=_.position;return{score:B,part:U,position:{x:H.x*D+F,y:H.y*A+O}}})}}Je.scalePose=h;function d(S,A,D,O,F){return O===void 0&&(O=0),F===void 0&&(F=0),D===1&&A===1&&O===0&&F===0?S:S.map(function(_){return h(_,A,D,O,F)})}Je.scalePoses=d;function p(S,A){return{score:S.score,keypoints:S.keypoints.map(function(D){var O=D.score,F=D.part,_=D.position;return{score:O,part:F,position:{x:A-1-_.x,y:_.y}}})}}Je.flipPoseHorizontal=p;function f(S,A){return A<=0?S:S.map(function(D){return p(D,A)})}Je.flipPosesHorizontal=f;function g(S,A){return x(S,A)?S:Math.floor(S/A)*A+1}Je.toValidInputResolution=g;function y(S){t.util.assert(typeof S=="number"||typeof S=="object",function(){return"Invalid inputResolution "+S+". Should be a number or an object with width and height"}),typeof S=="object"&&(t.util.assert(typeof S.width=="number",function(){return"inputResolution.width has a value of "+S.width+" which is invalid; it must be a number"}),t.util.assert(typeof S.height=="number",function(){return"inputResolution.height has a value of "+S.height+" which is invalid; it must be a number"}))}Je.validateInputResolution=y;function m(S,A){return y(S),typeof S=="object"?[g(S.height,A),g(S.width,A)]:[g(S,A),g(S,A)]}Je.getValidInputResolutionDimensions=m;var b=[8,16,32];function w(S){t.util.assert(typeof S=="number",function(){return"outputStride is not a number"}),t.util.assert(b.indexOf(S)>=0,function(){return"outputStride of "+S+" is invalid. It must be either 8, 16, or 32"})}Je.assertValidOutputStride=w;function x(S,A){return(S-1)%A===0}function v(S,A){t.util.assert(typeof S[0]=="number"&&typeof S[1]=="number",function(){return"both resolution values must be a number but had values "+S}),t.util.assert(x(S[0],A),function(){return"height of "+S[0]+" is invalid for output stride "+(A+".")}),t.util.assert(x(S[1],A),function(){return"width of "+S[1]+" is invalid for output stride "+(A+".")})}Je.assertValidResolution=v;function $(S){return S instanceof t.Tensor?[S.shape[0],S.shape[1]]:[S.height,S.width]}Je.getInputTensorDimensions=$;function I(S){return S instanceof t.Tensor?S:t.browser.fromPixels(S)}Je.toInputTensor=I;function E(S,A,D,O){return t.tidy(function(){var F=I(S);return O?t.image.resizeBilinear(t.reverse(F,1),[A,D]):t.image.resizeBilinear(F,[A,D])})}Je.toResizedInputTensor=E;function C(S,A){var D=A[0],O=A[1],F=$(S),_=F[0],B=F[1],U=O/D,H=B/_,G=[0,0,0,0],X=G[0],Z=G[1],K=G[2],ee=G[3];H<U?(X=0,Z=0,K=Math.round(.5*(U*_-B)),ee=Math.round(.5*(U*_-B))):(X=Math.round(.5*(1/U*B-_)),Z=Math.round(.5*(1/U*B-_)),K=0,ee=0);var ne=t.tidy(function(){var re=I(S);return re=t.pad3d(re,[[X,Z],[K,ee],[0,0]]),t.image.resizeBilinear(re,[D,O])});return{resized:ne,padding:{top:X,left:K,right:ee,bottom:Z}}}Je.padAndResizeTo=C;function T(S,A,D,O,F){var _=A[0],B=A[1],U=D[0],H=D[1],G=(_+O.top+O.bottom)/U,X=(B+O.left+O.right)/H,Z=d(S,G,X,-O.top,-O.left);return F?f(Z,B):Z}return Je.scaleAndFlipPoses=T,Je}var fm={},r2;function o2(){if(r2)return fm;r2=1;Object.defineProperty(fm,"__esModule",{value:!0});var n="0.8.6";return fm.version=n,fm}var a2;function i2(){if(a2)return Kn;a2=1;var n=Kn&&Kn.__awaiter||function(m,b,w,x){function v($){return $ instanceof w?$:new w(function(I){I($)})}return new(w||(w=Promise))(function($,I){function E(S){try{T(x.next(S))}catch(A){I(A)}}function C(S){try{T(x.throw(S))}catch(A){I(A)}}function T(S){S.done?$(S.value):v(S.value).then(E,C)}T((x=x.apply(m,b||[])).next())})},e=Kn&&Kn.__generator||function(m,b){var w={label:0,sent:function(){if($[0]&1)throw $[1];return $[1]},trys:[],ops:[]},x,v,$,I;return I={next:E(0),throw:E(1),return:E(2)},typeof Symbol=="function"&&(I[Symbol.iterator]=function(){return this}),I;function E(T){return function(S){return C([T,S])}}function C(T){if(x)throw new TypeError("Generator is already executing.");for(;w;)try{if(x=1,v&&($=T[0]&2?v.return:T[0]?v.throw||(($=v.return)&&$.call(v),0):v.next)&&!($=$.call(v,T[1])).done)return $;switch(v=0,$&&(T=[T[0]&2,$.value]),T[0]){case 0:case 1:$=T;break;case 4:return w.label++,{value:T[1],done:!1};case 5:w.label++,v=T[1],T=[0];continue;case 7:T=w.ops.pop(),w.trys.pop();continue;default:if($=w.trys,!($=$.length>0&&$[$.length-1])&&(T[0]===6||T[0]===2)){w=0;continue}if(T[0]===3&&(!$||T[1]>$[0]&&T[1]<$[3])){w.label=T[1];break}if(T[0]===6&&w.label<$[1]){w.label=$[1],$=T;break}if($&&w.label<$[2]){w.label=$[2],w.ops.push(T);break}$[2]&&w.ops.pop(),w.trys.pop();continue}T=b.call(m,w)}catch(S){T=[6,S],v=0}finally{x=$=0}if(T[0]&5)throw T[1];return{value:T[0]?T[1]:void 0,done:!0}}};Object.defineProperty(Kn,"__esModule",{value:!0});var t=qr,s=e2,r=s2(),o=o2(),a=e2,i=3,l=function(m){return m.packageVersion=m.packageVersion||o.version,m.packageName="@teachablemachine/pose",m.timeStamp=m.timeStamp||new Date().toISOString(),m.userMetadata=m.userMetadata||{},m.modelName=m.modelName||"untitled",m.labels=m.labels||[],m.modelSettings=h(m.modelSettings),m},u=function(m){return!!m&&Array.isArray(m.labels)},c=function(m){return n(void 0,void 0,void 0,function(){var b,w;return e(this,function(x){switch(x.label){case 0:return typeof m!="string"?[3,3]:[4,fetch(m)];case 1:return w=x.sent(),[4,w.json()];case 2:return b=x.sent(),[3,4];case 3:if(u(m))b=m;else throw new Error("Invalid Metadata provided");x.label=4;case 4:return[2,l(b)]}})})},h=function(m){return m===void 0&&(m={}),m.posenet||(m.posenet={}),m.posenet.architecture=m.posenet.architecture||"MobileNetV1",m.posenet.outputStride=m.posenet.outputStride||16,m.posenet.inputResolution=m.posenet.inputResolution||257,m.posenet.multiplier=m.posenet.multiplier||.75,m};function d(m,b,w){return w===void 0&&(w=3),n(this,void 0,void 0,function(){var x;return e(this,function(v){switch(v.label){case 0:return[4,b.data()];case 1:return x=v.sent(),[2,t.tidy(function(){w=Math.min(w,x.length);for(var $=[],I=0;I<x.length;I++)$.push({value:x[I],index:I});$.sort(function(S,A){return A.value-S.value});for(var E=new Float32Array(w),C=new Int32Array(w),I=0;I<w;I++)E[I]=$[I].value,C[I]=$[I].index;for(var T=[],I=0;I<C.length;I++)T.push({className:m[C[I]],probability:E[I]});return T})]}})})}Kn.getTopKClasses=d;var p=(function(){function m(b,w,x){this.model=b,this.posenetModel=w,this._metadata=l(x)}return m.prototype.getMetadata=function(){return this._metadata},m.prototype.getClassLabels=function(){return this._metadata.labels},m.prototype.getTotalClasses=function(){var b=this.model.output,w=b.shape[1];return w},m.prototype.estimatePose=function(b,w){return w===void 0&&(w=!1),n(this,void 0,void 0,function(){var x,v,$,I,E,C,T,S;return e(this,function(A){switch(A.label){case 0:return[4,this.estimatePoseOutputs(b)];case 1:return x=A.sent(),v=x.heatmapScores,$=x.offsets,I=x.displacementFwd,E=x.displacementBwd,C=x.padding,T=this.poseOutputsToAray(v,$,I,E),[4,this.poseOutputsToKeypoints(b,v,$,I,E,C,w)];case 2:return S=A.sent(),[2,{pose:S,posenetOutput:T}]}})})},m.prototype.estimatePoseOutputs=function(b){return n(this,void 0,void 0,function(){var w,x,v,$,I,E,C,T,S;return e(this,function(A){switch(A.label){case 0:return w=this.posenetModel.inputResolution,x=r.padAndResizeTo(b,w),v=x.resized,$=x.padding,[4,this.posenetModel.baseModel.predict(v)];case 1:return I=A.sent(),E=I.heatmapScores,C=I.offsets,T=I.displacementFwd,S=I.displacementBwd,v.dispose(),[2,{heatmapScores:E,offsets:C,displacementFwd:T,displacementBwd:S,padding:$}]}})})},m.prototype.poseOutputsToAray=function(b,w,x,v){var $=2,I=t.concat([b,w],$),E=I.dataSync();return I.dispose(),E},m.prototype.poseOutputsToKeypoints=function(b,w,x,v,$,I,E){return E===void 0&&(E=!1),n(this,void 0,void 0,function(){var C,T,S,A,D,O,F,_,B,U,H,G,X;return e(this,function(Z){switch(Z.label){case 0:return C={maxDetections:i,scoreThreshold:.5,nmsRadius:20},T=r.getInputTensorDimensions(b),S=T[0],A=T[1],D=this.posenetModel.baseModel.outputStride,O=this.posenetModel.inputResolution,[4,r.toTensorBuffers3D([w,x,v,$])];case 1:return F=Z.sent(),_=F[0],B=F[1],U=F[2],H=F[3],[4,a.decodeMultiplePoses(_,B,U,H,D,C.maxDetections,C.scoreThreshold,C.nmsRadius)];case 2:return G=Z.sent(),X=r.scaleAndFlipPoses(G,[S,A],O,I,E),w.dispose(),x.dispose(),v.dispose(),$.dispose(),[2,X[0]]}})})},m.prototype.predict=function(b){return n(this,void 0,void 0,function(){var w,x,v,$,I;return e(this,function(E){switch(E.label){case 0:return w=t.tensor([b]),x=this.model.predict(w),[4,x.data()];case 1:for(v=E.sent(),$=[],I=0;I<v.length;I++)$.push({className:this._metadata.labels[I],probability:v[I]});return w.dispose(),x.dispose(),[2,$]}})})},m.prototype.predictTopK=function(b,w){return w===void 0&&(w=i),n(this,void 0,void 0,function(){var x,v,$;return e(this,function(I){switch(I.label){case 0:return x=t.tensor([b]),v=this.model.predict(x),[4,d(this._metadata.labels,v,w)];case 1:return $=I.sent(),x.dispose(),v.dispose(),[2,$]}})})},m.prototype.dispose=function(){this.posenetModel.dispose()},m})();Kn.CustomPoseNet=p;function f(m){return m===void 0&&(m={}),n(this,void 0,void 0,function(){var b;return e(this,function(w){switch(w.label){case 0:return m=h(m),[4,s.load({architecture:m.posenet.architecture,outputStride:m.posenet.outputStride,inputResolution:m.posenet.inputResolution,multiplier:m.posenet.multiplier})];case 1:return b=w.sent(),[2,b]}})})}Kn.loadPoseNet=f;function g(m,b){return n(this,void 0,void 0,function(){var w,x,v,$;return e(this,function(I){switch(I.label){case 0:return[4,t.loadLayersModel(m)];case 1:return w=I.sent(),b?[4,c(b)]:[3,3];case 2:return v=I.sent(),[3,4];case 3:v=null,I.label=4;case 4:return x=v,[4,f(x.modelSettings)];case 5:return $=I.sent(),[2,new p(w,$,x)]}})})}Kn.load=g;function y(m,b,w){return n(this,void 0,void 0,function(){var x,v,$,I,E;return e(this,function(C){switch(C.label){case 0:return[4,t.loadLayersModel(t.io.browserFiles([m,b]))];case 1:return x=C.sent(),[4,new Response(w).json()];case 2:return v=C.sent(),w?[4,c(v)]:[3,4];case 3:return I=C.sent(),[3,5];case 4:I=null,C.label=5;case 5:return $=I,[4,f($.modelSettings)];case 6:return E=C.sent(),[2,new p(x,E,$)]}})})}return Kn.loadFromFiles=y,Kn}var bs={},l2;function nte(){if(l2)return bs;l2=1;var n=bs&&bs.__extends||(function(){var d=function(p,f){return d=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(g,y){g.__proto__=y}||function(g,y){for(var m in y)y.hasOwnProperty(m)&&(g[m]=y[m])},d(p,f)};return function(p,f){d(p,f);function g(){this.constructor=p}p.prototype=f===null?Object.create(f):(g.prototype=f.prototype,new g)}})(),e=bs&&bs.__awaiter||function(d,p,f,g){function y(m){return m instanceof f?m:new f(function(b){b(m)})}return new(f||(f=Promise))(function(m,b){function w($){try{v(g.next($))}catch(I){b(I)}}function x($){try{v(g.throw($))}catch(I){b(I)}}function v($){$.done?m($.value):y($.value).then(w,x)}v((g=g.apply(d,p||[])).next())})},t=bs&&bs.__generator||function(d,p){var f={label:0,sent:function(){if(m[0]&1)throw m[1];return m[1]},trys:[],ops:[]},g,y,m,b;return b={next:w(0),throw:w(1),return:w(2)},typeof Symbol=="function"&&(b[Symbol.iterator]=function(){return this}),b;function w(v){return function($){return x([v,$])}}function x(v){if(g)throw new TypeError("Generator is already executing.");for(;f;)try{if(g=1,y&&(m=v[0]&2?y.return:v[0]?y.throw||((m=y.return)&&m.call(y),0):y.next)&&!(m=m.call(y,v[1])).done)return m;switch(y=0,m&&(v=[v[0]&2,m.value]),v[0]){case 0:case 1:m=v;break;case 4:return f.label++,{value:v[1],done:!1};case 5:f.label++,y=v[1],v=[0];continue;case 7:v=f.ops.pop(),f.trys.pop();continue;default:if(m=f.trys,!(m=m.length>0&&m[m.length-1])&&(v[0]===6||v[0]===2)){f=0;continue}if(v[0]===3&&(!m||v[1]>m[0]&&v[1]<m[3])){f.label=v[1];break}if(v[0]===6&&f.label<m[1]){f.label=m[1],m=v;break}if(m&&f.label<m[2]){f.label=m[2],f.ops.push(v);break}m[2]&&f.ops.pop(),f.trys.pop();continue}v=p.call(d,f)}catch($){v=[6,$],y=0}finally{g=m=0}if(v[0]&5)throw v[1];return{value:v[0]?v[1]:void 0,done:!0}}};Object.defineProperty(bs,"__esModule",{value:!0});var s=qr,r=qr,o=i2(),a=V1(),i=.15;function l(d,p){var f=new Array(p).fill(0);return f[d]=1,f}function u(d,p){for(var f,g=d.length,y=d.slice(),m=g-1;m>0;m-=1){var b=void 0;p?b=Math.floor(p()*(m+1)):b=Math.floor(Math.random()*(m+1)),f=[y[b],y[m]],y[m]=f[0],y[b]=f[1]}return y}var c=(function(d){n(p,d);function p(f,g,y){var m=d.call(this,f,g,y)||this;return m.model=f,m.posenetModel=g,m.examples=[],m}return Object.defineProperty(p.prototype,"isTrained",{get:function(){return!!this.model&&this.model.layers&&this.model.layers.length>2},enumerable:!0,configurable:!0}),Object.defineProperty(p.prototype,"isPrepared",{get:function(){return!!this.trainDataset},enumerable:!0,configurable:!0}),Object.defineProperty(p.prototype,"numClasses",{get:function(){return this._metadata.labels.length},enumerable:!0,configurable:!0}),p.prototype.addExample=function(f,g){return e(this,void 0,void 0,function(){return t(this,function(y){return this.examples[f].push(g),[2]})})},p.prototype.predict=function(f){return e(this,void 0,void 0,function(){return t(this,function(g){if(!this.model)throw new Error("Model has not been trained yet, called train() first");return[2,d.prototype.predict.call(this,f)]})})},p.prototype.predictTopK=function(f,g){return g===void 0&&(g=3),e(this,void 0,void 0,function(){return t(this,function(y){if(!this.model)throw new Error("Model has not been trained yet, called train() first");return[2,d.prototype.predictTopK.call(this,f,g)]})})},p.prototype.prepare=function(){for(var f in this.examples)if(f.length===0)throw new Error("Add some examples before training");var g=this.convertToTfDataset();this.trainDataset=g.trainDataset,this.validationDataset=g.validationDataset},p.prototype.convertToTfDataset=function(){for(var f=0;f<this.examples.length;f++)this.examples[f]=u(this.examples[f],this.seed);for(var g=[],y=[],m=function(I){var E=l(I,b.numClasses),C=b.examples[I].length,T=Math.ceil(i*C),S=C-T,A=b.examples[I].slice(0,S).map(function(O){return{data:O,label:E}}),D=b.examples[I].slice(S).map(function(O){return{data:O,label:E}});g=g.concat(A),y=y.concat(D)},b=this,f=0;f<this.examples.length;f++)m(f);g=u(g,this.seed),y=u(y,this.seed);var w=s.data.array(g.map(function(I){return I.data})),x=s.data.array(y.map(function(I){return I.data})),v=s.data.array(g.map(function(I){return I.label})),$=s.data.array(y.map(function(I){return I.label}));return{trainDataset:s.data.zip({xs:w,ys:v}),validationDataset:s.data.zip({xs:x,ys:$})}},p.prototype.save=function(f,g){return e(this,void 0,void 0,function(){return t(this,function(y){return[2,this.model.save(f,g)]})})},p.prototype.train=function(f,g){return g===void 0&&(g={}),e(this,void 0,void 0,function(){var y,m,b,w,x,v,$,I=this;return t(this,function(E){switch(E.label){case 0:if(y=g.onTrainEnd||(function(){}),g.onTrainEnd=function(C){I.__stopTrainingResolve&&(I.__stopTrainingResolve(),I.__stopTrainingResolve=null),y(C)},this.isPrepared||this.prepare(),m=this.getLabels().length,r.util.assert(m===this.numClasses,function(){return"Can not train, has "+m+" labels and "+I.numClasses+" classes"}),b=this.examples[0][1].length,this.seed?w=s.initializers.varianceScaling({seed:3.14}):w=s.initializers.varianceScaling({}),this.model=s.sequential({layers:[s.layers.dense({inputShape:[b],units:f.denseUnits,activation:"relu",kernelInitializer:w,useBias:!0}),s.layers.dropout({rate:.5}),s.layers.dense({units:this.numClasses,kernelInitializer:w,useBias:!1,activation:"softmax"})]}),x=s.train.rmsprop(f.learningRate),this.model.compile({optimizer:x,loss:"categoricalCrossentropy",metrics:["accuracy"]}),!(f.batchSize>0))throw new Error("Batch size is 0 or NaN. Please choose a non-zero fraction");return v=this.trainDataset.batch(f.batchSize),$=this.validationDataset.batch(f.batchSize),[4,this.model.fitDataset(v,{epochs:f.epochs,validationData:$,callbacks:g})];case 1:return E.sent(),x.dispose(),[2,this.model]}})})},p.prototype.prepareDataset=function(){for(var f=0;f<this.numClasses;f++)this.examples[f]=[]},p.prototype.stopTraining=function(){var f=this,g=new Promise(function(y,m){f.model.stopTraining=!0,f.__stopTrainingResolve=y});return g},p.prototype.dispose=function(){this.model.dispose(),d.prototype.dispose.call(this)},p.prototype.setLabel=function(f,g){this._metadata.labels[f]=g},p.prototype.setLabels=function(f){this._metadata.labels=f,this.prepareDataset()},p.prototype.getLabel=function(f){return this._metadata.labels[f]},p.prototype.getLabels=function(){return this._metadata.labels},p.prototype.setName=function(f){this._metadata.modelName=f},p.prototype.getName=function(){return this._metadata.modelName},p.prototype.calculateAccuracyPerClass=function(){return e(this,void 0,void 0,function(){var f,g,y,m,b,w,x,v,$,I,F,E,C,T,S,A,D,O,F,_=this;return t(this,function(B){switch(B.label){case 0:return f=this.validationDataset.mapAsync(function(U){return e(_,void 0,void 0,function(){return t(this,function(H){return[2,U.xs]})})}),g=this.validationDataset.mapAsync(function(U){return e(_,void 0,void 0,function(){return t(this,function(H){return[2,U.ys]})})}),y=Math.min(g.size,32),m=Math.ceil(g.size/y),b=f.batch(y),w=g.batch(y),[4,b.iterator()];case 1:return x=B.sent(),[4,w.iterator()];case 2:v=B.sent(),$=[],I=[],F=0,B.label=3;case 3:return F<m?[4,x.next()]:[3,7];case 4:return E=B.sent(),C=this.model.predict(E.value),T=C.argMax(1),$.push(T),[4,v.next()];case 5:S=B.sent(),A=S.value.argMax(1),I.push(A),E.value.dispose(),C.dispose(),S.value.dispose(),B.label=6;case 6:return F++,[3,3];case 7:if(D=s.concat(I),O=s.concat($),m!==1)for(F=0;F<$.length;F++)$[F].dispose(),I[F].dispose();return[2,{reference:D,predictions:O}]}})})},p.prototype.setSeed=function(f){this.seed=a(f)},p})(o.CustomPoseNet);bs.TeachablePoseNet=c;function h(d){return e(this,void 0,void 0,function(){var p;return t(this,function(f){switch(f.label){case 0:return[4,o.loadPoseNet(d.modelSettings)];case 1:return p=f.sent(),[2,new c(s.sequential(),p,d)]}})})}return bs.createTeachable=h,bs}var zs={},qh={},u2;function c2(){if(u2)return qh;u2=1;Object.defineProperty(qh,"__esModule",{value:!0});var n=function(){return document.createElement("canvas")};function e(s,r,o){s===void 0&&(s=200),r===void 0&&(r=200),o===void 0&&(o=!1);var a=document.createElement("canvas");if(a.width=s,a.height=r,o){var i=a.getContext("2d");i.translate(s,0),i.scale(-1,1)}return a}qh.createCanvas=e;function t(s,r,o,a){o===void 0&&(o=!1),a===void 0&&(a=n());var i=s.width,l=s.height;s instanceof HTMLVideoElement&&(i=s.videoWidth,l=s.videoHeight);var u=Math.min(i,l),c=r/u,h=Math.ceil(i*c),d=Math.ceil(l*c),p=h-r,f=d-r;a.width=a.height=r;var g=a.getContext("2d");return g.drawImage(s,~~(p/2)*-1,~~(f/2)*-1,h,d),o&&(g.scale(-1,1),g.drawImage(a,r*-1,0)),a}return qh.cropTo=t,qh}var h2;function ste(){if(h2)return zs;h2=1;var n=zs&&zs.__decorate||function(l,u,c,h){var d=arguments.length,p=d<3?u:h===null?h=Object.getOwnPropertyDescriptor(u,c):h,f;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")p=Reflect.decorate(l,u,c,h);else for(var g=l.length-1;g>=0;g--)(f=l[g])&&(p=(d<3?f(p):d>3?f(u,c,p):f(u,c))||p);return d>3&&p&&Object.defineProperty(u,c,p),p},e=zs&&zs.__awaiter||function(l,u,c,h){function d(p){return p instanceof c?p:new c(function(f){f(p)})}return new(c||(c=Promise))(function(p,f){function g(b){try{m(h.next(b))}catch(w){f(w)}}function y(b){try{m(h.throw(b))}catch(w){f(w)}}function m(b){b.done?p(b.value):d(b.value).then(g,y)}m((h=h.apply(l,u||[])).next())})},t=zs&&zs.__generator||function(l,u){var c={label:0,sent:function(){if(p[0]&1)throw p[1];return p[1]},trys:[],ops:[]},h,d,p,f;return f={next:g(0),throw:g(1),return:g(2)},typeof Symbol=="function"&&(f[Symbol.iterator]=function(){return this}),f;function g(m){return function(b){return y([m,b])}}function y(m){if(h)throw new TypeError("Generator is already executing.");for(;c;)try{if(h=1,d&&(p=m[0]&2?d.return:m[0]?d.throw||((p=d.return)&&p.call(d),0):d.next)&&!(p=p.call(d,m[1])).done)return p;switch(d=0,p&&(m=[m[0]&2,p.value]),m[0]){case 0:case 1:p=m;break;case 4:return c.label++,{value:m[1],done:!1};case 5:c.label++,d=m[1],m=[0];continue;case 7:m=c.ops.pop(),c.trys.pop();continue;default:if(p=c.trys,!(p=p.length>0&&p[p.length-1])&&(m[0]===6||m[0]===2)){c=0;continue}if(m[0]===3&&(!p||m[1]>p[0]&&m[1]<p[3])){c.label=m[1];break}if(m[0]===6&&c.label<p[1]){c.label=p[1],p=m;break}if(p&&c.label<p[2]){c.label=p[2],c.ops.push(m);break}p[2]&&c.ops.pop(),c.trys.pop();continue}m=u.call(l,c)}catch(b){m=[6,b],d=0}finally{h=p=0}if(m[0]&5)throw m[1];return{value:m[0]?m[1]:void 0,done:!0}}};Object.defineProperty(zs,"__esModule",{value:!0});var s=Xk,r=c2(),o={facingMode:"user",frameRate:24},a=function(l){return l.facingMode=l.facingMode||o.facingMode,l.frameRate=l.frameRate||o.frameRate,l.aspectRatio=l.aspectRatio||o.aspectRatio,l},i=(function(){function l(u,c,h){u===void 0&&(u=400),c===void 0&&(c=400),h===void 0&&(h=!1),this.width=u,this.height=c,this.flip=h}return l.prototype.getWebcam=function(u){if(u===void 0&&(u={}),!window.navigator.mediaDevices||!window.navigator.mediaDevices.getUserMedia)return Promise.reject("Your browser does not support WebRTC. Please try another one.");u.width=640;var c=a(u),h=document.createElement("video");return window.navigator.mediaDevices.getUserMedia({video:c}).then(function(d){return h.srcObject=d,h.addEventListener("loadedmetadata",function(p){var f=h.videoWidth,g=h.videoHeight;h.width=f,h.height=g}),h},function(){return Promise.reject("Could not open your camera. You may have denied access.")})},l.prototype.setup=function(u){return u===void 0&&(u={}),e(this,void 0,void 0,function(){var c;return t(this,function(h){switch(h.label){case 0:return this.webcam?[3,2]:(c=this,[4,this.getWebcam(u)]);case 1:c.webcam=h.sent(),this.canvas||(this.canvas=document.createElement("canvas"),this.canvas.width=this.width,this.canvas.height=this.height),h.label=2;case 2:return[2]}})})},l.prototype.play=function(){var u=this.webcam.play();return u},l.prototype.pause=function(){this.webcam.pause()},l.prototype.stop=function(){this.stopStreamedVideo(this.webcam)},l.prototype.update=function(){this.renderCameraToCanvas()},l.prototype.stopStreamedVideo=function(u){var c=u.srcObject,h=c.getTracks();h.forEach(function(d){d.stop()}),u.srcObject=null},l.prototype.renderCameraToCanvas=function(){if(this.canvas&&this.webcam){var u=this.canvas.getContext("2d");if(this.webcam.videoWidth!==0){var c=r.cropTo(this.webcam,this.width,this.flip);u.drawImage(c,0,0)}}},n([s.default],l.prototype,"getWebcam",null),n([s.default],l.prototype,"setup",null),n([s.default],l.prototype,"play",null),n([s.default],l.prototype,"pause",null),n([s.default],l.prototype,"stop",null),n([s.default],l.prototype,"update",null),n([s.default],l.prototype,"stopStreamedVideo",null),n([s.default],l.prototype,"renderCameraToCanvas",null),l})();return zs.Webcam=i,zs}var Kr={},d2;function rte(){if(d2)return Kr;d2=1;Object.defineProperty(Kr,"__esModule",{value:!0});var n=s2(),e="aqua",t="aqua",s=4,r=2;function o(c,h,d,p,f,g,y){p===void 0&&(p=s),f===void 0&&(f=e),g===void 0&&(g=t),y===void 0&&(y=1);for(var m=0;m<c.length;m++){var b=c[m];if(!(b.score<h)){var w=b.position,x=w.y,v=w.x;a(d,x*y,v*y,p,f,g)}}}Kr.drawKeypoints=o;function a(c,h,d,p,f,g){c.fillStyle=f,c.strokeStyle=g,c.beginPath(),c.arc(d,h,p,0,2*Math.PI),c.fill(),c.stroke()}Kr.drawPoint=a;function i(c){return[c.y,c.x]}Kr.toTuple=i;function l(c,h,d,p,f,g){p===void 0&&(p=r),f===void 0&&(f=t),g===void 0&&(g=1);var y=n.getAdjacentKeyPoints(c,h);y.forEach(function(m){u(i(m[0].position),i(m[1].position),d,p,f,g)})}Kr.drawSkeleton=l;function u(c,h,d,p,f,g){var y=c[0],m=c[1],b=h[0],w=h[1];d.beginPath(),d.moveTo(m*g,y*g),d.lineTo(w*g,b*g),d.lineWidth=p,d.strokeStyle=f,d.stroke()}return Kr.drawSegment=u,Kr}var p2;function ote(){if(p2)return gn;p2=1;Object.defineProperty(gn,"__esModule",{value:!0});var n=i2();gn.CustomPoseNet=n.CustomPoseNet,gn.load=n.load,gn.loadFromFiles=n.loadFromFiles;var e=nte();gn.TeachablePoseNet=e.TeachablePoseNet,gn.createTeachable=e.createTeachable;var t=ste();gn.Webcam=t.Webcam;var s=c2();gn.createCanvas=s.createCanvas;var r=rte();gn.drawKeypoints=r.drawKeypoints,gn.drawSkeleton=r.drawSkeleton,gn.drawPoint=r.drawPoint,gn.drawSegment=r.drawSegment;var o=o2();return gn.version=o.version,gn}var Q0=ote();const f2=bm({__proto__:null,default:Am(Q0)},[Q0]),mm={name:"@kubohiroya/turbowarp-teachable-machine",version:"3.2.0",devDependencies:{"@teachablemachine/image":"0.8.5","@teachablemachine/pose":"0.8.6","@tensorflow-models/speech-commands":"0.5.4","@tensorflow/tfjs":"4.22.0","@tensorflow/tfjs-backend-wasm":"4.22.0","@tensorflow/tfjs-backend-webgpu":"4.22.0"}};class ate extends Error{code="TM-RUNTIME-ABORTED";constructor(){super("TM runtime model loading was cancelled."),this.name="AbortError"}}function ew(){return new ate}function Kh(n){if(n?.aborted)throw ew()}function tw(n){return typeof n=="object"&&n!==null}function ite(n){return tw(n)&&typeof n.dispose=="function"?n:null}function lte(n){if(n===void 0)return{};if(!tw(n))throw new TypeError("TM runtime load options must be an object.");const e=n.signal;if(e!==void 0&&(!tw(e)||typeof e.aborted!="boolean"||typeof e.addEventListener!="function"||typeof e.removeEventListener!="function"))throw new TypeError("TM runtime load signal must be an AbortSignal.");const t=n.parallelModelInitialization;if(t!==void 0&&typeof t!="boolean")throw new TypeError("parallelModelInitialization must be a boolean.");return{...e===void 0?{}:{signal:e},...t===void 0?{}:{parallelModelInitialization:t}}}async function nw(n){const e=[...new Set(n.map(ite).filter(s=>s!==null))];return(await Promise.allSettled(e.map(s=>Promise.resolve().then(()=>s.dispose())))).flatMap(s=>s.status==="rejected"?[s.reason]:[])}function sw(n,e){const t=[...n,...e];throw t.length===1?t[0]:new AggregateError(t,"TM runtime model loading and cleanup did not complete.")}function ute(n,e){return!e?.aborted||n?.name==="AbortError"?[n]:[ew(),n]}async function cte(n,e,t,s,r){let o,a;try{o=await n.loadClassifier(e,t),Kh(r);const i=await n.loadMetadata(s);return Kh(r),a=await n.loadPoseNet(i),Kh(r),n.createModel(o,a,i)}catch(i){const l=await nw([o,a]);sw(ute(i,r),l)}}function rw(n){try{return Promise.resolve(n())}catch(e){return Promise.reject(e)}}async function hte(n,e,t,s,r){const[o]=await Promise.allSettled([rw(()=>n.loadMetadata(s))]),a=o.status==="fulfilled"?o.value:void 0,i=await Promise.allSettled([rw(()=>n.loadClassifier(e,t)),o.status==="fulfilled"?rw(()=>n.loadPoseNet(a)):Promise.resolve(void 0)]),l=i[0].status==="fulfilled"?i[0].value:void 0,u=i[1].status==="fulfilled"?i[1].value:void 0,c=[...o.status==="rejected"?[o.reason]:[],...i.flatMap(h=>h.status==="rejected"?[h.reason]:[])];if(r?.aborted||c.length>0){const h=await nw([l,u]);sw([...r?.aborted?[ew()]:[],...c],h)}try{return n.createModel(l,u,a)}catch(h){const d=await nw([l,u]);sw([h],d)}}function dte(n){return async function(t,s,r,o){const a=lte(o);return Kh(a.signal),await n.ready(),Kh(a.signal),a.parallelModelInitialization?hte(n,t,s,r,a.signal):cte(n,t,s,r,a.signal)}}const pte=["auto","webgpu","webgl","wasm","cpu"],m2=Object.freeze(["webgpu","webgl","wasm","cpu"]),fte=Object.freeze({auto:"auto",automatic:"auto",default:"auto",fastest:"auto",自動:"auto",おまかせ:"auto",webgpu:"webgpu",gpu:"webgpu",webgl:"webgl",wasm:"wasm",webassembly:"wasm",simd:"wasm",cpu:"cpu",javascript:"cpu"});class mte extends Error{code="TM-COMPUTE-UNAVAILABLE";mode;attempts;constructor(e,t){const s=t.map(r=>`${r.backend}: ${r.reason}`).join("; ");super(`TM: No compute backend accepted mode "${e}". ${s}`),this.name="ComputeBackendUnavailableError",this.mode=e,this.attempts=Object.freeze([...t])}}function g2(n,e="auto"){const t=String(n??"").trim().toLowerCase();return t===""?e:fte[t]??e}function gte(n,e=m2){return Object.freeze(n==="auto"?[...e]:[n,...e.filter(t=>t!==n)])}function yte(n){const e=n?.message,t=String(e??n??"").trim();return t===""?"activation failed":t}async function bte(n,e="auto",t=m2){const s=e==="auto"?null:e,r=[];for(const o of gte(e,t))try{if(!await n.isSupported(o)){r.push({backend:o,reason:"not supported by this browser"});continue}if(await n.prepare(o),!await n.activate(o))throw new Error("TensorFlow.js did not switch to this backend");return await n.verify(o),Object.freeze({mode:e,backend:o,requested:s,fallback:s!==null&&s!==o,attempts:Object.freeze([...r])})}catch(a){r.push({backend:o,reason:yte(a)})}throw new mte(e,r)}function xte(n){const{tf:e}=n;let t=null,s=Promise.resolve(),r=!1;function o(l){return l==="webgpu"?n.hasWebGPU():l==="wasm"?n.hasWebAssembly():!0}const a={isSupported:o,async prepare(l){const u=await n.loadBackend(l);if(!(l!=="wasm"||r)){if(typeof u?.setWasmPaths!="function")throw new Error("the WebAssembly backend bundle did not expose setWasmPaths");u.setWasmPaths(n.wasmAssetBase()),r=!0}},async activate(l){return await e.setBackend(l)?(await e.ready(),e.getBackend()===l):!1},async verify(){const l=e.ones([1,4,4,1]),u=e.ones([3,3,1,1]);let c=null;try{c=e.conv2d(l,u,1,"valid");const h=await c.data();if(h.length!==4||Math.abs(Number(h[0])-9)>.001)throw new Error("the backend returned an incorrect convolution result")}finally{e.dispose([l,u,...c?[c]:[]])}}};function i(l){const u=s.then(l,l);return s=u.catch(()=>{}),u}return Object.freeze({modes:pte,select(l){const u=g2(l);return i(async()=>(t&&t.mode===u&&e.getBackend()===t.backend||(t=await bte(a,u)),t))},getSelection:()=>t,getMode:()=>t?.mode??"auto",getBackend:()=>e.getBackend(),isBackendSupported(l){const u=g2(l);return u==="auto"||o(u)}})}const Dt=globalThis;if(Dt.tf!==void 0&&Dt.tf!==tm)throw new Error("TM browser runtime found a different global TensorFlow.js instance.");if(Dt.tmPose!==void 0&&Dt.tmPose!==f2)throw new Error("TM browser runtime found a different global Teachable Machine Pose instance.");if(Dt.tmImage!==void 0&&Dt.tmImage!==Qk)throw new Error("TM browser runtime found a different global Teachable Machine Image instance.");if(Dt.speechCommands!==void 0&&Dt.speechCommands!==Ak)throw new Error("TM browser runtime found a different global speech-commands instance.");const su=mm.devDependencies,wte=`https://cdn.jsdelivr.net/npm/${mm.name}@${mm.version}/dist/`;function vte(){const n=typeof document>"u"?null:document.currentScript,e=n&&"src"in n?String(n.src??""):"";if(e!=="")try{return new URL("./",e).href}catch{}return wte}const gm=vte(),ow=new Map;function y2(n){const e=ow.get(n);if(e)return e;const t=new Promise((s,r)=>{const o=document.createElement("script");o.src=n,o.addEventListener("load",()=>s(),{once:!0}),o.addEventListener("error",()=>{ow.delete(n),r(new Error(`TM: Failed to load compute backend bundle: ${n}`))},{once:!0}),document.head.appendChild(o)});return ow.set(n,t),t}async function Ste(n){return n==="wasm"?(Dt.tmBackendWasm||await y2(new URL("backend-wasm.js",gm).href),Dt.tmBackendWasm??null):(n==="webgpu"&&(Dt.tmBackendWebGPU||await y2(new URL("backend-webgpu.js",gm).href)),null)}const Ite=xte({tf:tm,loadBackend:Ste,wasmAssetBase:()=>new URL("wasm/",gm).href,hasWebGPU:()=>typeof navigator<"u"&&navigator.gpu!==void 0&&navigator.gpu!==null,hasWebAssembly:()=>typeof WebAssembly=="object"&&typeof WebAssembly.instantiate=="function"});function Nte(n){const e=n?.modelSettings?.posenet??{};return{architecture:e.architecture??"MobileNetV1",outputStride:e.outputStride??16,inputResolution:e.inputResolution??257,multiplier:e.multiplier??.75}}const $te=dte({ready:()=>Wm(),loadClassifier:(n,e)=>fh(sv([n,e])),async loadMetadata(n){const e=await new Response(n).json();if(typeof e!="object"||e===null||!Array.isArray(e.labels))throw new Error("Invalid Metadata provided");return e},loadPoseNet:n=>yk(Nte(n)),createModel:(n,e,t)=>new Q0.CustomPoseNet(n,e,t)}),Cte=Object.freeze({...f2,loadFromFiles:$te}),Tte=Object.freeze({async load(n,e){const t=Ek("BROWSER_FFT",void 0,n,e);return await t.ensureModelLoaded(),t}});Dt.tf=tm,Dt.speechCommands=Ak,Dt.tmImage=Qk,Dt.tmPose=Cte,Dt.tmAudio=Tte,Dt.tmCompute=Ite;const b2=Object.freeze({version:mm.version,tensorflow:su["@tensorflow/tfjs"],tensorflowBackendWasm:su["@tensorflow/tfjs-backend-wasm"],tensorflowBackendWebGPU:su["@tensorflow/tfjs-backend-webgpu"],speechCommands:su["@tensorflow-models/speech-commands"],teachableMachineImage:su["@teachablemachine/image"],teachableMachinePose:su["@teachablemachine/pose"],assetBase:gm});Dt[Symbol.for("@kubohiroya/turbowarp-teachable-machine/runtime")]=b2,Dt[Symbol.for("@kubohiroya/turbowarp-teachablemachine/runtime")]=b2})();
|
|
5001
|
+
model.`);return s=q9(e,t),[4,jx(n.modelUrl||s)];case 1:return r=i.sent(),o=new Y9(r,e),a=lk(n.inputResolution,o.outputStride),[2,new B0(o,a)]}})})}function yk(n){return n===void 0&&(n=ck),Hr(this,void 0,void 0,function(){return jr(this,function(e){return(n=lee(n)).architecture==="ResNet50"?[2,hee(n)]:n.architecture==="MobileNetV1"?[2,cee(n)]:[2,null]})})}var dee="2.2.2";const pee=Object.freeze(Object.defineProperty({__proto__:null,MobileNet:UT,PoseNet:B0,decodeMultiplePoses:QT,decodeSinglePose:ek,getAdjacentKeyPoints:J9,getBoundingBox:ok,getBoundingBoxPoints:Q9,load:yk,partChannels:F9,partIds:Wh,partNames:eu,poseChain:GT,scaleAndFlipPoses:z0,scalePose:ak,version:dee},Symbol.toStringTag,{value:"Module"}));function fee(n){return(...e)=>new Promise((t,s)=>{n(...e,(r,o)=>{r?s(r):t(o)})})}var bk=function(n,e){return(bk=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,s){t.__proto__=s}||function(t,s){for(var r in s)s.hasOwnProperty(r)&&(t[r]=s[r])})(n,e)};function mee(n,e){function t(){this.constructor=n}bk(n,e),n.prototype=e===null?Object.create(e):(t.prototype=e.prototype,new t)}var V0=function(){return(V0=Object.assign||function(n){for(var e,t=1,s=arguments.length;t<s;t++)for(var r in e=arguments[t])Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}).apply(this,arguments)};function Ke(n,e,t,s){return new(t||(t=Promise))(function(r,o){function a(u){try{l(s.next(u))}catch(c){o(c)}}function i(u){try{l(s.throw(u))}catch(c){o(c)}}function l(u){var c;u.done?r(u.value):(c=u.value,c instanceof t?c:new t(function(h){h(c)})).then(a,i)}l((s=s.apply(n,[])).next())})}function Xe(n,e){var t,s,r,o,a={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return o={next:i(0),throw:i(1),return:i(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function i(l){return function(u){return(function(c){if(t)throw new TypeError("Generator is already executing.");for(;a;)try{if(t=1,s&&(r=2&c[0]?s.return:c[0]?s.throw||((r=s.return)&&r.call(s),0):s.next)&&!(r=r.call(s,c[1])).done)return r;switch(s=0,r&&(c=[2&c[0],r.value]),c[0]){case 0:case 1:r=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,s=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!(r=(r=a.trys).length>0&&r[r.length-1])&&(c[0]===6||c[0]===2)){a=0;continue}if(c[0]===3&&(!r||c[1]>r[0]&&c[1]<r[3])){a.label=c[1];break}if(c[0]===6&&a.label<r[1]){a.label=r[1],r=c;break}if(r&&a.label<r[2]){a.label=r[2],a.ops.push(c);break}r[2]&&a.ops.pop(),a.trys.pop();continue}c=e.call(n,a)}catch(h){c=[6,h],s=0}finally{t=r=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}})([l,u])}}}function mn(n){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&n[e],s=0;if(t)return t.call(n);if(n&&typeof n.length=="number")return{next:function(){return n&&s>=n.length&&(n=void 0),{value:n&&n[s++],done:!n}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function W0(n,e){var t=typeof Symbol=="function"&&n[Symbol.iterator];if(!t)return n;var s,r,o=t.call(n),a=[];try{for(;(e===void 0||e-- >0)&&!(s=o.next()).done;)a.push(s.value)}catch(i){r={error:i}}finally{try{s&&!s.done&&(t=o.return)&&t.call(o)}finally{if(r)throw r.error}}return a}function Uh(){for(var n=[],e=0;e<arguments.length;e++)n=n.concat(W0(arguments[e]));return n}function gee(n){return Ke(this,void 0,void 0,function(){var e,t,s,r,o,a,i;return Xe(this,function(l){switch(l.label){case 0:return e="http://",t="https://",s="file://",n.indexOf(e)!==0&&n.indexOf(t)!==0?[3,3]:[4,fetch(n)];case 1:return[4,l.sent().json()];case 2:return[2,l.sent()];case 3:return n.indexOf(s)!==0?[3,5]:(r=require("fs"),o=fee(r.readFile),i=(a=JSON).parse,[4,o(n.slice(s.length),{encoding:"utf-8"})]);case 4:return[2,i.apply(a,[l.sent()])];case 5:throw new Error("Unsupported URL scheme in metadata URL: "+n+". Supported schemes are: http://, https://, and (node.js-only) file://")}})})}var tu=null;function nu(n){return tu==null&&(tu=al().epsilon()),W(function(){var e=$r(n),t=e.mean,s=e.variance;return ie(ae(n,t),J(bt(s),tu))})}function xk(n){if(n.length<2)throw new Error("Cannot normalize a Float32Array with fewer than 2 elements.");return tu==null&&(tu=al().epsilon()),W(function(){var e=$r(it(n)),t=e.mean,s=e.variance,r=t.arraySync(),o=Math.sqrt(s.arraySync()),a=Array.from(n).map(function(i){return(i-r)/(o+tu)});return new Float32Array(a)})}function yee(){return window.AudioContext||window.webkitAudioContext}function bee(n){return Ke(this,void 0,void 0,function(){return Xe(this,function(e){return[2,navigator.mediaDevices.getUserMedia({audio:n==null||n,video:!1})]})})}function xee(n,e){var t=new(window.AudioContext||window.webkitAudioContext),s=t.createBuffer(1,n.data.length,n.sampleRateHz);s.getChannelData(0).set(n.data);var r=t.createBufferSource();r.buffer=s,r.connect(t.destination),r.start(),r.onended=function(){e?.()}}var U0=(function(){function n(e){var t=this;if(e==null)throw new Error("Required configuration object is missing for BrowserFftFeatureExtractor constructor");if(e.spectrogramCallback==null)throw new Error("spectrogramCallback cannot be null or undefined");if(!(e.numFramesPerSpectrogram>0))throw new Error("Invalid value in numFramesPerSpectrogram: "+e.numFramesPerSpectrogram);if(e.suppressionTimeMillis<0)throw new Error("Expected suppressionTimeMillis to be >= 0, but got "+e.suppressionTimeMillis);if(this.suppressionTimeMillis=e.suppressionTimeMillis,this.spectrogramCallback=e.spectrogramCallback,this.numFrames=e.numFramesPerSpectrogram,this.sampleRateHz=e.sampleRateHz||44100,this.fftSize=e.fftSize||1024,this.frameDurationMillis=this.fftSize/this.sampleRateHz*1e3,this.columnTruncateLength=e.columnTruncateLength||this.fftSize,this.overlapFactor=e.overlapFactor,this.includeRawAudio=e.includeRawAudio,k(this.overlapFactor>=0&&this.overlapFactor<1,function(){return"Expected overlapFactor to be >= 0 and < 1, but got "+t.overlapFactor}),this.columnTruncateLength>this.fftSize)throw new Error("columnTruncateLength "+this.columnTruncateLength+" exceeds fftSize ("+this.fftSize+").");this.audioContextConstructor=yee()}return n.prototype.start=function(e){return Ke(this,void 0,void 0,function(){var t,s,r;return Xe(this,function(o){switch(o.label){case 0:if(this.frameIntervalTask!=null)throw new Error("Cannot start already-started BrowserFftFeatureExtractor");return t=this,[4,bee(e)];case 1:return t.stream=o.sent(),this.audioContext=new this.audioContextConstructor({sampleRate:this.sampleRateHz}),s=this.audioContext.createMediaStreamSource(this.stream),this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=2*this.fftSize,this.analyser.smoothingTimeConstant=0,s.connect(this.analyser),this.freqDataQueue=[],this.freqData=new Float32Array(this.fftSize),this.includeRawAudio&&(this.timeDataQueue=[],this.timeData=new Float32Array(this.fftSize)),r=Math.max(1,Math.round(this.numFrames*(1-this.overlapFactor))),this.tracker=new wee(r,Math.round(this.suppressionTimeMillis/this.frameDurationMillis)),this.frameIntervalTask=setInterval(this.onAudioFrame.bind(this),this.fftSize/this.sampleRateHz*1e3),[2]}})})},n.prototype.onAudioFrame=function(){return Ke(this,void 0,void 0,function(){var e,t,s,r;return Xe(this,function(o){switch(o.label){case 0:return this.analyser.getFloatFrequencyData(this.freqData),this.freqData[0]===-1/0?[2]:(this.freqDataQueue.push(this.freqData.slice(0,this.columnTruncateLength)),this.includeRawAudio&&(this.analyser.getFloatTimeDomainData(this.timeData),this.timeDataQueue.push(this.timeData.slice())),this.freqDataQueue.length>this.numFrames&&this.freqDataQueue.shift(),this.tracker.tick()?(e=wk(this.freqDataQueue),t=vk(e,[1,this.numFrames,this.columnTruncateLength,1]),s=void 0,this.includeRawAudio&&(r=wk(this.timeDataQueue),s=vk(r,[1,this.numFrames*this.fftSize])),[4,this.spectrogramCallback(t,s)]):[3,2]);case 1:o.sent()&&this.tracker.suppress(),ge([t,s]),o.label=2;case 2:return[2]}})})},n.prototype.stop=function(){return Ke(this,void 0,void 0,function(){return Xe(this,function(e){if(this.frameIntervalTask==null)throw new Error("Cannot stop because there is no ongoing streaming activity.");return clearInterval(this.frameIntervalTask),this.frameIntervalTask=null,this.analyser.disconnect(),this.audioContext.close(),this.stream!=null&&this.stream.getTracks().length>0&&this.stream.getTracks()[0].stop(),[2]})})},n.prototype.setConfig=function(e){throw new Error("setConfig() is not implemented for BrowserFftFeatureExtractor.")},n.prototype.getFeatures=function(){throw new Error("getFeatures() is not implemented for BrowserFftFeatureExtractor. Use the spectrogramCallback field of the constructor config instead.")},n})();function wk(n){var e=n[0].length,t=new Float32Array(n.length*e);return n.forEach(function(s,r){return t.set(s,r*e)}),t}function vk(n,e){var t=new Float32Array(q(e));return t.set(n,t.length-n.length),Xt(t,e)}var wee=(function(){function n(e,t){var s=this;this.period=e,this.suppressionTime=t??0,this.counter=0,k(this.period>0,function(){return"Expected period to be positive, but got "+s.period})}return n.prototype.tick=function(){return this.counter++,this.counter%this.period==0&&(this.suppressionOnset==null||this.counter-this.suppressionOnset>this.suppressionTime)},n.prototype.suppress=function(){this.suppressionOnset=this.counter},n})();function rm(n){var e=0;n.forEach(function(r){e+=r.byteLength});var t=new Uint8Array(e),s=0;return n.forEach(function(r){t.set(new Uint8Array(r),s),s+=r.byteLength}),t.buffer}function Sk(n){var e=0;n.forEach(function(r){return e+=r.length});var t=new Float32Array(e),s=0;return n.forEach(function(r){t.set(r,s),s+=r.length}),t}function Ik(n){if(n==null)throw new Error("Received null or undefind string");for(var e=unescape(encodeURIComponent(n)),t=new Uint8Array(e.length),s=0;s<e.length;++s)t[s]=e.charCodeAt(s);return t.buffer}function Nk(n){if(n==null)throw new Error("Received null or undefind buffer");var e=new Uint8Array(n);return decodeURIComponent(escape(String.fromCharCode.apply(String,Uh(e))))}function vee(){function n(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return n()+n()+"-"+n()+"-"+n()+"-"+n()+"-"+n()+n()+n()}function See(n,e){return Math.floor((e-n)*Math.random())+n}function Iee(n,e,t){return k(t>0&&t<1,function(){return"validationSplit is expected to be >0 and <1, but got "+t}),W(function(){for(var s=Qn(e,-1).dataSync(),r=[],o=0;o<s.length;++o){var a=s[o];r[a]==null&&(r[a]=[]),r[a].push(o)}var i=r.length,l=[],u=[];for(r.map(function(p){return Qr(p)}),o=0;o<i;++o)for(var c=r[o],h=Math.round(c.length*(1-t)),d=0;d<c.length;++d)d<h?l.push(c[d]):u.push(c[d]);return{trainXs:ts(n,l),trainYs:ts(e,l),valXs:ts(n,u),valYs:ts(e,u)}})}function Nee(n,e,t){var s,r,o,a,i,l,u,c;k(t>0&&t<1,function(){return"validationSplit is expected to be >0 and <1, but got "+t});for(var h=!Array.isArray(n[0]),d=e,p=[],f=0;f<d.length;++f){var g=d[f];p[g]==null&&(p[g]=[]),p[g].push(f)}var y=p.length,m=[],b=[];for(p.map(function(H){return Qr(H)}),f=0;f<y;++f)for(var w=p[f],x=Math.round(w.length*(1-t)),v=0;v<w.length;++v)v<x?m.push(w[v]):b.push(w[v]);if(h){var $=[],I=[],E=[],C=[];try{for(var T=mn(m),S=T.next();!S.done;S=T.next()){var A=S.value;$.push(n[A]),I.push(e[A])}}catch(H){s={error:H}}finally{try{S&&!S.done&&(r=T.return)&&r.call(T)}finally{if(s)throw s.error}}try{for(var D=mn(b),O=D.next();!O.done;O=D.next())A=O.value,E.push(n[A]),C.push(e[A])}catch(H){o={error:H}}finally{try{O&&!O.done&&(a=D.return)&&a.call(D)}finally{if(o)throw o.error}}return{trainXs:$,trainYs:I,valXs:E,valYs:C}}$=[],I=[],E=[],C=[];try{for(var F=mn(m),_=F.next();!_.done;_=F.next())A=_.value,$.push(n[A]),I.push(e[A])}catch(H){i={error:H}}finally{try{_&&!_.done&&(l=F.return)&&l.call(F)}finally{if(i)throw i.error}}try{for(var B=mn(b),U=B.next();!U.done;U=B.next())A=U.value,E.push(n[A]),C.push(e[A])}catch(H){u={error:H}}finally{try{U&&!U.done&&(c=B.return)&&c.call(B)}finally{if(u)throw u.error}}return{trainXs:$,trainYs:I,valXs:E,valYs:C}}var om="TFJSSCDS",$ee=1,Ha="_background_noise_",G0=(function(){function n(e){if(this.examples={},this.label2Ids={},e!=null)for(var t=Eee(e),s=0,r=0;r<t.manifest.length;++r){var o=t.manifest[r],a=o.spectrogramNumFrames*o.spectrogramFrameSize;o.rawAudioNumSamples!=null&&(a+=o.rawAudioNumSamples),a*=4,this.addExample(Tee({spec:o,data:t.data.slice(s,s+a)})),s+=a}}return n.prototype.addExample=function(e){k(e!=null,function(){return"Got null or undefined example"}),k(e.label!=null&&e.label.length>0,function(){return"Expected label to be a non-empty string, but got "+JSON.stringify(e.label)});var t=vee();return this.examples[t]=e,e.label in this.label2Ids||(this.label2Ids[e.label]=[]),this.label2Ids[e.label].push(t),t},n.prototype.merge=function(e){var t,s,r,o;k(e!==this,function(){return"Cannot merge a dataset into itself"});var a=e.getVocabulary();try{for(var i=mn(a),l=i.next();!l.done;l=i.next()){var u=l.value,c=e.getExamples(u);try{for(var h=(r=void 0,mn(c)),d=h.next();!d.done;d=h.next()){var p=d.value;this.addExample(p.example)}}catch(f){r={error:f}}finally{try{d&&!d.done&&(o=h.return)&&o.call(h)}finally{if(r)throw r.error}}}}catch(f){t={error:f}}finally{try{l&&!l.done&&(s=i.return)&&s.call(i)}finally{if(t)throw t.error}}},n.prototype.getExampleCounts=function(){var e={};for(var t in this.examples){var s=this.examples[t];s.label in e||(e[s.label]=0),e[s.label]++}return e},n.prototype.getExamples=function(e){var t=this;k(e!=null,function(){return"Expected label to be a string, but got "+JSON.stringify(e)}),k(e in this.label2Ids,function(){return'No example of label "'+e+'" exists in dataset'});var s=[];return this.label2Ids[e].forEach(function(r){s.push({uid:r,example:t.examples[r]})}),s},n.prototype.getData=function(e,t){var s=this;k(this.size()>0,function(){return"Cannot get spectrograms as tensors because the dataset is empty"});var r=this.getVocabulary();e!=null?k(r.indexOf(e)!==-1,function(){return"Label "+e+" is not in the vocabulary ("+JSON.stringify(r)+")"}):k(r.length>1,function(){return"One-hot encoding of labels requires the vocabulary to have at least two words, but it has only "+r.length+" word."}),t==null&&(t={});var o,a,i=this.getSortedUniqueNumFrames();i.length===1?(o=t.numFrames==null?i[0]:t.numFrames,a=t.hopFrames==null?1:t.hopFrames):(o=t.numFrames,k(o!=null&&Number.isInteger(o)&&o>0,function(){return"There are "+i.length+" unique lengths among the "+s.size()+" examples of this Dataset, hence numFrames is required. But it is not provided."}),k(o<=i[0],function(){return"numFrames ("+o+") exceeds the minimum numFrames ("+i[0]+") among the examples of the Dataset."}),a=t.hopFrames,k(a!=null&&Number.isInteger(a)&&a>0,function(){return"There are "+i.length+" unique lengths among the "+s.size()+" examples of this Dataset, hence hopFrames is required. But it is not provided."}));var l=t.normalize==null||t.normalize;return W(function(){for(var u,c,h,d=[],p=[],f=[],g=0;g<r.length;++g){var y=r[g];if(e==null||y===e){var m=s.label2Ids[y],b=function(K){var ee,ne,re=s.examples[K].spectrogram,de=re.frameSize;h==null?h=de:k(de===h,function(){return"Mismatch in frameSize ("+de+" vs "+h+")"});var me=re.data.length/de,fe=null;y!==Ha&&(fe=re.keyFrameIndex==null?Ck(re).dataSync()[0]:re.keyFrameIndex);var xe=xa(re.data,[me,de,1]),Se=Aee(me,fe,o,a),Oe=function(_e){var Le=W(function(){var je=ke(xe,[_e[0],0,0],[_e[1]-_e[0],-1,-1]);return l?nu(je):je});t.getDataset?p.push(Le.dataSync()):d.push(Le),e==null&&f.push(g)};try{for(var Fe=(ee=void 0,mn(Se)),Ve=Fe.next();!Ve.done;Ve=Fe.next())Oe(Ve.value)}catch(_e){ee={error:_e}}finally{try{Ve&&!Ve.done&&(ne=Fe.return)&&ne.call(Fe)}finally{if(ee)throw ee.error}}ge(xe)};try{for(var w=(u=void 0,mn(m)),x=w.next();!x.done;x=w.next())b(x.value)}catch(K){u={error:K}}finally{try{x&&!x.done&&(c=w.return)&&c.call(w)}finally{if(u)throw u.error}}}}t.augmentByMixingNoiseRatio!=null&&s.augmentByMixingNoise(t.getDataset?p:d,f,t.augmentByMixingNoiseRatio);var v=t.shuffle==null||t.shuffle;if(t.getDataset){var $=t.datasetBatchSize==null?32:t.datasetBatchSize,I=t.datasetValidationSplit==null?.15:t.datasetValidationSplit;k(I>0&&I<1,function(){return"Invalid dataset validation split: "+I});var E=p.map(function(K,ee){return[K,f[ee]]});Qr(E),p=E.map(function(K){return K[0]});var C=E.map(function(K){return K[1]}),T=Nee(p,C,I),S=T.trainXs,A=T.trainYs,D=T.valXs,O=T.valYs,F=Sh(S).map(function(K){return xa(K,[o,h,1])}),_=Sh(A).map(function(K){return Vn(Ts([K],r.length),[0])}),B=Xx({xs:F,ys:_});v&&(B=B.shuffle(p.length)),B=B.batch($).prefetch(4);var U=Sh(D).map(function(K){return xa(K,[o,h,1])}),H=Sh(O).map(function(K){return Vn(Ts([K],r.length),[0])}),G=Xx({xs:U,ys:H});return[B,G=G.batch($).prefetch(4)]}if(v){var X=[];d.forEach(function(K,ee){X.push({x:K,y:f[ee]})}),Qr(X),d=X.map(function(K){return K.x}),f=X.map(function(K){return K.y})}var Z=e==null?te(Ts(it(f,"int32"),r.length),"float32"):void 0;return{xs:Pt(d),ys:Z}})},n.prototype.augmentByMixingNoise=function(e,t,s){var r,o;if(e==null||e.length===0)throw new Error("Cannot perform augmentation because data is null or empty");for(var a=e[0]instanceof Float32Array,i=this.getVocabulary(),l=[],u=[],c=0;c<t.length;++c)i[t[c]]===Ha?l.push(c):u.push(c);if(l.length===0)throw new Error("Cannot perform augmentation by mixing with noise when there is no example with label "+Ha);var h=[],d=[],p=function(y){var m=l[See(0,l.length)],b=a?it(e[y]):e[y],w=a?it(e[m]):e[m],x=W(function(){return nu(J(b,M(w,s)))});a?h.push(x.dataSync()):h.push(x),d.push(t[y])};try{for(var f=mn(u),g=f.next();!g.done;g=f.next())p(g.value)}catch(y){r={error:y}}finally{try{g&&!g.done&&(o=f.return)&&o.call(f)}finally{if(r)throw r.error}}console.log("Data augmentation: mixing noise: added "+h.length+" examples"),h.forEach(function(y){return e.push(y)}),t.push.apply(t,Uh(d))},n.prototype.getSortedUniqueNumFrames=function(){for(var e,t,s=new Set,r=this.getVocabulary(),o=0;o<r.length;++o){var a=r[o],i=this.label2Ids[a];try{for(var l=(e=void 0,mn(i)),u=l.next();!u.done;u=l.next()){var c=u.value,h=this.examples[c].spectrogram,d=h.data.length/h.frameSize;s.add(d)}}catch(f){e={error:f}}finally{try{u&&!u.done&&(t=l.return)&&t.call(l)}finally{if(e)throw e.error}}}var p=Uh(s);return p.sort(),p},n.prototype.removeExample=function(e){if(!(e in this.examples))throw new Error("Nonexistent example UID: "+e);var t=this.examples[e].label;delete this.examples[e];var s=this.label2Ids[t].indexOf(e);this.label2Ids[t].splice(s,1),this.label2Ids[t].length===0&&delete this.label2Ids[t]},n.prototype.setExampleKeyFrameIndex=function(e,t){if(!(e in this.examples))throw new Error("Nonexistent example UID: "+e);var s=this.examples[e].spectrogram,r=s.data.length/s.frameSize;k(t>=0&&t<r&&Number.isInteger(t),function(){return"Invalid keyFrameIndex: "+t+". Must be >= 0, < "+r+", and an integer."}),s.keyFrameIndex=t},n.prototype.size=function(){return Object.keys(this.examples).length},n.prototype.durationMillis=function(){var e=0;for(var t in this.examples){var s=this.examples[t].spectrogram,r=23.22|s.frameDurationMillis;e+=s.data.length/s.frameSize*r}return e},n.prototype.empty=function(){return this.size()===0},n.prototype.clear=function(){this.examples={}},n.prototype.getVocabulary=function(){var e=new Set;for(var t in this.examples){var s=this.examples[t];e.add(s.label)}var r=Uh(e);return r.sort(),r},n.prototype.serialize=function(e){var t,s,r,o,a=this.getVocabulary();k(!this.empty(),function(){return"Cannot serialize empty Dataset"}),e!=null&&(Array.isArray(e)||(e=[e]),e.forEach(function(m){if(a.indexOf(m)===-1)throw new Error('Word label "'+m+'" does not exist in the vocabulary of this dataset. The vocabulary is: '+JSON.stringify(a)+".")}));var i=[],l=[];try{for(var u=mn(a),c=u.next();!c.done;c=u.next()){var h=c.value;if(e==null||e.indexOf(h)!==-1){var d=this.label2Ids[h];try{for(var p=(r=void 0,mn(d)),f=p.next();!f.done;f=p.next()){var g=f.value,y=Cee(this.examples[g]);i.push(y.spec),l.push(y.data)}}catch(m){r={error:m}}finally{try{f&&!f.done&&(o=p.return)&&o.call(p)}finally{if(r)throw r.error}}}}}catch(m){t={error:m}}finally{try{c&&!c.done&&(s=u.return)&&s.call(u)}finally{if(t)throw t.error}}return kee({manifest:i,data:rm(l)})},n})();function Cee(n){var e=n.rawAudio!=null,t={label:n.label,spectrogramNumFrames:n.spectrogram.data.length/n.spectrogram.frameSize,spectrogramFrameSize:n.spectrogram.frameSize};n.spectrogram.keyFrameIndex!=null&&(t.spectrogramKeyFrameIndex=n.spectrogram.keyFrameIndex);var s=n.spectrogram.data.buffer.slice(0);return e&&(t.rawAudioNumSamples=n.rawAudio.data.length,t.rawAudioSampleRateHz=n.rawAudio.sampleRateHz,s=rm([s,n.rawAudio.data.buffer])),{spec:t,data:s}}function Tee(n){var e={frameSize:n.spec.spectrogramFrameSize,data:new Float32Array(n.data.slice(0,4*n.spec.spectrogramFrameSize*n.spec.spectrogramNumFrames))};n.spec.spectrogramKeyFrameIndex!=null&&(e.keyFrameIndex=n.spec.spectrogramKeyFrameIndex);var t={label:n.spec.label,spectrogram:e};return n.spec.rawAudioNumSamples!=null&&(t.rawAudio={sampleRateHz:n.spec.rawAudioSampleRateHz,data:new Float32Array(n.data.slice(4*n.spec.spectrogramFrameSize*n.spec.spectrogramNumFrames))}),t}function kee(n){var e=Ik(JSON.stringify(n.manifest)),t=Ik(om),s=new Uint32Array([$ee]),r=new Uint32Array([e.byteLength]);return rm([rm([t,s.buffer,r.buffer]),e,n.data])}function Eee(n){k(n!=null,function(){return"Received null or undefined buffer"});var e=0,t=Nk(n.slice(e,om.length));k(t===om,function(){return"Deserialization error: Invalid descriptor"}),e+=om.length,e+=4;var s=new Uint32Array(n,e,1),r=e+=4;e=r+s[0];var o=Nk(n.slice(r,e));return{manifest:JSON.parse(o),data:n.slice(e)}}function Aee(n,e,t,s){if(k(Number.isInteger(n)&&n>0,function(){return"snippetLength must be a positive integer, but got "+n}),e!=null&&k(Number.isInteger(e)&&e>=0,function(){return"focusIndex must be a non-negative integer, but got "+e}),k(Number.isInteger(t)&&t>0,function(){return"windowLength must be a positive integer, but got "+t}),k(Number.isInteger(s)&&s>0,function(){return"windowHop must be a positive integer, but got "+s}),k(t<=n,function(){return"windowLength ("+t+") exceeds snippetLength ("+n+")"}),k(e<n,function(){return"focusIndex ("+e+") equals or exceeds snippetLength ("+n+")"}),t===n)return[[0,n]];var r=[];if(e==null){for(var o=0;o+t<=n;)r.push([o,o+t]),o+=s;return r}var a=Math.floor(t/2),i=e-a;for(i<0?i=0:i+t>n&&(i=n-t);!(i-s<0||e>=i-s+t);)i-=s;for(;i+t<=n&&!(e<i);)r.push([i,i+t]),i+=s;return r}function $k(n){return W(function(){var e=n.data.length/n.frameSize,t=rs(n.data,[e,n.frameSize]);return qe(t,-1)})}function Ck(n){return W(function(){return Qn($k(n))})}var H0="0.5.4",Tk="_unknown_",Gh="tfjs-speech-commands-saved-model-metadata",j0="indexeddb://tfjs-speech-commands-model/",Hh={localStorage:typeof window>"u"?null:window.localStorage};function Ree(n){return n.split(".").slice(0,2).join(".")}var am=.25,kk=(function(){function n(e,t,s){this.MODEL_URL_PREFIX="https://storage.googleapis.com/tfjs-models/tfjs/speech-commands/v"+Ree(H0)+"/browser_fft",this.SAMPLE_RATE_HZ=44100,this.FFT_SIZE=1024,this.DEFAULT_SUPPRESSION_TIME_MILLIS=0,this.streaming=!1,this.transferRecognizers={},k(t==null&&s==null||t!=null&&s!=null,function(){return"modelURL and metadataURL must be both provided or both not provided."}),t==null?(e==null?e=n.DEFAULT_VOCABULARY_NAME:k(n.VALID_VOCABULARY_NAMES.indexOf(e)!==-1,function(){return"Invalid vocabulary name: '"+e+"'"}),this.vocabulary=e,this.modelArtifactsOrURL=this.MODEL_URL_PREFIX+"/"+this.vocabulary+"/model.json",this.metadataOrURL=this.MODEL_URL_PREFIX+"/"+this.vocabulary+"/metadata.json"):(k(e==null,function(){return"vocabulary name must be null or undefined when modelURL is provided"}),this.modelArtifactsOrURL=t,this.metadataOrURL=s),this.parameters={sampleRateHz:this.SAMPLE_RATE_HZ,fftSize:this.FFT_SIZE}}return n.prototype.listen=function(e,t){return Ke(this,void 0,void 0,function(){var s,r,o,a,i,l=this;return Xe(this,function(u){switch(u.label){case 0:if(this.streaming)throw new Error("Cannot start streaming again when streaming is ongoing.");return[4,this.ensureModelLoaded()];case 1:if(u.sent(),t==null&&(t={}),s=t.probabilityThreshold==null?0:t.probabilityThreshold,t.includeEmbedding&&(s=0),k(s>=0&&s<=1,function(){return"Invalid probabilityThreshold value: "+s}),r=t.invokeCallbackOnNoiseAndUnknown!=null&&t.invokeCallbackOnNoiseAndUnknown,t.includeEmbedding&&(r=!0),t.suppressionTimeMillis<0)throw new Error("suppressionTimeMillis is expected to be >= 0, but got "+t.suppressionTimeMillis);return o=t.overlapFactor==null?.5:t.overlapFactor,k(o>=0&&o<1,function(){return"Expected overlapFactor to be >= 0 and < 1, but got "+o}),a=function(c,h){return Ke(l,void 0,void 0,function(){var d,p,f,g,y,m,b,w,x,v,$;return Xe(this,function(I){switch(I.label){case 0:return d=nu(c),t.includeEmbedding?[4,this.ensureModelWithEmbeddingOutputCreated()]:[3,2];case 1:return I.sent(),$=W0(this.modelWithEmbeddingOutput.predict(d),2),p=$[0],f=$[1],[3,3];case 2:p=this.model.predict(d),I.label=3;case 3:return[4,p.data()];case 4:return g=I.sent(),[4,(y=p.argMax(-1)).data()];case 5:return m=I.sent()[0],b=Math.max.apply(Math,Uh(g)),ge([p,y,d]),b<s?[2,!1]:[3,6];case 6:return w=void 0,t.includeSpectrogram?(x={},[4,c.data()]):[3,8];case 7:x.data=I.sent(),x.frameSize=this.nonBatchInputShape[1],w=x,I.label=8;case 8:return v=!0,r||this.words[m]!==Ha&&this.words[m]!==Tk||(v=!1),v&&e({scores:g,spectrogram:w,embedding:f}),[2,v]}})})},i=t.suppressionTimeMillis==null?this.DEFAULT_SUPPRESSION_TIME_MILLIS:t.suppressionTimeMillis,this.audioDataExtractor=new U0({sampleRateHz:this.parameters.sampleRateHz,numFramesPerSpectrogram:this.nonBatchInputShape[0],columnTruncateLength:this.nonBatchInputShape[1],suppressionTimeMillis:i,spectrogramCallback:a,overlapFactor:o}),[4,this.audioDataExtractor.start(t.audioTrackConstraints)];case 2:return u.sent(),this.streaming=!0,[2]}})})},n.prototype.ensureModelLoaded=function(){return Ke(this,void 0,void 0,function(){var e,t,s,r,o=this;return Xe(this,function(a){switch(a.label){case 0:return this.model!=null?[2]:[4,this.ensureMetadataLoaded()];case 1:return a.sent(),typeof this.modelArtifactsOrURL!="string"?[3,3]:[4,fh(this.modelArtifactsOrURL)];case 2:return e=a.sent(),[3,5];case 3:return[4,fh(hv(this.modelArtifactsOrURL.modelTopology,this.modelArtifactsOrURL.weightSpecs,this.modelArtifactsOrURL.weightData))];case 4:e=a.sent(),a.label=5;case 5:if(e.inputs.length!==1)throw new Error("Expected model to have 1 input, but got a model with "+e.inputs.length+" inputs");if(e.inputs[0].shape.length!==4)throw new Error("Expected model to have an input shape of rank 4, but got an input shape of rank "+e.inputs[0].shape.length);if(e.inputs[0].shape[3]!==1)throw new Error("Expected model to have an input shape with 1 as the last dimension, but got input shape"+JSON.stringify(e.inputs[0].shape[3])+"}");if((t=e.outputShape).length!==2)throw new Error("Expected loaded model to have an output shape of rank 2,but received shape "+JSON.stringify(t));if(t[1]!==this.words.length)throw new Error("Mismatch between the last dimension of model's output shape ("+t[1]+") and number of words ("+this.words.length+").");return this.model=e,this.freezeModel(),this.nonBatchInputShape=e.inputs[0].shape.slice(1),this.elementsPerExample=1,e.inputs[0].shape.slice(1).forEach(function(i){return o.elementsPerExample*=i}),this.warmUpModel(),s=this.parameters.fftSize/this.parameters.sampleRateHz*1e3,r=e.inputs[0].shape[1],this.parameters.spectrogramDurationMillis=r*s,[2]}})})},n.prototype.ensureModelWithEmbeddingOutputCreated=function(){return Ke(this,void 0,void 0,function(){var e,t;return Xe(this,function(s){switch(s.label){case 0:return this.modelWithEmbeddingOutput!=null?[2]:[4,this.ensureModelLoaded()];case 1:for(s.sent(),t=this.model.layers.length-2;t>=0;--t)if(this.model.layers[t].getClassName()==="Dense"){e=this.model.layers[t];break}if(e==null)throw new Error("Failed to find second last dense layer in the original model.");return this.modelWithEmbeddingOutput=Sb({inputs:this.model.inputs,outputs:[this.model.outputs[0],e.output]}),[2]}})})},n.prototype.warmUpModel=function(){var e=this;W(function(){for(var t=at([1].concat(e.nonBatchInputShape)),s=0;s<3;++s)e.model.predict(t)})},n.prototype.ensureMetadataLoaded=function(){return Ke(this,void 0,void 0,function(){var e,t,s;return Xe(this,function(r){switch(r.label){case 0:return this.words!=null?[2]:typeof this.metadataOrURL!="string"?[3,2]:[4,gee(this.metadataOrURL)];case 1:return t=r.sent(),[3,3];case 2:t=this.metadataOrURL,r.label=3;case 3:if((e=t).wordLabels==null){if((s=e.words)==null)throw new Error('Cannot find field "words" or "wordLabels" in metadata JSON file');this.words=s}else this.words=e.wordLabels;return[2]}})})},n.prototype.stopListening=function(){return Ke(this,void 0,void 0,function(){return Xe(this,function(e){switch(e.label){case 0:if(!this.streaming)throw new Error("Cannot stop streaming when streaming is not ongoing.");return[4,this.audioDataExtractor.stop()];case 1:return e.sent(),this.streaming=!1,[2]}})})},n.prototype.isListening=function(){return this.streaming},n.prototype.wordLabels=function(){return this.words},n.prototype.params=function(){return this.parameters},n.prototype.modelInputShape=function(){if(this.model==null)throw new Error("Model has not been loaded yet. Load model by calling ensureModelLoaded(), recognize(), or listen().");return this.model.inputs[0].shape},n.prototype.recognize=function(e,t){return Ke(this,void 0,void 0,function(){var s,r,o,a,i,l,u,c,h,d,p,f,g;return Xe(this,function(y){switch(y.label){case 0:return t==null&&(t={}),[4,this.ensureModelLoaded()];case 1:return y.sent(),e!=null?[3,3]:[4,this.recognizeOnline()];case 2:s=y.sent(),e=s.data,y.label=3;case 3:if(e instanceof Te)this.checkInputTensorShape(e),o=e,r=e.shape[0];else{if(e.length%this.elementsPerExample)throw new Error("The length of the input Float32Array "+e.length+" is not divisible by the number of tensor elements per per example expected by the model "+this.elementsPerExample+".");r=e.length/this.elementsPerExample,o=hp(e,[r].concat(this.nonBatchInputShape))}return i={scores:null},t.includeEmbedding?[4,this.ensureModelWithEmbeddingOutputCreated()]:[3,5];case 4:return y.sent(),l=this.modelWithEmbeddingOutput.predict(o),a=l[0],i.embedding=l[1],[3,6];case 5:a=this.model.predict(o),y.label=6;case 6:return r!==1?[3,8]:(u=i,[4,a.data()]);case 7:return u.scores=y.sent(),[3,10];case 8:return c=hn(a),h=c.map(function(m){return m.data()}),d=i,[4,Promise.all(h)];case 9:d.scores=y.sent(),ge(c),y.label=10;case 10:return t.includeSpectrogram?(p=i,f={},e instanceof Te?[4,e.data()]:[3,12]):[3,14];case 11:return g=y.sent(),[3,13];case 12:g=e,y.label=13;case 13:p.spectrogram=(f.data=g,f.frameSize=this.nonBatchInputShape[1],f),y.label=14;case 14:return ge(a),[2,i]}})})},n.prototype.recognizeOnline=function(){return Ke(this,void 0,void 0,function(){var e=this;return Xe(this,function(t){return[2,new Promise(function(s,r){e.audioDataExtractor=new U0({sampleRateHz:e.parameters.sampleRateHz,numFramesPerSpectrogram:e.nonBatchInputShape[0],columnTruncateLength:e.nonBatchInputShape[1],suppressionTimeMillis:0,spectrogramCallback:function(o){return Ke(e,void 0,void 0,function(){var a,i,l;return Xe(this,function(u){switch(u.label){case 0:return a=nu(o),[4,this.audioDataExtractor.stop()];case 1:return u.sent(),i=s,l={},[4,a.data()];case 2:return i.apply(void 0,[(l.data=u.sent(),l.frameSize=this.nonBatchInputShape[1],l)]),a.dispose(),[2,!1]}})})},overlapFactor:0}),e.audioDataExtractor.start()})]})})},n.prototype.createTransfer=function(e){if(this.model==null)throw new Error("Model has not been loaded yet. Load model by calling ensureModelLoaded(), recognizer(), or listen().");k(e!=null&&typeof e=="string"&&e.length>1,function(){return"Expected the name for a transfer-learning recognized to be a non-empty string, but got "+JSON.stringify(e)}),k(this.transferRecognizers[e]==null,function(){return"There is already a transfer-learning model named '"+e+"'"});var t=new Dee(e,this.parameters,this.model);return this.transferRecognizers[e]=t,t},n.prototype.freezeModel=function(){var e,t;try{for(var s=mn(this.model.layers),r=s.next();!r.done;r=s.next())r.value.trainable=!1}catch(o){e={error:o}}finally{try{r&&!r.done&&(t=s.return)&&t.call(s)}finally{if(e)throw e.error}}},n.prototype.checkInputTensorShape=function(e){var t=this.model.inputs[0].shape.length;if(e.shape.length!==t)throw new Error("Expected input Tensor to have rank "+t+", but got rank "+e.shape.length+" that differs ");var s=e.shape.slice(1),r=this.model.inputs[0].shape.slice(1);if(!Ce(s,r))throw new Error("Expected input to have shape [null,"+r+"], but got shape [null,"+s+"]")},n.VALID_VOCABULARY_NAMES=["18w","directional4w"],n.DEFAULT_VOCABULARY_NAME="18w",n})(),Dee=(function(n){function e(t,s,r){var o=n.call(this)||this;return o.name=t,o.parameters=s,o.baseModel=r,k(t!=null&&typeof t=="string"&&t.length>0,function(){return"The name of a transfer model must be a non-empty string, but got "+JSON.stringify(t)}),o.nonBatchInputShape=o.baseModel.inputs[0].shape.slice(1),o.words=null,o.dataset=new G0,o}return mee(e,n),e.prototype.collectExample=function(t,s){return Ke(this,void 0,void 0,function(){var r,o,a,i,l=this;return Xe(this,function(u){if(k(!this.streaming,function(){return"Cannot start collection of transfer-learning example because a streaming recognition or transfer-learning example collection is ongoing"}),k(t!=null&&typeof t=="string"&&t.length>0,function(){return"Must provide a non-empty string when collecting transfer-learning example"}),s==null&&(s={}),s.durationMultiplier!=null&&s.durationSec!=null)throw new Error("durationMultiplier and durationSec are mutually exclusive, but are both specified.");return s.durationSec!=null?(k(s.durationSec>0,function(){return"Expected durationSec to be > 0, but got "+s.durationSec}),o=this.parameters.fftSize/this.parameters.sampleRateHz,r=Math.ceil(s.durationSec/o)):s.durationMultiplier!=null?(k(s.durationMultiplier>=1,function(){return"Expected duration multiplier to be >= 1, but got "+s.durationMultiplier}),r=Math.round(this.nonBatchInputShape[0]*s.durationMultiplier)):r=this.nonBatchInputShape[0],s.snippetDurationSec!=null&&(k(s.snippetDurationSec>0,function(){return"snippetDurationSec is expected to be > 0, but got "+s.snippetDurationSec}),k(s.onSnippet!=null,function(){return"onSnippet must be provided if snippetDurationSec is provided."})),s.onSnippet!=null&&k(s.snippetDurationSec!=null,function(){return"snippetDurationSec must be provided if onSnippet is provided."}),a=this.parameters.fftSize/this.parameters.sampleRateHz,i=a*r,this.streaming=!0,[2,new Promise(function(c){var h=s.snippetDurationSec==null?1:s.snippetDurationSec/i,d=1-h,p=Math.round(1/h),f=0,g=-1,y=[];l.audioDataExtractor=new U0({sampleRateHz:l.parameters.sampleRateHz,numFramesPerSpectrogram:r,columnTruncateLength:l.nonBatchInputShape[1],suppressionTimeMillis:0,spectrogramCallback:function(m,b){return Ke(l,void 0,void 0,function(){var w,x,v,$,I,E,C,T,S,A,D,O,F,_,B,U,H,G,X,Z;return Xe(this,function(K){switch(K.label){case 0:return s.onSnippet!=null?[3,7]:(w=nu(m),v=(x=this.dataset).addExample,$={label:t},I={},[4,w.data()]);case 1:return $.spectrogram=(I.data=K.sent(),I.frameSize=this.nonBatchInputShape[1],I),s.includeRawAudio?(C={},[4,b.data()]):[3,3];case 2:return C.data=K.sent(),C.sampleRateHz=this.audioDataExtractor.sampleRateHz,E=C,[3,4];case 3:E=void 0,K.label=4;case 4:return v.apply(x,[($.rawAudio=E,$)]),w.dispose(),[4,this.audioDataExtractor.stop()];case 5:return K.sent(),this.streaming=!1,this.collateTransferWords(),T=c,S={},[4,m.data()];case 6:return T.apply(void 0,[(S.data=K.sent(),S.frameSize=this.nonBatchInputShape[1],S)]),[3,13];case 7:return[4,m.data()];case 8:for(A=K.sent(),g===-1&&(g=A.length),D=g-1;A[D]!==0&&D>=0;)D--;return O=g-D-1,g=D+1,F=A.slice(A.length-O,A.length),y.push(F),s.onSnippet!=null&&s.onSnippet({data:F,frameSize:this.nonBatchInputShape[1]}),f++!==p?[3,13]:[4,this.audioDataExtractor.stop()];case 9:return K.sent(),this.streaming=!1,this.collateTransferWords(),_=xk(Sk(y)),B={data:_,frameSize:this.nonBatchInputShape[1]},H=(U=this.dataset).addExample,G={label:t,spectrogram:B},s.includeRawAudio?(Z={},[4,b.data()]):[3,11];case 10:return Z.data=K.sent(),Z.sampleRateHz=this.audioDataExtractor.sampleRateHz,X=Z,[3,12];case 11:X=void 0,K.label=12;case 12:H.apply(U,[(G.rawAudio=X,G)]),c(B),K.label=13;case 13:return[2,!1]}})})},overlapFactor:d,includeRawAudio:s.includeRawAudio}),l.audioDataExtractor.start(s.audioTrackConstraints)})]})})},e.prototype.clearExamples=function(){var t=this;k(this.words!=null&&this.words.length>0&&!this.dataset.empty(),function(){return"No transfer learning examples exist for model name "+t.name}),this.dataset.clear(),this.words=null},e.prototype.countExamples=function(){if(this.dataset.empty())throw new Error("No examples have been collected for transfer-learning model named '"+this.name+"' yet.");return this.dataset.getExampleCounts()},e.prototype.getExamples=function(t){return this.dataset.getExamples(t)},e.prototype.setExampleKeyFrameIndex=function(t,s){this.dataset.setExampleKeyFrameIndex(t,s)},e.prototype.removeExample=function(t){this.dataset.removeExample(t),this.collateTransferWords()},e.prototype.isDatasetEmpty=function(){return this.dataset.empty()},e.prototype.loadExamples=function(t,s){var r,o,a,i;s===void 0&&(s=!1);var l=new G0(t);s&&this.clearExamples();var u=l.getVocabulary();try{for(var c=mn(u),h=c.next();!h.done;h=c.next()){var d=h.value,p=l.getExamples(d);try{for(var f=(a=void 0,mn(p)),g=f.next();!g.done;g=f.next()){var y=g.value;this.dataset.addExample(y.example)}}catch(m){a={error:m}}finally{try{g&&!g.done&&(i=f.return)&&i.call(f)}finally{if(a)throw a.error}}}}catch(m){r={error:m}}finally{try{h&&!h.done&&(o=c.return)&&o.call(c)}finally{if(r)throw r.error}}this.collateTransferWords()},e.prototype.serializeExamples=function(t){return this.dataset.serialize(t)},e.prototype.collateTransferWords=function(){this.words=this.dataset.getVocabulary()},e.prototype.collectTransferDataAsTensors=function(t,s){var r=this.nonBatchInputShape[0];t=t||am;var o=Math.round(t*r),a=this.dataset.getData(null,V0({numFrames:r,hopFrames:o},s));return{xs:a.xs,ys:a.ys}},e.prototype.collectTransferDataAsTfDataset=function(t,s,r,o){s===void 0&&(s=.15),r===void 0&&(r=32);var a=this.nonBatchInputShape[0];t=t||am;var i=Math.round(t*a);return this.dataset.getData(null,V0({numFrames:a,hopFrames:i,getDataset:!0,datasetBatchSize:r,datasetValidationSplit:s},o))},e.prototype.train=function(t){return Ke(this,void 0,void 0,function(){var s,r=this;return Xe(this,function(o){return k(this.words!=null&&this.words.length>0,function(){return"Cannot train transfer-learning model '"+r.name+"' because no transfer learning example has been collected."}),k(this.words.length>1,function(){return"Cannot train transfer-learning model '"+r.name+"' because only 1 word label ('"+JSON.stringify(r.words)+"') has been collected for transfer learning. Requires at least 2."}),t.fineTuningEpochs!=null&&k(t.fineTuningEpochs>=0&&Number.isInteger(t.fineTuningEpochs),function(){return"If specified, fineTuningEpochs must be a non-negative integer, but received "+t.fineTuningEpochs}),t==null&&(t={}),this.model==null&&this.createTransferModelFromBaseModel(),this.secondLastBaseDenseLayer.trainable=!1,this.model.compile({loss:"categoricalCrossentropy",optimizer:t.optimizer||"sgd",metrics:["acc"]}),s=t.fitDatasetDurationMillisThreshold==null?6e4:t.fitDatasetDurationMillisThreshold,this.dataset.durationMillis()>s?(console.log("Detected large dataset: total duration = "+this.dataset.durationMillis()+" ms > "+s+" ms. Training transfer model using fitDataset() instead of fit()"),[2,this.trainOnDataset(t)]):[2,this.trainOnTensors(t)]})})},e.prototype.trainOnDataset=function(t){return Ke(this,void 0,void 0,function(){var s,r,o,a,i,l,u,c,h;return Xe(this,function(d){switch(d.label){case 0:return k(t.epochs>0,function(){return"Invalid config.epochs"}),s=t.batchSize==null?32:t.batchSize,r=t.windowHopRatio||am,o=W0(this.collectTransferDataAsTfDataset(r,t.validationSplit,s,{augmentByMixingNoiseRatio:t.augmentByMixingNoiseRatio}),2),a=o[0],i=o[1],l=lt(),[4,this.model.fitDataset(a,{epochs:t.epochs,validationData:t.validationSplit>0?i:null,callbacks:t.callback==null?null:[t.callback]})];case 1:return u=d.sent(),console.log("fitDataset() took "+(lt()-l).toFixed(2)+" ms"),t.fineTuningEpochs!=null&&t.fineTuningEpochs>0?(c=lt(),[4,this.fineTuningUsingTfDatasets(t,a,i)]):[3,3];case 2:return h=d.sent(),console.log("fitDataset() (fine-tuning) took "+(lt()-c).toFixed(2)+" ms"),[2,[u,h]];case 3:return[2,u]}})})},e.prototype.trainOnTensors=function(t){return Ke(this,void 0,void 0,function(){var s,r,o,a,i,l,u,c,h,d;return Xe(this,function(p){switch(p.label){case 0:s=t.windowHopRatio||am,r=this.collectTransferDataAsTensors(s,{augmentByMixingNoiseRatio:t.augmentByMixingNoiseRatio}),o=r.xs,a=r.ys,console.log("Training data: xs.shape = "+o.shape+", ys.shape = "+a.shape),p.label=1;case 1:return p.trys.push([1,,6,7]),t.validationSplit!=null?(c=Iee(o,a,t.validationSplit),i=c.trainXs,l=c.trainYs,u=[c.valXs,c.valYs]):(i=o,l=a),[4,this.model.fit(i,l,{epochs:t.epochs==null?20:t.epochs,validationData:u,batchSize:t.batchSize,callbacks:t.callback==null?null:[t.callback]})];case 2:return h=p.sent(),t.fineTuningEpochs!=null&&t.fineTuningEpochs>0?[4,this.fineTuningUsingTensors(t,i,l,u)]:[3,4];case 3:return d=p.sent(),[2,[h,d]];case 4:return[2,h];case 5:return[3,7];case 6:return ge([o,a,i,l,u]),[7];case 7:return[2]}})})},e.prototype.fineTuningUsingTfDatasets=function(t,s,r){return Ke(this,void 0,void 0,function(){var o,a,i;return Xe(this,function(l){switch(l.label){case 0:return o=this.secondLastBaseDenseLayer.trainable,this.secondLastBaseDenseLayer.trainable=!0,a=t.fineTuningOptimizer==null?"sgd":t.fineTuningOptimizer,this.model.compile({loss:"categoricalCrossentropy",optimizer:a,metrics:["acc"]}),[4,this.model.fitDataset(s,{epochs:t.fineTuningEpochs,validationData:r,callbacks:t.callback==null?null:[t.callback]})];case 1:return i=l.sent(),this.secondLastBaseDenseLayer.trainable=o,[2,i]}})})},e.prototype.fineTuningUsingTensors=function(t,s,r,o){return Ke(this,void 0,void 0,function(){var a,i,l;return Xe(this,function(u){switch(u.label){case 0:return a=this.secondLastBaseDenseLayer.trainable,this.secondLastBaseDenseLayer.trainable=!0,i=t.fineTuningOptimizer==null?"sgd":t.fineTuningOptimizer,this.model.compile({loss:"categoricalCrossentropy",optimizer:i,metrics:["acc"]}),[4,this.model.fit(s,r,{epochs:t.fineTuningEpochs,validationData:o,batchSize:t.batchSize,callbacks:t.fineTuningCallback==null?null:[t.fineTuningCallback]})];case 1:return l=u.sent(),this.secondLastBaseDenseLayer.trainable=a,[2,l]}})})},e.prototype.evaluate=function(t){return Ke(this,void 0,void 0,function(){var s,r=this;return Xe(this,function(o){return k(t.wordProbThresholds!=null&&t.wordProbThresholds.length>0,function(){return"Received null or empty wordProbThresholds"}),s=0,k(this.words[s]===Ha,function(){return"Cannot perform evaluation when the first tag is not "+Ha}),[2,W(function(){for(var a=[],i=0,l=r.collectTransferDataAsTensors(t.windowHopRatio),u=l.xs,c=l.ys.argMax(-1).dataSync(),h=r.model.predict(u),d=ln(ke(h,[0,1],[h.shape[0],h.shape[1]-1]),-1),p=h.shape[0],f=0;f<t.wordProbThresholds.length;++f){for(var g=t.wordProbThresholds[f],y=d.greater(ue(g)).dataSync(),m=0,b=0,w=0,x=0,v=0;v<p;++v)c[v]===s?(m++,y[v]&&w++):(b++,y[v]&&x++);var $=w/m,I=x/b;a.push({probThreshold:g,fpr:$,tpr:I}),console.log("ROC thresh="+g+": fpr="+$.toFixed(4)+", tpr="+I.toFixed(4)),f>0&&(i+=Math.abs(a[f-1].fpr-a[f].fpr)*(a[f-1].tpr+a[f].tpr)/2)}return{rocCurve:a,auc:i}})]})})},e.prototype.createTransferModelFromBaseModel=function(){var t=this;k(this.words!=null,function(){return"No word example is available for tranfer-learning model of name "+t.name});for(var s=this.baseModel.layers,r=s.length-2;r>=0&&s[r].getClassName().toLowerCase()!=="dense";)r--;if(r<0)throw new Error("Cannot find a hidden dense layer in the base model.");this.secondLastBaseDenseLayer=s[r];var o=this.secondLastBaseDenseLayer.output;this.transferHead=tI(),this.transferHead.add(MI({units:this.words.length,activation:"softmax",inputShape:o.shape.slice(1),name:"NewHeadDense"}));var a=this.transferHead.apply(o);this.model=Sb({inputs:this.baseModel.inputs,outputs:a})},e.prototype.modelInputShape=function(){return this.baseModel.inputs[0].shape},e.prototype.getMetadata=function(){return{tfjsSpeechCommandsVersion:H0,modelName:this.name,timeStamp:new Date().toISOString(),wordLabels:this.wordLabels()}},e.prototype.save=function(t){return Ke(this,void 0,void 0,function(){var s,r,o;return Xe(this,function(a){return s=t!=null,t=t||q0(this.name),s||(r=Hh.localStorage.getItem(Gh),(o=r==null?{}:JSON.parse(r))[this.name]=this.getMetadata(),Hh.localStorage.setItem(Gh,JSON.stringify(o))),console.log("Saving model to "+t),[2,this.model.save(t)]})})},e.prototype.load=function(t){return Ke(this,void 0,void 0,function(){var s,r,o;return Xe(this,function(a){switch(a.label){case 0:if(s=t!=null,t=t||q0(this.name),!s){if((r=JSON.parse(Hh.localStorage.getItem(Gh)))==null||r[this.name]==null)throw new Error("Cannot find metadata for transfer model named "+this.name+'"');this.words=r[this.name].wordLabels,console.log("Loaded word list for model named "+this.name+": "+this.words)}return o=this,[4,fh(t)];case 1:return o.model=a.sent(),console.log("Loaded model from "+t+":"),this.model.summary(),[2]}})})},e.prototype.createTransfer=function(t){throw new Error("Creating transfer-learned recognizer from a transfer-learned recognizer is not supported.")},e})(kk);function q0(n){return""+j0+n}function _ee(){return Ke(this,void 0,void 0,function(){var n,e,t;return Xe(this,function(s){switch(s.label){case 0:return[4,S1()];case 1:for(t in n=s.sent(),e=[],n)t.startsWith(j0)&&e.push(t.slice(j0.length));return[2,e]}})})}function Oee(n){return Ke(this,void 0,void 0,function(){var e;return Xe(this,function(t){switch(t.label){case 0:return(e=JSON.parse(Hh.localStorage.getItem(Gh)))==null&&(e={}),e[n]!=null&&delete e[n],Hh.localStorage.setItem(Gh,JSON.stringify(e)),[4,I1(q0(n))];case 1:return t.sent(),[2]}})})}function Ek(n,e,t,s){if(k(t==null&&s==null||t!=null&&s!=null,function(){return"customModelURL and customMetadataURL must be both provided or both not provided."}),t!=null&&k(e==null,function(){return"vocabulary name must be null or undefined when modelURL is provided."}),n==="BROWSER_FFT")return new kk(e,t,s);throw n==="SOFT_FFT"?new Error("SOFT_FFT SpeechCommandRecognizer has not been implemented yet."):new Error("Invalid fftType: '"+n+"'")}var Fee={concatenateFloat32Arrays:Sk,normalizeFloat32Array:xk,normalize:nu,playRawAudio:xee};const Ak=Object.freeze(Object.defineProperty({__proto__:null,BACKGROUND_NOISE_TAG:Ha,Dataset:G0,UNKNOWN_TAG:Tk,create:Ek,deleteSavedTransferModel:Oee,getMaxIntensityFrameIndex:Ck,listSavedTransferModels:_ee,spectrogram2IntensityCurve:$k,utils:Fee,version:H0},Symbol.toStringTag,{value:"Module"}));var K0={},ja={};const qr=yc(tm);var qa={},Rk;function Dk(){if(Rk)return qa;Rk=1;Object.defineProperty(qa,"__esModule",{value:!0}),qa.cropTensor=qa.capture=void 0;var n=qr;function e(s,r){return n.tidy(function(){var o=n.browser.fromPixels(s),a=t(o,r),i=a.expandDims(0);return i.toFloat().div(n.scalar(127)).sub(n.scalar(1))})}qa.capture=e;function t(s,r,o){var a=Math.min(s.shape[0],s.shape[1]),i=s.shape[0]/2,l=i-a/2,u=s.shape[1]/2,c=u-a/2;if(r&&!o){var h=s.slice([l,c,0],[a,a,3]);h=h.reshape([a*a,1,3]);var d=[.2989,.587,.114];return h=n.mul(h,d),h=h.reshape([a,a,3]),h=n.sum(h,-1),h=n.expandDims(h,-1),h}return s.slice([l,c,0],[a,a,3])}return qa.cropTensor=t,qa}var gs={},_k;function Ok(){if(_k)return gs;_k=1;Object.defineProperty(gs,"__esModule",{value:!0}),gs.cropTo=gs.resizeMinTo=gs.resizeMaxTo=gs.resize=void 0;var n=function(){return document.createElement("canvas")};function e(o,a,i){i===void 0&&(i=n()),i.width=o.width*a,i.height=o.height*a;var l=i.getContext("2d");return l.drawImage(o,0,0,i.width,i.height),i}gs.resize=e;function t(o,a,i){i===void 0&&(i=n());var l=Math.max(o.width,o.height);return e(o,a/l,i)}gs.resizeMaxTo=t;function s(o,a,i){i===void 0&&(i=n());var l=Math.min(o.width,o.height);return e(o,a/l,i)}gs.resizeMinTo=s;function r(o,a,i,l){i===void 0&&(i=!1),l===void 0&&(l=n());var u=o.width,c=o.height;o instanceof HTMLVideoElement&&(u=o.videoWidth,c=o.videoHeight);var h=Math.min(u,c),d=a/h,p=Math.ceil(u*d),f=Math.ceil(c*d),g=p-a,y=f-a;l.width=l.height=a;var m=l.getContext("2d");return m.drawImage(o,~~(g/2)*-1,~~(y/2)*-1,p,f),i&&(m.scale(-1,1),m.drawImage(l,a*-1,0)),l}return gs.cropTo=r,gs}var jh={},Fk;function Lk(){if(Fk)return jh;Fk=1;Object.defineProperty(jh,"__esModule",{value:!0}),jh.version=void 0;var n="0.8.4-alpha2";return jh.version=n,jh}var Pk;function Mk(){return Pk||(Pk=1,(function(n){var e=ja&&ja.__awaiter||function(I,E,C,T){function S(A){return A instanceof C?A:new C(function(D){D(A)})}return new(C||(C=Promise))(function(A,D){function O(B){try{_(T.next(B))}catch(U){D(U)}}function F(B){try{_(T.throw(B))}catch(U){D(U)}}function _(B){B.done?A(B.value):S(B.value).then(O,F)}_((T=T.apply(I,E||[])).next())})},t=ja&&ja.__generator||function(I,E){var C={label:0,sent:function(){if(A[0]&1)throw A[1];return A[1]},trys:[],ops:[]},T,S,A,D;return D={next:O(0),throw:O(1),return:O(2)},typeof Symbol=="function"&&(D[Symbol.iterator]=function(){return this}),D;function O(_){return function(B){return F([_,B])}}function F(_){if(T)throw new TypeError("Generator is already executing.");for(;C;)try{if(T=1,S&&(A=_[0]&2?S.return:_[0]?S.throw||((A=S.return)&&A.call(S),0):S.next)&&!(A=A.call(S,_[1])).done)return A;switch(S=0,A&&(_=[_[0]&2,A.value]),_[0]){case 0:case 1:A=_;break;case 4:return C.label++,{value:_[1],done:!1};case 5:C.label++,S=_[1],_=[0];continue;case 7:_=C.ops.pop(),C.trys.pop();continue;default:if(A=C.trys,!(A=A.length>0&&A[A.length-1])&&(_[0]===6||_[0]===2)){C=0;continue}if(_[0]===3&&(!A||_[1]>A[0]&&_[1]<A[3])){C.label=_[1];break}if(_[0]===6&&C.label<A[1]){C.label=A[1],A=_;break}if(A&&C.label<A[2]){C.label=A[2],C.ops.push(_);break}A[2]&&C.ops.pop(),C.trys.pop();continue}_=E.call(I,C)}catch(B){_=[6,B],S=0}finally{T=A=0}if(_[0]&5)throw _[1];return{value:_[0]?_[1]:void 0,done:!0}}};Object.defineProperty(n,"__esModule",{value:!0}),n.loadFromFiles=n.load=n.loadTruncatedMobileNet=n.CustomMobileNet=n.getTopKClasses=n.IMAGE_SIZE=void 0;var s=qr,r=qr,o=Dk(),a=Ok(),i=Lk(),l=1,u="conv_pw_13_relu",c="out_relu",h=.25,d=.35;n.IMAGE_SIZE=224;var p=function(I){return I.packageVersion=I.packageVersion||i.version,I.packageName=I.packageName||"@teachablemachine/image",I.timeStamp=I.timeStamp||new Date().toISOString(),I.userMetadata=I.userMetadata||{},I.modelName=I.modelName||"untitled",I.labels=I.labels||[],I.imageSize=I.imageSize||n.IMAGE_SIZE,I},f=function(I){return!!I&&Array.isArray(I.labels)},g=function(I,E){if(I===1){if(E!==.25&&E!==.5&&E!==.75&&E!==1)return console.warn("Invalid alpha. Options are: 0.25, 0.50, 0.75 or 1.00."),console.log("Loading model with alpha: ",h.toFixed(2)),h}else if(E!==.35&&E!==.5&&E!==.75&&E!==1)return console.warn("Invalid alpha. Options are: 0.35, 0.50, 0.75 or 1.00."),console.log("Loading model with alpha: ",d.toFixed(2)),d;return E},y=function(I){if(I=I||{},I.checkpointUrl&&I.trainingLayer)return(I.alpha||I.version)&&console.warn("Checkpoint URL passed to modelOptions, alpha options are ignored"),[I.checkpointUrl,I.trainingLayer];if(I.version=I.version||l,I.version===1){I.alpha=I.alpha||h,I.alpha=g(I.version,I.alpha),console.log("Loading mobilenet "+I.version+" and alpha "+I.alpha);var E=I.alpha.toFixed(2);return E==="1.00"&&(E="1.0"),["https://storage.googleapis.com/tfjs-models/tfjs/mobilenet_v1_"+E+"_"+n.IMAGE_SIZE+"/model.json",u]}else{if(I.version===2)return I.alpha=I.alpha||d,I.alpha=g(I.version,I.alpha),console.log("Loading mobilenet "+I.version+" and alpha "+I.alpha),["https://storage.googleapis.com/teachable-machine-models/mobilenet_v2_weights_tf_dim_ordering_tf_kernels_"+I.alpha.toFixed(2)+"_"+n.IMAGE_SIZE+"_no_top/model.json",c];throw new Error("MobileNet V"+I.version+" doesn't exist")}},m=function(I){return e(void 0,void 0,void 0,function(){var E,C;return t(this,function(T){switch(T.label){case 0:return typeof I!="string"?[3,3]:[4,fetch(I)];case 1:return C=T.sent(),[4,C.json()];case 2:return E=T.sent(),[3,4];case 3:if(f(I))E=I;else throw new Error("Invalid Metadata provided");T.label=4;case 4:return[2,p(E)]}})})};function b(I,E,C){return C===void 0&&(C=3),e(this,void 0,void 0,function(){var T;return t(this,function(S){switch(S.label){case 0:return[4,E.data()];case 1:return T=S.sent(),[2,s.tidy(function(){C=Math.min(C,T.length);for(var A=[],D=0;D<T.length;D++)A.push({value:T[D],index:D});A.sort(function(B,U){return U.value-B.value});for(var O=new Float32Array(C),F=new Int32Array(C),D=0;D<C;D++)O[D]=A[D].value,F[D]=A[D].index;for(var _=[],D=0;D<F.length;D++)_.push({className:I[F[D]],probability:O[D]});return _})]}})})}n.getTopKClasses=b;var w=(function(){function I(E,C){this.model=E,this._metadata=p(C)}return Object.defineProperty(I,"EXPECTED_IMAGE_SIZE",{get:function(){return n.IMAGE_SIZE},enumerable:!1,configurable:!0}),I.prototype.getMetadata=function(){return this._metadata},I.prototype.getTotalClasses=function(){var E=this.model.output,C=E.shape[1];return C},I.prototype.getClassLabels=function(){return this._metadata.labels},I.prototype.predictTopK=function(E,C,T){return C===void 0&&(C=10),T===void 0&&(T=!1),e(this,void 0,void 0,function(){var S,A,D,O=this;return t(this,function(F){switch(F.label){case 0:return S=a.cropTo(E,this._metadata.imageSize,T),A=s.tidy(function(){var _=o.capture(S,O._metadata.grayscale);return O.model.predict(_)}),[4,b(this._metadata.labels,A,C)];case 1:return D=F.sent(),r.dispose(A),[2,D]}})})},I.prototype.predict=function(E,C){return C===void 0&&(C=!1),e(this,void 0,void 0,function(){var T,S,A,D,O,F=this;return t(this,function(_){switch(_.label){case 0:return T=a.cropTo(E,this._metadata.imageSize,C),S=s.tidy(function(){var B=o.capture(T,F._metadata.grayscale);return F.model.predict(B)}),[4,S.data()];case 1:for(A=_.sent(),D=[],O=0;O<A.length;O++)D.push({className:this._metadata.labels[O],probability:A[O]});return r.dispose(S),[2,D]}})})},I.prototype.dispose=function(){this.truncatedModel.dispose()},I})();n.CustomMobileNet=w;function x(I){return e(this,void 0,void 0,function(){var E,C,T,S,A,D,O,A,D,O;return t(this,function(F){switch(F.label){case 0:return E=y(I),C=E[0],T=E[1],[4,s.loadLayersModel(C)];case 1:return S=F.sent(),I&&I.version===1?(A=S.getLayer(T),D=s.model({inputs:S.inputs,outputs:A.output}),O=s.sequential(),O.add(D),O.add(s.layers.flatten()),[2,O]):(A=S.getLayer(T),D=s.model({inputs:S.inputs,outputs:A.output}),O=s.sequential(),O.add(D),O.add(s.layers.globalAveragePooling2d({})),[2,O])}})})}n.loadTruncatedMobileNet=x;function v(I,E){return e(this,void 0,void 0,function(){var C,T,S;return t(this,function(A){switch(A.label){case 0:return[4,s.loadLayersModel(I)];case 1:return C=A.sent(),E?[4,m(E)]:[3,3];case 2:return S=A.sent(),[3,4];case 3:S=null,A.label=4;case 4:return T=S,[2,new w(C,T)]}})})}n.load=v;function $(I,E,C){return e(this,void 0,void 0,function(){var T,S,A,D;return t(this,function(O){switch(O.label){case 0:return[4,s.loadLayersModel(s.io.browserFiles([I,E]))];case 1:return T=O.sent(),[4,new Response(C).json()];case 2:return S=O.sent(),C?[4,m(S)]:[3,4];case 3:return D=O.sent(),[3,5];case 4:D=null,O.label=5;case 5:return A=D,[2,new w(T,A)]}})})}n.loadFromFiles=$})(ja)),ja}var Ln={},im={exports:{}},Lee=im.exports,zk;function Pee(){return zk||(zk=1,(function(n){(function(e,t,s){function r(l){var u=this,c=i();u.next=function(){var h=2091639*u.s0+u.c*23283064365386963e-26;return u.s0=u.s1,u.s1=u.s2,u.s2=h-(u.c=h|0)},u.c=1,u.s0=c(" "),u.s1=c(" "),u.s2=c(" "),u.s0-=c(l),u.s0<0&&(u.s0+=1),u.s1-=c(l),u.s1<0&&(u.s1+=1),u.s2-=c(l),u.s2<0&&(u.s2+=1),c=null}function o(l,u){return u.c=l.c,u.s0=l.s0,u.s1=l.s1,u.s2=l.s2,u}function a(l,u){var c=new r(l),h=u&&u.state,d=c.next;return d.int32=function(){return c.next()*4294967296|0},d.double=function(){return d()+(d()*2097152|0)*11102230246251565e-32},d.quick=d,h&&(typeof h=="object"&&o(h,c),d.state=function(){return o(c,{})}),d}function i(){var l=4022871197,u=function(c){c=c.toString();for(var h=0;h<c.length;h++){l+=c.charCodeAt(h);var d=.02519603282416938*l;l=d>>>0,d-=l,d*=l,l=d>>>0,d-=l,l+=d*4294967296}return(l>>>0)*23283064365386963e-26};return u}t&&t.exports?t.exports=a:this.alea=a})(Lee,n)})(im)),im.exports}var lm={exports:{}},Mee=lm.exports,Bk;function zee(){return Bk||(Bk=1,(function(n){(function(e,t,s){function r(i){var l=this,u="";l.x=0,l.y=0,l.z=0,l.w=0,l.next=function(){var h=l.x^l.x<<11;return l.x=l.y,l.y=l.z,l.z=l.w,l.w^=l.w>>>19^h^h>>>8},i===(i|0)?l.x=i:u+=i;for(var c=0;c<u.length+64;c++)l.x^=u.charCodeAt(c)|0,l.next()}function o(i,l){return l.x=i.x,l.y=i.y,l.z=i.z,l.w=i.w,l}function a(i,l){var u=new r(i),c=l&&l.state,h=function(){return(u.next()>>>0)/4294967296};return h.double=function(){do var d=u.next()>>>11,p=(u.next()>>>0)/4294967296,f=(d+p)/(1<<21);while(f===0);return f},h.int32=u.next,h.quick=h,c&&(typeof c=="object"&&o(c,u),h.state=function(){return o(u,{})}),h}t&&t.exports?t.exports=a:this.xor128=a})(Mee,n)})(lm)),lm.exports}var um={exports:{}},Bee=um.exports,Vk;function Vee(){return Vk||(Vk=1,(function(n){(function(e,t,s){function r(i){var l=this,u="";l.next=function(){var h=l.x^l.x>>>2;return l.x=l.y,l.y=l.z,l.z=l.w,l.w=l.v,(l.d=l.d+362437|0)+(l.v=l.v^l.v<<4^(h^h<<1))|0},l.x=0,l.y=0,l.z=0,l.w=0,l.v=0,i===(i|0)?l.x=i:u+=i;for(var c=0;c<u.length+64;c++)l.x^=u.charCodeAt(c)|0,c==u.length&&(l.d=l.x<<10^l.x>>>4),l.next()}function o(i,l){return l.x=i.x,l.y=i.y,l.z=i.z,l.w=i.w,l.v=i.v,l.d=i.d,l}function a(i,l){var u=new r(i),c=l&&l.state,h=function(){return(u.next()>>>0)/4294967296};return h.double=function(){do var d=u.next()>>>11,p=(u.next()>>>0)/4294967296,f=(d+p)/(1<<21);while(f===0);return f},h.int32=u.next,h.quick=h,c&&(typeof c=="object"&&o(c,u),h.state=function(){return o(u,{})}),h}t&&t.exports?t.exports=a:this.xorwow=a})(Bee,n)})(um)),um.exports}var cm={exports:{}},Wee=cm.exports,Wk;function Uee(){return Wk||(Wk=1,(function(n){(function(e,t,s){function r(i){var l=this;l.next=function(){var c=l.x,h=l.i,d,p;return d=c[h],d^=d>>>7,p=d^d<<24,d=c[h+1&7],p^=d^d>>>10,d=c[h+3&7],p^=d^d>>>3,d=c[h+4&7],p^=d^d<<7,d=c[h+7&7],d=d^d<<13,p^=d^d<<9,c[h]=p,l.i=h+1&7,p};function u(c,h){var d,p=[];if(h===(h|0))p[0]=h;else for(h=""+h,d=0;d<h.length;++d)p[d&7]=p[d&7]<<15^h.charCodeAt(d)+p[d+1&7]<<13;for(;p.length<8;)p.push(0);for(d=0;d<8&&p[d]===0;++d);for(d==8?p[7]=-1:p[d],c.x=p,c.i=0,d=256;d>0;--d)c.next()}u(l,i)}function o(i,l){return l.x=i.x.slice(),l.i=i.i,l}function a(i,l){i==null&&(i=+new Date);var u=new r(i),c=l&&l.state,h=function(){return(u.next()>>>0)/4294967296};return h.double=function(){do var d=u.next()>>>11,p=(u.next()>>>0)/4294967296,f=(d+p)/(1<<21);while(f===0);return f},h.int32=u.next,h.quick=h,c&&(c.x&&o(c,u),h.state=function(){return o(u,{})}),h}t&&t.exports?t.exports=a:this.xorshift7=a})(Wee,n)})(cm)),cm.exports}var hm={exports:{}},Gee=hm.exports,Uk;function Hee(){return Uk||(Uk=1,(function(n){(function(e,t,s){function r(i){var l=this;l.next=function(){var c=l.w,h=l.X,d=l.i,p,f;return l.w=c=c+1640531527|0,f=h[d+34&127],p=h[d=d+1&127],f^=f<<13,p^=p<<17,f^=f>>>15,p^=p>>>12,f=h[d]=f^p,l.i=d,f+(c^c>>>16)|0};function u(c,h){var d,p,f,g,y,m=[],b=128;for(h===(h|0)?(p=h,h=null):(h=h+"\0",p=0,b=Math.max(b,h.length)),f=0,g=-32;g<b;++g)h&&(p^=h.charCodeAt((g+32)%h.length)),g===0&&(y=p),p^=p<<10,p^=p>>>15,p^=p<<4,p^=p>>>13,g>=0&&(y=y+1640531527|0,d=m[g&127]^=p+y,f=d==0?f+1:0);for(f>=128&&(m[(h&&h.length||0)&127]=-1),f=127,g=512;g>0;--g)p=m[f+34&127],d=m[f=f+1&127],p^=p<<13,d^=d<<17,p^=p>>>15,d^=d>>>12,m[f]=p^d;c.w=y,c.X=m,c.i=f}u(l,i)}function o(i,l){return l.i=i.i,l.w=i.w,l.X=i.X.slice(),l}function a(i,l){i==null&&(i=+new Date);var u=new r(i),c=l&&l.state,h=function(){return(u.next()>>>0)/4294967296};return h.double=function(){do var d=u.next()>>>11,p=(u.next()>>>0)/4294967296,f=(d+p)/(1<<21);while(f===0);return f},h.int32=u.next,h.quick=h,c&&(c.X&&o(c,u),h.state=function(){return o(u,{})}),h}t&&t.exports?t.exports=a:this.xor4096=a})(Gee,n)})(hm)),hm.exports}var dm={exports:{}},jee=dm.exports,Gk;function qee(){return Gk||(Gk=1,(function(n){(function(e,t,s){function r(i){var l=this,u="";l.next=function(){var h=l.b,d=l.c,p=l.d,f=l.a;return h=h<<25^h>>>7^d,d=d-p|0,p=p<<24^p>>>8^f,f=f-h|0,l.b=h=h<<20^h>>>12^d,l.c=d=d-p|0,l.d=p<<16^d>>>16^f,l.a=f-h|0},l.a=0,l.b=0,l.c=-1640531527,l.d=1367130551,i===Math.floor(i)?(l.a=i/4294967296|0,l.b=i|0):u+=i;for(var c=0;c<u.length+20;c++)l.b^=u.charCodeAt(c)|0,l.next()}function o(i,l){return l.a=i.a,l.b=i.b,l.c=i.c,l.d=i.d,l}function a(i,l){var u=new r(i),c=l&&l.state,h=function(){return(u.next()>>>0)/4294967296};return h.double=function(){do var d=u.next()>>>11,p=(u.next()>>>0)/4294967296,f=(d+p)/(1<<21);while(f===0);return f},h.int32=u.next,h.quick=h,c&&(typeof c=="object"&&o(c,u),h.state=function(){return o(u,{})}),h}t&&t.exports?t.exports=a:this.tychei=a})(jee,n)})(dm)),dm.exports}var X0={exports:{}},Hk;function Kee(){return Hk||(Hk=1,(function(n){(function(e,t){var s=this,r=256,o=6,a=52,i="random",l=t.pow(r,o),u=t.pow(2,a),c=u*2,h=r-1,d;function p(x,v,$){var I=[];v=v==!0?{entropy:!0}:v||{};var E=m(y(v.entropy?[x,w(e)]:x??b(),3),I),C=new f(I),T=function(){for(var S=C.g(o),A=l,D=0;S<u;)S=(S+D)*r,A*=r,D=C.g(1);for(;S>=c;)S/=2,A/=2,D>>>=1;return(S+D)/A};return T.int32=function(){return C.g(4)|0},T.quick=function(){return C.g(4)/4294967296},T.double=T,m(w(C.S),e),(v.pass||$||function(S,A,D,O){return O&&(O.S&&g(O,C),S.state=function(){return g(C,{})}),D?(t[i]=S,A):S})(T,E,"global"in v?v.global:this==t,v.state)}t["seed"+i]=p;function f(x){var v,$=x.length,I=this,E=0,C=I.i=I.j=0,T=I.S=[];for($||(x=[$++]);E<r;)T[E]=E++;for(E=0;E<r;E++)T[E]=T[C=h&C+x[E%$]+(v=T[E])],T[C]=v;(I.g=function(S){for(var A,D=0,O=I.i,F=I.j,_=I.S;S--;)A=_[O=h&O+1],D=D*r+_[h&(_[O]=_[F=h&F+A])+(_[F]=A)];return I.i=O,I.j=F,D})(r)}function g(x,v){return v.i=x.i,v.j=x.j,v.S=x.S.slice(),v}function y(x,v){var $=[],I=typeof x,E;if(v&&I=="object")for(E in x)try{$.push(y(x[E],v-1))}catch{}return $.length?$:I=="string"?x:x+"\0"}function m(x,v){for(var $=x+"",I,E=0;E<$.length;)v[h&E]=h&(I^=v[h&E]*19)+$.charCodeAt(E++);return w(v)}function b(){try{var x;return d&&(x=d.randomBytes)?x=x(r):(x=new Uint8Array(r),(s.crypto||s.msCrypto).getRandomValues(x)),w(x)}catch{var v=s.navigator,$=v&&v.plugins;return[+new Date,s,$,s.screen,w(e)]}}function w(x){return String.fromCharCode.apply(0,x)}if(m(t.random(),e),n.exports){n.exports=p;try{d=M1}catch{}}})([],Math)})(X0)),X0.exports}var Y0,jk;function Xee(){if(jk)return Y0;jk=1;var n=Pee(),e=zee(),t=Vee(),s=Uee(),r=Hee(),o=qee(),a=Kee();return a.alea=n,a.xor128=e,a.xorwow=t,a.xorshift7=s,a.xor4096=r,a.tychei=o,Y0=a,Y0}var qk;function Yee(){if(qk)return Ln;qk=1;var n=Ln&&Ln.__extends||(function(){var f=function(g,y){return f=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(m,b){m.__proto__=b}||function(m,b){for(var w in b)b.hasOwnProperty(w)&&(m[w]=b[w])},f(g,y)};return function(g,y){f(g,y);function m(){this.constructor=g}g.prototype=y===null?Object.create(y):(m.prototype=y.prototype,new m)}})(),e=Ln&&Ln.__awaiter||function(f,g,y,m){function b(w){return w instanceof y?w:new y(function(x){x(w)})}return new(y||(y=Promise))(function(w,x){function v(E){try{I(m.next(E))}catch(C){x(C)}}function $(E){try{I(m.throw(E))}catch(C){x(C)}}function I(E){E.done?w(E.value):b(E.value).then(v,$)}I((m=m.apply(f,g||[])).next())})},t=Ln&&Ln.__generator||function(f,g){var y={label:0,sent:function(){if(w[0]&1)throw w[1];return w[1]},trys:[],ops:[]},m,b,w,x;return x={next:v(0),throw:v(1),return:v(2)},typeof Symbol=="function"&&(x[Symbol.iterator]=function(){return this}),x;function v(I){return function(E){return $([I,E])}}function $(I){if(m)throw new TypeError("Generator is already executing.");for(;y;)try{if(m=1,b&&(w=I[0]&2?b.return:I[0]?b.throw||((w=b.return)&&w.call(b),0):b.next)&&!(w=w.call(b,I[1])).done)return w;switch(b=0,w&&(I=[I[0]&2,w.value]),I[0]){case 0:case 1:w=I;break;case 4:return y.label++,{value:I[1],done:!1};case 5:y.label++,b=I[1],I=[0];continue;case 7:I=y.ops.pop(),y.trys.pop();continue;default:if(w=y.trys,!(w=w.length>0&&w[w.length-1])&&(I[0]===6||I[0]===2)){y=0;continue}if(I[0]===3&&(!w||I[1]>w[0]&&I[1]<w[3])){y.label=I[1];break}if(I[0]===6&&y.label<w[1]){y.label=w[1],w=I;break}if(w&&y.label<w[2]){y.label=w[2],y.ops.push(I);break}w[2]&&y.ops.pop(),y.trys.pop();continue}I=g.call(f,y)}catch(E){I=[6,E],b=0}finally{m=w=0}if(I[0]&5)throw I[1];return{value:I[0]?I[1]:void 0,done:!0}}};Object.defineProperty(Ln,"__esModule",{value:!0}),Ln.createTeachable=Ln.TeachableMobileNet=void 0;var s=qr,r=qr,o=Dk(),a=Mk(),i=Xee(),l=.15,u=function(f){return typeof f.dataId=="object"&&typeof f.shape=="object"};function c(f,g){var y=new Array(g).fill(0);return y[f]=1,y}function h(f,g){for(var y,m=f.length,b=f.slice(),w=m-1;w>0;w-=1){var x=void 0;g?x=Math.floor(g()*(w+1)):x=Math.floor(Math.random()*(w+1)),y=[b[x],b[w]],b[w]=y[0],b[x]=y[1]}return b}var d=(function(f){n(g,f);function g(y,m){var b=f.call(this,s.sequential(),m)||this;return b.totalSamples=0,b.examples=[],b.truncatedModel=y,b}return Object.defineProperty(g.prototype,"asSequentialModel",{get:function(){return this.model},enumerable:!1,configurable:!0}),Object.defineProperty(g.prototype,"isTrained",{get:function(){return!!this.model&&this.model.layers&&this.model.layers.length>2},enumerable:!1,configurable:!0}),Object.defineProperty(g.prototype,"isPrepared",{get:function(){return!!this.trainDataset},enumerable:!1,configurable:!0}),Object.defineProperty(g.prototype,"numClasses",{get:function(){return this._metadata.labels.length},enumerable:!1,configurable:!0}),g.prototype.addExample=function(y,m){return e(this,void 0,void 0,function(){var b,w,x;return t(this,function(v){return b=u(m)?m:o.capture(m,this._metadata.grayscale),w=this.truncatedModel.predict(b),x=w.dataSync(),b.dispose(),w.dispose(),this.examples[y].push(x),this.totalSamples++,[2]})})},g.prototype.predict=function(y,m){return m===void 0&&(m=!1),e(this,void 0,void 0,function(){return t(this,function(b){if(!this.model)throw new Error("Model has not been trained yet, called train() first");return[2,f.prototype.predict.call(this,y,m)]})})},g.prototype.predictTopK=function(y,m,b){return m===void 0&&(m=10),b===void 0&&(b=!1),e(this,void 0,void 0,function(){return t(this,function(w){if(!this.model)throw new Error("Model has not been trained yet, called train() first");return[2,f.prototype.predictTopK.call(this,y,m,b)]})})},g.prototype.prepare=function(){for(var y in this.examples)if(y.length===0)throw new Error("Add some examples before training");var m=this.convertToTfDataset();this.trainDataset=m.trainDataset,this.validationDataset=m.validationDataset},g.prototype.convertToTfDataset=function(){for(var y=0;y<this.examples.length;y++)this.examples[y]=h(this.examples[y],this.seed);for(var m=[],b=[],w=function(C){var T=c(C,x.numClasses),S=x.examples[C].length,A=Math.ceil(l*S),D=S-A,O=x.examples[C].slice(0,D).map(function(_){return{data:_,label:T}}),F=x.examples[C].slice(D).map(function(_){return{data:_,label:T}});m=m.concat(O),b=b.concat(F)},x=this,y=0;y<this.examples.length;y++)w(y);m=h(m,this.seed),b=h(b,this.seed);var v=s.data.array(m.map(function(C){return C.data})),$=s.data.array(b.map(function(C){return C.data})),I=s.data.array(m.map(function(C){return C.label})),E=s.data.array(b.map(function(C){return C.label}));return{trainDataset:s.data.zip({xs:v,ys:I}),validationDataset:s.data.zip({xs:$,ys:E})}},g.prototype.save=function(y,m){return e(this,void 0,void 0,function(){return t(this,function(b){return[2,this.model.save(y,m)]})})},g.prototype.train=function(y,m){return m===void 0&&(m={}),e(this,void 0,void 0,function(){var b,w,x,v,$,I,E,C,T,S=this;return t(this,function(A){switch(A.label){case 0:if(b=m.onTrainEnd||(function(){}),m.onTrainEnd=function(D){S.__stopTrainingResolve&&(S.__stopTrainingResolve(),S.__stopTrainingResolve=null),b(D)},this.isPrepared||this.prepare(),w=this.getLabels().length,r.util.assert(w===this.numClasses,function(){return"Can not train, has "+w+" labels and "+S.numClasses+" classes"}),x=this.truncatedModel.outputs[0].shape.slice(1),v=s.util.sizeFromShape(x),this.seed?$=s.initializers.varianceScaling({seed:3.14}):$=s.initializers.varianceScaling({}),this.trainingModel=s.sequential({layers:[s.layers.dense({inputShape:[v],units:y.denseUnits,activation:"relu",kernelInitializer:$,useBias:!0}),s.layers.dense({kernelInitializer:$,useBias:!1,activation:"softmax",units:this.numClasses})]}),I=s.train.adam(y.learningRate),this.trainingModel.compile({optimizer:I,loss:"categoricalCrossentropy",metrics:["accuracy"]}),!(y.batchSize>0))throw new Error("Batch size is 0 or NaN. Please choose a non-zero fraction");return E=this.trainDataset.batch(y.batchSize),C=this.validationDataset.batch(y.batchSize),[4,this.trainingModel.fitDataset(E,{epochs:y.epochs,validationData:C,callbacks:m})];case 1:return A.sent(),T=s.sequential(),T.add(this.truncatedModel),T.add(this.trainingModel),this.model=T,I.dispose(),[2,this.model]}})})},g.prototype.prepareDataset=function(){for(var y=0;y<this.numClasses;y++)this.examples[y]=[]},g.prototype.setLabel=function(y,m){this._metadata.labels[y]=m},g.prototype.setLabels=function(y){this._metadata.labels=y,this.prepareDataset()},g.prototype.getLabel=function(y){return this._metadata.labels[y]},g.prototype.getLabels=function(){return this._metadata.labels},g.prototype.setName=function(y){this._metadata.modelName=y},g.prototype.getName=function(){return this._metadata.modelName},g.prototype.stopTraining=function(){var y=this,m=new Promise(function(b,w){y.trainingModel.stopTraining=!0,y.__stopTrainingResolve=b});return m},g.prototype.dispose=function(){this.trainingModel.dispose(),f.prototype.dispose.call(this)},g.prototype.calculateAccuracyPerClass=function(){return e(this,void 0,void 0,function(){var y,m,b,w,x,v,$,I,E,C,B,T,S,A,D,O,F,_,B,U=this;return t(this,function(H){switch(H.label){case 0:return y=this.validationDataset.mapAsync(function(G){return e(U,void 0,void 0,function(){return t(this,function(X){return[2,G.xs]})})}),m=this.validationDataset.mapAsync(function(G){return e(U,void 0,void 0,function(){return t(this,function(X){return[2,G.ys]})})}),b=Math.min(m.size,32),w=Math.ceil(m.size/b),x=y.batch(b),v=m.batch(b),[4,x.iterator()];case 1:return $=H.sent(),[4,v.iterator()];case 2:I=H.sent(),E=[],C=[],B=0,H.label=3;case 3:return B<w?[4,$.next()]:[3,7];case 4:return T=H.sent(),S=this.trainingModel.predict(T.value),A=S.argMax(1),E.push(A),[4,I.next()];case 5:D=H.sent(),O=D.value.argMax(1),C.push(O),T.value.dispose(),S.dispose(),D.value.dispose(),H.label=6;case 6:return B++,[3,3];case 7:if(F=s.concat(C),_=s.concat(E),w!==1)for(B=0;B<E.length;B++)E[B].dispose(),C[B].dispose();return[2,{reference:F,predictions:_}]}})})},g.prototype.setSeed=function(y){this.seed=i(y)},g})(a.CustomMobileNet);Ln.TeachableMobileNet=d;function p(f,g){return e(this,void 0,void 0,function(){var y;return t(this,function(m){switch(m.label){case 0:return[4,a.loadTruncatedMobileNet(g)];case 1:return y=m.sent(),[2,new d(y,f)]}})})}return Ln.createTeachable=p,Ln}var ys={};function pm(n){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?pm=function(t){return typeof t}:pm=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},pm(n)}function Z0(n,e,t){var s=t.value;if(typeof s!="function")throw new TypeError("@boundMethod decorator can only be applied to methods not: ".concat(pm(s)));var r=!1;return{configurable:!0,get:function(){if(r||this===n.prototype||this.hasOwnProperty(e)||typeof s!="function")return s;var a=s.bind(this);return r=!0,Object.defineProperty(this,e,{configurable:!0,get:function(){return a},set:function(l){s=l,delete this[e]}}),r=!1,a},set:function(a){s=a}}}function Kk(n){var e;return typeof Reflect<"u"&&typeof Reflect.ownKeys=="function"?e=Reflect.ownKeys(n.prototype):(e=Object.getOwnPropertyNames(n.prototype),typeof Object.getOwnPropertySymbols=="function"&&(e=e.concat(Object.getOwnPropertySymbols(n.prototype)))),e.forEach(function(t){if(t!=="constructor"){var s=Object.getOwnPropertyDescriptor(n.prototype,t);typeof s.value=="function"&&Object.defineProperty(n.prototype,t,Z0(n,t,s))}}),n}function Zee(){return arguments.length===1?Kk.apply(void 0,arguments):Z0.apply(void 0,arguments)}const Xk=yc(Object.freeze(Object.defineProperty({__proto__:null,boundClass:Kk,boundMethod:Z0,default:Zee},Symbol.toStringTag,{value:"Module"})));var Yk;function Jee(){if(Yk)return ys;Yk=1;var n=ys&&ys.__decorate||function(l,u,c,h){var d=arguments.length,p=d<3?u:h===null?h=Object.getOwnPropertyDescriptor(u,c):h,f;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")p=Reflect.decorate(l,u,c,h);else for(var g=l.length-1;g>=0;g--)(f=l[g])&&(p=(d<3?f(p):d>3?f(u,c,p):f(u,c))||p);return d>3&&p&&Object.defineProperty(u,c,p),p},e=ys&&ys.__awaiter||function(l,u,c,h){function d(p){return p instanceof c?p:new c(function(f){f(p)})}return new(c||(c=Promise))(function(p,f){function g(b){try{m(h.next(b))}catch(w){f(w)}}function y(b){try{m(h.throw(b))}catch(w){f(w)}}function m(b){b.done?p(b.value):d(b.value).then(g,y)}m((h=h.apply(l,u||[])).next())})},t=ys&&ys.__generator||function(l,u){var c={label:0,sent:function(){if(p[0]&1)throw p[1];return p[1]},trys:[],ops:[]},h,d,p,f;return f={next:g(0),throw:g(1),return:g(2)},typeof Symbol=="function"&&(f[Symbol.iterator]=function(){return this}),f;function g(m){return function(b){return y([m,b])}}function y(m){if(h)throw new TypeError("Generator is already executing.");for(;c;)try{if(h=1,d&&(p=m[0]&2?d.return:m[0]?d.throw||((p=d.return)&&p.call(d),0):d.next)&&!(p=p.call(d,m[1])).done)return p;switch(d=0,p&&(m=[m[0]&2,p.value]),m[0]){case 0:case 1:p=m;break;case 4:return c.label++,{value:m[1],done:!1};case 5:c.label++,d=m[1],m=[0];continue;case 7:m=c.ops.pop(),c.trys.pop();continue;default:if(p=c.trys,!(p=p.length>0&&p[p.length-1])&&(m[0]===6||m[0]===2)){c=0;continue}if(m[0]===3&&(!p||m[1]>p[0]&&m[1]<p[3])){c.label=m[1];break}if(m[0]===6&&c.label<p[1]){c.label=p[1],p=m;break}if(p&&c.label<p[2]){c.label=p[2],c.ops.push(m);break}p[2]&&c.ops.pop(),c.trys.pop();continue}m=u.call(l,c)}catch(b){m=[6,b],d=0}finally{h=p=0}if(m[0]&5)throw m[1];return{value:m[0]?m[1]:void 0,done:!0}}};Object.defineProperty(ys,"__esModule",{value:!0}),ys.Webcam=void 0;var s=Xk,r=Ok(),o={facingMode:"user",frameRate:24},a=function(l){return l.facingMode=l.facingMode||o.facingMode,l.frameRate=l.frameRate||o.frameRate,l.aspectRatio=l.aspectRatio||o.aspectRatio,l},i=(function(){function l(u,c,h){u===void 0&&(u=400),c===void 0&&(c=400),h===void 0&&(h=!1),this.width=u,this.height=c,this.flip=h}return l.prototype.getWebcam=function(u){if(u===void 0&&(u={}),!window.navigator.mediaDevices||!window.navigator.mediaDevices.getUserMedia)return Promise.reject("Your browser does not support WebRTC. Please try another one.");u.width=640;var c=a(u),h=document.createElement("video");return window.navigator.mediaDevices.getUserMedia({video:c}).then(function(d){return h.srcObject=d,h.addEventListener("loadedmetadata",function(p){var f=h.videoWidth,g=h.videoHeight;h.width=f,h.height=g}),h},function(){return Promise.reject("Could not open your camera. You may have denied access.")})},l.prototype.setup=function(u){return u===void 0&&(u={}),e(this,void 0,void 0,function(){var c;return t(this,function(h){switch(h.label){case 0:return this.webcam?[3,2]:(c=this,[4,this.getWebcam(u)]);case 1:c.webcam=h.sent(),this.canvas||(this.canvas=document.createElement("canvas"),this.canvas.width=this.width,this.canvas.height=this.height),h.label=2;case 2:return[2]}})})},l.prototype.play=function(){var u=this.webcam.play();return u},l.prototype.pause=function(){this.webcam.pause()},l.prototype.stop=function(){this.stopStreamedVideo(this.webcam)},l.prototype.update=function(){this.renderCameraToCanvas()},l.prototype.stopStreamedVideo=function(u){var c=u.srcObject,h=c.getTracks();h.forEach(function(d){d.stop()}),u.srcObject=null},l.prototype.renderCameraToCanvas=function(){if(this.canvas&&this.webcam){var u=this.canvas.getContext("2d");if(this.webcam.videoWidth!==0){var c=r.cropTo(this.webcam,this.width,this.flip);u.drawImage(c,0,0)}}},n([s.default],l.prototype,"getWebcam",null),n([s.default],l.prototype,"setup",null),n([s.default],l.prototype,"play",null),n([s.default],l.prototype,"pause",null),n([s.default],l.prototype,"stop",null),n([s.default],l.prototype,"update",null),n([s.default],l.prototype,"stopStreamedVideo",null),n([s.default],l.prototype,"renderCameraToCanvas",null),l})();return ys.Webcam=i,ys}var Zk;function Qee(){return Zk||(Zk=1,(function(n){Object.defineProperty(n,"__esModule",{value:!0});var e=Mk();Object.defineProperty(n,"IMAGE_SIZE",{enumerable:!0,get:function(){return e.IMAGE_SIZE}}),Object.defineProperty(n,"CustomMobileNet",{enumerable:!0,get:function(){return e.CustomMobileNet}}),Object.defineProperty(n,"load",{enumerable:!0,get:function(){return e.load}}),Object.defineProperty(n,"loadFromFiles",{enumerable:!0,get:function(){return e.loadFromFiles}}),Object.defineProperty(n,"loadTruncatedMobileNet",{enumerable:!0,get:function(){return e.loadTruncatedMobileNet}});var t=Yee();Object.defineProperty(n,"TeachableMobileNet",{enumerable:!0,get:function(){return t.TeachableMobileNet}}),Object.defineProperty(n,"createTeachable",{enumerable:!0,get:function(){return t.createTeachable}});var s=Jee();Object.defineProperty(n,"Webcam",{enumerable:!0,get:function(){return s.Webcam}});var r=Lk();Object.defineProperty(n,"version",{enumerable:!0,get:function(){return r.version}})})(K0)),K0}var Jk=Qee();const Qk=bm({__proto__:null,default:Am(Jk)},[Jk]);var gn={},Kn={};const e2=yc(pee);var Je={};const ete=yc(By);var J0={},t2;function tte(){return t2||(t2=1,(function(n){Object.defineProperty(n,"__esModule",{value:!0}),n.partNames=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],n.NUM_KEYPOINTS=n.partNames.length,n.partIds=n.partNames.reduce(function(t,s,r){return t[s]=r,t},{});var e=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]];n.poseChain=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]],n.connectedPartIndices=e.map(function(t){var s=t[0],r=t[1];return[n.partIds[s],n.partIds[r]]}),n.partChannels=["left_face","right_face","right_upper_leg_front","right_lower_leg_back","right_upper_leg_back","left_lower_leg_front","left_upper_leg_front","left_upper_leg_back","left_lower_leg_back","right_feet","right_lower_leg_front","left_feet","torso_front","torso_back","right_upper_arm_front","right_upper_arm_back","right_lower_arm_back","left_lower_arm_front","left_upper_arm_front","left_upper_arm_back","left_lower_arm_back","right_hand","right_lower_arm_front","left_hand"]})(J0)),J0}var n2;function s2(){if(n2)return Je;n2=1;var n=Je&&Je.__awaiter||function(S,A,D,O){return new(D||(D=Promise))(function(F,_){function B(G){try{H(O.next(G))}catch(X){_(X)}}function U(G){try{H(O.throw(G))}catch(X){_(X)}}function H(G){G.done?F(G.value):new D(function(X){X(G.value)}).then(B,U)}H((O=O.apply(S,A||[])).next())})},e=Je&&Je.__generator||function(S,A){var D={label:0,sent:function(){if(_[0]&1)throw _[1];return _[1]},trys:[],ops:[]},O,F,_,B;return B={next:U(0),throw:U(1),return:U(2)},typeof Symbol=="function"&&(B[Symbol.iterator]=function(){return this}),B;function U(G){return function(X){return H([G,X])}}function H(G){if(O)throw new TypeError("Generator is already executing.");for(;D;)try{if(O=1,F&&(_=G[0]&2?F.return:G[0]?F.throw||((_=F.return)&&_.call(F),0):F.next)&&!(_=_.call(F,G[1])).done)return _;switch(F=0,_&&(G=[G[0]&2,_.value]),G[0]){case 0:case 1:_=G;break;case 4:return D.label++,{value:G[1],done:!1};case 5:D.label++,F=G[1],G=[0];continue;case 7:G=D.ops.pop(),D.trys.pop();continue;default:if(_=D.trys,!(_=_.length>0&&_[_.length-1])&&(G[0]===6||G[0]===2)){D=0;continue}if(G[0]===3&&(!_||G[1]>_[0]&&G[1]<_[3])){D.label=G[1];break}if(G[0]===6&&D.label<_[1]){D.label=_[1],_=G;break}if(_&&D.label<_[2]){D.label=_[2],D.ops.push(G);break}_[2]&&D.ops.pop(),D.trys.pop();continue}G=A.call(S,D)}catch(X){G=[6,X],F=0}finally{O=_=0}if(G[0]&5)throw G[1];return{value:G[0]?G[1]:void 0,done:!0}}};Object.defineProperty(Je,"__esModule",{value:!0});var t=ete,s=tte();function r(S,A,D){return S<D||A<D}function o(S,A){return s.connectedPartIndices.reduce(function(D,O){var F=O[0],_=O[1];return r(S[F].score,S[_].score,A)||D.push([S[F],S[_]]),D},[])}Je.getAdjacentKeyPoints=o;var a=Number.NEGATIVE_INFINITY,i=Number.POSITIVE_INFINITY;function l(S){return S.reduce(function(A,D){var O=A.maxX,F=A.maxY,_=A.minX,B=A.minY,U=D.position,H=U.x,G=U.y;return{maxX:Math.max(O,H),maxY:Math.max(F,G),minX:Math.min(_,H),minY:Math.min(B,G)}},{maxX:a,maxY:a,minX:i,minY:i})}Je.getBoundingBox=l;function u(S){var A=l(S),D=A.minX,O=A.minY,F=A.maxX,_=A.maxY;return[{x:D,y:O},{x:F,y:O},{x:F,y:_},{x:D,y:_}]}Je.getBoundingBoxPoints=u;function c(S){return n(this,void 0,void 0,function(){return e(this,function(A){return[2,Promise.all(S.map(function(D){return D.buffer()}))]})})}Je.toTensorBuffers3D=c;function h(S,A,D,O,F){return O===void 0&&(O=0),F===void 0&&(F=0),{score:S.score,keypoints:S.keypoints.map(function(_){var B=_.score,U=_.part,H=_.position;return{score:B,part:U,position:{x:H.x*D+F,y:H.y*A+O}}})}}Je.scalePose=h;function d(S,A,D,O,F){return O===void 0&&(O=0),F===void 0&&(F=0),D===1&&A===1&&O===0&&F===0?S:S.map(function(_){return h(_,A,D,O,F)})}Je.scalePoses=d;function p(S,A){return{score:S.score,keypoints:S.keypoints.map(function(D){var O=D.score,F=D.part,_=D.position;return{score:O,part:F,position:{x:A-1-_.x,y:_.y}}})}}Je.flipPoseHorizontal=p;function f(S,A){return A<=0?S:S.map(function(D){return p(D,A)})}Je.flipPosesHorizontal=f;function g(S,A){return x(S,A)?S:Math.floor(S/A)*A+1}Je.toValidInputResolution=g;function y(S){t.util.assert(typeof S=="number"||typeof S=="object",function(){return"Invalid inputResolution "+S+". Should be a number or an object with width and height"}),typeof S=="object"&&(t.util.assert(typeof S.width=="number",function(){return"inputResolution.width has a value of "+S.width+" which is invalid; it must be a number"}),t.util.assert(typeof S.height=="number",function(){return"inputResolution.height has a value of "+S.height+" which is invalid; it must be a number"}))}Je.validateInputResolution=y;function m(S,A){return y(S),typeof S=="object"?[g(S.height,A),g(S.width,A)]:[g(S,A),g(S,A)]}Je.getValidInputResolutionDimensions=m;var b=[8,16,32];function w(S){t.util.assert(typeof S=="number",function(){return"outputStride is not a number"}),t.util.assert(b.indexOf(S)>=0,function(){return"outputStride of "+S+" is invalid. It must be either 8, 16, or 32"})}Je.assertValidOutputStride=w;function x(S,A){return(S-1)%A===0}function v(S,A){t.util.assert(typeof S[0]=="number"&&typeof S[1]=="number",function(){return"both resolution values must be a number but had values "+S}),t.util.assert(x(S[0],A),function(){return"height of "+S[0]+" is invalid for output stride "+(A+".")}),t.util.assert(x(S[1],A),function(){return"width of "+S[1]+" is invalid for output stride "+(A+".")})}Je.assertValidResolution=v;function $(S){return S instanceof t.Tensor?[S.shape[0],S.shape[1]]:[S.height,S.width]}Je.getInputTensorDimensions=$;function I(S){return S instanceof t.Tensor?S:t.browser.fromPixels(S)}Je.toInputTensor=I;function E(S,A,D,O){return t.tidy(function(){var F=I(S);return O?t.image.resizeBilinear(t.reverse(F,1),[A,D]):t.image.resizeBilinear(F,[A,D])})}Je.toResizedInputTensor=E;function C(S,A){var D=A[0],O=A[1],F=$(S),_=F[0],B=F[1],U=O/D,H=B/_,G=[0,0,0,0],X=G[0],Z=G[1],K=G[2],ee=G[3];H<U?(X=0,Z=0,K=Math.round(.5*(U*_-B)),ee=Math.round(.5*(U*_-B))):(X=Math.round(.5*(1/U*B-_)),Z=Math.round(.5*(1/U*B-_)),K=0,ee=0);var ne=t.tidy(function(){var re=I(S);return re=t.pad3d(re,[[X,Z],[K,ee],[0,0]]),t.image.resizeBilinear(re,[D,O])});return{resized:ne,padding:{top:X,left:K,right:ee,bottom:Z}}}Je.padAndResizeTo=C;function T(S,A,D,O,F){var _=A[0],B=A[1],U=D[0],H=D[1],G=(_+O.top+O.bottom)/U,X=(B+O.left+O.right)/H,Z=d(S,G,X,-O.top,-O.left);return F?f(Z,B):Z}return Je.scaleAndFlipPoses=T,Je}var fm={},r2;function o2(){if(r2)return fm;r2=1;Object.defineProperty(fm,"__esModule",{value:!0});var n="0.8.6";return fm.version=n,fm}var a2;function i2(){if(a2)return Kn;a2=1;var n=Kn&&Kn.__awaiter||function(m,b,w,x){function v($){return $ instanceof w?$:new w(function(I){I($)})}return new(w||(w=Promise))(function($,I){function E(S){try{T(x.next(S))}catch(A){I(A)}}function C(S){try{T(x.throw(S))}catch(A){I(A)}}function T(S){S.done?$(S.value):v(S.value).then(E,C)}T((x=x.apply(m,b||[])).next())})},e=Kn&&Kn.__generator||function(m,b){var w={label:0,sent:function(){if($[0]&1)throw $[1];return $[1]},trys:[],ops:[]},x,v,$,I;return I={next:E(0),throw:E(1),return:E(2)},typeof Symbol=="function"&&(I[Symbol.iterator]=function(){return this}),I;function E(T){return function(S){return C([T,S])}}function C(T){if(x)throw new TypeError("Generator is already executing.");for(;w;)try{if(x=1,v&&($=T[0]&2?v.return:T[0]?v.throw||(($=v.return)&&$.call(v),0):v.next)&&!($=$.call(v,T[1])).done)return $;switch(v=0,$&&(T=[T[0]&2,$.value]),T[0]){case 0:case 1:$=T;break;case 4:return w.label++,{value:T[1],done:!1};case 5:w.label++,v=T[1],T=[0];continue;case 7:T=w.ops.pop(),w.trys.pop();continue;default:if($=w.trys,!($=$.length>0&&$[$.length-1])&&(T[0]===6||T[0]===2)){w=0;continue}if(T[0]===3&&(!$||T[1]>$[0]&&T[1]<$[3])){w.label=T[1];break}if(T[0]===6&&w.label<$[1]){w.label=$[1],$=T;break}if($&&w.label<$[2]){w.label=$[2],w.ops.push(T);break}$[2]&&w.ops.pop(),w.trys.pop();continue}T=b.call(m,w)}catch(S){T=[6,S],v=0}finally{x=$=0}if(T[0]&5)throw T[1];return{value:T[0]?T[1]:void 0,done:!0}}};Object.defineProperty(Kn,"__esModule",{value:!0});var t=qr,s=e2,r=s2(),o=o2(),a=e2,i=3,l=function(m){return m.packageVersion=m.packageVersion||o.version,m.packageName="@teachablemachine/pose",m.timeStamp=m.timeStamp||new Date().toISOString(),m.userMetadata=m.userMetadata||{},m.modelName=m.modelName||"untitled",m.labels=m.labels||[],m.modelSettings=h(m.modelSettings),m},u=function(m){return!!m&&Array.isArray(m.labels)},c=function(m){return n(void 0,void 0,void 0,function(){var b,w;return e(this,function(x){switch(x.label){case 0:return typeof m!="string"?[3,3]:[4,fetch(m)];case 1:return w=x.sent(),[4,w.json()];case 2:return b=x.sent(),[3,4];case 3:if(u(m))b=m;else throw new Error("Invalid Metadata provided");x.label=4;case 4:return[2,l(b)]}})})},h=function(m){return m===void 0&&(m={}),m.posenet||(m.posenet={}),m.posenet.architecture=m.posenet.architecture||"MobileNetV1",m.posenet.outputStride=m.posenet.outputStride||16,m.posenet.inputResolution=m.posenet.inputResolution||257,m.posenet.multiplier=m.posenet.multiplier||.75,m};function d(m,b,w){return w===void 0&&(w=3),n(this,void 0,void 0,function(){var x;return e(this,function(v){switch(v.label){case 0:return[4,b.data()];case 1:return x=v.sent(),[2,t.tidy(function(){w=Math.min(w,x.length);for(var $=[],I=0;I<x.length;I++)$.push({value:x[I],index:I});$.sort(function(S,A){return A.value-S.value});for(var E=new Float32Array(w),C=new Int32Array(w),I=0;I<w;I++)E[I]=$[I].value,C[I]=$[I].index;for(var T=[],I=0;I<C.length;I++)T.push({className:m[C[I]],probability:E[I]});return T})]}})})}Kn.getTopKClasses=d;var p=(function(){function m(b,w,x){this.model=b,this.posenetModel=w,this._metadata=l(x)}return m.prototype.getMetadata=function(){return this._metadata},m.prototype.getClassLabels=function(){return this._metadata.labels},m.prototype.getTotalClasses=function(){var b=this.model.output,w=b.shape[1];return w},m.prototype.estimatePose=function(b,w){return w===void 0&&(w=!1),n(this,void 0,void 0,function(){var x,v,$,I,E,C,T,S;return e(this,function(A){switch(A.label){case 0:return[4,this.estimatePoseOutputs(b)];case 1:return x=A.sent(),v=x.heatmapScores,$=x.offsets,I=x.displacementFwd,E=x.displacementBwd,C=x.padding,T=this.poseOutputsToAray(v,$,I,E),[4,this.poseOutputsToKeypoints(b,v,$,I,E,C,w)];case 2:return S=A.sent(),[2,{pose:S,posenetOutput:T}]}})})},m.prototype.estimatePoseOutputs=function(b){return n(this,void 0,void 0,function(){var w,x,v,$,I,E,C,T,S;return e(this,function(A){switch(A.label){case 0:return w=this.posenetModel.inputResolution,x=r.padAndResizeTo(b,w),v=x.resized,$=x.padding,[4,this.posenetModel.baseModel.predict(v)];case 1:return I=A.sent(),E=I.heatmapScores,C=I.offsets,T=I.displacementFwd,S=I.displacementBwd,v.dispose(),[2,{heatmapScores:E,offsets:C,displacementFwd:T,displacementBwd:S,padding:$}]}})})},m.prototype.poseOutputsToAray=function(b,w,x,v){var $=2,I=t.concat([b,w],$),E=I.dataSync();return I.dispose(),E},m.prototype.poseOutputsToKeypoints=function(b,w,x,v,$,I,E){return E===void 0&&(E=!1),n(this,void 0,void 0,function(){var C,T,S,A,D,O,F,_,B,U,H,G,X;return e(this,function(Z){switch(Z.label){case 0:return C={maxDetections:i,scoreThreshold:.5,nmsRadius:20},T=r.getInputTensorDimensions(b),S=T[0],A=T[1],D=this.posenetModel.baseModel.outputStride,O=this.posenetModel.inputResolution,[4,r.toTensorBuffers3D([w,x,v,$])];case 1:return F=Z.sent(),_=F[0],B=F[1],U=F[2],H=F[3],[4,a.decodeMultiplePoses(_,B,U,H,D,C.maxDetections,C.scoreThreshold,C.nmsRadius)];case 2:return G=Z.sent(),X=r.scaleAndFlipPoses(G,[S,A],O,I,E),w.dispose(),x.dispose(),v.dispose(),$.dispose(),[2,X[0]]}})})},m.prototype.predict=function(b){return n(this,void 0,void 0,function(){var w,x,v,$,I;return e(this,function(E){switch(E.label){case 0:return w=t.tensor([b]),x=this.model.predict(w),[4,x.data()];case 1:for(v=E.sent(),$=[],I=0;I<v.length;I++)$.push({className:this._metadata.labels[I],probability:v[I]});return w.dispose(),x.dispose(),[2,$]}})})},m.prototype.predictTopK=function(b,w){return w===void 0&&(w=i),n(this,void 0,void 0,function(){var x,v,$;return e(this,function(I){switch(I.label){case 0:return x=t.tensor([b]),v=this.model.predict(x),[4,d(this._metadata.labels,v,w)];case 1:return $=I.sent(),x.dispose(),v.dispose(),[2,$]}})})},m.prototype.dispose=function(){this.posenetModel.dispose()},m})();Kn.CustomPoseNet=p;function f(m){return m===void 0&&(m={}),n(this,void 0,void 0,function(){var b;return e(this,function(w){switch(w.label){case 0:return m=h(m),[4,s.load({architecture:m.posenet.architecture,outputStride:m.posenet.outputStride,inputResolution:m.posenet.inputResolution,multiplier:m.posenet.multiplier})];case 1:return b=w.sent(),[2,b]}})})}Kn.loadPoseNet=f;function g(m,b){return n(this,void 0,void 0,function(){var w,x,v,$;return e(this,function(I){switch(I.label){case 0:return[4,t.loadLayersModel(m)];case 1:return w=I.sent(),b?[4,c(b)]:[3,3];case 2:return v=I.sent(),[3,4];case 3:v=null,I.label=4;case 4:return x=v,[4,f(x.modelSettings)];case 5:return $=I.sent(),[2,new p(w,$,x)]}})})}Kn.load=g;function y(m,b,w){return n(this,void 0,void 0,function(){var x,v,$,I,E;return e(this,function(C){switch(C.label){case 0:return[4,t.loadLayersModel(t.io.browserFiles([m,b]))];case 1:return x=C.sent(),[4,new Response(w).json()];case 2:return v=C.sent(),w?[4,c(v)]:[3,4];case 3:return I=C.sent(),[3,5];case 4:I=null,C.label=5;case 5:return $=I,[4,f($.modelSettings)];case 6:return E=C.sent(),[2,new p(x,E,$)]}})})}return Kn.loadFromFiles=y,Kn}var bs={},l2;function nte(){if(l2)return bs;l2=1;var n=bs&&bs.__extends||(function(){var d=function(p,f){return d=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(g,y){g.__proto__=y}||function(g,y){for(var m in y)y.hasOwnProperty(m)&&(g[m]=y[m])},d(p,f)};return function(p,f){d(p,f);function g(){this.constructor=p}p.prototype=f===null?Object.create(f):(g.prototype=f.prototype,new g)}})(),e=bs&&bs.__awaiter||function(d,p,f,g){function y(m){return m instanceof f?m:new f(function(b){b(m)})}return new(f||(f=Promise))(function(m,b){function w($){try{v(g.next($))}catch(I){b(I)}}function x($){try{v(g.throw($))}catch(I){b(I)}}function v($){$.done?m($.value):y($.value).then(w,x)}v((g=g.apply(d,p||[])).next())})},t=bs&&bs.__generator||function(d,p){var f={label:0,sent:function(){if(m[0]&1)throw m[1];return m[1]},trys:[],ops:[]},g,y,m,b;return b={next:w(0),throw:w(1),return:w(2)},typeof Symbol=="function"&&(b[Symbol.iterator]=function(){return this}),b;function w(v){return function($){return x([v,$])}}function x(v){if(g)throw new TypeError("Generator is already executing.");for(;f;)try{if(g=1,y&&(m=v[0]&2?y.return:v[0]?y.throw||((m=y.return)&&m.call(y),0):y.next)&&!(m=m.call(y,v[1])).done)return m;switch(y=0,m&&(v=[v[0]&2,m.value]),v[0]){case 0:case 1:m=v;break;case 4:return f.label++,{value:v[1],done:!1};case 5:f.label++,y=v[1],v=[0];continue;case 7:v=f.ops.pop(),f.trys.pop();continue;default:if(m=f.trys,!(m=m.length>0&&m[m.length-1])&&(v[0]===6||v[0]===2)){f=0;continue}if(v[0]===3&&(!m||v[1]>m[0]&&v[1]<m[3])){f.label=v[1];break}if(v[0]===6&&f.label<m[1]){f.label=m[1],m=v;break}if(m&&f.label<m[2]){f.label=m[2],f.ops.push(v);break}m[2]&&f.ops.pop(),f.trys.pop();continue}v=p.call(d,f)}catch($){v=[6,$],y=0}finally{g=m=0}if(v[0]&5)throw v[1];return{value:v[0]?v[1]:void 0,done:!0}}};Object.defineProperty(bs,"__esModule",{value:!0});var s=qr,r=qr,o=i2(),a=V1(),i=.15;function l(d,p){var f=new Array(p).fill(0);return f[d]=1,f}function u(d,p){for(var f,g=d.length,y=d.slice(),m=g-1;m>0;m-=1){var b=void 0;p?b=Math.floor(p()*(m+1)):b=Math.floor(Math.random()*(m+1)),f=[y[b],y[m]],y[m]=f[0],y[b]=f[1]}return y}var c=(function(d){n(p,d);function p(f,g,y){var m=d.call(this,f,g,y)||this;return m.model=f,m.posenetModel=g,m.examples=[],m}return Object.defineProperty(p.prototype,"isTrained",{get:function(){return!!this.model&&this.model.layers&&this.model.layers.length>2},enumerable:!0,configurable:!0}),Object.defineProperty(p.prototype,"isPrepared",{get:function(){return!!this.trainDataset},enumerable:!0,configurable:!0}),Object.defineProperty(p.prototype,"numClasses",{get:function(){return this._metadata.labels.length},enumerable:!0,configurable:!0}),p.prototype.addExample=function(f,g){return e(this,void 0,void 0,function(){return t(this,function(y){return this.examples[f].push(g),[2]})})},p.prototype.predict=function(f){return e(this,void 0,void 0,function(){return t(this,function(g){if(!this.model)throw new Error("Model has not been trained yet, called train() first");return[2,d.prototype.predict.call(this,f)]})})},p.prototype.predictTopK=function(f,g){return g===void 0&&(g=3),e(this,void 0,void 0,function(){return t(this,function(y){if(!this.model)throw new Error("Model has not been trained yet, called train() first");return[2,d.prototype.predictTopK.call(this,f,g)]})})},p.prototype.prepare=function(){for(var f in this.examples)if(f.length===0)throw new Error("Add some examples before training");var g=this.convertToTfDataset();this.trainDataset=g.trainDataset,this.validationDataset=g.validationDataset},p.prototype.convertToTfDataset=function(){for(var f=0;f<this.examples.length;f++)this.examples[f]=u(this.examples[f],this.seed);for(var g=[],y=[],m=function(I){var E=l(I,b.numClasses),C=b.examples[I].length,T=Math.ceil(i*C),S=C-T,A=b.examples[I].slice(0,S).map(function(O){return{data:O,label:E}}),D=b.examples[I].slice(S).map(function(O){return{data:O,label:E}});g=g.concat(A),y=y.concat(D)},b=this,f=0;f<this.examples.length;f++)m(f);g=u(g,this.seed),y=u(y,this.seed);var w=s.data.array(g.map(function(I){return I.data})),x=s.data.array(y.map(function(I){return I.data})),v=s.data.array(g.map(function(I){return I.label})),$=s.data.array(y.map(function(I){return I.label}));return{trainDataset:s.data.zip({xs:w,ys:v}),validationDataset:s.data.zip({xs:x,ys:$})}},p.prototype.save=function(f,g){return e(this,void 0,void 0,function(){return t(this,function(y){return[2,this.model.save(f,g)]})})},p.prototype.train=function(f,g){return g===void 0&&(g={}),e(this,void 0,void 0,function(){var y,m,b,w,x,v,$,I=this;return t(this,function(E){switch(E.label){case 0:if(y=g.onTrainEnd||(function(){}),g.onTrainEnd=function(C){I.__stopTrainingResolve&&(I.__stopTrainingResolve(),I.__stopTrainingResolve=null),y(C)},this.isPrepared||this.prepare(),m=this.getLabels().length,r.util.assert(m===this.numClasses,function(){return"Can not train, has "+m+" labels and "+I.numClasses+" classes"}),b=this.examples[0][1].length,this.seed?w=s.initializers.varianceScaling({seed:3.14}):w=s.initializers.varianceScaling({}),this.model=s.sequential({layers:[s.layers.dense({inputShape:[b],units:f.denseUnits,activation:"relu",kernelInitializer:w,useBias:!0}),s.layers.dropout({rate:.5}),s.layers.dense({units:this.numClasses,kernelInitializer:w,useBias:!1,activation:"softmax"})]}),x=s.train.rmsprop(f.learningRate),this.model.compile({optimizer:x,loss:"categoricalCrossentropy",metrics:["accuracy"]}),!(f.batchSize>0))throw new Error("Batch size is 0 or NaN. Please choose a non-zero fraction");return v=this.trainDataset.batch(f.batchSize),$=this.validationDataset.batch(f.batchSize),[4,this.model.fitDataset(v,{epochs:f.epochs,validationData:$,callbacks:g})];case 1:return E.sent(),x.dispose(),[2,this.model]}})})},p.prototype.prepareDataset=function(){for(var f=0;f<this.numClasses;f++)this.examples[f]=[]},p.prototype.stopTraining=function(){var f=this,g=new Promise(function(y,m){f.model.stopTraining=!0,f.__stopTrainingResolve=y});return g},p.prototype.dispose=function(){this.model.dispose(),d.prototype.dispose.call(this)},p.prototype.setLabel=function(f,g){this._metadata.labels[f]=g},p.prototype.setLabels=function(f){this._metadata.labels=f,this.prepareDataset()},p.prototype.getLabel=function(f){return this._metadata.labels[f]},p.prototype.getLabels=function(){return this._metadata.labels},p.prototype.setName=function(f){this._metadata.modelName=f},p.prototype.getName=function(){return this._metadata.modelName},p.prototype.calculateAccuracyPerClass=function(){return e(this,void 0,void 0,function(){var f,g,y,m,b,w,x,v,$,I,F,E,C,T,S,A,D,O,F,_=this;return t(this,function(B){switch(B.label){case 0:return f=this.validationDataset.mapAsync(function(U){return e(_,void 0,void 0,function(){return t(this,function(H){return[2,U.xs]})})}),g=this.validationDataset.mapAsync(function(U){return e(_,void 0,void 0,function(){return t(this,function(H){return[2,U.ys]})})}),y=Math.min(g.size,32),m=Math.ceil(g.size/y),b=f.batch(y),w=g.batch(y),[4,b.iterator()];case 1:return x=B.sent(),[4,w.iterator()];case 2:v=B.sent(),$=[],I=[],F=0,B.label=3;case 3:return F<m?[4,x.next()]:[3,7];case 4:return E=B.sent(),C=this.model.predict(E.value),T=C.argMax(1),$.push(T),[4,v.next()];case 5:S=B.sent(),A=S.value.argMax(1),I.push(A),E.value.dispose(),C.dispose(),S.value.dispose(),B.label=6;case 6:return F++,[3,3];case 7:if(D=s.concat(I),O=s.concat($),m!==1)for(F=0;F<$.length;F++)$[F].dispose(),I[F].dispose();return[2,{reference:D,predictions:O}]}})})},p.prototype.setSeed=function(f){this.seed=a(f)},p})(o.CustomPoseNet);bs.TeachablePoseNet=c;function h(d){return e(this,void 0,void 0,function(){var p;return t(this,function(f){switch(f.label){case 0:return[4,o.loadPoseNet(d.modelSettings)];case 1:return p=f.sent(),[2,new c(s.sequential(),p,d)]}})})}return bs.createTeachable=h,bs}var zs={},qh={},u2;function c2(){if(u2)return qh;u2=1;Object.defineProperty(qh,"__esModule",{value:!0});var n=function(){return document.createElement("canvas")};function e(s,r,o){s===void 0&&(s=200),r===void 0&&(r=200),o===void 0&&(o=!1);var a=document.createElement("canvas");if(a.width=s,a.height=r,o){var i=a.getContext("2d");i.translate(s,0),i.scale(-1,1)}return a}qh.createCanvas=e;function t(s,r,o,a){o===void 0&&(o=!1),a===void 0&&(a=n());var i=s.width,l=s.height;s instanceof HTMLVideoElement&&(i=s.videoWidth,l=s.videoHeight);var u=Math.min(i,l),c=r/u,h=Math.ceil(i*c),d=Math.ceil(l*c),p=h-r,f=d-r;a.width=a.height=r;var g=a.getContext("2d");return g.drawImage(s,~~(p/2)*-1,~~(f/2)*-1,h,d),o&&(g.scale(-1,1),g.drawImage(a,r*-1,0)),a}return qh.cropTo=t,qh}var h2;function ste(){if(h2)return zs;h2=1;var n=zs&&zs.__decorate||function(l,u,c,h){var d=arguments.length,p=d<3?u:h===null?h=Object.getOwnPropertyDescriptor(u,c):h,f;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")p=Reflect.decorate(l,u,c,h);else for(var g=l.length-1;g>=0;g--)(f=l[g])&&(p=(d<3?f(p):d>3?f(u,c,p):f(u,c))||p);return d>3&&p&&Object.defineProperty(u,c,p),p},e=zs&&zs.__awaiter||function(l,u,c,h){function d(p){return p instanceof c?p:new c(function(f){f(p)})}return new(c||(c=Promise))(function(p,f){function g(b){try{m(h.next(b))}catch(w){f(w)}}function y(b){try{m(h.throw(b))}catch(w){f(w)}}function m(b){b.done?p(b.value):d(b.value).then(g,y)}m((h=h.apply(l,u||[])).next())})},t=zs&&zs.__generator||function(l,u){var c={label:0,sent:function(){if(p[0]&1)throw p[1];return p[1]},trys:[],ops:[]},h,d,p,f;return f={next:g(0),throw:g(1),return:g(2)},typeof Symbol=="function"&&(f[Symbol.iterator]=function(){return this}),f;function g(m){return function(b){return y([m,b])}}function y(m){if(h)throw new TypeError("Generator is already executing.");for(;c;)try{if(h=1,d&&(p=m[0]&2?d.return:m[0]?d.throw||((p=d.return)&&p.call(d),0):d.next)&&!(p=p.call(d,m[1])).done)return p;switch(d=0,p&&(m=[m[0]&2,p.value]),m[0]){case 0:case 1:p=m;break;case 4:return c.label++,{value:m[1],done:!1};case 5:c.label++,d=m[1],m=[0];continue;case 7:m=c.ops.pop(),c.trys.pop();continue;default:if(p=c.trys,!(p=p.length>0&&p[p.length-1])&&(m[0]===6||m[0]===2)){c=0;continue}if(m[0]===3&&(!p||m[1]>p[0]&&m[1]<p[3])){c.label=m[1];break}if(m[0]===6&&c.label<p[1]){c.label=p[1],p=m;break}if(p&&c.label<p[2]){c.label=p[2],c.ops.push(m);break}p[2]&&c.ops.pop(),c.trys.pop();continue}m=u.call(l,c)}catch(b){m=[6,b],d=0}finally{h=p=0}if(m[0]&5)throw m[1];return{value:m[0]?m[1]:void 0,done:!0}}};Object.defineProperty(zs,"__esModule",{value:!0});var s=Xk,r=c2(),o={facingMode:"user",frameRate:24},a=function(l){return l.facingMode=l.facingMode||o.facingMode,l.frameRate=l.frameRate||o.frameRate,l.aspectRatio=l.aspectRatio||o.aspectRatio,l},i=(function(){function l(u,c,h){u===void 0&&(u=400),c===void 0&&(c=400),h===void 0&&(h=!1),this.width=u,this.height=c,this.flip=h}return l.prototype.getWebcam=function(u){if(u===void 0&&(u={}),!window.navigator.mediaDevices||!window.navigator.mediaDevices.getUserMedia)return Promise.reject("Your browser does not support WebRTC. Please try another one.");u.width=640;var c=a(u),h=document.createElement("video");return window.navigator.mediaDevices.getUserMedia({video:c}).then(function(d){return h.srcObject=d,h.addEventListener("loadedmetadata",function(p){var f=h.videoWidth,g=h.videoHeight;h.width=f,h.height=g}),h},function(){return Promise.reject("Could not open your camera. You may have denied access.")})},l.prototype.setup=function(u){return u===void 0&&(u={}),e(this,void 0,void 0,function(){var c;return t(this,function(h){switch(h.label){case 0:return this.webcam?[3,2]:(c=this,[4,this.getWebcam(u)]);case 1:c.webcam=h.sent(),this.canvas||(this.canvas=document.createElement("canvas"),this.canvas.width=this.width,this.canvas.height=this.height),h.label=2;case 2:return[2]}})})},l.prototype.play=function(){var u=this.webcam.play();return u},l.prototype.pause=function(){this.webcam.pause()},l.prototype.stop=function(){this.stopStreamedVideo(this.webcam)},l.prototype.update=function(){this.renderCameraToCanvas()},l.prototype.stopStreamedVideo=function(u){var c=u.srcObject,h=c.getTracks();h.forEach(function(d){d.stop()}),u.srcObject=null},l.prototype.renderCameraToCanvas=function(){if(this.canvas&&this.webcam){var u=this.canvas.getContext("2d");if(this.webcam.videoWidth!==0){var c=r.cropTo(this.webcam,this.width,this.flip);u.drawImage(c,0,0)}}},n([s.default],l.prototype,"getWebcam",null),n([s.default],l.prototype,"setup",null),n([s.default],l.prototype,"play",null),n([s.default],l.prototype,"pause",null),n([s.default],l.prototype,"stop",null),n([s.default],l.prototype,"update",null),n([s.default],l.prototype,"stopStreamedVideo",null),n([s.default],l.prototype,"renderCameraToCanvas",null),l})();return zs.Webcam=i,zs}var Kr={},d2;function rte(){if(d2)return Kr;d2=1;Object.defineProperty(Kr,"__esModule",{value:!0});var n=s2(),e="aqua",t="aqua",s=4,r=2;function o(c,h,d,p,f,g,y){p===void 0&&(p=s),f===void 0&&(f=e),g===void 0&&(g=t),y===void 0&&(y=1);for(var m=0;m<c.length;m++){var b=c[m];if(!(b.score<h)){var w=b.position,x=w.y,v=w.x;a(d,x*y,v*y,p,f,g)}}}Kr.drawKeypoints=o;function a(c,h,d,p,f,g){c.fillStyle=f,c.strokeStyle=g,c.beginPath(),c.arc(d,h,p,0,2*Math.PI),c.fill(),c.stroke()}Kr.drawPoint=a;function i(c){return[c.y,c.x]}Kr.toTuple=i;function l(c,h,d,p,f,g){p===void 0&&(p=r),f===void 0&&(f=t),g===void 0&&(g=1);var y=n.getAdjacentKeyPoints(c,h);y.forEach(function(m){u(i(m[0].position),i(m[1].position),d,p,f,g)})}Kr.drawSkeleton=l;function u(c,h,d,p,f,g){var y=c[0],m=c[1],b=h[0],w=h[1];d.beginPath(),d.moveTo(m*g,y*g),d.lineTo(w*g,b*g),d.lineWidth=p,d.strokeStyle=f,d.stroke()}return Kr.drawSegment=u,Kr}var p2;function ote(){if(p2)return gn;p2=1;Object.defineProperty(gn,"__esModule",{value:!0});var n=i2();gn.CustomPoseNet=n.CustomPoseNet,gn.load=n.load,gn.loadFromFiles=n.loadFromFiles;var e=nte();gn.TeachablePoseNet=e.TeachablePoseNet,gn.createTeachable=e.createTeachable;var t=ste();gn.Webcam=t.Webcam;var s=c2();gn.createCanvas=s.createCanvas;var r=rte();gn.drawKeypoints=r.drawKeypoints,gn.drawSkeleton=r.drawSkeleton,gn.drawPoint=r.drawPoint,gn.drawSegment=r.drawSegment;var o=o2();return gn.version=o.version,gn}var Q0=ote();const f2=bm({__proto__:null,default:Am(Q0)},[Q0]),mm={name:"@kubohiroya/turbowarp-teachable-machine",version:"3.2.1",devDependencies:{"@teachablemachine/image":"0.8.5","@teachablemachine/pose":"0.8.6","@tensorflow-models/speech-commands":"0.5.4","@tensorflow/tfjs":"4.22.0","@tensorflow/tfjs-backend-wasm":"4.22.0","@tensorflow/tfjs-backend-webgpu":"4.22.0"}};class ate extends Error{code="TM-RUNTIME-ABORTED";constructor(){super("TM runtime model loading was cancelled."),this.name="AbortError"}}function ew(){return new ate}function Kh(n){if(n?.aborted)throw ew()}function tw(n){return typeof n=="object"&&n!==null}function ite(n){return tw(n)&&typeof n.dispose=="function"?n:null}function lte(n){if(n===void 0)return{};if(!tw(n))throw new TypeError("TM runtime load options must be an object.");const e=n.signal;if(e!==void 0&&(!tw(e)||typeof e.aborted!="boolean"||typeof e.addEventListener!="function"||typeof e.removeEventListener!="function"))throw new TypeError("TM runtime load signal must be an AbortSignal.");const t=n.parallelModelInitialization;if(t!==void 0&&typeof t!="boolean")throw new TypeError("parallelModelInitialization must be a boolean.");return{...e===void 0?{}:{signal:e},...t===void 0?{}:{parallelModelInitialization:t}}}async function nw(n){const e=[...new Set(n.map(ite).filter(s=>s!==null))];return(await Promise.allSettled(e.map(s=>Promise.resolve().then(()=>s.dispose())))).flatMap(s=>s.status==="rejected"?[s.reason]:[])}function sw(n,e){const t=[...n,...e];throw t.length===1?t[0]:new AggregateError(t,"TM runtime model loading and cleanup did not complete.")}function ute(n,e){return!e?.aborted||n?.name==="AbortError"?[n]:[ew(),n]}async function cte(n,e,t,s,r){let o,a;try{o=await n.loadClassifier(e,t),Kh(r);const i=await n.loadMetadata(s);return Kh(r),a=await n.loadPoseNet(i),Kh(r),n.createModel(o,a,i)}catch(i){const l=await nw([o,a]);sw(ute(i,r),l)}}function rw(n){try{return Promise.resolve(n())}catch(e){return Promise.reject(e)}}async function hte(n,e,t,s,r){const[o]=await Promise.allSettled([rw(()=>n.loadMetadata(s))]),a=o.status==="fulfilled"?o.value:void 0,i=await Promise.allSettled([rw(()=>n.loadClassifier(e,t)),o.status==="fulfilled"?rw(()=>n.loadPoseNet(a)):Promise.resolve(void 0)]),l=i[0].status==="fulfilled"?i[0].value:void 0,u=i[1].status==="fulfilled"?i[1].value:void 0,c=[...o.status==="rejected"?[o.reason]:[],...i.flatMap(h=>h.status==="rejected"?[h.reason]:[])];if(r?.aborted||c.length>0){const h=await nw([l,u]);sw([...r?.aborted?[ew()]:[],...c],h)}try{return n.createModel(l,u,a)}catch(h){const d=await nw([l,u]);sw([h],d)}}function dte(n){return async function(t,s,r,o){const a=lte(o);return Kh(a.signal),await n.ready(),Kh(a.signal),a.parallelModelInitialization?hte(n,t,s,r,a.signal):cte(n,t,s,r,a.signal)}}const pte=["auto","webgpu","webgl","wasm","cpu"],m2=Object.freeze(["webgpu","webgl","wasm","cpu"]),fte=Object.freeze({auto:"auto",automatic:"auto",default:"auto",fastest:"auto",自動:"auto",おまかせ:"auto",webgpu:"webgpu",gpu:"webgpu",webgl:"webgl",wasm:"wasm",webassembly:"wasm",simd:"wasm",cpu:"cpu",javascript:"cpu"});class mte extends Error{code="TM-COMPUTE-UNAVAILABLE";mode;attempts;constructor(e,t){const s=t.map(r=>`${r.backend}: ${r.reason}`).join("; ");super(`TM: No compute backend accepted mode "${e}". ${s}`),this.name="ComputeBackendUnavailableError",this.mode=e,this.attempts=Object.freeze([...t])}}function g2(n,e="auto"){const t=String(n??"").trim().toLowerCase();return t===""?e:fte[t]??e}function gte(n,e=m2){return Object.freeze(n==="auto"?[...e]:[n,...e.filter(t=>t!==n)])}function yte(n){const e=n?.message,t=String(e??n??"").trim();return t===""?"activation failed":t}async function bte(n,e="auto",t=m2){const s=e==="auto"?null:e,r=[];for(const o of gte(e,t))try{if(!await n.isSupported(o)){r.push({backend:o,reason:"not supported by this browser"});continue}if(await n.prepare(o),!await n.activate(o))throw new Error("TensorFlow.js did not switch to this backend");return await n.verify(o),Object.freeze({mode:e,backend:o,requested:s,fallback:s!==null&&s!==o,attempts:Object.freeze([...r])})}catch(a){r.push({backend:o,reason:yte(a)})}throw new mte(e,r)}function xte(n){const{tf:e}=n;let t=null,s=Promise.resolve(),r=!1;function o(l){return l==="webgpu"?n.hasWebGPU():l==="wasm"?n.hasWebAssembly():!0}const a={isSupported:o,async prepare(l){const u=await n.loadBackend(l);if(!(l!=="wasm"||r)){if(typeof u?.setWasmPaths!="function")throw new Error("the WebAssembly backend bundle did not expose setWasmPaths");u.setWasmPaths(n.wasmAssetBase()),r=!0}},async activate(l){return await e.setBackend(l)?(await e.ready(),e.getBackend()===l):!1},async verify(){const l=e.ones([1,4,4,1]),u=e.ones([3,3,1,1]);let c=null;try{c=e.conv2d(l,u,1,"valid");const h=await c.data();if(h.length!==4||Math.abs(Number(h[0])-9)>.001)throw new Error("the backend returned an incorrect convolution result")}finally{e.dispose([l,u,...c?[c]:[]])}}};function i(l){const u=s.then(l,l);return s=u.catch(()=>{}),u}return Object.freeze({modes:pte,select(l){const u=g2(l);return i(async()=>(t&&t.mode===u&&e.getBackend()===t.backend||(t=await bte(a,u)),t))},getSelection:()=>t,getMode:()=>t?.mode??"auto",getBackend:()=>e.getBackend(),isBackendSupported(l){const u=g2(l);return u==="auto"||o(u)}})}const Dt=globalThis;if(Dt.tf!==void 0&&Dt.tf!==tm)throw new Error("TM browser runtime found a different global TensorFlow.js instance.");if(Dt.tmPose!==void 0&&Dt.tmPose!==f2)throw new Error("TM browser runtime found a different global Teachable Machine Pose instance.");if(Dt.tmImage!==void 0&&Dt.tmImage!==Qk)throw new Error("TM browser runtime found a different global Teachable Machine Image instance.");if(Dt.speechCommands!==void 0&&Dt.speechCommands!==Ak)throw new Error("TM browser runtime found a different global speech-commands instance.");const su=mm.devDependencies,wte=`https://cdn.jsdelivr.net/npm/${mm.name}@${mm.version}/dist/`;function vte(){const n=typeof document>"u"?null:document.currentScript,e=n&&"src"in n?String(n.src??""):"";if(e!=="")try{return new URL("./",e).href}catch{}return wte}const gm=vte(),ow=new Map;function y2(n){const e=ow.get(n);if(e)return e;const t=new Promise((s,r)=>{const o=document.createElement("script");o.src=n,o.addEventListener("load",()=>s(),{once:!0}),o.addEventListener("error",()=>{ow.delete(n),r(new Error(`TM: Failed to load compute backend bundle: ${n}`))},{once:!0}),document.head.appendChild(o)});return ow.set(n,t),t}async function Ste(n){return n==="wasm"?(Dt.tmBackendWasm||await y2(new URL("backend-wasm.js",gm).href),Dt.tmBackendWasm??null):(n==="webgpu"&&(Dt.tmBackendWebGPU||await y2(new URL("backend-webgpu.js",gm).href)),null)}const Ite=xte({tf:tm,loadBackend:Ste,wasmAssetBase:()=>new URL("wasm/",gm).href,hasWebGPU:()=>typeof navigator<"u"&&navigator.gpu!==void 0&&navigator.gpu!==null,hasWebAssembly:()=>typeof WebAssembly=="object"&&typeof WebAssembly.instantiate=="function"});function Nte(n){const e=n?.modelSettings?.posenet??{};return{architecture:e.architecture??"MobileNetV1",outputStride:e.outputStride??16,inputResolution:e.inputResolution??257,multiplier:e.multiplier??.75}}const $te=dte({ready:()=>Wm(),loadClassifier:(n,e)=>fh(sv([n,e])),async loadMetadata(n){const e=await new Response(n).json();if(typeof e!="object"||e===null||!Array.isArray(e.labels))throw new Error("Invalid Metadata provided");return e},loadPoseNet:n=>yk(Nte(n)),createModel:(n,e,t)=>new Q0.CustomPoseNet(n,e,t)}),Cte=Object.freeze({...f2,loadFromFiles:$te}),Tte=Object.freeze({async load(n,e){const t=Ek("BROWSER_FFT",void 0,n,e);return await t.ensureModelLoaded(),t}});Dt.tf=tm,Dt.speechCommands=Ak,Dt.tmImage=Qk,Dt.tmPose=Cte,Dt.tmAudio=Tte,Dt.tmCompute=Ite;const b2=Object.freeze({version:mm.version,tensorflow:su["@tensorflow/tfjs"],tensorflowBackendWasm:su["@tensorflow/tfjs-backend-wasm"],tensorflowBackendWebGPU:su["@tensorflow/tfjs-backend-webgpu"],speechCommands:su["@tensorflow-models/speech-commands"],teachableMachineImage:su["@teachablemachine/image"],teachableMachinePose:su["@teachablemachine/pose"],assetBase:gm});Dt[Symbol.for("@kubohiroya/turbowarp-teachable-machine/runtime")]=b2,Dt[Symbol.for("@kubohiroya/turbowarp-teachablemachine/runtime")]=b2})();
|
package/dist/tm.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kubohiroya/turbowarp-teachable-machine",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.1",
|
|
4
4
|
"description": "A TurboWarp extension for recognition using Teachable Machine pose, image, and audio models.",
|
|
5
5
|
"author": "Hiroya Kubo <hiroya@cuc.ac.jp>",
|
|
6
6
|
"license": "MPL-2.0",
|