numpy-ts 0.9.0 → 0.10.0
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 +27 -21
- package/dist/numpy-ts.browser.js +2 -2
- package/dist/numpy-ts.esm.js +2 -2
- package/dist/numpy-ts.node-io.cjs +3 -3
- package/dist/numpy-ts.node-io.cjs.map +4 -4
- package/dist/numpy-ts.node-io.mjs +3 -3
- package/dist/numpy-ts.node-io.mjs.map +4 -4
- package/dist/numpy-ts.node.cjs +2 -2
- package/dist/numpy-ts.node.cjs.map +4 -4
- package/dist/types/core/ndarray.d.ts +485 -0
- package/dist/types/index.d.ts +40 -1
- package/dist/types/ops/advanced.d.ts +7 -0
- package/dist/types/ops/arithmetic.d.ts +49 -0
- package/dist/types/ops/logic.d.ts +201 -0
- package/dist/types/ops/random.d.ts +136 -0
- package/dist/types/ops/sorting.d.ts +8 -0
- package/dist/types/ops/statistics.d.ts +108 -0
- package/package.json +2 -2
package/dist/numpy-ts.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
function Wt(r){if(!r.includes(":")){if(r.includes("."))throw new Error(`Invalid slice index: "${r}" (must be integer)`);let a=parseInt(r,10);if(isNaN(a))throw new Error(`Invalid slice index: "${r}"`);return{start:a,stop:null,step:1,isIndex:!0}}let t=r.split(":");if(t.length>3)throw new Error(`Invalid slice notation: "${r}" (too many colons)`);let e=t[0]===""?null:parseInt(t[0],10),n=t[1]===""||t[1]===void 0?null:parseInt(t[1],10),o=t[2]===""||t[2]===void 0?1:parseInt(t[2],10);if(e!==null&&isNaN(e))throw new Error(`Invalid start index in slice: "${r}"`);if(n!==null&&isNaN(n))throw new Error(`Invalid stop index in slice: "${r}"`);if(isNaN(o))throw new Error(`Invalid step in slice: "${r}"`);if(o===0)throw new Error("Slice step cannot be zero");return{start:e,stop:n,step:o,isIndex:!1}}function Gt(r,t){let{start:e,stop:n}=r,{step:o,isIndex:a}=r;if(a){if(e===null)throw new Error("Index cannot be null");let i=e<0?t+e:e;if(i<0||i>=t)throw new Error(`Index ${e} is out of bounds for size ${t}`);return{start:i,stop:i+1,step:1,isIndex:!0}}return o>0?(e===null&&(e=0),n===null&&(n=t)):(e===null&&(e=t-1),n===null&&(n=-t-1)),e<0&&(e=t+e),n<0&&(n=t+n),e=Math.max(0,Math.min(e,t)),n=Math.max(-1,Math.min(n,t)),{start:e,stop:n,step:o,isIndex:!1}}var q="float64";function T(r){switch(r){case"float64":return Float64Array;case"float32":return Float32Array;case"int64":return BigInt64Array;case"int32":return Int32Array;case"int16":return Int16Array;case"int8":return Int8Array;case"uint64":return BigUint64Array;case"uint32":return Uint32Array;case"uint16":return Uint16Array;case"uint8":return Uint8Array;case"bool":return Uint8Array;default:throw new Error(`Unknown dtype: ${r}`)}}function Yt(r){switch(r){case"float64":case"int64":case"uint64":return 8;case"float32":case"int32":case"uint32":return 4;case"int16":case"uint16":return 2;case"int8":case"uint8":case"bool":return 1;default:throw new Error(`Unknown dtype: ${r}`)}}function Jt(r){return r==="int64"||r==="int32"||r==="int16"||r==="int8"||r==="uint64"||r==="uint32"||r==="uint16"||r==="uint8"}function Ht(r){return r==="float64"||r==="float32"}function I(r){return r==="int64"||r==="uint64"}function k(r,t){if(r===t)return r;if(r==="bool")return t;if(t==="bool")return r;if(Ht(r)||Ht(t)){if(r==="float64"||t==="float64")return"float64";if(r==="float32"){let c=t;return c==="int32"||c==="int64"||c==="uint32"||c==="uint64"?"float64":"float32"}if(t==="float32"){let c=r;return c==="int32"||c==="int64"||c==="uint32"||c==="uint64"?"float64":"float32"}return"float32"}let e=r.startsWith("int"),n=t.startsWith("int"),o=r.startsWith("uint"),a=t.startsWith("uint"),i=c=>c.includes("64")?64:c.includes("32")?32:c.includes("16")?16:c.includes("8")?8:0,u=i(r),s=i(t);if(r==="int64"&&t==="uint64"||r==="uint64"&&t==="int64")return"float64";if(e&&a&&u===s){if(u===8)return"int16";if(u===16)return"int32";if(u===32)return"int64"}if(o&&n&&u===s){if(s===8)return"int16";if(s===16)return"int32";if(s===32)return"int64"}if(e&&n||o&&a){let c=Math.max(u,s);return e?c===64?"int64":c===32?"int32":c===16?"int16":"int8":c===64?"uint64":c===32?"uint32":c===16?"uint16":"uint8"}return e&&a?u>s?r:s===8?"int16":s===16?"int32":s===32?"int64":"float64":o&&n?s>u?t:u===8?"int16":u===16?"int32":u===32?"int64":"float64":"float64"}var N=class r{constructor(t,e,n,o,a){this._data=t,this._shape=e,this._strides=n,this._offset=o,this._dtype=a}get shape(){return this._shape}get ndim(){return this._shape.length}get size(){return this._shape.reduce((t,e)=>t*e,1)}get dtype(){return this._dtype}get data(){return this._data}get strides(){return this._strides}get offset(){return this._offset}get isCContiguous(){let t=this._shape,e=this._strides,n=t.length;if(n===0)return!0;if(n===1)return e[0]===1;let o=1;for(let a=n-1;a>=0;a--){if(e[a]!==o)return!1;o*=t[a]}return!0}get isFContiguous(){let t=this._shape,e=this._strides,n=t.length;if(n===0)return!0;if(n===1)return e[0]===1;let o=1;for(let a=0;a<n;a++){if(e[a]!==o)return!1;o*=t[a]}return!0}iget(t){let e=this._shape,n=this._strides,o=e.length;if(o===0)return this._data[this._offset];let a=t,i=this._offset;for(let u=0;u<o;u++){let s=1;for(let l=u+1;l<o;l++)s*=e[l];let c=Math.floor(a/s);a=a%s,i+=c*n[u]}return this._data[i]}iset(t,e){let n=this._shape,o=this._strides,a=n.length;if(a===0){this._data[this._offset]=e;return}let i=t,u=this._offset;for(let s=0;s<a;s++){let c=1;for(let m=s+1;m<a;m++)c*=n[m];let l=Math.floor(i/c);i=i%c,u+=l*o[s]}this._data[u]=e}get(...t){let e=this._strides,n=this._offset;for(let o=0;o<t.length;o++)n+=t[o]*e[o];return this._data[n]}set(t,e){let n=this._strides,o=this._offset;for(let a=0;a<t.length;a++)o+=t[a]*n[a];this._data[o]=e}copy(){let t=Array.from(this._shape),e=this._dtype,n=this.size,o=T(e);if(!o)throw new Error(`Cannot copy array with dtype ${e}`);let a=new o(n);if(this.isCContiguous&&this._offset===0)if(I(e)){let i=this._data,u=a;for(let s=0;s<n;s++)u[s]=i[s]}else a.set(this._data);else if(I(e)){let i=a;for(let u=0;u<n;u++)i[u]=this.iget(u)}else for(let i=0;i<n;i++)a[i]=this.iget(i);return new r(a,t,r._computeStrides(t),0,e)}static fromData(t,e,n,o,a){let i=o??r._computeStrides(e),u=a??0;return new r(t,e,i,u,n)}static zeros(t,e=q){let n=t.reduce((i,u)=>i*u,1),o=T(e);if(!o)throw new Error(`Cannot create array with dtype ${e}`);let a=new o(n);return new r(a,t,r._computeStrides(t),0,e)}static ones(t,e=q){let n=t.reduce((i,u)=>i*u,1),o=T(e);if(!o)throw new Error(`Cannot create array with dtype ${e}`);let a=new o(n);return I(e)?a.fill(BigInt(1)):a.fill(1),new r(a,t,r._computeStrides(t),0,e)}static _computeStrides(t){let e=new Array(t.length),n=1;for(let o=t.length-1;o>=0;o--)e[o]=n,n*=t[o];return e}};function R(r){let t=new Array(r.length),e=1;for(let n=r.length-1;n>=0;n--)t[n]=e,e*=r[n];return t}function fr(r,t){let e=r.length,n=t.length,o=Math.max(e,n),a=new Array(o);for(let i=0;i<o;i++){let u=i<o-e?1:r[i-(o-e)],s=i<o-n?1:t[i-(o-n)];if(u===s)a[i]=u;else if(u===1)a[i]=s;else if(s===1)a[i]=u;else throw new Error(`operands could not be broadcast together with shapes ${JSON.stringify(Array.from(r))} ${JSON.stringify(Array.from(t))}`)}return a}function na(r,t,e){let n=r.length,o=e.length,a=new Array(o).fill(0);for(let i=0;i<n;i++){let u=o-n+i,s=r[i],c=e[u];if(s===c)a[u]=t[i];else if(s===1)a[u]=0;else throw new Error("Invalid broadcast")}return a}function Nr(r,t){let e=na(r.shape,r.strides,t);return N.fromData(r.data,Array.from(t),r.dtype,e,r.offset)}function F(r,t,e,n){let o=fr(r.shape,t.shape),a=Nr(r,o),i=Nr(t,o),u=k(r.dtype,t.dtype),s=N.zeros(o,u),c=s.data,l=s.size;if(I(u)){let m=c;for(let f=0;f<l;f++){let p=a.iget(f),y=i.iget(f),d=typeof p=="bigint"?p:BigInt(Math.round(p)),g=typeof y=="bigint"?y:BigInt(Math.round(y));n==="add"?m[f]=d+g:n==="subtract"?m[f]=d-g:n==="multiply"?m[f]=d*g:n==="divide"?m[f]=d/g:m[f]=BigInt(Math.round(e(Number(d),Number(g))))}}else{let m=I(r.dtype)||I(t.dtype);for(let f=0;f<l;f++){let p=a.iget(f),y=i.iget(f),d=Number(p),g=Number(y);c[f]=e(d,g)}}return s}function K(r,t,e){let n=fr(r.shape,t.shape),o=Nr(r,n),a=Nr(t,n),i=n.reduce((c,l)=>c*l,1),u=new Uint8Array(i),s=I(r.dtype)||I(t.dtype);for(let c=0;c<i;c++){let l=o.iget(c),m=a.iget(c),f=Number(l),p=Number(m);u[c]=e(f,p)?1:0}return N.fromData(u,n,"bool")}function C(r,t,e=!0){let n=r.dtype,o=Array.from(r.shape),a=r.size,u=e?n:n!=="float32"&&n!=="float64"?"float64":n,s=N.zeros(o,u),c=s.data,l=r.data;if(I(n))if(I(u)){let m=c;for(let f=0;f<a;f++){let p=Number(l[f]);m[f]=BigInt(Math.round(t(p)))}}else for(let m=0;m<a;m++)c[m]=t(Number(l[m]));else for(let m=0;m<a;m++)c[m]=t(Number(l[m]));return s}function Rr(r,t){return r.isCContiguous&&t.isCContiguous&&r.shape.length===t.shape.length&&r.shape.every((e,n)=>e===t.shape[n])}function Qt(r,t){return typeof t=="number"?ia(r,t):Rr(r,t)?oa(r,t):F(r,t,(e,n)=>e+n,"add")}function oa(r,t){let e=k(r.dtype,t.dtype),n=N.zeros(Array.from(r.shape),e),o=r.size,a=r.data,i=t.data,u=n.data;if(I(e)){let s=u;if(!I(r.dtype)||!I(t.dtype))for(let l=0;l<o;l++){let m=typeof a[l]=="bigint"?a[l]:BigInt(Math.round(Number(a[l]))),f=typeof i[l]=="bigint"?i[l]:BigInt(Math.round(Number(i[l])));s[l]=m+f}else{let l=a,m=i;for(let f=0;f<o;f++)s[f]=l[f]+m[f]}}else if(I(r.dtype)||I(t.dtype))for(let c=0;c<o;c++){let l=typeof a[c]=="bigint"?Number(a[c]):a[c],m=typeof i[c]=="bigint"?Number(i[c]):i[c];u[c]=l+m}else for(let c=0;c<o;c++)u[c]=a[c]+i[c];return n}function Xt(r,t){return typeof t=="number"?ua(r,t):Rr(r,t)?aa(r,t):F(r,t,(e,n)=>e-n,"subtract")}function aa(r,t){let e=k(r.dtype,t.dtype),n=N.zeros(Array.from(r.shape),e),o=r.size,a=r.data,i=t.data,u=n.data;if(I(e)){let s=u;if(!I(r.dtype)||!I(t.dtype))for(let l=0;l<o;l++){let m=typeof a[l]=="bigint"?a[l]:BigInt(Math.round(Number(a[l]))),f=typeof i[l]=="bigint"?i[l]:BigInt(Math.round(Number(i[l])));s[l]=m-f}else{let l=a,m=i;for(let f=0;f<o;f++)s[f]=l[f]-m[f]}}else if(I(r.dtype)||I(t.dtype))for(let c=0;c<o;c++){let l=typeof a[c]=="bigint"?Number(a[c]):a[c],m=typeof i[c]=="bigint"?Number(i[c]):i[c];u[c]=l-m}else for(let c=0;c<o;c++)u[c]=a[c]-i[c];return n}function Kt(r,t){return typeof t=="number"?ca(r,t):Rr(r,t)?sa(r,t):F(r,t,(e,n)=>e*n,"multiply")}function sa(r,t){let e=k(r.dtype,t.dtype),n=N.zeros(Array.from(r.shape),e),o=r.size,a=r.data,i=t.data,u=n.data;if(I(e)){let s=u;if(!I(r.dtype)||!I(t.dtype))for(let l=0;l<o;l++){let m=typeof a[l]=="bigint"?a[l]:BigInt(Math.round(Number(a[l]))),f=typeof i[l]=="bigint"?i[l]:BigInt(Math.round(Number(i[l])));s[l]=m*f}else{let l=a,m=i;for(let f=0;f<o;f++)s[f]=l[f]*m[f]}}else if(I(r.dtype)||I(t.dtype))for(let c=0;c<o;c++){let l=typeof a[c]=="bigint"?Number(a[c]):a[c],m=typeof i[c]=="bigint"?Number(i[c]):i[c];u[c]=l*m}else for(let c=0;c<o;c++)u[c]=a[c]*i[c];return n}function re(r,t){if(typeof t=="number")return la(r,t);let e=r.dtype==="float64",n=t.dtype==="float64",o=r.dtype==="float32",a=t.dtype==="float32";if(e||n){let s=e?r:or(r,"float64"),c=n?t:or(t,"float64");return F(s,c,(l,m)=>l/m,"divide")}if(o||a){let s=o?r:or(r,"float32"),c=a?t:or(t,"float32");return F(s,c,(l,m)=>l/m,"divide")}let i=or(r,"float64"),u=or(t,"float64");return F(i,u,(s,c)=>s/c,"divide")}function or(r,t){let e=N.zeros(Array.from(r.shape),t),n=r.size,o=r.data,a=e.data;for(let i=0;i<n;i++)a[i]=Number(o[i]);return e}function ia(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=N.zeros(n,e),u=i.data;if(I(e)){let s=o,c=u,l=BigInt(Math.round(t));for(let m=0;m<a;m++)c[m]=s[m]+l}else for(let s=0;s<a;s++)u[s]=Number(o[s])+t;return i}function ua(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=N.zeros(n,e),u=i.data;if(I(e)){let s=o,c=u,l=BigInt(Math.round(t));for(let m=0;m<a;m++)c[m]=s[m]-l}else for(let s=0;s<a;s++)u[s]=Number(o[s])-t;return i}function ca(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=N.zeros(n,e),u=i.data;if(I(e)){let s=o,c=u,l=BigInt(Math.round(t));for(let m=0;m<a;m++)c[m]=s[m]*l}else for(let s=0;s<a;s++)u[s]=Number(o[s])*t;return i}function la(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,u=e!=="float32"&&e!=="float64"?"float64":e,s=N.zeros(n,u),c=s.data;if(I(e))for(let l=0;l<a;l++)c[l]=Number(o[l])/t;else for(let l=0;l<a;l++)c[l]=Number(o[l])/t;return s}function te(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=N.zeros(e,t),i=a.data;if(I(t)){let u=n,s=i;for(let c=0;c<o;c++){let l=u[c];s[c]=l<0n?-l:l}}else for(let u=0;u<o;u++)i[u]=Math.abs(Number(n[u]));return a}function ee(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=N.zeros(e,t),i=a.data;if(I(t)){let u=n,s=i;for(let c=0;c<o;c++)s[c]=-u[c]}else for(let u=0;u<o;u++)i[u]=-Number(n[u]);return a}function ne(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=N.zeros(e,t),i=a.data;if(I(t)){let u=n,s=i;for(let c=0;c<o;c++){let l=u[c];s[c]=l>0n?1n:l<0n?-1n:0n}}else for(let u=0;u<o;u++){let s=Number(n[u]);i[u]=s>0?1:s<0?-1:0}return a}function Dr(r,t){return typeof t=="number"?fa(r,t):F(r,t,(e,n)=>(e%n+n)%n,"mod")}function fa(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=N.zeros(n,e),u=i.data;if(I(e)){let s=o,c=u,l=BigInt(Math.round(t));for(let m=0;m<a;m++){let f=s[m];c[m]=(f%l+l)%l}}else for(let s=0;s<a;s++){let c=Number(o[s]);u[s]=(c%t+t)%t}return i}function Lr(r,t){return typeof t=="number"?ma(r,t):F(r,t,(e,n)=>Math.floor(e/n),"floor_divide")}function ma(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=N.zeros(n,e),u=i.data;if(I(e)){let s=o,c=u,l=BigInt(Math.round(t));for(let m=0;m<a;m++)c[m]=s[m]/l}else for(let s=0;s<a;s++)u[s]=Math.floor(Number(o[s])/t);return i}function oe(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=N.zeros(e,t),i=a.data;for(let u=0;u<o;u++)i[u]=n[u];return a}function ae(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,i=t!=="float32"&&t!=="float64"?"float64":t,u=N.zeros(e,i),s=u.data;if(I(t))for(let c=0;c<o;c++)s[c]=1/Number(n[c]);else for(let c=0;c<o;c++)s[c]=1/Number(n[c]);return u}function se(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,i=t!=="float32"&&t!=="float64"?"float64":t,u=N.zeros(e,i),s=u.data;for(let c=0;c<o;c++)s[c]=Math.cbrt(Number(n[c]));return u}function ie(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=t==="float32"?"float32":"float64",i=N.zeros(e,a),u=i.data;for(let s=0;s<o;s++)u[s]=Math.abs(Number(n[s]));return i}function ue(r,t){let e=Lr(r,t),n=Dr(r,t);return[e,n]}function ce(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=N.zeros(e,t),i=a.data;if(I(t)){let u=n,s=i;for(let c=0;c<o;c++)s[c]=u[c]*u[c]}else for(let u=0;u<o;u++){let s=Number(n[u]);i[u]=s*s}return a}function le(r,t){return Dr(r,t)}function fe(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.size,a=e==="float32"?"float32":"float64",i=N.zeros(n,a),u=i.data;if(typeof t=="number")for(let s=0;s<o;s++){let c=Number(r.data[s]);c<0?u[s]=0:c===0?u[s]=t:u[s]=1}else{let s=t.data,c=t.shape;if(n.every((l,m)=>l===c[m]))for(let l=0;l<o;l++){let m=Number(r.data[l]);m<0?u[l]=0:m===0?u[l]=Number(s[l]):u[l]=1}else for(let l=0;l<o;l++){let m=Number(r.data[l]),f=l%t.size;m<0?u[l]=0:m===0?u[l]=Number(s[f]):u[l]=1}}return i}function rr(r){if(r.length===0)return[];if(r.length===1)return Array.from(r[0]);let t=Math.max(...r.map(n=>n.length)),e=new Array(t);for(let n=0;n<t;n++){let o=1;for(let a of r){let i=a.length-t+n,u=i<0?1:a[i];if(u!==1){if(o===1)o=u;else if(o!==u)return null}}e[n]=o}return e}function ya(r,t,e){let n=r.length,o=e.length,a=new Array(o).fill(0);for(let i=0;i<n;i++){let u=o-n+i,s=r[i],c=e[u];if(s===c)a[u]=t[i];else if(s===1)a[u]=0;else throw new Error("Invalid broadcast")}return a}function Y(r,t){let e=ya(r.shape,r.strides,t);return N.fromData(r.data,Array.from(t),r.dtype,e,r.offset)}function Zr(...r){let t=rr(r);if(t===null){let e=r.map(n=>`(${n.join(",")})`).join(" ");throw new Error(`shape mismatch: objects cannot be broadcast to a single shape. Mismatch is between ${e}`)}return t}function me(r,t){return typeof t=="number"?da(r,t):K(r,t,(e,n)=>e>n)}function pe(r,t){return typeof t=="number"?ga(r,t):K(r,t,(e,n)=>e>=n)}function ye(r,t){return typeof t=="number"?ha(r,t):K(r,t,(e,n)=>e<n)}function de(r,t){return typeof t=="number"?Aa(r,t):K(r,t,(e,n)=>e<=n)}function ge(r,t){return typeof t=="number"?ba(r,t):K(r,t,(e,n)=>e===n)}function he(r,t){return typeof t=="number"?Sa(r,t):K(r,t,(e,n)=>e!==n)}function Wr(r,t,e=1e-5,n=1e-8){return typeof t=="number"?Na(r,t,e,n):K(r,t,(o,a)=>{let i=Math.abs(o-a),u=n+e*Math.abs(a);return i<=u})}function Ae(r,t,e=1e-5,n=1e-8){let o=Wr(r,t,e,n),a=o.data;for(let i=0;i<o.size;i++)if(a[i]===0)return!1;return!0}function be(r,t){let e=[Array.from(r.shape),Array.from(t.shape)],n=rr(e);if(n===null)return!1;let o=Y(r,n),a=Y(t,n),i=n.length,u=n.reduce((l,m)=>l*m,1),s=I(o.dtype),c=I(a.dtype);for(let l=0;l<u;l++){let m=l,f=new Array(i);for(let d=i-1;d>=0;d--)f[d]=m%n[d],m=Math.floor(m/n[d]);let p=o.get(...f),y=a.get(...f);if(s||c){let d=typeof p=="bigint"?p:BigInt(Number(p)),g=typeof y=="bigint"?y:BigInt(Number(y));if(d!==g)return!1}else if(p!==y)return!1}return!0}function da(r,t){let e=new Uint8Array(r.size),n=r.data;for(let o=0;o<r.size;o++)e[o]=n[o]>t?1:0;return N.fromData(e,Array.from(r.shape),"bool")}function ga(r,t){let e=new Uint8Array(r.size),n=r.data;for(let o=0;o<r.size;o++)e[o]=n[o]>=t?1:0;return N.fromData(e,Array.from(r.shape),"bool")}function ha(r,t){let e=new Uint8Array(r.size),n=r.data;for(let o=0;o<r.size;o++)e[o]=n[o]<t?1:0;return N.fromData(e,Array.from(r.shape),"bool")}function Aa(r,t){let e=new Uint8Array(r.size),n=r.data;for(let o=0;o<r.size;o++)e[o]=n[o]<=t?1:0;return N.fromData(e,Array.from(r.shape),"bool")}function ba(r,t){let e=new Uint8Array(r.size),n=r.data,o=r.dtype;if(I(o)){let a=BigInt(Math.round(t)),i=n;for(let u=0;u<r.size;u++)e[u]=i[u]===a?1:0}else for(let a=0;a<r.size;a++)e[a]=n[a]===t?1:0;return N.fromData(e,Array.from(r.shape),"bool")}function Sa(r,t){let e=new Uint8Array(r.size),n=r.data;for(let o=0;o<r.size;o++)e[o]=n[o]!==t?1:0;return N.fromData(e,Array.from(r.shape),"bool")}function Na(r,t,e,n){let o=new Uint8Array(r.size),a=r.data,i=r.dtype;if(I(i)){let u=a;for(let s=0;s<r.size;s++){let c=Number(u[s]),l=Math.abs(c-t),m=n+e*Math.abs(t);o[s]=l<=m?1:0}}else for(let u=0;u<r.size;u++){let s=Number(a[u]),c=Math.abs(s-t),l=n+e*Math.abs(t);o[u]=c<=l?1:0}return N.fromData(o,Array.from(r.shape),"bool")}function O(r,t){let e=0,n=1;for(let o=r.length-1;o>=0;o--)e+=r[o]*n,n*=t[o];return e}function U(r,t,e,n){let o=n.length,a=new Array(o),i=Array.from(n).filter((s,c)=>c!==t),u=r;for(let s=i.length-1;s>=0;s--)a[s>=t?s+1:s]=u%i[s],u=Math.floor(u/i[s]);return a[t]=e,a}function mr(r,t,e=!1){let n=r.dtype,o=r.shape,a=o.length,i=r.size,u=r.data;if(t===void 0)if(I(n)){let y=u,d=BigInt(0);for(let g=0;g<i;g++)d+=y[g];return Number(d)}else{let y=0;for(let d=0;d<i;d++)y+=Number(u[d]);return y}let s=t;if(s<0&&(s=a+s),s<0||s>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let c=Array.from(o).filter((y,d)=>d!==s);if(c.length===0)return mr(r);let l=N.zeros(c,n),m=l.data,f=o[s],p=c.reduce((y,d)=>y*d,1);if(I(n)){let y=u,d=m;for(let g=0;g<p;g++){let b=BigInt(0);for(let A=0;A<f;A++){let h=U(g,s,A,o),S=O(h,o);b+=y[S]}d[g]=b}}else for(let y=0;y<p;y++){let d=0;for(let g=0;g<f;g++){let b=U(y,s,g,o),A=O(b,o);d+=Number(u[A])}m[y]=d}if(e){let y=[...o];return y[s]=1,N.fromData(m,y,n)}return l}function xr(r,t,e=!1){let n=r.dtype,o=r.shape;if(t===void 0)return mr(r)/r.size;let a=t;if(a<0&&(a=o.length+a),a<0||a>=o.length)throw new Error(`axis ${t} is out of bounds for array of dimension ${o.length}`);let i=mr(r,t,e);if(typeof i=="number")return i/o[a];let u=o[a],s=n;(I(n)||n.startsWith("int")||n.startsWith("uint"))&&(s="float64");let c=N.zeros(Array.from(i.shape),s),l=c.data,m=i.data;if(I(n)){let f=m;for(let p=0;p<l.length;p++)l[p]=Number(f[p])/u}else for(let f=0;f<l.length;f++)l[f]=Number(m[f])/u;return c}function wr(r,t,e=!1){let n=r.dtype,o=r.shape,a=o.length,i=r.size,u=r.data;if(t===void 0){if(i===0)throw new Error("max of empty array");let y=u[0];for(let d=1;d<i;d++)u[d]>y&&(y=u[d]);return Number(y)}let s=t;if(s<0&&(s=a+s),s<0||s>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let c=Array.from(o).filter((y,d)=>d!==s);if(c.length===0)return wr(r);let l=N.zeros(c,n),m=l.data,f=o[s],p=c.reduce((y,d)=>y*d,1);if(I(n)){let y=u,d=m;for(let g=0;g<p;g++){let b=U(g,s,0,o),A=O(b,o),h=y[A];for(let S=1;S<f;S++){let D=U(g,s,S,o),x=O(D,o),w=y[x];w>h&&(h=w)}d[g]=h}}else for(let y=0;y<p;y++){let d=-1/0;for(let g=0;g<f;g++){let b=U(y,s,g,o),A=O(b,o),h=Number(u[A]);h>d&&(d=h)}m[y]=d}if(e){let y=[...o];return y[s]=1,N.fromData(m,y,n)}return l}function Gr(r,t,e=!1){let n=r.dtype,o=r.shape,a=o.length,i=r.size,u=r.data;if(t===void 0)if(I(n)){let y=u,d=BigInt(1);for(let g=0;g<i;g++)d*=y[g];return Number(d)}else{let y=1;for(let d=0;d<i;d++)y*=Number(u[d]);return y}let s=t;if(s<0&&(s=a+s),s<0||s>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let c=Array.from(o).filter((y,d)=>d!==s);if(c.length===0)return Gr(r);let l=N.zeros(c,n),m=l.data,f=o[s],p=c.reduce((y,d)=>y*d,1);if(I(n)){let y=u,d=m;for(let g=0;g<p;g++){let b=BigInt(1);for(let A=0;A<f;A++){let h=U(g,s,A,o),S=O(h,o);b*=y[S]}d[g]=b}}else for(let y=0;y<p;y++){let d=1;for(let g=0;g<f;g++){let b=U(y,s,g,o),A=O(b,o);d*=Number(u[A])}m[y]=d}if(e){let y=[...o];return y[s]=1,N.fromData(m,y,n)}return l}function Ir(r,t,e=!1){let n=r.dtype,o=r.shape,a=o.length,i=r.size,u=r.data;if(t===void 0){if(i===0)throw new Error("min of empty array");let y=u[0];for(let d=1;d<i;d++)u[d]<y&&(y=u[d]);return Number(y)}let s=t;if(s<0&&(s=a+s),s<0||s>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let c=Array.from(o).filter((y,d)=>d!==s);if(c.length===0)return Ir(r);let l=N.zeros(c,n),m=l.data,f=o[s],p=c.reduce((y,d)=>y*d,1);if(I(n)){let y=u,d=m;for(let g=0;g<p;g++){let b=U(g,s,0,o),A=O(b,o),h=y[A];for(let S=1;S<f;S++){let D=U(g,s,S,o),x=O(D,o),w=y[x];w<h&&(h=w)}d[g]=h}}else for(let y=0;y<p;y++){let d=1/0;for(let g=0;g<f;g++){let b=U(y,s,g,o),A=O(b,o),h=Number(u[A]);h<d&&(d=h)}m[y]=d}if(e){let y=[...o];return y[s]=1,N.fromData(m,y,n)}return l}function Hr(r,t){let e=r.dtype,n=r.shape,o=n.length,a=r.size,i=r.data;if(t===void 0){if(a===0)throw new Error("argmin of empty array");let p=i[0],y=0;for(let d=1;d<a;d++)i[d]<p&&(p=i[d],y=d);return y}let u=t;if(u<0&&(u=o+u),u<0||u>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let s=Array.from(n).filter((p,y)=>y!==u);if(s.length===0)return Hr(r);let c=N.zeros(s,"int32"),l=c.data,m=n[u],f=s.reduce((p,y)=>p*y,1);if(I(e)){let p=i;for(let y=0;y<f;y++){let d=U(y,u,0,n),g=O(d,n),b=p[g],A=0;for(let h=1;h<m;h++){let S=U(y,u,h,n),D=O(S,n),x=p[D];x<b&&(b=x,A=h)}l[y]=A}}else for(let p=0;p<f;p++){let y=1/0,d=0;for(let g=0;g<m;g++){let b=U(p,u,g,n),A=O(b,n),h=Number(i[A]);h<y&&(y=h,d=g)}l[p]=d}return c}function Yr(r,t){let e=r.dtype,n=r.shape,o=n.length,a=r.size,i=r.data;if(t===void 0){if(a===0)throw new Error("argmax of empty array");let p=i[0],y=0;for(let d=1;d<a;d++)i[d]>p&&(p=i[d],y=d);return y}let u=t;if(u<0&&(u=o+u),u<0||u>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let s=Array.from(n).filter((p,y)=>y!==u);if(s.length===0)return Yr(r);let c=N.zeros(s,"int32"),l=c.data,m=n[u],f=s.reduce((p,y)=>p*y,1);if(I(e)){let p=i;for(let y=0;y<f;y++){let d=U(y,u,0,n),g=O(d,n),b=p[g],A=0;for(let h=1;h<m;h++){let S=U(y,u,h,n),D=O(S,n),x=p[D];x>b&&(b=x,A=h)}l[y]=A}}else for(let p=0;p<f;p++){let y=-1/0,d=0;for(let g=0;g<m;g++){let b=U(p,u,g,n),A=O(b,n),h=Number(i[A]);h>y&&(y=h,d=g)}l[p]=d}return c}function Jr(r,t,e=0,n=!1){let o=r.shape,a=o.length,i=r.size,u=r.data,s=xr(r,t,n);if(t===void 0){let b=s,A=0;for(let h=0;h<i;h++){let S=Number(u[h])-b;A+=S*S}return A/(i-e)}let c=t;if(c<0&&(c=a+c),c<0||c>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let l=o[c],m=s,f=m.data,p=n?m.shape:Array.from(o).filter((b,A)=>A!==c),y=N.zeros(Array.from(p),"float64"),d=y.data,g=p.reduce((b,A)=>b*A,1);for(let b=0;b<g;b++){let A=0,h=Number(f[b]);for(let S=0;S<l;S++){let D=U(b,c,S,o),x=O(D,o),w=Number(u[x])-h;A+=w*w}d[b]=A/(l-e)}return y}function Se(r,t,e=0,n=!1){let o=Jr(r,t,e,n);if(typeof o=="number")return Math.sqrt(o);let a=N.zeros(Array.from(o.shape),"float64"),i=o.data,u=a.data;for(let s=0;s<i.length;s++)u[s]=Math.sqrt(Number(i[s]));return a}function Qr(r,t,e=!1){let n=r.shape,o=n.length,a=r.size,i=r.data;if(t===void 0){for(let p=0;p<a;p++)if(!i[p])return!1;return!0}let u=t;if(u<0&&(u=o+u),u<0||u>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let s=Array.from(n).filter((p,y)=>y!==u);if(s.length===0)return Qr(r);let c=N.zeros(s,"bool"),l=c.data,m=n[u],f=s.reduce((p,y)=>p*y,1);for(let p=0;p<f;p++){let y=!0;for(let d=0;d<m;d++){let g=U(p,u,d,n),b=O(g,n);if(!i[b]){y=!1;break}}l[p]=y?1:0}if(e){let p=[...n];return p[u]=1,N.fromData(l,p,"bool")}return c}function Xr(r,t,e=!1){let n=r.shape,o=n.length,a=r.size,i=r.data;if(t===void 0){for(let p=0;p<a;p++)if(i[p])return!0;return!1}let u=t;if(u<0&&(u=o+u),u<0||u>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let s=Array.from(n).filter((p,y)=>y!==u);if(s.length===0)return Xr(r);let c=N.zeros(s,"bool"),l=c.data,m=n[u],f=s.reduce((p,y)=>p*y,1);for(let p=0;p<f;p++){let y=!1;for(let d=0;d<m;d++){let g=U(p,u,d,n),b=O(g,n);if(i[b]){y=!0;break}}l[p]=y?1:0}if(e){let p=[...n];return p[u]=1,N.fromData(l,p,"bool")}return c}function Kr(r,t){let e=r.shape,n=e.length,o=r.data;if(t===void 0){let f=r.size,p=new Float64Array(f),y=0;for(let d=0;d<f;d++)y+=Number(o[d]),p[d]=y;return N.fromData(p,[f],"float64")}let a=t;if(a<0&&(a=n+a),a<0||a>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);let i=new Float64Array(r.size),u=e[a],s=[],c=1;for(let f=n-1;f>=0;f--)s.unshift(c),c*=e[f];let l=r.size,m=s[a];for(let f=0;f<l;f++)Math.floor(f/m)%u===0?i[f]=Number(o[f]):i[f]=i[f-m]+Number(o[f]);return N.fromData(i,[...e],"float64")}function rt(r,t){let e=r.shape,n=e.length,o=r.data;if(t===void 0){let f=r.size,p=new Float64Array(f),y=1;for(let d=0;d<f;d++)y*=Number(o[d]),p[d]=y;return N.fromData(p,[f],"float64")}let a=t;if(a<0&&(a=n+a),a<0||a>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);let i=new Float64Array(r.size),u=e[a],s=[],c=1;for(let f=n-1;f>=0;f--)s.unshift(c),c*=e[f];let l=r.size,m=s[a];for(let f=0;f<l;f++)Math.floor(f/m)%u===0?i[f]=Number(o[f]):i[f]=i[f-m]*Number(o[f]);return N.fromData(i,[...e],"float64")}function tt(r,t,e=!1){let n=wr(r,t,e),o=Ir(r,t,e);if(typeof n=="number"&&typeof o=="number")return n-o;let a=n,i=o,u=a.data,s=i.data,c=new Float64Array(a.size);for(let l=0;l<a.size;l++)c[l]=Number(u[l])-Number(s[l]);return N.fromData(c,[...a.shape],"float64")}function et(r,t,e=!1){return ar(r,.5,t,e)}function nt(r,t,e,n=!1){return ar(r,t/100,e,n)}function ar(r,t,e,n=!1){if(t<0||t>1)throw new Error("Quantile must be between 0 and 1");let o=r.shape,a=o.length,i=r.data;if(e===void 0){let p=[];for(let h=0;h<r.size;h++)p.push(Number(i[h]));p.sort((h,S)=>h-S);let y=p.length,d=t*(y-1),g=Math.floor(d),b=Math.ceil(d);if(g===b)return p[g];let A=d-g;return p[g]*(1-A)+p[b]*A}let u=e;if(u<0&&(u=a+u),u<0||u>=a)throw new Error(`axis ${e} is out of bounds for array of dimension ${a}`);let s=Array.from(o).filter((p,y)=>y!==u);if(s.length===0)return ar(r,t);let c=s.reduce((p,y)=>p*y,1),l=o[u],m=new Float64Array(c);for(let p=0;p<c;p++){let y=[];for(let h=0;h<l;h++){let S=U(p,u,h,o),D=O(S,o);y.push(Number(i[D]))}y.sort((h,S)=>h-S);let d=y.length,g=t*(d-1),b=Math.floor(g),A=Math.ceil(g);if(b===A)m[p]=y[b];else{let h=g-b;m[p]=y[b]*(1-h)+y[A]*h}}let f=N.fromData(m,s,"float64");if(n){let p=[...o];return p[u]=1,N.fromData(m,p,"float64")}return f}function zr(r,t,e,n=!1){let o=r.shape,a=o.length,i=r.data;if(e===void 0)return xr(r,t,n);if(t===void 0){let y=0,d=0,g=e.data;for(let b=0;b<r.size;b++){let A=Number(g[b%e.size]);y+=Number(i[b])*A,d+=A}return d===0?NaN:y/d}let u=t;if(u<0&&(u=a+u),u<0||u>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let s=Array.from(o).filter((y,d)=>d!==u);if(s.length===0)return zr(r,void 0,e);let c=s.reduce((y,d)=>y*d,1),l=o[u],m=e.data,f=new Float64Array(c);for(let y=0;y<c;y++){let d=0,g=0;for(let b=0;b<l;b++){let A=U(y,u,b,o),h=O(A,o),S=Number(m[b%e.size]);d+=Number(i[h])*S,g+=S}f[y]=g===0?NaN:d/g}let p=N.fromData(f,s,"float64");if(n){let y=[...o];return y[u]=1,N.fromData(f,y,"float64")}return p}function _r(r,t,e=!1){let n=r.shape,o=n.length,a=r.data;if(t===void 0){let f=0;for(let p=0;p<r.size;p++){let y=Number(a[p]);isNaN(y)||(f+=y)}return f}let i=t;if(i<0&&(i=o+i),i<0||i>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let u=Array.from(n).filter((f,p)=>p!==i);if(u.length===0)return _r(r);let s=u.reduce((f,p)=>f*p,1),c=n[i],l=new Float64Array(s);for(let f=0;f<s;f++){let p=0;for(let y=0;y<c;y++){let d=U(f,i,y,n),g=O(d,n),b=Number(a[g]);isNaN(b)||(p+=b)}l[f]=p}let m=N.fromData(l,u,"float64");if(e){let f=[...n];return f[i]=1,N.fromData(l,f,"float64")}return m}function Br(r,t,e=!1){let n=r.shape,o=n.length,a=r.data;if(t===void 0){let f=1;for(let p=0;p<r.size;p++){let y=Number(a[p]);isNaN(y)||(f*=y)}return f}let i=t;if(i<0&&(i=o+i),i<0||i>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let u=Array.from(n).filter((f,p)=>p!==i);if(u.length===0)return Br(r);let s=u.reduce((f,p)=>f*p,1),c=n[i],l=new Float64Array(s);for(let f=0;f<s;f++){let p=1;for(let y=0;y<c;y++){let d=U(f,i,y,n),g=O(d,n),b=Number(a[g]);isNaN(b)||(p*=b)}l[f]=p}let m=N.fromData(l,u,"float64");if(e){let f=[...n];return f[i]=1,N.fromData(l,f,"float64")}return m}function Er(r,t,e=!1){let n=r.shape,o=n.length,a=r.data;if(t===void 0){let f=0,p=0;for(let y=0;y<r.size;y++){let d=Number(a[y]);isNaN(d)||(f+=d,p++)}return p===0?NaN:f/p}let i=t;if(i<0&&(i=o+i),i<0||i>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let u=Array.from(n).filter((f,p)=>p!==i);if(u.length===0)return Er(r);let s=u.reduce((f,p)=>f*p,1),c=n[i],l=new Float64Array(s);for(let f=0;f<s;f++){let p=0,y=0;for(let d=0;d<c;d++){let g=U(f,i,d,n),b=O(g,n),A=Number(a[b]);isNaN(A)||(p+=A,y++)}l[f]=y===0?NaN:p/y}let m=N.fromData(l,u,"float64");if(e){let f=[...n];return f[i]=1,N.fromData(l,f,"float64")}return m}function pr(r,t,e=0,n=!1){let o=r.shape,a=o.length,i=r.data;if(t===void 0){let p=0,y=0;for(let b=0;b<r.size;b++){let A=Number(i[b]);isNaN(A)||(p+=A,y++)}if(y-e<=0)return NaN;let d=p/y,g=0;for(let b=0;b<r.size;b++){let A=Number(i[b]);isNaN(A)||(g+=(A-d)**2)}return g/(y-e)}let u=t;if(u<0&&(u=a+u),u<0||u>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let s=Array.from(o).filter((p,y)=>y!==u);if(s.length===0)return pr(r,void 0,e);let c=s.reduce((p,y)=>p*y,1),l=o[u],m=new Float64Array(c);for(let p=0;p<c;p++){let y=0,d=0;for(let A=0;A<l;A++){let h=U(p,u,A,o),S=O(h,o),D=Number(i[S]);isNaN(D)||(y+=D,d++)}if(d-e<=0){m[p]=NaN;continue}let g=y/d,b=0;for(let A=0;A<l;A++){let h=U(p,u,A,o),S=O(h,o),D=Number(i[S]);isNaN(D)||(b+=(D-g)**2)}m[p]=b/(d-e)}let f=N.fromData(m,s,"float64");if(n){let p=[...o];return p[u]=1,N.fromData(m,p,"float64")}return f}function ot(r,t,e=0,n=!1){let o=pr(r,t,e,n);if(typeof o=="number")return Math.sqrt(o);let a=o,i=new Float64Array(a.size);for(let u=0;u<a.size;u++)i[u]=Math.sqrt(Number(a.data[u]));return N.fromData(i,[...a.shape],"float64")}function vr(r,t,e=!1){let n=r.shape,o=n.length,a=r.data;if(t===void 0){let f=1/0;for(let p=0;p<r.size;p++){let y=Number(a[p]);!isNaN(y)&&y<f&&(f=y)}return f===1/0?NaN:f}let i=t;if(i<0&&(i=o+i),i<0||i>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let u=Array.from(n).filter((f,p)=>p!==i);if(u.length===0)return vr(r);let s=u.reduce((f,p)=>f*p,1),c=n[i],l=new Float64Array(s);for(let f=0;f<s;f++){let p=1/0;for(let y=0;y<c;y++){let d=U(f,i,y,n),g=O(d,n),b=Number(a[g]);!isNaN(b)&&b<p&&(p=b)}l[f]=p===1/0?NaN:p}let m=N.fromData(l,u,"float64");if(e){let f=[...n];return f[i]=1,N.fromData(l,f,"float64")}return m}function Or(r,t,e=!1){let n=r.shape,o=n.length,a=r.data;if(t===void 0){let f=-1/0;for(let p=0;p<r.size;p++){let y=Number(a[p]);!isNaN(y)&&y>f&&(f=y)}return f===-1/0?NaN:f}let i=t;if(i<0&&(i=o+i),i<0||i>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let u=Array.from(n).filter((f,p)=>p!==i);if(u.length===0)return Or(r);let s=u.reduce((f,p)=>f*p,1),c=n[i],l=new Float64Array(s);for(let f=0;f<s;f++){let p=-1/0;for(let y=0;y<c;y++){let d=U(f,i,y,n),g=O(d,n),b=Number(a[g]);!isNaN(b)&&b>p&&(p=b)}l[f]=p===-1/0?NaN:p}let m=N.fromData(l,u,"float64");if(e){let f=[...n];return f[i]=1,N.fromData(l,f,"float64")}return m}function Ur(r,t){let e=r.shape,n=e.length,o=r.data;if(t===void 0){let l=1/0,m=-1;for(let f=0;f<r.size;f++){let p=Number(o[f]);!isNaN(p)&&p<l&&(l=p,m=f)}return m}let a=t;if(a<0&&(a=n+a),a<0||a>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);let i=Array.from(e).filter((l,m)=>m!==a);if(i.length===0)return Ur(r);let u=i.reduce((l,m)=>l*m,1),s=e[a],c=new Int32Array(u);for(let l=0;l<u;l++){let m=1/0,f=0;for(let p=0;p<s;p++){let y=U(l,a,p,e),d=O(y,e),g=Number(o[d]);!isNaN(g)&&g<m&&(m=g,f=p)}c[l]=f}return N.fromData(c,i,"int32")}function Tr(r,t){let e=r.shape,n=e.length,o=r.data;if(t===void 0){let l=-1/0,m=-1;for(let f=0;f<r.size;f++){let p=Number(o[f]);!isNaN(p)&&p>l&&(l=p,m=f)}return m}let a=t;if(a<0&&(a=n+a),a<0||a>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);let i=Array.from(e).filter((l,m)=>m!==a);if(i.length===0)return Tr(r);let u=i.reduce((l,m)=>l*m,1),s=e[a],c=new Int32Array(u);for(let l=0;l<u;l++){let m=-1/0,f=0;for(let p=0;p<s;p++){let y=U(l,a,p,e),d=O(y,e),g=Number(o[d]);!isNaN(g)&&g>m&&(m=g,f=p)}c[l]=f}return N.fromData(c,i,"int32")}function at(r,t){let e=r.shape,n=e.length,o=r.data;if(t===void 0){let f=r.size,p=new Float64Array(f),y=0;for(let d=0;d<f;d++){let g=Number(o[d]);isNaN(g)||(y+=g),p[d]=y}return N.fromData(p,[f],"float64")}let a=t;if(a<0&&(a=n+a),a<0||a>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);let i=new Float64Array(r.size),u=e[a],s=[],c=1;for(let f=n-1;f>=0;f--)s.unshift(c),c*=e[f];let l=r.size,m=s[a];for(let f=0;f<l;f++){let p=Number(o[f]);Math.floor(f/m)%u===0?i[f]=isNaN(p)?0:p:i[f]=i[f-m]+(isNaN(p)?0:p)}return N.fromData(i,[...e],"float64")}function st(r,t){let e=r.shape,n=e.length,o=r.data;if(t===void 0){let f=r.size,p=new Float64Array(f),y=1;for(let d=0;d<f;d++){let g=Number(o[d]);isNaN(g)||(y*=g),p[d]=y}return N.fromData(p,[f],"float64")}let a=t;if(a<0&&(a=n+a),a<0||a>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);let i=new Float64Array(r.size),u=e[a],s=[],c=1;for(let f=n-1;f>=0;f--)s.unshift(c),c*=e[f];let l=r.size,m=s[a];for(let f=0;f<l;f++){let p=Number(o[f]);Math.floor(f/m)%u===0?i[f]=isNaN(p)?1:p:i[f]=i[f-m]*(isNaN(p)?1:p)}return N.fromData(i,[...e],"float64")}function $r(r,t,e=!1){let n=r.shape,o=n.length,a=r.data;if(t===void 0){let f=[];for(let d=0;d<r.size;d++){let g=Number(a[d]);isNaN(g)||f.push(g)}if(f.length===0)return NaN;f.sort((d,g)=>d-g);let p=f.length,y=Math.floor(p/2);return p%2===0?(f[y-1]+f[y])/2:f[y]}let i=t;if(i<0&&(i=o+i),i<0||i>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let u=Array.from(n).filter((f,p)=>p!==i);if(u.length===0)return $r(r);let s=u.reduce((f,p)=>f*p,1),c=n[i],l=new Float64Array(s);for(let f=0;f<s;f++){let p=[];for(let g=0;g<c;g++){let b=U(f,i,g,n),A=O(b,n),h=Number(a[A]);isNaN(h)||p.push(h)}if(p.length===0){l[f]=NaN;continue}p.sort((g,b)=>g-b);let y=p.length,d=Math.floor(y/2);y%2===0?l[f]=(p[d-1]+p[d])/2:l[f]=p[d]}let m=N.fromData(l,u,"float64");if(e){let f=[...n];return f[i]=1,N.fromData(l,f,"float64")}return m}function P(r,t){let e=r.size,n=r.dtype,o=t.indexOf(-1),a;if(o!==-1){let c=t.reduce((m,f,p)=>p===o?m:m*f,1),l=e/c;if(!Number.isInteger(l))throw new Error(`cannot reshape array of size ${e} into shape ${JSON.stringify(t)}`);a=t.map((m,f)=>f===o?l:m)}else a=t;if(a.reduce((c,l)=>c*l,1)!==e)throw new Error(`cannot reshape array of size ${e} into shape ${JSON.stringify(a)}`);if(r.isCContiguous){let c=r.data;return N.fromData(c,a,n,R(a),0)}let s=r.copy().data;return N.fromData(s,a,n,R(a),0)}function Mr(r){let t=r.size,e=r.dtype,n=T(e);if(!n)throw new Error(`Cannot flatten array with dtype ${e}`);if(r.isCContiguous){let u=r.data.slice(r.offset,r.offset+t);return N.fromData(u,[t],e,[1],0)}let o=new n(t),a=I(e);for(let i=0;i<t;i++){let u=r.iget(i);o[i]=u}return N.fromData(o,[t],e,[1],0)}function sr(r){let t=r.size,e=r.dtype;if(r.isCContiguous){let n=r.data;return N.fromData(n,[t],e,[1],0)}return Mr(r)}function dr(r,t){let e=r.shape,n=e.length,o=r.strides,a=r.data,i=r.dtype,u;if(t===void 0)u=Array.from({length:n},(m,f)=>n-1-f);else{if(t.length!==n)throw new Error(`axes must have length ${n}, got ${t.length}`);let m=new Set;for(let f of t){let p=f<0?n+f:f;if(p<0||p>=n)throw new Error(`axis ${f} is out of bounds for array of dimension ${n}`);if(m.has(p))throw new Error("repeated axis in transpose");m.add(p)}u=t.map(f=>f<0?n+f:f)}let s=u.map(m=>e[m]),c=Array.from(o),l=u.map(m=>c[m]);return N.fromData(a,s,i,l,r.offset)}function Ne(r,t){let e=r.shape,n=e.length,o=r.strides,a=r.data,i=r.dtype;if(t===void 0){let u=[],s=[];for(let c=0;c<n;c++)e[c]!==1&&(u.push(e[c]),s.push(o[c]));return u.length===0&&(u.push(1),s.push(1)),N.fromData(a,u,i,s,r.offset)}else{let u=t<0?n+t:t;if(u<0||u>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);if(e[u]!==1)throw new Error(`cannot select an axis which has size not equal to one (axis ${t} has size ${e[u]})`);let s=[],c=[];for(let l=0;l<n;l++)l!==u&&(s.push(e[l]),c.push(o[l]));return N.fromData(a,s,i,c,r.offset)}}function yr(r,t){let e=r.shape,n=e.length,o=r.strides,a=r.data,i=r.dtype,u=t;if(u<0&&(u=n+t+1),u<0||u>n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n+1}`);let s=[...Array.from(e)];s.splice(u,0,1);let c=[...Array.from(o)],l=u<n?o[u]*(e[u]||1):1;return c.splice(u,0,l),N.fromData(a,s,i,c,r.offset)}function De(r,t,e){let n=r.shape,o=n.length,a=r.strides,i=r.data,u=r.dtype,s=t<0?o+t:t,c=e<0?o+e:e;if(s<0||s>=o)throw new Error(`axis1 ${t} is out of bounds for array of dimension ${o}`);if(c<0||c>=o)throw new Error(`axis2 ${e} is out of bounds for array of dimension ${o}`);if(s===c)return N.fromData(i,Array.from(n),u,Array.from(a),r.offset);let l=Array.from(n),m=Array.from(a);return[l[s],l[c]]=[l[c],l[s]],[m[s],m[c]]=[m[c],m[s]],N.fromData(i,l,u,m,r.offset)}function it(r,t,e){let n=r.ndim,o=Array.isArray(t)?t:[t],a=Array.isArray(e)?e:[e];if(o.length!==a.length)throw new Error("source and destination must have the same number of elements");let i=o.map(c=>{let l=c<0?n+c:c;if(l<0||l>=n)throw new Error(`source axis ${c} is out of bounds for array of dimension ${n}`);return l}),u=a.map(c=>{let l=c<0?n+c:c;if(l<0||l>=n)throw new Error(`destination axis ${c} is out of bounds for array of dimension ${n}`);return l});if(new Set(i).size!==i.length)throw new Error("repeated axis in source");if(new Set(u).size!==u.length)throw new Error("repeated axis in destination");let s=[];for(let c=0;c<n;c++)i.includes(c)||s.push(c);for(let c=0;c<i.length;c++){let l=u[c];s.splice(l,0,i[c])}return dr(r,s)}function er(r,t=0){if(r.length===0)throw new Error("need at least one array to concatenate");if(r.length===1)return r[0].copy();let e=r[0],n=e.ndim,o=e.dtype,a=t<0?n+t:t;if(a<0||a>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);for(let p=1;p<r.length;p++){let y=r[p];if(y.ndim!==n)throw new Error("all the input arrays must have same number of dimensions");for(let d=0;d<n;d++)if(d!==a&&y.shape[d]!==e.shape[d])throw new Error("all the input array dimensions except for the concatenation axis must match exactly")}let i=Array.from(e.shape),u=e.shape[a];for(let p=1;p<r.length;p++)u+=r[p].shape[a];i[a]=u;let s=i.reduce((p,y)=>p*y,1),c=T(o);if(!c)throw new Error(`Cannot concatenate arrays with dtype ${o}`);let l=new c(s),m=R(i),f=0;for(let p of r){let y=p.shape[a];wa(p,l,i,m,a,f,o),f+=y}return N.fromData(l,i,o)}function wa(r,t,e,n,o,a,i){let u=r.shape,s=u.length,c=r.size,l=i==="int64"||i==="uint64";if(o===0&&r.isCContiguous&&s>0){let p=a*n[0],y=r.data,d=r.offset,g=d+c;t.set(y.subarray(d,g),p);return}if(o===1&&s===2&&r.isCContiguous){let p=u[0],y=u[1],d=e[1],g=r.data,b=r.offset;for(let A=0;A<p;A++){let h=b+A*y,S=A*d+a;t.set(g.subarray(h,h+y),S)}return}let m=new Array(s).fill(0),f=a*n[o];for(let p=0;p<c;p++){let y=r.iget(p),d=f;for(let g=0;g<s;g++)d+=m[g]*n[g];t[d]=y;for(let g=s-1;g>=0&&(m[g]++,!(m[g]<u[g]));g--)m[g]=0}}function xe(r,t=0){if(r.length===0)throw new Error("need at least one array to stack");let e=r[0],n=e.shape,o=e.ndim,a=t<0?o+1+t:t;if(a<0||a>o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o+1}`);for(let u=1;u<r.length;u++){let s=r[u];if(s.ndim!==o)throw new Error("all input arrays must have the same shape");for(let c=0;c<o;c++)if(s.shape[c]!==n[c])throw new Error("all input arrays must have the same shape")}let i=r.map(u=>yr(u,a));return er(i,a)}function we(r){if(r.length===0)throw new Error("need at least one array to stack");let t=r.map(e=>e.ndim===1?P(e,[1,e.shape[0]]):e);return er(t,0)}function ut(r){if(r.length===0)throw new Error("need at least one array to stack");return r.every(e=>e.ndim===1)?er(r,0):er(r,1)}function Ie(r){if(r.length===0)throw new Error("need at least one array to stack");let t=r.map(e=>e.ndim===1?P(yr(P(e,[1,e.shape[0]]),2),[1,e.shape[0],1]):e.ndim===2?yr(e,2):e);return er(t,2)}function ze(r,t,e=0){let n=r.shape,o=n.length,a=e<0?o+e:e;if(a<0||a>=o)throw new Error(`axis ${e} is out of bounds for array of dimension ${o}`);let i=n[a],u;if(typeof t=="number"){if(i%t!==0)throw new Error("array split does not result in an equal division");let s=i/t;u=[];for(let c=1;c<t;c++)u.push(c*s)}else u=t;return _e(r,u,a)}function gr(r,t,e=0){let n=r.shape,o=n.length,a=e<0?o+e:e;if(a<0||a>=o)throw new Error(`axis ${e} is out of bounds for array of dimension ${o}`);let i=n[a],u;if(typeof t=="number"){let s=t,c=Math.floor(i/s),l=i%s;u=[];let m=0;for(let f=0;f<s-1;f++)m+=c+(f<l?1:0),u.push(m)}else u=t;return _e(r,u,a)}function _e(r,t,e){let n=r.shape,o=n[e],a=[0,...t,o],i=[];for(let u=0;u<a.length-1;u++){let s=a[u],c=a[u+1];if(s>c)throw new Error("split indices must be in ascending order");let l=Array.from(n);l[e]=c-s;let m=r.offset+s*r.strides[e];i.push(N.fromData(r.data,l,r.dtype,Array.from(r.strides),m))}return i}function Be(r,t){if(r.ndim<2)throw new Error("vsplit only works on arrays of 2 or more dimensions");return gr(r,t,0)}function Ee(r,t){if(r.ndim<1)throw new Error("hsplit only works on arrays of 1 or more dimensions");let e=r.ndim===1?0:1;return gr(r,t,e)}function ve(r,t){let e=r.shape,n=e.length,o=r.dtype,a=Array.isArray(t)?t:[t],i=Math.max(n,a.length),u=new Array(i).fill(1),s=new Array(i).fill(1);for(let A=0;A<n;A++)u[i-n+A]=e[A];for(let A=0;A<a.length;A++)s[i-a.length+A]=a[A];let c=u.map((A,h)=>A*s[h]),l=c.reduce((A,h)=>A*h,1),m=T(o);if(!m)throw new Error(`Cannot tile array with dtype ${o}`);let f=new m(l),p=R(c),y=r;n<i&&(y=P(r,u));let d=o==="int64"||o==="uint64",g=y.strides,b=new Array(i).fill(0);for(let A=0;A<l;A++){let h=y.offset;for(let x=0;x<i;x++){let w=b[x]%u[x];h+=w*g[x]}let S=y.data[h],D=0;for(let x=0;x<i;x++)D+=b[x]*p[x];f[D]=S;for(let x=i-1;x>=0&&(b[x]++,!(b[x]<c[x]));x--)b[x]=0}return N.fromData(f,c,o)}function Oe(r,t,e){let n=r.shape,o=n.length,a=r.dtype,i=r.size;if(e===void 0){let A=i,h=Array.isArray(t)?t:new Array(A).fill(t);if(h.length!==A)throw new Error(`operands could not be broadcast together with shape (${A},) (${h.length},)`);let S=h.reduce((_,B)=>_+B,0),D=T(a);if(!D)throw new Error(`Cannot repeat array with dtype ${a}`);let x=new D(S),w=0;for(let _=0;_<A;_++){let B=r.iget(_),E=h[_];for(let v=0;v<E;v++)x[w++]=B}return N.fromData(x,[S],a)}let u=e<0?o+e:e;if(u<0||u>=o)throw new Error(`axis ${e} is out of bounds for array of dimension ${o}`);let s=n[u],c=Array.isArray(t)?t:new Array(s).fill(t);if(c.length!==s)throw new Error(`operands could not be broadcast together with shape (${s},) (${c.length},)`);let l=Array.from(n);l[u]=c.reduce((A,h)=>A+h,0);let m=l.reduce((A,h)=>A*h,1),f=T(a);if(!f)throw new Error(`Cannot repeat array with dtype ${a}`);let p=new f(m),y=R(l),d=new Array(o).fill(0),g=a==="int64"||a==="uint64",b=[0];for(let A=0;A<s;A++)b.push(b[A]+c[A]);for(let A=0;A<i;A++){let h=r.iget(A),S=d[u],D=c[S],x=0;for(let B=0;B<o;B++)B!==u&&(x+=d[B]*y[B]);let w=y[u],_=b[S];for(let B=0;B<D;B++){let E=x+(_+B)*w;p[E]=h}for(let B=o-1;B>=0&&(d[B]++,!(d[B]<n[B]));B--)d[B]=0}return N.fromData(p,l,a)}function Ue(r,t){let e=r.shape,n=e.length,o=r.dtype,a=r.size,i;if(t===void 0)i=new Set(Array.from({length:n},(f,p)=>p));else if(typeof t=="number"){let f=t<0?n+t:t;if(f<0||f>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);i=new Set([f])}else i=new Set(t.map(f=>{let p=f<0?n+f:f;if(p<0||p>=n)throw new Error(`axis ${f} is out of bounds for array of dimension ${n}`);return p}));let u=T(o);if(!u)throw new Error(`Cannot flip array with dtype ${o}`);let s=new u(a),c=I(o);if(n===1&&r.isCContiguous){let f=r.data,p=r.offset;for(let y=0;y<a;y++)s[y]=f[p+a-1-y];return N.fromData(s,[...e],o)}if(n===2&&r.isCContiguous){let f=e[0],p=e[1],y=r.data,d=r.offset;if(i.size===2){for(let g=0;g<a;g++)s[g]=y[d+a-1-g];return N.fromData(s,[...e],o)}if(i.size===1){if(i.has(0)){for(let g=0;g<f;g++){let b=d+(f-1-g)*p,A=g*p;for(let h=0;h<p;h++)s[A+h]=y[b+h]}return N.fromData(s,[...e],o)}else if(i.has(1)){for(let g=0;g<f;g++){let b=d+g*p,A=g*p;for(let h=0;h<p;h++)s[A+h]=y[b+p-1-h]}return N.fromData(s,[...e],o)}}}let l=new Array(n),m=new Array(n).fill(0);for(let f=0;f<a;f++){for(let d=0;d<n;d++)l[d]=i.has(d)?e[d]-1-m[d]:m[d];let p=r.offset;for(let d=0;d<n;d++)p+=l[d]*r.strides[d];let y=r.data[p];s[f]=y;for(let d=n-1;d>=0&&(m[d]++,!(m[d]<e[d]));d--)m[d]=0}return N.fromData(s,[...e],o)}function Te(r,t=1,e=[0,1]){let n=r.shape,o=n.length,a=r.dtype;if(o<2)throw new Error("Input must be at least 2-D");let i=e[0]<0?o+e[0]:e[0],u=e[1]<0?o+e[1]:e[1];if(i<0||i>=o||u<0||u>=o)throw new Error(`Axes are out of bounds for array of dimension ${o}`);if(i===u)throw new Error("Axes must be different");if(t=(t%4+4)%4,t===0)return r.copy();let s=T(a);if(!s)throw new Error(`Cannot rotate array with dtype ${a}`);let c=[...n];(t===1||t===3)&&([c[i],c[u]]=[c[u],c[i]]);let l=c.reduce((g,b)=>g*b,1),m=new s(l),f=R(c),p=I(a),y=new Array(o).fill(0),d=new Array(o);for(let g=0;g<r.size;g++){for(let D=0;D<o;D++)d[D]=y[D];let b,A;t===1?(b=n[u]-1-y[u],A=y[i]):t===2?(b=n[i]-1-y[i],A=n[u]-1-y[u],d[i]=b,d[u]=A):(b=y[u],A=n[i]-1-y[i]),t!==2&&(d[i]=b,d[u]=A);let h=0;for(let D=0;D<o;D++)h+=d[D]*f[D];let S=r.iget(g);m[h]=S;for(let D=o-1;D>=0&&(y[D]++,!(y[D]<n[D]));D--)y[D]=0}return N.fromData(m,c,a)}function $e(r,t,e){let n=r.shape,o=n.length,a=r.dtype,i=r.size;if(e===void 0){let y=Array.isArray(t)?t.reduce((h,S)=>h+S,0):t,d=Mr(r),g=T(a);if(!g)throw new Error(`Cannot roll array with dtype ${a}`);let b=new g(i),A=I(a);for(let h=0;h<i;h++){let S=((h-y)%i+i)%i,D=d.iget(S);b[h]=D}return N.fromData(b,[...n],a)}let u=Array.isArray(t)?t:[t],s=Array.isArray(e)?e:[e];if(u.length!==s.length)throw new Error("shift and axis must have the same length");let c=s.map(y=>{let d=y<0?o+y:y;if(d<0||d>=o)throw new Error(`axis ${y} is out of bounds for array of dimension ${o}`);return d}),l=T(a);if(!l)throw new Error(`Cannot roll array with dtype ${a}`);let m=new l(i),f=I(a),p=new Array(o).fill(0);for(let y=0;y<i;y++){let d=[...p];for(let A=0;A<c.length;A++){let h=c[A],S=n[h],D=u[A];d[h]=((d[h]-D)%S+S)%S}let g=r.offset;for(let A=0;A<o;A++)g+=d[A]*r.strides[A];let b=r.data[g];m[y]=b;for(let A=o-1;A>=0&&(p[A]++,!(p[A]<n[A]));A--)p[A]=0}return N.fromData(m,[...n],a)}function Me(r,t,e=0){let n=r.ndim,o=t<0?n+t:t;if(o<0||o>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);let a=e<0?n+e:e;if(a<0||a>n)throw new Error(`start ${e} is out of bounds`);return o<a&&a--,o===a?N.fromData(r.data,Array.from(r.shape),r.dtype,Array.from(r.strides),r.offset):it(r,o,a)}function ke(r,t){if(r.ndim<3)throw new Error("dsplit only works on arrays of 3 or more dimensions");return gr(r,t,2)}function Ce(r){if(r.length===0)throw new Error("need at least one array to stack");let t=r.map(e=>e.ndim===1?P(e,[e.shape[0],1]):e);return ut(t)}function Ve(r,t){let e=r.dtype,n=t.reduce((s,c)=>s*c,1),o=r.size,a=T(e);if(!a)throw new Error(`Cannot resize array with dtype ${e}`);let i=new a(n),u=I(e);for(let s=0;s<n;s++){let c=s%o,l=r.iget(c);i[s]=l}return N.fromData(i,t,e)}function qe(r){return r.map(t=>t.ndim===0?P(t,[1]):t)}function Fe(r){return r.map(t=>t.ndim===0?P(t,[1,1]):t.ndim===1?P(t,[1,t.shape[0]]):t)}function Pe(r){return r.map(t=>t.ndim===0?P(t,[1,1,1]):t.ndim===1?P(t,[1,t.shape[0],1]):t.ndim===2?P(t,[t.shape[0],t.shape[1],1]):t)}function Ia(r,t,e,n,o,a,i,u,s,c,l,m,f,p){if(m===0)for(let b=0;b<n*o;b++)f[b]=0;else if(m!==1)for(let b=0;b<n*o;b++)f[b]=(f[b]??0)*m;let y=r==="row-major",d=t==="transpose",g=e==="transpose";if(y&&!d&&!g)for(let b=0;b<n;b++)for(let A=0;A<o;A++){let h=0;for(let S=0;S<a;S++)h+=(u[b*s+S]??0)*(c[S*l+A]??0);f[b*p+A]=(f[b*p+A]??0)+i*h}else if(y&&d&&!g)for(let b=0;b<n;b++)for(let A=0;A<o;A++){let h=0;for(let S=0;S<a;S++)h+=(u[S*s+b]??0)*(c[S*l+A]??0);f[b*p+A]=(f[b*p+A]??0)+i*h}else if(y&&!d&&g)for(let b=0;b<n;b++)for(let A=0;A<o;A++){let h=0;for(let S=0;S<a;S++)h+=(u[b*s+S]??0)*(c[A*l+S]??0);f[b*p+A]=(f[b*p+A]??0)+i*h}else if(y&&d&&g)for(let b=0;b<n;b++)for(let A=0;A<o;A++){let h=0;for(let S=0;S<a;S++)h+=(u[S*s+b]??0)*(c[A*l+S]??0);f[b*p+A]=(f[b*p+A]??0)+i*h}else if(!y&&!d&&!g)for(let b=0;b<n;b++)for(let A=0;A<o;A++){let h=0;for(let S=0;S<a;S++)h+=(u[S*s+b]??0)*(c[A*l+S]??0);f[A*p+b]=(f[A*p+b]??0)+i*h}else if(!y&&d&&!g)for(let b=0;b<n;b++)for(let A=0;A<o;A++){let h=0;for(let S=0;S<a;S++)h+=(u[b*s+S]??0)*(c[A*l+S]??0);f[A*p+b]=(f[A*p+b]??0)+i*h}else if(!y&&!d&&g)for(let b=0;b<n;b++)for(let A=0;A<o;A++){let h=0;for(let S=0;S<a;S++)h+=(u[S*s+b]??0)*(c[S*l+A]??0);f[A*p+b]=(f[A*p+b]??0)+i*h}else for(let b=0;b<n;b++)for(let A=0;A<o;A++){let h=0;for(let S=0;S<a;S++)h+=(u[b*s+S]??0)*(c[S*l+A]??0);f[A*p+b]=(f[A*p+b]??0)+i*h}}function lt(r,t){let e=r.ndim,n=t.ndim;if(e===0||n===0){let o=e===0?r.get():null,a=n===0?t.get():null;if(e===0&&n===0)return typeof o=="bigint"&&typeof a=="bigint"?o*a:Number(o)*Number(a);if(e===0){let i=k(r.dtype,t.dtype),u=N.zeros([...t.shape],i);for(let s=0;s<t.size;s++){let c=t.data[s+t.offset];typeof o=="bigint"&&typeof c=="bigint"?u.data[s]=o*c:u.data[s]=Number(o)*Number(c)}return u}else{let i=k(r.dtype,t.dtype),u=N.zeros([...r.shape],i);for(let s=0;s<r.size;s++){let c=r.data[s+r.offset];typeof c=="bigint"&&typeof a=="bigint"?u.data[s]=c*a:u.data[s]=Number(c)*Number(a)}return u}}if(e===1&&n===1){if(r.shape[0]!==t.shape[0])throw new Error(`dot: incompatible shapes (${r.shape[0]},) and (${t.shape[0]},)`);let o=r.shape[0],a=0;for(let i=0;i<o;i++){let u=r.get(i),s=t.get(i);typeof u=="bigint"&&typeof s=="bigint"?a=Number(a)+Number(u*s):a+=Number(u)*Number(s)}return a}if(e===2&&n===2)return G(r,t);if(e===2&&n===1){let[o,a]=r.shape,i=t.shape[0];if(a!==i)throw new Error(`dot: incompatible shapes (${o},${a}) and (${i},)`);let u=k(r.dtype,t.dtype),s=N.zeros([o],u);for(let c=0;c<o;c++){let l=0;for(let m=0;m<a;m++){let f=r.get(c,m),p=t.get(m);typeof f=="bigint"&&typeof p=="bigint"?l=Number(l)+Number(f*p):l+=Number(f)*Number(p)}s.set([c],l)}return s}if(e===1&&n===2){let o=r.shape[0],[a,i]=t.shape;if(o!==a)throw new Error(`dot: incompatible shapes (${o},) and (${a},${i})`);let u=k(r.dtype,t.dtype),s=N.zeros([i],u);for(let c=0;c<i;c++){let l=0;for(let m=0;m<o;m++){let f=r.get(m),p=t.get(m,c);typeof f=="bigint"&&typeof p=="bigint"?l=Number(l)+Number(f*p):l+=Number(f)*Number(p)}s.set([c],l)}return s}if(e>2&&n===1){let o=r.shape[e-1],a=t.shape[0];if(o!==a)throw new Error(`dot: incompatible shapes ${JSON.stringify(r.shape)} and (${a},)`);let i=[...r.shape.slice(0,-1)],u=k(r.dtype,t.dtype),s=N.zeros(i,u),c=i.reduce((l,m)=>l*m,1);for(let l=0;l<c;l++){let m=0,f=l,p=[];for(let y=i.length-1;y>=0;y--)p[y]=f%i[y],f=Math.floor(f/i[y]);for(let y=0;y<o;y++){let d=[...p,y],g=r.get(...d),b=t.get(y);typeof g=="bigint"&&typeof b=="bigint"?m=Number(m)+Number(g*b):m+=Number(g)*Number(b)}s.set(p,m)}return s}if(e===1&&n>2){let o=r.shape[0],a=1,i=t.shape[a];if(o!==i)throw new Error(`dot: incompatible shapes (${o},) and ${JSON.stringify(t.shape)}`);let u=[...t.shape.slice(0,a),...t.shape.slice(a+1)],s=k(r.dtype,t.dtype),c=N.zeros(u,s),l=u.reduce((m,f)=>m*f,1);for(let m=0;m<l;m++){let f=m,p=[];for(let b=u.length-1;b>=0;b--)p[b]=f%u[b],f=Math.floor(f/u[b]);let y=p.slice(0,a),d=p.slice(a),g=0;for(let b=0;b<o;b++){let A=r.get(b),h=[...y,b,...d],S=t.get(...h);typeof A=="bigint"&&typeof S=="bigint"?g=Number(g)+Number(A*S):g+=Number(A)*Number(S)}c.set(p,g)}return c}if(e>=2&&n>=2&&!(e===2&&n===2)){let o=r.shape[e-1],a=t.shape[n-2];if(o!==a)throw new Error(`dot: incompatible shapes ${JSON.stringify(r.shape)} and ${JSON.stringify(t.shape)}`);let i=[...r.shape.slice(0,-1),...t.shape.slice(0,-2),t.shape[n-1]],u=k(r.dtype,t.dtype),s=N.zeros(i,u),c=r.shape.slice(0,-1).reduce((p,y)=>p*y,1),l=t.shape.slice(0,-2).reduce((p,y)=>p*y,1),m=t.shape[n-1],f=o;for(let p=0;p<c;p++)for(let y=0;y<l;y++)for(let d=0;d<m;d++){let g=0;for(let A=0;A<f;A++){let h=p*f+A,S=r.data[h+r.offset],D=y*f*m+A*m+d,x=t.data[D+t.offset];typeof S=="bigint"&&typeof x=="bigint"?g=Number(g)+Number(S*x):g+=Number(S)*Number(x)}let b=p*l*m+y*m+d;s.data[b]=g}return s}throw new Error(`dot: unexpected combination of dimensions ${e}D \xB7 ${n}D`)}function G(r,t){if(r.ndim!==2||t.ndim!==2)throw new Error("matmul requires 2D arrays");let[e=0,n=0]=r.shape,[o=0,a=0]=t.shape;if(n!==o)throw new Error(`matmul shape mismatch: (${e},${n}) @ (${o},${a})`);let i=k(r.dtype,t.dtype),u=i.startsWith("int")||i.startsWith("uint")||i==="bool"?"float64":i;if(u!=="float64")throw new Error(`matmul currently only supports float64, got ${u}`);let s=r.dtype==="float64"?r.data:Float64Array.from(Array.from(r.data).map(Number)),c=t.dtype==="float64"?t.data:Float64Array.from(Array.from(t.data).map(Number));r.offset>0&&(s=s.subarray(r.offset)),t.offset>0&&(c=c.subarray(t.offset));let[l=0,m=0]=r.strides,[f=0,p=0]=t.strides,y=m>l,d=p>f,g=y?"transpose":"no-transpose",b=d?"transpose":"no-transpose",A,h;y?A=m:A=l,d?h=p:h=f;let S=N.zeros([e,a],"float64");return Ia("row-major",g,b,e,a,n,1,s,A,c,h,0,S.data,a),S}function Ze(r){if(r.ndim!==2)throw new Error(`trace requires 2D array, got ${r.ndim}D`);let[t=0,e=0]=r.shape,n=Math.min(t,e),o=0;for(let a=0;a<n;a++){let i=r.get(a,a);typeof i=="bigint"?o=(typeof o=="bigint"?o:BigInt(o))+i:o=(typeof o=="bigint"?Number(o):o)+i}return o}function Re(r,t){return dr(r,t)}function We(r,t){let e=r.ndim,n=t.ndim,o=r.shape[e-1],a=t.shape[n-1];if(o!==a)throw new Error(`inner: incompatible shapes - last dimensions ${o} and ${a} don't match`);if(e===1&&n===1)return lt(r,t);let i=[...r.shape.slice(0,-1),...t.shape.slice(0,-1)],u=k(r.dtype,t.dtype),s=N.zeros(i,u),c=e===1?1:r.shape.slice(0,-1).reduce((f,p)=>f*p,1),l=n===1?1:t.shape.slice(0,-1).reduce((f,p)=>f*p,1),m=o;for(let f=0;f<c;f++)for(let p=0;p<l;p++){let y=0;for(let g=0;g<m;g++){let b=e===1?g:f*m+g,A=n===1?g:p*m+g,h=r.data[b+r.offset],S=t.data[A+t.offset];typeof h=="bigint"&&typeof S=="bigint"?y=Number(y)+Number(h*S):y+=Number(h)*Number(S)}if(i.length===0)return y;let d=c===1?p:f*l+p;s.data[d]=y}return s}function ft(r,t){let e=r.ndim===1?r:sr(r),n=t.ndim===1?t:sr(t),o=e.size,a=n.size,i=k(r.dtype,t.dtype),u=N.zeros([o,a],i);for(let s=0;s<o;s++)for(let c=0;c<a;c++){let l=e.get(s),m=n.get(c),f;typeof l=="bigint"&&typeof m=="bigint"?f=l*m:f=Number(l)*Number(m),u.set([s,c],f)}return u}function Ge(r,t,e){let n,o;if(typeof e=="number"){let f=e;if(f<0)throw new Error("tensordot: axes must be non-negative");if(f>r.ndim||f>t.ndim)throw new Error("tensordot: axes exceeds array dimensions");n=Array.from({length:f},(p,y)=>r.ndim-f+y),o=Array.from({length:f},(p,y)=>y)}else if([n,o]=e,n.length!==o.length)throw new Error("tensordot: axes lists must have same length");for(let f=0;f<n.length;f++){let p=n[f],y=o[f];if(p<0||p>=r.ndim||y<0||y>=t.ndim)throw new Error("tensordot: axis out of bounds");if(r.shape[p]!==t.shape[y])throw new Error(`tensordot: shape mismatch on axes ${p} and ${y}: ${r.shape[p]} != ${t.shape[y]}`)}let a=[],i=[];for(let f=0;f<r.ndim;f++)n.includes(f)||a.push(f);for(let f=0;f<t.ndim;f++)o.includes(f)||i.push(f);let u=[...a.map(f=>r.shape[f]),...i.map(f=>t.shape[f])];if(u.length===0){let f=0,p=n.map(y=>r.shape[y]).reduce((y,d)=>y*d,1);for(let y=0;y<p;y++){let d=y,g=new Array(n.length);for(let D=n.length-1;D>=0;D--){let x=n[D];g[D]=d%r.shape[x],d=Math.floor(d/r.shape[x])}let b=new Array(r.ndim),A=new Array(t.ndim);for(let D=0;D<n.length;D++)b[n[D]]=g[D];for(let D=0;D<o.length;D++)A[o[D]]=g[D];let h=r.get(...b),S=t.get(...A);typeof h=="bigint"&&typeof S=="bigint"?f=Number(f)+Number(h*S):f+=Number(h)*Number(S)}return f}let s=k(r.dtype,t.dtype),c=N.zeros(u,s),l=u.reduce((f,p)=>f*p,1),m=n.map(f=>r.shape[f]).reduce((f,p)=>f*p,1);for(let f=0;f<l;f++){let p=f,y=[];for(let A=u.length-1;A>=0;A--)y[A]=p%u[A],p=Math.floor(p/u[A]);let d=y.slice(0,a.length),g=y.slice(a.length),b=0;for(let A=0;A<m;A++){p=A;let h=[];for(let _=n.length-1;_>=0;_--){let B=n[_];h[_]=p%r.shape[B],p=Math.floor(p/r.shape[B])}let S=new Array(r.ndim),D=new Array(t.ndim);for(let _=0;_<a.length;_++)S[a[_]]=d[_];for(let _=0;_<i.length;_++)D[i[_]]=g[_];for(let _=0;_<n.length;_++)S[n[_]]=h[_],D[o[_]]=h[_];let x=r.get(...S),w=t.get(...D);typeof x=="bigint"&&typeof w=="bigint"?b=Number(b)+Number(x*w):b+=Number(x)*Number(w)}c.set(y,b)}return c}function He(r,t=0,e=0,n=1){let o=r.shape,a=o.length;if(a<2)throw new Error("diagonal requires an array of at least two dimensions");let i=e<0?a+e:e,u=n<0?a+n:n;if(i<0||i>=a||u<0||u>=a)throw new Error("axis out of bounds");if(i===u)throw new Error("axis1 and axis2 cannot be the same");let s=o[i],c=o[u],l;t>=0?l=Math.max(0,Math.min(s,c-t)):l=Math.max(0,Math.min(s+t,c));let m=[];for(let d=0;d<a;d++)d!==i&&d!==u&&m.push(o[d]);m.push(l);let f=N.zeros(m,r.dtype),p=o.filter((d,g)=>g!==i&&g!==u),y=p.reduce((d,g)=>d*g,1);for(let d=0;d<y;d++){let g=d,b=[];for(let A=p.length-1;A>=0;A--)b.unshift(g%p[A]),g=Math.floor(g/p[A]);for(let A=0;A<l;A++){let h=new Array(a),S=0;for(let w=0;w<a;w++)w===i?h[w]=t>=0?A:A-t:w===u?h[w]=t>=0?A+t:A:h[w]=b[S++];let D=[...b,A],x=r.get(...h);f.set(D,x)}}return f}function Ye(r,...t){let e=r.indexOf("->"),n,o;e===-1?(n=r,o=za(n)):(n=r.slice(0,e),o=r.slice(e+2));let a=n.split(",").map(d=>d.trim());if(a.length!==t.length)throw new Error(`einsum: expected ${a.length} operands, got ${t.length}`);let i=new Map;for(let d=0;d<t.length;d++){let g=a[d],b=t[d];if(g.length!==b.ndim)throw new Error(`einsum: operand ${d} has ${b.ndim} dimensions but subscript '${g}' has ${g.length} indices`);for(let A=0;A<g.length;A++){let h=g[A],S=b.shape[A];if(i.has(h)){if(i.get(h)!==S)throw new Error(`einsum: size mismatch for index '${h}': ${i.get(h)} vs ${S}`)}else i.set(h,S)}}for(let d of o)if(!i.has(d))throw new Error(`einsum: output subscript contains unknown index '${d}'`);let u=new Set(o),s=new Set;for(let d of a)for(let g of d)s.add(g);let c=[];for(let d of s)u.has(d)||c.push(d);if(t.length===2&&a.length===2){let[d,g]=a,[b,A]=t;if(d.length===2&&g.length===2&&o.length===2&&b.ndim===2&&A.ndim===2){let[h,S]=[d[0],d[1]],[D,x]=[g[0],g[1]],[w,_]=[o[0],o[1]];if(h===w&&x===_&&S===D&&c.length===1&&c[0]===S||h===w&&x===_&&S===D&&c.length===1&&c[0]===S)return G(b,A);if(S===w&&x===_&&h===D&&c.length===1&&c[0]===h){let B=Re(b);return G(B,A)}if(h===w&&D===_&&S===x&&c.length===1&&c[0]===S){let B=Re(A);return G(b,B)}}if(d.length===1&&g.length===1&&d===g&&o.length===0&&b.ndim===1&&A.ndim===1)return ct(t,a,c,i);if(d&&g&&d.length===1&&g.length===1&&o.length===2&&o===d+g&&c.length===0&&b.ndim===1&&A.ndim===1)return ft(b,A)}if(t.length===1&&a[0].length===2&&o.length===0){let d=a[0];if(d[0]===d[1]&&t[0].ndim===2)return ct(t,a,c,i)}let l=Array.from(o).map(d=>i.get(d));if(l.length===0)return ct(t,a,c,i);let m=t[0].dtype;for(let d=1;d<t.length;d++)m=k(m,t[d].dtype);let f=N.zeros(l,m),p=l.reduce((d,g)=>d*g,1),y=1;for(let d of c)y*=i.get(d);for(let d=0;d<p;d++){let g=_a(d,l),b=new Map;for(let h=0;h<o.length;h++)b.set(o[h],g[h]);let A=0;for(let h=0;h<y;h++){let S=h;for(let x=c.length-1;x>=0;x--){let w=c[x],_=i.get(w);b.set(w,S%_),S=Math.floor(S/_)}let D=1;for(let x=0;x<t.length;x++){let w=t[x],_=a[x],B=[];for(let v of _)B.push(b.get(v));let E=w.get(...B);D*=Number(E)}A+=D}f.set(g,A)}return f}function za(r){let t=new Map,e=r.split(",");for(let o of e)for(let a of o.trim())t.set(a,(t.get(a)||0)+1);let n=[];for(let[o,a]of t)a===1&&n.push(o);return n.sort().join("")}function ct(r,t,e,n){let o=1;for(let i of e)o*=n.get(i);let a=0;for(let i=0;i<o;i++){let u=new Map,s=i;for(let l=e.length-1;l>=0;l--){let m=e[l],f=n.get(m);u.set(m,s%f),s=Math.floor(s/f)}let c=1;for(let l=0;l<r.length;l++){let m=r[l],f=t[l],p=[];for(let d of f)p.push(u.get(d));let y=m.get(...p);c*=Number(y)}a+=c}return a}function _a(r,t){let e=new Array(t.length),n=r;for(let o=t.length-1;o>=0;o--)e[o]=n%t[o],n=Math.floor(n/t[o]);return e}function Je(r,t){let e=r.shape,n=t.shape,o=e.length,a=n.length,i=k(r.dtype,t.dtype),u=Math.max(o,a),s=new Array(u),c=new Array(u).fill(1),l=new Array(u).fill(1);for(let y=0;y<o;y++)c[u-o+y]=e[y];for(let y=0;y<a;y++)l[u-a+y]=n[y];for(let y=0;y<u;y++)s[y]=c[y]*l[y];let m=N.zeros(s,i),f=e.reduce((y,d)=>y*d,1),p=n.reduce((y,d)=>y*d,1);for(let y=0;y<f;y++){let d=y,g=new Array(o);for(let h=o-1;h>=0;h--)g[h]=d%e[h],d=Math.floor(d/e[h]);let b=new Array(u).fill(0);for(let h=0;h<o;h++)b[u-o+h]=g[h];let A=r.get(...g);for(let h=0;h<p;h++){let S=h,D=new Array(a);for(let E=a-1;E>=0;E--)D[E]=S%n[E],S=Math.floor(S/n[E]);let x=new Array(u).fill(0);for(let E=0;E<a;E++)x[u-a+E]=D[E];let w=t.get(...D),_=new Array(u);for(let E=0;E<u;E++)_[E]=b[E]*l[E]+x[E];let B=typeof A=="bigint"||typeof w=="bigint"?BigInt(Number(A))*BigInt(Number(w)):Number(A)*Number(w);m.set(_,B)}}return m}function Qe(r,t,e=-1,n=-1,o=-1,a){a!==void 0&&(e=a,n=a,o=a);let i=(h,S)=>h<0?S+h:h,u=i(e,r.ndim),s=i(n,t.ndim);if(r.ndim===1&&t.ndim===1){let h=r.shape[0],S=t.shape[0];if(h===3&&S===3){let D=Number(r.get(0)),x=Number(r.get(1)),w=Number(r.get(2)),_=Number(t.get(0)),B=Number(t.get(1)),E=Number(t.get(2)),v=N.zeros([3],"float64");return v.set([0],x*E-w*B),v.set([1],w*_-D*E),v.set([2],D*B-x*_),v}else if(h===2&&S===2){let D=Number(r.get(0)),x=Number(r.get(1)),w=Number(t.get(0)),_=Number(t.get(1));return D*_-x*w}else if(h===2&&S===3||h===3&&S===2){let D=Number(r.get(0)),x=Number(r.get(1)),w=h===3?Number(r.get(2)):0,_=Number(t.get(0)),B=Number(t.get(1)),E=S===3?Number(t.get(2)):0,v=N.zeros([3],"float64");return v.set([0],x*E-w*B),v.set([1],w*_-D*E),v.set([2],D*B-x*_),v}else throw new Error(`cross: incompatible dimensions for cross product: ${h} and ${S}`)}let c=r.shape[u],l=t.shape[s];if(c!==2&&c!==3||l!==2&&l!==3)throw new Error(`cross: incompatible dimensions for cross product: ${c} and ${l}`);let m=c===2&&l===2?0:3,f=[...r.shape.slice(0,u),...r.shape.slice(u+1)],p=[...t.shape.slice(0,s),...t.shape.slice(s+1)];if(f.length!==p.length)throw new Error("cross: incompatible shapes for cross product");for(let h=0;h<f.length;h++)if(f[h]!==p[h])throw new Error("cross: incompatible shapes for cross product");let y=f,d=o<0?y.length+1+o:o,g;if(m===0?g=y:g=[...y.slice(0,d),m,...y.slice(d)],g.length===0)throw new Error("cross: unexpected scalar result from higher-dimensional input");let b=N.zeros(g,"float64"),A=y.reduce((h,S)=>h*S,1);for(let h=0;h<A;h++){let S=h,D=[];for(let j=y.length-1;j>=0;j--)D[j]=S%y[j],S=Math.floor(S/y[j]);let x=[...D.slice(0,u),0,...D.slice(u)],w=[...D.slice(0,s),0,...D.slice(s)],_=j=>(x[u]=j,Number(r.get(...x))),B=j=>(w[s]=j,Number(t.get(...w))),E=_(0),v=_(1),$=c===3?_(2):0,M=B(0),V=B(1),Z=l===3?B(2):0;if(m===0)b.set(D,E*V-v*M);else{let j=v*Z-$*V,lr=$*M-E*Z,Ko=E*V-v*M,jr=(ra,ta)=>{let ea=[...D.slice(0,d),ra,...D.slice(d)];b.set(ea,ta)};jr(0,j),jr(1,lr),jr(2,Ko)}}return b}function ir(r,t=2,e,n=!1){if(typeof t!="number")throw new Error("vector_norm: ord must be a number");if(e==null){let c=r.ndim===1?r:sr(r),l=c.size,m;if(t===1/0){m=0;for(let f=0;f<l;f++)m=Math.max(m,Math.abs(Number(c.get(f))))}else if(t===-1/0){m=1/0;for(let f=0;f<l;f++)m=Math.min(m,Math.abs(Number(c.get(f))))}else if(t===0){m=0;for(let f=0;f<l;f++)Number(c.get(f))!==0&&m++}else if(t===1){m=0;for(let f=0;f<l;f++)m+=Math.abs(Number(c.get(f)))}else if(t===2){m=0;for(let f=0;f<l;f++){let p=Number(c.get(f));m+=p*p}m=Math.sqrt(m)}else{m=0;for(let f=0;f<l;f++)m+=Math.pow(Math.abs(Number(c.get(f))),t);m=Math.pow(m,1/t)}if(n){let f=new Array(r.ndim).fill(1),p=N.zeros(f,"float64");return p.set(new Array(r.ndim).fill(0),m),p}return m}let o=e<0?r.ndim+e:e;if(o<0||o>=r.ndim)throw new Error(`vector_norm: axis ${e} out of bounds for array with ${r.ndim} dimensions`);let a=n?[...r.shape.slice(0,o),1,...r.shape.slice(o+1)]:[...r.shape.slice(0,o),...r.shape.slice(o+1)];if(a.length===0)return ir(r,t,null,!1);let i=N.zeros(a,"float64"),u=r.shape[o],s=a.reduce((c,l)=>c*l,1);for(let c=0;c<s;c++){let l=c,m=[];for(let y=a.length-1;y>=0;y--)m[y]=l%a[y],l=Math.floor(l/a[y]);let f=n?[...m.slice(0,o),0,...m.slice(o+1)]:[...m.slice(0,o),0,...m.slice(o)],p;if(t===1/0){p=0;for(let y=0;y<u;y++)f[o]=y,p=Math.max(p,Math.abs(Number(r.get(...f))))}else if(t===-1/0){p=1/0;for(let y=0;y<u;y++)f[o]=y,p=Math.min(p,Math.abs(Number(r.get(...f))))}else if(t===0){p=0;for(let y=0;y<u;y++)f[o]=y,Number(r.get(...f))!==0&&p++}else if(t===1){p=0;for(let y=0;y<u;y++)f[o]=y,p+=Math.abs(Number(r.get(...f)))}else if(t===2){p=0;for(let y=0;y<u;y++){f[o]=y;let d=Number(r.get(...f));p+=d*d}p=Math.sqrt(p)}else{p=0;for(let y=0;y<u;y++)f[o]=y,p+=Math.pow(Math.abs(Number(r.get(...f))),t);p=Math.pow(p,1/t)}i.set(m,p)}return i}function nr(r,t="fro",e=!1){if(r.ndim!==2)throw new Error(`matrix_norm: input must be 2D, got ${r.ndim}D`);let[n,o]=r.shape,a;if(t==="fro"){a=0;for(let i=0;i<n;i++)for(let u=0;u<o;u++){let s=Number(r.get(i,u));a+=s*s}a=Math.sqrt(a)}else if(t==="nuc"){let{s:i}=tr(r);a=0;for(let u=0;u<i.size;u++)a+=Number(i.get(u))}else if(t===1){a=0;for(let i=0;i<o;i++){let u=0;for(let s=0;s<n;s++)u+=Math.abs(Number(r.get(s,i)));a=Math.max(a,u)}}else if(t===-1){a=1/0;for(let i=0;i<o;i++){let u=0;for(let s=0;s<n;s++)u+=Math.abs(Number(r.get(s,i)));a=Math.min(a,u)}}else if(t===1/0){a=0;for(let i=0;i<n;i++){let u=0;for(let s=0;s<o;s++)u+=Math.abs(Number(r.get(i,s)));a=Math.max(a,u)}}else if(t===-1/0){a=1/0;for(let i=0;i<n;i++){let u=0;for(let s=0;s<o;s++)u+=Math.abs(Number(r.get(i,s)));a=Math.min(a,u)}}else if(t===2){let{s:i}=tr(r);a=Number(i.get(0))}else if(t===-2){let{s:i}=tr(r);a=Number(i.get(i.size-1))}else throw new Error(`matrix_norm: invalid ord value: ${t}`);if(e){let i=N.zeros([1,1],"float64");return i.set([0,0],a),i}return a}function Xe(r,t=null,e=null,n=!1){if(t===null)return e===null?ir(r,2,null,n):typeof e=="number"?ir(r,2,e,n):nr(r,"fro",n);if(Array.isArray(e)){if(e.length!==2)throw new Error("norm: axis must be a 2-tuple for matrix norms");let o=e[0]<0?r.ndim+e[0]:e[0],a=e[1]<0?r.ndim+e[1]:e[1];if(r.ndim!==2||o!==0&&o!==1||a!==0&&a!==1||o===a)throw new Error("norm: complex axis specification not yet supported");return nr(r,t,n)}if(r.ndim===2&&e===null&&(t==="fro"||t==="nuc"))return nr(r,t,n);if(typeof t!="number"&&t!==null)throw new Error(`norm: ord '${t}' not valid for vector norm`);return ir(r,t??2,e,n)}function mt(r,t="reduced"){if(r.ndim!==2)throw new Error(`qr: input must be 2D, got ${r.ndim}D`);let[e,n]=r.shape,o=Math.min(e,n),a=N.zeros([e,n],"float64");for(let p=0;p<e;p++)for(let y=0;y<n;y++)a.set([p,y],Number(r.get(p,y)));let i=[],u=[];for(let p=0;p<o;p++){let y=e-p,d=[];for(let D=p;D<e;D++)d.push(Number(a.get(D,p)));let g=0;for(let D=0;D<y;D++)g+=d[D]*d[D];if(g=Math.sqrt(g),g<1e-15){i.push(d),u.push(0);continue}let b=d[0]>=0?1:-1,A=d[0]+b*g,h=[1];for(let D=1;D<y;D++)h.push(d[D]/A);let S=b*A/g;u.push(S),i.push(h);for(let D=p;D<n;D++){let x=0;for(let w=0;w<y;w++)x+=h[w]*Number(a.get(p+w,D));for(let w=0;w<y;w++)a.set([p+w,D],Number(a.get(p+w,D))-S*h[w]*x)}}if(t==="raw"){let p=N.zeros([e,n],"float64");for(let d=0;d<e;d++)for(let g=0;g<n;g++)p.set([d,g],Number(a.get(d,g)));let y=N.zeros([o],"float64");for(let d=0;d<o;d++)y.set([d],u[d]);return{h:p,tau:y}}if(t==="r"){let p=N.zeros([o,n],"float64");for(let y=0;y<o;y++)for(let d=y;d<n;d++)p.set([y,d],Number(a.get(y,d)));return p}let s=t==="complete"?e:o,c=N.zeros([e,s],"float64");for(let p=0;p<Math.min(e,s);p++)c.set([p,p],1);for(let p=o-1;p>=0;p--){let y=i[p],d=u[p],g=e-p;for(let b=p;b<s;b++){let A=0;for(let h=0;h<g;h++)A+=y[h]*Number(c.get(p+h,b));for(let h=0;h<g;h++)c.set([p+h,b],Number(c.get(p+h,b))-d*y[h]*A)}}let l=N.zeros([e,s],"float64");for(let p=0;p<e;p++)for(let y=0;y<s;y++)l.set([p,y],Number(c.get(p,y)));let m=t==="complete"?e:o,f=N.zeros([m,n],"float64");for(let p=0;p<m;p++)for(let y=0;y<n;y++)y>=p&&f.set([p,y],Number(a.get(p,y)));return{q:l,r:f}}function Ke(r,t=!1){if(r.ndim!==2)throw new Error(`cholesky: input must be 2D, got ${r.ndim}D`);let[e,n]=r.shape;if(e!==n)throw new Error(`cholesky: matrix must be square, got ${e}x${n}`);let o=e,a=N.zeros([o,o],"float64");for(let i=0;i<o;i++)for(let u=0;u<=i;u++){let s=0;if(i===u){for(let l=0;l<u;l++)s+=Number(a.get(u,l))**2;let c=Number(r.get(u,u))-s;if(c<0)throw new Error("cholesky: matrix is not positive definite");a.set([u,u],Math.sqrt(c))}else{for(let l=0;l<u;l++)s+=Number(a.get(i,l))*Number(a.get(u,l));let c=Number(a.get(u,u));if(Math.abs(c)<1e-15)throw new Error("cholesky: matrix is not positive definite");a.set([i,u],(Number(r.get(i,u))-s)/c)}}if(t){let i=N.zeros([o,o],"float64");for(let u=0;u<o;u++)for(let s=u;s<o;s++)i.set([u,s],Number(a.get(s,u)));return i}return a}function tr(r){if(r.ndim!==2)throw new Error(`svd: input must be 2D, got ${r.ndim}D`);let[t,e]=r.shape,n=Math.min(t,e),o=N.zeros([e,e],"float64");for(let m=0;m<e;m++)for(let f=0;f<e;f++){let p=0;for(let y=0;y<t;y++)p+=Number(r.get(y,m))*Number(r.get(y,f));o.set([m,f],p)}let{values:a,vectors:i}=pt(o),u=Array.from({length:e},(m,f)=>f);u.sort((m,f)=>a[f]-a[m]);let s=N.zeros([n],"float64");for(let m=0;m<n;m++){let f=a[u[m]];s.set([m],Math.sqrt(Math.max(0,f)))}let c=N.zeros([e,e],"float64");for(let m=0;m<e;m++)for(let f=0;f<e;f++)c.set([m,f],i[f][u[m]]);let l=N.zeros([t,t],"float64");for(let m=0;m<t;m++)for(let f=0;f<n;f++){let p=Number(s.get(f));if(p>1e-10){let y=0;for(let d=0;d<e;d++)y+=Number(r.get(m,d))*Number(c.get(f,d));l.set([m,f],y/p)}}if(t>n)for(let m=n;m<t;m++){let f=new Array(t).fill(0);f[m]=1;for(let y=0;y<m;y++){let d=0;for(let g=0;g<t;g++)d+=f[g]*Number(l.get(g,y));for(let g=0;g<t;g++)f[g]=f[g]-d*Number(l.get(g,y))}let p=0;for(let y=0;y<t;y++)p+=f[y]*f[y];if(p=Math.sqrt(p),p>1e-10)for(let y=0;y<t;y++)l.set([y,m],f[y]/p)}return{u:l,s,vt:c}}function pt(r){let t=r.shape[0],e=100*t*t,n=1e-10,o=[];for(let u=0;u<t;u++){o.push([]);for(let s=0;s<t;s++)o[u].push(Number(r.get(u,s)))}let a=[];for(let u=0;u<t;u++){a.push([]);for(let s=0;s<t;s++)a[u].push(u===s?1:0)}for(let u=0;u<e;u++){let s=0,c=0,l=1;for(let h=0;h<t;h++)for(let S=h+1;S<t;S++)Math.abs(o[h][S])>s&&(s=Math.abs(o[h][S]),c=h,l=S);if(s<n)break;let m=o[c][c],f=o[l][l],p=o[c][l],y;Math.abs(m-f)<1e-15?y=Math.PI/4:y=.5*Math.atan2(2*p,f-m);let d=Math.cos(y),g=Math.sin(y),b=d*d*m+g*g*f-2*g*d*p,A=g*g*m+d*d*f+2*g*d*p;o[c][c]=b,o[l][l]=A,o[c][l]=0,o[l][c]=0;for(let h=0;h<t;h++)if(h!==c&&h!==l){let S=o[h][c],D=o[h][l];o[h][c]=d*S-g*D,o[c][h]=o[h][c],o[h][l]=g*S+d*D,o[l][h]=o[h][l]}for(let h=0;h<t;h++){let S=a[h][c],D=a[h][l];a[h][c]=d*S-g*D,a[h][l]=g*S+d*D}}let i=[];for(let u=0;u<t;u++)i.push(o[u][u]);return{values:i,vectors:a}}function rn(r,t=!0,e=!0){let n=tr(r);if(!e)return n.s;if(!t){let[o,a]=r.shape,i=Math.min(o,a),u=N.zeros([o,i],"float64");for(let c=0;c<o;c++)for(let l=0;l<i;l++)u.set([c,l],Number(n.u.get(c,l)));let s=N.zeros([i,a],"float64");for(let c=0;c<i;c++)for(let l=0;l<a;l++)s.set([c,l],Number(n.vt.get(c,l)));return{u,s:n.s,vt:s}}return n}function tn(r){if(r.ndim!==2)throw new Error(`det: input must be 2D, got ${r.ndim}D`);let[t,e]=r.shape;if(t!==e)throw new Error(`det: matrix must be square, got ${t}x${e}`);let n=t;if(n===0)return 1;let o=r.data;if(n===1)return Number(o[0]);if(n===2)return Number(o[0])*Number(o[3])-Number(o[1])*Number(o[2]);let{lu:a,sign:i}=yt(r),u=a.data,s=i;for(let c=0;c<n;c++)s*=u[c*n+c];return s}function yt(r){let[t,e]=r.shape,n=t,o=e,a=N.zeros([n,o],"float64"),i=a.data,u=r.data;for(let l=0;l<n*o;l++)i[l]=Number(u[l]);let s=Array.from({length:n},(l,m)=>m),c=1;for(let l=0;l<Math.min(n,o);l++){let m=Math.abs(i[l*o+l]),f=l;for(let y=l+1;y<n;y++){let d=Math.abs(i[y*o+l]);d>m&&(m=d,f=y)}if(f!==l){for(let d=0;d<o;d++){let g=i[l*o+d];i[l*o+d]=i[f*o+d],i[f*o+d]=g}let y=s[l];s[l]=s[f],s[f]=y,c=-c}let p=i[l*o+l];if(Math.abs(p)>1e-15)for(let y=l+1;y<n;y++){let d=i[y*o+l]/p;i[y*o+l]=d;for(let g=l+1;g<o;g++)i[y*o+g]=i[y*o+g]-d*i[l*o+g]}}return{lu:a,piv:s,sign:c}}function kr(r){if(r.ndim!==2)throw new Error(`inv: input must be 2D, got ${r.ndim}D`);let[t,e]=r.shape;if(t!==e)throw new Error(`inv: matrix must be square, got ${t}x${e}`);let n=t,{lu:o,piv:a}=yt(r),i=o.data,u=N.zeros([n,n],"float64"),s=u.data;for(let c=0;c<n;c++){let l=new Float64Array(n);for(let m=0;m<n;m++){let f=a[m]===c?1:0;for(let p=0;p<m;p++)f-=i[m*n+p]*l[p];l[m]=f}for(let m=n-1;m>=0;m--){let f=l[m];for(let y=m+1;y<n;y++)f-=i[m*n+y]*s[y*n+c];let p=i[m*n+m];if(Math.abs(p)<1e-15)throw new Error("inv: singular matrix");s[m*n+c]=f/p}}return u}function Le(r,t){let[e]=r.shape,n=e,{lu:o,piv:a}=yt(r),i=o.data,u=t.data,s=new Float64Array(n);for(let f=0;f<n;f++)s[f]=Number(u[a[f]]);let c=new Float64Array(n);for(let f=0;f<n;f++){let p=s[f];for(let y=0;y<f;y++)p-=i[f*n+y]*c[y];c[f]=p}let l=N.zeros([n],"float64"),m=l.data;for(let f=n-1;f>=0;f--){let p=c[f];for(let d=f+1;d<n;d++)p-=i[f*n+d]*m[d];let y=i[f*n+f];if(Math.abs(y)<1e-15)throw new Error("solve: singular matrix");m[f]=p/y}return l}function en(r,t){if(r.ndim!==2)throw new Error(`solve: coefficient matrix must be 2D, got ${r.ndim}D`);let[e,n]=r.shape;if(e!==n)throw new Error(`solve: coefficient matrix must be square, got ${e}x${n}`);let o=e;if(t.ndim===1){if(t.shape[0]!==o)throw new Error(`solve: incompatible shapes (${e},${n}) and (${t.shape[0]},)`);return Le(r,t)}if(t.ndim===2){if(t.shape[0]!==o)throw new Error(`solve: incompatible shapes (${e},${n}) and (${t.shape[0]},${t.shape[1]})`);let a=t.shape[1],i=N.zeros([o,a],"float64");for(let u=0;u<a;u++){let s=N.zeros([o],"float64");for(let l=0;l<o;l++)s.set([l],Number(t.get(l,u)));let c=Le(r,s);for(let l=0;l<o;l++)i.set([l,u],Number(c.get(l)))}return i}throw new Error(`solve: b must be 1D or 2D, got ${t.ndim}D`)}function nn(r,t,e=null){if(r.ndim!==2)throw new Error(`lstsq: coefficient matrix must be 2D, got ${r.ndim}D`);let[n,o]=r.shape,{u:a,s:i,vt:u}=tr(r),s=Math.min(n,o),c=e??Math.max(n,o)*Number.EPSILON,m=Number(i.get(0))*c,f=0;for(let A=0;A<s;A++)Number(i.get(A))>m&&f++;let p=t.ndim===1?P(t,[t.size,1]):t,y=p.shape[1];if(p.shape[0]!==n)throw new Error(`lstsq: incompatible shapes (${n},${o}) and (${t.shape.join(",")})`);let d=N.zeros([o,y],"float64");for(let A=0;A<y;A++){let h=new Array(n).fill(0);for(let S=0;S<n;S++)for(let D=0;D<n;D++)h[S]+=Number(a.get(D,S))*Number(p.get(D,A));for(let S=0;S<o;S++){let D=0;for(let x=0;x<s;x++){let w=Number(i.get(x));w>m&&(D+=Number(u.get(x,S))*h[x]/w)}d.set([S,A],D)}}let g;if(n>o){g=N.zeros([y],"float64");for(let A=0;A<y;A++){let h=0;for(let S=0;S<n;S++){let D=0;for(let w=0;w<o;w++)D+=Number(r.get(S,w))*Number(d.get(w,A));let x=D-Number(p.get(S,A));h+=x*x}g.set([A],h)}}else g=N.zeros([0],"float64");return{x:t.ndim===1?P(d,[o]):d,residuals:g,rank:f,s:i}}function on(r,t=2){if(r.ndim!==2)throw new Error(`cond: input must be 2D, got ${r.ndim}D`);let[e,n]=r.shape;if(t===2||t===-2){let{s:u}=tr(r),s=Math.min(e,n),c=Number(u.get(0)),l=Number(u.get(s-1));return t===2?l>0?c/l:1/0:c>0?l/c:0}if(e!==n)throw new Error(`cond: matrix must be square for p=${t}`);let o=nr(r,t),a=kr(r),i=nr(a,t);return o*i}function an(r,t){if(r.ndim===0)return Number(r.get())!==0?1:0;if(r.ndim===1){for(let i=0;i<r.size;i++)if(Number(r.get(i))!==0)return 1;return 0}if(r.ndim!==2)throw new Error(`matrix_rank: input must be at most 2D, got ${r.ndim}D`);let{s:e}=tr(r),n=Number(e.get(0)),o=t??n*Math.max(r.shape[0],r.shape[1])*Number.EPSILON,a=0;for(let i=0;i<e.size;i++)Number(e.get(i))>o&&a++;return a}function sn(r,t){if(r.ndim!==2)throw new Error(`matrix_power: input must be 2D, got ${r.ndim}D`);let[e,n]=r.shape;if(e!==n)throw new Error(`matrix_power: matrix must be square, got ${e}x${n}`);let o=e;if(!Number.isInteger(t))throw new Error("matrix_power: exponent must be an integer");if(t===0){let c=N.zeros([o,o],"float64");for(let l=0;l<o;l++)c.set([l,l],1);return c}let a=r,i=t;t<0&&(a=kr(r),i=-t);let u=N.zeros([o,o],"float64");for(let c=0;c<o;c++)u.set([c,c],1);let s=N.zeros([o,o],"float64");for(let c=0;c<o;c++)for(let l=0;l<o;l++)s.set([c,l],Number(a.get(c,l)));for(;i>0;)i&1&&(u=G(u,s)),s=G(s,s),i>>=1;return u}function un(r,t=1e-15){if(r.ndim!==2)throw new Error(`pinv: input must be 2D, got ${r.ndim}D`);let[e,n]=r.shape,{u:o,s:a,vt:i}=tr(r),u=Math.min(e,n),c=Number(a.get(0))*t,l=N.zeros([n,e],"float64");for(let m=0;m<n;m++)for(let f=0;f<e;f++){let p=0;for(let y=0;y<u;y++){let d=Number(a.get(y));d>c&&(p+=Number(i.get(y,m))*Number(o.get(f,y))/d)}l.set([m,f],p)}return l}function dt(r){if(r.ndim!==2)throw new Error(`eig: input must be 2D, got ${r.ndim}D`);let[t,e]=r.shape;if(t!==e)throw new Error(`eig: matrix must be square, got ${t}x${e}`);let n=t,o=!0;r:for(let c=0;c<n;c++)for(let l=c+1;l<n;l++)if(Math.abs(Number(r.get(c,l))-Number(r.get(l,c)))>1e-10){o=!1;break r}if(o){let{values:c,vectors:l}=pt(r),m=N.zeros([n],"float64"),f=N.zeros([n,n],"float64");for(let p=0;p<n;p++){m.set([p],c[p]);for(let y=0;y<n;y++)f.set([y,p],l[y][p])}return{w:m,v:f}}console.warn("numpy-ts: eig() called on non-symmetric matrix. Complex eigenvalues are not supported; results may be inaccurate. For symmetric matrices, use eigh() instead.");let{values:a,vectors:i}=Ba(r),u=N.zeros([n],"float64"),s=N.zeros([n,n],"float64");for(let c=0;c<n;c++){u.set([c],a[c]);for(let l=0;l<n;l++)s.set([l,c],i[l][c])}return{w:u,v:s}}function Ba(r){let t=r.shape[0],e=1e3,n=1e-10,o=N.zeros([t,t],"float64");for(let s=0;s<t;s++)for(let c=0;c<t;c++)o.set([s,c],Number(r.get(s,c)));let a=N.zeros([t,t],"float64");for(let s=0;s<t;s++)a.set([s,s],1);for(let s=0;s<e;s++){let c=0;for(let p=0;p<t;p++)for(let y=0;y<t;y++)p!==y&&(c+=Number(o.get(p,y))**2);if(Math.sqrt(c)<n*t)break;let l=mt(o,"reduced"),m=l.q,f=l.r;o=G(f,m),a=G(a,m)}let i=[];for(let s=0;s<t;s++)i.push(Number(o.get(s,s)));let u=[];for(let s=0;s<t;s++){u.push([]);for(let c=0;c<t;c++)u[s].push(Number(a.get(s,c)))}return{values:i,vectors:u}}function gt(r,t="L"){if(r.ndim!==2)throw new Error(`eigh: input must be 2D, got ${r.ndim}D`);let[e,n]=r.shape;if(e!==n)throw new Error(`eigh: matrix must be square, got ${e}x${n}`);let o=e,a=N.zeros([o,o],"float64");for(let m=0;m<o;m++)for(let f=0;f<o;f++)t==="L"?m>=f&&(a.set([m,f],Number(r.get(m,f))),a.set([f,m],Number(r.get(m,f)))):f>=m&&(a.set([m,f],Number(r.get(m,f))),a.set([f,m],Number(r.get(m,f))));let{values:i,vectors:u}=pt(a),s=Array.from({length:o},(m,f)=>f);s.sort((m,f)=>i[m]-i[f]);let c=N.zeros([o],"float64"),l=N.zeros([o,o],"float64");for(let m=0;m<o;m++){c.set([m],i[s[m]]);for(let f=0;f<o;f++)l.set([f,m],u[f][s[m]])}return{w:c,v:l}}function cn(r){let{w:t}=dt(r);return t}function ln(r,t="L"){let{w:e}=gt(r,t);return e}function fn(r){return C(r,Math.sqrt,!1)}function mn(r,t){return typeof t=="number"?va(r,t):F(r,t,Math.pow,"power")}function va(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,s=e!=="float32"&&e!=="float64"&&(t<0||!Number.isInteger(t))?"float64":e,c=N.zeros(n,s),l=c.data;if(I(e))if(I(s)&&Number.isInteger(t)&&t>=0){let m=o,f=l;for(let p=0;p<a;p++)f[p]=m[p]**BigInt(t)}else for(let m=0;m<a;m++)l[m]=Math.pow(Number(o[m]),t);else for(let m=0;m<a;m++)l[m]=Math.pow(Number(o[m]),t);return c}function pn(r){return C(r,Math.exp,!1)}function yn(r){return C(r,t=>Math.pow(2,t),!1)}function dn(r){return C(r,Math.expm1,!1)}function gn(r){return C(r,Math.log,!1)}function hn(r){return C(r,Math.log2,!1)}function An(r){return C(r,Math.log10,!1)}function bn(r){return C(r,Math.log1p,!1)}function Sn(r,t){return typeof t=="number"?Ua(r,t):Oa(r,t)}function Oa(r,t){let e=fr(r.shape,t.shape),n=e.reduce((c,l)=>c*l,1),o=r.dtype,a=t.dtype,i=o==="float32"&&a==="float32"?"float32":"float64",u=N.zeros(e,i),s=u.data;for(let c=0;c<n;c++){let l=(I(o),Number(r.iget(c))),m=(I(a),Number(t.iget(c))),f=Math.max(l,m),p=Math.min(l,m);s[c]=f+Math.log1p(Math.exp(p-f))}return u}function Ua(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.size,a=e==="float32"?"float32":"float64",i=N.zeros(n,a),u=i.data;for(let s=0;s<o;s++){let c=(I(e),Number(r.data[s])),l=Math.max(c,t),m=Math.min(c,t);u[s]=l+Math.log1p(Math.exp(m-l))}return i}function Nn(r,t){return typeof t=="number"?$a(r,t):Ta(r,t)}function Ta(r,t){let e=fr(r.shape,t.shape),n=e.reduce((l,m)=>l*m,1),o=r.dtype,a=t.dtype,i=o==="float32"&&a==="float32"?"float32":"float64",u=N.zeros(e,i),s=u.data,c=Math.LOG2E;for(let l=0;l<n;l++){let m=(I(o),Number(r.iget(l))),f=(I(a),Number(t.iget(l))),p=Math.max(m,f),y=Math.min(m,f);s[l]=p+Math.log1p(Math.pow(2,y-p))*c}return u}function $a(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.size,a=e==="float32"?"float32":"float64",i=N.zeros(n,a),u=i.data,s=Math.LOG2E;for(let c=0;c<o;c++){let l=(I(e),Number(r.data[c])),m=Math.max(l,t),f=Math.min(l,t);u[c]=m+Math.log1p(Math.pow(2,f-m))*s}return i}function Dn(r){return C(r,Math.sin,!1)}function xn(r){return C(r,Math.cos,!1)}function wn(r){return C(r,Math.tan,!1)}function In(r){return C(r,Math.asin,!1)}function zn(r){return C(r,Math.acos,!1)}function _n(r){return C(r,Math.atan,!1)}function Bn(r,t){return typeof t=="number"?Ca(r,t):ka(r,t)}function ka(r,t){let e=Array.from(r.shape),n=r.size,o=r.dtype,a=t.dtype,i=o==="float32"&&a==="float32"?"float32":"float64",u=N.zeros(e,i),s=u.data;for(let c=0;c<n;c++){let l=(I(o),Number(r.data[c])),m=(I(a),Number(t.data[c]));s[c]=Math.atan2(l,m)}return u}function Ca(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=e==="float32"?"float32":"float64",u=N.zeros(n,i),s=u.data;if(I(e))for(let c=0;c<a;c++)s[c]=Math.atan2(Number(o[c]),t);else for(let c=0;c<a;c++)s[c]=Math.atan2(Number(o[c]),t);return u}function En(r,t){return typeof t=="number"?qa(r,t):Va(r,t)}function Va(r,t){let e=Array.from(r.shape),n=r.size,o=r.dtype,a=t.dtype,i=o==="float32"&&a==="float32"?"float32":"float64",u=N.zeros(e,i),s=u.data;for(let c=0;c<n;c++){let l=(I(o),Number(r.data[c])),m=(I(a),Number(t.data[c]));s[c]=Math.hypot(l,m)}return u}function qa(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=e==="float32"?"float32":"float64",u=N.zeros(n,i),s=u.data;if(I(e))for(let c=0;c<a;c++)s[c]=Math.hypot(Number(o[c]),t);else for(let c=0;c<a;c++)s[c]=Math.hypot(Number(o[c]),t);return u}function vn(r){let t=180/Math.PI;return C(r,e=>e*t,!1)}function On(r){let t=Math.PI/180;return C(r,e=>e*t,!1)}function Un(r){return C(r,Math.sinh,!1)}function Tn(r){return C(r,Math.cosh,!1)}function $n(r){return C(r,Math.tanh,!1)}function Mn(r){return C(r,Math.asinh,!1)}function kn(r){return C(r,Math.acosh,!1)}function Cn(r){return C(r,Math.atanh,!1)}function ht(r,t){let e=r.shape,n=e.length,o=t.length;if(o<n)throw new Error("input operand has more dimensions than allowed by the axis remapping");let a=rr([Array.from(e),t]);if(a===null)throw new Error(`operands could not be broadcast together with shape (${e.join(",")}) (${t.join(",")})`);for(let i=0;i<o;i++)if(a[i]!==t[i])throw new Error(`operands could not be broadcast together with shape (${e.join(",")}) (${t.join(",")})`);return Y(r,t)}function Vn(r){if(r.length===0)return[];if(r.length===1)return[r[0]];let t=r.map(n=>Array.from(n.shape)),e=rr(t);if(e===null)throw new Error(`operands could not be broadcast together with shapes ${t.map(n=>`(${n.join(",")})`).join(" ")}`);return r.map(n=>Y(n,e))}function qn(r,t,e){let n=r.shape,o=n.length,a=r.dtype;if(e===void 0){let y=r.size;for(let A of t){let h=A<0?y+A:A;if(h<0||h>=y)throw new Error(`index ${A} is out of bounds for axis 0 with size ${y}`)}let d=t.length,g=T(a);if(!g)throw new Error(`Cannot take from array with dtype ${a}`);let b=new g(d);for(let A=0;A<d;A++){let h=t[A];h<0&&(h=y+h);let S=r.iget(h);I(a),b[A]=S}return N.fromData(b,[d],a)}let i=e<0?o+e:e;if(i<0||i>=o)throw new Error(`axis ${e} is out of bounds for array of dimension ${o}`);let u=n[i];for(let y of t){let d=y<0?u+y:y;if(d<0||d>=u)throw new Error(`index ${y} is out of bounds for axis ${i} with size ${u}`)}let s=Array.from(n);s[i]=t.length;let c=s.reduce((y,d)=>y*d,1),l=T(a);if(!l)throw new Error(`Cannot take from array with dtype ${a}`);let m=new l(c),f=R(s),p=new Array(o).fill(0);for(let y=0;y<c;y++){let d=[...p],g=p[i],b=t[g];b<0&&(b=u+b),d[i]=b;let A=r.get(...d),h=0;for(let S=0;S<o;S++)h+=p[S]*f[S];I(a),m[h]=A;for(let S=o-1;S>=0&&(p[S]++,!(p[S]<s[S]));S--)p[S]=0}return N.fromData(m,s,a)}function Fn(r,t,e){let n=r.size,o=r.dtype,a;if(typeof e=="number"||typeof e=="bigint")a=new Array(t.length).fill(e);else{a=[];for(let i=0;i<e.size;i++)a.push(e.iget(i));if(a.length===1)a=new Array(t.length).fill(a[0]);else if(a.length!==t.length){let i=[...a];a=[];for(let u=0;u<t.length;u++)a.push(i[u%i.length])}}for(let i=0;i<t.length;i++){let u=t[i];if(u<0&&(u=n+u),u<0||u>=n)throw new Error(`index ${t[i]} is out of bounds for axis 0 with size ${n}`);let s=a[i];I(o)?typeof s!="bigint"&&(s=BigInt(Math.round(Number(s)))):typeof s=="bigint"&&(s=Number(s)),r.iset(u,s)}}function Pn(r,t){if(t.length===0)throw new Error("choices cannot be empty");let e=r.shape,n=t.length,o=t[0].dtype,a=t.map(f=>Array.from(f.shape));a.unshift(Array.from(e));let i=rr(a);if(i===null)throw new Error("operands could not be broadcast together");let u=Y(r,i),s=t.map(f=>Y(f,i)),c=i.reduce((f,p)=>f*p,1),l=T(o);if(!l)throw new Error(`Cannot choose with dtype ${o}`);let m=new l(c);for(let f=0;f<c;f++){let p=Number(u.iget(f));if(p<0||p>=n)throw new Error(`index ${p} is out of bounds for axis 0 with size ${n}`);let y=s[p].iget(f);I(o),m[f]=y}return N.fromData(m,i,o)}function jn(r,t,e=!1){if(r.ndim!==t.ndim)return!1;for(let o=0;o<r.ndim;o++)if(r.shape[o]!==t.shape[o])return!1;let n=r.size;for(let o=0;o<n;o++){let a=r.iget(o),i=t.iget(o);if(e){let u=typeof a=="number"&&Number.isNaN(a),s=typeof i=="number"&&Number.isNaN(i);if(u&&s)continue}if(a!==i)return!1}return!0}function Rn(r,t,e){let n=r.shape,o=n.length,a=r.dtype,i=e<0?o+e:e;if(i<0||i>=o)throw new Error(`axis ${e} is out of bounds for array of dimension ${o}`);let u=t.shape;if(u.length!==o)throw new Error(`indices and arr must have the same number of dimensions, got ${u.length} vs ${o}`);for(let d=0;d<o;d++)if(d!==i&&u[d]!==n[d]&&u[d]!==1&&n[d]!==1)throw new Error(`index ${u[d]} is out of bounds for size ${n[d]} in dimension ${d}`);let s=Array.from(u),c=s.reduce((d,g)=>d*g,1),l=T(a);if(!l)throw new Error(`Cannot take_along_axis with dtype ${a}`);let m=new l(c),f=R(n),p=R(u),y=n[i];for(let d=0;d<c;d++){let g=new Array(o),b=d;for(let w=o-1;w>=0;w--)g[w]=b%s[w],b=Math.floor(b/s[w]);let A=0;for(let w=0;w<o;w++){let _=u[w]===1?0:g[w];A+=_*p[w]}let h=Number(t.iget(A));if(h<0&&(h=y+h),h<0||h>=y)throw new Error(`index ${h} is out of bounds for axis ${i} with size ${y}`);let S=[...g];S[i]=h;let D=0;for(let w=0;w<o;w++){let _=n[w]===1?0:S[w];D+=_*f[w]}let x=r.iget(D);I(a),m[d]=x}return N.fromData(m,s,a)}function Ln(r,t,e,n){let o=r.shape,a=o.length,i=r.dtype,u=n<0?a+n:n;if(u<0||u>=a)throw new Error(`axis ${n} is out of bounds for array of dimension ${a}`);let s=t.shape,c=e.shape;if(s.length!==a||c.length!==a)throw new Error("indices, arr, and values must have same ndim");let l=o[u],m=R(o),f=R(s),p=R(c),y=s.reduce((d,g)=>d*g,1);for(let d=0;d<y;d++){let g=new Array(a),b=d;for(let _=a-1;_>=0;_--)g[_]=b%s[_],b=Math.floor(b/s[_]);let A=0;for(let _=0;_<a;_++)A+=g[_]*f[_];let h=Number(t.iget(A));if(h<0&&(h=l+h),h<0||h>=l)throw new Error(`index ${h} is out of bounds for axis ${u} with size ${l}`);let S=0;for(let _=0;_<a;_++){let B=c[_]===1?0:g[_];S+=B*p[_]}let D=e.iget(S),x=[...g];x[u]=h;let w=0;for(let _=0;_<a;_++)w+=x[_]*m[_];I(i)?typeof D!="bigint"&&(D=BigInt(Math.round(Number(D)))):typeof D=="bigint"&&(D=Number(D)),r.iset(w,D)}}function Zn(r,t,e){let n=r.size,o=r.dtype,a;if(typeof e=="number"||typeof e=="bigint")a=[e];else{a=[];for(let u=0;u<e.size;u++)a.push(e.iget(u))}let i=0;for(let u=0;u<n;u++)if(t.iget(u)){let c=a[i%a.length];I(o)?typeof c!="bigint"&&(c=BigInt(Math.round(Number(c)))):typeof c=="bigint"&&(c=Number(c)),r.iset(u,c),i++}}function Wn(r,t,e){let n=t.shape,o=n.length,a=t.dtype,i=t.data,u=I(a);if(e===void 0){let A=0,h=Math.min(r.size,t.size);for(let w=0;w<h;w++)r.iget(w)&&A++;let S=T(a);if(!S)throw new Error(`Cannot compress with dtype ${a}`);let D=new S(A),x=0;for(let w=0;w<h;w++)r.iget(w)&&(D[x]=i[w],x++);return N.fromData(D,[A],a)}let s=e<0?o+e:e;if(s<0||s>=o)throw new Error(`axis ${e} is out of bounds for array of dimension ${o}`);let c=n[s],l=Math.min(r.size,c),m=[];for(let A=0;A<l;A++)r.iget(A)&&m.push(A);let f=m.length,p=[...n];p[s]=f;let y=p.reduce((A,h)=>A*h,1),d=T(a);if(!d)throw new Error(`Cannot compress with dtype ${a}`);let g=new d(y),b=R(n);if(s===0){let A=b[0],h=n.slice(1).reduce((D,x)=>D*x,1),S=0;for(let D=0;D<f;D++){let w=m[D]*A;if(u){let _=i,B=g;for(let E=0;E<h;E++)B[S++]=_[w+E]}else{let _=i,B=g;for(let E=0;E<h;E++)B[S++]=_[w+E]}}}else{let A=n.slice(0,s).reduce((D,x)=>D*x,1),h=n.slice(s+1).reduce((D,x)=>D*x,1),S=0;for(let D=0;D<A;D++)for(let x=0;x<f;x++){let w=m[x],_=0,B=D;for(let E=s-1;E>=0;E--){let v=B%n[E];B=Math.floor(B/n[E]),_+=v*b[E]}if(_+=w*b[s],u){let E=i,v=g;for(let $=0;$<h;$++)v[S++]=E[_+$]}else{let E=i,v=g;for(let $=0;$<h;$++)v[S++]=E[_+$]}}}return N.fromData(g,p,a)}function Gn(r,t,e=0){if(r.length!==t.length)throw new Error("condlist and choicelist must have same length");if(r.length===0)throw new Error("condlist and choicelist cannot be empty");let n=[...r.map(f=>Array.from(f.shape)),...t.map(f=>Array.from(f.shape))],o=rr(n);if(o===null)throw new Error("condlist and choicelist arrays could not be broadcast together");let a=t[0].dtype,i=o.reduce((f,p)=>f*p,1),u=T(a);if(!u)throw new Error(`Cannot select with dtype ${a}`);let s=e;I(a)?s=typeof e=="bigint"?e:BigInt(e):s=typeof e=="bigint"?Number(e):e;let c=new u(i);for(let f=0;f<i;f++)I(a),c[f]=s;let l=r.map(f=>Y(f,o)),m=t.map(f=>Y(f,o));for(let f=0;f<i;f++)for(let p=0;p<r.length;p++)if(l[p].iget(f)){let y=m[p].iget(f);I(a),c[f]=y;break}return N.fromData(c,o,a)}function Hn(r,t,e){let n=r.size,o=r.dtype,a=[];for(let u=0;u<e.size;u++)a.push(e.iget(u));if(a.length===0)return;let i=0;for(let u=0;u<n;u++)if(t.iget(u)){let c=a[i%a.length];I(o)?typeof c!="bigint"&&(c=BigInt(Math.round(Number(c)))):typeof c=="bigint"&&(c=Number(c)),r.iset(u,c),i++}}function At(r,t=2){if(t<1)throw new Error("ndim must be at least 1");let e=new Int32Array(r);for(let o=0;o<r;o++)e[o]=o;let n=[];for(let o=0;o<t;o++)n.push(N.fromData(new Int32Array(e),[r],"int32"));return n}function Yn(r){let t=r.shape,e=t.length;if(e<2)throw new Error("array must be at least 2-D");let n=t[0];for(let o=1;o<e;o++)if(t[o]!==n)throw new Error("All dimensions of input must be equal");return At(n,e)}function bt(r,t=0,e){let n=e??r,o=[],a=[];for(let i=0;i<r;i++)for(let u=0;u<=Math.min(i+t,n-1);u++)u>=0&&(o.push(i),a.push(u));return[N.fromData(new Int32Array(o),[o.length],"int32"),N.fromData(new Int32Array(a),[a.length],"int32")]}function Jn(r,t=0){let e=r.shape;if(e.length!==2)throw new Error("array must be 2-D");return bt(e[0],t,e[1])}function St(r,t=0,e){let n=e??r,o=[],a=[];for(let i=0;i<r;i++)for(let u=Math.max(i+t,0);u<n;u++)o.push(i),a.push(u);return[N.fromData(new Int32Array(o),[o.length],"int32"),N.fromData(new Int32Array(a),[a.length],"int32")]}function Qn(r,t=0){let e=r.shape;if(e.length!==2)throw new Error("array must be 2-D");return St(e[0],t,e[1])}function Xn(r,t,e=0){let n=t(r,e),o=n.shape;if(o.length!==2||o[0]!==r||o[1]!==r)throw new Error("mask_func must return n x n array");let a=[],i=[];for(let u=0;u<r;u++)for(let s=0;s<r;s++)n.get(u,s)&&(a.push(u),i.push(s));return[N.fromData(new Int32Array(a),[a.length],"int32"),N.fromData(new Int32Array(i),[i.length],"int32")]}function Kn(r,t="int32"){let e=r.length,n=[e,...r],o=n.reduce((s,c)=>s*c,1),a=T(t);if(!a)throw new Error(`Cannot create indices with dtype ${t}`);let i=new a(o),u=r.reduce((s,c)=>s*c,1);for(let s=0;s<e;s++){let c=s*u;for(let l=0;l<u;l++){let m=new Array(e),f=l;for(let y=e-1;y>=0;y--)m[y]=f%r[y],f=Math.floor(f/r[y]);let p=m[s];t==="int64"?i[c+l]=BigInt(p):i[c+l]=p}}return N.fromData(i,n,t)}function ro(...r){let t=r.length,e=[];for(let n=0;n<t;n++){let o=r[n],a=o.size,i=o.dtype,u=new Array(t).fill(1);u[n]=a;let s=T(i);if(!s)throw new Error(`Cannot create ix_ with dtype ${i}`);let c=new s(a);for(let l=0;l<a;l++){let m=o.iget(l);I(i),c[l]=m}e.push(N.fromData(c,u,i))}return e}function to(r,t,e="raise"){if(r.length!==t.length)throw new Error("multi_index length must equal dims length");if(r.length===0)throw new Error("multi_index cannot be empty");let n=r[0].size,o=t.length,a=new Int32Array(n),i=new Array(o),u=1;for(let s=o-1;s>=0;s--)i[s]=u,u*=t[s];for(let s=0;s<n;s++){let c=0;for(let l=0;l<o;l++){let m=Number(r[l].iget(s)),f=t[l];if(e==="wrap")m=(m%f+f)%f;else if(e==="clip")m=Math.max(0,Math.min(m,f-1));else if(m<0||m>=f)throw new Error(`index ${m} is out of bounds for axis ${l} with size ${f}`);c+=m*i[l]}a[s]=c}return N.fromData(a,[n],"int32")}function eo(r,t,e="C"){let n=t.length,o,a;if(typeof r=="number")o=[r],a=[];else{o=[];for(let l=0;l<r.size;l++)o.push(Number(r.iget(l)));a=Array.from(r.shape)}let i=o.length,u=t.reduce((l,m)=>l*m,1),s=new Array(n);if(e==="C"){let l=1;for(let m=n-1;m>=0;m--)s[m]=l,l*=t[m]}else{let l=1;for(let m=0;m<n;m++)s[m]=l,l*=t[m]}let c=[];for(let l=0;l<n;l++){let m=new Int32Array(i);c.push(N.fromData(m,a.length?a:[1],"int32"))}for(let l=0;l<i;l++){let m=o[l];if(m<0||m>=u)throw new Error(`index ${m} is out of bounds for array with size ${u}`);if(e==="C")for(let f=0;f<n;f++){let p=Math.floor(m/s[f]);m=m%s[f],c[f].data[l]=p%t[f]}else for(let f=n-1;f>=0;f--){let p=Math.floor(m/s[f]);m=m%s[f],c[f].data[l]=p%t[f]}}return typeof r=="number"?c.map(l=>{let m=l.iget(0);return N.fromData(new Int32Array([Number(m)]),[],"int32")}):c}function H(r,t){if(!Jt(r)&&r!=="bool")throw new TypeError(`ufunc '${t}' not supported for the input types, and the inputs could not be safely coerced to any supported types`)}function hr(r,t){return r.isCContiguous&&t.isCContiguous&&r.shape.length===t.shape.length&&r.shape.every((e,n)=>e===t.shape[n])}function ao(r,t){return H(r.dtype,"bitwise_and"),typeof t=="number"?La(r,t):(H(t.dtype,"bitwise_and"),hr(r,t)?Ra(r,t):F(r,t,(e,n)=>e&n,"bitwise_and"))}function Ra(r,t){let e=k(r.dtype,t.dtype),n=N.zeros(Array.from(r.shape),e),o=r.size,a=r.data,i=t.data,u=n.data;if(I(e)){let s=u;if(!I(r.dtype)||!I(t.dtype))for(let l=0;l<o;l++){let m=typeof a[l]=="bigint"?a[l]:BigInt(Math.round(Number(a[l]))),f=typeof i[l]=="bigint"?i[l]:BigInt(Math.round(Number(i[l])));s[l]=m&f}else{let l=a,m=i;for(let f=0;f<o;f++)s[f]=l[f]&m[f]}}else for(let s=0;s<o;s++)u[s]=a[s]&i[s];return n}function La(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=N.zeros(n,e),u=i.data;if(I(e)){let s=o,c=u,l=BigInt(Math.round(t));for(let m=0;m<a;m++)c[m]=s[m]&l}else for(let s=0;s<a;s++)u[s]=o[s]&t;return i}function so(r,t){return H(r.dtype,"bitwise_or"),typeof t=="number"?Wa(r,t):(H(t.dtype,"bitwise_or"),hr(r,t)?Za(r,t):F(r,t,(e,n)=>e|n,"bitwise_or"))}function Za(r,t){let e=k(r.dtype,t.dtype),n=N.zeros(Array.from(r.shape),e),o=r.size,a=r.data,i=t.data,u=n.data;if(I(e)){let s=u;if(!I(r.dtype)||!I(t.dtype))for(let l=0;l<o;l++){let m=typeof a[l]=="bigint"?a[l]:BigInt(Math.round(Number(a[l]))),f=typeof i[l]=="bigint"?i[l]:BigInt(Math.round(Number(i[l])));s[l]=m|f}else{let l=a,m=i;for(let f=0;f<o;f++)s[f]=l[f]|m[f]}}else for(let s=0;s<o;s++)u[s]=a[s]|i[s];return n}function Wa(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=N.zeros(n,e),u=i.data;if(I(e)){let s=o,c=u,l=BigInt(Math.round(t));for(let m=0;m<a;m++)c[m]=s[m]|l}else for(let s=0;s<a;s++)u[s]=o[s]|t;return i}function io(r,t){return H(r.dtype,"bitwise_xor"),typeof t=="number"?Ha(r,t):(H(t.dtype,"bitwise_xor"),hr(r,t)?Ga(r,t):F(r,t,(e,n)=>e^n,"bitwise_xor"))}function Ga(r,t){let e=k(r.dtype,t.dtype),n=N.zeros(Array.from(r.shape),e),o=r.size,a=r.data,i=t.data,u=n.data;if(I(e)){let s=u;if(!I(r.dtype)||!I(t.dtype))for(let l=0;l<o;l++){let m=typeof a[l]=="bigint"?a[l]:BigInt(Math.round(Number(a[l]))),f=typeof i[l]=="bigint"?i[l]:BigInt(Math.round(Number(i[l])));s[l]=m^f}else{let l=a,m=i;for(let f=0;f<o;f++)s[f]=l[f]^m[f]}}else for(let s=0;s<o;s++)u[s]=a[s]^i[s];return n}function Ha(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=N.zeros(n,e),u=i.data;if(I(e)){let s=o,c=u,l=BigInt(Math.round(t));for(let m=0;m<a;m++)c[m]=s[m]^l}else for(let s=0;s<a;s++)u[s]=o[s]^t;return i}function Nt(r){H(r.dtype,"bitwise_not");let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=N.zeros(e,t),i=a.data;if(I(t)){let u=n,s=i;for(let c=0;c<o;c++)s[c]=~u[c]}else for(let u=0;u<o;u++)i[u]=~n[u];return a}function uo(r){return Nt(r)}function co(r,t){if(H(r.dtype,"left_shift"),typeof t=="number")return no(r,t);if(H(t.dtype,"left_shift"),t.size===1||t.ndim===1&&t.shape[0]===1){let e=I(t.dtype)?Number(t.data[0]):t.data[0];return no(r,e)}return hr(r,t)?Ya(r,t):F(r,t,(e,n)=>e<<n,"left_shift")}function Ya(r,t){let e=k(r.dtype,t.dtype),n=N.zeros(Array.from(r.shape),e),o=r.size,a=r.data,i=t.data,u=n.data;if(I(e)){let s=u;for(let c=0;c<o;c++){let l=typeof a[c]=="bigint"?a[c]:BigInt(Math.round(Number(a[c]))),m=typeof i[c]=="bigint"?i[c]:BigInt(Math.round(Number(i[c])));s[c]=l<<m}}else for(let s=0;s<o;s++)u[s]=a[s]<<i[s];return n}function no(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=N.zeros(n,e),u=i.data;if(I(e)){let s=o,c=u,l=BigInt(Math.round(t));for(let m=0;m<a;m++)c[m]=s[m]<<l}else for(let s=0;s<a;s++)u[s]=o[s]<<t;return i}function lo(r,t){if(H(r.dtype,"right_shift"),typeof t=="number")return oo(r,t);if(H(t.dtype,"right_shift"),t.size===1||t.ndim===1&&t.shape[0]===1){let e=I(t.dtype)?Number(t.data[0]):t.data[0];return oo(r,e)}return hr(r,t)?Ja(r,t):F(r,t,(e,n)=>e>>n,"right_shift")}function Ja(r,t){let e=k(r.dtype,t.dtype),n=N.zeros(Array.from(r.shape),e),o=r.size,a=r.data,i=t.data,u=n.data;if(I(e)){let s=u;for(let c=0;c<o;c++){let l=typeof a[c]=="bigint"?a[c]:BigInt(Math.round(Number(a[c]))),m=typeof i[c]=="bigint"?i[c]:BigInt(Math.round(Number(i[c])));s[c]=l>>m}}else for(let s=0;s<o;s++)u[s]=a[s]>>i[s];return n}function oo(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=N.zeros(n,e),u=i.data;if(I(e)){let s=o,c=u,l=BigInt(Math.round(t));for(let m=0;m<a;m++)c[m]=s[m]>>l}else for(let s=0;s<a;s++)u[s]=o[s]>>t;return i}function fo(r,t=-1,e="big"){let n=Array.from(r.shape),o=n.length;if(t<0&&(t=o+t),t<0||t>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let a=n[t],i=Math.ceil(a/8),u=[...n];u[t]=i;let s=N.zeros(u,"uint8"),c=s.data;if(o===1){for(let g=0;g<i;g++){let b=0;for(let A=0;A<8;A++){let h=g*8+A;if(h<a){let S=Number(r.data[h])!==0?1:0;e==="big"?b|=S<<7-A:b|=S<<A}}c[g]=b}return s}let l=n.slice(0,t),m=n.slice(t+1),f=l.reduce((g,b)=>g*b,1),p=m.reduce((g,b)=>g*b,1),y=Cr(n),d=Cr(u);for(let g=0;g<f;g++)for(let b=0;b<p;b++)for(let A=0;A<i;A++){let h=0;for(let w=0;w<8;w++){let _=A*8+w;if(_<a){let B=0,E=g;for(let M=0;M<t;M++){let V=M<t-1?l.slice(M+1).reduce((j,lr)=>j*lr,1):1,Z=Math.floor(E/V);E%=V,B+=Z*y[M]}B+=_*y[t];let v=b;for(let M=t+1;M<o;M++){let V=M<o-1?m.slice(M-t).reduce((j,lr)=>j*lr,1):1,Z=Math.floor(v/V);v%=V,B+=Z*y[M]}let $=Number(r.data[B])!==0?1:0;e==="big"?h|=$<<7-w:h|=$<<w}}let S=0,D=g;for(let w=0;w<t;w++){let _=w<t-1?l.slice(w+1).reduce((E,v)=>E*v,1):1,B=Math.floor(D/_);D%=_,S+=B*d[w]}S+=A*d[t];let x=b;for(let w=t+1;w<o;w++){let _=w<o-1?m.slice(w-t).reduce((E,v)=>E*v,1):1,B=Math.floor(x/_);x%=_,S+=B*d[w]}c[S]=h}return s}function mo(r,t=-1,e=-1,n="big"){if(r.dtype!=="uint8")throw new TypeError("Expected an input array of unsigned byte data type");let o=Array.from(r.shape),a=o.length;if(t<0&&(t=a+t),t<0||t>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let i=o[t],u=i*8;e>=0&&(u=e);let s=[...o];s[t]=u;let c=N.zeros(s,"uint8"),l=c.data;if(a===1){for(let b=0;b<i;b++){let A=Number(r.data[b]);for(let h=0;h<8;h++){let S=b*8+h;if(S>=u)break;n==="big"?l[S]=A>>7-h&1:l[S]=A>>h&1}}return c}let m=o.slice(0,t),f=o.slice(t+1),p=m.reduce((b,A)=>b*A,1),y=f.reduce((b,A)=>b*A,1),d=Cr(o),g=Cr(s);for(let b=0;b<p;b++)for(let A=0;A<y;A++)for(let h=0;h<i;h++){let S=0,D=b;for(let _=0;_<t;_++){let B=_<t-1?m.slice(_+1).reduce((v,$)=>v*$,1):1,E=Math.floor(D/B);D%=B,S+=E*d[_]}S+=h*d[t];let x=A;for(let _=t+1;_<a;_++){let B=_<a-1?f.slice(_-t).reduce((v,$)=>v*$,1):1,E=Math.floor(x/B);x%=B,S+=E*d[_]}let w=Number(r.data[S]);for(let _=0;_<8;_++){let B=h*8+_;if(B>=u)break;let E=0;D=b;for(let v=0;v<t;v++){let $=v<t-1?m.slice(v+1).reduce((V,Z)=>V*Z,1):1,M=Math.floor(D/$);D%=$,E+=M*g[v]}E+=B*g[t],x=A;for(let v=t+1;v<a;v++){let $=v<a-1?f.slice(v-t).reduce((V,Z)=>V*Z,1):1,M=Math.floor(x/$);x%=$,E+=M*g[v]}n==="big"?l[E]=w>>7-_&1:l[E]=w>>_&1}}return c}function Cr(r){let t=r.length,e=new Array(t),n=1;for(let o=t-1;o>=0;o--)e[o]=n,n*=r[o];return e}function Dt(r,t=-1){let e=r.shape,n=e.length,o=r.dtype,a=r.data;if(n===0)return r.copy();let i=t;if(i<0&&(i=n+i),i<0||i>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);let u=r.copy(),s=u.data,c=e[i],l=Array.from(e).filter((f,p)=>p!==i),m=l.length===0?1:l.reduce((f,p)=>f*p,1);if(I(o)){let f=a,p=s;for(let y=0;y<m;y++){let d=[];for(let g=0;g<c;g++){let b=U(y,i,g,e),A=O(b,e);d.push({value:f[A],idx:g})}d.sort((g,b)=>g.value<b.value?-1:g.value>b.value?1:0);for(let g=0;g<c;g++){let b=U(y,i,g,e),A=O(b,e);p[A]=d[g].value}}}else for(let f=0;f<m;f++){let p=[];for(let y=0;y<c;y++){let d=U(f,i,y,e),g=O(d,e);p.push(Number(a[g]))}p.sort((y,d)=>isNaN(y)&&isNaN(d)?0:isNaN(y)?1:isNaN(d)?-1:y-d);for(let y=0;y<c;y++){let d=U(f,i,y,e),g=O(d,e);s[g]=p[y]}}return u}function xt(r,t=-1){let e=r.shape,n=e.length,o=r.dtype,a=r.data;if(n===0)return N.zeros([0],"int32");let i=t;if(i<0&&(i=n+i),i<0||i>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);let u=N.zeros(Array.from(e),"int32"),s=u.data,c=e[i],l=Array.from(e).filter((f,p)=>p!==i),m=l.length===0?1:l.reduce((f,p)=>f*p,1);if(I(o)){let f=a;for(let p=0;p<m;p++){let y=[];for(let d=0;d<c;d++){let g=U(p,i,d,e),b=O(g,e);y.push({value:f[b],idx:d})}y.sort((d,g)=>d.value<g.value?-1:d.value>g.value?1:0);for(let d=0;d<c;d++){let g=U(p,i,d,e),b=O(g,e);s[b]=y[d].idx}}}else for(let f=0;f<m;f++){let p=[];for(let y=0;y<c;y++){let d=U(f,i,y,e),g=O(d,e);p.push({value:Number(a[g]),idx:y})}p.sort((y,d)=>isNaN(y.value)&&isNaN(d.value)?0:isNaN(y.value)?1:isNaN(d.value)?-1:y.value-d.value);for(let y=0;y<c;y++){let d=U(f,i,y,e),g=O(d,e);s[g]=p[y].idx}}return u}function po(r){if(r.length===0)return N.zeros([0],"int32");let e=r[0].size;for(let i of r){if(i.ndim!==1)throw new Error("keys must be 1D arrays");if(i.size!==e)throw new Error("all keys must have the same length")}let n=[];for(let i=0;i<e;i++)n.push(i);n.sort((i,u)=>{for(let s=r.length-1;s>=0;s--){let l=r[s].data,m=Number(l[i]),f=Number(l[u]);if(!(isNaN(m)&&isNaN(f))){if(isNaN(m))return 1;if(isNaN(f)||m<f)return-1;if(m>f)return 1}}return 0});let o=N.zeros([e],"int32"),a=o.data;for(let i=0;i<e;i++)a[i]=n[i];return o}function Xa(r,t){let e=0,n=r.length-1;for(;e<n;){let o=Math.floor((e+n)/2),a=r[e],i=r[o],u=r[n],s;a<=i&&i<=u||u<=i&&i<=a?s=o:i<=a&&a<=u||u<=a&&a<=i?s=e:s=n;let c=r[s];[r[s],r[n]]=[r[n],r[s]];let l=e;for(let m=e;m<n;m++){let f=r[m],p=isNaN(f),y=isNaN(c);!p&&(y||f<=c)&&([r[l],r[m]]=[r[m],r[l]],l++)}if([r[l],r[n]]=[r[n],r[l]],l===t)return;l<t?e=l+1:n=l-1}}function Ka(r,t){let e=0,n=r.length-1;for(;e<n;){let o=Math.floor((e+n)/2),a=r[e],i=r[o],u=r[n],s;a<=i&&i<=u||u<=i&&i<=a?s=o:i<=a&&a<=u||u<=a&&a<=i?s=e:s=n;let c=r[s];[r[s],r[n]]=[r[n],r[s]];let l=e;for(let m=e;m<n;m++)r[m]<=c&&([r[l],r[m]]=[r[m],r[l]],l++);if([r[l],r[n]]=[r[n],r[l]],l===t)return;l<t?e=l+1:n=l-1}}function rs(r,t){let e=0,n=r.length-1;for(;e<n;){let o=Math.floor((e+n)/2),a=r[e].value,i=r[o].value,u=r[n].value,s;a<=i&&i<=u||u<=i&&i<=a?s=o:i<=a&&a<=u||u<=a&&a<=i?s=e:s=n;let c=r[s].value;[r[s],r[n]]=[r[n],r[s]];let l=e;for(let m=e;m<n;m++){let f=r[m].value,p=isNaN(f),y=isNaN(c);!p&&(y||f<=c)&&([r[l],r[m]]=[r[m],r[l]],l++)}if([r[l],r[n]]=[r[n],r[l]],l===t)return;l<t?e=l+1:n=l-1}}function ts(r,t){let e=0,n=r.length-1;for(;e<n;){let o=Math.floor((e+n)/2),a=r[e].value,i=r[o].value,u=r[n].value,s;a<=i&&i<=u||u<=i&&i<=a?s=o:i<=a&&a<=u||u<=a&&a<=i?s=e:s=n;let c=r[s].value;[r[s],r[n]]=[r[n],r[s]];let l=e;for(let m=e;m<n;m++)r[m].value<=c&&([r[l],r[m]]=[r[m],r[l]],l++);if([r[l],r[n]]=[r[n],r[l]],l===t)return;l<t?e=l+1:n=l-1}}function wt(r,t,e=-1){let n=r.shape,o=n.length,a=r.dtype;if(o===0)return r.copy();let i=e;if(i<0&&(i=o+i),i<0||i>=o)throw new Error(`axis ${e} is out of bounds for array of dimension ${o}`);let u=n[i],s=t;if(s<0&&(s=u+s),s<0||s>=u)throw new Error(`kth(=${t}) out of bounds (${u})`);let c=r.copy(),l=c.data,m=Array.from(n).filter((p,y)=>y!==i),f=m.length===0?1:m.reduce((p,y)=>p*y,1);if(I(a)){let p=l;for(let y=0;y<f;y++){let d=[];for(let g=0;g<u;g++){let b=U(y,i,g,n),A=O(b,n);d.push(p[A])}Ka(d,s);for(let g=0;g<u;g++){let b=U(y,i,g,n),A=O(b,n);p[A]=d[g]}}}else for(let p=0;p<f;p++){let y=[];for(let d=0;d<u;d++){let g=U(p,i,d,n),b=O(g,n);y.push(Number(l[b]))}Xa(y,s);for(let d=0;d<u;d++){let g=U(p,i,d,n),b=O(g,n);l[b]=y[d]}}return c}function It(r,t,e=-1){let n=r.shape,o=n.length,a=r.dtype,i=r.data;if(o===0)return N.zeros([0],"int32");let u=e;if(u<0&&(u=o+u),u<0||u>=o)throw new Error(`axis ${e} is out of bounds for array of dimension ${o}`);let s=n[u],c=t;if(c<0&&(c=s+c),c<0||c>=s)throw new Error(`kth(=${t}) out of bounds (${s})`);let l=N.zeros(Array.from(n),"int32"),m=l.data,f=Array.from(n).filter((y,d)=>d!==u),p=f.length===0?1:f.reduce((y,d)=>y*d,1);if(I(a)){let y=i;for(let d=0;d<p;d++){let g=[];for(let b=0;b<s;b++){let A=U(d,u,b,n),h=O(A,n);g.push({value:y[h],idx:b})}ts(g,c);for(let b=0;b<s;b++){let A=U(d,u,b,n),h=O(A,n);m[h]=g[b].idx}}}else for(let y=0;y<p;y++){let d=[];for(let g=0;g<s;g++){let b=U(y,u,g,n),A=O(b,n);d.push({value:Number(i[A]),idx:g})}rs(d,c);for(let g=0;g<s;g++){let b=U(y,u,g,n),A=O(b,n);m[A]=d[g].idx}}return l}function yo(r){let t=r.dtype,e=r.size,n=r.data,o=[];for(let u=0;u<e;u++)o.push(Number(n[u]));o.sort((u,s)=>isNaN(u)&&isNaN(s)?0:isNaN(u)?1:isNaN(s)?-1:u-s);let a=N.zeros([e],t),i=a.data;for(let u=0;u<e;u++)i[u]=o[u];return a}function Vr(r){let t=r.shape,e=t.length,n=r.data,o=r.size,a=[];for(let l=0;l<e;l++)a.push([]);let i=[],u=1;for(let l=e-1;l>=0;l--)i.unshift(u),u*=t[l];for(let l=0;l<o;l++)if(n[l]){let m=l;for(let f=0;f<e;f++){let p=Math.floor(m/i[f]);m=m%i[f],a[f].push(p)}}let s=a[0]?.length??0,c=[];for(let l=0;l<e;l++){let m=N.zeros([s],"int32"),f=m.data;for(let p=0;p<s;p++)f[p]=a[l][p];c.push(m)}return c}function go(r){let t=r.data,e=r.size,n=[];for(let i=0;i<e;i++)t[i]&&n.push(i);let o=N.zeros([n.length],"int32"),a=o.data;for(let i=0;i<n.length;i++)a[i]=n[i];return o}function ho(r,t,e){if(t===void 0&&e===void 0)return Vr(r);if(t===void 0||e===void 0)throw new Error("either both or neither of x and y should be given");let n=r.shape,o=t.shape,a=e.shape,i=Math.max(n.length,o.length,a.length),u=B=>{let E=Array(i).fill(1);for(let v=0;v<B.length;v++)E[i-B.length+v]=B[v];return E},s=u(n),c=u(o),l=u(a),m=[];for(let B=0;B<i;B++){let E=[s[B],c[B],l[B]],v=Math.max(...E);for(let $ of E)if($!==1&&$!==v)throw new Error("operands could not be broadcast together");m.push(v)}let f=t.dtype,p=N.zeros(m,f),y=p.data,d=r.data,g=t.data,b=e.data,A=(B,E)=>{let v=[],$=1;for(let M=B.length-1;M>=0;M--)v.unshift($),$*=B[M];for(;v.length<E.length;)v.unshift(0);for(let M=0;M<E.length;M++)E[M]===1&&m[M]!==1&&(v[M]=0);return v},h=A(n,s),S=A(o,c),D=A(a,l),x=[],w=1;for(let B=m.length-1;B>=0;B--)x.unshift(w),w*=m[B];let _=m.reduce((B,E)=>B*E,1);for(let B=0;B<_;B++){let E=B,v=0,$=0,M=0;for(let V=0;V<i;V++){let Z=Math.floor(E/x[V]);E=E%x[V],v+=Z*h[V],$+=Z*S[V],M+=Z*D[V]}d[v]?y[B]=g[$]:y[B]=b[M]}return p}function zt(r,t,e="left"){if(r.ndim!==1)throw new Error("storage must be 1D");let n=r.data,o=r.size,a=t.data,i=t.size,u=N.zeros([i],"int32"),s=u.data;for(let c=0;c<i;c++){let l=Number(a[c]),m=0,f=o;if(e==="left")for(;m<f;){let p=Math.floor((m+f)/2);Number(n[p])<l?m=p+1:f=p}else for(;m<f;){let p=Math.floor((m+f)/2);Number(n[p])<=l?m=p+1:f=p}s[c]=m}return u}function Ao(r,t){let e=r.data,n=t.data,o=t.dtype,a=Math.min(r.size,t.size),i=0;for(let l=0;l<a;l++)e[l]&&i++;let u=N.zeros([i],o),s=u.data,c=0;if(I(o)){let l=n,m=s;for(let f=0;f<a;f++)e[f]&&(m[c++]=l[f])}else for(let l=0;l<a;l++)e[l]&&(s[c++]=n[l]);return u}function _t(r,t){let e=r.shape,n=e.length,o=r.data,a=r.size;if(t===void 0){let f=0;for(let p=0;p<a;p++)o[p]&&f++;return f}let i=t;if(i<0&&(i=n+i),i<0||i>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);let u=Array.from(e).filter((f,p)=>p!==i);if(u.length===0)return _t(r);let s=N.zeros(u,"int32"),c=s.data,l=e[i],m=u.reduce((f,p)=>f*p,1);for(let f=0;f<m;f++){let p=0;for(let y=0;y<l;y++){let d=U(f,i,y,e),g=O(d,e);o[g]&&p++}c[f]=p}return s}function bo(r){if(!isFinite(r))return r;let t=Math.floor(r),e=r-t;return Math.abs(e-.5)<1e-10?t%2===0?t:t+1:Math.round(r)}function Bt(r,t=0){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=e==="float32"?"float32":"float64",u=N.zeros(n,i),s=u.data,c=Math.pow(10,t);for(let l=0;l<a;l++){let m=Number(o[l]);s[l]=bo(m*c)/c}return u}function Et(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=t==="float32"?"float32":"float64",i=N.zeros(e,a),u=i.data;for(let s=0;s<o;s++)u[s]=Math.ceil(Number(n[s]));return i}function vt(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=t==="float32"?"float32":"float64",i=N.zeros(e,a),u=i.data;for(let s=0;s<o;s++)u[s]=Math.trunc(Number(n[s]));return i}function Ot(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=t==="float32"?"float32":"float64",i=N.zeros(e,a),u=i.data;for(let s=0;s<o;s++)u[s]=Math.floor(Number(n[s]));return i}function Ut(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=t==="float32"?"float32":"float64",i=N.zeros(e,a),u=i.data;for(let s=0;s<o;s++)u[s]=bo(Number(n[s]));return i}function Tt(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=t==="float32"?"float32":"float64",i=N.zeros(e,a),u=i.data;for(let s=0;s<o;s++)u[s]=Math.trunc(Number(n[s]));return i}function J(r,t=!1,e=!1,n=!1){let o=r.dtype,a=r.size,i=r.data,u=[];for(let h=0;h<a;h++)u.push({value:Number(i[h]),index:h});u.sort((h,S)=>isNaN(h.value)&&isNaN(S.value)?0:isNaN(h.value)?1:isNaN(S.value)?-1:h.value-S.value);let s=[],c=[],l=new Array(a),m=[],f,p=0;for(let h=0;h<u.length;h++){let{value:S,index:D}=u[h];f===void 0||isNaN(S)&&!isNaN(f)||!isNaN(S)&&isNaN(f)||!isNaN(S)&&!isNaN(f)&&S!==f?(f!==void 0&&m.push(p),s.push(S),c.push(D),p=1,f=S):p++}p>0&&m.push(p);let y=new Map,d=-1;for(let h=0;h<s.length;h++){let S=s[h];isNaN(S)?d=h:y.set(S,h)}for(let h=0;h<a;h++){let S=Number(i[h]);isNaN(S)?l[h]=d:l[h]=y.get(S)}let g=N.zeros([s.length],o),b=g.data;for(let h=0;h<s.length;h++)b[h]=s[h];if(!t&&!e&&!n)return g;let A={values:g};if(t){let h=N.zeros([c.length],"int32"),S=h.data;for(let D=0;D<c.length;D++)S[D]=c[D];A.indices=h}if(e){let h=N.zeros([l.length],"int32"),S=h.data;for(let D=0;D<l.length;D++)S[D]=l[D];A.inverse=h}if(n){let h=N.zeros([m.length],"int32"),S=h.data;for(let D=0;D<m.length;D++)S[D]=m[D];A.counts=h}return A}function So(r,t){return $t(r,t)}function No(r,t){let e=r.dtype,n=J(r),o=J(t),a=new Set;for(let c=0;c<o.size;c++)a.add(Number(o.data[c]));let i=[];for(let c=0;c<n.size;c++){let l=Number(n.data[c]);a.has(l)&&i.push(l)}i.sort((c,l)=>c-l);let u=N.zeros([i.length],e),s=u.data;for(let c=0;c<i.length;c++)s[c]=i[c];return u}function $t(r,t){let e=Array.from(r.shape),n=r.size,o=new Set;for(let s=0;s<t.size;s++)o.add(Number(t.data[s]));let a=N.zeros(e,"bool"),i=a.data,u=r.data;for(let s=0;s<n;s++){let c=Number(u[s]);i[s]=o.has(c)?1:0}return a}function Do(r,t){let e=r.dtype,n=J(r),o=new Set;for(let s=0;s<t.size;s++)o.add(Number(t.data[s]));let a=[];for(let s=0;s<n.size;s++){let c=Number(n.data[s]);o.has(c)||a.push(c)}let i=N.zeros([a.length],e),u=i.data;for(let s=0;s<a.length;s++)u[s]=a[s];return i}function xo(r,t){let e=r.dtype,n=J(r),o=J(t),a=new Set,i=new Set;for(let l=0;l<n.size;l++)a.add(Number(n.data[l]));for(let l=0;l<o.size;l++)i.add(Number(o.data[l]));let u=[];for(let l of a)i.has(l)||u.push(l);for(let l of i)a.has(l)||u.push(l);u.sort((l,m)=>l-m);let s=N.zeros([u.length],e),c=s.data;for(let l=0;l<u.length;l++)c[l]=u[l];return s}function wo(r,t){let e=r.dtype,n=J(r),o=J(t),a=new Set;for(let c=0;c<n.size;c++)a.add(Number(n.data[c]));for(let c=0;c<o.size;c++)a.add(Number(o.data[c]));let i=Array.from(a);i.sort((c,l)=>c-l);let u=N.zeros([i.length],e),s=u.data;for(let c=0;c<i.length;c++)s[c]=i[c];return u}function Mt(r,t=1,e=-1){if(t<0)throw new Error(`order must be non-negative but got ${t}`);if(t===0)return r.copy();let n=Array.from(r.shape),o=n.length,a=e<0?o+e:e;if(a<0||a>=o)throw new Error(`axis ${e} is out of bounds for array of dimension ${o}`);if(n[a]<t+1)throw new Error(`diff requires at least ${t+1} elements along axis ${e}, but got ${n[a]}`);let i=r;for(let u=0;u<t;u++)i=as(i,a);return i}function as(r,t){let e=Array.from(r.shape),n=e.length,o=e[t],a=[...e];a[t]=o-1;let i=r.dtype,u=I(i)?"float64":i,s=N.zeros(a,u),c=s.data,l=r.strides,m=s.size;for(let f=0;f<m;f++){let p=f,y=new Array(n);for(let D=n-1;D>=0;D--)y[D]=p%a[D],p=Math.floor(p/a[D]);let d=[...y],g=[...y];g[t]=d[t]+1;let b=0,A=0;for(let D=0;D<n;D++)b+=d[D]*l[D],A+=g[D]*l[D];let h=(I(i),Number(r.data[b])),S=(I(i),Number(r.data[A]));c[f]=S-h}return s}function Io(r,t=null,e=null){let n=r.size,o=r.dtype,a=I(o)?"float64":o,i=Math.max(0,n-1),u=e?e.length:0,s=t?t.length:0,c=u+i+s,l=N.zeros([c],a),m=l.data,f=0;if(e)for(let p of e)m[f++]=p;for(let p=0;p<i;p++){let y=(I(o),Number(r.iget(p))),d=(I(o),Number(r.iget(p+1)));m[f++]=d-y}if(t)for(let p of t)m[f++]=p;return l}function zo(r,t=1,e=null){let o=Array.from(r.shape).length,a;if(e===null)a=Array.from({length:o},(s,c)=>c);else if(typeof e=="number"){let s=e<0?o+e:e;if(s<0||s>=o)throw new Error(`axis ${e} is out of bounds for array of dimension ${o}`);a=[s]}else a=e.map(s=>{let c=s<0?o+s:s;if(c<0||c>=o)throw new Error(`axis ${s} is out of bounds for array of dimension ${o}`);return c});let i;if(typeof t=="number")i=a.map(()=>t);else{if(t.length!==a.length)throw new Error("Number of spacings must match number of axes");i=t}let u=[];for(let s=0;s<a.length;s++)u.push(ss(r,a[s],i[s]));return u.length===1?u[0]:u}function ss(r,t,e){let n=Array.from(r.shape),o=n.length,a=n[t];if(a<2)throw new Error(`Shape of array along axis ${t} must be at least 2, but got ${a}`);let i=r.dtype,u=I(i)?"float64":i==="float32"?"float32":"float64",s=N.zeros(n,u),c=s.data,l=r.strides,m=e,f=2*m,p=r.size;for(let y=0;y<p;y++){let d=y,g=new Array(o);for(let h=o-1;h>=0;h--)g[h]=d%n[h],d=Math.floor(d/n[h]);let b=g[t],A;if(b===0){let h=[...g];h[t]=1;let S=0;for(let w=0;w<o;w++)S+=h[w]*l[w];let D=(I(i),Number(r.data[y]));A=((I(i),Number(r.data[S]))-D)/m}else if(b===a-1){let h=[...g];h[t]=a-2;let S=0;for(let w=0;w<o;w++)S+=h[w]*l[w];let D=(I(i),Number(r.data[y])),x=(I(i),Number(r.data[S]));A=(D-x)/m}else{let h=[...g],S=[...g];h[t]=b+1,S[t]=b-1;let D=0,x=0;for(let B=0;B<o;B++)D+=h[B]*l[B],x+=S[B]*l[B];let w=(I(i),Number(r.data[D])),_=(I(i),Number(r.data[x]));A=(w-_)/f}c[y]=A}return s}function _o(r,t,e=-1,n=-1,o=-1){let a=Array.from(r.shape),i=Array.from(t.shape),u=a.length,s=i.length,c=e<0?u+e:e,l=n<0?s+n:n;if(c<0||c>=u)throw new Error(`axisa ${e} is out of bounds for array of dimension ${u}`);if(l<0||l>=s)throw new Error(`axisb ${n} is out of bounds for array of dimension ${s}`);let m=a[c],f=i[l];if(m!==2&&m!==3)throw new Error(`incompatible dimensions for cross product (dimension must be 2 or 3, got ${m})`);if(f!==2&&f!==3)throw new Error(`incompatible dimensions for cross product (dimension must be 2 or 3, got ${f})`);let p=k(r.dtype,t.dtype);if(u===1&&s===1&&m===3&&f===3){let y=N.zeros([3],p),d=y.data,g=Number(r.iget(0)),b=Number(r.iget(1)),A=Number(r.iget(2)),h=Number(t.iget(0)),S=Number(t.iget(1)),D=Number(t.iget(2));return d[0]=b*D-A*S,d[1]=A*h-g*D,d[2]=g*S-b*h,y}if(u===1&&s===1&&m===2&&f===2){let y=N.zeros([],p),d=Number(r.iget(0)),g=Number(r.iget(1)),b=Number(t.iget(0)),A=Number(t.iget(1));return y.data[0]=d*A-g*b,y}if(u===1&&s===1){if(m===2&&f===3){let y=N.zeros([3],p),d=y.data,g=Number(r.iget(0)),b=Number(r.iget(1)),A=Number(t.iget(0)),h=Number(t.iget(1)),S=Number(t.iget(2));return d[0]=b*S,d[1]=-g*S,d[2]=g*h-b*A,y}else if(m===3&&f===2){let y=N.zeros([3],p),d=y.data,g=Number(r.iget(0)),b=Number(r.iget(1)),A=Number(r.iget(2)),h=Number(t.iget(0)),S=Number(t.iget(1));return d[0]=-A*S,d[1]=A*h,d[2]=g*S-b*h,y}}if(u===2&&s===2&&c===1&&l===1){let y=a[0];if(i[0]!==y)throw new Error(`Shape mismatch: a has ${y} vectors, b has ${i[0]} vectors`);if(m===3&&f===3){let d=N.zeros([y,3],p),g=d.data;for(let b=0;b<y;b++){let A=Number(r.iget(b*3)),h=Number(r.iget(b*3+1)),S=Number(r.iget(b*3+2)),D=Number(t.iget(b*3)),x=Number(t.iget(b*3+1)),w=Number(t.iget(b*3+2));g[b*3]=h*w-S*x,g[b*3+1]=S*D-A*w,g[b*3+2]=A*x-h*D}return d}if(m===2&&f===2){let d=N.zeros([y],p),g=d.data;for(let b=0;b<y;b++){let A=Number(r.iget(b*2)),h=Number(r.iget(b*2+1)),S=Number(t.iget(b*2)),D=Number(t.iget(b*2+1));g[b]=A*D-h*S}return d}}throw new Error(`cross product not implemented for arrays with shapes ${JSON.stringify(a)} and ${JSON.stringify(i)}`)}var z=class r{constructor(t,e){this._storage=t,this._base=e}get storage(){return this._storage}static _fromStorage(t,e){return new r(t,e)}get shape(){return this._storage.shape}get ndim(){return this._storage.ndim}get size(){return this._storage.size}get dtype(){return this._storage.dtype}get data(){return this._storage.data}get strides(){return this._storage.strides}get flags(){return{C_CONTIGUOUS:this._storage.isCContiguous,F_CONTIGUOUS:this._storage.isFContiguous,OWNDATA:this._base===void 0}}get base(){return this._base??null}get(t){if(t.length!==this.ndim)throw new Error(`Index has ${t.length} dimensions, but array has ${this.ndim} dimensions`);let e=t.map((n,o)=>{let a=n;if(a<0&&(a=this.shape[o]+a),a<0||a>=this.shape[o])throw new Error(`Index ${n} is out of bounds for axis ${o} with size ${this.shape[o]}`);return a});return this._storage.get(...e)}set(t,e){if(t.length!==this.ndim)throw new Error(`Index has ${t.length} dimensions, but array has ${this.ndim} dimensions`);let n=t.map((i,u)=>{let s=i;if(s<0&&(s=this.shape[u]+s),s<0||s>=this.shape[u])throw new Error(`Index ${i} is out of bounds for axis ${u} with size ${this.shape[u]}`);return s}),o=this.dtype,a;I(o)?a=typeof e=="bigint"?e:BigInt(Math.round(e)):o==="bool"?a=e?1:0:a=Number(e),this._storage.set(n,a)}copy(){return new r(this._storage.copy())}astype(t,e=!0){let n=this.dtype;if(n===t&&!e)return this;if(n===t&&e)return this.copy();let o=Array.from(this.shape),a=this.size,i=T(t);if(!i)throw new Error(`Cannot convert to dtype ${t}`);let u=new i(a),s=this.data;if(I(n)&&!I(t)){let l=s;if(t==="bool")for(let m=0;m<a;m++)u[m]=l[m]!==BigInt(0)?1:0;else for(let m=0;m<a;m++)u[m]=Number(l[m])}else if(!I(n)&&I(t)){let l=s;for(let m=0;m<a;m++)u[m]=BigInt(Math.round(Number(l[m])))}else if(t==="bool"){let l=s;for(let m=0;m<a;m++)u[m]=l[m]!==0?1:0}else if(n==="bool"&&!I(t)){let l=s;for(let m=0;m<a;m++)u[m]=l[m]}else if(!I(n)&&!I(t)){let l=s;for(let m=0;m<a;m++)u[m]=l[m]}else{let l=s;for(let m=0;m<a;m++)u[m]=l[m]}let c=N.fromData(u,o,t);return new r(c)}add(t){let e=typeof t=="number"?t:t._storage,n=Qt(this._storage,e);return r._fromStorage(n)}subtract(t){let e=typeof t=="number"?t:t._storage,n=Xt(this._storage,e);return r._fromStorage(n)}multiply(t){let e=typeof t=="number"?t:t._storage,n=Kt(this._storage,e);return r._fromStorage(n)}divide(t){let e=typeof t=="number"?t:t._storage,n=re(this._storage,e);return r._fromStorage(n)}mod(t){let e=typeof t=="number"?t:t._storage,n=Dr(this._storage,e);return r._fromStorage(n)}floor_divide(t){let e=typeof t=="number"?t:t._storage,n=Lr(this._storage,e);return r._fromStorage(n)}positive(){let t=oe(this._storage);return r._fromStorage(t)}reciprocal(){let t=ae(this._storage);return r._fromStorage(t)}sqrt(){let t=fn(this._storage);return r._fromStorage(t)}power(t){let e=typeof t=="number"?t:t._storage,n=mn(this._storage,e);return r._fromStorage(n)}exp(){let t=pn(this._storage);return r._fromStorage(t)}exp2(){let t=yn(this._storage);return r._fromStorage(t)}expm1(){let t=dn(this._storage);return r._fromStorage(t)}log(){let t=gn(this._storage);return r._fromStorage(t)}log2(){let t=hn(this._storage);return r._fromStorage(t)}log10(){let t=An(this._storage);return r._fromStorage(t)}log1p(){let t=bn(this._storage);return r._fromStorage(t)}logaddexp(t){let e=typeof t=="number"?t:t._storage,n=Sn(this._storage,e);return r._fromStorage(n)}logaddexp2(t){let e=typeof t=="number"?t:t._storage,n=Nn(this._storage,e);return r._fromStorage(n)}absolute(){let t=te(this._storage);return r._fromStorage(t)}negative(){let t=ee(this._storage);return r._fromStorage(t)}sign(){let t=ne(this._storage);return r._fromStorage(t)}around(t=0){let e=Bt(this._storage,t);return r._fromStorage(e)}round(t=0){return this.around(t)}ceil(){let t=Et(this._storage);return r._fromStorage(t)}fix(){let t=vt(this._storage);return r._fromStorage(t)}floor(){let t=Ot(this._storage);return r._fromStorage(t)}rint(){let t=Ut(this._storage);return r._fromStorage(t)}trunc(){let t=Tt(this._storage);return r._fromStorage(t)}sin(){let t=Dn(this._storage);return r._fromStorage(t)}cos(){let t=xn(this._storage);return r._fromStorage(t)}tan(){let t=wn(this._storage);return r._fromStorage(t)}arcsin(){let t=In(this._storage);return r._fromStorage(t)}arccos(){let t=zn(this._storage);return r._fromStorage(t)}arctan(){let t=_n(this._storage);return r._fromStorage(t)}arctan2(t){let e=typeof t=="number"?t:t._storage,n=Bn(this._storage,e);return r._fromStorage(n)}hypot(t){let e=typeof t=="number"?t:t._storage,n=En(this._storage,e);return r._fromStorage(n)}degrees(){let t=vn(this._storage);return r._fromStorage(t)}radians(){let t=On(this._storage);return r._fromStorage(t)}sinh(){let t=Un(this._storage);return r._fromStorage(t)}cosh(){let t=Tn(this._storage);return r._fromStorage(t)}tanh(){let t=$n(this._storage);return r._fromStorage(t)}arcsinh(){let t=Mn(this._storage);return r._fromStorage(t)}arccosh(){let t=kn(this._storage);return r._fromStorage(t)}arctanh(){let t=Cn(this._storage);return r._fromStorage(t)}greater(t){let e=typeof t=="number"?t:t._storage,n=me(this._storage,e);return r._fromStorage(n)}greater_equal(t){let e=typeof t=="number"?t:t._storage,n=pe(this._storage,e);return r._fromStorage(n)}less(t){let e=typeof t=="number"?t:t._storage,n=ye(this._storage,e);return r._fromStorage(n)}less_equal(t){let e=typeof t=="number"?t:t._storage,n=de(this._storage,e);return r._fromStorage(n)}equal(t){let e=typeof t=="number"?t:t._storage,n=ge(this._storage,e);return r._fromStorage(n)}not_equal(t){let e=typeof t=="number"?t:t._storage,n=he(this._storage,e);return r._fromStorage(n)}isclose(t,e=1e-5,n=1e-8){let o=typeof t=="number"?t:t._storage,a=Wr(this._storage,o,e,n);return r._fromStorage(a)}allclose(t,e=1e-5,n=1e-8){let o=typeof t=="number"?t:t._storage;return Ae(this._storage,o,e,n)}bitwise_and(t){let e=typeof t=="number"?t:t._storage,n=ao(this._storage,e);return r._fromStorage(n)}bitwise_or(t){let e=typeof t=="number"?t:t._storage,n=so(this._storage,e);return r._fromStorage(n)}bitwise_xor(t){let e=typeof t=="number"?t:t._storage,n=io(this._storage,e);return r._fromStorage(n)}bitwise_not(){let t=Nt(this._storage);return r._fromStorage(t)}invert(){let t=uo(this._storage);return r._fromStorage(t)}left_shift(t){let e=typeof t=="number"?t:t._storage,n=co(this._storage,e);return r._fromStorage(n)}right_shift(t){let e=typeof t=="number"?t:t._storage,n=lo(this._storage,e);return r._fromStorage(n)}sum(t,e=!1){let n=mr(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}mean(t,e=!1){let n=xr(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}max(t,e=!1){let n=wr(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}min(t,e=!1){let n=Ir(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}prod(t,e=!1){let n=Gr(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}argmin(t){let e=Hr(this._storage,t);return typeof e=="number"?e:r._fromStorage(e)}argmax(t){let e=Yr(this._storage,t);return typeof e=="number"?e:r._fromStorage(e)}var(t,e=0,n=!1){let o=Jr(this._storage,t,e,n);return typeof o=="number"?o:r._fromStorage(o)}std(t,e=0,n=!1){let o=Se(this._storage,t,e,n);return typeof o=="number"?o:r._fromStorage(o)}all(t,e=!1){let n=Qr(this._storage,t,e);return typeof n=="boolean"?n:r._fromStorage(n)}any(t,e=!1){let n=Xr(this._storage,t,e);return typeof n=="boolean"?n:r._fromStorage(n)}cumsum(t){return r._fromStorage(Kr(this._storage,t))}cumprod(t){return r._fromStorage(rt(this._storage,t))}ptp(t,e=!1){let n=tt(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}median(t,e=!1){let n=et(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}percentile(t,e,n=!1){let o=nt(this._storage,t,e,n);return typeof o=="number"?o:r._fromStorage(o)}quantile(t,e,n=!1){let o=ar(this._storage,t,e,n);return typeof o=="number"?o:r._fromStorage(o)}average(t,e){let n=zr(this._storage,e,t?.storage);return typeof n=="number"?n:r._fromStorage(n)}nansum(t,e=!1){let n=_r(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}nanprod(t,e=!1){let n=Br(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}nanmean(t,e=!1){let n=Er(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}nanvar(t,e=0,n=!1){let o=pr(this._storage,t,e,n);return typeof o=="number"?o:r._fromStorage(o)}nanstd(t,e=0,n=!1){let o=ot(this._storage,t,e,n);return typeof o=="number"?o:r._fromStorage(o)}nanmin(t,e=!1){let n=vr(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}nanmax(t,e=!1){let n=Or(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}nanargmin(t){let e=Ur(this._storage,t);return typeof e=="number"?e:r._fromStorage(e)}nanargmax(t){let e=Tr(this._storage,t);return typeof e=="number"?e:r._fromStorage(e)}nancumsum(t){return r._fromStorage(at(this._storage,t))}nancumprod(t){return r._fromStorage(st(this._storage,t))}nanmedian(t,e=!1){let n=$r(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}sort(t=-1){return r._fromStorage(Dt(this._storage,t))}argsort(t=-1){return r._fromStorage(xt(this._storage,t))}partition(t,e=-1){return r._fromStorage(wt(this._storage,t,e))}argpartition(t,e=-1){return r._fromStorage(It(this._storage,t,e))}nonzero(){return Vr(this._storage).map(e=>r._fromStorage(e))}searchsorted(t,e="left"){return r._fromStorage(zt(this._storage,t._storage,e))}diff(t=1,e=-1){return r._fromStorage(Mt(this._storage,t,e))}reshape(...t){let e=t.length===1&&Array.isArray(t[0])?t[0]:t,n=P(this._storage,e),a=n.data===this.data?this._base??this:void 0;return r._fromStorage(n,a)}flatten(){let t=Mr(this._storage);return r._fromStorage(t)}ravel(){let t=sr(this._storage),n=t.data===this.data?this._base??this:void 0;return r._fromStorage(t,n)}transpose(t){let e=dr(this._storage,t),n=this._base??this;return r._fromStorage(e,n)}squeeze(t){let e=Ne(this._storage,t),n=this._base??this;return r._fromStorage(e,n)}expand_dims(t){let e=yr(this._storage,t),n=this._base??this;return r._fromStorage(e,n)}swapaxes(t,e){let n=De(this._storage,t,e),o=this._base??this;return r._fromStorage(n,o)}moveaxis(t,e){let n=it(this._storage,t,e),o=this._base??this;return r._fromStorage(n,o)}repeat(t,e){let n=Oe(this._storage,t,e);return r._fromStorage(n)}take(t,e){let n=qn(this._storage,t,e);return r._fromStorage(n)}put(t,e){let n=e instanceof r?e._storage:e;Fn(this._storage,t,n)}matmul(t){let e=G(this._storage,t._storage);return r._fromStorage(e)}dot(t){let e=lt(this._storage,t._storage);return typeof e=="number"||typeof e=="bigint"?e:r._fromStorage(e)}trace(){return Ze(this._storage)}inner(t){let e=We(this._storage,t._storage);return typeof e=="number"||typeof e=="bigint"?e:r._fromStorage(e)}outer(t){let e=ft(this._storage,t._storage);return r._fromStorage(e)}tensordot(t,e=2){let n=Ge(this._storage,t._storage,e);return typeof n=="number"||typeof n=="bigint"?n:r._fromStorage(n)}cbrt(){let t=se(this._storage);return r._fromStorage(t)}fabs(){let t=ie(this._storage);return r._fromStorage(t)}divmod(t){let e=typeof t=="number"?t:t._storage,[n,o]=ue(this._storage,e);return[r._fromStorage(n),r._fromStorage(o)]}square(){let t=ce(this._storage);return r._fromStorage(t)}remainder(t){let e=typeof t=="number"?t:t._storage,n=le(this._storage,e);return r._fromStorage(n)}heaviside(t){let e=typeof t=="number"?t:t._storage,n=fe(this._storage,e);return r._fromStorage(n)}slice(...t){if(t.length===0)return this;if(t.length>this.ndim)throw new Error(`Too many indices for array: array is ${this.ndim}-dimensional, but ${t.length} were indexed`);let e=t.map((s,c)=>{let l=Wt(s);return Gt(l,this.shape[c])});for(;e.length<this.ndim;)e.push({start:0,stop:this.shape[e.length],step:1,isIndex:!1});let n=[],o=[],a=this._storage.offset;for(let s=0;s<e.length;s++){let c=e[s],l=this._storage.strides[s];if(a+=c.start*l,!c.isIndex){let m;c.step>0?m=Math.max(0,Math.ceil((c.stop-c.start)/c.step)):m=Math.max(0,Math.ceil((c.start-c.stop)/Math.abs(c.step))),n.push(m),o.push(l*c.step)}}let i=N.fromData(this._storage.data,n,this._storage.dtype,o,a),u=this._base??this;return new r(i,u)}row(t){if(this.ndim<2)throw new Error("row() requires at least 2 dimensions");return this.slice(String(t),":")}col(t){if(this.ndim<2)throw new Error("col() requires at least 2 dimensions");return this.slice(":",String(t))}rows(t,e){if(this.ndim<2)throw new Error("rows() requires at least 2 dimensions");return this.slice(`${t}:${e}`,":")}cols(t,e){if(this.ndim<2)throw new Error("cols() requires at least 2 dimensions");return this.slice(":",`${t}:${e}`)}toString(){return`NDArray(shape=${JSON.stringify(this.shape)}, dtype=${this.dtype})`}toArray(){if(this.ndim===0)return this._storage.iget(0);let t=this.shape,e=t.length,n=(o,a)=>{if(a===e)return this._storage.get(...o);let i=[];for(let u=0;u<t[a];u++)o[a]=u,i.push(n(o,a+1));return i};return n(new Array(e),0)}};function Q(r,t=q){let e=N.zeros(r,t);return new z(e)}function Bo(r,t=q){let e=N.ones(r,t);return new z(e)}function us(r){let t=[],e=r;for(;Array.isArray(e);)t.push(e.length),e=e[0];return t}function Eo(r){return typeof r=="bigint"?!0:Array.isArray(r)?r.some(t=>Eo(t)):!1}function cs(r){let t=[];function e(n){Array.isArray(n)?n.forEach(o=>e(o)):t.push(n)}return e(r),t}function L(r,t){if(r instanceof z)return!t||r.dtype===t?r.copy():r.astype(t);let e=Eo(r),n=us(r),o=n.reduce((l,m)=>l*m,1),a=t;a||(e?a="int64":a=q);let i=T(a);if(!i)throw new Error(`Cannot create array with dtype ${a}`);let u=new i(o),s=cs(r);if(I(a)){let l=u;for(let m=0;m<o;m++){let f=s[m];l[m]=typeof f=="bigint"?f:BigInt(Math.round(Number(f)))}}else if(a==="bool"){let l=u;for(let m=0;m<o;m++)l[m]=s[m]?1:0}else{let l=u;for(let m=0;m<o;m++){let f=s[m];l[m]=Number(f)}}let c=N.fromData(u,n,a);return new z(c)}function ls(r,t,e=1,n=q){let o=r,a=t;if(t===void 0&&(o=0,a=r),a===void 0)throw new Error("stop is required");let i=Math.max(0,Math.ceil((a-o)/e)),u=T(n);if(!u)throw new Error(`Cannot create arange array with dtype ${n}`);let s=new u(i);if(I(n))for(let l=0;l<i;l++)s[l]=BigInt(Math.round(o+l*e));else if(n==="bool")for(let l=0;l<i;l++)s[l]=o+l*e!==0?1:0;else for(let l=0;l<i;l++)s[l]=o+l*e;let c=N.fromData(s,[i],n);return new z(c)}function fs(r,t,e=50,n=q){if(e<0)throw new Error("num must be non-negative");if(e===0)return L([],n);if(e===1)return L([r],n);let o=T(n);if(!o)throw new Error(`Cannot create linspace array with dtype ${n}`);let a=new o(e),i=(t-r)/(e-1);if(I(n))for(let s=0;s<e;s++)a[s]=BigInt(Math.round(r+s*i));else if(n==="bool")for(let s=0;s<e;s++)a[s]=r+s*i!==0?1:0;else for(let s=0;s<e;s++)a[s]=r+s*i;let u=N.fromData(a,[e],n);return new z(u)}function ms(r,t,e=50,n=10,o=q){if(e<0)throw new Error("num must be non-negative");if(e===0)return L([],o);if(e===1)return L([Math.pow(n,r)],o);let a=T(o);if(!a)throw new Error(`Cannot create logspace array with dtype ${o}`);let i=new a(e),u=(t-r)/(e-1);if(I(o))for(let c=0;c<e;c++){let l=r+c*u;i[c]=BigInt(Math.round(Math.pow(n,l)))}else if(o==="bool")for(let c=0;c<e;c++){let l=r+c*u;i[c]=Math.pow(n,l)!==0?1:0}else for(let c=0;c<e;c++){let l=r+c*u;i[c]=Math.pow(n,l)}let s=N.fromData(i,[e],o);return new z(s)}function ps(r,t,e=50,n=q){if(e<0)throw new Error("num must be non-negative");if(r===0||t===0)throw new Error("Geometric sequence cannot include zero");if(e===0)return L([],n);if(e===1)return L([r],n);let o=Math.sign(r),a=Math.sign(t);if(o!==a)throw new Error("Geometric sequence cannot contain both positive and negative values");let i=T(n);if(!i)throw new Error(`Cannot create geomspace array with dtype ${n}`);let u=new i(e),s=Math.log(Math.abs(r)),l=(Math.log(Math.abs(t))-s)/(e-1);if(I(n))for(let f=0;f<e;f++){let p=o*Math.exp(s+f*l);u[f]=BigInt(Math.round(p))}else if(n==="bool")for(let f=0;f<e;f++){let p=o*Math.exp(s+f*l);u[f]=p!==0?1:0}else for(let f=0;f<e;f++){let p=o*Math.exp(s+f*l);u[f]=p}let m=N.fromData(u,[e],n);return new z(m)}function vo(r,t,e=0,n=q){let o=t??r,a=Q([r,o],n),i=a.data;if(I(n)){let u=i;for(let s=0;s<r;s++){let c=s+e;c>=0&&c<o&&(u[s*o+c]=BigInt(1))}}else{let u=i;for(let s=0;s<r;s++){let c=s+e;c>=0&&c<o&&(u[s*o+c]=1)}}return a}function Oo(r,t=q){return Q(r,t)}function Uo(r,t,e){let n=e;n||(typeof t=="bigint"?n="int64":typeof t=="boolean"?n="bool":Number.isInteger(t)?n="int32":n=q);let o=T(n);if(!o)throw new Error(`Cannot create full array with dtype ${n}`);let a=r.reduce((s,c)=>s*c,1),i=new o(a);if(I(n)){let s=typeof t=="bigint"?t:BigInt(Math.round(Number(t)));i.fill(s)}else n==="bool"?i.fill(t?1:0):i.fill(Number(t));let u=N.fromData(i,r,n);return new z(u)}function ys(r,t=q){return vo(r,r,0,t)}function qr(r,t){return r instanceof z?!t||r.dtype===t?r:r.astype(t):L(r,t)}function ds(r){return r.copy()}function gs(r,t){return Q(Array.from(r.shape),t??r.dtype)}function hs(r,t){return Bo(Array.from(r.shape),t??r.dtype)}function As(r,t){return Oo(Array.from(r.shape),t??r.dtype)}function bs(r,t,e){return Uo(Array.from(r.shape),t,e??r.dtype)}function Ss(r,t){return qr(r,t)}function Ns(r,t){let e=qr(r,t);return e.flags.C_CONTIGUOUS?e:e.copy()}function Ds(r,t){return qr(r,t).copy()}function To(r,t=0){if(r.ndim===1){let e=r.size,n=e+Math.abs(t),o=Q([n,n],r.dtype);for(let a=0;a<e;a++){let i=t>=0?a:a-t,u=t>=0?a+t:a;o.set([i,u],r.get([a]))}return o}else if(r.ndim===2){let[e,n]=r.shape,o,a,i;if(t>=0?(o=0,a=t,i=Math.min(e,n-t)):(o=-t,a=0,i=Math.min(e+t,n)),i<=0)return Q([0],r.dtype);let u=T(r.dtype),s=new u(i);for(let l=0;l<i;l++){let m=r.get([o+l,a+l]);I(r.dtype)?s[l]=typeof m=="bigint"?m:BigInt(m):s[l]=m}let c=N.fromData(s,[i],r.dtype);return new z(c)}else throw new Error("Input must be 1-D or 2-D")}function xs(r,t=0){let e=r.flatten();return To(e,t)}function ws(r,t,e=q){let n=t.reduce((c,l)=>c*l,1),o=T(e);if(!o)throw new Error(`Cannot create array with dtype ${e}`);let a=new o(n),i=t.length,u=new Array(i).fill(0);for(let c=0;c<n;c++){let l=r(...u);I(e)?a[c]=typeof l=="bigint"?l:BigInt(Number(l)):e==="bool"?a[c]=l?1:0:a[c]=Number(l);for(let m=i-1;m>=0&&(u[m]++,!(u[m]<t[m]));m--)u[m]=0}let s=N.fromData(a,t,e);return new z(s)}function Is(...r){let t=[],e="xy";for(let u of r)u instanceof z?t.push(u):typeof u=="object"&&"indexing"in u&&(e=u.indexing||"xy");if(t.length===0)return[];if(t.length===1)return[t[0].copy()];let n=t.map(u=>u.size);e==="xy"&&t.length>=2&&(t=[t[1],t[0],...t.slice(2)],[n[0],n[1]]=[n[1],n[0]]);let o=n,a=o.length,i=[];for(let u=0;u<t.length;u++){let s=t[u],c=s.size,l=new Array(a).fill(1);l[u]=c;let m=s.reshape(...l),f=ht(m.storage,o),p=z._fromStorage(f.copy());i.push(p)}return e==="xy"&&i.length>=2&&([i[0],i[1]]=[i[1],i[0]]),i}function zs(r,t,e=0,n=q){let o=t??r,a=Q([r,o],n);for(let i=0;i<r;i++)for(let u=0;u<=i+e&&u<o;u++)u>=0&&a.set([i,u],1);return a}function _s(r,t=0){if(r.ndim<2)throw new Error("Input must have at least 2 dimensions");let e=r.copy(),n=e.shape,o=n[n.length-2],a=n[n.length-1],i=n.slice(0,-2).reduce((u,s)=>u*s,1);for(let u=0;u<i;u++)for(let s=0;s<o;s++)for(let c=0;c<a;c++)if(c>s+t){let l=[],m=u;for(let f=n.length-3;f>=0;f--)l.unshift(m%n[f]),m=Math.floor(m/n[f]);l.push(s,c),e.set(l,0)}return e}function Bs(r,t=0){if(r.ndim<2)throw new Error("Input must have at least 2 dimensions");let e=r.copy(),n=e.shape,o=n[n.length-2],a=n[n.length-1],i=n.slice(0,-2).reduce((u,s)=>u*s,1);for(let u=0;u<i;u++)for(let s=0;s<o;s++)for(let c=0;c<a;c++)if(c<s+t){let l=[],m=u;for(let f=n.length-3;f>=0;f--)l.unshift(m%n[f]),m=Math.floor(m/n[f]);l.push(s,c),e.set(l,0)}return e}function Es(r,t,e=!1){if(r.ndim!==1)throw new Error("Input must be 1-D");let n=r.size,o=t??n;if(o<0)throw new Error("N must be non-negative");let a=Q([n,o],r.dtype);for(let i=0;i<n;i++){let u=r.get([i]);for(let s=0;s<o;s++){let c=e?s:o-1-s;a.set([i,s],Math.pow(u,c))}}return a}function vs(r,t=q,e=-1,n=0){let o,a=n;r instanceof ArrayBuffer?o=r:(o=r.buffer,a+=r.byteOffset);let i=$s(t),u=o.byteLength-a,s=Math.floor(u/i),c=e<0?s:Math.min(e,s);if(c<=0)return L([],t);let l=T(t);if(!l)throw new Error(`Unsupported dtype: ${t}`);let m=new l(o,a,c),f=N.fromData(m,[c],t);return new z(f)}function Os(r,t=q,e=-1){let n=[],o=0;for(let a of r){if(e>=0&&o>=e)break;n.push(a),o++}return L(n,t)}function Us(r,t=q,e=-1){let n=[],o=0;for(let a of r){if(e>=0&&o>=e)break;n.push(a),o++}return L(n,t)}function Ts(r,t=q,e=-1,n=""){let o;n===""?o=r.trim().split(/\s+/):o=r.split(n);let a=[],i=0;for(let u of o){if(e>=0&&i>=e)break;let s=u.trim();s!==""&&(I(t)?a.push(BigInt(s)):a.push(parseFloat(s)),i++)}return L(a,t)}function $s(r){switch(r){case"int8":case"uint8":case"bool":return 1;case"int16":case"uint16":return 2;case"int32":case"uint32":case"float32":return 4;case"int64":case"uint64":case"float64":return 8;default:return 8}}function Ms(r){return r.sqrt()}function ks(r,t){return r.power(t)}function Cs(r){return r.exp()}function Vs(r){return r.exp2()}function qs(r){return r.expm1()}function Fs(r){return r.log()}function Ps(r){return r.log2()}function js(r){return r.log10()}function Rs(r){return r.log1p()}function Ls(r,t){return r.logaddexp(t)}function Zs(r,t){return r.logaddexp2(t)}function Ws(r){return r.absolute()}function Gs(r){return r.negative()}function Hs(r){return r.sign()}function Ys(r,t){return r.mod(t)}function Js(r,t){return r.floor_divide(t)}function Qs(r){return r.positive()}function Xs(r){return r.reciprocal()}function Ks(r,t){return r.dot(t)}function ri(r){return r.trace()}function ti(r,t=0,e=0,n=1){let o=He(r.storage,t,e,n);return z._fromStorage(o)}function ei(r,t){let e=Je(r.storage,t.storage);return z._fromStorage(e)}function ni(r,t){return r.transpose(t)}function oi(r,t){return r.inner(t)}function ai(r,t){return r.outer(t)}function si(r,t,e=2){return r.tensordot(t,e)}function ii(r){return r.sin()}function ui(r){return r.cos()}function ci(r){return r.tan()}function li(r){return r.arcsin()}function fi(r){return r.arccos()}function mi(r){return r.arctan()}function pi(r,t){return r.arctan2(t)}function yi(r,t){return r.hypot(t)}function di(r){return r.degrees()}function gi(r){return r.radians()}function hi(r){return r.radians()}function Ai(r){return r.degrees()}function bi(r){return r.sinh()}function Si(r){return r.cosh()}function Ni(r){return r.tanh()}function Di(r){return r.arcsinh()}function xi(r){return r.arccosh()}function wi(r){return r.arctanh()}function Ii(r,t,e){return r.swapaxes(t,e)}function zi(r,t,e){return r.moveaxis(t,e)}function ur(r,t=0){if(r.length===0)throw new Error("need at least one array to concatenate");let e=r.map(o=>o.storage),n=er(e,t);return z._fromStorage(n)}function _i(r,t=0){if(r.length===0)throw new Error("need at least one array to stack");let e=r.map(o=>o.storage),n=xe(e,t);return z._fromStorage(n)}function $o(r){if(r.length===0)throw new Error("need at least one array to stack");let t=r.map(n=>n.storage),e=we(t);return z._fromStorage(e)}function Bi(r){if(r.length===0)throw new Error("need at least one array to stack");let t=r.map(n=>n.storage),e=ut(t);return z._fromStorage(e)}function Ei(r){if(r.length===0)throw new Error("need at least one array to stack");let t=r.map(n=>n.storage),e=Ie(t);return z._fromStorage(e)}function vi(r,t,e=0){return ze(r.storage,t,e).map(o=>z._fromStorage(o,r.base??r))}function Oi(r,t,e=0){return gr(r.storage,t,e).map(o=>z._fromStorage(o,r.base??r))}function Ui(r,t){return Be(r.storage,t).map(n=>z._fromStorage(n,r.base??r))}function Ti(r,t){return Ee(r.storage,t).map(n=>z._fromStorage(n,r.base??r))}function $i(r,t){let e=ve(r.storage,t);return z._fromStorage(e)}function Mi(r,t,e){return r.repeat(t,e)}function ki(r){return r.ravel()}function Ci(r,t){return r.reshape(...t)}function Vi(r,t){return r.squeeze(t)}function qi(r,t){return r.expand_dims(t)}function kt(r,t){let e=Ue(r.storage,t);return z._fromStorage(e)}function Fi(r){if(r.ndim<2)throw new Error("Input must be at least 2-D");return kt(r,1)}function Pi(r){if(r.ndim<2)throw new Error("Input must be at least 2-D");return kt(r,0)}function ji(r,t=1,e=[0,1]){let n=Te(r.storage,t,e);return z._fromStorage(n)}function Ri(r,t,e){let n=$e(r.storage,t,e);return z._fromStorage(n)}function Li(r,t,e=0){let n=Me(r.storage,t,e);return z._fromStorage(n,r.base??r)}function Zi(...r){let t=r.map(o=>o.storage),n=qe(t).map((o,a)=>o===t[a]?r[a]:z._fromStorage(o));return n.length===1?n[0]:n}function Wi(...r){let t=r.map(o=>o.storage),n=Fe(t).map((o,a)=>o===t[a]?r[a]:z._fromStorage(o));return n.length===1?n[0]:n}function Gi(...r){let t=r.map(o=>o.storage),n=Pe(t).map((o,a)=>o===t[a]?r[a]:z._fromStorage(o));return n.length===1?n[0]:n}function Hi(r,t){return ke(r.storage,t).map(n=>z._fromStorage(n,r.base??r))}function Yi(r){if(r.length===0)throw new Error("need at least one array to stack");let t=r.map(n=>n.storage),e=Ce(t);return z._fromStorage(e)}function Ji(r){return $o(r)}function Qi(r,t){let e=Ve(r.storage,t);return z._fromStorage(e)}function Xi(r,t,e){let n=t instanceof z?t:L(t,r.dtype);if(e===void 0){let o=r.flatten(),a=n.flatten();return ur([o,a])}return ur([r,n],e)}function Ki(r,t,e){let n=r.dtype;if(e===void 0){let p=r.flatten(),d=(Array.isArray(t)?t:[t]).map(S=>S<0?p.size+S:S),g=[];for(let S=0;S<p.size;S++)d.includes(S)||g.push(S);let b=T(n),A=new b(g.length);for(let S=0;S<g.length;S++){let D=p.get([g[S]]);I(n)?A[S]=typeof D=="bigint"?D:BigInt(D):A[S]=D}let h=N.fromData(A,[g.length],n);return new z(h)}let o=r.shape,a=o.length,i=e<0?a+e:e;if(i<0||i>=a)throw new Error(`axis ${e} is out of bounds for array of dimension ${a}`);let u=o[i],s=Array.isArray(t)?t:[t],c=new Set(s.map(p=>p<0?u+p:p)),l=[],m=0;for(let p=0;p<=u;p++)(c.has(p)||p===u)&&(p>m&&l.push([m,p]),m=p+1);if(l.length===0){let p=[...o];return p[i]=0,Q(p,n)}let f=[];for(let[p,y]of l){let d=o.map(()=>":");d[i]=`${p}:${y}`,f.push(r.slice(...d))}return ur(f,i)}function ru(r,t,e,n){let o=e instanceof z?e:L(e,r.dtype);if(n===void 0){let m=r.flatten(),f=o.flatten(),p=t<0?m.size+t:t;if(p<0||p>m.size)throw new Error(`index ${t} is out of bounds for array of size ${m.size}`);let y=p>0?m.slice(`0:${p}`):null,d=p<m.size?m.slice(`${p}:`):null,g=[];return y&&g.push(y),g.push(f),d&&g.push(d),ur(g)}let a=r.shape,i=a.length,u=n<0?i+n:n;if(u<0||u>=i)throw new Error(`axis ${n} is out of bounds for array of dimension ${i}`);let s=a[u],c=t<0?s+t:t;if(c<0||c>s)throw new Error(`index ${t} is out of bounds for axis ${n} with size ${s}`);let l=[];if(c>0){let m=a.map(()=>":");m[u]=`0:${c}`,l.push(r.slice(...m))}if(l.push(o),c<s){let m=a.map(()=>":");m[u]=`${c}:`,l.push(r.slice(...m))}return ur(l,u)}function tu(r,t,e="constant",n=0){let o=r.shape,a=o.length,i=r.dtype,u;if(typeof t=="number"?u=o.map(()=>[t,t]):Array.isArray(t)&&typeof t[0]=="number"?u=o.map(()=>t):u=t,u.length!==a)throw new Error(`pad_width must have ${a} elements`);let s=o.map((d,g)=>d+u[g][0]+u[g][1]),c=s.reduce((d,g)=>d*g,1),l=T(i),m=new l(c),f=I(i);e==="constant"&&(f?m.fill(BigInt(n)):m.fill(n));let p=new Array(a).fill(0);for(let d=0;d<c;d++){let g=!0,b=[];for(let h=0;h<a;h++){let[S]=u[h],D=p[h]-S;if(D<0||D>=o[h]){g=!1;break}b.push(D)}let A;if(g)A=r.get(b);else if(e==="constant"){for(let h=a-1;h>=0&&(p[h]++,!(p[h]<s[h]));h--)p[h]=0;continue}else{let h=[];for(let S=0;S<a;S++){let[D]=u[S],x=p[S]-D,w=o[S];x<0?e==="edge"?x=0:e==="reflect"?(x=-x,x>=w&&(x=w-1)):e==="symmetric"?(x=-x-1,x>=w&&(x=w-1),x<0&&(x=0)):e==="wrap"&&(x=(x%w+w)%w):x>=w&&(e==="edge"?x=w-1:e==="reflect"?(x=2*w-x-2,x<0&&(x=0)):e==="symmetric"?(x=2*w-x-1,x<0&&(x=0)):e==="wrap"&&(x=x%w)),h.push(Math.max(0,Math.min(w-1,x)))}A=r.get(h)}f?m[d]=typeof A=="bigint"?A:BigInt(Number(A)):m[d]=Number(A);for(let h=a-1;h>=0&&(p[h]++,!(p[h]<s[h]));h--)p[h]=0}let y=N.fromData(m,s,i);return new z(y)}function eu(r,t){let e=ht(r.storage,t);return z._fromStorage(e,r.base??r)}function nu(...r){let t=r.map(n=>n.storage);return Vn(t).map((n,o)=>z._fromStorage(n,r[o].base??r[o]))}function ou(...r){return Zr(...r)}function au(r,t,e){return r.take(t,e)}function su(r,t,e){r.put(t,e)}function iu(r,t){let e=t.map(o=>o.storage),n=Pn(r.storage,e);return z._fromStorage(n)}function uu(r,t,e=!1){return jn(r.storage,t.storage,e)}function cu(r,t){return be(r.storage,t.storage)}function lu(r,t){return z._fromStorage(Kr(r.storage,t))}function fu(r,t){return z._fromStorage(rt(r.storage,t))}function mu(r,t,e=!1){let n=tt(r.storage,t,e);return typeof n=="number"?n:z._fromStorage(n)}function pu(r,t,e=!1){let n=et(r.storage,t,e);return typeof n=="number"?n:z._fromStorage(n)}function yu(r,t,e,n=!1){let o=nt(r.storage,t,e,n);return typeof o=="number"?o:z._fromStorage(o)}function du(r,t,e,n=!1){let o=ar(r.storage,t,e,n);return typeof o=="number"?o:z._fromStorage(o)}function gu(r,t,e,n=!1){let o=e?e.storage:void 0,a=zr(r.storage,t,o,n);return typeof a=="number"?a:z._fromStorage(a)}function hu(r,t,e=!1){let n=_r(r.storage,t,e);return typeof n=="number"?n:z._fromStorage(n)}function Au(r,t,e=!1){let n=Br(r.storage,t,e);return typeof n=="number"?n:z._fromStorage(n)}function bu(r,t,e=!1){let n=Er(r.storage,t,e);return typeof n=="number"?n:z._fromStorage(n)}function Su(r,t,e=0,n=!1){let o=pr(r.storage,t,e,n);return typeof o=="number"?o:z._fromStorage(o)}function Nu(r,t,e=0,n=!1){let o=ot(r.storage,t,e,n);return typeof o=="number"?o:z._fromStorage(o)}function Du(r,t,e=!1){let n=vr(r.storage,t,e);return typeof n=="number"?n:z._fromStorage(n)}function xu(r,t,e=!1){let n=Or(r.storage,t,e);return typeof n=="number"?n:z._fromStorage(n)}function wu(r,t){let e=Ur(r.storage,t);return typeof e=="number"?e:z._fromStorage(e)}function Iu(r,t){let e=Tr(r.storage,t);return typeof e=="number"?e:z._fromStorage(e)}function zu(r,t){return z._fromStorage(at(r.storage,t))}function _u(r,t){return z._fromStorage(st(r.storage,t))}function Bu(r,t,e=!1){let n=$r(r.storage,t,e);return typeof n=="number"?n:z._fromStorage(n)}function Eu(r){return r.cbrt()}function vu(r){return r.fabs()}function Ou(r,t){return r.divmod(t)}function Uu(r){return r.square()}function Tu(r,t){return r.remainder(t)}function $u(r,t){return r.heaviside(t)}function Mu(r,t){return r.bitwise_and(t)}function ku(r,t){return r.bitwise_or(t)}function Cu(r,t){return r.bitwise_xor(t)}function Vu(r){return r.bitwise_not()}function qu(r){return r.invert()}function Fu(r,t){return r.left_shift(t)}function Pu(r,t){return r.right_shift(t)}function ju(r,t=-1,e="big"){let n=fo(r.storage,t,e);return z._fromStorage(n)}function Ru(r,t=-1,e=-1,n="big"){let o=mo(r.storage,t,e,n);return z._fromStorage(o)}function Lu(r,...t){let e=t.map(o=>o.storage),n=Ye(r,...e);return typeof n=="number"||typeof n=="bigint"?n:z._fromStorage(n)}var Zu={cross:(r,t,e=-1,n=-1,o=-1,a)=>{let i=Qe(r.storage,t.storage,e,n,o,a);return typeof i=="number"?i:z._fromStorage(i)},norm:(r,t=null,e=null,n=!1)=>{let o=Xe(r.storage,t,e,n);return typeof o=="number"?o:z._fromStorage(o)},vector_norm:(r,t=2,e,n=!1)=>{let o=ir(r.storage,t,e,n);return typeof o=="number"?o:z._fromStorage(o)},matrix_norm:(r,t="fro",e=!1)=>{let n=nr(r.storage,t,e);return typeof n=="number"?n:z._fromStorage(n)},qr:(r,t="reduced")=>{let e=mt(r.storage,t);return e instanceof N?z._fromStorage(e):"q"in e&&"r"in e?{q:z._fromStorage(e.q),r:z._fromStorage(e.r)}:{h:z._fromStorage(e.h),tau:z._fromStorage(e.tau)}},cholesky:(r,t=!1)=>z._fromStorage(Ke(r.storage,t)),svd:(r,t=!0,e=!0)=>{let n=rn(r.storage,t,e);return"u"in n?{u:z._fromStorage(n.u),s:z._fromStorage(n.s),vt:z._fromStorage(n.vt)}:z._fromStorage(n)},det:r=>tn(r.storage),inv:r=>z._fromStorage(kr(r.storage)),solve:(r,t)=>z._fromStorage(en(r.storage,t.storage)),lstsq:(r,t,e=null)=>{let n=nn(r.storage,t.storage,e);return{x:z._fromStorage(n.x),residuals:z._fromStorage(n.residuals),rank:n.rank,s:z._fromStorage(n.s)}},cond:(r,t=2)=>on(r.storage,t),matrix_rank:(r,t)=>an(r.storage,t),matrix_power:(r,t)=>z._fromStorage(sn(r.storage,t)),pinv:(r,t=1e-15)=>z._fromStorage(un(r.storage,t)),eig:r=>{let t=dt(r.storage);return{w:z._fromStorage(t.w),v:z._fromStorage(t.v)}},eigh:(r,t="L")=>{let e=gt(r.storage,t);return{w:z._fromStorage(e.w),v:z._fromStorage(e.v)}},eigvals:r=>z._fromStorage(cn(r.storage)),eigvalsh:(r,t="L")=>z._fromStorage(ln(r.storage,t))};function Wu(r,t,e){return z._fromStorage(Rn(r.storage,t.storage,e))}function Gu(r,t,e,n){Ln(r.storage,t.storage,e.storage,n)}function Hu(r,t,e){let n=e instanceof z?e.storage:e;Zn(r.storage,t.storage,n)}function Yu(r,t,e){return z._fromStorage(Wn(r.storage,t.storage,e))}function Ju(r,t,e=0){let n=r.map(a=>a.storage),o=t.map(a=>a.storage);return z._fromStorage(Gn(n,o,e))}function Qu(r,t,e){Hn(r.storage,t.storage,e.storage)}function Xu(r,t=2){return At(r,t).map(n=>z._fromStorage(n))}function Ku(r){return Yn(r.storage).map(e=>z._fromStorage(e))}function rc(r,t=0,e){return bt(r,t,e).map(o=>z._fromStorage(o))}function tc(r,t=0){return Jn(r.storage,t).map(n=>z._fromStorage(n))}function ec(r,t=0,e){return St(r,t,e).map(o=>z._fromStorage(o))}function nc(r,t=0){return Qn(r.storage,t).map(n=>z._fromStorage(n))}function oc(r,t,e=0){return Xn(r,(a,i)=>t(a,i).storage,e).map(a=>z._fromStorage(a))}function ac(r,t="int32"){return z._fromStorage(Kn(r,t))}function sc(...r){return ro(...r.map(e=>e.storage)).map(e=>z._fromStorage(e))}function ic(r,t,e="raise"){let n=r.map(o=>o.storage);return z._fromStorage(to(n,t,e))}function uc(r,t,e="C"){let n=r instanceof z?r.storage:r;return eo(n,t,e).map(a=>z._fromStorage(a))}function cc(r,t=-1){return z._fromStorage(Dt(r.storage,t))}function lc(r,t=-1){return z._fromStorage(xt(r.storage,t))}function fc(r){let t=r.map(e=>e.storage);return z._fromStorage(po(t))}function mc(r,t,e=-1){return z._fromStorage(wt(r.storage,t,e))}function pc(r,t,e=-1){return z._fromStorage(It(r.storage,t,e))}function yc(r){return z._fromStorage(yo(r.storage))}function dc(r){return Vr(r.storage).map(e=>z._fromStorage(e))}function gc(r){return z._fromStorage(go(r.storage))}function hc(r,t,e){let n=ho(r.storage,t?.storage,e?.storage);return Array.isArray(n)?n.map(o=>z._fromStorage(o)):z._fromStorage(n)}function Ac(r,t,e="left"){return z._fromStorage(zt(r.storage,t.storage,e))}function bc(r,t){return z._fromStorage(Ao(r.storage,t.storage))}function Sc(r,t){let e=_t(r.storage,t);return typeof e=="number"?e:z._fromStorage(e)}function Mo(r,t=0){return z._fromStorage(Bt(r.storage,t))}function Nc(r){return z._fromStorage(Et(r.storage))}function Dc(r){return z._fromStorage(vt(r.storage))}function xc(r){return z._fromStorage(Ot(r.storage))}function wc(r){return z._fromStorage(Ut(r.storage))}function Ic(r){return z._fromStorage(Tt(r.storage))}function zc(r,t=!1,e=!1,n=!1){let o=J(r.storage,t,e,n);if(o instanceof N)return z._fromStorage(o);let a={values:z._fromStorage(o.values)};return o.indices&&(a.indices=z._fromStorage(o.indices)),o.inverse&&(a.inverse=z._fromStorage(o.inverse)),o.counts&&(a.counts=z._fromStorage(o.counts)),a}function _c(r,t){return z._fromStorage(So(r.storage,t.storage))}function Bc(r,t){return z._fromStorage(No(r.storage,t.storage))}function Ec(r,t){return z._fromStorage($t(r.storage,t.storage))}function vc(r,t){return z._fromStorage(Do(r.storage,t.storage))}function Oc(r,t){return z._fromStorage(xo(r.storage,t.storage))}function Uc(r,t){return z._fromStorage(wo(r.storage,t.storage))}function Tc(r,t=1,e=-1){return z._fromStorage(Mt(r.storage,t,e))}function $c(r,t=null,e=null){return z._fromStorage(Io(r.storage,t,e))}function Mc(r,t=1,e=null){let n=zo(r.storage,t,e);return Array.isArray(n)?n.map(o=>z._fromStorage(o)):z._fromStorage(n)}function kc(r,t,e=-1,n=-1,o=-1){return z._fromStorage(_o(r.storage,t.storage,e,n,o))}var Ar=new Uint8Array([147,78,85,77,80,89]),Ct=["float64","float32","int64","int32","int16","int8","uint64","uint32","uint16","uint8","bool"];function Vt(){let r=new ArrayBuffer(2);return new DataView(r).setInt16(0,256,!0),new Int16Array(r)[0]===256}var Cc={f8:"float64",f4:"float32",i8:"int64",i4:"int32",i2:"int16",i1:"int8",u8:"uint64",u4:"uint32",u2:"uint16",u1:"uint8",b1:"bool"},Fr={float64:"<f8",float32:"<f4",int64:"<i8",int32:"<i4",int16:"<i2",int8:"|i1",uint64:"<u8",uint32:"<u4",uint16:"<u2",uint8:"|u1",bool:"|b1"},ko={c:"complex numbers",S:"byte strings",U:"Unicode strings",O:"Python objects",V:"structured arrays (void)",M:"datetime64",m:"timedelta64"};function Co(r){if(r.startsWith("[")||r.startsWith("("))throw new X(`Structured/compound dtypes are not supported: ${r}`);let t="",e=r;(r[0]==="<"||r[0]===">"||r[0]==="="||r[0]==="|")&&(t=r[0],e=r.slice(1));let n=e[0];if(n&&n in ko)throw new X(`Unsupported dtype: ${ko[n]} (${r}). Use the 'force' parameter to skip arrays with unsupported dtypes.`);let o=Cc[e];if(!o)throw new X(`Unknown or unsupported dtype descriptor: ${r}. Supported types: ${Ct.join(", ")}. Use the 'force' parameter to skip arrays with unsupported dtypes.`);let a=Vt(),i=t==="<"||t==="|"||t==="="&&a,u=t===">"||t==="="&&!a,s=parseInt(e.slice(1),10),c=s>1&&(u&&a||i&&!a);return{dtype:o,needsByteSwap:c,itemsize:s}}var X=class extends Error{constructor(t){super(t),this.name="UnsupportedDTypeError"}},W=class extends Error{constructor(t){super(t),this.name="InvalidNpyError"}};function Pr(r){let t=r instanceof ArrayBuffer?new Uint8Array(r):r,e=qt(t);return Ft(t,e)}function qt(r){if(r.length<10)throw new W("File too small to be a valid NPY file");for(let c=0;c<Ar.length;c++)if(r[c]!==Ar[c])throw new W("Invalid NPY magic number");let t=r[6],e=r[7];if(t!==1&&t!==2&&t!==3)throw new W(`Unsupported NPY version: ${t}.${e}`);let n,o;t===1?(n=r[8]|r[9]<<8,o=10):(n=r[8]|r[9]<<8|r[10]<<16|r[11]<<24,o=12);let a=o+n;if(r.length<a)throw new W("File truncated: header extends beyond file");let i=r.slice(o,a),u=new TextDecoder("utf-8").decode(i).trim(),s=Vc(u);return{version:{major:t,minor:e},header:s,dataOffset:a}}function Ft(r,t){let{header:e,dataOffset:n}=t,{dtype:o,needsByteSwap:a,itemsize:i}=Co(e.descr),u=e.shape.reduce((d,g)=>d*g,1),s=u*i,c=r.length-n;if(c<s)throw new W(`File truncated: expected ${s} bytes of data, got ${c}`);let l=new ArrayBuffer(s);new Uint8Array(l).set(r.subarray(n,n+s));let f=qc(l,o,u,a,i),p=e.shape,y;if(e.fortran_order&&p.length>1){let d=[...p].reverse(),g=N.fromData(f,d,o);y=Fc(g,d),p=e.shape}else y=N.fromData(f,[...p],o);return new z(y)}function Vc(r){let t=r.match(/'descr'\s*:\s*'([^']+)'/),e=r.match(/'fortran_order'\s*:\s*(True|False)/),n=r.match(/'shape'\s*:\s*\(([^)]*)\)/);if(!t||!e||!n)throw new W(`Failed to parse NPY header: ${r}`);let o=t[1],a=e[1]==="True",i=n[1].trim(),u;return i===""?u=[]:u=i.split(",").map(s=>s.trim()).filter(s=>s!=="").map(s=>{let c=parseInt(s,10);if(isNaN(c))throw new W(`Invalid shape value: ${s}`);return c}),{descr:o,fortran_order:a,shape:u}}function qc(r,t,e,n,o){let a=T(t);if(!a)throw new W(`Cannot create array for dtype: ${t}`);if(!n)return new a(r,0,e);let i=new Uint8Array(r),u=new Uint8Array(r.byteLength);for(let s=0;s<e;s++){let c=s*o;for(let l=0;l<o;l++)u[c+l]=i[c+o-1-l]}return new a(u.buffer,0,e)}function Fc(r,t){let e=t.length,n=r.size,o=r.dtype,a=T(o);if(!a)throw new W(`Cannot create array for dtype: ${o}`);let i=new a(n),u=[...t].reverse(),s=Vo(t),c=Vo(u),l=new Array(e).fill(0);for(let m=0;m<n;m++){let f=m;for(let y=0;y<e;y++){let d=s[y];l[y]=Math.floor(f/d),f=f%d}let p=0;for(let y=0;y<e;y++)p+=l[e-1-y]*c[y];I(o),i[p]=r.iget(m)}return N.fromData(i,u,o)}function Vo(r){let t=new Array(r.length),e=1;for(let n=r.length-1;n>=0;n--)t[n]=e,e*=r[n];return t}function br(r){let t=r.shape,e=r.dtype,n=Fr[e],o=t.length===0?"()":t.length===1?`(${t[0]},)`:`(${t.join(", ")})`,a=`{'descr': '${n}', 'fortran_order': False, 'shape': ${o}, }`,i=12,s=(64-(i+a.length+1)%64)%64;a=a+" ".repeat(s)+`
|
|
2
|
-
`;let c=new TextEncoder().encode(a),l=c.length,m=r.size,f=Yt(e),p=m*f,y=i+l+p,d=new Uint8Array(y);d.set(Ar,0),d[6]=3,d[7]=0,d[8]=l&255,d[9]=l>>8&255,d[10]=l>>16&255,d[11]=l>>24&255,d.set(c,i);let g=i+l;return Pc(r,d.subarray(g),f),d}function Pc(r,t,e){let n=r.dtype,o=r.size,a=Vt(),i=I(n),u=r._storage;if(u.isCContiguous&&u.offset===0&&a){let c=u.data,l=new Uint8Array(c.buffer,c.byteOffset,o*e);t.set(l)}else{let c=new DataView(t.buffer,t.byteOffset,t.byteLength);for(let l=0;l<o;l++){let m=u.iget(l),f=l*e;i?jc(c,f,m,n==="uint64"):Rc(c,f,m,n)}}}function jc(r,t,e,n){n?r.setBigUint64(t,e,!0):r.setBigInt64(t,e,!0)}function Rc(r,t,e,n){switch(n){case"float64":r.setFloat64(t,e,!0);break;case"float32":r.setFloat32(t,e,!0);break;case"int32":r.setInt32(t,e,!0);break;case"int16":r.setInt16(t,e,!0);break;case"int8":r.setInt8(t,e);break;case"uint32":r.setUint32(t,e,!0);break;case"uint16":r.setUint16(t,e,!0);break;case"uint8":case"bool":r.setUint8(t,e);break;default:throw new Error(`Unsupported dtype for serialization: ${n}`)}}var Lc=(()=>{let r=new Uint32Array(256);for(let t=0;t<256;t++){let e=t;for(let n=0;n<8;n++)e=e&1?3988292384^e>>>1:e>>>1;r[t]=e}return r})();function Pt(r){let t=4294967295;for(let e=0;e<r.length;e++)t=Lc[(t^r[e])&255]^t>>>8;return(t^4294967295)>>>0}async function qo(r){let t=Po(r),e=new Map;for(let n of t){let o=await Zc(n);e.set(n.name,o)}return e}function Fo(r){let t=Po(r),e=new Map;for(let n of t){if(n.compressionMethod!==0)throw new Error(`Cannot read compressed entry synchronously: ${n.name}. Use readZip() (async) for DEFLATE-compressed files.`);e.set(n.name,n.compressedData)}return e}function Po(r){let t=r instanceof ArrayBuffer?new Uint8Array(r):r,e=new DataView(t.buffer,t.byteOffset,t.byteLength),n=[],o=-1;for(let c=t.length-22;c>=0;c--)if(e.getUint32(c,!0)===101010256){o=c;break}if(o===-1)throw new Error("Invalid ZIP file: end of central directory not found");let a=e.getUint32(o+16,!0),i=e.getUint16(o+10,!0),u=[],s=a;for(let c=0;c<i&&e.getUint32(s,!0)===33639248;c++){let m=e.getUint16(s+10,!0),f=e.getUint32(s+16,!0),p=e.getUint32(s+20,!0),y=e.getUint32(s+24,!0),d=e.getUint16(s+28,!0),g=e.getUint16(s+30,!0),b=e.getUint16(s+32,!0),A=e.getUint32(s+42,!0),h=t.slice(s+46,s+46+d),S=new TextDecoder("utf-8").decode(h);u.push({name:S,compressionMethod:m,crc32:f,compressedSize:p,uncompressedSize:y,localHeaderOffset:A}),s=s+46+d+g+b}for(let c of u){let l=c.localHeaderOffset;if(e.getUint32(l,!0)!==67324752)throw new Error(`Invalid local file header at offset ${l}`);let f=e.getUint16(l+26,!0),p=e.getUint16(l+28,!0),y=l+30+f+p,d=t.slice(y,y+c.compressedSize);n.push({name:c.name,compressedData:d,compressionMethod:c.compressionMethod,crc32:c.crc32,compressedSize:c.compressedSize,uncompressedSize:c.uncompressedSize})}return n}async function Zc(r){if(r.compressionMethod===0)return r.compressedData;if(r.compressionMethod===8)return await Wc(r.compressedData);throw new Error(`Unsupported compression method: ${r.compressionMethod}`)}async function Wc(r){if(typeof DecompressionStream>"u")throw new Error("DecompressionStream is not available. This environment does not support the Compression Streams API. Please use a modern browser or Node.js 18+.");let t=new DecompressionStream("deflate-raw"),e=new Uint8Array(r.length);e.set(r);let n=t.writable.getWriter();n.write(e),n.close();let o=t.readable.getReader(),a=[];for(;;){let{done:c,value:l}=await o.read();if(c)break;a.push(l)}let i=a.reduce((c,l)=>c+l.length,0),u=new Uint8Array(i),s=0;for(let c of a)u.set(c,s),s+=c.length;return u}async function Lt(r,t={}){let e=t.force??!1,n=await qo(r);return jo(n,e)}function Zt(r,t={}){let e=t.force??!1,n=Fo(r);return jo(n,e)}function jo(r,t){let e=new Map,n=[],o=new Map;for(let[a,i]of r){if(!a.endsWith(".npy"))continue;let u=a.slice(0,-4);try{let s=Pr(i);e.set(u,s)}catch(s){if(s instanceof X&&t)n.push(u),o.set(u,s.message);else throw s}}return{arrays:e,skipped:n,errors:o}}async function Ro(r,t={}){let e=await Lt(r,t);return Object.fromEntries(e.arrays)}function Lo(r,t={}){let e=Zt(r,t);return Object.fromEntries(e.arrays)}async function Zo(r,t={}){let e=t.compress??!1,n=[];for(let[f,p]of r){let y=Pt(p),d,g;e?(d=await Hc(p),d.length<p.length?g=8:(d=p,g=0)):(d=p,g=0),n.push({name:f,data:p,compressedData:d,crc:y,compressionMethod:g,offset:0})}let o=0;for(let f of n){let p=new TextEncoder().encode(f.name);o+=30+p.length+f.compressedData.length}let a=0;for(let f of n){let p=new TextEncoder().encode(f.name);a+=46+p.length}let u=o+a+22,s=new Uint8Array(u),c=new DataView(s.buffer),l=0;for(let f of n)f.offset=l,l=Go(s,c,l,f);let m=l;for(let f of n)l=Ho(s,c,l,f);return Yo(c,l,n.length,a,m),s}function Wo(r){let t=[];for(let[l,m]of r){let f=Pt(m);t.push({name:l,data:m,compressedData:m,crc:f,compressionMethod:0,offset:0})}let e=0;for(let l of t){let m=new TextEncoder().encode(l.name);e+=30+m.length+l.compressedData.length}let n=0;for(let l of t){let m=new TextEncoder().encode(l.name);n+=46+m.length}let a=e+n+22,i=new Uint8Array(a),u=new DataView(i.buffer),s=0;for(let l of t)l.offset=s,s=Go(i,u,s,l);let c=s;for(let l of t)s=Ho(i,u,s,l);return Yo(u,s,t.length,n,c),i}function Go(r,t,e,n){let o=new TextEncoder().encode(n.name);return t.setUint32(e,67324752,!0),e+=4,t.setUint16(e,n.compressionMethod===8?20:10,!0),e+=2,t.setUint16(e,0,!0),e+=2,t.setUint16(e,n.compressionMethod,!0),e+=2,t.setUint16(e,0,!0),e+=2,t.setUint16(e,33,!0),e+=2,t.setUint32(e,n.crc,!0),e+=4,t.setUint32(e,n.compressedData.length,!0),e+=4,t.setUint32(e,n.data.length,!0),e+=4,t.setUint16(e,o.length,!0),e+=2,t.setUint16(e,0,!0),e+=2,r.set(o,e),e+=o.length,r.set(n.compressedData,e),e+=n.compressedData.length,e}function Ho(r,t,e,n){let o=new TextEncoder().encode(n.name);return t.setUint32(e,33639248,!0),e+=4,t.setUint16(e,20,!0),e+=2,t.setUint16(e,n.compressionMethod===8?20:10,!0),e+=2,t.setUint16(e,0,!0),e+=2,t.setUint16(e,n.compressionMethod,!0),e+=2,t.setUint16(e,0,!0),e+=2,t.setUint16(e,33,!0),e+=2,t.setUint32(e,n.crc,!0),e+=4,t.setUint32(e,n.compressedData.length,!0),e+=4,t.setUint32(e,n.data.length,!0),e+=4,t.setUint16(e,o.length,!0),e+=2,t.setUint16(e,0,!0),e+=2,t.setUint16(e,0,!0),e+=2,t.setUint16(e,0,!0),e+=2,t.setUint16(e,0,!0),e+=2,t.setUint32(e,0,!0),e+=4,t.setUint32(e,n.offset,!0),e+=4,r.set(o,e),e+=o.length,e}function Yo(r,t,e,n,o){r.setUint32(t,101010256,!0),t+=4,r.setUint16(t,0,!0),t+=2,r.setUint16(t,0,!0),t+=2,r.setUint16(t,e,!0),t+=2,r.setUint16(t,e,!0),t+=2,r.setUint32(t,n,!0),t+=4,r.setUint32(t,o,!0),t+=4,r.setUint16(t,0,!0)}async function Hc(r){if(typeof CompressionStream>"u")throw new Error("CompressionStream is not available. This environment does not support the Compression Streams API. Please use a modern browser or Node.js 18+.");let t=new CompressionStream("deflate-raw"),e=new Uint8Array(r.length);e.set(r);let n=t.writable.getWriter();n.write(e),n.close();let o=t.readable.getReader(),a=[];for(;;){let{done:c,value:l}=await o.read();if(c)break;a.push(l)}let i=a.reduce((c,l)=>c+l.length,0),u=new Uint8Array(i),s=0;for(let c of a)u.set(c,s),s+=c.length;return u}async function Jo(r,t={}){let e=Xo(r);return Zo(e,{compress:t.compress??!1})}function Qo(r){let t=Xo(r);return Wo(t)}function Xo(r){let t=new Map;if(Array.isArray(r)){for(let n=0;n<r.length;n++){let o=r[n],a=br(o);t.set(`arr_${n}.npy`,a)}return t}let e=r instanceof Map?r.entries():Object.entries(r);for(let[n,o]of e){if(typeof n!="string"||n.length===0)throw new Error("Array names must be non-empty strings");let a=br(o),i=n.endsWith(".npy")?n:`${n}.npy`;t.set(i,a)}return t}var vf="0.9.0";export{Fr as DTYPE_TO_DESCR,W as InvalidNpyError,z as NDArray,Ct as SUPPORTED_DTYPES,X as UnsupportedDTypeError,vf as __version__,Ws as absolute,Xi as append,ls as arange,fi as arccos,xi as arccosh,li as arcsin,Di as arcsinh,mi as arctan,pi as arctan2,wi as arctanh,pc as argpartition,lc as argsort,Mo as around,L as array,uu as array_equal,cu as array_equiv,Oi as array_split,Ss as asanyarray,qr as asarray,Ns as ascontiguousarray,Ds as asfortranarray,Zi as atleast_1d,Wi as atleast_2d,Gi as atleast_3d,gu as average,Mu as bitwise_and,Vu as bitwise_not,ku as bitwise_or,Cu as bitwise_xor,nu as broadcast_arrays,ou as broadcast_shapes,eu as broadcast_to,Eu as cbrt,Nc as ceil,iu as choose,Yi as column_stack,Yu as compress,ur as concatenate,ds as copy,ui as cos,Si as cosh,Sc as count_nonzero,kc as cross,fu as cumprod,lu as cumsum,hi as deg2rad,di as degrees,Ki as delete,To as diag,Xu as diag_indices,Ku as diag_indices_from,xs as diagflat,ti as diagonal,Tc as diff,Ou as divmod,Ks as dot,Hi as dsplit,Ei as dstack,$c as ediff1d,Lu as einsum,Oo as empty,As as empty_like,Cs as exp,Vs as exp2,qi as expand_dims,qs as expm1,bc as extract,vo as eye,vu as fabs,Dc as fix,gc as flatnonzero,kt as flip,Fi as fliplr,Pi as flipud,xc as floor,Js as floor_divide,vs as frombuffer,Os as fromfile,ws as fromfunction,Us as fromiter,Ts as fromstring,Uo as full,bs as full_like,ps as geomspace,Mc as gradient,$u as heaviside,Ti as hsplit,Bi as hstack,yi as hypot,ys as identity,_c as in1d,ac as indices,oi as inner,ru as insert,Bc as intersect1d,qu as invert,Ec as isin,sc as ix_,ei as kron,Fu as left_shift,fc as lexsort,Zu as linalg,fs as linspace,Ro as loadNpz,Lo as loadNpzSync,Fs as log,js as log10,Rs as log1p,Ps as log2,Ls as logaddexp,Zs as logaddexp2,ms as logspace,oc as mask_indices,pu as median,Is as meshgrid,Ys as mod,zi as moveaxis,Iu as nanargmax,wu as nanargmin,_u as nancumprod,zu as nancumsum,xu as nanmax,bu as nanmean,Bu as nanmedian,Du as nanmin,Au as nanprod,Nu as nanstd,hu as nansum,Su as nanvar,Gs as negative,dc as nonzero,Bo as ones,hs as ones_like,ai as outer,ju as packbits,tu as pad,Pr as parseNpy,Ft as parseNpyData,qt as parseNpyHeader,Lt as parseNpz,Zt as parseNpzSync,mc as partition,yu as percentile,Qu as place,Qs as positive,ks as power,mu as ptp,su as put,Gu as put_along_axis,Hu as putmask,du as quantile,Ai as rad2deg,gi as radians,ki as ravel,ic as ravel_multi_index,Xs as reciprocal,Tu as remainder,Mi as repeat,Ci as reshape,Qi as resize,Pu as right_shift,wc as rint,Ri as roll,Li as rollaxis,ji as rot90,Mo as round,Ji as row_stack,Ac as searchsorted,Ju as select,br as serializeNpy,Jo as serializeNpz,Qo as serializeNpzSync,vc as setdiff1d,Oc as setxor1d,Hs as sign,ii as sin,bi as sinh,cc as sort,yc as sort_complex,vi as split,Ms as sqrt,Uu as square,Vi as squeeze,_i as stack,Ii as swapaxes,au as take,Wu as take_along_axis,ci as tan,Ni as tanh,si as tensordot,$i as tile,ri as trace,ni as transpose,zs as tri,_s as tril,rc as tril_indices,tc as tril_indices_from,Bs as triu,ec as triu_indices,nc as triu_indices_from,Ic as trunc,Uc as union1d,zc as unique,Ru as unpackbits,uc as unravel_index,Es as vander,Ui as vsplit,$o as vstack,hc as where,Q as zeros,gs as zeros_like};
|
|
1
|
+
function Ne(r){if(!r.includes(":")){if(r.includes("."))throw new Error(`Invalid slice index: "${r}" (must be integer)`);let a=parseInt(r,10);if(isNaN(a))throw new Error(`Invalid slice index: "${r}"`);return{start:a,stop:null,step:1,isIndex:!0}}let t=r.split(":");if(t.length>3)throw new Error(`Invalid slice notation: "${r}" (too many colons)`);let e=t[0]===""?null:parseInt(t[0],10),n=t[1]===""||t[1]===void 0?null:parseInt(t[1],10),o=t[2]===""||t[2]===void 0?1:parseInt(t[2],10);if(e!==null&&isNaN(e))throw new Error(`Invalid start index in slice: "${r}"`);if(n!==null&&isNaN(n))throw new Error(`Invalid stop index in slice: "${r}"`);if(isNaN(o))throw new Error(`Invalid step in slice: "${r}"`);if(o===0)throw new Error("Slice step cannot be zero");return{start:e,stop:n,step:o,isIndex:!1}}function De(r,t){let{start:e,stop:n}=r,{step:o,isIndex:a}=r;if(a){if(e===null)throw new Error("Index cannot be null");let i=e<0?t+e:e;if(i<0||i>=t)throw new Error(`Index ${e} is out of bounds for size ${t}`);return{start:i,stop:i+1,step:1,isIndex:!0}}return o>0?(e===null&&(e=0),n===null&&(n=t)):(e===null&&(e=t-1),n===null&&(n=-t-1)),e<0&&(e=t+e),n<0&&(n=t+n),e=Math.max(0,Math.min(e,t)),n=Math.max(-1,Math.min(n,t)),{start:e,stop:n,step:o,isIndex:!1}}var j="float64";function T(r){switch(r){case"float64":return Float64Array;case"float32":return Float32Array;case"int64":return BigInt64Array;case"int32":return Int32Array;case"int16":return Int16Array;case"int8":return Int8Array;case"uint64":return BigUint64Array;case"uint32":return Uint32Array;case"uint16":return Uint16Array;case"uint8":return Uint8Array;case"bool":return Uint8Array;default:throw new Error(`Unknown dtype: ${r}`)}}function Tr(r){switch(r){case"float64":case"int64":case"uint64":return 8;case"float32":case"int32":case"uint32":return 4;case"int16":case"uint16":return 2;case"int8":case"uint8":case"bool":return 1;default:throw new Error(`Unknown dtype: ${r}`)}}function we(r){return r==="int64"||r==="int32"||r==="int16"||r==="int8"||r==="uint64"||r==="uint32"||r==="uint16"||r==="uint8"}function xe(r){return r==="float64"||r==="float32"}function w(r){return r==="int64"||r==="uint64"}function k(r,t){if(r===t)return r;if(r==="bool")return t;if(t==="bool")return r;if(xe(r)||xe(t)){if(r==="float64"||t==="float64")return"float64";if(r==="float32"){let c=t;return c==="int32"||c==="int64"||c==="uint32"||c==="uint64"?"float64":"float32"}if(t==="float32"){let c=r;return c==="int32"||c==="int64"||c==="uint32"||c==="uint64"?"float64":"float32"}return"float32"}let e=r.startsWith("int"),n=t.startsWith("int"),o=r.startsWith("uint"),a=t.startsWith("uint"),i=c=>c.includes("64")?64:c.includes("32")?32:c.includes("16")?16:c.includes("8")?8:0,u=i(r),s=i(t);if(r==="int64"&&t==="uint64"||r==="uint64"&&t==="int64")return"float64";if(e&&a&&u===s){if(u===8)return"int16";if(u===16)return"int32";if(u===32)return"int64"}if(o&&n&&u===s){if(s===8)return"int16";if(s===16)return"int32";if(s===32)return"int64"}if(e&&n||o&&a){let c=Math.max(u,s);return e?c===64?"int64":c===32?"int32":c===16?"int16":"int8":c===64?"uint64":c===32?"uint32":c===16?"uint16":"uint8"}return e&&a?u>s?r:s===8?"int16":s===16?"int32":s===32?"int64":"float64":o&&n?s>u?t:u===8?"int16":u===16?"int32":u===32?"int64":"float64":"float64"}var S=class r{constructor(t,e,n,o,a){this._data=t,this._shape=e,this._strides=n,this._offset=o,this._dtype=a}get shape(){return this._shape}get ndim(){return this._shape.length}get size(){return this._shape.reduce((t,e)=>t*e,1)}get dtype(){return this._dtype}get data(){return this._data}get strides(){return this._strides}get offset(){return this._offset}get isCContiguous(){let t=this._shape,e=this._strides,n=t.length;if(n===0)return!0;if(n===1)return e[0]===1;let o=1;for(let a=n-1;a>=0;a--){if(e[a]!==o)return!1;o*=t[a]}return!0}get isFContiguous(){let t=this._shape,e=this._strides,n=t.length;if(n===0)return!0;if(n===1)return e[0]===1;let o=1;for(let a=0;a<n;a++){if(e[a]!==o)return!1;o*=t[a]}return!0}iget(t){let e=this._shape,n=this._strides,o=e.length;if(o===0)return this._data[this._offset];let a=t,i=this._offset;for(let u=0;u<o;u++){let s=1;for(let l=u+1;l<o;l++)s*=e[l];let c=Math.floor(a/s);a=a%s,i+=c*n[u]}return this._data[i]}iset(t,e){let n=this._shape,o=this._strides,a=n.length;if(a===0){this._data[this._offset]=e;return}let i=t,u=this._offset;for(let s=0;s<a;s++){let c=1;for(let m=s+1;m<a;m++)c*=n[m];let l=Math.floor(i/c);i=i%c,u+=l*o[s]}this._data[u]=e}get(...t){let e=this._strides,n=this._offset;for(let o=0;o<t.length;o++)n+=t[o]*e[o];return this._data[n]}set(t,e){let n=this._strides,o=this._offset;for(let a=0;a<t.length;a++)o+=t[a]*n[a];this._data[o]=e}copy(){let t=Array.from(this._shape),e=this._dtype,n=this.size,o=T(e);if(!o)throw new Error(`Cannot copy array with dtype ${e}`);let a=new o(n);if(this.isCContiguous&&this._offset===0)if(w(e)){let i=this._data,u=a;for(let s=0;s<n;s++)u[s]=i[s]}else a.set(this._data);else if(w(e)){let i=a;for(let u=0;u<n;u++)i[u]=this.iget(u)}else for(let i=0;i<n;i++)a[i]=this.iget(i);return new r(a,t,r._computeStrides(t),0,e)}static fromData(t,e,n,o,a){let i=o??r._computeStrides(e),u=a??0;return new r(t,e,i,u,n)}static zeros(t,e=j){let n=t.reduce((i,u)=>i*u,1),o=T(e);if(!o)throw new Error(`Cannot create array with dtype ${e}`);let a=new o(n);return new r(a,t,r._computeStrides(t),0,e)}static ones(t,e=j){let n=t.reduce((i,u)=>i*u,1),o=T(e);if(!o)throw new Error(`Cannot create array with dtype ${e}`);let a=new o(n);return w(e)?a.fill(BigInt(1)):a.fill(1),new r(a,t,r._computeStrides(t),0,e)}static _computeStrides(t){let e=new Array(t.length),n=1;for(let o=t.length-1;o>=0;o--)e[o]=n,n*=t[o];return e}};function L(r){let t=new Array(r.length),e=1;for(let n=r.length-1;n>=0;n--)t[n]=e,e*=r[n];return t}function tr(r){if(r.length===0)return[];if(r.length===1)return Array.from(r[0]);let t=Math.max(...r.map(n=>n.length)),e=new Array(t);for(let n=0;n<t;n++){let o=1;for(let a of r){let i=a.length-t+n,u=i<0?1:a[i];if(u!==1){if(o===1)o=u;else if(o!==u)return null}}e[n]=o}return e}function Ks(r,t,e){let n=r.length,o=e.length,a=new Array(o).fill(0);for(let i=0;i<n;i++){let u=o-n+i,s=r[i],c=e[u];if(s===c)a[u]=t[i];else if(s===1)a[u]=0;else throw new Error("Invalid broadcast")}return a}function er(r,t){let e=Ks(r.shape,r.strides,t);return S.fromData(r.data,Array.from(t),r.dtype,e,r.offset)}function ut(...r){let t=tr(r);if(t===null){let e=r.map(n=>`(${n.join(",")})`).join(" ");throw new Error(`shape mismatch: objects cannot be broadcast to a single shape. Mismatch is between ${e}`)}return t}function sr(r,t){let e=r.length,n=t.length,o=Math.max(e,n),a=new Array(o);for(let i=0;i<o;i++){let u=i<o-e?1:r[i-(o-e)],s=i<o-n?1:t[i-(o-n)];if(u===s)a[i]=u;else if(u===1)a[i]=s;else if(s===1)a[i]=u;else throw new Error(`operands could not be broadcast together with shapes ${JSON.stringify(Array.from(r))} ${JSON.stringify(Array.from(t))}`)}return a}function ri(r,t,e){let n=r.length,o=e.length,a=new Array(o).fill(0);for(let i=0;i<n;i++){let u=o-n+i,s=r[i],c=e[u];if(s===c)a[u]=t[i];else if(s===1)a[u]=0;else throw new Error("Invalid broadcast")}return a}function Ur(r,t){let e=ri(r.shape,r.strides,t);return S.fromData(r.data,Array.from(t),r.dtype,e,r.offset)}function V(r,t,e,n){let o=sr(r.shape,t.shape),a=Ur(r,o),i=Ur(t,o),u=k(r.dtype,t.dtype),s=S.zeros(o,u),c=s.data,l=s.size;if(w(u)){let m=c;for(let f=0;f<l;f++){let y=a.iget(f),p=i.iget(f),d=typeof y=="bigint"?y:BigInt(Math.round(y)),g=typeof p=="bigint"?p:BigInt(Math.round(p));n==="add"?m[f]=d+g:n==="subtract"?m[f]=d-g:n==="multiply"?m[f]=d*g:n==="divide"?m[f]=d/g:m[f]=BigInt(Math.round(e(Number(d),Number(g))))}}else{let m=w(r.dtype)||w(t.dtype);for(let f=0;f<l;f++){let y=a.iget(f),p=i.iget(f),d=Number(y),g=Number(p);c[f]=e(d,g)}}return s}function Y(r,t,e){let n=sr(r.shape,t.shape),o=Ur(r,n),a=Ur(t,n),i=n.reduce((c,l)=>c*l,1),u=new Uint8Array(i),s=w(r.dtype)||w(t.dtype);for(let c=0;c<i;c++){let l=o.iget(c),m=a.iget(c),f=Number(l),y=Number(m);u[c]=e(f,y)?1:0}return S.fromData(u,n,"bool")}function F(r,t,e=!0){let n=r.dtype,o=Array.from(r.shape),a=r.size,u=e?n:n!=="float32"&&n!=="float64"?"float64":n,s=S.zeros(o,u),c=s.data,l=r.data;if(w(n))if(w(u)){let m=c;for(let f=0;f<a;f++){let y=Number(l[f]);m[f]=BigInt(Math.round(t(y)))}}else for(let m=0;m<a;m++)c[m]=t(Number(l[m]));else for(let m=0;m<a;m++)c[m]=t(Number(l[m]));return s}function ct(r,t){return r.isCContiguous&&t.isCContiguous&&r.shape.length===t.shape.length&&r.shape.every((e,n)=>e===t.shape[n])}function Ie(r,t){return typeof t=="number"?oi(r,t):ct(r,t)?ti(r,t):V(r,t,(e,n)=>e+n,"add")}function ti(r,t){let e=k(r.dtype,t.dtype),n=S.zeros(Array.from(r.shape),e),o=r.size,a=r.data,i=t.data,u=n.data;if(w(e)){let s=u;if(!w(r.dtype)||!w(t.dtype))for(let l=0;l<o;l++){let m=typeof a[l]=="bigint"?a[l]:BigInt(Math.round(Number(a[l]))),f=typeof i[l]=="bigint"?i[l]:BigInt(Math.round(Number(i[l])));s[l]=m+f}else{let l=a,m=i;for(let f=0;f<o;f++)s[f]=l[f]+m[f]}}else if(w(r.dtype)||w(t.dtype))for(let c=0;c<o;c++){let l=typeof a[c]=="bigint"?Number(a[c]):a[c],m=typeof i[c]=="bigint"?Number(i[c]):i[c];u[c]=l+m}else for(let c=0;c<o;c++)u[c]=a[c]+i[c];return n}function ze(r,t){return typeof t=="number"?ai(r,t):ct(r,t)?ei(r,t):V(r,t,(e,n)=>e-n,"subtract")}function ei(r,t){let e=k(r.dtype,t.dtype),n=S.zeros(Array.from(r.shape),e),o=r.size,a=r.data,i=t.data,u=n.data;if(w(e)){let s=u;if(!w(r.dtype)||!w(t.dtype))for(let l=0;l<o;l++){let m=typeof a[l]=="bigint"?a[l]:BigInt(Math.round(Number(a[l]))),f=typeof i[l]=="bigint"?i[l]:BigInt(Math.round(Number(i[l])));s[l]=m-f}else{let l=a,m=i;for(let f=0;f<o;f++)s[f]=l[f]-m[f]}}else if(w(r.dtype)||w(t.dtype))for(let c=0;c<o;c++){let l=typeof a[c]=="bigint"?Number(a[c]):a[c],m=typeof i[c]=="bigint"?Number(i[c]):i[c];u[c]=l-m}else for(let c=0;c<o;c++)u[c]=a[c]-i[c];return n}function _e(r,t){return typeof t=="number"?si(r,t):ct(r,t)?ni(r,t):V(r,t,(e,n)=>e*n,"multiply")}function ni(r,t){let e=k(r.dtype,t.dtype),n=S.zeros(Array.from(r.shape),e),o=r.size,a=r.data,i=t.data,u=n.data;if(w(e)){let s=u;if(!w(r.dtype)||!w(t.dtype))for(let l=0;l<o;l++){let m=typeof a[l]=="bigint"?a[l]:BigInt(Math.round(Number(a[l]))),f=typeof i[l]=="bigint"?i[l]:BigInt(Math.round(Number(i[l])));s[l]=m*f}else{let l=a,m=i;for(let f=0;f<o;f++)s[f]=l[f]*m[f]}}else if(w(r.dtype)||w(t.dtype))for(let c=0;c<o;c++){let l=typeof a[c]=="bigint"?Number(a[c]):a[c],m=typeof i[c]=="bigint"?Number(i[c]):i[c];u[c]=l*m}else for(let c=0;c<o;c++)u[c]=a[c]*i[c];return n}function Be(r,t){if(typeof t=="number")return ii(r,t);let e=r.dtype==="float64",n=t.dtype==="float64",o=r.dtype==="float32",a=t.dtype==="float32";if(e||n){let s=e?r:fr(r,"float64"),c=n?t:fr(t,"float64");return V(s,c,(l,m)=>l/m,"divide")}if(o||a){let s=o?r:fr(r,"float32"),c=a?t:fr(t,"float32");return V(s,c,(l,m)=>l/m,"divide")}let i=fr(r,"float64"),u=fr(t,"float64");return V(i,u,(s,c)=>s/c,"divide")}function fr(r,t){let e=S.zeros(Array.from(r.shape),t),n=r.size,o=r.data,a=e.data;for(let i=0;i<n;i++)a[i]=Number(o[i]);return e}function oi(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=S.zeros(n,e),u=i.data;if(w(e)){let s=o,c=u,l=BigInt(Math.round(t));for(let m=0;m<a;m++)c[m]=s[m]+l}else for(let s=0;s<a;s++)u[s]=Number(o[s])+t;return i}function ai(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=S.zeros(n,e),u=i.data;if(w(e)){let s=o,c=u,l=BigInt(Math.round(t));for(let m=0;m<a;m++)c[m]=s[m]-l}else for(let s=0;s<a;s++)u[s]=Number(o[s])-t;return i}function si(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=S.zeros(n,e),u=i.data;if(w(e)){let s=o,c=u,l=BigInt(Math.round(t));for(let m=0;m<a;m++)c[m]=s[m]*l}else for(let s=0;s<a;s++)u[s]=Number(o[s])*t;return i}function ii(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,u=e!=="float32"&&e!=="float64"?"float64":e,s=S.zeros(n,u),c=s.data;if(w(e))for(let l=0;l<a;l++)c[l]=Number(o[l])/t;else for(let l=0;l<a;l++)c[l]=Number(o[l])/t;return s}function ve(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=S.zeros(e,t),i=a.data;if(w(t)){let u=n,s=i;for(let c=0;c<o;c++){let l=u[c];s[c]=l<0n?-l:l}}else for(let u=0;u<o;u++)i[u]=Math.abs(Number(n[u]));return a}function Ee(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=S.zeros(e,t),i=a.data;if(w(t)){let u=n,s=i;for(let c=0;c<o;c++)s[c]=-u[c]}else for(let u=0;u<o;u++)i[u]=-Number(n[u]);return a}function Me(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=S.zeros(e,t),i=a.data;if(w(t)){let u=n,s=i;for(let c=0;c<o;c++){let l=u[c];s[c]=l>0n?1n:l<0n?-1n:0n}}else for(let u=0;u<o;u++){let s=Number(n[u]);i[u]=s>0?1:s<0?-1:0}return a}function $r(r,t){return typeof t=="number"?ui(r,t):V(r,t,(e,n)=>(e%n+n)%n,"mod")}function ui(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=S.zeros(n,e),u=i.data;if(w(e)){let s=o,c=u,l=BigInt(Math.round(t));for(let m=0;m<a;m++){let f=s[m];c[m]=(f%l+l)%l}}else for(let s=0;s<a;s++){let c=Number(o[s]);u[s]=(c%t+t)%t}return i}function lt(r,t){return typeof t=="number"?ci(r,t):V(r,t,(e,n)=>Math.floor(e/n),"floor_divide")}function ci(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=S.zeros(n,e),u=i.data;if(w(e)){let s=o,c=u,l=BigInt(Math.round(t));for(let m=0;m<a;m++)c[m]=s[m]/l}else for(let s=0;s<a;s++)u[s]=Math.floor(Number(o[s])/t);return i}function Oe(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=S.zeros(e,t),i=a.data;for(let u=0;u<o;u++)i[u]=n[u];return a}function Te(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,i=t!=="float32"&&t!=="float64"?"float64":t,u=S.zeros(e,i),s=u.data;if(w(t))for(let c=0;c<o;c++)s[c]=1/Number(n[c]);else for(let c=0;c<o;c++)s[c]=1/Number(n[c]);return u}function Ue(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,i=t!=="float32"&&t!=="float64"?"float64":t,u=S.zeros(e,i),s=u.data;for(let c=0;c<o;c++)s[c]=Math.cbrt(Number(n[c]));return u}function $e(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=t==="float32"?"float32":"float64",i=S.zeros(e,a),u=i.data;for(let s=0;s<o;s++)u[s]=Math.abs(Number(n[s]));return i}function ke(r,t){let e=lt(r,t),n=$r(r,t);return[e,n]}function Ce(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=S.zeros(e,t),i=a.data;if(w(t)){let u=n,s=i;for(let c=0;c<o;c++)s[c]=u[c]*u[c]}else for(let u=0;u<o;u++){let s=Number(n[u]);i[u]=s*s}return a}function Fe(r,t){return $r(r,t)}function Ve(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.size,a=e==="float32"?"float32":"float64",i=S.zeros(n,a),u=i.data;if(typeof t=="number")for(let s=0;s<o;s++){let c=Number(r.data[s]);c<0?u[s]=0:c===0?u[s]=t:u[s]=1}else{let s=t.data,c=t.shape;if(n.every((l,m)=>l===c[m]))for(let l=0;l<o;l++){let m=Number(r.data[l]);m<0?u[l]=0:m===0?u[l]=Number(s[l]):u[l]=1}else for(let l=0;l<o;l++){let m=Number(r.data[l]),f=l%t.size;m<0?u[l]=0:m===0?u[l]=Number(s[f]):u[l]=1}}return i}function qe(r,t){if(typeof t=="number"){let e=S.zeros(Array.from(r.shape),"float64"),n=e.data,o=r.data,a=r.size;for(let i=0;i<a;i++)n[i]=Math.pow(Number(o[i]),t);return e}return V(r,t,(e,n)=>Math.pow(e,n),"float_power")}function je(r,t){if(typeof t=="number"){let e=r.copy(),n=e.data,o=r.size;for(let a=0;a<o;a++){let i=Number(n[a]);n[a]=i-Math.trunc(i/t)*t}return e}return V(r,t,(e,n)=>e-Math.trunc(e/n)*n,"fmod")}function Pe(r){let t=S.zeros(Array.from(r.shape),"float64"),e=S.zeros(Array.from(r.shape),"int32"),n=t.data,o=e.data,a=r.data,i=r.size;for(let u=0;u<i;u++){let s=Number(a[u]);if(s===0||!isFinite(s))n[u]=s,o[u]=0;else{let c=Math.floor(Math.log2(Math.abs(s)))+1,l=s/Math.pow(2,c);n[u]=l,o[u]=c}}return[t,e]}function Re(r,t){let e=(s,c)=>{for(s=Math.abs(Math.trunc(s)),c=Math.abs(Math.trunc(c));c!==0;){let l=c;c=s%c,s=l}return s};if(typeof t=="number"){let s=S.zeros(Array.from(r.shape),"int32"),c=s.data,l=r.data,m=r.size,f=Math.abs(Math.trunc(t));for(let y=0;y<m;y++)c[y]=e(Number(l[y]),f);return s}let n=V(r,t,e,"gcd"),o=S.zeros(Array.from(n.shape),"int32"),a=o.data,i=n.data,u=n.size;for(let s=0;s<u;s++)a[s]=Math.round(Number(i[s]));return o}function Le(r,t){let e=(c,l)=>{for(c=Math.abs(Math.trunc(c)),l=Math.abs(Math.trunc(l));l!==0;){let m=l;l=c%l,c=m}return c},n=(c,l)=>(c=Math.abs(Math.trunc(c)),l=Math.abs(Math.trunc(l)),c===0||l===0?0:c*l/e(c,l));if(typeof t=="number"){let c=S.zeros(Array.from(r.shape),"int32"),l=c.data,m=r.data,f=r.size,y=Math.abs(Math.trunc(t));for(let p=0;p<f;p++)l[p]=n(Number(m[p]),y);return c}let o=V(r,t,n,"lcm"),a=S.zeros(Array.from(o.shape),"int32"),i=a.data,u=o.data,s=o.size;for(let c=0;c<s;c++)i[c]=Math.round(Number(u[c]));return a}function Ge(r,t){if(typeof t=="number"){let e=S.zeros(Array.from(r.shape),"float64"),n=e.data,o=r.data,a=r.size,i=Math.pow(2,t);for(let u=0;u<a;u++)n[u]=Number(o[u])*i;return e}return V(r,t,(e,n)=>e*Math.pow(2,n),"ldexp")}function We(r){let t=S.zeros(Array.from(r.shape),"float64"),e=S.zeros(Array.from(r.shape),"float64"),n=t.data,o=e.data,a=r.data,i=r.size;for(let u=0;u<i;u++){let s=Number(a[u]),c=Math.trunc(s);o[u]=c,n[u]=s-c}return[t,e]}function Ze(r,t){return typeof t=="number"?fi(r,t):Y(r,t,(e,n)=>e>n)}function He(r,t){return typeof t=="number"?mi(r,t):Y(r,t,(e,n)=>e>=n)}function Ye(r,t){return typeof t=="number"?yi(r,t):Y(r,t,(e,n)=>e<n)}function Je(r,t){return typeof t=="number"?pi(r,t):Y(r,t,(e,n)=>e<=n)}function Xe(r,t){return typeof t=="number"?di(r,t):Y(r,t,(e,n)=>e===n)}function Qe(r,t){return typeof t=="number"?gi(r,t):Y(r,t,(e,n)=>e!==n)}function ft(r,t,e=1e-5,n=1e-8){return typeof t=="number"?bi(r,t,e,n):Y(r,t,(o,a)=>{let i=Math.abs(o-a),u=n+e*Math.abs(a);return i<=u})}function Ke(r,t,e=1e-5,n=1e-8){let o=ft(r,t,e,n),a=o.data;for(let i=0;i<o.size;i++)if(a[i]===0)return!1;return!0}function rn(r,t){let e=[Array.from(r.shape),Array.from(t.shape)],n=tr(e);if(n===null)return!1;let o=er(r,n),a=er(t,n),i=n.length,u=n.reduce((l,m)=>l*m,1),s=w(o.dtype),c=w(a.dtype);for(let l=0;l<u;l++){let m=l,f=new Array(i);for(let d=i-1;d>=0;d--)f[d]=m%n[d],m=Math.floor(m/n[d]);let y=o.get(...f),p=a.get(...f);if(s||c){let d=typeof y=="bigint"?y:BigInt(Number(y)),g=typeof p=="bigint"?p:BigInt(Number(p));if(d!==g)return!1}else if(y!==p)return!1}return!0}function fi(r,t){let e=new Uint8Array(r.size),n=r.data;for(let o=0;o<r.size;o++)e[o]=n[o]>t?1:0;return S.fromData(e,Array.from(r.shape),"bool")}function mi(r,t){let e=new Uint8Array(r.size),n=r.data;for(let o=0;o<r.size;o++)e[o]=n[o]>=t?1:0;return S.fromData(e,Array.from(r.shape),"bool")}function yi(r,t){let e=new Uint8Array(r.size),n=r.data;for(let o=0;o<r.size;o++)e[o]=n[o]<t?1:0;return S.fromData(e,Array.from(r.shape),"bool")}function pi(r,t){let e=new Uint8Array(r.size),n=r.data;for(let o=0;o<r.size;o++)e[o]=n[o]<=t?1:0;return S.fromData(e,Array.from(r.shape),"bool")}function di(r,t){let e=new Uint8Array(r.size),n=r.data,o=r.dtype;if(w(o)){let a=BigInt(Math.round(t)),i=n;for(let u=0;u<r.size;u++)e[u]=i[u]===a?1:0}else for(let a=0;a<r.size;a++)e[a]=n[a]===t?1:0;return S.fromData(e,Array.from(r.shape),"bool")}function gi(r,t){let e=new Uint8Array(r.size),n=r.data;for(let o=0;o<r.size;o++)e[o]=n[o]!==t?1:0;return S.fromData(e,Array.from(r.shape),"bool")}function bi(r,t,e,n){let o=new Uint8Array(r.size),a=r.data,i=r.dtype;if(w(i)){let u=a;for(let s=0;s<r.size;s++){let c=Number(u[s]),l=Math.abs(c-t),m=n+e*Math.abs(t);o[s]=l<=m?1:0}}else for(let u=0;u<r.size;u++){let s=Number(a[u]),c=Math.abs(s-t),l=n+e*Math.abs(t);o[u]=c<=l?1:0}return S.fromData(o,Array.from(r.shape),"bool")}function M(r,t){let e=0,n=1;for(let o=r.length-1;o>=0;o--)e+=r[o]*n,n*=t[o];return e}function O(r,t,e,n){let o=n.length,a=new Array(o),i=Array.from(n).filter((s,c)=>c!==t),u=r;for(let s=i.length-1;s>=0;s--)a[s>=t?s+1:s]=u%i[s],u=Math.floor(u/i[s]);return a[t]=e,a}function hr(r,t,e=!1){let n=r.dtype,o=r.shape,a=o.length,i=r.size,u=r.data;if(t===void 0)if(w(n)){let p=u,d=BigInt(0);for(let g=0;g<i;g++)d+=p[g];return Number(d)}else{let p=0;for(let d=0;d<i;d++)p+=Number(u[d]);return p}let s=t;if(s<0&&(s=a+s),s<0||s>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let c=Array.from(o).filter((p,d)=>d!==s);if(c.length===0)return hr(r);let l=S.zeros(c,n),m=l.data,f=o[s],y=c.reduce((p,d)=>p*d,1);if(w(n)){let p=u,d=m;for(let g=0;g<y;g++){let h=BigInt(0);for(let A=0;A<f;A++){let b=O(g,s,A,o),N=M(b,o);h+=p[N]}d[g]=h}}else for(let p=0;p<y;p++){let d=0;for(let g=0;g<f;g++){let h=O(p,s,g,o),A=M(h,o);d+=Number(u[A])}m[p]=d}if(e){let p=[...o];return p[s]=1,S.fromData(m,p,n)}return l}function kr(r,t,e=!1){let n=r.dtype,o=r.shape;if(t===void 0)return hr(r)/r.size;let a=t;if(a<0&&(a=o.length+a),a<0||a>=o.length)throw new Error(`axis ${t} is out of bounds for array of dimension ${o.length}`);let i=hr(r,t,e);if(typeof i=="number")return i/o[a];let u=o[a],s=n;(w(n)||n.startsWith("int")||n.startsWith("uint"))&&(s="float64");let c=S.zeros(Array.from(i.shape),s),l=c.data,m=i.data;if(w(n)){let f=m;for(let y=0;y<l.length;y++)l[y]=Number(f[y])/u}else for(let f=0;f<l.length;f++)l[f]=Number(m[f])/u;return c}function Cr(r,t,e=!1){let n=r.dtype,o=r.shape,a=o.length,i=r.size,u=r.data;if(t===void 0){if(i===0)throw new Error("max of empty array");let p=u[0];for(let d=1;d<i;d++)u[d]>p&&(p=u[d]);return Number(p)}let s=t;if(s<0&&(s=a+s),s<0||s>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let c=Array.from(o).filter((p,d)=>d!==s);if(c.length===0)return Cr(r);let l=S.zeros(c,n),m=l.data,f=o[s],y=c.reduce((p,d)=>p*d,1);if(w(n)){let p=u,d=m;for(let g=0;g<y;g++){let h=O(g,s,0,o),A=M(h,o),b=p[A];for(let N=1;N<f;N++){let D=O(g,s,N,o),x=M(D,o),I=p[x];I>b&&(b=I)}d[g]=b}}else for(let p=0;p<y;p++){let d=-1/0;for(let g=0;g<f;g++){let h=O(p,s,g,o),A=M(h,o),b=Number(u[A]);b>d&&(d=b)}m[p]=d}if(e){let p=[...o];return p[s]=1,S.fromData(m,p,n)}return l}function mt(r,t,e=!1){let n=r.dtype,o=r.shape,a=o.length,i=r.size,u=r.data;if(t===void 0)if(w(n)){let p=u,d=BigInt(1);for(let g=0;g<i;g++)d*=p[g];return Number(d)}else{let p=1;for(let d=0;d<i;d++)p*=Number(u[d]);return p}let s=t;if(s<0&&(s=a+s),s<0||s>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let c=Array.from(o).filter((p,d)=>d!==s);if(c.length===0)return mt(r);let l=S.zeros(c,n),m=l.data,f=o[s],y=c.reduce((p,d)=>p*d,1);if(w(n)){let p=u,d=m;for(let g=0;g<y;g++){let h=BigInt(1);for(let A=0;A<f;A++){let b=O(g,s,A,o),N=M(b,o);h*=p[N]}d[g]=h}}else for(let p=0;p<y;p++){let d=1;for(let g=0;g<f;g++){let h=O(p,s,g,o),A=M(h,o);d*=Number(u[A])}m[p]=d}if(e){let p=[...o];return p[s]=1,S.fromData(m,p,n)}return l}function Fr(r,t,e=!1){let n=r.dtype,o=r.shape,a=o.length,i=r.size,u=r.data;if(t===void 0){if(i===0)throw new Error("min of empty array");let p=u[0];for(let d=1;d<i;d++)u[d]<p&&(p=u[d]);return Number(p)}let s=t;if(s<0&&(s=a+s),s<0||s>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let c=Array.from(o).filter((p,d)=>d!==s);if(c.length===0)return Fr(r);let l=S.zeros(c,n),m=l.data,f=o[s],y=c.reduce((p,d)=>p*d,1);if(w(n)){let p=u,d=m;for(let g=0;g<y;g++){let h=O(g,s,0,o),A=M(h,o),b=p[A];for(let N=1;N<f;N++){let D=O(g,s,N,o),x=M(D,o),I=p[x];I<b&&(b=I)}d[g]=b}}else for(let p=0;p<y;p++){let d=1/0;for(let g=0;g<f;g++){let h=O(p,s,g,o),A=M(h,o),b=Number(u[A]);b<d&&(d=b)}m[p]=d}if(e){let p=[...o];return p[s]=1,S.fromData(m,p,n)}return l}function yt(r,t){let e=r.dtype,n=r.shape,o=n.length,a=r.size,i=r.data;if(t===void 0){if(a===0)throw new Error("argmin of empty array");let y=i[0],p=0;for(let d=1;d<a;d++)i[d]<y&&(y=i[d],p=d);return p}let u=t;if(u<0&&(u=o+u),u<0||u>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let s=Array.from(n).filter((y,p)=>p!==u);if(s.length===0)return yt(r);let c=S.zeros(s,"int32"),l=c.data,m=n[u],f=s.reduce((y,p)=>y*p,1);if(w(e)){let y=i;for(let p=0;p<f;p++){let d=O(p,u,0,n),g=M(d,n),h=y[g],A=0;for(let b=1;b<m;b++){let N=O(p,u,b,n),D=M(N,n),x=y[D];x<h&&(h=x,A=b)}l[p]=A}}else for(let y=0;y<f;y++){let p=1/0,d=0;for(let g=0;g<m;g++){let h=O(y,u,g,n),A=M(h,n),b=Number(i[A]);b<p&&(p=b,d=g)}l[y]=d}return c}function pt(r,t){let e=r.dtype,n=r.shape,o=n.length,a=r.size,i=r.data;if(t===void 0){if(a===0)throw new Error("argmax of empty array");let y=i[0],p=0;for(let d=1;d<a;d++)i[d]>y&&(y=i[d],p=d);return p}let u=t;if(u<0&&(u=o+u),u<0||u>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let s=Array.from(n).filter((y,p)=>p!==u);if(s.length===0)return pt(r);let c=S.zeros(s,"int32"),l=c.data,m=n[u],f=s.reduce((y,p)=>y*p,1);if(w(e)){let y=i;for(let p=0;p<f;p++){let d=O(p,u,0,n),g=M(d,n),h=y[g],A=0;for(let b=1;b<m;b++){let N=O(p,u,b,n),D=M(N,n),x=y[D];x>h&&(h=x,A=b)}l[p]=A}}else for(let y=0;y<f;y++){let p=-1/0,d=0;for(let g=0;g<m;g++){let h=O(y,u,g,n),A=M(h,n),b=Number(i[A]);b>p&&(p=b,d=g)}l[y]=d}return c}function dt(r,t,e=0,n=!1){let o=r.shape,a=o.length,i=r.size,u=r.data,s=kr(r,t,n);if(t===void 0){let h=s,A=0;for(let b=0;b<i;b++){let N=Number(u[b])-h;A+=N*N}return A/(i-e)}let c=t;if(c<0&&(c=a+c),c<0||c>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let l=o[c],m=s,f=m.data,y=n?m.shape:Array.from(o).filter((h,A)=>A!==c),p=S.zeros(Array.from(y),"float64"),d=p.data,g=y.reduce((h,A)=>h*A,1);for(let h=0;h<g;h++){let A=0,b=Number(f[h]);for(let N=0;N<l;N++){let D=O(h,c,N,o),x=M(D,o),I=Number(u[x])-b;A+=I*I}d[h]=A/(l-e)}return p}function tn(r,t,e=0,n=!1){let o=dt(r,t,e,n);if(typeof o=="number")return Math.sqrt(o);let a=S.zeros(Array.from(o.shape),"float64"),i=o.data,u=a.data;for(let s=0;s<i.length;s++)u[s]=Math.sqrt(Number(i[s]));return a}function gt(r,t,e=!1){let n=r.shape,o=n.length,a=r.size,i=r.data;if(t===void 0){for(let y=0;y<a;y++)if(!i[y])return!1;return!0}let u=t;if(u<0&&(u=o+u),u<0||u>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let s=Array.from(n).filter((y,p)=>p!==u);if(s.length===0)return gt(r);let c=S.zeros(s,"bool"),l=c.data,m=n[u],f=s.reduce((y,p)=>y*p,1);for(let y=0;y<f;y++){let p=!0;for(let d=0;d<m;d++){let g=O(y,u,d,n),h=M(g,n);if(!i[h]){p=!1;break}}l[y]=p?1:0}if(e){let y=[...n];return y[u]=1,S.fromData(l,y,"bool")}return c}function bt(r,t,e=!1){let n=r.shape,o=n.length,a=r.size,i=r.data;if(t===void 0){for(let y=0;y<a;y++)if(i[y])return!0;return!1}let u=t;if(u<0&&(u=o+u),u<0||u>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let s=Array.from(n).filter((y,p)=>p!==u);if(s.length===0)return bt(r);let c=S.zeros(s,"bool"),l=c.data,m=n[u],f=s.reduce((y,p)=>y*p,1);for(let y=0;y<f;y++){let p=!1;for(let d=0;d<m;d++){let g=O(y,u,d,n),h=M(g,n);if(i[h]){p=!0;break}}l[y]=p?1:0}if(e){let y=[...n];return y[u]=1,S.fromData(l,y,"bool")}return c}function At(r,t){let e=r.shape,n=e.length,o=r.data;if(t===void 0){let f=r.size,y=new Float64Array(f),p=0;for(let d=0;d<f;d++)p+=Number(o[d]),y[d]=p;return S.fromData(y,[f],"float64")}let a=t;if(a<0&&(a=n+a),a<0||a>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);let i=new Float64Array(r.size),u=e[a],s=[],c=1;for(let f=n-1;f>=0;f--)s.unshift(c),c*=e[f];let l=r.size,m=s[a];for(let f=0;f<l;f++)Math.floor(f/m)%u===0?i[f]=Number(o[f]):i[f]=i[f-m]+Number(o[f]);return S.fromData(i,[...e],"float64")}function ht(r,t){let e=r.shape,n=e.length,o=r.data;if(t===void 0){let f=r.size,y=new Float64Array(f),p=1;for(let d=0;d<f;d++)p*=Number(o[d]),y[d]=p;return S.fromData(y,[f],"float64")}let a=t;if(a<0&&(a=n+a),a<0||a>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);let i=new Float64Array(r.size),u=e[a],s=[],c=1;for(let f=n-1;f>=0;f--)s.unshift(c),c*=e[f];let l=r.size,m=s[a];for(let f=0;f<l;f++)Math.floor(f/m)%u===0?i[f]=Number(o[f]):i[f]=i[f-m]*Number(o[f]);return S.fromData(i,[...e],"float64")}function St(r,t,e=!1){let n=Cr(r,t,e),o=Fr(r,t,e);if(typeof n=="number"&&typeof o=="number")return n-o;let a=n,i=o,u=a.data,s=i.data,c=new Float64Array(a.size);for(let l=0;l<a.size;l++)c[l]=Number(u[l])-Number(s[l]);return S.fromData(c,[...a.shape],"float64")}function Nt(r,t,e=!1){return mr(r,.5,t,e)}function Dt(r,t,e,n=!1){return mr(r,t/100,e,n)}function mr(r,t,e,n=!1){if(t<0||t>1)throw new Error("Quantile must be between 0 and 1");let o=r.shape,a=o.length,i=r.data;if(e===void 0){let y=[];for(let b=0;b<r.size;b++)y.push(Number(i[b]));y.sort((b,N)=>b-N);let p=y.length,d=t*(p-1),g=Math.floor(d),h=Math.ceil(d);if(g===h)return y[g];let A=d-g;return y[g]*(1-A)+y[h]*A}let u=e;if(u<0&&(u=a+u),u<0||u>=a)throw new Error(`axis ${e} is out of bounds for array of dimension ${a}`);let s=Array.from(o).filter((y,p)=>p!==u);if(s.length===0)return mr(r,t);let c=s.reduce((y,p)=>y*p,1),l=o[u],m=new Float64Array(c);for(let y=0;y<c;y++){let p=[];for(let b=0;b<l;b++){let N=O(y,u,b,o),D=M(N,o);p.push(Number(i[D]))}p.sort((b,N)=>b-N);let d=p.length,g=t*(d-1),h=Math.floor(g),A=Math.ceil(g);if(h===A)m[y]=p[h];else{let b=g-h;m[y]=p[h]*(1-b)+p[A]*b}}let f=S.fromData(m,s,"float64");if(n){let y=[...o];return y[u]=1,S.fromData(m,y,"float64")}return f}function Vr(r,t,e,n=!1){let o=r.shape,a=o.length,i=r.data;if(e===void 0)return kr(r,t,n);if(t===void 0){let p=0,d=0,g=e.data;for(let h=0;h<r.size;h++){let A=Number(g[h%e.size]);p+=Number(i[h])*A,d+=A}return d===0?NaN:p/d}let u=t;if(u<0&&(u=a+u),u<0||u>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let s=Array.from(o).filter((p,d)=>d!==u);if(s.length===0)return Vr(r,void 0,e);let c=s.reduce((p,d)=>p*d,1),l=o[u],m=e.data,f=new Float64Array(c);for(let p=0;p<c;p++){let d=0,g=0;for(let h=0;h<l;h++){let A=O(p,u,h,o),b=M(A,o),N=Number(m[h%e.size]);d+=Number(i[b])*N,g+=N}f[p]=g===0?NaN:d/g}let y=S.fromData(f,s,"float64");if(n){let p=[...o];return p[u]=1,S.fromData(f,p,"float64")}return y}function qr(r,t,e=!1){let n=r.shape,o=n.length,a=r.data;if(t===void 0){let f=0;for(let y=0;y<r.size;y++){let p=Number(a[y]);isNaN(p)||(f+=p)}return f}let i=t;if(i<0&&(i=o+i),i<0||i>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let u=Array.from(n).filter((f,y)=>y!==i);if(u.length===0)return qr(r);let s=u.reduce((f,y)=>f*y,1),c=n[i],l=new Float64Array(s);for(let f=0;f<s;f++){let y=0;for(let p=0;p<c;p++){let d=O(f,i,p,n),g=M(d,n),h=Number(a[g]);isNaN(h)||(y+=h)}l[f]=y}let m=S.fromData(l,u,"float64");if(e){let f=[...n];return f[i]=1,S.fromData(l,f,"float64")}return m}function jr(r,t,e=!1){let n=r.shape,o=n.length,a=r.data;if(t===void 0){let f=1;for(let y=0;y<r.size;y++){let p=Number(a[y]);isNaN(p)||(f*=p)}return f}let i=t;if(i<0&&(i=o+i),i<0||i>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let u=Array.from(n).filter((f,y)=>y!==i);if(u.length===0)return jr(r);let s=u.reduce((f,y)=>f*y,1),c=n[i],l=new Float64Array(s);for(let f=0;f<s;f++){let y=1;for(let p=0;p<c;p++){let d=O(f,i,p,n),g=M(d,n),h=Number(a[g]);isNaN(h)||(y*=h)}l[f]=y}let m=S.fromData(l,u,"float64");if(e){let f=[...n];return f[i]=1,S.fromData(l,f,"float64")}return m}function Pr(r,t,e=!1){let n=r.shape,o=n.length,a=r.data;if(t===void 0){let f=0,y=0;for(let p=0;p<r.size;p++){let d=Number(a[p]);isNaN(d)||(f+=d,y++)}return y===0?NaN:f/y}let i=t;if(i<0&&(i=o+i),i<0||i>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let u=Array.from(n).filter((f,y)=>y!==i);if(u.length===0)return Pr(r);let s=u.reduce((f,y)=>f*y,1),c=n[i],l=new Float64Array(s);for(let f=0;f<s;f++){let y=0,p=0;for(let d=0;d<c;d++){let g=O(f,i,d,n),h=M(g,n),A=Number(a[h]);isNaN(A)||(y+=A,p++)}l[f]=p===0?NaN:y/p}let m=S.fromData(l,u,"float64");if(e){let f=[...n];return f[i]=1,S.fromData(l,f,"float64")}return m}function Sr(r,t,e=0,n=!1){let o=r.shape,a=o.length,i=r.data;if(t===void 0){let y=0,p=0;for(let h=0;h<r.size;h++){let A=Number(i[h]);isNaN(A)||(y+=A,p++)}if(p-e<=0)return NaN;let d=y/p,g=0;for(let h=0;h<r.size;h++){let A=Number(i[h]);isNaN(A)||(g+=(A-d)**2)}return g/(p-e)}let u=t;if(u<0&&(u=a+u),u<0||u>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let s=Array.from(o).filter((y,p)=>p!==u);if(s.length===0)return Sr(r,void 0,e);let c=s.reduce((y,p)=>y*p,1),l=o[u],m=new Float64Array(c);for(let y=0;y<c;y++){let p=0,d=0;for(let A=0;A<l;A++){let b=O(y,u,A,o),N=M(b,o),D=Number(i[N]);isNaN(D)||(p+=D,d++)}if(d-e<=0){m[y]=NaN;continue}let g=p/d,h=0;for(let A=0;A<l;A++){let b=O(y,u,A,o),N=M(b,o),D=Number(i[N]);isNaN(D)||(h+=(D-g)**2)}m[y]=h/(d-e)}let f=S.fromData(m,s,"float64");if(n){let y=[...o];return y[u]=1,S.fromData(m,y,"float64")}return f}function xt(r,t,e=0,n=!1){let o=Sr(r,t,e,n);if(typeof o=="number")return Math.sqrt(o);let a=o,i=new Float64Array(a.size);for(let u=0;u<a.size;u++)i[u]=Math.sqrt(Number(a.data[u]));return S.fromData(i,[...a.shape],"float64")}function Rr(r,t,e=!1){let n=r.shape,o=n.length,a=r.data;if(t===void 0){let f=1/0;for(let y=0;y<r.size;y++){let p=Number(a[y]);!isNaN(p)&&p<f&&(f=p)}return f===1/0?NaN:f}let i=t;if(i<0&&(i=o+i),i<0||i>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let u=Array.from(n).filter((f,y)=>y!==i);if(u.length===0)return Rr(r);let s=u.reduce((f,y)=>f*y,1),c=n[i],l=new Float64Array(s);for(let f=0;f<s;f++){let y=1/0;for(let p=0;p<c;p++){let d=O(f,i,p,n),g=M(d,n),h=Number(a[g]);!isNaN(h)&&h<y&&(y=h)}l[f]=y===1/0?NaN:y}let m=S.fromData(l,u,"float64");if(e){let f=[...n];return f[i]=1,S.fromData(l,f,"float64")}return m}function Lr(r,t,e=!1){let n=r.shape,o=n.length,a=r.data;if(t===void 0){let f=-1/0;for(let y=0;y<r.size;y++){let p=Number(a[y]);!isNaN(p)&&p>f&&(f=p)}return f===-1/0?NaN:f}let i=t;if(i<0&&(i=o+i),i<0||i>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let u=Array.from(n).filter((f,y)=>y!==i);if(u.length===0)return Lr(r);let s=u.reduce((f,y)=>f*y,1),c=n[i],l=new Float64Array(s);for(let f=0;f<s;f++){let y=-1/0;for(let p=0;p<c;p++){let d=O(f,i,p,n),g=M(d,n),h=Number(a[g]);!isNaN(h)&&h>y&&(y=h)}l[f]=y===-1/0?NaN:y}let m=S.fromData(l,u,"float64");if(e){let f=[...n];return f[i]=1,S.fromData(l,f,"float64")}return m}function Gr(r,t){let e=r.shape,n=e.length,o=r.data;if(t===void 0){let l=1/0,m=-1;for(let f=0;f<r.size;f++){let y=Number(o[f]);!isNaN(y)&&y<l&&(l=y,m=f)}return m}let a=t;if(a<0&&(a=n+a),a<0||a>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);let i=Array.from(e).filter((l,m)=>m!==a);if(i.length===0)return Gr(r);let u=i.reduce((l,m)=>l*m,1),s=e[a],c=new Int32Array(u);for(let l=0;l<u;l++){let m=1/0,f=0;for(let y=0;y<s;y++){let p=O(l,a,y,e),d=M(p,e),g=Number(o[d]);!isNaN(g)&&g<m&&(m=g,f=y)}c[l]=f}return S.fromData(c,i,"int32")}function Wr(r,t){let e=r.shape,n=e.length,o=r.data;if(t===void 0){let l=-1/0,m=-1;for(let f=0;f<r.size;f++){let y=Number(o[f]);!isNaN(y)&&y>l&&(l=y,m=f)}return m}let a=t;if(a<0&&(a=n+a),a<0||a>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);let i=Array.from(e).filter((l,m)=>m!==a);if(i.length===0)return Wr(r);let u=i.reduce((l,m)=>l*m,1),s=e[a],c=new Int32Array(u);for(let l=0;l<u;l++){let m=-1/0,f=0;for(let y=0;y<s;y++){let p=O(l,a,y,e),d=M(p,e),g=Number(o[d]);!isNaN(g)&&g>m&&(m=g,f=y)}c[l]=f}return S.fromData(c,i,"int32")}function wt(r,t){let e=r.shape,n=e.length,o=r.data;if(t===void 0){let f=r.size,y=new Float64Array(f),p=0;for(let d=0;d<f;d++){let g=Number(o[d]);isNaN(g)||(p+=g),y[d]=p}return S.fromData(y,[f],"float64")}let a=t;if(a<0&&(a=n+a),a<0||a>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);let i=new Float64Array(r.size),u=e[a],s=[],c=1;for(let f=n-1;f>=0;f--)s.unshift(c),c*=e[f];let l=r.size,m=s[a];for(let f=0;f<l;f++){let y=Number(o[f]);Math.floor(f/m)%u===0?i[f]=isNaN(y)?0:y:i[f]=i[f-m]+(isNaN(y)?0:y)}return S.fromData(i,[...e],"float64")}function It(r,t){let e=r.shape,n=e.length,o=r.data;if(t===void 0){let f=r.size,y=new Float64Array(f),p=1;for(let d=0;d<f;d++){let g=Number(o[d]);isNaN(g)||(p*=g),y[d]=p}return S.fromData(y,[f],"float64")}let a=t;if(a<0&&(a=n+a),a<0||a>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);let i=new Float64Array(r.size),u=e[a],s=[],c=1;for(let f=n-1;f>=0;f--)s.unshift(c),c*=e[f];let l=r.size,m=s[a];for(let f=0;f<l;f++){let y=Number(o[f]);Math.floor(f/m)%u===0?i[f]=isNaN(y)?1:y:i[f]=i[f-m]*(isNaN(y)?1:y)}return S.fromData(i,[...e],"float64")}function Zr(r,t,e=!1){let n=r.shape,o=n.length,a=r.data;if(t===void 0){let f=[];for(let d=0;d<r.size;d++){let g=Number(a[d]);isNaN(g)||f.push(g)}if(f.length===0)return NaN;f.sort((d,g)=>d-g);let y=f.length,p=Math.floor(y/2);return y%2===0?(f[p-1]+f[p])/2:f[p]}let i=t;if(i<0&&(i=o+i),i<0||i>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let u=Array.from(n).filter((f,y)=>y!==i);if(u.length===0)return Zr(r);let s=u.reduce((f,y)=>f*y,1),c=n[i],l=new Float64Array(s);for(let f=0;f<s;f++){let y=[];for(let g=0;g<c;g++){let h=O(f,i,g,n),A=M(h,n),b=Number(a[A]);isNaN(b)||y.push(b)}if(y.length===0){l[f]=NaN;continue}y.sort((g,h)=>g-h);let p=y.length,d=Math.floor(p/2);p%2===0?l[f]=(y[d-1]+y[d])/2:l[f]=y[d]}let m=S.fromData(l,u,"float64");if(e){let f=[...n];return f[i]=1,S.fromData(l,f,"float64")}return m}function P(r,t){let e=r.size,n=r.dtype,o=t.indexOf(-1),a;if(o!==-1){let c=t.reduce((m,f,y)=>y===o?m:m*f,1),l=e/c;if(!Number.isInteger(l))throw new Error(`cannot reshape array of size ${e} into shape ${JSON.stringify(t)}`);a=t.map((m,f)=>f===o?l:m)}else a=t;if(a.reduce((c,l)=>c*l,1)!==e)throw new Error(`cannot reshape array of size ${e} into shape ${JSON.stringify(a)}`);if(r.isCContiguous){let c=r.data;return S.fromData(c,a,n,L(a),0)}let s=r.copy().data;return S.fromData(s,a,n,L(a),0)}function Hr(r){let t=r.size,e=r.dtype,n=T(e);if(!n)throw new Error(`Cannot flatten array with dtype ${e}`);if(r.isCContiguous){let u=r.data.slice(r.offset,r.offset+t);return S.fromData(u,[t],e,[1],0)}let o=new n(t),a=w(e);for(let i=0;i<t;i++){let u=r.iget(i);o[i]=u}return S.fromData(o,[t],e,[1],0)}function yr(r){let t=r.size,e=r.dtype;if(r.isCContiguous){let n=r.data;return S.fromData(n,[t],e,[1],0)}return Hr(r)}function Dr(r,t){let e=r.shape,n=e.length,o=r.strides,a=r.data,i=r.dtype,u;if(t===void 0)u=Array.from({length:n},(m,f)=>n-1-f);else{if(t.length!==n)throw new Error(`axes must have length ${n}, got ${t.length}`);let m=new Set;for(let f of t){let y=f<0?n+f:f;if(y<0||y>=n)throw new Error(`axis ${f} is out of bounds for array of dimension ${n}`);if(m.has(y))throw new Error("repeated axis in transpose");m.add(y)}u=t.map(f=>f<0?n+f:f)}let s=u.map(m=>e[m]),c=Array.from(o),l=u.map(m=>c[m]);return S.fromData(a,s,i,l,r.offset)}function en(r,t){let e=r.shape,n=e.length,o=r.strides,a=r.data,i=r.dtype;if(t===void 0){let u=[],s=[];for(let c=0;c<n;c++)e[c]!==1&&(u.push(e[c]),s.push(o[c]));return u.length===0&&(u.push(1),s.push(1)),S.fromData(a,u,i,s,r.offset)}else{let u=t<0?n+t:t;if(u<0||u>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);if(e[u]!==1)throw new Error(`cannot select an axis which has size not equal to one (axis ${t} has size ${e[u]})`);let s=[],c=[];for(let l=0;l<n;l++)l!==u&&(s.push(e[l]),c.push(o[l]));return S.fromData(a,s,i,c,r.offset)}}function Nr(r,t){let e=r.shape,n=e.length,o=r.strides,a=r.data,i=r.dtype,u=t;if(u<0&&(u=n+t+1),u<0||u>n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n+1}`);let s=[...Array.from(e)];s.splice(u,0,1);let c=[...Array.from(o)],l=u<n?o[u]*(e[u]||1):1;return c.splice(u,0,l),S.fromData(a,s,i,c,r.offset)}function nn(r,t,e){let n=r.shape,o=n.length,a=r.strides,i=r.data,u=r.dtype,s=t<0?o+t:t,c=e<0?o+e:e;if(s<0||s>=o)throw new Error(`axis1 ${t} is out of bounds for array of dimension ${o}`);if(c<0||c>=o)throw new Error(`axis2 ${e} is out of bounds for array of dimension ${o}`);if(s===c)return S.fromData(i,Array.from(n),u,Array.from(a),r.offset);let l=Array.from(n),m=Array.from(a);return[l[s],l[c]]=[l[c],l[s]],[m[s],m[c]]=[m[c],m[s]],S.fromData(i,l,u,m,r.offset)}function zt(r,t,e){let n=r.ndim,o=Array.isArray(t)?t:[t],a=Array.isArray(e)?e:[e];if(o.length!==a.length)throw new Error("source and destination must have the same number of elements");let i=o.map(c=>{let l=c<0?n+c:c;if(l<0||l>=n)throw new Error(`source axis ${c} is out of bounds for array of dimension ${n}`);return l}),u=a.map(c=>{let l=c<0?n+c:c;if(l<0||l>=n)throw new Error(`destination axis ${c} is out of bounds for array of dimension ${n}`);return l});if(new Set(i).size!==i.length)throw new Error("repeated axis in source");if(new Set(u).size!==u.length)throw new Error("repeated axis in destination");let s=[];for(let c=0;c<n;c++)i.includes(c)||s.push(c);for(let c=0;c<i.length;c++){let l=u[c];s.splice(l,0,i[c])}return Dr(r,s)}function ur(r,t=0){if(r.length===0)throw new Error("need at least one array to concatenate");if(r.length===1)return r[0].copy();let e=r[0],n=e.ndim,o=e.dtype,a=t<0?n+t:t;if(a<0||a>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);for(let y=1;y<r.length;y++){let p=r[y];if(p.ndim!==n)throw new Error("all the input arrays must have same number of dimensions");for(let d=0;d<n;d++)if(d!==a&&p.shape[d]!==e.shape[d])throw new Error("all the input array dimensions except for the concatenation axis must match exactly")}let i=Array.from(e.shape),u=e.shape[a];for(let y=1;y<r.length;y++)u+=r[y].shape[a];i[a]=u;let s=i.reduce((y,p)=>y*p,1),c=T(o);if(!c)throw new Error(`Cannot concatenate arrays with dtype ${o}`);let l=new c(s),m=L(i),f=0;for(let y of r){let p=y.shape[a];Si(y,l,i,m,a,f,o),f+=p}return S.fromData(l,i,o)}function Si(r,t,e,n,o,a,i){let u=r.shape,s=u.length,c=r.size,l=i==="int64"||i==="uint64";if(o===0&&r.isCContiguous&&s>0){let y=a*n[0],p=r.data,d=r.offset,g=d+c;t.set(p.subarray(d,g),y);return}if(o===1&&s===2&&r.isCContiguous){let y=u[0],p=u[1],d=e[1],g=r.data,h=r.offset;for(let A=0;A<y;A++){let b=h+A*p,N=A*d+a;t.set(g.subarray(b,b+p),N)}return}let m=new Array(s).fill(0),f=a*n[o];for(let y=0;y<c;y++){let p=r.iget(y),d=f;for(let g=0;g<s;g++)d+=m[g]*n[g];t[d]=p;for(let g=s-1;g>=0&&(m[g]++,!(m[g]<u[g]));g--)m[g]=0}}function on(r,t=0){if(r.length===0)throw new Error("need at least one array to stack");let e=r[0],n=e.shape,o=e.ndim,a=t<0?o+1+t:t;if(a<0||a>o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o+1}`);for(let u=1;u<r.length;u++){let s=r[u];if(s.ndim!==o)throw new Error("all input arrays must have the same shape");for(let c=0;c<o;c++)if(s.shape[c]!==n[c])throw new Error("all input arrays must have the same shape")}let i=r.map(u=>Nr(u,a));return ur(i,a)}function an(r){if(r.length===0)throw new Error("need at least one array to stack");let t=r.map(e=>e.ndim===1?P(e,[1,e.shape[0]]):e);return ur(t,0)}function _t(r){if(r.length===0)throw new Error("need at least one array to stack");return r.every(e=>e.ndim===1)?ur(r,0):ur(r,1)}function sn(r){if(r.length===0)throw new Error("need at least one array to stack");let t=r.map(e=>e.ndim===1?P(Nr(P(e,[1,e.shape[0]]),2),[1,e.shape[0],1]):e.ndim===2?Nr(e,2):e);return ur(t,2)}function un(r,t,e=0){let n=r.shape,o=n.length,a=e<0?o+e:e;if(a<0||a>=o)throw new Error(`axis ${e} is out of bounds for array of dimension ${o}`);let i=n[a],u;if(typeof t=="number"){if(i%t!==0)throw new Error("array split does not result in an equal division");let s=i/t;u=[];for(let c=1;c<t;c++)u.push(c*s)}else u=t;return cn(r,u,a)}function xr(r,t,e=0){let n=r.shape,o=n.length,a=e<0?o+e:e;if(a<0||a>=o)throw new Error(`axis ${e} is out of bounds for array of dimension ${o}`);let i=n[a],u;if(typeof t=="number"){let s=t,c=Math.floor(i/s),l=i%s;u=[];let m=0;for(let f=0;f<s-1;f++)m+=c+(f<l?1:0),u.push(m)}else u=t;return cn(r,u,a)}function cn(r,t,e){let n=r.shape,o=n[e],a=[0,...t,o],i=[];for(let u=0;u<a.length-1;u++){let s=a[u],c=a[u+1];if(s>c)throw new Error("split indices must be in ascending order");let l=Array.from(n);l[e]=c-s;let m=r.offset+s*r.strides[e];i.push(S.fromData(r.data,l,r.dtype,Array.from(r.strides),m))}return i}function ln(r,t){if(r.ndim<2)throw new Error("vsplit only works on arrays of 2 or more dimensions");return xr(r,t,0)}function fn(r,t){if(r.ndim<1)throw new Error("hsplit only works on arrays of 1 or more dimensions");let e=r.ndim===1?0:1;return xr(r,t,e)}function mn(r,t){let e=r.shape,n=e.length,o=r.dtype,a=Array.isArray(t)?t:[t],i=Math.max(n,a.length),u=new Array(i).fill(1),s=new Array(i).fill(1);for(let A=0;A<n;A++)u[i-n+A]=e[A];for(let A=0;A<a.length;A++)s[i-a.length+A]=a[A];let c=u.map((A,b)=>A*s[b]),l=c.reduce((A,b)=>A*b,1),m=T(o);if(!m)throw new Error(`Cannot tile array with dtype ${o}`);let f=new m(l),y=L(c),p=r;n<i&&(p=P(r,u));let d=o==="int64"||o==="uint64",g=p.strides,h=new Array(i).fill(0);for(let A=0;A<l;A++){let b=p.offset;for(let x=0;x<i;x++){let I=h[x]%u[x];b+=I*g[x]}let N=p.data[b],D=0;for(let x=0;x<i;x++)D+=h[x]*y[x];f[D]=N;for(let x=i-1;x>=0&&(h[x]++,!(h[x]<c[x]));x--)h[x]=0}return S.fromData(f,c,o)}function yn(r,t,e){let n=r.shape,o=n.length,a=r.dtype,i=r.size;if(e===void 0){let A=i,b=Array.isArray(t)?t:new Array(A).fill(t);if(b.length!==A)throw new Error(`operands could not be broadcast together with shape (${A},) (${b.length},)`);let N=b.reduce((_,B)=>_+B,0),D=T(a);if(!D)throw new Error(`Cannot repeat array with dtype ${a}`);let x=new D(N),I=0;for(let _=0;_<A;_++){let B=r.iget(_),v=b[_];for(let E=0;E<v;E++)x[I++]=B}return S.fromData(x,[N],a)}let u=e<0?o+e:e;if(u<0||u>=o)throw new Error(`axis ${e} is out of bounds for array of dimension ${o}`);let s=n[u],c=Array.isArray(t)?t:new Array(s).fill(t);if(c.length!==s)throw new Error(`operands could not be broadcast together with shape (${s},) (${c.length},)`);let l=Array.from(n);l[u]=c.reduce((A,b)=>A+b,0);let m=l.reduce((A,b)=>A*b,1),f=T(a);if(!f)throw new Error(`Cannot repeat array with dtype ${a}`);let y=new f(m),p=L(l),d=new Array(o).fill(0),g=a==="int64"||a==="uint64",h=[0];for(let A=0;A<s;A++)h.push(h[A]+c[A]);for(let A=0;A<i;A++){let b=r.iget(A),N=d[u],D=c[N],x=0;for(let B=0;B<o;B++)B!==u&&(x+=d[B]*p[B]);let I=p[u],_=h[N];for(let B=0;B<D;B++){let v=x+(_+B)*I;y[v]=b}for(let B=o-1;B>=0&&(d[B]++,!(d[B]<n[B]));B--)d[B]=0}return S.fromData(y,l,a)}function pn(r,t){let e=r.shape,n=e.length,o=r.dtype,a=r.size,i;if(t===void 0)i=new Set(Array.from({length:n},(f,y)=>y));else if(typeof t=="number"){let f=t<0?n+t:t;if(f<0||f>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);i=new Set([f])}else i=new Set(t.map(f=>{let y=f<0?n+f:f;if(y<0||y>=n)throw new Error(`axis ${f} is out of bounds for array of dimension ${n}`);return y}));let u=T(o);if(!u)throw new Error(`Cannot flip array with dtype ${o}`);let s=new u(a),c=w(o);if(n===1&&r.isCContiguous){let f=r.data,y=r.offset;for(let p=0;p<a;p++)s[p]=f[y+a-1-p];return S.fromData(s,[...e],o)}if(n===2&&r.isCContiguous){let f=e[0],y=e[1],p=r.data,d=r.offset;if(i.size===2){for(let g=0;g<a;g++)s[g]=p[d+a-1-g];return S.fromData(s,[...e],o)}if(i.size===1){if(i.has(0)){for(let g=0;g<f;g++){let h=d+(f-1-g)*y,A=g*y;for(let b=0;b<y;b++)s[A+b]=p[h+b]}return S.fromData(s,[...e],o)}else if(i.has(1)){for(let g=0;g<f;g++){let h=d+g*y,A=g*y;for(let b=0;b<y;b++)s[A+b]=p[h+y-1-b]}return S.fromData(s,[...e],o)}}}let l=new Array(n),m=new Array(n).fill(0);for(let f=0;f<a;f++){for(let d=0;d<n;d++)l[d]=i.has(d)?e[d]-1-m[d]:m[d];let y=r.offset;for(let d=0;d<n;d++)y+=l[d]*r.strides[d];let p=r.data[y];s[f]=p;for(let d=n-1;d>=0&&(m[d]++,!(m[d]<e[d]));d--)m[d]=0}return S.fromData(s,[...e],o)}function dn(r,t=1,e=[0,1]){let n=r.shape,o=n.length,a=r.dtype;if(o<2)throw new Error("Input must be at least 2-D");let i=e[0]<0?o+e[0]:e[0],u=e[1]<0?o+e[1]:e[1];if(i<0||i>=o||u<0||u>=o)throw new Error(`Axes are out of bounds for array of dimension ${o}`);if(i===u)throw new Error("Axes must be different");if(t=(t%4+4)%4,t===0)return r.copy();let s=T(a);if(!s)throw new Error(`Cannot rotate array with dtype ${a}`);let c=[...n];(t===1||t===3)&&([c[i],c[u]]=[c[u],c[i]]);let l=c.reduce((g,h)=>g*h,1),m=new s(l),f=L(c),y=w(a),p=new Array(o).fill(0),d=new Array(o);for(let g=0;g<r.size;g++){for(let D=0;D<o;D++)d[D]=p[D];let h,A;t===1?(h=n[u]-1-p[u],A=p[i]):t===2?(h=n[i]-1-p[i],A=n[u]-1-p[u],d[i]=h,d[u]=A):(h=p[u],A=n[i]-1-p[i]),t!==2&&(d[i]=h,d[u]=A);let b=0;for(let D=0;D<o;D++)b+=d[D]*f[D];let N=r.iget(g);m[b]=N;for(let D=o-1;D>=0&&(p[D]++,!(p[D]<n[D]));D--)p[D]=0}return S.fromData(m,c,a)}function gn(r,t,e){let n=r.shape,o=n.length,a=r.dtype,i=r.size;if(e===void 0){let p=Array.isArray(t)?t.reduce((b,N)=>b+N,0):t,d=Hr(r),g=T(a);if(!g)throw new Error(`Cannot roll array with dtype ${a}`);let h=new g(i),A=w(a);for(let b=0;b<i;b++){let N=((b-p)%i+i)%i,D=d.iget(N);h[b]=D}return S.fromData(h,[...n],a)}let u=Array.isArray(t)?t:[t],s=Array.isArray(e)?e:[e];if(u.length!==s.length)throw new Error("shift and axis must have the same length");let c=s.map(p=>{let d=p<0?o+p:p;if(d<0||d>=o)throw new Error(`axis ${p} is out of bounds for array of dimension ${o}`);return d}),l=T(a);if(!l)throw new Error(`Cannot roll array with dtype ${a}`);let m=new l(i),f=w(a),y=new Array(o).fill(0);for(let p=0;p<i;p++){let d=[...y];for(let A=0;A<c.length;A++){let b=c[A],N=n[b],D=u[A];d[b]=((d[b]-D)%N+N)%N}let g=r.offset;for(let A=0;A<o;A++)g+=d[A]*r.strides[A];let h=r.data[g];m[p]=h;for(let A=o-1;A>=0&&(y[A]++,!(y[A]<n[A]));A--)y[A]=0}return S.fromData(m,[...n],a)}function bn(r,t,e=0){let n=r.ndim,o=t<0?n+t:t;if(o<0||o>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);let a=e<0?n+e:e;if(a<0||a>n)throw new Error(`start ${e} is out of bounds`);return o<a&&a--,o===a?S.fromData(r.data,Array.from(r.shape),r.dtype,Array.from(r.strides),r.offset):zt(r,o,a)}function An(r,t){if(r.ndim<3)throw new Error("dsplit only works on arrays of 3 or more dimensions");return xr(r,t,2)}function hn(r){if(r.length===0)throw new Error("need at least one array to stack");let t=r.map(e=>e.ndim===1?P(e,[e.shape[0],1]):e);return _t(t)}function Sn(r,t){let e=r.dtype,n=t.reduce((s,c)=>s*c,1),o=r.size,a=T(e);if(!a)throw new Error(`Cannot resize array with dtype ${e}`);let i=new a(n),u=w(e);for(let s=0;s<n;s++){let c=s%o,l=r.iget(c);i[s]=l}return S.fromData(i,t,e)}function Nn(r){return r.map(t=>t.ndim===0?P(t,[1]):t)}function Dn(r){return r.map(t=>t.ndim===0?P(t,[1,1]):t.ndim===1?P(t,[1,t.shape[0]]):t)}function xn(r){return r.map(t=>t.ndim===0?P(t,[1,1,1]):t.ndim===1?P(t,[1,t.shape[0],1]):t.ndim===2?P(t,[t.shape[0],t.shape[1],1]):t)}function Ni(r,t,e,n,o,a,i,u,s,c,l,m,f,y){if(m===0)for(let h=0;h<n*o;h++)f[h]=0;else if(m!==1)for(let h=0;h<n*o;h++)f[h]=(f[h]??0)*m;let p=r==="row-major",d=t==="transpose",g=e==="transpose";if(p&&!d&&!g)for(let h=0;h<n;h++)for(let A=0;A<o;A++){let b=0;for(let N=0;N<a;N++)b+=(u[h*s+N]??0)*(c[N*l+A]??0);f[h*y+A]=(f[h*y+A]??0)+i*b}else if(p&&d&&!g)for(let h=0;h<n;h++)for(let A=0;A<o;A++){let b=0;for(let N=0;N<a;N++)b+=(u[N*s+h]??0)*(c[N*l+A]??0);f[h*y+A]=(f[h*y+A]??0)+i*b}else if(p&&!d&&g)for(let h=0;h<n;h++)for(let A=0;A<o;A++){let b=0;for(let N=0;N<a;N++)b+=(u[h*s+N]??0)*(c[A*l+N]??0);f[h*y+A]=(f[h*y+A]??0)+i*b}else if(p&&d&&g)for(let h=0;h<n;h++)for(let A=0;A<o;A++){let b=0;for(let N=0;N<a;N++)b+=(u[N*s+h]??0)*(c[A*l+N]??0);f[h*y+A]=(f[h*y+A]??0)+i*b}else if(!p&&!d&&!g)for(let h=0;h<n;h++)for(let A=0;A<o;A++){let b=0;for(let N=0;N<a;N++)b+=(u[N*s+h]??0)*(c[A*l+N]??0);f[A*y+h]=(f[A*y+h]??0)+i*b}else if(!p&&d&&!g)for(let h=0;h<n;h++)for(let A=0;A<o;A++){let b=0;for(let N=0;N<a;N++)b+=(u[h*s+N]??0)*(c[A*l+N]??0);f[A*y+h]=(f[A*y+h]??0)+i*b}else if(!p&&!d&&g)for(let h=0;h<n;h++)for(let A=0;A<o;A++){let b=0;for(let N=0;N<a;N++)b+=(u[N*s+h]??0)*(c[N*l+A]??0);f[A*y+h]=(f[A*y+h]??0)+i*b}else for(let h=0;h<n;h++)for(let A=0;A<o;A++){let b=0;for(let N=0;N<a;N++)b+=(u[h*s+N]??0)*(c[N*l+A]??0);f[A*y+h]=(f[A*y+h]??0)+i*b}}function vt(r,t){let e=r.ndim,n=t.ndim;if(e===0||n===0){let o=e===0?r.get():null,a=n===0?t.get():null;if(e===0&&n===0)return typeof o=="bigint"&&typeof a=="bigint"?o*a:Number(o)*Number(a);if(e===0){let i=k(r.dtype,t.dtype),u=S.zeros([...t.shape],i);for(let s=0;s<t.size;s++){let c=t.data[s+t.offset];typeof o=="bigint"&&typeof c=="bigint"?u.data[s]=o*c:u.data[s]=Number(o)*Number(c)}return u}else{let i=k(r.dtype,t.dtype),u=S.zeros([...r.shape],i);for(let s=0;s<r.size;s++){let c=r.data[s+r.offset];typeof c=="bigint"&&typeof a=="bigint"?u.data[s]=c*a:u.data[s]=Number(c)*Number(a)}return u}}if(e===1&&n===1){if(r.shape[0]!==t.shape[0])throw new Error(`dot: incompatible shapes (${r.shape[0]},) and (${t.shape[0]},)`);let o=r.shape[0],a=0;for(let i=0;i<o;i++){let u=r.get(i),s=t.get(i);typeof u=="bigint"&&typeof s=="bigint"?a=Number(a)+Number(u*s):a+=Number(u)*Number(s)}return a}if(e===2&&n===2)return X(r,t);if(e===2&&n===1){let[o,a]=r.shape,i=t.shape[0];if(a!==i)throw new Error(`dot: incompatible shapes (${o},${a}) and (${i},)`);let u=k(r.dtype,t.dtype),s=S.zeros([o],u);for(let c=0;c<o;c++){let l=0;for(let m=0;m<a;m++){let f=r.get(c,m),y=t.get(m);typeof f=="bigint"&&typeof y=="bigint"?l=Number(l)+Number(f*y):l+=Number(f)*Number(y)}s.set([c],l)}return s}if(e===1&&n===2){let o=r.shape[0],[a,i]=t.shape;if(o!==a)throw new Error(`dot: incompatible shapes (${o},) and (${a},${i})`);let u=k(r.dtype,t.dtype),s=S.zeros([i],u);for(let c=0;c<i;c++){let l=0;for(let m=0;m<o;m++){let f=r.get(m),y=t.get(m,c);typeof f=="bigint"&&typeof y=="bigint"?l=Number(l)+Number(f*y):l+=Number(f)*Number(y)}s.set([c],l)}return s}if(e>2&&n===1){let o=r.shape[e-1],a=t.shape[0];if(o!==a)throw new Error(`dot: incompatible shapes ${JSON.stringify(r.shape)} and (${a},)`);let i=[...r.shape.slice(0,-1)],u=k(r.dtype,t.dtype),s=S.zeros(i,u),c=i.reduce((l,m)=>l*m,1);for(let l=0;l<c;l++){let m=0,f=l,y=[];for(let p=i.length-1;p>=0;p--)y[p]=f%i[p],f=Math.floor(f/i[p]);for(let p=0;p<o;p++){let d=[...y,p],g=r.get(...d),h=t.get(p);typeof g=="bigint"&&typeof h=="bigint"?m=Number(m)+Number(g*h):m+=Number(g)*Number(h)}s.set(y,m)}return s}if(e===1&&n>2){let o=r.shape[0],a=1,i=t.shape[a];if(o!==i)throw new Error(`dot: incompatible shapes (${o},) and ${JSON.stringify(t.shape)}`);let u=[...t.shape.slice(0,a),...t.shape.slice(a+1)],s=k(r.dtype,t.dtype),c=S.zeros(u,s),l=u.reduce((m,f)=>m*f,1);for(let m=0;m<l;m++){let f=m,y=[];for(let h=u.length-1;h>=0;h--)y[h]=f%u[h],f=Math.floor(f/u[h]);let p=y.slice(0,a),d=y.slice(a),g=0;for(let h=0;h<o;h++){let A=r.get(h),b=[...p,h,...d],N=t.get(...b);typeof A=="bigint"&&typeof N=="bigint"?g=Number(g)+Number(A*N):g+=Number(A)*Number(N)}c.set(y,g)}return c}if(e>=2&&n>=2&&!(e===2&&n===2)){let o=r.shape[e-1],a=t.shape[n-2];if(o!==a)throw new Error(`dot: incompatible shapes ${JSON.stringify(r.shape)} and ${JSON.stringify(t.shape)}`);let i=[...r.shape.slice(0,-1),...t.shape.slice(0,-2),t.shape[n-1]],u=k(r.dtype,t.dtype),s=S.zeros(i,u),c=r.shape.slice(0,-1).reduce((y,p)=>y*p,1),l=t.shape.slice(0,-2).reduce((y,p)=>y*p,1),m=t.shape[n-1],f=o;for(let y=0;y<c;y++)for(let p=0;p<l;p++)for(let d=0;d<m;d++){let g=0;for(let A=0;A<f;A++){let b=y*f+A,N=r.data[b+r.offset],D=p*f*m+A*m+d,x=t.data[D+t.offset];typeof N=="bigint"&&typeof x=="bigint"?g=Number(g)+Number(N*x):g+=Number(N)*Number(x)}let h=y*l*m+p*m+d;s.data[h]=g}return s}throw new Error(`dot: unexpected combination of dimensions ${e}D \xB7 ${n}D`)}function X(r,t){if(r.ndim!==2||t.ndim!==2)throw new Error("matmul requires 2D arrays");let[e=0,n=0]=r.shape,[o=0,a=0]=t.shape;if(n!==o)throw new Error(`matmul shape mismatch: (${e},${n}) @ (${o},${a})`);let i=k(r.dtype,t.dtype),u=i.startsWith("int")||i.startsWith("uint")||i==="bool"?"float64":i;if(u!=="float64")throw new Error(`matmul currently only supports float64, got ${u}`);let s=r.dtype==="float64"?r.data:Float64Array.from(Array.from(r.data).map(Number)),c=t.dtype==="float64"?t.data:Float64Array.from(Array.from(t.data).map(Number));r.offset>0&&(s=s.subarray(r.offset)),t.offset>0&&(c=c.subarray(t.offset));let[l=0,m=0]=r.strides,[f=0,y=0]=t.strides,p=m>l,d=y>f,g=p?"transpose":"no-transpose",h=d?"transpose":"no-transpose",A,b;p?A=m:A=l,d?b=y:b=f;let N=S.zeros([e,a],"float64");return Ni("row-major",g,h,e,a,n,1,s,A,c,b,0,N.data,a),N}function _n(r){if(r.ndim!==2)throw new Error(`trace requires 2D array, got ${r.ndim}D`);let[t=0,e=0]=r.shape,n=Math.min(t,e),o=0;for(let a=0;a<n;a++){let i=r.get(a,a);typeof i=="bigint"?o=(typeof o=="bigint"?o:BigInt(o))+i:o=(typeof o=="bigint"?Number(o):o)+i}return o}function In(r,t){return Dr(r,t)}function Bn(r,t){let e=r.ndim,n=t.ndim,o=r.shape[e-1],a=t.shape[n-1];if(o!==a)throw new Error(`inner: incompatible shapes - last dimensions ${o} and ${a} don't match`);if(e===1&&n===1)return vt(r,t);let i=[...r.shape.slice(0,-1),...t.shape.slice(0,-1)],u=k(r.dtype,t.dtype),s=S.zeros(i,u),c=e===1?1:r.shape.slice(0,-1).reduce((f,y)=>f*y,1),l=n===1?1:t.shape.slice(0,-1).reduce((f,y)=>f*y,1),m=o;for(let f=0;f<c;f++)for(let y=0;y<l;y++){let p=0;for(let g=0;g<m;g++){let h=e===1?g:f*m+g,A=n===1?g:y*m+g,b=r.data[h+r.offset],N=t.data[A+t.offset];typeof b=="bigint"&&typeof N=="bigint"?p=Number(p)+Number(b*N):p+=Number(b)*Number(N)}if(i.length===0)return p;let d=c===1?y:f*l+y;s.data[d]=p}return s}function Et(r,t){let e=r.ndim===1?r:yr(r),n=t.ndim===1?t:yr(t),o=e.size,a=n.size,i=k(r.dtype,t.dtype),u=S.zeros([o,a],i);for(let s=0;s<o;s++)for(let c=0;c<a;c++){let l=e.get(s),m=n.get(c),f;typeof l=="bigint"&&typeof m=="bigint"?f=l*m:f=Number(l)*Number(m),u.set([s,c],f)}return u}function vn(r,t,e){let n,o;if(typeof e=="number"){let f=e;if(f<0)throw new Error("tensordot: axes must be non-negative");if(f>r.ndim||f>t.ndim)throw new Error("tensordot: axes exceeds array dimensions");n=Array.from({length:f},(y,p)=>r.ndim-f+p),o=Array.from({length:f},(y,p)=>p)}else if([n,o]=e,n.length!==o.length)throw new Error("tensordot: axes lists must have same length");for(let f=0;f<n.length;f++){let y=n[f],p=o[f];if(y<0||y>=r.ndim||p<0||p>=t.ndim)throw new Error("tensordot: axis out of bounds");if(r.shape[y]!==t.shape[p])throw new Error(`tensordot: shape mismatch on axes ${y} and ${p}: ${r.shape[y]} != ${t.shape[p]}`)}let a=[],i=[];for(let f=0;f<r.ndim;f++)n.includes(f)||a.push(f);for(let f=0;f<t.ndim;f++)o.includes(f)||i.push(f);let u=[...a.map(f=>r.shape[f]),...i.map(f=>t.shape[f])];if(u.length===0){let f=0,y=n.map(p=>r.shape[p]).reduce((p,d)=>p*d,1);for(let p=0;p<y;p++){let d=p,g=new Array(n.length);for(let D=n.length-1;D>=0;D--){let x=n[D];g[D]=d%r.shape[x],d=Math.floor(d/r.shape[x])}let h=new Array(r.ndim),A=new Array(t.ndim);for(let D=0;D<n.length;D++)h[n[D]]=g[D];for(let D=0;D<o.length;D++)A[o[D]]=g[D];let b=r.get(...h),N=t.get(...A);typeof b=="bigint"&&typeof N=="bigint"?f=Number(f)+Number(b*N):f+=Number(b)*Number(N)}return f}let s=k(r.dtype,t.dtype),c=S.zeros(u,s),l=u.reduce((f,y)=>f*y,1),m=n.map(f=>r.shape[f]).reduce((f,y)=>f*y,1);for(let f=0;f<l;f++){let y=f,p=[];for(let A=u.length-1;A>=0;A--)p[A]=y%u[A],y=Math.floor(y/u[A]);let d=p.slice(0,a.length),g=p.slice(a.length),h=0;for(let A=0;A<m;A++){y=A;let b=[];for(let _=n.length-1;_>=0;_--){let B=n[_];b[_]=y%r.shape[B],y=Math.floor(y/r.shape[B])}let N=new Array(r.ndim),D=new Array(t.ndim);for(let _=0;_<a.length;_++)N[a[_]]=d[_];for(let _=0;_<i.length;_++)D[i[_]]=g[_];for(let _=0;_<n.length;_++)N[n[_]]=b[_],D[o[_]]=b[_];let x=r.get(...N),I=t.get(...D);typeof x=="bigint"&&typeof I=="bigint"?h=Number(h)+Number(x*I):h+=Number(x)*Number(I)}c.set(p,h)}return c}function En(r,t=0,e=0,n=1){let o=r.shape,a=o.length;if(a<2)throw new Error("diagonal requires an array of at least two dimensions");let i=e<0?a+e:e,u=n<0?a+n:n;if(i<0||i>=a||u<0||u>=a)throw new Error("axis out of bounds");if(i===u)throw new Error("axis1 and axis2 cannot be the same");let s=o[i],c=o[u],l;t>=0?l=Math.max(0,Math.min(s,c-t)):l=Math.max(0,Math.min(s+t,c));let m=[];for(let d=0;d<a;d++)d!==i&&d!==u&&m.push(o[d]);m.push(l);let f=S.zeros(m,r.dtype),y=o.filter((d,g)=>g!==i&&g!==u),p=y.reduce((d,g)=>d*g,1);for(let d=0;d<p;d++){let g=d,h=[];for(let A=y.length-1;A>=0;A--)h.unshift(g%y[A]),g=Math.floor(g/y[A]);for(let A=0;A<l;A++){let b=new Array(a),N=0;for(let I=0;I<a;I++)I===i?b[I]=t>=0?A:A-t:I===u?b[I]=t>=0?A+t:A:b[I]=h[N++];let D=[...h,A],x=r.get(...b);f.set(D,x)}}return f}function Mn(r,...t){let e=r.indexOf("->"),n,o;e===-1?(n=r,o=Di(n)):(n=r.slice(0,e),o=r.slice(e+2));let a=n.split(",").map(d=>d.trim());if(a.length!==t.length)throw new Error(`einsum: expected ${a.length} operands, got ${t.length}`);let i=new Map;for(let d=0;d<t.length;d++){let g=a[d],h=t[d];if(g.length!==h.ndim)throw new Error(`einsum: operand ${d} has ${h.ndim} dimensions but subscript '${g}' has ${g.length} indices`);for(let A=0;A<g.length;A++){let b=g[A],N=h.shape[A];if(i.has(b)){if(i.get(b)!==N)throw new Error(`einsum: size mismatch for index '${b}': ${i.get(b)} vs ${N}`)}else i.set(b,N)}}for(let d of o)if(!i.has(d))throw new Error(`einsum: output subscript contains unknown index '${d}'`);let u=new Set(o),s=new Set;for(let d of a)for(let g of d)s.add(g);let c=[];for(let d of s)u.has(d)||c.push(d);if(t.length===2&&a.length===2){let[d,g]=a,[h,A]=t;if(d.length===2&&g.length===2&&o.length===2&&h.ndim===2&&A.ndim===2){let[b,N]=[d[0],d[1]],[D,x]=[g[0],g[1]],[I,_]=[o[0],o[1]];if(b===I&&x===_&&N===D&&c.length===1&&c[0]===N||b===I&&x===_&&N===D&&c.length===1&&c[0]===N)return X(h,A);if(N===I&&x===_&&b===D&&c.length===1&&c[0]===b){let B=In(h);return X(B,A)}if(b===I&&D===_&&N===x&&c.length===1&&c[0]===N){let B=In(A);return X(h,B)}}if(d.length===1&&g.length===1&&d===g&&o.length===0&&h.ndim===1&&A.ndim===1)return Bt(t,a,c,i);if(d&&g&&d.length===1&&g.length===1&&o.length===2&&o===d+g&&c.length===0&&h.ndim===1&&A.ndim===1)return Et(h,A)}if(t.length===1&&a[0].length===2&&o.length===0){let d=a[0];if(d[0]===d[1]&&t[0].ndim===2)return Bt(t,a,c,i)}let l=Array.from(o).map(d=>i.get(d));if(l.length===0)return Bt(t,a,c,i);let m=t[0].dtype;for(let d=1;d<t.length;d++)m=k(m,t[d].dtype);let f=S.zeros(l,m),y=l.reduce((d,g)=>d*g,1),p=1;for(let d of c)p*=i.get(d);for(let d=0;d<y;d++){let g=xi(d,l),h=new Map;for(let b=0;b<o.length;b++)h.set(o[b],g[b]);let A=0;for(let b=0;b<p;b++){let N=b;for(let x=c.length-1;x>=0;x--){let I=c[x],_=i.get(I);h.set(I,N%_),N=Math.floor(N/_)}let D=1;for(let x=0;x<t.length;x++){let I=t[x],_=a[x],B=[];for(let E of _)B.push(h.get(E));let v=I.get(...B);D*=Number(v)}A+=D}f.set(g,A)}return f}function Di(r){let t=new Map,e=r.split(",");for(let o of e)for(let a of o.trim())t.set(a,(t.get(a)||0)+1);let n=[];for(let[o,a]of t)a===1&&n.push(o);return n.sort().join("")}function Bt(r,t,e,n){let o=1;for(let i of e)o*=n.get(i);let a=0;for(let i=0;i<o;i++){let u=new Map,s=i;for(let l=e.length-1;l>=0;l--){let m=e[l],f=n.get(m);u.set(m,s%f),s=Math.floor(s/f)}let c=1;for(let l=0;l<r.length;l++){let m=r[l],f=t[l],y=[];for(let d of f)y.push(u.get(d));let p=m.get(...y);c*=Number(p)}a+=c}return a}function xi(r,t){let e=new Array(t.length),n=r;for(let o=t.length-1;o>=0;o--)e[o]=n%t[o],n=Math.floor(n/t[o]);return e}function On(r,t){let e=r.shape,n=t.shape,o=e.length,a=n.length,i=k(r.dtype,t.dtype),u=Math.max(o,a),s=new Array(u),c=new Array(u).fill(1),l=new Array(u).fill(1);for(let p=0;p<o;p++)c[u-o+p]=e[p];for(let p=0;p<a;p++)l[u-a+p]=n[p];for(let p=0;p<u;p++)s[p]=c[p]*l[p];let m=S.zeros(s,i),f=e.reduce((p,d)=>p*d,1),y=n.reduce((p,d)=>p*d,1);for(let p=0;p<f;p++){let d=p,g=new Array(o);for(let b=o-1;b>=0;b--)g[b]=d%e[b],d=Math.floor(d/e[b]);let h=new Array(u).fill(0);for(let b=0;b<o;b++)h[u-o+b]=g[b];let A=r.get(...g);for(let b=0;b<y;b++){let N=b,D=new Array(a);for(let v=a-1;v>=0;v--)D[v]=N%n[v],N=Math.floor(N/n[v]);let x=new Array(u).fill(0);for(let v=0;v<a;v++)x[u-a+v]=D[v];let I=t.get(...D),_=new Array(u);for(let v=0;v<u;v++)_[v]=h[v]*l[v]+x[v];let B=typeof A=="bigint"||typeof I=="bigint"?BigInt(Number(A))*BigInt(Number(I)):Number(A)*Number(I);m.set(_,B)}}return m}function Tn(r,t,e=-1,n=-1,o=-1,a){a!==void 0&&(e=a,n=a,o=a);let i=(b,N)=>b<0?N+b:b,u=i(e,r.ndim),s=i(n,t.ndim);if(r.ndim===1&&t.ndim===1){let b=r.shape[0],N=t.shape[0];if(b===3&&N===3){let D=Number(r.get(0)),x=Number(r.get(1)),I=Number(r.get(2)),_=Number(t.get(0)),B=Number(t.get(1)),v=Number(t.get(2)),E=S.zeros([3],"float64");return E.set([0],x*v-I*B),E.set([1],I*_-D*v),E.set([2],D*B-x*_),E}else if(b===2&&N===2){let D=Number(r.get(0)),x=Number(r.get(1)),I=Number(t.get(0)),_=Number(t.get(1));return D*_-x*I}else if(b===2&&N===3||b===3&&N===2){let D=Number(r.get(0)),x=Number(r.get(1)),I=b===3?Number(r.get(2)):0,_=Number(t.get(0)),B=Number(t.get(1)),v=N===3?Number(t.get(2)):0,E=S.zeros([3],"float64");return E.set([0],x*v-I*B),E.set([1],I*_-D*v),E.set([2],D*B-x*_),E}else throw new Error(`cross: incompatible dimensions for cross product: ${b} and ${N}`)}let c=r.shape[u],l=t.shape[s];if(c!==2&&c!==3||l!==2&&l!==3)throw new Error(`cross: incompatible dimensions for cross product: ${c} and ${l}`);let m=c===2&&l===2?0:3,f=[...r.shape.slice(0,u),...r.shape.slice(u+1)],y=[...t.shape.slice(0,s),...t.shape.slice(s+1)];if(f.length!==y.length)throw new Error("cross: incompatible shapes for cross product");for(let b=0;b<f.length;b++)if(f[b]!==y[b])throw new Error("cross: incompatible shapes for cross product");let p=f,d=o<0?p.length+1+o:o,g;if(m===0?g=p:g=[...p.slice(0,d),m,...p.slice(d)],g.length===0)throw new Error("cross: unexpected scalar result from higher-dimensional input");let h=S.zeros(g,"float64"),A=p.reduce((b,N)=>b*N,1);for(let b=0;b<A;b++){let N=b,D=[];for(let R=p.length-1;R>=0;R--)D[R]=N%p[R],N=Math.floor(N/p[R]);let x=[...D.slice(0,u),0,...D.slice(u)],I=[...D.slice(0,s),0,...D.slice(s)],_=R=>(x[u]=R,Number(r.get(...x))),B=R=>(I[s]=R,Number(t.get(...I))),v=_(0),E=_(1),U=c===3?_(2):0,$=B(0),q=B(1),Z=l===3?B(2):0;if(m===0)h.set(D,v*q-E*$);else{let R=E*Z-U*q,Ar=U*$-v*Z,Ys=v*q-E*$,it=(Js,Xs)=>{let Qs=[...D.slice(0,d),Js,...D.slice(d)];h.set(Qs,Xs)};it(0,R),it(1,Ar),it(2,Ys)}}return h}function pr(r,t=2,e,n=!1){if(typeof t!="number")throw new Error("vector_norm: ord must be a number");if(e==null){let c=r.ndim===1?r:yr(r),l=c.size,m;if(t===1/0){m=0;for(let f=0;f<l;f++)m=Math.max(m,Math.abs(Number(c.get(f))))}else if(t===-1/0){m=1/0;for(let f=0;f<l;f++)m=Math.min(m,Math.abs(Number(c.get(f))))}else if(t===0){m=0;for(let f=0;f<l;f++)Number(c.get(f))!==0&&m++}else if(t===1){m=0;for(let f=0;f<l;f++)m+=Math.abs(Number(c.get(f)))}else if(t===2){m=0;for(let f=0;f<l;f++){let y=Number(c.get(f));m+=y*y}m=Math.sqrt(m)}else{m=0;for(let f=0;f<l;f++)m+=Math.pow(Math.abs(Number(c.get(f))),t);m=Math.pow(m,1/t)}if(n){let f=new Array(r.ndim).fill(1),y=S.zeros(f,"float64");return y.set(new Array(r.ndim).fill(0),m),y}return m}let o=e<0?r.ndim+e:e;if(o<0||o>=r.ndim)throw new Error(`vector_norm: axis ${e} out of bounds for array with ${r.ndim} dimensions`);let a=n?[...r.shape.slice(0,o),1,...r.shape.slice(o+1)]:[...r.shape.slice(0,o),...r.shape.slice(o+1)];if(a.length===0)return pr(r,t,null,!1);let i=S.zeros(a,"float64"),u=r.shape[o],s=a.reduce((c,l)=>c*l,1);for(let c=0;c<s;c++){let l=c,m=[];for(let p=a.length-1;p>=0;p--)m[p]=l%a[p],l=Math.floor(l/a[p]);let f=n?[...m.slice(0,o),0,...m.slice(o+1)]:[...m.slice(0,o),0,...m.slice(o)],y;if(t===1/0){y=0;for(let p=0;p<u;p++)f[o]=p,y=Math.max(y,Math.abs(Number(r.get(...f))))}else if(t===-1/0){y=1/0;for(let p=0;p<u;p++)f[o]=p,y=Math.min(y,Math.abs(Number(r.get(...f))))}else if(t===0){y=0;for(let p=0;p<u;p++)f[o]=p,Number(r.get(...f))!==0&&y++}else if(t===1){y=0;for(let p=0;p<u;p++)f[o]=p,y+=Math.abs(Number(r.get(...f)))}else if(t===2){y=0;for(let p=0;p<u;p++){f[o]=p;let d=Number(r.get(...f));y+=d*d}y=Math.sqrt(y)}else{y=0;for(let p=0;p<u;p++)f[o]=p,y+=Math.pow(Math.abs(Number(r.get(...f))),t);y=Math.pow(y,1/t)}i.set(m,y)}return i}function cr(r,t="fro",e=!1){if(r.ndim!==2)throw new Error(`matrix_norm: input must be 2D, got ${r.ndim}D`);let[n,o]=r.shape,a;if(t==="fro"){a=0;for(let i=0;i<n;i++)for(let u=0;u<o;u++){let s=Number(r.get(i,u));a+=s*s}a=Math.sqrt(a)}else if(t==="nuc"){let{s:i}=ir(r);a=0;for(let u=0;u<i.size;u++)a+=Number(i.get(u))}else if(t===1){a=0;for(let i=0;i<o;i++){let u=0;for(let s=0;s<n;s++)u+=Math.abs(Number(r.get(s,i)));a=Math.max(a,u)}}else if(t===-1){a=1/0;for(let i=0;i<o;i++){let u=0;for(let s=0;s<n;s++)u+=Math.abs(Number(r.get(s,i)));a=Math.min(a,u)}}else if(t===1/0){a=0;for(let i=0;i<n;i++){let u=0;for(let s=0;s<o;s++)u+=Math.abs(Number(r.get(i,s)));a=Math.max(a,u)}}else if(t===-1/0){a=1/0;for(let i=0;i<n;i++){let u=0;for(let s=0;s<o;s++)u+=Math.abs(Number(r.get(i,s)));a=Math.min(a,u)}}else if(t===2){let{s:i}=ir(r);a=Number(i.get(0))}else if(t===-2){let{s:i}=ir(r);a=Number(i.get(i.size-1))}else throw new Error(`matrix_norm: invalid ord value: ${t}`);if(e){let i=S.zeros([1,1],"float64");return i.set([0,0],a),i}return a}function Un(r,t=null,e=null,n=!1){if(t===null)return e===null?pr(r,2,null,n):typeof e=="number"?pr(r,2,e,n):cr(r,"fro",n);if(Array.isArray(e)){if(e.length!==2)throw new Error("norm: axis must be a 2-tuple for matrix norms");let o=e[0]<0?r.ndim+e[0]:e[0],a=e[1]<0?r.ndim+e[1]:e[1];if(r.ndim!==2||o!==0&&o!==1||a!==0&&a!==1||o===a)throw new Error("norm: complex axis specification not yet supported");return cr(r,t,n)}if(r.ndim===2&&e===null&&(t==="fro"||t==="nuc"))return cr(r,t,n);if(typeof t!="number"&&t!==null)throw new Error(`norm: ord '${t}' not valid for vector norm`);return pr(r,t??2,e,n)}function Mt(r,t="reduced"){if(r.ndim!==2)throw new Error(`qr: input must be 2D, got ${r.ndim}D`);let[e,n]=r.shape,o=Math.min(e,n),a=S.zeros([e,n],"float64");for(let y=0;y<e;y++)for(let p=0;p<n;p++)a.set([y,p],Number(r.get(y,p)));let i=[],u=[];for(let y=0;y<o;y++){let p=e-y,d=[];for(let D=y;D<e;D++)d.push(Number(a.get(D,y)));let g=0;for(let D=0;D<p;D++)g+=d[D]*d[D];if(g=Math.sqrt(g),g<1e-15){i.push(d),u.push(0);continue}let h=d[0]>=0?1:-1,A=d[0]+h*g,b=[1];for(let D=1;D<p;D++)b.push(d[D]/A);let N=h*A/g;u.push(N),i.push(b);for(let D=y;D<n;D++){let x=0;for(let I=0;I<p;I++)x+=b[I]*Number(a.get(y+I,D));for(let I=0;I<p;I++)a.set([y+I,D],Number(a.get(y+I,D))-N*b[I]*x)}}if(t==="raw"){let y=S.zeros([e,n],"float64");for(let d=0;d<e;d++)for(let g=0;g<n;g++)y.set([d,g],Number(a.get(d,g)));let p=S.zeros([o],"float64");for(let d=0;d<o;d++)p.set([d],u[d]);return{h:y,tau:p}}if(t==="r"){let y=S.zeros([o,n],"float64");for(let p=0;p<o;p++)for(let d=p;d<n;d++)y.set([p,d],Number(a.get(p,d)));return y}let s=t==="complete"?e:o,c=S.zeros([e,s],"float64");for(let y=0;y<Math.min(e,s);y++)c.set([y,y],1);for(let y=o-1;y>=0;y--){let p=i[y],d=u[y],g=e-y;for(let h=y;h<s;h++){let A=0;for(let b=0;b<g;b++)A+=p[b]*Number(c.get(y+b,h));for(let b=0;b<g;b++)c.set([y+b,h],Number(c.get(y+b,h))-d*p[b]*A)}}let l=S.zeros([e,s],"float64");for(let y=0;y<e;y++)for(let p=0;p<s;p++)l.set([y,p],Number(c.get(y,p)));let m=t==="complete"?e:o,f=S.zeros([m,n],"float64");for(let y=0;y<m;y++)for(let p=0;p<n;p++)p>=y&&f.set([y,p],Number(a.get(y,p)));return{q:l,r:f}}function $n(r,t=!1){if(r.ndim!==2)throw new Error(`cholesky: input must be 2D, got ${r.ndim}D`);let[e,n]=r.shape;if(e!==n)throw new Error(`cholesky: matrix must be square, got ${e}x${n}`);let o=e,a=S.zeros([o,o],"float64");for(let i=0;i<o;i++)for(let u=0;u<=i;u++){let s=0;if(i===u){for(let l=0;l<u;l++)s+=Number(a.get(u,l))**2;let c=Number(r.get(u,u))-s;if(c<0)throw new Error("cholesky: matrix is not positive definite");a.set([u,u],Math.sqrt(c))}else{for(let l=0;l<u;l++)s+=Number(a.get(i,l))*Number(a.get(u,l));let c=Number(a.get(u,u));if(Math.abs(c)<1e-15)throw new Error("cholesky: matrix is not positive definite");a.set([i,u],(Number(r.get(i,u))-s)/c)}}if(t){let i=S.zeros([o,o],"float64");for(let u=0;u<o;u++)for(let s=u;s<o;s++)i.set([u,s],Number(a.get(s,u)));return i}return a}function ir(r){if(r.ndim!==2)throw new Error(`svd: input must be 2D, got ${r.ndim}D`);let[t,e]=r.shape,n=Math.min(t,e),o=S.zeros([e,e],"float64");for(let m=0;m<e;m++)for(let f=0;f<e;f++){let y=0;for(let p=0;p<t;p++)y+=Number(r.get(p,m))*Number(r.get(p,f));o.set([m,f],y)}let{values:a,vectors:i}=Ot(o),u=Array.from({length:e},(m,f)=>f);u.sort((m,f)=>a[f]-a[m]);let s=S.zeros([n],"float64");for(let m=0;m<n;m++){let f=a[u[m]];s.set([m],Math.sqrt(Math.max(0,f)))}let c=S.zeros([e,e],"float64");for(let m=0;m<e;m++)for(let f=0;f<e;f++)c.set([m,f],i[f][u[m]]);let l=S.zeros([t,t],"float64");for(let m=0;m<t;m++)for(let f=0;f<n;f++){let y=Number(s.get(f));if(y>1e-10){let p=0;for(let d=0;d<e;d++)p+=Number(r.get(m,d))*Number(c.get(f,d));l.set([m,f],p/y)}}if(t>n)for(let m=n;m<t;m++){let f=new Array(t).fill(0);f[m]=1;for(let p=0;p<m;p++){let d=0;for(let g=0;g<t;g++)d+=f[g]*Number(l.get(g,p));for(let g=0;g<t;g++)f[g]=f[g]-d*Number(l.get(g,p))}let y=0;for(let p=0;p<t;p++)y+=f[p]*f[p];if(y=Math.sqrt(y),y>1e-10)for(let p=0;p<t;p++)l.set([p,m],f[p]/y)}return{u:l,s,vt:c}}function Ot(r){let t=r.shape[0],e=100*t*t,n=1e-10,o=[];for(let u=0;u<t;u++){o.push([]);for(let s=0;s<t;s++)o[u].push(Number(r.get(u,s)))}let a=[];for(let u=0;u<t;u++){a.push([]);for(let s=0;s<t;s++)a[u].push(u===s?1:0)}for(let u=0;u<e;u++){let s=0,c=0,l=1;for(let b=0;b<t;b++)for(let N=b+1;N<t;N++)Math.abs(o[b][N])>s&&(s=Math.abs(o[b][N]),c=b,l=N);if(s<n)break;let m=o[c][c],f=o[l][l],y=o[c][l],p;Math.abs(m-f)<1e-15?p=Math.PI/4:p=.5*Math.atan2(2*y,f-m);let d=Math.cos(p),g=Math.sin(p),h=d*d*m+g*g*f-2*g*d*y,A=g*g*m+d*d*f+2*g*d*y;o[c][c]=h,o[l][l]=A,o[c][l]=0,o[l][c]=0;for(let b=0;b<t;b++)if(b!==c&&b!==l){let N=o[b][c],D=o[b][l];o[b][c]=d*N-g*D,o[c][b]=o[b][c],o[b][l]=g*N+d*D,o[l][b]=o[b][l]}for(let b=0;b<t;b++){let N=a[b][c],D=a[b][l];a[b][c]=d*N-g*D,a[b][l]=g*N+d*D}}let i=[];for(let u=0;u<t;u++)i.push(o[u][u]);return{values:i,vectors:a}}function kn(r,t=!0,e=!0){let n=ir(r);if(!e)return n.s;if(!t){let[o,a]=r.shape,i=Math.min(o,a),u=S.zeros([o,i],"float64");for(let c=0;c<o;c++)for(let l=0;l<i;l++)u.set([c,l],Number(n.u.get(c,l)));let s=S.zeros([i,a],"float64");for(let c=0;c<i;c++)for(let l=0;l<a;l++)s.set([c,l],Number(n.vt.get(c,l)));return{u,s:n.s,vt:s}}return n}function Cn(r){if(r.ndim!==2)throw new Error(`det: input must be 2D, got ${r.ndim}D`);let[t,e]=r.shape;if(t!==e)throw new Error(`det: matrix must be square, got ${t}x${e}`);let n=t;if(n===0)return 1;let o=r.data;if(n===1)return Number(o[0]);if(n===2)return Number(o[0])*Number(o[3])-Number(o[1])*Number(o[2]);let{lu:a,sign:i}=Tt(r),u=a.data,s=i;for(let c=0;c<n;c++)s*=u[c*n+c];return s}function Tt(r){let[t,e]=r.shape,n=t,o=e,a=S.zeros([n,o],"float64"),i=a.data,u=r.data;for(let l=0;l<n*o;l++)i[l]=Number(u[l]);let s=Array.from({length:n},(l,m)=>m),c=1;for(let l=0;l<Math.min(n,o);l++){let m=Math.abs(i[l*o+l]),f=l;for(let p=l+1;p<n;p++){let d=Math.abs(i[p*o+l]);d>m&&(m=d,f=p)}if(f!==l){for(let d=0;d<o;d++){let g=i[l*o+d];i[l*o+d]=i[f*o+d],i[f*o+d]=g}let p=s[l];s[l]=s[f],s[f]=p,c=-c}let y=i[l*o+l];if(Math.abs(y)>1e-15)for(let p=l+1;p<n;p++){let d=i[p*o+l]/y;i[p*o+l]=d;for(let g=l+1;g<o;g++)i[p*o+g]=i[p*o+g]-d*i[l*o+g]}}return{lu:a,piv:s,sign:c}}function Yr(r){if(r.ndim!==2)throw new Error(`inv: input must be 2D, got ${r.ndim}D`);let[t,e]=r.shape;if(t!==e)throw new Error(`inv: matrix must be square, got ${t}x${e}`);let n=t,{lu:o,piv:a}=Tt(r),i=o.data,u=S.zeros([n,n],"float64"),s=u.data;for(let c=0;c<n;c++){let l=new Float64Array(n);for(let m=0;m<n;m++){let f=a[m]===c?1:0;for(let y=0;y<m;y++)f-=i[m*n+y]*l[y];l[m]=f}for(let m=n-1;m>=0;m--){let f=l[m];for(let p=m+1;p<n;p++)f-=i[m*n+p]*s[p*n+c];let y=i[m*n+m];if(Math.abs(y)<1e-15)throw new Error("inv: singular matrix");s[m*n+c]=f/y}}return u}function zn(r,t){let[e]=r.shape,n=e,{lu:o,piv:a}=Tt(r),i=o.data,u=t.data,s=new Float64Array(n);for(let f=0;f<n;f++)s[f]=Number(u[a[f]]);let c=new Float64Array(n);for(let f=0;f<n;f++){let y=s[f];for(let p=0;p<f;p++)y-=i[f*n+p]*c[p];c[f]=y}let l=S.zeros([n],"float64"),m=l.data;for(let f=n-1;f>=0;f--){let y=c[f];for(let d=f+1;d<n;d++)y-=i[f*n+d]*m[d];let p=i[f*n+f];if(Math.abs(p)<1e-15)throw new Error("solve: singular matrix");m[f]=y/p}return l}function Fn(r,t){if(r.ndim!==2)throw new Error(`solve: coefficient matrix must be 2D, got ${r.ndim}D`);let[e,n]=r.shape;if(e!==n)throw new Error(`solve: coefficient matrix must be square, got ${e}x${n}`);let o=e;if(t.ndim===1){if(t.shape[0]!==o)throw new Error(`solve: incompatible shapes (${e},${n}) and (${t.shape[0]},)`);return zn(r,t)}if(t.ndim===2){if(t.shape[0]!==o)throw new Error(`solve: incompatible shapes (${e},${n}) and (${t.shape[0]},${t.shape[1]})`);let a=t.shape[1],i=S.zeros([o,a],"float64");for(let u=0;u<a;u++){let s=S.zeros([o],"float64");for(let l=0;l<o;l++)s.set([l],Number(t.get(l,u)));let c=zn(r,s);for(let l=0;l<o;l++)i.set([l,u],Number(c.get(l)))}return i}throw new Error(`solve: b must be 1D or 2D, got ${t.ndim}D`)}function Vn(r,t,e=null){if(r.ndim!==2)throw new Error(`lstsq: coefficient matrix must be 2D, got ${r.ndim}D`);let[n,o]=r.shape,{u:a,s:i,vt:u}=ir(r),s=Math.min(n,o),c=e??Math.max(n,o)*Number.EPSILON,m=Number(i.get(0))*c,f=0;for(let A=0;A<s;A++)Number(i.get(A))>m&&f++;let y=t.ndim===1?P(t,[t.size,1]):t,p=y.shape[1];if(y.shape[0]!==n)throw new Error(`lstsq: incompatible shapes (${n},${o}) and (${t.shape.join(",")})`);let d=S.zeros([o,p],"float64");for(let A=0;A<p;A++){let b=new Array(n).fill(0);for(let N=0;N<n;N++)for(let D=0;D<n;D++)b[N]+=Number(a.get(D,N))*Number(y.get(D,A));for(let N=0;N<o;N++){let D=0;for(let x=0;x<s;x++){let I=Number(i.get(x));I>m&&(D+=Number(u.get(x,N))*b[x]/I)}d.set([N,A],D)}}let g;if(n>o){g=S.zeros([p],"float64");for(let A=0;A<p;A++){let b=0;for(let N=0;N<n;N++){let D=0;for(let I=0;I<o;I++)D+=Number(r.get(N,I))*Number(d.get(I,A));let x=D-Number(y.get(N,A));b+=x*x}g.set([A],b)}}else g=S.zeros([0],"float64");return{x:t.ndim===1?P(d,[o]):d,residuals:g,rank:f,s:i}}function qn(r,t=2){if(r.ndim!==2)throw new Error(`cond: input must be 2D, got ${r.ndim}D`);let[e,n]=r.shape;if(t===2||t===-2){let{s:u}=ir(r),s=Math.min(e,n),c=Number(u.get(0)),l=Number(u.get(s-1));return t===2?l>0?c/l:1/0:c>0?l/c:0}if(e!==n)throw new Error(`cond: matrix must be square for p=${t}`);let o=cr(r,t),a=Yr(r),i=cr(a,t);return o*i}function jn(r,t){if(r.ndim===0)return Number(r.get())!==0?1:0;if(r.ndim===1){for(let i=0;i<r.size;i++)if(Number(r.get(i))!==0)return 1;return 0}if(r.ndim!==2)throw new Error(`matrix_rank: input must be at most 2D, got ${r.ndim}D`);let{s:e}=ir(r),n=Number(e.get(0)),o=t??n*Math.max(r.shape[0],r.shape[1])*Number.EPSILON,a=0;for(let i=0;i<e.size;i++)Number(e.get(i))>o&&a++;return a}function Pn(r,t){if(r.ndim!==2)throw new Error(`matrix_power: input must be 2D, got ${r.ndim}D`);let[e,n]=r.shape;if(e!==n)throw new Error(`matrix_power: matrix must be square, got ${e}x${n}`);let o=e;if(!Number.isInteger(t))throw new Error("matrix_power: exponent must be an integer");if(t===0){let c=S.zeros([o,o],"float64");for(let l=0;l<o;l++)c.set([l,l],1);return c}let a=r,i=t;t<0&&(a=Yr(r),i=-t);let u=S.zeros([o,o],"float64");for(let c=0;c<o;c++)u.set([c,c],1);let s=S.zeros([o,o],"float64");for(let c=0;c<o;c++)for(let l=0;l<o;l++)s.set([c,l],Number(a.get(c,l)));for(;i>0;)i&1&&(u=X(u,s)),s=X(s,s),i>>=1;return u}function Rn(r,t=1e-15){if(r.ndim!==2)throw new Error(`pinv: input must be 2D, got ${r.ndim}D`);let[e,n]=r.shape,{u:o,s:a,vt:i}=ir(r),u=Math.min(e,n),c=Number(a.get(0))*t,l=S.zeros([n,e],"float64");for(let m=0;m<n;m++)for(let f=0;f<e;f++){let y=0;for(let p=0;p<u;p++){let d=Number(a.get(p));d>c&&(y+=Number(i.get(p,m))*Number(o.get(f,p))/d)}l.set([m,f],y)}return l}function Ut(r){if(r.ndim!==2)throw new Error(`eig: input must be 2D, got ${r.ndim}D`);let[t,e]=r.shape;if(t!==e)throw new Error(`eig: matrix must be square, got ${t}x${e}`);let n=t,o=!0;r:for(let c=0;c<n;c++)for(let l=c+1;l<n;l++)if(Math.abs(Number(r.get(c,l))-Number(r.get(l,c)))>1e-10){o=!1;break r}if(o){let{values:c,vectors:l}=Ot(r),m=S.zeros([n],"float64"),f=S.zeros([n,n],"float64");for(let y=0;y<n;y++){m.set([y],c[y]);for(let p=0;p<n;p++)f.set([p,y],l[p][y])}return{w:m,v:f}}console.warn("numpy-ts: eig() called on non-symmetric matrix. Complex eigenvalues are not supported; results may be inaccurate. For symmetric matrices, use eigh() instead.");let{values:a,vectors:i}=wi(r),u=S.zeros([n],"float64"),s=S.zeros([n,n],"float64");for(let c=0;c<n;c++){u.set([c],a[c]);for(let l=0;l<n;l++)s.set([l,c],i[l][c])}return{w:u,v:s}}function wi(r){let t=r.shape[0],e=1e3,n=1e-10,o=S.zeros([t,t],"float64");for(let s=0;s<t;s++)for(let c=0;c<t;c++)o.set([s,c],Number(r.get(s,c)));let a=S.zeros([t,t],"float64");for(let s=0;s<t;s++)a.set([s,s],1);for(let s=0;s<e;s++){let c=0;for(let y=0;y<t;y++)for(let p=0;p<t;p++)y!==p&&(c+=Number(o.get(y,p))**2);if(Math.sqrt(c)<n*t)break;let l=Mt(o,"reduced"),m=l.q,f=l.r;o=X(f,m),a=X(a,m)}let i=[];for(let s=0;s<t;s++)i.push(Number(o.get(s,s)));let u=[];for(let s=0;s<t;s++){u.push([]);for(let c=0;c<t;c++)u[s].push(Number(a.get(s,c)))}return{values:i,vectors:u}}function $t(r,t="L"){if(r.ndim!==2)throw new Error(`eigh: input must be 2D, got ${r.ndim}D`);let[e,n]=r.shape;if(e!==n)throw new Error(`eigh: matrix must be square, got ${e}x${n}`);let o=e,a=S.zeros([o,o],"float64");for(let m=0;m<o;m++)for(let f=0;f<o;f++)t==="L"?m>=f&&(a.set([m,f],Number(r.get(m,f))),a.set([f,m],Number(r.get(m,f)))):f>=m&&(a.set([m,f],Number(r.get(m,f))),a.set([f,m],Number(r.get(m,f))));let{values:i,vectors:u}=Ot(a),s=Array.from({length:o},(m,f)=>f);s.sort((m,f)=>i[m]-i[f]);let c=S.zeros([o],"float64"),l=S.zeros([o,o],"float64");for(let m=0;m<o;m++){c.set([m],i[s[m]]);for(let f=0;f<o;f++)l.set([f,m],u[f][s[m]])}return{w:c,v:l}}function Ln(r){let{w:t}=Ut(r);return t}function Gn(r,t="L"){let{w:e}=$t(r,t);return e}function Wn(r){return F(r,Math.sqrt,!1)}function Zn(r,t){return typeof t=="number"?zi(r,t):V(r,t,Math.pow,"power")}function zi(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,s=e!=="float32"&&e!=="float64"&&(t<0||!Number.isInteger(t))?"float64":e,c=S.zeros(n,s),l=c.data;if(w(e))if(w(s)&&Number.isInteger(t)&&t>=0){let m=o,f=l;for(let y=0;y<a;y++)f[y]=m[y]**BigInt(t)}else for(let m=0;m<a;m++)l[m]=Math.pow(Number(o[m]),t);else for(let m=0;m<a;m++)l[m]=Math.pow(Number(o[m]),t);return c}function Hn(r){return F(r,Math.exp,!1)}function Yn(r){return F(r,t=>Math.pow(2,t),!1)}function Jn(r){return F(r,Math.expm1,!1)}function Xn(r){return F(r,Math.log,!1)}function Qn(r){return F(r,Math.log2,!1)}function Kn(r){return F(r,Math.log10,!1)}function ro(r){return F(r,Math.log1p,!1)}function to(r,t){return typeof t=="number"?Bi(r,t):_i(r,t)}function _i(r,t){let e=sr(r.shape,t.shape),n=e.reduce((c,l)=>c*l,1),o=r.dtype,a=t.dtype,i=o==="float32"&&a==="float32"?"float32":"float64",u=S.zeros(e,i),s=u.data;for(let c=0;c<n;c++){let l=(w(o),Number(r.iget(c))),m=(w(a),Number(t.iget(c))),f=Math.max(l,m),y=Math.min(l,m);s[c]=f+Math.log1p(Math.exp(y-f))}return u}function Bi(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.size,a=e==="float32"?"float32":"float64",i=S.zeros(n,a),u=i.data;for(let s=0;s<o;s++){let c=(w(e),Number(r.data[s])),l=Math.max(c,t),m=Math.min(c,t);u[s]=l+Math.log1p(Math.exp(m-l))}return i}function eo(r,t){return typeof t=="number"?Ei(r,t):vi(r,t)}function vi(r,t){let e=sr(r.shape,t.shape),n=e.reduce((l,m)=>l*m,1),o=r.dtype,a=t.dtype,i=o==="float32"&&a==="float32"?"float32":"float64",u=S.zeros(e,i),s=u.data,c=Math.LOG2E;for(let l=0;l<n;l++){let m=(w(o),Number(r.iget(l))),f=(w(a),Number(t.iget(l))),y=Math.max(m,f),p=Math.min(m,f);s[l]=y+Math.log1p(Math.pow(2,p-y))*c}return u}function Ei(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.size,a=e==="float32"?"float32":"float64",i=S.zeros(n,a),u=i.data,s=Math.LOG2E;for(let c=0;c<o;c++){let l=(w(e),Number(r.data[c])),m=Math.max(l,t),f=Math.min(l,t);u[c]=m+Math.log1p(Math.pow(2,f-m))*s}return i}function no(r){return F(r,Math.sin,!1)}function oo(r){return F(r,Math.cos,!1)}function ao(r){return F(r,Math.tan,!1)}function so(r){return F(r,Math.asin,!1)}function io(r){return F(r,Math.acos,!1)}function uo(r){return F(r,Math.atan,!1)}function co(r,t){return typeof t=="number"?Ti(r,t):Oi(r,t)}function Oi(r,t){let e=Array.from(r.shape),n=r.size,o=r.dtype,a=t.dtype,i=o==="float32"&&a==="float32"?"float32":"float64",u=S.zeros(e,i),s=u.data;for(let c=0;c<n;c++){let l=(w(o),Number(r.data[c])),m=(w(a),Number(t.data[c]));s[c]=Math.atan2(l,m)}return u}function Ti(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=e==="float32"?"float32":"float64",u=S.zeros(n,i),s=u.data;if(w(e))for(let c=0;c<a;c++)s[c]=Math.atan2(Number(o[c]),t);else for(let c=0;c<a;c++)s[c]=Math.atan2(Number(o[c]),t);return u}function lo(r,t){return typeof t=="number"?$i(r,t):Ui(r,t)}function Ui(r,t){let e=Array.from(r.shape),n=r.size,o=r.dtype,a=t.dtype,i=o==="float32"&&a==="float32"?"float32":"float64",u=S.zeros(e,i),s=u.data;for(let c=0;c<n;c++){let l=(w(o),Number(r.data[c])),m=(w(a),Number(t.data[c]));s[c]=Math.hypot(l,m)}return u}function $i(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=e==="float32"?"float32":"float64",u=S.zeros(n,i),s=u.data;if(w(e))for(let c=0;c<a;c++)s[c]=Math.hypot(Number(o[c]),t);else for(let c=0;c<a;c++)s[c]=Math.hypot(Number(o[c]),t);return u}function fo(r){let t=180/Math.PI;return F(r,e=>e*t,!1)}function mo(r){let t=Math.PI/180;return F(r,e=>e*t,!1)}function yo(r){return F(r,Math.sinh,!1)}function po(r){return F(r,Math.cosh,!1)}function go(r){return F(r,Math.tanh,!1)}function bo(r){return F(r,Math.asinh,!1)}function Ao(r){return F(r,Math.acosh,!1)}function ho(r){return F(r,Math.atanh,!1)}function Jr(r,t){let e=r.shape,n=e.length,o=t.length;if(o<n)throw new Error("input operand has more dimensions than allowed by the axis remapping");let a=tr([Array.from(e),t]);if(a===null)throw new Error(`operands could not be broadcast together with shape (${e.join(",")}) (${t.join(",")})`);for(let i=0;i<o;i++)if(a[i]!==t[i])throw new Error(`operands could not be broadcast together with shape (${e.join(",")}) (${t.join(",")})`);return er(r,t)}function So(r){if(r.length===0)return[];if(r.length===1)return[r[0]];let t=r.map(n=>Array.from(n.shape)),e=tr(t);if(e===null)throw new Error(`operands could not be broadcast together with shapes ${t.map(n=>`(${n.join(",")})`).join(" ")}`);return r.map(n=>er(n,e))}function No(r,t,e){let n=r.shape,o=n.length,a=r.dtype;if(e===void 0){let p=r.size;for(let A of t){let b=A<0?p+A:A;if(b<0||b>=p)throw new Error(`index ${A} is out of bounds for axis 0 with size ${p}`)}let d=t.length,g=T(a);if(!g)throw new Error(`Cannot take from array with dtype ${a}`);let h=new g(d);for(let A=0;A<d;A++){let b=t[A];b<0&&(b=p+b);let N=r.iget(b);w(a),h[A]=N}return S.fromData(h,[d],a)}let i=e<0?o+e:e;if(i<0||i>=o)throw new Error(`axis ${e} is out of bounds for array of dimension ${o}`);let u=n[i];for(let p of t){let d=p<0?u+p:p;if(d<0||d>=u)throw new Error(`index ${p} is out of bounds for axis ${i} with size ${u}`)}let s=Array.from(n);s[i]=t.length;let c=s.reduce((p,d)=>p*d,1),l=T(a);if(!l)throw new Error(`Cannot take from array with dtype ${a}`);let m=new l(c),f=L(s),y=new Array(o).fill(0);for(let p=0;p<c;p++){let d=[...y],g=y[i],h=t[g];h<0&&(h=u+h),d[i]=h;let A=r.get(...d),b=0;for(let N=0;N<o;N++)b+=y[N]*f[N];w(a),m[b]=A;for(let N=o-1;N>=0&&(y[N]++,!(y[N]<s[N]));N--)y[N]=0}return S.fromData(m,s,a)}function Do(r,t,e){let n=r.size,o=r.dtype,a;if(typeof e=="number"||typeof e=="bigint")a=new Array(t.length).fill(e);else{a=[];for(let i=0;i<e.size;i++)a.push(e.iget(i));if(a.length===1)a=new Array(t.length).fill(a[0]);else if(a.length!==t.length){let i=[...a];a=[];for(let u=0;u<t.length;u++)a.push(i[u%i.length])}}for(let i=0;i<t.length;i++){let u=t[i];if(u<0&&(u=n+u),u<0||u>=n)throw new Error(`index ${t[i]} is out of bounds for axis 0 with size ${n}`);let s=a[i];w(o)?typeof s!="bigint"&&(s=BigInt(Math.round(Number(s)))):typeof s=="bigint"&&(s=Number(s)),r.iset(u,s)}}function xo(r,t){if(t.length===0)throw new Error("choices cannot be empty");let e=r.shape,n=t.length,o=t[0].dtype,a=t.map(f=>Array.from(f.shape));a.unshift(Array.from(e));let i=tr(a);if(i===null)throw new Error("operands could not be broadcast together");let u=er(r,i),s=t.map(f=>er(f,i)),c=i.reduce((f,y)=>f*y,1),l=T(o);if(!l)throw new Error(`Cannot choose with dtype ${o}`);let m=new l(c);for(let f=0;f<c;f++){let y=Number(u.iget(f));if(y<0||y>=n)throw new Error(`index ${y} is out of bounds for axis 0 with size ${n}`);let p=s[y].iget(f);w(o),m[f]=p}return S.fromData(m,i,o)}function wo(r,t,e=!1){if(r.ndim!==t.ndim)return!1;for(let o=0;o<r.ndim;o++)if(r.shape[o]!==t.shape[o])return!1;let n=r.size;for(let o=0;o<n;o++){let a=r.iget(o),i=t.iget(o);if(e){let u=typeof a=="number"&&Number.isNaN(a),s=typeof i=="number"&&Number.isNaN(i);if(u&&s)continue}if(a!==i)return!1}return!0}function Io(r,t,e){let n=r.shape,o=n.length,a=r.dtype,i=e<0?o+e:e;if(i<0||i>=o)throw new Error(`axis ${e} is out of bounds for array of dimension ${o}`);let u=t.shape;if(u.length!==o)throw new Error(`indices and arr must have the same number of dimensions, got ${u.length} vs ${o}`);for(let d=0;d<o;d++)if(d!==i&&u[d]!==n[d]&&u[d]!==1&&n[d]!==1)throw new Error(`index ${u[d]} is out of bounds for size ${n[d]} in dimension ${d}`);let s=Array.from(u),c=s.reduce((d,g)=>d*g,1),l=T(a);if(!l)throw new Error(`Cannot take_along_axis with dtype ${a}`);let m=new l(c),f=L(n),y=L(u),p=n[i];for(let d=0;d<c;d++){let g=new Array(o),h=d;for(let I=o-1;I>=0;I--)g[I]=h%s[I],h=Math.floor(h/s[I]);let A=0;for(let I=0;I<o;I++){let _=u[I]===1?0:g[I];A+=_*y[I]}let b=Number(t.iget(A));if(b<0&&(b=p+b),b<0||b>=p)throw new Error(`index ${b} is out of bounds for axis ${i} with size ${p}`);let N=[...g];N[i]=b;let D=0;for(let I=0;I<o;I++){let _=n[I]===1?0:N[I];D+=_*f[I]}let x=r.iget(D);w(a),m[d]=x}return S.fromData(m,s,a)}function zo(r,t,e,n){let o=r.shape,a=o.length,i=r.dtype,u=n<0?a+n:n;if(u<0||u>=a)throw new Error(`axis ${n} is out of bounds for array of dimension ${a}`);let s=t.shape,c=e.shape;if(s.length!==a||c.length!==a)throw new Error("indices, arr, and values must have same ndim");let l=o[u],m=L(o),f=L(s),y=L(c),p=s.reduce((d,g)=>d*g,1);for(let d=0;d<p;d++){let g=new Array(a),h=d;for(let _=a-1;_>=0;_--)g[_]=h%s[_],h=Math.floor(h/s[_]);let A=0;for(let _=0;_<a;_++)A+=g[_]*f[_];let b=Number(t.iget(A));if(b<0&&(b=l+b),b<0||b>=l)throw new Error(`index ${b} is out of bounds for axis ${u} with size ${l}`);let N=0;for(let _=0;_<a;_++){let B=c[_]===1?0:g[_];N+=B*y[_]}let D=e.iget(N),x=[...g];x[u]=b;let I=0;for(let _=0;_<a;_++)I+=x[_]*m[_];w(i)?typeof D!="bigint"&&(D=BigInt(Math.round(Number(D)))):typeof D=="bigint"&&(D=Number(D)),r.iset(I,D)}}function _o(r,t,e){let n=r.size,o=r.dtype,a;if(typeof e=="number"||typeof e=="bigint")a=[e];else{a=[];for(let u=0;u<e.size;u++)a.push(e.iget(u))}let i=0;for(let u=0;u<n;u++)if(t.iget(u)){let c=a[i%a.length];w(o)?typeof c!="bigint"&&(c=BigInt(Math.round(Number(c)))):typeof c=="bigint"&&(c=Number(c)),r.iset(u,c),i++}}function Bo(r,t,e){let n=t.shape,o=n.length,a=t.dtype,i=t.data,u=w(a);if(e===void 0){let A=0,b=Math.min(r.size,t.size);for(let I=0;I<b;I++)r.iget(I)&&A++;let N=T(a);if(!N)throw new Error(`Cannot compress with dtype ${a}`);let D=new N(A),x=0;for(let I=0;I<b;I++)r.iget(I)&&(D[x]=i[I],x++);return S.fromData(D,[A],a)}let s=e<0?o+e:e;if(s<0||s>=o)throw new Error(`axis ${e} is out of bounds for array of dimension ${o}`);let c=n[s],l=Math.min(r.size,c),m=[];for(let A=0;A<l;A++)r.iget(A)&&m.push(A);let f=m.length,y=[...n];y[s]=f;let p=y.reduce((A,b)=>A*b,1),d=T(a);if(!d)throw new Error(`Cannot compress with dtype ${a}`);let g=new d(p),h=L(n);if(s===0){let A=h[0],b=n.slice(1).reduce((D,x)=>D*x,1),N=0;for(let D=0;D<f;D++){let I=m[D]*A;if(u){let _=i,B=g;for(let v=0;v<b;v++)B[N++]=_[I+v]}else{let _=i,B=g;for(let v=0;v<b;v++)B[N++]=_[I+v]}}}else{let A=n.slice(0,s).reduce((D,x)=>D*x,1),b=n.slice(s+1).reduce((D,x)=>D*x,1),N=0;for(let D=0;D<A;D++)for(let x=0;x<f;x++){let I=m[x],_=0,B=D;for(let v=s-1;v>=0;v--){let E=B%n[v];B=Math.floor(B/n[v]),_+=E*h[v]}if(_+=I*h[s],u){let v=i,E=g;for(let U=0;U<b;U++)E[N++]=v[_+U]}else{let v=i,E=g;for(let U=0;U<b;U++)E[N++]=v[_+U]}}}return S.fromData(g,y,a)}function vo(r,t,e=0){if(r.length!==t.length)throw new Error("condlist and choicelist must have same length");if(r.length===0)throw new Error("condlist and choicelist cannot be empty");let n=[...r.map(f=>Array.from(f.shape)),...t.map(f=>Array.from(f.shape))],o=tr(n);if(o===null)throw new Error("condlist and choicelist arrays could not be broadcast together");let a=t[0].dtype,i=o.reduce((f,y)=>f*y,1),u=T(a);if(!u)throw new Error(`Cannot select with dtype ${a}`);let s=e;w(a)?s=typeof e=="bigint"?e:BigInt(e):s=typeof e=="bigint"?Number(e):e;let c=new u(i);for(let f=0;f<i;f++)w(a),c[f]=s;let l=r.map(f=>er(f,o)),m=t.map(f=>er(f,o));for(let f=0;f<i;f++)for(let y=0;y<r.length;y++)if(l[y].iget(f)){let p=m[y].iget(f);w(a),c[f]=p;break}return S.fromData(c,o,a)}function Eo(r,t,e){let n=r.size,o=r.dtype,a=[];for(let u=0;u<e.size;u++)a.push(e.iget(u));if(a.length===0)return;let i=0;for(let u=0;u<n;u++)if(t.iget(u)){let c=a[i%a.length];w(o)?typeof c!="bigint"&&(c=BigInt(Math.round(Number(c)))):typeof c=="bigint"&&(c=Number(c)),r.iset(u,c),i++}}function kt(r,t=2){if(t<1)throw new Error("ndim must be at least 1");let e=new Int32Array(r);for(let o=0;o<r;o++)e[o]=o;let n=[];for(let o=0;o<t;o++)n.push(S.fromData(new Int32Array(e),[r],"int32"));return n}function Mo(r){let t=r.shape,e=t.length;if(e<2)throw new Error("array must be at least 2-D");let n=t[0];for(let o=1;o<e;o++)if(t[o]!==n)throw new Error("All dimensions of input must be equal");return kt(n,e)}function Ct(r,t=0,e){let n=e??r,o=[],a=[];for(let i=0;i<r;i++)for(let u=0;u<=Math.min(i+t,n-1);u++)u>=0&&(o.push(i),a.push(u));return[S.fromData(new Int32Array(o),[o.length],"int32"),S.fromData(new Int32Array(a),[a.length],"int32")]}function Oo(r,t=0){let e=r.shape;if(e.length!==2)throw new Error("array must be 2-D");return Ct(e[0],t,e[1])}function Ft(r,t=0,e){let n=e??r,o=[],a=[];for(let i=0;i<r;i++)for(let u=Math.max(i+t,0);u<n;u++)o.push(i),a.push(u);return[S.fromData(new Int32Array(o),[o.length],"int32"),S.fromData(new Int32Array(a),[a.length],"int32")]}function To(r,t=0){let e=r.shape;if(e.length!==2)throw new Error("array must be 2-D");return Ft(e[0],t,e[1])}function Uo(r,t,e=0){let n=t(r,e),o=n.shape;if(o.length!==2||o[0]!==r||o[1]!==r)throw new Error("mask_func must return n x n array");let a=[],i=[];for(let u=0;u<r;u++)for(let s=0;s<r;s++)n.get(u,s)&&(a.push(u),i.push(s));return[S.fromData(new Int32Array(a),[a.length],"int32"),S.fromData(new Int32Array(i),[i.length],"int32")]}function $o(r,t="int32"){let e=r.length,n=[e,...r],o=n.reduce((s,c)=>s*c,1),a=T(t);if(!a)throw new Error(`Cannot create indices with dtype ${t}`);let i=new a(o),u=r.reduce((s,c)=>s*c,1);for(let s=0;s<e;s++){let c=s*u;for(let l=0;l<u;l++){let m=new Array(e),f=l;for(let p=e-1;p>=0;p--)m[p]=f%r[p],f=Math.floor(f/r[p]);let y=m[s];t==="int64"?i[c+l]=BigInt(y):i[c+l]=y}}return S.fromData(i,n,t)}function ko(...r){let t=r.length,e=[];for(let n=0;n<t;n++){let o=r[n],a=o.size,i=o.dtype,u=new Array(t).fill(1);u[n]=a;let s=T(i);if(!s)throw new Error(`Cannot create ix_ with dtype ${i}`);let c=new s(a);for(let l=0;l<a;l++){let m=o.iget(l);w(i),c[l]=m}e.push(S.fromData(c,u,i))}return e}function Co(r,t,e="raise"){if(r.length!==t.length)throw new Error("multi_index length must equal dims length");if(r.length===0)throw new Error("multi_index cannot be empty");let n=r[0].size,o=t.length,a=new Int32Array(n),i=new Array(o),u=1;for(let s=o-1;s>=0;s--)i[s]=u,u*=t[s];for(let s=0;s<n;s++){let c=0;for(let l=0;l<o;l++){let m=Number(r[l].iget(s)),f=t[l];if(e==="wrap")m=(m%f+f)%f;else if(e==="clip")m=Math.max(0,Math.min(m,f-1));else if(m<0||m>=f)throw new Error(`index ${m} is out of bounds for axis ${l} with size ${f}`);c+=m*i[l]}a[s]=c}return S.fromData(a,[n],"int32")}function Fo(r,t,e="C"){let n=t.length,o,a;if(typeof r=="number")o=[r],a=[];else{o=[];for(let l=0;l<r.size;l++)o.push(Number(r.iget(l)));a=Array.from(r.shape)}let i=o.length,u=t.reduce((l,m)=>l*m,1),s=new Array(n);if(e==="C"){let l=1;for(let m=n-1;m>=0;m--)s[m]=l,l*=t[m]}else{let l=1;for(let m=0;m<n;m++)s[m]=l,l*=t[m]}let c=[];for(let l=0;l<n;l++){let m=new Int32Array(i);c.push(S.fromData(m,a.length?a:[1],"int32"))}for(let l=0;l<i;l++){let m=o[l];if(m<0||m>=u)throw new Error(`index ${m} is out of bounds for array with size ${u}`);if(e==="C")for(let f=0;f<n;f++){let y=Math.floor(m/s[f]);m=m%s[f],c[f].data[l]=y%t[f]}else for(let f=n-1;f>=0;f--){let y=Math.floor(m/s[f]);m=m%s[f],c[f].data[l]=y%t[f]}}return typeof r=="number"?c.map(l=>{let m=l.iget(0);return S.fromData(new Int32Array([Number(m)]),[],"int32")}):c}function Vo(r,t,e=!1){let n=r.shape,o=n.length;if(o<2)throw new Error("array must be at least 2-d");let a;if(o===2)a=n[1]+1;else{a=1;for(let c=1;c<o;c++){let l=1;for(let m=c;m<o;m++)l*=n[m];a+=l}}let i=r.data,u=r.size,s=Math.min(...n);if(e&&o===2&&(s=Math.max(n[0],n[1])),typeof t=="number")for(let c=0;c<s&&c*a<u;c++){let l=c*a;if(l<u)i[l]=t;else break}else{let c=t.data,l=t.size;for(let m=0;m<s&&m*a<u;m++){let f=m*a;if(f<u)i[f]=c[m%l];else break}}}function Q(r,t){if(!we(r)&&r!=="bool")throw new TypeError(`ufunc '${t}' not supported for the input types, and the inputs could not be safely coerced to any supported types`)}function wr(r,t){return r.isCContiguous&&t.isCContiguous&&r.shape.length===t.shape.length&&r.shape.every((e,n)=>e===t.shape[n])}function Po(r,t){return Q(r.dtype,"bitwise_and"),typeof t=="number"?qi(r,t):(Q(t.dtype,"bitwise_and"),wr(r,t)?Vi(r,t):V(r,t,(e,n)=>e&n,"bitwise_and"))}function Vi(r,t){let e=k(r.dtype,t.dtype),n=S.zeros(Array.from(r.shape),e),o=r.size,a=r.data,i=t.data,u=n.data;if(w(e)){let s=u;if(!w(r.dtype)||!w(t.dtype))for(let l=0;l<o;l++){let m=typeof a[l]=="bigint"?a[l]:BigInt(Math.round(Number(a[l]))),f=typeof i[l]=="bigint"?i[l]:BigInt(Math.round(Number(i[l])));s[l]=m&f}else{let l=a,m=i;for(let f=0;f<o;f++)s[f]=l[f]&m[f]}}else for(let s=0;s<o;s++)u[s]=a[s]&i[s];return n}function qi(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=S.zeros(n,e),u=i.data;if(w(e)){let s=o,c=u,l=BigInt(Math.round(t));for(let m=0;m<a;m++)c[m]=s[m]&l}else for(let s=0;s<a;s++)u[s]=o[s]&t;return i}function Ro(r,t){return Q(r.dtype,"bitwise_or"),typeof t=="number"?Pi(r,t):(Q(t.dtype,"bitwise_or"),wr(r,t)?ji(r,t):V(r,t,(e,n)=>e|n,"bitwise_or"))}function ji(r,t){let e=k(r.dtype,t.dtype),n=S.zeros(Array.from(r.shape),e),o=r.size,a=r.data,i=t.data,u=n.data;if(w(e)){let s=u;if(!w(r.dtype)||!w(t.dtype))for(let l=0;l<o;l++){let m=typeof a[l]=="bigint"?a[l]:BigInt(Math.round(Number(a[l]))),f=typeof i[l]=="bigint"?i[l]:BigInt(Math.round(Number(i[l])));s[l]=m|f}else{let l=a,m=i;for(let f=0;f<o;f++)s[f]=l[f]|m[f]}}else for(let s=0;s<o;s++)u[s]=a[s]|i[s];return n}function Pi(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=S.zeros(n,e),u=i.data;if(w(e)){let s=o,c=u,l=BigInt(Math.round(t));for(let m=0;m<a;m++)c[m]=s[m]|l}else for(let s=0;s<a;s++)u[s]=o[s]|t;return i}function Lo(r,t){return Q(r.dtype,"bitwise_xor"),typeof t=="number"?Li(r,t):(Q(t.dtype,"bitwise_xor"),wr(r,t)?Ri(r,t):V(r,t,(e,n)=>e^n,"bitwise_xor"))}function Ri(r,t){let e=k(r.dtype,t.dtype),n=S.zeros(Array.from(r.shape),e),o=r.size,a=r.data,i=t.data,u=n.data;if(w(e)){let s=u;if(!w(r.dtype)||!w(t.dtype))for(let l=0;l<o;l++){let m=typeof a[l]=="bigint"?a[l]:BigInt(Math.round(Number(a[l]))),f=typeof i[l]=="bigint"?i[l]:BigInt(Math.round(Number(i[l])));s[l]=m^f}else{let l=a,m=i;for(let f=0;f<o;f++)s[f]=l[f]^m[f]}}else for(let s=0;s<o;s++)u[s]=a[s]^i[s];return n}function Li(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=S.zeros(n,e),u=i.data;if(w(e)){let s=o,c=u,l=BigInt(Math.round(t));for(let m=0;m<a;m++)c[m]=s[m]^l}else for(let s=0;s<a;s++)u[s]=o[s]^t;return i}function Vt(r){Q(r.dtype,"bitwise_not");let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=S.zeros(e,t),i=a.data;if(w(t)){let u=n,s=i;for(let c=0;c<o;c++)s[c]=~u[c]}else for(let u=0;u<o;u++)i[u]=~n[u];return a}function Go(r){return Vt(r)}function Wo(r,t){if(Q(r.dtype,"left_shift"),typeof t=="number")return qo(r,t);if(Q(t.dtype,"left_shift"),t.size===1||t.ndim===1&&t.shape[0]===1){let e=w(t.dtype)?Number(t.data[0]):t.data[0];return qo(r,e)}return wr(r,t)?Gi(r,t):V(r,t,(e,n)=>e<<n,"left_shift")}function Gi(r,t){let e=k(r.dtype,t.dtype),n=S.zeros(Array.from(r.shape),e),o=r.size,a=r.data,i=t.data,u=n.data;if(w(e)){let s=u;for(let c=0;c<o;c++){let l=typeof a[c]=="bigint"?a[c]:BigInt(Math.round(Number(a[c]))),m=typeof i[c]=="bigint"?i[c]:BigInt(Math.round(Number(i[c])));s[c]=l<<m}}else for(let s=0;s<o;s++)u[s]=a[s]<<i[s];return n}function qo(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=S.zeros(n,e),u=i.data;if(w(e)){let s=o,c=u,l=BigInt(Math.round(t));for(let m=0;m<a;m++)c[m]=s[m]<<l}else for(let s=0;s<a;s++)u[s]=o[s]<<t;return i}function Zo(r,t){if(Q(r.dtype,"right_shift"),typeof t=="number")return jo(r,t);if(Q(t.dtype,"right_shift"),t.size===1||t.ndim===1&&t.shape[0]===1){let e=w(t.dtype)?Number(t.data[0]):t.data[0];return jo(r,e)}return wr(r,t)?Wi(r,t):V(r,t,(e,n)=>e>>n,"right_shift")}function Wi(r,t){let e=k(r.dtype,t.dtype),n=S.zeros(Array.from(r.shape),e),o=r.size,a=r.data,i=t.data,u=n.data;if(w(e)){let s=u;for(let c=0;c<o;c++){let l=typeof a[c]=="bigint"?a[c]:BigInt(Math.round(Number(a[c]))),m=typeof i[c]=="bigint"?i[c]:BigInt(Math.round(Number(i[c])));s[c]=l>>m}}else for(let s=0;s<o;s++)u[s]=a[s]>>i[s];return n}function jo(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=S.zeros(n,e),u=i.data;if(w(e)){let s=o,c=u,l=BigInt(Math.round(t));for(let m=0;m<a;m++)c[m]=s[m]>>l}else for(let s=0;s<a;s++)u[s]=o[s]>>t;return i}function Ho(r,t=-1,e="big"){let n=Array.from(r.shape),o=n.length;if(t<0&&(t=o+t),t<0||t>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let a=n[t],i=Math.ceil(a/8),u=[...n];u[t]=i;let s=S.zeros(u,"uint8"),c=s.data;if(o===1){for(let g=0;g<i;g++){let h=0;for(let A=0;A<8;A++){let b=g*8+A;if(b<a){let N=Number(r.data[b])!==0?1:0;e==="big"?h|=N<<7-A:h|=N<<A}}c[g]=h}return s}let l=n.slice(0,t),m=n.slice(t+1),f=l.reduce((g,h)=>g*h,1),y=m.reduce((g,h)=>g*h,1),p=Xr(n),d=Xr(u);for(let g=0;g<f;g++)for(let h=0;h<y;h++)for(let A=0;A<i;A++){let b=0;for(let I=0;I<8;I++){let _=A*8+I;if(_<a){let B=0,v=g;for(let $=0;$<t;$++){let q=$<t-1?l.slice($+1).reduce((R,Ar)=>R*Ar,1):1,Z=Math.floor(v/q);v%=q,B+=Z*p[$]}B+=_*p[t];let E=h;for(let $=t+1;$<o;$++){let q=$<o-1?m.slice($-t).reduce((R,Ar)=>R*Ar,1):1,Z=Math.floor(E/q);E%=q,B+=Z*p[$]}let U=Number(r.data[B])!==0?1:0;e==="big"?b|=U<<7-I:b|=U<<I}}let N=0,D=g;for(let I=0;I<t;I++){let _=I<t-1?l.slice(I+1).reduce((v,E)=>v*E,1):1,B=Math.floor(D/_);D%=_,N+=B*d[I]}N+=A*d[t];let x=h;for(let I=t+1;I<o;I++){let _=I<o-1?m.slice(I-t).reduce((v,E)=>v*E,1):1,B=Math.floor(x/_);x%=_,N+=B*d[I]}c[N]=b}return s}function Yo(r,t=-1,e=-1,n="big"){if(r.dtype!=="uint8")throw new TypeError("Expected an input array of unsigned byte data type");let o=Array.from(r.shape),a=o.length;if(t<0&&(t=a+t),t<0||t>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let i=o[t],u=i*8;e>=0&&(u=e);let s=[...o];s[t]=u;let c=S.zeros(s,"uint8"),l=c.data;if(a===1){for(let h=0;h<i;h++){let A=Number(r.data[h]);for(let b=0;b<8;b++){let N=h*8+b;if(N>=u)break;n==="big"?l[N]=A>>7-b&1:l[N]=A>>b&1}}return c}let m=o.slice(0,t),f=o.slice(t+1),y=m.reduce((h,A)=>h*A,1),p=f.reduce((h,A)=>h*A,1),d=Xr(o),g=Xr(s);for(let h=0;h<y;h++)for(let A=0;A<p;A++)for(let b=0;b<i;b++){let N=0,D=h;for(let _=0;_<t;_++){let B=_<t-1?m.slice(_+1).reduce((E,U)=>E*U,1):1,v=Math.floor(D/B);D%=B,N+=v*d[_]}N+=b*d[t];let x=A;for(let _=t+1;_<a;_++){let B=_<a-1?f.slice(_-t).reduce((E,U)=>E*U,1):1,v=Math.floor(x/B);x%=B,N+=v*d[_]}let I=Number(r.data[N]);for(let _=0;_<8;_++){let B=b*8+_;if(B>=u)break;let v=0;D=h;for(let E=0;E<t;E++){let U=E<t-1?m.slice(E+1).reduce((q,Z)=>q*Z,1):1,$=Math.floor(D/U);D%=U,v+=$*g[E]}v+=B*g[t],x=A;for(let E=t+1;E<a;E++){let U=E<a-1?f.slice(E-t).reduce((q,Z)=>q*Z,1):1,$=Math.floor(x/U);x%=U,v+=$*g[E]}n==="big"?l[v]=I>>7-_&1:l[v]=I>>_&1}}return c}function Xr(r){let t=r.length,e=new Array(t),n=1;for(let o=t-1;o>=0;o--)e[o]=n,n*=r[o];return e}function dr(r){return r!==0&&r!==0n}function zr(r,t){return r.isCContiguous&&t.isCContiguous&&r.shape.length===t.shape.length&&r.shape.every((e,n)=>e===t.shape[n])}function Xo(r,t){return typeof t=="number"?Yi(r,t):zr(r,t)?Hi(r,t):Y(r,t,(e,n)=>dr(e)&&dr(n))}function Hi(r,t){let e=new Uint8Array(r.size),n=r.data,o=t.data,a=r.size,i=w(r.dtype),u=w(t.dtype);if(i||u)for(let s=0;s<a;s++){let c=i?n[s]!==0n:n[s]!==0,l=u?o[s]!==0n:o[s]!==0;e[s]=c&&l?1:0}else for(let s=0;s<a;s++)e[s]=n[s]!==0&&o[s]!==0?1:0;return S.fromData(e,Array.from(r.shape),"bool")}function Yi(r,t){let e=new Uint8Array(r.size),n=r.data,o=t!==0,a=r.size;if(w(r.dtype)){let i=n;for(let u=0;u<a;u++)e[u]=i[u]!==0n&&o?1:0}else for(let i=0;i<a;i++)e[i]=n[i]!==0&&o?1:0;return S.fromData(e,Array.from(r.shape),"bool")}function Qo(r,t){return typeof t=="number"?Xi(r,t):zr(r,t)?Ji(r,t):Y(r,t,(e,n)=>dr(e)||dr(n))}function Ji(r,t){let e=new Uint8Array(r.size),n=r.data,o=t.data,a=r.size,i=w(r.dtype),u=w(t.dtype);if(i||u)for(let s=0;s<a;s++){let c=i?n[s]!==0n:n[s]!==0,l=u?o[s]!==0n:o[s]!==0;e[s]=c||l?1:0}else for(let s=0;s<a;s++)e[s]=n[s]!==0||o[s]!==0?1:0;return S.fromData(e,Array.from(r.shape),"bool")}function Xi(r,t){let e=new Uint8Array(r.size),n=r.data,o=t!==0,a=r.size;if(w(r.dtype)){let i=n;for(let u=0;u<a;u++)e[u]=i[u]!==0n||o?1:0}else for(let i=0;i<a;i++)e[i]=n[i]!==0||o?1:0;return S.fromData(e,Array.from(r.shape),"bool")}function Ko(r){let t=new Uint8Array(r.size),e=r.data,n=r.size;if(w(r.dtype)){let o=e;for(let a=0;a<n;a++)t[a]=o[a]===0n?1:0}else for(let o=0;o<n;o++)t[o]=e[o]===0?1:0;return S.fromData(t,Array.from(r.shape),"bool")}function ra(r,t){return typeof t=="number"?Ki(r,t):zr(r,t)?Qi(r,t):Y(r,t,(e,n)=>dr(e)!==dr(n))}function Qi(r,t){let e=new Uint8Array(r.size),n=r.data,o=t.data,a=r.size,i=w(r.dtype),u=w(t.dtype);if(i||u)for(let s=0;s<a;s++){let c=i?n[s]!==0n:n[s]!==0,l=u?o[s]!==0n:o[s]!==0;e[s]=c!==l?1:0}else for(let s=0;s<a;s++){let c=n[s]!==0,l=o[s]!==0;e[s]=c!==l?1:0}return S.fromData(e,Array.from(r.shape),"bool")}function Ki(r,t){let e=new Uint8Array(r.size),n=r.data,o=t!==0,a=r.size;if(w(r.dtype)){let i=n;for(let u=0;u<a;u++){let s=i[u]!==0n;e[u]=s!==o?1:0}}else for(let i=0;i<a;i++){let u=n[i]!==0;e[i]=u!==o?1:0}return S.fromData(e,Array.from(r.shape),"bool")}function ta(r){let t=new Uint8Array(r.size),e=r.data,n=r.size;if(w(r.dtype))for(let o=0;o<n;o++)t[o]=1;else for(let o=0;o<n;o++){let a=e[o];t[o]=Number.isFinite(a)?1:0}return S.fromData(t,Array.from(r.shape),"bool")}function ea(r){let t=new Uint8Array(r.size),e=r.data,n=r.size;if(w(r.dtype))for(let o=0;o<n;o++)t[o]=0;else for(let o=0;o<n;o++){let a=e[o];t[o]=!Number.isFinite(a)&&!Number.isNaN(a)?1:0}return S.fromData(t,Array.from(r.shape),"bool")}function na(r){let t=new Uint8Array(r.size),e=r.data,n=r.size;if(w(r.dtype))for(let o=0;o<n;o++)t[o]=0;else for(let o=0;o<n;o++)t[o]=Number.isNaN(e[o])?1:0;return S.fromData(t,Array.from(r.shape),"bool")}function oa(r){let t=new Uint8Array(r.size);return S.fromData(t,Array.from(r.shape),"bool")}function aa(r,t){if(typeof t=="number")return tu(r,t);if(zr(r,t))return ru(r,t);let e=sr(r.shape,t.shape),n=e.reduce((s,c)=>s*c,1),o=S.zeros(e,"float64"),a=o.data,i=Qr(r,e),u=Qr(t,e);for(let s=0;s<n;s++){let c=Number(i.iget(s)),l=Number(u.iget(s));a[s]=Math.sign(l)*Math.abs(c)}return o}function ru(r,t){let e=S.zeros(Array.from(r.shape),"float64"),n=e.data,o=r.size,a=r.data,i=t.data,u=w(r.dtype),s=w(t.dtype);for(let c=0;c<o;c++){let l=u?Number(a[c]):a[c],m=s?Number(i[c]):i[c];n[c]=Math.sign(m)*Math.abs(l)}return e}function tu(r,t){let e=S.zeros(Array.from(r.shape),"float64"),n=e.data,o=r.data,a=r.size,i=Math.sign(t);if(w(r.dtype)){let u=o;for(let s=0;s<a;s++)n[s]=i*Math.abs(Number(u[s]))}else for(let u=0;u<a;u++)n[u]=i*Math.abs(o[u]);return e}function sa(r){let t=new Uint8Array(r.size),e=r.data,n=r.size;if(w(r.dtype)){let o=e;for(let a=0;a<n;a++)t[a]=o[a]<0n?1:0}else for(let o=0;o<n;o++){let a=e[o];t[o]=a<0||Object.is(a,-0)?1:0}return S.fromData(t,Array.from(r.shape),"bool")}function ia(r,t){if(typeof t=="number")return nu(r,t);if(zr(r,t))return eu(r,t);let e=sr(r.shape,t.shape),n=e.reduce((s,c)=>s*c,1),o=S.zeros(e,"float64"),a=o.data,i=Qr(r,e),u=Qr(t,e);for(let s=0;s<n;s++){let c=Number(i.iget(s)),l=Number(u.iget(s));a[s]=Ir(c,l)}return o}function eu(r,t){let e=S.zeros(Array.from(r.shape),"float64"),n=e.data,o=r.size,a=r.data,i=t.data,u=w(r.dtype),s=w(t.dtype);for(let c=0;c<o;c++){let l=u?Number(a[c]):a[c],m=s?Number(i[c]):i[c];n[c]=Ir(l,m)}return e}function nu(r,t){let e=S.zeros(Array.from(r.shape),"float64"),n=e.data,o=r.data,a=r.size;if(w(r.dtype)){let i=o;for(let u=0;u<a;u++)n[u]=Ir(Number(i[u]),t)}else for(let i=0;i<a;i++)n[i]=Ir(o[i],t);return e}function Ir(r,t){if(Number.isNaN(r)||Number.isNaN(t))return NaN;if(r===t)return t;if(r===0)return t>0?Number.MIN_VALUE:-Number.MIN_VALUE;let e=new ArrayBuffer(8),n=new Float64Array(e),o=new BigInt64Array(e);n[0]=r;let a=o[0];return r>0&&t>r||r<0&&t>r?a=a+1n:a=a-1n,o[0]=a,n[0]}function ua(r){let t=S.zeros(Array.from(r.shape),"float64"),e=t.data,n=r.data,o=r.size;if(w(r.dtype)){let a=n;for(let i=0;i<o;i++)e[i]=Jo(Number(a[i]))}else for(let a=0;a<o;a++)e[a]=Jo(n[a]);return t}function Jo(r){if(Number.isNaN(r))return NaN;if(!Number.isFinite(r))return NaN;if(Math.abs(r)===0)return Number.MIN_VALUE;let e=Ir(r,1/0);return Math.abs(e-r)}function Qr(r,t){let e=r.shape.length,n=t.length,o=new Array(n).fill(0);for(let a=0;a<e;a++){let i=n-e+a,u=r.shape[a],s=t[i];if(u===s)o[i]=r.strides[a];else if(u===1)o[i]=0;else throw new Error("Invalid broadcast")}return S.fromData(r.data,Array.from(t),r.dtype,o,r.offset)}function ca(r){let t=new Uint8Array(r.size);return S.fromData(t,Array.from(r.shape),"bool")}function la(r){return!1}function fa(r){let t=new Uint8Array(r.size).fill(1);return S.fromData(t,Array.from(r.shape),"bool")}function ma(r){return!0}function ya(r){let t=new Uint8Array(r.size),e=r.data,n=r.size;if(!w(r.dtype))for(let o=0;o<n;o++){let a=e[o];t[o]=a===-1/0?1:0}return S.fromData(t,Array.from(r.shape),"bool")}function pa(r){let t=new Uint8Array(r.size),e=r.data,n=r.size;if(!w(r.dtype))for(let o=0;o<n;o++){let a=e[o];t[o]=a===1/0?1:0}return S.fromData(t,Array.from(r.shape),"bool")}function da(r){return r.isFContiguous}function ga(r,t=100){return r.copy()}function ba(r){return typeof r=="number"||typeof r=="bigint"||typeof r=="boolean"||typeof r=="string"}function Aa(r){return r==null?!1:typeof r[Symbol.iterator]=="function"}function ha(r,t){let n={b:["bool"],i:["int8","int16","int32","int64"],u:["uint8","uint16","uint32","uint64"],f:["float32","float64"]}[t];return n?n.includes(r):!1}function Sa(r,t){let e=["float64","float32","int64","int32","int16","int8","uint64","uint32","uint16","uint8","bool"],n=e.indexOf(r),o=e.indexOf(t);return n<=o?r:t}function qt(r,t=-1){let e=r.shape,n=e.length,o=r.dtype,a=r.data;if(n===0)return r.copy();let i=t;if(i<0&&(i=n+i),i<0||i>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);let u=r.copy(),s=u.data,c=e[i],l=Array.from(e).filter((f,y)=>y!==i),m=l.length===0?1:l.reduce((f,y)=>f*y,1);if(w(o)){let f=a,y=s;for(let p=0;p<m;p++){let d=[];for(let g=0;g<c;g++){let h=O(p,i,g,e),A=M(h,e);d.push({value:f[A],idx:g})}d.sort((g,h)=>g.value<h.value?-1:g.value>h.value?1:0);for(let g=0;g<c;g++){let h=O(p,i,g,e),A=M(h,e);y[A]=d[g].value}}}else for(let f=0;f<m;f++){let y=[];for(let p=0;p<c;p++){let d=O(f,i,p,e),g=M(d,e);y.push(Number(a[g]))}y.sort((p,d)=>isNaN(p)&&isNaN(d)?0:isNaN(p)?1:isNaN(d)?-1:p-d);for(let p=0;p<c;p++){let d=O(f,i,p,e),g=M(d,e);s[g]=y[p]}}return u}function jt(r,t=-1){let e=r.shape,n=e.length,o=r.dtype,a=r.data;if(n===0)return S.zeros([0],"int32");let i=t;if(i<0&&(i=n+i),i<0||i>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);let u=S.zeros(Array.from(e),"int32"),s=u.data,c=e[i],l=Array.from(e).filter((f,y)=>y!==i),m=l.length===0?1:l.reduce((f,y)=>f*y,1);if(w(o)){let f=a;for(let y=0;y<m;y++){let p=[];for(let d=0;d<c;d++){let g=O(y,i,d,e),h=M(g,e);p.push({value:f[h],idx:d})}p.sort((d,g)=>d.value<g.value?-1:d.value>g.value?1:0);for(let d=0;d<c;d++){let g=O(y,i,d,e),h=M(g,e);s[h]=p[d].idx}}}else for(let f=0;f<m;f++){let y=[];for(let p=0;p<c;p++){let d=O(f,i,p,e),g=M(d,e);y.push({value:Number(a[g]),idx:p})}y.sort((p,d)=>isNaN(p.value)&&isNaN(d.value)?0:isNaN(p.value)?1:isNaN(d.value)?-1:p.value-d.value);for(let p=0;p<c;p++){let d=O(f,i,p,e),g=M(d,e);s[g]=y[p].idx}}return u}function Na(r){if(r.length===0)return S.zeros([0],"int32");let e=r[0].size;for(let i of r){if(i.ndim!==1)throw new Error("keys must be 1D arrays");if(i.size!==e)throw new Error("all keys must have the same length")}let n=[];for(let i=0;i<e;i++)n.push(i);n.sort((i,u)=>{for(let s=r.length-1;s>=0;s--){let l=r[s].data,m=Number(l[i]),f=Number(l[u]);if(!(isNaN(m)&&isNaN(f))){if(isNaN(m))return 1;if(isNaN(f)||m<f)return-1;if(m>f)return 1}}return 0});let o=S.zeros([e],"int32"),a=o.data;for(let i=0;i<e;i++)a[i]=n[i];return o}function au(r,t){let e=0,n=r.length-1;for(;e<n;){let o=Math.floor((e+n)/2),a=r[e],i=r[o],u=r[n],s;a<=i&&i<=u||u<=i&&i<=a?s=o:i<=a&&a<=u||u<=a&&a<=i?s=e:s=n;let c=r[s];[r[s],r[n]]=[r[n],r[s]];let l=e;for(let m=e;m<n;m++){let f=r[m],y=isNaN(f),p=isNaN(c);!y&&(p||f<=c)&&([r[l],r[m]]=[r[m],r[l]],l++)}if([r[l],r[n]]=[r[n],r[l]],l===t)return;l<t?e=l+1:n=l-1}}function su(r,t){let e=0,n=r.length-1;for(;e<n;){let o=Math.floor((e+n)/2),a=r[e],i=r[o],u=r[n],s;a<=i&&i<=u||u<=i&&i<=a?s=o:i<=a&&a<=u||u<=a&&a<=i?s=e:s=n;let c=r[s];[r[s],r[n]]=[r[n],r[s]];let l=e;for(let m=e;m<n;m++)r[m]<=c&&([r[l],r[m]]=[r[m],r[l]],l++);if([r[l],r[n]]=[r[n],r[l]],l===t)return;l<t?e=l+1:n=l-1}}function iu(r,t){let e=0,n=r.length-1;for(;e<n;){let o=Math.floor((e+n)/2),a=r[e].value,i=r[o].value,u=r[n].value,s;a<=i&&i<=u||u<=i&&i<=a?s=o:i<=a&&a<=u||u<=a&&a<=i?s=e:s=n;let c=r[s].value;[r[s],r[n]]=[r[n],r[s]];let l=e;for(let m=e;m<n;m++){let f=r[m].value,y=isNaN(f),p=isNaN(c);!y&&(p||f<=c)&&([r[l],r[m]]=[r[m],r[l]],l++)}if([r[l],r[n]]=[r[n],r[l]],l===t)return;l<t?e=l+1:n=l-1}}function uu(r,t){let e=0,n=r.length-1;for(;e<n;){let o=Math.floor((e+n)/2),a=r[e].value,i=r[o].value,u=r[n].value,s;a<=i&&i<=u||u<=i&&i<=a?s=o:i<=a&&a<=u||u<=a&&a<=i?s=e:s=n;let c=r[s].value;[r[s],r[n]]=[r[n],r[s]];let l=e;for(let m=e;m<n;m++)r[m].value<=c&&([r[l],r[m]]=[r[m],r[l]],l++);if([r[l],r[n]]=[r[n],r[l]],l===t)return;l<t?e=l+1:n=l-1}}function Pt(r,t,e=-1){let n=r.shape,o=n.length,a=r.dtype;if(o===0)return r.copy();let i=e;if(i<0&&(i=o+i),i<0||i>=o)throw new Error(`axis ${e} is out of bounds for array of dimension ${o}`);let u=n[i],s=t;if(s<0&&(s=u+s),s<0||s>=u)throw new Error(`kth(=${t}) out of bounds (${u})`);let c=r.copy(),l=c.data,m=Array.from(n).filter((y,p)=>p!==i),f=m.length===0?1:m.reduce((y,p)=>y*p,1);if(w(a)){let y=l;for(let p=0;p<f;p++){let d=[];for(let g=0;g<u;g++){let h=O(p,i,g,n),A=M(h,n);d.push(y[A])}su(d,s);for(let g=0;g<u;g++){let h=O(p,i,g,n),A=M(h,n);y[A]=d[g]}}}else for(let y=0;y<f;y++){let p=[];for(let d=0;d<u;d++){let g=O(y,i,d,n),h=M(g,n);p.push(Number(l[h]))}au(p,s);for(let d=0;d<u;d++){let g=O(y,i,d,n),h=M(g,n);l[h]=p[d]}}return c}function Rt(r,t,e=-1){let n=r.shape,o=n.length,a=r.dtype,i=r.data;if(o===0)return S.zeros([0],"int32");let u=e;if(u<0&&(u=o+u),u<0||u>=o)throw new Error(`axis ${e} is out of bounds for array of dimension ${o}`);let s=n[u],c=t;if(c<0&&(c=s+c),c<0||c>=s)throw new Error(`kth(=${t}) out of bounds (${s})`);let l=S.zeros(Array.from(n),"int32"),m=l.data,f=Array.from(n).filter((p,d)=>d!==u),y=f.length===0?1:f.reduce((p,d)=>p*d,1);if(w(a)){let p=i;for(let d=0;d<y;d++){let g=[];for(let h=0;h<s;h++){let A=O(d,u,h,n),b=M(A,n);g.push({value:p[b],idx:h})}uu(g,c);for(let h=0;h<s;h++){let A=O(d,u,h,n),b=M(A,n);m[b]=g[h].idx}}}else for(let p=0;p<y;p++){let d=[];for(let g=0;g<s;g++){let h=O(p,u,g,n),A=M(h,n);d.push({value:Number(i[A]),idx:g})}iu(d,c);for(let g=0;g<s;g++){let h=O(p,u,g,n),A=M(h,n);m[A]=d[g].idx}}return l}function Da(r){let t=r.dtype,e=r.size,n=r.data,o=[];for(let u=0;u<e;u++)o.push(Number(n[u]));o.sort((u,s)=>isNaN(u)&&isNaN(s)?0:isNaN(u)?1:isNaN(s)?-1:u-s);let a=S.zeros([e],t),i=a.data;for(let u=0;u<e;u++)i[u]=o[u];return a}function Kr(r){let t=r.shape,e=t.length,n=r.data,o=r.size,a=[];for(let l=0;l<e;l++)a.push([]);let i=[],u=1;for(let l=e-1;l>=0;l--)i.unshift(u),u*=t[l];for(let l=0;l<o;l++)if(n[l]){let m=l;for(let f=0;f<e;f++){let y=Math.floor(m/i[f]);m=m%i[f],a[f].push(y)}}let s=a[0]?.length??0,c=[];for(let l=0;l<e;l++){let m=S.zeros([s],"int32"),f=m.data;for(let y=0;y<s;y++)f[y]=a[l][y];c.push(m)}return c}function Lt(r){let t=r.shape,e=t.length,n=r.data,o=r.size,a=[],i=[],u=1;for(let f=e-1;f>=0;f--)i.unshift(u),u*=t[f];for(let f=0;f<o;f++)if(n[f]){let y=[],p=f;for(let d=0;d<e;d++){let g=Math.floor(p/i[d]);p=p%i[d],y.push(g)}a.push(y)}let s=a.length,c=e===0?[s,1]:[s,e],l=S.zeros(c,"int32"),m=l.data;for(let f=0;f<s;f++){let y=a[f];for(let p=0;p<(e===0?1:e);p++)m[f*(e===0?1:e)+p]=y[p]??0}return l}function xa(r){let t=r.data,e=r.size,n=[];for(let i=0;i<e;i++)t[i]&&n.push(i);let o=S.zeros([n.length],"int32"),a=o.data;for(let i=0;i<n.length;i++)a[i]=n[i];return o}function wa(r,t,e){if(t===void 0&&e===void 0)return Kr(r);if(t===void 0||e===void 0)throw new Error("either both or neither of x and y should be given");let n=r.shape,o=t.shape,a=e.shape,i=Math.max(n.length,o.length,a.length),u=B=>{let v=Array(i).fill(1);for(let E=0;E<B.length;E++)v[i-B.length+E]=B[E];return v},s=u(n),c=u(o),l=u(a),m=[];for(let B=0;B<i;B++){let v=[s[B],c[B],l[B]],E=Math.max(...v);for(let U of v)if(U!==1&&U!==E)throw new Error("operands could not be broadcast together");m.push(E)}let f=t.dtype,y=S.zeros(m,f),p=y.data,d=r.data,g=t.data,h=e.data,A=(B,v)=>{let E=[],U=1;for(let $=B.length-1;$>=0;$--)E.unshift(U),U*=B[$];for(;E.length<v.length;)E.unshift(0);for(let $=0;$<v.length;$++)v[$]===1&&m[$]!==1&&(E[$]=0);return E},b=A(n,s),N=A(o,c),D=A(a,l),x=[],I=1;for(let B=m.length-1;B>=0;B--)x.unshift(I),I*=m[B];let _=m.reduce((B,v)=>B*v,1);for(let B=0;B<_;B++){let v=B,E=0,U=0,$=0;for(let q=0;q<i;q++){let Z=Math.floor(v/x[q]);v=v%x[q],E+=Z*b[q],U+=Z*N[q],$+=Z*D[q]}d[E]?p[B]=g[U]:p[B]=h[$]}return y}function Gt(r,t,e="left"){if(r.ndim!==1)throw new Error("storage must be 1D");let n=r.data,o=r.size,a=t.data,i=t.size,u=S.zeros([i],"int32"),s=u.data;for(let c=0;c<i;c++){let l=Number(a[c]),m=0,f=o;if(e==="left")for(;m<f;){let y=Math.floor((m+f)/2);Number(n[y])<l?m=y+1:f=y}else for(;m<f;){let y=Math.floor((m+f)/2);Number(n[y])<=l?m=y+1:f=y}s[c]=m}return u}function Ia(r,t){let e=r.data,n=t.data,o=t.dtype,a=Math.min(r.size,t.size),i=0;for(let l=0;l<a;l++)e[l]&&i++;let u=S.zeros([i],o),s=u.data,c=0;if(w(o)){let l=n,m=s;for(let f=0;f<a;f++)e[f]&&(m[c++]=l[f])}else for(let l=0;l<a;l++)e[l]&&(s[c++]=n[l]);return u}function Wt(r,t){let e=r.shape,n=e.length,o=r.data,a=r.size;if(t===void 0){let f=0;for(let y=0;y<a;y++)o[y]&&f++;return f}let i=t;if(i<0&&(i=n+i),i<0||i>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);let u=Array.from(e).filter((f,y)=>y!==i);if(u.length===0)return Wt(r);let s=S.zeros(u,"int32"),c=s.data,l=e[i],m=u.reduce((f,y)=>f*y,1);for(let f=0;f<m;f++){let y=0;for(let p=0;p<l;p++){let d=O(f,i,p,e),g=M(d,e);o[g]&&y++}c[f]=y}return s}function za(r){if(!isFinite(r))return r;let t=Math.floor(r),e=r-t;return Math.abs(e-.5)<1e-10?t%2===0?t:t+1:Math.round(r)}function Zt(r,t=0){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=e==="float32"?"float32":"float64",u=S.zeros(n,i),s=u.data,c=Math.pow(10,t);for(let l=0;l<a;l++){let m=Number(o[l]);s[l]=za(m*c)/c}return u}function Ht(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=t==="float32"?"float32":"float64",i=S.zeros(e,a),u=i.data;for(let s=0;s<o;s++)u[s]=Math.ceil(Number(n[s]));return i}function Yt(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=t==="float32"?"float32":"float64",i=S.zeros(e,a),u=i.data;for(let s=0;s<o;s++)u[s]=Math.trunc(Number(n[s]));return i}function Jt(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=t==="float32"?"float32":"float64",i=S.zeros(e,a),u=i.data;for(let s=0;s<o;s++)u[s]=Math.floor(Number(n[s]));return i}function Xt(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=t==="float32"?"float32":"float64",i=S.zeros(e,a),u=i.data;for(let s=0;s<o;s++)u[s]=za(Number(n[s]));return i}function Qt(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=t==="float32"?"float32":"float64",i=S.zeros(e,a),u=i.data;for(let s=0;s<o;s++)u[s]=Math.trunc(Number(n[s]));return i}function nr(r,t=!1,e=!1,n=!1){let o=r.dtype,a=r.size,i=r.data,u=[];for(let b=0;b<a;b++)u.push({value:Number(i[b]),index:b});u.sort((b,N)=>isNaN(b.value)&&isNaN(N.value)?0:isNaN(b.value)?1:isNaN(N.value)?-1:b.value-N.value);let s=[],c=[],l=new Array(a),m=[],f,y=0;for(let b=0;b<u.length;b++){let{value:N,index:D}=u[b];f===void 0||isNaN(N)&&!isNaN(f)||!isNaN(N)&&isNaN(f)||!isNaN(N)&&!isNaN(f)&&N!==f?(f!==void 0&&m.push(y),s.push(N),c.push(D),y=1,f=N):y++}y>0&&m.push(y);let p=new Map,d=-1;for(let b=0;b<s.length;b++){let N=s[b];isNaN(N)?d=b:p.set(N,b)}for(let b=0;b<a;b++){let N=Number(i[b]);isNaN(N)?l[b]=d:l[b]=p.get(N)}let g=S.zeros([s.length],o),h=g.data;for(let b=0;b<s.length;b++)h[b]=s[b];if(!t&&!e&&!n)return g;let A={values:g};if(t){let b=S.zeros([c.length],"int32"),N=b.data;for(let D=0;D<c.length;D++)N[D]=c[D];A.indices=b}if(e){let b=S.zeros([l.length],"int32"),N=b.data;for(let D=0;D<l.length;D++)N[D]=l[D];A.inverse=b}if(n){let b=S.zeros([m.length],"int32"),N=b.data;for(let D=0;D<m.length;D++)N[D]=m[D];A.counts=b}return A}function _a(r,t){return Kt(r,t)}function Ba(r,t){let e=r.dtype,n=nr(r),o=nr(t),a=new Set;for(let c=0;c<o.size;c++)a.add(Number(o.data[c]));let i=[];for(let c=0;c<n.size;c++){let l=Number(n.data[c]);a.has(l)&&i.push(l)}i.sort((c,l)=>c-l);let u=S.zeros([i.length],e),s=u.data;for(let c=0;c<i.length;c++)s[c]=i[c];return u}function Kt(r,t){let e=Array.from(r.shape),n=r.size,o=new Set;for(let s=0;s<t.size;s++)o.add(Number(t.data[s]));let a=S.zeros(e,"bool"),i=a.data,u=r.data;for(let s=0;s<n;s++){let c=Number(u[s]);i[s]=o.has(c)?1:0}return a}function va(r,t){let e=r.dtype,n=nr(r),o=new Set;for(let s=0;s<t.size;s++)o.add(Number(t.data[s]));let a=[];for(let s=0;s<n.size;s++){let c=Number(n.data[s]);o.has(c)||a.push(c)}let i=S.zeros([a.length],e),u=i.data;for(let s=0;s<a.length;s++)u[s]=a[s];return i}function Ea(r,t){let e=r.dtype,n=nr(r),o=nr(t),a=new Set,i=new Set;for(let l=0;l<n.size;l++)a.add(Number(n.data[l]));for(let l=0;l<o.size;l++)i.add(Number(o.data[l]));let u=[];for(let l of a)i.has(l)||u.push(l);for(let l of i)a.has(l)||u.push(l);u.sort((l,m)=>l-m);let s=S.zeros([u.length],e),c=s.data;for(let l=0;l<u.length;l++)c[l]=u[l];return s}function Ma(r,t){let e=r.dtype,n=nr(r),o=nr(t),a=new Set;for(let c=0;c<n.size;c++)a.add(Number(n.data[c]));for(let c=0;c<o.size;c++)a.add(Number(o.data[c]));let i=Array.from(a);i.sort((c,l)=>c-l);let u=S.zeros([i.length],e),s=u.data;for(let c=0;c<i.length;c++)s[c]=i[c];return u}function re(r,t=1,e=-1){if(t<0)throw new Error(`order must be non-negative but got ${t}`);if(t===0)return r.copy();let n=Array.from(r.shape),o=n.length,a=e<0?o+e:e;if(a<0||a>=o)throw new Error(`axis ${e} is out of bounds for array of dimension ${o}`);if(n[a]<t+1)throw new Error(`diff requires at least ${t+1} elements along axis ${e}, but got ${n[a]}`);let i=r;for(let u=0;u<t;u++)i=mu(i,a);return i}function mu(r,t){let e=Array.from(r.shape),n=e.length,o=e[t],a=[...e];a[t]=o-1;let i=r.dtype,u=w(i)?"float64":i,s=S.zeros(a,u),c=s.data,l=r.strides,m=s.size;for(let f=0;f<m;f++){let y=f,p=new Array(n);for(let D=n-1;D>=0;D--)p[D]=y%a[D],y=Math.floor(y/a[D]);let d=[...p],g=[...p];g[t]=d[t]+1;let h=0,A=0;for(let D=0;D<n;D++)h+=d[D]*l[D],A+=g[D]*l[D];let b=(w(i),Number(r.data[h])),N=(w(i),Number(r.data[A]));c[f]=N-b}return s}function Oa(r,t=null,e=null){let n=r.size,o=r.dtype,a=w(o)?"float64":o,i=Math.max(0,n-1),u=e?e.length:0,s=t?t.length:0,c=u+i+s,l=S.zeros([c],a),m=l.data,f=0;if(e)for(let y of e)m[f++]=y;for(let y=0;y<i;y++){let p=(w(o),Number(r.iget(y))),d=(w(o),Number(r.iget(y+1)));m[f++]=d-p}if(t)for(let y of t)m[f++]=y;return l}function Ta(r,t=1,e=null){let o=Array.from(r.shape).length,a;if(e===null)a=Array.from({length:o},(s,c)=>c);else if(typeof e=="number"){let s=e<0?o+e:e;if(s<0||s>=o)throw new Error(`axis ${e} is out of bounds for array of dimension ${o}`);a=[s]}else a=e.map(s=>{let c=s<0?o+s:s;if(c<0||c>=o)throw new Error(`axis ${s} is out of bounds for array of dimension ${o}`);return c});let i;if(typeof t=="number")i=a.map(()=>t);else{if(t.length!==a.length)throw new Error("Number of spacings must match number of axes");i=t}let u=[];for(let s=0;s<a.length;s++)u.push(yu(r,a[s],i[s]));return u.length===1?u[0]:u}function yu(r,t,e){let n=Array.from(r.shape),o=n.length,a=n[t];if(a<2)throw new Error(`Shape of array along axis ${t} must be at least 2, but got ${a}`);let i=r.dtype,u=w(i)?"float64":i==="float32"?"float32":"float64",s=S.zeros(n,u),c=s.data,l=r.strides,m=e,f=2*m,y=r.size;for(let p=0;p<y;p++){let d=p,g=new Array(o);for(let b=o-1;b>=0;b--)g[b]=d%n[b],d=Math.floor(d/n[b]);let h=g[t],A;if(h===0){let b=[...g];b[t]=1;let N=0;for(let I=0;I<o;I++)N+=b[I]*l[I];let D=(w(i),Number(r.data[p]));A=((w(i),Number(r.data[N]))-D)/m}else if(h===a-1){let b=[...g];b[t]=a-2;let N=0;for(let I=0;I<o;I++)N+=b[I]*l[I];let D=(w(i),Number(r.data[p])),x=(w(i),Number(r.data[N]));A=(D-x)/m}else{let b=[...g],N=[...g];b[t]=h+1,N[t]=h-1;let D=0,x=0;for(let B=0;B<o;B++)D+=b[B]*l[B],x+=N[B]*l[B];let I=(w(i),Number(r.data[D])),_=(w(i),Number(r.data[x]));A=(I-_)/f}c[p]=A}return s}function Ua(r,t,e=-1,n=-1,o=-1){let a=Array.from(r.shape),i=Array.from(t.shape),u=a.length,s=i.length,c=e<0?u+e:e,l=n<0?s+n:n;if(c<0||c>=u)throw new Error(`axisa ${e} is out of bounds for array of dimension ${u}`);if(l<0||l>=s)throw new Error(`axisb ${n} is out of bounds for array of dimension ${s}`);let m=a[c],f=i[l];if(m!==2&&m!==3)throw new Error(`incompatible dimensions for cross product (dimension must be 2 or 3, got ${m})`);if(f!==2&&f!==3)throw new Error(`incompatible dimensions for cross product (dimension must be 2 or 3, got ${f})`);let y=k(r.dtype,t.dtype);if(u===1&&s===1&&m===3&&f===3){let p=S.zeros([3],y),d=p.data,g=Number(r.iget(0)),h=Number(r.iget(1)),A=Number(r.iget(2)),b=Number(t.iget(0)),N=Number(t.iget(1)),D=Number(t.iget(2));return d[0]=h*D-A*N,d[1]=A*b-g*D,d[2]=g*N-h*b,p}if(u===1&&s===1&&m===2&&f===2){let p=S.zeros([],y),d=Number(r.iget(0)),g=Number(r.iget(1)),h=Number(t.iget(0)),A=Number(t.iget(1));return p.data[0]=d*A-g*h,p}if(u===1&&s===1){if(m===2&&f===3){let p=S.zeros([3],y),d=p.data,g=Number(r.iget(0)),h=Number(r.iget(1)),A=Number(t.iget(0)),b=Number(t.iget(1)),N=Number(t.iget(2));return d[0]=h*N,d[1]=-g*N,d[2]=g*b-h*A,p}else if(m===3&&f===2){let p=S.zeros([3],y),d=p.data,g=Number(r.iget(0)),h=Number(r.iget(1)),A=Number(r.iget(2)),b=Number(t.iget(0)),N=Number(t.iget(1));return d[0]=-A*N,d[1]=A*b,d[2]=g*N-h*b,p}}if(u===2&&s===2&&c===1&&l===1){let p=a[0];if(i[0]!==p)throw new Error(`Shape mismatch: a has ${p} vectors, b has ${i[0]} vectors`);if(m===3&&f===3){let d=S.zeros([p,3],y),g=d.data;for(let h=0;h<p;h++){let A=Number(r.iget(h*3)),b=Number(r.iget(h*3+1)),N=Number(r.iget(h*3+2)),D=Number(t.iget(h*3)),x=Number(t.iget(h*3+1)),I=Number(t.iget(h*3+2));g[h*3]=b*I-N*x,g[h*3+1]=N*D-A*I,g[h*3+2]=A*x-b*D}return d}if(m===2&&f===2){let d=S.zeros([p],y),g=d.data;for(let h=0;h<p;h++){let A=Number(r.iget(h*2)),b=Number(r.iget(h*2+1)),N=Number(t.iget(h*2)),D=Number(t.iget(h*2+1));g[h]=A*D-b*N}return d}}throw new Error(`cross product not implemented for arrays with shapes ${JSON.stringify(a)} and ${JSON.stringify(i)}`)}function $a(r,t,e=0){let n=r.data,o=r.size,a=0;for(let u=0;u<o;u++){let s=Number(n[u]);if(s<0||!Number.isInteger(s))throw new Error("'x' argument must contain non-negative integers");s>a&&(a=s)}let i=Math.max(a+1,e);if(t!==void 0){if(t.size!==o)throw new Error("weights array must have same length as x");let u=t.data,s=new Float64Array(i);for(let c=0;c<o;c++){let l=Number(n[c]);s[l]+=Number(u[c])}return S.fromData(s,[i],"float64")}else{let u=new Float64Array(i);for(let s=0;s<o;s++){let c=Number(n[s]);u[c]++}return S.fromData(u,[i],"float64")}}function ka(r,t,e=!1){let n=r.data,o=t.data,a=r.size,i=t.size,u=new Float64Array(a),s=!0;i>1&&(s=Number(o[1])>=Number(o[0]));for(let c=0;c<a;c++){let l=Number(n[c]),m;if(s)e?m=du(o,i,l):m=_r(o,i,l);else if(e)for(m=0;m<i&&Number(o[m])>=l;)m++;else for(m=0;m<i&&Number(o[m])>l;)m++;u[c]=m}return S.fromData(u,[...r.shape],"float64")}function du(r,t,e){let n=0,o=t;for(;n<o;){let a=n+o>>>1;Number(r[a])<e?n=a+1:o=a}return n}function _r(r,t,e){let n=0,o=t;for(;n<o;){let a=n+o>>>1;Number(r[a])<=e?n=a+1:o=a}return n}function Ca(r,t=10,e,n=!1,o){let a=r.data,i=r.size,u;if(typeof t=="number"){let m,f;if(e)[m,f]=e;else{m=1/0,f=-1/0;for(let p=0;p<i;p++){let d=Number(a[p]);d<m&&(m=d),d>f&&(f=d)}m===f&&(m=m-.5,f=f+.5)}u=[];let y=(f-m)/t;for(let p=0;p<=t;p++)u.push(m+p*y)}else{let m=t.data;u=[];for(let f=0;f<t.size;f++)u.push(Number(m[f]))}let s=u.length-1,c=new Float64Array(s),l=o?.data;for(let m=0;m<i;m++){let f=Number(a[m]),y=l?Number(l[m]):1,p=_r(u,u.length,f)-1;if(!(p<0)){if(p>=s)if(f===u[s])p=s-1;else continue;c[p]+=y}}if(n){let m=0;for(let f=0;f<s;f++)m+=c[f];for(let f=0;f<s;f++){let y=u[f+1]-u[f];c[f]=c[f]/(m*y)}}return{hist:S.fromData(c,[s],"float64"),bin_edges:S.fromData(new Float64Array(u),[u.length],"float64")}}function Fa(r,t,e=10,n,o=!1,a){let i=r.data,u=t.data,s=r.size;if(t.size!==s)throw new Error("x and y must have the same length");let c,l,m,f;if(typeof e=="number"?(m=e,f=e):Array.isArray(e)&&e.length===2?(e[0],m=e[0],f=e[1]):(m=10,f=10),typeof m=="number"){let h,A;if(n)[h,A]=n[0];else{h=1/0,A=-1/0;for(let N=0;N<s;N++){let D=Number(i[N]);D<h&&(h=D),D>A&&(A=D)}h===A&&(h-=.5,A+=.5)}c=[];let b=(A-h)/m;for(let N=0;N<=m;N++)c.push(h+N*b)}else{let h=m.data;c=[];for(let A=0;A<m.size;A++)c.push(Number(h[A]))}if(typeof f=="number"){let h,A;if(n)[h,A]=n[1];else{h=1/0,A=-1/0;for(let N=0;N<s;N++){let D=Number(u[N]);D<h&&(h=D),D>A&&(A=D)}h===A&&(h-=.5,A+=.5)}l=[];let b=(A-h)/f;for(let N=0;N<=f;N++)l.push(h+N*b)}else{let h=f.data;l=[];for(let A=0;A<f.size;A++)l.push(Number(h[A]))}let y=c.length-1,p=l.length-1,d=new Float64Array(y*p),g=a?.data;for(let h=0;h<s;h++){let A=Number(i[h]),b=Number(u[h]),N=g?Number(g[h]):1,D=_r(c,c.length,A)-1,x=_r(l,l.length,b)-1;if(D<0||D>=y)if(A===c[y]&&D===y)D=y-1;else continue;if(x<0||x>=p)if(b===l[p]&&x===p)x=p-1;else continue;d[D*p+x]+=N}if(o){let h=0;for(let A=0;A<d.length;A++)h+=d[A];for(let A=0;A<y;A++)for(let b=0;b<p;b++){let N=c[A+1]-c[A],D=l[b+1]-l[b],x=N*D;d[A*p+b]=d[A*p+b]/(h*x)}}return{hist:S.fromData(d,[y,p],"float64"),x_edges:S.fromData(new Float64Array(c),[c.length],"float64"),y_edges:S.fromData(new Float64Array(l),[l.length],"float64")}}function Va(r,t=10,e,n=!1,o){let a=r.shape,i=r.data,u,s;if(a.length===1)u=a[0],s=1;else if(a.length===2)u=a[0],s=a[1];else throw new Error("sample must be 1D or 2D array");let c;if(typeof t=="number")c=new Array(s).fill(t);else if(c=t,c.length!==s)throw new Error("bins array length must match number of dimensions");let l=[];for(let h=0;h<s;h++){let A,b;if(e&&e[h])[A,b]=e[h];else{A=1/0,b=-1/0;for(let I=0;I<u;I++){let _=Number(s===1?i[I]:i[I*s+h]);_<A&&(A=_),_>b&&(b=_)}A===b&&(A-=.5,b+=.5)}let N=c[h],D=[],x=(b-A)/N;for(let I=0;I<=N;I++)D.push(A+I*x);l.push(D)}let m=c.slice(),f=m.reduce((h,A)=>h*A,1),y=new Float64Array(f),p=new Array(s);p[s-1]=1;for(let h=s-2;h>=0;h--)p[h]=p[h+1]*c[h+1];let d=o?.data;for(let h=0;h<u;h++){let A=d?Number(d[h]):1,b=0,N=!1;for(let D=0;D<s;D++){let x=Number(s===1?i[h]:i[h*s+D]),I=l[D],_=c[D],B=_r(I,I.length,x)-1;if(B<0||B>=_)if(x===I[_]&&B===_)B=_-1;else{N=!0;break}b+=B*p[D]}N||(y[b]+=A)}if(n){let h=0;for(let b=0;b<f;b++)h+=y[b];let A=new Float64Array(f);for(let b=0;b<f;b++){let N=1,D=b;for(let x=0;x<s;x++){let I=Math.floor(D/p[x])%c[x],_=l[x];N*=_[I+1]-_[I]}A[b]=N}for(let b=0;b<f;b++)y[b]=y[b]/(h*A[b])}let g=l.map(h=>S.fromData(new Float64Array(h),[h.length],"float64"));return{hist:S.fromData(y,m,"float64"),edges:g}}function te(r,t,e="full"){let n=r.data,o=t.data,a=r.size,i=t.size,u=a+i-1,s=new Float64Array(u);for(let c=0;c<u;c++){let l=0,m=c-i+1;for(let f=0;f<a;f++){let y=f-m;y>=0&&y<i&&(l+=Number(n[f])*Number(o[y]))}s[c]=l}if(e==="full")return S.fromData(s,[u],"float64");if(e==="same"){let c=Math.floor((u-a)/2),l=new Float64Array(a);for(let m=0;m<a;m++)l[m]=s[c+m];return S.fromData(l,[a],"float64")}else{let c=Math.max(a,i)-Math.min(a,i)+1,l=Math.min(a,i)-1,m=new Float64Array(c);for(let f=0;f<c;f++)m[f]=s[l+f];return S.fromData(m,[c],"float64")}}function qa(r,t,e="full"){let n=t.data,o=t.size,a=new Float64Array(o);for(let u=0;u<o;u++)a[u]=Number(n[o-1-u]);let i=S.fromData(a,[o],"float64");return te(r,i,e)}function ee(r,t,e=!0,n=!1,o){let a=r.shape,i=r.data,u;if(o!==void 0?u=o:u=n?0:1,a.length===1)if(t!==void 0){let y=t.data,p=r.size;if(t.size!==p)throw new Error("m and y must have same length");let d=0,g=0;for(let D=0;D<p;D++)d+=Number(i[D]),g+=Number(y[D]);d/=p,g/=p;let h=0,A=0,b=0;for(let D=0;D<p;D++){let x=Number(i[D])-d,I=Number(y[D])-g;h+=x*x,A+=I*I,b+=x*I}let N=p-u;return N<=0?S.fromData(new Float64Array([NaN,NaN,NaN,NaN]),[2,2],"float64"):(h/=N,A/=N,b/=N,S.fromData(new Float64Array([h,b,b,A]),[2,2],"float64"))}else{let y=r.size,p=0;for(let h=0;h<y;h++)p+=Number(i[h]);p/=y;let d=0;for(let h=0;h<y;h++){let A=Number(i[h])-p;d+=A*A}let g=y-u;return g<=0?S.fromData(new Float64Array([NaN]),[],"float64"):(d/=g,S.fromData(new Float64Array([d]),[],"float64"))}let s,c;e?(s=a[0],c=a[1]):(s=a[1],c=a[0]);let l=new Float64Array(s);for(let y=0;y<s;y++){let p=0;for(let d=0;d<c;d++){let g=e?y*c+d:d*s+y;p+=Number(i[g])}l[y]=p/c}let m=new Float64Array(s*s),f=c-u;if(f<=0)return m.fill(NaN),S.fromData(m,[s,s],"float64");for(let y=0;y<s;y++)for(let p=y;p<s;p++){let d=0;for(let h=0;h<c;h++){let A=e?y*c+h:h*s+y,b=e?p*c+h:h*s+p,N=Number(i[A])-l[y],D=Number(i[b])-l[p];d+=N*D}let g=d/f;m[y*s+p]=g,m[p*s+y]=g}return S.fromData(m,[s,s],"float64")}function ja(r,t,e=!0){if(r.shape.length===1&&t===void 0)return S.fromData(new Float64Array([1]),[],"float64");let n=ee(r,t,e,!1),o=n.data,i=n.shape[0],u=new Float64Array(i*i);for(let s=0;s<i;s++)for(let c=0;c<i;c++){let l=Number(o[s*i+c]),m=Number(o[s*i+s]),f=Number(o[c*i+c]);m<=0||f<=0?u[s*i+c]=NaN:u[s*i+c]=l/Math.sqrt(m*f)}return S.fromData(u,[i,i],"float64")}var z=class r{constructor(t,e){this._storage=t,this._base=e}get storage(){return this._storage}static _fromStorage(t,e){return new r(t,e)}get shape(){return this._storage.shape}get ndim(){return this._storage.ndim}get size(){return this._storage.size}get dtype(){return this._storage.dtype}get data(){return this._storage.data}get strides(){return this._storage.strides}get flags(){return{C_CONTIGUOUS:this._storage.isCContiguous,F_CONTIGUOUS:this._storage.isFContiguous,OWNDATA:this._base===void 0}}get base(){return this._base??null}get T(){return this.transpose()}get itemsize(){return Tr(this._storage.dtype)}get nbytes(){return this.size*this.itemsize}fill(t){let e=this._storage.dtype,n=this.size;if(w(e)){let o=typeof t=="bigint"?t:BigInt(Math.round(Number(t)));for(let a=0;a<n;a++)this._storage.iset(a,o)}else if(e==="bool"){let o=t?1:0;for(let a=0;a<n;a++)this._storage.iset(a,o)}else{let o=Number(t);for(let a=0;a<n;a++)this._storage.iset(a,o)}}*[Symbol.iterator](){if(this.ndim===0)yield this._storage.iget(0);else if(this.ndim===1)for(let t=0;t<this.shape[0];t++)yield this._storage.iget(t);else for(let t=0;t<this.shape[0];t++)yield this.slice(String(t))}get(t){if(t.length!==this.ndim)throw new Error(`Index has ${t.length} dimensions, but array has ${this.ndim} dimensions`);let e=t.map((n,o)=>{let a=n;if(a<0&&(a=this.shape[o]+a),a<0||a>=this.shape[o])throw new Error(`Index ${n} is out of bounds for axis ${o} with size ${this.shape[o]}`);return a});return this._storage.get(...e)}set(t,e){if(t.length!==this.ndim)throw new Error(`Index has ${t.length} dimensions, but array has ${this.ndim} dimensions`);let n=t.map((i,u)=>{let s=i;if(s<0&&(s=this.shape[u]+s),s<0||s>=this.shape[u])throw new Error(`Index ${i} is out of bounds for axis ${u} with size ${this.shape[u]}`);return s}),o=this.dtype,a;w(o)?a=typeof e=="bigint"?e:BigInt(Math.round(e)):o==="bool"?a=e?1:0:a=Number(e),this._storage.set(n,a)}copy(){return new r(this._storage.copy())}astype(t,e=!0){let n=this.dtype;if(n===t&&!e)return this;if(n===t&&e)return this.copy();let o=Array.from(this.shape),a=this.size,i=T(t);if(!i)throw new Error(`Cannot convert to dtype ${t}`);let u=new i(a),s=this.data;if(w(n)&&!w(t)){let l=s;if(t==="bool")for(let m=0;m<a;m++)u[m]=l[m]!==BigInt(0)?1:0;else for(let m=0;m<a;m++)u[m]=Number(l[m])}else if(!w(n)&&w(t)){let l=s;for(let m=0;m<a;m++)u[m]=BigInt(Math.round(Number(l[m])))}else if(t==="bool"){let l=s;for(let m=0;m<a;m++)u[m]=l[m]!==0?1:0}else if(n==="bool"&&!w(t)){let l=s;for(let m=0;m<a;m++)u[m]=l[m]}else if(!w(n)&&!w(t)){let l=s;for(let m=0;m<a;m++)u[m]=l[m]}else{let l=s;for(let m=0;m<a;m++)u[m]=l[m]}let c=S.fromData(u,o,t);return new r(c)}add(t){let e=typeof t=="number"?t:t._storage,n=Ie(this._storage,e);return r._fromStorage(n)}subtract(t){let e=typeof t=="number"?t:t._storage,n=ze(this._storage,e);return r._fromStorage(n)}multiply(t){let e=typeof t=="number"?t:t._storage,n=_e(this._storage,e);return r._fromStorage(n)}divide(t){let e=typeof t=="number"?t:t._storage,n=Be(this._storage,e);return r._fromStorage(n)}mod(t){let e=typeof t=="number"?t:t._storage,n=$r(this._storage,e);return r._fromStorage(n)}floor_divide(t){let e=typeof t=="number"?t:t._storage,n=lt(this._storage,e);return r._fromStorage(n)}positive(){let t=Oe(this._storage);return r._fromStorage(t)}reciprocal(){let t=Te(this._storage);return r._fromStorage(t)}sqrt(){let t=Wn(this._storage);return r._fromStorage(t)}power(t){let e=typeof t=="number"?t:t._storage,n=Zn(this._storage,e);return r._fromStorage(n)}exp(){let t=Hn(this._storage);return r._fromStorage(t)}exp2(){let t=Yn(this._storage);return r._fromStorage(t)}expm1(){let t=Jn(this._storage);return r._fromStorage(t)}log(){let t=Xn(this._storage);return r._fromStorage(t)}log2(){let t=Qn(this._storage);return r._fromStorage(t)}log10(){let t=Kn(this._storage);return r._fromStorage(t)}log1p(){let t=ro(this._storage);return r._fromStorage(t)}logaddexp(t){let e=typeof t=="number"?t:t._storage,n=to(this._storage,e);return r._fromStorage(n)}logaddexp2(t){let e=typeof t=="number"?t:t._storage,n=eo(this._storage,e);return r._fromStorage(n)}absolute(){let t=ve(this._storage);return r._fromStorage(t)}negative(){let t=Ee(this._storage);return r._fromStorage(t)}sign(){let t=Me(this._storage);return r._fromStorage(t)}around(t=0){let e=Zt(this._storage,t);return r._fromStorage(e)}round(t=0){return this.around(t)}ceil(){let t=Ht(this._storage);return r._fromStorage(t)}fix(){let t=Yt(this._storage);return r._fromStorage(t)}floor(){let t=Jt(this._storage);return r._fromStorage(t)}rint(){let t=Xt(this._storage);return r._fromStorage(t)}trunc(){let t=Qt(this._storage);return r._fromStorage(t)}sin(){let t=no(this._storage);return r._fromStorage(t)}cos(){let t=oo(this._storage);return r._fromStorage(t)}tan(){let t=ao(this._storage);return r._fromStorage(t)}arcsin(){let t=so(this._storage);return r._fromStorage(t)}arccos(){let t=io(this._storage);return r._fromStorage(t)}arctan(){let t=uo(this._storage);return r._fromStorage(t)}arctan2(t){let e=typeof t=="number"?t:t._storage,n=co(this._storage,e);return r._fromStorage(n)}hypot(t){let e=typeof t=="number"?t:t._storage,n=lo(this._storage,e);return r._fromStorage(n)}degrees(){let t=fo(this._storage);return r._fromStorage(t)}radians(){let t=mo(this._storage);return r._fromStorage(t)}sinh(){let t=yo(this._storage);return r._fromStorage(t)}cosh(){let t=po(this._storage);return r._fromStorage(t)}tanh(){let t=go(this._storage);return r._fromStorage(t)}arcsinh(){let t=bo(this._storage);return r._fromStorage(t)}arccosh(){let t=Ao(this._storage);return r._fromStorage(t)}arctanh(){let t=ho(this._storage);return r._fromStorage(t)}greater(t){let e=typeof t=="number"?t:t._storage,n=Ze(this._storage,e);return r._fromStorage(n)}greater_equal(t){let e=typeof t=="number"?t:t._storage,n=He(this._storage,e);return r._fromStorage(n)}less(t){let e=typeof t=="number"?t:t._storage,n=Ye(this._storage,e);return r._fromStorage(n)}less_equal(t){let e=typeof t=="number"?t:t._storage,n=Je(this._storage,e);return r._fromStorage(n)}equal(t){let e=typeof t=="number"?t:t._storage,n=Xe(this._storage,e);return r._fromStorage(n)}not_equal(t){let e=typeof t=="number"?t:t._storage,n=Qe(this._storage,e);return r._fromStorage(n)}isclose(t,e=1e-5,n=1e-8){let o=typeof t=="number"?t:t._storage,a=ft(this._storage,o,e,n);return r._fromStorage(a)}allclose(t,e=1e-5,n=1e-8){let o=typeof t=="number"?t:t._storage;return Ke(this._storage,o,e,n)}bitwise_and(t){let e=typeof t=="number"?t:t._storage,n=Po(this._storage,e);return r._fromStorage(n)}bitwise_or(t){let e=typeof t=="number"?t:t._storage,n=Ro(this._storage,e);return r._fromStorage(n)}bitwise_xor(t){let e=typeof t=="number"?t:t._storage,n=Lo(this._storage,e);return r._fromStorage(n)}bitwise_not(){let t=Vt(this._storage);return r._fromStorage(t)}invert(){let t=Go(this._storage);return r._fromStorage(t)}left_shift(t){let e=typeof t=="number"?t:t._storage,n=Wo(this._storage,e);return r._fromStorage(n)}right_shift(t){let e=typeof t=="number"?t:t._storage,n=Zo(this._storage,e);return r._fromStorage(n)}logical_and(t){let e=typeof t=="number"?t:t._storage,n=Xo(this._storage,e);return r._fromStorage(n)}logical_or(t){let e=typeof t=="number"?t:t._storage,n=Qo(this._storage,e);return r._fromStorage(n)}logical_not(){let t=Ko(this._storage);return r._fromStorage(t)}logical_xor(t){let e=typeof t=="number"?t:t._storage,n=ra(this._storage,e);return r._fromStorage(n)}isfinite(){let t=ta(this._storage);return r._fromStorage(t)}isinf(){let t=ea(this._storage);return r._fromStorage(t)}isnan(){let t=na(this._storage);return r._fromStorage(t)}isnat(){let t=oa(this._storage);return r._fromStorage(t)}copysign(t){let e=typeof t=="number"?t:t._storage,n=aa(this._storage,e);return r._fromStorage(n)}signbit(){let t=sa(this._storage);return r._fromStorage(t)}nextafter(t){let e=typeof t=="number"?t:t._storage,n=ia(this._storage,e);return r._fromStorage(n)}spacing(){let t=ua(this._storage);return r._fromStorage(t)}sum(t,e=!1){let n=hr(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}mean(t,e=!1){let n=kr(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}max(t,e=!1){let n=Cr(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}min(t,e=!1){let n=Fr(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}prod(t,e=!1){let n=mt(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}argmin(t){let e=yt(this._storage,t);return typeof e=="number"?e:r._fromStorage(e)}argmax(t){let e=pt(this._storage,t);return typeof e=="number"?e:r._fromStorage(e)}var(t,e=0,n=!1){let o=dt(this._storage,t,e,n);return typeof o=="number"?o:r._fromStorage(o)}std(t,e=0,n=!1){let o=tn(this._storage,t,e,n);return typeof o=="number"?o:r._fromStorage(o)}all(t,e=!1){let n=gt(this._storage,t,e);return typeof n=="boolean"?n:r._fromStorage(n)}any(t,e=!1){let n=bt(this._storage,t,e);return typeof n=="boolean"?n:r._fromStorage(n)}cumsum(t){return r._fromStorage(At(this._storage,t))}cumprod(t){return r._fromStorage(ht(this._storage,t))}ptp(t,e=!1){let n=St(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}median(t,e=!1){let n=Nt(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}percentile(t,e,n=!1){let o=Dt(this._storage,t,e,n);return typeof o=="number"?o:r._fromStorage(o)}quantile(t,e,n=!1){let o=mr(this._storage,t,e,n);return typeof o=="number"?o:r._fromStorage(o)}average(t,e){let n=Vr(this._storage,e,t?.storage);return typeof n=="number"?n:r._fromStorage(n)}nansum(t,e=!1){let n=qr(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}nanprod(t,e=!1){let n=jr(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}nanmean(t,e=!1){let n=Pr(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}nanvar(t,e=0,n=!1){let o=Sr(this._storage,t,e,n);return typeof o=="number"?o:r._fromStorage(o)}nanstd(t,e=0,n=!1){let o=xt(this._storage,t,e,n);return typeof o=="number"?o:r._fromStorage(o)}nanmin(t,e=!1){let n=Rr(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}nanmax(t,e=!1){let n=Lr(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}nanargmin(t){let e=Gr(this._storage,t);return typeof e=="number"?e:r._fromStorage(e)}nanargmax(t){let e=Wr(this._storage,t);return typeof e=="number"?e:r._fromStorage(e)}nancumsum(t){return r._fromStorage(wt(this._storage,t))}nancumprod(t){return r._fromStorage(It(this._storage,t))}nanmedian(t,e=!1){let n=Zr(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}sort(t=-1){return r._fromStorage(qt(this._storage,t))}argsort(t=-1){return r._fromStorage(jt(this._storage,t))}partition(t,e=-1){return r._fromStorage(Pt(this._storage,t,e))}argpartition(t,e=-1){return r._fromStorage(Rt(this._storage,t,e))}nonzero(){return Kr(this._storage).map(e=>r._fromStorage(e))}argwhere(){return r._fromStorage(Lt(this._storage))}searchsorted(t,e="left"){return r._fromStorage(Gt(this._storage,t._storage,e))}diff(t=1,e=-1){return r._fromStorage(re(this._storage,t,e))}reshape(...t){let e=t.length===1&&Array.isArray(t[0])?t[0]:t,n=P(this._storage,e),a=n.data===this.data?this._base??this:void 0;return r._fromStorage(n,a)}flatten(){let t=Hr(this._storage);return r._fromStorage(t)}ravel(){let t=yr(this._storage),n=t.data===this.data?this._base??this:void 0;return r._fromStorage(t,n)}transpose(t){let e=Dr(this._storage,t),n=this._base??this;return r._fromStorage(e,n)}squeeze(t){let e=en(this._storage,t),n=this._base??this;return r._fromStorage(e,n)}expand_dims(t){let e=Nr(this._storage,t),n=this._base??this;return r._fromStorage(e,n)}swapaxes(t,e){let n=nn(this._storage,t,e),o=this._base??this;return r._fromStorage(n,o)}moveaxis(t,e){let n=zt(this._storage,t,e),o=this._base??this;return r._fromStorage(n,o)}repeat(t,e){let n=yn(this._storage,t,e);return r._fromStorage(n)}take(t,e){let n=No(this._storage,t,e);return r._fromStorage(n)}put(t,e){let n=e instanceof r?e._storage:e;Do(this._storage,t,n)}matmul(t){let e=X(this._storage,t._storage);return r._fromStorage(e)}dot(t){let e=vt(this._storage,t._storage);return typeof e=="number"||typeof e=="bigint"?e:r._fromStorage(e)}trace(){return _n(this._storage)}inner(t){let e=Bn(this._storage,t._storage);return typeof e=="number"||typeof e=="bigint"?e:r._fromStorage(e)}outer(t){let e=Et(this._storage,t._storage);return r._fromStorage(e)}tensordot(t,e=2){let n=vn(this._storage,t._storage,e);return typeof n=="number"||typeof n=="bigint"?n:r._fromStorage(n)}cbrt(){let t=Ue(this._storage);return r._fromStorage(t)}fabs(){let t=$e(this._storage);return r._fromStorage(t)}divmod(t){let e=typeof t=="number"?t:t._storage,[n,o]=ke(this._storage,e);return[r._fromStorage(n),r._fromStorage(o)]}square(){let t=Ce(this._storage);return r._fromStorage(t)}remainder(t){let e=typeof t=="number"?t:t._storage,n=Fe(this._storage,e);return r._fromStorage(n)}heaviside(t){let e=typeof t=="number"?t:t._storage,n=Ve(this._storage,e);return r._fromStorage(n)}slice(...t){if(t.length===0)return this;if(t.length>this.ndim)throw new Error(`Too many indices for array: array is ${this.ndim}-dimensional, but ${t.length} were indexed`);let e=t.map((s,c)=>{let l=Ne(s);return De(l,this.shape[c])});for(;e.length<this.ndim;)e.push({start:0,stop:this.shape[e.length],step:1,isIndex:!1});let n=[],o=[],a=this._storage.offset;for(let s=0;s<e.length;s++){let c=e[s],l=this._storage.strides[s];if(a+=c.start*l,!c.isIndex){let m;c.step>0?m=Math.max(0,Math.ceil((c.stop-c.start)/c.step)):m=Math.max(0,Math.ceil((c.start-c.stop)/Math.abs(c.step))),n.push(m),o.push(l*c.step)}}let i=S.fromData(this._storage.data,n,this._storage.dtype,o,a),u=this._base??this;return new r(i,u)}row(t){if(this.ndim<2)throw new Error("row() requires at least 2 dimensions");return this.slice(String(t),":")}col(t){if(this.ndim<2)throw new Error("col() requires at least 2 dimensions");return this.slice(":",String(t))}rows(t,e){if(this.ndim<2)throw new Error("rows() requires at least 2 dimensions");return this.slice(`${t}:${e}`,":")}cols(t,e){if(this.ndim<2)throw new Error("cols() requires at least 2 dimensions");return this.slice(":",`${t}:${e}`)}toString(){return`NDArray(shape=${JSON.stringify(this.shape)}, dtype=${this.dtype})`}toArray(){if(this.ndim===0)return this._storage.iget(0);let t=this.shape,e=t.length,n=(o,a)=>{if(a===e)return this._storage.get(...o);let i=[];for(let u=0;u<t[a];u++)o[a]=u,i.push(n(o,a+1));return i};return n(new Array(e),0)}};function or(r,t=j){let e=S.zeros(r,t);return new z(e)}function Pa(r,t=j){let e=S.ones(r,t);return new z(e)}function bu(r){let t=[],e=r;for(;Array.isArray(e);)t.push(e.length),e=e[0];return t}function Ra(r){return typeof r=="bigint"?!0:Array.isArray(r)?r.some(t=>Ra(t)):!1}function Au(r){let t=[];function e(n){Array.isArray(n)?n.forEach(o=>e(o)):t.push(n)}return e(r),t}function G(r,t){if(r instanceof z)return!t||r.dtype===t?r.copy():r.astype(t);let e=Ra(r),n=bu(r),o=n.reduce((l,m)=>l*m,1),a=t;a||(e?a="int64":a=j);let i=T(a);if(!i)throw new Error(`Cannot create array with dtype ${a}`);let u=new i(o),s=Au(r);if(w(a)){let l=u;for(let m=0;m<o;m++){let f=s[m];l[m]=typeof f=="bigint"?f:BigInt(Math.round(Number(f)))}}else if(a==="bool"){let l=u;for(let m=0;m<o;m++)l[m]=s[m]?1:0}else{let l=u;for(let m=0;m<o;m++){let f=s[m];l[m]=Number(f)}}let c=S.fromData(u,n,a);return new z(c)}function hu(r,t,e=1,n=j){let o=r,a=t;if(t===void 0&&(o=0,a=r),a===void 0)throw new Error("stop is required");let i=Math.max(0,Math.ceil((a-o)/e)),u=T(n);if(!u)throw new Error(`Cannot create arange array with dtype ${n}`);let s=new u(i);if(w(n))for(let l=0;l<i;l++)s[l]=BigInt(Math.round(o+l*e));else if(n==="bool")for(let l=0;l<i;l++)s[l]=o+l*e!==0?1:0;else for(let l=0;l<i;l++)s[l]=o+l*e;let c=S.fromData(s,[i],n);return new z(c)}function Su(r,t,e=50,n=j){if(e<0)throw new Error("num must be non-negative");if(e===0)return G([],n);if(e===1)return G([r],n);let o=T(n);if(!o)throw new Error(`Cannot create linspace array with dtype ${n}`);let a=new o(e),i=(t-r)/(e-1);if(w(n))for(let s=0;s<e;s++)a[s]=BigInt(Math.round(r+s*i));else if(n==="bool")for(let s=0;s<e;s++)a[s]=r+s*i!==0?1:0;else for(let s=0;s<e;s++)a[s]=r+s*i;let u=S.fromData(a,[e],n);return new z(u)}function Nu(r,t,e=50,n=10,o=j){if(e<0)throw new Error("num must be non-negative");if(e===0)return G([],o);if(e===1)return G([Math.pow(n,r)],o);let a=T(o);if(!a)throw new Error(`Cannot create logspace array with dtype ${o}`);let i=new a(e),u=(t-r)/(e-1);if(w(o))for(let c=0;c<e;c++){let l=r+c*u;i[c]=BigInt(Math.round(Math.pow(n,l)))}else if(o==="bool")for(let c=0;c<e;c++){let l=r+c*u;i[c]=Math.pow(n,l)!==0?1:0}else for(let c=0;c<e;c++){let l=r+c*u;i[c]=Math.pow(n,l)}let s=S.fromData(i,[e],o);return new z(s)}function Du(r,t,e=50,n=j){if(e<0)throw new Error("num must be non-negative");if(r===0||t===0)throw new Error("Geometric sequence cannot include zero");if(e===0)return G([],n);if(e===1)return G([r],n);let o=Math.sign(r),a=Math.sign(t);if(o!==a)throw new Error("Geometric sequence cannot contain both positive and negative values");let i=T(n);if(!i)throw new Error(`Cannot create geomspace array with dtype ${n}`);let u=new i(e),s=Math.log(Math.abs(r)),l=(Math.log(Math.abs(t))-s)/(e-1);if(w(n))for(let f=0;f<e;f++){let y=o*Math.exp(s+f*l);u[f]=BigInt(Math.round(y))}else if(n==="bool")for(let f=0;f<e;f++){let y=o*Math.exp(s+f*l);u[f]=y!==0?1:0}else for(let f=0;f<e;f++){let y=o*Math.exp(s+f*l);u[f]=y}let m=S.fromData(u,[e],n);return new z(m)}function La(r,t,e=0,n=j){let o=t??r,a=or([r,o],n),i=a.data;if(w(n)){let u=i;for(let s=0;s<r;s++){let c=s+e;c>=0&&c<o&&(u[s*o+c]=BigInt(1))}}else{let u=i;for(let s=0;s<r;s++){let c=s+e;c>=0&&c<o&&(u[s*o+c]=1)}}return a}function Ga(r,t=j){return or(r,t)}function Wa(r,t,e){let n=e;n||(typeof t=="bigint"?n="int64":typeof t=="boolean"?n="bool":Number.isInteger(t)?n="int32":n=j);let o=T(n);if(!o)throw new Error(`Cannot create full array with dtype ${n}`);let a=r.reduce((s,c)=>s*c,1),i=new o(a);if(w(n)){let s=typeof t=="bigint"?t:BigInt(Math.round(Number(t)));i.fill(s)}else n==="bool"?i.fill(t?1:0):i.fill(Number(t));let u=S.fromData(i,r,n);return new z(u)}function xu(r,t=j){return La(r,r,0,t)}function rt(r,t){return r instanceof z?!t||r.dtype===t?r:r.astype(t):G(r,t)}function wu(r){return r.copy()}function Iu(r,t){return or(Array.from(r.shape),t??r.dtype)}function zu(r,t){return Pa(Array.from(r.shape),t??r.dtype)}function _u(r,t){return Ga(Array.from(r.shape),t??r.dtype)}function Bu(r,t,e){return Wa(Array.from(r.shape),t,e??r.dtype)}function vu(r,t){return rt(r,t)}function Eu(r,t){let e=rt(r,t);return e.flags.C_CONTIGUOUS?e:e.copy()}function Mu(r,t){return rt(r,t).copy()}function Za(r,t=0){if(r.ndim===1){let e=r.size,n=e+Math.abs(t),o=or([n,n],r.dtype);for(let a=0;a<e;a++){let i=t>=0?a:a-t,u=t>=0?a+t:a;o.set([i,u],r.get([a]))}return o}else if(r.ndim===2){let[e,n]=r.shape,o,a,i;if(t>=0?(o=0,a=t,i=Math.min(e,n-t)):(o=-t,a=0,i=Math.min(e+t,n)),i<=0)return or([0],r.dtype);let u=T(r.dtype),s=new u(i);for(let l=0;l<i;l++){let m=r.get([o+l,a+l]);w(r.dtype)?s[l]=typeof m=="bigint"?m:BigInt(m):s[l]=m}let c=S.fromData(s,[i],r.dtype);return new z(c)}else throw new Error("Input must be 1-D or 2-D")}function Ou(r,t=0){let e=r.flatten();return Za(e,t)}function Tu(r,t,e=j){let n=t.reduce((c,l)=>c*l,1),o=T(e);if(!o)throw new Error(`Cannot create array with dtype ${e}`);let a=new o(n),i=t.length,u=new Array(i).fill(0);for(let c=0;c<n;c++){let l=r(...u);w(e)?a[c]=typeof l=="bigint"?l:BigInt(Number(l)):e==="bool"?a[c]=l?1:0:a[c]=Number(l);for(let m=i-1;m>=0&&(u[m]++,!(u[m]<t[m]));m--)u[m]=0}let s=S.fromData(a,t,e);return new z(s)}function Uu(...r){let t=[],e="xy";for(let u of r)u instanceof z?t.push(u):typeof u=="object"&&"indexing"in u&&(e=u.indexing||"xy");if(t.length===0)return[];if(t.length===1)return[t[0].copy()];let n=t.map(u=>u.size);e==="xy"&&t.length>=2&&(t=[t[1],t[0],...t.slice(2)],[n[0],n[1]]=[n[1],n[0]]);let o=n,a=o.length,i=[];for(let u=0;u<t.length;u++){let s=t[u],c=s.size,l=new Array(a).fill(1);l[u]=c;let m=s.reshape(...l),f=Jr(m.storage,o),y=z._fromStorage(f.copy());i.push(y)}return e==="xy"&&i.length>=2&&([i[0],i[1]]=[i[1],i[0]]),i}function $u(r,t,e=0,n=j){let o=t??r,a=or([r,o],n);for(let i=0;i<r;i++)for(let u=0;u<=i+e&&u<o;u++)u>=0&&a.set([i,u],1);return a}function ku(r,t=0){if(r.ndim<2)throw new Error("Input must have at least 2 dimensions");let e=r.copy(),n=e.shape,o=n[n.length-2],a=n[n.length-1],i=n.slice(0,-2).reduce((u,s)=>u*s,1);for(let u=0;u<i;u++)for(let s=0;s<o;s++)for(let c=0;c<a;c++)if(c>s+t){let l=[],m=u;for(let f=n.length-3;f>=0;f--)l.unshift(m%n[f]),m=Math.floor(m/n[f]);l.push(s,c),e.set(l,0)}return e}function Cu(r,t=0){if(r.ndim<2)throw new Error("Input must have at least 2 dimensions");let e=r.copy(),n=e.shape,o=n[n.length-2],a=n[n.length-1],i=n.slice(0,-2).reduce((u,s)=>u*s,1);for(let u=0;u<i;u++)for(let s=0;s<o;s++)for(let c=0;c<a;c++)if(c<s+t){let l=[],m=u;for(let f=n.length-3;f>=0;f--)l.unshift(m%n[f]),m=Math.floor(m/n[f]);l.push(s,c),e.set(l,0)}return e}function Fu(r,t,e=!1){if(r.ndim!==1)throw new Error("Input must be 1-D");let n=r.size,o=t??n;if(o<0)throw new Error("N must be non-negative");let a=or([n,o],r.dtype);for(let i=0;i<n;i++){let u=r.get([i]);for(let s=0;s<o;s++){let c=e?s:o-1-s;a.set([i,s],Math.pow(u,c))}}return a}function Vu(r,t=j,e=-1,n=0){let o,a=n;r instanceof ArrayBuffer?o=r:(o=r.buffer,a+=r.byteOffset);let i=Ru(t),u=o.byteLength-a,s=Math.floor(u/i),c=e<0?s:Math.min(e,s);if(c<=0)return G([],t);let l=T(t);if(!l)throw new Error(`Unsupported dtype: ${t}`);let m=new l(o,a,c),f=S.fromData(m,[c],t);return new z(f)}function qu(r,t=j,e=-1){let n=[],o=0;for(let a of r){if(e>=0&&o>=e)break;n.push(a),o++}return G(n,t)}function ju(r,t=j,e=-1){let n=[],o=0;for(let a of r){if(e>=0&&o>=e)break;n.push(a),o++}return G(n,t)}function Pu(r,t=j,e=-1,n=""){let o;n===""?o=r.trim().split(/\s+/):o=r.split(n);let a=[],i=0;for(let u of o){if(e>=0&&i>=e)break;let s=u.trim();s!==""&&(w(t)?a.push(BigInt(s)):a.push(parseFloat(s)),i++)}return G(a,t)}function Ru(r){switch(r){case"int8":case"uint8":case"bool":return 1;case"int16":case"uint16":return 2;case"int32":case"uint32":case"float32":return 4;case"int64":case"uint64":case"float64":return 8;default:return 8}}function Lu(r){return r.sqrt()}function Ha(r,t){return r.power(t)}function Gu(r){return r.exp()}function Wu(r){return r.exp2()}function Zu(r){return r.expm1()}function Hu(r){return r.log()}function Yu(r){return r.log2()}function Ju(r){return r.log10()}function Xu(r){return r.log1p()}function Qu(r,t){return r.logaddexp(t)}function Ku(r,t){return r.logaddexp2(t)}function Ya(r){return r.absolute()}function rc(r){return r.negative()}function tc(r){return r.sign()}function ec(r,t){return r.mod(t)}function Ja(r,t){return r.divide(t)}function nc(r,t){return r.floor_divide(t)}function oc(r){return r.positive()}function ac(r){return r.reciprocal()}function sc(r,t){return r.dot(t)}function ic(r){return r.trace()}function uc(r,t=0,e=0,n=1){let o=En(r.storage,t,e,n);return z._fromStorage(o)}function cc(r,t){let e=On(r.storage,t.storage);return z._fromStorage(e)}function lc(r,t){return r.transpose(t)}function fc(r,t){return r.inner(t)}function mc(r,t){return r.outer(t)}function yc(r,t,e=2){return r.tensordot(t,e)}function pc(r){return r.sin()}function dc(r){return r.cos()}function gc(r){return r.tan()}function Xa(r){return r.arcsin()}function Qa(r){return r.arccos()}function Ka(r){return r.arctan()}function rs(r,t){return r.arctan2(t)}function bc(r,t){return r.hypot(t)}function Ac(r){return r.degrees()}function hc(r){return r.radians()}function Sc(r){return r.radians()}function Nc(r){return r.degrees()}function Dc(r){return r.sinh()}function xc(r){return r.cosh()}function wc(r){return r.tanh()}function ts(r){return r.arcsinh()}function es(r){return r.arccosh()}function ns(r){return r.arctanh()}function Ic(r,t,e){return r.swapaxes(t,e)}function zc(r,t,e){return r.moveaxis(t,e)}function gr(r,t=0){if(r.length===0)throw new Error("need at least one array to concatenate");let e=r.map(o=>o.storage),n=ur(e,t);return z._fromStorage(n)}function _c(r,t=0){if(r.length===0)throw new Error("need at least one array to stack");let e=r.map(o=>o.storage),n=on(e,t);return z._fromStorage(n)}function os(r){if(r.length===0)throw new Error("need at least one array to stack");let t=r.map(n=>n.storage),e=an(t);return z._fromStorage(e)}function Bc(r){if(r.length===0)throw new Error("need at least one array to stack");let t=r.map(n=>n.storage),e=_t(t);return z._fromStorage(e)}function vc(r){if(r.length===0)throw new Error("need at least one array to stack");let t=r.map(n=>n.storage),e=sn(t);return z._fromStorage(e)}function Ec(r,t,e=0){return un(r.storage,t,e).map(o=>z._fromStorage(o,r.base??r))}function Mc(r,t,e=0){return xr(r.storage,t,e).map(o=>z._fromStorage(o,r.base??r))}function Oc(r,t){return ln(r.storage,t).map(n=>z._fromStorage(n,r.base??r))}function Tc(r,t){return fn(r.storage,t).map(n=>z._fromStorage(n,r.base??r))}function Uc(r,t){let e=mn(r.storage,t);return z._fromStorage(e)}function $c(r,t,e){return r.repeat(t,e)}function kc(r){return r.ravel()}function Cc(r,t){return r.reshape(...t)}function Fc(r,t){return r.squeeze(t)}function Vc(r,t){return r.expand_dims(t)}function ne(r,t){let e=pn(r.storage,t);return z._fromStorage(e)}function qc(r){if(r.ndim<2)throw new Error("Input must be at least 2-D");return ne(r,1)}function jc(r){if(r.ndim<2)throw new Error("Input must be at least 2-D");return ne(r,0)}function Pc(r,t=1,e=[0,1]){let n=dn(r.storage,t,e);return z._fromStorage(n)}function Rc(r,t,e){let n=gn(r.storage,t,e);return z._fromStorage(n)}function Lc(r,t,e=0){let n=bn(r.storage,t,e);return z._fromStorage(n,r.base??r)}function Gc(...r){let t=r.map(o=>o.storage),n=Nn(t).map((o,a)=>o===t[a]?r[a]:z._fromStorage(o));return n.length===1?n[0]:n}function Wc(...r){let t=r.map(o=>o.storage),n=Dn(t).map((o,a)=>o===t[a]?r[a]:z._fromStorage(o));return n.length===1?n[0]:n}function Zc(...r){let t=r.map(o=>o.storage),n=xn(t).map((o,a)=>o===t[a]?r[a]:z._fromStorage(o));return n.length===1?n[0]:n}function Hc(r,t){return An(r.storage,t).map(n=>z._fromStorage(n,r.base??r))}function Yc(r){if(r.length===0)throw new Error("need at least one array to stack");let t=r.map(n=>n.storage),e=hn(t);return z._fromStorage(e)}function Jc(r){return os(r)}function Xc(r,t){let e=Sn(r.storage,t);return z._fromStorage(e)}function Qc(r,t,e){let n=t instanceof z?t:G(t,r.dtype);if(e===void 0){let o=r.flatten(),a=n.flatten();return gr([o,a])}return gr([r,n],e)}function Kc(r,t,e){let n=r.dtype;if(e===void 0){let y=r.flatten(),d=(Array.isArray(t)?t:[t]).map(N=>N<0?y.size+N:N),g=[];for(let N=0;N<y.size;N++)d.includes(N)||g.push(N);let h=T(n),A=new h(g.length);for(let N=0;N<g.length;N++){let D=y.get([g[N]]);w(n)?A[N]=typeof D=="bigint"?D:BigInt(D):A[N]=D}let b=S.fromData(A,[g.length],n);return new z(b)}let o=r.shape,a=o.length,i=e<0?a+e:e;if(i<0||i>=a)throw new Error(`axis ${e} is out of bounds for array of dimension ${a}`);let u=o[i],s=Array.isArray(t)?t:[t],c=new Set(s.map(y=>y<0?u+y:y)),l=[],m=0;for(let y=0;y<=u;y++)(c.has(y)||y===u)&&(y>m&&l.push([m,y]),m=y+1);if(l.length===0){let y=[...o];return y[i]=0,or(y,n)}let f=[];for(let[y,p]of l){let d=o.map(()=>":");d[i]=`${y}:${p}`,f.push(r.slice(...d))}return gr(f,i)}function rl(r,t,e,n){let o=e instanceof z?e:G(e,r.dtype);if(n===void 0){let m=r.flatten(),f=o.flatten(),y=t<0?m.size+t:t;if(y<0||y>m.size)throw new Error(`index ${t} is out of bounds for array of size ${m.size}`);let p=y>0?m.slice(`0:${y}`):null,d=y<m.size?m.slice(`${y}:`):null,g=[];return p&&g.push(p),g.push(f),d&&g.push(d),gr(g)}let a=r.shape,i=a.length,u=n<0?i+n:n;if(u<0||u>=i)throw new Error(`axis ${n} is out of bounds for array of dimension ${i}`);let s=a[u],c=t<0?s+t:t;if(c<0||c>s)throw new Error(`index ${t} is out of bounds for axis ${n} with size ${s}`);let l=[];if(c>0){let m=a.map(()=>":");m[u]=`0:${c}`,l.push(r.slice(...m))}if(l.push(o),c<s){let m=a.map(()=>":");m[u]=`${c}:`,l.push(r.slice(...m))}return gr(l,u)}function tl(r,t,e="constant",n=0){let o=r.shape,a=o.length,i=r.dtype,u;if(typeof t=="number"?u=o.map(()=>[t,t]):Array.isArray(t)&&typeof t[0]=="number"?u=o.map(()=>t):u=t,u.length!==a)throw new Error(`pad_width must have ${a} elements`);let s=o.map((d,g)=>d+u[g][0]+u[g][1]),c=s.reduce((d,g)=>d*g,1),l=T(i),m=new l(c),f=w(i);e==="constant"&&(f?m.fill(BigInt(n)):m.fill(n));let y=new Array(a).fill(0);for(let d=0;d<c;d++){let g=!0,h=[];for(let b=0;b<a;b++){let[N]=u[b],D=y[b]-N;if(D<0||D>=o[b]){g=!1;break}h.push(D)}let A;if(g)A=r.get(h);else if(e==="constant"){for(let b=a-1;b>=0&&(y[b]++,!(y[b]<s[b]));b--)y[b]=0;continue}else{let b=[];for(let N=0;N<a;N++){let[D]=u[N],x=y[N]-D,I=o[N];x<0?e==="edge"?x=0:e==="reflect"?(x=-x,x>=I&&(x=I-1)):e==="symmetric"?(x=-x-1,x>=I&&(x=I-1),x<0&&(x=0)):e==="wrap"&&(x=(x%I+I)%I):x>=I&&(e==="edge"?x=I-1:e==="reflect"?(x=2*I-x-2,x<0&&(x=0)):e==="symmetric"?(x=2*I-x-1,x<0&&(x=0)):e==="wrap"&&(x=x%I)),b.push(Math.max(0,Math.min(I-1,x)))}A=r.get(b)}f?m[d]=typeof A=="bigint"?A:BigInt(Number(A)):m[d]=Number(A);for(let b=a-1;b>=0&&(y[b]++,!(y[b]<s[b]));b--)y[b]=0}let p=S.fromData(m,s,i);return new z(p)}function el(r,t){let e=Jr(r.storage,t);return z._fromStorage(e,r.base??r)}function nl(...r){let t=r.map(n=>n.storage);return So(t).map((n,o)=>z._fromStorage(n,r[o].base??r[o]))}function ol(...r){return ut(...r)}function al(r,t,e){return r.take(t,e)}function sl(r,t,e){r.put(t,e)}function il(r,t,e){if(e!==void 0)throw new Error("copyto with where parameter is not yet implemented");let n=r.storage,o=r.shape,a=r.size,i=r.dtype;if(typeof t=="number"||typeof t=="bigint"){r.fill(t);return}let u=t.storage,s=t.shape,c=tr([s,o]);if(!c)throw new Error(`could not broadcast input array from shape (${s.join(",")}) into shape (${o.join(",")})`);if(c.length!==o.length||!c.every((m,f)=>m===o[f]))throw new Error(`could not broadcast input array from shape (${s.join(",")}) into shape (${o.join(",")})`);let l=Jr(u,o);if(w(i))for(let m=0;m<a;m++){let f=l.iget(m),y=typeof f=="bigint"?f:BigInt(Math.round(Number(f)));n.iset(m,y)}else if(i==="bool")for(let m=0;m<a;m++){let f=l.iget(m);n.iset(m,f?1:0)}else for(let m=0;m<a;m++){let f=l.iget(m);n.iset(m,Number(f))}}function ul(r,t){let e=t.map(o=>o.storage),n=xo(r.storage,e);return z._fromStorage(n)}function cl(r,t,e=!1){return wo(r.storage,t.storage,e)}function ll(r,t){return rn(r.storage,t.storage)}function as(r,t){return z._fromStorage(At(r.storage,t))}function ss(r,t){return z._fromStorage(ht(r.storage,t))}function is(r,t,e=!1){return r.max(t,e)}function us(r,t,e=!1){return r.min(t,e)}function fl(r,t,e=!1){let n=St(r.storage,t,e);return typeof n=="number"?n:z._fromStorage(n)}function ml(r,t,e=!1){let n=Nt(r.storage,t,e);return typeof n=="number"?n:z._fromStorage(n)}function yl(r,t,e,n=!1){let o=Dt(r.storage,t,e,n);return typeof o=="number"?o:z._fromStorage(o)}function pl(r,t,e,n=!1){let o=mr(r.storage,t,e,n);return typeof o=="number"?o:z._fromStorage(o)}function dl(r,t,e,n=!1){let o=e?e.storage:void 0,a=Vr(r.storage,t,o,n);return typeof a=="number"?a:z._fromStorage(a)}function gl(r,t,e=!1){let n=qr(r.storage,t,e);return typeof n=="number"?n:z._fromStorage(n)}function bl(r,t,e=!1){let n=jr(r.storage,t,e);return typeof n=="number"?n:z._fromStorage(n)}function Al(r,t,e=!1){let n=Pr(r.storage,t,e);return typeof n=="number"?n:z._fromStorage(n)}function hl(r,t,e=0,n=!1){let o=Sr(r.storage,t,e,n);return typeof o=="number"?o:z._fromStorage(o)}function Sl(r,t,e=0,n=!1){let o=xt(r.storage,t,e,n);return typeof o=="number"?o:z._fromStorage(o)}function Nl(r,t,e=!1){let n=Rr(r.storage,t,e);return typeof n=="number"?n:z._fromStorage(n)}function Dl(r,t,e=!1){let n=Lr(r.storage,t,e);return typeof n=="number"?n:z._fromStorage(n)}function xl(r,t){let e=Gr(r.storage,t);return typeof e=="number"?e:z._fromStorage(e)}function wl(r,t){let e=Wr(r.storage,t);return typeof e=="number"?e:z._fromStorage(e)}function Il(r,t){return z._fromStorage(wt(r.storage,t))}function zl(r,t){return z._fromStorage(It(r.storage,t))}function _l(r,t,e=!1){let n=Zr(r.storage,t,e);return typeof n=="number"?n:z._fromStorage(n)}function Bl(r){return r.cbrt()}function vl(r){return r.fabs()}function El(r,t){return r.divmod(t)}function Ml(r){return r.square()}function Ol(r,t){return r.remainder(t)}function Tl(r,t){return r.heaviside(t)}function Ul(r,t){let e=typeof t=="number"?t:t.storage;return z._fromStorage(qe(r.storage,e))}function $l(r,t){let e=typeof t=="number"?t:t.storage;return z._fromStorage(je(r.storage,e))}function kl(r){let[t,e]=Pe(r.storage);return[z._fromStorage(t),z._fromStorage(e)]}function Cl(r,t){let e=typeof t=="number"?t:t.storage;return z._fromStorage(Re(r.storage,e))}function Fl(r,t){let e=typeof t=="number"?t:t.storage;return z._fromStorage(Le(r.storage,e))}function Vl(r,t){let e=typeof t=="number"?t:t.storage;return z._fromStorage(Ge(r.storage,e))}function ql(r){let[t,e]=We(r.storage);return[z._fromStorage(t),z._fromStorage(e)]}function jl(r,t){return r.bitwise_and(t)}function Pl(r,t){return r.bitwise_or(t)}function Rl(r,t){return r.bitwise_xor(t)}function Ll(r){return r.bitwise_not()}function Gl(r){return r.invert()}function Wl(r,t){return r.left_shift(t)}function Zl(r,t){return r.right_shift(t)}function Hl(r,t=-1,e="big"){let n=Ho(r.storage,t,e);return z._fromStorage(n)}function Yl(r,t=-1,e=-1,n="big"){let o=Yo(r.storage,t,e,n);return z._fromStorage(o)}function Jl(r,t){return r.logical_and(t)}function Xl(r,t){return r.logical_or(t)}function Ql(r){return r.logical_not()}function Kl(r,t){return r.logical_xor(t)}function rf(r){return r.isfinite()}function tf(r){return r.isinf()}function ef(r){return r.isnan()}function nf(r){return r.isnat()}function of(r,t){return r.copysign(t)}function af(r){return r.signbit()}function sf(r,t){return r.nextafter(t)}function uf(r){return r.spacing()}function cf(r){return z._fromStorage(ca(r.storage))}function lf(r){return la(r.storage)}function ff(r){return z._fromStorage(fa(r.storage))}function mf(r){return ma(r.storage)}function yf(r){return z._fromStorage(ya(r.storage))}function pf(r){return z._fromStorage(pa(r.storage))}function df(r){return da(r.storage)}function gf(r,t=100){return z._fromStorage(ga(r.storage,t))}function bf(r){return ba(r)}function Af(r){return Aa(r)}function hf(r,t){return ha(r,t)}function Sf(r,t){return Sa(r,t)}function Nf(r,...t){let e=t.map(o=>o.storage),n=Mn(r,...e);return typeof n=="number"||typeof n=="bigint"?n:z._fromStorage(n)}var Df={cross:(r,t,e=-1,n=-1,o=-1,a)=>{let i=Tn(r.storage,t.storage,e,n,o,a);return typeof i=="number"?i:z._fromStorage(i)},norm:(r,t=null,e=null,n=!1)=>{let o=Un(r.storage,t,e,n);return typeof o=="number"?o:z._fromStorage(o)},vector_norm:(r,t=2,e,n=!1)=>{let o=pr(r.storage,t,e,n);return typeof o=="number"?o:z._fromStorage(o)},matrix_norm:(r,t="fro",e=!1)=>{let n=cr(r.storage,t,e);return typeof n=="number"?n:z._fromStorage(n)},qr:(r,t="reduced")=>{let e=Mt(r.storage,t);return e instanceof S?z._fromStorage(e):"q"in e&&"r"in e?{q:z._fromStorage(e.q),r:z._fromStorage(e.r)}:{h:z._fromStorage(e.h),tau:z._fromStorage(e.tau)}},cholesky:(r,t=!1)=>z._fromStorage($n(r.storage,t)),svd:(r,t=!0,e=!0)=>{let n=kn(r.storage,t,e);return"u"in n?{u:z._fromStorage(n.u),s:z._fromStorage(n.s),vt:z._fromStorage(n.vt)}:z._fromStorage(n)},det:r=>Cn(r.storage),inv:r=>z._fromStorage(Yr(r.storage)),solve:(r,t)=>z._fromStorage(Fn(r.storage,t.storage)),lstsq:(r,t,e=null)=>{let n=Vn(r.storage,t.storage,e);return{x:z._fromStorage(n.x),residuals:z._fromStorage(n.residuals),rank:n.rank,s:z._fromStorage(n.s)}},cond:(r,t=2)=>qn(r.storage,t),matrix_rank:(r,t)=>jn(r.storage,t),matrix_power:(r,t)=>z._fromStorage(Pn(r.storage,t)),pinv:(r,t=1e-15)=>z._fromStorage(Rn(r.storage,t)),eig:r=>{let t=Ut(r.storage);return{w:z._fromStorage(t.w),v:z._fromStorage(t.v)}},eigh:(r,t="L")=>{let e=$t(r.storage,t);return{w:z._fromStorage(e.w),v:z._fromStorage(e.v)}},eigvals:r=>z._fromStorage(Ln(r.storage)),eigvalsh:(r,t="L")=>z._fromStorage(Gn(r.storage,t))};function xf(r,t,e){return z._fromStorage(Io(r.storage,t.storage,e))}function wf(r,t,e,n){zo(r.storage,t.storage,e.storage,n)}function If(r,t,e){let n=e instanceof z?e.storage:e;_o(r.storage,t.storage,n)}function zf(r,t,e){return z._fromStorage(Bo(r.storage,t.storage,e))}function _f(r,t,e=0){let n=r.map(a=>a.storage),o=t.map(a=>a.storage);return z._fromStorage(vo(n,o,e))}function Bf(r,t,e){Eo(r.storage,t.storage,e.storage)}function vf(r,t,e=!1){let n=typeof t=="number"?t:t.storage;Vo(r.storage,n,e)}function Ef(r,t=2){return kt(r,t).map(n=>z._fromStorage(n))}function Mf(r){return Mo(r.storage).map(e=>z._fromStorage(e))}function Of(r,t=0,e){return Ct(r,t,e).map(o=>z._fromStorage(o))}function Tf(r,t=0){return Oo(r.storage,t).map(n=>z._fromStorage(n))}function Uf(r,t=0,e){return Ft(r,t,e).map(o=>z._fromStorage(o))}function $f(r,t=0){return To(r.storage,t).map(n=>z._fromStorage(n))}function kf(r,t,e=0){return Uo(r,(a,i)=>t(a,i).storage,e).map(a=>z._fromStorage(a))}function Cf(r,t="int32"){return z._fromStorage($o(r,t))}function Ff(...r){return ko(...r.map(e=>e.storage)).map(e=>z._fromStorage(e))}function Vf(r,t,e="raise"){let n=r.map(o=>o.storage);return z._fromStorage(Co(n,t,e))}function qf(r,t,e="C"){let n=r instanceof z?r.storage:r;return Fo(n,t,e).map(a=>z._fromStorage(a))}function jf(r,t=-1){return z._fromStorage(qt(r.storage,t))}function Pf(r,t=-1){return z._fromStorage(jt(r.storage,t))}function Rf(r){let t=r.map(e=>e.storage);return z._fromStorage(Na(t))}function Lf(r,t,e=-1){return z._fromStorage(Pt(r.storage,t,e))}function Gf(r,t,e=-1){return z._fromStorage(Rt(r.storage,t,e))}function Wf(r){return z._fromStorage(Da(r.storage))}function Zf(r){return Kr(r.storage).map(e=>z._fromStorage(e))}function Hf(r){return z._fromStorage(Lt(r.storage))}function Yf(r){return z._fromStorage(xa(r.storage))}function Jf(r,t,e){let n=wa(r.storage,t?.storage,e?.storage);return Array.isArray(n)?n.map(o=>z._fromStorage(o)):z._fromStorage(n)}function Xf(r,t,e="left"){return z._fromStorage(Gt(r.storage,t.storage,e))}function Qf(r,t){return z._fromStorage(Ia(r.storage,t.storage))}function Kf(r,t){let e=Wt(r.storage,t);return typeof e=="number"?e:z._fromStorage(e)}function oe(r,t=0){return z._fromStorage(Zt(r.storage,t))}function rm(r){return z._fromStorage(Ht(r.storage))}function tm(r){return z._fromStorage(Yt(r.storage))}function em(r){return z._fromStorage(Jt(r.storage))}function nm(r){return z._fromStorage(Xt(r.storage))}function om(r){return z._fromStorage(Qt(r.storage))}function am(r,t=!1,e=!1,n=!1){let o=nr(r.storage,t,e,n);if(o instanceof S)return z._fromStorage(o);let a={values:z._fromStorage(o.values)};return o.indices&&(a.indices=z._fromStorage(o.indices)),o.inverse&&(a.inverse=z._fromStorage(o.inverse)),o.counts&&(a.counts=z._fromStorage(o.counts)),a}function sm(r,t){return z._fromStorage(_a(r.storage,t.storage))}function im(r,t){return z._fromStorage(Ba(r.storage,t.storage))}function um(r,t){return z._fromStorage(Kt(r.storage,t.storage))}function cm(r,t){return z._fromStorage(va(r.storage,t.storage))}function lm(r,t){return z._fromStorage(Ea(r.storage,t.storage))}function fm(r,t){return z._fromStorage(Ma(r.storage,t.storage))}function mm(r,t=1,e=-1){return z._fromStorage(re(r.storage,t,e))}function ym(r,t=null,e=null){return z._fromStorage(Oa(r.storage,t,e))}function pm(r,t=1,e=null){let n=Ta(r.storage,t,e);return Array.isArray(n)?n.map(o=>z._fromStorage(o)):z._fromStorage(n)}function dm(r,t,e=-1,n=-1,o=-1){return z._fromStorage(Ua(r.storage,t.storage,e,n,o))}function gm(r,t,e=0){return z._fromStorage($a(r.storage,t?.storage,e))}function bm(r,t,e=!1){return z._fromStorage(ka(r.storage,t.storage,e))}function Am(r,t=10,e,n=!1,o){let a=Ca(r.storage,typeof t=="number"?t:t.storage,e,n,o?.storage);return[z._fromStorage(a.hist),z._fromStorage(a.bin_edges)]}function hm(r,t,e=10,n,o=!1,a){let i;typeof e=="number"?i=e:Array.isArray(e)&&e.length===2?typeof e[0]=="number"?i=e:i=[e[0].storage,e[1].storage]:i=10;let u=Fa(r.storage,t.storage,i,n,o,a?.storage);return[z._fromStorage(u.hist),z._fromStorage(u.x_edges),z._fromStorage(u.y_edges)]}function Sm(r,t=10,e,n=!1,o){let a=Va(r.storage,t,e,n,o?.storage);return[z._fromStorage(a.hist),a.edges.map(i=>z._fromStorage(i))]}function Nm(r,t,e="full"){return z._fromStorage(te(r.storage,t.storage,e))}function Dm(r,t,e="full"){return z._fromStorage(qa(r.storage,t.storage,e))}function xm(r,t,e=!0,n=!1,o){return z._fromStorage(ee(r.storage,t?.storage,e,n,o))}function wm(r,t,e=!0){return z._fromStorage(ja(r.storage,t?.storage,e))}var Br=new Uint8Array([147,78,85,77,80,89]),ae=["float64","float32","int64","int32","int16","int8","uint64","uint32","uint16","uint8","bool"];function se(){let r=new ArrayBuffer(2);return new DataView(r).setInt16(0,256,!0),new Int16Array(r)[0]===256}var Im={f8:"float64",f4:"float32",i8:"int64",i4:"int32",i2:"int16",i1:"int8",u8:"uint64",u4:"uint32",u2:"uint16",u1:"uint8",b1:"bool"},tt={float64:"<f8",float32:"<f4",int64:"<i8",int32:"<i4",int16:"<i2",int8:"|i1",uint64:"<u8",uint32:"<u4",uint16:"<u2",uint8:"|u1",bool:"|b1"},cs={c:"complex numbers",S:"byte strings",U:"Unicode strings",O:"Python objects",V:"structured arrays (void)",M:"datetime64",m:"timedelta64"};function ls(r){if(r.startsWith("[")||r.startsWith("("))throw new ar(`Structured/compound dtypes are not supported: ${r}`);let t="",e=r;(r[0]==="<"||r[0]===">"||r[0]==="="||r[0]==="|")&&(t=r[0],e=r.slice(1));let n=e[0];if(n&&n in cs)throw new ar(`Unsupported dtype: ${cs[n]} (${r}). Use the 'force' parameter to skip arrays with unsupported dtypes.`);let o=Im[e];if(!o)throw new ar(`Unknown or unsupported dtype descriptor: ${r}. Supported types: ${ae.join(", ")}. Use the 'force' parameter to skip arrays with unsupported dtypes.`);let a=se(),i=t==="<"||t==="|"||t==="="&&a,u=t===">"||t==="="&&!a,s=parseInt(e.slice(1),10),c=s>1&&(u&&a||i&&!a);return{dtype:o,needsByteSwap:c,itemsize:s}}var ar=class extends Error{constructor(t){super(t),this.name="UnsupportedDTypeError"}},H=class extends Error{constructor(t){super(t),this.name="InvalidNpyError"}};function et(r){let t=r instanceof ArrayBuffer?new Uint8Array(r):r,e=ie(t);return ue(t,e)}function ie(r){if(r.length<10)throw new H("File too small to be a valid NPY file");for(let c=0;c<Br.length;c++)if(r[c]!==Br[c])throw new H("Invalid NPY magic number");let t=r[6],e=r[7];if(t!==1&&t!==2&&t!==3)throw new H(`Unsupported NPY version: ${t}.${e}`);let n,o;t===1?(n=r[8]|r[9]<<8,o=10):(n=r[8]|r[9]<<8|r[10]<<16|r[11]<<24,o=12);let a=o+n;if(r.length<a)throw new H("File truncated: header extends beyond file");let i=r.slice(o,a),u=new TextDecoder("utf-8").decode(i).trim(),s=zm(u);return{version:{major:t,minor:e},header:s,dataOffset:a}}function ue(r,t){let{header:e,dataOffset:n}=t,{dtype:o,needsByteSwap:a,itemsize:i}=ls(e.descr),u=e.shape.reduce((d,g)=>d*g,1),s=u*i,c=r.length-n;if(c<s)throw new H(`File truncated: expected ${s} bytes of data, got ${c}`);let l=new ArrayBuffer(s);new Uint8Array(l).set(r.subarray(n,n+s));let f=_m(l,o,u,a,i),y=e.shape,p;if(e.fortran_order&&y.length>1){let d=[...y].reverse(),g=S.fromData(f,d,o);p=Bm(g,d),y=e.shape}else p=S.fromData(f,[...y],o);return new z(p)}function zm(r){let t=r.match(/'descr'\s*:\s*'([^']+)'/),e=r.match(/'fortran_order'\s*:\s*(True|False)/),n=r.match(/'shape'\s*:\s*\(([^)]*)\)/);if(!t||!e||!n)throw new H(`Failed to parse NPY header: ${r}`);let o=t[1],a=e[1]==="True",i=n[1].trim(),u;return i===""?u=[]:u=i.split(",").map(s=>s.trim()).filter(s=>s!=="").map(s=>{let c=parseInt(s,10);if(isNaN(c))throw new H(`Invalid shape value: ${s}`);return c}),{descr:o,fortran_order:a,shape:u}}function _m(r,t,e,n,o){let a=T(t);if(!a)throw new H(`Cannot create array for dtype: ${t}`);if(!n)return new a(r,0,e);let i=new Uint8Array(r),u=new Uint8Array(r.byteLength);for(let s=0;s<e;s++){let c=s*o;for(let l=0;l<o;l++)u[c+l]=i[c+o-1-l]}return new a(u.buffer,0,e)}function Bm(r,t){let e=t.length,n=r.size,o=r.dtype,a=T(o);if(!a)throw new H(`Cannot create array for dtype: ${o}`);let i=new a(n),u=[...t].reverse(),s=fs(t),c=fs(u),l=new Array(e).fill(0);for(let m=0;m<n;m++){let f=m;for(let p=0;p<e;p++){let d=s[p];l[p]=Math.floor(f/d),f=f%d}let y=0;for(let p=0;p<e;p++)y+=l[e-1-p]*c[p];w(o),i[y]=r.iget(m)}return S.fromData(i,u,o)}function fs(r){let t=new Array(r.length),e=1;for(let n=r.length-1;n>=0;n--)t[n]=e,e*=r[n];return t}function vr(r){let t=r.shape,e=r.dtype,n=tt[e],o=t.length===0?"()":t.length===1?`(${t[0]},)`:`(${t.join(", ")})`,a=`{'descr': '${n}', 'fortran_order': False, 'shape': ${o}, }`,i=12,s=(64-(i+a.length+1)%64)%64;a=a+" ".repeat(s)+`
|
|
2
|
+
`;let c=new TextEncoder().encode(a),l=c.length,m=r.size,f=Tr(e),y=m*f,p=i+l+y,d=new Uint8Array(p);d.set(Br,0),d[6]=3,d[7]=0,d[8]=l&255,d[9]=l>>8&255,d[10]=l>>16&255,d[11]=l>>24&255,d.set(c,i);let g=i+l;return vm(r,d.subarray(g),f),d}function vm(r,t,e){let n=r.dtype,o=r.size,a=se(),i=w(n),u=r._storage;if(u.isCContiguous&&u.offset===0&&a){let c=u.data,l=new Uint8Array(c.buffer,c.byteOffset,o*e);t.set(l)}else{let c=new DataView(t.buffer,t.byteOffset,t.byteLength);for(let l=0;l<o;l++){let m=u.iget(l),f=l*e;i?Em(c,f,m,n==="uint64"):Mm(c,f,m,n)}}}function Em(r,t,e,n){n?r.setBigUint64(t,e,!0):r.setBigInt64(t,e,!0)}function Mm(r,t,e,n){switch(n){case"float64":r.setFloat64(t,e,!0);break;case"float32":r.setFloat32(t,e,!0);break;case"int32":r.setInt32(t,e,!0);break;case"int16":r.setInt16(t,e,!0);break;case"int8":r.setInt8(t,e);break;case"uint32":r.setUint32(t,e,!0);break;case"uint16":r.setUint16(t,e,!0);break;case"uint8":case"bool":r.setUint8(t,e);break;default:throw new Error(`Unsupported dtype for serialization: ${n}`)}}var Om=(()=>{let r=new Uint32Array(256);for(let t=0;t<256;t++){let e=t;for(let n=0;n<8;n++)e=e&1?3988292384^e>>>1:e>>>1;r[t]=e}return r})();function ce(r){let t=4294967295;for(let e=0;e<r.length;e++)t=Om[(t^r[e])&255]^t>>>8;return(t^4294967295)>>>0}async function ms(r){let t=ps(r),e=new Map;for(let n of t){let o=await Tm(n);e.set(n.name,o)}return e}function ys(r){let t=ps(r),e=new Map;for(let n of t){if(n.compressionMethod!==0)throw new Error(`Cannot read compressed entry synchronously: ${n.name}. Use readZip() (async) for DEFLATE-compressed files.`);e.set(n.name,n.compressedData)}return e}function ps(r){let t=r instanceof ArrayBuffer?new Uint8Array(r):r,e=new DataView(t.buffer,t.byteOffset,t.byteLength),n=[],o=-1;for(let c=t.length-22;c>=0;c--)if(e.getUint32(c,!0)===101010256){o=c;break}if(o===-1)throw new Error("Invalid ZIP file: end of central directory not found");let a=e.getUint32(o+16,!0),i=e.getUint16(o+10,!0),u=[],s=a;for(let c=0;c<i&&e.getUint32(s,!0)===33639248;c++){let m=e.getUint16(s+10,!0),f=e.getUint32(s+16,!0),y=e.getUint32(s+20,!0),p=e.getUint32(s+24,!0),d=e.getUint16(s+28,!0),g=e.getUint16(s+30,!0),h=e.getUint16(s+32,!0),A=e.getUint32(s+42,!0),b=t.slice(s+46,s+46+d),N=new TextDecoder("utf-8").decode(b);u.push({name:N,compressionMethod:m,crc32:f,compressedSize:y,uncompressedSize:p,localHeaderOffset:A}),s=s+46+d+g+h}for(let c of u){let l=c.localHeaderOffset;if(e.getUint32(l,!0)!==67324752)throw new Error(`Invalid local file header at offset ${l}`);let f=e.getUint16(l+26,!0),y=e.getUint16(l+28,!0),p=l+30+f+y,d=t.slice(p,p+c.compressedSize);n.push({name:c.name,compressedData:d,compressionMethod:c.compressionMethod,crc32:c.crc32,compressedSize:c.compressedSize,uncompressedSize:c.uncompressedSize})}return n}async function Tm(r){if(r.compressionMethod===0)return r.compressedData;if(r.compressionMethod===8)return await Um(r.compressedData);throw new Error(`Unsupported compression method: ${r.compressionMethod}`)}async function Um(r){if(typeof DecompressionStream>"u")throw new Error("DecompressionStream is not available. This environment does not support the Compression Streams API. Please use a modern browser or Node.js 18+.");let t=new DecompressionStream("deflate-raw"),e=new Uint8Array(r.length);e.set(r);let n=t.writable.getWriter();n.write(e),n.close();let o=t.readable.getReader(),a=[];for(;;){let{done:c,value:l}=await o.read();if(c)break;a.push(l)}let i=a.reduce((c,l)=>c+l.length,0),u=new Uint8Array(i),s=0;for(let c of a)u.set(c,s),s+=c.length;return u}async function me(r,t={}){let e=t.force??!1,n=await ms(r);return ds(n,e)}function ye(r,t={}){let e=t.force??!1,n=ys(r);return ds(n,e)}function ds(r,t){let e=new Map,n=[],o=new Map;for(let[a,i]of r){if(!a.endsWith(".npy"))continue;let u=a.slice(0,-4);try{let s=et(i);e.set(u,s)}catch(s){if(s instanceof ar&&t)n.push(u),o.set(u,s.message);else throw s}}return{arrays:e,skipped:n,errors:o}}async function gs(r,t={}){let e=await me(r,t);return Object.fromEntries(e.arrays)}function bs(r,t={}){let e=ye(r,t);return Object.fromEntries(e.arrays)}async function As(r,t={}){let e=t.compress??!1,n=[];for(let[f,y]of r){let p=ce(y),d,g;e?(d=await km(y),d.length<y.length?g=8:(d=y,g=0)):(d=y,g=0),n.push({name:f,data:y,compressedData:d,crc:p,compressionMethod:g,offset:0})}let o=0;for(let f of n){let y=new TextEncoder().encode(f.name);o+=30+y.length+f.compressedData.length}let a=0;for(let f of n){let y=new TextEncoder().encode(f.name);a+=46+y.length}let u=o+a+22,s=new Uint8Array(u),c=new DataView(s.buffer),l=0;for(let f of n)f.offset=l,l=Ss(s,c,l,f);let m=l;for(let f of n)l=Ns(s,c,l,f);return Ds(c,l,n.length,a,m),s}function hs(r){let t=[];for(let[l,m]of r){let f=ce(m);t.push({name:l,data:m,compressedData:m,crc:f,compressionMethod:0,offset:0})}let e=0;for(let l of t){let m=new TextEncoder().encode(l.name);e+=30+m.length+l.compressedData.length}let n=0;for(let l of t){let m=new TextEncoder().encode(l.name);n+=46+m.length}let a=e+n+22,i=new Uint8Array(a),u=new DataView(i.buffer),s=0;for(let l of t)l.offset=s,s=Ss(i,u,s,l);let c=s;for(let l of t)s=Ns(i,u,s,l);return Ds(u,s,t.length,n,c),i}function Ss(r,t,e,n){let o=new TextEncoder().encode(n.name);return t.setUint32(e,67324752,!0),e+=4,t.setUint16(e,n.compressionMethod===8?20:10,!0),e+=2,t.setUint16(e,0,!0),e+=2,t.setUint16(e,n.compressionMethod,!0),e+=2,t.setUint16(e,0,!0),e+=2,t.setUint16(e,33,!0),e+=2,t.setUint32(e,n.crc,!0),e+=4,t.setUint32(e,n.compressedData.length,!0),e+=4,t.setUint32(e,n.data.length,!0),e+=4,t.setUint16(e,o.length,!0),e+=2,t.setUint16(e,0,!0),e+=2,r.set(o,e),e+=o.length,r.set(n.compressedData,e),e+=n.compressedData.length,e}function Ns(r,t,e,n){let o=new TextEncoder().encode(n.name);return t.setUint32(e,33639248,!0),e+=4,t.setUint16(e,20,!0),e+=2,t.setUint16(e,n.compressionMethod===8?20:10,!0),e+=2,t.setUint16(e,0,!0),e+=2,t.setUint16(e,n.compressionMethod,!0),e+=2,t.setUint16(e,0,!0),e+=2,t.setUint16(e,33,!0),e+=2,t.setUint32(e,n.crc,!0),e+=4,t.setUint32(e,n.compressedData.length,!0),e+=4,t.setUint32(e,n.data.length,!0),e+=4,t.setUint16(e,o.length,!0),e+=2,t.setUint16(e,0,!0),e+=2,t.setUint16(e,0,!0),e+=2,t.setUint16(e,0,!0),e+=2,t.setUint16(e,0,!0),e+=2,t.setUint32(e,0,!0),e+=4,t.setUint32(e,n.offset,!0),e+=4,r.set(o,e),e+=o.length,e}function Ds(r,t,e,n,o){r.setUint32(t,101010256,!0),t+=4,r.setUint16(t,0,!0),t+=2,r.setUint16(t,0,!0),t+=2,r.setUint16(t,e,!0),t+=2,r.setUint16(t,e,!0),t+=2,r.setUint32(t,n,!0),t+=4,r.setUint32(t,o,!0),t+=4,r.setUint16(t,0,!0)}async function km(r){if(typeof CompressionStream>"u")throw new Error("CompressionStream is not available. This environment does not support the Compression Streams API. Please use a modern browser or Node.js 18+.");let t=new CompressionStream("deflate-raw"),e=new Uint8Array(r.length);e.set(r);let n=t.writable.getWriter();n.write(e),n.close();let o=t.readable.getReader(),a=[];for(;;){let{done:c,value:l}=await o.read();if(c)break;a.push(l)}let i=a.reduce((c,l)=>c+l.length,0),u=new Uint8Array(i),s=0;for(let c of a)u.set(c,s),s+=c.length;return u}async function xs(r,t={}){let e=Is(r);return As(e,{compress:t.compress??!1})}function ws(r){let t=Is(r);return hs(t)}function Is(r){let t=new Map;if(Array.isArray(r)){for(let n=0;n<r.length;n++){let o=r[n],a=vr(o);t.set(`arr_${n}.npy`,a)}return t}let e=r instanceof Map?r.entries():Object.entries(r);for(let[n,o]of e){if(typeof n!="string"||n.length===0)throw new Error("Array names must be non-empty strings");let a=vr(o),i=n.endsWith(".npy")?n:`${n}.npy`;t.set(i,a)}return t}var K=624,nt=397,jm=2567483615,pe=2147483648,de=2147483647,rr={mt:new Uint32Array(K),mti:K+1};function Bs(r){let t=rr.mt;t[0]=r>>>0;for(let e=1;e<K;e++){let n=t[e-1]^t[e-1]>>>30;t[e]=Math.imul(1812433253,n)+e>>>0}rr.mti=K}function zs(){let r=rr.mt,t,e=[0,jm];if(rr.mti>=K){let n;for(rr.mti===K+1&&Bs(5489),n=0;n<K-nt;n++)t=r[n]&pe|r[n+1]&de,r[n]=r[n+nt]^t>>>1^e[t&1];for(;n<K-1;n++)t=r[n]&pe|r[n+1]&de,r[n]=r[n+(nt-K)]^t>>>1^e[t&1];t=r[K-1]&pe|r[0]&de,r[K-1]=r[nt-1]^t>>>1^e[t&1],rr.mti=0}return t=r[rr.mti++],t^=t>>>11,t^=t<<7&2636928640,t^=t<<15&4022730752,t^=t>>>18,t>>>0}function C(){let r=zs()>>>5,t=zs()>>>6;return(r*67108864+t)/9007199254740992}var Pm=2468251765,Rm=1492356589,Lm=1135663077,Gm=2337405405,Wm=3389127133,Zm=1232336661,Se=16,ot=4;function W(r){return r>>>0}function ge(r,t){return r=W(W(r)^t.val),t.val=W(Math.imul(t.val,Pm)),r=W(Math.imul(r,t.val)),r=W(r^r>>>Se),r}function Hm(r,t){let e=W(W(Math.imul(Wm,W(r)))-W(Math.imul(Zm,W(t))));return e=W(e^e>>>Se),e}function Ym(r){let t=[0,0,0,0],e=[r>>>0],n={val:Lm};for(let o=0;o<ot;o++)o<e.length?t[o]=ge(e[o],n):t[o]=ge(0,n);for(let o=0;o<ot;o++)for(let a=0;a<ot;a++)if(o!==a){let i=ge(t[o],n);t[a]=Hm(t[a],i)}return t}function Jm(r,t){let e=[],n=Gm;for(let o=0;o<t;o++){let a=r[o%ot],i=W(a^n);n=W(Math.imul(n,Rm)),i=W(Math.imul(i,n)),i=W(i^i>>>Se),e.push(i)}return e}var Xm=BigInt("4865540595714422341"),Qm=BigInt("2549297995355413924"),Km=Qm<<BigInt(64)|Xm,be=BigInt("0xffffffffffffffff"),Ae=(BigInt(1)<<BigInt(128))-BigInt(1);function ry(r){let t=r>>BigInt(64),e=r&be,n=(t^e)&be,o=Number(r>>BigInt(122));return(n>>BigInt(o)|n<<BigInt(64-o))&be}function he(r,t){return r*Km+t&Ae}function _s(r){let t=Ym(r),e=Jm(t,8),n=BigInt(e[0])|BigInt(e[1])<<BigInt(32),o=BigInt(e[2])|BigInt(e[3])<<BigInt(32),a=BigInt(e[4])|BigInt(e[5])<<BigInt(32),i=BigInt(e[6])|BigInt(e[7])<<BigInt(32),u=n<<BigInt(64)|o,s=(a<<BigInt(64)|i)<<BigInt(1);s=(s|BigInt(1))&Ae;let c=BigInt(0);return c=he(c,s),c=c+u&Ae,c=he(c,s),{state:c,inc:s}}function ty(r){return r.state=he(r.state,r.inc),ry(r.state)}function ey(r){let e=ty(r)>>BigInt(11);return Number(e)/9007199254740992}var Mr=class{constructor(t){if(t!==void 0)this._pcgState=_s(t);else{let e=Math.floor(Math.random()*4294967296);this._pcgState=_s(e)}}_randomFloat(){return ey(this._pcgState)}random(t){if(t===void 0)return this._randomFloat();let e=Array.isArray(t)?t:[t],n=e.reduce((i,u)=>i*u,1),o=S.zeros(e,"float64"),a=o.data;for(let i=0;i<n;i++)a[i]=this._randomFloat();return o}integers(t,e,n){if(e===void 0&&(e=t,t=0),n===void 0)return Math.floor(this._randomFloat()*(e-t))+t;let o=Array.isArray(n)?n:[n],a=o.reduce((c,l)=>c*l,1),i=S.zeros(o,"int64"),u=i.data,s=e-t;for(let c=0;c<a;c++)u[c]=BigInt(Math.floor(this._randomFloat()*s)+t);return i}standard_normal(t){if(t===void 0)return lr(this._randomFloat.bind(this));let e=Array.isArray(t)?t:[t],n=e.reduce((i,u)=>i*u,1),o=S.zeros(e,"float64"),a=o.data;for(let i=0;i<n;i+=2){let[u,s]=Or(this._randomFloat.bind(this));a[i]=u,i+1<n&&(a[i+1]=s)}return o}normal(t=0,e=1,n){if(n===void 0)return lr(this._randomFloat.bind(this))*e+t;let o=Array.isArray(n)?n:[n],a=o.reduce((s,c)=>s*c,1),i=S.zeros(o,"float64"),u=i.data;for(let s=0;s<a;s+=2){let[c,l]=Or(this._randomFloat.bind(this));u[s]=c*e+t,s+1<a&&(u[s+1]=l*e+t)}return i}uniform(t=0,e=1,n){if(n===void 0)return this._randomFloat()*(e-t)+t;let o=Array.isArray(n)?n:[n],a=o.reduce((c,l)=>c*l,1),i=S.zeros(o,"float64"),u=i.data,s=e-t;for(let c=0;c<a;c++)u[c]=this._randomFloat()*s+t;return i}choice(t,e,n=!0,o){return Rs(t,e,n,o,this._randomFloat.bind(this))}permutation(t){return Gs(t,this._randomFloat.bind(this))}shuffle(t){Zs(t,this._randomFloat.bind(this))}exponential(t=1,e){if(e===void 0)return-Math.log(1-this._randomFloat())*t;let n=Array.isArray(e)?e:[e],o=n.reduce((u,s)=>u*s,1),a=S.zeros(n,"float64"),i=a.data;for(let u=0;u<o;u++)i[u]=-Math.log(1-this._randomFloat())*t;return a}poisson(t=1,e){if(e===void 0)return at(t,this._randomFloat.bind(this));let n=Array.isArray(e)?e:[e],o=n.reduce((u,s)=>u*s,1),a=S.zeros(n,"int64"),i=a.data;for(let u=0;u<o;u++)i[u]=BigInt(at(t,this._randomFloat.bind(this)));return a}binomial(t,e,n){if(n===void 0)return st(t,e,this._randomFloat.bind(this));let o=Array.isArray(n)?n:[n],a=o.reduce((s,c)=>s*c,1),i=S.zeros(o,"int64"),u=i.data;for(let s=0;s<a;s++)u[s]=BigInt(st(t,e,this._randomFloat.bind(this)));return i}};function vs(r){return new Mr(r)}function Es(r){r==null&&(r=Math.floor(Date.now()^Math.random()*4294967296)),Bs(r>>>0)}function Ms(){return{mt:Array.from(rr.mt),mti:rr.mti}}function Os(r){rr.mt=new Uint32Array(r.mt),rr.mti=r.mti}function lr(r){let t,e;do t=r(),e=r();while(t===0);return Math.sqrt(-2*Math.log(t))*Math.cos(2*Math.PI*e)}function Or(r){let t,e;do t=r(),e=r();while(t===0);let n=Math.sqrt(-2*Math.log(t)),o=2*Math.PI*e;return[n*Math.cos(o),n*Math.sin(o)]}function at(r,t){if(r<30){let e=Math.exp(-r),n=0,o=1;do n++,o*=t();while(o>e);return n-1}else{let e=lr(t);return Math.max(0,Math.round(r+Math.sqrt(r)*e))}}function st(r,t,e){if(r*t<10&&r*(1-t)<10){let n=0;for(let o=0;o<r;o++)e()<t&&n++;return n}else{let n=r*t,o=Math.sqrt(r*t*(1-t)),a=lr(e);return Math.max(0,Math.min(r,Math.round(n+o*a)))}}function Ts(r){if(r===void 0)return C();let t=Array.isArray(r)?r:[r],e=t.reduce((a,i)=>a*i,1),n=S.zeros(t,"float64"),o=n.data;for(let a=0;a<e;a++)o[a]=C();return n}function Us(...r){if(r.length===0)return C();let t=r.reduce((o,a)=>o*a,1),e=S.zeros(r,"float64"),n=e.data;for(let o=0;o<t;o++)n[o]=C();return e}function $s(...r){if(r.length===0)return lr(C);let t=r.reduce((o,a)=>o*a,1),e=S.zeros(r,"float64"),n=e.data;for(let o=0;o<t;o+=2){let[a,i]=Or(C);n[o]=a,o+1<t&&(n[o+1]=i)}return e}function ks(r,t,e,n="int64"){t==null&&(t=r,r=0);let o=t-r;if(e===void 0)return Math.floor(C()*o)+r;let a=Array.isArray(e)?e:[e],i=a.reduce((c,l)=>c*l,1),u=S.zeros(a,n),s=u.data;if(w(n)){let c=s;for(let l=0;l<i;l++)c[l]=BigInt(Math.floor(C()*o)+r)}else{let c=s;for(let l=0;l<i;l++)c[l]=Math.floor(C()*o)+r}return u}function Cs(r=0,t=1,e){if(e===void 0)return C()*(t-r)+r;let n=Array.isArray(e)?e:[e],o=n.reduce((s,c)=>s*c,1),a=S.zeros(n,"float64"),i=a.data,u=t-r;for(let s=0;s<o;s++)i[s]=C()*u+r;return a}function Fs(r=0,t=1,e){if(e===void 0)return lr(C)*t+r;let n=Array.isArray(e)?e:[e],o=n.reduce((u,s)=>u*s,1),a=S.zeros(n,"float64"),i=a.data;for(let u=0;u<o;u+=2){let[s,c]=Or(C);i[u]=s*t+r,u+1<o&&(i[u+1]=c*t+r)}return a}function Vs(r){if(r===void 0)return lr(C);let t=Array.isArray(r)?r:[r],e=t.reduce((a,i)=>a*i,1),n=S.zeros(t,"float64"),o=n.data;for(let a=0;a<e;a+=2){let[i,u]=Or(C);o[a]=i,a+1<e&&(o[a+1]=u)}return n}function qs(r=1,t){if(t===void 0)return-Math.log(1-C())*r;let e=Array.isArray(t)?t:[t],n=e.reduce((i,u)=>i*u,1),o=S.zeros(e,"float64"),a=o.data;for(let i=0;i<n;i++)a[i]=-Math.log(1-C())*r;return o}function js(r=1,t){if(t===void 0)return at(r,C);let e=Array.isArray(t)?t:[t],n=e.reduce((i,u)=>i*u,1),o=S.zeros(e,"int64"),a=o.data;for(let i=0;i<n;i++)a[i]=BigInt(at(r,C));return o}function Ps(r,t,e){if(e===void 0)return st(r,t,C);let n=Array.isArray(e)?e:[e],o=n.reduce((u,s)=>u*s,1),a=S.zeros(n,"int64"),i=a.data;for(let u=0;u<o;u++)i[u]=BigInt(st(r,t,C));return a}function Rs(r,t,e=!0,n,o=C){let a;if(typeof r=="number")a=Array.from({length:r},(f,y)=>y);else{let f=r.size;a=[];for(let y=0;y<f;y++)a.push(Number(r.iget(y)))}let i=a.length;if(i===0)throw new Error("cannot take a sample from an empty sequence");let u;if(n!==void 0){if(Array.isArray(n))u=n;else{let y=n.size;u=[];for(let p=0;p<y;p++)u.push(Number(n.iget(p)))}if(u.length!==i)throw new Error("p and a must have the same size");let f=u.reduce((y,p)=>y+p,0);Math.abs(f-1)>1e-10&&(u=u.map(y=>y/f))}if(t===void 0){if(u){let f=o(),y=0;for(let p=0;p<i;p++)if(y+=u[p],f<y)return a[p];return a[i-1]}return a[Math.floor(o()*i)]}let s=Array.isArray(t)?t:[t],c=s.reduce((f,y)=>f*y,1);if(!e&&c>i)throw new Error("cannot take a larger sample than population when replace=false");let l=S.zeros(s,"float64"),m=l.data;if(e)if(u){let f=new Array(i);f[0]=u[0];for(let y=1;y<i;y++)f[y]=f[y-1]+u[y];for(let y=0;y<c;y++){let p=o(),d=0;for(;d<i-1&&p>=f[d];)d++;m[y]=a[d]}}else for(let f=0;f<c;f++)m[f]=a[Math.floor(o()*i)];else{let f=[...a],y=u?[...u]:void 0;for(let p=0;p<c;p++){let d;if(y){let g=y.reduce((b,N)=>b+N,0),h=o()*g,A=0;d=0;for(let b=0;b<f.length;b++)if(A+=y[b],h<A){d=b;break}d===0&&h>=A&&(d=f.length-1)}else d=Math.floor(o()*f.length);m[p]=f[d],f.splice(d,1),y&&y.splice(d,1)}}return l}function Ls(r,t,e=!0,n){return Rs(r,t,e,n,C)}function Gs(r,t=C){let e;if(typeof r=="number"){let o=new Float64Array(r);for(let a=0;a<r;a++)o[a]=a;e=S.fromData(o,[r],"float64")}else e=r.copy();let n=e.size;for(let o=n-1;o>0;o--){let a=Math.floor(t()*(o+1)),i=e.iget(o);e.iset(o,e.iget(a)),e.iset(a,i)}return e}function Ws(r){return Gs(r,C)}function Zs(r,t=C){let e=r.size;for(let n=e-1;n>0;n--){let o=Math.floor(t()*(n+1)),a=r.iget(n);r.iset(n,r.iget(o)),r.iset(o,a)}}function Hs(r){Zs(r,C)}function J(r){return r&&typeof r=="object"&&"_data"in r&&"_shape"in r?z._fromStorage(r):r}var Rp={seed:Es,random:r=>J(Ts(r)),rand:(...r)=>J(Us(...r)),randn:(...r)=>J($s(...r)),randint:(r,t,e,n)=>J(ks(r,t,e,n)),uniform:(r,t,e)=>J(Cs(r,t,e)),normal:(r,t,e)=>J(Fs(r,t,e)),standard_normal:r=>J(Vs(r)),exponential:(r,t)=>J(qs(r,t)),poisson:(r,t)=>J(js(r,t)),binomial:(r,t,e)=>J(Ps(r,t,e)),choice:(r,t,e,n)=>J(Ls(r,t,e,n)),permutation:r=>J(Ws(r)),shuffle:Hs,get_state:Ms,set_state:Os,default_rng:vs,Generator:Mr},Lp="0.10.0";export{tt as DTYPE_TO_DESCR,H as InvalidNpyError,z as NDArray,ae as SUPPORTED_DTYPES,ar as UnsupportedDTypeError,Lp as __version__,Ya as abs,Ya as absolute,Qa as acos,es as acosh,is as amax,us as amin,Qc as append,hu as arange,Qa as arccos,es as arccosh,Xa as arcsin,ts as arcsinh,Ka as arctan,rs as arctan2,ns as arctanh,Gf as argpartition,Pf as argsort,Hf as argwhere,oe as around,G as array,cl as array_equal,ll as array_equiv,Mc as array_split,vu as asanyarray,rt as asarray,Eu as ascontiguousarray,Mu as asfortranarray,Xa as asin,ts as asinh,Ka as atan,rs as atan2,ns as atanh,Gc as atleast_1d,Wc as atleast_2d,Zc as atleast_3d,dl as average,gm as bincount,jl as bitwise_and,Ll as bitwise_not,Pl as bitwise_or,Rl as bitwise_xor,nl as broadcast_arrays,ol as broadcast_shapes,el as broadcast_to,Bl as cbrt,rm as ceil,ul as choose,Yc as column_stack,zf as compress,gr as concatenate,Dm as convolve,wu as copy,of as copysign,il as copyto,wm as corrcoef,Nm as correlate,dc as cos,xc as cosh,Kf as count_nonzero,xm as cov,dm as cross,ss as cumprod,as as cumsum,ss as cumulative_prod,as as cumulative_sum,Sc as deg2rad,Ac as degrees,Kc as delete,Za as diag,Ef as diag_indices,Mf as diag_indices_from,Ou as diagflat,uc as diagonal,mm as diff,bm as digitize,Ja as divide,El as divmod,sc as dot,Hc as dsplit,vc as dstack,ym as ediff1d,Nf as einsum,Ga as empty,_u as empty_like,Gu as exp,Wu as exp2,Vc as expand_dims,Zu as expm1,Qf as extract,La as eye,vl as fabs,vf as fill_diagonal,tm as fix,Yf as flatnonzero,ne as flip,qc as fliplr,jc as flipud,Ul as float_power,em as floor,nc as floor_divide,$l as fmod,kl as frexp,Vu as frombuffer,qu as fromfile,Tu as fromfunction,ju as fromiter,Pu as fromstring,Wa as full,Bu as full_like,Cl as gcd,Du as geomspace,pm as gradient,Tl as heaviside,Am as histogram,hm as histogram2d,Sm as histogramdd,Tc as hsplit,Bc as hstack,bc as hypot,xu as identity,sm as in1d,Cf as indices,fc as inner,rl as insert,im as intersect1d,Gl as invert,cf as iscomplex,lf as iscomplexobj,hf as isdtype,rf as isfinite,df as isfortran,um as isin,tf as isinf,ef as isnan,nf as isnat,yf as isneginf,pf as isposinf,ff as isreal,mf as isrealobj,bf as isscalar,Af as iterable,Ff as ix_,cc as kron,Fl as lcm,Vl as ldexp,Wl as left_shift,Rf as lexsort,Df as linalg,Su as linspace,gs as loadNpz,bs as loadNpzSync,Hu as log,Ju as log10,Xu as log1p,Yu as log2,Qu as logaddexp,Ku as logaddexp2,Jl as logical_and,Ql as logical_not,Xl as logical_or,Kl as logical_xor,Nu as logspace,kf as mask_indices,is as max,ml as median,Uu as meshgrid,us as min,ec as mod,ql as modf,zc as moveaxis,wl as nanargmax,xl as nanargmin,zl as nancumprod,Il as nancumsum,Dl as nanmax,Al as nanmean,_l as nanmedian,Nl as nanmin,bl as nanprod,Sl as nanstd,gl as nansum,hl as nanvar,rc as negative,sf as nextafter,Zf as nonzero,Pa as ones,zu as ones_like,mc as outer,Hl as packbits,tl as pad,et as parseNpy,ue as parseNpyData,ie as parseNpyHeader,me as parseNpz,ye as parseNpzSync,Lf as partition,yl as percentile,Bf as place,oc as positive,Ha as pow,Ha as power,Sf as promote_types,fl as ptp,sl as put,wf as put_along_axis,If as putmask,pl as quantile,Nc as rad2deg,hc as radians,Rp as random,kc as ravel,Vf as ravel_multi_index,gf as real_if_close,ac as reciprocal,Ol as remainder,$c as repeat,Cc as reshape,Xc as resize,Zl as right_shift,nm as rint,Rc as roll,Lc as rollaxis,Pc as rot90,oe as round,oe as round_,Jc as row_stack,Xf as searchsorted,_f as select,vr as serializeNpy,xs as serializeNpz,ws as serializeNpzSync,cm as setdiff1d,lm as setxor1d,tc as sign,af as signbit,pc as sin,Dc as sinh,jf as sort,Wf as sort_complex,uf as spacing,Ec as split,Lu as sqrt,Ml as square,Fc as squeeze,_c as stack,Ic as swapaxes,al as take,xf as take_along_axis,gc as tan,wc as tanh,yc as tensordot,Uc as tile,ic as trace,lc as transpose,$u as tri,ku as tril,Of as tril_indices,Tf as tril_indices_from,Cu as triu,Uf as triu_indices,$f as triu_indices_from,Ja as true_divide,om as trunc,fm as union1d,am as unique,Yl as unpackbits,qf as unravel_index,Fu as vander,Oc as vsplit,os as vstack,Jf as where,or as zeros,Iu as zeros_like};
|