1(function(){"use strict";const Vu=new Map,Di=[],YS=(e,t,r)=>{if(t&&typeof t.init=="function"&&typeof t.createInferenceSessionHandler=="function"){const n=Vu.get(e);if(n===void 0)Vu.set(e,{backend:t,priority:r});else{if(n.priority>r)return;if(n.priority===r&&n.backend!==t)throw new Error(`cannot register backend "${e}" using priority ${r}`)}if(r>=0){const s=Di.indexOf(e);s!==-1&&Di.splice(s,1);for(let a=0;a<Di.length;a++)if(Vu.get(Di[a]).priority<=r){Di.splice(a,0,e);return}Di.push(e)}return}throw new TypeError("not a valid backend")},NS=async e=>{const t=Vu.get(e);if(!t)return"backend not found.";if(t.initialized)return t.backend;if(t.aborted)return t.error;{const r=!!t.initPromise;try{return r||(t.initPromise=t.backend.init(e)),await t.initPromise,t.initialized=!0,t.backend}catch(n){return r||(t.error=`${n}`,t.aborted=!0),t.error}finally{delete t.initPromise}}},jS=async e=>{const t=e.executionProviders||[],r=t.map(l=>typeof l=="string"?l:l.name),n=r.length===0?Di:r;let s;const a=[],i=new Set;for(const l of n){const u=await NS(l);typeof u=="string"?a.push({name:l,err:u}):(s||(s=u),s===u&&i.add(l))}if(!s)throw new Error(`no available backend found. ERR: ${a.map(l=>`[${l.name}] ${l.err}`).join(", ")}`);for(const{name:l,err:u}of a)r.includes(l)&&console.warn(`removing requested execution provider "${l}" from session options because it is not available: ${u}`);const o=t.filter(l=>i.has(typeof l=="string"?l:l.name));return[s,new Proxy(e,{get:(l,u)=>u==="executionProviders"?o:Reflect.get(l,u)})]},US="1.24.3";let tf="warning";const Gn={wasm:{},webgl:{},webgpu:{},versions:{common:US},set logLevel(e){if(e!==void 0){if(typeof e!="string"||["verbose","info","warning","error","fatal"].indexOf(e)===-1)throw new Error(`Unsupported logging level: ${e}`);tf=e}},get logLevel(){return tf}};Object.defineProperty(Gn,"logLevel",{enumerable:!0});const WS=Gn,VS=(e,t)=>{const r=typeof document<"u"?document.createElement("canvas"):new OffscreenCanvas(1,1);r.width=e.dims[3],r.height=e.dims[2];const n=r.getContext("2d");if(n!=null){let s,a;t?.tensorLayout!==void 0&&t.tensorLayout==="NHWC"?(s=e.dims[2],a=e.dims[3]):(s=e.dims[3],a=e.dims[2]);const i=t?.format!==void 0?t.format:"RGB",o=t?.norm;let l,u;o===void 0||o.mean===void 0?l=[255,255,255,255]:typeof o.mean=="number"?l=[o.mean,o.mean,o.mean,o.mean]:(l=[o.mean[0],o.mean[1],o.mean[2],0],o.mean[3]!==void 0&&(l[3]=o.mean[3])),o===void 0||o.bias===void 0?u=[0,0,0,0]:typeof o.bias=="number"?u=[o.bias,o.bias,o.bias,o.bias]:(u=[o.bias[0],o.bias[1],o.bias[2],0],o.bias[3]!==void 0&&(u[3]=o.bias[3]));const p=a*s;let d=0,c=p,g=p*2,A=-1;i==="RGBA"?(d=0,c=p,g=p*2,A=p*3):i==="RGB"?(d=0,c=p,g=p*2):i==="RBG"&&(d=0,g=p,c=p*2);for(let m=0;m<a;m++)for(let B=0;B<s;B++){const f=(e.data[d++]-u[0])*l[0],h=(e.data[c++]-u[1])*l[1],P=(e.data[g++]-u[2])*l[2],_=A===-1?255:(e.data[A++]-u[3])*l[3];n.fillStyle="rgba("+f+","+h+","+P+","+_+")",n.fillRect(B,m,1,1)}if("toDataURL"in r)return r.toDataURL();throw new Error("toDataURL is not supported")}else throw new Error("Can not access image data")},QS=(e,t)=>{const r=typeof document<"u"?document.createElement("canvas").getContext("2d"):new OffscreenCanvas(1,1).getContext("2d");let n;if(r!=null){let s,a,i;t?.tensorLayout!==void 0&&t.tensorLayout==="NHWC"?(s=e.dims[2],a=e.dims[1],i=e.dims[3]):(s=e.dims[3],a=e.dims[2],i=e.dims[1]);const o=t!==void 0&&t.format!==void 0?t.format:"RGB",l=t?.norm;let u,p;l===void 0||l.mean===void 0?u=[255,255,255,255]:typeof l.mean=="number"?u=[l.mean,l.mean,l.mean,l.mean]:(u=[l.mean[0],l.mean[1],l.mean[2],255],l.mean[3]!==void 0&&(u[3]=l.mean[3])),l===void 0||l.bias===void 0?p=[0,0,0,0]:typeof l.bias=="number"?p=[l.bias,l.bias,l.bias,l.bias]:(p=[l.bias[0],l.bias[1],l.bias[2],0],l.bias[3]!==void 0&&(p[3]=l.bias[3]));const d=a*s;if(t!==void 0&&(t.format!==void 0&&i===4&&t.format!=="RGBA"||i===3&&t.format!=="RGB"&&t.format!=="BGR"))throw new Error("Tensor format doesn't match input tensor dims");const c=4;let g=0,A=1,m=2,B=3,f=0,h=d,P=d*2,_=-1;o==="RGBA"?(f=0,h=d,P=d*2,_=d*3):o==="RGB"?(f=0,h=d,P=d*2):o==="RBG"&&(f=0,P=d,h=d*2),n=r.createImageData(s,a);for(let w=0;w<a*s;g+=c,A+=c,m+=c,B+=c,w++)n.data[g]=(e.data[f++]-p[0])*u[0],n.data[A]=(e.data[h++]-p[1])*u[1],n.data[m]=(e.data[P++]-p[2])*u[2],n.data[B]=_===-1?255:(e.data[_++]-p[3])*u[3]}else throw new Error("Can not access image data");return n},Jd=(e,t)=>{if(e===void 0)throw new Error("Image buffer must be defined");if(t.height===void 0||t.width===void 0)throw new Error("Image height and width must be defined");if(t.tensorLayout==="NHWC")throw new Error("NHWC Tensor layout is not supported yet");const{height:r,width:n}=t,s=t.norm??{mean:255,bias:0};let a,i;typeof s.mean=="number"?a=[s.mean,s.mean,s.mean,s.mean]:a=[s.mean[0],s.mean[1],s.mean[2],s.mean[3]??255],typeof s.bias=="number"?i=[s.bi
vendor: 10,365 bytes, line 1
1as,s.bias,s.bias,s.bias]:i=[s.bias[0],s.bias[1],s.bias[2],s.bias[3]??0];const o=t.format!==void 0?t.format:"RGBA",l=t.tensorFormat!==void 0&&t.tensorFormat!==void 0?t.tensorFormat:"RGB",u=r*n,p=l==="RGBA"?new Float32Array(u*4):new Float32Array(u*3);let d=4,c=0,g=1,A=2,m=3,B=0,f=u,h=u*2,P=-1;o==="RGB"&&(d=3,c=0,g=1,A=2,m=-1),l==="RGBA"?P=u*3:l==="RBG"?(B=0,h=u,f=u*2):l==="BGR"&&(h=0,f=u,B=u*2);for(let w=0;w<u;w++,c+=d,A+=d,g+=d,m+=d)p[B++]=(e[c]+i[0])/a[0],p[f++]=(e[g]+i[1])/a[1],p[h++]=(e[A]+i[2])/a[2],P!==-1&&m!==-1&&(p[P++]=(e[m]+i[3])/a[3]);return l==="RGBA"?new ms("float32",p,[1,4,r,n]):new ms("float32",p,[1,3,r,n])},HS=async(e,t)=>{const r=typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement,n=typeof ImageData<"u"&&e instanceof ImageData,s=typeof ImageBitmap<"u"&&e instanceof ImageBitmap,a=typeof e=="string";let i,o=t??{};const l=()=>{if(typeof document<"u")return document.createElement("canvas");if(typeof OffscreenCanvas<"u")return new OffscreenCanvas(1,1);throw new Error("Canvas is not supported")},u=p=>typeof HTMLCanvasElement<"u"&&p instanceof HTMLCanvasElement||p instanceof OffscreenCanvas?p.getContext("2d"):null;if(r){const p=l();p.width=e.width,p.height=e.height;const d=u(p);if(d!=null){let c=e.height,g=e.width;if(t!==void 0&&t.resizedHeight!==void 0&&t.resizedWidth!==void 0&&(c=t.resizedHeight,g=t.resizedWidth),t!==void 0){if(o=t,t.tensorFormat!==void 0)throw new Error("Image input config format must be RGBA for HTMLImageElement");o.tensorFormat="RGBA",o.height=c,o.width=g}else o.tensorFormat="RGBA",o.height=c,o.width=g;d.drawImage(e,0,0),i=d.getImageData(0,0,g,c).data}else throw new Error("Can not access image data")}else if(n){let p,d;if(t!==void 0&&t.resizedWidth!==void 0&&t.resizedHeight!==void 0?(p=t.resizedHeight,d=t.resizedWidth):(p=e.height,d=e.width),t!==void 0&&(o=t),o.format="RGBA",o.height=p,o.width=d,t!==void 0){const c=l();c.width=d,c.height=p;const g=u(c);if(g!=null)g.putImageData(e,0,0),i=g.getImageData(0,0,d,p).data;else throw new Error("Can not access image data")}else i=e.data}else if(s){if(t===void 0)throw new Error("Please provide image config with format for Imagebitmap");const p=l();p.width=e.width,p.height=e.height;const d=u(p);if(d!=null){const c=e.height,g=e.width;return d.drawImage(e,0,0,g,c),i=d.getImageData(0,0,g,c).data,o.height=c,o.width=g,Jd(i,o)}else throw new Error("Can not access image data")}else{if(a)return new Promise((p,d)=>{const c=l(),g=u(c);if(!e||!g)return d();const A=new Image;A.crossOrigin="Anonymous",A.src=e,A.onload=()=>{c.width=A.width,c.height=A.height,g.drawImage(A,0,0,c.width,c.height);const m=g.getImageData(0,0,c.width,c.height);o.height=c.height,o.width=c.width,p(Jd(m.data,o))}});throw new Error("Input data provided is not supported - aborted tensor creation")}if(i!==void 0)return Jd(i,o);throw new Error("Input data provided is not supported - aborted tensor creation")},KS=(e,t)=>{const{width:r,height:n,download:s,dispose:a}=t,i=[1,n,r,4];return new ms({location:"texture",type:"float32",texture:e,dims:i,download:s,dispose:a})},qS=(e,t)=>{const{dataType:r,dims:n,download:s,dispose:a}=t;return new ms({location:"gpu-buffer",type:r??"float32",gpuBuffer:e,dims:n,download:s,dispose:a})},XS=(e,t)=>{const{dataType:r,dims:n,download:s,dispose:a}=t;return new ms({location:"ml-tensor",type:r??"float32",mlTensor:e,dims:n,download:s,dispose:a})},ZS=(e,t,r)=>new ms({location:"cpu-pinned",type:e,data:t,dims:r??[t.length]}),Po=new Map([["float32",Float32Array],["uint8",Uint8Array],["int8",Int8Array],["uint16",Uint16Array],["int16",Int16Array],["int32",Int32Array],["bool",Uint8Array],["float64",Float64Array],["uint32",Uint32Array],["int4",Uint8Array],["uint4",Uint8Array]]),Qu=new Map([[Float32Array,"float32"],[Uint8Array,"uint8"],[Int8Array,"int8"],[Uint16Array,"uint16"],[Int16Array,"int16"],[Int32Array,"int32"],[Float64Array,"float64"],[Uint32Array,"uint32"]]);let rf=!1;const JS=()=>{if(!rf){rf=!0;const e=typeof BigInt64Array<"u"&&BigInt64Array.from,t=typeof BigUint64Array<"u"&&BigUint64Array.from,r=globalThis.Float16Array,n=typeof r<"u"&&r.from;e&&(Po.set("int64",BigInt64Array),Qu.set(BigInt64Array,"int64")),t&&(Po.set("uint64",BigUint64Array),Qu.set(BigUint64Array,"uint64")),n?(Po.set("float16",r),Qu.set(r,"float16")):Po.set("float16",Uint16Array)}},ek=e=>{let t=1;for(let r=0;r<e.length;r++){const n=e[r];if(typeof n!="number"||!Number.isSafeInteger(n))throw new TypeError(`dims[${r}] must be an integer, got: ${n}`);if(n<0)throw new RangeError(`dims[${r}] must be a non-negative integer, got: ${n}`);t*=n}return t},tk=(e,t)=>{switch(e.location){case"cpu":return new ms(e.type,e.data,t);case"cpu-pinned":return new ms({location:"cpu-pinned",data:e.data,type:e.type,dims:t});case"texture":return new ms({location:"texture",texture:e.texture,type:e.type,dims:t});case"gpu-buffer":return new ms({location:"gpu-buffer",gpuBuffer:e.gpuBuffer,type:e.type,dims:t});case"ml-tensor":return new ms({location:"ml-tensor",mlTensor:e.mlTensor,type:e.type,dims:t});default:throw new Error(`tensorReshape: tensor location ${e.location} is not supported`)}};let ms=class{constructor(t,r,n){JS();let s,a;if(typeof t=="object"&&"location"in t)switch(this.dataLocation=t.location,s=t.type,a=t.dims,t.location){case"cpu-pinned":{const o=Po.get(s);if(!o)throw new TypeError(`unsupported type "${s}" to create tensor from pinned buffer`);if(!(t.data instanceof o))throw new TypeError(`buffer should be of type ${o.name}`);this.cpuData=t.data;break}case"texture":{if(s!=="float32")throw new TypeError(`unsupported type "${s}" to create tensor from texture`);this.gpuTextureData=t.texture,this.downloader=t.download,this.disposer=t.dispose;break}case"gpu-buffer":{if(s!=="float32"&&s!=="float16"&&s!=="int32"&&s!=="int64"&&s!=="uint32"&&s!=="uint8"&&s!=="bool"&&s!=="uint4"&&s!=="int4")throw new TypeError(`unsupported type "${s}" to create tensor from gpu buffer`);this.gpuBufferData=t.gpuBuffer,this.downloader=t.download,this.disposer=t.dispose;break}case"ml-tensor":{if(s!=="float32"&&s!=="float16"&&s!=="int32"&&s!=="int64"&&s!=="uint32"&&s!=="uint64"&&s!=="int8"&&s!=="uint8"&&s!=="bool"&&s!=="uint4"&&s!=="int4")throw new TypeError(`unsupported type "${s}" to create tensor from MLTensor`);this.mlTensorData=t.mlTensor,this.downloader=t.download,this.disposer=t.dispose;break}default:throw new Error(`Tensor constructor: unsupported location '${this.dataLocation}'`)}else{let o,l;if(typeof t=="string")if(s=t,l=n,t==="string"){if(!Array.isArray(r))throw new TypeError("A string tensor's data must be a string array.");o=r}else{const u=Po.get(t);if(u===void 0)throw new TypeError(`Unsupported tensor type: ${t}.`);if(Array.isArray(r)){if(t==="float16"&&u===Uint16Array||t==="uint4"||t==="int4")throw new TypeError(`Creating a ${t} tensor from number array is not supported. Please use ${u.name} as data.`);t==="uint64"||t==="int64"?o=u.from(r,BigInt):o=u.from(r)}else if(r instanceof u)o=r;else if(r instanceof Uint8ClampedArray)if(t==="uint8")o=Uint8Array.from(r);else throw new TypeError("A Uint8ClampedArray tensor's data must be type of uint8");else if(t==="float16"&&r instanceof Uint16Array&&u!==Uint16Array)o=new globalThis.Float16Array(r.buffer,r.byteOffset,r.length);else throw new TypeError(`A ${s} tensor's data must be type of ${u}`)}else if(l=r,Array.isArray(t)){if(t.length===0)throw new TypeError("Tensor type cannot be inferred from an empty array.");const u=typeof t[0];if(u==="string")s="string",o=t;else if(u==="boolean")s="bool",o=Uint8Array.from(t);else throw new TypeError(`Invalid element type of data array: ${u}.`)}else if(t instanceof Uint8ClampedArray)s="uint8",o=Uint8Array.from(t);else{const u=Qu.get(t.constructor);if(u===void 0)throw new TypeError(`Unsupported type for tensor data: ${t.constructor}.`);s=u,o=t}if(l===void 0)l=[o.length];else if(!Array.isArray(l))throw new TypeError("A tensor's dims must be a number array");a=l,this.cpuData=o,this.dataLocation="cpu"}const i=ek(a);if(this.cpuData&&i!==this.cpuData.length&&!((s==="uint4"||s==="int4")&&Math.ceil(i/2)===this.cpuData.length))throw new Error(`Tensor's size(${i}) does not match data length(${this.cpuData.length}).`);this.type=s,this.dims=a,this.size=i}static async fromImage(t,r){return HS(t,r)}static fromTexture(t,r){return KS(t,r)}static fromGpuBuffer(t,r){return qS(t,r)}static fromMLTensor(t,r){return XS(t,r)}static fromPinnedBuffer(t,r,n){return ZS(t,r,n)}toDataURL(t){return VS(this,t)}toImageData(t){return QS(this,t)}get data(){if(this.ensureValid(),!this.cpuData)throw new Error("The data is not on CPU. Use `getData()` to download GPU data to CPU, or use `texture` or `gpuBuffer` property to access the GPU data directly.");return this.cpuData}get location(){return this.dataLocation}get texture(){if(this.ensureValid(),!this.gpuTextureData)throw new Error("The data is not stored as a WebGL texture.");return this.gpuTextureData}get gpuBuffer(){if(this.ensureValid(),!this.gpuBufferData)throw new Error("The data is not stored as a WebGPU buffer.");return this.gpuBufferData}get mlTensor(){if(this.ensureValid(),!this.mlTensorData)throw new Error("The data is not stored as a WebNN MLTensor.");return this.mlTensorData}async getData(t){switch(this.ensureValid(),this.dataLocation){case"cpu":case"cpu-pinned":return this.data;case"texture":case"gpu-buffer":case"ml-tensor":{if(!this.downloader)throw new Error("The current tensor is not created with a specified data downloader.");if(this.isDownloading)throw new Error("The current tensor is being downloaded.");try{this.isDownloading=!0;const r=await this.downloader();return this.downloader=void 0,this.dataLocation="cpu",this.cpuData=r,t&&this.disposer&&(this.disposer(),this.disposer=void 0),r}finally{this.isDownloading=!1}}default:throw new Error(`cannot get data from location: ${this.dataLocation}`)}}dispose(){if(this.isDownloading)throw new Error("The current tensor is being downloaded.");this.disposer&&(this.disposer(),this.disposer=void 0),this.cpuData=void 0,this.gpuTextureData=void 0,this.gpuBufferData=void 0,this.mlTensorData=void 0,this.downloader=void 0,this.isDownloading=void 0,this.dataLocation="none"}ensureValid(){if(this.dataLocation==="none")throw new Error("The tensor is disposed.")}reshape(t){if(this.ensureValid(),this.downloader||this.disposer)throw new Error("Cannot reshape a tensor that owns GPU resource.");return tk(this,t)}};const Mo=ms,nf=(e,t)=>
1{(typeof Gn.trace>"u"?!Gn.wasm.trace:!Gn.trace)||console.timeStamp(`${e}::ORT::${t}`)},sf=(e,t)=>{const r=new Error().stack?.split(/\r\n|\r|\n/g)||[];let n=!1;for(let s=0;s<r.length;s++){if(n&&!r[s].includes("TRACE_FUNC")){let a=`FUNC_${e}::${r[s].trim().split(" ")[1]}`;t&&(a+=`::${t}`),nf("CPU",a);return}r[s].includes("TRACE_FUNC")&&(n=!0)}},ep=e=>{(typeof Gn.trace>"u"?!Gn.wasm.trace:!Gn.trace)||sf("BEGIN",e)},tp=e=>{(typeof Gn.trace>"u"?!Gn.wasm.trace:!Gn.trace)||sf("END",e)},rp=e=>{(typeof Gn.trace>"u"?!Gn.wasm.trace:!Gn.trace)||console.time(`ORT::${e}`)},np=e=>{(typeof Gn.trace>"u"?!Gn.wasm.trace:!Gn.trace)||console.timeEnd(`ORT::${e}`)};var rk=Object.freeze({__proto__:null,InferenceSession:class GS{constructor(t){this.handler=t}async run(t,r,n){ep(),rp("InferenceSession.run");const s={};let a={};if(typeof t!="object"||t===null||t instanceof Mo||Array.isArray(t))throw new TypeError("'feeds' must be an object that use input names as keys and OnnxValue as corresponding values.");let i=!0;if(typeof r=="object"){if(r===null)throw new TypeError("Unexpected argument[1]: cannot be null.");if(r instanceof Mo)throw new TypeError("'fetches' cannot be a Tensor");if(Array.isArray(r)){if(r.length===0)throw new TypeError("'fetches' cannot be an empty array.");i=!1;for(const u of r){if(typeof u!="string")throw new TypeError("'fetches' must be a string array or an object.");if(this.outputNames.indexOf(u)===-1)throw new RangeError(`'fetches' contains invalid output name: ${u}.`);s[u]=null}if(typeof n=="object"&&n!==null)a=n;else if(typeof n<"u")throw new TypeError("'options' must be an object.")}else{let u=!1;const p=Object.getOwnPropertyNames(r);for(const d of this.outputNames)if(p.indexOf(d)!==-1){const c=r[d];(c===null||c instanceof Mo)&&(u=!0,i=!1,s[d]=c)}if(u){if(typeof n=="object"&&n!==null)a=n;else if(typeof n<"u")throw new TypeError("'options' must be an object.")}else a=r}}else if(typeof r<"u")throw new TypeError("Unexpected argument[1]: must be 'fetches' or 'options'.");for(const u of this.inputNames)if(typeof t[u]>"u")throw new Error(`input '${u}' is missing in 'feeds'.`);if(i)for(const u of this.outputNames)s[u]=null;const o=await this.handler.run(t,s,a),l={};for(const u in o)if(Object.hasOwnProperty.call(o,u)){const p=o[u];p instanceof Mo?l[u]=p:l[u]=new Mo(p.type,p.data,p.dims)}return np("InferenceSession.run"),tp(),l}async release(){return this.handler.dispose()}static async create(t,r,n,s){ep(),rp("InferenceSession.create");let a,i={};if(typeof t=="string"){if(a=t,typeof r=="object"&&r!==null)i=r;else if(typeof r<"u")throw new TypeError("'options' must be an object.")}else if(t instanceof Uint8Array){if(a=t,typeof r=="object"&&r!==null)i=r;else if(typeof r<"u")throw new TypeError("'options' must be an object.")}else if(t instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&t instanceof SharedArrayBuffer){const p=t;let d=0,c=t.byteLength;if(typeof r=="object"&&r!==null)i=r;else if(typeof r=="number"){if(d=r,!Number.isSafeInteger(d))throw new RangeError("'byteOffset' must be an integer.");if(d<0||d>=p.byteLength)throw new RangeError(`'byteOffset' is out of range [0, ${p.byteLength}).`);if(c=t.byteLength-d,typeof n=="number"){if(c=n,!Number.isSafeInteger(c))throw new RangeError("'byteLength' must be an integer.");if(c<=0||d+c>p.byteLength)throw new RangeError(`'byteLength' is out of range (0, ${p.byteLength-d}].`);if(typeof s=="object"&&s!==null)i=s;else if(typeof s<"u")throw new TypeError("'options' must be an object.")}else if(typeof n<"u")throw new TypeError("'byteLength' must be a number.")}else if(typeof r<"u")throw new TypeError("'options' must be an object.");a=new Uint8Array(p,d,c)}else throw new TypeError("Unexpected argument[0]: must be 'path' or 'buffer'.");const[o,l]=await jS(i),u=await o.createInferenceSessionHandler(a,l);return np("InferenceSession.create"),tp(),new GS(u)}startProfiling(){this.handler.startProfiling()}endProfiling(){this.handler.endProfiling()}get inputNames(){return this.handler.inputNames}get outputNames(){return this.handler.outputNames}get inputMetadata(){return this.handler.inputMetadata}get outputMetadata(){return this.handler.outputMetadata}},TRACE:nf,TRACE_EVENT_BEGIN:rp,TRACE_EVENT_END:np,TRACE_FUNC_BEGIN:ep,TRACE_FUNC_END:tp,Tensor:Mo,env:WS,registerBackend:YS});var sp=Object.defineProperty,nk=Object.getOwnPropertyDescriptor,sk=Object.getOwnPropertyNames,ak=Object.prototype.hasOwnProperty,ik=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')}),Je=(e,t)=>
vendor: 19,235 bytes, line 1
1()=>(e&&(t=e(e=0)),t),vo=(e,t)=>{for(var r in t)sp(e,r,{get:t[r],enumerable:!0})},ok=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of sk(t))!ak.call(e,s)&&s!==r&&sp(e,s,{get:()=>t[s],enumerable:!(n=nk(t,s))||n.enumerable});return e},_l=e=>ok(sp({},"__esModule",{value:!0}),e),wl,Ua,Ii,af,of,lf=Je(()=>{wl=new Map,Ua=[],Ii=(e,t,r)=>{if(t&&typeof t.init=="function"&&typeof t.createInferenceSessionHandler=="function"){let n=wl.get(e);if(n===void 0)wl.set(e,{backend:t,priority:r});else{if(n.priority>r)return;if(n.priority===r&&n.backend!==t)throw new Error(`cannot register backend "${e}" using priority ${r}`)}if(r>=0){let s=Ua.indexOf(e);s!==-1&&Ua.splice(s,1);for(let a=0;a<Ua.length;a++)if(wl.get(Ua[a]).priority<=r){Ua.splice(a,0,e);return}Ua.push(e)}return}throw new TypeError("not a valid backend")},af=async e=>{let t=wl.get(e);if(!t)return"backend not found.";if(t.initialized)return t.backend;if(t.aborted)return t.error;{let r=!!t.initPromise;try{return r||(t.initPromise=t.backend.init(e)),await t.initPromise,t.initialized=!0,t.backend}catch(n){return r||(t.error=`${n}`,t.aborted=!0),t.error}finally{delete t.initPromise}}},of=async e=>{let t=e.executionProviders||[],r=t.map(l=>typeof l=="string"?l:l.name),n=r.length===0?Ua:r,s,a=[],i=new Set;for(let l of n){let u=await af(l);typeof u=="string"?a.push({name:l,err:u}):(s||(s=u),s===u&&i.add(l))}if(!s)throw new Error(`no available backend found. ERR: ${a.map(l=>`[${l.name}] ${l.err}`).join(", ")}`);for(let{name:l,err:u}of a)r.includes(l)&&console.warn(`removing requested execution provider "${l}" from session options because it is not available: ${u}`);let o=t.filter(l=>i.has(typeof l=="string"?l:l.name));return[s,new Proxy(e,{get:(l,u)=>u==="executionProviders"?o:Reflect.get(l,u)})]}}),lk=Je(()=>{lf()}),uf,uk=Je(()=>{uf="1.22.0-dev.20250409-89f8206ba4"}),ap,fs,cf=Je(()=>{uk(),ap="warning",fs={wasm:{},webgl:{},webgpu:{},versions:{common:uf},set logLevel(e){if(e!==void 0){if(typeof e!="string"||["verbose","info","warning","error","fatal"].indexOf(e)===-1)throw new Error(`Unsupported logging level: ${e}`);ap=e}},get logLevel(){return ap}},Object.defineProperty(fs,"logLevel",{enumerable:!0})}),jr,ck=Je(()=>{cf(),jr=fs}),df,pf,dk=Je(()=>{df=(e,t)=>{let r=typeof document<"u"?document.createElement("canvas"):new OffscreenCanvas(1,1);r.width=e.dims[3],r.height=e.dims[2];let n=r.getContext("2d");if(n!=null){let s,a;t?.tensorLayout!==void 0&&t.tensorLayout==="NHWC"?(s=e.dims[2],a=e.dims[3]):(s=e.dims[3],a=e.dims[2]);let i=t?.format!==void 0?t.format:"RGB",o=t?.norm,l,u;o===void 0||o.mean===void 0?l=[255,255,255,255]:typeof o.mean=="number"?l=[o.mean,o.mean,o.mean,o.mean]:(l=[o.mean[0],o.mean[1],o.mean[2],0],o.mean[3]!==void 0&&(l[3]=o.mean[3])),o===void 0||o.bias===void 0?u=[0,0,0,0]:typeof o.bias=="number"?u=[o.bias,o.bias,o.bias,o.bias]:(u=[o.bias[0],o.bias[1],o.bias[2],0],o.bias[3]!==void 0&&(u[3]=o.bias[3]));let p=a*s,d=0,c=p,g=p*2,A=-1;i==="RGBA"?(d=0,c=p,g=p*2,A=p*3):i==="RGB"?(d=0,c=p,g=p*2):i==="RBG"&&(d=0,g=p,c=p*2);for(let m=0;m<a;m++)for(let B=0;B<s;B++){let f=(e.data[d++]-u[0])*l[0],h=(e.data[c++]-u[1])*l[1],P=(e.data[g++]-u[2])*l[2],_=A===-1?255:(e.data[A++]-u[3])*l[3];n.fillStyle="rgba("+f+","+h+","+P+","+_+")",n.fillRect(B,m,1,1)}if("toDataURL"in r)return r.toDataURL();throw new Error("toDataURL is not supported")}else throw new Error("Can not access image data")},pf=(e,t)=>{let r=typeof document<"u"?document.createElement("canvas").getContext("2d"):new OffscreenCanvas(1,1).getContext("2d"),n;if(r!=null){let s,a,i;t?.tensorLayout!==void 0&&t.tensorLayout==="NHWC"?(s=e.dims[2],a=e.dims[1],i=e.dims[3]):(s=e.dims[3],a=e.dims[2],i=e.dims[1]);let o=t!==void 0&&t.format!==void 0?t.format:"RGB",l=t?.norm,u,p;l===void 0||l.mean===void 0?u=[255,255,255,255]:typeof l.mean=="number"?u=[l.mean,l.mean,l.mean,l.mean]:(u=[l.mean[0],l.mean[1],l.mean[2],255],l.mean[3]!==void 0&&(u[3]=l.mean[3])),l===void 0||l.bias===void 0?p=[0,0,0,0]:typeof l.bias=="number"?p=[l.bias,l.bias,l.bias,l.bias]:(p=[l.bias[0],l.bias[1],l.bias[2],0],l.bias[3]!==void 0&&(p[3]=l.bias[3]));let d=a*s;if(t!==void 0&&(t.format!==void 0&&i===4&&t.format!=="RGBA"||i===3&&t.format!=="RGB"&&t.format!=="BGR"))throw new Error("Tensor format doesn't match input tensor dims");let c=4,g=0,A=1,m=2,B=3,f=0,h=d,P=d*2,_=-1;o==="RGBA"?(f=0,h=d,P=d*2,_=d*3):o==="RGB"?(f=0,h=d,P=d*2):o==="RBG"&&(f=0,P=d,h=d*2),n=r.createImageData(s,a);for(let w=0;w<a*s;g+=c,A+=c,m+=c,B+=c,w++)n.data[g]=(e.data[f++]-p[0])*u[0],n.data[A]=(e.data[h++]-p[1])*u[1],n.data[m]=(e.data[P++]-p[2])*u[2],n.data[B]=_===-1?255:(e.data[_++]-p[3])*u[3]}else throw new Error("Can not access image data");return n}}),Hu,gf,Af,hf,mf,ff,pk=Je(()=>{op(),Hu=(e,t)=>{if(e===void 0)throw new Error("Image buffer must be defined");if(t.height===void 0||t.width===void 0)throw new Error("Image height and width must be defined");if(t.tensorLayout==="NHWC")throw new Error("NHWC Tensor layout is not supported yet");let{height:r,width:n}=t,s=t.norm??{mean:255,bias:0},a,i;typeof s.mean=="number"?a=[s.mean,s.mean,s.mean,s.mean]:a=[s.mean[0],s.mean[1],s.mean[2],s.mean[3]??255],typeof s.bias=="number"?i=[s.bias,s.bias,s.bias,s.bias]:i=[s.bias[0],s.bias[1],s.bias[2],s.bias[3]??0];let o=t.format!==void 0?t.format:"RGBA",l=t.tensorFormat!==void 0&&t.tensorFormat!==void 0?t.tensorFormat:"RGB",u=r*n,p=l==="RGBA"?new Float32Array(u*4):new Float32Array(u*3),d=4,c=0,g=1,A=2,m=3,B=0,f=u,h=u*2,P=-1;o==="RGB"&&(d=3,c=0,g=1,A=2,m=-1),l==="RGBA"?P=u*3:l==="RBG"?(B=0,h=u,f=u*2):l==="BGR"&&(h=0,f=u,B=u*2);for(let _=0;_<u;_++,c+=d,A+=d,g+=d,m+=d)p[B++]=(e[c]+i[0])/a[0],p[f++]=(e[g]+i[1])/a[1],p[h++]=(e[A]+i[2])/a[2],P!==-1&&m!==-1&&(p[P++]=(e[m]+i[3])/a[3]);return l==="RGBA"?new ts("float32",p,[1,4,r,n]):new ts("float32",p,[1,3,r,n])},gf=async(e,t)=>{let r=typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement,n=typeof ImageData<"u"&&e instanceof ImageData,s=typeof ImageBitmap<"u"&&e instanceof ImageBitmap,a=typeof e=="string",i,o=t??{},l=()=>{if(typeof document<"u")return document.createElement("canvas");if(typeof OffscreenCanvas<"u")return new OffscreenCanvas(1,1);throw new Error("Canvas is not supported")},u=p=>typeof HTMLCanvasElement<"u"&&p instanceof HTMLCanvasElement||p instanceof OffscreenCanvas?p.getContext("2d"):null;if(r){let p=l();p.width=e.width,p.height=e.height;let d=u(p);if(d!=null){let c=e.height,g=e.width;if(t!==void 0&&t.resizedHeight!==void 0&&t.resizedWidth!==void 0&&(c=t.resizedHeight,g=t.resizedWidth),t!==void 0){if(o=t,t.tensorFormat!==void 0)throw new Error("Image input config format must be RGBA for HTMLImageElement");o.tensorFormat="RGBA",o.height=c,o.width=g}else o.tensorFormat="RGBA",o.height=c,o.width=g;d.drawImage(e,0,0),i=d.getImageData(0,0,g,c).data}else throw new Error("Can not access image data")}else if(n){let p,d;if(t!==void 0&&t.resizedWidth!==void 0&&t.resizedHeight!==void 0?(p=t.resizedHeight,d=t.resizedWidth):(p=e.height,d=e.width),t!==void 0&&(o=t),o.format="RGBA",o.height=p,o.width=d,t!==void 0){let c=l();c.width=d,c.height=p;let g=u(c);if(g!=null)g.putImageData(e,0,0),i=g.getImageData(0,0,d,p).data;else throw new Error("Can not access image data")}else i=e.data}else if(s){if(t===void 0)throw new Error("Please provide image config with format for Imagebitmap");let p=l();p.width=e.width,p.height=e.height;let d=u(p);if(d!=null){let c=e.height,g=e.width;return d.drawImage(e,0,0,g,c),i=d.getImageData(0,0,g,c).data,o.height=c,o.width=g,Hu(i,o)}else throw new Error("Can not access image data")}else{if(a)return new Promise((p,d)=>{let c=l(),g=u(c);if(!e||!g)return d();let A=new Image;A.crossOrigin="Anonymous",A.src=e,A.onload=()=>{c.width=A.width,c.height=A.height,g.drawImage(A,0,0,c.width,c.height);let m=g.getImageData(0,0,c.width,c.height);o.height=c.height,o.width=c.width,p(Hu(m.data,o))}});throw new Error("Input data provided is not supported - aborted tensor creation")}if(i!==void 0)return Hu(i,o);throw new Error("Input data provided is not supported - aborted tensor creation")},Af=(e,t)=>{let{width:r,height:n,download:s,dispose:a}=t,i=[1,n,r,4];return new ts({location:"texture",type:"float32",texture:e,dims:i,download:s,dispose:a})},hf=(e,t)=>{let{dataType:r,dims:n,download:s,dispose:a}=t;return new ts({location:"gpu-buffer",type:r??"float32",gpuBuffer:e,dims:n,download:s,dispose:a})},mf=(e,t)=>{let{dataType:r,dims:n,download:s,dispose:a}=t;return new ts({location:"ml-tensor",type:r??"float32",mlTensor:e,dims:n,download:s,dispose:a})},ff=(e,t,r)=>new ts({location:"cpu-pinned",type:e,data:t,dims:r??[t.length]})}),Ti,yl,ip,_f,gk=Je(()=>{Ti=new Map([["float32",Float32Array],["uint8",Uint8Array],["int8",Int8Array],["uint16",Uint16Array],["int16",Int16Array],["int32",Int32Array],["bool",Uint8Array],["float64",Float64Array],["uint32",Uint32Array],["int4",Uint8Array],["uint4",Uint8Array]]),yl=new Map([[Float32Array,"float32"],[Uint8Array,"uint8"],[Int8Array,"int8"],[Uint16Array,"uint16"],[Int16Array,"int16"],[Int32Array,"int32"],[Float64Array,"float64"],[Uint32Array,"uint32"]]),ip=!1,_f=()=>{if(!ip){ip=!0;let e=typeof BigInt64Array<"u"&&BigInt64Array.from,t=typeof BigUint64Array<"u"&&BigUint64Array.from,r=globalThis.Float16Array,n=typeof r<"u"&&r.from;e&&(Ti.set("int64",BigInt64Array),yl.set(BigInt64Array,"int64")),t&&(Ti.set("uint64",BigUint64Array),yl.set(BigUint64Array,"uint64")),n?(Ti.set("float16",r),yl.set(r,"float16")):Ti.set("float16",Uint16Array)}}}),wf,yf,Ak=Je(()=>{op(),wf=e=>{let t=1;for(let r=0;r<e.length;r++){let n=e[r];if(typeof n!="number"||!Number.isSafeInteger(n))throw new TypeError(`dims[${r}] must be an integer, got: ${n}`);if(n<0)throw new RangeError(`dims[${r}] must be a non-negative integer, got: ${n}`);t*=n}return t},yf=(e,t)=>{switch(e.location){case"cpu":return new ts(e.type,e.data,t);case"cpu-pinned":return new ts({location:"cpu-pinned",data:e.data,type:e.type,dims:t});case"texture":return new ts({location:"texture",texture:e.texture,type:e.type,dims:t});case"gpu-buffer":return new ts({location:"gpu-buffer",gpuBuffer:e.gpuBuffer,type:e.type,dims:t});case"ml-tensor":return new ts({location:"ml-tensor",mlTensor:e.mlTensor,type:e.type,dims:t});default:throw new Error(`tensorReshape: tensor location ${e.location} is not supported`)}}}),ts,op=Je(()=>{dk(),pk(),gk(),Ak(),ts=class{constructor(e,t,r){_f();let n,s;if(typeof e=="object"&&"location"in e)switch(this.dataLocation=e.location,n=e.type,s=e.dims,e.location){case"cpu-pinned":{let i=Ti.get(n);if(!i)throw new TypeError(`unsupported type "${n}" to create tensor from pinned buffer`);if(!(e.data instanceof i))throw new TypeError(`buffer should be of type ${i.name}`);this.cpuData=e.data;break}case"texture":{if(n!=="float32")throw new TypeError(`unsupported type "${n}" to create tensor from texture`);this.gpuTextureData=e.texture,this.downloader=e.download,this.disposer=e.dispose;break}case"gpu-buffer":{if(n!=="float32"&&n!=="float16"&&n!=="int32"&&n!=="int64"&&n!=="uint32"&&n!=="uint8"&&n!=="bool"&&n!=="uint4"&&n!=="int4")throw new TypeError(`unsupported type "${n}" to create tensor from gpu buffer`);this.gpuBufferData=e.gpuBuffer,this.downloader=e.download,this.disposer=e.dispose;break}case"ml-tensor":{if(n!=="float32"&&n!=="float16"&&n!=="int32"&&n!=="int64"&&n!=="uint32"&&n!=="uint64"&&n!=="int8"&&n!=="uint8"&&n!=="bool"&&n!=="uint4"&&n!=="int4")throw new TypeError(`unsupported type "${n}" to create tensor from MLTensor`);this.mlTensorData=e.mlTensor,this.downloader=e.download,this.disposer=e.dispose;break}default:throw new Error(`Tensor constructor: unsupported location '${this.dataLocation}'`)}else{let i,o;if(typeof e=="string")if(n=e,o=r,e==="string"){if(!Array.isArray(t))throw new TypeError("A string tensor's data must be a string array.");i=t}else{let l=Ti.get(e);if(l===void 0)throw new TypeError(`Unsupported tensor type: ${e}.`);if(Array.isArray(t)){if(e==="float16"&&l===Uint16Array||e==="uint4"||e==="int4")throw new TypeError(`Creating a ${e} tensor from number array is not supported. Please use ${l.name} as data.`);e==="uint64"||e==="int64"?i=l.from(t,BigInt):i=l.from(t)}else if(t instanceof l)i=t;else if(t instanceof Uint8ClampedArray)if(e==="uint8")i=Uint8Array.from(t);else throw new TypeError("A Uint8ClampedArray tensor's data must be type of uint8");else if(e==="float16"&&t instanceof Uint16Array&&l!==Uint16Array)i=new globalThis.Float16Array(t.buffer,t.byteOffset,t.length);else throw new TypeError(`A ${n} tensor's data must be type of ${l}`)}else if(o=t,Array.isArray(e)){if(e.length===0)throw new TypeError("Tensor type cannot be inferred from an empty array.");let l=typeof e[0];if(l==="string")n="string",i=e;else if(l==="boolean")n="bool",i=Uint8Array.from(e);else throw new TypeError(`Invalid element type of data array: ${l}.`)}else if(e instanceof Uint8ClampedArray)n="uint8",i=Uint8Array.from(e);else{let l=yl.get(e.constructor);if(l===void 0)throw new TypeError(`Unsupported type for tensor data: ${e.constructor}.`);n=l,i=e}if(o===void 0)o=[i.length];else if(!Array.isArray(o))throw new TypeError("A tensor's dims must be a number array");s=o,this.cpuData=i,this.dataLocation="cpu"}let a=wf(s);if(this.cpuData&&a!==this.cpuData.length&&!((n==="uint4"||n==="int4")&&Math.ceil(a/2)===this.cpuData.length))throw new Error(`Tensor's size(${a}) does not match data length(${this.cpuData.length}).`);this.type=n,this.dims=s,this.size=a}static async fromImage(e,t){return gf(e,t)}static fromTexture(e,t){return Af(e,t)}static fromGpuBuffer(e,t){return hf(e,t)}static fromMLTensor(e,t){return mf(e,t)}static fromPinnedBuffer(e,t,r){return ff(e,t,r)}toDataURL(e){return df(this,e)}toImageData(e){return pf(this,e)}get data(){if(this.ensureValid(),!this.cpuData)throw new Error("The data is not on CPU. Use `getData()` to download GPU data to CPU, or use `texture` or `gpuBuffer` property to access the GPU data directly.");return this.cpuData}get location(){return this.dataLocation}get texture(){if(this.ensureValid(),!this.gpuTextureData)throw new Error("The data is not stored as a WebGL texture.");return this.gpuTextureData}get gpuBuffer(){if(this.ensureValid(),!this.gpuBufferData)throw new Error("The data is not stored as a WebGPU buffer.");return this.gpuBufferData}get mlTensor(){if(this.ensureValid(),!this.mlTensorData)throw new Error("The data is not stored as a WebNN MLTensor.");return this.mlTensorData}async getData(e){switch(this.ensureValid(),this.dataLocation){case"cpu":case"cpu-pinned":return this.data;case"texture":case"gpu-buffer":case"ml-tensor":{if(!this.downloader)throw new Error("The current tensor is not created with a specified data downloader.");if(this.isDownloading)throw new Error("The current tensor is being downloaded.");try{this.isDownloading=!0;let t=await this.downloader();return this.downloader=void 0,this.dataLocation="cpu",this.cpuData=t,e&&this.disposer&&(this.disposer(),this.disposer=void 0),t}finally{this.isDownloading=!1}}default:throw new Error(`cannot get data from location: ${this.dataLocation}`)}}dispose(){if(this.isDownloading)throw new Error("The current tensor is being downloaded.");this.disposer&&(this.disposer(),this.disposer=void 0),this.cpuData=void 0,this.gpuTextureData=void 0,this.gpuBufferData=void 0,this.mlTensorData=void 0,this.downloader=void 0,this.isDownloading=void 0,this.dataLocation="none"}ensureValid(){if(this.dataLocation==="none")throw new Error("The tensor is disposed.")}reshape(e){if(this.ensureValid(),this.downloader||this.disposer)throw new Error("Cannot reshape a tensor that owns GPU resource.");return yf(this,e)}}}),ks,bf=Je(()=>{op(),ks=ts}),bl,lp,Os,_s,Pf=Je(()=>{cf(),bl=(e,t)=>{(typeof fs.trace>"u"?!fs.wasm.trace:!fs.trace)||console.timeStamp(`${e}::ORT::${t}`)},lp=(e,t)=>{let r=new Error().stack?.split(/\r\n|\r|\n/g)||[],n=!1;for(let s=0;s<r.length;s++){if(n&&!r[s].includes("TRACE_FUNC")){let a=`FUNC_${e}::${r[s].trim().split(" ")[1]}`;t&&(a+=`::${t}`),bl("CPU",a);return}r[s].includes("TRACE_FUNC")&&(n=!0)}},Os=e=>{(typeof fs.trace>"u"?!fs.wasm.trace:!fs.trace)||lp("BEGIN",e)},_s=e=>{(typeof fs.trace>"u"?!fs.wasm.trace:!fs.trace)||lp("END",e)}}),Mf,hk=Je(()=>{lf(),bf(),Pf(),Mf=class zS{constructor(t){this.handler=t}async run(t,r,n){Os();let s={},a={};if(typeof t!="object"||t===null||t instanceof ks||Array.isArray(t))throw new TypeError("'feeds' must be an object that use input names as keys and OnnxValue as corresponding values.");let i=!0;if(typeof r=="object"){if(r===null)throw new TypeError("Unexpected argument[1]: cannot be null.");if(r instanceof ks)throw new TypeError("'fetches' cannot be a Tensor");if(Array.isArray(r)){if(r.length===0)throw new TypeError("'fetches' cannot be an empty array.");i=!1;for(let u of r){if(typeof u!="string")throw new TypeError("'fetches' must be a string array or an object.");if(this.outputNames.indexOf(u)===-1)throw new RangeError(`'fetches' contains invalid output name: ${u}.`);s[u]=null}if(typeof n=="object"&&n!==null)a=n;else if(typeof n<"u")throw new TypeError("'options' must be an object.")}else{let u=!1,p=Object.getOwnPropertyNames(r);for(let d of this.outputNames)if(p.indexOf(d)!==-1){let c=r[d];(c===null||c instanceof ks)&&(u=!0,i=!1,s[d]=c)}if(u){if(typeof n=="object"&&n!==null)a=n;else if(typeof n<"u")throw new TypeError("'options' must be an object.")}else a=r}}else if(typeof r<"u")throw new TypeError("Unexpected argument[1]: must be 'fetches' or 'options'.");for(let u of this.inputNames)if(typeof t[u]>"u")throw new Error(`input '${u}' is missing in 'feeds'.`);if(i)for(let u of this.outputNames)s[u]=null;let o=await this.handler.run(t,s,a),l={};for(let u in o)if(Object.hasOwnProperty.call(o,u)){let p=o[u];p instanceof ks?l[u]=p:l[u]=new ks(p.type,p.data,p.dims)}return _s(),l}async release(){return this.handler.dispose()}static async create(t,r,n,s){Os();let a,i={};if(typeof t=="string"){if(a=t,typeof r=="object"&&r!==null)i=r;else if(typeof r<"u")throw new TypeError("'options' must be an object.")}else if(t instanceof Uint8Array){if(a=t,typeof r=="object"&&r!==null)i=r;else if(typeof r<"u")throw new TypeError("'options' must be an object.")}else if(t instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&t instanceof SharedArrayBuffer){let p=t,d=0,c=t.byteLength;if(typeof r=="object"&&r!==null)i=r;else if(typeof r=="number"){if(d=r,!Number.isSafeInteger(d))throw new RangeError("'byteOffset' must be an integer.");if(d<0||d>=p.byteLength)throw new RangeError(`'byteOffset' is out of range [0, ${p.byteLength}).`);if(c=t.byteLength-d,typeof n=="number"){if(c=n,!Number.isSafeInteger(c))throw new RangeError("'byteLength' must be an integer.");if(c<=0||d+c>p.byteLength)throw new RangeError(`'byteLength' is out of range (0, ${p.byteLength-d}].`);if(typeof s=="object"&&s!==null)i=s;else if(typeof s<"u")throw new TypeError("'options' must be an object.")}else if(typeof n<"u")throw new TypeError("'byteLength' must be a number.")}else if(typeof r<"u")throw new TypeError("'options' must be an object.");a=new Uint8Array(p,d,c)}else throw new TypeError("Unexpected argument[0]: must be 'path' or 'buffer'.");let[o,l]=await of(i),u=await o.createInferenceSessionHandler(a,l);return _s(),new zS(u)}startProfiling(){this.handler.startProfiling()}endProfiling(){this.handler.endProfiling()}get inputNames(){return this.handler.inputNames}
1get outputNames(){return this.handler.outputNames}get inputMetadata(){return this.handler.inputMetadata}get outputMetadata(){return this.handler.outputMetadata}}}),up,mk=Je(()=>{hk(),up=Mf}),fk=Je(()=>{}),_k=Je(()=>{}),wk=Je(()=>{}),yk=Je(()=>{}),vf={};vo(vf,{InferenceSession:()=>up,TRACE:()=>bl,TRACE_FUNC_BEGIN:()=>Os,TRACE_FUNC_END:()=>_s,Tensor:()=>ks,env:()=>jr,registerBackend:()=>Ii});var Gs=Je(()=>{lk(),ck(),mk(),bf(),fk(),_k(),Pf(),wk(),yk()}),cp=Je(()=>{}),Bf={};vo(Bf,{default:()=>xf});var dp,pp,xf,bk=Je(()=>{aM(),Ci(),yp(),dp="ort-wasm-proxy-worker",pp=globalThis.self?.name===dp,pp&&(self.onmessage=e=>{let{type:t,in:r}=e.data;try{switch(t){case"init-wasm":Mp(r.wasm).then(()=>{Gg(r).then(()=>{postMessage({type:t})},n=>{postMessage({type:t,err:n})})},n=>{postMessage({type:t,err:n})});break;case"init-ep":{let{epName:n,env:s}=r;zg(s,n).then(()=>{postMessage({type:t})},a=>{postMessage({type:t,err:a})});break}case"copy-from":{let{buffer:n}=r,s=gc(n);postMessage({type:t,out:s});break}case"create":{let{model:n,options:s}=r;Lg(n,s).then(a=>{postMessage({type:t,out:a})},a=>{postMessage({type:t,err:a})});break}case"release":Rg(r),postMessage({type:t});break;case"run":{let{sessionId:n,inputIndices:s,inputs:a,outputIndices:i,options:o}=r;Ng(n,s,a,i,new Array(i.length).fill(null),o).then(l=>{l.some(u=>u[3]!=="cpu")?postMessage({type:t,err:"Proxy does not support non-cpu tensor location."}):postMessage({type:t,out:l},Ug([...a,...l]))},l=>{postMessage({type:t,err:l})});break}case"end-profiling":jg(r),postMessage({type:t});break;default:}}catch(n){postMessage({type:t,err:n})}}),xf=pp?null:e=>new Worker(e??rs,{type:"module",name:dp})}),Ef={};vo(Ef,{default:()=>Df});var gp,Ap,Df,If,Pk=Je(()=>{Ap=(gp=self.location.href,async function(e={}){var t,r,n=e,s=new Promise((x,C)=>{t=x,r=C}),a=typeof window=="object",i=typeof WorkerGlobalScope<"u",o=i&&self.name?.startsWith("em-pthread");n.mountExternalData=(x,C)=>{x.startsWith("./")&&(x=x.substring(2)),(n.Eb||(n.Eb=new Map)).set(x,C)},n.unmountExternalData=()=>{delete n.Eb};var l=globalThis.SharedArrayBuffer??new WebAssembly.Memory({initial:0,maximum:0,pc:!0}).buffer.constructor;let u=x=>async(...C)=>{try{if(n.Fb)throw Error("Session already started");let Y=n.Fb={dc:C[0],errors:[]},K=await x(...C);if(n.Fb!==Y)throw Error("Session mismatch");n.Jb?.flush();let ee=Y.errors;if(0<ee.length){let he=await Promise.all(ee);if(he=he.filter(Le=>Le),0<he.length)throw Error(he.join(` 2`))}return K}finally{n.Fb=null}};n.jsepInit=(x,C)=>{if(x==="webgpu"){[n.Jb,n.Ub,n.Yb,n.Kb,n.Xb,n.jb,n.Zb,n.ac,n.Vb,n.Wb,n.$b]=C;let Y=n.Jb;n.jsepRegisterBuffer=(K,ee,he,Le)=>Y.registerBuffer(K,ee,he,Le),n.jsepGetBuffer=K=>Y.getBuffer(K),n.jsepCreateDownloader=(K,ee,he)=>Y.createDownloader(K,ee,he),n.jsepOnCreateSession=K=>{Y.onCreateSession(K)},n.jsepOnReleaseSession=K=>{Y.onReleaseSession(K)},n.jsepOnRunStart=K=>Y.onRunStart(K),n.bc=(K,ee)=>{Y.upload(K,ee)}}else if(x==="webnn"){let Y=C[0];[n.nc,n.Nb,n.webnnEnsureTensor,n.Ob,n.webnnDownloadTensor]=C.slice(1),n.webnnReleaseTensorId=n.Nb,n.webnnUploadTensor=n.Ob,n.webnnOnRunStart=K=>Y.onRunStart(K),n.webnnOnRunEnd=Y.onRunEnd.bind(Y),n.webnnRegisterMLContext=(K,ee)=>{Y.registerMLContext(K,ee)},n.webnnOnReleaseSession=K=>{Y.onReleaseSession(K)},n.webnnCreateMLTensorDownloader=(K,ee)=>Y.createMLTensorDownloader(K,ee),n.webnnRegisterMLTensor=(K,ee,he,Le)=>Y.registerMLTensor(K,ee,he,Le),n.webnnCreateMLContext=K=>Y.createMLContext(K),n.webnnRegisterMLConstant=(K,ee,he,Le,Qe,ot)=>Y.registerMLConstant(K,ee,he,Le,Qe,n.Eb,ot),n.webnnRegisterGraphInput=Y.registerGraphInput.bind(Y),n.webnnIsGraphInput=Y.isGraphInput.bind(Y),n.webnnCreateTemporaryTensor=Y.createTemporaryTensor.bind(Y),n.webnnIsInt64Supported=Y.isInt64Supported.bind(Y)}};let p=()=>{let x=(C,Y,K)=>(...ee)=>{let he=Br,Le=Y?.();ee=C(...ee);let Qe=Y?.();return Le!==Qe&&(C=Qe,K(Le),Y=K=null),Br!=he?new Promise((ot,wt)=>{Wr={resolve:ot,reject:wt}}):ee};(()=>{for(let C of["_OrtAppendExecutionProvider","_OrtCreateSession","_OrtRun","_OrtRunWithBinding","_OrtBindInput"])n[C]=x(n[C],()=>n[C],Y=>n[C]=Y)})(),u!==void 0&&(n._OrtRun=u(n._OrtRun),n._OrtRunWithBinding=u(n._OrtRunWithBinding)),p=void 0};n.asyncInit=()=>{p?.()};var d,c,g=Object.assign({},n),A=(x,C)=>{throw C},m="";(a||i)&&(i?m=self.location.href:typeof document<"u"&&document.currentScript&&(m=document.currentScript.src),gp&&(m=gp),m=m.startsWith("blob:")?"":m.slice(0,m.replace(/[?#].*/,"").lastIndexOf("/")+1),i&&(c=x=>{var C=new XMLHttpRequest;return C.open("GET",x,!1),C.responseType="arraybuffer",C.send(null),new Uint8Array(C.response)}),d=async x=>{if(ce(x))return new Promise((Y,K)=>{var ee=new XMLHttpRequest;ee.open("GET",x,!0),ee.responseType="arraybuffer",ee.onload=()=>
2{ee.status==200||ee.status==0&&ee.response?Y(ee.response):K(ee.status)},ee.onerror=K,ee.send(null)});var C=await fetch(x,{credentials:"same-origin"});if(C.ok)return C.arrayBuffer();throw Error(C.status+" : "+C.url)});var B=console.log.bind(console),f=console.error.bind(console),h=B,P=f;Object.assign(n,g),g=null;var _,w,b,v,y,$,k,W,j,F,R,L,Q,ne=n.wasmBinary,re=!1,ce=x=>x.startsWith("file://");function ge(){return _.buffer!=v.buffer&&Me(),v}function q(){return _.buffer!=v.buffer&&Me(),y}function V(){return _.buffer!=v.buffer&&Me(),$}function U(){return _.buffer!=v.buffer&&Me(),k}function N(){return _.buffer!=v.buffer&&Me(),W}function oe(){return _.buffer!=v.buffer&&Me(),j}function fe(){return _.buffer!=v.buffer&&Me(),F}function De(){return _.buffer!=v.buffer&&Me(),Q}if(o){let x=function(C){try{var Y=C.data,K=Y.Bb;if(K==="load"){let ee=[];self.onmessage=he=>ee.push(he),self.startWorker=()=>{postMessage({Bb:"loaded"});for(let he of ee)x(he);self.onmessage=x};for(let he of Y.Rb)n[he]&&!n[he].proxy||(n[he]=(...Le)=>{postMessage({Bb:"callHandler",Qb:he,args:Le})},he=="print"&&(h=n[he]),he=="printErr"&&(P=n[he]));_=Y.kc,Me(),Ie(Y.lc)}else if(K==="run"){ma(Y.Ab),la(Y.Ab,0,0,1,0,0),hn(),de(Y.Ab),je||(oa(),je=!0);try{fa(Y.fc,Y.Hb)}catch(ee){if(ee!="unwind")throw ee}}else Y.target!=="setimmediate"&&(K==="checkMailbox"?je&&pe():K&&(P(`worker: received unknown command ${K}`),P(Y)))}catch(ee){throw yi(),ee}};var Ie,je=!1;P=function(...C){C=C.join(" "),console.error(C)},self.alert=function(...C){postMessage({Bb:"alert",text:C.join(" "),ic:va()})},self.onunhandledrejection=C=>{throw C.reason||C},self.onmessage=x}function Me(){var x=_.buffer;n.HEAP8=v=new Int8Array(x),n.HEAP16=$=new Int16Array(x),n.HEAPU8=y=new Uint8Array(x),n.HEAPU16=k=new Uint16Array(x),n.HEAP32=W=new Int32Array(x),n.HEAPU32=j=new Uint32Array(x),n.HEAPF32=F=new Float32Array(x),n.HEAPF64=Q=new Float64Array(x),n.HEAP64=R=new BigInt64Array(x),n.HEAPU64=L=new BigUint64Array(x)}function se(){o?startWorker(n):vt.Ca()}o||(_=new WebAssembly.Memory({initial:256,maximum:65536,shared:!0}),Me());var H,we=0,be=null;function Ce(){if(--we==0&&be){var x=be;be=null,x()}}function Se(x){throw P(x="Aborted("+x+")"),re=!0,x=new WebAssembly.RuntimeError(x+". Build with -sASSERTIONS for more info."),r(x),x}function ze(){return{a:{L:Be,Aa:Ve,b:Ur,$:Nn,A:us,pa:cs,X:ds,Z:S,qa:ie,n
vendor: 10,045 bytes, line 2
2a:X,ga:ae,ma:le,J:_e,Y:Oe,V:gt,oa:Et,W:at,va:St,E:vs,Q:ps,O:ea,D:xs,u:Es,r:_n,P:wn,z:ii,R:ye,ja:O,T:xe,aa:ct,M:ut,F:pt,ia:de,sa:st,t:Or,Ba:un,w:gs,o:es,l:rn,c:qr,n:zn,j:Yo,v:No,p:io,f:jo,s:ya,m:Uo,e:Wo,k:Vo,i:Qo,g:Ho,d:ba,da:oo,ea:Ko,fa:ui,ba:ci,ca:na,N:di,xa:qo,ua:po,h:go,C:gi,G:Xo,ta:co,x:Zo,ra:Jo,U:el,q:uo,y:Ts,K:Ga,S:Ai,za:tl,ya:Pa,ka:hs,la:mi,_:We,B:Ao,I:fi,ha:rl,H:_i,a:_,wa:At}}}var ve={829644:(x,C,Y,K,ee)=>{if(n===void 0||!n.Eb)return 1;if((x=Er(Number(x>>>0))).startsWith("./")&&(x=x.substring(2)),!(x=n.Eb.get(x)))return 2;if(C=Number(C>>>0),Y=Number(Y>>>0),K=Number(K>>>0),C+Y>x.byteLength)return 3;try{let he=x.subarray(C,C+Y);switch(ee){case 0:q().set(he,K>>>0);break;case 1:n.mc?n.mc(K,he):n.bc(K,he);break;default:return 4}return 0}catch{return 4}},830468:(x,C,Y)=>{n.Ob(x,q().subarray(C>>>0,C+Y>>>0))},830532:()=>n.nc(),830574:x=>{n.Nb(x)},830611:()=>{n.Vb()},830642:()=>{n.Wb()},830671:()=>{n.$b()},830696:x=>n.Ub(x),830729:x=>n.Yb(x),830761:(x,C,Y)=>{n.Kb(Number(x),Number(C),Number(Y),!0)},830824:(x,C,Y)=>{n.Kb(Number(x),Number(C),Number(Y))},830881:()=>typeof wasmOffsetConverter<"u",830938:x=>{n.jb("Abs",x,void 0)},830989:x=>{n.jb("Neg",x,void 0)},831040:x=>{n.jb("Floor",x,void 0)},831093:x=>{n.jb("Ceil",x,void 0)},831145:x=>{n.jb("Reciprocal",x,void 0)},831203:x=>{n.jb("Sqrt",x,void 0)},831255:x=>{n.jb("Exp",x,void 0)},831306:x=>{n.jb("Erf",x,void 0)},831357:x=>{n.jb("Sigmoid",x,void 0)},831412:(x,C,Y)=>{n.jb("HardSigmoid",x,{alpha:C,beta:Y})},831491:x=>{n.jb("Log",x,void 0)},831542:x=>{n.jb("Sin",x,void 0)},831593:x=>{n.jb("Cos",x,void 0)},831644:x=>{n.jb("Tan",x,void 0)},831695:x=>{n.jb("Asin",x,void 0)},831747:x=>{n.jb("Acos",x,void 0)},831799:x=>{n.jb("Atan",x,void 0)},831851:x=>{n.jb("Sinh",x,void 0)},831903:x=>{n.jb("Cosh",x,void 0)},831955:x=>{n.jb("Asinh",x,void 0)},832008:x=>{n.jb("Acosh",x,void 0)},832061:x=>{n.jb("Atanh",x,void 0)},832114:x=>{n.jb("Tanh",x,void 0)},832166:x=>{n.jb("Not",x,void 0)},832217:(x,C,Y)=>{n.jb("Clip",x,{min:C,max:Y})},832286:x=>{n.jb("Clip",x,void 0)},832338:(x,C)=>{n.jb("Elu",x,{alpha:C})},832396:x=>{n.jb("Gelu",x,void 0)},832448:x=>{n.jb("Relu",x,void 0)},832500:(x,C)=>{n.jb("LeakyRelu",x,{alpha:C})},832564:(x,C)=>{n.jb("ThresholdedRelu",x,{alpha:C})},832634:(x,C)=>{n.jb("Cast",x,{to:C})},832692:x=>{n.jb("Add",x,void 0)},832743:x=>{n.jb("Sub",x,void 0)},832794:x=>{n.jb("Mul",x,void 0)},832845:x=>{n.jb("Div",x,void 0)},832896:x=>{n.jb("Pow",x,void 0)},832947:x=>{n.jb("Equal",x,void 0)},833e3:x=>{n.jb("Greater",x,void 0)},833055:x=>{n.jb("GreaterOrEqual",x,void 0)},833117:x=>{n.jb("Less",x,void 0)},833169:x=>{n.jb("LessOrEqual",x,void 0)},833228:(x,C,Y,K,ee)=>{n.jb("ReduceMean",x,{keepDims:!!C,noopWithEmptyAxes:!!Y,axes:K?Array.from(N().subarray(Number(K)>>>0,Number(ee)>>>0)):[]})},833403:(x,C,Y,K,ee)=>{n.jb("ReduceMax",x,{keepDims:!!C,noopWithEmptyAxes:!!Y,axes:K?Array.from(N().subarray(Number(K)>>>0,Number(ee)>>>0)):[]})},833577:(x,C,Y,K,ee)=>{n.jb("ReduceMin",x,{keepDims:!!C,noopWithEmptyAxes:!!Y,axes:K?Array.from(N().subarray(Number(K)>>>0,Number(ee)>>>0)):[]})},833751:(x,C,Y,K,ee)=>{n.jb("ReduceProd",x,{keepDims:!!C,noopWithEmptyAxes:!!Y,axes:K?Array.from(N().subarray(Number(K)>>>0,Number(ee)>>>0)):[]})},833926:(x,C,Y,K,ee)=>{n.jb("ReduceSum",x,{keepDims:!!C,noopWithEmptyAxes:!!Y,axes:K?Array.from(N().subarray(Number(K)>>>0,Number(ee)>>>0)):[]})},834100:(x,C,Y,K,ee)=>{n.jb("ReduceL1",x,{keepDims:!!C,noopWithEmptyAxes:!!Y,axes:K?Array.from(N().subarray(Number(K)>>>0,Number(ee)>>>0)):[]})},834273:(x,C,Y,K,ee)=>{n.jb("ReduceL2",x,{keepDims:!!C,noopWithEmptyAxes:!!Y,axes:K?Array.from(N().subarray(Number(K)>>>0,Number(ee)>>>0)):[]})},834446:(x,C,Y,K,ee)=>{n.jb("ReduceLogSum",x,{keepDims:!!C,noopWithEmptyAxes:!!Y,axes:K?Array.from(N().subarray(Number(K)>>>0,Number(ee)>>>0)):[]})},834623:(x,C,Y,K,ee)=>{n.jb("ReduceSumSquare",x,{keepDims:!!C,noopWithEmptyAxes:!!Y,axes:K?Array.from(N().subarray(Number(K)>>>0,Number(ee)>>>0)):[]})},834803:(x,C,Y,K,ee)=>{n.jb("ReduceLogSumExp",x,{keepDims:!!C,noopWithEmptyAxes:!!Y,axes:K?Array.from(N().subarray(Number(K)>>>0,Number(ee)>>>0)):[]})},834983:x=>{n.jb("Where",x,void 0)},835036:(x,C,Y)=>{n.jb("Transpose",x,{perm:C?Array.from(N().subarray(Number(C)>>>0,Number(Y)>>>0)):[]})},835160:(x,C,Y,K)=>{n.jb("DepthToSpace",x,{blocksize:C,mode:Er(Y),format:K?"NHWC":"NCHW"})},835293:(x,C,Y,K)=>{n.jb("DepthToSpace",x,{blocksize:C,mode:Er(Y),format:K?"NHWC":"NCHW"})},835426:(x,C,Y,K,ee,he,Le,Qe,ot,wt,Lt,sr,mr,nn,$s)=>{n.jb("ConvTranspose",x,{format:ot?"NHWC":"NCHW",autoPad:C,dilations:[Y],group:K,kernelShape:[ee],pads:[he,Le],strides:[Qe],wIsConst:()=>!!ge()[wt>>>0],outputPadding:Lt?Array.from(N().subarray(Number(Lt)>>>0,Number(sr)>>>0)):[],outputShape:mr?Array.from(N().subarray(Number(mr)>>>0,Number(nn)>>>0)):[],activation:Er($s)})},835859:(x,C,Y,K,ee,he,Le,Qe,ot,wt,Lt,sr,mr,nn)=>{n.jb("ConvTranspose",x,{format:Qe?"NHWC":"NCHW",autoPad:C,dilations:Array.from(N().subarray(Number(Y)>>>0,2+(Number(Y)>>>0)>>>0)),group:K,kernelShape:Array.from(N().subarray(Number(ee)>>>0,2+(Number(ee)>>>0)>>>0)),pads:Array.from(N().subarray(Number(he)>>>0,4+(Number(he)>>>0)>>>0)),strides:Array.from(N().subarray(Number(Le)>>>0,2+(Number(Le)>>>0)>>>0)),wIsConst:()=>!!ge()[ot>>>0],outputPadding:wt?Array.from(N().subarray(Number(wt)>>>0,Number(Lt)>>>0)):[],outputShape:sr?Array.from(N().subarray(Number(sr)>>>0,Number(mr)>>>0)):[],activation:Er(nn)})},836520:(x,C,Y,K,ee,he,Le,Qe,ot,wt,Lt,sr,mr,nn,$s)=>{n.jb("ConvTranspose",x,{format:ot?"NHWC":"NCHW",autoPad:C,dilations:[Y],group:K,kernelShape:[ee],pads:[he,Le],strides:[Qe],wIsConst:()=>!!ge()[wt>>>0],outputPadding:Lt?Array.from(N().subarray(Number(Lt)>>>0,Number(sr)>>>0)):[],outputShape:mr?Array.from(N().subarray(Number(mr)>>>0,Number(nn)>>>0)):[],activation:Er($s)})},836953:(x,C,Y,K,ee,he,Le,Qe,ot,wt,Lt,sr,mr,nn)=>{n.jb("ConvTranspose",x,{format:Qe?"NHWC":"NCHW",autoPad:C,dilations:Array.from(N().subarray(Number(Y)>>>0,2+(Number(Y)>>>0)>>>0)),group:K,kernelShape:Array.from(N().subarray(Number(ee)>>>0,2+(Number(ee)>>>0)>>>0)),pads:Array.from(N().subarray(Number(he)>>>0,4+(Number(he)>>>0)>>>0)),strides:Array.from(N().subarray(Number(Le)>>>0,2+(Number(Le)>>>0)>>>0)),wIsConst:()=>!!ge()[ot>>>0],outputPadding:wt?Array.from(N().subarray(Number(wt)>>>0,Number(Lt)>>>0)):[],outputShape:sr?Array.from(N().subarray(Number(sr)>>>0,Number(mr)>>>0)):[],activation:Er(nn)})},837614:(x,C)=>{n.jb("GlobalAveragePool",x,{format:C?"NHWC":"NCHW"})},837705:(x,C,Y,K,ee,he,Le,Qe,ot,wt,Lt,sr,mr,nn)=>{n.jb("AveragePool",x,{format:nn?"NHWC":"NCHW",auto_pad:C,ceil_mode:Y,count_include_pad:K,storage_order:ee,dilations:he?Array.from(N().subarray(Number(he)>>>0,Number(Le)>>>0)):[],kernel_shape:Qe?Array.from(N().subarray(Number(Qe)>>>0,Number(ot)>>>0)):[],pads:wt?Array.from(N().subarray(Number(wt)>>>0,Number(Lt)>>>0)):[],strides:sr?Array.from(N().subarray(Number(sr)>>>0,Number(mr)>>>0)):[]})},838184:(x,C)=>{n.jb("GlobalAveragePool",x,{format:C?"NHWC":"NCHW"})},838275:(x,C,Y,K,ee,he,Le,Qe,ot,wt,Lt,sr,mr,nn)=>{n.jb("AveragePool",x,{format:nn?"NHWC":"NCHW",auto_pad:C,ceil_mode:Y,count_include_pad:K,storage_order:ee,dilations:he?Array.from(N().subarray(Number(he)>>>0,Number(Le)>>>0)):[],kernel_shape:Qe?Array.from(N().subarray(Number(Qe)>>>0,Number(ot)>>>0)):[],pads:wt?Array.from(N().subarray(Number(wt)>>>0,Number(Lt)>>>0)):[],strides:sr?Array.from(N().subarray(Number(sr)>>>0,Number(mr)>>>0)):[]})},838754:(x,C)=>{n.jb("GlobalMaxPool",x,{format:C?"NHWC":"NCHW"})},838841:(x,C,Y,K,ee,he,Le,Qe,ot,wt,Lt,sr,mr,nn)=>{n.jb("MaxPool",x,{format:nn?"NHWC":"NCHW",auto_pad:C,ceil_mode:Y,count_include_pad:K,storage_order:ee,dilations:he?Array.from(N().subarray(Number(he)>>>0,Number(Le)>>>0)):[],kernel_shape:Qe?Array.from(N().subarray(Number(Qe)>>>0,Number(ot)>>>0)):[],pads:wt?Array.from(N().subarray(Number(wt)>>>0,Number(Lt)>>>0)):[],strides:sr?Array.from(N().subarray(Number(sr)>>>0,Number(mr)>>>0)):[]})},839316:(x,C)=>{n.jb("GlobalMaxPool",x,{format:C?"NHWC":"NCHW"})},839403:(x,C,Y,K,ee,he,Le,Qe,ot,wt,Lt,sr,mr,nn)=>{n.jb("MaxPool",x,{format:nn?"NHWC":"NCHW",auto_pad:C,ceil_mode:Y,count_include_pad:K,storage_order:ee,dilations:he?Array.from(N().subarray(Number(he)>>>0,Number(Le)>>>0)):[],kernel_shape:Qe?Array.from(N().subarray(Number(Qe)>>>0,Number(ot)>>>0)):[],pads:wt?Array.from(N().subarray(Number(wt)>>>0,Number(Lt)>>>0)):[],strides:sr?Array.from(N().subarray(Number(sr)>>>0,Number(mr)>>>0)):[]})},839878:(x,C,Y,K,ee)=>{n.jb("Gemm",x,{alpha:C,beta:Y,transA:K,transB:ee})},839982:x=>{n.jb("MatMul",x,void 0)},840036:(x,C,Y,K)=>{n.jb("ArgMax",x,{keepDims:!!C,selectLastIndex:!!Y,axis:K})},840144:(x,C,Y,K)=>{n.jb("ArgMin",x,{keepDims:!!C,selectLastIndex:!!Y,axis:K})},840252:(x,C)=>{n.jb("Softmax",x,{axis:C})},840315:(x,C)=>{n.jb("Concat",x,{axis:C})},840375:(x,C,Y,K,ee)=>{n.jb("Split",x,{axis:C,numOutputs:Y,splitSizes:K?Array.from(N().subarray(Number(K)>>>0,Number(ee)>>>0)):[]})},840531:x=>{n.jb("Expand",x,void 0)},840585:(x,C)=>{n.jb("Gather",x,{axis:Number(C)})},840656:(x,C)=>{n.jb("GatherElements",x,{axis:Number(C)})},840735:(x,C)=>{n.jb("GatherND",x,{batch_dims:Number(C)})},840814:(x,C,Y,K,ee,he,Le,Qe,ot,wt,Lt)=>{n.jb("Resize",x,{antialias:C,axes:Y?Array.from(N().subarray(Number(Y)>>>0,Number(K)>>>0)):[],coordinateTransformMode:Er(ee),cubicCoeffA:he,excludeOutside:Le,extrapolationValue:Qe,keepAspectRatioPolicy:Er(ot),mode:Er(wt),nearestMode:Er(Lt)})},841176:(x,C,Y,K,ee,he,Le)=>{n.jb("Slice",x,{starts:C?Array.from(N().subarray(Number(C)>>>0,Number(Y)>>>0)):[],ends:K?Array.from(N().subarray(Number(K)>>>0,Number(ee)>>>0)):[],axes:he?Array.from(N().subarray(Number(he)>>>0,Number(Le)>>>0)):[]})},841440:x=>{n.jb("Tile",x,void 0)},841492:(x,C,Y)=>{n.jb("InstanceNormalization",x,{epsilon:C,format:Y?"NHWC":"NCHW"})},841606:(x,C,Y)=>{n.jb("InstanceNormalization",x,{epsilon:C,format:Y?"NHWC":"NCHW"})},841720:x=>{n.jb("Range",x,void 0)},841773:(x,C)=>{n.jb("Einsum",x,{equation:Er(C)})},841854:(x,C,Y,K,ee)=>{n.jb("Pad",x,{mode:C,value:Y,pads:K?Array.from(N().subarray(Number(K)>>>0,Number(ee)>>>0)):[]})},841997:(x,C,Y,K,ee,he)=>
2{n.jb("BatchNormalization",x,{epsilon:C,momentum:Y,spatial:!!ee,trainingMode:!!K,format:he?"NHWC":"NCHW"})},842166:(x,C,Y,K,ee,he)=>{n.jb("BatchNormalization",x,{epsilon:C,momentum:Y,spatial:!!ee,trainingMode:!!K,format:he?"NHWC":"NCHW"})},842335:(x,C,Y)=>{n.jb("CumSum",x,{exclusive:Number(C),reverse:Number(Y)})},842432:(x,C,Y)=>{n.jb("DequantizeLinear",x,{axis:C,blockSize:Y})},842522:(x,C,Y,K,ee)=>{n.jb("GridSample",x,{align_corners:C,mode:Er(Y),padding_mode:Er(K),format:ee?"NHWC":"NCHW"})},842692:(x,C,Y,K,ee)=>{n.jb("GridSample",x,{align_corners:C,mode:Er(Y),padding_mode:Er(K),format:ee?"NHWC":"NCHW"})},842862:(x,C)=>{n.jb("ScatterND",x,{reduction:Er(C)})},842947:(x,C,Y,K,ee,he,Le,Qe,ot)=>{n.jb("Attention",x,{numHeads:C,isUnidirectional:Y,maskFilterValue:K,scale:ee,doRotary:he,qkvHiddenSizes:Le?Array.from(N().subarray(Number(Qe)>>>0,Number(Qe)+Le>>>0)):[],pastPresentShareBuffer:!!ot})},843219:x=>{n.jb("BiasAdd",x,void 0)},843274:x=>{n.jb("BiasSplitGelu",x,void 0)},843335:x=>{n.jb("FastGelu",x,void 0)},843391:(x,C,Y,K,ee,he,Le,Qe,ot,wt,Lt,sr,mr,nn,$s,mo)=>{n.jb("Conv",x,{format:sr?"NHWC":"NCHW",auto_pad:C,dilations:Y?Array.from(N().subarray(Number(Y)>>>0,Number(K)>>>0)):[],group:ee,kernel_shape:he?Array.from(N().subarray(Number(he)>>>0,Number(Le)>>>0)):[],pads:Qe?Array.from(N().subarray(Number(Qe)>>>0,Number(ot)>>>0)):[],strides:wt?Array.from(N().subarray(Number(wt)>>>0,Number(Lt)>>>0)):[],w_is_const:()=>!!ge()[Number(mr)>>>0],activation:Er(nn),activation_params:$s?Array.from(fe().subarray(Number($s)>>>0,Number(mo)>>>0)):[]})},843975:x=>{n.jb("Gelu",x,void 0)},844027:(x,C,Y,K,ee,he,Le,Qe,ot)=>{n.jb("GroupQueryAttention",x,{numHeads:C,kvNumHeads:Y,scale:K,softcap:ee,doRotary:he,rotaryInterleaved:Le,smoothSoftmax:Qe,localWindowSize:ot})},844244:(x,C,Y,K)=>{n.jb("LayerNormalization",x,{axis:C,epsilon:Y,simplified:!!K})},844355:(x,C,Y,K)=>{n.jb("LayerNormalization",x,{axis:C,epsilon:Y,simplified:!!K})},844466:(x,C,Y,K,ee,he)=>{n.jb("MatMulNBits",x,{k:C,n:Y,accuracyLevel:K,bits:ee,blockSize:he})},844593:(x,C,Y,K,ee,he)=>{n.jb("MultiHeadAttention",x,{numHeads:C,isUnidirectional:Y,maskFilterValue:K,scale:ee,doRotary:he})},844752:(x,C)=>{n.jb("QuickGelu",x,{alpha:C})},844816:(x,C,Y,K,ee)=>{n.jb("RotaryEmbedding",x,{interleaved:!!C,numHeads:Y,rotaryEmbeddingDim:K,scale:ee})},844955:(x,C,Y)=>{n.jb("SkipLayerNormalization",x,{epsilon:C,simplified:!!Y})},845057:(x,C,Y)=>{n.jb("SkipLayerNormalization",x,{epsilon:C,simplified:!!Y})},845159:(x,C,Y,K)=>{n.jb("GatherBlockQuantized",x,{gatherAxis:C,quantizeAxis:Y,blockSize:K})},845280:x=>{n.Zb(x)},845314:(x,C)=>n.ac(Number(x),Number(C),n.Fb.dc,n.Fb.errors)};function Ve(x,C,Y){return Wn(async()=>{await n.Xb(Number(x),Number(C),Number(Y))})}function Be(){return typeof wasmOffsetConverter<"u"}class ke{name="ExitStatus";constructor(C){this.message=`Program terminated with exit(${C})`,this.status=C}}var rt=x=>{x.terminate(),x.onmessage=()=>{}},Ue=[],ht=x=>{yt.length==0&&(On(),ar(yt[0]));var C=yt.pop();if(!C)return 6;Mt.push(C),Vt[x.Ab]=C,C.Ab=x.Ab;var Y={Bb:"run",fc:x.ec,Hb:x.Hb,Ab:x.Ab};return C.postMessage(Y,x.Mb),0},He=0,dt=(x,C,...Y)=>{for(var K=2*Y.length,ee=Ea(),he=xa(8*K),Le=he>>>3,Qe=0;Qe<Y.length;Qe++){var ot=Y[Qe];typeof ot=="bigint"?(R[Le+2*Qe]=1n,R[Le+2*Qe+1]=ot):(R[Le+2*Qe]=0n,De()[Le+2*Qe+1>>>0]=ot)}return x=bi(x,0,K,he,C),Wt(ee),x};function At(x){if(o)return dt(0,1,x);if(b=x,!(0<He)){for(var C of Mt)rt(C);for(C of yt)rt(C);yt=[],Mt=[],Vt={},re=!0}A(0,new ke(x))}function Xe(x){if(o)return dt(1,0,x);We(x)}var We=x=>{if(b=x,o)throw Xe(x),"unwind";At(x)},yt=[],Mt=[],hr=[],Vt={},tn=x=>{var C=x.Ab;delete Vt[C],yt.push(x),Mt.splice(Mt.indexOf(x),1),x.Ab=0,Zt(C)};function hn(){hr.forEach(x=>x())}var ar=x=>new Promise(C=>{x.onmessage=ee=>{var he=(ee=ee.data).Bb;if(ee.Gb&&ee.Gb!=va()){var Le=Vt[ee.Gb];Le?Le.postMessage(ee,ee.Mb):P(`Internal error! Worker sent a message "${he}" to target pthread ${ee.Gb}, but that thread no longer exists!`)}else he==="checkMailbox"?pe():he==="spawnThread"?ht(ee):he==="cleanupThread"?tn(Vt[ee.hc]):he==="loaded"?(x.loaded=!0,C(x)):he==="alert"?alert(`Thread ${ee.ic}: ${ee.text}`):ee.target==="setimmediate"?x.postMessage(ee):he==="callHandler"?n[ee.Qb](...ee.args):he&&P(`worker sent an unknown command ${he}`)},x.onerror=ee=>{throw P(`worker sent an error! ${ee.filename}:${ee.lineno}: ${ee.message}`),ee};var Y,K=[];for(Y of[])n.propertyIsEnumerable(Y)&&K.push(Y);x.postMessage({Bb:"load",Rb:K,kc:_,lc:w})});function On(){var x=new Worker((()=>{let C=URL;return self.location.href>"file:"&&self.location.href<"file;"?new C("ort.bundle.min.mjs",self.location.href):new URL(self.location.href)})(),{type:"module",workerData:"em-pthread",name:"em-pthread"});yt.push(x)}var ma=x=>{Me();
2var C=oe()[x+52>>>2>>>0];x=oe()[x+56>>>2>>>0],Ra(C,C-x),Wt(C)},fa=(x,C)=>{He=0,x=Mi(x,C),0<He?b=x:Cs(x)};class _a{constructor(C){this.Ib=C-24}}function Ur(x,C,Y){var K=new _a(x>>>=0);throw C>>>=0,Y>>>=0,oe()[K.Ib+16>>>2>>>0]=0,oe()[K.Ib+4>>>2>>>0]=C,oe()[K.Ib+8>>>2>>>0]=Y,x}function mn(x,C,Y,K){return o?dt(2,1,x,C,Y,K):Nn(x,C,Y,K)}function Nn(x,C,Y,K){if(x>>>=0,Y>>>=0,K>>>=0,l===void 0)return 6;var ee=[];return o&&ee.length===0?mn(x,C>>>=0,Y,K):(x={ec:Y,Ab:x,Hb:K,Mb:ee},o?(x.Bb="spawnThread",postMessage(x,ee),0):ht(x))}var Ms=typeof TextDecoder<"u"?new TextDecoder:void 0,kt=(x,C=0,Y=NaN)=>{var K=(C>>>=0)+Y;for(Y=C;x[Y]&&!(Y>=K);)++Y;if(16<Y-C&&x.buffer&&Ms)return Ms.decode(x.buffer instanceof ArrayBuffer?x.subarray(C,Y):x.slice(C,Y));for(K="";C<Y;){var ee=x[C++];if(128&ee){var he=63&x[C++];if((224&ee)==192)K+=String.fromCharCode((31&ee)<<6|he);else{var Le=63&x[C++];65536>(ee=(240&ee)==224?(15&ee)<<12|he<<6|Le:(7&ee)<<18|he<<12|Le<<6|63&x[C++])?K+=String.fromCharCode(ee):(ee-=65536,K+=String.fromCharCode(55296|ee>>10,56320|1023&ee))}}else K+=String.fromCharCode(ee)}return K},Er=(x,C)=>(x>>>=0)?kt(q(),x,C):"";function us(x,C,Y){return o?dt(3,1,x,C,Y):0}function cs(x,C){if(o)return dt(4,1,x,C)}var pr=x=>{for(var C=0,Y=0;Y<x.length;++Y){var K=x.charCodeAt(Y);127>=K?C++:2047>=K?C+=2:55296<=K&&57343>=K?(C+=4,++Y):C+=3}return C},Ft=(x,C,Y)=>{var K=q();if(C>>>=0,0<Y){var ee=C;Y=C+Y-1;for(var he=0;he<x.length;++he){var Le=x.charCodeAt(he);if(55296<=Le&&57343>=Le&&(Le=65536+((1023&Le)<<10)|1023&x.charCodeAt(++he)),127>=Le){if(C>=Y)break;K[C++>>>0]=Le}else{if(2047>=Le){if(C+1>=Y)break;K[C++>>>0]=192|Le>>6}else{if(65535>=Le){if(C+2>=Y)break;K[C++>>>0]=224|Le>>12}else{if(C+3>=Y)break;K[C++>>>0]=240|Le>>18,K[C++>>>0]=128|Le>>12&63}K[C++>>>0]=128|Le>>6&63}K[C++>>>0]=128|63&Le}}K[C>>>0]=0,x=C-ee}else x=0;return x};function ds(x,C){if(o)return dt(5,1,x,C)}function S(x,C,Y){if(o)return dt(6,1,x,C,Y)}function ie(x,C,Y){return o?dt(7,1,x,C,Y):0}function X(x,C){if(o)return dt(8,1,x,C)}function ae(x,C,Y){if(o)return dt(9,1,x,C,Y)}function le(x,C,Y,K){if(o)return dt(10,1,x,C,Y,K)}function _e(x,C,Y,K){if(o)return dt(11,1,x,C,Y,K)}function Oe(x,C,Y,K){if(o)return dt(12,1,x,C,Y,K)}function gt(x){if(o)return dt(13,1,x)}function Et(x,C){if(o)return dt(14,1,x,C)}function at(x,C,Y){if(o)return dt(15,1,x,C,Y)}var Ot,lt,St=()=>Se(""),rr=x=>{for(var C="";q()[x>>>0];)C+=Ot[q()[x++>>>0]];return C},Hr={},kr={};function yr(x,C,Y={}){return(function(K,ee,he={}){var Le=ee.name;if(!K)throw new lt(`type "${Le}" must have a positive integer typeid pointer`);if(kr.hasOwnProperty(K)){if(he.Sb)return;throw new lt(`Cannot register type '${Le}' twice`)}kr[K]=ee,Hr.hasOwnProperty(K)&&(ee=Hr[K],delete Hr[K],ee.forEach(Qe=>Qe()))})(x,C,Y)}var ln=(x,C,Y)=>{switch(C){case 1:return Y?K=>ge()[K>>>0]:K=>q()[K>>>0];case 2:return Y?K=>V()[K>>>1>>>0]:K=>U()[K>>>1>>>0];case 4:return Y?K=>N()[K>>>2>>>0]:K=>oe()[K>>>2>>>0];case 8:return Y?K=>R[K>>>3]:K=>L[K>>>3];default:throw new TypeError(`invalid integer width (${C}): ${x}`)}};function vs(x,C,Y){Y>>>=0,yr(x>>>=0,{name:C=rr(C>>>0),fromWireType:K=>K,toWireType:function(K,ee){if(typeof ee!="bigint"&&typeof ee!="number")throw ee=ee===null?"null":(K=typeof ee)=="object"||K==="array"||K==="function"?ee.toString():""+ee,new TypeError(`Cannot convert "${ee}" to ${this.name}`);return typeof ee=="number"&&(ee=BigInt(ee)),ee},Cb:En,readValueFromPointer:ln(C,Y,C.indexOf("u")==-1),Db:null})}var En=8;function ps(x,C,Y,K){yr(x>>>=0,{name:C=rr(C>>>0),fromWireType:function(ee){return!!ee},toWireType:function(ee,he){return he?Y:K},Cb:En,readValueFromPointer:function(ee){return this.fromWireType(q()[ee>>>0])},Db:null})}var Kr=[],fn=[];function qr(x){9<(x>>>=0)&&--fn[x+1]==0&&(fn[x]=void 0,Kr.push(x))}var vr=x=>{if(!x)throw new lt("Cannot use deleted val. handle = "+x);return fn[x]},Rr=x=>{switch(x){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:let C=Kr.pop()||fn.length;return fn[C]=x,fn[C+1]=1,C}};function jn(x){return this.fromWireType(oe()[x>>>2>>>0])}var Zn={name:"emscripten::val",fromWireType:x=>{var C=vr(x);return qr(x),C},toWireType:(x,C)=>Rr(C),Cb:En,readValueFromPointer:jn,Db:null};function ea(x){return yr(x>>>0,Zn)}var Bs=(x,C)=>{switch(C){case 4:return function(Y){return this.fromWireType(fe()[Y>>>2>>>0])};case 8:return function(Y){return this.fromWireType(De()[Y>>>3>>>
20])};default:throw new TypeError(`invalid float width (${C}): ${x}`)}};function xs(x,C,Y){Y>>>=0,yr(x>>>=0,{name:C=rr(C>>>0),fromWireType:K=>K,toWireType:(K,ee)=>ee,Cb:En,readValueFromPointer:Bs(C,Y),Db:null})}function Es(x,C,Y,K,ee){if(x>>>=0,Y>>>=0,C=rr(C>>>0),ee===-1&&(ee=4294967295),ee=Qe=>Qe,K===0){var he=32-8*Y;ee=Qe=>Qe<<he>>>he}var Le=C.includes("unsigned")?function(Qe,ot){return ot>>>0}:function(Qe,ot){return ot};yr(x,{name:C,fromWireType:ee,toWireType:Le,Cb:En,readValueFromPointer:ln(C,Y,K!==0),Db:null})}function _n(x,C,Y){function K(he){var Le=oe()[he>>>2>>>0];return he=oe()[he+4>>>2>>>0],new ee(ge().buffer,he,Le)}var ee=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][C];yr(x>>>=0,{name:Y=rr(Y>>>0),fromWireType:K,Cb:En,readValueFromPointer:K},{Sb:!0})}function wn(x,C){yr(x>>>=0,{name:C=rr(C>>>0),fromWireType:function(Y){for(var K,ee=oe()[Y>>>2>>>0],he=Y+4,Le=he,Qe=0;Qe<=ee;++Qe){var ot=he+Qe;Qe!=ee&&q()[ot>>>0]!=0||(Le=Er(Le,ot-Le),K===void 0?K=Le:(K+="\0",K+=Le),Le=ot+1)}return Vn(Y),K},toWireType:function(Y,K){K instanceof ArrayBuffer&&(K=new Uint8Array(K));var ee=typeof K=="string";if(!(ee||K instanceof Uint8Array||K instanceof Uint8ClampedArray||K instanceof Int8Array))throw new lt("Cannot pass non-string to std::string");var he=ee?pr(K):K.length,Le=Ba(4+he+1),Qe=Le+4;if(oe()[Le>>>2>>>0]=he,ee)Ft(K,Qe,he+1);else if(ee)for(ee=0;ee<he;++ee){var ot=K.charCodeAt(ee);if(255<ot)throw Vn(Le),new lt("String has UTF-16 code units that do not fit in 8 bits");q()[Qe+ee>>>0]=ot}else for(ee=0;ee<he;++ee)q()[Qe+ee>>>0]=K[ee];return Y!==null&&Y.push(Vn,Le),Le},Cb:En,readValueFromPointer:jn,Db(Y){Vn(Y)}})}var Ke=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0,Ze=(x,C)=>{for(var Y=x>>1,K=Y+C/2;!(Y>=K)&&U()[Y>>>0];)++Y;if(32<(Y<<=1)-x&&Ke)return Ke.decode(q().slice(x,Y));for(Y="",K=0;!(K>=C/2);++K){var ee=V()[x+2*K>>>1>>>0];if(ee==0)break;Y+=String.fromCharCode(ee)}return Y},ft=(x,C,Y)=>{if(Y??=2147483647,2>Y)return 0;var K=C;Y=(Y-=2)<2*x.length?Y/2:x.length;for(var ee=0;ee<Y;++ee){var he=x.charCodeAt(ee);V()[C>>>1>>>0]=he,C+=2}return V()[C>>>1>>>0]=0,C-K},Dr=x=>2*x.length,ta=(x,C)=>{for(var Y=0,K="";!(Y>=C/4);){var ee=N()[x+4*Y>>>2>>>0];if(ee==0)break;++Y,65536<=ee?(ee-=65536,K+=String.fromCharCode(55296|ee>>10,56320|1023&ee)):K+=String.fromCharCode(ee)}return K},Ds=(x,C,Y)=>{if(C>>>=0,Y??=2147483647,4>Y)return 0;var K=C;Y=K+Y-4;for(var ee=0;ee<x.length;++ee){var he=x.charCodeAt(ee);if(55296<=he&&57343>=he&&(he=65536+((1023&he)<<10)|1023&x.charCodeAt(++ee)),N()[C>>>2>>>0]=he,(C+=4)+4>Y)break}return N()[C>>>2>>>0]=0,C-K},ra=x=>{for(var C=0,Y=0;Y<x.length;++Y){var K=x.charCodeAt(Y);55296<=K&&57343>=K&&++Y,C+=4}return C};function ii(x,C,Y){if(x>>>=0,C>>>=0,Y=rr(Y>>>=0),C===2)var K=Ze,ee=ft,he=Dr,Le=Qe=>U()[Qe>>>1>>>0];else C===4&&(K=ta,ee=Ds,he=ra,Le=Qe=>oe()[Qe>>>2>>>0]);yr(x,{name:Y,fromWireType:Qe=>{for(var ot,wt=oe()[Qe>>>2>>>0],Lt=Qe+4,sr=0;sr<=wt;++sr){var mr=Qe+4+sr*C;sr!=wt&&Le(mr)!=0||(Lt=K(Lt,mr-Lt),ot===void 0?ot=Lt:(ot+="\0",ot+=Lt),Lt=mr+C)}return Vn(Qe),ot},toWireType:(Qe,ot)=>{if(typeof ot!="string")throw new lt(`Cannot pass non-string to C++ string type ${Y}`);var wt=he(ot),Lt=Ba(4+wt+C);return oe()[Lt>>>2>>>0]=wt/C,ee(ot,Lt+4,wt+C),Qe!==null&&Qe.push(Vn,Lt),Lt},Cb:En,readValueFromPointer:jn,Db(Qe){Vn(Qe)}})}function ye(x,C){yr(x>>>=0,{Tb:!0,name:C=rr(C>>>0),Cb:0,fromWireType:()=>{},toWireType:()=>{}})}function O(x){la(x>>>0,!i,1,!a,131072,!1),hn()}var te=x=>{if(!re)try{if(x(),!(0<He))try{o?Cs(b):We(b)}catch(C){C instanceof ke||C=="unwind"||A(0,C)}}catch(C){C instanceof ke||C=="unwind"||A(0,C)}};function de(x){x>>>=0,typeof Atomics.jc=="function"&&(Atomics.jc(N(),x>>>2,x).value.then(pe),x+=128,Atomics.store(N(),x>>>2,1))}var pe=()=>{var x=va();x&&(de(x),te(Ut))};function xe(x,C){(x>>>=0)==C>>>0?setTimeout(pe):o?postMessage({Gb:x,Bb:"checkMailbox"}):(x=Vt[x])&&x.postMessage({Bb:"checkMailbox"})}var Fe=[];function ct(x,C,Y,K,ee){for(C>>>=0,K/=2,Fe.length=K,Y=ee>>>0>>>3,ee=0;ee<K;ee++)Fe[ee]=R[Y+2*ee]?R[Y+2*ee+1]:De()[Y+2*ee+1>>>0];return(C?ve[C]:Kn[x])(...Fe)}var ut=()=>{He=0};function pt(x){x>>>=0,o?postMessage({Bb:"cleanupThread",hc:x}):tn(Vt[x])}function st(x){}var Xt=(x,C)=>{var Y=kr[x];if(Y===void 0)throw x=ia(x),Y=rr(x),Vn(x),new lt(`${C} has unknown type ${Y}`);return Y},jt=(x,C,Y)=>{var K=[];return x=x.toWireType(K,Y),K.length&&(oe()[C>>>2>>>0]=Rr(K)),x};function Or(x,C,Y){return C>>>=0,Y>>>=0,x=vr(x>>>0),C=Xt(C,"emval::as"),jt(C,Y,x)}function un(x,C){return C>>>=0,x=vr(x>>>0),(C=Xt(C,"emval::as")).toWireType(null,x)}var gr=x=>{try{x()}catch(C){Se(C)}}
2,Ar=0,Br=null,Dn=0,Un=[],cn={},Jn={},Yr=0,Wr=null,yn=[];function Wn(x){return(function(C){if(!re){if(Ar===0){var Y=!1,K=!1;C((ee=0)=>{if(!re&&(Dn=ee,Y=!0,K)){Ar=2,gr(()=>Na(Br)),typeof MainLoop<"u"&&MainLoop.Pb&&MainLoop.resume(),ee=!1;try{var he=(function(){var ot=N()[Br+8>>>2>>>0];return ot=vt[Jn[ot]],--He,ot()})()}catch(ot){he=ot,ee=!0}var Le=!1;if(!Br){var Qe=Wr;Qe&&(Wr=null,(ee?Qe.reject:Qe.resolve)(he),Le=!0)}if(ee&&!Le)throw he}}),K=!0,Y||(Ar=1,Br=(function(){var ee=Ba(65548),he=ee+12;oe()[ee>>>2>>>0]=he,oe()[ee+4>>>2>>>0]=he+65536,he=Un[0];var Le=cn[he];return Le===void 0&&(Le=Yr++,cn[he]=Le,Jn[Le]=he),he=Le,N()[ee+8>>>2>>>0]=he,ee})(),typeof MainLoop<"u"&&MainLoop.Pb&&MainLoop.pause(),gr(()=>Ya(Br)))}else Ar===2?(Ar=0,gr(ja),Vn(Br),Br=null,yn.forEach(te)):Se(`invalid state: ${Ar}`);return Dn}})(C=>{x().then(C)})}function gs(x){return x>>>=0,Wn(async()=>{var C=await vr(x);return Rr(C)})}var Xr=[];function es(x,C,Y,K){return Y>>>=0,K>>>=0,(x=Xr[x>>>0])(null,C=vr(C>>>0),Y,K)}var dn={},Nr=x=>{var C=dn[x];return C===void 0?rr(x):C};function rn(x,C,Y,K,ee){return Y>>>=0,K>>>=0,ee>>>=0,(x=Xr[x>>>0])(C=vr(C>>>0),C[Y=Nr(Y)],K,ee)}var zr=()=>typeof globalThis=="object"?globalThis:Function("return this")();function zn(x){return(x>>>=0)==0?Rr(zr()):(x=Nr(x),Rr(zr()[x]))}var wa=x=>{var C=Xr.length;return Xr.push(x),C},Is=(x,C)=>{for(var Y=Array(x),K=0;K<x;++K)Y[K]=Xt(oe()[C+4*K>>>2>>>0],"parameter "+K);return Y},ao=(x,C)=>Object.defineProperty(C,"name",{value:x});function Yo(x,C,Y){var K=(C=Is(x,C>>>0)).shift();x--;var ee=`return function (obj, func, destructorsRef, args) { 3`,he=0,Le=[];Y===0&&Le.push("obj");for(var Qe=["retType"],ot=[K],wt=0;wt<x;++wt)Le.push("arg"+wt),Qe.push("argType"+wt),ot.push(C[wt]),ee+=` var arg${wt} = argType${wt}.readValueFromPointer(args${he?"+"+he:""}); 4`,he+=C[wt].Cb;return ee+=` var rv = ${Y===1?"new func":"func.call"}(${Le.join(", ")}); 5`,K.Tb||(Qe.push("emval_returnValue"),ot.push(jt),ee+=` return emval_returnValue(retType, destructorsRef, rv); 6`),Qe.push(ee+`}; 7`),x=(function(Lt){var sr=Function;if(!(sr instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof sr} which is not a function`);var mr=ao(sr.name||"unknownFunctionName",function(){});return mr.prototype=sr.prototype,mr=new mr,(Lt=sr.apply(mr,Lt))instanceof Object?Lt:mr})(Qe)(...ot),Y=`methodCaller<(${C.map(Lt=>Lt.name).join(", ")}) => ${K.name}>`,wa(ao(Y,x))}function No(x){return x=Nr(x>>>0),Rr(n[x])}function io(x,C){return C>>>=0,x=vr(x>>>0),C=vr(C),Rr(x[C])}function jo(x){9<(x>>>=0)&&(fn[x+1]+=1)}function ya(){return Rr([])}function Uo(x){x=vr(x>>>0);for(var C=Array(x.length),Y=0;Y<x.length;Y++)C[Y]=x[Y];return Rr(C)}function Wo(x){return Rr(Nr(x>>>0))}function Vo(){return Rr({})}function Qo(x){for(var C=vr(x>>>=0);C.length;){var Y=C.pop();C.pop()(Y)}qr(x)}function Ho(x,C,Y){C>>>=0,Y>>>=0,x=vr(x>>>0),C=vr(C),Y=vr(Y),x[C]=Y}function ba(x,C){return C>>>=0,x=(x=Xt(x>>>0,"_emval_take_value")).readValueFromPointer(C),Rr(x)}function oo(x,C){x=-9007199254740992>x||9007199254740992<x?NaN:Number(x),C>>>=0,x=new Date(1e3*x),N()[C>>>2>>>0]=x.getUTCSeconds(),N()[C+4>>>2>>>0]=x.getUTCMinutes(),N()[C+8>>>2>>>0]=x.getUTCHours(),N()[C+12>>>2>>>0]=x.getUTCDate(),N()[C+16>>>2>>>0]=x.getUTCMonth(),N()[C+20>>>2>>>0]=x.getUTCFullYear()-1900,N()[C+24>>>2>>>0]=x.getUTCDay(),x=(x.getTime()-Date.UTC(x.getUTCFullYear(),0,1,0,0,0,0))/864e5|0,N()[C+28>>>2>>>0]=x}var oi=x=>x%4==0&&(x%100!=0||x%400==0),li=[0,31,60,91,121,152,182,213,244,274,305,335],lo=[0,31,59,90,120,151,181,212,243,273,304,334];function Ko(x,C){x=-9007199254740992>x||9007199254740992<x?NaN:Number(x),C>>>=0,x=new Date(1e3*x),N()[C>>>2>>>0]=x.getSeconds(),N()[C+4>>>2>>>0]=x.getMinutes(),N()[C+8>>>2>>>0]=x.getHours(),N()[C+12>>>2>>>0]=x.getDate(),N()[C+16>>>2>>>0]=x.getMonth(),N()[C+20>>>2>>>0]=x.getFullYear()-1900,N()[C+24>>>2>>>0]=x.getDay();var Y=(oi(x.getFullYear())?li:lo)[x.getMonth()]+x.getDate()-1|0;N()[C+28>>>2>>>0]=Y,N()[C+36>>>2>>>0]=-60*x.getTimezoneOffset(),Y=new Date(x.getFullYear(),6,1).getTimezoneOffset();var K=new Date(x.getFullYear(),0,1).getTimezoneOffset();x=0|(Y!=K&&x.getTimezoneOffset()==Math.min(K,Y)),N()[C+32>>>2>>>0]=x}function ui(x){x>>>=0;var C=new Date(N()[x+20>>>2>>>0]+1900,N()[x+16>>>2>>>0],N()[x+12>>>2>>>0],N()[x+8>>>2>>>0],N()[x+4>>>2>>>0],N()[x>>>2>>>0],0),Y=N()[x+32>>>2>>>0],K=C.getTimezoneOffset(),ee=new Date(C.getFullYear(),6,1).getTimezoneOffset(),he=new Date(C.getFullYear(),0,1).getTimezoneOffset(),Le=Math.min(he,ee);return 0>Y?N()[x+32>>>2>>>
70]=+(ee!=he&&Le==K):0<Y!=(Le==K)&&(ee=Math.max(he,ee),C.setTime(C.getTime()+6e4*((0<Y?Le:ee)-K))),N()[x+24>>>2>>>0]=C.getDay(),Y=(oi(C.getFullYear())?li:lo)[C.getMonth()]+C.getDate()-1|0,N()[x+28>>>2>>>0]=Y,N()[x>>>2>>>0]=C.getSeconds(),N()[x+4>>>2>>>0]=C.getMinutes(),N()[x+8>>>2>>>0]=C.getHours(),N()[x+12>>>2>>>0]=C.getDate(),N()[x+16>>>2>>>0]=C.getMonth(),N()[x+20>>>2>>>0]=C.getYear(),x=C.getTime(),BigInt(isNaN(x)?-1:x/1e3)}function ci(x,C,Y,K,ee,he,Le){return o?dt(16,1,x,C,Y,K,ee,he,Le):-52}function na(x,C,Y,K,ee,he){if(o)return dt(17,1,x,C,Y,K,ee,he)}var sa={},uo=()=>performance.timeOrigin+performance.now();function di(x,C){if(o)return dt(18,1,x,C);if(sa[x]&&(clearTimeout(sa[x].id),delete sa[x]),!C)return 0;var Y=setTimeout(()=>{delete sa[x],te(()=>Pi(x,performance.timeOrigin+performance.now()))},C);return sa[x]={id:Y,qc:C},0}function qo(x,C,Y,K){x>>>=0,C>>>=0,Y>>>=0,K>>>=0;var ee=new Date().getFullYear(),he=new Date(ee,0,1).getTimezoneOffset();ee=new Date(ee,6,1).getTimezoneOffset();var Le=Math.max(he,ee);oe()[x>>>2>>>0]=60*Le,N()[C>>>2>>>0]=+(he!=ee),x=(C=Qe=>{var ot=Math.abs(Qe);return`UTC${0<=Qe?"-":"+"}${String(Math.floor(ot/60)).padStart(2,"0")}${String(ot%60).padStart(2,"0")}`})(he),C=C(ee),ee<he?(Ft(x,Y,17),Ft(C,K,17)):(Ft(x,K,17),Ft(C,Y,17))}var co=()=>Date.now();function po(x,C,Y){return 0<=x&&3>=x?(x===0?x=Date.now():x=performance.timeOrigin+performance.now(),R[Y>>>0>>>3]=BigInt(Math.round(1e6*x)),0):28}var Oa=[],pi=(x,C)=>{Oa.length=0;for(var Y;Y=q()[x++>>>0];){var K=Y!=105;C+=(K&=Y!=112)&&C%8?4:0,Oa.push(Y==112?oe()[C>>>2>>>0]:Y==106?R[C>>>3]:Y==105?N()[C>>>2>>>0]:De()[C>>>3>>>0]),C+=K?8:4}return Oa};function go(x,C,Y){return x>>>=0,C=pi(C>>>0,Y>>>0),ve[x](...C)}function gi(x,C,Y){return x>>>=0,C=pi(C>>>0,Y>>>0),ve[x](...C)}var Xo=()=>{};function Zo(x,C){return P(Er(x>>>0,C>>>0))}var Jo=()=>{throw He+=1,"unwind"};function el(){return 4294901760}var Ts=()=>navigator.hardwareConcurrency;function Ga(){return Se("Cannot use emscripten_pc_get_function without -sUSE_OFFSET_CONVERTER"),0}function Ai(x){x>>>=0;var C=q().length;if(x<=C||4294901760<x)return!1;for(var Y=1;4>=Y;Y*=2){var K=C*(1+.2/Y);K=Math.min(K,x+100663296);e:{K=(Math.min(4294901760,65536*Math.ceil(Math.max(x,K)/65536))-_.buffer.byteLength+65535)/65536|0;try{_.grow(K),Me();var ee=1;break e}catch{}ee=void 0}if(ee)return!0}return!1}var za=()=>(Se("Cannot use convertFrameToPC (needed by __builtin_return_address) without -sUSE_OFFSET_CONVERTER"),0),As={},hi=x=>{x.forEach(C=>{za()})};function tl(){var x=Error().stack.toString().split(` 8`);return x[0]=="Error"&&x.shift(),hi(x),As.Lb=za(),As.cc=x,As.Lb}function Pa(x,C,Y){if(x>>>=0,C>>>=0,As.Lb==x)var K=As.cc;else(K=Error().stack.toString().split(` 9`))[0]=="Error"&&K.shift(),hi(K);for(var ee=3;K[ee]&&za()!=x;)++ee;for(x=0;x<Y&&K[x+ee];++x)N()[C+4*x>>>2>>>0]=za();return x}var aa,Fa={},La=()=>{if(!aa){var x,C={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:"./this.program"};for(x in Fa)Fa[x]===void 0?delete C[x]:C[x]=Fa[x];var Y=[];for(x in C)Y.push(`${x}=${C[x]}`);aa=Y}return aa};function hs(x,C){if(o)return dt(19,1,x,C);x>>>=0,C>>>=0;var Y=0;return La().forEach((K,ee)=>{var he=C+Y;for(ee=oe()[x+4*ee>>>2>>>0]=he,he=0;he<K.length;++he)ge()[ee++>>>0]=K.charCodeAt(he);ge()[ee>>>0]=0,Y+=K.length+1}),0}function mi(x,C){if(o)return dt(20,1,x,C);x>>>=0,C>>>=0;var Y=La();oe()[x>>>2>>>0]=Y.length;var K=0;return Y.forEach(ee=>K+=ee.length+1),oe()[C>>>2>>>0]=K,0}function Ao(x){return o?dt(21,1,x):52}function fi(x,C,Y,K){return o?dt(22,1,x,C,Y,K):52}function rl(x,C,Y,K){return o?dt(23,1,x,C,Y,K):70}var ho=[null,[],[]];function _i(x,C,Y,K){if(o)return dt(24,1,x,C,Y,K);C>>>=0,Y>>>=0,K>>>=0;for(var ee=0,he=0;he<Y;he++){var Le=oe()[C>>>2>>>0],Qe=oe()[C+4>>>2>>>0];C+=8;for(var ot=0;ot<Qe;ot++){var wt=q()[Le+ot>>>0],Lt=ho[x];wt===0||wt===10?((x===1?h:P)(kt(Lt)),Lt.length=0):Lt.push(wt)}ee+=Qe}return oe()[K>>>2>>>0]=ee,0}o||(function(){for(var x=n.numThreads-1;x--;)On();Ue.unshift(()=>{we++,(function(C){o?C():Promise.all(yt.map(ar)).then(C)})(()=>Ce())})})();for(var wi=Array(256),Ma=0;256>Ma;++Ma)wi[Ma]=String.fromCharCode(Ma);
9Ot=wi,lt=n.BindingError=class extends Error{constructor(x){super(x),this.name="BindingError"}},n.InternalError=class extends Error{constructor(x){super(x),this.name="InternalError"}},fn.push(0,1,void 0,1,null,1,!0,1,!1,1),n.count_emval_handles=()=>fn.length/2-5-Kr.length;var vt,Kn=[At,Xe,mn,us,cs,ds,S,ie,X,ae,le,_e,Oe,gt,Et,at,ci,na,di,hs,mi,Ao,fi,rl,_i];(async function(){function x(K,ee){return vt=K.exports,vt=(function(){var he=vt,Le={};for(let[Qe,ot]of Object.entries(he))Le[Qe]=typeof ot=="function"?(...wt)=>{Un.push(Qe);try{return ot(...wt)}finally{re||(Un.pop(),Br&&Ar===1&&Un.length===0&&(Ar=0,He+=1,gr(vi),typeof Fibers<"u"&&Fibers.rc()))}}:ot;return Le})(),vt=(function(){var he=vt,Le=ot=>wt=>ot(wt)>>>0,Qe=ot=>()=>ot()>>>0;return(he=Object.assign({},he)).Da=Le(he.Da),he.fb=Qe(he.fb),he.hb=Le(he.hb),he.tb=Le(he.tb),he.ub=Qe(he.ub),he.__cxa_get_exception_ptr=Le(he.__cxa_get_exception_ptr),he})(),hr.push(vt.ib),w=ee,Ce(),vt}we++;var C=ze();if(n.instantiateWasm)return new Promise(K=>{n.instantiateWasm(C,(ee,he)=>{x(ee,he),K(ee.exports)})});if(o)return new Promise(K=>{Ie=ee=>{var he=new WebAssembly.Instance(ee,ze());K(x(he,ee))}});H??=n.locateFile?n.locateFile?n.locateFile("ort-wasm-simd-threaded.jsep.wasm",m):m+"ort-wasm-simd-threaded.jsep.wasm":new URL("/assets/ort-wasm-simd-threaded.jsep-B0T3yYHD.wasm",self.location.href).href;try{var Y=await(async function(K){var ee=H;if(!ne&&typeof WebAssembly.instantiateStreaming=="function"&&!ce(ee))try{var he=fetch(ee,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(he,K)}
9catch(Le){P(`wasm streaming compile failed: ${Le}`),P("falling back to ArrayBuffer instantiation")}return(async function(Le,Qe){try{var ot=await(async function(wt){if(!ne)try{var Lt=await d(wt);return new Uint8Array(Lt)}catch{}if(wt==H&&ne)wt=new Uint8Array(ne);else{if(!c)throw"both async and sync fetching of the wasm failed";wt=c(wt)}return wt})(Le);return await WebAssembly.instantiate(ot,Qe)}catch(wt){P(`failed to asynchronously prepare wasm: ${wt}`),Se(wt)}})(ee,K)})(C);return x(Y.instance,Y.module)}catch(K){return r(K),Promise.reject(K)}})();var ia=x=>(ia=vt.Da)(x),oa=()=>(oa=vt.Ea)();n._OrtInit=(x,C)=>(n._OrtInit=vt.Fa)(x,C),n._OrtGetLastError=(x,C)=>(n._OrtGetLastError=vt.Ga)(x,C),n._OrtCreateSessionOptions=(x,C,Y,K,ee,he,Le,Qe,ot,wt)=>(n._OrtCreateSessionOptions=vt.Ha)(x,C,Y,K,ee,he,Le,Qe,ot,wt),n._OrtAppendExecutionProvider=(x,C,Y,K,ee)=>(n._OrtAppendExecutionProvider=vt.Ia)(x,C,Y,K,ee),n._OrtAddFreeDimensionOverride=(x,C,Y)=>(n._OrtAddFreeDimensionOverride=vt.Ja)(x,C,Y),n._OrtAddSessionConfigEntry=(x,C,Y)=>(n._OrtAddSessionConfigEntry=vt.Ka)(x,C,Y),n._OrtReleaseSessionOptions=x=>(n._OrtReleaseSessionOptions=vt.La)(x),n._OrtCreateSession=(x,C,Y)=>(n._OrtCreateSession=vt.Ma)(x,C,Y),n._OrtReleaseSession=x=>(n._OrtReleaseSession=vt.Na)(x),n._OrtGetInputOutputCount=(x,C,Y)=>(n._OrtGetInputOutputCount=vt.Oa)(x,C,Y),n._OrtGetInputOutputMetadata=(x,C,Y,K)=>(n._OrtGetInputOutputMetadata=vt.Pa)(x,C,Y,K),n._OrtFree=x=>(n._OrtFree=vt.Qa)(x),n._OrtCreateTensor=(x,C,Y,K,ee,he)=>(n._OrtCreateTensor=vt.Ra)(x,C,Y,K,ee,he),n._OrtGetTensorData=(x,C,Y,K,ee)=>(n._OrtGetTensorData=vt.Sa)(x,C,Y,K,ee),n._OrtReleaseTensor=x=>(n._OrtReleaseTensor=vt.Ta)(x),n._OrtCreateRunOptions=(x,C,Y,K)=>(n._OrtCreateRunOptions=vt.Ua)(x,C,Y,K),n._OrtAddRunConfigEntry=(x,C,Y)=>(n._OrtAddRunConfigEntry=vt.Va)(x,C,Y),n._OrtReleaseRunOptions=x=>(n._OrtReleaseRunOptions=vt.Wa)(x),n._OrtCreateBinding=x=>(n._OrtCreateBinding=vt.Xa)(x),n._OrtBindInput=(x,C,Y)=>(n._OrtBindInput=vt.Ya)(x,C,Y),n._OrtBindOutput=(x,C,Y,K)=>(n._OrtBindOutput=vt.Za)(x,C,Y,K),n._OrtClearBoundOutputs=x=>(n._OrtClearBoundOutputs=vt._a)(x),n._OrtReleaseBinding=x=>(n._OrtReleaseBinding=vt.$a)(x),n._OrtRunWithBinding=(x,C,Y,K,ee)=>(n._OrtRunWithBinding=vt.ab)(x,C,Y,K,ee),n._OrtRun=(x,C,Y,K,ee,he,Le,Qe)=>(n._OrtRun=vt.bb)(x,C,Y,K,ee,he,Le,Qe),n._OrtEndProfiling=x=>(n._OrtEndProfiling=vt.cb)(x),n._JsepOutput=(x,C,Y)=>(n._JsepOutput=vt.db)(x,C,Y),n._JsepGetNodeName=x=>(n._JsepGetNodeName=vt.eb)(x);var va=()=>(va=vt.fb)(),Vn=n._free=x=>(Vn=n._free=vt.gb)(x),Ba=n._malloc=x=>(Ba=n._malloc=vt.hb)(x),la=(x,C,Y,K,ee,he)=>(la=vt.kb)(x,C,Y,K,ee,he),yi=()=>(yi=vt.lb)(),bi=(x,C,Y,K,ee)=>(bi=vt.mb)(x,C,Y,K,ee),Zt=x=>(Zt=vt.nb)(x),Cs=x=>(Cs=vt.ob)(x),Pi=(x,C)=>(Pi=vt.pb)(x,C),Ut=()=>(Ut=vt.qb)(),Ra=(x,C)=>(Ra=vt.rb)(x,C),Wt=x=>(Wt=vt.sb)(x),xa=x=>(xa=vt.tb)(x),Ea=()=>(Ea=vt.ub)(),Mi=n.dynCall_ii=(x,C)=>(Mi=n.dynCall_ii=vt.vb)(x,C),Ya=x=>(Ya=vt.wb)(x),vi=()=>(vi=vt.xb)(),Na=x=>(Na=vt.yb)(x),ja=()=>(ja=vt.zb)();return n.stackSave=()=>Ea(),n.stackRestore=x=>Wt(x),n.stackAlloc=x=>xa(x),n.setValue=function(x,C,Y="i8"){switch(Y.endsWith("*")&&(Y="*"),Y){case"i1":case"i8":ge()[x>>>0]=C;break;case"i16":V()[x>>>1>>>0]=C;break;case"i32":N()[x>>>2>>>0]=C;break;case"i64":R[x>>>3]=BigInt(C);break;case"float":fe()[x>>>2>>>0]=C;break;case"double":De()[x>>>3>>>0]=C;break;case"*":oe()[x>>>2>>>0]=C;break;default:Se(`invalid type for setValue: ${Y}`)}},n.getValue=function(x,C="i8"){switch(C.endsWith("*")&&(C="*"),C){case"i1":case"i8":return ge()[x>>>0];case"i16":return V()[x>>>1>>>0];case"i32":return N()[x>>>2>>>0];case"i64":return R[x>>>3];case"float":return fe()[x>>>2>>>0];case"double":return De()[x>>>3>>>0];case"*":return oe()[x>>>2>>>0];default:Se(`invalid type for getValue: ${C}`)}},n.UTF8ToString=Er,n.stringToUTF8=Ft,n.lengthBytesUTF8=pr,(function x(){if(0<we)be=x;else if(o)t(n),se();else{for(;0<Ue.length;)Ue.shift()(n);0<we?be=x:(n.calledRun=!0,re||(se(),t(n)))}})(),n.PTR_SIZE=4,s}),Df=Ap,If=globalThis.self?.name?.startsWith("em-pthread"),If&&Ap()}),hp,mp,Tf,rs,Cf,Ku,$f,Sf,fp,kf,_p,Of,wp,Gf,yp=Je(()=>{cp(),hp=typeof location>"u"?void 0:location.origin,mp=self.location.href>"file:"&&self.location.href<"file;",Tf=()=>{{if(mp){let e=URL;return new URL(new e("ort.bundle.min.mjs",self.location.href).href,hp).href}return self.location.href}},rs=Tf(),Cf=()=>{if(rs&&!rs.startsWith("blob:"))return rs.substring(0,rs.lastIndexOf("/")+1)},Ku=(e,t)=>{try{let r=t??rs;return(r?new URL(e,r):new URL(e)).origin===hp}catch{return!1}},$f=(e,t)=>{let r=t??rs;try{return(r?new URL(e,r):new URL(e)).href}catch{return}},Sf=(e,t)=>
vendor: 4,194 bytes, line 9
9`${t??"./"}${e}`,fp=async e=>{let t=await(await fetch(e,{credentials:"same-origin"})).blob();return URL.createObjectURL(t)},kf=async e=>(await import(e)).default,_p=(bk(),_l(Bf)).default,Of=async()=>{if(!rs)throw new Error("Failed to load proxy worker: cannot determine the script source URL.");if(Ku(rs))return[void 0,_p()];let e=await fp(rs);return[e,_p(e)]},wp=(Pk(),_l(Ef)).default,Gf=async(e,t,r)=>{if(!e&&!t&&wp&&rs&&Ku(rs))return[void 0,wp];{let n="ort-wasm-simd-threaded.jsep.mjs",s=e??$f(n,t),a=r&&s&&!Ku(s,t),i=a?await fp(s):s??Sf(n,t);return[a?i:void 0,await kf(i)]}}}),bp,qu,Pl,Pp,zf,Ff,Lf,Mp,Fr,Ci=Je(()=>{yp(),qu=!1,Pl=!1,Pp=!1,zf=()=>{if(typeof SharedArrayBuffer>"u")return!1;try{return typeof MessageChannel<"u"&&new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch{return!1}},Ff=()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,30,1,28,0,65,0,253,15,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,186,1,26,11]))}catch{return!1}},Lf=()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,19,1,17,0,65,1,253,15,65,2,253,15,65,3,253,15,253,147,2,11]))}catch{return!1}},Mp=async e=>{if(qu)return Promise.resolve();if(Pl)throw new Error("multiple calls to 'initializeWebAssembly()' detected.");if(Pp)throw new Error("previous call to 'initializeWebAssembly()' failed.");Pl=!0;let t=e.initTimeout,r=e.numThreads;if(e.simd!==!1){if(e.simd==="relaxed"){if(!Lf())throw new Error("Relaxed WebAssembly SIMD is not supported in the current environment.")}else if(!Ff())throw new Error("WebAssembly SIMD is not supported in the current environment.")}let n=zf();r>1&&!n&&(typeof self<"u"&&!self.crossOriginIsolated&&console.warn("env.wasm.numThreads is set to "+r+", but this will not work unless you enable crossOriginIsolated mode. See https://web.dev/cross-origin-isolation-guide/ for more info."),console.warn("WebAssembly multi-threading is not supported in the current environment. Falling back to single-threading."),e.numThreads=r=1);let s=e.wasmPaths,a=typeof s=="string"?s:void 0,i=s?.mjs,o=i?.href??i,l=s?.wasm,u=l?.href??l,p=e.wasmBinary,[d,c]=await Gf(o,a,r>1),g=!1,A=[];if(t>0&&A.push(new Promise(m=>{setTimeout(()=>{g=!0,m()},t)})),A.push(new Promise((m,B)=>{let f={numThreads:r};if(p)f.wasmBinary=p;else if(u||a)f.locateFile=h=>u??a+h;else if(o&&o.indexOf("blob:")!==0)f.locateFile=h=>new URL(h,o).href;else if(d){let h=Cf();h&&(f.locateFile=P=>h+P)}c(f).then(h=>{Pl=!1,qu=!0,bp=h,m(),d&&URL.revokeObjectURL(d)},h=>{Pl=!1,Pp=!0,B(h)})})),await Promise.race(A),g)throw new Error(`WebAssembly backend initializing failed due to timeout: ${t}ms`)},Fr=()=>{if(qu&&bp)return bp;throw new Error("WebAssembly is not initialized yet.")}}),zs,Xu,$r,vp=Je(()=>{Ci(),zs=(e,t)=>{let r=Fr(),n=r.lengthBytesUTF8(e)+1,s=r._malloc(n);return r.stringToUTF8(e,s,n),t.push(s),s},Xu=(e,t,r,n)=>{if(typeof e=="object"&&e!==null){if(r.has(e))throw new Error("Circular reference in options");r.add(e)}Object.entries(e).forEach(([s,a])=>{let i=t?t+s:s;if(typeof a=="object")Xu(a,i+".",r,n);else if(typeof a=="string"||typeof a=="number")n(i,a.toString());else if(typeof a=="boolean")n(i,a?"1":"0");else throw new Error(`Can't handle extra config type: ${typeof a}`)})},$r=e=>{let t=Fr(),r=t.stackSave();try{let n=t.PTR_SIZE,s=t.stackAlloc(2*n);t._OrtGetLastError(s,s+n);let a=Number(t.getValue(s,n===4?"i32":"i64")),i=t.getValue(s+n,"*"),o=i?t.UTF8ToString(i):"";throw new Error(`${e} ERROR_CODE: ${a}, ERROR_MESSAGE: ${o}`)}finally{t.stackRestore(r)}}}),Rf,Mk=Je(()=>{Ci(),vp(),Rf=e=>{let t=Fr(),r=0,n=[],s=e||{};try{if(e?.logSeverityLevel===void 0)s.logSeverityLevel=2;else if(typeof e.logSeverityLevel!="number"||!Number.isInteger(e.logSeverityLevel)||e.logSeverityLevel<0||e.logSeverityLevel>4)throw new Error(`log serverity level is not valid: ${e.logSeverityLevel}`);if(e?.logVerbosityLevel===void 0)s.logVerbosityLevel=0;else if(typeof e.logVerbosityLevel!="number"||!Number.isInteger(e.logVerbosityLevel))throw new Error(`log verbosity level is not val
9id: ${e.logVerbosityLevel}`);e?.terminate===void 0&&(s.terminate=!1);let a=0;return e?.tag!==void 0&&(a=zs(e.tag,n)),r=t._OrtCreateRunOptions(s.logSeverityLevel,s.logVerbosityLevel,!!s.terminate,a),r===0&&$r("Can't create run options."),e?.extra!==void 0&&Xu(e.extra,"",new WeakSet,(i,o)=>{let l=zs(i,n),u=zs(o,n);t._OrtAddRunConfigEntry(r,l,u)!==0&&$r(`Can't set a run config entry: ${i} - ${o}.`)}),[r,n]}catch(a){throw r!==0&&t._OrtReleaseRunOptions(r),n.forEach(i=>t._free(i)),a}}}),Yf,Nf,jf,Ml,Uf,Wf,vk=Je(()=>{Ci(),vp(),Yf=e=>{switch(e){case"disabled":return 0;case"basic":return 1;case"extended":return 2;case"all":return 99;default:throw new Error(`unsupported graph optimization level: ${e}`)}},Nf=e=>{switch(e){case"sequential":return 0;case"parallel":return 1;default:throw new Error(`unsupported execution mode: ${e}`)}},jf=e=>{e.extra||(e.extra={}),e.extra.session||(e.extra.session={});let t=e.extra.session;t.use_ort_model_bytes_directly||(t.use_ort_model_bytes_directly="1"),e.executionProviders&&e.executionProviders.some(r=>(typeof r=="string"?r:r.name)==="webgpu")&&(e.enableMemPattern=!1)},Ml=(e,t,r,n)=>
vendor: 10,993 bytes, line 9
9{let s=zs(t,n),a=zs(r,n);Fr()._OrtAddSessionConfigEntry(e,s,a)!==0&&$r(`Can't set a session config entry: ${t} - ${r}.`)},Uf=async(e,t,r)=>{for(let n of t){let s=typeof n=="string"?n:n.name,a=[];switch(s){case"webnn":if(s="WEBNN",typeof n!="string"){let p=n?.deviceType;p&&Ml(e,"deviceType",p,r)}break;case"webgpu":if(s="JS",typeof n!="string"){let p=n;if(p?.preferredLayout){if(p.preferredLayout!=="NCHW"&&p.preferredLayout!=="NHWC")throw new Error(`preferredLayout must be either 'NCHW' or 'NHWC': ${p.preferredLayout}`);Ml(e,"preferredLayout",p.preferredLayout,r)}}break;case"wasm":case"cpu":continue;default:throw new Error(`not supported execution provider: ${s}`)}let i=zs(s,r),o=a.length,l=0,u=0;if(o>0){l=Fr()._malloc(o*Fr().PTR_SIZE),r.push(l),u=Fr()._malloc(o*Fr().PTR_SIZE),r.push(u);for(let p=0;p<o;p++)Fr().setValue(l+p*Fr().PTR_SIZE,a[p][0],"*"),Fr().setValue(u+p*Fr().PTR_SIZE,a[p][1],"*")}await Fr()._OrtAppendExecutionProvider(e,i,l,u,o)!==0&&$r(`Can't append execution provider: ${s}.`)}},Wf=async e=>{let t=Fr(),r=0,n=[],s=e||{};jf(s);try{let a=Yf(s.graphOptimizationLevel??"all"),i=Nf(s.executionMode??"sequential"),o=typeof s.logId=="string"?zs(s.logId,n):0,l=s.logSeverityLevel??2;if(!Number.isInteger(l)||l<0||l>4)throw new Error(`log serverity level is not valid: ${l}`);let u=s.logVerbosityLevel??0;if(!Number.isInteger(u)||u<0||u>4)throw new Error(`log verbosity level is not valid: ${u}`);let p=typeof s.optimizedModelFilePath=="string"?zs(s.optimizedModelFilePath,n):0;if(r=t._OrtCreateSessionOptions(a,!!s.enableCpuMemArena,!!s.enableMemPattern,i,!!s.enableProfiling,0,o,l,u,p),r===0&&$r("Can't create session options."),s.executionProviders&&await Uf(r,s.executionProviders,n),s.enableGraphCapture!==void 0){if(typeof s.enableGraphCapture!="boolean")throw new Error(`enableGraphCapture must be a boolean value: ${s.enableGraphCapture}`);Ml(r,"enableGraphCapture",s.enableGraphCapture.toString(),n)}if(s.freeDimensionOverrides)for(let[d,c]of Object.entries(s.freeDimensionOverrides)){if(typeof d!="string")throw new Error(`free dimension override name must be a string: ${d}`);if(typeof c!="number"||!Number.isInteger(c)||c<0)throw new Error(`free dimension override value must be a non-negative integer: ${c}`);let g=zs(d,n);t._OrtAddFreeDimensionOverride(r,g,c)!==0&&$r(`Can't set a free dimension override: ${d} - ${c}.`)}return s.extra!==void 0&&Xu(s.extra,"",new WeakSet,(d,c)=>{Ml(r,d,c,n)}),[r,n]}catch(a){throw r!==0&&t._OrtReleaseSessionOptions(r)!==0&&$r("Can't release session options."),n.forEach(i=>t._free(i)),a}}}),Bo,Da,$i,Bp,Zu,xp,Ep,Dp,zt=Je(()=>{Bo=e=>{switch(e){case"int8":return 3;case"uint8":return 2;case"bool":return 9;case"int16":return 5;case"uint16":return 4;case"int32":return 6;case"uint32":return 12;case"float16":return 10;case"float32":return 1;case"float64":return 11;case"string":return 8;case"int64":return 7;case"uint64":return 13;case"int4":return 22;case"uint4":return 21;default:throw new Error(`unsupported data type: ${e}`)}},Da=e=>{switch(e){case 3:return"int8";case 2:return"uint8";case 9:return"bool";case 5:return"int16";case 4:return"uint16";case 6:return"int32";case 12:return"uint32";case 10:return"float16";case 1:return"float32";case 11:return"float64";case 8:return"string";case 7:return"int64";case 13:return"uint64";case 22:return"int4";case 21:return"uint4";default:throw new Error(`unsupported data type: ${e}`)}},$i=(e,t)=>{let r=[-1,4,1,1,2,2,4,8,-1,1,2,8,4,8,-1,-1,-1,-1,-1,-1,-1,.5,.5][e],n=typeof t=="number"?t:t.reduce((s,a)=>s*a,1);return r>0?Math.ceil(n*r):void 0},Bp=e=>{switch(e){case"float16":return typeof Float16Array<"u"&&Float16Array.from?Float16Array:Uint16Array;case"float32":return Float32Array;case"uint8":return Uint8Array;case"int8":return Int8Array;case"uint16":return Uint16Array;case"int16":return Int16Array;case"int32":return Int32Array;case"bool":return Uint8Array;case"float64":return Float64Array;case"uint32":return Uint32Array;case"int64":return BigInt64Array;case"uint64":return BigUint64Array;default:throw new Error(`unsupported type: ${e}`)}},Zu=e=>{switch(e){case"verbose":return 0;case"info":return 1;case"warning":return 2;case"error":return 3;case"fatal":return 4;default:throw new Error(`unsupported logging level: ${e}`)}},xp=e=>e==="float32"||e==="float16"||e==="int32"||e==="int64"||e==="uint32"||e==="uint8"||e==="bool"||e==="uint4"||e==="int4",Ep=e=>e==="float32"||e==="float16"||e==="int32"||e==="int64"||e==="uint32"||e==="uint64"||e==="int8"||e==="uint8"||e==="bool"||e==="uint4"||e==="int4",Dp=e=>{switch(e){case"none":return 0;case"cpu":return 1;case"cpu-pinned":return 2;case"texture":return 3;case"gpu-buffer":return 4;case"ml-tensor":return 5;default:throw new Error(`unsupported data location: ${e}`)}}}),Ip,Vf=Je(()=>{cp(),Ip=async e=>{if(typeof e=="string"){let t=await fetch(e);if(!t.ok)throw new Error(`failed to load external data file: ${e}`);let r=t.headers.get("Content-Length"),n=r?parseInt(r,10):0;if(n<1073741824)return new Uint8Array(await t.arrayBuffer());{if(!t.body)throw new Error(`failed to load external data file: ${e}, no response body.`);let s=t.body.getReader(),a;try{a=new ArrayBuffer(n)}catch(o){if(o instanceof RangeError){let l=Math.ceil(n/65536);a=new WebAssembly.Memory({initial:l,maximum:l}).buffer}else throw o}let i=0;for(;;){let{done:o,value:l}=await s.read();if(o)break;let u=l.byteLength;new Uint8Array(a,i,u).set(l),i+=u}return new Uint8Array(a,0,n)}}else return e instanceof Blob?new Uint8Array(await e.arrayBuffer()):e instanceof Uint8Array?e:new Uint8Array(e)}}),Qf,Hf,Kf,qf,Tp,Xf,lr,Ia=Je(()=>{zt(),Qf=["V","I","W","E","F"],Hf=(e,t)=>{console.log(`[${Qf[e]},${new Date().toISOString()}]${t}`)},Tp=(e,t)=>{Kf=e,qf=t},Xf=(e,t)=>{let r=Zu(e),n=Zu(Kf);r>=n&&Hf(r,typeof t=="function"?t():t)},lr=(...e)=>{qf&&Xf(...e)}}),Zf,xo,Te,Ju,Jf,e_,t_,Kt=Je(()=>{Zf=class{static calcMatMulShape(e,t){return e[1]!==t[0]?void 0:[e[0],t[1]]}},xo=class{static calcShape(e,t,r=!1){let n=e.length,s=t.length;if(n===0)return t;if(s===0)return e;let a=Math.max(e.length,t.length),i=new Array(a);if(r){if(n<2||s<2)return;let o=Zf.calcMatMulShape([e[n-2],e[n-1]],[t[s-2],t[s-1]]);if(o===void 0)return;[i[a-2],i[a-1]]=o}for(let o=r?3:1;o<=a;o++){let l=n-o<0?1:e[n-o],u=s-o<0?1:t[s-o];if(l!==u&&l>1&&u>1)return;let p=Math.max(l,u);if(l&&u)i[a-o]=Math.max(l,u);else{if(p>1)return;i[a-o]=0}}return i}static isValidBroadcast(e,t){let r=e.length,n=t.length;if(r>n)return!1;for(let s=1;s<=r;s++)if(e[r-s]!==1&&e[r-s]!==t[n-s])return!1;return!0}},Te=class Xd{static size(t){return Xd.getSizeFromDimensionRange(t,0,t.length)}static convertShape(t,r=4){let n=t.length;if(n===0)return[];let s=new Array(n),a=n-1;for(;a>=0;){if(t[a]%r===0){s[a]=t[a]/r;break}if(r%t[a]!==0)throw new Error("cannot convert shape");s[a]=1,r/=t[a],a--}for(a--;a>=0;a--)s[a]=t[a];return s}static sizeFromDimension(t,r){if(r<0||r>t.length)throw new Error(`invalid dimension of ${r} for sizeFromDimension as Tensor has ${t.length} dimensions.`);return Xd.getSizeFromDimensionRange(t,r,t.length)}static sizeToDimension(t,r){if(r<0||r>t.length)throw new Error(`invalid dimension of ${r} for sizeToDimension as Tensor has ${t.length} dimensions.`);return Xd.getSizeFromDimensionRange(t,0,r)}static getSizeFromDimensionRange(t,r,n){let s=1;for(let a=r;a<n;a++){if(t[a]<0)throw new Error("cannot get valid size from specified dimension range. Most likely the range contains negative values in them.");s*=Number(t[a])}return s}static computeStrides(t){let r=t.length;if(r===0)return[];if(r===1)return[1];let n=new Array(r);n[r-1]=1,n[r-2]=t[r-1];for(let s=r-3;s>=0;--s)n[s]=n[s+1]*t[s+1];return n}static normalizeAxis(t,r){if(t<-r&&t>=r)throw new Error("unsupported axis for this operation.");return t<0?t+r:t}static normalizeAxes(t,r){return t.map(n=>this.normalizeAxis(n,r??t.length))}static sortBasedOnPerm(t,r){return r?r.map(n=>t[n]):t.slice().reverse()}static padShape(t,r){let n=t.length;return t.map((s,a)=>s+r[a]+r[a+n])}static areEqual(t,r){return t.length!==r.length?!1:t.every((n,s)=>n===r[s])}},Ju=class Uu{static adjustPoolAttributes(t,r,n,s,a,i){if(!t&&n.length!==r.length-2)throw new Error("length of specified kernel shapes should be 2 less than length of input dimensions");if(t)for(let o=0;o<r.length-2;o++)o>=n.length?n.push(r[o+2]):n[o]=r[o+2];for(let o=0;o<n.length;o++)if(o<s.length){if(s[o]<0)throw new Error("strides should be greater than or equal to 1")}else s.push(1);for(let o=0;o<n.length;o++)if(o<a.length){if(a[o]<0)throw new Error("dilations should be greater than or equal to 1")}else a.push(1);for(let o=0;o<n.length*2;o++)if(o<i.length){if(i[o]<0)throw new Error("pad should be greater than or equal to 1")}else i.push(0);for(let o=0;o<n.length;o++){if(n[o]<=0)throw new Error("kernel shapes need to be greater than 0");if(i[o]>=n[o]||i[o+n.length]>=n[o])throw new Error("pads should be smaller than kernel")}}static adjustPadsBasedOnAutoPad(t,r,n,s,a,i,o){if(o){if(a.length!==2*(t.length-2))throw new Error("length of pads should be twice the length of data dimensions");if(r.length!==t.length-2)throw new Error("length of strides should be the length of data dimensions");if(s.length!==t.length-2)throw new Error("length of kernel shapes should be the length of data dimensions");for(let l=0;l<t.length-2;l++)Uu.adjustPadAndReturnShape(t[l+(i?1:2)],r[l],n[l],s[l],a,l,l+t.length-2,o)}}static computePoolOutputShape(t,r,n,s,a,i,o){if(r.length<=0)throw new Error("input shape must be of size greater than 0");let l=[r[0],r[1]];return Uu.computeShapeHelper(t,r,l,n,s,a,i,o),l}static computeConvOutputShape(t,r,n,s,a,i,o){if(t.length<=0||r.length<=0)throw new Error("invalid input tensor dims or invalid filter tensor dims");let l=[t[0],r[0]];return Uu.computeShapeHelper(!1,t,l,n,s,a,i,o),l}static computeShapeHelper(t,r,n,s,a,i,o,l){if(t)for(let u=0;u<r.length-2;u++)n.push(1);else for(let u=0;u<r.length-2;u++)n.push(Uu.adjustPadAndReturnShape(r[u+2],s[u],a[u],i[u],o,u,u+r.length-2,l))}static adjustPadAndReturnShape(t,r,n,s,a,i,o,l){let u=n*(s-1)+1;if(l&&l!=="NOTSET")switch(l){case"VALID":return a[i]=0,a[o]=0,Math.floor((t-u)/r+1);case"SAME_LOWER":case"SAME_UPPER":if(n!==1)throw new Error("Dilation not supported for SAME_UPPER or SAME_LOWER");{let p=((t+r-1)/r-1)*r+s-t;return a[i]=Math.floor(l==="SAME_LOWER"?(p+1)/2:p/2),a[o]=p-a[i],Math.floor((t+p-s)/r+1)}default:throw new Error("Unsupported AutoPad type")}else return Math.floor((t+a[i]+a[o]-u)/r+1)}},Jf=class{static getShapeOfGemmResult(e,t,r,n,s){if(e.length!==2||r.length!==2)throw new Error("shape need to be of size 2");let a,i,o;t?(a=e[1],i=e[0]):(a=e[0],i=e[1]);let l=-1;if(n?(o=r[0],l=1):(o=r[1],l=0),r[l]!==i)throw new Error("dimension mismatch");if(a<=0||o<=0||i<=0)throw new Error("invalid shape specified");if(s&&!xo.isValidBroadcast(s,[a,o]))throw new Error("gemm: invalid bias shape for broadcast");return[a,o,i]}},e_=-34028234663852886e22,t_=34028234663852886e22}),Cp,r_=Je(()=>{zt(),Cp=(e,t)=>new(Bp(t))(e)}),$p,Sp,n_,kp,s_,Op,Gp,zp,a_,i_,Bk=Je(()=>{Ia(),$p=(e,t=!0)=>
9{if(e.byteLength%8!==0)throw new Error("Invalid Uint8Array length - must be a multiple of 8 (BigInt).");let r=e.byteLength/8,n=new BigInt64Array(e.buffer,e.byteOffset,r),s=new Int32Array(r);for(let a=0;a<r;a++){let i=n[a];if(i>2147483647n||i<-2147483648n)throw new Error(`Overflow occurred when converting BigInt to Int32 at index ${a}: ${i}`);s[a]=Number(i)}return t?new Uint8Array(s.buffer):s},Sp=(e,t=!0)=>{if(e.byteLength%4!==0)throw new Error("Invalid Uint8Array length - must be a multiple of 4 (Int32).");let r=e.byteLength/4,n=new Int32Array(e.buffer,e.byteOffset,r),s=BigInt64Array.from(n,BigInt);return t?new Uint8Array(s.buffer):s},n_=1,kp=()=>n_++,s_=new Map([["float32",32],["float16",16],["int32",32],["uint32",32],["int64",64],["uint64",64],["int8",8],["uint8",8],["int4",4],["uint4",4]]),Op=(e,t)=>{let r=s_.get(e);if(!r)throw new Error("Unsupported data type.");return t.length>0?Math.ceil(t.reduce((n,s)=>n*s)*r/8):0},Gp=class{constructor(e){this.shouldConvertInt64toInt32=!1,this.isInt64ToInt32Converted=!1;let{sessionId:t,context:r,tensor:n,dataType:s,shape:a,shouldConvertInt64toInt32:i=!1}=e;this.sessionId=t,this.mlContext=r,this.mlTensor=n,this.dataType=s,this.tensorShape=a,this.shouldConvertInt64toInt32=i}get tensor(){return this.mlTensor}get type(){return this.dataType}get shape(){return this.tensorShape}get byteLength(){return Op(this.dataType,this.tensorShape)}destroy(){lr("verbose",()=>"[WebNN] TensorWrapper.destroy"),this.mlTensor.destroy()}write(e){this.mlContext.writeTensor(this.mlTensor,e)}async read(e,t){if(e){let r=await this.mlContext.readTensor(this.mlTensor),n=Sp(new Uint8Array(r));if(t){(t instanceof ArrayBuffer?new Uint8Array(t):new Uint8Array(t.buffer,t.byteOffset,t.byteLength)).set(n);return}else return n.buffer}else return t?this.mlContext.readTensor(this.mlTensor,t):this.mlContext.readTensor(this.mlTensor)}canReuseTensor(e,t,r){return this.mlContext===e&&this.dataType===t&&this.tensorShape.length===r.length&&this.tensorShape.every((n,s)=>n===r[s])}setIsInt64ToInt32Converted(e){this.isInt64ToInt32Converted=e}},zp=class{constructor(e,t){this.tensorManager=e,this.wrapper=t}get tensorWrapper(){return this.wrapper}releaseTensor(){this.tensorWrapper&&(this.tensorManager.releaseTensor(this.tensorWrapper),this.wrapper=void 0)}async ensureTensor(e,t,r,n){let s=t,a=this.tensorManager.getMLContext(e),i=s==="int64"&&!a.opSupportLimits().input.dataTypes.includes("int64");if(i&&(s="int32",lr("verbose",()=>"[WebNN] TensorIdTracker.ensureTensor: convert dataType from int64 to int32")),this.wrapper){if(this.wrapper.canReuseTensor(a,s,r))return this.wrapper.tensor;if(n){if(this.wrapper.byteLength!==Op(s,r))throw new Error("Unable to copy data to tensor with different size.");this.activeUpload=new Uint8Array(await this.wrapper.read())}this.tensorManager.releaseTensor(this.wrapper)}let o=typeof MLTensorUsage>"u"?void 0:MLTensorUsage.READ|MLTensorUsage.WRITE;return this.wrapper=await this.tensorManager.getCachedTensor(e,s,r,o,!0,!0,i),n&&this.activeUpload&&(this.wrapper.write(this.activeUpload),this.activeUpload=void 0),this.wrapper.tensor}upload(e){let t=e;if(this.wrapper)if(this.wrapper.shouldConvertInt64toInt32&&(t=$p(e,!0),this.wrapper.setIsInt64ToInt32Converted(!0)),t.byteLength===this.wrapper.byteLength){this.wrapper.write(t);return}else lr("verbose",()=>"Data size does not match tensor size. Releasing tensor."),this.releaseTensor();this.activeUpload?this.activeUpload.set(t):this.activeUpload=new Uint8Array(t)}async download(e){if(this.activeUpload){let t=this.wrapper?.isInt64ToInt32Converted?Sp(this.activeUpload):this.activeUpload;if(e){e instanceof ArrayBuffer?new Uint8Array(e).set(t):new Uint8Array(e.buffer,e.byteOffset,e.byteLength).set(t);return}else return t.buffer}if(!this.wrapper)throw new Error("Tensor has not been created.");return e?this.wrapper.read(this.wrapper?.shouldConvertInt64toInt32,e):this.wrapper.read(this.wrapper?.shouldConvertInt64toInt32)}},a_=class{constructor(e){this.backend=e,this.tensorTrackersById=new Map,this.freeTensors=[],this.externalTensors=new Set}getMLContext(e){let t=this.backend.getMLContext(e);if(!t)throw new Error("MLContext not found for session.");return t}
9reserveTensorId(){let e=kp();return this.tensorTrackersById.set(e,new zp(this)),e}releaseTensorId(e){let t=this.tensorTrackersById.get(e);t&&(this.tensorTrackersById.delete(e),t.tensorWrapper&&this.releaseTensor(t.tensorWrapper))}async ensureTensor(e,t,r,n,s){lr("verbose",()=>`[WebNN] TensorManager.ensureTensor {tensorId: ${t}, dataType: ${r}, shape: ${n}, copyOld: ${s}}`);let a=this.tensorTrackersById.get(t);if(!a)throw new Error("Tensor not found.");return a.ensureTensor(e,r,n,s)}upload(e,t){let r=this.tensorTrackersById.get(e);if(!r)throw new Error("Tensor not found.");r.upload(t)}async download(e,t){lr("verbose",()=>`[WebNN] TensorManager.download {tensorId: ${e}, dstBuffer: ${t?.byteLength}}`);let r=this.tensorTrackersById.get(e);if(!r)throw new Error("Tensor not found.");return r.download(t)}releaseTensorsForSession(e){for(let t of this.freeTensors)t.sessionId===e&&t.destroy();this.freeTensors=this.freeTensors.filter(t=>t.sessionId!==e)}registerTensor(e,t,r,n){let s=this.getMLContext(e),a=kp(),i=new Gp({sessionId:e,context:s,tensor:t,dataType:r,shape:n});return this.tensorTrackersById.set(a,new zp(this,i)),this.externalTensors.add(i),a}async getCachedTensor(e,t,r,n,s,a,i=!1){let o=this.getMLContext(e);for(let[u,p]of this.freeTensors.entries())if(p.canReuseTensor(o,t,r)){lr("verbose",()=>`[WebNN] Reusing tensor {dataType: ${t}, shape: ${r}}`);let d=this.freeTensors.splice(u,1)[0];return d.sessionId=e,d}lr("verbose",()=>`[WebNN] MLContext.createTensor {dataType: ${t}, shape: ${r}}`);let l=await o.createTensor({dataType:t,shape:r,dimensions:r,usage:n,writable:s,readable:a});return new Gp({sessionId:e,context:o,tensor:l,dataType:t,shape:r,shouldConvertInt64toInt32:i})}releaseTensor(e){this.externalTensors.has(e)&&this.externalTensors.delete(e),this.freeTensors.push(e)}},i_=(...e)=>new a_(...e)}),ec,o_,l_,xk=Je(()=>{zt(),Ci(),r_(),Bk(),Ia(),ec=new Map([[1,"float32"],[10,"float16"],[6,"int32"],[12,"uint32"],[7,"int64"],[13,"uint64"],[22,"int4"],[21,"uint4"],[3,"int8"],[2,"uint8"],[9,"uint8"]]),o_=(e,t)=>{if(e===t)return!0;if(e===void 0||t===void 0)return!1;let r=Object.keys(e).sort(),n=Object.keys(t).sort();return r.length===n.length&&r.every((s,a)=>s===n[a]&&e[s]===t[s])},l_=class{constructor(e){this.tensorManager=i_(this),this.mlContextBySessionId=new Map,this.sessionIdsByMLContext=new Map,this.mlContextCache=[],this.sessionGraphInputs=new Map,this.temporaryGraphInputs=[],this.temporarySessionTensorIds=new Map,Tp(e.logLevel,!!e.debug)}get currentSessionId(){if(this.activeSessionId===void 0)throw new Error("No active session");return this.activeSessionId}onRunStart(e){lr("verbose",()=>`[WebNN] onRunStart {sessionId: ${e}}`),this.activeSessionId=e}onRunEnd(e){lr("verbose",()=>`[WebNN] onRunEnd {sessionId: ${e}}`);let t=this.temporarySessionTensorIds.get(e);if(t){for(let r of t)lr("verbose",()=>`[WebNN] releasing temporary tensor {tensorId: ${r}}`),this.tensorManager.releaseTensorId(r);this.temporarySessionTensorIds.delete(e),this.activeSessionId=void 0}}async createMLContext(e){if(e instanceof GPUDevice){let r=this.mlContextCache.findIndex(n=>n.gpuDevice===e);if(r!==-1)return this.mlContextCache[r].mlContext;{let n=await navigator.ml.createContext(e);return this.mlContextCache.push({gpuDevice:e,mlContext:n}),n}}else if(e===void 0){let r=this.mlContextCache.findIndex(n=>n.options===void 0&&n.gpuDevice===void 0);if(r!==-1)return this.mlContextCache[r].mlContext;{let n=await navigator.ml.createContext();return this.mlContextCache.push({mlContext:n}),n}}let t=this.mlContextCache.findIndex(r=>o_(r.options,e));if(t!==-1)return this.mlContextCache[t].mlContext;{let r=await navigator.ml.createContext(e);return this.mlContextCache.push({options:e,mlContext:r}),r}}registerMLContext(e,t){this.mlContextBySessionId.set(e,t);let r=this.sessionIdsByMLContext.get(t);r||(r=new Set,this.sessionIdsByMLContext.set(t,r)),r.add(e),this.temporaryGraphInputs.length>0&&(this.sessionGraphInputs.set(e,this.temporaryGraphInputs),this.temporaryGraphInputs=[])}onReleaseSession(e){this.sessionGraphInputs.delete(e);let t=this.mlContextBySessionId.get(e);if(!t)return;this.tensorManager.releaseTensorsForSession(e),this.mlContextBySessionId.delete(e);let r=this.sessionIdsByMLContext.get(t);if(r.delete(e),r.size===0){this.sessionIdsByMLContext.delete(t);let n=this.mlContextCache.findIndex(s=>s.mlContext===t);n!==-1&&this.mlContextCache.splice(n,1)}}getMLContext(e){return this.mlContextBySessionId.get(e)}reserveTensorId(){return this.tensorManager.reserveTensorId()}releaseTensorId(e){lr("verbose",()=>`[WebNN] releaseTensorId {tensorId: ${e}}`),this.tensorManager.releaseTensorId(e)}async ensureTensor(e,t,r,n,s){let a=ec.get(r);if(!a)throw new Error(`Unsupported ONNX data type: ${r}`);return this.tensorManager.ensureTensor(e??this.currentSessionId,t,a,n,s)}async createTemporaryTensor(e,t,r){lr("verbose",()=>`[WebNN] createTemporaryTensor {onnxDataType: ${t}, shape: ${r}}`);let n=ec.get(t);if(!n)throw new Error(`Unsupported ONNX data type: ${t}`);let s=this.tensorManager.reserveTensorId();await this.tensorManager.ensureTensor(e,s,n,r,!1);let a=this.temporarySessionTensorIds.get(e);return a?a.push(s):this.temporarySessionTensorIds.set(e,[s]),s}uploadTensor(e,t){if(!Fr().shouldTransferToMLTensor)throw new Error("Trying to upload to a MLTensor while shouldTransferToMLTensor is false");lr("verbose",()=>`[WebNN] uploadTensor {tensorId: ${e}, data: ${t.byteLength}}`),this.tensorManager.upload(e,t)}async downloadTensor(e,t){return this.tensorManager.download(e,t)}createMLTensorDownloader(e,t){return async()=>{let r=await this.tensorManager.download(e);return Cp(r,t)}}registerMLTensor(e,t,r,n){let s=ec.get(r);if(!s)throw new Error(`Unsupported ONNX data type: ${r}`);let a=this.tensorManager.registerTensor(e,t,s,n);return lr("verbose",()=>`[WebNN] registerMLTensor {tensor: ${t}, dataType: ${s}, dimensions: ${n}} -> {tensorId: ${a}}`),a}registerMLConstant(e,t,r,n,s,a,i=!1){if(!a)throw new Error("External mounted files are not available.");let o=e;e.startsWith("./")&&(o=e.substring(2));let l=a.get(o);if(!l)throw new Error(`File with name ${o} not found in preloaded files.`);if(t+r>l.byteLength)throw new Error("Out of bounds: data offset and length exceed the external file data size.");let u=l.slice(t,t+r).buffer,p;switch(s.dataType){case"float32":p=new Float32Array(u);break;case"float16":p=typeof Float16Array<"u"&&Float16Array.from?new Float16Array(u):new Uint16Array(u);break;case"int32":p=new Int32Array(u);break;case"uint32":p=new Uint32Array(u);break;case"int64":i?(p=$p(new Uint8Array(u),!1),s.dataType="int32"):p=new BigInt64Array(u);break;case"uint64":p=new BigUint64Array(u);break;case"int8":p=new Int8Array(u);break;case"int4":case"uint4":case"uint8":p=new Uint8Array(u);break;default:throw new Error(`Unsupported data type: ${s.dataType} in creating WebNN Constant from external data.`)}return lr("verbose",()=>`[WebNN] registerMLConstant {dataType: ${s.dataType}, shape: ${s.shape}}} ${i?"(Note: it was int64 data type and registered to int32 as workaround)":""}`),n.constant(s,p)}registerGraphInput(e){this.temporaryGraphInputs.push(e)}isGraphInput(e,t){let r=this.sessionGraphInputs.get(e);return r?r.includes(t):!1}isInt64Supported(e){return!!this.mlContextBySessionId.get(e)?.opSupportLimits().input.dataTypes.includes("int64")}flush(){}}}),Fp=Je(()=>{}),Lp,tc,rc,u_,c_,Rp,Yp,d_,p_,Ek=Je(()=>{Ia(),Fp(),Lp=new Map([[64,250],[128,200],[256,200],[512,200],[2048,230],[4096,200
vendor: 20,596 bytes, lines 9-94
9],[8192,50],[16384,50],[32768,50],[65536,50],[131072,50],[262144,50],[524288,50],[1048576,50],[2097152,30],[4194304,20],[8388608,10],[12582912,10],[16777216,10],[26214400,15],[33554432,22],[44236800,2],[58982400,6],[67108864,6],[134217728,6],[167772160,6]]),tc=[],rc=e=>Math.ceil(Number(e)/16)*16,u_=e=>{for(let t=0;t<tc.length;t++){let r=tc[t];if(e<=r)return r}return Math.ceil(e/16)*16},c_=1,Rp=()=>c_++,Yp=async(e,t,r,n)=>{let s=rc(r),a=e.device.createBuffer({size:s,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ});try{let i=e.getCommandEncoder();e.endComputePass(),i.copyBufferToBuffer(t,0,a,0,s),e.flush(),await a.mapAsync(GPUMapMode.READ);let o=a.getMappedRange();if(n){let l=n();return l.set(new Uint8Array(o,0,r)),l}else return new Uint8Array(o.slice(0,r))}finally{a.destroy()}},d_=class{constructor(e){this.backend=e,this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map,this.buffersPending=[],this.capturedPendingBuffers=new Map;for(let[t]of Lp)tc.push(t),this.freeBuffers.set(t,[]),this.freeUniformBuffers.set(t,[]);this.sessionCount=0}upload(e,t){let r=t.buffer,n=t.byteOffset,s=t.byteLength,a=rc(s),i=this.storageCache.get(e);if(!i)throw new Error("gpu data for uploading does not exist");if(Number(i.originalSize)!==s)throw new Error(`inconsistent data size. gpu data size=${i.originalSize}, data size=${s}`);let o=this.backend.device.createBuffer({mappedAtCreation:!0,size:a,usage:GPUBufferUsage.MAP_WRITE|GPUBufferUsage.COPY_SRC}),l=o.getMappedRange();new Uint8Array(l).set(new Uint8Array(r,n,s)),o.unmap();let u=this.backend.device.createCommandEncoder();u.copyBufferToBuffer(o,0,i.gpuData.buffer,0,a),this.backend.device.queue.submit([u.finish()]),o.destroy(),lr("verbose",()=>`[WebGPU] GpuDataManager.upload(id=${e})`)}memcpy(e,t){let r=this.storageCache.get(e);if(!r)throw new Error("source gpu data for memcpy does not exist");let n=this.storageCache.get(t);if(!n)throw new Error("destination gpu data for memcpy does not exist");if(r.originalSize!==n.originalSize)throw new Error("inconsistent source and destination gpu data size");let s=rc(r.originalSize),a=this.backend.getCommandEncoder();this.backend.endComputePass(),a.copyBufferToBuffer(r.gpuData.buffer,0,n.gpuData.buffer,0,s)}registerExternalBuffer(e,t,r){let n;if(r){if(n=r[0],e===r[1])return lr("verbose",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${t}) => id=${n}, buffer is the same, skip.`),n;if(this.backend.capturedCommandList.has(this.backend.currentSessionId))throw new Error(`Registering a different external buffer under graph capture mode is not supported yet. 10 Please use the previous external buffer!`)}else n=Rp();return this.storageCache.set(n,{gpuData:{id:n,type:0,buffer:e},originalSize:t}),lr("verbose",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${t}) => id=${n}, registered.`),n}unregisterExternalBuffer(e){e!==void 0&&(this.storageCache.delete(e),lr("verbose",()=>`[WebGPU] GpuDataManager.unregisterExternalBuffer() => id=${e}`))}create(e,t=GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST){let r=u_(e),n,s=(t&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE,a=(t&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM;if(s||a){let o=(s?this.freeBuffers:this.freeUniformBuffers).get(r);o?o.length>0?n=o.pop():n=this.backend.device.createBuffer({size:r,usage:t}):n=this.backend.device.createBuffer({size:r,usage:t})}else n=this.backend.device.createBuffer({size:r,usage:t});let i={id:Rp(),type:0,buffer:n};return this.storageCache.set(i.id,{gpuData:i,originalSize:Number(e)}),lr("verbose",()=>`[WebGPU] GpuDataManager.create(size=${e}) => id=${i.id}`),i}get(e){return this.storageCache.get(e)?.gpuData}release(e){let t=typeof e=="bigint"?Number(e):e,r=this.storageCache.get(t);if(!r){if(this.storageCache.size===0)return 0;throw new Error("releasing data does not exist")}return lr("verbose",()=>`[WebGPU] GpuDataManager.release(id=${t}), gpuDataId=${r.gpuData.id}`),this.storageCache.delete(t),this.buffersPending.push(r.gpuData.buffer),r.originalSize}async download(e,t){let r=this.storageCache.get(Number(e));if(!r)throw new Error("data does not exist");await Yp(this.backend,r.gpuData.buffer,r.originalSize,t)}refreshPendingBuffers(){if(this.buffersPending.length!==0)if(this.backend.sessionStatus==="default"){for(let e of this.buffersPending){let t=Lp.get(e.size);if((e.usage&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE){let r=this.freeBuffers.get(e.size)||[];t===void 0||r.length>=t?e.destroy():r.push(e)}else if((e.usage&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM){let r=this.freeUniformBuffers.get(e.size)||[];t===void 0||r.length>=t?e.destroy():r.push(e)}else e.destroy()}this.buffersPending=[]}else{let e=this.capturedPendingBuffers.get(this.backend.currentSessionId);e||(e=[],this.capturedPendingBuffers.set(this.backend.currentSessionId,e));for(let t of this.buffersPending)e.push(t);this.buffersPending=[]}}dispose(){this.freeBuffers.forEach(e=>{e.forEach(t=>{t.destroy()})}),this.freeUniformBuffers.forEach(e=>{e.forEach(t=>{t.destroy()})}),this.storageCache.forEach(e=>{e.gpuData.buffer.destroy()}),this.capturedPendingBuffers.forEach(e=>{e.forEach(t=>{t.destroy()})}),this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map,this.capturedPendingBuffers=new Map}onCreateSession(){this.sessionCount+=1}onReleaseSession(e){let t=this.capturedPendingBuffers.get(e);t&&(t.forEach(r=>{r.destroy()}),this.capturedPendingBuffers.delete(e)),this.sessionCount-=1,this.sessionCount===0&&(lr("warning",()=>"[WebGPU] Clearing webgpu buffer cache"),this.storageCache.forEach(r=>{r.gpuData.buffer.destroy()}),this.storageCache=new Map)}},p_=(...e)=>new d_(...e)}),g_,br,an=Je(()=>{g_=class{constructor(e){Object.assign(this,e)}get cacheKey(){return this.key||(this.key=Object.getOwnPropertyNames(this).sort().map(e=>`${this[e]}`).join(";")),this.key}},br=e=>new g_(e)}),Eo,nc,vn,Ln,Dt,Jr,Np,Do,Wa,Bt,vl,Ye,bt,A_,jp,h_,m_,er=Je(()=>{zt(),Kt(),Eo=64,nc=(e,t)=>{if(t===3)throw new Error("vec3 has same alignment as vec4, use vec4 instead");switch(Number(e)){case 10:return t>1?`vec${t}<f16>`:"f16";case 1:return t>1?`vec${t}<f32>`:"f32";case 6:return t>1?`vec${t}<i32>`:"i32";case 12:return t>1?`vec${t}<u32>`:"u32";case 7:if(t>1)throw new Error("currently not supported vecX of uint64 yet");return["vec2<u32>","i32"];case 13:if(t>1)throw new Error("currently not supported vecX of uint64 yet");return["vec2<u32>","u32"];case 9:if(t!==4)throw new Error("bool must be vec4");return["u32","vec4<bool>"];case 22:return"i32";case 21:return"u32";default:throw new Error(`Unknown data type: ${e}`)}},vn=(e,t=1)=>{let r=nc(e,t);return typeof r=="string"?r:r[0]},Ln=(e,t=1)=>{let r=nc(e,t);return typeof r=="string"?r:r[1]},Dt=(...e)=>{let t=[];return e.forEach(r=>{r.length!==0&&t.push({type:12,data:r},{type:12,data:Te.computeStrides(r)})}),t},Jr=e=>e%4===0?4:e%2===0?2:1,Np=(e="f32",t,r="0")=>!t||t===1?`${e}(${r})`:`vec${t}<${e}>(${r})`,Do=(e,t,r)=>e==="f32"?r:t===1?`f32(${r})`:`vec${t}<f32>(${r})`,Wa=(e,t)=>t===4?`(${e}.x + ${e}.y + ${e}.z + ${e}.w)`:t===2?`(${e}.x + ${e}.y)`:t===3?`(${e}.x + ${e}.y + ${e}.z)`:e,Bt=(e,t,r,n)=>e.startsWith("uniforms.")&&r>4?typeof t=="string"?n==="f16"?`${e}[(${t}) / 8][(${t}) % 8 / 4][(${t}) % 8 % 4]`:`${e}[(${t}) / 4][(${t}) % 4]`:n==="f16"?`${e}[${Math.floor(t/8)}][${Math.floor(t%8/4)}][${t%8%4}]`:`${e}[${Math.floor(t/4)}][${t%4}]`:r>1?`${e}[${t}]`:e,vl=(e,t,r,n,s)=>{let a=typeof r=="number",i=a?r:r.length,o=[...new Array(i).keys()],l=i<2?"u32":i<=4?`vec${i}<u32>`:`array<u32, ${i}>`,u=nc(t,s),p=typeof u=="string"?u:u[1],d=typeof u=="string"?u:u[0],c={indices:l,value:p,storage:d,tensor:t},g=q=>typeof q=="string"?q:`${q}u`,A={offsetToIndices:!1,indicesToOffset:!1,broadcastedIndicesToOffset:!1,set:!1,setByIndices:!1,get:!1,getByIndices:!1},m=a?"uniforms.":"",B=`${m}${e}_shape`,f=`${m}${e}_strides`,h="";for(let q=0;q<i-1;q++)h+=` 11 let dim${q} = current / ${Bt(f,q,i)}; 12 let rest${q} = current % ${Bt(f,q,i)}; 13 indices[${q}] = dim${q}; 14 current = rest${q}; 15 `;h+=`indices[${i-1}] = current;`;let P=i<2?"":` 16 fn o2i_${e}(offset: u32) -> ${c.indices} { 17 var indices: ${c.indices}; 18 var current = offset; 19 ${h} 20 return indices; 21 }`,_=q=>(A.offsetToIndices=!0,i<2?q:`o2i_${e}(${q})`),w=[];if(i>=2)for(let q=i-1;q>=0;q--)w.push(`${Bt(f,q,i)} * (indices[${q}])`);let b=i<2?"":` 22 fn i2o_${e}(indices: ${c.indices}) -> u32 { 23 return ${w.join("+")}; 24 }`,v=q=>(A.indicesToOffset=!0,i<2?q:`i2o_${e}(${q})`),y=(...q)=>i===0?"0u":`${c.indices}(${q.map(g).join(",")})`,$=(q,V)=>i<2?`${q}`:`${Bt(q,V,i)}`,k=(q,V,U)=>i<2?`${q}=${U};`:`${Bt(q,V,i)}=${U};`,W={},j=(q,V)=>{A.broadcastedIndicesToOffset=!0;let U=`${V.name}broadcastedIndicesTo${e}Offset`;if(U in W)return`${U}(${q})`;let N=[];for(let oe=i-1;oe>=0;oe--){let fe=V.indicesGet("outputIndices",oe+V.rank-i);N.push(`${$(f,oe)} * (${fe} % ${$(B,oe)})`)}return W[U]=`fn ${U}(outputIndices: ${V.type.indices}) -> u32 { 25 return ${N.length>0?N.join("+"):"0u"}; 26 }`,`${U}(${q})`},F=(q,V)=>(()=>{if(c.storage===c.value)return`${e}[${q}]=${V};`;if(c.storage==="vec2<u32>"&&c.value==="i32")return`${e}[${q}]=vec2<u32>(u32(${V}), select(0u, 0xFFFFFFFFu, ${V} < 0));`;if(c.storage==="vec2<u32>"&&c.value==="u32")return`${e}[${q}]=vec2<u32>(u32(${V}), 0u);`;if(c.storage==="u32"&&c.value==="vec4<bool>")return`${e}[${q}]=dot(vec4<u32>(0x1, 0x100, 0x10000, 0x1000000), vec4<u32>(${V}));`;throw new Error(`not supported combination of storage type ${c.storage} and value type ${c.value} yet`)})(),R=q=>(()=>{if(c.storage===c.value)return`${e}[${q}]`;if(c.storage==="vec2<u32>"&&c.value==="i32")return`i32(${e}[${q}].x)`;if(c.storage==="vec2<u32>"&&c.value==="u32")return`u32(${e}[${q}].x)`;if(c.storage==="u32"&&c.value==="vec4<bool>")return`vec4<bool>(bool(${e}[${q}] & 0xFFu), bool(${e}[${q}] & 0xFF00u), bool(${e}[${q}] & 0xFF0000u), bool(${e}[${q}] & 0xFF000000u))`;throw new Error(`not supported combination of storage type ${c.storage} and value type ${c.value} yet`)})(),L=i<2?"":` 27 fn get_${e}ByIndices(indices: ${c.indices}) -> ${p} { 28 return ${R(`i2o_${e}(indices)`)}; 29 }`,Q=i<2?"":(()=>{let q=o.map(U=>`d${U}: u32`).join(", "),V=o.map(U=>`d${U}`).join(", ");return` 30 fn get_${e}(${q}) -> ${p} { 31 return get_${e}ByIndices(${y(V)}); 32 }`})(),ne=(...q)=>{if(q.length!==i)throw new Error(`indices length must be ${i}`);let V=q.map(g).join(",");return i===0?R("0u"):i===1?R(V[0]):(A.get=!0,A.getByIndices=!0,A.indicesToOffset=!0,`get_${e}(${V})`)},re=q=>i<2?R(q):(A.getByIndices=!0,A.indicesToOffset=!0,`get_${e}ByIndices(${q})`),ce=i<2?"":` 33 fn set_${e}ByIndices(indices: ${c.indices}, value: ${p}) { 34 ${F(`i2o_${e}(indices)`,"value")} 35 }`,ge=i<2?"":(()=>{let q=o.map(U=>`d${U}: u32`).join(", "),V=o.map(U=>`d${U}`).join(", ");return` 36 fn set_${e}(${q}, value: ${p}) { 37 set_${e}ByIndices(${y(V)}, value); 38 }`})();return{impl:()=>{let q=[],V=!1;return A.offsetToIndices&&(q.push(P),V=!0),A.indicesToOffset&&(q.push(b),V=!0),A.broadcastedIndicesToOffset&&(Object.values(W).forEach(U=>q.push(U)),V=!0),A.set&&(q.push(ge),V=!0),A.setByIndices&&(q.push(ce),V=!0),A.get&&(q.push(Q),V=!0),A.getByIndices&&(q.push(L),V=!0),!a&&V&&q.unshift(`const ${B} = ${c.indices}(${r.join(",")});`,`const ${f} = ${c.indices}(${Te.computeStrides(r).join(",")});`),q.join(` 39`)},type:c,offsetToIndices:_,indicesToOffset:v,broadcastedIndicesToOffset:j,indices:y,indicesGet:$,indicesSet:k,set:(...q)=>{if(q.length!==i+1)throw new Error(`indices length must be ${i}`);let V=q[i];if(typeof V!="string")throw new Error("value must be string");let U=q.slice(0,i).map(g).join(",");return i===0?F("0u",V):i===1?F(U[0],V):(A.set=!0,A.setByIndices=!0,A.indicesToOffset=!0,`set_${e}(${U}, ${V})`)},setByOffset:F,setByIndices:(q,V)=>i<2?F(q,V):(A.setByIndices=!0,A.indicesToOffset=!0,`set_${e}ByIndices(${q}, ${V});`),get:ne,getByOffset:R,getByIndices:re,usage:n,name:e,strides:f,shape:B,rank:i}},Ye=(e,t,r,n=1)=>vl(e,t,r,"input",n),bt=(e,t,r,n=1)=>vl(e,t,r,"output",n),A_=(e,t,r)=>vl(e,t,r,"atomicOutput",1),jp=(e,t,r,n=1)=>vl(e,t,r,"internal",n),h_=class{constructor(e,t){this.normalizedDispatchGroup=e,this.limits=t,this.internalVariables=[],this.variables=[],this.uniforms=[],this.variableIndex=0}guardAgainstOutOfBoundsWorkgroupSizes(e){return`if (global_idx >= ${typeof e=="number"?`${e}u`:e}) { return; }`}mainStart(e=Eo){let t=typeof e=="number"?e:e[0],r=typeof e=="number"?1:e[1],n=typeof e=="number"?1:e[2];if(t>this.limits.maxComputeWorkgroupSizeX||r>this.limits.maxComputeWorkgroupSizeY||n>this.limits.maxComputeWorkgroupSizeZ)throw new Error(`workgroup size [${t}, ${r}, ${n}] exceeds the maximum workgroup size [${this.limits.maxComputeWorkgroupSizeX}, ${this.limits.maxComputeWorkgroupSizeY}, ${this.limits.maxComputeWorkgroupSizeZ}].`);if(t*r*n>this.limits.maxComputeInvocationsPerWorkgroup)throw new Error(`workgroup size [${t}, ${r}, ${n}] exceeds the maximum workgroup invocations ${this.limits.maxComputeInvocationsPerWorkgroup}.`);let s=this.normalizedDispatchGroup[1]===1&&this.normalizedDispatchGroup[2]===1,a=s?`@builtin(global_invocation_id) global_id : vec3<u32>, 40 @builtin(workgroup_id) workgroup_id : vec3<u32>, 41 @builtin(local_invocation_index) local_idx : u32, 42 @builtin(local_invocation_id) local_id : vec3<u32>`:`@builtin(global_invocation_id) global_id : vec3<u32>, 43 @builtin(local_invocation_id) local_id : vec3<u32>, 44 @builtin(local_invocation_index) local_idx : u32, 45 @builtin(workgroup_id) workgroup_id : vec3<u32>, 46 @builtin(num_workgroups) num_workgroups : vec3<u32>`,i=s?`let global_idx = global_id.x; 47 let workgroup_index = workgroup_id.x;`:`let workgroup_index = workgroup_id.z * num_workgroups[0] * num_workgroups[1] + 48 workgroup_id.y * num_workgroups[0] + workgroup_id.x; 49 let global_idx = workgroup_index * ${t*r*n}u + local_idx;`;return`@compute @workgroup_size(${t}, ${r}, ${n}) 50 fn main(${a}) { 51 ${i} 52 `}appendVariableUniforms(e){e.rank!==0&&(e.shape.startsWith("uniforms.")&&this.uniforms.push({name:e.shape.replace("uniforms.",""),type:"u32",length:e.rank}),e.strides.startsWith("uniforms.")&&this.uniforms.push({name:e.strides.replace("uniforms.",""),type:"u32",length:e.rank}))}declareVariable(e,t){if(e.usage==="internal")throw new Error("cannot use internal variable with declareVariable(). use registerInternalVariables() instead.");this.variables.push(e),this.appendVariableUniforms(e);let r=e.usage==="input"?"read":"read_write",n=e.usage==="atomicOutput"?"atomic<i32>":e.type.storage;return`@group(0) @binding(${t}) var<storage, ${r}> ${e.name}: array<${n}>;`}declareVariables(...e){return e.map(t=>this.declareVariable(t,this.variableIndex++)).join(` 53`)}registerInternalVariable(e){if(e.usage!=="internal")throw new Error("cannot use input or output variable with registerInternalVariable(). use declareVariables() instead.");this.internalVariables.push(e),this.appendVariableUniforms(e)}registerInternalVariables(...e){return e.forEach(t=>this.registerInternalVariable(t)),this}registerUniform(e,t,r=1){return this.uniforms.push({name:e,type:t,length:r}),this}registerUniforms(e){return this.uniforms=this.uniforms.concat(e),this}uniformDeclaration(){if(this.uniforms.length===0)return"";let e=[];for(let{name:t,type:r,length:n}of this.uniforms)if(n&&n>4)r==="f16"?e.push(`@align(16) ${t}:array<mat2x4<${r}>, ${Math.ceil(n/8)}>`):e.push(`${t}:array<vec4<${r}>, ${Math.ceil(n/4)}>`);else{let s=n==null||n===1?r:`vec${n}<${r}>`;e.push(`${t}:${s}`)}return` 54 struct Uniforms { ${e.join(", ")} }; 55 @group(0) @binding(${this.variableIndex}) var<uniform> uniforms: Uniforms;`}get additionalImplementations(){return this.uniformDeclaration()+this.variables.map(e=>e.impl()).join(` 56`)+this.internalVariables.map(e=>e.impl()).join(` 57`)}get variablesInfo(){if(this.uniforms.length===0)return;let e=t=>[12,10,1,6][["u32","f16","f32","i32"].indexOf(t)];return this.uniforms.map(t=>[e(t.type),t.length??1])}},m_=(e,t)=>new h_(e,t)}),f_,Up,__,w_,y_,b_,ns,P_,M_,Va=Je(()=>{zt(),Kt(),an(),er(),f_=(e,t)=>{if(!e||e.length!==1)throw new Error("Transpose requires 1 input.");if(t.length!==0&&t.length!==e[0].dims.length)throw new Error(`perm size ${t.length} does not match input rank ${e[0].dims.length}`)},Up=(e,t)=>t.length!==0?t:[...new Array(e).keys()].reverse(),__=(e,t)=>Te.sortBasedOnPerm(e,Up(e.length,t)),w_=(e,t,r,n)=>{let s=`fn perm(i: ${n.type.indices}) -> ${r.type.indices} { 58 var a: ${r.type.indices};`;for(let a=0;a<t;++a)s+=`a[${e[a]}]=i[${a}];`;return s+="return a;}"},y_=(e,t)=>{let r=[],n=[];for(let s=0;s<e.length;++s)e[s]!==1&&r.push(e[s]),e[t[s]]!==1&&n.push(t[s]);return{newShape:r,newPerm:n}},b_=(e,t)=>{let r=0;for(let n=0;n<e.length;++n)if(t[e[n]]!==1){if(e[n]<r)return!1;r=e[n]}return!0},ns=(e,t)=>{let r=e.dataType,n=e.dims.length,s=Up(n,t),a=__(e.dims,s),i=e.dims,o=a,l=n<2||b_(s,e.dims),u;if(l)return u=A=>{let m=Ye("input",r,i,4),B=bt("output",r,o,4);return` 59 ${A.registerUniform("output_size","u32").declareVariables(m,B)} 60 ${A.mainStart()} 61 ${A.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 62 output[global_idx] = input[global_idx]; 63 }`},{name:"TransposeCopy",shaderCache:{inputDependencies:["type"]},getRunData:()=>{let A=Te.size(a);return{outputs:[{dims:a,dataType:e.dataType}],dispatchGroup:{x:Math.ceil(A/64/4)},programUniforms:[{type:12,data:Math.ceil(A/4)}]}},getShaderSource:u};let{newShape:p,newPerm:d}=y_(e.dims,s),c=Te.areEqual(d,[2,3,1]),g=Te.areEqual(d,[3,1,2]);if(p.length===2||c||g){i=c?[p[0],p[1]*p[2]]:g?[p[0]*p[1],p[2]]:p,o=[i[1],i[0]];let A=16;return u=m=>{let B=Ye("a",r,i.length),f=bt("output",r,o.length);return` 64 ${m.registerUniform("output_size","u32").declareVariables(B,f)} 65 var<workgroup> tile : array<array<${f.type.value}, ${A+1}>, ${A}>; 66 ${m.mainStart([A,A,1])} 67 let stride = (uniforms.output_shape[1] - 1) / ${A} + 1; 68 let workgroup_id_x = workgroup_index % stride; 69 let workgroup_id_y = workgroup_index / stride; 70 let input_col = workgroup_id_y * ${A}u + local_id.x; 71 let input_row = workgroup_id_x * ${A}u + local_id.y; 72 if (input_row < uniforms.a_shape[0] && input_col < uniforms.a_shape[1]) { 73 tile[local_id.y][local_id.x] = ${B.getByIndices(`${B.type.indices}(input_row, input_col)`)}; 74 } 75 workgroupBarrier(); 76 77 let output_col = workgroup_id_x * ${A}u + local_id.x; 78 let output_row = workgroup_id_y * ${A}u + local_id.y; 79 if (output_row < uniforms.output_shape[0] && output_col < uniforms.output_shape[1]) { 80 ${f.setByIndices(`${f.type.indices}(output_row, output_col)`,"tile[local_id.x][local_id.y]")} 81 } 82 }`},{name:"TransposeShared",shaderCache:{inputDependencies:["type"]},getRunData:()=>{let m=Te.size(a);return{outputs:[{dims:a,dataType:e.dataType}],dispatchGroup:{x:Math.ceil(o[1]/A),y:Math.ceil(o[0]/A)},programUniforms:[{type:12,data:m},...Dt(i,o)]}},getShaderSource:u}}return u=A=>{let m=Ye("a",r,i.length),B=bt("output",r,o.length);return` 83 ${A.registerUniform("output_size","u32").declareVariables(m,B)} 84 85 ${w_(s,n,m,B)} 86 87 ${A.mainStart()} 88 ${A.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 89 90 let indices = ${B.offsetToIndices("global_idx")}; 91 let aIndices = perm(indices); 92 93 ${B.setByOffset("global_idx",m.getByIndices("aIndices"))} 94 }`},{name:"Transpose",shaderCache:{hint:`${t}`,inputDependencies:["rank"]},getRunData:()=>{let A=Te.size(a);return{outputs:[{dims:a,dataType:e.dataType}],dispatchGroup:{x:Math.ceil(A/64)},programUniforms:[{type:12,data:A},...Dt(i,o)]}},getShaderSource:u}},P_=(e,t)=>{f_(e.inputs,t.perm),e.compute(ns(e.inputs[0],t.perm))},M_=e=>br({perm:e.perm})}),v_,B_,x_,E_,D_,I_,T_,C_,$_,S_,Fs,k_,O_,G_,z_,F_,L_,R_,Y_,N_,j_,Dk=Je(()=>{zt(),Kt(),er(),Vp(),Va(),v_={max:"select(bestValue, candidate, candidate > bestValue)",min:"select(bestValue, candidate, candidate < bestValue)",mean:"bestValue + candidate",sum:"bestValue + candidate",prod:"bestValue * candidate",sumSquare:"bestValue + candidate * candidate",logSumExp:"bestValue + exp(candidate)",l1:"bestValue + abs(candidate)",l2:"bestValue + candidate * candidate",logSum:"bestValue + candidate"},B_={max:"select(bestValue, candidate, candidate > bestValue)",min:"select(bestValue, candidate, candidate < bestValue)",mean:"bestValue + candidate",sum:"bestValue + candidate",prod:"bestValue * candidate",sumSquare:"bestValue + candidate",logSumExp:"bestValue + candidate",l1:"bestValue + candidate",l2:"bestValue + candidate",logSum:"bestValue + candidate"},x_={max:"_A[offset]",min:"_A[offset]",mean:"0",sum:"0",prod:"1",sumSquare:"
940",logSumExp:"0",l1:"0",l2:"0",logSum:"0"},E_={max:"bestValue",min:"bestValue",sum:"bestValue",prod:"bestValue",sumSquare:"bestValue",logSumExp:"log(bestValue)",l1:"bestValue",l2:"sqrt(bestValue)",logSum:"log(bestValue)"},D_=(e,t)=>{let r=[];for(let n=t-e;n<t;++n)r.push(n);return r},I_=(e,t)=>{let r=[],n=e.length;for(let a=0;a<n;a++)t.indexOf(a)===-1&&r.push(e[a]);let s=t.map(a=>e[a]);return[r,s]},T_=(e,t)=>{let r=e.length+t.length,n=[],s=0;for(let a=0;a<r;a++)t.indexOf(a)===-1?n.push(e[s++]):n.push(1);return n},C_=(e,t)=>{for(let r=0;r<e.length;++r)if(e[e.length-r-1]!==t-1-r)return!1;return!0},$_=(e,t)=>{let r=[];if(!C_(e,t)){for(let n=0;n<t;++n)e.indexOf(n)===-1&&r.push(n);e.forEach(n=>r.push(n))}return r},S_=(e,t,r,n,s,a,i)=>{let o=r[0].dims,l=Te.size(a),u=Te.size(i),p=Ye("_A",r[0].dataType,o),d=bt("output",s,a),c=64;l===1&&(c=256);let g=` 95 var<workgroup> aBestValues : array<f32, ${c}>; 96 `,A=m=>` 97 ${m.registerUniform("reduceSize","u32").declareVariables(p,d)} 98 ${g} 99 fn DIV_CEIL(a : u32, b : u32) -> u32 { 100 return ((a - 1u) / b + 1u); 101 } 102 ${m.mainStart(c)} 103 104 let outputIndex = global_idx / ${c}; 105 let offset = outputIndex * uniforms.reduceSize; 106 107 var bestValue = f32(${x_[n]}); 108 let Length = uniforms.reduceSize; 109 for (var k = local_idx; k < Length; k = k + ${c}) { 110 let candidate = f32(${p.getByOffset("offset + k")}); 111 bestValue = ${v_[n]}; 112 } 113 aBestValues[local_idx] = bestValue; 114 workgroupBarrier(); 115 116 var reduceSize = min(Length, ${c}u); 117 for (var currentSize = reduceSize / 2u; reduceSize > 1u; 118 currentSize = reduceSize / 2u) { 119 let interval = DIV_CEIL(reduceSize, 2u); 120 if (local_idx < currentSize) { 121 let candidate = aBestValues[local_idx + interval]; 122 bestValue = ${B_[n]}; 123 aBestValues[local_idx] = bestValue; 124 } 125 reduceSize = interval; 126 workgroupBarrier(); 127 } 128 129 if (local_idx == 0u) { 130 ${d.setByOffset("outputIndex",`${n==="mean"?`${d.type.storage}(bestValue / f32(uniforms.reduceSize))`:`${d.type.storage}(${E_[n]})`}`)}; 131 } 132 }`;return{name:e,shaderCache:{hint:`${t};${c}`,inputDependencies:["type"]},getShaderSource:A,getRunData:()=>({outputs:[{dims:a,dataType:s}],dispatchGroup:{x:l},programUniforms:[{type:12,data:u}]})}},Fs=(e,t,r,n)=>{let s=e.inputs.length===1?r:Wp(e.inputs,r),a=s.axes;a.length===0&&!s.noopWithEmptyAxes&&(a=e.inputs[0].dims.map((g,A)=>A));let i=Te.normalizeAxes(a,e.inputs[0].dims.length),o=i,l=e.inputs[0],u=$_(o,e.inputs[0].dims.length);u.length>0&&(l=e.compute(ns(e.inputs[0],u),{inputs:[0],outputs:[-1]})[0],o=D_(o.length,l.dims.length));let[p,d]=I_(l.dims,o),c=p;s.keepDims&&(c=T_(p,i)),e.compute(S_(t,s.cacheKey,[l],n,e.inputs[0].dataType,c,d),{inputs:[l]})},k_=(e,t)=>{Fs(e,"ReduceMeanShared",t,"mean")},O_=(e,t)=>{Fs(e,"ReduceL1Shared",t,"l1")},G_=(e,t)=>{Fs(e,"ReduceL2Shared",t,"l2")},z_=(e,t)=>{Fs(e,"ReduceLogSumExpShared",t,"logSumExp")},F_=(e,t)=>{Fs(e,"ReduceMaxShared",t,"max")},L_=(e,t)=>{Fs(e,"ReduceMinShared",t,"min")},R_=(e,t)=>{Fs(e,"ReduceProdShared",t,"prod")},Y_=(e,t)=>{Fs(e,"ReduceSumShared",t,"sum")},N_=(e,t)=>{Fs(e,"ReduceSumSquareShared",t,"sumSquare")},j_=(e,t)=>{Fs(e,"ReduceLogSumShared",t,"logSum")}}),Ls,U_,sc,Wp,Rs,W_,V_,Q_,H_,K_,q_,X_,Z_,J_,ew,Ys,tw,rw,nw,sw,aw,iw,ow,lw,uw,cw,Vp=Je(()=>{zt(),Kt(),an(),er(),Dk(),Ls=e=>{if(!e||e.length===0||e.length>2)throw new Error("Reduce op requires 1 or 2 inputs.");if(e.length===2&&e[1].dims.length!==1)throw new Error("Invalid axes input dims.")},U_=e=>["","",`var value = ${e.getByIndices("input_indices")};`,""],sc=(e,t,r,n,s,a,i=!1,o=!1)=>{let l=[],u=r[0].dims,p=u.length,d=Te.normalizeAxes(s,p),c=!o&&d.length===0;u.forEach((m,B)=>{c||d.indexOf(B)>=0?i&&l.push(1):l.push(m)});let g=l.length,A=Te.size(l);return{name:e,shaderCache:t,getShaderSource:m=>{let B=[],f=Ye("_A",r[0].dataType,p),h=bt("output",a,g),P=n(f,h,d),_=P[2];for(let w=0,b=0;w<p;w++)c||d.indexOf(w)>=0?(i&&b++,_=`for(var j${w}: u32 = 0; j${w} < ${u[w]}; j${w}++) { 133 ${P[2].includes("last_index")?`let last_index = j${w};`:""} 134 ${f.indicesSet("input_indices",w,`j${w}`)} 135 ${_} 136 }`):(B.push(`${f.indicesSet("input_indices",w,h.indicesGet("output_indices",b))};`),b++);return` 137 138 ${m.registerUniform("output_size","u32").declareVariables(f,h)} 139 140 ${m.mainStart()} 141 ${m.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 142 var input_indices: ${f.type.indices}; 143 let output_indices = ${h.offsetToIndices("global_idx")}; 144 145 ${B.join(` 146`)} 147 ${P[0]} // init ops for reduce max/min 148 ${P[1]} 149 ${_} 150 ${P[3]} 151 ${P.length===4?h.setByOffset("global_idx","value"):P.slice(4).join(` 152`)} 153 }`},getRunData:()=>({outputs:[{dims:l,dataType:a}],dispatchGroup:{x:Math.ceil(A/64)},programUniforms:[{type:12,data:A},...Dt(u,l)]})}},Wp=(e,t)=>{let r=[];return e[1].dims[0]>
vendor: 22,074 bytes, lines 153-343
1530&&e[1].getBigInt64Array().forEach(n=>r.push(Number(n))),br({axes:r,keepDims:t.keepDims,noopWithEmptyAxes:t.noopWithEmptyAxes})},Rs=(e,t,r,n)=>{let s=e.inputs,a=s.length===1?r:Wp(s,r);e.compute(sc(t,{hint:a.cacheKey,inputDependencies:["rank"]},[s[0]],a.noopWithEmptyAxes&&a.axes.length===0?U_:n,a.axes,s[0].dataType,a.keepDims,a.noopWithEmptyAxes),{inputs:[0]})},W_=(e,t)=>{Ls(e.inputs),Rs(e,"ReduceLogSum",t,(r,n)=>[`var value = ${n.type.storage}(0);`,"",`value += ${r.getByIndices("input_indices")};`,"value = log(value);"])},V_=(e,t)=>{Ls(e.inputs),Rs(e,"ReduceL1",t,(r,n)=>[`var value = ${n.type.storage}(0);`,"",`value += abs(${r.getByIndices("input_indices")});`,""])},Q_=(e,t)=>{Ls(e.inputs),Rs(e,"ReduceL2",t,(r,n)=>[`var t = ${n.type.value}(0); var value = ${n.type.value}(0);`,"",`t = ${r.getByIndices("input_indices")}; value += (t * t);`,"value = sqrt(value);"])},H_=(e,t)=>{Ls(e.inputs),Rs(e,"ReduceLogSumExp",t,(r,n)=>[`var value = ${n.type.storage}(0);`,"",`value += exp(${r.getByIndices("input_indices")});`,"value = log(value);"])},K_=(e,t)=>{Ls(e.inputs),Rs(e,"ReduceMax",t,(r,n,s)=>{let a=[];for(let i=0;i<r.rank;i++)(s.indexOf(i)>=0||s.length===0)&&a.push(r.indicesSet("input_indices",i,0));return[`${a.join(` 154`)}`,`var value = ${r.getByIndices("input_indices")};`,`value = max(value, ${r.getByIndices("input_indices")});`,""]})},q_=(e,t)=>{Ls(e.inputs),Rs(e,"ReduceMean",t,(r,n,s)=>{let a=1;for(let i=0;i<r.rank;i++)(s.indexOf(i)>=0||s.length===0)&&(a*=e.inputs[0].dims[i]);return["var sum = f32(0);","",`sum += f32(${r.getByIndices("input_indices")});`,`let value = ${n.type.value}(sum / ${a});`]})},X_=(e,t)=>{Ls(e.inputs),Rs(e,"ReduceMin",t,(r,n,s)=>{let a=[];for(let i=0;i<r.rank;i++)(s.indexOf(i)>=0||s.length===0)&&a.push(`input_indices[${i}] = 0;`);return[`${a.join(` 155`)}`,`var value = ${r.getByIndices("input_indices")};`,`value = min(value, ${r.getByIndices("input_indices")});`,""]})},Z_=(e,t)=>{Ls(e.inputs),Rs(e,"ReduceProd",t,(r,n)=>[`var value = ${n.type.storage}(1);`,"",`value *= ${r.getByIndices("input_indices")};`,""])},J_=(e,t)=>{Ls(e.inputs),Rs(e,"ReduceSum",t,(r,n)=>[`var value = ${n.type.storage}(0);`,"",`value += ${r.getByIndices("input_indices")};`,""])},ew=(e,t)=>{Ls(e.inputs),Rs(e,"ReduceSumSquare",t,(r,n)=>[`var t = ${n.type.value}(0); var value = ${n.type.value}(0);`,"",`t = ${r.getByIndices("input_indices")}; value += t * t;`,""])},Ys=(e,t,r)=>{if(t.length===0)return r;let n=1,s=1;for(let a=0;a<t.length;a++)t.indexOf(a)===-1?n*=e[a]:s*=e[a];return s<32&&n>1024},tw=(e,t)=>{Ys(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?q_(e,t):k_(e,t)},rw=(e,t)=>{Ys(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?V_(e,t):O_(e,t)},nw=(e,t)=>{Ys(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Q_(e,t):G_(e,t)},sw=(e,t)=>{Ys(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?H_(e,t):z_(e,t)},aw=(e,t)=>{Ys(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?K_(e,t):F_(e,t)},iw=(e,t)=>{Ys(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?X_(e,t):L_(e,t)},ow=(e,t)=>{Ys(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Z_(e,t):R_(e,t)},lw=(e,t)=>{Ys(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?J_(e,t):Y_(e,t)},uw=(e,t)=>{Ys(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?ew(e,t):N_(e,t)},cw=(e,t)=>{Ys(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?W_(e,t):j_(e,t)}}),Qp,dw,pw,Hp,Ik=Je(()=>{zt(),an(),Vp(),Qp=e=>{if(!e||e.length===0||e.length>2)throw new Error("ArgMinMaxOp op requires 1 or 2 inputs.");if(e[0].dataType!==1)throw new Error("Invalid input type.")},dw=(e,t)=>{Qp(e.inputs);let r=(n,s,a)=>{let i=[];for(let o=0;o<n.rank;o++)(a.indexOf(o)>=0||a.length===0)&&i.push(`input_indices[${o}] = 0;`);return[`${i.join(` 156`)}`,`var value = ${n.getByIndices("input_indices")}; 157var best_index : i32 = 0;`,`if (${n.getByIndices("input_indices")} ${t.selectLastIndex>0?"<=":"<"} value) { 158 value = ${n.getByIndices("input_indices")}; 159 best_index = i32(last_index); 160 }`,"",s.setByOffset("global_idx","best_index")]};e.compute(sc("ArgMin",{hint:t.cacheKey,inputDependencies:["rank"]},[e.inputs[0]],r,[t.axis],7,t.keepDims),{inputs:[0]})},pw=(e,t)=>{Qp(e.inputs);let r=(n,s,a)=>{let i=[];for(let o=0;o<n.rank;o++)(a.indexOf(o)>=0||a.length===0)&&i.push(`input_indices[${o}] = 0;`);return[`${i.join(` 161`)}`,`var value = ${n.getByIndices("input_indices")}; 162var best_index : i32 = 0;`,`if (${n.getByIndices("input_indices")} ${t.selectLastIndex>0?">=":">"} value) { 163 value = ${n.getByIndices("input_indices")}; 164 best_index = i32(last_index); 165 }`,"",s.setByOffset("global_idx","best_index")]};e.compute(sc("argMax",{hint:t.cacheKey,inputDependencies:["rank"]},[e.inputs[0]],r,[t.axis],7,t.keepDims),{inputs:[0]})},Hp=e=>br(e)}),gw,ac,Aw,hw,mw,Bl,fw,_w,Kp=Je(()=>{zt(),Kt(),Fp(),er(),gw=(e,t)=>{let r=e[0],n=e[1],s=e[2],a=e[3],i=e[4],o=e[5];if(i&&o)throw new Error("Attention cannot have both past and attention_bias");if(r.dims.length!==3)throw new Error('Input "input" must have 3 dimensions');let l=r.dims[0],u=r.dims[1],p=r.dims[2];if(s.dims.length!==1)throw new Error('Input "bias" is expected to have 1 dimensions');if(n.dims.length!==2)throw new Error('Input "weights" is expected to have 2 dimensions');if(n.dims[0]!==p)throw new Error("Input 1 dimension 0 should have same length as dimension 2 of input 0");if(s.dims[0]!==n.dims[1])throw new Error('Input "bias" dimension 0 should have same length as dimension 1 of input "weights"');let d=s.dims[0]/3,c=d,g=c;if(t.qkvHiddenSizes.length>0){if(t.qkvHiddenSizes.length!==3)throw new Error("qkv_hidden_sizes attribute should have 3 elements");for(let P of t.qkvHiddenSizes)if(P%t.numHeads!==0)throw new Error("qkv_hidden_sizes should be divisible by num_heads");d=t.qkvHiddenSizes[0],c=t.qkvHiddenSizes[1],g=t.qkvHiddenSizes[2]}let A=u;if(d!==c)throw new Error("qkv_hidden_sizes first element should be same as the second");if(s.dims[0]!==d+c+g)throw new Error('Input "bias" dimension 0 should have same length as sum of Q/K/V hidden sizes');let m=0;if(i){if(c!==g)throw new Error('Input "past" expect k_hidden_size == v_hidden_size');if(i.dims.length!==5)throw new Error('Input "past" must have 5 dimensions');if(i.dims[0]!==2)throw new Error('Input "past" first dimension must be 2');if(i.dims[1]!==l)throw new Error('Input "past" second dimension must be batch_size');if(i.dims[2]!==t.numHeads)throw new Error('Input "past" third dimension must be num_heads');if(i.dims[4]!==c/t.numHeads)throw new Error('Input "past" fifth dimension must be k_hidden_size / num_heads');t.pastPresentShareBuffer||(m=i.dims[3])}let B=A+m,f=-1,h=0;if(a)throw new Error("Mask not supported");if(i)throw new Error("past is not supported");if(o){if(o.dims.length!==4)throw new Error('Input "attention_bias" must have 4 dimensions');if(o.dims[0]!==l||o.dims[1]!==t.numHeads||o.dims[2]!==u||o.dims[3]!==B)throw new Error('Expect "attention_bias" shape (batch_size, num_heads, sequence_length, total_sequence_length)')}return{batchSize:l,sequenceLength:u,pastSequenceLength:m,kvSequenceLength:A,totalSequenceLength:B,maxSequenceLength:f,inputHiddenSize:p,hiddenSize:d,vHiddenSize:g,headSize:Math.floor(d/t.numHeads),vHeadSize:Math.floor(g/t.numHeads),numHeads:t.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:t.maskFilterValue,maskType:h,scale:t.scale,broadcastResPosBias:!1,passPastInKv:!1,qkvFormat:1}},ac=(e,t,r)=>t&&e?` 166 let total_sequence_length_input = u32(${t.getByOffset("0")}); 167 let present_sequence_length = max(total_sequence_length_input, uniforms.past_sequence_length); 168 let is_subsequent_prompt: bool = sequence_length > 1 && sequence_length != total_sequence_length_input; 169 let is_first_prompt: bool = is_subsequent_prompt == false && sequence_length == total_sequence_length_input; 170 total_sequence_length = u32(${e?.getByOffset("batchIdx")}) + 1; 171 var past_sequence_length: u32 = 0; 172 if (is_first_prompt == false) { 173 past_sequence_length = total_sequence_length - sequence_length; 174 } 175 `:` 176 ${r?"let past_sequence_length = uniforms.past_sequence_length":""}; 177 let present_sequence_length = total_sequence_length; 178 `,Aw=(e,t,r,n,s,a,i,o)=>{let l=Jr(i?1:a),u=64,p=a/l;p<u&&(u=32);let d=Math.ceil(a/l/u),c=[{type:12,data:t},{type:12,data:r},{type:12,data:n},{type:12,data:s},{type:12,data:p},{type:12,data:d}],g=vn(e.dataType,l),A=Ln(1,l),m=["type"];i&&m.push("type"),o&&m.push("type");let B=f=>{let h=bt("x",e.dataType,e.dims,l),P=[h],_=i?Ye("seq_lens",i.dataType,i.dims):void 0;_&&P.push(_);let w=o?Ye("total_sequence_length_input",o.dataType,o.dims):void 0;w&&P.push(w);let b=Ln(e.dataType),v=[{name:"batch_size",type:"u32"},{name:"num_heads",type:"u32"},{name:"past_sequence_length",type:"u32"},{name:"sequence_length",type:"u32"},{name:"total_sequence_length",type:"u32"},{name:"elements_per_thread",type:"u32"}];return` 179 var<workgroup> thread_max: array<f32, ${u}>; 180 var<workgroup> thread_sum: array<f32, ${u}>; 181 ${f.registerUniforms(v).declareVariables(...P)} 182 ${f.mainStart([u,1,1])} 183 let batchIdx = workgroup_id.z / uniforms.num_heads; 184 let headIdx = workgroup_id.z % uniforms.num_heads; 185 let sequence_length = uniforms.sequence_length; 186 var total_sequence_length = uniforms.total_sequence_length; 187 ${ac(_,w,!1)} 188 let local_offset = local_idx * uniforms.elements_per_thread; 189 let offset = (global_idx / ${u}) * uniforms.total_sequence_length + local_offset; 190 let seq_causal_length = ${i?"u32(past_sequence_length + workgroup_id.y + 1)":"total_sequence_length"}; 191 var thread_max_vector = ${A}(-3.402823e+38f); 192 for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < seq_causal_length; i++) { 193 thread_max_vector = max(${A}(x[offset + i]), thread_max_vector); 194 } 195 thread_max[local_idx] = ${(()=>{switch(l){case 1:return"thread_max_vector";case 2:return"max(thread_max_vector.x, thread_max_vector.y)";case 4:return"max(max(thread_max_vector.x, thread_max_vector.y), max(thread_max_vector.z, thread_max_vector.w))";default:throw new Error(`Unsupported components: ${l}`)}})()}; 196 workgroupBarrier(); 197 198 var max_value = f32(-3.402823e+38f); 199 for (var i = 0u; i < ${u}; i++) { 200 max_value = max(thread_max[i], max_value); 201 } 202 203 var sum_vector = ${A}(0); 204 for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < seq_causal_length; i++) { 205 sum_vector += exp(${A}(x[offset + i]) - max_value); 206 } 207 thread_sum[local_idx] = ${(()=>{switch(l){case 1:return"sum_vector";case 2:return"sum_vector.x + sum_vector.y";case 4:return"sum_vector.x + sum_vector.y + sum_vector.z + sum_vector.w";default:throw new Error(`Unsupported components: ${l}`)}})()}; 208 workgroupBarrier(); 209 210 var sum: f32 = 0; 211 for (var i = 0u; i < ${u}; i++) { 212 sum += thread_sum[i]; 213 } 214 215 if (sum == 0) { 216 for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < seq_causal_length; i++) { 217 x[offset + i] = ${h.type.value}(${b}(1.0) / ${b}(seq_causal_length)); 218 } 219 } else { 220 for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < seq_causal_length; i++) { 221 var f32input = ${A}(x[offset + i]); 222 x[offset + i] = ${h.type.value}(exp(f32input - max_value) / sum); 223 } 224 } 225 ${i?` 226 for (var total_seq_id: u32 = seq_causal_length; total_seq_id + local_offset < uniforms.total_sequence_length; total_seq_id++) { 227 x[offset + total_seq_id] = ${h.type.value}(${b}(0)); 228 }`:""}; 229 }`};return{name:"AttentionProbsSoftmax",shaderCache:{hint:`${u};${g};${l}`,inputDependencies:m},getShaderSource:B,getRunData:()=>({outputs:[],dispatchGroup:{x:1,y:s,z:t*r},programUniforms:c})}},hw=(e,t,r,n,s,a,i,o,l)=>{let u=i+a.kvSequenceLength,p=[a.batchSize,a.numHeads,a.sequenceLength,u],d=e>1&&n,c=a.kvNumHeads?a.kvNumHeads:a.numHeads,g=d?[a.batchSize,c,u,a.headSize]:void 0,A=a.nReps?a.nReps:1,m=a.scale===0?1/Math.sqrt(a.headSize):a.scale,B=Jr(a.headSize),f=a.headSize/B,h=12,P={x:Math.ceil(u/h),y:Math.ceil(a.sequenceLength/h),z:a.batchSize*a.numHeads},_=[{type:12,data:a.sequenceLength},{type:12,data:f},{type:12,data:u},{type:12,data:a.numHeads},{type:12,data:a.headSize},{type:1,data:m},{type:12,data:i},{type:12,data:a.kvSequenceLength},{type:12,data:A}],w=d&&n&&Te.size(n.dims)>0,b=["type","type"];w&&b.push("type"),s&&b.push("type"),o&&b.push("type"),l&&b.push("type");let v=[{dims:p,dataType:t.dataType,gpuDataType:0}];d&&v.push({dims:g,dataType:t.dataType,gpuDataType:0});let y=$=>{let k=Ye("q",t.dataType,t.dims,B),W=Ye("key",r.dataType,r.dims,B),j=[k,W];if(w){let ce=Ye("past_key",n.dataType,n.dims,B);j.push(ce)}s&&j.push(Ye("attention_bias",s.dataType,s.dims));let F=o?Ye("seq_lens",o.dataType,o.dims):void 0;F&&j.push(F);let R=l?Ye("total_sequence_length_input",l.dataType,l.dims):void 0;R&&j.push(R);let L=bt("output",t.dataType,p),Q=[L];d&&Q.push(bt("present_key",t.dataType,g,B));let ne=Ln(1,B),re=[{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"num_heads",type:"u32"},{name:"head_size",type:"u32"},{name:"alpha",type:"f32"},{name:"past_sequence_length",type:"u32"},{name:"kv_sequence_length",type:"u32"},{name:"n_reps",type:"u32"}];return` 230 const TILE_SIZE = ${h}u; 231 232 var<workgroup> tileQ: array<${k.type.storage}, ${h*h}>; 233 var<workgroup> tileK: array<${k.type.storage}, ${h*h}>; 234 ${$.registerUniforms(re).declareVariables(...j,...Q)} 235 ${$.mainStart([h,h,1])} 236 // x holds the N and y holds the M 237 let headIdx = workgroup_id.z % uniforms.num_heads; 238 let kvHeadIdx = ${A===1?"headIdx":"headIdx / uniforms.n_reps"}; 239 let kv_num_heads = ${A===1?"uniforms.num_heads":"uniforms.num_heads / uniforms.n_reps"}; 240 let batchIdx = workgroup_id.z / uniforms.num_heads; 241 let m = workgroup_id.y * TILE_SIZE; 242 let n = workgroup_id.x * TILE_SIZE; 243 let sequence_length = uniforms.M; 244 var total_sequence_length = uniforms.N; 245 ${ac(F,R,!0)} 246 let absKvHeadIdx = batchIdx * kv_num_heads + kvHeadIdx; 247 let qOffset = workgroup_id.z * uniforms.M * uniforms.K + m * uniforms.K; 248 ${w&&d?"let pastKeyOffset = absKvHeadIdx * uniforms.past_sequence_length * uniforms.K;":""}; 249 let kOffset = absKvHeadIdx * uniforms.kv_sequence_length * uniforms.K; 250 ${d?"let presentKeyOffset = absKvHeadIdx * uniforms.N * uniforms.K;":""} 251 var value = ${ne}(0); 252 for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) { 253 if (global_id.y < uniforms.M && w + local_id.x < uniforms.K) { 254 tileQ[TILE_SIZE * local_id.y + local_id.x] = q[qOffset + local_id.y * uniforms.K + w + local_id.x]; 255 } 256 if (n + local_id.y < uniforms.N && w + local_id.x < uniforms.K) { 257 var idx = TILE_SIZE * local_id.y + local_id.x; 258 ${w&&d?` 259 if (n + local_id.y < past_sequence_length) { 260 tileK[idx] = past_key[pastKeyOffset + (n + local_id.y) * uniforms.K + w + local_id.x]; 261 } else if (n + local_id.y - past_sequence_length < uniforms.kv_sequence_length) { 262 tileK[idx] = key[kOffset + (n + local_id.y - past_sequence_length) * uniforms.K + w + local_id.x]; 263 }`:` 264 if (n + local_id.y < uniforms.kv_sequence_length) { 265 tileK[idx] = key[kOffset + (n + local_id.y) * uniforms.K + w + local_id.x]; 266 }`} 267 ${d?`if (n + local_id.y < present_sequence_length) { 268 present_key[presentKeyOffset + (n + local_id.y) * uniforms.K + w + local_id.x] = tileK[idx]; 269 }`:""} 270 } 271 workgroupBarrier(); 272 273 for (var k: u32 = 0u; k < TILE_SIZE && w+k < uniforms.K; k++) { 274 value += ${ne}(tileQ[TILE_SIZE * local_id.y + k] * tileK[TILE_SIZE * local_id.x + k]); 275 } 276 277 workgroupBarrier(); 278 } 279 280 if (global_id.y < uniforms.M && global_id.x < total_sequence_length) { 281 let headOffset = workgroup_id.z * uniforms.M * uniforms.N; 282 let outputIdx = headOffset + global_id.y * uniforms.N + global_id.x; 283 var sum: f32 = ${(()=>{switch(B){case 1:return"value";case 2:return"value.x + value.y";case 4:return"value.x + value.y + value.z + value.w";default:throw new Error(`Unsupported components: ${B}`)}})()}; 284 output[outputIdx] = ${L.type.value} (sum * uniforms.alpha) + ${s?"attention_bias[outputIdx]":"0.0"}; 285 } 286 }`};return{name:"AttentionProbs",shaderCache:{hint:`${B};${s!==void 0};${n!==void 0};${e}`,inputDependencies:b},getRunData:()=>({outputs:v,dispatchGroup:P,programUniforms:_}),getShaderSource:y}},mw=(e,t,r,n,s,a,i=void 0,o=void 0)=>{let l=a+s.kvSequenceLength,u=s.nReps?s.nReps:1,p=s.vHiddenSize*u,d=e>1&&n,c=s.kvNumHeads?s.kvNumHeads:s.numHeads,g=d?[s.batchSize,c,l,s.headSize]:void 0,A=[s.batchSize,s.sequenceLength,p],m=12,B={x:Math.ceil(s.vHeadSize/m),y:Math.ceil(s.sequenceLength/m),z:s.batchSize*s.numHeads},f=[{type:12,data:s.sequenceLength},{type:12,data:l},{type:12,data:s.vHeadSize},{type:12,data:s.numHeads},{type:12,data:s.headSize},{type:12,data:p},{type:12,data:a},{type:12,data:s.kvSequenceLength},{type:12,data:u}],h=d&&n&&Te.size(n.dims)>0,P=["type","type"];h&&P.push("type"),i&&P.push("type"),o&&P.push("type");let _=[{dims:A,dataType:t.dataType,gpuDataType:0}];d&&_.push({dims:g,dataType:t.dataType,gpuDataType:0});let w=b=>{let v=Ye("probs",t.dataType,t.dims),y=Ye("v",r.dataType,r.dims),$=[v,y];h&&$.push(Ye("past_value",n.dataType,n.dims));let k=i?Ye("seq_lens",i.dataType,i.dims):void 0;i&&$.push(k);let W=o?Ye("total_sequence_length_input",o.dataType,o.dims):void 0;o&&$.push(W);let j=[bt("output",t.dataType,A)];d&&j.push(bt("present_value",t.dataType,g));let F=[{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"num_heads",type:"u32"},{name:"head_size",type:"u32"},{name:"v_hidden_size",type:"u32"},{name:"past_sequence_length",type:"u32"},{name:"kv_sequence_length",type:"u32"},{name:"n_reps",type:"u32"}];return` 287 const TILE_SIZE = ${m}u; 288 var<workgroup> tileQ: array<${v.type.value}, ${m*m}>; 289 var<workgroup> tileV: array<${v.type.value}, ${m*m}>; 290 ${b.registerUniforms(F).declareVariables(...$,...j)} 291 ${b.mainStart([m,m,1])} 292 let headIdx = workgroup_id.z % uniforms.num_heads; 293 let batchIdx = workgroup_id.z / uniforms.num_heads; 294 let kvHeadIdx = ${u===1?"headIdx":"headIdx / uniforms.n_reps"}; 295 let kv_num_heads = ${u===1?"uniforms.num_heads":"uniforms.num_heads / uniforms.n_reps"}; 296 let m = global_id.y; 297 let n = global_id.x; 298 let sequence_length = uniforms.M; 299 var total_sequence_length = uniforms.K; 300 ${ac(k,W,!0)} 301 let offsetA = workgroup_id.z * uniforms.M * uniforms.K + m * uniforms.K; 302 let absKvHeadIdx = batchIdx * kv_num_heads + kvHeadIdx; // kvHeadIdx is relative to the batch 303 ${h&&d?"let pastValueOffset = absKvHeadIdx * uniforms.N * uniforms.past_sequence_length + n;":""}; 304 let vOffset = absKvHeadIdx * uniforms.N * uniforms.kv_sequence_length + n; 305 ${d?"let presentValueOffset = absKvHeadIdx * uniforms.N * uniforms.K + n;":""} 306 var value = ${v.type.storage}(0); 307 for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) { 308 if (m < uniforms.M && w + local_id.x < uniforms.K) { 309 tileQ[TILE_SIZE * local_id.y + local_id.x] = probs[offsetA + w + local_id.x]; 310 } 311 if (n < uniforms.N && w + local_id.y < uniforms.K) { 312 var idx = TILE_SIZE * local_id.y + local_id.x; 313 ${h&&d?` 314 if (w + local_id.y < past_sequence_length) { 315 tileV[idx] = past_value[pastValueOffset + (w + local_id.y) * uniforms.N]; 316 } else if (w + local_id.y - past_sequence_length < uniforms.kv_sequence_length) { 317 tileV[idx] = v[vOffset + (w + local_id.y - past_sequence_length) * uniforms.N]; 318 } 319 `:` 320 if (w + local_id.y < uniforms.kv_sequence_length) { 321 tileV[idx] = v[vOffset + (w + local_id.y) * uniforms.N]; 322 }`} 323 ${d?` 324 if (w + local_id.y < present_sequence_length) { 325 present_value[presentValueOffset + (w + local_id.y) * uniforms.N] = tileV[idx]; 326 }`:""} 327 } 328 workgroupBarrier(); 329 for (var k: u32 = 0u; k < TILE_SIZE && w+k < total_sequence_length; k++) { 330 value += tileQ[TILE_SIZE * local_id.y + k] * tileV[TILE_SIZE * k + local_id.x]; 331 } 332 workgroupBarrier(); 333 } 334 335 // we need to transpose output from BNSH_v to BSND_v 336 if (m < uniforms.M && n < uniforms.N) { 337 let outputIdx = batchIdx * uniforms.M * uniforms.v_hidden_size + m * uniforms.v_hidden_size 338 + headIdx * uniforms.N + n; 339 output[outputIdx] = value; 340 } 341 }`};return{name:"AttentionScore",shaderCache:{hint:`${n!==void 0};${e}`,inputDependencies:P},getRunData:()=>({outputs:_,dispatchGroup:B,programUniforms:f}),getShaderSource:w}},Bl=(e,t,r,n,s,a,i,o,l,u,p=void 0,d=void 0)=>{let c=Math.min(e.outputCount,1+(i?1:0)+(o?1:0)),g=c>1?u.pastSequenceLength:0,A=g+u.kvSequenceLength,m=l&&Te.size(l.dims)>0?l:void 0,B=[t,r];c>1&&i&&Te.size(i.dims)>0&&B.push(i),m&&B.push(m),p&&B.push(p),d&&B.push(d);let f=e.compute(hw(c,t,r,i,m,u,g,p,d),{inputs:B,outputs:c>1?[-1,1]:[-1]})[0];e.compute(Aw(f,u.batchSize,u.numHeads,g,u.sequenceLength,A,p,d),{inputs:p&&d?[f,p,d]:[f],outputs:[]});let h=[f,n];c>1&&o&&Te.size(o.dims)>0&&h.push(o),p&&h.push(p),d&&h.push(d),e.compute(mw(c,f,n,o,u,g,p,d),{inputs:h,outputs:c>1?[0,2]:[0]})},fw=(e,t)=>{let r=[t.batchSize,t.numHeads,t.sequenceLength,t.headSize],n=t.sequenceLength,s=t.inputHiddenSize,a=t.headSize,i=12,o={x:Math.ceil(t.headSize/i),y:Math.ceil(t.sequenceLength/i),z:t.batchSize*t.numHeads},l=[e.inputs[0],e.inputs[1],e.inputs[2]],u=[{type:12,data:n},{type:12,data:s},{type:12,data:a},{type:12,data:t.numHeads},{type:12,data:t.headSize},{type:12,data:t.hiddenSize},{type:12,data:t.hiddenSize+t.hiddenSize+t.vHiddenSize}],p=d=>{let c=bt("output_q",l[0].dataType,r),g=bt("output_k",l[0].dataType,r),A=bt("output_v",l[0].dataType,r),m=Ye("input",l[0].dataType,l[0].dims),B=Ye("weight",l[1].dataType,l[1].dims),f=Ye("bias",l[2].dataType,l[2].dims),h=m.type.storage,P=[{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"num_heads",type:"u32"},{name:"head_size",type:"u32"},{name:"hidden_size",type:"u32"},{name:"ldb",type:"u32"}];return` 342 const TILE_SIZE = ${i}u; 343 var<workgroup> tileInput: array<${h}, ${i*i}>;
344 var<workgroup> tileWeightQ: array<${h}, ${i*i}>; 345 var<workgroup> tileWeightK: array<${h}, ${i*i}>; 346 var<workgroup> tileWeightV: array<${h}, ${i*i}>; 347 ${d.registerUniforms(P).declareVariables(m,B,f,c,g,A)} 348 ${d.mainStart([i,i,1])} 349 let batchIndex = workgroup_id.z / uniforms.num_heads; 350 let headNumber = workgroup_id.z % uniforms.num_heads; 351 let m = global_id.y; 352 let n = global_id.x; 353 354 let inputOffset = batchIndex * (uniforms.M * uniforms.K) + m * uniforms.K; 355 let biasOffsetQ = headNumber * uniforms.head_size; 356 let biasOffsetK = uniforms.hidden_size + biasOffsetQ; 357 let biasOffsetV = uniforms.hidden_size + biasOffsetK; 358 359 var valueQ = ${h}(0); 360 var valueK = ${h}(0); 361 var valueV = ${h}(0); 362 for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) { 363 if (m < uniforms.M && w + local_id.x < uniforms.K) { 364 tileInput[TILE_SIZE * local_id.y + local_id.x] = input[inputOffset + w + local_id.x]; 365 } 366 if (n < uniforms.N && w + local_id.y < uniforms.K) { 367 let offset = n + (w + local_id.y) * uniforms.ldb; 368 tileWeightQ[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetQ + offset]; 369 tileWeightK[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetK + offset]; 370 tileWeightV[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetV + offset]; 371 } 372 workgroupBarrier(); 373 for (var k: u32 = 0u; k<TILE_SIZE && w+k < uniforms.K; k++) { 374 let inputTileOffset = TILE_SIZE * local_id.y + k; 375 let weightTileOffset = TILE_SIZE * k + local_id.x; 376 valueQ += tileInput[inputTileOffset] * tileWeightQ[weightTileOffset]; 377 valueK += tileInput[inputTileOffset] * tileWeightK[weightTileOffset]; 378 valueV += tileInput[inputTileOffset] * tileWeightV[weightTileOffset]; 379 } 380 381 workgroupBarrier(); 382 } 383 384 let headOffset = (m * uniforms.N + n) % uniforms.head_size; 385 valueQ += bias[headOffset + biasOffsetQ]; 386 valueK += bias[headOffset + biasOffsetK]; 387 valueV += bias[headOffset + biasOffsetV]; 388 389 let offset = workgroup_id.z * uniforms.M * uniforms.N; 390 if (m < uniforms.M && n < uniforms.N) { 391 let outputIdx = offset + m * uniforms.N + n; 392 output_q[outputIdx] = valueQ; 393 output_k[outputIdx] = valueK; 394 output_v[outputIdx] = valueV; 395 } 396 }`};return e.compute({name:"AttentionPrepare",shaderCache:{inputDependencies:["type","type","type"]},getRunData:()=>({outputs:[{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0},{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0},{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0}],dispatchGroup:o,programUniforms:u}),getShaderSource:p},{inputs:l,outputs:[-1,-1,-1]})},_w=(e,t)=>{let r=gw(e.inputs,t),[n,s,a]=fw(e,r);return Bl(e,n,s,a,e.inputs[4],void 0,void 0,void 0,e.inputs[5],r)}}),ww,yw,bw,Pw,Tk=Je(()=>{Gs(),zt(),Kt(),an(),er(),ww=(e,t)=>{if(!e||e.length!==5)throw new Error("BatchNormalization requires 5 inputs");let r=(n,s,a)=>{let i=s.length;if(i!==n.length)throw new Error(`${a}: num dimensions != ${i}`);s.forEach((o,l)=>{if(o!==n[l])throw new Error(`${a}: dim[${l}] do not match`)})};if(e[0].dims.length>1){let n=t.format==="NHWC"?t.spatial?e[0].dims.slice(-1):e[0].dims.slice(-1).concat(e[0].dims.slice(1,e[0].dims.length-1)):e[0].dims.slice(1,t.spatial?2:void 0);r(e[1].dims,n,"Invalid input scale"),r(e[2].dims,n,"Invalid input B"),r(e[3].dims,n,"Invalid input mean"),r(e[4].dims,n,"Invalid input var")}else r(e[1].dims,[1],"Invalid input scale"),r(e[2].dims,[1],"Invalid input B"),r(e[3].dims,[1],"Invalid input mean"),r(e[4].dims,[1],"Invalid input var")},yw=(e,t)=>{let{epsilon:r,spatial:n,format:s}=t,a=e[0].dims,i=n?Jr(a[a.length-1]):1,o=s==="NHWC"&&a.length>1?i:1,l=Te.size(a)/i,u=n,p=u?a.length:a,d=Ye("x",e[0].dataType,e[0].dims,i),c=Ye("scale",e[1].dataType,e[1].dims,o),g=Ye("bias",e[2].dataType,e[2].dims,o),A=Ye("inputMean",e[3].dataType,e[3].dims,o),m=Ye("inputVar",e[4].dataType,e[4].dims,o),B=bt("y",e[0].dataType,p,i),f=()=>{let P="";if(n)P=`let cOffset = ${a.length===1?"0u":s==="NHWC"?`outputIndices[${a.length-1}] / ${i}`:"outputIndices[1]"};`;else if(s==="NCHW")P=` 397 ${B.indicesSet("outputIndices","0","0")} 398 let cOffset = ${B.indicesToOffset("outputIndices")};`;else{P=`var cIndices = ${c.type.indices}(0);
399 cIndices[0] = outputIndices[${a.length-1}];`;for(let _=1;_<c.rank;_++)P+=`cIndices[${_}] = outputIndices[${_}];`;P+=`let cOffset = ${c.indicesToOffset("cIndices")};`}return P},h=P=>` 400 const epsilon = ${r}; 401 ${P.registerUniform("outputSize","u32").declareVariables(d,c,g,A,m,B)} 402 ${P.mainStart()} 403 ${P.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} 404 var outputIndices = ${B.offsetToIndices(`global_idx * ${i}`)}; 405 ${f()} 406 let scale = ${c.getByOffset("cOffset")}; 407 let bias = ${g.getByOffset("cOffset")}; 408 let inputMean = ${A.getByOffset("cOffset")}; 409 let inputVar = ${m.getByOffset("cOffset")}; 410 let x = ${d.getByOffset("global_idx")}; 411 let value = (x - inputMean) * inverseSqrt(inputVar + epsilon) * scale + bias; 412 ${B.setByOffset("global_idx","value")} 413 }`;return{name:"BatchNormalization",shaderCache:{hint:`${t.epsilon}_${t.format}_${n}_${i}`,inputDependencies:u?["rank","type","type","type","type"]:void 0},getShaderSource:h,getRunData:()=>({outputs:[{dims:e[0].dims,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(l/64)},programUniforms:u?[{type:12,data:l},...Dt(a)]:[{type:12,data:l}]})}},bw=e=>br(e),Pw=(e,t)=>{let{inputs:r,outputCount:n}=e,s=bw({...t,outputCount:n});if(jr.webgpu.validateInputContent&&ww(r,s),t.trainingMode)throw new Error("BatchNormalization trainingMode is not supported yet.");e.compute(yw(r,s))}}),Mw,vw,Bw,Ck=Je(()=>{Kt(),er(),Mw=e=>{if(e[0].dims.length!==3)throw new Error("input should have 3 dimensions");if(![320,640,1280].includes(e[0].dims[2]))throw new Error("number of channels should be 320, 640 or 1280");if(e[1].dims.length!==1)throw new Error("bias is expected to have 1 dimensions");if(e[0].dims[2]!==e[1].dims[0])throw new Error("last dimension of input and bias are not the same")},vw=e=>{let t=e[0].dims,r=e[0].dims[2],n=Te.size(t)/4,s=e[0].dataType,a=Ye("input",s,t,4),i=Ye("bias",s,[r],4),o=Ye("residual",s,t,4),l=bt("output",s,t,4);return{name:"BiasAdd",getRunData:()=>({outputs:[{dims:t,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(n/64)}}),getShaderSource:u=>` 414 const channels = ${r}u / 4; 415 ${u.declareVariables(a,i,o,l)} 416 417 ${u.mainStart()} 418 ${u.guardAgainstOutOfBoundsWorkgroupSizes(n)} 419 let value = ${a.getByOffset("global_idx")} 420 + ${i.getByOffset("global_idx % channels")} + ${o.getByOffset("global_idx")}; 421 ${l.setByOffset("global_idx","value")} 422 }`}},Bw=e=>{Mw(e.inputs),e.compute(vw(e.inputs))}}),xw,_r,Ew,Dw,Iw,Tw,Cw,$w,Sw,kw,Ow,Gw,zw,Fw,Lw,Rw,xl,Yw,ic,Nw,jw,Uw,Ww,Vw,Qw,Hw,Kw,qw,Xw,Zw,Jw,ey,ty,ry,ny,qp,sy,Xp,Zp,ay,iy,oy,ly,uy,cy,Jp=Je(()=>{zt(),Kt(),an(),er(),xw=(e,t,r,n,s,a,i)=>{let o=Math.ceil(t/4),l="";typeof s=="string"?l=`${s}(a)`:l=s("a");let u=Ye("inputData",r,[o],4),p=bt("outputData",n,[o],4),d=[{name:"vec_size",type:"u32"}];return i&&d.push(...i),` 423 ${e.registerUniforms(d).declareVariables(u,p)} 424 425 ${a??""} 426 427 ${e.mainStart()} 428 ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")} 429 430 let a = ${u.getByOffset("global_idx")}; 431 ${p.setByOffset("global_idx",l)} 432 }`},_r=(e,t,r,n,s,a=e.dataType,i,o)=>{let l=[{type:12,data:Math.ceil(Te.size(e.dims)/4)}];return i&&l.push(...i),{name:t,shaderCache:{hint:s,inputDependencies:["type"]},getShaderSource:u=>xw(u,Te.size(e.dims),e.dataType,a,r,n,o),getRunData:u=>({outputs:[{dims:e.dims,dataType:a}],dispatchGroup:{x:Math.ceil(Te.size(u[0].dims)/64/4)},programUniforms:l})}},Ew=e=>{e.compute(_r(e.inputs[0],"Abs","abs"))},Dw=e=>{e.compute(_r(e.inputs[0],"Acos","acos"))},Iw=e=>{e.compute(_r(e.inputs[0],"Acosh","acosh"))},Tw=e=>{e.compute(_r(e.inputs[0],"Asin","asin"))},Cw=e=>{e.compute(_r(e.inputs[0],"Asinh","asinh"))},$w=e=>{e.compute(_r(e.inputs[0],"Atan","atan"))},Sw=e=>{e.compute(_r(e.inputs[0],"Atanh","atanh"))},kw=e=>br(e),Ow=(e,t)=>{let r;switch(t.to){case 10:r="vec4<f16>";break;case 1:r="vec4<f32>";break;case 12:r="vec4<u32>";break;case 6:r="vec4<i32>";break;case 9:r="vec4<bool>";break;default:throw new RangeError(`not supported type (specified in attribute 'to' from 'Cast' operator): ${t.to}`)}
vendor: 4,262 bytes, lines 432-478
432e.compute(_r(e.inputs[0],"Cast",r,void 0,t.cacheKey,t.to))},Gw=e=>{let t,r,n=e.length>=2&&e[1].data!==0,s=e.length>=3&&e[2].data!==0;switch(e[0].dataType){case 1:t=n?e[1].getFloat32Array()[0]:-34028234663852886e22,r=s?e[2].getFloat32Array()[0]:34028234663852886e22;break;case 10:t=n?e[1].getUint16Array()[0]:64511,r=s?e[2].getUint16Array()[0]:31743;break;default:throw new Error("Unsupport data type")}return br({min:t,max:r})},zw=(e,t)=>{let r=t||Gw(e.inputs),n=Ln(e.inputs[0].dataType);e.compute(_r(e.inputs[0],"Clip",s=>`clamp(${s}, vec4<${n}>(uniforms.min), vec4<${n}>(uniforms.max))`,void 0,r.cacheKey,void 0,[{type:e.inputs[0].dataType,data:r.min},{type:e.inputs[0].dataType,data:r.max}],[{name:"min",type:n},{name:"max",type:n}]),{inputs:[0]})},Fw=e=>{e.compute(_r(e.inputs[0],"Ceil","ceil"))},Lw=e=>{e.compute(_r(e.inputs[0],"Cos","cos"))},Rw=e=>{e.compute(_r(e.inputs[0],"Cosh","cosh"))},xl=e=>br(e),Yw=(e,t)=>{let r=Ln(e.inputs[0].dataType);e.compute(_r(e.inputs[0],"Elu",n=>`elu_vf32(${n})`,` 433 const elu_alpha_ = ${r}(${t.alpha}); 434 435 fn elu_f32(a: ${r}) -> ${r} { 436 return select((exp(a) - 1.0) * elu_alpha_, a, a >= 0.0); 437 } 438 439 fn elu_vf32(v: vec4<${r}>) -> vec4<${r}> { 440 return vec4(elu_f32(v.x), elu_f32(v.y), elu_f32(v.z), elu_f32(v.w)); 441 }`,t.cacheKey))},ic=(e="f32")=>` 442const r0: ${e} = 0.3275911; 443const r1: ${e} = 0.254829592; 444const r2: ${e} = -0.284496736; 445const r3: ${e} = 1.421413741; 446const r4: ${e} = -1.453152027; 447const r5: ${e} = 1.061405429; 448 449fn erf_vf32(v: vec4<${e}>) -> vec4<${e}> { 450 let absv = abs(v); 451 let x = 1.0 / (1.0 + r0 * absv); 452 return sign(v) * (1.0 - ((((r5 * x + r4) * x + r3) * x + r2) * x + r1) * x * exp(-absv * absv)); 453}`,Nw=e=>{let t=Ln(e.inputs[0].dataType);e.compute(_r(e.inputs[0],"Erf",r=>`erf_vf32(${r})`,ic(t)))},jw=e=>{e.compute(_r(e.inputs[0],"Exp","exp"))},Uw=e=>{e.compute(_r(e.inputs[0],"Floor","floor"))},Ww=e=>{let t=Ln(e.inputs[0].dataType);e.compute(_r(e.inputs[0],"Gelu",r=>`0.5 * ${r} * (1.0 + erf_vf32(${r} * 0.7071067811865475))`,ic(t)))},Vw=(e,t)=>{let r=Ln(e.inputs[0].dataType);e.compute(_r(e.inputs[0],"LeakyRelu",n=>`select(leaky_relu_alpha_ * ${n}, ${n}, ${n} >= vec4<${r}>(0.0))`,`const leaky_relu_alpha_ = ${r}(${t.alpha});`,t.cacheKey))},Qw=e=>{e.compute(_r(e.inputs[0],"Not",t=>`!${t}`))},Hw=e=>{e.compute(_r(e.inputs[0],"Neg",t=>`-${t}`))},Kw=e=>{e.compute(_r(e.inputs[0],"Reciprocal",t=>`1.0/${t}`))},qw=e=>{let t=Ln(e.inputs[0].dataType);e.compute(_r(e.inputs[0],"Relu",r=>`select(vec4<${t}>(0.0), ${r}, ${r} > vec4<${t}>(0.0))`))},Xw=e=>{e.compute(_r(e.inputs[0],"Sigmoid",t=>`(1.0 / (1.0 + exp(-${t})))`))},Zw=e=>br(e),Jw=(e,t)=>{let r=Ln(e.inputs[0].dataType);e.compute(_r(e.inputs[0],"HardSigmoid",n=>`max(vec4<${r}>(0.0), min(vec4<${r}>(1.0), ${t.alpha} * ${n} + vec4<${r}>(${t.beta})))`,void 0,t.cacheKey))},ey=e=>{e.compute(_r(e.inputs[0],"Sin","sin"))},ty=e=>{e.compute(_r(e.inputs[0],"Sinh","sinh"))},ry=e=>{e.compute(_r(e.inputs[0],"Sqrt","sqrt"))},ny=e=>{e.compute(_r(e.inputs[0],"Tan","tan"))},qp=e=>`sign(${e}) * (1 - exp(-2 * abs(${e}))) / (1 + exp(-2 * abs(${e})))`,sy=e=>{e.compute(_r(e.inputs[0],"Tanh",qp))},Xp=(e="f32")=>` 454const fast_gelu_a: ${e} = 0.5; 455const fast_gelu_b: ${e} = 0.7978845608028654; 456const fast_gelu_c: ${e} = 0.035677408136300125; 457 458fn tanh_v(v: vec4<${e}>) -> vec4<${e}> { 459 return ${qp("v")}; 460} 461`,Zp=e=>`(fast_gelu_a + fast_gelu_a * tanh_v(${e} * (fast_gelu_c * ${e} * ${e} + fast_gelu_b))) * ${e}`,ay=e=>{let t=Ln(e.inputs[0].dataType);e.compute(_r(e.inputs[0],"FastGelu",Zp,Xp(t),void 0,e.inputs[0].dataType))},iy=(e,t)=>{let r=Ln(e.inputs[0].dataType);return e.compute(_r(e.inputs[0],"ThresholdedRelu",n=>`select(vec4<${r}>(0.0), ${n}, ${n} > thresholded_relu_alpha_)`,`const thresholded_relu_alpha_ = vec4<${r}>(${t.alpha});`,t.cacheKey)),0},oy=e=>{e.compute(_r(e.inputs[0],"Log","log"))},ly=(e,t)=>` 462const alpha = vec4<${e}>(${t}); 463const one = ${e}(1.0); 464const zero = ${e}(0.0); 465 466fn quick_gelu_impl(x: vec4<${e}>) -> vec4<${e}> { 467 let v = x *alpha; 468 var x1 : vec4<${e}>; 469 for (var i = 0; i < 4; i = i + 1) { 470 if (v[i] >= zero) { 471 x1[i] = one / (one + exp(-v[i])); 472 } else { 473 x1[i] = one - one / (one + exp(v[i])); 474 } 475 } 476 return x * x1; 477} 478`,uy=e=>`quick_gelu_impl(${e})`,cy=(e,t)=>{let r=Ln(e.inputs[0].dataType);
478e.compute(_r(e.inputs[0],"QuickGelu",uy,ly(r,t.alpha),t.cacheKey,e.inputs[0].dataType))}}),dy,py,gy,$k=Je(()=>{Kt(),er(),Jp(),dy=e=>{if(e[0].dims.length!==3)throw new Error("input should have 3 dimensions");if(![2560,5120,10240].includes(e[0].dims[2]))throw new Error("hidden state should be 2560, 5120 or 10240");if(e[1].dims.length!==1)throw new Error("bias is expected to have 1 dimensions");if(e[0].dims[2]!==e[1].dims[0])throw new Error("last dimension of input and bias are not the same")},py=e=>{let t=e[0].dims.slice();t[2]=t[2]/2;let r=Ye("input",e[0].dataType,e[0].dims,4),n=Ye("bias",e[0].dataType,[e[0].dims[2]],4),s=bt("output",e[0].dataType,t,4),a=Te.size(t)/4,i=vn(e[0].dataType);return{name:"BiasSplitGelu",getRunData:()=>({outputs:[{dims:t,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(a/64)}}),getShaderSource:o=>` 479 const M_SQRT2 = sqrt(2.0); 480 const halfChannels = ${e[0].dims[2]/4/2}u; 481 482 ${o.declareVariables(r,n,s)} 483 484 ${ic(i)} 485 486 ${o.mainStart()} 487 ${o.guardAgainstOutOfBoundsWorkgroupSizes(a)} 488 let biasIdx = global_idx % halfChannels; 489 let batchIndex = global_idx / halfChannels; 490 let inputOffset = biasIdx + batchIndex * halfChannels * 2; 491 let valueLeft = input[inputOffset] + bias[biasIdx]; 492 let valueRight = input[inputOffset + halfChannels] + bias[biasIdx + halfChannels]; 493 let geluRight = valueRight * 0.5 * (erf_vf32(valueRight / M_SQRT2) + 1); 494 495 ${s.setByOffset("global_idx","valueLeft * geluRight")} 496 }`}},gy=e=>{dy(e.inputs),e.compute(py(e.inputs))}}),Ay,hy,Ns,my,fy,_y,wy,yy,by,Py,My,vy,By,Sk=Je(()=>{zt(),Kt(),er(),Ay=(e,t,r,n,s,a,i,o,l,u,p,d)=>{let c,g;typeof o=="string"?c=g=(h,P)=>`${o}((${h}),(${P}))`:typeof o=="function"?c=g=o:(c=o.scalar,g=o.vector);let A=bt("outputData",p,n.length,4),m=Ye("aData",l,t.length,4),B=Ye("bData",u,r.length,4),f;if(s)if(a){let h=Te.size(t)===1,P=Te.size(r)===1,_=t.length>0&&t[t.length-1]%4===0,w=r.length>0&&r[r.length-1]%4===0;h||P?f=A.setByOffset("global_idx",g(h?`${m.type.value}(${m.getByOffset("0")}.x)`:m.getByOffset("global_idx"),P?`${B.type.value}(${B.getByOffset("0")}.x)`:B.getByOffset("global_idx"))):f=` 497 let outputIndices = ${A.offsetToIndices("global_idx * 4u")}; 498 let offsetA = ${m.broadcastedIndicesToOffset("outputIndices",A)}; 499 let offsetB = ${B.broadcastedIndicesToOffset("outputIndices",A)}; 500 ${A.setByOffset("global_idx",g(i||_?m.getByOffset("offsetA / 4u"):`${m.type.value}(${m.getByOffset("offsetA / 4u")}[offsetA % 4u])`,i||w?B.getByOffset("offsetB / 4u"):`${B.type.value}(${B.getByOffset("offsetB / 4u")}[offsetB % 4u])`))} 501 `}else f=A.setByOffset("global_idx",g(m.getByOffset("global_idx"),B.getByOffset("global_idx")));else{if(!a)throw new Error("no necessary to use scalar implementation for element-wise binary op implementation.");let h=(P,_,w="")=>{let b=`aData[indexA${_}][componentA${_}]`,v=`bData[indexB${_}][componentB${_}]`;return` 502 let outputIndices${_} = ${A.offsetToIndices(`global_idx * 4u + ${_}u`)}; 503 let offsetA${_} = ${m.broadcastedIndicesToOffset(`outputIndices${_}`,A)}; 504 let offsetB${_} = ${B.broadcastedIndicesToOffset(`outputIndices${_}`,A)}; 505 let indexA${_} = offsetA${_} / 4u; 506 let indexB${_} = offsetB${_} / 4u; 507 let componentA${_} = offsetA${_} % 4u; 508 let componentB${_} = offsetB${_} % 4u; 509 ${P}[${_}] = ${w}(${c(b,v)}); 510 `};p===9?f=` 511 var data = vec4<u32>(0); 512 ${h("data",0,"u32")} 513 ${h("data",1,"u32")} 514 ${h("data",2,"u32")} 515 ${h("data",3,"u32")} 516 outputData[global_idx] = dot(vec4<u32>(0x1, 0x100, 0x10000, 0x1000000), vec4<u32>(data));`:f=` 517 ${h("outputData[global_idx]",0)} 518 ${h("outputData[global_idx]",1)} 519 ${h("outputData[global_idx]",2)} 520 ${h("outputData[global_idx]",3)} 521 `}return` 522 ${e.registerUniform("vec_size","u32").declareVariables(m,B,A)} 523 524 ${d??""} 525 526 ${e.mainStart()} 527 ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")} 528 ${f} 529 }`},hy=(e,t,r,n,s,a,i=r.dataType)=>{let o=r.dims.map(m=>Number(m)??1),l=n.dims.map(m=>Number(m)??1),u=!Te.areEqual(o,l),p=o,d=Te.size(o),c=!1,g=!1,A=[u];
vendor: 19,242 bytes, lines 529-834
529if(u){let m=xo.calcShape(o,l,!1);if(!m)throw new Error("Can't perform binary op on the given tensors");p=m.slice(),d=Te.size(p);let B=Te.size(o)===1,f=Te.size(l)===1,h=o.length>0&&o[o.length-1]%4===0,P=l.length>0&&l[l.length-1]%4===0;A.push(B),A.push(f),A.push(h),A.push(P);let _=1;for(let w=1;w<p.length;w++){let b=o[o.length-w],v=l[l.length-w];if(b===v)_*=b;else break}_%4===0?(g=!0,c=!0):(B||f||h||P)&&(c=!0)}else c=!0;return A.push(c),{name:e,shaderCache:{hint:t+A.map(m=>m.toString()).join("_"),inputDependencies:["rank","rank"]},getShaderSource:m=>Ay(m,o,l,p,c,u,g,s,r.dataType,n.dataType,i,a),getRunData:()=>({outputs:[{dims:p,dataType:i}],dispatchGroup:{x:Math.ceil(d/64/4)},programUniforms:[{type:12,data:Math.ceil(Te.size(p)/4)},...Dt(o,l,p)]})}},Ns=(e,t,r,n,s,a)=>{e.compute(hy(t,s??"",e.inputs[0],e.inputs[1],r,n,a))},my=e=>{Ns(e,"Add",(t,r)=>`${t}+${r}`)},fy=e=>{Ns(e,"Div",(t,r)=>`${t}/${r}`)},_y=e=>{Ns(e,"Equal",{scalar:(t,r)=>`u32(${t}==${r})`,vector:(t,r)=>`vec4<u32>(${t}==${r})`},void 0,void 0,9)},wy=e=>{Ns(e,"Mul",(t,r)=>`${t}*${r}`)},yy=e=>{let t=Ye("input",e.inputs[0].dataType,e.inputs[0].dims).type.value;Ns(e,"Pow",{scalar:(r,n)=>`pow_custom(${r},${n})`,vector:(r,n)=>`pow_vector_custom(${r},${n})`},` 530 fn pow_custom(a : ${t}, b : ${t}) -> ${t} { 531 if (b == ${t}(0.0)) { 532 return ${t}(1.0); 533 } else if (a < ${t}(0.0) && f32(b) != floor(f32(b))) { 534 return ${t}(pow(f32(a), f32(b))); // NaN 535 } 536 return select(sign(a), ${t}(1.0), round(f32(abs(b) % ${t}(2.0))) != 1.0) * ${t}(${t==="i32"?"round":""}(pow(f32(abs(a)), f32(b)))); 537 } 538 fn pow_vector_custom(a : vec4<${t}>, b : vec4<${t}>) -> vec4<${t}> { 539 // TODO: implement vectorized pow 540 return vec4<${t}>(pow_custom(a.x, b.x), pow_custom(a.y, b.y), pow_custom(a.z, b.z), pow_custom(a.w, b.w)); 541 } 542 `)},by=e=>{Ns(e,"Sub",(t,r)=>`${t}-${r}`)},Py=e=>{Ns(e,"Greater",{scalar:(t,r)=>`u32(${t}>${r})`,vector:(t,r)=>`vec4<u32>(${t}>${r})`},void 0,void 0,9)},My=e=>{Ns(e,"Less",{scalar:(t,r)=>`u32(${t}<${r})`,vector:(t,r)=>`vec4<u32>(${t}<${r})`},void 0,void 0,9)},vy=e=>{Ns(e,"GreaterOrEqual",{scalar:(t,r)=>`u32(${t}>=${r})`,vector:(t,r)=>`vec4<u32>(${t}>=${r})`},void 0,void 0,9)},By=e=>{Ns(e,"LessOrEqual",{scalar:(t,r)=>`u32(${t}<=${r})`,vector:(t,r)=>`vec4<u32>(${t}<=${r})`},void 0,void 0,9)}}),xy,Ey,Dy,Iy,Ty,Cy,kk=Je(()=>{zt(),Kt(),an(),er(),xy=(e,t)=>{if(!e||e.length<1)throw new Error("too few inputs");let r=0,n=e[r],s=n.dataType,a=n.dims.length;e.forEach((i,o)=>{if(o!==r){if(i.dataType!==s)throw new Error("input tensors should be one type");if(i.dims.length!==a)throw new Error("input tensors should have the same shape");i.dims.forEach((l,u)=>{if(u!==t&&l!==n.dims[u])throw new Error("non concat dimensions must match")})}})},Ey=(e,t)=>` 543 fn calculateInputIndex(index: u32) -> u32 { 544 let sizeInConcatAxis = array<u32, ${e}u>(${t}); 545 for (var i: u32 = 0u; i < ${e}; i += 1u ) { 546 if (index < sizeInConcatAxis[i]) { 547 return i; 548 } 549 } 550 return ${e}u; 551 }`,Dy=(e,t)=>{let r=e.length,n=[];for(let s=0;s<r;++s){let a=t.setByOffset("global_idx",e[s].getByIndices("indices"));r===1?n.push(a):s===0?n.push(`if (inputIndex == ${s}u) { ${a} }`):s===r-1?n.push(`else { ${a} }`):n.push(`else if (inputIndex == ${s}) { ${a} }`)}return n.join(` 552`)},Iy=(e,t,r,n)=>{let s=Te.size(r),a=new Array(e.length),i=new Array(e.length),o=0,l=[],u=[],p=[{type:12,data:s}];for(let m=0;m<e.length;++m)o+=e[m].dims[t],a[m]=o,u.push(e[m].dims.length),i[m]=Ye(`input${m}`,n,u[m]),l.push("rank"),p.push({type:12,data:a[m]});for(let m=0;m<e.length;++m)p.push(...Dt(e[m].dims));p.push(...Dt(r));let d=bt("output",n,r.length),c=d.indicesGet("indices",t),g=Array.from(Array(a.length).keys()).map(m=>`uniforms.sizeInConcatAxis${m}`).join(","),A=m=>` 553 554 ${(()=>{m.registerUniform("outputSize","u32");for(let B=0;B<e.length;B++)m.registerUniform(`sizeInConcatAxis${B}`,"u32");return m.declareVariables(...i,d)})()} 555 556 ${Ey(a.length,g)} 557 558 ${m.mainStart()} 559 ${m.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} 560 561 var indices = ${d.offsetToIndices("global_idx")}; 562 563 let inputIndex = calculateInputIndex(${c}); 564 if (inputIndex != 0u) { 565 let sizeInConcatAxis = array<u32, ${a.length}u>(${g}); 566 ${c} -= sizeInConcatAxis[inputIndex - 1u]; 567 } 568 569 ${Dy(i,d)} 570 }`;return{name:"Concat",shaderCache:{hint:`${t}`,inputDependencies:l},getRunData:()=>({outputs:[{dims:r,dataType:n}],dispatchGroup:{x:Math.ceil(s/64)},programUniforms:p}),getShaderSource:A}},Ty=(e,t)=>{let r=e.inputs,n=r[0].dims,s=Te.normalizeAxis(t.axis,n.length);xy(r,s);let a=n.slice();a[s]=r.reduce((o,l)=>o+(l.dims.length>s?l.dims[s]:0),0);let i=r.filter(o=>Te.size(o.dims)>0);e.compute(Iy(i,s,a,r[0].dataType),{inputs:i})},Cy=e=>br({axis:e.axis})}),Si,ki,Oi,eg,Gi=Je(()=>{zt(),Kt(),Si=(e,t,r="f32")=>{switch(e.activation){case"Relu":return`value = max(value, ${t}(0.0));`;case"Sigmoid":return`value = (${t}(1.0) / (${t}(1.0) + exp(-value)));`;case"Clip":return`value = clamp(value, ${t}(${r}(uniforms.clip_min)), ${t}(${r}(uniforms.clip_max)));`;case"HardSigmoid":return`value = max(${t}(0.0), min(${t}(1.0), ${r}(uniforms.alpha) * value + ${r}(uniforms.beta)));`;case"LeakyRelu":return`value = select(${r}(uniforms.alpha) * value, value, value >= ${t}(0.0));`;case"Tanh":return`let e2x = exp(-2.0 * abs(value)); 571 value = sign(value) * (1.0 - e2x) / (1.0 + e2x); 572 `;case"":return"";default:throw new Error(`Unsupported activation ${e.activation}`)}},ki=(e,t)=>{e.activation==="Clip"?t.push({type:1,data:e.clipMax},{type:1,data:e.clipMin}):e.activation==="HardSigmoid"?t.push({type:1,data:e.alpha},{type:1,data:e.beta}):e.activation==="LeakyRelu"&&t.push({type:1,data:e.alpha})},Oi=(e,t)=>{e.activation==="Clip"?t.push({name:"clip_max",type:"f32"},{name:"clip_min",type:"f32"}):e.activation==="HardSigmoid"?t.push({name:"alpha",type:"f32"},{name:"beta",type:"f32"}):e.activation==="LeakyRelu"&&t.push({name:"alpha",type:"f32"})},eg=e=>{let t=e?.activation||"";if(t==="HardSigmoid"){let[r,n]=e?.activation_params||[.2,.5];return{activation:t,alpha:r,beta:n}}else if(t==="Clip"){let[r,n]=e?.activation_params||[e_,t_];return{activation:t,clipMax:n,clipMin:r}}else if(t==="LeakyRelu"){let[r]=e?.activation_params||[.01];return{activation:t,alpha:r}}return{activation:t}}}),Cn,$y,tg=Je(()=>{Cn=(e,t)=>{switch(e){case 1:return t;case 2:return`vec2<${t}>`;case 3:return`vec3<${t}>`;case 4:return`vec4<${t}>`;default:throw new Error(`${e}-component is not supported.`)}},$y=e=>` 573 ${e?"value = value + getBiasByOutputCoords(coords);":""} 574 `}),Sy,Ok=Je(()=>{Sy=e=>` 575fn getIndexFromCoords4D(coords : vec4<i32>, shape : vec4<i32>) -> i32 { 576 return dot(coords, vec4<i32>( 577 shape.y * shape.z * shape.w, shape.z * shape.w, shape.w, 1)); 578} 579fn getOutputIndexFromCoords(coords : vec4<i32>) -> i32 { 580 return dot(coords, vec4<i32>( 581 i32(${e}.x), i32(${e}.y), i32(${e}.z), 1)); 582} 583`}),El,rg,ng=Je(()=>{zt(),Kt(),er(),Gi(),El=(e,t,r,n,s)=>{let a=n-r;return` 584 ${Array.from({length:r}).map((i,o)=>` 585 if (${Bt(t.shape,o,t.rank)} != 1) { 586 ${t.indicesSet(e,o,Bt(s,o+a,n))} 587 } else { 588 ${t.indicesSet(e,o,0)} 589 }`).join("")} 590`},rg=(e,t,r,n,s=!1,a)=>{let i=e[0].dims,o=e[1].dims,l=i[i.length-2],u=o[o.length-1],p=i[i.length-1],d=Jr(u),c=Jr(p),g=Jr(l),A=Te.size(r)/d/g,m=e.length>2,B=n?n.slice(0,-2):r.slice(0,-2),f=[Te.size(B),l,u],h=[{type:12,data:A},{type:12,data:l},{type:12,data:u},{type:12,data:p}];ki(t,h),h.push(...Dt(B,i,o)),m&&h.push(...Dt(e[2].dims)),h.push(...Dt(f));let P=_=>{let w=jp("batch_dims",e[0].dataType,B.length),b=Ye("a",e[0].dataType,i.length,c),v=Ye("b",e[1].dataType,o.length,d),y=bt("output",e[0].dataType,f.length,d),$=vn(y.type.tensor),k=Si(t,y.type.value,$),W=[b,v],j="";if(m){let L=s?d:1;W.push(Ye("bias",e[2].dataType,e[2].dims.length,L)),j=`${s?`value += bias[col / ${L}];`:`value += ${y.type.value}(bias[row + i]);`}`}let F=[{name:"output_size",type:"u32"},{name:"M",type:"u32"},{name:"N",type:"u32"},{name:"K",type:"u32"}];Oi(t,F);let R=()=>{let L=`var a_data: ${b.type.value};`;for(let Q=0;Q<c;Q++)L+=` 591 let b_data${Q} = b[(b_offset + (k + ${Q}) * uniforms.N + col) / ${d}];`;for(let Q=0;Q<g;Q++){L+=`a_data = a[(a_offset + (row + ${Q}) * uniforms.K + k) / ${c}];`;for(let ne=0;ne<c;ne++)L+=` 592 values[${Q}] = fma(${v.type.value}(a_data${c===1?"":`[${ne}]`}), b_data${ne}, values[${Q}]); 593`}return L};return` 594 ${_.registerUniforms(F).registerInternalVariables(w).declareVariables(...W,y)} 595 ${_.mainStart()} 596 ${_.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 597 let col = (global_idx % (uniforms.N / ${d})) * ${d}; 598 var index1 = global_idx / (uniforms.N / ${d}); 599 let stride1 = uniforms.M / ${g}; 600 let row = (index1 % stride1) * ${g}; 601 let batch = index1 / stride1; 602 603 ${r.length===2?"":`let batch_indices = ${w.offsetToIndices("batch")};`} 604 605 var a_indices: ${b.type.indices}; 606 ${El("a_indices",b,b.rank-2,w.rank,"batch_indices")} 607 ${b.indicesSet("a_indices",b.rank-2,0)} 608 ${b.indicesSet("a_indices",b.rank-1,0)} 609 let a_offset = ${b.indicesToOffset("a_indices")}; 610 611 var b_indices: ${v.type.indices}; 612 ${El("b_indices",v,v.rank-2,w.rank,"batch_indices")} 613 ${v.indicesSet("b_indices",v.rank-2,0)} 614 ${v.indicesSet("b_indices",v.rank-1,0)} 615 let b_offset = ${v.indicesToOffset("b_indices")}; 616 var values: array<${y.type.value}, ${g}>; 617 for (var k: u32 = 0u; k < uniforms.K; k = k + ${c}) { 618 ${R()} 619 } 620 for (var i = 0u; i < ${g}u; i++) { 621 var value = values[i]; 622 ${j} 623 ${k} 624 let cur_indices = ${y.type.indices}(batch, row + i, col); 625 let offset = ${y.indicesToOffset("cur_indices")}; 626 ${y.setByOffset(`offset / ${d}`,"value")}; 627 } 628 } 629 `};return{name:"MatMulNaive",shaderCache:{hint:`${t.activation};${d};${c};${g};${s}`,inputDependencies:m?["rank","rank","rank"]:["rank","rank"]},getRunData:()=>({outputs:[{dims:a?a(r):r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(A/64)},programUniforms:h}),getShaderSource:P}}}),ky,Oy,sg,ag,Gy,ig,zy,oc,og=Je(()=>{zt(),Kt(),er(),Gi(),ng(),tg(),ky=(e,t)=>e?` 630 mm_Asub[inputRow][inputCol] = mm_readA(batch, 631 kStart + inputRow, 632 globalRowStart / innerElementSize + inputCol${t?", batchIndices":""}); 633 `:` 634 mm_Asub[inputRow][inputCol] = mm_readA(batch, 635 globalRow + innerRow, 636 kStart / innerElementSize + inputCol${t?", batchIndices":""}); 637 `,Oy=(e,t)=>e?` 638 let ACached0 = mm_Asub[k * innerElementSize][localRow]; 639 let ACached1 = mm_Asub[k * innerElementSize + 1][localRow]; 640 let ACached2 = mm_Asub[k * innerElementSize + 2][localRow]; 641 ${t===3?"":"let ACached3 = mm_Asub[k * innerElementSize + 3][localRow];"} 642 for (var i = 0; i < rowPerThread; i = i + 1) { 643 acc[i] = BCached0 * ACached0[i] + acc[i]; 644 acc[i] = BCached1 * ACached1[i] + acc[i]; 645 acc[i] = BCached2 * ACached2[i] + acc[i]; 646 ${t===3?"":"acc[i] = BCached3 * ACached3[i] + acc[i];"} 647 }`:` 648 for (var i = 0; i < rowPerThread; i = i + 1) { 649 let ACached = mm_Asub[tileRow + i][k]; 650 acc[i] = BCached0 * ACached.x + acc[i]; 651 acc[i] = BCached1 * ACached.y + acc[i]; 652 acc[i] = BCached2 * ACached.z + acc[i]; 653 ${t===3?"":"acc[i] = BCached3 * ACached.w + acc[i];"} 654 }`,sg=(e,t,r="f32",n,s=!1,a=32,i=!1,o=32)=>{let l=t[1]*e[1],u=t[0]*e[0],p=s?l:a,d=s?a:l,c=p/t[0],g=a/t[1];if(!((s&&c===4&&e[1]===4||!s&&(c===3||c===4))&&p%t[0]===0&&a%t[1]===0&&e[0]===4))throw new Error(`If transposeA ${s} is true, innerElementSize ${c} and workPerThread[1] ${e[1]} must be 4. 655 Otherwise, innerElementSize ${c} must be 3 or 4. 656 tileAWidth ${p} must be divisible by workgroupSize[0]${t[0]}. tileInner ${a} must be divisible by workgroupSize[1] ${t[1]}. colPerThread ${e[0]} must be 4.`);return` 657var<workgroup> mm_Asub: array<array<vec${c}<${r}>, ${p/c}>, ${d}>; 658var<workgroup> mm_Bsub: array<array<vec4<${r}>, ${u/e[0]}>, ${a}>; 659 660const rowPerThread = ${e[1]}; 661const colPerThread = ${e[0]}; 662const innerElementSize = ${c}; 663const tileInner = ${a}; 664 665@compute @workgroup_size(${t[0]}, ${t[1]}, ${t[2]}) 666fn main(@builtin(local_invocation_id) localId : vec3<u32>, 667 @builtin(global_invocation_id) globalId : vec3<u32>, 668 @builtin(workgroup_id) workgroupId : vec3<u32>) { 669 let localRow = i32(localId.y); 670 let tileRow = localRow * rowPerThread; 671 let tileCol = i32(localId.x); 672 673 let globalRow =i32(globalId.y) * rowPerThread; 674 let globalCol = i32(globalId.x); 675 let batch = ${i?"0":"i32(globalId.z)"}; 676 ${n?`let batchIndices = ${n.offsetToIndices("u32(batch)")};`:""} 677 let globalRowStart = i32(workgroupId.y) * ${l}; 678 679 let num_tiles = ${i?`${Math.ceil(o/a)}`:"(uniforms.dim_inner - 1) / tileInner + 1"}; 680 var kStart = ${i?`i32(globalId.z) * ${o}`:"0"}; 681 682 var acc: array<vec4<${r}>, rowPerThread>; 683 684 // Loop over shared dimension. 685 let tileRowB = localRow * ${g}; 686 for (var t = 0; t < num_tiles; t = t + 1) { 687 // Load one tile of A into local memory. 688 for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) { 689 let inputRow = tileRow + innerRow; 690 let inputCol = tileCol; 691 ${ky(s,n)} 692 } 693 694 // Load one tile of B into local memory. 695 for (var innerRow = 0; innerRow < ${g}; innerRow = innerRow + 1) { 696 let inputRow = tileRowB + innerRow; 697 let inputCol = tileCol; 698 mm_Bsub[inputRow][inputCol] = mm_readB(batch, kStart + inputRow, globalCol${n?", batchIndices":""}); 699 } 700 kStart = kStart + tileInner; 701 workgroupBarrier(); 702 703 // Compute acc values for a single thread. 704 for (var k = 0; k < tileInner / innerElementSize; k = k + 1) { 705 let BCached0 = mm_Bsub[k * innerElementSize][tileCol]; 706 let BCached1 = mm_Bsub[k * innerElementSize + 1][tileCol]; 707 let BCached2 = mm_Bsub[k * innerElementSize + 2][tileCol]; 708 ${c===3?"":"let BCached3 = mm_Bsub[k * innerElementSize + 3][tileCol];"} 709 710 ${Oy(s,c)} 711 } 712 713 workgroupBarrier(); 714 } 715 716 for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) { 717 mm_write(batch, globalRow + innerRow, globalCol, acc[innerRow]); 718 } 719}`},ag=(e,t)=>e?` 720 mm_Asub[inputRow][inputCol] = mm_readA(batch, 721 kStart + inputRow, 722 globalRowStart + inputCol${t?", batchIndices":""}); 723 `:` 724 mm_Asub[inputRow][inputCol] = mm_readA(batch, 725 globalRowStart + inputRow, 726 kStart + inputCol${t?", batchIndices":""}); 727 `,Gy=e=>e?"let ACached = mm_Asub[k][tileRow + innerRow];":"let ACached = mm_Asub[tileRow + innerRow][k];",ig=(e,t,r="f32",n,s=!1,a=32,i=!1,o=32,l=!1)=>{let u=e[1]*t[1],p=e[0]*t[0],d=s?u:a,c=s?a:u;if(!(c%t[1]===0&&d%t[0]===0&&a%t[1]===0))throw new Error(`tileAHight ${c} must be divisible by workgroupSize[1]${t[1]}, tileAWidth ${d} must be divisible by workgroupSize[0]${t[0]}, tileInner ${a} must be divisible by workgroupSize[1]${t[1]}`);let g=c/t[1],A=d/t[0],m=a/t[1],B=l?` 728 let localRow = i32(localId.y); 729 let localCol = i32(localId.x); 730 let globalRowStart = i32(workgroupId.y) * ${u}; 731 let globalColStart = i32(workgroupId.x) * ${p}; 732 733 // Loop over shared dimension. 734 for (var t = 0; t < num_tiles; t = t + 1) { 735 // Load one tile of A into local memory. 736 for (var inputRow = localRow; inputRow < ${c}; inputRow = inputRow + ${t[1]}) { 737 for (var inputCol = localCol; inputCol < ${d}; inputCol = inputCol + ${t[0]}) { 738 ${ag(s,n)} 739 } 740 } 741 // Load one tile of B into local memory. 742 for (var inputRow = localRow; inputRow < ${a}; inputRow = inputRow + ${t[1]}) { 743 for (var inputCol = localCol; inputCol < ${p}; inputCol = inputCol + ${t[0]}) { 744 mm_Bsub[inputRow][inputCol] = mm_readB(batch, 745 kStart + inputRow, 746 globalColStart + inputCol${n?", batchIndices":""}); 747 } 748 } 749 kStart = kStart + tileInner; 750 workgroupBarrier(); 751 752 // Compute acc values for a single thread. 753 var BCached : array<${r}, colPerThread>; 754 for (var k = 0; k < tileInner; k = k + 1) { 755 for (var inner = 0; inner < colPerThread; inner = inner + 1) { 756 BCached[inner] = mm_Bsub[k][localCol + inner * ${t[0]}]; 757 } 758 for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) { 759 let ACached = ${s?`mm_Asub[k][localRow + innerRow * ${t[1]}];`:`mm_Asub[localRow + innerRow * ${t[1]}][k];`} 760 for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) { 761 acc[innerRow][innerCol] = acc[innerRow][innerCol] + 762 ACached * BCached[innerCol]; 763 } 764 } 765 } 766 workgroupBarrier(); 767 } 768 for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) { 769 let gRow = globalRowStart + localRow + innerRow * ${t[1]}; 770 for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) { 771 let gCol = globalColStart + localCol + innerCol * ${t[0]}; 772 mm_write(batch, gRow, gCol, acc[innerRow][innerCol]); 773 } 774 } 775 `:` 776let tileRow = i32(localId.y) * rowPerThread; 777let tileCol = i32(localId.x) * colPerThread; 778 779let globalRow = i32(globalId.y) * rowPerThread; 780let globalCol = i32(globalId.x) * colPerThread; 781let globalRowStart = i32(workgroupId.y) * ${u}; 782 783let tileRowA = i32(localId.y) * ${g}; 784let tileColA = i32(localId.x) * ${A}; 785let tileRowB = i32(localId.y) * ${m}; 786// Loop over shared dimension. 787for (var t = 0; t < num_tiles; t = t + 1) { 788 // Load one tile of A into local memory. 789 for (var innerRow = 0; innerRow < ${g}; innerRow = innerRow + 1) { 790 for (var innerCol = 0; innerCol < ${A}; innerCol = innerCol + 1) { 791 let inputRow = tileRowA + innerRow; 792 let inputCol = tileColA + innerCol; 793 ${ag(s,n)} 794 } 795 } 796 797 // Load one tile of B into local memory. 798 for (var innerRow = 0; innerRow < ${m}; innerRow = innerRow + 1) { 799 for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) { 800 let inputRow = tileRowB + innerRow; 801 let inputCol = tileCol + innerCol; 802 mm_Bsub[inputRow][inputCol] = mm_readB(batch, 803 kStart + inputRow, 804 globalCol + innerCol${n?", batchIndices":""}); 805 } 806 } 807 kStart = kStart + tileInner; 808 workgroupBarrier(); 809 810 // Compute acc values for a single thread. 811 var BCached : array<${r}, colPerThread>; 812 for (var k = 0; k < tileInner; k = k + 1) { 813 for (var inner = 0; inner < colPerThread; inner = inner + 1) { 814 BCached[inner] = mm_Bsub[k][tileCol + inner]; 815 } 816 817 for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) { 818 ${Gy(s)} 819 for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) { 820 acc[innerRow][innerCol] = acc[innerRow][innerCol] + ACached * BCached[innerCol]; 821 } 822 } 823 } 824 825 workgroupBarrier(); 826} 827 828for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) { 829 for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) { 830 mm_write(batch, globalRow + innerRow, globalCol + innerCol, 831 acc[innerRow][innerCol]); 832 } 833} 834`;return`
835 var<workgroup> mm_Asub : array<array<${r}, ${d}>, ${c}>; 836 var<workgroup> mm_Bsub : array<array<${r}, ${p}>, ${a}>; 837 const rowPerThread = ${e[1]}; 838 const colPerThread = ${e[0]}; 839 const tileInner = ${a}; 840 841@compute @workgroup_size(${t[0]}, ${t[1]}, ${t[2]}) 842fn main(@builtin(local_invocation_id) localId : vec3<u32>, 843 @builtin(global_invocation_id) globalId : vec3<u32>, 844 @builtin(workgroup_id) workgroupId : vec3<u32>) { 845 let batch = ${i?"0":"i32(globalId.z)"}; 846 ${n?`let batchIndices = ${n.offsetToIndices("u32(batch)")};`:""} 847 let num_tiles = ${i?`${Math.ceil(o/a)}`:"(uniforms.dim_inner - 1) / tileInner + 1"}; 848 var kStart = ${i?`i32(globalId.z) * ${o}`:"0"}; 849 850 var acc : array<array<${r}, colPerThread>, rowPerThread>; 851 ${B} 852 } 853`},zy=(e,t,r,n,s=!1)=>{let[a,i,o,l]=n,u=vn(n[0].type.tensor);return` 854 fn mm_readA(batch: i32, row: i32, colIn: i32, batchIndices: ${a.type.indices}) -> ${Cn(e,u)} { 855 var value = ${Cn(e,u)}(0.0); 856 let col = colIn * ${e}; 857 if(row < uniforms.dim_a_outer && col < uniforms.dim_inner) 858 { 859 var aIndices: ${i.type.indices}; 860 ${El("aIndices",i,i.rank-2,a.rank,"batchIndices")} 861 ${i.indicesSet("aIndices",i.rank-2,"u32(row)")} 862 ${i.indicesSet("aIndices",i.rank-1,"u32(colIn)")} 863 value = ${i.getByIndices("aIndices")}; 864 } 865 return value; 866 } 867 868 fn mm_readB(batch: i32, row: i32, colIn: i32, batchIndices: ${a.type.indices}) -> ${Cn(e,u)} { 869 var value = ${Cn(e,u)}(0.0); 870 let col = colIn * ${e}; 871 if(row < uniforms.dim_inner && col < uniforms.dim_b_outer) 872 { 873 var bIndices: ${o.type.indices}; 874 ${El("bIndices",o,o.rank-2,a.rank,"batchIndices")} 875 ${o.indicesSet("bIndices",o.rank-2,"u32(row)")} 876 ${o.indicesSet("bIndices",o.rank-1,"u32(colIn)")} 877 value = ${o.getByIndices("bIndices")}; 878 } 879 return value; 880 } 881 882 fn mm_write(batch: i32, row: i32, colIn: i32, valueIn: ${Cn(e,u)}) { 883 let col = colIn * ${e}; 884 if (row < uniforms.dim_a_outer && col < uniforms.dim_b_outer) { 885 var value = valueIn; 886 let coords = vec3<i32>(batch, row, colIn); 887 ${t?`value = value + ${s?"bias[colIn]":`${Cn(e,u)}(bias[row])`};`:""} 888 ${r} 889 ${l.setByIndices("vec3<u32>(coords)","value")} 890 } 891 } 892 `},oc=(e,t,r,n,s=!1,a)=>{let i=e[0].dims,o=e[1].dims,l=i.slice(0,-2),u=o.slice(0,-2),p=n?n.slice(0,-2):r.slice(0,-2),d=Te.size(p),c=i[i.length-2],g=i[i.length-1],A=o[o.length-1],m=g%4===0&&A%4===0,B=c<=8?[4,1,1]:[4,4,1],f=[8,8,1],h=[Math.ceil(A/f[0]/B[0]),Math.ceil(c/f[1]/B[1]),Math.ceil(d/f[2]/B[2])],P=m?4:1,_=[...l,c,g/P],w=_.length,b=[...u,g,A/P],v=b.length,y=[d,c,A/P],$=[{type:6,data:c},{type:6,data:A},{type:6,data:g}];ki(t,$),$.push(...Dt(p,_,b));let k=["rank","rank"],W=e.length>2;W&&($.push(...Dt(e[2].dims)),k.push("rank")),$.push(...Dt(y));let j=F=>{let R=p.length,L=jp("batchDims",e[0].dataType,R,1),Q=vn(e[0].dataType),ne=Ye("a",e[0].dataType,w,P),re=Ye("b",e[1].dataType,v,P),ce=bt("result",e[0].dataType,y.length,P),ge=[ne,re];if(W){let oe=s?P:1;ge.push(Ye("bias",e[2].dataType,e[2].dims.length,oe))}let q=[{name:"dim_a_outer",type:"i32"},{name:"dim_b_outer",type:"i32"},{name:"dim_inner",type:"i32"}];Oi(t,q);let V=vn(ce.type.tensor),U=Si(t,ce.type.value,V),N=zy(P,W,U,[L,ne,re,ce],s);return` 893 ${F.registerUniforms(q).registerInternalVariables(L).declareVariables(...ge,ce)} 894 ${N} 895 ${m?sg(B,f,Q,L):ig(B,f,Q,L)} 896 `};return{name:"MatMul",shaderCache:{hint:`${B};${t.activation};${m};${s}`,inputDependencies:k},getRunData:()=>({outputs:[{dims:a?a(r):r,dataType:e[0].dataType}],dispatchGroup:{x:h[0],y:h[1],z:h[2]},programUniforms:$}),getShaderSource:j}}}),Fy,Ly,Gk=Je(()=>{zt(),Ia(),er(),Gi(),tg(),Ok(),og(),Fy=(e,t,r,n,s=!1,a,i=4,o=4,l=4,u="f32")=>{let p=$=>{switch($){case 1:return"resData = x[xIndex];";case 3:return`resData = vec3<${u}>(x[xIndex], x[xIndex + 1], x[xIndex + 2]);`;case 4:return"resData = x[xIndex / 4];";default:throw new Error(`innerElementSize ${$} is not supported.`)}},d=$=>{switch($){case 1:return"return w[row * i32(uniforms.w_shape[3]) + colIn];";case 4:return"return w[row * i32(uniforms.w_shape[3]) / 4 + colIn];";default:throw new Error(`innerElementSize ${$} is not supported.`)}},c=e?`
897 let coord = vec4<i32>(batch, xRow, xCol, xCh); 898 `:` 899 let coord = vec4<i32>(batch, xCh, xRow, xCol); 900 `,g=e?` 901 let coords = vec4<i32>( 902 batch, 903 row / outWidth, 904 row % outWidth, 905 col); 906 `:` 907 let coords = vec4<i32>( 908 batch, 909 row, 910 col / outWidth, 911 col % outWidth); 912 `,A=e?"i32(uniforms.x_shape[1])":"i32(uniforms.x_shape[2])",m=e?"i32(uniforms.x_shape[2])":"i32(uniforms.x_shape[3])",B=e?"row":"col",f=e?"col":"row",h=` 913 let inChannels = i32(uniforms.w_shape[2]); 914 let outWidth = ${e?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"}; 915 let outRow = ${B} / outWidth; 916 let outCol = ${B} % outWidth; 917 918 let WRow = ${f} / (i32(uniforms.w_shape[1]) * inChannels); 919 let WCol = ${f} / inChannels % i32(uniforms.w_shape[1]); 920 let xRow = outRow * uniforms.stride[0] + uniforms.dilation[0] * WRow - uniforms.pad[0]; 921 let xCol = outCol * uniforms.stride[1] + uniforms.dilation[1] * WCol - uniforms.pad[1]; 922 let xCh = ${f} % inChannels; 923 var resData = ${Cn(i,u)}(0.0); 924 // The bounds checking is always needed since we use it to pad zero for 925 // the 'same' padding type. 926 if (xRow >= 0 && xRow < ${A} && xCol >= 0 && xCol < ${m}) { 927 ${c} 928 let xIndex = getIndexFromCoords4D(coord, vec4<i32>(uniforms.x_shape)); 929 ${p(i)} 930 } 931 return resData;`,P=e?t&&n?` 932 let col = colIn * ${i}; 933 ${h}`:` 934 let col = colIn * ${i}; 935 if (row < uniforms.dim_a_outer && col < uniforms.dim_inner) { 936 ${h} 937 } 938 return ${Cn(i,u)}(0.0);`:n&&r?`
939 let col = colIn * ${i}; 940 ${h}`:` 941 let col = colIn * ${i}; 942 if (row < uniforms.dim_inner && col < uniforms.dim_b_outer) { 943 ${h} 944 } 945 return ${Cn(i,u)}(0.0);`,_=e?n&&r?d(o):` 946 let col = colIn * ${o}; 947 if (row < uniforms.dim_inner && col < uniforms.dim_b_outer) { 948 ${d(o)} 949 } 950 return ${Cn(o,u)}(0.0);`:` 951 let col = colIn * ${o}; 952 if (row < uniforms.dim_inner && col < uniforms.dim_a_outer) { 953 ${d(o)} 954 } 955 return ${Cn(o,u)}(0.0);`,w=Cn(l,u),b=Cn(e?i:o,u),v=Cn(e?o:i,u),y=Si(a,w,u);return` 956 fn mm_readA(batch: i32, row : i32, colIn : i32) -> ${b} { 957 ${e?P:_} 958 } 959 960 fn mm_readB(batch: i32, row : i32, colIn : i32) -> ${v} { 961 ${e?_:P} 962 } 963 964 fn mm_write(batch: i32, row : i32, colIn : i32, valueIn : ${w}) { 965 let col = colIn * ${l}; 966 if (row < uniforms.dim_a_outer && col < uniforms.dim_b_outer) 967 { 968 var value = valueIn; 969 let outWidth = ${e?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"}; 970 ${g} 971 ${$y(s)} 972 ${y} 973 setOutputAtCoords(coords[0], coords[1], coords[2], coords[3], value); 974 } 975 }`},Ly=(e,t,r,n,s,a,i,o,l)=>{let u=t.format==="NHWC",p=u?e[0].dims[3]:e[0].dims[1],d=r[0],c=u?r[2]:r[3],g=u?r[1]:r[2],A=u?r[3]:r[1],m=u&&(p%4===0||p%3===0)&&A%4===0,B=u?A:c*g,f=u?c*g:A,h=[8,8,1],P=n<=8?[4,1,1]:[4,4,1],_=[Math.ceil(B/h[0]/P[0]),Math.ceil(f/h[1]/P[1]),Math.ceil(d/h[2]/P[2])];lr("verbose",()=>`[conv2d_mm_webgpu] dispatch = ${_}`);let w=m?u&&p%4!==0?3:4:1,b=h[1]*P[1],v=h[0]*P[0],y=Math.max(h[0]*w,h[1]),$=n%b===0,k=s%v===0,W=a%y===0,j=m?[w,4,4]:[1,1,1],F=[{type:6,data:n},{type:6,data:s},{type:6,data:a},{type:6,data:[t.pads[0],t.pads[1]]},{type:6,data:t.strides},{type:6,data:t.dilations}];ki(t,F),F.push(...Dt(e[0].dims,e[1].dims));let R=["rank","rank"];i&&(F.push(...Dt(e[2].dims)),R.push("rank")),F.push(...Dt(r));let L=Q=>{let ne=[{name:"dim_a_outer",type:"i32"},{name:"dim_b_outer",type:"i32"},{name:"dim_inner",type:"i32"},{name:"pad",type:"i32",length:2},{name:"stride",type:"i32",length:2},{name:"dilation",type:"i32",length:2}];Oi(t,ne);let re=m?4:1,ce=vn(e[0].dataType),ge=` 976 fn setOutputAtIndex(flatIndex : i32, value : ${m?`vec4<${ce}>`:ce}) { 977 result[flatIndex] = ${m?`vec4<${ce}>`:ce}(value); 978 } 979 fn setOutputAtCoords(d0 : i32, d1 : i32, d2 : i32, d3 : i32, value : ${m?`vec4<${ce}>`:ce}) { 980 let flatIndex = getOutputIndexFromCoords(vec4<i32>(d0, d1, d2, d3)); 981 setOutputAtIndex(flatIndex ${m?"/ 4":""}, value); 982 }`,q=Ye("x",e[0].dataType,e[0].dims.length,w===3?1:w),V=Ye("w",e[1].dataType,e[1].dims.length,re),U=[q,V],N=bt("result",e[0].dataType,r.length,re);if(i){let oe=Ye("bias",e[2].dataType,e[2].dims.length,re);U.push(oe),ge+=` 983 fn getBiasByOutputCoords(coords : vec4<i32>) -> ${m?`vec4<${ce}>`:ce} { 984 return bias[coords.${u?"w":"y"}${m?"/ 4":""}]; 985 }`}return` 986 ${Sy("uniforms.result_strides")} 987 //struct Uniforms { xShape : vec4<i32>, wShape : vec4<i32>, outShape : vec4<i32>, 988 // outShapeStrides: vec3<i32>, filterDims : vec2<i32>, pad : vec2<i32>, stride : vec2<i32>, 989 // dilation : vec2<i32>, dimAOuter : i32, dimBOuter : i32, dimInner : i32 }; 990 ${Q.registerUniforms(ne).declareVariables(...U,N)} 991 ${ge} 992 ${Fy(u,$,k,W,i,t,j[0],j[1],j[2],ce)} 993 ${m?sg(P,h,ce,void 0,!u,y):ig(P,h,ce,void 0,!u,y,!1,void 0,o)}`};return{name:"Conv2DMatMul",shaderCache:{hint:`${t.cacheKey};${w};${m};${$};${k};${W};${b};${v};${y}`,inputDependencies:R},getRunData:()=>({outputs:[{dims:l?l(r):r,dataType:e[0].dataType}],dispatchGroup:{x:_[0],y:_[1],z:_[2]},programUniforms:F}),getShaderSource:L}}}),Ry,lg,Dl,Yy,ug,Ny,jy,Uy,zk=Je(()=>{zt(),Ia(),Kt(),er(),Gi(),tg(),Ry=e=>{let t=1;for(let r=0;r<e.length;r++)t*=e[r];return t},lg=e=>typeof e=="number"?[e,e,e]:e,Dl=(e,t)=>t<=1?e:e+(e-1)*(t-1),Yy=(e,t,r,n=1)=>{let s=Dl(t,n);return Math.floor((e[0]*(r-1)-r+s)/2)},ug=(e,t,r,n,s)=>{s==null&&(s=Yy(e,t[0],n[0]));let a=[0,0,0,r];for(let i=0;i<3;i++)e[i]+2*s>=t[i]&&(a[i]=Math.trunc((e[i]-t[i]+2*s)/n[i]+1));return a},Ny=(e,t,r,n,s,a,i,o,l,u)=>{let p,d,c,g;if(e==="VALID"&&(e=0),typeof e=="number"){p={top:e,bottom:e,left:e,right:e,front:e,back:e};let A=ug([t,r,n,1],[o,l,u],1,[s,a,i],e);d=A[0],c=A[1],g=A[2]}else if(Array.isArray(e)){if(!e.every((m,B,f)=>m===f[0]))throw Error(`Unsupported padding parameter: ${e}`);p={top:e[0],bottom:e[1],left:e[2],right:e[3],front:e[4],back:e[5]};let A=ug([t,r,n,1],[o,l,u],1,[s,a,i],e[0]);d=A[0],c=A[1],g=A[2]}else if(e==="SAME_UPPER"){d=Math.ceil(t/s),c=Math.ceil(r/a),g=Math.ceil(n/i);let A=(d-1)*s+o-t,m=(c-1)*a+l-r,B=(g-1)*i+u-n,f=Math.floor(A/2),h=A-f,P=Math.floor(m/2),_=m-P,w=Math.floor(B/2),b=B-w;p={top:P,bottom:_,left:w,right:b,front:f,back:h}}else throw Error(`Unknown padding parameter: ${e}`);return{padInfo:p,outDepth:d,outHeight:c,outWidth:g}},jy=(e,t,r,n,s,a=!1,i="channelsLast")=>{let o,l,u,p,d;if(i==="channelsLast")[o,l,u,p,d]=e;else if(i==="channelsFirst")[o,d,l,u,p]=e;else throw new Error(`Unknown dataFormat ${i}`);let[c,,g,A,m]=t,[B,f,h]=lg(r),[P,_,w]=lg(n),b=Dl(g,P),v=Dl(A,_),y=Dl(m,w),{padInfo:$,outDepth:k,outHeight:W,outWidth:j}=Ny(s,l,u,p,B,f,h,b,v,y),F=a?c*d:c,R=[0,0,0,0,0];return i==="channelsFirst"?R=[o,F,k,W,j]:i==="channelsLast"&&(R=[o,k,W,j,F]),{batchSize:o,dataFormat:i,inDepth:l,inHeight:u,inWidth:p,inChannels:d,outDepth:k,outHeight:W,outWidth:j,outChannels:F,padInfo:$,strideDepth:B,strideHeight:f,strideWidth:h,filterDepth:g,filterHeight:A,filterWidth:m,effectiveFilterDepth:b,effectiveFilterHeight:v,effectiveFilterWidth:y,dilationDepth:P,dilationHeight:_,dilationWidth:w,inShape:e,outShape:R,filterShape:t}},Uy=(e,t,r,n,s,a)=>{let i=a==="channelsLast";i?e[0].dims[3]:e[0].dims[1];let o=[64,1,1],l={x:r.map((B,f)=>f)},u=[Math.ceil(Ry(l.x.map(B=>r[B]))/o[0]),1,1];lr("verbose",()=>`[conv3d_naive_webgpu] dispatch = ${u}`);let p=1,d=Te.size(r),c=[{type:12,data:d}
vendor: 4,555 bytes, lines 993-1064
993,{type:12,data:n},{type:12,data:s},{type:12,data:t.strides},{type:12,data:t.dilations}];ki(t,c),c.push(...Dt(e[0].dims,e[1].dims));let g=["rank","rank"],A=e.length===3;A&&(c.push(...Dt(e[2].dims)),g.push("rank")),c.push(...Dt(r));let m=B=>{let f=[{name:"output_size",type:"u32"},{name:"filter_dims",type:"u32",length:n.length},{name:"pads",type:"u32",length:s.length},{name:"strides",type:"u32",length:t.strides.length},{name:"dilations",type:"u32",length:t.dilations.length}];Oi(t,f);let h=1,P=vn(e[0].dataType),_=Ye("x",e[0].dataType,e[0].dims.length,p),w=Ye("W",e[1].dataType,e[1].dims.length,h),b=[_,w],v=bt("result",e[0].dataType,r.length,h),y="";if(A){let W=Ye("bias",e[2].dataType,e[2].dims.length,h);b.push(W),y+=` 994 fn getBiasByOutputCoords(coords : array<u32, 5>) -> ${P} { 995 return bias[${i?Bt("coords",4,5):Bt("coords",1,5)}]; 996 }`}let $=Cn(p,P),k=Si(t,$,P);return` 997 ${y} 998 fn getX(d0 : u32, d1 : u32, d2 : u32, d3 : u32, d4 : u32) -> f32 { 999 let aIndices = array<u32, 5>(d0, d1, d2, d3, d4); 1000 return ${_.getByIndices("aIndices")}; 1001 } 1002 fn getW(d0 : u32, d1 : u32, d2 : u32, d3 : u32, d4 : u32) -> f32 { 1003 let aIndices = array<u32, 5>(d0, d1, d2, d3, d4); 1004 return ${w.getByIndices("aIndices")}; 1005 } 1006 ${B.registerUniforms(f).declareVariables(...b,v)} 1007 ${B.mainStart()} 1008 ${B.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 1009 let coords = ${v.offsetToIndices("global_idx")}; 1010 let batch = ${Bt("coords",0,_.rank)}; 1011 let d2 = ${i?Bt("coords",_.rank-1,_.rank):Bt("coords",1,_.rank)}; 1012 let xFRCCorner = vec3<u32>(${i?Bt("coords",1,_.rank):Bt("coords",2,_.rank)}, 1013 ${i?Bt("coords",2,_.rank):Bt("coords",3,_.rank)}, 1014 ${i?Bt("coords",3,_.rank):Bt("coords",4,_.rank)}) * uniforms.strides - uniforms.pads; 1015 let xFCorner = xFRCCorner.x; 1016 let xRCorner = xFRCCorner.y; 1017 let xCCorner = xFRCCorner.z; 1018 let xShapeY = ${i?Bt("uniforms.x_shape",1,_.rank):Bt("uniforms.x_shape",2,_.rank)}; 1019 let xShapeZ = ${i?Bt("uniforms.x_shape",2,_.rank):Bt("uniforms.x_shape",3,_.rank)}; 1020 let xShapeW = ${i?Bt("uniforms.x_shape",3,_.rank):Bt("uniforms.x_shape",4,_.rank)}; 1021 let xShapeU = ${i?Bt("uniforms.x_shape",4,_.rank):Bt("uniforms.x_shape",1,_.rank)}; 1022 let inputDepthNearestVec4 = (xShapeU / 4) * 4; 1023 let inputDepthVec4Remainder = xShapeU % 4; 1024 1025 var value = 0.0; 1026 for (var wF = 0u; wF < uniforms.filter_dims[0]; wF++) { 1027 let xF = xFCorner + wF * uniforms.dilations[0]; 1028 if (xF < 0 || xF >= xShapeY) { 1029 continue; 1030 } 1031 1032 for (var wR = 0u; wR < uniforms.filter_dims[1]; wR++) { 1033 let xR = xRCorner + wR * uniforms.dilations[1]; 1034 if (xR < 0 || xR >= xShapeZ) { 1035 continue; 1036 } 1037 1038 for (var wC = 0u; wC < uniforms.filter_dims[2]; wC++) { 1039 let xC = xCCorner + wC * uniforms.dilations[2]; 1040 if (xC < 0 || xC >= xShapeW) { 1041 continue; 1042 } 1043 1044 for (var d1 = 0u; d1 < inputDepthNearestVec4; d1 += 4) { 1045 ${i?`let xValues = vec4<f32>( 1046 getX(batch, xF, xR, xC, d1), 1047 getX(batch, xF, xR, xC, d1 + 1), 1048 getX(batch, xF, xR, xC, d1 + 2), 1049 getX(batch, xF, xR, xC, d1 + 3)); 1050 `:`let xValues = vec4<f32>( 1051 getX(batch, d1, xF, xR, xC), 1052 getX(batch, d1 + 1, xF, xR, xC), 1053 getX(batch, d1 + 2, xF, xR, xC), 1054 getX(batch, d1 + 3, xF, xR, xC)); 1055 `} 1056 let wValues = vec4<f32>( 1057 getW(d2, d1, wF, wR, wC), 1058 getW(d2, d1 + 1, wF, wR, wC), 1059 getW(d2, d1 + 2, wF, wR, wC), 1060 getW(d2, d1 + 3, wF, wR, wC)); 1061 value += dot(xValues, wValues); 1062 } 1063 if (inputDepthVec4Remainder == 1) { 1064 ${i?`value += getX(batch, xF, xR, xC, inputDepthNearest
1064Vec4) 1065 * getW(d2, inputDepthNearestVec4, wF, wR, wC);`:`value += getX(batch, inputDepthNearestVec4, xF, xR, xC) 1066 * getW(d2, inputDepthNearestVec4, wF, wR, wC);`} 1067 } else if (inputDepthVec4Remainder == 2) { 1068 ${i?`let xValues = vec2<f32>( 1069 getX(batch, xF, xR, xC, inputDepthNearestVec4), 1070 getX(batch, xF, xR, xC, inputDepthNearestVec4 + 1)); 1071 `:`let xValues = vec2<f32>( 1072 getX(batch, inputDepthNearestVec4, xF, xR, xC), 1073 getX(batch, inputDepthNearestVec4 + 1, xF, xR, xC)); 1074 `} 1075 let wValues = vec2<f32>( 1076 getW(d2, inputDepthNearestVec4, wF, wR, wC), 1077 getW(d2, inputDepthNearestVec4 + 1, wF, wR, wC)); 1078 value += dot(xValues, wValues); 1079 } else if (inputDepthVec4Remainder == 3) { 1080 ${i?`let xValues = vec3<f32>( 1081 getX(batch, xF, xR, xC, inputDepthNearestVec4), 1082 getX(batch, xF, xR, xC, inputDepthNearestVec4 + 1), 1083 getX(batch, xF, xR, xC, inputDepthNearestVec4 + 2)); 1084 `:`let xValues = vec3<f32>( 1085 getX(batch, inputDepthNearestVec4, xF, xR, xC), 1086 getX(batch, inputDepthNearestVec4 + 1, xF, xR, xC), 1087 getX(batch, inputDepthNearestVec4 + 2, xF, xR, xC)); 1088 `} 1089 let wValues = vec3<f32>( 1090 getW(d2, inputDepthNearestVec4, wF, wR, wC), 1091 getW(d2, inputDepthNearestVec4 + 1, wF, wR, wC), 1092 getW(d2, inputDepthNearestVec4 + 2, wF, wR, wC)); 1093 value += dot(xValues, wValues); 1094 } 1095 } 1096 } 1097 } 1098 ${A?"value = value + getBiasByOutputCoords(coords)":""}; 1099 ${k} 1100 result[global_idx] = f32(value); 1101 }`};return{name:"Conv3DNaive",shaderCache:{hint:`${t.cacheKey};${i};${p};${A}`,inputDependencies:g},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:u[0],y:u[1],z:u[2]},programUniforms:c}),getShaderSource:m}}}),Wy,Vy,Fk=Je(()=>{zt(),Kt(),er(),Gi(),Wy=(e,t,r,n)=>{let s=e.length>2,a=s?"value += b[output_channel];":"",i=e[0].dims,o=e[1].dims,l=t.format==="NHWC",u=l?r[3]:r[1],p=u/t.group,d=l&&p>=4?Jr(u):1,c=Te.size(r)/d,g=[{type:12,data:c},{type:12,data:t.dilations},{type:12,data:[t.strides[0],t.strides[1]]},{type:12,data:[t.pads[0],t.pads[1]]},{type:12,data:p}];ki(t,g),g.push(...Dt(i,[o[0],o[1],o[2],o[3]/d]));let A=s?["rank","rank","rank"]:["rank","rank"];g.push(...Dt([r[0],r[1],r[2],r[3]/d]));let m=B=>{let f=bt("output",e[0].dataType,r.length,d),h=vn(f.type.tensor),P=Si(t,f.type.value,h),_=Ye("x",e[0].dataType,i.length),w=Ye("w",e[1].dataType,o.length,d),b=[_,w];s&&b.push(Ye("b",e[2].dataType,e[2].dims,d));let v=[{name:"output_size",type:"u32"},{name:"dilations",type:"u32",length:t.dilations.length},{name:"strides",type:"u32",length:2},{name:"pads",type:"u32",length:2},{name:"output_channels_per_group",type:"u32"}];Oi(t,v);let y=l?` 1102 for (var wHeight: u32 = 0u; wHeight < uniforms.w_shape[0]; wHeight++) { 1103 let xHeight = xRCCorner.x + wHeight * uniforms.dilations[0]; 1104 1105 if (xHeight < 0u || xHeight >= uniforms.x_shape[1]) { 1106 continue; 1107 } 1108 1109 for (var wWidth: u32 = 0u; wWidth < uniforms.w_shape[1]; wWidth++) { 1110 let xWidth = xRCCorner.y + wWidth * uniforms.dilations[1]; 1111 if (xWidth < 0u || xWidth >= uniforms.x_shape[2]) { 1112 continue; 1113 } 1114 1115 for (var wInChannel: u32 = 0u; wInChannel < uniforms.w_shape[2]; wInChannel++) { 1116 let input_channel = in_channel_offset + wInChannel; 1117 let xVal = ${_.get("batch","xHeight","xWidth","input_channel")}; 1118 let wVal = ${w.get("wHeight","wWidth","wInChannel","output_channel")}; 1119 value += xVal * wVal; 1120 } 1121 } 1122 } 1123 `:` 1124 for (var wInChannel: u32 = 0u; wInChannel < uniforms.w_shape[1]; wInChannel++) { 1125 let input_channel = in_channel_offset + wInChannel; 1126 for (var wHeight: u32 = 0u; wHeight < uniforms.w_shape[2]; wHeight++) { 1127 let xHeight = xRCCorner.x + wHeight * uniforms.dilations[0]; 1128 1129 if (xHeight < 0u || xHeight >= uniforms.x_shape[2]) { 1130 continue; 1131 } 1132 1133 for (var wWidth: u32 = 0u; wWidth < uniforms.w_shape[3]; wWidth++) { 1134 let xWidth = xRCCorner.y + wWidth * uniforms.dilations[1]; 1135 if (xWidth < 0u || xWidth >= uniforms.x_shape[3]) { 1136 continue; 1137 } 1138 1139 let xVal = ${_.get("batch","input_channel","xHeight","xWidth")}; 1140 let wVal = ${w.get("output_channel","wInChannel","wHeight","wWidth")}; 1141 value += xVal * wVal; 1142 } 1143 } 1144 } 1145 `;return` 1146 ${B.registerUniforms(v).declareVariables(...b,f)} 1147 1148 ${B.mainStart()} 1149 ${B.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 1150 1151 let outputIndices = ${f.offsetToIndices("global_idx")}; 1152 let batch: u32 = outputIndices[0]; 1153 let output_channel: u32 = outputIndices[${l?3:1}]; 1154 let xRCCorner: vec2<u32> = vec2<u32>(outputIndices[${l?1:2}
1154], outputIndices[${l?2:3}]) * uniforms.strides - uniforms.pads; 1155 let group_id: u32 = output_channel * ${d} / uniforms.output_channels_per_group; 1156 var in_channel_offset = group_id * uniforms.w_shape[${l?2:1}]; 1157 1158 var value: ${f.type.value} = ${f.type.value}(0); 1159 ${y} 1160 ${a} 1161 ${P} 1162 ${f.setByOffset("global_idx","value")} 1163 }`};return{name:"GroupedConv",shaderCache:{hint:`${t.cacheKey}_${d}`,inputDependencies:A},getRunData:()=>({outputs:[{dims:n?n(r):r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(c/64)},programUniforms:g}),getShaderSource:m}},Vy=(e,t,r,n)=>{let s=e.length>2,a=Jr(r[3]),i=Jr(r[2]),o=Te.size(r)/a/i,l=[e[0].dims[0],e[0].dims[1],e[0].dims[2],e[0].dims[3]/a],u=[e[1].dims[0],e[1].dims[1],e[1].dims[2],e[1].dims[3]/a],p=[r[0],r[1],r[2],r[3]/a],d=[{type:12,data:o},{type:6,data:[t.strides[0],t.strides[1]]},{type:6,data:[t.pads[0],t.pads[1]]}];ki(t,d),d.push(...Dt(l,u,p));let c=(i-1)*t.strides[1]+u[1],g=A=>{let m=bt("output",e[0].dataType,p.length,a),B=vn(m.type.tensor),f=Si(t,m.type.value,B),h=Ye("x",e[0].dataType,l.length,a),P=Ye("w",e[1].dataType,u.length,a),_=[h,P];s&&_.push(Ye("b",e[2].dataType,e[2].dims,a));let w=s?"value += b[output_channel];":"",b=[{name:"output_size",type:"u32"},{name:"strides",type:"i32",length:2},{name:"pads",type:"i32",length:2}];return Oi(t,b),` 1164 ${A.registerUniforms(b).declareVariables(..._,m)} 1165 ${A.mainStart()} 1166 ${A.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 1167 let width0 = uniforms.output_shape[3]; 1168 let output_channel = global_idx % width0; 1169 var index1 = global_idx / width0; 1170 let width1 = uniforms.output_shape[2] / ${i}u; 1171 let col = (index1 % width1) * ${i}u; 1172 index1 = index1 / width1; 1173 let row = index1 % uniforms.output_shape[1]; 1174 let batch = index1 / uniforms.output_shape[1]; 1175 1176 let x_corner = vec2<i32>(i32(row), i32(col)) * uniforms.strides - uniforms.pads; 1177 1178 var x_vals: array<${h.type.value}, ${c}>; 1179 var values: array<${m.type.value}, ${i}>; 1180 let input_channel = output_channel; 1181 // Use constant instead of uniform can give better performance for w's height/width. 1182 for (var w_height: u32 = 0u; w_height < ${u[0]}; w_height++) { 1183 let x_height = x_corner.x + i32(w_height); 1184 if (x_height >= 0 && u32(x_height) < uniforms.x_shape[1]) { 1185 for (var i = 0; i < ${c}; i++) { 1186 let x_width = x_corner.y + i; 1187 if (x_width >= 0 && u32(x_width) < uniforms.x_shape[2]) { 1188 x_vals[i] = ${h.get("batch","u32(x_height)","u32(x_width)","input_channel")}; 1189 } else { 1190 x_vals[i] = ${h.type.value}(0); 1191 } 1192 } 1193 for (var w_width: u32 = 0u; w_width < ${u[1]}; w_width++) { 1194 let w_val = ${P.get("w_height","w_width","0","output_channel")}; 1195 for (var i = 0u; i < ${i}u; i++) { 1196 values[i] = fma(x_vals[i * u32(uniforms.strides[1]) + w_width], w_val, values[i]); 1197 } 1198 } 1199 } 1200 } 1201 1202 for (var i = 0u; i < ${i}u; i++) { 1203 var value = values[i]; 1204 ${w} 1205 ${f} 1206 ${m.set("batch","row","col + i","output_channel","value")}; 1207 } 1208 }`};return{name:"GroupedConv-Vectorize",shaderCache:{hint:`${t.cacheKey};${a};${i};${c};${u[0]};${u[1]}`,inputDependencies:s?["rank","rank","type"]:["rank","rank"]},getRunData:()=>({outputs:[{dims:n?n(r):r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(o/64)},programUniforms:d}),getShaderSource:g}}}),Qy,lc,Hy,uc,cg,dg,Ky,qy,pg,Lk=Je(()=>{Kt(),Gk(),zk(),og(),Fk(),Gi(),ng(),Va(),Qy=(e,t,r,n,s,a)=>{let i=e[0],o=e.slice(a?1:2,a?3:4),l=o.length,u=t[0],p=t.slice(2).map((c,g)=>c+(c-1)*(r[g]-1)),d=o.map((c,g)=>c+n[g]+n[g+l]).map((c,g)=>Math.floor((c-p[g]+s[g])/s[g]));return d.splice(0,0,i),d.splice(a?3:1,0,u),d},lc=[2,3,1,0],Hy=(e,t)=>{if(!e||e.length!==2&&e.length!==3)throw new Error("Conv requires 2 or 3 inputs");if(e[0].dims.length>5)throw new Error("greater than 5D is not supported");if(e[0].dims.length!==e[1].dims.length)throw new Error("filter does not have same dimension as input");let r=e[0].dims[t.format==="NHWC"?e[0].dims.length-1:1],n=e[1].dims[1]*t.group;if(r!==n)throw new Error("FILTER_IN_CHANNEL should be equal to DATA_CHANNEL");if(e.length===3&&(e[2].dims.length!==1||e[1].dims[0]!==e[2].dims[
vendor: 20,888 bytes, lines 1208-1323
12080]))throw new Error("invalid bias");let s=e[0].dims.length-2;if(t.dilations.length!==s)throw new Error(`dilations should be ${s}D`);if(t.strides.length!==s)throw new Error(`strides should be ${s}D`);if(t.pads.length!==s*2)throw new Error(`pads should be ${s*2}D`);if(t.kernelShape.length!==0&&t.kernelShape.length!==e[1].dims.length-2)throw new Error("invalid kernel shape")},uc=(e,t)=>{let r=e.kernelShape.slice();r.length<t[1].dims.length-2&&r.push(...Array(t[1].dims.length-2-r.length).fill(0));for(let a=2;a<t[1].dims.length;++a)r[a-2]===0&&(r[a-2]=t[1].dims[a]);let n=e.pads.slice();Ju.adjustPadsBasedOnAutoPad(t[0].dims,e.strides,e.dilations,r,n,e.format==="NHWC",e.autoPad);let s=Object.assign({},e);return Object.assign(s,{kernelShape:r,pads:n}),s},cg=e=>{let t=eg(e),r=e.format,n=["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][e.auto_pad],s=e.dilations,a=e.group,i=e.kernel_shape,o=e.pads,l=e.strides,u=e.w_is_const();return{autoPad:n,format:r,dilations:s,group:a,kernelShape:i,pads:o,strides:l,wIsConst:u,...t,cacheKey:`${e.format};${t.activation};`}},dg=(e,t,r,n)=>{let s=r.format==="NHWC",a=Qy(t[0].dims,t[1].dims,r.dilations,r.pads,r.strides,s);if(r.group!==1){let b=[t[0]];if(s){let v=e.kernelCustomData.wT??e.compute(ns(t[1],lc),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=v),b.push(v)}else b.push(t[1]);t.length===3&&b.push(t[2]),!e.adapterInfo.isArchitecture("ampere")&&s&&t[1].dims[0]===r.group&&t[1].dims[1]===1&&r.dilations[0]===1&&r.dilations[1]===1?e.compute(Vy(b,r,a,n),{inputs:b}):e.compute(Wy(b,r,a,n),{inputs:b});return}let i=t.length===3,o=t[0].dims[s?1:2],l=t[0].dims[s?2:3],u=t[0].dims[s?3:1],p=t[1].dims[2],d=t[1].dims[3],c=a[s?1:2],g=a[s?2:3],A=a[s?3:1],m=s&&p===o&&d===l&&r.pads[0]===0&&r.pads[1]===0;if(m||p===1&&d===1&&r.dilations[0]===1&&r.dilations[1]===1&&r.strides[0]===1&&r.strides[1]===1&&r.pads[0]===0&&r.pads[1]===0){let b=a[0],v,y,$,k=[];if(s){let F=e.kernelCustomData.wT??e.compute(ns(t[1],lc),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];if(r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=F),m){let R=o*l*u;v=t[0].reshape([1,b,R]),y=F.reshape([1,R,A]),$=[1,b,A]}else v=t[0].reshape([b,o*l,u]),y=F.reshape([1,u,A]),$=[b,c*g,A];k.push(v),k.push(y)}else v=t[0].reshape([b,u,o*l]),y=t[1].reshape([1,A,u]),$=[b,A,c*g],k.push(y),k.push(v);i&&k.push(t[2]);let W=$[2],j=k[0].dims[k[0].dims.length-1];W<8&&j<8?e.compute(rg(k,r,a,$,s,n),{inputs:k}):e.compute(oc(k,r,a,$,s,n),{inputs:k});return}let B=!0,f=e.kernelCustomData.wT??e.compute(ns(t[1],lc),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=f);let h=[t[0],f];i&&h.push(t[2]);let P=s?c*g:A,_=s?A:c*g,w=p*d*u;e.compute(Ly(h,r,a,P,_,w,i,B,n),{inputs:h})},Ky=(e,t)=>{let r=t.format==="NHWC",n=[e.inputs[0].reshape(r?[e.inputs[0].dims[0],1,e.inputs[0].dims[1],e.inputs[0].dims[2]]:[e.inputs[0].dims[0],e.inputs[0].dims[1],1,e.inputs[0].dims[2]]),e.inputs[1].reshape([e.inputs[1].dims[0],e.inputs[1].dims[1],1,e.inputs[1].dims[2]])];e.inputs.length===3&&n.push(e.inputs[2]);let s=[0,t.pads[0],0,t.pads[1]],a=[1].concat(t.strides),i=[1].concat(t.dilations),o=[1].concat(t.kernelShape),l=uc({...t,pads:s,strides:a,dilations:i,kernelShape:o},n);dg(e,n,l,u=>r?[u[0],u[2],u[3]]:[u[0],u[1],u[3]])},qy=(e,t,r)=>{let n=r.format==="NHWC"?"channelsLast":"channelsFirst",s=uc(r,t),a=r.autoPad==="NOTSET"?r.pads:r.autoPad,i=jy(t[0].dims,t[1].dims,r.strides,r.dilations,a,!1,n);e.compute(Uy(t,s,i.outShape,[i.filterDepth,i.filterHeight,i.filterWidth],[i.padInfo.front,i.padInfo.top,i.padInfo.left],n))},pg=(e,t)=>{if(Hy(e.inputs,t),e.inputs[0].dims.length===3)Ky(e,t);else if(e.inputs[0].dims.length===5)qy(e,e.inputs,t);else{let r=uc(t,e.inputs);dg(e,e.inputs,r)}}}),Xy,Rk=Je(()=>{zt(),Ia(),Kt(),er(),Xy=(e,t,r)=>{let n=e.length>2,s=t.outputShape,a=t.format==="NHWC",i=t.group,o=e[1].dims,l=o[2]/i,u=o[3],p=a?Jr(l):1,d=a&&u===1&&l>=4,c=d?Math.floor(l/4)*4:Math.floor(l/p)*p,g=l-c,A=a?Jr(u):1,m=a?u===1?p:A:1,B=Te.size(s)/A,f=[Math.ceil(B/64),1,1];lr("verbose",()=>`[conv2d_backprop_webgpu] dispatch = ${f}`);let h=["rank","rank"],P=[t.strides[0],t.strides[1]],_=[t.kernelShape[a?1:2],t.kernelShape[a?2:3]],w=[t.dilations[0],t.dilations[1]],b=[_[0]+(t.dilations[0]<=1?0:(t.kernelShape[a?1:2]-1)*(t.dilations[0]-1)),_[1]+(t.dilations[1]<=1?0:(t.kernelShape[a?2:3]-1)*(t.dilations[1]-1))],v=[b[0]-1-Math.floor((t.pads[0]+t.pads[2])/2),b[1]-1-Math.floor((t.pads[1]+t.pads[3])/2)],y=[{type:12,data:B},{type:12,data:P},{type:12,data:_},{type:12,data:w},{type:12,data:b},{type:6,data:v},{type:12,data:c},{type:12,data:l},{type:12,data:u},...Dt(e[0].dims,e[1].dims)];n&&(y.push(...Dt(e[2].dims)),h.push("rank")),y.push(...Dt(s));let $=k=>{let W=[{name:"output_size",type:"u32"},{name:"strides",type:"u32",length:P.length},{name:"filter_dims",type:"u32",length:_.length},{name:"dilations",type:"u32",length:_.length},{name:"effective_filter_dims",type:"u32",length:b.length},{name:"pads",type:"i32",length:v.length},{name:"input_channels_per_group_int",type:"u32"},{name:"input_channels_per_group",type:"u32"},{name:"output_channels_per_group",type:"u32"}],j=vn(e[0].dataType),F=a?1:2,R=a?2:3,L=a?3:1,Q=Ye("W",e[1].dataType,e[1].dims.length,m),ne=Ye("Dy",e[0].dataType,e[0].dims.length,p),re=[ne,Q];n&&re.push(Ye("bias",e[2].dataType,[s[L]].length,A));let ce=bt("result",e[0].dataType,s.length,A),ge=()=>{let U="";if(d)p===4?U+=` 1209 let xValue = ${ne.getByOffset("x_offset")}; 1210 let wValue = ${Q.getByOffset("w_offset")}; 1211 dotProd = dotProd + dot(xValue, wValue); 1212 x_offset += 1u; 1213 w_offset += 1u;`:p===2?U+=` 1214 dotProd = dotProd + dot(vec4<${j}>(${ne.getByOffset("x_offset")}, ${ne.getByOffset("x_offset + 1u")}), vec4<${j}>(${Q.getByOffset("w_offset")}, ${Q.getByOffset("w_offset + 1u")})); 1215 x_offset += 2u; 1216 w_offset += 2u;`:p===1&&(U+=` 1217 dotProd = dotProd + dot(vec4<${j}>(${ne.getByOffset("x_offset")}, ${ne.getByOffset("x_offset + 1u")}, ${ne.getByOffset("x_offset + 2u")}, ${ne.getByOffset("x_offset + 3u")}), vec4<${j}>(${Q.getByOffset("w_offset")}, ${Q.getByOffset("w_offset + 1u")}, ${Q.getByOffset("w_offset + 2u")}, ${Q.getByOffset("w_offset + 3u")})); 1218 x_offset += 4u; 1219 w_offset += 4u;`);else if(U+=` 1220 let xValue = ${a?ne.getByOffset(`${ne.indicesToOffset(`${ne.type.indices}(batch, idyR, idyC, inputChannel)`)} / ${p}`):ne.get("batch","inputChannel","idyR","idyC")}; 1221 `,p===1)U+=` 1222 let w_offset = ${Q.indicesToOffset(`${Q.type.indices}(u32(wRPerm), u32(wCPerm), inputChannel, wOutChannel)`)}; 1223 let wValue = ${Q.getByOffset(`w_offset / ${m}`)}; 1224 dotProd = dotProd + xValue * wValue;`;else for(let N=0;N<p;N++)U+=` 1225 let wValue${N} = ${Q.getByOffset(`${Q.indicesToOffset(`${Q.type.indices}(u32(wRPerm), u32(wCPerm), inputChannel + ${N}, wOutChannel)`)} / ${m}`)}; 1226 dotProd = dotProd + xValue[${N}] * wValue${N};`;return U},q=()=>{if(g===0)return"";if(!d)throw new Error(`packInputAs4 ${d} is not true.`);let U="";if(p===1){U+="dotProd = dotProd";for(let N=0;N<g;N++)U+=` 1227 + ${ne.getByOffset(`x_offset + ${N}`)} * ${Q.getByOffset(`w_offset + ${N}`)}`;U+=";"}else if(p===2){if(g!==2)throw new Error(`Invalid inputChannelsRemainder ${g}.`);U+=` 1228 let xValue = ${ne.getByOffset("x_offset")}; 1229 let wValue = ${Q.getByOffset("w_offset")}; 1230 dotProd = dotProd + dot(xValue, wValue);`}return U},V=` 1231 let outputIndices = ${ce.offsetToIndices(`global_idx * ${A}`)}; 1232 let batch = ${ce.indicesGet("outputIndices",0)}; 1233 let d1 = ${ce.indicesGet("outputIndices",L)}; 1234 let r = ${ce.indicesGet("outputIndices",F)}; 1235 let c = ${ce.indicesGet("outputIndices",R)}; 1236 let dyCorner = vec2<i32>(i32(r), i32(c)) - uniforms.pads; 1237 let dyRCorner = dyCorner.x; 1238 let dyCCorner = dyCorner.y; 1239 let groupId = d1 / uniforms.output_channels_per_group; 1240 let wOutChannel = d1 - groupId * uniforms.output_channels_per_group; 1241 // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1). 1242 // ? = to be determined. : = across all values in that axis. 1243 var dotProd = ${ce.type.value}(0.0); 1244 var wR: u32 = 0; 1245 if (uniforms.dilations.x == 1) { 1246 // Minimum wR >= 0 that satisfies (dyRCorner + wR) % (uniforms.strides.x) == 0 1247 wR = u32(((dyRCorner + i32(uniforms.strides.x) - 1) / i32(uniforms.strides.x)) * i32(uniforms.strides.x) - dyRCorner); 1248 } 1249 for (; wR < uniforms.effective_filter_dims.x; wR = wR + 1) { 1250 if (wR % uniforms.dilations.x != 0) { 1251 continue; 1252 } 1253 let dyR = (${j}(dyRCorner) + ${j}(wR)) / ${j}(uniforms.strides[0]); 1254 let wRPerm = uniforms.filter_dims.x - 1 - wR / uniforms.dilations.x; 1255 if (dyR < 0.0 || dyR >= ${j}(uniforms.Dy_shape[${F}]) || fract(dyR) > 0.0 || 1256 wRPerm < 0) { 1257 continue; 1258 } 1259 let idyR: u32 = u32(dyR); 1260 var wC: u32 = 0; 1261 if (uniforms.dilations.y == 1) { 1262 // Minimum wC >= 0 that satisfies (dyCCorner + wC) % (uniforms.strides.y) == 0 1263 wC = u32(((dyCCorner + i32(uniforms.strides.y) - 1) / i32(uniforms.strides.y)) * i32(uniforms.strides.y) - dyCCorner); 1264 } 1265 for (; wC < uniforms.effective_filter_dims.y; wC = wC + 1) { 1266 if (wC % uniforms.dilations.y != 0) { 1267 continue; 1268 } 1269 let dyC = (${j}(dyCCorner) + ${j}(wC)) / ${j}(uniforms.strides.y); 1270 let wCPerm = uniforms.filter_dims.y - 1 - wC / uniforms.dilations.y; 1271 if (dyC < 0.0 || dyC >= ${j}(uniforms.Dy_shape[${R}]) || 1272 fract(dyC) > 0.0 || wCPerm < 0) { 1273 continue; 1274 } 1275 let idyC: u32 = u32(dyC); 1276 var inputChannel = groupId * uniforms.input_channels_per_group; 1277 ${d?` 1278 var x_offset = ${ne.indicesToOffset(`${ne.type.indices}(batch, idyR, idyC, inputChannel)`)} / ${p}; 1279 var w_offset = ${Q.indicesToOffset(`${Q.type.indices}(wRPerm, wCPerm, inputChannel, wOutChannel)`)} / ${m}; 1280 `:""} 1281 for (var d2: u32 = 0; d2 < uniforms.input_channels_per_group_int; d2 = d2 + ${d?4:p}) { 1282 ${ge()} 1283 inputChannel = inputChannel + ${d?4:p}; 1284 } 1285 ${q()} 1286 wC = wC + uniforms.strides.y - 1; 1287 } 1288 wR = wR + uniforms.strides[0] - 1; 1289 } 1290 let value = dotProd${n?` + bias[d1 / ${A}]`:""}; 1291 ${ce.setByOffset("global_idx","value")}; 1292 `;return` 1293 ${k.registerUniforms(W).declareVariables(...re,ce)} 1294 ${k.mainStart()} 1295 ${k.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}; 1296 ${V}}`};return{name:"ConvTranspose2D",shaderCache:{hint:`${t.cacheKey};${p}${m}${A}${d}${g}`,inputDependencies:h},getRunData:()=>({dispatchGroup:{x:f[0],y:f[1],z:f[2]},outputs:[{dims:r?r(s):s,dataType:e[0].dataType}],programUniforms:y}),getShaderSource:$}}}),Zy,Jy,e0,gg,t0,r0,Ag,n0,s0,Yk=Je(()=>{Rk(),Gi(),Va(),Zy=(e,t,r,n,s,a)=>(e-1)*t+r+(n-1)*s+1-a,Jy=(e,t,r,n,s)=>{let a=Math.floor(e/2);t==="SAME_UPPER"?(r[n]=a,r[s]=e-a):t==="SAME_LOWER"&&(r[n]=e-a,r[s]=a)},e0=(e,t,r,n,s,a,i,o,l,u)=>{let p=e.length-2,d=u.length===0;l.length<p&&l.push(...Array(p-l.length).fill(0));let c=e[0],g=t[o?3:1]*s;for(let A=0,m=e.length-p-(o?1:0);A<p;++A,++m){let B=e[m],f=d?B*i[A]:u[A],h=Zy(B,i[A],a[A],t[m],r[A],f);Jy(h,n,a,A,A+p),d&&u.push(i[A]*(B-1)+l[A]+(t[m]-1)*r[A]+1-a[A]-a[A+p])}u.splice(0,0,c),u.splice(o?3:1,0,g)},gg=(e,t)=>{let r=e.kernelShape.slice();if(e.kernelShape.length===0||e.kernelShape.reduce((d,c)=>d*c,1)===0){r.length=0;for(let d=2;d<t[1].dims.length;++d)r.push(t[1].dims[d])}let n=e.format==="NHWC";r.splice(0,0,t[1].dims[0]),r.splice(n?3:1,0,t[1].dims[1]);let s=e.pads.slice(),a=e.outputShape.slice(),i=e.outputPadding.slice(),o=t[0].dims,l=e.dilations.slice();if(l.reduce((d,c)=>d+c,0)===0){let d=t[0].dims.length-2;l=new Array(d).fill(1)}let u=e.strides.slice();if(u.reduce((d,c)=>d+c,0)===0){let d=t[0].dims.length-2;u=new Array(d).fill(1)}e0(o,r,l,e.autoPad,e.group,s,u,n,i,a);let p=Object.assign({},e);return Object.assign(p,{kernelShape:r,pads:s,outputPadding:i,outputShape:a,dilations:l,strides:u}),p},t0=e=>{let t=eg(e),r=e.format,n=["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][typeof e.autoPad>"u"?0:e.autoPad],s=e.dilations,a=e.group,i=e.kernelShape,o=e.pads,l=e.strides,u=e.wIsConst(),p=e.outputPadding,d=e.outputShape;return{autoPad:n,format:r,dilations:s,group:a,kernelShape:i,outputPadding:p,outputShape:d,pads:o,strides:l,wIsConst:u,...t,cacheKey:`${e.format};${t.activation};`}},r0=(e,t)=>{if(!e||e.length!==2&&e.length!==3)throw new Error("Conv requires 2 or 3 inputs");if(e[0].dims.length!==4&&e[0].dims.length!==3)throw new Error("currently only support 2-dimensional conv");if(e[0].dims.length!==e[1].dims.length)throw new Error("filter does not have same dimension as input");let r=e[0].dims[t.format==="NHWC"?e[0].dims.length-1:1],n=e[1].dims[0];if(r!==n)throw new Error("FILTER_IN_CHANNEL should be equal to DATA_CHANNEL");let s=e[1].dims[1]*t.group;if(e.length===3&&(e[2].dims.length!==1||e[2].dims[0]!==s))throw new Error("invalid bias");let a=e[0].dims.length-2;if(t.dilations.reduce((i,o)=>i+o,0)>0&&t.dilations.length!==a)throw new Error(`dilations should be ${a}D`);if(t.strides.reduce((i,o)=>i+o,0)>0&&t.strides.length!==a)throw new Error(`strides should be ${a}D`);if(t.pads.reduce((i,o)=>i+o,0)>0&&t.pads.length!==a*2)throw new Error(`pads should be ${a*2}D`);if(t.outputPadding.length!==a&&t.outputPadding.length!==0)throw new Error(`output_padding should be ${a}D`);if(t.kernelShape.reduce((i,o)=>i+o,0)>0&&t.kernelShape.length!==0&&t.kernelShape.length!==e[1].dims.length-2)throw new Error("invalid kernel shape");if(t.outputShape.length!==0&&t.outputShape.length!==e[0].dims.length-2)throw new Error("invalid output shape")},Ag=(e,t,r,n)=>{let s=e.kernelCustomData.wT??e.compute(ns(t[1],[2,3,0,1]),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=s);let a=[t[0],s];t.length===3&&a.push(t[2]),e.compute(Xy(a,r,n),{inputs:a})},n0=(e,t)=>{let r=t.format==="NHWC",n=[e.inputs[0].reshape(r?[e.inputs[0].dims[0],1,e.inputs[0].dims[1],e.inputs[0].dims[2]]:[e.inputs[0].dims[0],e.inputs[0].dims[1],1,e.inputs[0].dims[2]]),e.inputs[1].reshape([e.inputs[1].dims[0],e.inputs[1].dims[1],1,e.inputs[1].dims[2]])];e.inputs.length===3&&n.push(e.inputs[2]);let s=t.kernelShape;(s.length===0||s[0]===0)&&(s=[e.inputs[1].dims[2]]);let a=t.dilations;(a.length===0||a[0]===0)&&(a=[1]);let i=t.strides;(i.length===0||i[0]===0)&&(i=[1]);let o=t.pads;o.length===0&&(o=[0,0]),o=[0,o[0],0,o[1]],i=[1].concat(i),a=[1].concat(a),s=[1].concat(s);let l=t.outputPadding;l=[0].concat(l);let u=gg({...t,pads:o,strides:i,dilations:a,kernelShape:s,outputPadding:l},n);Ag(e,n,u,p=>r?[p[0],p[2],p[3]]:[p[0],p[1],p[3]])},s0=(e,t)=>{if(r0(e.inputs,t),e.inputs[0].dims.length===3)n0(e,t);else{let r=gg(t,e.inputs);Ag(e,e.inputs,r)}}}),a0,i0,o0,Nk=Je(()=>{zt(),Kt(),an(),er(),a0=(e,t,r,n)=>{let s=Te.size(t),a=t.length,i=Ye("input",e,a),o=bt("output",e,a),l=r.dataType===6?r.getInt32Array()[0]:Number(r.getBigInt64Array()[0]),u=Te.normalizeAxis(l,a),p=d=>{let c=` i32(${i.indicesGet("inputIndices","uniforms.axis")}) `,g=Bt("uniforms.input_shape","uniforms.axis",a),A=n.reverse?c+(n.exclusive?" + 1":""):"0",m=n.reverse?g:c+(n.exclusive?"":" + 1");return` 1297 ${d.registerUniform("outputSize","u32").registerUniform("axis","u32").declareVariables(i,o)} 1298 ${d.mainStart()} 1299 ${d.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} 1300 var inputIndices = ${o.offsetToIndices("global_idx")}; 1301 var sum = ${o.type.value}(0); 1302 let first : i32 = ${A}; 1303 let last : i32 = ${m}; 1304 for (var i : i32 = first; i < last; i++) { 1305 ${i.indicesSet("inputIndices","uniforms.axis","u32(i)")}; 1306 sum = sum + ${i.getByIndices("inputIndices")}; 1307 } 1308 ${o.setByOffset("global_idx","sum")}; 1309 }`};return{name:"CumSum",shaderCache:{hint:n.cacheKey,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:t,dataType:e}],dispatchGroup:{x:Math.ceil(s/64)},programUniforms:[{type:12,data:s},{type:12,data:u},...Dt(t,t)]}),getShaderSource:p}},i0=(e,t)=>{let r=e.inputs[0].dims,n=e.inputs[0].dataType,s=e.inputs[1];e.compute(a0(n,r,s,t),{inputs:[0]})},o0=e=>{let t=e.exclusive===1,r=e.reverse===1;return br({exclusive:t,reverse:r})}}),l0,u0,c0,d0,p0,jk=Je(()=>{zt(),Kt(),an(),er(),l0=e=>{if(!e||e.length!==1)throw new Error("DepthToSpace requires 1 input.");if(e[0].dims.length!==4)throw new Error("DepthToSpace requires 4D input.")},u0=(e,t,r,n)=>{let s=[];s.push(`fn perm(i: ${n.type.indices}) -> ${r.type.indices} { 1310 var a: ${r.type.indices};`);for(let a=0;a<t;++a)s.push(r.indicesSet("a",e[a],`i[${a}]`));return s.push("return a;}"),s.join(` 1311`)},c0=(e,t)=>{let r,n,s,a,i,o,l=t.format==="NHWC",u=t.blocksize,p=t.mode==="DCR";l?([r,n,s,a]=e.dims,i=p?[r,n,s,u,u,a/u**2]:[r,n,s,a/u**2,u,u],o=p?[0,1,3,2,4,5]:[0,1,4,2,5,3]):([r,n,s,a]=[e.dims[0],e.dims[2],e.dims[3],e.dims[1]],i=p?[r,u,u,a/u**2,n,s]:[r,a/u**2,u,u,n,s],o=p?[0,3,4,1,5,2]:[0,1,4,2,5,3]);let d=e.reshape(i),c=d.dims.length,g=e.dataType,A=Ye("a",g,c),m=bt("output",g,c),B=f=>` 1312 ${f.registerUniform("output_size","u32").declareVariables(A,m)} 1313 1314 ${u0(o,c,A,m)} 1315 1316 ${f.mainStart()} 1317 ${f.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 1318 1319 let indices = ${m.offsetToIndices("global_idx")}; 1320 let aIndices = perm(indices); 1321 1322 ${m.setByOffset("global_idx",A.getByIndices("aIndices"))} 1323 }`;return{name:"DepthToSpace",shaderCache:{hint:`${e.dims};${t.blocksize};${t.mode}`,inputDependencies:["rank"]},getRunData:f=>{let h=l?[r,n*u,s*u,a/u**2]:[r,a/u**2,n*u,s*u],P=Te.size(h),_=d.dims,w=Te.sortBasedOnPerm(_,o);return{outputs:[{dims:h,dataType:f[0].dataType}],dispatchGroup:{x:Math.ceil(P/64)},programUniforms:[{type:12,data:P},...Dt(_,w)]}},getShaderSource:B}},d0=(e,t)=>{l0(e.inputs),e.compute(c0(e.inputs[0],t))},p0=e=>br({blocksize:e.blocksize,mode:e.mode,format:e.format})}),cc,Il,hg,g0,A0,h0,m0,mg,f0,_0,w0,Uk=Je(()=>{zt(),Kt(),an(),er(),cc="[a-zA-Z]|\\.\\.\\.",Il="("+cc+")+",hg="^"+Il+"$",g0="("+Il+",)*"+Il,A0="^"+g0+"$",h0=class{constructor(e=-1){this.symbolToIndices=new Map,this.inputIndex=e}addSymbol(e,t){let r=this.symbolToIndices.get(e);r===void 0?r=[t]:r.push(t),this.symbolToIndices.set(e,r)}},m0=class{constructor(e,t){this.equation=t,this.hasEllipsis=!1,this.symbolToInfo=new Map,this.lhs=new Array,this.outputDims=[];let[r,n]=t.includes("->")?t.split("->",2):[t,""];if(!r.match(RegExp(A0)))throw new Error("Invalid LHS term");if(r.split(",").forEach((s,a)=>{let i=e[a].dims.slice();if(!s.match(RegExp(hg)))throw new Error("Invalid LHS term");let o=this.processTerm(s,!0,i,a);this.lhs.push(o)}),n==="")n+=[...this.symbolToInfo.entries()].filter(([s,a])=>a.count===1||s==="...").map(([s])=>s).join("");else if(!n.match(RegExp(Il)))throw new Error("Invalid RHS");n.match(RegExp(cc,"g"))?.forEach(s=>{if(s==="...")this.outputDims=this.outputDims.concat(this.ellipsisDims);else{let a=this.symbolToInfo.get(s);if(a===void 0)throw new Error("Invalid RHS symbol");this.outputDims.push(a.dimValue)}}),this.rhs=this.processTerm(n,!1,this.outputDims)}addSymbol(e,t,r){let n=this.symbolToInfo.get(e);if(n!==void 0){if(n.dimValue!==t&&n.count!==1)throw new Error("Dimension mismatch");n.count++,n.inputIndices.push(r)}else n={count:1,dimValue:t,inputIndices:[r]};this.symbolToInfo.set(e,n)}processTerm(e,t,r,n=-1){let s=r.length,a=!1,i=[],o=0;if(!e.match(RegExp(hg))&&!t&&e!=="")throw new Error("Invalid LHS term");let l=e.match(RegExp(cc,"g")),u=new h0(n);return l?.forEach((p,d)=>{if(p==="..."){if(a)throw new Error("Only one ellipsis is allowed per input term");a=!0;let c=s-l.length+1;if(c<0)throw new Error("Ellipsis out of bounds");if(i=r.slice(o,o+c),this.hasEllipsis){if(this.ellipsisDims.length!==i.length||this.ellipsisDims.toString()!==i.toString())throw new Error("Ellipsis dimensions mismatch")}else if(t)this.hasEllipsis=!0,this.ellipsisDims=i;else throw new Error("Ellipsis must be specified in the LHS");for(let g=0;g<i.length;g++){let A=String.fromCharCode(48+g);u.addSymbol(A,d+g),this.addSymbol(A,r[o++],n)}}else u.addSymbol(p,d+(this.hasEllipsis?this.ellipsisDims.length-1:0)),this.addSymbol(p,r[o++],n)}),u}},mg=e=>e+"_max",f0=(e,t,r,n)=>{let s=e.map(u=>u.length).map((u,p)=>Ye(`input${p}
1323`,t,u)),a=Te.size(n),i=bt("output",t,n.length),o=[...r.symbolToInfo.keys()].filter(u=>!r.rhs.symbolToIndices.has(u)),l=u=>{let p=[],d="var prod = 1.0;",c="var sum = 0.0;",g="sum += prod;",A=[],m=[],B=[],f=[],h=r.symbolToInfo.size===r.rhs.symbolToIndices.size;r.symbolToInfo.forEach((_,w)=>{if(r.rhs.symbolToIndices.has(w)){let b=r.rhs.symbolToIndices.get(w)?.[0];b!==void 0&&r.lhs.forEach((v,y)=>{if(_.inputIndices.includes(y)){let $=v.symbolToIndices.get(w);if($===void 0)throw new Error("Invalid symbol error");$.forEach(k=>{p.push(`${s[y].indicesSet(`input${y}Indices`,k,i.indicesGet("outputIndices",b))}`)})}})}else r.lhs.forEach((b,v)=>{if(_.inputIndices.includes(v)){let y=b.symbolToIndices.get(w);if(y===void 0)throw new Error("Invalid symbol error");y.forEach($=>{A.push(`${s[v].indicesSet(`input${v}Indices`,$,`${w}`)}`)}),f.push(`prod *= ${s[v].getByIndices(`input${v}Indices`)};`)}}),m.push(`for(var ${w}: u32 = 0; ${w} < uniforms.${mg(w)}; ${w}++) {`),B.push("}")});let P=h?[...p,`let sum = ${s.map((_,w)=>_.getByIndices(`input${w}Indices`)).join(" * ")};`]:[...p,c,...m,...A,d,...f,g,...B];return` 1324 ${u.registerUniforms(o.map(_=>({name:`${mg(_)}`,type:"u32"}))).registerUniform("outputSize","u32").declareVariables(...s,i)} 1325 1326 ${u.mainStart()} 1327 ${u.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} 1328 var outputIndices = ${i.offsetToIndices("global_idx")}; 1329 ${s.map((_,w)=>`var input${w}Indices: ${s[w].type.indices};`).join(` 1330`)} 1331 ${P.join(` 1332`)}; 1333 ${i.setByOffset("global_idx","sum")}; 1334 }`};return{name:"Einsum",shaderCache:{hint:r.equation,inputDependencies:e.map(()=>"rank")},getRunData:()=>{let u=o.filter(d=>r.symbolToInfo.has(d)).map(d=>({type:12,data:r.symbolToInfo.get(d)?.dimValue||0}));u.push({type:12,data:a});let p=e.map((d,c)=>[...Dt(d)]).reduce((d,c)=>d.concat(c),u);return p.push(...Dt(n)),{outputs:[{dims:n,dataType:t}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:p}},getShaderSource:l}},_0=(e,t)=>{let r=new m0(e.inputs,t.equation),n=r.outputDims,s=e.inputs.map((a,i)=>a.dims);e.compute(f0(s,e.inputs[0].dataType,r,n))},w0=e=>{let t=e.equation.replace(/\s+/g,"");return br({equation:t})}}),y0,fg,b0,P0,M0,Wk=Je(()=>{zt(),Kt(),er(),y0=e=>{if(!e||e.length!==2)throw new Error("Expand requires 2 input.");let t=e[0].dims,r=Array.from(e[1].getBigInt64Array(),Number),n=r.length<t.length?0:r.length-t.length,s=t.length<r.length?0:t.length-r.length;for(;n<r.length&&s<t.length;++n,++s)if(r[n]!==t[s]&&r[n]!==1&&t[s]!==1)throw new Error("Expand requires shape to be broadcastable to input")},fg=(e,t)=>{let r=e.length-t.length,n=[];for(let s=0;s<r;++s)n.push(e[s]);for(let s=0;s<t.length;++s)n.push(t[s]===1?e[s+r]:t[s]);return n},b0=(e,t)=>e.length>t.length?fg(e,t):fg(t,e),P0=e=>{let t=e[0].dims,r=Array.from(e[1].getBigInt64Array(),Number),n=b0(t,r),s=e[0].dataType,a=s===9||Te.size(t)===1,i=s===9||t.length>0&&t[t.length-1]%4===0?4:1,o=a||n.length>0&&n[n.length-1]%4===0?4:1,l=Math.ceil(Te.size(n)/o),u=d=>{let c=Ye("input",s,t.length,i),g=bt("output",s,n.length,o),A;if(s===9){let m=(B,f,h="")=>` 1335 let outputIndices${f} = ${g.offsetToIndices(`outputOffset + ${f}u`)}; 1336 let offset${f} = ${c.broadcastedIndicesToOffset(`outputIndices${f}`,g)}; 1337 let index${f} = offset${f} / 4u; 1338 let component${f} = offset${f} % 4u; 1339 ${B}[${f}] = ${h}(${c.getByOffset(`index${f}`)}[component${f}]); 1340 `;A=` 1341 let outputOffset = global_idx * ${o}; 1342 var data = vec4<u32>(0); 1343 ${m("data",0,"u32")} 1344 ${m("data",1,"u32")} 1345 ${m("data",2,"u32")} 1346 ${m("data",3,"u32")} 1347 ${g.setByOffset("global_idx","data")} 1348 }`}else A=` 1349 let outputIndices = ${g.offsetToIndices(`global_idx * ${o}`)}; 1350 let inputOffset = ${c.broadcastedIndicesToOffset("outputIndices",g)}; 1351 let data = ${g.type.value}(${c.getByOffset(`inputOffset / ${i}`)}); 1352 ${g.setByOffset("global_idx","data")} 1353 }`;return` 1354 ${d.registerUniform("vec_size","u32").declareVariables(c,g)} 1355 ${d.mainStart()} 1356 ${d.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")} 1357 ${A}`},p=[{type:12,data:l},...Dt(t,n)];return{name:"Expand",shaderCache:{hint:`${n.length};${i}${o}`,inputDependencies:["rank"]},getShaderSource:u,getRunData:()=>({outputs:[{dims:n,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(l/64)},programUniforms:p})}},M0=e=>{y0(e.inputs),e.compute(P0(e.inputs),{inputs:[0]})}}),v0,B0,Vk=Je(()=>{zt(),Kt(),er(),Jp(),v0=e=>{let t=e[0].dataType,r=Te.size(e[0].dims),n=Te.size(e[1].dims),s=n%4===0,a=i=>{let o=Ye("x",t,[1],4),l=Ye("bias",t,[1],4),u=bt("y",t,[1],4),p=[{name:"output_vec_size",type:"u32"},{name:"bias_size",type:"u32"}],d=g=>` 1358 let bias${g}_offset: u32 = (global_idx * 4 + ${g}
1358) % uniforms.bias_size; 1359 let bias${g} = ${l.getByOffset(`bias${g}_offset / 4`)}[bias${g}_offset % 4];`,c=s?` 1360 let bias = ${l.getByOffset("global_idx % (uniforms.bias_size / 4)")};`:`${d(0)}${d(1)}${d(2)}${d(3)} 1361 let bias = ${o.type.value}(bias0, bias1, bias2, bias3);`;return`${i.registerUniforms(p).declareVariables(o,l,u)} 1362 1363 ${Xp(Ln(t))} 1364 1365 ${i.mainStart(Eo)} 1366 ${i.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_vec_size")} 1367 1368 let x = ${o.getByOffset("global_idx")}; 1369 ${c} 1370 let x_in = x + bias; 1371 ${u.setByOffset("global_idx",Zp("x_in"))} 1372 }`};return{name:"FastGeluWithBias",shaderCache:{hint:`${s}`,inputDependencies:["type","type"]},getShaderSource:a,getRunData:i=>({outputs:[{dims:i[0].dims,dataType:i[0].dataType}],programUniforms:[{type:12,data:Math.ceil(r/4)},{type:12,data:n}],dispatchGroup:{x:Math.ceil(r/Eo/4)}})}},B0=e=>{e.inputs.length<2||Te.size(e.inputs[1].dims)===0?ay(e):e.compute(v0(e.inputs))}}),x0,E0,D0,I0,Qk=Je(()=>{zt(),Kt(),an(),er(),x0=e=>{if(!e||e.length!==2)throw new Error("Gather requires 2 inputs.")},E0=(e,t)=>{let r=e[0].dims,n=e[1].dims,s=r.length,a=Te.normalizeAxis(t.axis,s),i=r.slice(0);i.splice(a,1,...n);let o=r[a],l=e[0].dataType===9?4:1,u=Math.ceil(Te.size(i)/l),p=[{type:12,data:u},{type:6,data:o},{type:12,data:a},...Dt(e[0].dims,e[1].dims,i)],d=c=>{let g=Ye("data",e[0].dataType,e[0].dims.length,l),A=Ye("inputIndices",e[1].dataType,e[1].dims.length),m=bt("output",e[0].dataType,i.length,l),B=h=>{let P=n.length,_=`var indicesIndices${h} = ${A.type.indices}(0);`;for(let w=0;w<P;w++)_+=`${P>1?`indicesIndices${h}[${w}]`:`indicesIndices${h}`} = ${i.length>1?`outputIndices${h}[uniforms.axis + ${w}]`:`outputIndices${h}`};`;_+=` 1373 var idx${h} = ${A.getByIndices(`indicesIndices${h}`)}; 1374 if (idx${h} < 0) { 1375 idx${h} = idx${h} + uniforms.axisDimLimit; 1376 } 1377 var dataIndices${h} : ${g.type.indices}; 1378 `;for(let w=0,b=0;w<s;w++)w===a?(_+=`${s>1?`dataIndices${h}[${w}]`:`dataIndices${h}`} = u32(idx${h});`,b+=P):(_+=`${s>1?`dataIndices${h}[${w}]`:`dataIndices${h}`} = ${i.length>1?`outputIndices${h}[${b}]`:`outputIndices${h}`};`,b++);return _},f;if(e[0].dataType===9){let h=(P,_,w="")=>` 1379 let outputIndices${_} = ${m.offsetToIndices(`outputOffset + ${_}u`)}; 1380 ${B(_)}; 1381 let offset${_} = ${g.indicesToOffset(`dataIndices${_}`)}; 1382 let index${_} = offset${_} / 4u; 1383 let component${_} = offset${_} % 4u; 1384 ${P}[${_}] = ${w}(${g.getByOffset(`index${_}`)}[component${_}]); 1385 `;f=` 1386 let outputOffset = global_idx * ${l}; 1387 var value = vec4<u32>(0); 1388 ${h("value",0,"u32")} 1389 ${h("value",1,"u32")} 1390 ${h("value",2,"u32")} 1391 ${h("value",3,"u32")} 1392 ${m.setByOffset("global_idx","value")} 1393 `}else f=` 1394 let outputIndices = ${m.offsetToIndices("global_idx")}; 1395 ${B("")}; 1396 let value = ${g.getByIndices("dataIndices")}; 1397 ${m.setByOffset("global_idx","value")}; 1398 `;return` 1399 ${c.registerUniform("outputSize","u32").registerUniform("axisDimLimit","i32").registerUniform("axis","u32").declareVariables(g,A,m)} 1400 ${c.mainStart()} 1401 ${c.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} 1402 ${f} 1403 }`};return{name:"Gather",shaderCache:{hint:t.cacheKey,inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:i,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:p}),getShaderSource:d}},D0=e=>br({axis:e.axis}),I0=(e,t)=>{let r=e.inputs;x0(r),e.compute(E0(e.inputs,t))}}),T0,C0,$0,Hk=Je(()=>{zt(),Kt(),er(),T0=(e,t,r,n,s,a,i,o,l)=>{let u=[{type:12,data:a},{type:12,data:n},{type:12,data:s},{type:12,data:r},{type:12,data:i},{type:12,data:o},{type:12,data:l}],p=[a];u.push(...Dt(t.dims,p));let d=c=>{let g=Ye("indices_data",t.dataType,t.dims.length),A=bt("input_slice_offsets_data",12,1,1),m=[g,A],B=[{name:"output_size",type:"u32"},{name:"batch_dims",type:"u32"},{name:"input_dims",type:"u32",length:s.length},{name:"sizes_from_slice_dims_data",type:"u32",length:r.length},{name:"num_slices_per_batch",type:"u32"},{name:"input_batch_stride",type:"u32"},{name:"num_slice_dims",type:"u32"}];return` 1404 ${c.registerUniforms(B).declareVariables(...m)} 1405 ${c.mainStart()} 1406 ${c.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 1407 let batch_idx = global_idx / uniforms.num_slices_per_batch; 1408 let base_offset = batch_idx * uniforms.input_batch_stride; 1409 1410 let slice_indices_base_offset = global_idx * uniforms.num_slice_dims; 1411 var relative_slice_offset = 0; 1412 for (var dim_idx = 0u; dim_idx < uniforms.num_slice_dims; dim_idx ++) { 1413 var index = i32(indices_data[dim_idx + slice_indices_base_offset].x); 1414 let input_dim_idx = uniforms.batch_dims + dim_idx; 1415 if (index < 0) { 1416 ${s.length===1?"index += i32(uniforms.input_dims);":"index += i32(uniforms.input_dims[input_dim_idx]);"} 1417 } 1418 ${r.length===1?"relative_slice_offset += index * i32(uniforms.sizes_from_slice_dims_data);":"relative_slice_offset += index * i32(uniforms.sizes_from_slice_dims_data[dim_idx]);"} 1419 } 1420 1421 input_slice_offsets_data[global_idx] = base_offset + u32(relative_slice_offset); 1422 }`};return e.compute({name:"computeSliceOffsets",shaderCache:{hint:`${s.length}_${r.length}`,inputDependencies:["rank"]},getRunData:()=>
vendor: 13,294 bytes, lines 1422-1573
1422({outputs:[{dims:p,dataType:e.inputs[1].dataType}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:u}),getShaderSource:d},{inputs:[t],outputs:[-1]})[0]},C0=(e,t)=>{let r=e.inputs,n=r[0].dims,s=r[0].dataType,a=r[1].dims,i=a[a.length-1],o=Te.sizeToDimension(a,a.length-1),l=Te.sizeFromDimension(n,t.batchDims+i),u=Te.sizeToDimension(n,t.batchDims),p=Te.sizeFromDimension(n,t.batchDims),d=o/u,c=new Array(i),g=l;for(let _=0;_<i;++_)c[i-1-_]=g,g*=n[t.batchDims+i-1-_];let A=T0(e,r[1],c,t.batchDims,n,o,d,p,i),m=t.batchDims+i;if(m>n.length)throw new Error("last dimension of indices must not be larger than rank of input tensor");let B=a.slice(0,-1).concat(n.slice(m)),f=Te.size(B),h=[{type:12,data:f},{type:12,data:l},...Dt(r[0].dims,A.dims,B)],P=_=>{let w=Ye("data",r[0].dataType,r[0].dims.length),b=Ye("slice_offsets",12,A.dims.length),v=bt("output",r[0].dataType,B.length);return` 1423 ${_.registerUniform("output_size","u32").registerUniform("slice_size","u32").declareVariables(w,b,v)} 1424 ${_.mainStart()} 1425 ${_.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 1426 let slice_offset = slice_offsets[global_idx / uniforms.slice_size]; 1427 output[global_idx] = data[u32(slice_offset) + global_idx % uniforms.slice_size]; 1428 }`};e.compute({name:"GatherND",shaderCache:{hint:t.cacheKey,inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:B,dataType:s}],dispatchGroup:{x:Math.ceil(f/64)},programUniforms:h}),getShaderSource:P},{inputs:[r[0],A]})},$0=e=>({batchDims:e.batch_dims,cacheKey:""})}),S0,k0,O0,G0,Kk=Je(()=>{zt(),Kt(),an(),er(),S0=(e,t)=>{if(e.length<3||e.length>4)throw new Error("GatherBlockQuantized requires 3 or 4 inputs.");let r=Te.normalizeAxis(t.quantizeAxis,e[0].dims.length),n=t.blockSize,s=e[0],a=e[2],i=e.length===4?e[3]:void 0;if(a.dims.length!==s.dims.length||!s.dims.map((o,l)=>l===r?Math.ceil(o/n)===a.dims[l]:o===a.dims[l]).reduce((o,l)=>o&&l,!0))throw new Error("Scales must have the same rank as the input tensor and the dims should match except on gatherAxis.");if(i){if(i.dataType!==s.dataType)throw new Error("Zero point must have the same data type as the input tensor.");if(i.dims.length!==a.dims.length||!i.dims.map((o,l)=>o===a.dims[l]).reduce((o,l)=>o&&l,!0))throw new Error("Zero point must have the same rank as the input tensor and the dims should match except on quantizeAxis.")}},k0=(e,t)=>{let r=e[0].dims,n=e[1].dims,s=r.length,a=Te.normalizeAxis(t.gatherAxis,s),i=Te.normalizeAxis(t.quantizeAxis,s),o=r.slice(0);o.splice(a,1,...n);let l=Te.size(o),u=e[2].dataType,p=e[0].dataType===22,d=[{type:12,data:l},{type:12,data:i},{type:12,data:a},{type:12,data:t.blockSize},...Dt(...e.map((g,A)=>g.dims),o)],c=g=>{let A=Ye("data",e[0].dataType,e[0].dims.length),m=Ye("inputIndices",e[1].dataType,e[1].dims.length),B=Ye("scales",e[2].dataType,e[2].dims.length),f=e.length>3?Ye("zeroPoint",e[3].dataType,e[3].dims.length):void 0,h=bt("output",u,o.length),P=[A,m,B];f&&P.push(f);let _=[{name:"output_size",type:"u32"},{name:"quantize_axis",type:"u32"},{name:"gather_axis",type:"u32"},{name:"block_size",type:"u32"}];return` 1429 ${g.registerUniforms(_).declareVariables(...P,h)} 1430 ${g.mainStart()} 1431 let output_indices = ${h.offsetToIndices("global_idx")}; 1432 var indices_indices = ${m.type.indices}(0); 1433 ${n.length>1?` 1434 for (var i: u32 = 0; i < ${n.length}; i++) { 1435 let index = ${h.indicesGet("output_indices","uniforms.gather_axis + i")}; 1436 ${m.indicesSet("indices_indices","i","index")}; 1437 }`:`indices_indices = ${h.indicesGet("output_indices","uniforms.gather_axis")};`}; 1438 var data_indices = ${A.type.indices}(0); 1439 for (var i: u32 = 0; i < uniforms.gather_axis; i++) { 1440 let index = ${h.indicesGet("output_indices","i")}; 1441 ${A.indicesSet("data_indices","i","index")}; 1442 } 1443 var index_from_indices = ${m.getByIndices("indices_indices")}; 1444 if (index_from_indices < 0) { 1445 index_from_indices += ${r[a]}; 1446 } 1447 ${A.indicesSet("data_indices","uniforms.gather_axis","u32(index_from_indices)")}; 1448 for (var i = uniforms.gather_axis + 1; i < ${o.length}; i++) { 1449 let index = ${h.indicesGet("output_indices",`i + ${n.length} - 1`)}; 1450 ${A.indicesSet("data_indices","i","index")}; 1451 } 1452 let data_offset = ${A.indicesToOffset("data_indices")}; 1453 let data_index = data_offset % 8; 1454 // Convert 4-bit packed data to 8-bit packed data. 1455 let packed_4bit_quantized_data = ${A.getByOffset("data_offset / 8")}; 1456 let packed_8bit_quantized_data = (packed_4bit_quantized_data >> (4 * (data_index % 2))) & 0x0f0f0f0f; 1457 let quantized_data_vec = ${p?"unpack4xI8":"unpack4xU8"}(u32(packed_8bit_quantized_data)); 1458 let quantized_data = quantized_data_vec[data_index / 2]; 1459 var scale_indices = data_indices; 1460 let quantize_axis_index = ${B.indicesGet("data_indices","uniforms.quantize_axis")} / uniforms.block_size; 1461 ${B.indicesSet("scale_indices","uniforms.quantize_axis","quantize_axis_index")}; 1462 var scale = ${B.getByIndices("scale_indices")}; 1463 ${f?` 1464 let zero_point_indices = scale_indices; 1465 let zero_point_offset = ${f.indicesToOffset("zero_point_indices")}; 1466 let zero_point_index = zero_point_offset % 8; 1467 let packed_4bit_zero_points = ${f.getByOffset("zero_point_offset / 8")}; 1468 let packed_8bit_zero_points = (packed_4bit_zero_points >> (4 * (zero_point_index % 2))) & 0x0f0f0f0f; 1469 let zero_point_vec = ${p?"unpack4xI8":"unpack4xU8"}(u32(packed_8bit_zero_points)); 1470 let zero_point = zero_point_vec[zero_point_index / 2];`:"var zero_point = 0"}; 1471 let dequantized_data = ${Ln(u)}(quantized_data - zero_point) * scale; 1472 ${h.setByOffset("global_idx","dequantized_data")}; 1473 }`};return{name:"GatherBlockQuantized",shaderCache:{hint:`${t.cacheKey};${e.filter((g,A)=>A!==1).map(g=>g.dims.join("_")).join(";")}`,inputDependencies:Array.from({length:e.length},(g,A)=>"rank")},getRunData:()=>({outputs:[{dims:o,dataType:u}],dispatchGroup:{x:Math.ceil(l/64)},programUniforms:d}),getShaderSource:c}},O0=(e,t)=>{let r=e.inputs;S0(r,t),e.compute(k0(e.inputs,t))},G0=e=>br({blockSize:e.blockSize,gatherAxis:e.gatherAxis,quantizeAxis:e.quantizeAxis})}),z0,F0,L0,R0,qk=Je(()=>{zt(),Kt(),an(),er(),z0=e=>{if(!e||e.length!==2)throw new Error("GatherElements requires 2 inputs.");if(e[0].dims.length<1)throw new Error("GatherElements requires that the data input be rank >= 1.");if(e[0].dims.length!==e[1].dims.length)throw new Error(`GatherElements requires that the data input and 1474 indices input tensors be of same rank.`)},F0=(e,t)=>{let r=e[0].dims,n=e[0].dataType,s=r.length,a=e[1].dims,i=e[1].dataType,o=Te.normalizeAxis(t.axis,s),l=r[o],u=a.slice(0),p=Te.size(u),d=Ye("input",n,s),c=Ye("indicesInput",i,a.length),g=bt("output",n,u.length),A=[{type:12,data:p},{type:6,data:l},{type:12,data:o}];return A.push(...Dt(r,a,u)),{name:"GatherElements",shaderCache:{inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:u,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(p/64)},programUniforms:A}),getShaderSource:m=>` 1475 ${m.registerUniform("outputSize","u32").registerUniform("axisDimLimit","i32").registerUniform("axis","u32").declareVariables(d,c,g)} 1476 ${m.mainStart()} 1477 ${m.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} 1478 1479 let outputIndices = ${g.offsetToIndices("global_idx")}; 1480 1481 var idx = ${c.getByOffset("global_idx")}; 1482 if (idx < 0) { 1483 idx = idx + uniforms.axisDimLimit; 1484 } 1485 var inputIndices = ${d.type.indices}(outputIndices); 1486 ${d.indicesSet("inputIndices","uniforms.axis","u32(idx)")}; 1487 let value = ${d.getByIndices("inputIndices")}; 1488 1489 ${g.setByOffset("global_idx","value")}; 1490 }`}},L0=e=>br({axis:e.axis}),R0=(e,t)=>{let r=e.inputs;z0(r),e.compute(F0(e.inputs,t))}}),Y0,N0,j0,U0,Xk=Je(()=>{zt(),Kt(),er(),Y0=e=>{if(!e)throw new Error("Input is missing");if(e.length<2||e.length>3)throw new Error("Invaid input number.");if(e.length===3&&e[2].dims.length>2)throw new Error("Invalid input shape of C");if(e[0].dataType!==e[1].dataType||e.length===3&&e[0].dataType!==e[2].dataType)throw new Error("Input types are mismatched")},N0=(e,t)=>{let r=e[0].dims.slice(),n=e[1].dims.slice(),[s,a,i]=Jf.getShapeOfGemmResult(r,t.transA,n,t.transB,e.length===3?e[2].dims:void 0),o=[s,a];if(!o)throw new Error("Can't use gemm on the given tensors");let l=16,u=Math.ceil(a/l),p=Math.ceil(s/l),d=!0,c=Te.size(o),g=[{type:12,data:d?u:c},{type:12,data:s},{type:12,data:a},{type:12,data:i},{type:1,data:t.alpha},{type:1,data:t.beta}],A=["type","type"];e.length===3&&(g.push(...Dt(e[2].dims)),A.push("rank")),g.push(...Dt(o));let m=f=>{let h="";t.transA&&t.transB?h="value += a[k * uniforms.M + m] * b[n * uniforms.K + k];":t.transA&&!t.transB?h="value += a[k * uniforms.M + m] * b[k * uniforms.N + n];":!t.transA&&t.transB?h="value += a[m * uniforms.K + k] * b[n * uniforms.K + k];":!t.transA&&!t.transB&&(h="value += a[m * uniforms.K + k] * b[k * uniforms.N + n];");let P=t.alpha===1?"":"value *= uniforms.alpha;",_=Ye("a",e[0].dataType,e[0].dims),w=Ye("b",e[1].dataType,e[1].dims),b=_.type.value,v=null,y=[_,w];e.length===3&&(v=Ye("c",e[2].dataType,e[2].dims.length),y.push(v));let $=bt("output",e[0].dataType,o.length);y.push($);let k=[{name:"output_size",type:"u32"},{name:"M",type:"u32"},{name:"N",type:"u32"},{name:"K",type:"u32"},{name:"alpha",type:"f32"},{name:"beta",type:"f32"}];return` 1491 ${f.registerUniforms(k).declareVariables(...y)} 1492 1493 ${f.mainStart()} 1494 ${f.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 1495 1496 let m = global_idx / uniforms.N; 1497 let n = global_idx % uniforms.N; 1498 1499 var value = ${b}(0); 1500 for (var k: u32 = 0u; k < uniforms.K; k++) { 1501 ${h} 1502 } 1503 1504 ${P} 1505 ${v!=null?`let cOffset = ${v.broadcastedIndicesToOffset("vec2(m, n)",$)}; value += ${b}(uniforms.beta) * ${v.getByOffset("cOffset")};`:""} 1506 output[global_idx] = value; 1507 }`},B=f=>{let h=Ye("a",e[0].dataType,e[0].dims),P=Ye("b",e[1].dataType,e[1].dims),_=null,w=[h,P];e.length===3&&(_=Ye("c",e[2].dataType,e[2].dims.length),w.push(_));let b=bt("output",e[0].dataType,o.length);w.push(b);let v=[{name:"num_tile_n",type:"u32"},{name:"M",type:"u32"},{name:"N",type:"u32"},{name:"K",type:"u32"},{name:"alpha",type:"f32"},{name:"beta",type:"f32"}],y="",$="";t.transA&&t.transB?($=` 1508 var col = tile_row_start + local_id.x; 1509 var row = k_start + local_id.y; 1510 if (col < uniforms.M && row < uniforms.K) { 1511 tile_a[local_id.y][local_id.x] = a[row * uniforms.M + col]; 1512 } else { 1513 tile_a[local_id.y][local_id.x] = ${h.type.value}(0); 1514 } 1515 1516 col = k_start + local_id.x; 1517 row = tile_col_start + local_id.y; 1518 if (col < uniforms.K && row < uniforms.N) { 1519 tile_b[local_id.y][local_id.x] = b[row * uniforms.K + col]; 1520 } else { 1521 tile_b[local_id.y][local_id.x] = ${P.type.value}(0); 1522 } 1523 `,y="value += tile_a[k][local_id.y] * tile_b[local_id.x][k];"):t.transA&&!t.transB?($=` 1524 var col = tile_row_start + local_id.x; 1525 var row = k_start + local_id.y; 1526 if (col < uniforms.M && row < uniforms.K) { 1527 tile_a[local_id.y][local_id.x] = a[row * uniforms.M + col]; 1528 } else { 1529 tile_a[local_id.y][local_id.x] = ${h.type.value}(0); 1530 } 1531 1532 col = tile_col_start + local_id.x; 1533 row = k_start + local_id.y; 1534 if (col < uniforms.N && row < uniforms.K) { 1535 tile_b[local_id.y][local_id.x] = b[row * uniforms.N + col]; 1536 } else { 1537 tile_b[local_id.y][local_id.x] = ${P.type.value}(0); 1538 } 1539 `,y="value += tile_a[k][local_id.y] * tile_b[k][local_id.x];"):!t.transA&&t.transB?($=` 1540 var col = k_start + local_id.x; 1541 var row = tile_row_start + local_id.y; 1542 if (col < uniforms.K && row < uniforms.M) { 1543 tile_a[local_id.y][local_id.x] = a[row * uniforms.K + col]; 1544 } else { 1545 tile_a[local_id.y][local_id.x] = ${h.type.value}(0); 1546 } 1547 1548 col = k_start + local_id.x; 1549 row = tile_col_start + local_id.y; 1550 if (col < uniforms.K && row < uniforms.N) { 1551 tile_b[local_id.y][local_id.x] = b[row * uniforms.K + col]; 1552 } else { 1553 tile_b[local_id.y][local_id.x] = ${P.type.value}(0); 1554 } 1555 `,y="value += tile_a[local_id.y][k] * tile_b[local_id.x][k];"):!t.transA&&!t.transB&&($=` 1556 var col = k_start + local_id.x; 1557 var row = tile_row_start + local_id.y; 1558 if (col < uniforms.K && row < uniforms.M) { 1559 tile_a[local_id.y][local_id.x] = a[row * uniforms.K + col]; 1560 } else { 1561 tile_a[local_id.y][local_id.x] = ${h.type.value}(0); 1562 } 1563 1564 col = tile_col_start + local_id.x; 1565 row = k_start + local_id.y; 1566 if (col < uniforms.N && row < uniforms.K) { 1567 tile_b[local_id.y][local_id.x] = b[row * uniforms.N + col]; 1568 } else { 1569 tile_b[local_id.y][local_id.x] = ${P.type.value}(0); 1570 } 1571 `,y="value += tile_a[local_id.y][k] * tile_b[k][local_id.x];");let k=t.alpha===1?"":"value *= uniforms.alpha;";return` 1572 ${f.registerUniforms(v).declareVariables(...w)} 1573 var<workgroup> tile_a: array<array<${h.type.storage}, ${l}>, ${l}>;
1574 var<workgroup> tile_b: array<array<${P.type.storage}, ${l}>, ${l}>; 1575 ${f.mainStart([l,l,1])} 1576 let tile_col_start = (workgroup_index % uniforms.num_tile_n) * ${l}; 1577 let tile_row_start = (workgroup_index / uniforms.num_tile_n) * ${l}; 1578 let num_tiles = (uniforms.K - 1) / ${l} + 1; 1579 var k_start = 0u; 1580 var value = ${b.type.value}(0); 1581 for (var t: u32 = 0u; t < num_tiles; t++) { 1582 ${$} 1583 k_start = k_start + ${l}; 1584 workgroupBarrier(); 1585 1586 for (var k: u32 = 0u; k < ${l}; k++) { 1587 ${y} 1588 } 1589 workgroupBarrier(); 1590 } 1591 1592 ${k} 1593 let m = tile_row_start + local_id.y; 1594 let n = tile_col_start + local_id.x; 1595 ${_!=null?`let cOffset = ${_.broadcastedIndicesToOffset("vec2(m, n)",b)}; value += ${b.type.value}(uniforms.beta) * ${_.getByOffset("cOffset")};`:""} 1596 if (m < uniforms.M && n < uniforms.N) { 1597 output[m * uniforms.N + n] = value; 1598 } 1599 }`};return d?{name:"GemmShared",shaderCache:{hint:`${t.cacheKey}`,inputDependencies:A},getRunData:()=>({outputs:[{dims:o,dataType:e[0].dataType}],dispatchGroup:{x:u*p},programUniforms:g}),getShaderSource:B}:{name:"Gemm",shaderCache:{hint:`${t.cacheKey}`,inputDependencies:A},getRunData:()=>({outputs:[{dims:o,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(c/64)},programUniforms:g}),getShaderSource:m}},j0=e=>{let t=e.transA,r=e.transB,n=e.alpha,s=e.beta;return{transA:t,transB:r,alpha:n,beta:s,cacheKey:`${e.transA};${e.transB};${e.alpha===1}`}},U0=(e,t)=>{Y0(e.inputs),e.compute(N0(e.inputs,t))}}),pa,Ta,zi,Fi,W0,V0,Q0,H0,K0,q0,X0,Z0,J0,eb,Zk=Je(()=>{zt(),Kt(),an(),er(),[pa,Ta,zi,Fi]=[0,1,2,3],W0=e=>{if(e[0].dims.length!==4)throw new Error("only 4-D tensor is supported.");if(e[0].dims.length!==e[1].dims.length)throw new Error("input dimensions must be equal to grid dimensions");if(e[0].dims.length-2!==e[1].dims[e[1].dims.length-1])throw new Error(`last dimension of grid must be equal to ${e[0].dims.length-2}`);if(e[0].dims[0]!==e[1].dims[0])throw new Error("grid batch size must match input batch size")},V0=` 1600 fn gs_get_cubic_coeffs(x: f32) -> vec4<f32> { 1601 let cubic_alpha = -0.75f; 1602 let x_abs = abs(x); 1603 var coeffs: vec4<f32>; 1604 coeffs[0] = (((cubic_alpha * (x_abs + 1) - 5 * cubic_alpha) * (x_abs + 1) + 8 * cubic_alpha) * (x_abs + 1) - 4 * cubic_alpha); 1605 coeffs[1] = (((cubic_alpha + 2) * x_abs - (cubic_alpha + 3)) * x_abs * x_abs + 1); 1606 coeffs[2] = (((cubic_alpha + 2) * (1 - x_abs) - (cubic_alpha + 3)) * (1 - x_abs) * (1 - x_abs) + 1); 1607 coeffs[3] = (((cubic_alpha * (2 - x_abs) - 5 * cubic_alpha) * (2 - x_abs) + 8 * cubic_alpha) * (2 - x_abs) - 4 * cubic_alpha); 1608 return coeffs; 1609 } 1610`,Q0=e=>` 1611 fn gs_bicubic_interpolate(p: mat4x4<${e}>, x: f32, y: f32) -> ${e} { 1612 var v: vec4<f32>; 1613 var coeffs = gs_get_cubic_coeffs(x); 1614 for (var i = 0; i < 4; i++) { 1615 v[i] = coeffs[0] * p[i][0] + coeffs[1] * p[i][1] + coeffs[2] * p[i][2] + coeffs[3] * p[i][3]; 1616 } 1617 coeffs = gs_get_cubic_coeffs(y); 1618 let pixel = ${e}(coeffs[0] * v[0] + coeffs[1] * v[1] + coeffs[2] * v[2] + coeffs[3] * v[3]); 1619 return pixel; 1620 } 1621`,H0=e=>` 1622 fn gs_denormalize(n: f32, length: i32) -> f32 { 1623 ${e.alignCorners===0?` 1624 // alignCorners: false => [-1, 1] to [-0.5, length - 0.5] 1625 return ((n + 1.0) * f32(length) - 1.0) / 2.0; 1626 `:` 1627 // alignCorners: true => [-1, 1] to [0, length - 1] 1628 return (n + 1.0) / 2.0 * (f32(length - 1)); 1629 `} 1630 } 1631`,K0=e=>` 1632 ${e.paddingMode==="reflection"?` 1633 fn gs_reflect(x: i32, x_min: f32, x_max: f32) -> u32 { 1634 var dx = 0.0; 1635 var fx = f32(x); 1636 let range = x_max - x_min; 1637 if (fx < x_min) { 1638 dx = x_min - fx; 1639 let n = u32(dx / range); 1640 let r = dx - f32(n) * range; 1641 if (n % 2 == 0) { 1642 fx = x_min + r; 1643 } else { 1644 fx = x_max - r; 1645 } 1646 } else if (fx > x_max) { 1647 dx = fx - x_max; 1648 let n = u32(dx / range); 1649 let r = dx - f32(n) * range; 1650 if (n % 2 == 0) { 1651 fx = x_max - r; 1652 } else { 1653 fx = x_min + r; 1654 } 1655 } 1656 return u32(fx); 1657 }`:""} 1658`,q0=(e,t,r)=>` 1659 fn pixel_at_grid(r: i32, c: i32, H: i32, W: i32, batch: u32, channel: u32, border: vec4<f32>) -> ${t} { 1660 var pixel = ${t}(0); 1661 var indices = vec4<u32>(0); 1662 indices[${pa}] = batch; 1663 indices[${Ta}] = channel;`+(()=>{switch(r.paddingMode){case"zeros":return` 1664 if (r >= 0 && r < H && c >=0 && c < W) { 1665 indices[${zi}] = u32(r); 1666 indices[${Fi}] = u32(c); 1667 } else { 1668 return ${t}(0); 1669 } 1670 `;case"border":return` 1671 indices[${zi}] = u32(clamp(r, 0, H - 1)); 1672 indices[${Fi}] = u32(clamp(c, 0, W - 1)); 1673 `;case"reflection":return` 1674 indices[${zi}] = gs_reflect(r, border[1], border[3]); 1675 indices[${Fi}] = gs_reflect(c, border[0], border[2]); 1676 `;default:throw new Error(`padding mode ${r.paddingMode} is not supported`)}})()+` 1677 return ${e.getByIndices("indices")}; 1678 } 1679`,X0=(e,t,r)=>(()=>{switch(r.mode){case"nearest":return` 1680 let result = pixel_at_grid(i32(round(y)), i32(round(x)), H_in, W_in, indices[${pa}], indices[${Ta}], border); 1681 `;case"bilinear":return` 1682 let x1 = i32(floor(x)); 1683 let y1 = i32(floor(y)); 1684 let x2 = x1 + 1; 1685 let y2 = y1 + 1; 1686 1687 let p11 = pixel_at_grid(y1, x1, H_in, W_in, indices[${pa}], indices[${Ta}], border); 1688 let p12 = pixel_at_grid(y1, x2, H_in, W_in, indices[${pa}], indices[${Ta}], border); 1689 let p21 = pixel_at_grid(y2, x1, H_in, W_in, indices[${pa}], indices[${Ta}], border); 1690 let p22 = pixel_at_grid(y2, x2, H_in, W_in, indices[${pa}], indices[${Ta}], border); 1691 1692 let dx2 = ${t}(f32(x2) - x); 1693 let dx1 = ${t}(x - f32(x1)); 1694 let dy2 = ${t}(f32(y2) - y); 1695 let dy1 = ${t}(y - f32(y1)); 1696 let result = dy2 * (dx2 * p11 + dx1 * p12) + dy1 * (dx2 * p21 + dx1 * p22); 1697 `;case"bicubic":return` 1698 let x0 = i32(floor(x)) - 1; 1699 let y0 = i32(floor(y)) - 1; 1700 var p: mat4x4<${t}>; 1701 for (var h = 0; h < 4; h++) { 1702 for (var w = 0; w < 4; w++) {
1703 p[h][w] = pixel_at_grid(h + y0, w + x0, H_in, W_in, indices[${pa}], indices[${Ta}], border); 1704 } 1705 } 1706 1707 let dx = x - f32(x0 + 1); 1708 let dy = y - f32(y0 + 1); 1709 let result = gs_bicubic_interpolate(p, dx, dy); 1710 `;default:throw new Error(`mode ${r.mode} is not supported`)}})()+`${e.setByOffset("global_idx","result")}`,Z0=(e,t)=>{let r=Ye("x",e[0].dataType,e[0].dims.length),n=[e[1].dims[0],e[1].dims[1],e[1].dims[2]],s=Ye("grid",e[1].dataType,n.length,2),a=[e[0].dims[0],e[0].dims[1],e[1].dims[1],e[1].dims[2]];t.format==="NHWC"&&(a=[e[0].dims[0],e[1].dims[1],e[1].dims[2],e[0].dims[3]],[pa,Ta,zi,Fi]=[0,3,1,2]);let i=bt("output",e[0].dataType,a.length),o=r.type.value,l=Te.size(a),u=[{type:12,data:l},...Dt(e[0].dims,n,a)],p=d=>` 1711 ${d.registerUniform("output_size","u32").declareVariables(r,s,i)} 1712 ${V0} 1713 ${Q0(o)} 1714 ${H0(t)} 1715 ${K0(t)} 1716 ${q0(r,o,t)} 1717 1718 ${d.mainStart()} 1719 ${d.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 1720 let H_in = i32(uniforms.x_shape[${zi}]); 1721 let W_in = i32(uniforms.x_shape[${Fi}]); 1722 1723 ${t.alignCorners===0?` 1724 let x_min = -0.5; 1725 let x_max = f32(W_in) - 0.5; 1726 let y_min = -0.5; 1727 let y_max = f32(H_in) - 0.5; 1728 `:` 1729 let x_min = 0.0; 1730 let x_max = f32(W_in) - 1.0; 1731 let y_min = 0.0; 1732 let y_max = f32(H_in) - 1.0; 1733 `}; 1734 let border = vec4<f32>(x_min, y_min, x_max, y_max); 1735 1736 let indices = ${i.offsetToIndices("global_idx")}; 1737 var grid_indices = vec3<u32>(indices[${pa}], indices[${zi}], indices[${Fi}]); 1738 let nxy = ${s.getByIndices("grid_indices")}; 1739 var x = gs_denormalize(f32(nxy[0]), W_in); 1740 var y = gs_denormalize(f32(nxy[1]), H_in); 1741 1742 ${X0(i,o,t)} 1743 }`;return{name:"GridSample",shaderCache:{hint:`${t.cacheKey}`,inputDependencies:["type","type"]},getRunData:d=>{let c=Te.size(a);return{outputs:[{dims:a,dataType:d[0].dataType}],dispatchGroup:{x:Math.ceil(c/64)},programUniforms:u}},getShaderSource:p}},J0=(e,t)=>{W0(e.inputs),e.compute(Z0(e.inputs,t))},eb=e=>br({alignCorners:e.align_corners,mode:e.mode,paddingMode:e.padding_mode,format:e.format})}),Qn,tb,rb,_g,nb,Tl,sb,ab=Je(()=>{zt(),Kt(),an(),Fp(),Kp(),er(),Va(),Qn=(e,t)=>e.length>t&&e[t].dims.length>0?e[t]:void 0,tb=(e,t)=>{let r=e[0],n=Qn(e,1),s=Qn(e,2),a=Qn(e,3),i=Qn(e,4),o=Qn(e,5),l=Qn(e,6),u=Qn(e,7);if(r.dims.length!==3&&r.dims.length!==5)throw new Error("Input query is expected to have 3 or 5 dimensions");let p=r.dims[0],d=r.dims[1],c=r.dims.length===3?r.dims[2]:t.numHeads*r.dims[4],g=d,A=0,m=0,B=Math.floor(c/t.numHeads);if(l&&u&&Te.size(l.dims)&&Te.size(u.dims)){if(l.dims.length!==4)throw new Error('Input "past_key" is expected to have 4 dimensions');if(l.dims[0]!==p||l.dims[1]!==t.numHeads||l.dims[3]!==B)throw new Error('Input "past_key" shape (batch_size, num_heads, past_sequence_length, head_size)');if(u.dims[0]!==p||u.dims[1]!==t.numHeads||u.dims[3]!==B)throw new Error('Input "past_value" shape (batch_size, num_heads, past_sequence_length, head_size)');if(l.dims[2]!==u.dims[2])throw new Error('Input "past_key" and "past_value" shall have same dim 2 (past_sequence_length)');if(u.dims.length!==4)throw new Error('Input "past_value" is expected to have 4 dimensions');A=l.dims[2],m=l.dims[2]}else if(l&&Te.size(l.dims)||u&&Te.size(u.dims))throw new Error('Input "past_key" and "past_value" shall be both present or both absent');let f;if(n&&Te.size(n.dims)>0){if(r.dims.length!==3)throw new Error('Input "query" is expected to have 3 dimensions when key is given');if(n.dims.length<3||n.dims.length>5)throw new Error('Input "key" is expected to have 3, 4, or 5 dimensions');if(r.dims[0]!==n.dims[0])throw new Error('Input "query" and "key" shall have same dim 0 (batch size)');if(n.dims.length===3){if(n.dims[2]!==r.dims[2])throw new Error('Input "query" and "key" shall have same dim 2 (hidden_size)');f=2,g=n.dims[1]}else if(n.dims.length===5){if(n.dims[2]!==t.numHeads||n.dims[3]!==2||n.dims[4]!==B)throw new Error('Expect "key" shape (batch_size, kv_sequence_length, num_heads, 2, head_size) for packed kv');if(s)throw new Error('Expect "value" be none when "key" has packed kv format.');f=5,g=n.dims[1]}else{if(n.dims[1]!==t.numHeads||n.dims[3]!==B)throw new Error('Expect "key" shape (batch_size, num_heads, kv_sequence_length, head_size) for past_key');f=0,g=n.dims[2]}}else{if(r.dims.length!==5)throw new Error('Input "query" is expected to have 5 dimensions when key is empty');if(r.dims[2]!==t.numHeads||r.dims[3]!==3)throw new Error('Expect "query" shape (batch_size, kv_sequence_length, num_heads, 3, head_size) for packed kv');f=3}if(a&&Te.size(a.dims)>0){if(a.dims.length!==1)throw new Error('Input "bias" is expected to have 1 dimension');
vendor: 9,360 bytes, lines 1743-1791
1743if(n&&n.dims.length===5&&n.dims[3]===2)throw new Error("bias is not allowed for packed kv.")}let h=A+g,P=0;if(i&&Te.size(i.dims)>0){P=8;let v=i.dims;throw v.length===1?v[0]===p?P=1:v[0]===3*p+2&&(P=3):v.length===2&&v[0]===p&&v[1]===h&&(P=5),P===8?new Error('Input "key_padding_mask" shape shall be (batch_size) or (batch_size, total_sequence_length)'):new Error("Mask not supported")}let _=!1,w=c;if(s&&Te.size(s.dims)>0){if(s.dims.length!==3&&s.dims.length!==4)throw new Error('Input "value" is expected to have 3 or 4 dimensions');if(r.dims[0]!==s.dims[0])throw new Error('Input "query" and "value" shall have same dim 0 (batch_size)');if(s.dims.length===3){if(g!==s.dims[1])throw new Error('Input "key" and "value" shall have the same dim 1 (kv_sequence_length)');w=s.dims[2]}else{if(g!==s.dims[2])throw new Error('Input "key" and "value" shall have the same dim 2 (kv_sequence_length)');w=s.dims[1]*s.dims[3],_=!0}}let b=!1;if(i&&Te.size(i.dims)>0)throw new Error("Key padding mask is not supported");if(o&&Te.size(o.dims)>0){if(o.dims.length!==4)throw new Error('Input "attention_bias" is expected to have 4 dimensions');if(o.dims[0]!==p||o.dims[1]!==t.numHeads||o.dims[2]!==d||o.dims[3]!==h)throw new Error('Expect "attention_bias" shape (batch_size, num_heads, sequence_length, total_sequence_length)')}return{batchSize:p,sequenceLength:d,pastSequenceLength:A,kvSequenceLength:g,totalSequenceLength:h,maxSequenceLength:m,inputHiddenSize:0,hiddenSize:c,vHiddenSize:w,headSize:B,vHeadSize:Math.floor(w/t.numHeads),numHeads:t.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:t.maskFilterValue,maskType:P,scale:t.scale,broadcastResPosBias:b,passPastInKv:_,qkvFormat:f}},rb=e=>br({...e}),_g=br({perm:[0,2,1,3]}),nb=(e,t,r,n,s,a,i)=>{let o=[n,s,a],l=Te.size(o),u=[{type:12,data:l},{type:12,data:i},{type:12,data:a}],p=d=>{let c=bt("qkv_with_bias",t.dataType,o),g=Ye("qkv",t.dataType,o),A=Ye("bias",r.dataType,o),m=[{name:"output_size",type:"u32"},{name:"bias_offset",type:"u32"},{name:"hidden_size",type:"u32"}];return` 1744 ${d.registerUniforms(m).declareVariables(g,A,c)} 1745 ${d.mainStart()} 1746 ${d.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 1747 let bias_offset_idx = (global_idx % uniforms.hidden_size) + uniforms.bias_offset; 1748 1749 qkv_with_bias[global_idx] = qkv[global_idx] + bias[bias_offset_idx]; 1750 }`};return e.compute({name:"MultiHeadAttentionAddBias",shaderCache:{inputDependencies:["type","type"]},getRunData:()=>({outputs:[{dims:o,dataType:t.dataType,gpuDataType:0}],dispatchGroup:{x:Math.ceil(l/64)},programUniforms:u}),getShaderSource:p},{inputs:[t,r],outputs:[-1]})[0]},Tl=(e,t,r,n,s,a,i,o)=>{let l=a;if(i&&Te.size(i.dims)>0){if(n===1)throw new Error("AddBiasReshape is not implemented. Please export your model with packed QKV or KV");return l=nb(e,a,i,t,n,r*s,o),l=l.reshape([t,n,r,s]),r===1||n===1?l:e.compute(ns(l,_g.perm),{inputs:[l],outputs:[-1]})[0]}else return a.dims.length===3&&(l=a.reshape([t,n,r,s])),r===1||n===1?l:e.compute(ns(l,_g.perm),{inputs:[l],outputs:[-1]})[0]},sb=(e,t)=>{let r=tb(e.inputs,t),n=e.inputs[0],s=Qn(e.inputs,1),a=Qn(e.inputs,2),i=Qn(e.inputs,3),o=Qn(e.inputs,4),l=Qn(e.inputs,5),u=Qn(e.inputs,6),p=Qn(e.inputs,7);if(n.dims.length===5)throw new Error("Packed QKV is not implemented");if(s?.dims.length===5)throw new Error("Packed KV is not implemented");let d=s&&a&&s.dims.length===4&&a.dims.length===4,c=Tl(e,r.batchSize,r.numHeads,r.sequenceLength,r.headSize,n,i,0);if(d)return Bl(e,c,s,a,o,void 0,u,p,l,r);if(!s||!a)throw new Error("key and value must be provided");let g=Tl(e,r.batchSize,r.numHeads,r.kvSequenceLength,r.headSize,s,i,r.hiddenSize),A=Tl(e,r.batchSize,r.numHeads,r.kvSequenceLength,r.vHeadSize,a,i,2*r.hiddenSize);Bl(e,c,g,A,o,void 0,u,p,l,r)}}),ib,ob,lb,ub,wg,cb,db,pb=Je(()=>{zt(),Kt(),an(),er(),ib=e=>{if(!e||e.length<1)throw new Error("too few inputs")},ob=(e,t)=>{let r=[],n=t.numOutputs;return e[1].dims[0]>0&&(e[1].getBigInt64Array().forEach(s=>r.push(Number(s))),n=r.length),br({numOutputs:n,axis:t.axis,splitSizes:r})},lb=e=>` 1751fn calculateOutputIndex(index: u32) -> u32 { 1752 for (var i: u32 = 0u; i < ${e}u; i += 1u ) { 1753 if (index < ${Bt("uniforms.size_in_split_axis","i",e)}) { 1754 return i; 1755 } 1756 } 1757 return ${e}u; 1758}`,ub=e=>{let t=e.length,r=[];for(let n=0;n<t;++n){let s=e[n].setByIndices("indices","input[global_idx]");t===1?r.push(s):n===0?r.push(`if (output_number == ${n}u) { ${s} }`):n===t-1?r.push(`else { ${s} }`):r.push(`else if (output_number == ${n}) { ${s} }`)}return` 1759 fn writeBufferData(output_number: u32, indices: ${e[0].type.indices}, global_idx: u32) { 1760 ${r.join(` 1761`)} 1762 }`},wg=(e,t)=>{let r=e[0].dims,n=Te.size(r),s=e[0].dataType,a=Te.normalizeAxis(t.axis,r.length),i=new Array(t.numOutputs),o=Ye("input",s,r.length),l=new Array(t.numOutputs),u=[],p=[],d=0,c=[{type:12,data:n}];for(let A=0;A<t.numOutputs;A++){d+=t.splitSizes[A],l[A]=d;let m=r.slice();m[a]=t.splitSizes[A],p.push(m),i[A]=bt(`output${A}`,s,m.length),u.push({dims:p[A],dataType:e[0].dataType})}c.push({type:12,data:l},...Dt(r,...p));let g=A=>` 1763 ${A.registerUniform("input_size","u32").registerUniform("size_in_split_axis","u32",l.length).declareVariables(o,...i)} 1764 ${lb(l.length)} 1765 ${ub(i)} 1766 1767 ${A.mainStart()} 1768 ${A.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.input_size")} 1769 1770 var indices = ${o.offsetToIndices("global_idx")}; 1771 var index = ${o.indicesGet("indices",a)}; 1772 let output_number = calculateOutputIndex(index); 1773 if (output_number != 0) { 1774 index -= ${Bt("uniforms.size_in_split_axis","output_number - 1u",l.length)}; 1775 ${o.indicesSet("indices",a,"index")}; 1776 } 1777 writeBufferData(output_number, indices, global_idx); 1778 }`;return{name:"Split",shaderCache:{hint:t.cacheKey,inputDependencies:["rank"]},getShaderSource:g,getRunData:()=>({outputs:u,dispatchGroup:{x:Math.ceil(n/64)},programUniforms:c})}},cb=(e,t)=>{ib(e.inputs);let r=e.inputs.length===1?t:ob(e.inputs,t);e.compute(wg(e.inputs,r),{inputs:[0]})},db=e=>{let t=e.axis,r=e.splitSizes,n=e.numOutputs<0?r.length:e.numOutputs;if(n!==r.length)throw new Error("numOutputs and splitSizes lengh must be equal");return br({axis:t,numOutputs:n,splitSizes:r})}}),gb,dc,Ab,hb=Je(()=>{zt(),Kt(),an(),er(),gb=(e,t)=>{let[r,n,s,a]=e,{numHeads:i,rotaryEmbeddingDim:o}=t;if(r.dims.length!==3&&r.dims.length!==4)throw new Error(`Input 'x' is expected to have 3 or 4 dimensions, got ${r.dims.length}`);if(!Te.areEqual(n.dims,[])&&!Te.areEqual(n.dims,[1])&&n.dims.length!==2)throw new Error(`Input 'position_ids' is expected to have 0, 1, or 2 dimensions, got ${n.dims.length}`);if(s.dims.length!==2)throw new Error(`Input 'cos_cache' is expected to have 2 dimensions, got ${s.dims.length}`);if(a.dims.length!==2)throw new Error(`Input 'sin_cache' is expected to have 2 dimensions, got ${a.dims.length}`);if(!Te.areEqual(s.dims,a.dims))throw new Error("Inputs 'cos_cache' and 'sin_cache' are expected to have the same shape");if(o>0&&i===0)throw new Error("num_heads must be provided if rotary_embedding_dim is specified");let l=r.dims[0],u=r.dims[r.dims.length-2],p=s.dims[0],d=Te.sizeFromDimension(r.dims,1)/u,c=o===0?s.dims[1]*2:d/i;if(o>c)throw new Error("rotary_embedding_dim must be less than or equal to head_size");if(n.dims.length===2){if(l!==n.dims[0])throw new Error(`Input 'position_ids' dimension 0 should be of size batch_size, got ${n.dims[0]}`);if(u!==n.dims[1])throw new Error(`Input 'position_ids' dimension 1 should be of size sequence_length, got ${n.dims[1]}`)}if(c/2!==s.dims[1]&&o/2!==s.dims[1])throw new Error(`Input 'cos_cache' dimension 1 should be same as head_size / 2 or rotary_embedding_dim / 2, got ${s.dims[1]}`);if(u>p)throw new Error("Updating cos_cache and sin_cache in RotaryEmbedding is not currently supported")},dc=(e,t)=>{let{interleaved:r,numHeads:n,rotaryEmbeddingDim:s,scale:a}=t,i=e[0].dims[0],o=Te.sizeFromDimension(e[0].dims,1),l=e[0].dims[e[0].dims.length-2],u=o/l,p=e[2].dims[1],d=s===0?p*2:u/n,c=new Array(i,l,u/d,d-p),g=Te.computeStrides(c),A=[{type:1,data:a},{type:12,data:c},{type:12,data:g},...e[0].dims.length===3?new Array({type:12,data:[o,u,d,1]}):[],...e[0].dims.length===4?new Array({type:12,data:[o,d,l*d,1]}):[],...Dt(e[0].dims,e[1].dims,e[2].dims,e[3].dims,e[0].dims)],m=B=>{let f=Ye("input",e[0].dataType,e[0].dims.length),h=Ye("position_ids",e[1].dataType,e[1].dims.length),P=Ye("cos_cache",e[2].dataType,e[2].dims.length),_=Ye("sin_cache",e[3].dataType,e[3].dims.length),w=bt("output",e[0].dataType,e[0].dims.length);return B.registerUniforms([{name:"scale",type:"f32"},{name:"global_shape",type:"u32",length:c.length},{name:"global_strides",type:"u32",length:g.length},{name:"input_output_strides",type:"u32",length:g.length}]),` 1779 ${B.declareVariables(f,h,P,_,w)} 1780 1781 ${B.mainStart(Eo)} 1782 let half_rotary_emb_dim = uniforms.${P.name}_shape[1]; 1783 let bsnh = global_idx / uniforms.global_strides % uniforms.global_shape; 1784 let size = uniforms.global_shape[0] * uniforms.global_strides[0]; 1785 ${B.guardAgainstOutOfBoundsWorkgroupSizes("size")} 1786 1787 if (bsnh[3] < half_rotary_emb_dim) { 1788 let position_ids_idx = 1789 ${h.broadcastedIndicesToOffset("bsnh.xy",bt("",h.type.tensor,2))}; 1790 let position_id = 1791 u32(${h.getByOffset("position_ids_idx")}) + select(0, bsnh[1], position_ids_idx == 0);
1792 let i = dot(bsnh, uniforms.input_output_strides) + select(0, bsnh[3], ${r}); 1793 let j = i + select(half_rotary_emb_dim, 1, ${r}); 1794 let re = ${f.getByOffset("i")} * ${P.get("position_id","bsnh[3]")} - 1795 ${f.getByOffset("j")} * ${_.get("position_id","bsnh[3]")}; 1796 ${w.setByOffset("i","re")} 1797 let im = ${f.getByOffset("i")} * ${_.get("position_id","bsnh[3]")} + 1798 ${f.getByOffset("j")} * ${P.get("position_id","bsnh[3]")}; 1799 ${w.setByOffset("j","im")} 1800 } else { 1801 let k = dot(bsnh, uniforms.input_output_strides) + half_rotary_emb_dim; 1802 ${w.setByOffset("k",f.getByOffset("k"))} 1803 } 1804 }`};return{name:"RotaryEmbedding",shaderCache:{hint:br({interleaved:r}).cacheKey,inputDependencies:["rank","rank","rank","rank"]},getShaderSource:m,getRunData:()=>({outputs:[{dims:e[0].dims,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(Te.size(c)/Eo)},programUniforms:A})}},Ab=(e,t)=>{gb(e.inputs,t),e.compute(dc(e.inputs,t))}}),mb,fb,yg,_b,wb,Jk=Je(()=>{an(),zt(),Kp(),ab(),pb(),Va(),hb(),er(),mb=(e,t)=>{if(t.doRotary&&e.length<=7)throw new Error("cos_cache and sin_cache inputs are required if do_rotary is specified");let r=e[0],n=e[1],s=e[2],a=e[3],i=e[4];if(t.doRotary!==0&&e.length<=7)throw new Error("cos_cast and sin_cache are expected if do_rotary attribute is non-zero");if(t.localWindowSize!==-1)throw new Error("Local attention is not supported");if(t.softcap!==0)throw new Error("Softcap is not supported");if(t.rotaryInterleaved!==0)throw new Error("Rotary interleaved is not supported");if(t.smoothSoftmax)throw new Error("Smooth softmax is not supported");if(r.dims.length!==3&&r.dims.length!==5)throw new Error("Input query is expected to have 3 or 5 dimensions");let o=!1,l=r.dims[0],u=r.dims[1],p=r.dims.length===3?o?r.dims[2]/3:r.dims[2]:t.numHeads*r.dims[4],d=u,c=0,g=!n||n.dims.length===0,A=Math.floor(g?p/(t.numHeads+2*t.kvNumHeads):p/t.numHeads);g&&(p=A*t.numHeads);let m=a&&a.dims.length!==0,B=i&&i.dims.length!==0;if(m&&a.dims.length===4&&a.dims[0]===l&&a.dims[1]!==t.kvNumHeads&&a.dims[2]===t.kvNumHeads&&a.dims[3]===A)throw new Error("BSNH pastKey/pastValue is not supported");if(m&&B){if(a.dims.length!==4)throw new Error('Input "past_key" is expected to have 4 dimensions');if(i.dims.length!==4)throw new Error('Input "past_value" is expected to have 4 dimensions');c=a.dims[2]}else if(m||B)throw new Error('Input "past_key" and "past_value" shall be both present or both absent');let f=1;if(n&&n.dims.length>0){if(r.dims.length!==3)throw new Error('Input "query" is expected to have 3 dimensions when key is given');if(n.dims.length<3||n.dims.length>5)throw new Error('Input "key" is expected to have 3, 4, or 5 dimensions');if(r.dims[0]!==n.dims[0])throw new Error('Input "query" and "key" shall have same dim 0 (batch size)');if(n.dims.length===3){if(r.dims[2]%n.dims[2]!==0)throw new Error('Dimension 2 of "query" should be a multiple of "key"');d=n.dims[1]}else if(n.dims.length===5){if(n.dims[2]!==t.numHeads||n.dims[3]!==2||n.dims[4]!==A)throw new Error('Expect "key" shape (batch_size, kv_sequence_length, num_heads, 2, head_size) for packed kv');if(s)throw new Error('Expect "value" be none when "key" has packed kv format.');d=n.dims[1]}else{if(n.dims[1]!==t.numHeads||n.dims[3]!==A)throw new Error('Expect "key" shape (batch_size, num_heads, kv_sequence_length, head_size) for past_key');d=n.dims[2]}}else{if(r.dims.length!==3&&r.dims.length!==5)throw new Error('Input "query" is expected to have 3 or 5 dimensions when key is empty');if(r.dims.length===5&&(r.dims[2]!==t.numHeads||r.dims[3]!==3))throw new Error('Expect "query" shape (batch_size, kv_sequence_length, num_heads, 3, head_size) for packed kv');f=3}let h=0,P=!1,_=t.kvNumHeads?A*t.kvNumHeads:p;if(s&&s.dims.length>0){if(s.dims.length!==3&&s.dims.length!==4)throw new Error('Input "value" is expected to have 3 or 4 dimensions');if(r.dims[0]!==s.dims[0])throw new Error('Input "query" and "value" shall have same dim 0 (batch_size)');if(s.dims.length===3){if(d!==s.dims[1])throw new Error('Input "key" and "value" shall have the same dim 1 (kv_sequence_length)');_=s.dims[2]}else{if(d!==s.dims[2])throw new Error('Input "past_key" and "past_value" shall have the same dim 2 (kv_sequence_length)');_=s.dims[1]*s.dims[3],P=!0}}let w=e.length>4?e[5]:void 0;if(w&&w.dims.length!==1&&w.dims[0]!==l)throw new Error('Input "seqlens" is expected to have 1 dimension and the same dim 0 as batch_size');return{batchSize:l,sequenceLength:u,pastSequenceLength:c,kvSequenceLength:d,totalSequenceLength:-1,maxSequenceLength:-1,inputHiddenSize:0,hiddenSize:p,vHiddenSize:_,headSize:A,vHeadSize:Math.floor(_/t.kvNumHeads),numHeads:t.numHeads,kvNumHeads:t.kvNumHeads,nReps:t.numHeads/t.kvNumHeads,pastPresentShareBuffer:!1,maskType:h,scale:t.scale,broadcastResPosBias:!1,passPastInKv:P,qkvFormat:f}},fb=br({perm:[0,2,1,3]}),yg=(e,t,r)=>{let n=t,s=r.kvNumHeads;return t.dims.length===3&&r.kvSequenceLength!==0&&(n=t.reshape([r.batchSize,r.kvSequenceLength,s,r.headSize]),n=e.compute(ns(n,fb.perm),{inputs:[n],outputs:[-1]})[0]),n},_b=(e,t,r,n)=>{let s=7,a=["type","type"],i=[e*t],o=e*t,l=[{type:12,data:o},{type:12,data:t},{type:12,data:e}],u=p=>{let d=Ye("seq_lens",r.dataType,r.dims),c=Ye("total_seq_lens",n.dataType,n.dims),g=bt("pos_
1804ids",s,i),A=[{name:"output_size",type:"u32"},{name:"sequence_length",type:"u32"},{name:"batch_size",type:"u32"}];return` 1805 ${p.registerUniforms(A).declareVariables(d,c,g)} 1806 ${p.mainStart()} 1807 ${p.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 1808 let total_sequence_length = u32(${c.getByOffset("0")}); 1809 let is_subsequent_prompt = uniforms.sequence_length > 1 && uniforms.sequence_length != total_sequence_length; 1810 let is_first_prompt = !is_subsequent_prompt && uniforms.sequence_length == total_sequence_length; 1811 let batch_idx = global_idx / uniforms.sequence_length; 1812 let sequence_idx = i32(global_idx % uniforms.sequence_length); 1813 var pos_id: i32 = 0; 1814 let seqlen = ${d.getByOffset("batch_idx")}; 1815 let total_seqlen = seqlen + 1; 1816 if (is_first_prompt) { 1817 if (sequence_idx < total_seqlen) { 1818 pos_id = sequence_idx; 1819 } else { 1820 pos_id = 1; 1821 } 1822 ${g.setByOffset("global_idx","pos_id")} 1823 } else if (is_subsequent_prompt) { 1824 let past_seqlen = total_seqlen - i32(uniforms.sequence_length); 1825 if (past_seqlen + sequence_idx < total_seqlen) { 1826 pos_id = past_seqlen + sequence_idx; 1827 } else { 1828 pos_id = 1; 1829 } 1830 ${g.setByOffset("global_idx","pos_id")} 1831 } else if (global_idx < uniforms.batch_size) { 1832 ${g.setByOffset("global_idx","seqlen")} 1833 }; 1834 } 1835 `};return{name:"GeneratePositionIds",shaderCache:{hint:`${e};${t}`,inputDependencies:a},getRunData:()=>({outputs:[{dims:i,dataType:s}],dispatchGroup:{x:Math.ceil(o/64)},programUniforms:l}),getShaderSource:u}},wb=(e,t)=>
vendor: 5,767 bytes, lines 1835-1886
1835{let r=mb(e.inputs,t);if(e.inputs[0].dims.length===5)throw new Error("Packed QKV is not implemented");if(e.inputs[1]?.dims.length===5)throw new Error("Packed KV is not implemented");let n=e.inputs[0],s=e.inputs[1]&&e.inputs[1].dims.length>0?e.inputs[1]:void 0,a=e.inputs[2]&&e.inputs[2].dims.length>0?e.inputs[2]:void 0,i=e.inputs[3]&&e.inputs[3].dims.length!==0?e.inputs[3]:void 0,o=e.inputs[4]&&e.inputs[4].dims.length!==0?e.inputs[4]:void 0,l=e.inputs.length>4?e.inputs[5]:void 0,u=e.inputs.length>5?e.inputs[6]:void 0,p=r.kvNumHeads?r.kvNumHeads:r.numHeads,d=br({axis:2,numOutputs:3,splitSizes:[r.numHeads*r.headSize,p*r.headSize,p*r.headSize]}),[c,g,A]=!s&&!a?e.compute(wg([n],d),{inputs:[n],outputs:[-1,-1,-1]}):[n,s,a],m,B;if(t.doRotary){let _=e.compute(_b(r.batchSize,r.sequenceLength,l,u),{inputs:[l,u],outputs:[-1]})[0],w=e.inputs[7],b=e.inputs[8],v=br({interleaved:t.rotaryInterleaved!==0,numHeads:r.numHeads,rotaryEmbeddingDim:0,scale:t.scale}),y=[c,_,w,b],$=[-1];m=e.compute(dc(y,v),{inputs:y,outputs:$})[0],y.splice(0,1,g);let k=br({interleaved:t.rotaryInterleaved!==0,numHeads:r.kvNumHeads,rotaryEmbeddingDim:0,scale:t.scale});B=e.compute(dc(y,k),{inputs:y,outputs:$})[0]}let f=Tl(e,r.batchSize,r.numHeads,r.sequenceLength,r.headSize,t.doRotary?m:c,void 0,0),h=yg(e,t.doRotary?B:g,r),P=yg(e,A,r);Bl(e,f,h,P,void 0,void 0,i,o,void 0,r,l,u)}}),bg,yb,bb,Pb,e4=Je(()=>{zt(),Kt(),Va(),er(),bg=(e,t,r,n,s,a,i,o)=>{let l=Jr(a),u=l===1?"f32":`vec${l}f`,p=l===1?"vec2f":`mat2x${l}f`,d=s*i,c=64;d===1&&(c=256);let g=[s,i,a/l],A=[s,i,2],m=["rank","type","type"],B=[];B.push(...Dt(g,A));let f=h=>{let P=Ye("x",t.dataType,3,l),_=Ye("scale",r.dataType,r.dims),w=Ye("bias",n.dataType,n.dims),b=bt("output",1,3,2),v=[P,_,w,b];return` 1836 var<workgroup> workgroup_shared : array<${p}, ${c}>; 1837 const workgroup_size = ${c}u; 1838 ${h.declareVariables(...v)} 1839 ${h.mainStart(c)} 1840 let batch = workgroup_index / uniforms.x_shape[1]; 1841 let channel = workgroup_index % uniforms.x_shape[1]; 1842 let hight = uniforms.x_shape[2]; 1843 // initialize workgroup memory 1844 var sum = ${u}(0); 1845 var squared_sum = ${u}(0); 1846 for (var h = local_idx; h < hight; h += workgroup_size) { 1847 let value = ${u}(${P.get("batch","channel","h")}); 1848 sum += value; 1849 squared_sum += value * value; 1850 } 1851 workgroup_shared[local_idx] = ${p}(sum, squared_sum); 1852 workgroupBarrier(); 1853 1854 for (var currSize = workgroup_size >> 1; currSize > 0; currSize = currSize >> 1) { 1855 if (local_idx < currSize) { 1856 workgroup_shared[local_idx] = workgroup_shared[local_idx] + workgroup_shared[local_idx + currSize]; 1857 } 1858 workgroupBarrier(); 1859 } 1860 if (local_idx == 0) { 1861 let sum_final = ${Wa("workgroup_shared[0][0]",l)} / f32(hight * ${l}); 1862 let squared_sum_final = ${Wa("workgroup_shared[0][1]",l)} / f32(hight * ${l}); 1863 1864 let inv_std_dev = inverseSqrt(squared_sum_final - sum_final * sum_final + f32(${o})); 1865 let channel_scale = inv_std_dev * f32(scale[channel]); 1866 let channel_shift = f32(bias[channel]) - sum_final * channel_scale; 1867 output[workgroup_index] = vec2f(channel_scale, channel_shift); 1868 } 1869 }`};return e.compute({name:"InstanceNormComputeChannelScaleShift",shaderCache:{hint:`${l};${o};${c}`,inputDependencies:m},getRunData:()=>({outputs:[{dims:A,dataType:1}],dispatchGroup:{x:d},programUniforms:B}),getShaderSource:f},{inputs:[t,r,n],outputs:[-1]})[0]},yb=(e,t,r)=>{let n=t[0].dims,s=n,a=2,i=n[0],o=n[1],l=Te.sizeFromDimension(n,a),u=Jr(l),p=Te.size(s)/u,d=bg(e,t[0],t[1],t[2],i,l,o,r.epsilon),c=[i,o,l/u],g=[i,o],A=["type","none"],m=B=>{let f=Ye("x",t[0].dataType,c.length,u),h=Ye("scale_shift",1,g.length,2),P=bt("output",t[0].dataType,c.length,u),_=[f,h,P];return` 1870 ${B.registerUniform("output_size","u32").declareVariables(..._)} 1871 ${B.mainStart()} 1872 ${B.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 1873 let outputIndices = ${P.offsetToIndices("global_idx")}; 1874 let batch = outputIndices[0]; 1875 let channel = outputIndices[1]; 1876 let scale_shift = ${h.getByIndices("vec2<u32>(batch, channel)")}; 1877 let value = ${f.getByOffset("global_idx")} * ${P.type.value}(scale_shift.x) + ${P.type.value}(scale_shift.y); 1878 ${P.setByOffset("global_idx","value")}; 1879 }`};e.compute({name:"InstanceNormalization",shaderCache:{hint:`${u}`,inputDependencies:A},getRunData:()=>({outputs:[{dims:s,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(p/64)},programUniforms:[{type:12,data:p},...Dt(c,g,c)]}),getShaderSource:m},{inputs:[t[0],d]})},bb=(e,t,r)=>{let n=t[0].dims,s=n,a=n[0],i=n[n.length-1],o=Te.sizeFromDimension(n,1)/i,l=Jr(i),u=Te.size(s)/l,p=[{type:12,data:o},{type:12,data:Math.floor(i/l)}],d=["type","type"],c=!1,g=[0,n.length-1];for(let f=0;f<n.length-2;f++)c=c||n[f+1]!==1,g.push(f+1);c=c&&n[n.length-1]!==1;let A=c?e.compute(ns(e.inputs[0],g),{inputs:[e.inputs[0]],outputs:[-1]})[0]:e.inputs[0].reshape(Array.from({length:n.length},(f,h)=>n[g[h]])),m=bg(e,A,t[1],t[2],a,o,i,r.epsilon),B=f=>{let h=vn(t[0].dataType),P=l===1?"vec2f":`mat${l}x2f`,_=v=>{let y=v===0?"x":"y",$=l===1?"f32":`vec${l}f`;switch(l){case 1:return`${h}(${$}(scale.${y}))`;case 2:return`vec2<${h}>(${$}(scale[0].${y}, scale[1].${y}))`;case 4:return`vec4<${h}>(${$}(scale[0].${y}, scale[1].${y}, scale[2].${y}, scale[3].${y}))`;default:throw new Error(`Not supported compoents ${l}`)}},w=Ye("input",t[0].dataType,t[0].dims,l),b=bt("output",t[0].dataType,s,l);return` 1880 @group(0) @binding(0) var<storage, read> input : array<${w.type.storage}>; 1881 @group(0) @binding(1) var<storage, read> scale_input : array<${P}>; 1882 @group(0) @binding(2) var<storage, read_write> output : array<${b.type.storage}>; 1883 struct Uniforms {H: u32, C : u32}; 1884 @group(0) @binding(3) var<uniform> uniforms: Uniforms; 1885 1886 ${f.mainStart()}
1887 let current_image_number = global_idx / (uniforms.C * uniforms.H); 1888 let current_channel_number = global_idx % uniforms.C; 1889 1890 let scale_offset = current_image_number * uniforms.C + current_channel_number; 1891 let scale = scale_input[scale_offset]; 1892 output[global_idx] = fma(input[global_idx], ${_(0)}, ${_(1)}); 1893 }`};e.compute({name:"InstanceNormalizationNHWC",shaderCache:{hint:`${l}`,inputDependencies:d},getRunData:()=>({outputs:[{dims:s,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:p}),getShaderSource:B},{inputs:[t[0],m]})},Pb=(e,t)=>{t.format==="NHWC"?bb(e,e.inputs,t):yb(e,e.inputs,t)}}),Mb,vb,Bb,t4=Je(()=>{zt(),Kt(),er(),Mb=e=>{if(!e||e.length<2)throw new Error("layerNorm requires at least 2 inputs.")},vb=(e,t,r)=>{let n=t.simplified,s=e[0].dims,a=e[1],i=!n&&e[2],o=s,l=Te.normalizeAxis(t.axis,s.length),u=Te.sizeToDimension(s,l),p=Te.sizeFromDimension(s,l),d=Te.size(a.dims),c=i?Te.size(i.dims):0;if(d!==p||i&&c!==p)throw new Error(`Size of X.shape()[axis:] == ${p}. 1894 Size of scale and bias (if provided) must match this. 1895 Got scale size of ${d} and bias size of ${c}`);let g=[];for(let w=0;w<s.length;++w)w<l?g.push(s[w]):g.push(1);let A=Jr(p),m=["type","type"],B=[{type:12,data:u},{type:1,data:p},{type:12,data:Math.floor(p/A)},{type:1,data:t.epsilon}];i&&m.push("type");let f=r>1,h=r>2,P=w=>{let b=vn(e[0].dataType),v=[Ye("x",e[0].dataType,e[0].dims,A),Ye("scale",a.dataType,a.dims,A)];i&&v.push(Ye("bias",i.dataType,i.dims,A)),v.push(bt("output",e[0].dataType,o,A)),f&&v.push(bt("mean_data_output",1,g)),h&&v.push(bt("inv_std_output",1,g));let y=[{name:"norm_count",type:"u32"},{name:"norm_size",type:"f32"},{name:"norm_size_vectorized",type:"u32"},{name:"epsilon",type:"f32"}];return` 1896 ${w.registerUniforms(y).declareVariables(...v)} 1897 ${w.mainStart()} 1898 ${w.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.norm_count")} 1899 let offset = global_idx * uniforms.norm_size_vectorized; 1900 var mean_vector = ${Np("f32",A)}; 1901 var mean_square_vector = ${Np("f32",A)}; 1902 1903 for (var h: u32 = 0u; h < uniforms.norm_size_vectorized; h++) { 1904 let value = ${Do(b,A,"x[h + offset]")}; 1905 mean_vector += value; 1906 mean_square_vector += value * value; 1907 } 1908 let mean = ${Wa("mean_vector",A)} / uniforms.norm_size; 1909 let inv_std_dev = inverseSqrt(${Wa("mean_square_vector",A)} / uniforms.norm_size ${n?"":"- mean * mean"} + uniforms.epsilon); 1910 1911 for (var j: u32 = 0; j < uniforms.norm_size_vectorized; j++) { 1912 let f32input = ${Do(b,A,"x[j + offset]")}; 1913 let f32scale = ${Do(b,A,"scale[j]")}; 1914 output[j + offset] = ${v[0].type.value}((f32input ${n?"":"- mean"}) * inv_std_dev * f32scale 1915 ${i?`+ ${Do(b,A,"bias[j]")}`:""} 1916 ); 1917 } 1918 1919 ${f?"mean_data_output[global_idx] = mean":""}; 1920 ${h?"inv_std_output[global_idx] = inv_std_dev":""}; 1921 }`},_=[{dims:o,dataType:e[0].dataType}];return f&&_.push({dims:g,dataType:1}),h&&_.push({dims:g,dataType:1}),{name:"LayerNormalization",shaderCache:{hint:`${A};${r};${n}`,inputDependencies:m},getRunData:()=>({outputs:_,dispatchGroup:{x:Math.ceil(u/64)},programUniforms:B}),getShaderSource:P}},Bb=(e,t)=>{Mb(e.inputs),e.compute(vb(e.inputs,t,e.outputCount))}}),xb,Eb,r4=Je(()=>{Kt(),ng(),og(),xb=e=>{if(!e||e.length!==2)throw new Error("MatMul requires 2 inputs.");if(e[0].dims[e[0].dims.length-1]!==e[1].dims[e[1].dims.length-2])throw new Error("shared dimension does not match.")},Eb=e=>{xb(e.inputs);let t=xo.calcShape(e.inputs[0].dims,e.inputs[1].dims,!0);if(!t)throw new Error("Can't use matmul on the given tensors");let r=t[t.length-1],n=e.inputs[0].dims[e.inputs[0].dims.length-1];if(r<8&&n<8)e.compute(rg(e.inputs,{activation:""},t));else{let s=t[t.length-2],a=Te.size(e.inputs[0].dims.slice(0,-2)),i=Te.size(e.inputs[1].dims.slice(0,-2));if(a!==1&&s===1&&i===1){let o=e.inputs[0].reshape([1,a,n]),l=e.inputs[1].reshape([1,n,r]),u=[1,a,r],p=[o,l];e.compute(oc(p,{activation:""},t,u),{inputs:p})}else e.compute(oc(e.inputs,{activation:""},t))}}}),Db,Ib,Tb,Cb,$b,n4=Je(()=>{zt(),Kt(),an(),er(),Db=(e,t)=>{if(e.length<3||e.length>4)throw new Error("MatMulNBits requires 3 or 4 inputs");let r=e[0],n=r.dims.length;if(r.dims[n-1]!==t.k)throw new Error("The last dim of input shape does not match the k value");let s=Math.floor((t.k+t.blockSize-1)/t.blockSize),a=t.blockSize/8*t.bits,i=e[1];if(!Te.areEqual(i.dims,[t.n,s,a]))throw new Error("The second inputs must be 3D tensor with shape N X nBlocksPerCol X blobSize");let o=e[2].dims;if(Te.size(o)!==t.n*s)throw new Error("scales input size error.");if(e.length===4){let l=e[3].dims,u=t.bits>4?t.n*s:t.n*Math.floor((s+1)/2);if(Te.size(l)!==u)throw new Error("zeroPoints input size error.")}},Ib=(e,t)=>
vendor: 4,086 bytes, lines 1921-1971
1921{let r=e[0].dims,n=r.length,s=r[n-2],a=t.k,i=t.n,o=r.slice(0,n-2),l=Te.size(o),u=e[1].dims[2]/4,p=e[0].dataType,d=Jr(t.k),c=Jr(u),g=Jr(i),A=o.concat([s,i]),m=s>1&&i/g%2===0?2:1,B=Te.size(A)/g/m,f=64,h=[],P=[l,s,a/d],_=Te.convertShape(e[1].dims).slice();_.splice(-1,1,u/c),h.push(...Dt(P)),h.push(...Dt(_)),h.push(...Dt(e[2].dims)),e.length===4&&h.push(...Dt(Te.convertShape(e[3].dims)));let w=[l,s,i/g];h.push(...Dt(w));let b=v=>{let y=P.length,$=Ye("a",e[0].dataType,y,d),k=Ye("b",12,_.length,c),W=Ye("scales",e[2].dataType,e[2].dims.length),j=[$,k,W],F=e.length===4?Ye("zero_points",12,e[3].dims.length):void 0;F&&j.push(F);let R=w.length,L=bt("output",e[0].dataType,R,g),Q=vn(e[0].dataType),ne=(()=>{switch(d){case 1:return`array<${Q}, 8>`;case 2:return`mat4x2<${Q}>`;case 4:return`mat2x4<${Q}>`;default:throw new Error(`${d}-component is not supported.`)}})(),re=()=>{let q=` 1922 // reuse a data 1923 var input_offset = ${$.indicesToOffset(`${$.type.indices}(batch, row, word_offset)`)}; 1924 var a_data: ${ne}; 1925 for (var j: u32 = 0; j < ${8/d}; j++) { 1926 a_data[j] = ${$.getByOffset("input_offset")}; 1927 input_offset++; 1928 } 1929 `;for(let V=0;V<g*m;V++)q+=` 1930 b_value = ${c===1?`b${V}_data`:`b${V}_data[i]`}; 1931 b_value_lower = unpack4xU8(b_value & b_mask); 1932 b_value_upper = unpack4xU8((b_value >> 4) & b_mask); 1933 b_quantized_values = ${ne}(${Array.from({length:4},(U,N)=>`${Q}(b_value_lower[${N}]), ${Q}(b_value_upper[${N}])`).join(", ")}); 1934 b_dequantized_values = ${d===1?`${ne}(${Array.from({length:8},(U,N)=>`(b_quantized_values[${N}] - ${F?`zero_point${V}`:"zero_point"}) * scale${V}`).join(", ")});`:`(b_quantized_values - ${ne}(${Array(8).fill(`${F?`zero_point${V}`:"zero_point"}`).join(",")})) * scale${V};`}; 1935 workgroup_shared[local_id.x * ${m} + ${Math.floor(V/g)}]${g>1?`[${V%g}]`:""} += ${Array.from({length:8/d},(U,N)=>`${d===1?`a_data[${N}] * b_dequantized_values[${N}]`:`dot(a_data[${N}], b_dequantized_values[${N}])`}`).join(" + ")}; 1936 `;return q},ce=()=>{let q=` 1937 var col_index = col * ${g}; 1938 ${F?` 1939 let zero_point_bytes_per_col = (nBlocksPerCol + 1) / 2; 1940 var zero_point_byte_count: u32; 1941 var zero_point_word_index: u32; 1942 var zero_point_byte_offset: u32; 1943 let zero_point_nibble_offset: u32 = block & 0x1u; 1944 var zero_point_bits_offset: u32; 1945 var zero_point_word: u32;`:` 1946 // The default zero point is 8 for unsigned 4-bit quantization. 1947 let zero_point = ${Q}(8);`} 1948 `;for(let V=0;V<g*m;V++)q+=` 1949 let scale${V} = ${W.getByOffset("col_index * nBlocksPerCol + block")}; 1950 ${F?` 1951 zero_point_byte_count = col_index * zero_point_bytes_per_col + (block >> 0x1u); 1952 zero_point_word_index = zero_point_byte_count >> 0x2u; 1953 zero_point_byte_offset = zero_point_byte_count & 0x3u; 1954 zero_point_bits_offset = (zero_point_byte_offset << 3) + (zero_point_nibble_offset << 2); 1955 zero_point_word = ${F.getByOffset("zero_point_word_index")} >> zero_point_bits_offset; 1956 let zero_point${V} = ${Q}((zero_point_word) & 0xFu);`:""} 1957 col_index += 1;`;return q},ge=()=>{let q=`col_index = col * ${g};`;for(let V=0;V<g*m;V++)q+=` 1958 let b${V}_data = ${k.getByIndices(`${k.type.indices}(col_index, block, word)`)}; 1959 col_index += 1;`;return q+=` 1960 var b_value: u32; 1961 let b_mask: u32 = 0x0F0F0F0Fu; 1962 var b_value_lower: vec4<u32>; 1963 var b_value_upper: vec4<u32>; 1964 var b_quantized_values: ${ne}; 1965 var b_dequantized_values: ${ne};`,q};return` 1966 var<workgroup> workgroup_shared: array<${L.type.value}, ${m*f}>; 1967 ${v.declareVariables(...j,L)} 1968 ${v.mainStart([f,1,1])} 1969 let output_indices = ${L.offsetToIndices(`(global_idx / ${f}) * ${m}`)}; 1970 let col = output_indices[2]; 1971 let row = output_indices[1];
1972 let batch = output_indices[0]; 1973 let nBlocksPerCol = uniforms.b_shape[1]; 1974 1975 for (var block = local_id.x; block < nBlocksPerCol; block += ${f}) { 1976 //process one block 1977 var word_offset: u32 = block * ${t.blockSize/d}; 1978 ${ce()} 1979 for (var word: u32 = 0; word < ${u}; word += ${c}) { 1980 ${ge()} 1981 for (var i: u32 = 0; i < ${c}; i++) { 1982 ${re()} 1983 word_offset += ${8/d}; 1984 } 1985 } 1986 } 1987 workgroupBarrier(); 1988 1989 if (local_id.x < ${m}) { 1990 var output_value: ${L.type.value} = ${L.type.value}(0); 1991 var workgroup_shared_offset: u32 = local_id.x; 1992 for (var b: u32 = 0u; b < ${f}u; b++) { 1993 output_value += workgroup_shared[workgroup_shared_offset]; 1994 workgroup_shared_offset += ${m}; 1995 } 1996 ${L.setByIndices(`${L.type.indices}(batch, row, col + local_id.x)`,"output_value")}; 1997 } 1998 }`};return{name:"MatMulNBits",shaderCache:{hint:`${t.blockSize};${t.bits};${d};${c};${g};${m};${f}`,inputDependencies:Array(e.length).fill("rank")},getRunData:()=>({outputs:[{dims:A,dataType:p}],dispatchGroup:{x:B},programUniforms:h}),getShaderSource:b}},Tb=(e,t)=>{let r=e[0].dims,n=r.length,s=r[n-2],a=t.k,i=t.n,o=r.slice(0,n-2),l=Te.size(o),u=e[1].dims[2]/4,p=e[0].dataType,d=Jr(t.k),c=Jr(u),g=o.concat([s,i]),A=128,m=i%8===0?8:i%4===0?4:1,B=A/m,f=B*c*8,h=f/d,P=f/t.blockSize,_=Te.size(g)/m,w=[],b=[l,s,a/d],v=Te.convertShape(e[1].dims).slice();v.splice(-1,1,u/c),w.push(...Dt(b)),w.push(...Dt(v)),w.push(...Dt(e[2].dims)),e.length===4&&w.push(...Dt(Te.convertShape(e[3].dims)));let y=[l,s,i];w.push(...Dt(y));let $=k=>{let W=b.length,j=Ye("a",e[0].dataType,W,d),F=Ye("b",12,v.length,c),R=Ye("scales",e[2].dataType,e[2].dims.length),L=[j,F,R],Q=e.length===4?Ye("zero_points",12,e[3].dims.length):void 0;Q&&L.push(Q);let ne=y.length,re=bt("output",e[0].dataType,ne),ce=vn(e[0].dataType),ge=()=>{switch(d){case 1:return` 1999 let a_data0 = vec4<${ce}>(sub_a[word_offset], sub_a[word_offset + 1], sub_a[word_offset + 2], sub_a[word_offset + 3]); 2000 let a_data1 = vec4<${ce}>(sub_a[word_offset + 4], sub_a[word_offset + 5], sub_a[word_offset + 6], sub_a[word_offset + 7]);`;case 2:return` 2001 let a_data0 = vec4<${ce}>(sub_a[word_offset], sub_a[word_offset + 1]); 2002 let a_data1 = vec4<${ce}>(sub_a[word_offset + 2], sub_a[word_offset + 3]);`;case 4:return` 2003 let a_data0 = sub_a[word_offset]; 2004 let a_data1 = sub_a[word_offset + 1];`;default:throw new Error(`${d}-component is not supported.`)}};return` 2005 var<workgroup> sub_a: array<${j.type.value}, ${h}>; 2006 var<workgroup> inter_results: array<array<${re.type.value}, ${B}>, ${m}>; 2007 ${k.declareVariables(...L,re)} 2008 ${k.mainStart([B,m,1])} 2009 let output_indices = ${re.offsetToIndices(`workgroup_index * ${m}`)}; 2010 let col = output_indices[2]; 2011 let row = output_indices[1]; 2012 let batch = output_indices[0]; 2013 let n_blocks_per_col = uniforms.b_shape[1]; 2014 let num_tiles = (n_blocks_per_col - 1) / ${P} + 1; 2015 2016 // Loop over shared dimension. 2017 for (var tile: u32 = 0; tile < num_tiles; tile += 1) { 2018 let a_col_start = tile * ${h}; 2019 // load one tile A data into shared memory. 2020 for (var a_offset = local_idx; a_offset < ${h}; a_offset += ${A}) 2021 { 2022 let a_col = a_col_start + a_offset; 2023 if (a_col < uniforms.a_shape[2]) 2024 { 2025 sub_a[a_offset] = ${j.getByIndices(`${j.type.indices}(batch, row, a_col)`)}; 2026 } else { 2027 sub_a[a_offset] = ${j.type.value}(0); 2028 } 2029 } 2030 workgroupBarrier(); 2031 2032 // each thread process one block 2033 let b_row = col + local_id.y; 2034 let block = tile * ${P} + local_id.x; 2035 ${Q?` 2036 let zero_point_bytes_per_col = (n_blocks_per_col + 1) / 2; 2037 let zero_point_byte_count = b_row * zero_point_bytes_per_col + (block >> 0x1u); 2038 let zero_point_word_index = zero_point_byte_count >> 0x2u; 2039 let zero_point_byte_offset = zero_point_byte_count & 0x3u; 2040 let zero_point_nibble_offset: u32 = block & 0x1u; 2041 let zero_point_bits_offset = (zero_point_byte_offset << 3) + (zero_point_nibble_offset << 2); 2042 let zero_point_word = ${Q.getByOffset("zero_point_word_index")} >> zero_point_bits_offset; 2043 let zero_point = ${ce}((zero_point_word) & 0xFu);`:` 2044 // The default zero point is 8 for unsigned 4-bit quantization. 2045 let zero_point = ${ce}(8);`} 2046 let scale = ${R.getByOffset("b_row * n_blocks_per_col + block")}; 2047 let b_data = ${F.getByIndices(`${F.type.indices}(b_row, block, 0)`)}; 2048 var word_offset = local_id.x * ${t.blockSize/d}; 2049 for (var i: u32 = 0; i < ${c}; i++) { 2050 ${ge()} 2051 let b_value = ${c===1?"b_data":"b_data[i]"}; 2052 let b_value_lower = unpack4xU8(b_value & 0x0F0F0F0Fu); 2053 let b_value_upper = unpack4xU8((b_value >> 4) & 0x0F0F0F0Fu); 2054 let b_quantized_values = mat2x4<${ce}>(${Array.from({length:4},(q,V)=>`${ce}(b_value_lower[${V}]), ${ce}(b_value_upper[${V}])`).join(", ")}); 2055 let b_dequantized_values = (b_quantized_values - mat2x4<${ce}>(${Array(8).fill("zero_point").join(",")})) * scale; 2056 inter_results[local_id.y][local_id.x] += ${Array.from({length:2},(q,V)=>`${`dot(a_data${V}, b_dequantized_values[${V}])`}`).join(" + ")}; 2057 word_offset += ${8/d}; 2058 } 2059 workgroupBarrier(); 2060 } 2061 2062 if (local_idx < ${m}) { 2063 var output_value: ${re.type.value} = ${re.type.value}(0); 2064 for (var b = 0u; b < ${B}; b++) { 2065 output_value += inter_results[local_idx][b]; 2066 } 2067 if (col + local_idx < uniforms.output_shape[2]) 2068 { 2069 ${re.setByIndices(`${re.type.indices}
vendor: 10,267 bytes, lines 2069-2215
2069(batch, row, col + local_idx)`,"output_value")} 2070 } 2071 } 2072 }`};return{name:"BlockwiseMatMulNBits32",shaderCache:{hint:`${t.blockSize};${d};${c};${B};${m}`,inputDependencies:Array(e.length).fill("rank")},getRunData:()=>({outputs:[{dims:g,dataType:p}],dispatchGroup:{x:_},programUniforms:w}),getShaderSource:$}},Cb=(e,t)=>{Db(e.inputs,t),t.blockSize===32&&e.adapterInfo.isVendor("intel")&&e.adapterInfo.isArchitecture("gen-12lp")?e.compute(Tb(e.inputs,t)):e.compute(Ib(e.inputs,t))},$b=e=>br(e)}),Sb,kb,Ob,Gb,zb,Fb,Lb,Rb,Yb,s4=Je(()=>{zt(),Kt(),er(),Sb=e=>{if(!e||e.length<1)throw new Error("Too few inputs");if(e[0].dataType!==1&&e[0].dataType!==10)throw new Error("Input type must be float or float16.");if(e.length>=2){let t=e[0].dims.length*2===e[1].dims[0];if(e.length===4&&(t=e[3].dims[0]*2===e[1].dims[0]),!t)throw new Error("The pads should be a 1D tensor of shape [2 * input_rank] or [2 * num_axes].")}},kb=(e,t,r)=>{let n="";for(let s=t-1;s>=0;--s)n+=` 2073 k = i32(${e.indicesGet("indices",s)}) - ${Bt("uniforms.pads",s,r)}; 2074 if (k < 0) { 2075 break; 2076 } 2077 if (k >= i32(${Bt("uniforms.x_shape",s,t)})) { 2078 break; 2079 } 2080 offset += k * i32(${Bt("uniforms.x_strides",s,t)}); 2081 `;return` 2082 value = ${e.type.value}(uniforms.constant_value); 2083 for (var i = 0; i < 1; i++) { 2084 var offset = 0; 2085 var k = 0; 2086 ${n} 2087 value = x[offset]; 2088 } 2089 `},Ob=(e,t,r)=>{let n="";for(let s=t-1;s>=0;--s)n+=` 2090 k = i32(${e.indicesGet("indices",s)}) - ${Bt("uniforms.pads",s,r)}; 2091 if (k < 0) { 2092 k = -k; 2093 } 2094 { 2095 let _2n_1 = 2 * (i32(${Bt("uniforms.x_shape",s,t)}) - 1); 2096 k = k % _2n_1; 2097 if(k >= i32(${Bt("uniforms.x_shape",s,t)})) { 2098 k = _2n_1 - k; 2099 } 2100 } 2101 offset += k * i32(${Bt("uniforms.x_strides",s,t)}); 2102 `;return` 2103 var offset = 0; 2104 var k = 0; 2105 ${n} 2106 value = x[offset]; 2107 `},Gb=(e,t,r)=>{let n="";for(let s=t-1;s>=0;--s)n+=` 2108 k = i32(${e.indicesGet("indices",s)}) - ${Bt("uniforms.pads",s,r)}; 2109 if (k < 0) { 2110 k = 0; 2111 } 2112 if (k >= i32(${Bt("uniforms.x_shape",s,t)})) { 2113 k = i32(${Bt("uniforms.x_shape",s,t)}) - 1; 2114 } 2115 offset += k * i32(${Bt("uniforms.x_strides",s,t)}); 2116 `;return` 2117 var offset = 0; 2118 var k = 0; 2119 ${n} 2120 value = x[offset]; 2121 `},zb=(e,t,r)=>{let n="";for(let s=t-1;s>=0;--s)n+=` 2122 k = i32(${e.indicesGet("indices",s)}) - ${Bt("uniforms.pads",s,r)}; 2123 if (k < 0) { 2124 k += i32(${Bt("uniforms.x_shape",s,t)}]); 2125 } 2126 if (k >= i32(${Bt("uniforms.x_shape",s,t)})) { 2127 k -= i32(${Bt("uniforms.x_shape",s,t)}); 2128 } 2129 offset += k * i32(${Bt("uniforms.x_strides",s,t)}); 2130 `;return` 2131 var offset = 0; 2132 var k = 0; 2133 ${n} 2134 value = x[offset]; 2135 `},Fb=(e,t,r)=>{switch(r.mode){case 0:return kb(e,t,r.pads.length);case 1:return Ob(e,t,r.pads.length);case 2:return Gb(e,t,r.pads.length);case 3:return zb(e,t,r.pads.length);default:throw new Error("Invalid mode")}},Lb=(e,t)=>{let r=Te.padShape(e[0].dims.slice(),t.pads),n=e[0].dims,s=Te.size(r),a=[{type:12,data:s},{type:6,data:t.pads}],i=e.length>=3&&e[2].data;t.mode===0&&a.push({type:i?e[2].dataType:1,data:t.value}),a.push(...Dt(e[0].dims,r));let o=["rank"],l=u=>{let p=bt("output",e[0].dataType,r.length),d=Ye("x",e[0].dataType,n.length),c=d.type.value,g=Fb(p,n.length,t),A=[{name:"output_size",type:"u32"},{name:"pads",type:"i32",length:t.pads.length}];return t.mode===0&&A.push({name:"constant_value",type:i?c:"f32"}),` 2136 ${u.registerUniforms(A).declareVariables(d,p)} 2137 ${u.mainStart()} 2138 ${u.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 2139 2140 let indices = ${p.offsetToIndices("global_idx")}; 2141 2142 var value = ${c}(0); 2143 ${g} 2144 output[global_idx] = value; 2145 }`};return{name:"Pad",shaderCache:{hint:`${t.mode}${i}`,inputDependencies:o},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(Te.size(r)/64)},programUniforms:a}),getShaderSource:l}},Rb=(e,t)=>{if(e.length>1){let r=e[1].getBigInt64Array(),n=e.length>=3&&e[2].data?e[2].dataType===10?e[2].getUint16Array()[0]:e[2].getFloat32Array()[0]:0,s=e[0].dims.length,a=new Int32Array(2*s).fill(0);if(e.length>=4){let o=e[3].getBigInt64Array();for(let l=0;l<o.length;l++)a[Number(o[l])]=Number(r[l]),a[Number(o[l])+s]=Number(r[l+o.length])}else r.forEach((o,l)=>a[Number(l)]=Number(o));let i=[];return a.forEach(o=>i.push(o)),{mode:t.mode,value:n,pads:i}}else return t},Yb=(e,t)=>{Sb(e.inputs);let r=Rb(e.inputs,t);e.compute(Lb(e.inputs,r),{inputs:[0]})}}),Cl,Pg,Mg,vg,Bg,Nb,jb,xg,Eg,Ub,Wb,Dg,Vb,Qb,Ig,Hb,Kb,qb,Xb,a4=Je(()=>{Gs(),zt(),Kt(),er(),Cl=e=>{if(jr.webgpu.validateInputContent&&(!e||e.length!==1))throw new Error("Pool ops requires 1 input.")},Pg=(e,t,r)=>{let n=t.format==="NHWC",s=e.dims.slice();n&&s.splice(1,0,s.pop());let a=Object.hasOwnProperty.call(t,"dilations"),i=t.kernelShape.slice(),o=t.strides.slice(),l=a?t.dilations.slice():[],u=t.pads.slice();Ju.adjustPoolAttributes(r,s,i,o,l,u);let p=Ju.computePoolOutputShape(r,s,o,l,i,u,t.autoPad),d=Object.assign({},t);a?Object.assign(d,{kernelShape:i,strides:o,pads:u,dilations:l,cacheKey:t.cacheKey}):Object.assign(d,{kernelShape:i,strides:o,pads:u,cacheKey:t.cacheKey});let c=p.slice();return c.push(c.splice(1,1)[0]),[d,n?c:p]},Mg=(e,t)=>{let r=t.format==="NHWC",n=Te.size(e),s=Te.size(t.kernelShape),a=[{type:12,data:n},{type:12,data:s}],i=[{name:"outputSize",type:"u32"},{name:"kernelSize",type:"u32"}];if(t.kernelShape.length<=2){let o=t.kernelShape[t.kernelShape.length-1],l=t.strides[t.strides.length-1],u=t.pads[t.pads.length/2-1],p=t.pads[t.pads.length-1],d=!!(u+p);a.push({type:12,data:o},{type:12,data:l},{type:12,data:u},{type:12,data:p}),i.push({name:"kw",type:"u32"},{name:"sw",type:"u32"},{name:"pwStart",type:"u32"},{name:"pwEnd",type:"u32"});let c=!1;if(t.kernelShape.length===2){let g=t.kernelShape[t.kernelShape.length-2],A=t.strides[t.strides.length-2],m=t.pads[t.pads.length/2-2],B=t.pads[t.pads.length-2];c=!!(m+B),a.push({type:12,data:g},{type:12,data:A},{type:12,data:m},{type:12,data:B}),i.push({name:"kh",type:"u32"},{name:"sh",type:"u32"},{name:"phStart",type:"u32"},{name:"phEnd",type:"u32"})}return[a,i,!0,d,c]}else{if(r)throw new Error("Pooling with kernelShape.length > 2 is not supported for NHWC format.");let o=Te.computeStrides(t.kernelShape);a.push({type:12,data:o},{type:12,data:t.pads},{type:12,data:t.strides}),i.push({name:"kernelStrides",type:"u32",length:o.length},{name:"pads",type:"u32",length:t.pads.length},{name:"strides",type:"u32",length:t.strides.length});let l=t.pads.reduce((u,p)=>u+p);return[a,i,!!l,!1,!1]}},vg=(e,t,r,n,s,a,i,o,l,u,p,d)=>{let c=s.format==="NHWC",g=t.type.value,A=bt("output",t.type.tensor,n);if(s.kernelShape.length<=2){let m="",B="",f="",h=r-(c?2:1);if(p?m=` 2146 for (var i: u32 = 0u; i < uniforms.kw; i++) { 2147 xIndices[${h}] = indices[${h}] * uniforms.sw - uniforms.pwStart + i; 2148 if (xIndices[${h}] < 0 || xIndices[${h}] 2149 >= uniforms.x_shape[${h}]) { 2150 pad++; 2151 continue; 2152 } 2153 let x_val = x[${t.indicesToOffset("xIndices")}]; 2154 ${a} 2155 }`:m=` 2156 for (var i: u32 = 0u; i < uniforms.kw; i++) { 2157 xIndices[${h}] = indices[${h}] * uniforms.sw - uniforms.pwStart + i; 2158 let x_val = x[${t.indicesToOffset("xIndices")}]; 2159 ${a} 2160 }`,s.kernelShape.length===2){let P=r-(c?3:2);d?B=` 2161 for (var j: u32 = 0u; j < uniforms.kh; j++) { 2162 xIndices[${P}] = indices[${P}] * uniforms.sh - uniforms.phStart + j; 2163 if (xIndices[${P}] < 0 || xIndices[${P}] >= uniforms.x_shape[${P}]) { 2164 pad += i32(uniforms.kw); 2165 continue; 2166 } 2167 `:B=` 2168 for (var j: u32 = 0u; j < uniforms.kh; j++) { 2169 xIndices[${P}] = indices[${P}] * uniforms.sh - uniforms.phStart + j; 2170 `,f=` 2171 } 2172 `}return` 2173 ${e.registerUniforms(l).declareVariables(t,A)} 2174 2175 ${e.mainStart()} 2176 ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} 2177 2178 let indices = ${A.offsetToIndices("global_idx")}; 2179 var xIndices = ${A.offsetToIndices("global_idx")}; 2180 2181 var value = ${g}(${o}); 2182 var pad = 0; 2183 ${B} 2184 ${m} 2185 ${f} 2186 ${i} 2187 2188 output[global_idx] = value; 2189 }`}else{if(c)throw new Error("Pooling with kernelShape.length > 2 is not supported for NHWC format.");let m=s.kernelShape.length,B=s.pads.length,f="";return u?f=` 2190 if (xIndices[j] >= uniforms.x_shape[j]) { 2191 pad++; 2192 isPad = true; 2193 break; 2194 } 2195 } 2196 if (!isPad) { 2197 let x_val = x[${t.indicesToOffset("xIndices")}]; 2198 ${a} 2199 }`:f=` 2200 } 2201 let x_val = x[${t.indicesToOffset("xIndices")}]; 2202 ${a} 2203 `,` 2204 ${e.registerUniforms(l).declareVariables(t,A)} 2205 2206 ${e.mainStart()} 2207 ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} 2208 let indices = ${A.offsetToIndices("global_idx")}; 2209 var xIndices = ${A.offsetToIndices("global_idx")}; 2210 2211 var offsets: array<u32, ${m}>; 2212 2213 var value = ${g}(${o}); 2214 var pad = 0; 2215 var isPad = false;
2216 2217 for (var i: u32 = 0u; i < uniforms.kernelSize; i++) { 2218 var offset = i; 2219 for (var j = 0u; j < ${m-1}u; j++) { 2220 offsets[j] = offset / ${Bt("uniforms.kernelStrides","j",m)}; 2221 offset -= offsets[j] * ${Bt("uniforms.kernelStrides","j",m)}; 2222 } 2223 offsets[${m-1}] = offset; 2224 2225 isPad = false; 2226 for (var j = ${r-m}u; j < ${r}u; j++) { 2227 xIndices[j] = indices[j] * ${Bt("uniforms.strides",`j - ${r-m}u`,m)} 2228 + offsets[j - ${r-m}u] - ${Bt("uniforms.pads","j - 2u",B)}; 2229 ${f} 2230 } 2231 ${i} 2232 2233 output[global_idx] = value; 2234 }`}},Bg=e=>`${e.format};${e.ceilMode};${e.autoPad};${e.kernelShape.length}`,Nb=e=>`${Bg(e)};${e.countIncludePad}`,jb=e=>`${Bg(e)};${e.storageOrder};${e.dilations}`,xg=e=>({format:e.format,autoPad:["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][e.auto_pad],ceilMode:e.ceil_mode,kernelShape:e.kernel_shape,strides:e.strides,pads:e.pads}),Eg=(e,t,r,n)=>{let[s,a]=Pg(t,n,r),i=Ye("x",t.dataType,t.dims.length),o=i.type.value,l="value += x_val;",u="";s.countIncludePad?u+=`value /= ${o}(uniforms.kernelSize);`:u+=`value /= ${o}(i32(uniforms.kernelSize) - pad);`;let[p,d,c,g,A]=Mg(a,s);p.push(...Dt(t.dims,a));let m=["rank"];return{name:e,shaderCache:{hint:`${n.cacheKey};${c};${g};${A}`,inputDependencies:m},getRunData:()=>({outputs:[{dims:a,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(Te.size(a)/64)},programUniforms:p}),getShaderSource:B=>vg(B,i,t.dims.length,a.length,s,l,u,0,d,c,g,A)}},Ub=e=>{let t=e.count_include_pad!==0,r=xg(e);if(r.ceilMode!==0)throw new Error("using ceil() in shape computation is not yet supported for AveragePool");let n={countIncludePad:t,...r,cacheKey:""};return{...n,cacheKey:Nb(n)}},Wb=(e,t)=>{Cl(e.inputs),e.compute(Eg("AveragePool",e.inputs[0],!1,t))},Dg={autoPad:"",ceilMode:0,countIncludePad:!1,kernelShape:[],strides:[],pads:[],storageOrder:0,dilations:[]},Vb=e=>{let t=e.format;return{format:t,...Dg,cacheKey:t}},Qb=(e,t)=>{Cl(e.inputs),e.compute(Eg("GlobalAveragePool",e.inputs[0],!0,t))},Ig=(e,t,r,n)=>{let[s,a]=Pg(t,n,r),i=` 2235 value = max(x_val, value); 2236 `,o="",l=Ye("x",t.dataType,t.dims.length),u=["rank"],[p,d,c,g,A]=Mg(a,s);return p.push(...Dt(t.dims,a)),{name:e,shaderCache:{hint:`${n.cacheKey};${c};${g};${A}`,inputDependencies:u},getRunData:()=>({outputs:[{dims:a,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(Te.size(a)/64)},programUniforms:p}),getShaderSource:m=>vg(m,l,t.dims.length,a.length,s,i,o,t.dataType===10?-65504:-1e5,d,c,g,A)}},Hb=(e,t)=>{Cl(e.inputs),e.compute(Ig("MaxPool",e.inputs[0],!1,t))},Kb=e=>{let t=e.storage_order,r=e.dilations,n=xg(e);if(t!==0)throw new Error("column major storage order is not yet supported for MaxPool");if(n.ceilMode!==0)throw new Error("using ceil() in shape computation is not yet supported for MaxPool");let s={storageOrder:t,dilations:r,...n,cacheKey:""};return{...s,cacheKey:jb(s)}},qb=e=>{let t=e.format;return{format:t,...Dg,cacheKey:t}},Xb=(e,t)=>{Cl(e.inputs),e.compute(Ig("GlobalMaxPool",e.inputs[0],!0,t))}}),Zb,Jb,eP,tP,i4=Je(()=>{zt(),Kt(),an(),er(),Zb=(e,t)=>{if(e.length<2||e.length>3)throw new Error("DequantizeLinear requires 2 or 3 inputs.");if(e.length===3&&e[1].dims===e[2].dims)throw new Error("x-scale and x-zero-point must have the same shape.");if(e.length===3&&e[0].dataType!==e[2].dataType)throw new Error("x and x-zero-point must have the same data type.");if(e[0].dataType===6&&e.length>2)throw new Error("In the case of dequantizing int32 there is no zero point.");if(e[1].dims.length!==0&&e[1].dims.length!==1&&e[1].dims.length!==e[0].dims.length)throw new Error("scale input must be a scalar, a 1D tensor, or have the same rank as the input tensor.");if(e.length>2){if(e[0].dataType!==e[2].dataType)throw new Error("x and x-zero-point must have the same data type.");if(e[1].dims.length!==e[2].dims.length)throw new Error("scale and zero-point inputs must have the same rank.");if(!e[1].dims.map((r,n)=>r===e[2].dims[n]).reduce((r,n)=>r&&n,!0))throw new Error("scale and zero-point inputs must have the same shape.")}if(t.blockSize>0){if(e[1].dims.length===0||e[1].dims.length===1&&e[1].dims[0]===1)throw new Error("blockSize must be set only for block quantization.");
vendor: 8,418 bytes, lines 2236-2326
2236if(!e[1].dims.map((s,a)=>a===t.axis||s===e[0].dims[a]).reduce((s,a)=>s&&a,!0))throw new Error("For block qunatization, scale input shape to match the input shape except for the axis");if(e[1].dims.length!==e[0].dims.length)throw new Error("For block qunatization the scale input rank must be the same as the x rank.");let r=e[0].dims[t.axis],n=e[1].dims[t.axis];if(t.blockSize<Math.ceil(r/n)||t.blockSize>Math.ceil(r/(n-1)-1))throw new Error("blockSize must be with in the range [ceil(dI / Si), ceil(dI / (Si - 1) - 1)].")}},Jb=(e,t)=>{let r=Te.normalizeAxis(t.axis,e[0].dims.length),n=e[0].dataType,s=n===3,a=e[0].dims,i=e[1].dataType,o=Te.size(a),l=n===3||n===2,u=l?[Math.ceil(Te.size(e[0].dims)/4)]:e[0].dims,p=e[1].dims,d=e.length>2?e[2]:void 0,c=d?l?[Math.ceil(Te.size(d.dims)/4)]:d.dims:void 0,g=p.length===0||p.length===1&&p[0]===1,A=g===!1&&p.length===1,m=Jr(o),B=g&&(!l||m===4),f=B?m:1,h=B&&!l?m:1,P=Ye("input",l?12:n,u.length,h),_=Ye("scale",i,p.length),w=d?Ye("zero_point",l?12:n,c.length):void 0,b=bt("output",i,a.length,f),v=[P,_];w&&v.push(w);let y=[u,p];d&&y.push(c);let $=[{type:12,data:o/f},{type:12,data:r},{type:12,data:t.blockSize},...Dt(...y,a)],k=W=>{let j=[{name:"output_size",type:"u32"},{name:"axis",type:"u32"},{name:"block_size",type:"u32"}];return` 2237 ${W.registerUniforms(j).declareVariables(...v,b)} 2238 ${W.mainStart()} 2239 ${W.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 2240 let output_indices = ${b.offsetToIndices("global_idx")}; 2241 2242 // Set input x 2243 ${l?` 2244 let input = ${P.getByOffset("global_idx / 4")}; 2245 let x_vec = ${s?"unpack4xI8(input)":"unpack4xU8(input)"}; 2246 let x_value = ${f===1?"x_vec[global_idx % 4]":"x_vec"};`:`let x_value = ${P.getByOffset("global_idx")};`}; 2247 2248 // Set scale input 2249 ${g?`let scale_value= ${_.getByOffset("0")}`:A?` 2250 let scale_index = ${b.indicesGet("output_indices","uniforms.axis")}; 2251 let scale_value= ${_.getByOffset("scale_index")};`:` 2252 var scale_indices: ${_.type.indices} = output_indices; 2253 let index = ${_.indicesGet("scale_indices","uniforms.axis")} / uniforms.block_size; 2254 ${_.indicesSet("scale_indices","uniforms.axis","index")}; 2255 let scale_value= ${_.getByIndices("scale_indices")};`}; 2256 2257 // Set zero-point input 2258 ${w?g?l?` 2259 let zero_point_input = ${w.getByOffset("0")}; 2260 let zero_point_vec = ${s?"unpack4xI8(zero_point_input)":"unpack4xU8(zero_point_input)"}; 2261 let zero_point_value= zero_point_vec[0]`:`let zero_point_value = ${w.getByOffset("0")}`:A?l?` 2262 let zero_point_index = ${b.indicesGet("output_indices","uniforms.axis")}; 2263 let zero_point_input = ${w.getByOffset("zero_point_index / 4")}; 2264 let zero_point_vec = ${s?"unpack4xI8(zero_point_input)":"unpack4xU8(zero_point_input)"}; 2265 let zero_point_value = zero_point_vec[zero_point_index % 4]`:` 2266 let zero_point_index = ${b.indicesGet("output_indices","uniforms.axis")}; 2267 let zero_point_value = ${w.getByOffset("zero_point_index")};`:l?` 2268 let zero_point_offset = ${_.indicesToOffset("scale_indices")}; 2269 let zero_point_input = ${w.getByOffset("zero_point_offset / 4")}; 2270 let zero_point_vec = ${s?"unpack4xI8(zero_point_input)":"unpack4xU8(zero_point_input)"}; 2271 let zero_point_value = zero_point_vec[zero_point_offset % 4];`:`let zero_point_value = ${w.getByIndices("scale_indices")};`:`let zero_point_value = ${l?s?"i32":"u32":P.type.value}(0);`}; 2272 // Compute and write output 2273 ${b.setByOffset("global_idx",`${b.type.value}(x_value - zero_point_value) * scale_value`)}; 2274 }`};return{name:"DequantizeLinear",shaderCache:{hint:t.cacheKey,inputDependencies:w?["rank","rank","rank"]:["rank","rank"]},getShaderSource:k,getRunData:()=>({outputs:[{dims:a,dataType:i}],dispatchGroup:{x:Math.ceil(o/f/64),y:1,z:1},programUniforms:$})}},eP=(e,t)=>{Zb(e.inputs,t),e.compute(Jb(e.inputs,t))},tP=e=>br({axis:e.axis,blockSize:e.blockSize})}),rP,nP,sP,o4=Je(()=>{Gs(),zt(),er(),rP=(e,t,r)=>{let n=e===t,s=e<t&&r<0,a=e>t&&r>0;if(n||s||a)throw new Error("Range these inputs' contents are invalid.")},nP=(e,t,r,n)=>{let s=Math.abs(Math.ceil((t-e)/r)),a=[s],i=s,o=[{type:12,data:i},{type:n,data:e},{type:n,data:r},...Dt(a)],l=u=>{let p=bt("output",n,a.length),d=p.type.value,c=[{name:"outputSize",type:"u32"},{name:"start",type:d},{name:"delta",type:d}];return` 2275 ${u.registerUniforms(c).declareVariables(p)} 2276 ${u.mainStart()} 2277 ${u.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} 2278 output[global_idx] = uniforms.start + ${d}(global_idx) * uniforms.delta; 2279 }`};return{name:"Range",shaderCache:{hint:`${n}`},getShaderSource:l,getRunData:()=>({outputs:[{dims:a,dataType:n}],dispatchGroup:{x:Math.ceil(i/64)},programUniforms:o})}},sP=e=>{let t=0,r=0,n=0;e.inputs[0].dataType===6?(t=e.inputs[0].getInt32Array()[0],r=e.inputs[1].getInt32Array()[0],n=e.inputs[2].getInt32Array()[0]):e.inputs[0].dataType===1&&(t=e.inputs[0].getFloat32Array()[0],r=e.inputs[1].getFloat32Array()[0],n=e.inputs[2].getFloat32Array()[0]),jr.webgpu.validateInputContent&&rP(t,r,n),e.compute(nP(t,r,n,e.inputs[0].dataType),{inputs:[]})}}),aP,Tg,Cg,iP,oP,lP,l4=Je(()=>{zt(),Kt(),an(),er(),aP=(e,t,r,n)=>{if(e!=="none"&&n!=="i32"&&n!=="u32"&&n!=="f32")throw new Error(`Input ${n} is not supported with reduction ${e}.`);let s=`{ 2280 var oldValue = 0; 2281 loop { 2282 let newValueF32 =`,a=`; 2283 let newValue = bitcast<i32>(newValueF32); 2284 let res = atomicCompareExchangeWeak(&${t}, oldValue, newValue); 2285 if res.exchanged { 2286 break; 2287 } 2288 oldValue = res.old_value; 2289 } 2290 }`;switch(e){case"none":return`${t}=${r};`;case"add":return n==="i32"||n==="u32"?`atomicAdd(&${t}, bitcast<${n}>(${r}));`:` 2291 ${s}bitcast<${n}>(oldValue) + (${r})${a}`;case"max":return n==="i32"||n==="u32"?`atomicMax(&${t}, bitcast<${n}>(${r}));`:` 2292 ${s}max(bitcast<f32>(oldValue), (${r}))${a}`;case"min":return n==="i32"||n==="u32"?`atomicMin(&${t}, bitcast<${n}>(${r}));`:`${s}min(bitcast<${n}>(oldValue), (${r}))${a}`;case"mul":return`${s}(bitcast<${n}>(oldValue) * (${r}))${a}`;default:throw new Error(`Reduction ${e} is not supported.`)}},Tg=(e,t)=>`${e===1?` 2293 let element_count_dim = uniforms.output_strides; 2294 let dim_value = uniforms.output_shape;`:` 2295 let element_count_dim = uniforms.output_strides[${t?"i - indices_start":"i"}]; 2296 let dim_value = uniforms.output_shape[${t?"i - indices_start":"i"} + uniforms.last_index_dimension];`} 2297 2298 if (index >= 0) { 2299 if (index >= i32(dim_value)) { 2300 index = i32(dim_value - 1); 2301 } 2302 } else { 2303 if (index < -i32(dim_value)) { 2304 index = 0; 2305 } else { 2306 index += i32(dim_value); 2307 } 2308 } 2309 data_offset += u32((u32(index) * element_count_dim));`,Cg=(e,t,r)=>`for (var i = 0u; i < uniforms.num_updates_elements; i++) { 2310 let value = updates[uniforms.num_updates_elements * ${r?"global_idx":"idx"} + i]; 2311 ${aP(e.reduction,"output[data_offset + i]","value",t)} 2312 }`,iP=(e,t)=>{let r=e[0].dims,n=e[1].dims,s=r,a=1,i=Math.ceil(Te.size(n)/a),o=n[n.length-1],l=Te.sizeFromDimension(r,o),u=Te.sizeFromDimension(n,0)/o,p=[{type:12,data:i},{type:12,data:o},{type:12,data:l},...Dt(e[1].dims,e[2].dims,s)],d=c=>{let g=Ye("indices",e[1].dataType,e[1].dims.length),A=Ye("updates",e[2].dataType,e[2].dims.length,a),m=t.reduction!=="none"&&t.reduction!==""?A_("output",e[0].dataType,s.length):bt("output",e[0].dataType,s.length,a);return` 2313 ${c.registerUniform("output_size","u32").registerUniform("last_index_dimension","u32").registerUniform("num_updates_elements","u32").declareVariables(g,A,m)} 2314 ${c.mainStart()} 2315 ${c.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 2316 var hasDuplicates = false; 2317 if (${t.reduction==="none"}) { 2318 for (var i = 0; i < ${u}; i = i + 1) { 2319 for (var j = i + 1; j < ${u}; j = j + 1) { 2320 var index_i = i32(indices[i].x); 2321 var index_j = i32(indices[j].x); 2322 if (index_i == index_j) { 2323 hasDuplicates = true; 2324 break; 2325 } 2326 }
2327 if (hasDuplicates) { 2328 break; 2329 } 2330 } 2331 } 2332 2333 if (${t.reduction==="none"} && hasDuplicates) { 2334 if (global_idx != 0u) { 2335 return; 2336 } 2337 // Process each index-update pair individually when duplicates exist 2338 for (var idx = 0u; idx < ${u}u; idx++) { 2339 var data_offset = 0u; 2340 for (var i = 0u; i < uniforms.last_index_dimension; i++) { 2341 var index = i32(indices[idx * uniforms.last_index_dimension + i].x); 2342 ${Tg(r.length,!1)} 2343 } 2344 ${Cg(t,m.type.value,!1)} 2345 } 2346 return; 2347 } 2348 2349 var data_offset = 0u; 2350 var indices_start = uniforms.last_index_dimension * global_idx; 2351 var indices_end = indices_start + uniforms.last_index_dimension; 2352 for (var i = indices_start; i < indices_end; i++) { 2353 var index = i32(indices[i].x); 2354 ${Tg(r.length,!0)} 2355 } 2356 ${Cg(t,m.type.value,!0)} 2357 }`};return{name:"ScatterND",shaderCache:{hint:`${t.cacheKey}_${t.reduction}`,inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:s,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(i/64)},programUniforms:p}),getShaderSource:d}},oP=e=>br({reduction:e.reduction}),lP=(e,t)=>{e.compute(iP(e.inputs,t),{inputs:[e.inputs[1],e.inputs[2]],outputs:[]})}}),uP,cP,dP,$g,pP,gP,AP,hP,mP,fP,_P,wP,Sg,yP,bP,PP,MP,vP,BP,xP,u4=Je(()=>{zt(),Kt(),an(),er(),uP=(e,t)=>{if(e.every(r=>r>0||(()=>{throw new Error("Resize requires scales input values to be positive")})),e.length>0){if(t.mode==="linear"){if(!(e.length===2||e.length===3||e.length===4&&e[0]===1&&e[1]===1||e.length===4&&e[0]===1&&e[3]===1||e.length===5&&e[0]===1&&e[1]===1))throw new Error(`For linear mode, Resize requires scales to be 2D, 3D, 4D with either two outermost or one innermost and 2358 one outermost scale values equal to 1, or 5D with two outermost scale values equal to 1`)}else if(t.mode==="cubic"&&!(e.length===2||e.length===4&&e[0]===1&&e[1]===1||e.length===4&&e[0]===1&&e[3]===1))throw new Error("Resize requires scales input size to be 2 or 4 for cubic mode")}},cP=(e,t,r)=>{t.every(s=>s>=0&&s<r||(()=>{throw new Error("Resize requires axes input values to be positive and less than rank")}));let n=new Array(r).fill(1);return t.forEach((s,a)=>n[s]=e[a]),n},dP=(e,t,r,n,s,a)=>{let[i,o,l]=r>10?[1,2,3]:[-1,e.length>1?1:-1,-1],u=e[0].dims.length;if(i>0&&e.length>i&&e[i].dims.length>0)e[i].getFloat32Array().forEach(p=>a.push(p));else if(t.coordinateTransformMode==="tf_crop_and_resize")throw new Error("Resize requires RoI input to be specified when coordinateTransformMode is tfCropAndResize");if(o>0&&e.length>o&&e[o].dims.length===1&&e[o].dims[0]>0){if(e[o].getFloat32Array().forEach(p=>n.push(p)),n.length!==0&&n.length!==u&&r>=18&&n.length!==t.axes.length)throw new Error("Resize requires scales input size to be same as input rank or axes size for opset 18 and up");uP(n,t),t.axes.length>0&&cP(n,t.axes,u).forEach((p,d)=>n[d]=p)}if(l>0&&e.length>l&&e[l].dims.length===1&&e[l].dims[0]>0&&(e[l].getBigInt64Array().forEach(p=>s.push(Number(p))),s.length!==0&&s.length!==u&&r>=18&&s.length!==t.axes.length))throw new Error("Resize requires sizes input size to be same as input rank or axes size for opset 18 and up");if(t.axes.length>0){if(n.length!==0&&n.length!==t.axes.length)throw new Error('Resize requires "scales" input size to be of axes rank when axes attributes is specified');if(s.length!==0&&s.length!==t.axes.length)throw new Error('Resize requires "sizes" input size to be of rank axes rank when axes attributes is specified')}if(typeof n<"u"&&typeof s<"u"&&n.length>0&&s.length>u)throw new Error("Resize requires only of scales or sizes to be specified")},$g=(e,t,r,n)=>` 2359 // The whole part and the fractional part are calculated separately due to inaccuracy of floating 2360 // point division. As an example, f32(21) / f32(7) may evaluate to 2.99... instead of 3, causing an 2361 // offset-by-one error later in floor(). 2362 let big = (${e}) * (${t}); 2363 let whole = ${n}(big / (${r})); 2364 let fract = ${n}(big % (${r})) / ${n}(${r}); 2365 return whole + fract; 2366`,pP=(e,t)=>
vendor: 5,121 bytes, lines 2366-2414
2366`fn getOriginalCoordinateFromResizedCoordinate(xResized: u32, xScale: f32, lengthResized: u32, 2367 lengthOriginal: u32, roiStart: f32, roiEnd: f32) -> ${t} { `+(()=>{switch(e){case"asymmetric":return` 2368 if (xScale < 1.0 || floor(xScale) != xScale) { 2369 return ${t}(xResized) / ${t}(xScale); 2370 } else { 2371 ${$g("xResized","lengthOriginal","lengthResized",t)} 2372 } 2373 `;case"pytorch_half_pixel":return`if (lengthResized > 1) { 2374 return (${t}(xResized) + 0.5) / ${t}(xScale) - 0.5; 2375 } else { 2376 return 0.0; 2377 }`;case"tf_half_pixel_for_nn":return`return (${t}(xResized) + 0.5) / ${t}(xScale);`;case"align_corners":return`if (lengthResized == 1) { 2378 return 0.0; 2379 } else { 2380 ${$g("xResized","lengthOriginal - 1","lengthResized - 1",t)} 2381 }`;case"tf_crop_and_resize":return`if (lengthResized > 1) { 2382 return ${t}(roiStart) * ${t}(lengthOriginal - 1) + 2383 (${t}(xResized) * ${t}(roiEnd - roiStart) * ${t}(lengthOriginal - 1)) / 2384 ${t}(lengthResized - 1); 2385 } else { 2386 return 0.5 * ${t}(roiStart + roiEnd) * ${t}(lengthOriginal - 1); 2387 }`;case"half_pixel_symmetric":return`const outputWidth = ${t}xScale * ${t}(lengthResized); 2388 const adjustment = ${t}(lengthResized) / outputWidth; 2389 const center = ${t}(lengthOriginal) / 2; 2390 const offset = center * (1 - adjustment); 2391 return offset + ((${t}(xResized) + 0.5) / ${t}(xScale)) - 0.5;`;case"half_pixel":return`return ((${t}(xResized) + 0.5) / ${t}(xScale)) - 0.5;`;default:throw new Error(`Coordinate transform mode ${e} is not supported`)}})()+"}",gP=(e,t,r)=>`fn getNearestPixelFromOriginal(xOriginal: ${r}, isDownSample: bool) -> ${r} {`+(()=>{switch(e){case"round_prefer_ceil":return"if (fract(xOriginal) == 0.5) { return ceil(xOriginal); } else { return round(xOriginal); }";case"floor":return"return floor(xOriginal);";case"ceil":return"return ceil(xOriginal);";case"round_prefer_floor":return"if (fract(xOriginal) == 0.5) { return floor(xOriginal); } else { return round(xOriginal); }";default:if(t<11)return"if (isDownSample) { return ceil(xOriginal); } else { return xOriginal; }";throw new Error(`Nearest mode ${e} is not supported`)}})()+"}",AP=(e,t,r)=>{let n=new Array(r).fill(0).concat(new Array(r).fill(1)),s=e.length===0?n:e.slice();return t.length>0?(t.forEach((a,i)=>{n[a]=s[i],n[i+r]=s[t.length+i]}),n):s},hP=(e,t,r,n)=>{let s=[];if(r.length>0)if(n.length>0){if(e.forEach(a=>s.push(a)),Math.max(...n)>e.length)throw new Error("axes is out of bound");n.forEach((a,i)=>s[a]=r[i])}else r.forEach(a=>s.push(a));else{if(t.length===0)throw new Error("Resize requires either scales or sizes.");s=e.map((a,i)=>Math.round(a*t[i]))}return s},mP=(e,t,r)=>{let n=(()=>{switch(r.keepAspectRatioPolicy){case"not_larger":return r.axes.length>0?Math.min(...r.axes.map(a=>t[a]),Number.MAX_VALUE):Math.min(...t,Number.MAX_VALUE);case"not_smaller":return r.axes.length>0?Math.max(...r.axes.map(a=>t[a]),Number.MIN_VALUE):Math.max(...t,Number.MIN_VALUE);default:throw new Error(`Keep aspect ratio policy ${r.keepAspectRatioPolicy} is not supported`)}})();t.fill(1,0,t.length);let s=e.slice();return r.axes.length>0?(r.axes.forEach(a=>t[a]=n),r.axes.forEach(a=>s[a]=Math.round(e[a]*t[a]))):(t.fill(n,0,t.length),s.forEach((a,i)=>s[i]=Math.round(a*t[i]))),s},fP=(e,t,r,n,s)=>` 2392 fn calculateOriginalIndicesFromOutputIndices(output_indices: ${e.type.indices}) -> array<${e.type.value}, ${r.length}> { 2393 var original_indices: array<${e.type.value}, ${r.length}>; 2394 for (var i:u32 = 0; i < ${r.length}; i++) { 2395 var output_index = ${e.indicesGet("output_indices","i")}; 2396 var scale = ${Bt("uniforms.scales","i",n)}; 2397 var roi_low = ${Bt("uniforms.roi","i",s)}; 2398 var roi_hi = ${Bt("uniforms.roi",`i + ${t.length}`,s)}; 2399 if (scale == 1.0) { 2400 original_indices[i] = ${e.type.value}(output_index); 2401 } else { 2402 var input_shape_i = ${Bt("uniforms.input_shape","i",t.length)}; 2403 var output_shape_i = ${Bt("uniforms.output_shape","i",r.length)}; 2404 original_indices[i] = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i, 2405 input_shape_i, roi_low, roi_hi); 2406 } 2407 } 2408 return original_indices; 2409 }`,_P=(e,t,r,n,s,a,i)=>` 2410 fn calculateInputIndicesFromOutputIndices(output_indices: ${t.type.indices}) -> ${e.type.indices} { 2411 var input_indices: ${e.type.indices}; 2412 for (var i:u32 = 0; i < ${n.length}; i++) { 2413 var output_index = ${t.indicesGet("output_indices","i")}; 2414 var input_index: u32;
2415 var scale = ${Bt("uniforms.scales","i",s)}; 2416 if (scale == 1.0) { 2417 input_index = output_index; 2418 } else { 2419 var roi_low = ${Bt("uniforms.roi","i",a)}; 2420 var roi_hi = ${Bt("uniforms.roi",`i + ${r.length}`,a)}; 2421 var input_shape_i = ${Bt("uniforms.input_shape","i",r.length)}; 2422 var output_shape_i = ${Bt("uniforms.output_shape","i",n.length)}; 2423 var original_idx = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i, 2424 input_shape_i, roi_low, roi_hi); 2425 if (!${i} || (original_idx >= 0 && original_idx < ${t.type.value}(input_shape_i))) { 2426 if (original_idx < 0) { 2427 input_index = 0; 2428 } else if (original_idx > ${t.type.value}(input_shape_i - 1)) { 2429 input_index = input_shape_i - 1; 2430 } else { 2431 input_index = u32(getNearestPixelFromOriginal(original_idx, scale < 1)); 2432 } 2433 } else { 2434 input_index = u32(original_idx); 2435 } 2436 } 2437 ${e.indicesSet("input_indices","i","input_index")} 2438 } 2439 return input_indices; 2440 }`,wP=(e,t)=>` 2441 fn checkInputIndices(input_indices: ${e.type.indices}) -> bool { 2442 for (var i:u32 = 0; i < ${t.length}; i++) { 2443 var input_index = ${e.indicesGet("input_indices","i")}; 2444 if (input_index < 0 || input_index >= ${Bt("uniforms.input_shape","i",t.length)}) { 2445 return false; 2446 } 2447 } 2448 return true; 2449 }`,Sg=(e,t,r,n)=>e.rank>n?` 2450 ${e.indicesSet("input_indices",t,"channel")}; 2451 ${e.indicesSet("input_indices",r,"batch")};
2452`:"",yP=(e,t,r,n,s)=>{let[a,i,o,l]=r.length===2?[-1,0,1,-1]:[0,2,3,1],u=e.type.value;return` 2453 fn getInputValue(batch: u32, channel: u32, row: u32, col: u32) -> ${u} { 2454 var input_indices: ${e.type.indices}; 2455 ${e.indicesSet("input_indices",i,`max(0, min(row, ${r[i]} - 1))`)}; 2456 ${e.indicesSet("input_indices",o,`max(0, min(col, ${r[o]} - 1))`)}; 2457 ${Sg(e,l,a,2)} 2458 return ${e.getByIndices("input_indices")}; 2459 } 2460 2461 fn bilinearInterpolation(output_indices: ${t.type.indices}) -> ${u} { 2462 var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices); 2463 var row:${u} = originalIndices[${i}]; 2464 var col:${u} = originalIndices[${o}]; 2465 ${n?`if (row < 0 || row > (${r[i]} - 1) || col < 0 || col > (${r[o]} - 1)) { 2466 return ${s}; 2467 }`:""}; 2468 row = max(0, min(row, ${r[i]} - 1)); 2469 col = max(0, min(col, ${r[o]} - 1)); 2470 var row1: u32 = u32(row); 2471 var col1: u32 = u32(col); 2472 var row2: u32 = u32(row + 1); 2473 var col2: u32 = u32(col + 1); 2474 var channel: u32 = ${r.length>2?`u32(originalIndices[${l}])`:"0"}; 2475 var batch: u32 = ${r.length>2?`u32(originalIndices[${a}])`:"0"}; 2476 var x11: ${u} = getInputValue(batch, channel, row1, col1); 2477 var x12: ${u} = getInputValue(batch, channel, row1, col2); 2478 var x21: ${u} = getInputValue(batch, channel, row2, col1); 2479 var x22: ${u} = getInputValue(batch, channel, row2, col2); 2480 var dx1: ${u} = abs(row - ${u}(row1)); 2481 var dx2: ${u} = abs(${u}(row2) - row); 2482 var dy1: ${u} = abs(col - ${u}(col1)); 2483 var dy2: ${u} = abs(${u}(col2) - col); 2484 if (row1 == row2) { 2485 dx1 = 0.5; 2486 dx2 = 0.5; 2487 } 2488 if (col1 == col2) { 2489 dy1 = 0.5; 2490 dy2 = 0.5; 2491 } 2492 return (x11 * dx2 * dy2 + x12 * dx2 * dy1 + x21 * dx1 * dy2 + x22 * dx1 * dy1); 2493 }`},bP=(e,t,r,n,s,a,i,o,l,u)=>{let p=r.length===2,[d,c]=p?[0,1]:[2,3],g=e.type.value,A=m=>{let B=m===d?"row":"col";return` 2494 fn ${B}CubicInterpolation(input_indices: ${e.type.indices}, output_indices: ${t.type.indices}) -> ${g} { 2495 var output_index = ${t.indicesGet("output_indices",m)}; 2496 var originalIdx: ${g} = getOriginalCoordinateFromResizedCoordinate(output_index, ${s[m]}, 2497 ${n[m]}, ${r[m]}, ${a[m]}, ${a[m]} + ${r.length}); 2498 var fractOriginalIdx: ${g} = originalIdx - floor(originalIdx); 2499 var coefs = getCubicInterpolationCoefs(fractOriginalIdx); 2500 2501 if (${o} && (originalIdx < 0 || originalIdx > (${r[m]} - 1))) { 2502 return ${l}; 2503 } 2504 var data: array<${g}, 4> = array<${g}, 4>(0.0, 0.0, 0.0, 0.0); 2505 for (var i: i32 = -1; i < 3; i++) { 2506 var ${B}: ${g} = originalIdx + ${g}(i); 2507 if (${B} < 0 || ${B} >= ${r[m]}) { 2508 ${u?`coefs[i + 1] = 0.0; 2509 continue;`:o?`return ${l};`:`${B} = max(0, min(${B}, ${r[m]} - 1));`}; 2510 } 2511 var input_indices_copy: ${e.type.indices} = input_indices; 2512 ${e.indicesSet("input_indices_copy",m,`u32(${B})`)}; 2513 data[i + 1] = ${m===d?e.getByIndices("input_indices_copy"):"rowCubicInterpolation(input_indices_copy, output_indices)"}; 2514 } 2515 return cubicInterpolation1D(data, coefs); 2516 }`};return` 2517 ${A(d)}; 2518 ${A(c)}; 2519 fn getCubicInterpolationCoefs(s: ${g}) -> array<${g}, 4> { 2520 var absS = abs(s); 2521 var coeffs: array<${g}, 4> = array<${g}, 4>(0.0, 0.0, 0.0, 0.0); 2522 var oneMinusAbsS: ${g} = 1.0 - absS; 2523 var twoMinusAbsS: ${g} = 2.0 - absS; 2524 var onePlusAbsS: ${g} = 1.0 + absS; 2525 coeffs[0] = ((${i} * onePlusAbsS - 5 * ${i}) * onePlusAbsS + 8 * ${i}) * onePlusAbsS - 4 * ${i}; 2526 coeffs[1] = ((${i} + 2) * absS - (${i} + 3)) * absS * absS + 1; 2527 coeffs[2] = ((${i} + 2) * oneMinusAbsS - (${i} + 3)) * oneMinusAbsS * oneMinusAbsS + 1; 2528 coeffs[3] = ((${i} * twoMinusAbsS - 5 * ${i}) * twoMinusAbsS + 8 * ${i}) * twoMinusAbsS - 4 * ${i}; 2529 return coeffs; 2530 } 2531 2532 fn cubicInterpolation1D(x: array<${g}, 4>, coefs: array<${g}, 4>) -> ${g} { 2533 var coefsSum: ${g} = coefs[0] + coefs[1] + coefs[2] + coefs[3]; 2534 return (x[0] * coefs[0] + x[1] * coefs[1]+ x[2] * coefs[2]+ x[3] * coefs[3]) / coefsSum; 2535 } 2536 2537 fn bicubicInterpolation(output_indices: ${t.type.indices}) -> ${g} { 2538 var input_indices: ${e.type.indices} = output_indices; 2539 return colCubicInterpolation(input_indices, output_indices); 2540 } 2541 `},PP=(e,t,r,n,s)=>{let[a,i,o,l,u]=r.length===3?[-1,0,1,2,-1]:[0,2,3,4,1],p=e.type.value;return` 2542 fn getInputValue(batch: u32, channel: u32, depth:u32, height: u32, width: u32) -> ${p} { 2543 var input_indices: ${e.type.indices};
2544 ${e.indicesSet("input_indices",i,`max(0, min(depth, ${r[i]} - 1))`)}; 2545 ${e.indicesSet("input_indices",o,`max(0, min(height, ${r[o]} - 1))`)}; 2546 ${e.indicesSet("input_indices",l,`max(0, min(width, ${r[l]} - 1))`)}; 2547 ${Sg(e,u,a,3)} 2548 return ${e.getByIndices("input_indices")}; 2549 } 2550 2551 fn trilinearInterpolation(output_indices: ${t.type.indices}) -> ${p} { 2552 var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices); 2553 var depth:${p} = originalIndices[${i}]; 2554 var height:${p} = originalIndices[${o}]; 2555 var width:${p} = originalIndices[${l}]; 2556 ${n?`if (depth < 0 || depth > (${r[i]} - 1) || height < 0 || height > (${r[o]} - 1) || width < 0 || (width > ${r[l]} - 1)) { 2557 return ${s}; 2558 }`:""}; 2559 2560 depth = max(0, min(depth, ${r[i]} - 1)); 2561 height = max(0, min(height, ${r[o]} - 1)); 2562 width = max(0, min(width, ${r[l]} - 1)); 2563 var depth1: u32 = u32(depth); 2564 var height1: u32 = u32(height); 2565 var width1: u32 = u32(width); 2566 var depth2: u32 = u32(depth + 1); 2567 var height2: u32 = u32(height + 1); 2568 var width2: u32 = u32(width + 1); 2569 var channel: u32 = ${r.length>3?`u32(originalIndices[${u}])`:"0"}; 2570 var batch: u32 = ${r.length>3?`u32(originalIndices[${a}])`:"0"}; 2571 2572 var x111: ${p} = getInputValue(batch, channel, depth1, height1, width1); 2573 var x112: ${p} = getInputValue(batch, channel, depth1, height1, width2); 2574 var x121: ${p} = getInputValue(batch, channel, depth1, height2, width1); 2575 var x122: ${p} = getInputValue(batch, channel, depth1, height2, width2); 2576 var x211: ${p} = getInputValue(batch, channel, depth2, height1, width1); 2577 var x212: ${p} = getInputValue(batch, channel, depth2, height1, width2); 2578 var x221: ${p} = getInputValue(batch, channel, depth2, height2, width1); 2579 var x222: ${p} = getInputValue(batch, channel, depth2, height2, width2); 2580 var dx1: ${p} = abs(depth - ${p}(depth1)); 2581 var dx2: ${p} = abs(${p}(depth2) - depth); 2582 var dy1: ${p} = abs(height - ${p}(height1)); 2583 var dy2: ${p} = abs(${p}(height2) - height); 2584 var dz1: ${p} = abs(width - ${p}(width1)); 2585 var dz2: ${p} = abs(${p}(width2) - width); 2586 if (depth1 == depth2) { 2587 dx1 = 0.5; 2588 dx2 = 0.5; 2589 } 2590 if (height1 == height2) { 2591 dy1 = 0.5; 2592 dy2 = 0.5; 2593 } 2594 if (width1 == width2) { 2595 dz1 = 0.5; 2596 dz2 = 0.5; 2597 } 2598 return (x111 * dx2 * dy2 * dz2 + x112 * dx2 * dy2 * dz1 + x121 * dx2 * dy1 *dz2 + x122 * dx2 * dy1 * dz1 + 2599 x211 * dx1 * dy2 * dz2 + x212 * dx1 * dy2 * dz1 + x221 * dx1 * dy1 *dz2 + x222 * dx1 * dy1 * dz1); 2600 }`},MP=(e,t,r,n,s,a)=>{let i=e.dims,o=AP(a,t.axes,i.length),l=hP(i,n,s,t.axes),u=n.slice();n.length===0&&(u=i.map((h,P)=>h===0?1:l[P]/h),t.keepAspectRatioPolicy!=="stretch"&&(l=mP(i,u,t)));let p=bt("output",e.dataType,l.length),d=Ye("input",e.dataType,i.length),c=Te.size(l),g=i.length===l.length&&i.every((h,P)=>h===l[P]),A=t.coordinateTransformMode==="tf_crop_and_resize",m=t.extrapolationValue,B=d.type.value,f=h=>` 2601 ${g?"":` 2602 ${pP(t.coordinateTransformMode,B)}; 2603 ${(()=>{switch(t.mode){case"nearest":return` 2604 ${wP(d,i)}; 2605 ${gP(t.nearestMode,r,B)}; 2606 ${_P(d,p,i,l,u.length,o.length,A)}; 2607 `;case"linear":return` 2608 ${fP(p,i,l,u.length,o.length)}; 2609 ${(()=>{if(i.length===2||i.length===4)return`${yP(d,p,i,A,m)}`;if(i.length===3||i.length===5)return`${PP(d,p,i,A,m)}`;throw Error("Linear mode only supports input dims 2, 3, 4 and 5 are supported in linear mode.")})()}; 2610 `;case"cubic":return` 2611 ${(()=>{if(i.length===2||i.length===4)return`${bP(d,p,i,l,u,o,t.cubicCoeffA,A,t.extrapolationValue,t.excludeOutside)}`;throw Error("Cubic mode only supports input dims 2 and 4 are supported in linear mode.")})()}; 2612 `;default:throw Error("Invalid resize mode")}})()}; 2613 `} 2614 ${h.registerUniform("output_size","u32").registerUniform("scales","f32",u.length).registerUniform("roi","f32",o.length).declareVariables(d,p)} 2615 ${h.mainStart()} 2616 ${h.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 2617 ${g?"output[global_idx] = input[global_idx];":` 2618 let output_indices = ${p.offsetToIndices("global_idx")}; 2619 var input_indices: ${d.type.indices}; 2620 ${(()=>{switch(t.mode){case"nearest":return`input_indices = calculateInputIndicesFromOutputIndices(output_indices); 2621 if (checkInputIndices(input_indices)) { 2622 output[global_idx] = ${d.getByIndices("input_indices")}; 2623 } else { 2624 output[global_idx] = ${t.extrapolationValue}; 2625 }`;case"linear":return`output[global_idx] = ${i.length===2||i.length===4?"bilinearInterpolation":"trilinearInterpolation"}(output_indices);`;case"cubic":return"output[global_idx] = bicubicInterpolation(output_indices);";default:throw Error(`Unsupported resize mode: ${t.mode}`)}})()}; 2626`} 2627 }`;
vendor: 18,403 bytes, lines 2627-2819
2627return{name:"Resize",shaderCache:{hint:`${t.cacheKey}|${r}|${u.length>0?t.mode==="cubic"?u:u.length:""}|${s.length>0?s:""}|${o.length>0?o:""}|${g}|${t.mode==="nearest"?i.length:i}`,inputDependencies:["rank"]},getShaderSource:f,getRunData:()=>({outputs:[{dims:l,dataType:e.dataType}],dispatchGroup:{x:Math.ceil(c/64)},programUniforms:[{type:12,data:c},{type:1,data:u},{type:1,data:o},...Dt(i,l)]})}},vP=e=>{let t=e.customDataBuffer;return new Uint32Array(t,t.byteOffset,1)[0]},BP=(e,t)=>{let r=[],n=[],s=[],a=vP(e);if(t.antialias!==0)throw Error("Only default value (0) for Antialias attribute is supported");dP(e.inputs,t,a,r,n,s),e.compute(MP(e.inputs[0],t,a,r,n,s),{inputs:[0]})},xP=e=>{let t=e.antialias,r=e.axes,n=e.coordinateTransformMode,s=e.cubicCoeffA,a=e.excludeOutside!==0,i=e.extrapolationValue,o=e.keepAspectRatioPolicy,l=e.mode,u=e.nearestMode===""?"simple":e.nearestMode;return br({antialias:t,axes:r,coordinateTransformMode:n,cubicCoeffA:s,excludeOutside:a,extrapolationValue:i,keepAspectRatioPolicy:o,mode:l,nearestMode:u})}}),EP,DP,IP,c4=Je(()=>{zt(),Kt(),er(),EP=e=>{if(!e||e.length<3)throw new Error("layerNorm requires at least 3 inputs.");let t=e[0],r=e[1],n=e[2];if(t.dataType!==r.dataType||t.dataType!==n.dataType)throw new Error("All inputs must have the same data type");if(t.dims.length!==3&&t.dims.length!==2)throw new Error("Input must be 2D or 3D");if(r.dims.length!==3&&r.dims.length!==2)throw new Error("Skip must be 2D or 3D");let s=t.dims[t.dims.length-1],a=t.dims[t.dims.length-2];if(r.dims[r.dims.length-1]!==s)throw new Error("Skip must have the same hidden size as input");if(r.dims[r.dims.length-2]!==a)throw new Error("Skip must have the same sequence length as input");if(n.dims.length!==1)throw new Error("Gamma must be 1D");if(n.dims[n.dims.length-1]!==s)throw new Error("Gamma must have the same hidden size as input");if(e.length>3){let i=e[3];if(i.dims.length!==1)throw new Error("Beta must be 1D");if(i.dims[i.dims.length-1]!==s)throw new Error("Beta must have the same hidden size as input")}if(e.length>4){let i=e[4];if(i.dims.length!==1)throw new Error("Bias must be 1D");if(i.dims[i.dims.length-1]!==s)throw new Error("Bias must have the same hidden size as input")}},DP=(e,t,r,n)=>{let s=t.simplified,a=e[0].dims,i=Te.size(a),o=a,l=i,u=a.slice(-1)[0],p=n?a.slice(0,-1).concat(1):[],d=!s&&e.length>3,c=e.length>4,g=n&&r>1,A=n&&r>2,m=r>3,B=64,f=Jr(u),h=[{type:12,data:l},{type:12,data:f},{type:12,data:u},{type:1,data:t.epsilon}],P=w=>{let b=[{name:"output_size",type:"u32"},{name:"components",type:"u32"},{name:"hidden_size",type:"u32"},{name:"epsilon",type:"f32"}],v=[Ye("x",e[0].dataType,e[0].dims,f),Ye("skip",e[1].dataType,e[1].dims,f),Ye("gamma",e[2].dataType,e[2].dims,f)];d&&v.push(Ye("beta",e[3].dataType,e[3].dims,f)),c&&v.push(Ye("bias",e[4].dataType,e[4].dims,f)),v.push(bt("output",e[0].dataType,o,f)),g&&v.push(bt("mean_output",1,p)),A&&v.push(bt("inv_std_output",1,p)),m&&v.push(bt("input_skip_bias_sum",e[0].dataType,o,f));let y=vn(e[0].dataType),$=vn(1,f);return` 2628 2629 ${w.registerUniforms(b).declareVariables(...v)} 2630 var<workgroup> sum_shared : array<${$}, ${B}>; 2631 var<workgroup> sum_squared_shared : array<${$}, ${B}>; 2632 2633 ${w.mainStart([B,1,1])} 2634 let ix = local_id.x; 2635 let iy = global_id.x / ${B}; 2636 2637 let hidden_size_vectorized: u32 = uniforms.hidden_size / uniforms.components; 2638 var stride = hidden_size_vectorized / ${B}; 2639 let offset = ix * stride + iy * hidden_size_vectorized; 2640 let offset1d = stride * ix; 2641 if (ix == ${B-1}) { 2642 stride = hidden_size_vectorized - stride * ix; 2643 } 2644 for (var i: u32 = 0; i < stride; i++) { 2645 let skip_value = skip[offset + i]; 2646 let bias_value = ${c?"bias[offset1d + i]":y+"(0.0)"}; 2647 let input_value = x[offset + i]; 2648 let value = input_value + skip_value + bias_value; 2649 ${m?"input_skip_bias_sum[offset + i] = value;":""} 2650 output[offset + i] = value; 2651 let f32_value = ${Do(y,f,"value")}; 2652 sum_shared[ix] += f32_value; 2653 sum_squared_shared[ix] += f32_value * f32_value; 2654 } 2655 workgroupBarrier(); 2656 2657 var reduce_size : u32 = ${B}; 2658 for (var curr_size = reduce_size >> 1; curr_size > 0; curr_size = reduce_size >> 1) { 2659 reduce_size = curr_size + (reduce_size & 1); 2660 if (ix < curr_size) { 2661 sum_shared[ix] += sum_shared[ix + reduce_size]; 2662 sum_squared_shared[ix] += sum_squared_shared[ix + reduce_size]; 2663 } 2664 workgroupBarrier(); 2665 } 2666 2667 let sum = sum_shared[0]; 2668 let square_sum = sum_squared_shared[0]; 2669 let mean = ${Wa("sum",f)} / f32(uniforms.hidden_size); 2670 let inv_std_dev = inverseSqrt(${Wa("square_sum",f)} / f32(uniforms.hidden_size) ${s?"":"- mean * mean"} + uniforms.epsilon); 2671 ${g?"mean_output[global_idx] = mean;":""} 2672 ${A?"inv_std_output[global_idx] = inv_std_dev;":""} 2673 2674 for (var i: u32 = 0; i < stride; i++) { 2675 output[offset + i] = (output[offset + i] ${s?"":`- ${y}(mean)`}) * 2676 ${y}(inv_std_dev) * gamma[offset1d + i] 2677 ${d?"+ beta[offset1d + i]":""}; 2678 } 2679 }`},_=[{dims:o,dataType:e[0].dataType}];return r>1&&_.push({dims:p,dataType:1}),r>2&&_.push({dims:p,dataType:1}),r>3&&_.push({dims:a,dataType:e[0].dataType}),{name:"SkipLayerNormalization",shaderCache:{hint:`${f};${g};${A};${m}`,inputDependencies:e.map((w,b)=>"type")},getShaderSource:P,getRunData:()=>({outputs:_,dispatchGroup:{x:Math.ceil(l/u)},programUniforms:h})}},IP=(e,t)=>{EP(e.inputs);let r=[0];e.outputCount>1&&r.push(-3),e.outputCount>2&&r.push(-3),e.outputCount>3&&r.push(3),e.compute(DP(e.inputs,t,e.outputCount,!1),{outputs:r})}}),TP,$l,CP,kg,$P,SP,kP,OP,d4=Je(()=>{zt(),Kt(),an(),er(),TP=(e,t)=>{if(!e||e.length<1)throw new Error("too few inputs");if(t.axes.length!==0){if(t.axes.length!==t.starts.length||t.axes.length!==t.ends.length)throw new Error("axes, starts and ends must have the same length")}else if(t.starts.length!==t.ends.length)throw new Error("starts and ends must have the same length");e.slice(1).forEach((r,n)=>{if(e[n+1].dataType!==6&&e[n+1].dataType!==7)throw new Error(`Input ${n} must be an array of int32 or int64`)})},$l=(e,t)=>{let r=[];if(e.length>t)if(e[t].dataType===7)e[t].getBigInt64Array().forEach(n=>r.push(Number(n)));else if(e[t].dataType===6)e[t].getInt32Array().forEach(n=>r.push(Number(n)));else throw new Error(`Input ${t} must be an array of int32 or int64`);return r},CP=(e,t)=>{if(e.length>1){let r=$l(e,1),n=$l(e,2),s=$l(e,3);return s.length===0&&(s=[...Array(e[0].dims.length).keys()]),br({starts:r,ends:n,axes:s})}else return t},kg=(e,t,r,n,s)=>{let a=e;return e<0&&(a+=r[n[t]]),s[t]<0?Math.max(0,Math.min(a,r[n[t]]-1)):Math.max(0,Math.min(a,r[n[t]]))},$P=(e,t,r)=>`fn calculateInputIndices(output_indices: ${t.type.indices}) -> ${e.type.indices} { 2680 var input_indices: ${e.type.indices}; 2681 var carry = 0u; 2682 for (var i = ${r.length}; i >= 0; i--) { 2683 let input_shape_i = ${Bt("uniforms.input_shape","i",r.length)}; 2684 let steps_i = ${Bt("uniforms.steps","i",r.length)}; 2685 let signs_i = ${Bt("uniforms.signs","i",r.length)}; 2686 let starts_i = ${Bt("uniforms.starts","i",r.length)}; 2687 var output_index = ${t.indicesGet("output_indices","i")}; 2688 var input_index = output_index * steps_i + starts_i + carry; 2689 carry = input_index / input_shape_i; 2690 input_index = input_index % input_shape_i; 2691 if (signs_i < 0) { 2692 input_index = input_shape_i - input_index - 1u + starts_i; 2693 } 2694 ${e.indicesSet("input_indices","i","input_index")}; 2695 } 2696 return input_indices; 2697 }`,SP=(e,t)=>{let r=e[0].dims,n=Te.size(r),s=t.axes.length>0?Te.normalizeAxes(t.axes,r.length):[...Array(r.length).keys()],a=$l(e,4);a.forEach(f=>f!==0||(()=>{throw new Error("step cannot be 0")})),a.length===0&&(a=Array(s.length).fill(1));let i=t.starts.map((f,h)=>kg(f,h,r,s,a)),o=t.ends.map((f,h)=>kg(f,h,r,s,a));if(s.length!==i.length||s.length!==o.length)throw new Error("start, ends and axes should have the same number of elements");if(s.length!==r.length)for(let f=0;f<r.length;++f)s.includes(f)||(i.splice(f,0,0),o.splice(f,0,r[f]),a.splice(f,0,1));let l=a.map(f=>Math.sign(f));a.forEach((f,h,P)=>{if(f<0){let _=(o[h]-i[h])/f,w=i[h],b=w+_*a[h];i[h]=b,o[h]=w,P[h]=-f}});let u=r.slice(0);s.forEach((f,h)=>{u[f]=Math.ceil((o[f]-i[f])/a[f])});let p={dims:u,dataType:e[0].dataType},d=bt("output",e[0].dataType,u.length),c=Ye("input",e[0].dataType,e[0].dims.length),g=Te.size(u),A=[{name:"outputSize",type:"u32"},{name:"starts",type:"u32",length:i.length},{name:"signs",type:"i32",length:l.length},{name:"steps",type:"u32",length:a.length}],m=[{type:12,data:g},{type:12,data:i},{type:6,data:l},{type:12,data:a},...Dt(e[0].dims,u)],B=f=>` 2698 ${f.registerUniforms(A).declareVariables(c,d)} 2699 ${$P(c,d,r)} 2700 ${f.mainStart()} 2701 ${f.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} 2702 let output_indices = ${d.offsetToIndices("global_idx")}; 2703 let input_indices = calculateInputIndices(output_indices); 2704 ${d.setByOffset("global_idx",c.getByIndices("input_indices"))} 2705 }`;return{name:"Slice",shaderCache:{hint:`${l.length}_${i.length}_${a.length}`,inputDependencies:["rank"]},getShaderSource:B,getRunData:()=>({outputs:[p],dispatchGroup:{x:Math.ceil(n/64)},programUniforms:m})}},kP=(e,t)=>{TP(e.inputs,t);let r=CP(e.inputs,t);e.compute(SP(e.inputs,r),{inputs:[0]})},OP=e=>{let t=e.starts,r=e.ends,n=e.axes;return br({starts:t,ends:r,axes:n})}}),GP,zP,FP,LP,p4=Je(()=>{zt(),Kt(),an(),Va(),er(),GP=e=>{if(!e||e.length!==1)throw new Error("Softmax op requires 1 input.")},zP=(e,t)=>{let r=e.inputs[0],n=r.dims,s=Te.size(n),a=n.length,i=Te.normalizeAxis(t.axis,a),o=i<n.length-1,l,u=[];o?(u=Array.from({length:a},(v,y)=>y),u[i]=a-1,u[a-1]=i,l=e.compute(ns(r,u),{inputs:[r],outputs:[-1]})[0]):l=r;let p=l.dims,d=p[a-1],c=s/d,g=Jr(d),A=d/g,m=64;c===1&&(m=256);let B=(v,y)=>y===4?`max(max(${v}.x, ${v}.y), max(${v}.z, ${v}.w))`:y===2?`max(${v}.x, ${v}.y)`:y===3?`max(max(${v}.x, ${v}.y), ${v}.z)`:v,f=Ye("x",l.dataType,l.dims,g),h=bt("result",l.dataType,l.dims,g),P=f.type.value,_=vn(l.dataType)==="f32"?`var threadMax = ${P}(-3.402823e+38f);`:`var threadMax = ${P}(-65504.0h);`,w=v=>` 2706 var<workgroup> rowMaxShared : ${P}; 2707 var<workgroup> rowSumShared : ${P}; 2708 var<workgroup> threadShared : array<${P}, ${m}>; 2709 2710 fn getValue(row: i32, col: i32, row_stride: i32) -> ${P} { 2711 let index = row * row_stride + col; 2712 return x[index]; 2713 } 2714 2715 fn setValue(row: i32, col: i32, row_stride: i32, value: ${P}) { 2716 let index = row * row_stride + col; 2717 result[index] = value; 2718 } 2719 ${v.registerUniform("packedCols","i32").declareVariables(f,h)} 2720 ${v.mainStart(m)} 2721 let gindex = i32(global_idx); 2722 let lindex = i32(local_idx); 2723 const wg = ${m}; 2724 let row = gindex / wg; 2725 let cols = uniforms.packedCols; 2726 let row_stride : i32 = uniforms.packedCols; 2727 2728 // find the rows max 2729 ${_} 2730 for (var col = lindex; col < cols; col += wg) { 2731 let value = getValue(row, col, row_stride); 2732 threadMax = max(threadMax, value); 2733 } 2734 if (lindex < cols) { 2735 threadShared[lindex] = threadMax; 2736 } 2737 workgroupBarrier(); 2738 2739 var reduceSize = min(cols, wg); 2740 for (var currSize = reduceSize >> 1; currSize > 0; currSize = reduceSize >> 1) { 2741 reduceSize = currSize + (reduceSize & 1); 2742 if (lindex < currSize) { 2743 threadShared[lindex] = max(threadShared[lindex], threadShared[lindex + reduceSize]); 2744 } 2745 workgroupBarrier(); 2746 } 2747 if (lindex == 0) { 2748 rowMaxShared = ${P}(${B("threadShared[0]",g)}); 2749 } 2750 workgroupBarrier(); 2751 2752 // find the rows sum 2753 var threadSum = ${P}(0.0); 2754 for (var col = lindex; col < cols; col += wg) { 2755 let subExp = exp(getValue(row, col, row_stride) - rowMaxShared); 2756 threadSum += subExp; 2757 } 2758 threadShared[lindex] = threadSum; 2759 workgroupBarrier(); 2760 2761 for (var currSize = wg >> 1; currSize > 0; currSize = currSize >> 1) { 2762 if (lindex < currSize) { 2763 threadShared[lindex] = threadShared[lindex] + threadShared[lindex + currSize]; 2764 } 2765 workgroupBarrier(); 2766 } 2767 if (lindex == 0) { 2768 rowSumShared = ${P}(${Wa("threadShared[0]",g)}); 2769 } 2770 workgroupBarrier(); 2771 2772 // calculate final value for each element in the row 2773 for (var col = lindex; col < cols; col += wg) { 2774 let value = exp(getValue(row, col, row_stride) - rowMaxShared) / rowSumShared; 2775 setValue(row, col, row_stride, value); 2776 } 2777 }`,b=e.compute({name:"Softmax",shaderCache:{hint:`${g};${m}`,inputDependencies:["type"]},getRunData:()=>({outputs:[{dims:p,dataType:l.dataType}],dispatchGroup:{x:c},programUniforms:[{type:6,data:A}]}),getShaderSource:w},{inputs:[l],outputs:[o?-1:0]})[0];o&&e.compute(ns(b,u),{inputs:[b]})},FP=(e,t)=>{GP(e.inputs),zP(e,t)},LP=e=>br({axis:e.axis})}),Og,RP,YP,NP,jP,g4=Je(()=>{zt(),Kt(),er(),Og=e=>Array.from(e.getBigInt64Array(),Number),RP=e=>{if(!e||e.length!==2)throw new Error("Tile requires 2 inputs.");if(e[0].dataType!==1&&e[0].dataType!==10&&e[0].dataType!==6&&e[0].dataType!==12)throw new Error("Tile only support float, float16, int32, and uint32 data types");if(e[1].dataType!==7)throw new Error("Tile `repeats` input should be of int64 data type");if(e[1].dims.length!==1)throw new Error("Tile `repeats` input should be 1-D");if(Og(e[1]).length!==e[0].dims.length)throw new Error("Tile `repeats` input should have same number of elements as rank of input data tensor")},YP=(e,t)=>{let r=[];for(let n=0;n<e.length;++n)r.push(e[n]*t[n]);return r},NP=(e,t)=>{let r=e[0].dims,n=t??Og(e[1]),s=YP(r,n),a=Te.size(s),i=e[0].dataType,o=Ye("input",i,r.length),l=bt("output",i,s.length),u=p=>` 2778 const inputShape = ${o.indices(...r)}; 2779 ${p.registerUniform("output_size","u32").declareVariables(o,l)} 2780 ${p.mainStart()} 2781 ${p.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 2782 let output_indices = ${l.offsetToIndices("global_idx")}; 2783 var input_indices: ${o.type.indices}; 2784 for (var i = 0; i < ${r.length}; i++) { 2785 let input_dim_i = ${o.indicesGet("uniforms.input_shape","i")}; 2786 let input_dim_value = ${l.indicesGet("output_indices","i")} % input_dim_i; 2787 2788 ${o.indicesSet("input_indices","i","input_dim_value")} 2789 } 2790 ${l.setByOffset("global_idx",o.getByIndices("input_indices"))} 2791 }`;return{name:"Tile",shaderCache:{hint:`${n}`,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:s,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:[{type:12,data:a},...Dt(e[0].dims,s)]}),getShaderSource:u}},jP=e=>{RP(e.inputs),e.compute(NP(e.inputs),{inputs:[0]})}}),UP,WP,VP,A4=Je(()=>{zt(),Kt(),er(),UP=(e,t,r,n,s)=>{let a=bt("output_data",s,r.length,4),i=Ye("a_data",t[1].dataType,t[1].dims.length,4),o=Ye("b_data",t[2].dataType,t[2].dims.length,4),l=Ye("c_data",t[0].dataType,t[0].dims.length,4),u,p=(d,c,g)=>`select(${c}, ${d}, ${g})`;if(!n)u=a.setByOffset("global_idx",p(i.getByOffset("global_idx"),o.getByOffset("global_idx"),l.getByOffset("global_idx")));else{let d=(c,g,A="")=>{let m=`a_data[index_a${g}][component_a${g}]`,B=`b_data[index_b${g}][component_b${g}]`,f=`bool(c_data[index_c${g}] & (0xffu << (component_c${g} * 8)))`;return` 2792 let output_indices${g} = ${a.offsetToIndices(`global_idx * 4u + ${g}u`)}; 2793 let offset_a${g} = ${i.broadcastedIndicesToOffset(`output_indices${g}`,a)}; 2794 let offset_b${g} = ${o.broadcastedIndicesToOffset(`output_indices${g}`,a)}; 2795 let offset_c${g} = ${l.broadcastedIndicesToOffset(`output_indices${g}`,a)}; 2796 let index_a${g} = offset_a${g} / 4u; 2797 let index_b${g} = offset_b${g} / 4u; 2798 let index_c${g} = offset_c${g} / 4u; 2799 let component_a${g} = offset_a${g} % 4u; 2800 let component_b${g} = offset_b${g} % 4u; 2801 let component_c${g} = offset_c${g} % 4u; 2802 ${c}[${g}] = ${A}(${p(m,B,f)}); 2803 `};s===9?u=` 2804 var data = vec4<u32>(0); 2805 ${d("data",0,"u32")} 2806 ${d("data",1,"u32")} 2807 ${d("data",2,"u32")} 2808 ${d("data",3,"u32")} 2809 output_data[global_idx] = dot(vec4<u32>(0x1, 0x100, 0x10000, 0x1000000), vec4<u32>(data));`:u=` 2810 ${d("output_data[global_idx]",0)} 2811 ${d("output_data[global_idx]",1)} 2812 ${d("output_data[global_idx]",2)} 2813 ${d("output_data[global_idx]",3)} 2814 `}return` 2815 ${e.registerUniform("vec_size","u32").declareVariables(l,i,o,a)} 2816 ${e.mainStart()} 2817 ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")} 2818 ${u} 2819 }`},WP=e=>{let t=e[1].dims,r=e[2].dims,n=e[0].dims,s=e[1].dataType,a=!(Te.areEqual(t,r)&&Te.areEqual(r,n)),i=t,o=Te.size(t);if(a){let u=xo.calcShape(xo.calcShape(t,r,!1),n,!1);if(!u)throw new Error("Can't perform where op on the given tensors");i=u,o=Te.size(i)}let l=Math.ceil(o/4);return{name:"Where",shaderCache:{inputDependencies:["rank","rank","rank"]},getShaderSource:u=>UP(u,e,i,a,s),getRunData:()=>({outputs:[{dims:i,dataType:s}],dispatchGroup:{x:Math.ceil(o/64/4)},programUniforms:[{type:12,data:l},...Dt(n,t,r,i)]})}},VP=e=>{e.compute(WP(e.inputs))}}),QP,h4=Je(()=>{Ik(),Kp(),Tk(),Ck(),$k(),Sk(),kk(),Lk(),Yk(),Nk(),jk(),Uk(),Wk(),Vk(),Qk(),Hk(),Kk(),qk(),Xk(),Zk(),Jk(),e4(),t4(),r4(),n4(),ab(),s4(),a4(),i4(),o4(),l4(),Vp(),u4(),hb(),c4(),d4(),p4(),pb(),g4(),Va(),Jp(),A4(),QP=new Map([["Abs",[Ew]],["Acos",[Dw]],["Acosh",[Iw]],["Add",[my]],["ArgMax",[pw,Hp]],["ArgMin",[dw,Hp]],["Asin",[Tw]],["Asinh",[Cw]],["Atan",[$w]],["Atanh",[Sw]],["Attention",[_w]],["AveragePool",[Wb,Ub]],["BatchNormalization",[Pw]],["BiasAdd",[Bw]],["BiasSplitGelu",[gy]],["Cast",[Ow,kw]],["Ceil",[Fw]],["Clip",[zw]],["Concat",[Ty,Cy]],["Conv",[pg,cg]],["ConvTranspose",[s0,t0]],["Cos",[Lw]],["Cosh",[Rw]],["CumSum",[i0,o0]],["DepthToSpace",[d0,p0]],["DequantizeLinear",[eP,tP]],["Div",[fy]],["Einsum",[_0,w0]],["Elu",[Yw,xl]],["
2819Equal",[_y]],["Erf",[Nw]],["Exp",[jw]],["Expand",[M0]],["FastGelu",[B0]],["Floor",[Uw]],["FusedConv",[pg,cg]],["Gather",[I0,D0]],["GatherElements",[R0,L0]],["GatherBlockQuantized",[O0,G0]],["GatherND",[C0,$0]],["Gelu",[Ww]],["Gemm",[U0,j0]],["GlobalAveragePool",[Qb,Vb]],["GlobalMaxPool",[Xb,qb]],["Greater",[Py]],["GreaterOrEqual",[vy]],["GridSample",[J0,eb]],["GroupQueryAttention",[wb]],["HardSigmoid",[Jw,Zw]],["InstanceNormalization",[Pb]],["LayerNormalization",[Bb]],["LeakyRelu",[Vw,xl]],["Less",[My]],["LessOrEqual",[By]],["Log",[oy]],["MatMul",[Eb]],["MatMulNBits",[Cb,$b]],["MaxPool",[Hb,Kb]],["Mul",[wy]],["MultiHeadAttention",[sb,rb]],["Neg",[Hw]],["Not",[Qw]],["Pad",[Yb]],["Pow",[yy]],["QuickGelu",[cy,xl]],["Range",[sP]],["Reciprocal",[Kw]],["ReduceMin",[iw]],["ReduceMean",[tw]],["ReduceMax",[aw]],["ReduceSum",[lw]],["ReduceProd",[ow]],["ReduceL1",[rw]],["ReduceL2",[nw]],["ReduceLogSum",[cw]],["ReduceLogSumExp",[sw]],["ReduceSumSquare",[uw]],["Relu",[qw]],["Resize",[BP,xP]],["RotaryEmbedding",[Ab]],["ScatterND",[lP,oP]],["Sigmoid",[Xw]],["Sin",[ey]],["Sinh",[ty]],["Slice",[kP,OP]],["Ski
2819pLayerNormalization",[IP]],["Split",[cb,db]],["Sqrt",[ry]],["Softmax",[FP,LP]],["Sub",[by]],["Tan",[ny]],["Tanh",[sy]],["ThresholdedRelu",[iy,xl]],["Tile",[jP]],["Transpose",[P_,M_]],["Where",[VP]]])}),HP,m4=Je(()=>{Gs(),Ia(),er(),HP=class{constructor(e){this.backend=e,this.repo=new Map,this.attributesBound=!1}getArtifact(e){return this.repo.get(e)}setArtifact(e,t){this.repo.set(e,t)}run(e,t,r,n,s){Os(e.programInfo.name);let a=this.backend.device,i=this.backend.getComputePassEncoder();this.backend.writeTimestamp(this.backend.pendingDispatchNumber*2);let o=[];for(let u of t)o.push({binding:o.length,resource:{buffer:u.buffer}});for(let u of r)o.push({binding:o.length,resource:{buffer:u.buffer}});s&&o.push({binding:o.length,resource:s});let l=a.createBindGroup({layout:e.computePipeline.getBindGroupLayout(0),entries:o,label:e.programInfo.name});if(this.backend.sessionStatus==="capturing"){let u={kernelId:this.backend.currentKernelId,computePipeline:e.computePipeline,bindGroup:l,dispatchGroup:n};this.backend.capturedCommandList.get(this.backend.currentSessionId).push(u)}i.setPipeline(e.computePipeline),i.setBindGroup(0,l),i.dispatchWorkgroups(...n),this.backend.writeTimestamp(this.backend.pendingDispatchNumber*2+1),this.backend.pendingDispatchNumber++,(this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber||this.backend.queryType==="at-passes")&&this.backend.endComputePass(),this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber&&this.backend.flush(),_s(e.programInfo.name)}dispose(){}build(e,t){Os(e.name);let r=this.backend.device,n=[];[{feature:"shader-f16",extension:"f16"},{feature:"subgroups",extension:"subgroups"}].forEach(u=>{r.features.has(u.feature)&&n.push(`enable ${u.extension};`)});let s=m_(t,this.backend.device.limits),a=e.getShaderSource(s),i=`${n.join(` 2820`)} 2821${s.additionalImplementations} 2822${a}`,o=r.createShaderModule({code:i,label:e.name});lr("verbose",()=>`[WebGPU] ${e.name} shader code: ${i}`);let l=r.createComputePipeline({compute:{module:o,entryPoint:"main"},layout:"auto",label:e.name});return _s(e.name),{programInfo:e,computePipeline:l,uniformVariablesInfo:s.variablesInfo}}normalizeDispatchGroupSize(e){let t=typeof e=="number"?e:e.x,r=typeof e=="number"?1:e.y||1,n=typeof e=="number"?1:e.z||1,s=this.backend.device.limits.maxComputeWorkgroupsPerDimension;if(t<=s&&r<=s&&n<=s)return[t,r,n];let a=t*r*n,i=Math.ceil(Math.sqrt(a));if(i>s){if(i=Math.ceil(Math.cbrt(a)),i>s)throw new Error("Total dispatch size exceeds WebGPU maximum.");return[i,i,i]}else return[i,i,1]}}}),KP={};vo(KP,{WebGpuBackend:()=>JP});var qP,XP,ZP,JP,f4=Je(()=>{Gs(),zt(),Ia(),r_(),Ek(),h4(),m4(),qP=(e,t)=>{if(t.length!==e.length)throw new Error(`inputDependencies length ${t.length} is not equal to inputTensors length ${e.length}.`);let r=[];for(let n=0;n<e.length;++n){let s=e[n].dataType;switch(t[n]){case"none":{r.push("");break}case"type":{r.push(`${s}`);break}case"rank":{let a=e[n].dims.length;r.push(`${s};${a}`);break}case"dims":{let a=e[n].dims.join(",");r.push(`${s};${a}`);break}default:throw new Error(`unsupported input dependency: ${t[n]}`)}}return r.join("|")},XP=(e,t,r)=>{let n=e.name;return e.shaderCache?.hint&&(n+="["+e.shaderCache.hint+"]"),n+=":"+r+`:${qP(t,e.shaderCache?.inputDependencies??new Array(t.length).fill("dims"))}`,n},ZP=class{constructor(e){e&&(this.architecture=e.architecture,this.vendor=e.vendor)}isArchitecture(e){return this.architecture===e}isVendor(e){return this.vendor===e}},JP=class{constructor(){this.currentSessionId=null,this.currentKernelId=null,this.commandEncoder=null,this.computePassEncoder=null,this.maxDispatchNumber=16,this.pendingDispatchNumber=0,this.pendingKernels=[],this.pendingQueries=new Map,this.sessionStatus="default",this.capturedCommandList=new Map,this.capturedPendingKernels=new Map,this.sessionExternalDataMapping=new Map}get currentKernelCustomData(){if(this.currentKernelId===null)throw new Error("currentKernelCustomData(): currentKernelId is null. (should not happen)");let e=this.kernelCustomData.get(this.currentKernelId);return e||(e={},this.kernelCustomData.set(this.currentKernelId,e)),e}async initialize(e,t){this.env=e;let r=[],n={requiredLimits:{maxComputeWorkgroupStorageSize:t.limits.maxComputeWorkgroupStorageSize,maxComputeWorkgroupsPerDimension:t.limits.maxComputeWorkgroupsPerDimension,maxStorageBufferBindingSize:t.limits.maxStorageBufferBindingSize,maxBufferSize:t.limits.maxBufferSize,maxComputeInvocationsPerWorkgroup:t.limits.maxComputeInvocationsPerWorkgroup,maxComputeWorkgroupSizeX:t.limits.maxComputeWorkgroupSizeX,maxComputeWorkgroupSizeY:t.limits.maxComputeWorkgroupSizeY,maxComputeWorkgroupSizeZ:t.limits.maxComputeWorkgroupSizeZ},requiredFeatures:r},s=a=>t.features.has(a)&&r.push(a)&&!0;s("chromium-experimental-timestamp-query-inside-passes")||s("timestamp-query"),s("shader-f16"),s("subgroups"),this.device=await t.requestDevice(n),this.adapterInfo=new ZP(t.info||await t.requestAdapterInfo()),this.gpuDataManager=p_(this),this.programManager=new HP(this),this.kernels=new Map,this.kernelPersistentData=new Map,this.kernelCustomData=new Map,Tp(e.logLevel,!!e.debug),this.device.onuncapturederror=a=>
vendor: 17,728 bytes, line 2822
2822{a.error instanceof GPUValidationError&&console.error(`An uncaught WebGPU validation error was raised: ${a.error.message}`)},Object.defineProperty(this.env.webgpu,"device",{value:this.device,writable:!1,enumerable:!0,configurable:!1}),Object.defineProperty(this.env.webgpu,"adapter",{value:t,writable:!1,enumerable:!0,configurable:!1}),this.setQueryType()}dispose(){typeof this.querySet<"u"&&this.querySet.destroy(),this.gpuDataManager.dispose()}getCommandEncoder(){return this.commandEncoder||(this.commandEncoder=this.device.createCommandEncoder()),this.commandEncoder}getComputePassEncoder(){if(!this.computePassEncoder){let e=this.getCommandEncoder(),t={};this.queryType==="at-passes"&&(t.timestampWrites={querySet:this.querySet,beginningOfPassWriteIndex:this.pendingDispatchNumber*2,endOfPassWriteIndex:this.pendingDispatchNumber*2+1}),this.computePassEncoder=e.beginComputePass(t)}return this.computePassEncoder}endComputePass(){this.computePassEncoder&&(this.computePassEncoder.end(),this.computePassEncoder=null)}flush(){if(!this.commandEncoder)return;Os(),this.endComputePass();let e;this.queryType!=="none"&&(this.commandEncoder.resolveQuerySet(this.querySet,0,this.pendingDispatchNumber*2,this.queryResolveBuffer,0),e=this.device.createBuffer({size:this.pendingDispatchNumber*2*8,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST}),this.pendingQueries.set(e,this.pendingKernels),this.pendingKernels=[],this.commandEncoder.copyBufferToBuffer(this.queryResolveBuffer,0,e,0,this.pendingDispatchNumber*2*8)),this.device.queue.submit([this.commandEncoder.finish()]),this.gpuDataManager.refreshPendingBuffers(),this.commandEncoder=null,this.pendingDispatchNumber=0,this.queryType!=="none"&&e.mapAsync(GPUMapMode.READ).then(()=>{let t=new BigUint64Array(e.getMappedRange()),r=this.pendingQueries.get(e);for(let n=0;n<t.length/2;n++){let s=r[n],a=s.kernelId,i=this.kernels.get(a),o=i.kernelType,l=i.kernelName,u=s.programName,p=s.inputTensorViews,d=s.outputTensorViews,c=t[n*2],g=t[n*2+1];typeof this.queryTimeBase>"u"&&(this.queryTimeBase=c);let A=Number(c-this.queryTimeBase),m=Number(g-this.queryTimeBase);if(!Number.isSafeInteger(A)||!Number.isSafeInteger(m))throw new RangeError("incorrect timestamp range");if(this.env.webgpu.profiling?.ondata)this.env.webgpu.profiling.ondata({version:1,inputsMetadata:p.map(B=>({dims:B.dims,dataType:Da(B.dataType)})),outputsMetadata:d.map(B=>({dims:B.dims,dataType:Da(B.dataType)})),kernelId:a,kernelType:o,kernelName:l,programName:u,startTime:A,endTime:m});else{let B="";p.forEach((h,P)=>{B+=`input[${P}]: [${h.dims}] | ${Da(h.dataType)}, `});let f="";d.forEach((h,P)=>{f+=`output[${P}]: [${h.dims}] | ${Da(h.dataType)}, `}),console.log(`[profiling] kernel "${a}|${o}|${l}|${u}" ${B}${f}execution time: ${m-A} ns`)}bl("GPU",`${u}::${c}::${g}`)}e.unmap(),this.pendingQueries.delete(e)}),_s()}run(e,t,r,n,s,a){Os(e.name);let i=[];for(let h=0;h<t.length;++h){let P=t[h].data;if(P===0)continue;let _=this.gpuDataManager.get(P);if(!_)throw new Error(`no GPU data for input: ${P}`);i.push(_)}let{outputs:o,dispatchGroup:l,programUniforms:u}=e.getRunData(t),p=r.length===0?o.map((h,P)=>P):r;if(p.length!==o.length)throw new Error(`Output size ${p.length} must be equal to ${o.length}.`);let d=[],c=[];for(let h=0;h<o.length;++h){if(!Number.isInteger(p[h])||p[h]<-3||p[h]>=a)throw new Error(`Invalid output index: ${p[h]}`);if(p[h]===-3)continue;let P=p[h]===-1,_=p[h]===-2,w=P||_?s(o[h].dataType,o[h].dims):n(p[h],o[h].dataType,o[h].dims);if(d.push(w),w.data===0)continue;let b=this.gpuDataManager.get(w.data);if(!b)throw new Error(`no GPU data for output: ${w.data}`);if(P&&this.temporaryData.push(b),_){let v=this.kernelPersistentData.get(this.currentKernelId);v||(v=[],this.kernelPersistentData.set(this.currentKernelId,v)),v.push(b)}c.push(b)}if(i.length!==t.length||c.length!==d.length){if(c.length===0)return _s(e.name),d;throw new Error(`Program ${e.name} has zero-sized tensor(s) in inputs or outputs. This is not supported now.`)}let g;if(u){let h=0,P=[];u.forEach(v=>{let y=typeof v.data=="number"?[v.data]:v.data;if(y.length===0)return;let $=v.type===10?2:4,k,W;v.type===10?(W=y.length>4?16:y.length>2?8:y.length*$,k=y.length>4?16:$*y.length):(W=y.length<=2?y.length*$:16,k=16),h=Math.ceil(h/W)*W,P.push(h);let j=v.type===10?8:4;h+=y.length>4?Math.ceil(y.length/j)*k:y.length*$});let _=16;h=Math.ceil(h/_)*_;let w=new ArrayBuffer(h);u.forEach((v,y)=>{let $=P[y],k=typeof v.data=="number"?[v.data]:v.data;if(v.type===6)new Int32Array(w,$,k.length).set(k);else if(v.type===12)new Uint32Array(w,$,k.length).set(k);else if(v.type===10)new Uint16Array(w,$,k.length).set(k);else if(v.type===1)new Float32Array(w,$,k.length).set(k);else throw new Error(`Unsupported uniform type: ${Da(v.type)}`)});let b=this.gpuDataManager.create(h,GPUBufferUsage.COPY_DST|GPUBufferUsage.UNIFORM);this.device.queue.writeBuffer(b.buffer,0,w,0,h),this.gpuDataManager.release(b.id),g={offset:0,size:h,buffer:b.buffer}}let A=this.programManager.normalizeDispatchGroupSize(l),m=A[1]===1&&A[2]===1,B=XP(e,t,m),f=this.programManager.getArtifact(B);if(f||(f=this.programManager.build(e,A),this.programManager.setArtifact(B,f),lr("info",()=>`[artifact] key: ${B}, programName: ${e.name}`)),u&&f.uniformVariablesInfo){if(u.length!==f.uniformVariablesInfo.length)throw new Error(`Uniform variables count mismatch: expect ${f.uniformVariablesInfo.length}, got ${u.length} in program "${f.programInfo.name}".`);for(let h=0;h<u.length;h++){let P=u[h],_=P.type,w=typeof P.data=="number"?1:P.data.length,[b,v]=f.uniformVariablesInfo[h];if(_!==b||w!==v)throw new Error(`Uniform variable ${h} mismatch: expect type ${b} with size ${v}, got type ${_} with size ${w} in program "${f.programInfo.name}".`)}}if(lr("info",()=>`[ProgramManager] run "${e.name}" (key=${B}) with ${A[0]}x${A[1]}x${A[2]}`),this.queryType!=="none"||this.sessionStatus==="capturing"){let h={kernelId:this.currentKernelId,programName:f.programInfo.name,inputTensorViews:t,outputTensorViews:d};this.pendingKernels.push(h),this.sessionStatus==="capturing"&&this.capturedPendingKernels.get(this.currentSessionId).push(h)}return this.programManager.run(f,i,c,A,g),_s(e.name),d}upload(e,t){this.gpuDataManager.upload(e,t)}memcpy(e,t){this.gpuDataManager.memcpy(e,t)}async download(e,t){await this.gpuDataManager.download(e,t)}alloc(e){return this.gpuDataManager.create(e).id}free(e){return this.gpuDataManager.release(e)}createKernel(e,t,r,n){let s=QP.get(e);if(!s)throw new Error(`kernel not implemented: ${e}`);let a={kernelType:e,kernelName:n,kernelEntry:s[0],attributes:[s[1],r]};this.kernels.set(t,a)}releaseKernel(e){let t=this.kernelPersistentData.get(e);if(t){for(let r of t)this.gpuDataManager.release(r.id);this.kernelPersistentData.delete(e)}this.kernelCustomData.delete(e),this.kernels.delete(e)}computeKernel(e,t,r){let n=this.kernels.get(e);if(!n)throw new Error(`kernel not created: ${e}`);let s=n.kernelType,a=n.kernelName,i=n.kernelEntry,o=n.attributes;if(this.currentKernelId!==null)throw new Error(`kernel "[${s}] ${a}" is not allowed to be called recursively`);this.currentKernelId=e,o[0]&&(o[1]=o[0](o[1]),o[0]=void 0),lr("info",()=>`[WebGPU] Start to run kernel "[${s}] ${a}"...`);let l=this.env.debug;this.temporaryData=[];try{return l&&this.device.pushErrorScope("validation"),i(t,o[1]),0}catch(u){return r.push(Promise.resolve(`[WebGPU] Kernel "[${s}] ${a}" failed. ${u}`)),1}finally{l&&r.push(this.device.popErrorScope().then(u=>u?`GPU validation error for kernel "[${s}] ${a}": ${u.message}`:null));for(let u of this.temporaryData)this.gpuDataManager.release(u.id);this.temporaryData=[],this.currentKernelId=null}}registerBuffer(e,t,r,n){let s=this.sessionExternalDataMapping.get(e);s||(s=new Map,this.sessionExternalDataMapping.set(e,s));let a=s.get(t),i=this.gpuDataManager.registerExternalBuffer(r,n,a);return s.set(t,[i,r]),i}unregisterBuffers(e){let t=this.sessionExternalDataMapping.get(e);t&&(t.forEach(r=>this.gpuDataManager.unregisterExternalBuffer(r[0])),this.sessionExternalDataMapping.delete(e))}getBuffer(e){let t=this.gpuDataManager.get(e);if(!t)throw new Error(`no GPU data for buffer: ${e}`);return t.buffer}createDownloader(e,t,r){return async()=>{let n=await Yp(this,e,t);return Cp(n.buffer,r)}}writeTimestamp(e){this.queryType==="inside-passes"&&this.computePassEncoder.writeTimestamp(this.querySet,e)}setQueryType(){this.queryType="none",(this.env.webgpu.profiling?.mode==="default"||(typeof this.env.trace>"u"?this.env.wasm.trace:this.env.trace))&&(this.device.features.has("chromium-experimental-timestamp-query-inside-passes")?this.queryType="inside-passes":this.device.features.has("timestamp-query")&&(this.queryType="at-passes"),this.queryType!=="none"&&typeof this.querySet>"u"&&(this.querySet=this.device.createQuerySet({type:"timestamp",count:this.maxDispatchNumber*2}),this.queryResolveBuffer=this.device.createBuffer({size:this.maxDispatchNumber*2*8,usage:GPUBufferUsage.COPY_SRC|GPUBufferUsage.QUERY_RESOLVE})))}captureBegin(){lr("info","captureBegin"),this.capturedCommandList.get(this.currentSessionId)||this.capturedCommandList.set(this.currentSessionId,[]),this.capturedPendingKernels.get(this.currentSessionId)||this.capturedPendingKernels.set(this.currentSessionId,[]),this.flush(),this.sessionStatus="capturing"}captureEnd(){lr("info","captureEnd"),this.flush(),this.sessionStatus="default"}replay(){lr("info","replay"),this.sessionStatus="replaying";let e=this.capturedCommandList.get(this.currentSessionId),t=this.capturedPendingKernels.get(this.currentSessionId),r=e.length;this.pendingKernels=[];for(let n=0;n<r;n++){let s=this.getComputePassEncoder(),a=e[n];this.writeTimestamp(this.pendingDispatchNumber*2),s.setPipeline(a.computePipeline),s.setBindGroup(0,a.bindGroup),s.dispatchWorkgroups(...a.dispatchGroup),this.writeTimestamp(this.pendingDispatchNumber*2+1),this.pendingDispatchNumber++,this.queryType!=="none"&&this.pendingKernels.push(t[n]),(this.pendingDispatchNumber>=this.maxDispatchNumber||this.queryType==="at-passes")&&this.endComputePass(),this.pendingDispatchNumber>=this.maxDispatchNumber&&this.flush()}this.flush(),this.sessionStatus="default"}onCreateSession(){this.gpuDataManager.onCreateSession()}onReleaseSession(e){this.unregisterBuffers(e),this.capturedCommandList.has(e)&&this.capturedCommandList.delete(e),this.capturedPendingKernels.has(e)&&this.capturedPendingKernels.delete(e),this.gpuDataManager.onReleaseSession(e)}onRunStart(e){this.currentSessionId=e,this.setQueryType()}}}),eM={};vo(eM,{init:()=>rM});var pc,tM,rM,_4=Je(()=>{zt(),Ia(),Kt(),xk(),pc=class FS{constructor(t,r,n,s){this.module=t,this.dataType=r,this.data=n,this.dims=s}getFloat32Array(){if(this.dataType!==1)throw new Error("Invalid data type");let t=Te.size(this.dims);return t===0?new Float32Array:new Float32Array(this.module.HEAP8.buffer,this.data,t)}getBigInt64Array(){if(this.dataType!==7)throw new Error("Invalid data type");let t=Te.size(this.dims);return t===0?new BigInt64Array:new BigInt64Array(this.module.HEAP8.buffer,this.data,t)}getInt32Array(){if(this.dataType!==6)throw new Error("Invalid data type");let t=Te.size(this.dims);return t===0?new Int32Array:new Int32Array(this.module.HEAP8.buffer,this.data,t)}getUint16Array(){if(this.dataType!==10&&this.dataType!==4)throw new Error("Invalid data type");let t=Te.size(this.dims);return t===0?new Uint16Array:new Uint16Array(this.module.HEAP8.buffer,this.data,t)}reshape(t){if(Te.size(t)!==Te.size(this.dims))throw new Error("Invalid new shape");return new FS(this.module,this.dataType,this.data,t)}},tM=class{constructor(e,t,r){this.module=e,this.backend=t,this.customDataOffset=0,this.customDataSize=0,this.adapterInfo=t.adapterInfo;let n=e.PTR_SIZE,s=r/e.PTR_SIZE,a=n===4?"i32":"i64";this.opKernelContext=Number(e.getValue(n*s++,a));let i=Number(e.getValue(n*s++,a));this.outputCount=Number(e.getValue(n*s++,a)),this.customDataOffset=Number(e.getValue(n*s++,"*")),this.customDataSize=Number(e.getValue(n*s++,a));let o=[];for(let l=0;l<i;l++){let u=Number(e.getValue(n*s++,a)),p=Number(e.getValue(n*s++,"*")),d=Number(e.getValue(n*s++,a)),c=[];for(let g=0;g<d;g++)c.push(Number(e.getValue(n*s++,a)));o.push(new pc(e,u,p,c))}this.inputs=o}get kernelCustomData(){return this.backend.currentKernelCustomData}get customDataBuffer(){return this.module.HEAPU8.subarray(this.customDataOffset,this.customDataOffset+this.customDataSize)}compute(e,t){let r=t?.inputs?.map(i=>typeof i=="number"?this.inputs[i]:i)??this.inputs,n=t?.outputs??[],s=(i,o,l)=>new pc(this.module,o,this.output(i,l),l),a=(i,o)=>{let l=$i(i,o);if(!l)throw new Error(`Unsupported data type: ${i}`);let u=l>0?this.backend.gpuDataManager.create(l).id:0;return new pc(this.module,i,u,o)};return this.backend.run(e,r,n,s,a,this.outputCount)}output(e,t){let r=this.module.stackSave();try{let n=this.module.PTR_SIZE,s=n===4?"i32":"i64",a=this.module.stackAlloc((1+t.length)*n);this.module.setValue(a,t.length,s);for(let i=0;i<t.length;i++)this.module.setValue(a+n*(i+1),t[i],s);return this.module._JsepOutput(this.opKernelContext,e,a)}catch(n){throw new Error(`Failed to generate kernel's output[${e}] with dims [${t}]. If you are running with pre-allocated output, please make sure the output type/dims are correct. Error: ${n}`)}finally{this.module.stackRestore(r)}}},rM=async(e,t,r,n)=>{let s=t.jsepInit;if(!s)throw new Error("Failed to initialize JSEP. The WebAssembly module is not built with JSEP support.");if(e==="webgpu"){let a=(f4(),_l(KP)).WebGpuBackend,i=new a;await i.initialize(r,n),s("webgpu",[i,o=>i.alloc(Number(o)),o=>i.free(o),(o,l,u,p=!1)=>{if(p)lr("verbose",()=>`[WebGPU] jsepCopyGpuToGpu: src=${Number(o)}, dst=${Number(l)}, size=${Number(u)}`),i.memcpy(Number(o),Number(l));else{lr("verbose",()=>`[WebGPU] jsepCopyCpuToGpu: dataOffset=${Number(o)}, gpuDataId=${Number(l)}, size=${Number(u)}`);let d=t.HEAPU8.subarray(Number(o>>>0),Number(o>>>0)+Number(u));i.upload(Number(l),d)}},async(o,l,u)=>{lr("verbose",()=>`[WebGPU] jsepCopyGpuToCpu: gpuDataId=${o}, dataOffset=${l}, size=${u}`),await i.download(Number(o),()=>t.HEAPU8.subarray(Number(l)>>>0,Number(l+u)>>>0))},(o,l,u)=>i.createKernel(o,Number(l),u,t.UTF8ToString(t._JsepGetNodeName(Number(l)))),o=>i.releaseKernel(o),(o,l,u,p)=>{lr("verbose",()=>`[WebGPU] jsepRun: sessionHandle=${u}, kernel=${o}, contextDataOffset=${l}`);let d=new tM(t,i,Number(l));return i.computeKernel(Number(o),d,p)},()=>i.captureBegin(),()=>i.captureEnd(),()=>i.replay()])}else{let a=new l_(r);s("webnn",[a,()=>a.reserveTensorId(),i=>a.releaseTensorId(i),async(i,o,l,u,p)=>a.ensureTensor(i,o,l,u,p),(i,o)=>{a.uploadTensor(i,o)},async(i,o)=>a.downloadTensor(i,o)])}}}),nM,Gg,zg,Qa,sM,Fg,gc,Lg,Rg,Yg,Ng,jg,Ug,aM=Je(()=>{Mk(),vk(),zt(),Ci(),vp(),Vf(),nM=(e,t)=>{Fr()._OrtInit(e,t)!==0&&$r("Can't initialize onnxruntime.")},Gg=async e=>{nM(e.wasm.numThreads,Zu(e.logLevel))},zg=async(e,t)=>{Fr().asyncInit?.();{let r=(_4(),_l(eM)).init;if(t==="webgpu"){if(typeof navigator>"u"||!navigator.gpu)throw new Error("WebGPU is not supported in current environment");let n=e.webgpu.adapter;if(n){if(typeof n.limits!="object"||typeof n.features!="object"||typeof n.requestDevice!="function")throw new Error("Invalid GPU adapter set in `env.webgpu.adapter`. It must be a GPUAdapter object.")}else{let s=e.webgpu.powerPreference;if(s!==void 0&&s!=="low-power"&&s!=="high-performance")throw new Error(`Invalid powerPreference setting: "${s}"`);let a=e.webgpu.forceFallbackAdapter;if(a!==void 0&&typeof a!="boolean")throw new Error(`Invalid forceFallbackAdapter setting: "${a}"`);if(n=await navigator.gpu.requestAdapter({powerPreference:s,forceFallbackAdapter:a}),!n)throw new Error('Failed to get GPU adapter. You may need to enable flag "--enable-unsafe-webgpu" if you are using Chrome.')}await r("webgpu",Fr(),e,n)}if(t==="webnn"){if(typeof navigator>"u"||!navigator.ml)throw new Error("WebNN is not supported in current environment");await r("webnn",Fr(),e)}}},Qa=new Map,sM=e=>{let t=Fr(),r=t.stackSave();try{let n=t.PTR_SIZE,s=t.stackAlloc(2*n);t._OrtGetInputOutputCount(e,s,s+n)!==0&&$r("Can't get session input/output count.");let a=n===4?"i32":"i64";return[Number(t.getValue(s,a)),Number(t.getValue(s+n,a))]}finally{t.stackRestore(r)}},Fg=(e,t)=>{let r=Fr(),n=r.stackSave(),s=0;try{let a=r.PTR_SIZE,i=r.stackAlloc(2*a);r._OrtGetInputOutputMetadata(e,t,i,i+a)!==0&&$r("Can't get session input/output metadata.");let o=Number(r.getValue(i,"*"));s=Number(r.getValue(i+a,"*"));let l=r.HEAP32[s/4];if(l===0)return[o,0];let u=r.HEAPU32[s/4+1],p=[];for(let d=0;d<u;d++){let c=Number(r.getValue(s+8+d*a,"*"));p.push(c!==0?r.UTF8ToString(c):Number(r.getValue(s+8+(d+u)*a,"*")))}return[o,l,p]}finally{r.stackRestore(n),s!==0&&r._OrtFree(s)}},gc=e=>{let t=Fr(),r=t._malloc(e.byteLength);if(r===0)throw new Error(`Can't create a session. failed to allocate a buffer of size ${e.byteLength}.`);return t.HEAPU8.set(e,r),[r,e.byteLength]},Lg=async(e,t)=>{let r,n,s=Fr();Array.isArray(e)?[r,n]=e:e.buffer===s.HEAPU8.buffer?[r,n]=[e.byteOffset,e.byteLength]:[r,n]=gc(e);let a=0,i=0,o=0,l=[],u=[],p=[];try{if([i,l]=await Wf(t),t?.externalData&&s.mountExternalData){let _=[];for(let w of t.externalData){let b=typeof w=="string"?w:w.path;_.push(Ip(typeof w=="string"?w:w.data).then(v=>{s.mountExternalData(b,v)}))}await Promise.all(_)}for(let _ of t?.executionProviders??[])if((typeof _=="string"?_:_.name)==="webnn"){if(s.shouldTransferToMLTensor=!1,typeof _!="string"){let w=_,b=w?.context,v=w?.gpuDevice,y=w?.deviceType,$=w?.powerPreference;b?s.currentContext=b:v?s.currentContext=await s.webnnCreateMLContext(v):s.currentContext=await s.webnnCreateMLContext({deviceType:y,powerPreference:$})}else s.currentContext=await s.webnnCreateMLContext();break}a=await s._OrtCreateSession(r,n,i),s.webgpuOnCreateSession?.(a),a===0&&$r("C
2822an't create a session."),s.jsepOnCreateSession?.(),s.currentContext&&(s.webnnRegisterMLContext(a,s.currentContext),s.currentContext=void 0,s.shouldTransferToMLTensor=!0);let[d,c]=sM(a),g=!!t?.enableGraphCapture,A=[],m=[],B=[],f=[],h=[];for(let _=0;_<d;_++){let[w,b,v]=Fg(a,_);w===0&&$r("Can't get an input name."),u.push(w);let y=s.UTF8ToString(w);A.push(y),B.push(b===0?{name:y,isTensor:!1}:{name:y,isTensor:!0,type:Da(b),shape:v})}for(let _=0;_<c;_++){let[w,b,v]=Fg(a,_+d);w===0&&$r("Can't get an output name."),p.push(w);let y=s.UTF8ToString(w);m.push(y),f.push(b===0?{name:y,isTensor:!1}:{name:y,isTensor:!0,type:Da(b),shape:v});{if(g&&t?.preferredOutputLocation===void 0){h.push("gpu-buffer");continue}let $=typeof t?.preferredOutputLocation=="string"?t.preferredOutputLocation:t?.preferredOutputLocation?.[y]??"cpu";if($!=="cpu"&&$!=="cpu-pinned"&&$!=="gpu-buffer"&&$!=="ml-tensor")throw new Error(`Not supported preferred output location: ${$}.`);if(g&&$!=="gpu-buffer")throw new Error(`Not supported preferred output location: ${$}. Only 'gpu-buffer' location is supported when enableGraphCapture is true.`);h.push($)}}let P=null;return h.some(_=>_==="gpu-buffer"||_==="ml-tensor")&&(o=s._OrtCreateBinding(a),o===0&&$r("Can't create IO binding."),P={handle:o,outputPreferredLocations:h,outputPreferredLocationsEncoded:h.map(_=>Dp(_))}),Qa.set(a,[a,u,p,P,g,!1]),[a,A,m,B,f]}catch(d){throw u.forEach(c=>s._OrtFree(c)),p.forEach(c=>s._OrtFree(c)),o!==0&&s._OrtReleaseBinding(o)!==0&&$r("Can't release IO binding."),a!==0&&s._OrtReleaseSession(a)!==0&&$r("Can't release session."),d}finally{s._free(r),i!==0&&s._OrtReleaseSessionOptions(i)!==0&&$r("Can't release session options."),l.forEach(d=>s._free(d)),s.unmountExternalData?.()}},Rg=e=>{let t=Fr(),r=Qa.get(e);if(!r)throw new Error(`cannot release session. invalid session id: ${e}`);let[n,s,a,i,o]=r;i&&(o&&t._OrtClearBoundOutputs(i.handle)!==0&&$r("Can't clear bound outputs."),t._OrtReleaseBinding(i.handle)!==0&&$r("Can't release IO binding.")),t.jsepOnReleaseSession?.(e),t.webnnOnReleaseSession?.(e),t.webgpuOnReleaseSession?.(e),s.forEach(l=>t._OrtFree(l)),a.forEach(l=>t._OrtFree(l)),t._OrtReleaseSession(n)!==0&&$r("Can't release session."),Qa.delete(e)},Yg=async(e,t,r,n,s,a,i=!1)=>{if(!e){t.push(0);return}let o=Fr(),l=o.PTR_SIZE,u=e[0],p=e[1],d=e[3],c=d,g,A;if(u==="string"&&(d==="gpu-buffer"||d==="ml-tensor"))throw new Error("String tensor is not supported on GPU.");if(i&&d!=="gpu-buffer")throw new Error(`External buffer must be provided for input/output index ${a} when enableGraphCapture is true.`);if(d==="gpu-buffer"){let f=e[2].gpuBuffer;A=$i(Bo(u),p);{let h=o.jsepRegisterBuffer;if(!h)throw new Error('Tensor location "gpu-buffer" is not supported without using WebGPU.');g=h(n,a,f,A)}}else if(d==="ml-tensor"){let f=e[2].mlTensor;A=$i(Bo(u),p);let h=o.webnnRegisterMLTensor;if(!h)throw new Error('Tensor location "ml-tensor" is not supported without using WebNN.');g=h(n,f,Bo(u),p)}else{let f=e[2];if(Array.isArray(f)){A=l*f.length,g=o._malloc(A),r.push(g);for(let h=0;h<f.length;h++){if(typeof f[h]!="string")throw new TypeError(`tensor data at index ${h} is not a string`);o.setValue(g+h*l,zs(f[h],r),"*")}}else{let h=o.webnnIsGraphInput;if(u!=="string"&&h){let P=o.UTF8ToString(s);if(h(n,P)){let _=Bo(u);A=$i(_,p),c="ml-tensor";let w=o.webnnCreateTemporaryTensor,b=o.webnnUploadTensor;if(!w||!b)throw new Error('Tensor location "ml-tensor" is not supported without using WebNN.');let v=await w(n,_,p);b(v,new Uint8Array(f.buffer,f.byteOffset,f.byteLength)),g=v}else A=f.byteLength,g=o._malloc(A),r.push(g),o.HEAPU8.set(new Uint8Array(f.buffer,f.byteOffset,A),g)}else A=f.byteLength,g=o._malloc(A),r.push(g),o.HEAPU8.set(new Uint8Array(f.buffer,f.byteOffset,A),g)}}let m=o.stackSave(),B=o.stackAlloc(4*p.length);try{p.forEach((h,P)=>o.setValue(B+P*l,h,l===4?"i32":"i64"));let f=o._OrtCreateTensor(Bo(u),g,A,B,p.length,Dp(c));f===0&&$r(`Can't create tensor for input/output. session=${n}, index=${a}.`),t.push(f)}finally{o.stackRestore(m)}},Ng=async(e,t,r,n,s,a)=>{let i=Fr(),o=i.PTR_SIZE,l=Qa.get(e);if(!l)throw new Error(`cannot run inference. invalid session id: ${e}`);let u=l[0],p=l[1],d=l[2],c=l[3],g=l[4],A=l[5],m=t.length,B=n.length,f=0,h=[],P=[],_=[],w=[],b=i.stackSave(),v=i.stackAlloc(m*o),y=i.stackAlloc(m*o),$=i.stackAlloc(B*o),k=i.stackAlloc(B*o);try{[f,h]=Rf(a);for(let F=0;F<m;F++)await Yg(r[F],P,w,e,p[t[F]],t[F],g);for(let F=0;F<B;F++)await Yg(s[F],_,w,e,d[n[F]],m+n[F],g);for(let F=0;F<m;F++)i.setValue(v+F*o,P[F],"*"),i.setValue(y+F*o,p[t[F]],"*");for(let F=0;F<B;F++)i.setValue($+F*o,_[F],"*"),i.setValue(k+F*o,d[n[F]],"*");if(c&&!A){let{handle:F,outputPreferredLocations:R,outputPreferredLocationsEncoded:L}=c;if(p.length!==m)throw new Error(`input count from feeds (${m}
2822) is expected to be always equal to model's input count (${p.length}).`);for(let Q=0;Q<m;Q++){let ne=t[Q];await i._OrtBindInput(F,p[ne],P[Q])!==0&&$r(`Can't bind input[${Q}] for session=${e}.`)}for(let Q=0;Q<B;Q++){let ne=n[Q];s[Q]?.[3]?i._OrtBindOutput(F,d[ne],_[Q],0)!==0&&$r(`Can't bind pre-allocated output[${Q}] for session=${e}.`):i._OrtBindOutput(F,d[ne],0,L[ne])!==0&&$r(`Can't bind output[${Q}] to ${R[Q]} for session=${e}.`)}Qa.set(e,[u,p,d,c,g,!0])}i.jsepOnRunStart?.(u),i.webnnOnRunStart?.(u);let W;c?W=await i._OrtRunWithBinding(u,c.handle,B,$,f):W=await i._OrtRun(u,y,v,m,k,B,$,f),W!==0&&$r("failed to call OrtRun().");let j=[];for(let F=0;F<B;F++){let R=Number(i.getValue($+F*o,"*"));if(R===_[F]){j.push(s[F]);continue}let L=i.stackSave(),Q=i.stackAlloc(4*o),ne=!1,re,ce=0;try{i._OrtGetTensorData(R,Q,Q+o,Q+2*o,Q+3*o)!==0&&$r(`Can't access output tensor data on index ${F}.`);let ge=o===4?"i32":"i64",q=Number(i.getValue(Q,ge));ce=i.getValue(Q+o,"*");let V=i.getValue(Q+o*2,"*"),U=Number(i.getValue(Q+o*3,ge)),N=[];for(let De=0;De<U;De++)N.push(Number(i.getValue(V+De*o,ge)));i._OrtFree(V)!==0&&$r("Can't free memory for tensor dims.");let oe=N.reduce((De,Ie)=>De*Ie,1);re=Da(q);let fe=c?.outputPreferredLocations[n[F]];if(re==="string"){if(fe==="gpu-buffer"||fe==="ml-tensor")throw new Error("String tensor is not supported on GPU.");let De=[];for(let Ie=0;Ie<oe;Ie++){let je=i.getValue(ce+Ie*o,"*"),Me=i.getValue(ce+(Ie+1)*o,"*"),se=Ie===oe-1?void 0:Me-je;De.push(i.UTF8ToString(je,se))}j.push([re,N,De,"cpu"])}else if(fe==="gpu-buffer"&&oe>0){let De=i.jsepGetBuffer;if(!De)throw new Error('preferredLocation "gpu-buffer" is not supported without using WebGPU.');let Ie=De(ce),je=$i(q,oe);if(je===void 0||!xp(re))throw new Error(`Unsupported data type: ${re}`);ne=!0,j.push([re,N,{gpuBuffer:Ie,download:i.jsepCreateDownloader(Ie,je,re),dispose:()=>{i._OrtReleaseTensor(R)!==0&&$r("Can't release tensor.")}},"gpu-buffer"])}else if(fe==="ml-tensor"&&oe>0){let De=i.webnnEnsureTensor,Ie=i.webnnIsInt64Supported;if(!De||!Ie)throw new Error('preferredLocation "ml-tensor" is not supported without using WebNN.');if($i(q,oe)===void 0||!Ep(re))throw new Error(`Unsupported data type: ${re}`);if(re==="int64"&&!Ie(e))throw new Error('preferredLocation "ml-tensor" for int64 output is not supported by current WebNN Context.');let je=await De(e,ce,q,N,!1);ne=!0,j.push([re,N,{mlTensor:je,download:i.webnnCreateMLTensorDownloader(ce,re),dispose:()=>{i.webnnReleaseTensorId(ce),i._OrtReleaseTensor(R)}},"ml-tensor"])}else{let De=Bp(re),Ie=new De(oe);new Uint8Array(Ie.buffer,Ie.byteOffset,Ie.byteLength).set(i.HEAPU8.subarray(ce,ce+Ie.byteLength)),j.push([re,N,Ie,"cpu"])}}finally{i.stackRestore(L),re==="string"&&ce&&i._free(ce),ne||i._OrtReleaseTensor(R),i.webnnOnRunEnd?.(u)}}return c&&!g&&(i._OrtClearBoundOutputs(c.handle)!==0&&$r("Can't clear bound outputs."),Qa.set(e,[u,p,d,c,g,!1])),j}finally{i.stackRestore(b),P.forEach(W=>i._OrtReleaseTensor(W)),_.forEach(W=>i._OrtReleaseTensor(W)),w.forEach(W=>i._free(W)),f!==0&&i._OrtReleaseRunOptions(f),h.forEach(W=>i._free(W))}},jg=e=>{let t=Fr(),r=Qa.get(e);if(!r)throw new Error("invalid session id");let n=r[0],s=t._OrtEndProfiling(n);s===0&&$r("Can't get an profile file name."),t._OrtFree(s)},Ug=e=>{let t=[];for(let r of e){let n=r[2];!Array.isArray(n)&&"buffer"in n&&t.push(n.buffer)}return t}}),Ha,ws,Io,Sl,kl,Ac,Wg,hc,Li,Ri,iM,oM,lM,uM,cM,dM,pM,gM,AM=Je(()=>{Gs(),aM(),Ci(),yp(),Ha=()=>!!jr.wasm.proxy&&typeof document<"u",Io=!1,Sl=!1,kl=!1,hc=new Map,Li=(e,t)=>{let r=hc.get(e);r?r.push(t):hc.set(e,[t])},Ri=()=>{if(Io||!Sl||kl||!ws)throw new Error("worker not ready")},iM=e=>{switch(e.data.type){case"init-wasm":Io=!1,e.data.err?(kl=!0,Wg[1](e.data.err)):(Sl=!0,Wg[0]()),Ac&&(URL.revokeObjectURL(Ac),Ac=void 0);break;case"init-ep":case"copy-from":case"create":case"release":case"run":case"end-profiling":{let t=hc.get(e.data.type);e.data.err?t.shift()[1](e.data.err):t.shift()[0](e.data.out);break}}},oM=async()=>{if(!Sl){if(Io)throw new Error("multiple calls to 'initWasm()' detected.");if(kl)throw new Error("previous call to 'initWasm()' failed.");
vendor: 3,402 bytes, line 2822
2822if(Io=!0,Ha())return new Promise((e,t)=>{ws?.terminate(),Of().then(([r,n])=>{try{ws=n,ws.onerror=a=>t(a),ws.onmessage=iM,Wg=[e,t];let s={type:"init-wasm",in:jr};!s.in.wasm.wasmPaths&&(r||mp)&&(s.in.wasm.wasmPaths={wasm:new URL("/assets/ort-wasm-simd-threaded.jsep-B0T3yYHD.wasm",self.location.href).href}),ws.postMessage(s),Ac=r}catch(s){t(s)}},t)});try{await Mp(jr.wasm),await Gg(jr),Sl=!0}catch(e){throw kl=!0,e}finally{Io=!1}}},lM=async e=>{if(Ha())return Ri(),new Promise((t,r)=>{Li("init-ep",[t,r]);let n={type:"init-ep",in:{epName:e,env:jr}};ws.postMessage(n)});await zg(jr,e)},uM=async e=>Ha()?(Ri(),new Promise((t,r)=>{Li("copy-from",[t,r]);let n={type:"copy-from",in:{buffer:e}};ws.postMessage(n,[e.buffer])})):gc(e),cM=async(e,t)=>{if(Ha()){if(t?.preferredOutputLocation)throw new Error('session option "preferredOutputLocation" is not supported for proxy.');return Ri(),new Promise((r,n)=>{Li("create",[r,n]);let s={type:"create",in:{model:e,options:{...t}}},a=[];e instanceof Uint8Array&&a.push(e.buffer),ws.postMessage(s,a)})}else return Lg(e,t)},dM=async e=>{if(Ha())return Ri(),new Promise((t,r)=>{Li("release",[t,r]);let n={type:"release",in:e};ws.postMessage(n)});Rg(e)},pM=async(e,t,r,n,s,a)=>{if(Ha()){if(r.some(i=>i[3]!=="cpu"))throw new Error("input tensor on GPU is not supported for proxy.");if(s.some(i=>i))throw new Error("pre-allocated output tensor is not supported for proxy.");return Ri(),new Promise((i,o)=>{Li("run",[i,o]);let l=r,u={type:"run",in:{sessionId:e,inputIndices:t,inputs:l,outputIndices:n,options:a}};ws.postMessage(u,Ug(l))})}else return Ng(e,t,r,n,s,a)},gM=async e=>{if(Ha())return Ri(),new Promise((t,r)=>{Li("end-profiling",[t,r]);let n={type:"end-profiling",in:e};ws.postMessage(n)});jg(e)}}),Vg,hM,mM,w4=Je(()=>{Gs(),AM(),zt(),cp(),Vf(),Vg=(e,t)=>{switch(e.location){case"cpu":return[e.type,e.dims,e.data,"cpu"];case"gpu-buffer":return[e.type,e.dims,{gpuBuffer:e.gpuBuffer},"gpu-buffer"];case"ml-tensor":return[e.type,e.dims,{mlTensor:e.mlTensor},"ml-tensor"];default:throw new Error(`invalid data location: ${e.location} for ${t()}`)}},hM=e=>{switch(e[3]){case"cpu":return new ks(e[0],e[2],e[1]);case"gpu-buffer":{let t=e[0];if(!xp(t))throw new Error(`not supported data type: ${t} for deserializing GPU tensor`);let{gpuBuffer:r,download:n,dispose:s}=e[2];return ks.fromGpuBuffer(r,{dataType:t,dims:e[1],download:n,dispose:s})}case"ml-tensor":{let t=e[0];if(!Ep(t))throw new Error(`not supported data type: ${t} for deserializing MLTensor tensor`);let{mlTensor:r,download:n,dispose:s}=e[2];return ks.fromMLTensor(r,{dataType:t,dims:e[1],download:n,dispose:s})}default:throw new Error(`invalid data location: ${e[3]}`)}},mM=class{async fetchModelAndCopyToWasmMemory(e){return uM(await Ip(e))}async loadModel(e,t){Os();let r;typeof e=="string"?r=await this.fetchModelAndCopyToWasmMemory(e):r=e,[this.sessionId,this.inputNames,this.outputNames,this.inputMetadata,this.outputMetadata]=await cM(r,t),_s()}async dispose(){return dM(this.sessionId)}async run(e,t,r){Os();let n=[],s=[];Object.entries(e).forEach(d=>{let c=d[0],g=d[1],A=this.inputNames.indexOf(c);if(A===-1)throw new Error(`invalid input '${c}'`);n.push(g),s.push(A)});let a=[],i=[];Object.entries(t).forEach(d=>{let c=d[0],g=d[1],A=this.outputNames.indexOf(c);if(A===-1)throw new Error(`invalid output '${c}'`);a.push(g),i.push(A)});let o=n.map((d,c)=>Vg(d,()=>`input "${this.inputNames[s[c]]}
2822"`)),l=a.map((d,c)=>d?Vg(d,()=>`output "${this.outputNames[i[c]]}"`):null),u=await pM(this.sessionId,s,o,i,l,r),p={};for(let d=0;d<u.length;d++)p[this.outputNames[i[d]]]=a[d]??hM(u[d]);return _s(),p}startProfiling(){}endProfiling(){gM(this.sessionId)}}}),fM={};vo(fM,{OnnxruntimeWebAssemblyBackend:()=>Hg,initializeFlags:()=>Qg,wasmBackend:()=>_M});var Qg,Hg,_M,y4=Je(()=>{Gs(),AM(),w4(),Qg=()=>{(typeof jr.wasm.initTimeout!="number"||jr.wasm.initTimeout<0)&&(jr.wasm.initTimeout=0);let e=jr.wasm.simd;if(typeof e!="boolean"&&e!==void 0&&e!=="fixed"&&e!=="relaxed"&&(console.warn(`Property "env.wasm.simd" is set to unknown value "${e}". Reset it to \`false\` and ignore SIMD feature checking.`),jr.wasm.simd=!1),typeof jr.wasm.proxy!="boolean"&&(jr.wasm.proxy=!1),typeof jr.wasm.trace!="boolean"&&(jr.wasm.trace=!1),typeof jr.wasm.numThreads!="number"||!Number.isInteger(jr.wasm.numThreads)||jr.wasm.numThreads<=0)if(typeof self<"u"&&!self.crossOriginIsolated)jr.wasm.numThreads=1;else{let t=typeof navigator>"u"?ik("node:os").cpus().length:navigator.hardwareConcurrency;jr.wasm.numThreads=Math.min(4,Math.ceil((t||1)/2))}},Hg=class{async init(e){Qg(),await oM(),await lM(e)}async createInferenceSessionHandler(e,t){let r=new mM;return await r.loadModel(e,t),r}},_M=new Hg});Gs(),Gs(),Gs();var b4="1.22.0-dev.20250409-89f8206ba4",P4=vf;{let e=(y4(),_l(fM)).wasmBackend;Ii("webgpu",e,5),Ii("webnn",e,5),Ii("cpu",e,10),Ii("wasm",e,10)}Object.defineProperty(jr.versions,"web",{value:b4,enumerable:!0});var M4=Object.freeze({__proto__:null,get InferenceSession(){return up},get TRACE(){return bl},get TRACE_FUNC_BEGIN(){return Os},get TRACE_FUNC_END(){return _s},get Tensor(){return ks},default:P4,get env(){return jr},get registerBackend(){return Ii}}),Kg={},v4={"onnxruntime-common":(e=>{e.exports=rk}),"onnxruntime-web":(e=>{e.exports=M4}),"?2ce3":(()=>{}),"?7992":(()=>{}),"?5af5":(()=>{}),"?2b25":(()=>{}),"?db59":(()=>{}),"?383f":(()=>{}),"?fa4b":(()=>{}),
vendor: 47,907 bytes, lines 2822-2830
2822"./node_modules/@huggingface/jinja/dist/index.js":((e,t,r)=>{r.r(t),r.d(t,{Environment:()=>yt,Interpreter:()=>tn,Template:()=>ds,parse:()=>De,tokenize:()=>d});var n=Object.freeze({Text:"Text",NumericLiteral:"NumericLiteral",StringLiteral:"StringLiteral",Identifier:"Identifier",Equals:"Equals",OpenParen:"OpenParen",CloseParen:"CloseParen",OpenStatement:"OpenStatement",CloseStatement:"CloseStatement",OpenExpression:"OpenExpression",CloseExpression:"CloseExpression",OpenSquareBracket:"OpenSquareBracket",CloseSquareBracket:"CloseSquareBracket",OpenCurlyBracket:"OpenCurlyBracket",CloseCurlyBracket:"CloseCurlyBracket",Comma:"Comma",Dot:"Dot",Colon:"Colon",Pipe:"Pipe",CallOperator:"CallOperator",AdditiveBinaryOperator:"AdditiveBinaryOperator",MultiplicativeBinaryOperator:"MultiplicativeBinaryOperator",ComparisonBinaryOperator:"ComparisonBinaryOperator",UnaryOperator:"UnaryOperator",Comment:"Comment"}),s=class{constructor(S,ie){this.value=S,this.type=ie}};function a(S){return/\w/.test(S)}function i(S){return/[0-9]/.test(S)}function o(S){return/\s/.test(S)}var l=[["{%",n.OpenStatement],["%}",n.CloseStatement],["{{",n.OpenExpression],["}}",n.CloseExpression],["(",n.OpenParen],[")",n.CloseParen],["{",n.OpenCurlyBracket],["}",n.CloseCurlyBracket],["[",n.OpenSquareBracket],["]",n.CloseSquareBracket],[",",n.Comma],[".",n.Dot],[":",n.Colon],["|",n.Pipe],["<=",n.ComparisonBinaryOperator],[">=",n.ComparisonBinaryOperator],["==",n.ComparisonBinaryOperator],["!=",n.ComparisonBinaryOperator],["<",n.ComparisonBinaryOperator],[">",n.ComparisonBinaryOperator],["+",n.AdditiveBinaryOperator],["-",n.AdditiveBinaryOperator],["~",n.AdditiveBinaryOperator],["*",n.MultiplicativeBinaryOperator],["/",n.MultiplicativeBinaryOperator],["%",n.MultiplicativeBinaryOperator],["=",n.Equals]],u=new Map([["n",` 2823`],["t"," "],["r","\r"],["b","\b"],["f","\f"],["v","\v"],["'","'"],['"','"'],["\\","\\"]]);function p(S,ie={}){return S.endsWith(` 2824`)&&(S=S.slice(0,-1)),ie.lstrip_blocks&&(S=S.replace(/^[ \t]*({[#%-])/gm,"$1")),ie.trim_blocks&&(S=S.replace(/([#%-]})\n/g,"$1")),S.replace(/{%\s*(end)?generation\s*%}/gs,"")}function d(S,ie={}){const X=[],ae=p(S,ie);let le=0,_e=0;const Oe=at=>{let Ot="";for(;at(ae[le]);){if(ae[le]==="\\"){if(++le,le>=ae.length)throw new SyntaxError("Unexpected end of input");const lt=ae[le++],St=u.get(lt);if(St===void 0)throw new SyntaxError(`Unexpected escaped character: ${lt}`);Ot+=St;continue}if(Ot+=ae[le++],le>=ae.length)throw new SyntaxError("Unexpected end of input")}return Ot},gt=()=>{const at=X.at(-1);at&&at.type===n.Text&&(at.value=at.value.trimEnd(),at.value===""&&X.pop())},Et=()=>{for(;le<ae.length&&o(ae[le]);)++le};e:for(;le<ae.length;){const at=X.at(-1)?.type;if(at===void 0||at===n.CloseStatement||at===n.CloseExpression||at===n.Comment){let lt="";for(;le<ae.length&&!(ae[le]==="{"&&(ae[le+1]==="%"||ae[le+1]==="{"||ae[le+1]==="#"));)lt+=ae[le++];if(lt.length>0){X.push(new s(lt,n.Text));continue}}if(ae[le]==="{"&&ae[le+1]==="#"){le+=2;const lt=ae[le]==="-";lt&&++le;let St="";for(;ae[le]!=="#"||ae[le+1]!=="}";){if(le+2>=ae.length)throw new SyntaxError("Missing end of comment tag");St+=ae[le++]}const rr=St.endsWith("-");rr&&(St=St.slice(0,-1)),lt&>(),X.push(new s(St,n.Comment)),le+=2,rr&&Et();continue}if(ae.slice(le,le+3)==="{%-"){gt(),X.push(new s("{%",n.OpenStatement)),le+=3;continue}if(ae.slice(le,le+3)==="{{-"){gt(),X.push(new s("{{",n.OpenExpression)),_e=0,le+=3;continue}if(Oe(o),ae.slice(le,le+3)==="-%}"){X.push(new s("%}",n.CloseStatement)),le+=3,Et();continue}if(ae.slice(le,le+3)==="-}}"){X.push(new s("}}",n.CloseExpression)),le+=3,Et();continue}const Ot=ae[le];if(Ot==="-"||Ot==="+"){const lt=X.at(-1)?.type;if(lt===n.Text||lt===void 0)throw new SyntaxError(`Unexpected character: ${Ot}`);switch(lt){case n.Identifier:case n.NumericLiteral:case n.StringLiteral:case n.CloseParen:case n.CloseSquareBracket:break;default:{++le;const St=Oe(i);X.push(new s(`${Ot}${St}`,St.length>0?n.NumericLiteral:n.UnaryOperator));continue}}}for(const[lt,St]of l){if(lt==="}}"&&_e>0)continue;if(ae.slice(le,le+lt.length)===lt){X.push(new s(lt,St)),St===n.OpenExpression?_e=0:St===n.OpenCurlyBracket?++_e:St===n.CloseCurlyBracket&&--_e,le+=lt.length;continue e}}if(Ot==="'"||Ot==='"'){++le;const lt=Oe(St=>St!==Ot);X.push(new s(lt,n.StringLiteral)),++le;continue}if(i(Ot)){let lt=Oe(i);if(ae[le]==="."&&i(ae[le+1])){++le;const St=Oe(i);lt=`${lt}.${St}`}X.push(new s(lt,n.NumericLiteral));continue}if(a(Ot)){const lt=Oe(a);X.push(new s(lt,n.Identifier));continue}throw new SyntaxError(`Unexpected character: ${Ot}`)}return X}var c=class{type="Statement"},g=class extends c{constructor(S){super(),this.body=S}type="Program"},A=class extends c{constructor(S,ie,X){super(),this.test=S,this.body=ie,this.alternate=X}type="If"},m=class extends c{constructor(S,ie,X,ae){super(),this.loopvar=S,this.iterable=ie,this.body=X,this.defaultBlock=ae}type="For"},B=class extends c{type="Break"},f=class extends c{type="Continue"},h=class extends c{constructor(S,ie,X){super(),this.assignee=S,this.value=ie,this.body=X}type="Set"},P=class extends c{constructor(S,ie,X){super(),this.name=S,this.args=ie,this.body=X}type="Macro"},_=class extends c{constructor(S){super(),this.value=S}type="Comment"},w=class extends c{type="Expression"},b=class extends w{constructor(S,ie,X){super(),this.object=S,this.property=ie,this.computed=X}type="MemberExpression"},v=class extends w{constructor(S,ie){super(),this.callee=S,this.args=ie}type="CallExpression"},y=class extends w{constructor(S){super(),this.value=S}type="Identifier"},$=class extends w{constructor(S){super(),this.value=S}type="Literal"},k=class extends ${type="IntegerLiteral"},W=class extends ${type="FloatLiteral"},j=class extends ${type="StringLiteral"},F=class extends ${type="ArrayLiteral"},R=class extends ${type="TupleLiteral"},L=class extends ${type="ObjectLiteral"},Q=class extends w{constructor(S,ie,X){super(),this.operator=S,this.left=ie,this.right=X}type="BinaryExpression"},ne=class extends w{constructor(S,ie){super(),this.operand=S,this.filter=ie}type="FilterExpression"},re=class extends c{constructor(S,ie){super(),this.filter=S,this.body=ie}type="FilterStatement"},ce=class extends w{constructor(S,ie){super(),this.lhs=S,this.test=ie}type="SelectExpression"},ge=class extends w{constructor(S,ie,X){super(),this.operand=S,this.negate=ie,this.test=X}type="TestExpression"},q=class extends w{constructor(S,ie){super(),this.operator=S,this.argument=ie}type="UnaryExpression"},V=class extends w{constructor(S=void 0,ie=void 0,X=void 0){super(),this.start=S,this.stop=ie,this.step=X}type="SliceExpression"},U=class extends w{constructor(S,ie){super(),this.key=S,this.value=ie}type="KeywordArgumentExpression"},N=class extends w{constructor(S){super(),this.argument=S}type="SpreadExpression"},oe=class extends c{constructor(S,ie,X){super(),this.call=S,this.callerArgs=ie,this.body=X}type="CallStatement"},fe=class extends w{constructor(S,ie,X){super(),this.condition=S,this.trueExpr=ie,this.falseExpr=X}type="Ternary"};function De(S){const ie=new g([]);let X=0;function ae(Ke,Ze){const ft=S[X++];if(!ft||ft.type!==Ke)throw new Error(`Parser Error: ${Ze}. ${ft.type} !== ${Ke}.`);return ft}function le(Ke){if(!Et(Ke))throw new SyntaxError(`Expected ${Ke}`);++X}function _e(){switch(S[X].type){case n.Comment:return new _(S[X++].value);case n.Text:return at();case n.OpenStatement:return Ot();case n.OpenExpression:return lt();default:throw new SyntaxError(`Unexpected token type: ${S[X].type}`)}}function Oe(...Ke){return X+Ke.length<=S.length&&Ke.every((Ze,ft)=>Ze===S[X+ft].type)}function gt(...Ke){return S[X]?.type===n.OpenStatement&&S[X+1]?.type===n.Identifier&&Ke.includes(S[X+1]?.value)}function Et(...Ke){return X+Ke.length<=S.length&&Ke.every((Ze,ft)=>S[X+ft].type==="Identifier"&&Ze===S[X+ft].value)}function at(){return new j(ae(n.Text,"Expected text token").value)}function Ot(){if(ae(n.OpenStatement,"Expected opening statement token"),S[X].type!==n.Identifier)throw new SyntaxError(`Unknown statement, got ${S[X].type}`);const Ke=S[X].value;let Ze;switch(Ke){case"set":++X,Ze=St();break;case"if":++X,Ze=rr(),ae(n.OpenStatement,"Expected {% token"),le("endif"),ae(n.CloseStatement,"Expected %} token");break;case"macro":++X,Ze=Hr(),ae(n.OpenStatement,"Expected {% token"),le("endmacro"),ae(n.CloseStatement,"Expected %} token");break;case"for":++X,Ze=yr(),ae(n.OpenStatement,"Expected {% token"),le("endfor"),ae(n.CloseStatement,"Expected %} token");break;case"call":{++X;let ft=null;Oe(n.OpenParen)&&(ft=jn());const Dr=wn();if(Dr.type!=="Identifier")throw new SyntaxError("Expected identifier following call statement");const ta=jn();ae(n.CloseStatement,"Expected closing statement token");const Ds=[];for(;!gt("endcall");)Ds.push(_e());ae(n.OpenStatement,"Expected '{%'"),le("endcall"),ae(n.CloseStatement,"Expected closing statement token");const ra=new v(Dr,ta);Ze=new oe(ra,ft,Ds);break}case"break":++X,ae(n.CloseStatement,"Expected closing statement token"),Ze=new B;break;case"continue":++X,ae(n.CloseStatement,"Expected closing statement token"),Ze=new f;break;case"filter":{++X;let ft=wn();ft instanceof y&&Oe(n.OpenParen)&&(ft=Rr(ft)),ae(n.CloseStatement,"Expected closing statement token");const Dr=[];for(;!gt("endfilter");)Dr.push(_e());ae(n.OpenStatement,"Expected '{%'"),le("endfilter"),ae(n.CloseStatement,"Expected '%}'"),Ze=new re(ft,Dr);break}default:throw new SyntaxError(`Unknown statement type: ${Ke}`)}return Ze}function lt(){ae(n.OpenExpression,"Expected opening expression token");const Ke=ln();return ae(n.CloseExpression,"Expected closing expression token"),Ke}function St(){const Ke=kr();let Ze=null;const ft=[];if(Oe(n.Equals))++X,Ze=kr();else{for(ae(n.CloseStatement,"Expected %} token");!gt("endset");)ft.push(_e());ae(n.OpenStatement,"Expected {% token"),le("endset")}return ae(n.CloseStatement,"Expected closing statement token"),new h(Ke,Ze,ft)}function rr(){const Ke=ln();ae(n.CloseStatement,"Expected closing statement token");const Ze=[],ft=[];for(;!gt("elif","else","endif");)Ze.push(_e());if(gt("elif")){++X,++X;const Dr=rr();ft.push(Dr)}else if(gt("else"))for(++X,++X,ae(n.CloseStatement,"Expected closing statement token");!gt("endif");)ft.push(_e());return new A(Ke,Ze,ft)}function Hr(){const Ke=wn();if(Ke.type!=="Identifier")throw new SyntaxError("Expected identifier following macro statement");const Ze=jn();ae(n.CloseStatement,"Expected closing statement token");const ft=[];for(;!gt("endmacro");)ft.push(_e());return new P(Ke,Ze,ft)}function kr(Ke=!1){const Ze=Ke?wn:ln,ft=[Ze()],Dr=Oe(n.Comma);for(;Dr&&(++X,ft.push(Ze()),!!Oe(n.Comma)););return Dr?new R(ft):ft[0]}function yr(){const Ke=kr(!0);if(!(Ke instanceof y||Ke instanceof R))throw new SyntaxError(`Expected identifier/tuple for the loop variable, got ${Ke.type} instead`);if(!Et("in"))throw new SyntaxError("Expected `in` keyword following loop variable");++X;const Ze=ln();ae(n.CloseStatement,"Expected closing statement token");const ft=[];for(;!gt("endfor","else");)ft.push(_e());const Dr=[];if(gt("else"))for(++X,++X,ae(n.CloseStatement,"Expected closing statement token");!gt("endfor");)Dr.push(_e());return new m(Ke,Ze,ft,Dr)}function ln(){return vs()}function vs(){const Ke=En();if(Et("if")){++X;const Ze=En();if(Et("else")){++X;const ft=vs();return new fe(Ze,Ke,ft)}else return new ce(Ke,Ze)}return Ke}function En(){let Ke=ps();for(;Et("or");){const Ze=S[X];++X;const ft=ps();Ke=new Q(Ze,Ke,ft)}return Ke}function ps(){let Ke=Kr();for(;Et("and");){const Ze=S[X];++X;const ft=Kr();Ke=new Q(Ze,Ke,ft)}return Ke}function Kr(){let Ke;for(;Et("not");){const Ze=S[X];++X;const ft=Kr();Ke=new q(Ze,ft)}return Ke??fn()}function fn(){let Ke=qr();for(;;){let Ze;if(Et("not","in"))Ze=new s("not in",n.Identifier),X+=2;else if(Et("in"))Ze=S[X++];else if(Oe(n.ComparisonBinaryOperator))Ze=S[X++];else break;const ft=qr();Ke=new Q(Ze,Ke,ft)}return Ke}function qr(){let Ke=xs();for(;Oe(n.AdditiveBinaryOperator);){const Ze=S[X];++X;const ft=xs();Ke=new Q(Ze,Ke,ft)}return Ke}function vr(){const Ke=Bs(wn());return Oe(n.OpenParen)?Rr(Ke):Ke}function Rr(Ke){let Ze=new v(Ke,jn());return Ze=Bs(Ze),Oe(n.OpenParen)&&(Ze=Rr(Ze)),Ze}function jn(){ae(n.OpenParen,"Expected opening parenthesis for arguments list");const Ke=Zn();return ae(n.CloseParen,"Expected closing parenthesis for arguments list"),Ke}function Zn(){const Ke=[];for(;!Oe(n.CloseParen);){let Ze;if(S[X].type===n.MultiplicativeBinaryOperator&&S[X].value==="*"){++X;const ft=ln();Ze=new N(ft)}else if(Ze=ln(),Oe(n.Equals)){if(++X,!(Ze instanceof y))throw new SyntaxError("Expected identifier for keyword argument");const ft=ln();Ze=new U(Ze,ft)}Ke.push(Ze),Oe(n.Comma)&&++X}return Ke}function ea(){const Ke=[];let Ze=!1;for(;!Oe(n.CloseSquareBracket);)Oe(n.Colon)?(Ke.push(void 0),++X,Ze=!0):(Ke.push(ln()),Oe(n.Colon)&&(++X,Ze=!0));if(Ke.length===0)throw new SyntaxError("Expected at least one argument for member/slice expression");if(Ze){if(Ke.length>3)throw new SyntaxError("Expected 0-3 arguments for slice expression");return new V(...Ke)}return Ke[0]}function Bs(Ke){for(;Oe(n.Dot)||Oe(n.OpenSquareBracket);){const Ze=S[X];++X;let ft;const Dr=Ze.type===n.OpenSquareBracket;if(Dr)ft=ea(),ae(n.CloseSquareBracket,"Expected closing square bracket");else if(ft=wn(),ft.type!=="Identifier")throw new SyntaxError("Expected identifier following dot operator");Ke=new b(Ke,ft,Dr)}return Ke}function xs(){let Ke=Es();for(;Oe(n.MultiplicativeBinaryOperator);){const Ze=S[X++],ft=Es();Ke=new Q(Ze,Ke,ft)}return Ke}function Es(){let Ke=_n();for(;Et("is");){++X;const Ze=Et("not");Ze&&++X;const ft=wn();if(!(ft instanceof y))throw new SyntaxError("Expected identifier for the test");Ke=new ge(Ke,Ze,ft)}return Ke}function _n(){let Ke=vr();for(;Oe(n.Pipe);){++X;let Ze=wn();if(!(Ze instanceof y))throw new SyntaxError("Expected identifier for the filter");Oe(n.OpenParen)&&(Ze=Rr(Ze)),Ke=new ne(Ke,Ze)}return Ke}function wn(){const Ke=S[X++];switch(Ke.type){case n.NumericLiteral:{const Ze=Ke.value;return Ze.includes(".")?new W(Number(Ze)):new k(Number(Ze))}case n.StringLiteral:{let Ze=Ke.value;for(;Oe(n.StringLiteral);)Ze+=S[X++].value;return new j(Ze)}case n.Identifier:return new y(Ke.value);case n.OpenParen:{const Ze=kr();return ae(n.CloseParen,"Expected closing parenthesis, got ${tokens[current].type} instead."),Ze}case n.OpenSquareBracket:{const Ze=[];for(;!Oe(n.CloseSquareBracket);)Ze.push(ln()),Oe(n.Comma)&&++X;return++X,new F(Ze)}case n.OpenCurlyBracket:{const Ze=new Map;for(;!Oe(n.CloseCurlyBracket);){const ft=ln();ae(n.Colon,"Expected colon between key and value in object literal");const Dr=ln();Ze.set(ft,Dr),Oe(n.Comma)&&++X}return++X,new L(Ze)}default:throw new SyntaxError(`Unexpected token: ${Ke.type}`)}}for(;X<S.length;)ie.body.push(_e());return ie}function Ie(S,ie,X=1){ie===void 0&&(ie=S,S=0);const ae=[];for(let le=S;le<ie;le+=X)ae.push(le);return ae}function je(S,ie,X,ae=1){const le=Math.sign(ae);le>=0?(ie=(ie??=0)<0?Math.max(S.length+ie,0):Math.min(ie,S.length),X=(X??=S.length)<0?Math.max(S.length+X,0):Math.min(X,S.length)):(ie=(ie??=S.length-1)<0?Math.max(S.length+ie,-1):Math.min(ie,S.length-1),X=(X??=-1)<-1?Math.max(S.length+X,-1):Math.min(X,S.length-1));const _e=[];for(let Oe=ie;le*Oe<le*X;Oe+=ae)_e.push(S[Oe]);return _e}function Me(S){return S.replace(/\b\w/g,ie=>ie.toUpperCase())}function se(S){return H(new Date,S)}function H(S,ie){const X=new Intl.DateTimeFormat(void 0,{month:"long"}),ae=new Intl.DateTimeFormat(void 0,{month:"short"}),le=_e=>_e<10?"0"+_e:_e.toString();return ie.replace(/%[YmdbBHM%]/g,_e=>{switch(_e){case"%Y":return S.getFullYear().toString();case"%m":return le(S.getMonth()+1);case"%d":return le(S.getDate());case"%b":return ae.format(S);case"%B":return X.format(S);case"%H":return le(S.getHours());case"%M":return le(S.getMinutes());case"%%":return"%";default:return _e}})}function we(S){return S.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function be(S,ie,X,ae){if(ae===0)return S;let le=ae==null||ae<0?1/0:ae;const _e=ie.length===0?new RegExp("(?=)","gu"):new RegExp(we(ie),"gu");return S.replaceAll(_e,Oe=>le>0?(--le,X):Oe)}var Ce=class extends Error{},Se=class extends Error{},ze=class{type="RuntimeValue";value;builtins=new Map;constructor(S=void 0){this.value=S}__bool__(){return new ke(!!this.value)}toString(){return String(this.value)}},ve=class extends ze{type="IntegerValue"},Ve=class extends ze{type="FloatValue";toString(){return this.value%1===0?this.value.toFixed(1):this.value.toString()}},Be=class extends ze{type="StringValue";builtins=new Map([["upper",new At(()=>new Be(this.value.toUpperCase()))],["lower",new At(()=>new Be(this.value.toLowerCase()))],["strip",new At(()=>new Be(this.value.trim()))],["title",new At(()=>new Be(Me(this.value)))],["capitalize",new At(()=>new Be(this.value.charAt(0).toUpperCase()+this.value.slice(1)))],["length",new ve(this.value.length)],["rstrip",new At(()=>new Be(this.value.trimEnd()))],["lstrip",new At(()=>new Be(this.value.trimStart()))],["startswith",new At(S=>{if(S.length===0)throw new Error("startswith() requires at least one argument");const ie=S[0];if(ie instanceof Be)return new ke(this.value.startsWith(ie.value));if(ie instanceof He){for(const X of ie.value){if(!(X instanceof Be))throw new Error("startswith() tuple elements must be strings");if(this.value.startsWith(X.value))return new ke(!0)}return new ke(!1)}throw new Error("startswith() argument must be a string or tuple of strings")})],["endswith",new At(S=>{if(S.length===0)throw new Error("endswith() requires at least one argument");const ie=S[0];if(ie instanceof Be)return new ke(this.value.endsWith(ie.value));if(ie instanceof He){for(const X of ie.value){if(!(X instanceof Be))throw new Error("endswith() tuple elements must be strings");if(this.value.endsWith(X.value))return new ke(!0)}return new ke(!1)}throw new Error("endswith() argument must be a string or tuple of strings")})],["split",new At(S=>{const ie=S[0]??new Xe;if(!(ie instanceof Be||ie instanceof Xe))throw new Error("sep argument must be a string or null");const X=S[1]??new ve(-1);if(!(X instanceof ve))throw new Error("maxsplit argument must be a number");let ae=[];if(ie instanceof Xe){const le=this.value.trimStart();for(const{0:_e,index:Oe}of le.matchAll(/\S+/g)){if(X.value!==-1&&ae.length>=X.value&&Oe!==void 0){ae.push(_e+le.slice(Oe+_e.length));break}ae.push(_e)}}else{if(ie.value==="")throw new Error("empty separator");ae=this.value.split(ie.value),X.value!==-1&&ae.length>X.value&&ae.push(ae.splice(X.value).join(ie.value))}return new He(ae.map(le=>new Be(le)))})],["replace",new At(S=>{if(S.length<2)throw new Error("replace() requires at least two arguments");const ie=S[0],X=S[1];if(!(ie instanceof Be&&X instanceof Be))throw new Error("replace() arguments must be strings");let ae;if(S.length>2?S[2].type==="KeywordArgumentsValue"?ae=S[2].value.get("count")??new Xe:ae=S[2]:ae=new Xe,!(ae instanceof ve||ae instanceof Xe))throw new Error("replace() count argument must be a number or null");return new Be(be(this.value,ie.value,X.value,ae.value))})]])},ke=class extends ze{type="BooleanValue"};function rt(S,ie,X,ae=!0){const le=X??0;switch(S.type){case"NullValue":return"null";case"UndefinedValue":return ae?"null":"undefined";case"IntegerValue":case"FloatValue":case"StringValue":case"BooleanValue":return JSON.stringify(S.value);case"ArrayValue":case"ObjectValue":{const _e=ie?" ".repeat(ie):"",Oe=` 2825`+_e.repeat(le),gt=Oe+_e;if(S.type==="ArrayValue"){const Et=S.value.map(at=>rt(at,ie,le+1,ae));return ie?`[${gt}${Et.join(`,${gt}`)}${Oe}]`:`[${Et.join(", ")}]`}else{const Et=Array.from(S.value.entries()).map(([at,Ot])=>{const lt=`"${at}": ${rt(Ot,ie,le+1,ae)}`;return ie?`${gt}${lt}`:lt});return ie?`{${Et.join(",")}${Oe}}`:`{${Et.join(", ")}}`}}default:throw new Error(`Cannot convert to JSON: ${S.type}`)}}var Ue=class extends ze{type="ObjectValue";__bool__(){return new ke(this.value.size>0)}builtins=new Map([["get",new At(([S,ie])=>{if(!(S instanceof Be))throw new Error(`Object key must be a string: got ${S.type}`);return this.value.get(S.value)??ie??new Xe})],["items",new At(()=>this.items())],["keys",new At(()=>this.keys())],["values",new At(()=>this.values())],["dictsort",new At(S=>{let ie=new Map;const X=S.filter(gt=>gt instanceof ht?(ie=gt.value,!1):!0),ae=X.at(0)??ie.get("case_sensitive")??new ke(!1);if(!(ae instanceof ke))throw new Error("case_sensitive must be a boolean");const le=X.at(1)??ie.get("by")??new Be("key");if(!(le instanceof Be))throw new Error("by must be a string");if(!["key","value"].includes(le.value))throw new Error("by must be either 'key' or 'value'");const _e=X.at(2)??ie.get("reverse")??new ke(!1);if(!(_e instanceof ke))throw new Error("reverse must be a boolean");const Oe=Array.from(this.value.entries()).map(([gt,Et])=>new He([new Be(gt),Et])).sort((gt,Et)=>{const at=le.value==="key"?0:1,Ot=gt.value[at],lt=Et.value[at],St=Vt(Ot,lt,ae.value);return _e.value?-St:St});return new He(Oe)})]]);items(){return new He(Array.from(this.value.entries()).map(([S,ie])=>new He([new Be(S),ie])))}keys(){return new He(Array.from(this.value.keys()).map(S=>new Be(S)))}values(){return new He(Array.from(this.value.values()))}toString(){return rt(this,null,0,!1)}},ht=class extends Ue{type="KeywordArgumentsValue"},He=class extends ze{type="ArrayValue";builtins=new Map([["length",new ve(this.value.length)]]);__bool__(){return new ke(this.value.length>0)}toString(){return rt(this,null,0,!1)}},dt=class extends He{type="TupleValue"},At=class extends ze{type="FunctionValue"},Xe=class extends ze{type="NullValue"},We=class extends ze{type="UndefinedValue"},yt=class{constructor(S){this.parent=S}variables=new Map([["namespace",new At(S=>{if(S.length===0)return new Ue(new Map);if(S.length!==1||!(S[0]instanceof Ue))throw new Error("`namespace` expects either zero arguments or a single object argument");return S[0]})]]);tests=new Map([["boolean",S=>S.type==="BooleanValue"],["callable",S=>S instanceof At],["odd",S=>{if(!(S instanceof ve))throw new Error(`cannot odd on ${S.type}`);return S.value%2!==0}],["even",S=>{if(!(S instanceof ve))throw new Error(`cannot even on ${S.type}`);return S.value%2===0}],["false",S=>S.type==="BooleanValue"&&!S.value],["true",S=>S.type==="BooleanValue"&&S.value],["none",S=>S.type==="NullValue"],["string",S=>S.type==="StringValue"],["number",S=>S instanceof ve||S instanceof Ve],["integer",S=>S instanceof ve],["iterable",S=>S.type==="ArrayValue"||S.type==="StringValue"],["mapping",S=>S.type==="ObjectValue"],["lower",S=>{const ie=S.value;return S.type==="StringValue"&&ie===ie.toLowerCase()}],["upper",S=>{const ie=S.value;return S.type==="StringValue"&&ie===ie.toUpperCase()}],["none",S=>S.type==="NullValue"],["defined",S=>S.type!=="UndefinedValue"],["undefined",S=>S.type==="UndefinedValue"],["equalto",(S,ie)=>S.value===ie.value],["eq",(S,ie)=>S.value===ie.value]]);set(S,ie){return this.declareVariable(S,hn(ie))}declareVariable(S,ie){if(this.variables.has(S))throw new SyntaxError(`Variable already declared: ${S}`);return this.variables.set(S,ie),ie}setVariable(S,ie){return this.variables.set(S,ie),ie}resolve(S){if(this.variables.has(S))return this;if(this.parent)return this.parent.resolve(S);throw new Error(`Unknown variable: ${S}`)}lookupVariable(S){try{return this.resolve(S).variables.get(S)??new We}catch{return new We}}};function Mt(S){S.set("false",!1),S.set("true",!0),S.set("none",null),S.set("raise_exception",ie=>{throw new Error(ie)}),S.set("range",Ie),S.set("strftime_now",se),S.set("True",!0),S.set("False",!1),S.set("None",null)}function hr(S,ie){const X=ie.split(".");let ae=S;for(const le of X)if(ae instanceof Ue)ae=ae.value.get(le)??new We;else if(ae instanceof He){const _e=parseInt(le,10);if(!isNaN(_e)&&_e>=0&&_e<ae.value.length)ae=ae.value[_e];else return new We}else return new We;return ae}function Vt(S,ie,X=!1){if(S instanceof Xe&&ie instanceof Xe)return 0;if(S instanceof Xe||ie instanceof Xe)throw new Error(`Cannot compare ${S.type} with ${ie.type}`);if(S instanceof We&&ie instanceof We)return 0;if(S instanceof We||ie instanceof We)throw new Error(`Cannot compare ${S.type} with ${ie.type}`);const ae=_e=>_e instanceof ve||_e instanceof Ve||_e instanceof ke,le=_e=>_e instanceof ke?_e.value?1:0:_e.value;if(ae(S)&&ae(ie)){const _e=le(S),Oe=le(ie);return _e<Oe?-1:_e>Oe?1:0}if(S.type!==ie.type)throw new Error(`Cannot compare different types: ${S.type} and ${ie.type}`);if(S.type==="StringValue"){let _e=S.value,Oe=ie.value;return X||(_e=_e.toLowerCase(),Oe=Oe.toLowerCase()),_e<Oe?-1:_e>Oe?1:0}else throw new Error(`Cannot compare type: ${S.type}`)}var tn=class{global;constructor(S){this.global=S??new yt}run(S){return this.evaluate(S,this.global)}evaluateBinaryExpression(S,ie){const X=this.evaluate(S.left,ie);switch(S.operator.value){case"and":return X.__bool__().value?this.evaluate(S.right,ie):X;case"or":return X.__bool__().value?X:this.evaluate(S.right,ie)}const ae=this.evaluate(S.right,ie);switch(S.operator.value){case"==":return new ke(X.value==ae.value);case"!=":return new ke(X.value!=ae.value)}if(X instanceof We||ae instanceof We){if(ae instanceof We&&["in","not in"].includes(S.operator.value))return new ke(S.operator.value==="not in");throw new Error(`Cannot perform operation ${S.operator.value} on undefined values`)}else{if(X instanceof Xe||ae instanceof Xe)throw new Error("Cannot perform operation on null values");if(S.operator.value==="~")return new Be(X.value.toString()+ae.value.toString());if((X instanceof ve||X instanceof Ve)&&(ae instanceof ve||ae instanceof Ve)){const le=X.value,_e=ae.value;switch(S.operator.value){case"+":case"-":case"*":{const Oe=S.operator.value==="+"?le+_e:S.operator.value==="-"?le-_e:le*_e;return X instanceof Ve||ae instanceof Ve?new Ve(Oe):new ve(Oe)}case"/":return new Ve(le/_e);case"%":{const Oe=le%_e;return X instanceof Ve||ae instanceof Ve?new Ve(Oe):new ve(Oe)}case"<":return new ke(le<_e);case">":return new ke(le>_e);case">=":return new ke(le>=_e);case"<=":return new ke(le<=_e)}}else if(X instanceof He&&ae instanceof He){if(S.operator.value==="+")return new He(X.value.concat(ae.value))}else if(ae instanceof He){const le=ae.value.find(_e=>_e.value===X.value)!==void 0;switch(S.operator.value){case"in":return new ke(le);case"not in":return new ke(!le)}}}if((X instanceof Be||ae instanceof Be)&&S.operator.value==="+")return new Be(X.value.toString()+ae.value.toString());if(X instanceof Be&&ae instanceof Be)switch(S.operator.value){case"in":return new ke(ae.value.includes(X.value));case"not in":return new ke(!ae.value.includes(X.value))}if(X instanceof Be&&ae instanceof Ue)switch(S.operator.value){case"in":return new ke(ae.value.has(X.value));case"not in":return new ke(!ae.value.has(X.value))}throw new SyntaxError(`Unknown operator "${S.operator.value}" between ${X.type} and ${ae.type}`)}evaluateArguments(S,ie){const X=[],ae=new Map;for(const le of S)if(le.type==="SpreadExpression"){const _e=le,Oe=this.evaluate(_e.argument,ie);if(!(Oe instanceof He))throw new Error(`Cannot unpack non-iterable type: ${Oe.type}`);for(const gt of Oe.value)X.push(gt)}else if(le.type==="KeywordArgumentExpression"){const _e=le;ae.set(_e.key.value,this.evaluate(_e.value,ie))}else{if(ae.size>0)throw new Error("Positional arguments must come before keyword arguments");X.push(this.evaluate(le,ie))}return[X,ae]}applyFilter(S,ie,X){if(ie.type==="Identifier"){const ae=ie;if(ae.value==="tojson")return new Be(rt(S));if(S instanceof He)switch(ae.value){case"list":return S;case"first":return S.value[0];case"last":return S.value[S.value.length-1];case"length":return new ve(S.value.length);case"reverse":return new He(S.value.slice().reverse());case"sort":return new He(S.value.slice().sort((le,_e)=>Vt(le,_e,!1)));case"join":return new Be(S.value.map(le=>le.value).join(""));case"string":return new Be(rt(S,null,0,!1));case"unique":{const le=new Set,_e=[];for(const Oe of S.value)le.has(Oe.value)||(le.add(Oe.value),_e.push(Oe));return new He(_e)}default:throw new Error(`Unknown ArrayValue filter: ${ae.value}`)}else if(S instanceof Be)switch(ae.value){case"length":case"upper":case"lower":case"title":case"capitalize":{const le=S.builtins.get(ae.value);if(le instanceof At)return le.value([],X);if(le instanceof ve)return le;throw new Error(`Unknown StringValue filter: ${ae.value}`)}case"trim":return new Be(S.value.trim());case"indent":return new Be(S.value.split(` 2826`).map((le,_e)=>_e===0||le.length===0?le:" "+le).join(` 2827`));case"join":case"string":return S;case"int":{const le=parseInt(S.value,10);return new ve(isNaN(le)?0:le)}case"float":{const le=parseFloat(S.value);return new Ve(isNaN(le)?0:le)}default:throw new Error(`Unknown StringValue filter: ${ae.value}`)}else if(S instanceof ve||S instanceof Ve)switch(ae.value){case"abs":return S instanceof ve?new ve(Math.abs(S.value)):new Ve(Math.abs(S.value));case"int":return new ve(Math.floor(S.value));case"float":return new Ve(S.value);default:throw new Error(`Unknown NumericValue filter: ${ae.value}`)}else if(S instanceof Ue)switch(ae.value){case"items":return new He(Array.from(S.value.entries()).map(([le,_e])=>new He([new Be(le),_e])));case"length":return new ve(S.value.size);default:{const le=S.builtins.get(ae.value);if(le)return le instanceof At?le.value([],X):le;throw new Error(`Unknown ObjectValue filter: ${ae.value}`)}}else if(S instanceof ke)switch(ae.value){case"bool":return new ke(S.value);case"int":return new ve(S.value?1:0);case"float":return new Ve(S.value?1:0);case"string":return new Be(S.value?"true":"false");default:throw new Error(`Unknown BooleanValue filter: ${ae.value}`)}throw new Error(`Cannot apply filter "${ae.value}" to type: ${S.type}`)}else if(ie.type==="CallExpression"){const ae=ie;if(ae.callee.type!=="Identifier")throw new Error(`Unknown filter: ${ae.callee.type}`);const le=ae.callee.value;if(le==="tojson"){const[,_e]=this.evaluateArguments(ae.args,X),Oe=_e.get("indent")??new Xe;if(!(Oe instanceof ve||Oe instanceof Xe))throw new Error("If set, indent must be a number");return new Be(rt(S,Oe.value))}else if(le==="join"){let _e;if(S instanceof Be)_e=Array.from(S.value);else if(S instanceof He)_e=S.value.map(at=>at.value);else throw new Error(`Cannot apply filter "${le}" to type: ${S.type}`);const[Oe,gt]=this.evaluateArguments(ae.args,X),Et=Oe.at(0)??gt.get("separator")??new Be("");if(!(Et instanceof Be))throw new Error("separator must be a string");return new Be(_e.join(Et.value))}else if(le==="int"||le==="float"){const[_e,Oe]=this.evaluateArguments(ae.args,X),gt=_e.at(0)??Oe.get("default")??(le==="int"?new ve(0):new Ve(0));if(S instanceof Be){const Et=le==="int"?parseInt(S.value,10):parseFloat(S.value);return isNaN(Et)?gt:le==="int"?new ve(Et):new Ve(Et)}else{if(S instanceof ve||S instanceof Ve)return S;if(S instanceof ke)return le==="int"?new ve(S.value?1:0):new Ve(S.value?1:0);throw new Error(`Cannot apply filter "${le}" to type: ${S.type}`)}}else if(le==="default"){const[_e,Oe]=this.evaluateArguments(ae.args,X),gt=_e[0]??new Be(""),Et=_e[1]??Oe.get("boolean")??new ke(!1);if(!(Et instanceof ke))throw new Error("`default` filter flag must be a boolean");return S instanceof We||Et.value&&!S.__bool__().value?gt:S}if(S instanceof He){switch(le){case"sort":{const[_e,Oe]=this.evaluateArguments(ae.args,X),gt=_e.at(0)??Oe.get("reverse")??new ke(!1);if(!(gt instanceof ke))throw new Error("reverse must be a boolean");const Et=_e.at(1)??Oe.get("case_sensitive")??new ke(!1);if(!(Et instanceof ke))throw new Error("case_sensitive must be a boolean");const at=_e.at(2)??Oe.get("attribute")??new Xe;if(!(at instanceof Be||at instanceof ve||at instanceof Xe))throw new Error("attribute must be a string, integer, or null");const Ot=lt=>{if(at instanceof Xe)return lt;const St=at instanceof ve?String(at.value):at.value;return hr(lt,St)};return new He(S.value.slice().sort((lt,St)=>{const rr=Ot(lt),Hr=Ot(St),kr=Vt(rr,Hr,Et.value);return gt.value?-kr:kr}))}case"selectattr":case"rejectattr":{const _e=le==="selectattr";if(S.value.some(lt=>!(lt instanceof Ue)))throw new Error(`\`${le}\` can only be applied to array of objects`);if(ae.args.some(lt=>lt.type!=="StringLiteral"))throw new Error(`arguments of \`${le}\` must be strings`);const[Oe,gt,Et]=ae.args.map(lt=>this.evaluate(lt,X));let at;if(gt){const lt=X.tests.get(gt.value);if(!lt)throw new Error(`Unknown test: ${gt.value}`);at=lt}else at=(...lt)=>lt[0].__bool__().value;const Ot=S.value.filter(lt=>{const St=lt.value.get(Oe.value),rr=St?at(St,Et):!1;return _e?rr:!rr});return new He(Ot)}case"map":{const[,_e]=this.evaluateArguments(ae.args,X);if(_e.has("attribute")){const Oe=_e.get("attribute");if(!(Oe instanceof Be))throw new Error("attribute must be a string");const gt=_e.get("default"),Et=S.value.map(at=>{if(!(at instanceof Ue))throw new Error("items in map must be an object");const Ot=hr(at,Oe.value);return Ot instanceof We?gt??new We:Ot});return new He(Et)}else throw new Error("`map` expressions without `attribute` set are not currently supported.")}}throw new Error(`Unknown ArrayValue filter: ${le}`)}else if(S instanceof Be){switch(le){case"indent":{const[_e,Oe]=this.evaluateArguments(ae.args,X),gt=_e.at(0)??Oe.get("width")??new ve(4);if(!(gt instanceof ve))throw new Error("width must be a number");const Et=_e.at(1)??Oe.get("first")??new ke(!1),at=_e.at(2)??Oe.get("blank")??new ke(!1),Ot=S.value.split(` 2828`),lt=" ".repeat(gt.value),St=Ot.map((rr,Hr)=>!Et.value&&Hr===0||!at.value&&rr.length===0?rr:lt+rr);return new Be(St.join(` 2829`))}case"replace":{const _e=S.builtins.get("replace");if(!(_e instanceof At))throw new Error("replace filter not available");const[Oe,gt]=this.evaluateArguments(ae.args,X);return _e.value([...Oe,new ht(gt)],X)}}throw new Error(`Unknown StringValue filter: ${le}`)}else if(S instanceof Ue){const _e=S.builtins.get(le);if(_e&&_e instanceof At){const[Oe,gt]=this.evaluateArguments(ae.args,X);return gt.size>0&&Oe.push(new ht(gt)),_e.value(Oe,X)}throw new Error(`Unknown ObjectValue filter: ${le}`)}else throw new Error(`Cannot apply filter "${le}" to type: ${S.type}`)}throw new Error(`Unknown filter: ${ie.type}`)}evaluateFilterExpression(S,ie){const X=this.evaluate(S.operand,ie);return this.applyFilter(X,S.filter,ie)}evaluateTestExpression(S,ie){const X=this.evaluate(S.operand,ie),ae=ie.tests.get(S.test.value);if(!ae)throw new Error(`Unknown test: ${S.test.value}`);const le=ae(X);return new ke(S.negate?!le:le)}evaluateSelectExpression(S,ie){return this.evaluate(S.test,ie).__bool__().value?this.evaluate(S.lhs,ie):new We}evaluateUnaryExpression(S,ie){const X=this.evaluate(S.argument,ie);if(S.operator.value==="not")return new ke(!X.value);throw new SyntaxError(`Unknown operator: ${S.operator.value}`)}evaluateTernaryExpression(S,ie){return this.evaluate(S.condition,ie).__bool__().value?this.evaluate(S.trueExpr,ie):this.evaluate(S.falseExpr,ie)}evalProgram(S,ie){return this.evaluateBlock(S.body,ie)}evaluateBlock(S,ie){let X="";for(const ae of S){const le=this.evaluate(ae,ie);le.type!=="NullValue"&&le.type!=="UndefinedValue"&&(X+=le.toString())}return new Be(X)}evaluateIdentifier(S,ie){return ie.lookupVariable(S.value)}evaluateCallExpression(S,ie){const[X,ae]=this.evaluateArguments(S.args,ie);ae.size>0&&X.push(new ht(ae));const le=this.evaluate(S.callee,ie);if(le.type!=="FunctionValue")throw new Error(`Cannot call something that is not a function: got ${le.type}`);return le.value(X,ie)}evaluateSliceExpression(S,ie,X){if(!(S instanceof He||S instanceof Be))throw new Error("Slice object must be an array or string");const ae=this.evaluate(ie.start,X),le=this.evaluate(ie.stop,X),_e=this.evaluate(ie.step,X);if(!(ae instanceof ve||ae instanceof We))throw new Error("Slice start must be numeric or undefined");if(!(le instanceof ve||le instanceof We))throw new Error("Slice stop must be numeric or undefined");if(!(_e instanceof ve||_e instanceof We))throw new Error("Slice step must be numeric or undefined");return S instanceof He?new He(je(S.value,ae.value,le.value,_e.value)):new Be(je(Array.from(S.value),ae.value,le.value,_e.value).join(""))}evaluateMemberExpression(S,ie){const X=this.evaluate(S.object,ie);let ae;if(S.computed){if(S.property.type==="SliceExpression")return this.evaluateSliceExpression(X,S.property,ie);ae=this.evaluate(S.property,ie)}else ae=new Be(S.property.value);let le;if(X instanceof Ue){if(!(ae instanceof Be))throw new Error(`Cannot access property with non-string: got ${ae.type}`);le=X.value.get(ae.value)??X.builtins.get(ae.value)}else if(X instanceof He||X instanceof Be)if(ae instanceof ve)le=X.value.at(ae.value),X instanceof Be&&(le=new Be(X.value.at(ae.value)));else if(ae instanceof Be)le=X.builtins.get(ae.value);else throw new Error(`Cannot access property with non-string/non-number: got ${ae.type}`);else{if(!(ae instanceof Be))throw new Error(`Cannot access property with non-string: got ${ae.type}`);le=X.builtins.get(ae.value)}return le instanceof ze?le:new We}evaluateSet(S,ie){const X=S.value?this.evaluate(S.value,ie):this.evaluateBlock(S.body,ie);if(S.assignee.type==="Identifier"){const ae=S.assignee.value;ie.setVariable(ae,X)}else if(S.assignee.type==="TupleLiteral"){const ae=S.assignee;if(!(X instanceof He))throw new Error(`Cannot unpack non-iterable type in set: ${X.type}`);const le=X.value;if(le.length!==ae.value.length)throw new Error(`Too ${ae.value.length>le.length?"few":"many"} items to unpack in set`);for(let _e=0;_e<ae.value.length;++_e){const Oe=ae.value[_e];if(Oe.type!=="Identifier")throw new Error(`Cannot unpack to non-identifier in set: ${Oe.type}`);ie.setVariable(Oe.value,le[_e])}}else if(S.assignee.type==="MemberExpression"){const ae=S.assignee,le=this.evaluate(ae.object,ie);if(!(le instanceof Ue))throw new Error("Cannot assign to member of non-object");if(ae.property.type!=="Identifier")throw new Error("Cannot assign to member with non-identifier property");le.value.set(ae.property.value,X)}else throw new Error(`Invalid LHS inside assignment expression: ${JSON.stringify(S.assignee)}`);return new Xe}evaluateIf(S,ie){const X=this.evaluate(S.test,ie);return this.evaluateBlock(X.__bool__().value?S.body:S.alternate,ie)}evaluateFor(S,ie){const X=new yt(ie);let ae,le;if(S.iterable.type==="SelectExpression"){const at=S.iterable;le=this.evaluate(at.lhs,X),ae=at.test}else le=this.evaluate(S.iterable,X);if(!(le instanceof He||le instanceof Ue))throw new Error(`Expected iterable or object type in for loop: got ${le.type}`);le instanceof Ue&&(le=le.keys());const _e=[],Oe=[];for(let at=0;at<le.value.length;++at){const Ot=new yt(X),lt=le.value[at];let St;if(S.loopvar.type==="Identifier")St=rr=>rr.setVariable(S.loopvar.value,lt);else if(S.loopvar.type==="TupleLiteral"){const rr=S.loopvar;if(lt.type!=="ArrayValue")throw new Error(`Cannot unpack non-iterable type: ${lt.type}`);const Hr=lt;if(rr.value.length!==Hr.value.length)throw new Error(`Too ${rr.value.length>Hr.value.length?"few":"many"} items to unpack`);St=kr=>{for(let yr=0;yr<rr.value.length;++yr){if(rr.value[yr].type!=="Identifier")throw new Error(`Cannot unpack non-identifier type: ${rr.value[yr].type}`);kr.setVariable(rr.value[yr].value,Hr.value[yr])}}}else throw new Error(`Invalid loop variable(s): ${S.loopvar.type}`);ae&&(St(Ot),!this.evaluate(ae,Ot).__bool__().value)||(_e.push(lt),Oe.push(St))}let gt="",Et=!0;for(let at=0;at<_e.length;++at){const Ot=new Map([["index",new ve(at+1)],["index0",new ve(at)],["revindex",new ve(_e.length-at)],["revindex0",new ve(_e.length-at-1)],["first",new ke(at===0)],["last",new ke(at===_e.length-1)],["length",new ve(_e.length)],["previtem",at>0?_e[at-1]:new We],["nextitem",at<_e.length-1?_e[at+1]:new We]]);X.setVariable("loop",new Ue(Ot)),Oe[at](X);try{const lt=this.evaluateBlock(S.body,X);gt+=lt.value}catch(lt){if(lt instanceof Se)continue;if(lt instanceof Ce)break;throw lt}Et=!1}if(Et){const at=this.evaluateBlock(S.defaultBlock,X);gt+=at.value}return new Be(gt)}evaluateMacro(S,ie){return ie.setVariable(S.name.value,new At((X,ae)=>{const le=new yt(ae);X=X.slice();let _e;X.at(-1)?.type==="KeywordArgumentsValue"&&(_e=X.pop());for(let Oe=0;Oe<S.args.length;++Oe){const gt=S.args[Oe],Et=X[Oe];if(gt.type==="Identifier"){const at=gt;if(!Et)throw new Error(`Missing positional argument: ${at.value}`);le.setVariable(at.value,Et)}else if(gt.type==="KeywordArgumentExpression"){const at=gt,Ot=Et??_e?.value.get(at.key.value)??this.evaluate(at.value,le);le.setVariable(at.key.value,Ot)}else throw new Error(`Unknown argument type: ${gt.type}`)}return this.evaluateBlock(S.body,le)})),new Xe}evaluateCallStatement(S,ie){const X=new At((gt,Et)=>{const at=new yt(Et);if(S.callerArgs)for(let Ot=0;Ot<S.callerArgs.length;++Ot){const lt=S.callerArgs[Ot];if(lt.type!=="Identifier")throw new Error(`Caller parameter must be an identifier, got ${lt.type}`);at.setVariable(lt.value,gt[Ot]??new We)}return this.evaluateBlock(S.body,at)}),[ae,le]=this.evaluateArguments(S.call.args,ie);ae.push(new ht(le));const _e=this.evaluate(S.call.callee,ie);if(_e.type!=="FunctionValue")throw new Error(`Cannot call something that is not a function: got ${_e.type}`);const Oe=new yt(ie);return Oe.setVariable("caller",X),_e.value(ae,Oe)}evaluateFilterStatement(S,ie){const X=this.evaluateBlock(S.body,ie);return this.applyFilter(X,S.filter,ie)}evaluate(S,ie){if(!S)return new We;switch(S.type){case"Program":return this.evalProgram(S,ie);case"Set":return this.evaluateSet(S,ie);case"If":return this.evaluateIf(S,ie);case"For":return this.evaluateFor(S,ie);case"Macro":return this.evaluateMacro(S,ie);case"CallStatement":return this.evaluateCallStatement(S,ie);case"Break":throw new Ce;case"Continue":throw new Se;case"IntegerLiteral":return new ve(S.value);case"FloatLiteral":return new Ve(S.value);case"StringLiteral":return new Be(S.value);case"ArrayLiteral":return new He(S.value.map(X=>this.evaluate(X,ie)));case"TupleLiteral":return new dt(S.value.map(X=>this.evaluate(X,ie)));case"ObjectLiteral":{const X=new Map;for(const[ae,le]of S.value){const _e=this.evaluate(ae,ie);if(!(_e instanceof Be))throw new Error(`Object keys must be strings: got ${_e.type}`);X.set(_e.value,this.evaluate(le,ie))}return new Ue(X)}case"Identifier":return this.evaluateIdentifier(S,ie);case"CallExpression":return this.evaluateCallExpression(S,ie);case"MemberExpression":return this.evaluateMemberExpression(S,ie);case"UnaryExpression":return this.evaluateUnaryExpression(S,ie);case"BinaryExpression":return this.evaluateBinaryExpression(S,ie);case"FilterExpression":return this.evaluateFilterExpression(S,ie);case"FilterStatement":return this.evaluateFilterStatement(S,ie);case"TestExpression":return this.evaluateTestExpression(S,ie);case"SelectExpression":return this.evaluateSelectExpression(S,ie);case"Ternary":return this.evaluateTernaryExpression(S,ie);case"Comment":return new Xe;default:throw new SyntaxError(`Unknown node type: ${S.type}`)}}};function hn(S){switch(typeof S){case"number":return Number.isInteger(S)?new ve(S):new Ve(S);case"string":return new Be(S);case"boolean":return new ke(S);case"undefined":return new We;case"object":return S===null?new Xe:Array.isArray(S)?new He(S.map(hn)):new Ue(new Map(Object.entries(S).map(([ie,X])=>[ie,hn(X)])));case"function":return new At((ie,X)=>{const ae=S(...ie.map(le=>le.value))??null;return hn(ae)});default:throw new Error(`Cannot convert to runtime value: ${S}`)}}var ar=` 2830`,On="{%- ",ma=" -%}";function fa(S){switch(S.operator.type){case"MultiplicativeBinaryOperator":return 4;case"AdditiveBinaryOperator":return 3;case"ComparisonBinaryOperator":return 2;case"Identifier":return S.operator.value==="and"?1:S.operator.value==="in"||S.operator.value==="not in"?2:0}return 0}function _a(S,ie=" "){const X=typeof ie=="number"?" ".repeat(ie):ie;return mn(S.body,0,X).replace(/\n$/,"")}function Ur(...S){return On+S.join(" ")+ma}function mn(S,ie,X){return S.map(ae=>Nn(ae,ie,X)).join(ar)}function Nn(S,ie,X){const ae=X.repeat(ie);switch(S.type){case"Program":return mn(S.body,ie,X);case"If":return Ms(S,ie,X);case"For":return kt(S,ie,X);case"Set":return Er(S,ie,X);case"Macro":return us(S,ie,X);case"Break":return ae+Ur("break");case"Continue":return ae+Ur("continue");case"CallStatement":return cs(S,ie,X);case"FilterStatement":return pr(S,ie,X);case"Comment":return ae+"{# "+S.value+" #}";default:return ae+"{{- "+Ft(S)+" -}}"}}function Ms(S,ie,X){const ae=X.repeat(ie),le=[];let _e=S;for(;_e&&(le.push({test:_e.test,body:_e.body}),_e.alternate.length===1&&_e.alternate[0].type==="If");)_e=_e.alternate[0];let Oe=ae+Ur("if",Ft(le[0].test))+ar+mn(le[0].body,ie+1,X);for(let gt=1;gt<le.length;++gt)Oe+=ar+ae+Ur("elif",Ft(le[gt].test))+ar+mn(le[gt].body,ie+1,X);return _e&&_e.alternate.length>0&&(Oe+=ar+ae+Ur("else")+ar+mn(_e.alternate,ie+1,X)),Oe+=ar+ae+Ur("endif"),Oe}function kt(S,ie,X){const ae=X.repeat(ie);let le="";if(S.iterable.type==="SelectExpression"){const Oe=S.iterable;le=`${Ft(Oe.lhs)} if ${Ft(Oe.test)}`}else le=Ft(S.iterable);let _e=ae+Ur("for",Ft(S.loopvar),"in",le)+ar+mn(S.body,ie+1,X);return S.defaultBlock.length>0&&(_e+=ar+ae+Ur("else")+ar+mn(S.defaultBlock,ie+1,X)),_e+=ar+ae+Ur("endfor"),_e}function Er(S,ie,X){const ae=X.repeat(ie),le=Ft(S.assignee),_e=S.value?Ft(S.value):"",Oe=ae+Ur("set",`${le}${S.value?" = "+_e:""}`);return S.body.length===0?Oe:Oe+ar+mn(S.body,ie+1,X)+ar+ae+Ur("endset")}function us(S,ie,X){const ae=X.repeat(ie),le=S.args.map(Ft).join(", ");return ae+Ur("macro",`${S.name.value}(${le})`)+ar+mn(S.body,ie+1,X)+ar+ae+Ur("endmacro")}function cs(S,ie,X){const ae=X.repeat(ie),le=S.callerArgs&&S.callerArgs.length>0?`(${S.callerArgs.map(Ft).join(", ")})`:"",_e=Ft(S.call);let Oe=ae+Ur(`call${le}`,_e)+ar;return Oe+=mn(S.body,ie+1,X)+ar,Oe+=ae+Ur("endcall"),Oe}function pr(S,ie,X){const ae=X.repeat(ie),le=S.filter.type==="Identifier"?S.filter.value:Ft(S.filter);let _e=ae+Ur("filter",le)+ar;return _e+=mn(S.body,ie+1,X)+ar,_e+=ae+Ur("endfilter"),_e}function Ft(S,ie=-1){switch(S.type){case"SpreadExpression":return`*${Ft(S.argument)}`;case"Identifier":return S.value;case"IntegerLiteral":return`${S.value}`;case"FloatLiteral":return`${S.value}`;case"StringLiteral":return JSON.stringify(S.value);case"BinaryExpression":{const X=S,ae=fa(X),le=Ft(X.left,ae),_e=Ft(X.right,ae+1),Oe=`${le} ${X.operator.value} ${_e}`;return ae<ie?`(${Oe})`:Oe}case"UnaryExpression":{const X=S;return X.operator.value+(X.operator.value==="not"?" ":"")+Ft(X.argument,1/0)}case"CallExpression":{const X=S,ae=X.args.map(Ft).join(", ");return`${Ft(X.callee)}(${ae})`}case"MemberExpression":{const X=S;let ae=Ft(X.object);["Identifier","MemberExpression","CallExpression","StringLiteral","IntegerLiteral","FloatLiteral","ArrayLiteral","TupleLiteral","ObjectLiteral"].includes(X.object.type)||(ae=`(${ae})`);let le=Ft(X.property);return!X.computed&&X.property.type!=="Identifier"&&(le=`(${le})`),X.computed?`${ae}[${le}]`:`${ae}.${le}`}case"FilterExpression":{const X=S,ae=Ft(X.operand,1/0);return X.filter.type==="CallExpression"?`${ae} | ${Ft(X.filter)}`:`${ae} | ${X.filter.value}`}case"SelectExpression":{const X=S;return`${Ft(X.lhs)} if ${Ft(X.test)}`}case"TestExpression":{const X=S;return`${Ft(X.operand)} is${X.negate?" not":""} ${X.test.value}`}case"ArrayLiteral":case"TupleLiteral":{const X=S.value.map(Ft),ae=S.type==="ArrayLiteral"?"[]":"()";return`${ae[0]}${X.join(", ")}${ae[1]}`}case"ObjectLiteral":return`{${Array.from(S.value.entries()).map(([ae,le])=>`${Ft(ae)}: ${Ft(le)}`).join(", ")}}`;case"SliceExpression":{const X=S,ae=X.start?Ft(X.start):"",le=X.stop?Ft(X.stop):"",_e=X.step?`:${Ft(X.step)}`:"";return`${ae}:${le}${_e}`}case"KeywordArgumentExpression":{const X=S;return`${X.key.value}=${Ft(X.value)}`}case"Ternary":{const X=S,ae=`${Ft(X.trueExpr)} if ${Ft(X.condition,0)} else ${Ft(X.falseExpr)}`;return ie>-1?`(${ae})`:ae}default:throw new Error(`Unknown expression type: ${S.type}`)}}var ds=class{parsed;constructor(S){const ie=d(S,{lstrip_blocks:!0,trim_blocks:!0});this.parsed=De(ie)}render(S){const ie=new yt;if(Mt(ie),S)for(const[le,_e]of Object.entries(S))ie.set(le,_e);return new tn(ie).run(this.parsed).value}format(S){return _a(this.parsed,S?.indent||" ")}}}),
2830"./src/backends/onnx.js":((e,t,r)=>{var n;r.r(t),r.d(t,{Tensor:()=>o.Tensor,createInferenceSession:()=>B,deviceToExecutionProviders:()=>A,isONNXProxy:()=>b,isONNXTensor:()=>_,runInferenceSession:()=>P});var s=r("./src/env.js"),a=r("?2ce3"),i=r("onnxruntime-web"),o=r("onnxruntime-common");const l=Object.freeze({auto:null,gpu:null,cpu:"cpu",wasm:"wasm",webgpu:"webgpu",cuda:"cuda",dml:"dml",webnn:{name:"webnn",deviceType:"cpu"},"webnn-npu":{name:"webnn",deviceType:"npu"},"webnn-gpu":{name:"webnn",deviceType:"gpu"},"webnn-cpu":{name:"webnn",deviceType:"cpu"}}),u=[];let p,d;const c=Symbol.for("onnxruntime");if(c in globalThis)d=globalThis[c];else if(s.apis.IS_NODE_ENV){switch(d=a??(n||(n=r.t(a,2))),process.platform){case"win32":u.push("dml");break;case"linux":process.arch==="x64"&&u.push("cuda");break}u.push("cpu"),p=["cpu"]}else d=i,s.apis.IS_WEBNN_AVAILABLE&&u.push("webnn-npu","webnn-gpu","webnn-cpu","webnn"),s.apis.IS_WEBGPU_AVAILABLE&&u.push("webgpu"),u.push("wasm"),p=["wasm"];const g=d.InferenceSession;function A(v=null){if(!v)return p;switch(v){case"auto":return u;case"gpu":return u.filter(y=>["webgpu","cuda","dml","webnn-gpu"].includes(y))}if(u.includes(v))return[l[v]??v];throw new Error(`Unsupported device: "${v}". Should be one of: ${u.join(", ")}.`)}let m=null;async function B(v,y,$){m&&await m;const k=g.create(v,y);m??=k;const W=await k;return W.config=$,W}let f=Promise.resolve();const h=s.apis.IS_BROWSER_ENV||s.apis.IS_WEBWORKER_ENV;async function P(v,y){const $=()=>v.run(y);return await(h?f=f.then($):$())}function _(v){return v instanceof d.Tensor}const w=d?.env;w?.wasm&&(!(typeof ServiceWorkerGlobalScope<"u"&&self instanceof ServiceWorkerGlobalScope)&&!w.wasm.wasmPaths&&(w.wasm.wasmPaths=`https://cdn.jsdelivr.net/npm/@huggingface/transformers@${s.env.version}/dist/`),w.wasm.proxy=!1),w?.webgpu&&(w.webgpu.powerPreference="high-performance");function b(){return w?.wasm?.proxy}s.env.backends.onnx=w}),
2830"./src/base/feature_extraction_utils.js":((e,t,r)=>{r.r(t),r.d(t,{FeatureExtractor:()=>i,validate_audio_inputs:()=>o});var n=r("./src/utils/constants.js"),s=r("./src/utils/generic.js"),a=r("./src/utils/hub.js");class i extends s.Callable{constructor(u){super(),this.config=u}static async from_pretrained(u,p={}){const d=await(0,a.getModelJSON)(u,n.FEATURE_EXTRACTOR_NAME,!0,p);return new this(d)}}function o(l,u){if(!(l instanceof Float32Array||l instanceof Float64Array))throw new Error(`${u} expects input to be a Float32Array or a Float64Array, but got ${l?.constructor?.name??typeof l} instead. If using the feature extractor directly, remember to use \`read_audio(url, sampling_rate)\` to obtain the raw audio data of the file/url.`)}}),
2830"./src/base/image_processors_utils.js":((e,t,r)=>{r.r(t),r.d(t,{ImageProcessor:()=>_,center_to_corners_format:()=>d,post_process_instance_segmentation:()=>P,post_process_object_detection:()=>c,post_process_panoptic_segmentation:()=>h,post_process_semantic_segmentation:()=>g});var n=r("./src/utils/generic.js"),s=r("./src/utils/tensor.js"),a=r("./src/utils/maths.js");r("./src/utils/image.js");var i=r("./src/utils/core.js"),o=r("./src/utils/hub.js"),l=r("./src/utils/constants.js");function u(w,b,v=0,y=null){const $=w/b;let k=(0,a.bankers_round)($)*b;return y!==null&&k>y&&(k=Math.floor($)*b),k<v&&(k=Math.ceil($)*b),k}function p([w,b],v){return[Math.max(Math.floor(w/v),1)*v,Math.max(Math.floor(b/v),1)*v]}function d([w,b,v,y]){return[w-v/2,b-y/2,w+v/2,b+y/2]}function c(w,b=.5,v=null,y=!1){const $=w.logits,k=w.pred_boxes,[W,j,F]=$.dims;if(v!==null&&v.length!==W)throw Error("Make sure that you pass in as many target sizes as the batch dimension of the logits");let R=[];for(let L=0;L<W;++L){let Q=v!==null?v[L]:null,ne={boxes:[],classes:[],scores:[]},re=$[L],ce=k[L];for(let ge=0;ge<j;++ge){let q=re[ge],V=[],U;if(y){U=q.sigmoid().data;for(let N=0;N<U.length;++N)U[N]>b&&V.push(N)}else{let N=(0,a.max)(q.data)[1];if(N===F-1||(U=(0,a.softmax)(q.data),U[N]<b))continue;V.push(N)}for(const N of V){let oe=ce[ge].data;oe=d(oe),Q!==null&&(oe=oe.map((fe,De)=>fe*Q[(De+1)%2])),ne.boxes.push(oe),ne.classes.push(N),ne.scores.push(U[N])}}R.push(ne)}return R}function g(w,b=null){const v=w.logits,y=v.dims[0];if(b!==null&&b.length!==y)throw Error("Make sure that you pass in as many target sizes as the batch dimension of the logits");const $=[];for(let k=0;k<y;++k){const W=b!==null?b[k]:null;let j=v[k];W!==null&&(j=(0,s.interpolate)(j,W,"bilinear",!1));const[F,R]=W??j.dims.slice(-2),L=new s.Tensor("int32",new Int32Array(F*R),[F,R]),Q=j[0].data,ne=L.data;for(let ge=1;ge<j.dims[0];++ge){const q=j[ge].data;for(let V=0;V<q.length;++V)q[V]>Q[V]&&(Q[V]=q[V],ne[V]=ge)}const re=new Array(j.dims[0]);for(let ge=0;ge<ne.length;++ge){const q=ne[ge];re[q]=q}const ce=re.filter(ge=>ge!==void 0);$.push({segmentation:L,labels:ce})}return $}function A(w,b,v,y){const $=[],k=[],W=[];for(let j=0;j<w.dims[0];++j){const F=w[j],R=b[j],L=(0,a.max)(F.data)[1];if(L===y)continue;const ne=(0,a.softmax)(F.data)[L];ne>v&&($.push(R),k.push(ne),W.push(L))}return[$,k,W]}function m(w,b,v,y=.5,$=.8){const k=[];let W=0,j=0;const F=b[v].data;for(let L=0;L<w.length;++L)w[L]===v&&(k.push(L),++W),F[L]>=y&&++j;let R=W>0&&j>0;return R&&(R=W/j>$),[R,k]}function B(w,b,v,y,$,k=null,W=null){const[j,F]=W??w[0].dims,R=new s.Tensor("int32",new Int32Array(j*F),[j,F]),L=[];if(W!==null)for(let ge=0;ge<w.length;++ge)w[ge]=(0,s.interpolate)(w[ge],W,"bilinear",!1);const Q=new Int32Array(w[0].data.length),ne=new Float32Array(w[0].data.length);for(let ge=0;ge<w.length;++ge){let q=b[ge];const V=w[ge].data;for(let U=0;U<V.length;++U)V[U]*=q,V[U]>ne[U]&&(Q[U]=ge,ne[U]=V[U])}let re=0;const ce=R.data;for(let ge=0;ge<v.length;++ge){const q=v[ge],[V,U]=m(Q,w,ge,y,$);if(V){++re;for(const N of U)ce[N]=re;L.push({id:re,label_id:q,score:b[ge]})}}return[R,L]}function f(w,b,v=28,y=3136,$=784*1280){if(w<v||b<v)throw new Error(`height:${w} or width:${b} must be larger than factor:${v}`);if(Math.max(w,b)/Math.min(w,b)>200)throw new Error(`absolute aspect ratio must be smaller than 200, got ${Math.max(w,b)/Math.min(w,b)}`);let k=Math.round(w/v)*v,W=Math.round(b/v)*v;if(k*W>$){const j=Math.sqrt(w*b/$);k=Math.floor(w/j/v)*v,W=Math.floor(b/j/v)*v}else if(k*W<y){const j=Math.sqrt(y/(w*b));k=Math.ceil(w*j/v)*v,W=Math.ceil(b*j/v)*v}return[k,W]}function h(w,b=.5,v=.5,y=.8,$=null,k=null){$===null&&(console.warn("`label_ids_to_fuse` unset. No instance will be fused."),$=new Set);const W=w.class_queries_logits??w.logits,F=(w.masks_queries_logits??w.pred_masks).sigmoid();let[R,L,Q]=W.dims;if(Q-=1,k!==null&&k.length!==R)throw Error("Make sure that you pass in as many target sizes as the batch dimension of the logits");let ne=[];for(let re=0;re<R;++re){let ce=k!==null?k[re]:null,ge=W[re],q=F[re],[V,U,N]=A(ge,q,b,Q);if(N.length===0){let[De,Ie]=ce??q.dims.slice(-2),je=new s.Tensor("int32",new Int32Array(De*Ie).fill(-1),[De,Ie]);ne.push({segmentation:je,segments_info:[]});continue}let[oe,fe]=B(V,U,N,v,y,$,ce);ne.push({segmentation:oe,segments_info:fe})}return ne}function P(w,b=.5,v=null){throw new Error("`post_process_instance_segmentation` is not yet implemented.")}class _ extends n.Callable{constructor(b){super(),this.image_mean=b.image_mean??b.mean,this.image_std=b.image_std??b.std,this.resample=b.resample??2,this.do_rescale=b.do_rescale??!0,this.rescale_factor=b.rescale_factor??1/255,this.do_normalize=b.do_normalize,this.do_thumbnail=b.do_thumbnail,this.size=b.size??b.image_size,this.do_resize=b.do_resize??this.size!==void 0,this.size_divisibility=b.size_divisibility??b.size_divisor,this.do_center_crop=b.do_center_crop,this.crop_size=b.crop_size,this.do_convert_rgb=b.do_convert_rgb??!0,this.do_crop_margin=b.do_crop_margin,this.pad_size=b.pad_size,this.do_pad=b.do_pad,this.min_pixels=b.min_pixels,this.max_pixels=b.max_pixels,this.do_pad&&!this.pad_size&&this.size&&this.size.width!==void 0&&this.size.height!==void 0&&(this.pad_size=this.size),this.do_flip_channel_order=b.do_flip_channel_order??!1,this.config=b}async thumbnail(b,v,y=2){const $=b.height,k=b.width,W=v.height,j=v.width;let F=Math.min($,W),R=Math.min(k,j);return F===$&&R===k?b:($>k?R=Math.floor(k*F/$):k>$&&(F=Math.floor($*R/k)),await b.resize(R,F,{resample:y}))}async crop_margin(b,v=200){const y=b.clone().grayscale(),$=(0,a.min)(y.data)[0],W=(0,a.max)(y.data)[0]-$;if(W===0)return b;const j=v/255;let F=y.width,R=y.height,L=0,Q=0;const ne=y.data;for(let re=0;re<y.height;++re){const ce=re*y.width;for(let ge=0;ge<y.width;++ge)(ne[ce+ge]-$)/W<j&&(F=Math.min(F,ge),R=Math.min(R,re),L=Math.max(L,ge),Q=Math.max(Q,re))}return b=await b.crop([F,R,L,Q]),b}pad_image(b,v,y,{mode:$="constant",center:k=!1,constant_values:W=0}={}){const[j,F,R]=v;let L,Q;if(typeof y=="number"?(L=y,Q=y):y==="square"?L=Q=Math.max(j,F):(L=y.width,Q=y.height),L!==F||Q!==j){const ne=new Float32Array(L*Q*R);if(Array.isArray(W))for(let ge=0;ge<ne.length;++ge)ne[ge]=W[ge%R];else W!==0&&ne.fill(W);
2830const[re,ce]=k?[Math.floor((L-F)/2),Math.floor((Q-j)/2)]:[0,0];for(let ge=0;ge<j;++ge){const q=(ge+ce)*L,V=ge*F;for(let U=0;U<F;++U){const N=(q+U+re)*R,oe=(V+U)*R;for(let fe=0;fe<R;++fe)ne[N+fe]=b[oe+fe]}}if($==="symmetric"){if(k)throw new Error("`center` padding is not supported when `mode` is set to `symmetric`.");const ge=j-1,q=F-1;for(let V=0;V<Q;++V){const U=V*L,N=(0,i.calculateReflectOffset)(V,ge)*F;for(let oe=0;oe<L;++oe){if(V<j&&oe<F)continue;const fe=(U+oe)*R,De=(N+(0,i.calculateReflectOffset)(oe,q))*R;for(let Ie=0;Ie<R;++Ie)ne[fe+Ie]=b[De+Ie]}}}b=ne,v=[Q,L,R]}return[b,v]}rescale(b){for(let v=0;v<b.length;++v)b[v]=this.rescale_factor*b[v]}get_resize_output_image_size(b,v){const[y,$]=b.size;let k,W;if(this.do_thumbnail){const{height:j,width:F}=v;k=Math.min(j,F)}else Number.isInteger(v)?(k=v,W=this.config.max_size??k):v!==void 0&&(k=v.shortest_edge,W=v.longest_edge);if(k!==void 0||W!==void 0){const j=k===void 0?1:Math.max(k/y,k/$),F=y*j,R=$*j,L=W===void 0?1:Math.min(W/F,W/R);let Q=Math.floor(Number((F*L).toFixed(2))),ne=Math.floor(Number((R*L).toFixed(2)));return this.size_divisibility!==void 0&&([Q,ne]=p([Q,ne],this.size_divisibility)),[Q,ne]}else if(v!==void 0&&v.width!==void 0&&v.height!==void 0){let j=v.width,F=v.height;if(this.config.keep_aspect_ratio&&this.config.ensure_multiple_of){let R=F/$,L=j/y;Math.abs(1-L)<Math.abs(1-R)?R=L:L=R,F=u(R*$,this.config.ensure_multiple_of),j=u(L*y,this.config.ensure_multiple_of)}return[j,F]}else{if(this.size_divisibility!==void 0)return p([y,$],this.size_divisibility);if(this.min_pixels!==void 0&&this.max_pixels!==void 0){const j=this.config.patch_size*this.config.merge_size;return f($,y,j,this.min_pixels,this.max_pixels)}else throw new Error(`Could not resize image due to unsupported \`this.size\` option in config: ${JSON.stringify(v)}`)}}async resize(b){const[v,y]=this.get_resize_output_image_size(b,this.size);return await b.resize(v,y,{resample:this.resample})}async preprocess(b,{do_normalize:v=null,do_pad:y=null,do_convert_rgb:$=null,do_convert_grayscale:k=null,do_flip_channel_order:W=null}={}){this.do_crop_margin&&(b=await this.crop_margin(b));const[j,F]=b.size;if($??this.do_convert_rgb?b=b.rgb():k&&(b=b.grayscale()),this.do_resize&&(b=await this.resize(b)),this.do_thumbnail&&(b=await this.thumbnail(b,this.size,this.resample)),this.do_center_crop){let re,ce;Number.isInteger(this.crop_size)?(re=this.crop_size,ce=this.crop_size):(re=this.crop_size.width,ce=this.crop_size.height),b=await b.center_crop(re,ce)}const R=[b.height,b.width];let L=Float32Array.from(b.data),Q=[b.height,b.width,b.channels];if(this.do_rescale&&this.rescale(L),v??this.do_normalize){let re=this.image_mean;Array.isArray(this.image_mean)||(re=new Array(b.channels).fill(re));let ce=this.image_std;if(Array.isArray(this.image_std)||(ce=new Array(b.channels).fill(ce)),re.length!==b.channels||ce.length!==b.channels)throw new Error(`When set to arrays, the length of \`image_mean\` (${re.length}) and \`image_std\` (${ce.length}) must match the number of channels in the image (${b.channels}).`);for(let ge=0;ge<L.length;ge+=b.channels)for(let q=0;q<b.channels;++q)L[ge+q]=(L[ge+q]-re[q])/ce[q]}if(y??this.do_pad){if(this.pad_size)[L,Q]=this.pad_image(L,[b.height,b.width,b.channels],this.pad_size);else if(this.size_divisibility){const[re,ce]=p([Q[1],Q[0]],this.size_divisibility);[L,Q]=this.pad_image(L,Q,{width:re,height:ce})}}if(W??this.do_flip_channel_order){if(Q[2]!==3)throw new Error("Flipping channel order is only supported for RGB images.");for(let re=0;re<L.length;re+=3){const ce=L[re];L[re]=L[re+2],L[re+2]=ce}}const ne=new s.Tensor("float32",L,Q).permute(2,0,1);return{original_size:[F,j],reshaped_input_size:R,pixel_values:ne}}async _call(b,...v){Array.isArray(b)||(b=[b]);const y=await Promise.all(b.map(k=>this.preprocess(k)));return{pixel_values:(0,s.stack)(y.map(k=>k.pixel_values),0),original_sizes:y.map(k=>k.original_size),reshaped_input_sizes:y.map(k=>k.reshaped_input_size)}}static async from_pretrained(b,v={}){const y=await(0,o.getModelJSON)(b,l.IMAGE_PROCESSOR_NAME,!0,v);return new this(y)}}}),
2830"./src/base/processing_utils.js":((e,t,r)=>{r.r(t),r.d(t,{Processor:()=>i});var n=r("./src/utils/constants.js"),s=r("./src/utils/generic.js"),a=r("./src/utils/hub.js");class i extends s.Callable{static classes=["image_processor_class","tokenizer_class","feature_extractor_class"];static uses_processor_config=!1;static uses_chat_template_file=!1;constructor(l,u,p){super(),this.config=l,this.components=u,this.chat_template=p}get image_processor(){return this.components.image_processor}get tokenizer(){return this.components.tokenizer}get feature_extractor(){return this.components.feature_extractor}apply_chat_template(l,u={}){if(!this.tokenizer)throw new Error("Unable to apply chat template without a tokenizer.");return this.tokenizer.apply_chat_template(l,{tokenize:!1,chat_template:this.chat_template??void 0,...u})}batch_decode(...l){if(!this.tokenizer)throw new Error("Unable to decode without a tokenizer.");return this.tokenizer.batch_decode(...l)}decode(...l){if(!this.tokenizer)throw new Error("Unable to decode without a tokenizer.");return this.tokenizer.decode(...l)}async _call(l,...u){for(const p of[this.image_processor,this.feature_extractor,this.tokenizer])if(p)return p(l,...u);throw new Error("No image processor, feature extractor, or tokenizer found.")}static async from_pretrained(l,u={}){const[p,d,c]=await Promise.all([this.uses_processor_config?(0,a.getModelJSON)(l,n.PROCESSOR_NAME,!0,u):{},Promise.all(this.classes.filter(g=>g in this).map(async g=>{const A=await this[g].from_pretrained(l,u);return[g.replace(/_class$/,""),A]})).then(Object.fromEntries),this.uses_chat_template_file?(0,a.getModelText)(l,n.CHAT_TEMPLATE_NAME,!0,u):null]);return new this(p,d,c)}}}),
2830"./src/configs.js":((e,t,r)=>{r.r(t),r.d(t,{AutoConfig:()=>p,PretrainedConfig:()=>u,getCacheShapes:()=>o});var n=r("./src/utils/core.js"),s=r("./src/utils/hub.js");async function a(d,c){return await(0,s.getModelJSON)(d,"config.json",!0,c)}function i(d){const c={};let g={};switch(d.model_type){case"llava":case"paligemma":case"gemma3":case"florence2":case"llava_onevision":case"idefics3":case"ultravox":case"voxtral":case"smolvlm":case"gemma3n":case"mistral3":g=i(d.text_config);break;case"moondream1":g=i(d.phi_config);break;case"musicgen":g=i(d.decoder);break;case"multi_modality":g=i(d.language_config);break;case"gpt2":case"gptj":case"jais":case"codegen":case"gpt_bigcode":c.num_heads="n_head",c.num_layers="n_layer",c.hidden_size="n_embd";break;case"gpt_neox":case"stablelm":case"opt":case"falcon":case"modernbert-decoder":c.num_heads="num_attention_heads",c.num_layers="num_hidden_layers",c.hidden_size="hidden_size";break;case"llama":case"llama4_text":case"nanochat":case"arcee":case"lfm2":case"smollm3":case"olmo":case"olmo2":case"mobilellm":case"granite":case"granitemoehybrid":case"cohere":case"mistral":case"starcoder2":case"qwen2":case"qwen2_vl":case"phi":case"phi3":case"phi3_v":case"llava_qwen2":c.num_heads="num_key_value_heads",c.num_layers="num_hidden_layers",c.hidden_size="hidden_size",c.num_attention_heads="num_attention_heads",c.dim_kv="head_dim";break;case"qwen3":case"gemma":case"gemma2":case"vaultgemma":case"gemma3_text":case"gemma3n_text":case"glm":case"helium":case"ernie4_5":case"ministral":case"ministral3":c.num_heads="num_key_value_heads",c.num_layers="num_hidden_layers",c.dim_kv="head_dim";break;case"openelm":c.num_heads="num_kv_heads",c.num_layers="num_transformer_layers",c.dim_kv="head_dim";break;case"gpt_neo":case"donut-swin":c.num_heads="num_heads",c.num_layers="num_layers",c.hidden_size="hidden_size";break;case"bloom":c.num_heads="n_head",c.num_layers="n_layer",c.hidden_size="hidden_size";break;case"mpt":c.num_heads="n_heads",c.num_layers="n_layers",c.hidden_size="d_model";break;case"exaone":c.num_heads="num_key_value_heads",c.num_layers="num_layers",c.dim_kv="head_dim",c.num_attention_heads="num_attention_heads";break;case"t5":case"mt5":case"longt5":c.num_decoder_layers="num_decoder_layers",c.num_decoder_heads="num_heads",c.decoder_dim_kv="d_kv",c.num_encoder_layers="num_layers",c.num_encoder_heads="num_heads",c.encoder_dim_kv="d_kv";break;case"bart":case"mbart":case"marian":case"whisper":case"lite-whisper":case"m2m_100":case"blenderbot":case"blenderbot-small":case"florence2_language":c.num_decoder_layers="decoder_layers",c.num_decoder_heads="decoder_attention_heads",c.decoder_hidden_size="d_model",c.num_encoder_layers="encoder_layers",c.num_encoder_heads="encoder_attention_heads",c.encoder_hidden_size="d_model";break;case"speecht5":c.num_decoder_layers="decoder_layers",c.num_decoder_heads="decoder_attention_heads",c.decoder_hidden_size="hidden_size",c.num_encoder_layers="encoder_layers",c.num_encoder_heads="encoder_attention_heads",c.encoder_hidden_size="hidden_size";break;case"trocr":c.num_encoder_layers=c.num_decoder_layers="decoder_layers",c.num_encoder_heads=c.num_decoder_heads="decoder_attention_heads",c.encoder_hidden_size=c.decoder_hidden_size="d_model";break;case"musicgen_decoder":c.num_encoder_layers=c.num_decoder_layers="num_hidden_layers",c.num_encoder_heads=c.num_decoder_heads="num_attention_heads",c.encoder_hidden_size=c.decoder_hidden_size="hidden_size";break;case"moonshine":c.num_decoder_layers="decoder_num_hidden_layers",c.num_decoder_heads="decoder_num_key_value_heads",c.num_encoder_layers="encoder_num_hidden_layers",c.num_encoder_heads="encoder_num_key_value_heads",c.encoder_hidden_size=c.decoder_hidden_size="hidden_size";break;case"vision-encoder-decoder":const m=i(d.decoder),B="num_decoder_layers"in m,f=(0,n.pick)(d,["model_type","is_encoder_decoder"]);return B?(f.num_decoder_layers=m.num_decoder_layers,f.num_decoder_heads=m.num_decoder_heads,f.decoder_hidden_size=m.decoder_hidden_size,f.num_encoder_layers=m.num_encoder_layers,f.num_encoder_heads=m.num_encoder_heads,f.encoder_hidden_size=m.encoder_hidden_size):(f.num_layers=m.num_layers,f.num_heads=m.num_heads,f.hidden_size=m.hidden_size),f}const A={...g,...(0,n.pick)(d,["model_type","multi_query","is_encoder_decoder"])};for(const m in c)A[m]=d[c[m]];return A}function o(d,c){if(d.model_type==="lfm2"){const g=c?.prefix??"past_key_values",A=g==="present"?"present":"past",m={},{layer_types:B,num_attention_heads:f,num_key_value_heads:h,hidden_size:P,conv_L_cache:_}=d,w=P/f,b=c?.batch_size??1;for(let v=0;v<B.length;++v)if(B[v]==="full_attention")for(const y of["key","value"])m[`${g}.${v}.${y}`]=[b,h,0,w];else if(B[v]==="conv")m[`${A}_conv.${v}`]=[b,P,_];else throw new Error(`Unsupported layer type: ${B[v]}`);return m}return l(d,c)}function l(d,{prefix:c="past_key_values",batch_size:g=1}={}){const A={},m=d.normalized_config;if(m.is_encoder_decoder&&"num_encoder_heads"in m&&"num_decoder_heads"in m){const B=m.encoder_dim_kv??m.encoder_hidden_size/m.num_encoder_heads,f=m.decoder_dim_kv??m.decoder_hidden_size/m.num_decoder_heads,h=[g,m.num_encoder_heads,0,B],P=[g,m.num_decoder_heads,0,f];for(let _=0;_<m.num_decoder_layers;++_)A[`${c}.${_}.encoder.key`]=h,A[`${c}.${_}.encoder.value`]=h,A[`${c}.${_}.decoder.key`]=P,A[`${c}.${_}.decoder.value`]=P}else{const B=m.num_heads,f=m.num_layers,h=m.dim_kv??m.hidden_size/(m.num_attention_heads??B);if(m.model_type==="falcon"){const P=[g*B,0,h];for(let _=0;_<f;++_)A[`${c}.${_}.key`]=P,A[`${c}.${_}.value`]=P}
2830else if(m.multi_query){const P=[g*B,0,2*h];for(let _=0;_<f;++_)A[`${c}.${_}.key_value`]=P}else if(m.model_type==="bloom"){const P=[g*B,h,0],_=[g*B,0,h];for(let w=0;w<f;++w)A[`${c}.${w}.key`]=P,A[`${c}.${w}.value`]=_}else if(m.model_type==="openelm")for(let P=0;P<f;++P){const _=[g,B[P],0,h];A[`${c}.${P}.key`]=_,A[`${c}.${P}.value`]=_}else{const P=[g,B,0,h];for(let _=0;_<f;++_)A[`${c}.${_}.key`]=P,A[`${c}.${_}.value`]=P}}return A}class u{model_type=null;is_encoder_decoder=!1;max_position_embeddings;"transformers.js_config";constructor(c){Object.assign(this,c),this.normalized_config=i(this)}static async from_pretrained(c,{progress_callback:g=null,config:A=null,cache_dir:m=null,local_files_only:B=!1,revision:f="main"}={}){A&&!(A instanceof u)&&(A=new u(A));const h=A??await a(c,{progress_callback:g,config:A,cache_dir:m,local_files_only:B,revision:f});return new this(h)}}class p{static async from_pretrained(...c){return u.from_pretrained(...c)}}}),
2830"./src/env.js":((e,t,r)=>{r.r(t),r.d(t,{apis:()=>f,env:()=>v});var n=r("?db59"),s=r("?383f"),a=r("?fa4b");const i="3.8.1",o=typeof window<"u"&&typeof window.document<"u",l=typeof self<"u"&&["DedicatedWorkerGlobalScope","ServiceWorkerGlobalScope","SharedWorkerGlobalScope"].includes(self.constructor?.name),u=typeof self<"u"&&"caches"in self,p=typeof navigator<"u"&&"gpu"in navigator,d=typeof navigator<"u"&&"ml"in navigator,c=typeof process<"u",g=c&&process?.release?.name==="node",A=!y(n),m=!y(s),B=typeof globalThis.Deno<"u",f=Object.freeze({IS_BROWSER_ENV:o,IS_WEBWORKER_ENV:l,IS_WEB_CACHE_AVAILABLE:u,IS_WEBGPU_AVAILABLE:p,IS_WEBNN_AVAILABLE:d,IS_PROCESS_AVAILABLE:c,IS_NODE_ENV:g,IS_FS_AVAILABLE:A,IS_PATH_AVAILABLE:m}),h=A&&m;let P="./";if(h){const $=Object({url:self.location.href}).url;$?P=s.dirname(s.dirname(a.fileURLToPath($))):typeof __dirname<"u"&&(P=s.dirname(__dirname))}const _=h?s.join(P,"/.cache/"):null,w="/models/",b=h?s.join(P,w):w,v={version:i,backends:{onnx:{}},allowRemoteModels:!0,remoteHost:"https://huggingface.co/",remotePathTemplate:"{model}/resolve/{revision}/",allowLocalModels:!(o||l),localModelPath:b,useFS:A,useBrowserCache:u&&!B,useFSCache:A,cacheDir:_,useCustomCache:!1,customCache:null};function y($){return Object.keys($).length===0}}),
vendor: 7,426 bytes, line 2830
2830"./src/generation/configuration_utils.js":((e,t,r)=>{r.r(t),r.d(t,{GenerationConfig:()=>s});var n=r("./src/utils/core.js");class s{max_length=20;max_new_tokens=null;min_length=0;min_new_tokens=null;early_stopping=!1;max_time=null;do_sample=!1;num_beams=1;num_beam_groups=1;penalty_alpha=null;use_cache=!0;temperature=1;top_k=50;top_p=1;typical_p=1;epsilon_cutoff=0;eta_cutoff=0;diversity_penalty=0;repetition_penalty=1;encoder_repetition_penalty=1;length_penalty=1;no_repeat_ngram_size=0;bad_words_ids=null;force_words_ids=null;renormalize_logits=!1;constraints=null;forced_bos_token_id=null;forced_eos_token_id=null;remove_invalid_values=!1;exponential_decay_length_penalty=null;suppress_tokens=null;streamer=null;begin_suppress_tokens=null;forced_decoder_ids=null;guidance_scale=null;num_return_sequences=1;output_attentions=!1;output_hidden_states=!1;output_scores=!1;return_dict_in_generate=!1;pad_token_id=null;bos_token_id=null;eos_token_id=null;encoder_no_repeat_ngram_size=0;decoder_start_token_id=null;generation_kwargs={};constructor(i){Object.assign(this,(0,n.pick)(i,Object.getOwnPropertyNames(this)))}}}),"./src/generation/logits_process.js":((e,t,r)=>{r.r(t),r.d(t,{ClassifierFreeGuidanceLogitsProcessor:()=>f,ForcedBOSTokenLogitsProcessor:()=>l,ForcedEOSTokenLogitsProcessor:()=>u,LogitsProcessor:()=>a,LogitsProcessorList:()=>o,LogitsWarper:()=>i,MinLengthLogitsProcessor:()=>A,MinNewTokensLengthLogitsProcessor:()=>m,NoBadWordsLogitsProcessor:()=>B,NoRepeatNGramLogitsProcessor:()=>c,RepetitionPenaltyLogitsProcessor:()=>g,SuppressTokensAtBeginLogitsProcessor:()=>p,TemperatureLogitsWarper:()=>h,TopKLogitsWarper:()=>_,TopPLogitsWarper:()=>P,WhisperTimeStampLogitsProcessor:()=>d});var n=r("./src/utils/generic.js");r("./src/utils/tensor.js");var s=r("./src/utils/maths.js");class a extends n.Callable{_call(b,v){throw Error("`_call` should be implemented in a subclass")}}class i extends n.Callable{_call(b,v){throw Error("`_call` should be implemented in a subclass")}}class o extends n.Callable{constructor(){super(),this.processors=[]}push(b){this.processors.push(b)}extend(b){this.processors.push(...b)}_call(b,v){let y=v;for(const $ of this.processors)y=$(b,y);return y}[Symbol.iterator](){return this.processors.values()}}class l extends a{constructor(b){super(),this.bos_token_id=b}_call(b,v){for(let y=0;y<b.length;++y)if(b[y].length===1){const $=v[y].data;$.fill(-1/0),$[this.bos_token_id]=0}return v}}class u extends a{constructor(b,v){super(),this.max_length=b,this.eos_token_id=Array.isArray(v)?v:[v]}_call(b,v){for(let y=0;y<b.length;++y)if(b[y].length===this.max_length-1){const $=v[y].data;$.fill(-1/0);for(const k of this.eos_token_id)$[k]=0}return v}}class p extends a{constructor(b,v){super(),this.begin_suppress_tokens=b,this.begin_index=v}_call(b,v){for(let y=0;y<b.length;++y)if(b[y].length===this.begin_index){const $=v[y].data;for(const k of this.begin_suppress_tokens)$[k]=-1/0}return v}}class d extends a{constructor(b,v){super(),this.eos_token_id=Array.isArray(b.eos_token_id)?b.eos_token_id[0]:b.eos_token_id,this.no_timestamps_token_id=b.no_timestamps_token_id,this.timestamp_begin=this.no_timestamps_token_id+1,this.begin_index=v.length,v.at(-1)===this.no_timestamps_token_id&&(this.begin_index-=1),this.max_initial_timestamp_index=b.max_initial_timestamp_index}_call(b,v){for(let y=0;y<b.length;++y){const $=v[y].data;if($[this.no_timestamps_token_id]=-1/0,b[y].length===this.begin_index-1){$.fill(-1/0),$[this.timestamp_begin]=0;continue}const k=b[y].slice(this.begin_index),W=k.length>=1&&k[k.length-1]>=this.timestamp_begin,j=k.length<2||k[k.length-2]>=this.timestamp_begin;if(W&&(j?$.subarray(this.timestamp_begin).fill(-1/0):$.subarray(0,this.eos_token_id).fill(-1/0)),b[y].length===this.begin_index&&this.max_initial_timestamp_index!==null){const Q=this.timestamp_begin+this.max_initial_timestamp_index;$.subarray(Q+1).fill(-1/0)}const F=(0,s.log_softmax)($),R=Math.log(F.subarray(this.timestamp_begin).map(Math.exp).reduce((Q,ne)=>Q+ne)),L=(0,s.max)(F.subarray(0,this.timestamp_begin))[0];R>L&&$.subarray(0,this.timestamp_begin).fill(-1/0)}return v}}class c extends a{constructor(b){super(),this.no_repeat_ngram_size=b}getNgrams(b){const v=b.length,y=[];for(let k=0;k<v+1-this.no_repeat_ngram_size;++k){const W=[];for(let j=0;j<this.no_repeat_ngram_size;++j)W.push(b[k+j]);y.push(W.map(Number))}const $=new Map;for(const k of y){const W=k.slice(0,k.length-1),j=JSON.stringify(W),F=$.get(j)??[];F.push(k[k.length-1]),$.set(j,F)}return $}getGeneratedNgrams(b,v){const y=v.slice(v.length+1-this.no_repeat_ngram_size,v.length);return b.get(JSON.stringify(y.map(Number)))??[]}calcBannedNgramTokens(b){const v=[];if(b.length+1<this.no_repeat_ngram_size)return v;{const y=this.getNgrams(b);return this.getGeneratedNgrams(y,b)}}_call(b,v){for(let y=0;y<b.length;++y){const $=v[y].data,k=this.calcBannedNgramTokens(b[y]);for(const W of k)$[W]=-1/0}return v}}class g extends a{constructor(b){super(),this.penalty=b}_call(b,v){for(let y=0;y<b.length;++y){const $=v[y].data;for(const k of new Set(b[y])){const W=Number(k);$[W]<0?$[W]*=this.penalty:$[W]/=this.penalty}}return v}}class A extends a{constructor(b,v){super(),this.min_length=b,this.eos_token_id=Array.isArray(v)?v:[v]}_call(b,v){for(let y=0;y<b.length;++y)if(b[y].length<this.min_length){const $=v[y].data;for(const k of this.eos_token_id)$[k]=-1/0}return v}}class m extends a{constructor(b,v,y){super(),this.prompt_length_to_skip=b,this.min_new_tokens=v,this.eos_token_id=Array.isArray(y)?y:[y]}_call(b,v){for(let y=0;y<b.length;++y)if(b[y].length-this.prompt_length_to_skip<this.min_new_tokens){const k=v[y].data;for(const W of this.eos_token_id)k[W]=-1/0}return v}}class B extends a{constructor(b,v){super(),this.bad_words_ids=b,this.eos_token_id=Array.isArray(v)?v:[v]}_call(b,v){for(let y=0;y<b.length;++y){const $=v[y].data,k=b[y];for(const W of this.bad_words_ids){if(k.length<W.length-1)continue;let j=!0;for(let F=1;F<=W.length-1;++F)if(W.at(-F-1)!=k.at(-F)){j=!1;break}j&&($[W.at(-1)]=-1/0)}}return v}}class f extends a{constructor(b){if(super(),b<=1)throw new Error(`Require guidance scale >1 to use the classifier free guidance processor, got guidance scale ${b}.`);this.guidance_scale=b}_call(b,v){if(v.dims[0]!==2*b.length)throw new Error(`Logits should have twice the batch size of the input ids, the first half of batches corresponding to the conditional inputs, and the second half of batches corresponding to the unconditional inputs. Got batch size ${v.dims[0]} for the logits and ${b.length} for the input ids.`);const y=b.length,$=v.slice([0,y],null),k=v.slice([y,v.dims[0]],null);for(let W=0;W<k.data.length;++W)k.data[W]+=($.data[W]-k.data[W])*this.guidance_scale;return k}}class h extends i{constructor(b){super(),this.temperature=b}_call(b,v){const y=v.data;for(let $=0;$<y.length;++$)y[$]/=this.temperature;return v}}class P extends i{constructor(b,{filter_value:v=-1/0,min_tokens_to_keep:y=1}={}){if(super(),b<0||b>1)throw new Error(`\`top_p\` must be a float > 0 and < 1, but is ${b}`);if(!Number.isInteger(y)||y<1)throw new Error(`\`min_tokens_to_keep\` must be a positive integer, but is ${y}`);this.top_p=b,this.filter_value=v,this.min_tokens_to_keep=y}}class _ extends i{constructor(b,{filter_value:v=-1/0,min_tokens_to_keep:y=1}={}){if(super(),!Number.isInteger(b)||b<0)throw new Error(`\`top_k\` must be a positive integer, but is ${b}`);this.top_k=Math.max(b,y),this.filter_value=v}}}),
2830"./src/generation/logits_sampler.js":((e,t,r)=>{r.r(t),r.d(t,{LogitsSampler:()=>i});var n=r("./src/utils/generic.js"),s=r("./src/utils/tensor.js"),a=r("./src/utils/maths.js");r("./src/generation/configuration_utils.js");class i extends n.Callable{constructor(d){super(),this.generation_config=d}async _call(d){return this.sample(d)}async sample(d){throw Error("sample should be implemented in subclasses.")}getLogits(d,c){let g=d.dims.at(-1),A=d.data;if(c===-1)A=A.slice(-g);else{let m=c*g;A=A.slice(m,m+g)}return A}randomSelect(d){let c=0;for(let A=0;A<d.length;++A)c+=d[A];let g=Math.random()*c;for(let A=0;A<d.length;++A)if(g-=d[A],g<=0)return A;return 0}static getSampler(d){if(d.do_sample)return new l(d);if(d.num_beams>1)return new u(d);if(d.num_return_sequences>1)throw Error(`num_return_sequences has to be 1 when doing greedy search, but is ${d.num_return_sequences}.`);return new o(d)}}class o extends i{async sample(d){const c=(0,a.max)(d.data)[1];return[[BigInt(c),0]]}}class l extends i{async sample(d){let c=d.dims.at(-1);this.generation_config.top_k>0&&(c=Math.min(this.generation_config.top_k,c));const[g,A]=await(0,s.topk)(d,c),m=(0,a.softmax)(g.data);return Array.from({length:this.generation_config.num_beams},()=>{const B=this.randomSelect(m);return[A.data[B],Math.log(m[B])]})}}class u extends i{async sample(d){let c=d.dims.at(-1);this.generation_config.top_k>0&&(c=Math.min(this.generation_config.top_k,c));const[g,A]=await(0,s.topk)(d,c),m=(0,a.softmax)(g.data);return Array.from({length:this.generation_config.num_beams},(B,f)=>[A.data[f],Math.log(m[f])])}}}),
2830"./src/generation/stopping_criteria.js":((e,t,r)=>{r.r(t),r.d(t,{EosTokenCriteria:()=>o,InterruptableStoppingCriteria:()=>l,MaxLengthCriteria:()=>i,StoppingCriteria:()=>s,StoppingCriteriaList:()=>a});var n=r("./src/utils/generic.js");class s extends n.Callable{_call(p,d){throw Error("StoppingCriteria needs to be subclassed")}}class a extends n.Callable{constructor(){super(),this.criteria=[]}push(p){this.criteria.push(p)}extend(p){p instanceof a?p=p.criteria:p instanceof s&&(p=[p]),this.criteria.push(...p)}_call(p,d){const c=new Array(p.length).fill(!1);for(const g of this.criteria){const A=g(p,d);for(let m=0;m<c.length;++m)c[m]||=A[m]}return c}[Symbol.iterator](){return this.criteria.values()}}class i extends s{constructor(p,d=null){super(),this.max_length=p,this.max_position_embeddings=d}_call(p){return p.map(d=>d.length>=this.max_length)}}class o extends s{constructor(p){super(),Array.isArray(p)||(p=[p]),this.eos_token_id=p}_call(p,d){return p.map(c=>{const g=c.at(-1);return this.eos_token_id.some(A=>g==A)})}}class l extends s{constructor(){super(),this.interrupted=!1}interrupt(){this.interrupted=!0}reset(){this.interrupted=!1}_call(p,d){return new Array(p.length).fill(this.interrupted)}}}),
2830"./src/generation/streamers.js":((e,t,r)=>{r.r(t),r.d(t,{BaseStreamer:()=>i,TextStreamer:()=>l,WhisperTextStreamer:()=>u});var n=r("./src/utils/core.js"),s=r("./src/tokenizers.js"),a=r("./src/env.js");class i{put(d){throw Error("Not implemented")}end(){throw Error("Not implemented")}}const o=a.apis.IS_PROCESS_AVAILABLE?p=>process.stdout.write(p):p=>console.log(p);class l extends i{constructor(d,{skip_prompt:c=!1,callback_function:g=null,token_callback_function:A=null,skip_special_tokens:m=!0,decode_kwargs:B={},...f}={}){super(),this.tokenizer=d,this.skip_prompt=c,this.callback_function=g??o,this.token_callback_function=A,this.decode_kwargs={skip_special_tokens:m,...B,...f},this.token_cache=[],this.print_len=0,this.next_tokens_are_prompt=!0}put(d){if(d.length>1)throw Error("TextStreamer only supports batch size of 1");const c=this.next_tokens_are_prompt;if(c&&(this.next_tokens_are_prompt=!1,this.skip_prompt))return;const g=d[0];this.token_callback_function?.(g),this.token_cache=(0,n.mergeArrays)(this.token_cache,g);const A=this.tokenizer.decode(this.token_cache,this.decode_kwargs);let m;c||A.endsWith(` 2831`)?(m=A.slice(this.print_len),this.token_cache=[],this.print_len=0):A.length>0&&(0,s.is_chinese_char)(A.charCodeAt(A.length-1))?(m=A.slice(this.print_len),this.print_len+=m.length):(m=A.slice(this.print_len,A.lastIndexOf(" ")+1),this.print_len+=m.length),this.on_finalized_text(m,!1)}end(){let d;this.token_cache.length>0?(d=this.tokenizer.decode(this.token_cache,this.decode_kwargs).slice(this.print_len),this.token_cache=[],this.print_len=0):d="",this.next_tokens_are_prompt=!0,this.on_finalized_text(d,!0)}on_finalized_text(d,c){d.length>0&&this.callback_function?.(d),c&&this.callback_function===o&&a.apis.IS_PROCESS_AVAILABLE&&this.callback_function?.(` 2832`)}}class u extends l{constructor(d,{skip_prompt:c=!1,callback_function:g=null,token_callback_function:A=null,on_chunk_start:m=null,on_chunk_end:B=null,on_finalize:f=null,time_precision:h=.02,skip_special_tokens:P=!0,decode_kwargs:_={}}={}){super(d,{skip_prompt:c,skip_special_tokens:P,callback_function:g,token_callback_function:A,decode_kwargs:_}),this.timestamp_begin=d.timestamp_begin,this.on_chunk_start=m,this.on_chunk_end=B,this.on_finalize=f,this.time_precision=h,this.waiting_for_timestamp=!1}put(d){if(d.length>1)throw Error("WhisperTextStreamer only supports batch size of 1");const c=d[0];if(c.length===1){const g=Number(c[0])-this.timestamp_begin;if(g>=0){const A=g*this.time_precision;this.waiting_for_timestamp?this.on_chunk_end?.(A):this.on_chunk_start?.(A),this.waiting_for_timestamp=!this.waiting_for_timestamp,this.token_callback_function?.(c);return}}return super.put(d)}end(){super.end(),this.on_finalize?.()}}}),
2832"./src/models.js":((e,t,r)=>{r.r(t),r.d(t,{ASTForAudioClassification:()=>na,ASTModel:()=>ci,ASTPreTrainedModel:()=>ui,AlbertForMaskedLM:()=>st,AlbertForQuestionAnswering:()=>pt,AlbertForSequenceClassification:()=>ut,AlbertModel:()=>ct,AlbertPreTrainedModel:()=>Fe,ArceeForCausalLM:()=>gu,ArceeModel:()=>pu,ArceePreTrainedModel:()=>nl,AutoModel:()=>Wz,AutoModelForAudioClassification:()=>c8,AutoModelForAudioFrameClassification:()=>p8,AutoModelForAudioTextToText:()=>b8,AutoModelForCTC:()=>u8,AutoModelForCausalLM:()=>Zz,AutoModelForDepthEstimation:()=>m8,AutoModelForDocumentQuestionAnswering:()=>g8,AutoModelForImageClassification:()=>r8,AutoModelForImageFeatureExtraction:()=>w8,AutoModelForImageMatting:()=>A8,AutoModelForImageSegmentation:()=>n8,AutoModelForImageTextToText:()=>y8,AutoModelForImageToImage:()=>h8,AutoModelForMaskGeneration:()=>l8,AutoModelForMaskedLM:()=>Jz,AutoModelForNormalEstimation:()=>f8,AutoModelForObjectDetection:()=>i8,AutoModelForPoseEstimation:()=>_8,AutoModelForQuestionAnswering:()=>e8,AutoModelForSemanticSegmentation:()=>s8,AutoModelForSeq2SeqLM:()=>Hz,AutoModelForSequenceClassification:()=>Vz,AutoModelForSpeechSeq2Seq:()=>Kz,AutoModelForTextToSpectrogram:()=>qz,AutoModelForTextToWaveform:()=>Xz,AutoModelForTokenClassification:()=>Qz,AutoModelForUniversalSegmentation:()=>a8,AutoModelForVision2Seq:()=>t8,AutoModelForXVector:()=>d8,AutoModelForZeroShotObjectDetection:()=>o8,BartForConditionalGeneration:()=>Yr,BartForSequenceClassification:()=>Wr,BartModel:()=>Jn,BartPretrainedModel:()=>cn,BaseModelOutput:()=>be,BeitForImageClassification:()=>XT,BeitModel:()=>qT,BeitPreTrainedModel:()=>om,BertForMaskedLM:()=>ze,BertForQuestionAnswering:()=>Be,BertForSequenceClassification:()=>ve,BertForTokenClassification:()=>Ve,BertModel:()=>Se,BertPreTrainedModel:()=>Ce,BlenderbotForConditionalGeneration:()=>rn,BlenderbotModel:()=>Nr,BlenderbotPreTrainedModel:()=>dn,BlenderbotSmallForConditionalGeneration:()=>wa,BlenderbotSmallModel:()=>zn,BlenderbotSmallPreTrainedModel:()=>zr,BloomForCausalLM:()=>M,BloomModel:()=>fo,BloomPreTrainedModel:()=>Ru,CLIPModel:()=>mi,CLIPPreTrainedModel:()=>hs,CLIPSegForImageSegmentation:()=>bi,CLIPSegModel:()=>yi,CLIPSegPreTrainedModel:()=>la,CLIPTextModel:()=>Ao,CLIPTextModelWithProjection:()=>fi,CLIPVisionModel:()=>rl,CLIPVisionModelWithProjection:()=>ho,CamembertForMaskedLM:()=>_e,CamembertForQuestionAnswering:()=>Et,CamembertForSequenceClassification:()=>Oe,CamembertForTokenClassification:()=>gt,CamembertModel:()=>le,CamembertPreTrainedModel:()=>ae,CausalLMOutput:()=>xi,CausalLMOutputWithPast:()=>M8,ChineseCLIPModel:()=>ia,ChineseCLIPPreTrainedModel:()=>Kn,ClapAudioModelWithProjection:()=>A2,ClapModel:()=>p2,ClapPreTrainedModel:()=>Fd,ClapTextModelWithProjection:()=>g2,CodeGenForCausalLM:()=>Qe,CodeGenModel:()=>Le,CodeGenPreTrainedModel:()=>he,CohereForCausalLM:()=>ud,CohereModel:()=>ld,CoherePreTrainedModel:()=>Tu,ConvBertForMaskedLM:()=>kt,ConvBertForQuestionAnswering:()=>cs,ConvBertForSequenceClassification:()=>Er,ConvBertForTokenClassification:()=>us,ConvBertModel:()=>Ms,ConvBertPreTrainedModel:()=>Nn,ConvNextForImageClassification:()=>WC,ConvNextModel:()=>UC,ConvNextPreTrainedModel:()=>Pm,ConvNextV2ForImageClassification:()=>QC,ConvNextV2Model:()=>VC,ConvNextV2PreTrainedModel:()=>Mm,DFineForObjectDetection:()=>cC,DFineModel:()=>uC,DFinePreTrainedModel:()=>gm,DINOv3ConvNextModel:()=>t$,DINOv3ConvNextPreTrainedModel:()=>e$,DINOv3ViTModel:()=>JC,DINOv3ViTPreTrainedModel:()=>ZC,DPTForDepthEstimation:()=>xC,DPTModel:()=>BC,DPTPreTrainedModel:()=>wm,DacDecoderModel:()=>rS,DacDecoderOutput:()=>J2,DacEncoderModel:()=>tS,DacEncoderOutput:()=>Z2,DacModel:()=>eS,DacPreTrainedModel:()=>Wd,DebertaForMaskedLM:()=>lt,DebertaForQuestionAnswering:()=>Hr,DebertaForSequenceClassification:()=>St,DebertaForTokenClassification:()=>rr,DebertaModel:()=>Ot,DebertaPreTrainedModel:()=>at,DebertaV2ForMaskedLM:()=>ln,DebertaV2ForQuestionAnswering:()=>ps,DebertaV2ForSequenceClassification:()=>vs,DebertaV2ForTokenClassification:()=>En,DebertaV2Model:()=>yr,DebertaV2PreTrainedModel:()=>kr,DecisionTransformerModel:()=>O2,DecisionTransformerPreTrainedModel:()=>k2,DeiTForImageClassification:()=>hC,DeiTModel:()=>AC,DeiTPreTrainedModel:()=>hm,DepthAnythingForDepthEstimation:()=>DC,DepthAnythingPreTrainedModel:()=>EC,DepthProForDepthEstimation:()=>SC,DepthProPreTrainedModel:()=>$C,DetrForObjectDetection:()=>JT,DetrForSegmentation:()=>lm,DetrModel:()=>ZT,DetrObjectDetectionOutput:()=>um,DetrPreTrainedModel:()=>Cd,DetrSegmentationOutput:()=>eC,Dinov2ForImageClassification:()=>KC,Dinov2Model:()=>HC,Dinov2PreTrainedModel:()=>vm,Dinov2WithRegistersForImageClassification:()=>XC,Dinov2WithRegistersModel:()=>qC,Dinov2WithRegistersPreTrainedModel:()=>Bm,DistilBertForMaskedLM:()=>jn,DistilBertForQuestionAnswering:()=>Rr,DistilBertForSequenceClassification:()=>qr,DistilBertForTokenClassification:()=>vr,DistilBertModel:()=>fn,DistilBertPreTrainedModel:()=>Kr,DonutSwinModel:()=>jC,DonutSwinPreTrainedModel:()=>NC,EdgeTamModel:()=>p$,EfficientNetForImageClassification:()=>b2,EfficientNetModel:()=>y2,EfficientNetPreTrainedModel:()=>
2832Lm,ElectraForMaskedLM:()=>ds,ElectraForQuestionAnswering:()=>X,ElectraForSequenceClassification:()=>S,ElectraForTokenClassification:()=>ie,ElectraModel:()=>Ft,ElectraPreTrainedModel:()=>pr,Ernie4_5ForCausalLM:()=>o2,Ernie4_5Model:()=>i2,Ernie4_5PreTrainedModel:()=>km,EsmForMaskedLM:()=>Bs,EsmForSequenceClassification:()=>xs,EsmForTokenClassification:()=>Es,EsmModel:()=>ea,EsmPreTrainedModel:()=>Zn,ExaoneForCausalLM:()=>Mu,ExaoneModel:()=>Pu,ExaonePreTrainedModel:()=>ll,FalconForCausalLM:()=>d2,FalconModel:()=>c2,FalconPreTrainedModel:()=>Gm,FastViTForImageClassification:()=>LT,FastViTModel:()=>FT,FastViTPreTrainedModel:()=>rm,Florence2ForConditionalGeneration:()=>el,Florence2PreTrainedModel:()=>Jo,GLPNForDepthEstimation:()=>YC,GLPNModel:()=>RC,GLPNPreTrainedModel:()=>bm,GPT2LMHeadModel:()=>Pi,GPT2Model:()=>Cs,GPT2PreTrainedModel:()=>Zt,GPTBigCodeForCausalLM:()=>ee,GPTBigCodeModel:()=>K,GPTBigCodePreTrainedModel:()=>Y,GPTJForCausalLM:()=>C,GPTJModel:()=>x,GPTJPreTrainedModel:()=>ja,GPTNeoForCausalLM:()=>Mi,GPTNeoModel:()=>Ea,GPTNeoPreTrainedModel:()=>xa,GPTNeoXForCausalLM:()=>Na,GPTNeoXModel:()=>vi,GPTNeoXPreTrainedModel:()=>Ya,Gemma2ForCausalLM:()=>gd,Gemma2Model:()=>pd,Gemma2PreTrainedModel:()=>$u,Gemma3ForCausalLM:()=>fd,Gemma3Model:()=>md,Gemma3PreTrainedModel:()=>ku,Gemma3nForConditionalGeneration:()=>hi,Gemma3nPreTrainedModel:()=>As,GemmaForCausalLM:()=>dd,GemmaModel:()=>cd,GemmaPreTrainedModel:()=>Cu,GlmForCausalLM:()=>bu,GlmModel:()=>yu,GlmPreTrainedModel:()=>ol,GraniteForCausalLM:()=>ad,GraniteModel:()=>sd,GraniteMoeHybridForCausalLM:()=>od,GraniteMoeHybridModel:()=>id,GraniteMoeHybridPreTrainedModel:()=>Iu,GranitePreTrainedModel:()=>Du,GroundingDinoForObjectDetection:()=>n$,GroundingDinoPreTrainedModel:()=>r$,GroupViTModel:()=>zT,GroupViTPreTrainedModel:()=>GT,HeliumForCausalLM:()=>wu,HeliumModel:()=>_u,HeliumPreTrainedModel:()=>il,HieraForImageClassification:()=>fC,HieraModel:()=>mC,HieraPreTrainedModel:()=>mm,HubertForCTC:()=>L$,HubertForSequenceClassification:()=>R$,HubertModel:()=>F$,HubertPreTrainedModel:()=>$z,IJepaForImageClassification:()=>Ir,IJepaModel:()=>ir,IJepaPreTrainedModel:()=>Qt,Idefics3ForConditionalGeneration:()=>Pa,Idefics3PreTrainedModel:()=>tl,ImageMattingOutput:()=>SS,JAISLMHeadModel:()=>Wt,JAISModel:()=>Ra,JAISPreTrainedModel:()=>Ut,JinaCLIPModel:()=>va,JinaCLIPPreTrainedModel:()=>oa,JinaCLIPTextModel:()=>Vn,JinaCLIPVisionModel:()=>Ba,Lfm2ForCausalLM:()=>hu,Lfm2Model:()=>Au,Lfm2PreTrainedModel:()=>sl,LiteWhisperForConditionalGeneration:()=>qo,Llama4ForCausalLM:()=>mr,Llama4PreTrainedModel:()=>sr,LlamaForCausalLM:()=>Lt,LlamaModel:()=>wt,LlamaPreTrainedModel:()=>ot,LlavaForConditionalGeneration:()=>gi,LlavaOnevisionForConditionalGeneration:()=>Xo,LlavaPreTrainedModel:()=>go,LlavaQwen2ForCausalLM:()=>Ai,LongT5ForConditionalGeneration:()=>Ar,LongT5Model:()=>gr,LongT5PreTrainedModel:()=>un,M2M100ForConditionalGeneration:()=>f$,M2M100Model:()=>m$,M2M100PreTrainedModel:()=>Dm,MBartForCausalLM:()=>es,MBartForConditionalGeneration:()=>gs,MBartForSequenceClassification:()=>Xr,MBartModel:()=>Wn,MBartPreTrainedModel:()=>yn,MPNetForMaskedLM:()=>Ds,MPNetForQuestionAnswering:()=>ye,MPNetForSequenceClassification:()=>ra,MPNetForTokenClassification:()=>ii,MPNetModel:()=>ta,MPNetPreTrainedModel:()=>Dr,MT5ForConditionalGeneration:()=>Un,MT5Model:()=>Dn,MT5PreTrainedModel:()=>Br,MarianMTModel:()=>h$,MarianModel:()=>A$,MarianPreTrainedModel:()=>Em,MaskFormerForInstanceSegmentation:()=>LC,MaskFormerModel:()=>FC,MaskFormerPreTrainedModel:()=>ym,MaskedLMOutput:()=>In,Metric3DForDepthEstimation:()=>OC,Metric3DPreTrainedModel:()=>kC,Metric3Dv2ForDepthEstimation:()=>zC,Metric3Dv2PreTrainedModel:()=>GC,MgpstrForSceneTextRecognition:()=>R2,MgpstrModelOutput:()=>F2,MgpstrPreTrainedModel:()=>L2,MimiDecoderModel:()=>X2,MimiDecoderOutput:()=>H2,MimiEncoderModel:()=>q2,MimiEncoderOutput:()=>Q2,MimiModel:()=>K2,MimiPreTrainedModel:()=>Ud,Ministral3ForCausalLM:()=>a2,Ministral3Model:()=>s2,Ministral3PreTrainedModel:()=>Sm,MinistralForCausalLM:()=>n2,MinistralModel:()=>r2,MinistralPreTrainedModel:()=>$m,Mistral3ForConditionalGeneration:()=>za,MistralForCausalLM:()=>t2,MistralModel:()=>e2,MistralPreTrainedModel:()=>Cm,MobileBertForMaskedLM:()=>Ke,MobileBertForQuestionAnswering:()=>ft,MobileBertForSequenceClassification:()=>Ze,MobileBertModel:()=>wn,MobileBertPreTrainedModel:()=>_n,MobileLLMForCausalLM:()=>Bu,MobileLLMModel:()=>vu,MobileLLMPreTrainedModel:()=>ul,MobileNetV1ForImageClassification:()=>M2,MobileNetV1ForSemanticSegmentation:()=>v2,MobileNetV1Model:()=>P2,MobileNetV1PreTrainedModel:()=>Rd,MobileNetV2ForImageClassification:()=>x2,MobileNetV2ForSemanticSegmentation:()=>E2,MobileNetV2Model:()=>B2,MobileNetV2PreTrainedModel:()=>Yd,MobileNetV3ForImageClassification:()=>I2,MobileNetV3ForSemanticSegmentation:()=>T2,MobileNetV3Model:()=>D2,MobileNetV3PreTrainedModel:()=>Nd,MobileNetV4ForImageClassification:()=>$2,MobileNetV4ForSemanticSegmentation:()=>S2,MobileNetV4Model:()=>C2,MobileNetV4PreTrainedModel:()=>jd,MobileViTForImageClassification:()=>jT,MobileViTModel:()=>NT,MobileViTPreTrainedModel:()=>nm,MobileViTV2ForImageClassification:()=>WT,MobileViTV2Model:()=>UT,MobileViTV2PreTrainedModel:()=>sm,ModelOutput:()=>we,ModernBertDecoderForCausalLM:()=>tn,ModernBertDecoderModel:()=>Vt,ModernBertDecoderPreTrainedModel:()=>hr,ModernBertForMaskedLM:()=>We,ModernBertForSequenceClassification:()=>yt,ModernBertForTokenClassification:()=>Mt,ModernBertModel:()=>Xe,ModernBertPreTrainedModel:()=>At,Moondream1ForConditionalGeneration:()=>Zo,MoonshineForConditionalGeneration:()=>Oa,MoonshineModel:()=>po,MoonshinePreTrainedModel:()=>co,MptForCausalLM:()=>G,MptModel:()=>z,MptPreTrainedModel:()=>T,MultiModalityCausalLM:()=>z2,MultiModalityPreTrainedModel:()=>G2,MusicgenForCausalLM:()=>Gz,MusicgenForConditionalGeneration:()=>Ym,MusicgenModel:()=>Oz,MusicgenPreTrainedModel:()=>Rm,NanoChatForCausalLM:()=>mo,NanoChatModel:()=>$s,NanoChatPreTrainedModel:()=>nn,NeoBertForMaskedLM:()=>Ue,NeoBertForQuestionAnswering:()=>dt,NeoBertForSequenceClassification:()=>ht,NeoBertForTokenClassification:()=>He,NeoBertModel:()=>rt,NeoBertPreTrainedModel:()=>ke,NomicBertModel:()=>ar,NomicBertPreTrainedModel:()=>hn,OPTForCausalLM:()=>me,OPTModel:()=>ue,OPTPreTrainedModel:()=>Z,Olmo2ForCausalLM:()=>nd,Olmo2Model:()=>dl,Olmo2PreTrainedModel:()=>Eu,OlmoForCausalLM:()=>Ss,OlmoModel:()=>xu,OlmoPreTrainedModel:()=>cl,OpenELMForCausalLM:()=>wd,OpenELMModel:()=>_d,OpenELMPreTrainedModel:()=>Ou,OwlViTForObjectDetection:()=>QT,OwlViTModel:()=>VT,OwlViTPreTrainedModel:()=>am,Owlv2ForObjectDetection:()=>KT,Owlv2Model:()=>HT,Owlv2PreTrainedModel:()=>im,PaliGemmaForConditionalGeneration:()=>Ga,PaliGemmaPreTrainedModel:()=>Ts,ParakeetForCTC:()=>M$,ParakeetPreTrainedModel:()=>P$,PatchTSMixerForPrediction:()=>U2,PatchTSMixerModel:()=>j2,PatchTSMixerPreTrainedModel:()=>jm,PatchTSTForPrediction:()=>N2,PatchTSTModel:()=>Y2,PatchTSTPreTrainedModel:()=>Nm,Phi3ForCausalLM:()=>Id,Phi3Model:()=>Dd,Phi3PreTrainedModel:()=>Lu,Phi3VForCausalLM:()=>La,Phi3VPreTrainedModel:()=>Fa,PhiForCausalLM:()=>Ed,PhiModel:()=>xd,PhiPreTrainedModel:()=>Fu,PreTrainedModel:()=>H,PretrainedMixin:()=>Tr,PvtForImageClassification:()=>pl,PvtModel:()=>Td,PvtPreTrainedModel:()=>_o,PyAnnoteForAudioFrameClassification:()=>B$,PyAnnoteModel:()=>v$,PyAnnotePreTrainedModel:()=>Im,QuestionAnsweringModelOutput:()=>Fn,Qwen2ForCausalLM:()=>
2832bd,Qwen2Model:()=>yd,Qwen2PreTrainedModel:()=>Gu,Qwen2VLForConditionalGeneration:()=>Bd,Qwen2VLPreTrainedModel:()=>vd,Qwen3ForCausalLM:()=>Md,Qwen3Model:()=>Pd,Qwen3PreTrainedModel:()=>zu,RFDetrForObjectDetection:()=>oC,RFDetrModel:()=>iC,RFDetrObjectDetectionOutput:()=>lC,RFDetrPreTrainedModel:()=>pm,RTDetrForObjectDetection:()=>rC,RTDetrModel:()=>tC,RTDetrObjectDetectionOutput:()=>Yu,RTDetrPreTrainedModel:()=>cm,RTDetrV2ForObjectDetection:()=>sC,RTDetrV2Model:()=>nC,RTDetrV2ObjectDetectionOutput:()=>aC,RTDetrV2PreTrainedModel:()=>dm,ResNetForImageClassification:()=>wC,ResNetModel:()=>_C,ResNetPreTrainedModel:()=>fm,RoFormerForMaskedLM:()=>fa,RoFormerForQuestionAnswering:()=>mn,RoFormerForSequenceClassification:()=>_a,RoFormerForTokenClassification:()=>Ur,RoFormerModel:()=>ma,RoFormerPreTrainedModel:()=>On,RobertaForMaskedLM:()=>Yo,RobertaForQuestionAnswering:()=>jo,RobertaForSequenceClassification:()=>No,RobertaForTokenClassification:()=>io,RobertaModel:()=>ao,RobertaPreTrainedModel:()=>Is,Sam2ImageSegmentationOutput:()=>c$,Sam2Model:()=>kd,Sam2PreTrainedModel:()=>d$,Sam3TrackerModel:()=>g$,SamImageSegmentationOutput:()=>u$,SamModel:()=>l$,SamPreTrainedModel:()=>o$,SapiensForDepthEstimation:()=>TC,SapiensForNormalEstimation:()=>CC,SapiensForSemanticSegmentation:()=>IC,SapiensPreTrainedModel:()=>Sd,SegformerForImageClassification:()=>m2,SegformerForSemanticSegmentation:()=>f2,SegformerModel:()=>kz,SegformerPreTrainedModel:()=>Ld,Seq2SeqLMOutput:()=>P8,SequenceClassifierOutput:()=>Ht,SiglipModel:()=>wi,SiglipPreTrainedModel:()=>_i,SiglipTextModel:()=>Ma,SiglipVisionModel:()=>vt,SmolLM3ForCausalLM:()=>fu,SmolLM3Model:()=>mu,SmolLM3PreTrainedModel:()=>al,SmolVLMForConditionalGeneration:()=>aa,SnacDecoderModel:()=>aS,SnacEncoderModel:()=>sS,SnacModel:()=>nS,SnacPreTrainedModel:()=>Vd,SpeechT5ForSpeechToText:()=>H$,SpeechT5ForTextToSpeech:()=>K$,SpeechT5HifiGan:()=>q$,SpeechT5Model:()=>Sz,SpeechT5PreTrainedModel:()=>zd,SqueezeBertForMaskedLM:()=>de,SqueezeBertForQuestionAnswering:()=>xe,SqueezeBertForSequenceClassification:()=>pe,SqueezeBertModel:()=>te,SqueezeBertPreTrainedModel:()=>O,StableLmForCausalLM:()=>w2,StableLmModel:()=>_2,StableLmPreTrainedModel:()=>Fm,Starcoder2ForCausalLM:()=>u2,Starcoder2Model:()=>l2,Starcoder2PreTrainedModel:()=>Om,StyleTextToSpeech2Model:()=>Q$,StyleTextToSpeech2PreTrainedModel:()=>V$,SupertonicForConditionalGeneration:()=>Tm,SupertonicPreTrainedModel:()=>X$,Swin2SRForImageSuperResolution:()=>vC,Swin2SRModel:()=>MC,Swin2SRPreTrainedModel:()=>_m,SwinForImageClassification:()=>bC,SwinForSemanticSegmentation:()=>PC,SwinModel:()=>yC,SwinPreTrainedModel:()=>$d,T5ForConditionalGeneration:()=>Or,T5Model:()=>jt,T5PreTrainedModel:()=>Xt,TableTransformerForObjectDetection:()=>pC,TableTransformerModel:()=>dC,TableTransformerObjectDetectionOutput:()=>gC,TableTransformerPreTrainedModel:()=>Am,TokenClassifierOutput:()=>Pn,TrOCRForCausalLM:()=>J$,TrOCRPreTrainedModel:()=>Z$,UltravoxModel:()=>Um,UltravoxPreTrainedModel:()=>W2,UniSpeechForCTC:()=>I$,UniSpeechForSequenceClassification:()=>T$,UniSpeechModel:()=>D$,UniSpeechPreTrainedModel:()=>Od,UniSpeechSatForAudioFrameClassification:()=>k$,UniSpeechSatForCTC:()=>$$,UniSpeechSatForSequenceClassification:()=>S$,UniSpeechSatModel:()=>C$,UniSpeechSatPreTrainedModel:()=>Nu,VaultGemmaForCausalLM:()=>hd,VaultGemmaModel:()=>Ad,VaultGemmaPreTrainedModel:()=>Su,ViTForImageClassification:()=>mt,ViTMAEModel:()=>ST,ViTMAEPreTrainedModel:()=>$T,ViTMSNForImageClassification:()=>OT,ViTMSNModel:()=>kT,ViTMSNPreTrainedModel:()=>tm,ViTModel:()=>it,ViTPreTrainedModel:()=>Ge,VisionEncoderDecoderModel:()=>pi,VitMatteForImageMatting:()=>YT,VitMattePreTrainedModel:()=>RT,VitPoseForPoseEstimation:()=>ua,VitPosePreTrainedModel:()=>Gr,VitsModel:()=>zm,VitsModelOutput:()=>kS,VitsPreTrainedModel:()=>h2,VoxtralForConditionalGeneration:()=>V2,Wav2Vec2BertForCTC:()=>G$,Wav2Vec2BertForSequenceClassification:()=>z$,Wav2Vec2BertModel:()=>O$,Wav2Vec2BertPreTrainedModel:()=>Gd,Wav2Vec2ForAudioFrameClassification:()=>b$,Wav2Vec2ForCTC:()=>w$,Wav2Vec2ForSequenceClassification:()=>y$,Wav2Vec2Model:()=>_$,Wav2Vec2PreTrainedModel:()=>Bi,WavLMForAudioFrameClassification:()=>W$,WavLMForCTC:()=>N$,WavLMForSequenceClassification:()=>j$,WavLMForXVector:()=>U$,WavLMModel:()=>Y$,WavLMPreTrainedModel:()=>gl,WeSpeakerResNetModel:()=>E$,WeSpeakerResNetPreTrainedModel:()=>x$,WhisperForConditionalGeneration:()=>di,WhisperModel:()=>uo,WhisperPreTrainedModel:()=>sa,XLMForQuestionAnswering:()=>Ho,XLMForSequenceClassification:()=>Vo,XLMForTokenClassification:()=>Qo,XLMModel:()=>Uo,XLMPreTrainedModel:()=>ya,XLMRobertaForMaskedLM:()=>oi,XLMRobertaForQuestionAnswering:()=>Ko,XLMRobertaForSequenceClassification:()=>li,XLMRobertaForTokenClassification:()=>
2832lo,XLMRobertaModel:()=>oo,XLMRobertaPreTrainedModel:()=>ba,XLMWithLMHeadModel:()=>Wo,XVectorOutput:()=>$S,YolosForObjectDetection:()=>a$,YolosModel:()=>s$,YolosObjectDetectionOutput:()=>i$,YolosPreTrainedModel:()=>xm});var n=r("./src/configs.js"),s=r("./src/backends/onnx.js"),a=r("./src/utils/dtypes.js"),i=r("./src/utils/generic.js"),o=r("./src/utils/core.js"),l=r("./src/utils/hub.js"),u=r("./src/utils/constants.js"),p=r("./src/generation/logits_process.js"),d=r("./src/generation/configuration_utils.js"),c=r("./src/utils/tensor.js"),g=r("./src/utils/image.js"),A=r("./src/utils/maths.js"),m=r("./src/generation/stopping_criteria.js"),B=r("./src/generation/logits_sampler.js"),f=r("./src/env.js"),h=r("./src/models/whisper/generation_whisper.js"),P=r("./src/models/whisper/common_whisper.js");const _={EncoderOnly:0,EncoderDecoder:1,Seq2Seq:2,Vision2Seq:3,DecoderOnly:4,MaskGeneration:5,ImageTextToText:6,Musicgen:7,MultiModality:8,Phi3V:9,AudioTextToText:10,AutoEncoder:11,ImageAudioTextToText:12,Supertonic:13},w=new Map,b=new Map,v=new Map;async function y(D,I,J){let Ae=J.config?.["transformers.js_config"]??{},Pe=J.device??Ae.device;Pe&&typeof Pe!="string"&&(Pe.hasOwnProperty(I)?Pe=Pe[I]:(console.warn(`device not specified for "${I}". Using the default device.`),Pe=null));const Ee=Pe??(f.apis.IS_NODE_ENV?"cpu":"wasm"),Re=(0,s.deviceToExecutionProviders)(Ee),qe=Ae.device_config??{};qe.hasOwnProperty(Ee)&&(Ae={...Ae,...qe[Ee]});let nt=J.dtype??Ae.dtype;if(typeof nt!="string"&&(nt&&nt.hasOwnProperty(I)?nt=nt[I]:(nt=a.DEFAULT_DEVICE_DTYPE_MAPPING[Ee]??a.DATA_TYPES.fp32,console.warn(`dtype not specified for "${I}". Using the default dtype (${nt}) for this device (${Ee}).`))),nt===a.DATA_TYPES.auto){let nr=Ae.dtype;typeof nr!="string"&&(nr=nr?.[I]),nr&&nr!==a.DATA_TYPES.auto&&a.DATA_TYPES.hasOwnProperty(nr)?nt=nr:nt=a.DEFAULT_DEVICE_DTYPE_MAPPING[Ee]??a.DATA_TYPES.fp32}const _t=nt;if(a.DEFAULT_DTYPE_SUFFIX_MAPPING.hasOwnProperty(_t)){if(_t===a.DATA_TYPES.fp16&&Ee==="webgpu"&&!await(0,a.isWebGpuFp16Supported)())throw new Error(`The device (${Ee}) does not support fp16.`)}else throw new Error(`Invalid dtype: ${_t}. Should be one of: ${Object.keys(a.DATA_TYPES).join(", ")}`);const Rt=Ae.kv_cache_dtype,Yt=Rt?typeof Rt=="string"?Rt:Rt[_t]??"float32":void 0;if(Yt&&!["float32","float16"].includes(Yt))throw new Error(`Invalid kv_cache_dtype: ${Yt}. Should be one of: float32, float16`);const Jt={dtype:_t,kv_cache_dtype:Yt,device:Ee},Ct=a.DEFAULT_DTYPE_SUFFIX_MAPPING[_t],fr=`${I}${Ct}.onnx`,$t=`${J.subfolder??""}/${fr}`,Tt={...J.session_options};Tt.executionProviders??=Re;const or=Ae.free_dimension_overrides;or?Tt.freeDimensionOverrides??=or:Ee.startsWith("webnn")&&!Tt.freeDimensionOverrides&&console.warn(`WebNN does not currently support dynamic shapes and requires 'free_dimension_overrides' to be set in config.json, preferably as a field within config["transformers.js_config"]["device_config"]["${Ee}"]. When 'free_dimension_overrides' is not set, you may experience significant performance degradation.`);const Cr=f.apis.IS_NODE_ENV&&f.env.useFSCache,Vr=(0,l.getModelFile)(D,$t,!0,J,Cr),Zr=J.use_external_data_format??Ae.use_external_data_format;let pn=[];if(Zr){let nr;typeof Zr=="object"?Zr.hasOwnProperty(fr)?nr=Zr[fr]:Zr.hasOwnProperty(I)?nr=Zr[I]:nr=!1:nr=Zr;const sn=+nr;if(sn>l.MAX_EXTERNAL_DATA_CHUNKS)throw new Error(`The number of external data chunks (${sn}) exceeds the maximum allowed value (${l.MAX_EXTERNAL_DATA_CHUNKS}).`);for(let Tn=0;Tn<sn;++Tn){const wo=`${fr}_data${Tn===0?"":"_"+Tn}`,qn=`${J.subfolder??""}/${wo}`;pn.push(new Promise(async(ca,hl)=>{const ml=await(0,l.getModelFile)(D,qn,!0,J,Cr);ca(ml instanceof Uint8Array?{path:wo,data:ml}:wo)}))}}else Tt.externalData!==void 0&&(pn=Tt.externalData.map(async nr=>{if(typeof nr.data=="string"){const sn=await(0,l.getModelFile)(D,nr.data,!0,J);return{...nr,data:sn}}return nr}));if(pn.length>0){const nr=await Promise.all(pn);f.apis.IS_NODE_ENV||(Tt.externalData=nr)}if(Ee==="webgpu"){const nr=(0,n.getCacheShapes)(J.config,{prefix:"present"});if(Object.keys(nr).length>0&&!(0,s.isONNXProxy)()){const sn={};for(const Tn in nr)sn[Tn]="gpu-buffer";Tt.preferredOutputLocation=sn}}return{buffer_or_path:await Vr,session_options:Tt,session_config:Jt}}async function $(D,I,J){return Object.fromEntries(await Promise.all(Object.keys(I).map(async Ae=>{const{buffer_or_path:Pe,session_options:Ee,session_config:Re}=await y(D,I[Ae],J),qe=await(0,s.createInferenceSession)(Pe,Ee,Re);return[Ae,qe]})))}async function k(D,I,J){return Object.fromEntries(await Promise.all(Object.keys(I).map(async Ae=>{const Pe=await(0,l.getModelJSON)(D,I[Ae],!1,J);return[Ae,Pe]})))}function W(D,I){const J=Object.create(null),Ae=[];for(const Re of D.inputNames){const qe=I[Re];if(!(qe instanceof c.Tensor)){Ae.push(Re);continue}J[Re]=(0,s.isONNXProxy)()?qe.clone():qe}if(Ae.length>0)throw new Error(`An error occurred during model execution: "Missing the following inputs: ${Ae.join(", ")}.`);const Pe=Object.keys(I).length,Ee=D.inputNames.length;if(Pe>Ee){let Re=Object.keys(I).filter(qe=>!D.inputNames.includes(qe));console.warn(`WARNING: Too many inputs were provided (${Pe} > ${Ee}). The following inputs will be ignored: "${Re.join(", ")}".`)}return J}async function j(D,I){const J=W(D,I);try{const Ae=Object.fromEntries(Object.entries(J).map(([Ee,Re])=>[Ee,Re.ort_tensor])),Pe=await(0,s.runInferenceSession)(D,Ae);return F(Pe)}catch(Ae){const Pe=Object.fromEntries(Object.entries(J).map(([Ee,Re])=>{const qe={type:Re.type,dims:Re.dims,location:Re.location};return qe.location!=="gpu-buffer"&&(qe.data=Re.data),[Ee,qe]}));throw console.error(`An error occurred during model execution: "${Ae}".`),console.error("Inputs given to model:",Pe),Ae}}function F(D){for(let I in D)(0,s.isONNXTensor)(D[I])?D[I]=new c.Tensor(D[I]):typeof D[I]=="object"&&F(D[I]);return D}function R(D){if(D instanceof c.Tensor)return D;if(D.length===0)throw Error("items must be non-empty");if(Array.isArray(D[0])){if(D.some(I=>I.length!==D[0].length))throw Error("Unable to create tensor, you should probably activate truncation and/or padding with 'padding=True' and/or 'truncation=True' to have batched tensors with the same length.");return new c.Tensor("int64",BigInt64Array.from(D.flat().map(I=>BigInt(I))),[D.length,D[0].length])}else return new c.Tensor("int64",BigInt64Array.from(D.map(I=>BigInt(I))),[1,D.length])}function L(D){return new c.Tensor("bool",[D],[1])}async function Q(D,I){let{encoder_outputs:J,input_ids:Ae,decoder_input_ids:Pe,...Ee}=I;if(!J){const qe=(0,o.pick)(I,D.sessions.model.inputNames);J=(await ne(D,qe)).last_hidden_state}return Ee.input_ids=Pe,Ee.encoder_hidden_states=J,D.sessions.decoder_model_merged.inputNames.includes("encoder_attention_mask")&&(Ee.encoder_attention_mask=I.attention_mask),await ce(D,Ee,!0)}async function ne(D,I){const J=D.sessions.model,Ae=(0,o.pick)(I,J.inputNames);if(J.inputNames.includes("inputs_embeds")&&!Ae.inputs_embeds){if(!I.input_ids)throw new Error("Both `input_ids` and `inputs_embeds` are missing in the model inputs.");Ae.inputs_embeds=await D.encode_text({input_ids:I.input_ids})}if(J.inputNames.includes("token_type_ids")&&!Ae.token_type_ids){if(!Ae.input_ids)throw new Error("Both `input_ids` and `token_type_ids` are missing in the model inputs.");Ae.token_type_ids=(0,c.zeros_like)(Ae.input_ids)}if(J.inputNames.includes("pixel_mask")&&!Ae.pixel_mask){if(!Ae.pixel_values)throw new Error("Both `pixel_values` and `pixel_mask` are missing in the model inputs.");const Pe=Ae.pixel_values.dims;Ae.pixel_mask=(0,c.ones)([Pe[0],Pe[2],Pe[3]])}return await j(J,Ae)}async function re(D,I){const J=await D.encode(I);return await D.decode(J)}async function ce(D,I,J=!1){const Ae=D.sessions[J?"decoder_model_merged":"model"],{past_key_values:Pe,...Ee}=I;if(Ae.inputNames.includes("use_cache_branch")&&(Ee.use_cache_branch=L(!!Pe)),Ae.inputNames.includes("position_ids")&&Ee.attention_mask&&!Ee.position_ids){const qe=["paligemma","gemma3_text","gemma3"].includes(D.config.model_type)?1:0;Ee.position_ids=De(Ee,Pe,qe)}D.addPastKeyValues(Ee,Pe);const Re=(0,o.pick)(Ee,Ae.inputNames);return await j(Ae,Re)}function ge({modality_token_id:D,inputs_embeds:I,modality_features:J,input_ids:Ae,attention_mask:Pe}){const Ee=Ae.tolist().map(_t=>_t.reduce((Rt,Yt,Jt)=>(Yt==D&&Rt.push(Jt),Rt),[])),Re=Ee.reduce((_t,Rt)=>_t+Rt.length,0),qe=J.dims[0];if(Re!==qe)throw new Error(`Number of tokens and features do not match: tokens: ${Re}, features ${qe}`);let nt=0;for(let _t=0;_t<Ee.length;++_t){const Rt=Ee[_t],Yt=I[_t];for(let Jt=0;Jt<Rt.length;
2832++Jt)Yt[Rt[Jt]].data.set(J[nt++].data)}return{inputs_embeds:I,attention_mask:Pe}}function q({image_token_id:D,inputs_embeds:I,image_features:J,input_ids:Ae,attention_mask:Pe}){return ge({modality_token_id:D,inputs_embeds:I,modality_features:J,input_ids:Ae,attention_mask:Pe})}function V({audio_token_id:D,inputs_embeds:I,audio_features:J,input_ids:Ae,attention_mask:Pe}){return ge({modality_token_id:D,inputs_embeds:I,modality_features:J,input_ids:Ae,attention_mask:Pe})}async function U(D,{encode_function:I,merge_function:J,modality_input_name:Ae,modality_output_name:Pe,input_ids:Ee=null,attention_mask:Re=null,position_ids:qe=null,inputs_embeds:nt=null,past_key_values:_t=null,generation_config:Rt=null,logits_processor:Yt=null,...Jt}){const Ct=Jt[Ae];if(!nt){if(nt=await D.encode_text({input_ids:Ee,...Jt}),Ct&&Ee.dims[1]!==1){const $t=await I({[Ae]:Ct,...Jt});({inputs_embeds:nt,attention_mask:Re}=J({[Pe]:$t,inputs_embeds:nt,input_ids:Ee,attention_mask:Re}))}else if(_t&&Ct&&Ee.dims[1]===1){const $t=Ee.dims[1],Tt=Object.values(_t)[0].dims.at(-2);Re=(0,c.cat)([(0,c.ones)([Ee.dims[0],Tt]),Re.slice(null,[Re.dims[1]-$t,Re.dims[1]])],1)}}if(!qe&&D.config.model_type==="qwen2_vl"){const{image_grid_thw:$t,video_grid_thw:Tt}=Jt;[qe]=D.get_rope_index(Ee,$t,Tt,Re)}return await ce(D,{inputs_embeds:nt,past_key_values:_t,attention_mask:Re,position_ids:qe,generation_config:Rt,logits_processor:Yt},!0)}async function N(D,I){return await U(D,{...I,modality_input_name:"audio_values",modality_output_name:"audio_features",encode_function:D.encode_audio.bind(D),merge_function:D._merge_input_ids_with_audio_features.bind(D)})}async function oe(D,I){return await U(D,{...I,modality_input_name:"pixel_values",modality_output_name:"image_features",encode_function:D.encode_image.bind(D),merge_function:D._merge_input_ids_with_image_features.bind(D)})}function fe(D,I=0){const[J,Ae]=D.dims,Pe=D.data,Ee=new BigInt64Array(Pe.length);for(let Re=0;Re<J;++Re){const qe=Re*Ae;let nt=BigInt(I);for(let _t=0;_t<Ae;++_t){const Rt=qe+_t;Pe[Rt]===0n?Ee[Rt]=BigInt(1):(Ee[Rt]=nt,nt+=Pe[Rt])}}return{data:Ee,dims:D.dims}}function De(D,I=null,J=0){const{input_ids:Ae,inputs_embeds:Pe,attention_mask:Ee}=D,{data:Re,dims:qe}=fe(Ee,J);let nt=new c.Tensor("int64",Re,qe);if(I){const _t=-(Ae??Pe).dims.at(1);nt=nt.slice(null,[_t,null])}return nt}function Ie(D,I,J,Ae){const Pe=J.past_key_values?Object.values(J.past_key_values)[0].dims.at(-2):0;if(!J.attention_mask){let Ee;for(const Re of["input_ids","inputs_embeds","position_ids"])if(J[Re]){Ee=J[Re].dims;break}if(!Ee)throw new Error("attention_mask is not provided, and unable to infer its shape from model inputs.");J.attention_mask=(0,c.ones)([Ee[0],Pe+Ee[1]])}if(J.past_key_values){const{input_ids:Ee,attention_mask:Re}=J;Re&&Re.dims[1]>Ee.dims[1]||Pe<Ee.dims[1]&&(J.input_ids=Ee.slice(null,[Pe,null]))}return J}function je(D,I,J,Ae){return J.past_key_values&&(I=I.map(Pe=>[Pe.at(-1)])),{...J,decoder_input_ids:R(I)}}function Me(D,...I){return D.config.is_encoder_decoder?je(D,...I):Ie(D,...I)}function se(D,I,J,Ae){const Pe=!!J.past_key_values;return Ae.guidance_scale!==null&&Ae.guidance_scale>1&&(Pe?J.input_ids=(0,c.cat)([J.input_ids,J.input_ids],0):(J.input_ids=(0,c.cat)([J.input_ids,(0,c.full_like)(J.input_ids,BigInt(Ae.pad_token_id))],0),J.attention_mask=(0,c.cat)([J.attention_mask,(0,c.full_like)(J.attention_mask,0n)],0))),(Pe||!J.pixel_values)&&(J.pixel_values=(0,c.full)([0,0,3,384,384],1)),Pe&&(J.images_seq_mask=new c.Tensor("bool",new Array(1).fill(!0).fill(!1,0,1),[1,1]),J.images_emb_mask=new c.Tensor("bool",new Array(0).fill(!1),[1,1,0])),J}class H extends i.Callable{main_input_name="input_ids";forward_params=["input_ids","attention_mask"];constructor(I,J,Ae){super(),this.config=I,this.sessions=J,this.configs=Ae;const Pe=v.get(this.constructor),Ee=w.get(Pe);switch(this.can_generate=!1,this._forward=null,this._prepare_inputs_for_generation=null,Ee){case _.DecoderOnly:this.can_generate=!0,this._forward=ce,this._prepare_inputs_for_generation=Ie;break;case _.Seq2Seq:case _.Vision2Seq:case _.Musicgen:this.can_generate=!0,this._forward=Q,this._prepare_inputs_for_generation=je;break;case _.EncoderDecoder:this._forward=Q;break;case _.ImageTextToText:this.can_generate=!0,this._forward=oe,this._prepare_inputs_for_generation=Me;break;case _.AudioTextToText:this.can_generate=!0,this._forward=N,this._prepare_inputs_for_generation=Me;break;case _.Phi3V:case _.ImageAudioTextToText:this.can_generate=!0,this._prepare_inputs_for_generation=Me;break;
2832case _.MultiModality:this.can_generate=!0,this._prepare_inputs_for_generation=se;break;case _.AutoEncoder:this._forward=re;break;default:this._forward=ne;break}this.can_generate&&this.forward_params.push("past_key_values"),this.custom_config=this.config["transformers.js_config"]??{}}async dispose(){const I=[];for(const J of Object.values(this.sessions))J?.handler?.dispose&&I.push(J.handler.dispose());return await Promise.all(I)}static async from_pretrained(I,{progress_callback:J=null,config:Ae=null,cache_dir:Pe=null,local_files_only:Ee=!1,revision:Re="main",model_file_name:qe=null,subfolder:nt="onnx",device:_t=null,dtype:Rt=null,use_external_data_format:Yt=null,session_options:Jt={}}={}){let Ct={progress_callback:J,config:Ae,cache_dir:Pe,local_files_only:Ee,revision:Re,model_file_name:qe,subfolder:nt,device:_t,dtype:Rt,use_external_data_format:Yt,session_options:Jt};const fr=v.get(this),$t=w.get(fr);Ae=Ct.config=await n.AutoConfig.from_pretrained(I,Ct);let Tt;if($t===_.DecoderOnly)Tt=await Promise.all([$(I,{model:Ct.model_file_name??"model"},Ct),k(I,{generation_config:"generation_config.json"},Ct)]);else if($t===_.Seq2Seq||$t===_.Vision2Seq)Tt=await Promise.all([$(I,{model:"encoder_model",decoder_model_merged:"decoder_model_merged"},Ct),k(I,{generation_config:"generation_config.json"},Ct)]);else if($t===_.MaskGeneration)Tt=await Promise.all([$(I,{model:"vision_encoder",prompt_encoder_mask_decoder:"prompt_encoder_mask_decoder"},Ct)]);else if($t===_.EncoderDecoder)Tt=await Promise.all([$(I,{model:"encoder_model",decoder_model_merged:"decoder_model_merged"},Ct)]);else if($t===_.ImageTextToText){const or={embed_tokens:"embed_tokens",vision_encoder:"vision_encoder",decoder_model_merged:"decoder_model_merged"};Ae.is_encoder_decoder&&(or.model="encoder_model"),Tt=await Promise.all([$(I,or,Ct),k(I,{generation_config:"generation_config.json"},Ct)])}else if($t===_.AudioTextToText){const or={embed_tokens:"embed_tokens",audio_encoder:"audio_encoder",decoder_model_merged:"decoder_model_merged"};Tt=await Promise.all([$(I,or,Ct),k(I,{generation_config:"generation_config.json"},Ct)])}else if($t===_.ImageAudioTextToText){const or={embed_tokens:"embed_tokens",audio_encoder:"audio_encoder",vision_encoder:"vision_encoder",decoder_model_merged:"decoder_model_merged"};Tt=await Promise.all([$(I,or,Ct),k(I,{generation_config:"generation_config.json"},Ct)])}else if($t===_.Musicgen)Tt=await Promise.all([$(I,{model:"text_encoder",decoder_model_merged:"decoder_model_merged",encodec_decode:"encodec_decode"},Ct),k(I,{generation_config:"generation_config.json"},Ct)]);else if($t===_.MultiModality)Tt=await Promise.all([$(I,{prepare_inputs_embeds:"prepare_inputs_embeds",model:"language_model",lm_head:"lm_head",gen_head:"gen_head",gen_img_embeds:"gen_img_embeds",image_decode:"image_decode"},Ct),k(I,{generation_config:"generation_config.json"},Ct)]);else if($t===_.Phi3V)Tt=await Promise.all([$(I,{prepare_inputs_embeds:"prepare_inputs_embeds",model:"model",vision_encoder:"vision_encoder"},Ct),k(I,{generation_config:"generation_config.json"},Ct)]);else if($t===_.AutoEncoder)Tt=await Promise.all([$(I,{encoder_model:"encoder_model",decoder_model:"decoder_model"},Ct)]);else if($t===_.Supertonic)Tt=await Promise.all([$(I,{text_encoder:"text_encoder",latent_denoiser:"latent_denoiser",voice_decoder:"voice_decoder"},Ct)]);else{if($t!==_.EncoderOnly){const or=fr??Ae?.model_type;or!=="custom"&&console.warn(`Model type for '${or}' not found, assuming encoder-only architecture. Please report this at ${u.GITHUB_ISSUE_URL}.`)}Tt=await Promise.all([$(I,{model:Ct.model_file_name??"model"},Ct)])}return new this(Ae,...Tt)}async _call(I){return await this.forward(I)}async forward(I){return await this._forward(this,I)}get generation_config(){return this.configs?.generation_config??null}_get_logits_processor(I,J,Ae=null){const Pe=new p.LogitsProcessorList;if(I.repetition_penalty!==null&&I.repetition_penalty!==1&&Pe.push(new p.RepetitionPenaltyLogitsProcessor(I.repetition_penalty)),I.no_repeat_ngram_size!==null&&I.no_repeat_ngram_size>0&&Pe.push(new p.NoRepeatNGramLogitsProcessor(I.no_repeat_ngram_size)),I.bad_words_ids!==null&&Pe.push(new p.NoBadWordsLogitsProcessor(I.bad_words_ids,I.eos_token_id)),I.min_length!==null&&I.eos_token_id!==null&&I.min_length>0&&Pe.push(new p.MinLengthLogitsProcessor(I.min_length,I.eos_token_id)),I.min_new_tokens!==null&&I.eos_token_id!==null&&I.min_new_tokens>0&&Pe.push(new p.MinNewTokensLengthLogitsProcessor(J,I.min_new_tokens,I.eos_token_id)),I.forced_bos_token_id!==null&&Pe.push(new p.ForcedBOSTokenLogitsProcessor(I.forced_bos_token_id)),I.forced_eos_token_id!==null&&Pe.push(new p.ForcedEOSTokenLogitsProcessor(I.max_length,I.forced_eos_token_id)),I.begin_suppress_tokens!==null){const Ee=J>1||I.forced_bos_token_id===null?J:J+1;Pe.push(new p.SuppressTokensAtBeginLogitsProcessor(I.begin_suppress_tokens,Ee))}return I.guidance_scale!==null&&I.guidance_scale>1&&Pe.push(new p.ClassifierFreeGuidanceLogitsProcessor(I.guidance_scale)),I.temperature===0&&I.do_sample&&(console.warn("`do_sample` changed to fal
2832se because `temperature: 0` implies greedy sampling (always selecting the most likely token), which is incompatible with `do_sample: true`."),I.do_sample=!1),I.do_sample&&I.temperature!==null&&I.temperature!==1&&Pe.push(new p.TemperatureLogitsWarper(I.temperature)),Ae!==null&&Pe.extend(Ae),Pe}_prepare_generation_config(I,J,Ae=d.GenerationConfig){const Pe={...this.config};for(const Re of["decoder","generator","text_config"])Re in Pe&&Object.assign(Pe,Pe[Re]);const Ee=new Ae(Pe);return Object.assign(Ee,this.generation_config??{}),I&&Object.assign(Ee,I),J&&Object.assign(Ee,(0,o.pick)(J,Object.getOwnPropertyNames(Ee))),Ee}_get_stopping_criteria(I,J=null){const Ae=new m.StoppingCriteriaList;return I.max_length!==null&&Ae.push(new m.MaxLengthCriteria(I.max_length,this.config.max_position_embeddings??null)),I.eos_token_id!==null&&Ae.push(new m.EosTokenCriteria(I.eos_token_id)),J&&Ae.extend(J),Ae}_validate_model_class(){if(!this.can_generate){const I=[Qm,Hm,Vm,Wm],J=v.get(this.constructor),Ae=new Set,Pe=this.config.model_type;for(const Re of I){const qe=Re.get(Pe);qe&&Ae.add(qe[0])}let Ee=`The current model class (${J}) is not compatible with \`.generate()\`, as it doesn't have a language model head.`;throw Ae.size>0&&(Ee+=` Please use the following class instead: ${[...Ae].join(", ")}`),Error(Ee)}}prepare_inputs_for_generation(...I){return this._prepare_inputs_for_generation(this,...I)}_update_model_kwargs_for_generation({generated_input_ids:I,outputs:J,model_inputs:Ae,is_encoder_decoder:Pe}){return Ae.past_key_values=this.getPastKeyValues(J,Ae.past_key_values),Ae.input_ids=new c.Tensor("int64",I.flat(),[I.length,1]),Pe||(Ae.attention_mask=(0,c.cat)([Ae.attention_mask,(0,c.ones)([Ae.attention_mask.dims[
28320],1])],1)),Ae.position_ids=null,Ae}_prepare_model_inputs({inputs:I,bos_token_id:J,model_kwargs:Ae}){const Pe=(0,o.pick)(Ae,this.forward_params),Ee=this.main_input_name;if(Ee in Pe){if(I)throw new Error("`inputs`: {inputs}` were passed alongside {input_name} which is not allowed. Make sure to either pass {inputs} or {input_name}=...")}else Pe[Ee]=I;return{inputs_tensor:Pe[Ee],model_inputs:Pe,model_input_name:Ee}}async _prepare_encoder_decoder_kwargs_for_generation({inputs_tensor:I,model_inputs:J,model_input_name:Ae,generation_config:Pe}){if(this.sessions.model.inputNames.includes("inputs_embeds")&&!J.inputs_embeds&&"_prepare_inputs_embeds"in this){const{input_ids:Re,pixel_values:qe,attention_mask:nt,..._t}=J,Rt=await this._prepare_inputs_embeds(J);J={..._t,...(0,o.pick)(Rt,["inputs_embeds","attention_mask"])}}let{last_hidden_state:Ee}=await ne(this,J);if(Pe.guidance_scale!==null&&Pe.guidance_scale>1)Ee=(0,c.cat)([Ee,(0,c.full_like)(Ee,0)],0),"attention_mask"in J&&(J.attention_mask=(0,c.cat)([J.attention_mask,(0,c.zeros_like)(J.attention_mask)],0));else if(J.decoder_input_ids){const Re=R(J.decoder_input_ids).dims[0];if(Re!==Ee.dims[0]){if(Ee.dims[0]!==1)throw new Error(`The encoder outputs have a different batch size (${Ee.dims[0]}) than the decoder inputs (${Re}).`);Ee=(0,c.cat)(Array.from({length:Re},()=>Ee),0)}}return J.encoder_outputs=Ee,J}_prepare_decoder_input_ids_for_generation({batch_size:I,model_input_name:J,model_kwargs:Ae,decoder_start_token_id:Pe,bos_token_id:Ee,generation_config:Re}){let{decoder_input_ids:qe,...nt}=Ae;if(!(qe instanceof c.Tensor)){if(qe)Array.isArray(qe[0])||(qe=Array.from({length:I},()=>qe));else if(Pe??=Ee,this.config.model_type==="musicgen")qe=Array.from({length:I*this.config.decoder.num_codebooks},()=>[Pe]);else if(Array.isArray(Pe)){if(Pe.length!==I)throw new Error(`\`decoder_start_token_id\` expcted to have length ${I} but got ${Pe.length}`);qe=Pe}else qe=Array.from({length:I},()=>[Pe]);qe=R(qe)}return Ae.decoder_attention_mask=(0,c.ones_like)(qe),{input_ids:qe,model_inputs:nt}}async generate({inputs:I=null,generation_config:J=null,logits_processor:Ae=null,stopping_criteria:Pe=null,streamer:Ee=null,...Re}){this._validate_model_class(),J=this._prepare_generation_config(J,Re);let{inputs_tensor:qe,model_inputs:nt,model_input_name:_t}=this._prepare_model_inputs({inputs:I,model_kwargs:Re});const Rt=this.config.is_encoder_decoder;Rt&&("encoder_outputs"in nt||(nt=await this._prepare_encoder_decoder_kwargs_for_generation({inputs_tensor:qe,model_inputs:nt,model_input_name:_t,generation_config:J})));let Yt;Rt?{input_ids:Yt,model_inputs:nt}=this._prepare_decoder_input_ids_for_generation({batch_size:nt[_t].dims.at(0),model_input_name:_t,model_kwargs:nt,decoder_start_token_id:J.decoder_start_token_id,bos_token_id:J.bos_token_id,generation_config:J}):Yt=nt[_t];let Jt=Yt.dims.at(-1);J.max_new_tokens!==null&&(J.max_length=Jt+J.max_new_tokens);const Ct=this._get_logits_processor(J,Jt,Ae),fr=this._get_stopping_criteria(J,Pe),$t=nt[_t].dims.at(0),Tt=B.LogitsSampler.getSampler(J),or=new Array($t).fill(0),Cr=Yt.tolist();Ee&&Ee.put(Cr);let Vr,Zr={};for(;;){if(nt=this.prepare_inputs_for_generation(Cr,nt,J),Vr=await this.forward(nt),J.output_attentions&&J.return_dict_in_generate){const qn=this.getAttentions(Vr);for(const ca in qn)ca in Zr||(Zr[ca]=[]),Zr[ca].push(qn[ca])}const nr=Vr.logits.slice(null,-1,null),sn=Ct(Cr,nr),Tn=[];for(let qn=0;qn<sn.dims.at(0);++qn){const ca=sn[qn],hl=await Tt(ca);for(const[ml,Qd]of hl){const ju=BigInt(ml);or[qn]+=Qd,Cr[qn].push(ju),Tn.push([ju]);break}}if(Ee&&Ee.put(Tn),fr(Cr).every(qn=>qn))break;nt=this._update_model_kwargs_for_generation({generated_input_ids:Tn,outputs:Vr,model_inputs:nt,is_encoder_decoder:Rt})}Ee&&Ee.end();const pn=this.getPastKeyValues(Vr,nt.past_key_values,!0),gn=new c.Tensor("int64",Cr.flat(),[Cr.length,Cr[0].length]);if(J.return_dict_in_generate)return{sequences:gn,past_key_values:pn,...Zr};for(const nr of Object.values(Vr))nr.location==="gpu-buffer"&&nr.dispose();return gn}getPastKeyValues(I,J,Ae=!1){const Pe=Object.create(null);for(const Ee in I)if(Ee.startsWith("present")){const Re=Ee.replace("present_conv","past_conv").replace("present","past_key_values"),qe=Ee.includes("encoder");if(qe&&J?Pe[Re]=J[Re]:Pe[Re]=I[Ee],J&&(!qe||Ae)){const nt=J[Re];nt.location==="gpu-buffer"&&nt.dispose()}}return Pe}getAttentions(I){const J={};for(const Ae of["cross_attentions","encoder_attentions","decoder_attentions"])for(const Pe in I)Pe.startsWith(Ae)&&(Ae in J||(J[Ae]=[]),J[Ae].push(I[Pe]));return J}addPastKeyValues(I,J){if(J)Object.assign(I,J);else{const Ae=this.sessions.decoder_model_merged??this.sessions.model,Pe=(I[this.main_input_name]??I.attention_mask)?.dims?.[0]??1,Ee=Ae?.config?.kv_cache_dtype??"float32",Re=Ee==="float16"?c.DataTypeMap.float16:c.DataTypeMap.float32,qe=(0,n.getCacheShapes)(this.config,{batch_size:Pe});for(const nt in qe){const _t=qe[nt].reduce((Rt,Yt)=>Rt*Yt,1);I[nt]=new c.Tensor(Ee,new Re(_t),qe[nt])}}}async encode_image({pixel_values:I}){return(await j(this.sessions.vision_encoder,{pixel_values:I})).image_features}async encode_text({input_ids:I}){return(await j(this.sessions.embed_tokens,{input_ids:I})).inputs_embeds}async encode_audio({audio_values:I}){return(await j(this.sessions.audio_encoder,{audio_values:I})).audio_features}}class we{}class be extends we{constructor({last_hidden_state:I,hidden_states:J=null,attentions:Ae=null}){super(),this.last_hidden_state=I,this.hidden_states=J,this.attentions=Ae}}class Ce extends H{}class Se extends Ce{}class ze extends Ce{async _call(I){return new In(await super._call(I))}}class ve extends Ce{async _call(I){return new Ht(await super._call(I))}}class Ve extends Ce{async _call(I){return new Pn(await super._call(I))}}class Be extends Ce{async _call(I){return new Fn(await super._call(I))}}class ke extends H{}class rt extends ke{}class Ue extends ke{async _call(I){return new In(await super._call(I))}}class ht extends ke{async _call(I){return new Ht(await super._call(I))}}class He extends ke{async _call(I){return new Pn(await super._call(I))}}class dt extends ke{async _call(I){return new Fn(await super._call(I))}}class At extends H{}class Xe extends At{}class We extends At{async _call(I){return new In(await super._call(I))}}class yt extends At{async _call(I){return new Ht(await super._call(I))}}class Mt extends At{async _call(I){return new Pn(await super._call(I))}}class hr extends H{}class Vt extends hr{}class tn extends hr{}class hn extends H{}class ar extends hn{}class On extends H{}class ma extends On{}class fa extends On{async _call(I){return new In(await super._call(I))}}class _a extends On{async _call(I){return new Ht(await super._call(I))}}class Ur extends On{async _call(I){return new Pn(await super._call(I))}}class mn extends On{async _call(I){return new Fn(await super._call(I))}}class Nn extends H{}class Ms extends Nn{}class kt extends Nn{async _call(I){return new In(await super._call(I))}}class Er extends Nn{async _call(I){return new Ht(await super._call(I))}}class us extends Nn{async _call(I){return new Pn(await super._call(I))}}class cs extends Nn{async _call(I){return new Fn(await super._call(I))}}class pr extends H{}class Ft extends pr{}class ds extends pr{async _call(I){return new In(await super._call(I))}}class S extends pr{async _call(I){return new Ht(await super._call(I))}}class ie extends pr{async _call(I){return new Pn(await super._call(I))}}class X extends pr{async _call(I){return new Fn(await super._call(I))}}class ae extends H{}class le extends ae{}class _e extends ae{async _call(I){return new In(await super._call(I))}}class Oe extends ae{async _call(I){return new Ht(await super._call(I))}}class gt extends ae{async _call(I){return new Pn(await super._call(I))}}class Et extends ae{async _call(I){return new Fn(await super._call(I))}}class at extends H{}class Ot extends at{}class lt extends at{async _call(I){return new In(await super._call(I))}}class St extends at{async _call(I){return new Ht(await super._call(I))}}class rr extends at{async _call(I){return new Pn(await super._call(I))}}class Hr extends at{async _call(I){return new Fn(await super._call(I))}}class kr extends H{}class yr extends kr{}class ln extends kr{async _call(I){return new In(await super._call(I))}}class vs extends kr{async _call(I){return new Ht(await super._call(I))}}class En extends kr{async _call(I){return new Pn(await super._call(I))}}class ps extends kr{async _call(I){return new Fn(await super._call(I))}}class Kr extends H{}class fn extends Kr{}class qr extends Kr{async _call(I){return new Ht(await super._call(I))}}class vr extends Kr{async _call(I){return new Pn(await super._call(I))}}class Rr extends Kr{async _call(I){return new Fn(await super._call(I))}}class jn extends Kr{async _call(I){return new In(await super._call(I))}}class Zn extends H{}class ea extends Zn{}class Bs extends Zn{async _call(I){return new In(await super._call(I))}}class xs extends Zn{async _call(I){return new Ht(await super._call(I))}}class Es extends Zn{async _call(I){return new Pn(await super._call(I))}}class _n extends H{}class wn extends _n{}class Ke extends _n{async _call(I){return new In(await super._call(I))}}class Ze extends _n{async _call(I){return new Ht(await super._call(I))}}class ft extends _n{async _call(I){return new Fn(await super._call(I))}}class Dr extends H{}class ta extends Dr{}class Ds extends Dr{async _call(I){return new In(await super._call(I))}}class ra extends Dr{async _call(I){return new Ht(await super._call(I))}}class ii extends Dr{async _call(I){return new Pn(await super._call(I))}}class ye extends Dr{async _call(I){return new Fn(await super._call(I))}}class O extends H{}class te extends O{}class de extends O{async _call(I){return new In(await super._call(I))}}class pe extends O{async _call(I){return new Ht(await super._call(I))}}class xe extends O{async _call(I){return new Fn(await super._call(I))}}class Fe extends H{}class ct extends Fe{}class ut extends Fe{async _call(I){return new Ht(await super._call(I))}}class pt extends Fe{async _call(I){return new Fn(await super._call(I))}}class st extends Fe{async _call(I){return new In(await super._call(I))}}class Xt extends H{forward_params=["input_ids","attention_mask","encoder_outputs","decoder_input_ids","decoder_attention_mask","past_key_values"]}class jt extends Xt{}class Or extends Xt{}class un extends H{}class gr extends un{}class Ar extends un{}class Br extends H{}class Dn extends Br{}class Un extends Br{}class cn extends H{}class Jn extends cn{}class Yr extends cn{}class Wr extends cn{async _call(I){return new Ht(await super._call(I))}}class yn extends H{}class Wn extends yn{}
2832class gs extends yn{}class Xr extends yn{async _call(I){return new Ht(await super._call(I))}}class es extends yn{}class dn extends H{}class Nr extends dn{}class rn extends dn{}class zr extends H{}class zn extends zr{}class wa extends zr{}class Is extends H{}class ao extends Is{}class Yo extends Is{async _call(I){return new In(await super._call(I))}}class No extends Is{async _call(I){return new Ht(await super._call(I))}}class io extends Is{async _call(I){return new Pn(await super._call(I))}}class jo extends Is{async _call(I){return new Fn(await super._call(I))}}class ya extends H{}class Uo extends ya{}class Wo extends ya{async _call(I){return new In(await super._call(I))}}class Vo extends ya{async _call(I){return new Ht(await super._call(I))}}class Qo extends ya{async _call(I){return new Pn(await super._call(I))}}class Ho extends ya{async _call(I){return new Fn(await super._call(I))}}class ba extends H{}class oo extends ba{}class oi extends ba{async _call(I){return new In(await super._call(I))}}class li extends ba{async _call(I){return new Ht(await super._call(I))}}class lo extends ba{async _call(I){return new Pn(await super._call(I))}}class Ko extends ba{async _call(I){return new Fn(await super._call(I))}}class ui extends H{}class ci extends ui{}class na extends ui{}class sa extends H{requires_attention_mask=!1;main_input_name="input_features";forward_params=["input_features","attention_mask","decoder_input_ids","decoder_attention_mask","past_key_values"]}class uo extends sa{}class di extends sa{_prepare_generation_config(I,J){return super._prepare_generation_config(I,J,h.WhisperGenerationConfig)}_retrieve_init_tokens(I){const J=[I.decoder_start_token_id];let Ae=I.language;const Pe=I.task;if(I.is_multilingual){Ae||(console.warn("No language specified - defaulting to English (en)."),Ae="en");const Re=`<|${(0,P.whisper_language_to_code)(Ae)}|>`;J.push(I.lang_to_id[Re]),J.push(I.task_to_id[Pe??"transcribe"])}else if(Ae||Pe)throw new Error("Cannot specify `task` or `language` for an English-only model. If the model is intended to be multilingual, pass `is_multilingual=true` to generate, or update the generation config.");return!I.return_timestamps&&I.no_timestamps_token_id&&J.at(-1)!==I.no_timestamps_token_id?J.push(I.no_timestamps_token_id):I.return_timestamps&&J.at(-1)===I.no_timestamps_token_id&&(console.warn("<|notimestamps|> prompt token is removed from generation_config since `return_timestamps` is set to `true`."),J.pop()),J.filter(Ee=>Ee!=null)}async generate({inputs:I=null,generation_config:J=null,logits_processor:Ae=null,stopping_criteria:Pe=null,...Ee}){J=this._prepare_generation_config(J,Ee);const Re=Ee.decoder_input_ids??this._retrieve_init_tokens(J);if(J.return_timestamps&&(Ae??=new p.LogitsProcessorList,Ae.push(new p.WhisperTimeStampLogitsProcessor(J,Re))),J.begin_suppress_tokens&&(Ae??=new p.LogitsProcessorList,Ae.push(new p.SuppressTokensAtBeginLogitsProcessor(J.begin_suppress_tokens,Re.length))),J.return_token_timestamps){if(!J.alignment_heads)throw new Error("Model generation config has no `alignment_heads`, token-level timestamps not available. See https://gist.github.com/hollance/42e32852f24243b748ae6bc1f985b13a on how to add this property to the generation config.");J.task==="translate"&&console.warn("Token-level timestamps may not be reliable for task 'translate'."),J.output_attentions=!0,J.return_dict_in_generate=!0}const qe=await super.generate({inputs:I,generation_config:J,logits_processor:Ae,decoder_input_ids:Re,...Ee});return J.return_token_timestamps&&(qe.token_timestamps=this._extract_token_timestamps(qe,J.alignment_heads,J.num_frames)),qe}_extract_token_timestamps(I,J,Ae=null,Pe=.02){if(!I.cross_attentions)throw new Error("Model outputs must contain cross attentions to extract timestamps. This is most likely because the model was not exported with `output_attentions=True`.");Ae==null&&console.warn("`num_frames` has not been set, meaning the entire audio will be analyzed. This may lead to inaccurate token-level timestamps for short audios (< 30 seconds).");let Ee=this.config.median_filter_width;Ee===void 0&&(console.warn("Model config has no `median_filter_width`, using default value of 7."),Ee=7);const Re=I.cross_attentions,qe=Array.from({length:this.config.decoder_layers},($t,Tt)=>(0,c.cat)(Re.map(or=>or[Tt]),2)),nt=(0,c.stack)(J.map(([$t,Tt])=>
2832{if($t>=qe.length)throw new Error(`Layer index ${$t} is out of bounds for cross attentions (length ${qe.length}).`);return Ae?qe[$t].slice(null,Tt,null,[0,Ae]):qe[$t].slice(null,Tt)})).transpose(1,0,2,3),[_t,Rt]=(0,c.std_mean)(nt,-2,0,!0),Yt=nt.clone();for(let $t=0;$t<Yt.dims[0];++$t){const Tt=Yt[$t];for(let or=0;or<Tt.dims[0];++or){const Cr=Tt[or],Vr=_t[$t][or][0].data,Zr=Rt[$t][or][0].data;for(let pn=0;pn<Cr.dims[0];++pn){let gn=Cr[pn].data;for(let nr=0;nr<gn.length;++nr)gn[nr]=(gn[nr]-Zr[nr])/Vr[nr];gn.set((0,A.medianFilter)(gn,Ee))}}}const Jt=[(0,c.mean)(Yt,1)],Ct=I.sequences.dims,fr=new c.Tensor("float32",new Float32Array(Ct[0]*Ct[1]),Ct);for(let $t=0;$t<Ct[0];++$t){const Tt=Jt[$t].neg().squeeze_(0),[or,Cr]=(0,A.dynamic_time_warping)(Tt.tolist()),Vr=Array.from({length:or.length-1},(gn,nr)=>or[nr+1]-or[nr]),Zr=(0,o.mergeArrays)([1],Vr).map(gn=>!!gn),pn=[];for(let gn=0;gn<Zr.length;++gn)Zr[gn]&&pn.push(Cr[gn]*Pe);fr[$t].data.set(pn,1)}return fr}}class qo extends di{}class co extends H{requires_attention_mask=!1;main_input_name="input_values";forward_params=["input_values","decoder_input_ids","past_key_values"]}class po extends co{}class Oa extends co{}class pi extends H{main_input_name="pixel_values";forward_params=["pixel_values","decoder_input_ids","encoder_hidden_states","past_key_values"]}class go extends H{forward_params=["input_ids","attention_mask","pixel_values","position_ids","past_key_values"]}class gi extends go{_merge_input_ids_with_image_features(I){const J=I.image_features.dims.at(-1),Ae=I.image_features.view(-1,J);return q({image_token_id:this.config.image_token_index,...I,image_features:Ae})}}class Xo extends gi{}class Zo extends gi{}class Jo extends H{forward_params=["input_ids","inputs_embeds","attention_mask","pixel_values","encoder_outputs","decoder_input_ids","decoder_inputs_embeds","decoder_attention_mask","past_key_values"];main_input_name="inputs_embeds"}class el extends Jo{_merge_input_ids_with_image_features({inputs_embeds:I,image_features:J,input_ids:Ae,attention_mask:Pe}){return{inputs_embeds:(0,c.cat)([J,I],1),attention_mask:(0,c.cat)([(0,c.ones)(J.dims.slice(0,2)),Pe],1)}}async _prepare_inputs_embeds({input_ids:I,pixel_values:J,inputs_embeds:Ae,attention_mask:Pe}){if(!I&&!J)throw new Error("Either `input_ids` or `pixel_values` should be provided.");let Ee,Re;return I&&(Ee=await this.encode_text({input_ids:I})),J&&(Re=await this.encode_image({pixel_values:J})),Ee&&Re?{inputs_embeds:Ae,attention_mask:Pe}=this._merge_input_ids_with_image_features({inputs_embeds:Ee,image_features:Re,input_ids:I,attention_mask:Pe}):Ae=Ee||Re,{inputs_embeds:Ae,attention_mask:Pe}}async forward({input_ids:I,pixel_values:J,attention_mask:Ae,decoder_input_ids:Pe,decoder_attention_mask:Ee,encoder_outputs:Re,past_key_values:qe,inputs_embeds:nt,decoder_inputs_embeds:_t}){if(nt||({inputs_embeds:nt,attention_mask:Ae}=await this._prepare_inputs_embeds({input_ids:I,pixel_values:J,inputs_embeds:nt,attention_mask:Ae})),!Re){let{last_hidden_state:Jt}=await ne(this,{inputs_embeds:nt,attention_mask:Ae});Re=Jt}if(!_t){if(!Pe)throw new Error("Either `decoder_input_ids` or `decoder_inputs_embeds` should be provided.");_t=await this.encode_text({input_ids:Pe})}return await ce(this,{inputs_embeds:_t,attention_mask:Ee,encoder_attention_mask:Ae,encoder_hidden_states:Re,past_key_values:qe},!0)}}class Ts extends H{forward_params=["input_ids","attention_mask","pixel_values","position_ids","past_key_values"]}class Ga extends Ts{_merge_input_ids_with_image_features(I){const J=I.image_features.dims.at(-1),Ae=I.image_features.view(-1,J);return q({image_token_id:this.config.image_token_index,...I,image_features:Ae})}}class Ai extends go{_merge_input_ids_with_image_features(I){const J=I.image_features.dims.at(-1),Ae=I.image_features.view(-1,J);return q({image_token_id:this.config.image_token_index,...I,image_features:Ae})}}class za extends Ai{}class As extends H{forward_params=["input_ids","attention_mask","inputs_embeds","per_layer_inputs","position_ids","pixel_values","input_features","input_features_mask","past_key_values"]}class hi extends As{async forward({input_ids:I=null,attention_mask:J=null,pixel_values:Ae=null,input_features:Pe=null,input_features_mask:Ee=null,position_ids:Re=null,inputs_embeds:qe=null,per_layer_inputs:nt=null,past_key_values:_t=null,generation_config:Rt=null,logits_processor:Yt=null,...Jt}){if((!qe||!nt)&&({inputs_embeds:qe,per_layer_inputs:nt}=await j(this.sessions.embed_tokens,{input_ids:I}),I.dims[1]!==1)){if(Ae){const{image_features:fr}=await j(this.sessions.vision_encoder,{pixel_values:Ae});({inputs_embeds:qe,attention_mask:J}=this._merge_input_ids_with_image_features({image_features:fr,input
2832s_embeds:qe,input_ids:I,attention_mask:J}))}if(Pe){const{audio_features:fr}=await j(this.sessions.audio_encoder,{input_features:Pe,input_features_mask:Ee});({inputs_embeds:qe,attention_mask:J}=this._merge_input_ids_with_audio_features({audio_features:fr,inputs_embeds:qe,input_ids:I,attention_mask:J}))}}return await ce(this,{inputs_embeds:qe,per_layer_inputs:nt,past_key_values:_t,attention_mask:J,position_ids:Re,generation_config:Rt,logits_processor:Yt},!0)}_merge_input_ids_with_image_features(I){const J=I.image_features.dims.at(-1),Ae=I.image_features.view(-1,J);return q({image_token_id:this.config.image_token_id,...I,image_features:Ae})}_merge_input_ids_with_audio_features(I){const J=I.audio_features.dims.at(-1),Ae=I.audio_features.view(-1,J);return V({audio_token_id:this.config.audio_token_id,...I,audio_features:Ae})}}class tl extends H{forward_params=["input_ids","attention_mask","pixel_values","pixel_attention_mask","position_ids","past_key_values"]}class Pa extends tl{async encode_image({pixel_values:I,pixel_attention_mask:J}){return(await j(this.sessions.vision_encoder,{pixel_values:I,pixel_attention_mask:J})).image_features}_merge_input_ids_with_image_features(I){const J=I.image_features.dims.at(-1),Ae=I.image_features.view(-1,J);return q({image_token_id:this.config.image_token_id,...I,image_features:Ae})}}class aa extends Pa{}class Fa extends H{forward_params=["input_ids","inputs_embeds","attention_mask","position_ids","pixel_values","image_sizes","past_key_values"]}class La extends Fa{async forward({input_ids:I=null,attention_mask:J=null,pixel_values:Ae=null,image_sizes:Pe=null,position_ids:Ee=null,inputs_embeds:Re=null,past_key_values:qe=null,generation_config:nt=null,logits_processor:_t=null,...Rt}){if(!Re){let Jt;if(Ae&&I.dims[1]!==1){if(!Pe)throw new Error("`image_sizes` must be provided when `pixel_values` is provided.");({image_features:Jt}=await j(this.sessions.vision_encoder,{pixel_values:Ae,image_sizes:Pe}))}else{const Ct=this.config.normalized_config.hidden_size;Jt=new c.Tensor("float32",[],[0,Ct])}({inputs_embeds:Re}=await j(this.sessions.prepare_inputs_embeds,{input_ids:I,image_features:Jt}))}return await ce(this,{inputs_embeds:Re,past_key_values:qe,attention_mask:J,position_ids:Ee,generation_config:nt,logits_processor:_t},!1)}}class hs extends H{}class mi extends hs{}class Ao extends hs{static async from_pretrained(I,J={}){return super.from_pretrained(I,{...J,model_file_name:J.model_file_name??"text_model"})}}class fi extends hs{static async from_pretrained(I,J={}){return super.from_pretrained(I,{...J,model_file_name:J.model_file_name??"text_model"})}}class rl extends hs{static async from_pretrained(I,J={}){return super.from_pretrained(I,{...J,model_file_name:J.model_file_name??"vision_model"})}}class ho extends hs{static async from_pretrained(I,J={}){return super.from_pretrained(I,{...J,model_file_name:J.model_file_name??"vision_model"})}}class _i extends H{}class wi extends _i{}class Ma extends _i{static async from_pretrained(I,J={}){return super.from_pretrained(I,{...J,model_file_name:J.model_file_name??"text_model"})}}class vt extends hs{static async from_pretrained(I,J={}){return super.from_pretrained(I,{...J,model_file_name:J.model_file_name??"vision_model"})}}class Kn extends H{}class ia extends Kn{}class oa extends H{}class va extends oa{async forward(I){const J=!I.input_ids,Ae=!I.pixel_values;if(J&&Ae)throw new Error("Either `input_ids` or `pixel_values` should be provided.");if(J&&(I.input_ids=(0,c.ones)([I.pixel_values.dims[0],1])),Ae){const{image_size:_t}=this.config.vision_config;I.pixel_values=(0,c.full)([0,3,_t,_t],0)}const{text_embeddings:Pe,image_embeddings:Ee,l2norm_text_embeddings:Re,l2norm_image_embeddings:qe}=await super.forward(I),nt={};return J||(nt.text_embeddings=Pe,nt.l2norm_text_embeddings=Re),Ae||(nt.image_embeddings=Ee,nt.l2norm_image_embeddings=qe),nt}}class Vn extends oa{static async from_pretrained(I,J={}){return super.from_pretrained(I,{...J,model_file_name:J.model_file_name??"text_model"})}}class Ba extends oa{static async from_pretrained(I,J={}){return super.from_pretrained(I,{...J,model_file_name:J.model_file_name??"vision_model"})}}class la extends H{}class yi extends la{}class bi extends la{}class Zt extends H{}class Cs extends Zt{}class Pi extends Zt{}class Ut extends H{}class Ra extends Ut{}class Wt extends Ut{}class xa extends H{}class Ea extends xa{}class Mi extends xa{}class Ya extends H{}class vi extends Ya{}class Na extends Ya{}class ja extends H{}class x extends ja{}class C extends ja{}class Y extends H{}class K extends Y{}class ee extends Y{}class he extends H{}class Le extends he{}class Qe extends he{}class ot extends H{}class wt extends ot{}class Lt extends ot{}class sr extends H{}class mr extends sr{}class nn extends H{}class $s extends nn{}class mo extends nn{}class nl extends H{}class pu extends nl{}class gu extends nl{}class sl extends H{}class Au extends sl{}class hu extends sl{}class al extends H{}class mu extends al{}class fu extends al{}class il extends H{}class _u extends il{}class wu extends il{}class ol extends H{}class yu extends ol{}class bu extends ol{}class ll extends H{}class Pu extends ll{}class Mu extends ll{}class ul extends H{}class vu extends ul{}class Bu extends ul{}class cl extends H{}class xu extends cl{}class Ss extends cl{}class Eu extends H{}
2832class dl extends Eu{}class nd extends Eu{}class Du extends H{}class sd extends Du{}class ad extends Du{}class Iu extends H{}class id extends Iu{}class od extends Iu{}class Tu extends H{}class ld extends Tu{}class ud extends Tu{}class Cu extends H{}class cd extends Cu{}class dd extends Cu{}class $u extends H{}class pd extends $u{}class gd extends $u{}class Su extends H{}class Ad extends Su{}class hd extends Su{}class ku extends H{}class md extends ku{}class fd extends ku{}class Ou extends H{}class _d extends Ou{}class wd extends Ou{}class Gu extends H{}class yd extends Gu{}class bd extends Gu{}class zu extends H{}class Pd extends zu{}class Md extends zu{}class vd extends H{forward_params=["input_ids","attention_mask","position_ids","past_key_values","pixel_values","image_grid_thw"]}class Bd extends vd{get_rope_index(I,J,Ae,Pe){const{vision_config:Ee,image_token_id:Re,video_token_id:qe,vision_start_token_id:nt}=this.config,_t=Ee.spatial_merge_size??2,Rt=[];if(J||Ae){let Yt=I.tolist();Pe||(Pe=(0,c.ones_like)(I));const Jt=Pe.tolist(),Ct=Array.from({length:3},Cr=>Array.from({length:I.dims[0]},Vr=>Array.from({length:I.dims[1]},Zr=>1))),fr=J?J.tolist():[],$t=Ae?Ae.tolist():[];let Tt=0,or=0;for(let Cr=0;Cr<Yt.length;++Cr){const Vr=Yt[Cr].filter((Qr,Mn)=>Jt[Cr][Mn]==1),pn=Vr.reduce((Qr,Mn,Ei)=>(Mn==nt&&Qr.push(Ei),Qr),[]).map(Qr=>Vr[Qr+1]),gn=pn.filter(Qr=>Qr==Re).length,nr=pn.filter(Qr=>Qr==qe).length;let sn=[],Tn=0,wo=gn,qn=nr;for(let Qr=0;Qr<pn.length;++Qr){const Mn=Vr.findIndex((bo,da)=>da>Tn&&bo==Re),Ei=Vr.findIndex((bo,da)=>da>Tn&&bo==qe),yo=wo>0&&Mn!==-1?Mn:Vr.length+1,fl=qn>0&&Ei!==-1?Ei:Vr.length+1;let Hd,Km,qm,Xm;yo<fl?([Km,qm,Xm]=fr[Tt],++Tt,--wo,Hd=yo):([Km,qm,Xm]=$t[or],++or,--qn,Hd=fl);const[B8,Zm,Kd]=[Number(Km),Math.floor(Number(qm)/_t),Math.floor(Number(Xm)/_t)],Jm=Hd-Tn,OS=sn.length>0?(0,A.max)(sn.at(-1))[0]+1:0;sn.push(Array.from({length:3*Jm},(bo,da)=>OS+da%Jm));const ef=Jm+OS,qd=B8*Zm*Kd,x8=Array.from({length:qd},(bo,da)=>ef+Math.floor(da/(Zm*Kd))),E8=Array.from({length:qd},(bo,da)=>ef+Math.floor(da/Kd)%Zm),D8=Array.from({length:qd},(bo,da)=>ef+da%Kd);sn.push([x8,E8,D8].flat()),Tn=Hd+qd}if(Tn<Vr.length){const Qr=sn.length>0?(0,A.max)(sn.at(-1))[0]+1:0,Mn=Vr.length-Tn;sn.push(Array.from({length:3*Mn},(Ei,yo)=>Qr+yo%Mn))}const ca=sn.reduce((Qr,Mn)=>Qr+Mn.length,0),hl=new Array(ca);let ml=0;for(let Qr=0;Qr<3;++Qr)for(let Mn=0;Mn<sn.length;++Mn){const Ei=sn[Mn],yo=Ei.length/3;for(let fl=Qr*yo;fl<(Qr+1)*yo;++fl)hl[ml++]=Ei[fl]}let Qd=0;const ju=Jt[Cr];for(let Qr=0;Qr<ju.length;++Qr)if(ju[Qr]==1){for(let Mn=0;Mn<3;++Mn)Ct[Mn][Cr][Qr]=hl[Mn*ca/3+Qd];++Qd}const v8=(0,A.max)(hl)[0];Rt.push(v8+1-Yt[Cr].length)}return[new c.Tensor("int64",Ct.flat(1/0),[3,I.dims[0],I.dims[1]]),new c.Tensor("int64",Rt,[Rt.length,1])]}else if(Pe){const{data:Yt,dims:Jt}=fe(Pe),Ct=BigInt64Array.from({length:3*Yt.length},($t,Tt)=>Yt[Tt%Yt.length]),fr=Array.from({length:Jt[0]},($t,Tt)=>(0,A.max)(Yt.subarray(Jt[1]*Tt,Jt[1]*(Tt+1)))[0]+1n+BigInt(Jt[1]));return[new c.Tensor("int64",Ct,[3,...Jt]),new c.Tensor("int64",fr,[fr.length,1])]}else{const[Yt,Jt]=I.dims,Ct=BigInt64Array.from({length:3*Yt*Jt},(fr,$t)=>BigInt(Math.floor($t%Jt/Yt)));return[new c.Tensor("int64",Ct,[3,...I.dims]),(0,c.zeros)([Yt,1])]}}async encode_image({pixel_values:I,image_grid_thw:J}){return(await j(this.sessions.vision_encoder,{pixel_values:I,grid_thw:J})).image_features}_merge_input_ids_with_image_features(I){return q({image_token_id:this.config.image_token_id,...I})}prepare_inputs_for_generation(I,J,Ae){if(J.attention_mask&&!J.position_ids)if(!J.past_key_values)[J.position_ids,J.rope_deltas]=this.get_rope_index(J.input_ids,J.image_grid_thw,J.video_grid_thw,J.attention_mask);else{J.pixel_values=null;const Pe=BigInt(Object.values(J.past_key_values)[0].dims.at(-2)),Ee=J.rope_deltas.map(Re=>Pe+Re);J.position_ids=(0,c.stack)([Ee,Ee,Ee],0)}return J}}class Fu extends H{}class xd extends Fu{}class Ed extends Fu{}class Lu extends H{}class Dd extends Lu{}class Id extends Lu{}class Ru extends H{}class fo extends Ru{}class M extends Ru{}class T extends H{}class z extends T{}class G extends T{}class Z extends H{}class ue extends Z{}class me extends Z{}class Ge extends H{}class it extends Ge{}class mt extends Ge{async _call(I){return new Ht(await super._call(I))}}class Qt extends H{}class ir extends Qt{}class Ir extends Qt{async _call(I){return new Ht(await super._call(I))}}class Gr extends H{}class ua extends Gr{}class _o extends H{}class Td extends _o{}class pl extends _o{async _call(I){return new Ht(await super._call(I))}}class $T extends H{}class ST extends $T{}class tm extends H{}class kT extends tm{}class OT extends tm{async _call(I){return new Ht(await super._call(I))}}class GT extends H{}class zT extends GT{}class rm extends H{}class FT extends rm{}class LT extends rm{async _call(I){return new Ht(await super._call(I))}}class RT extends H{}class YT extends RT{async _call(I){return new SS(await super._call(I))}}class nm extends H{}class NT extends nm{}class jT extends nm{async _call(I){return new Ht(await super._call(I))}}class sm extends H{}class UT extends sm{}class WT extends sm{async _call(I){return new Ht(await super._call(I))}}class am extends H{}class VT extends am{}class QT extends am{}class im extends H{}class HT extends im{}class KT extends im{}class om extends H{}class qT extends om{}class XT extends om{async _call(I){return new Ht(await super._call(I))}}class Cd extends H{}class ZT extends Cd{}class JT extends Cd{async _call(I){return new um(await super._call(I))}}class lm extends Cd{async _call(I){return new eC(await super._call(I))}}class um extends we{constructor({logits:I,pred_boxes:J}){super(),this.logits=I,this.pred_boxes=J}}class eC extends we{constructor({logits:I,pred_boxes:J,pred_masks:Ae}){super(),this.logits=I,this.pred_boxes=J,this.pred_masks=Ae}}class cm extends H{}class tC extends cm{}class rC extends cm{async _call(I){return new Yu(await super._call(I))}}class Yu extends we{constructor({logits:I,pred_boxes:J}){super(),this.logits=I,this.pred_boxes=J}}class dm extends H{}class nC extends dm{}class sC extends dm{async _call(I){return new aC(await super._call(I))}}class aC extends Yu{}class pm extends H{}class iC extends pm{}class oC extends pm{async _call(I){return new lC(await super._call(I))}}class lC extends Yu{}class gm extends H{}class uC extends gm{}class cC extends gm{async _call(I){return new Yu(await super._call(I))}}class Am extends H{}class dC extends Am{}class pC extends Am{async _call(I){return new gC(await super._call(I))}}class gC extends um{}class hm extends H{}class AC extends hm{}class hC extends hm{async _call(I){return new Ht(await super._call(I))}}class mm extends H{}class mC extends mm{}class fC extends mm{async _call(I){return new Ht(await super._call(I))}}class fm extends H{}class _C extends fm{}class wC extends fm{async _call(I){return new Ht(await super._call(I))}}class $d extends H{}class yC extends $d{}class bC extends $d{async _call(I){return new Ht(await super._call(I))}}class PC extends $d{}class _m extends H{}class MC extends _m{}class vC extends _m{}class wm extends H{}class BC extends wm{}class xC extends wm{}class EC extends H{}
2832class DC extends EC{}class Sd extends H{}class IC extends Sd{}class TC extends Sd{}class CC extends Sd{}class $C extends H{}class SC extends $C{}class kC extends H{}class OC extends kC{}class GC extends H{}class zC extends GC{}class ym extends H{}class FC extends ym{}class LC extends ym{}class bm extends H{}class RC extends bm{}class YC extends bm{}class NC extends H{}class jC extends NC{}class Pm extends H{}class UC extends Pm{}class WC extends Pm{async _call(I){return new Ht(await super._call(I))}}class Mm extends H{}class VC extends Mm{}class QC extends Mm{async _call(I){return new Ht(await super._call(I))}}class vm extends H{}class HC extends vm{}class KC extends vm{async _call(I){return new Ht(await super._call(I))}}class Bm extends H{}class qC extends Bm{}class XC extends Bm{async _call(I){return new Ht(await super._call(I))}}class ZC extends H{}class JC extends ZC{}class e$ extends H{}class t$ extends e${}class r$ extends H{}class n$ extends r${}class xm extends H{}class s$ extends xm{}class a$ extends xm{async _call(I){return new i$(await super._call(I))}}class i$ extends we{constructor({logits:I,pred_boxes:J}){super(),this.logits=I,this.pred_boxes=J}}class o$ extends H{}class l$ extends o${async get_image_embeddings({pixel_values:I}){return await ne(this,{pixel_values:I})}async forward(I){!I.image_embeddings||!I.image_positional_embeddings?I={...I,...await this.get_image_embeddings(I)}:I={...I},I.input_labels??=(0,c.ones)(I.input_points.dims.slice(0,-1));const J={image_embeddings:I.image_embeddings,image_positional_embeddings:I.image_positional_embeddings};return I.input_points&&(J.input_points=I.input_points),I.input_labels&&(J.input_labels=I.input_labels),I.input_boxes&&(J.input_boxes=I.input_boxes),await j(this.sessions.prompt_encoder_mask_decoder,J)}async _call(I){return new u$(await super._call(I))}}class u$ extends we{constructor({iou_scores:I,pred_masks:J}){super(),this.iou_scores=I,this.pred_masks=J}}class c$ extends we{constructor({iou_scores:I,pred_masks:J,object_score_logits:Ae}){super(),this.iou_scores=I,this.pred_masks=J,this.object_score_logits=Ae}}class d$ extends H{}class kd extends d${async get_image_embeddings({pixel_values:I}){return await ne(this,{pixel_values:I})}async forward(I){const{num_feature_levels:J}=this.config.vision_config;if(Array.from({length:J},(Re,qe)=>`image_embeddings.${qe}`).some(Re=>!I[Re])?I={...I,...await this.get_image_embeddings(I)}:I={...I},I.input_points){if(I.input_boxes&&I.input_boxes.dims[1]!==1)throw new Error("When both `input_points` and `input_boxes` are provided, the number of boxes per image must be 1.");const Re=I.input_points.dims;I.input_labels??=(0,c.ones)(Re.slice(0,-1)),I.input_boxes??=(0,c.full)([Re[0],0,4],0)}else if(I.input_boxes){const Re=I.input_boxes.dims;I.input_labels=(0,c.full)([Re[0],Re[1],0],-1n),I.input_points=(0,c.full)([Re[0],1,0,2],0)}else throw new Error("At least one of `input_points` or `input_boxes` must be provided.");const Pe=this.sessions.prompt_encoder_mask_decoder,Ee=(0,o.pick)(I,Pe.inputNames);return await j(Pe,Ee)}async _call(I){return new c$(await super._call(I))}}class p$ extends kd{}class g$ extends kd{}class Em extends H{}class A$ extends Em{}class h$ extends Em{}class Dm extends H{}class m$ extends Dm{}class f$ extends Dm{}class Bi extends H{}class _$ extends Bi{}class w$ extends Bi{async _call(I){return new xi(await super._call(I))}}class y$ extends Bi{async _call(I){return new Ht(await super._call(I))}}class b$ extends Bi{async _call(I){return new Pn(await super._call(I))}}class P$ extends H{}class M$ extends P${async _call(I){return new xi(await super._call(I))}}class Im extends H{}class v$ extends Im{}class B$ extends Im{async _call(I){return new Pn(await super._call(I))}}class x$ extends H{}class E$ extends x${}class Od extends H{}class D$ extends Od{}class I$ extends Od{async _call(I){return new xi(await super._call(I))}}class T$ extends Od{async _call(I){return new Ht(await super._call(I))}}class Nu extends H{}class C$ extends Nu{}class $$ extends Nu{async _call(I){return new xi(await super._call(I))}}class S$ extends Nu{async _call(I){return new Ht(await super._call(I))}}class k$ extends Nu{async _call(I){return new Pn(await super._call(I))}}class Gd extends H{}class O$ extends Gd{}class G$ extends Gd{async _call(I){return new xi(await super._call(I))}}class z$ extends Gd{async _call(I){return new Ht(await super._call(I))}}class $z extends H{}class F$ extends Bi{}class L$ extends Bi{async _call(I){return new xi(await super._call(I))}}class R$ extends Bi{async _call(I){return new Ht(await super._call(I))}}class gl extends H{}class Y$ extends gl{}class N$ extends gl{async _call(I){return new xi(await super._call(I))}}class j$ extends gl{async _call(I){return new Ht(await super._call(I))}}class U$ extends gl{async _call(I){return new $S(await super._call(I))}}class W$ extends gl{async _call(I){return new Pn(await super._call(I))}}class V$ extends H{}class Q$ extends V${}class zd extends H{}class Sz extends zd{}class H$ extends zd{}class K$ extends zd{async generate_speech(I,J,{threshold:Ae=.5,minlenratio:Pe=0,maxlenratio:Ee=20,vocoder:Re=null}={}){const qe={input_ids:I},{encoder_outputs:nt,encoder_attention_mask:_t}=await ne(this,qe),Rt=nt.dims[1]/this.config.reduction_factor,Yt=Math.floor(Rt*Ee),Jt=Math.floor(Rt*Pe),Ct=this.config.num_mel_bins;let fr=[],$t=null,Tt=null,or=0;for(;;){++or;const Zr=L(!!Tt);let pn;Tt?pn=Tt.output_sequence_out:pn=new c.Tensor("float32",new Float32Array(Ct),[1,1,Ct]);let gn={use_cache_branch:Zr,output_sequence:pn,encoder_attention_mask:_t,speaker_embeddings:J,encoder_hidden_states:nt};this.addPastKeyValues(gn,$t),Tt=await j(this.sessions.decoder_model_merged,gn),$t=this.getPastKeyValues(Tt,$t);const{prob:nr,spectrum:sn}=Tt;if(fr.push(sn),or>=Jt&&(Array.from(nr.data).filter(Tn=>Tn>=Ae).length>0||or>=Yt))break}const Cr=(0,c.cat)(fr),{waveform:Vr}=await j(Re.sessions.model,{spectrogram:Cr});return{spectrogram:Cr,waveform:Vr}}}class q$ extends H{main_input_name="spectrogram"}class X$ extends H{}class Tm extends X${async generate_speech({input_ids:I,attention_mask:J,style:Ae,num_inference_steps:Pe=5,speed:Ee=1.05}){const{sampling_rate:Re,chunk_compress_factor:qe,base_chunk_size:nt,latent_dim:_t}=this.config,{last_hidden_state:Rt,durations:Yt}=await j(this.sessions.text_encoder,{input_ids:I,attention_mask:J,style:Ae});Yt.div_(Ee);const Jt=Yt.max().item()*Re,Ct=nt*qe,fr=Math.floor((Jt+Ct-1)/Ct),$t=I.dims[0],Tt=(0,c.ones)([$t,fr]),or=(0,
vendor: 8,746 bytes, line 2832
2832c.full)([$t],Pe);let Cr=(0,c.randn)([$t,_t*qe,fr]);for(let Zr=0;Zr<Pe;++Zr){const pn=(0,c.full)([$t],Zr);({denoised_latents:Cr}=await j(this.sessions.latent_denoiser,{style:Ae,noisy_latents:Cr,latent_mask:Tt,encoder_outputs:Rt,attention_mask:J,timestep:pn,num_inference_steps:or}))}const{waveform:Vr}=await j(this.sessions.voice_decoder,{latents:Cr});return{waveform:Vr,durations:Yt}}}class Z$ extends H{}class J$ extends Z${}class Cm extends H{}class e2 extends Cm{}class t2 extends Cm{}class $m extends H{}class r2 extends $m{}class n2 extends $m{}class Sm extends H{}class s2 extends Sm{}class a2 extends Sm{}class km extends H{}class i2 extends km{}class o2 extends km{}class Om extends H{}class l2 extends Om{}class u2 extends Om{}class Gm extends H{}class c2 extends Gm{}class d2 extends Gm{}class Fd extends H{}class p2 extends Fd{}class g2 extends Fd{static async from_pretrained(I,J={}){return super.from_pretrained(I,{...J,model_file_name:J.model_file_name??"text_model"})}}class A2 extends Fd{static async from_pretrained(I,J={}){return super.from_pretrained(I,{...J,model_file_name:J.model_file_name??"audio_model"})}}class h2 extends H{}class zm extends h2{async _call(I){return new kS(await super._call(I))}}class Ld extends H{}class kz extends Ld{}class m2 extends Ld{}class f2 extends Ld{}class Fm extends H{}class _2 extends Fm{}class w2 extends Fm{}class Lm extends H{}class y2 extends Lm{}class b2 extends Lm{async _call(I){return new Ht(await super._call(I))}}class Rm extends H{}class Oz extends Rm{}class Gz extends Rm{}class Ym extends H{forward_params=["input_ids","attention_mask","encoder_outputs","decoder_input_ids","decoder_attention_mask","past_key_values"];_apply_and_filter_by_delay_pattern_mask(I){const[J,Ae]=I.dims,Pe=this.config.decoder.num_codebooks,Ee=Ae-Pe;let Re=0;for(let _t=0;_t<I.size;++_t){if(I.data[_t]===this.config.decoder.pad_token_id)continue;const Rt=_t%Ae,Yt=Math.floor(_t/Ae)%Pe,Jt=Rt-Yt;Jt>0&&Jt<=Ee&&(I.data[Re++]=I.data[_t])}const qe=Math.floor(J/Pe),nt=Re/(qe*Pe);return new c.Tensor(I.type,I.data.slice(0,Re),[qe,Pe,nt])}prepare_inputs_for_generation(I,J,Ae){let Pe=structuredClone(I);for(let Re=0;Re<Pe.length;++Re)for(let qe=0;qe<Pe[Re].length;++qe)Re%this.config.decoder.num_codebooks>=qe&&(Pe[Re][qe]=BigInt(this.config.decoder.pad_token_id));return Ae.guidance_scale!==null&&Ae.guidance_scale>1&&(Pe=Pe.concat(Pe)),super.prepare_inputs_for_generation(Pe,J,Ae)}async generate(I){const J=await super.generate(I),Ae=this._apply_and_filter_by_delay_pattern_mask(J).unsqueeze_(0),{audio_values:Pe}=await j(this.sessions.encodec_decode,{audio_codes:Ae});return Pe}}class Rd extends H{}class P2 extends Rd{}class M2 extends Rd{async _call(I){return new Ht(await super._call(I))}}class v2 extends Rd{}class Yd extends H{}class B2 extends Yd{}class x2 extends Yd{async _call(I){return new Ht(await super._call(I))}}class E2 extends Yd{}class Nd extends H{}class D2 extends Nd{}class I2 extends Nd{async _call(I){return new Ht(await super._call(I))}}class T2 extends Nd{}class jd extends H{}class C2 extends jd{}class $2 extends jd{async _call(I){return new Ht(await super._call(I))}}class S2 extends jd{}class k2 extends H{}class O2 extends k2{}class G2 extends H{}class z2 extends G2{forward_params=["input_ids","pixel_values","images_seq_mask","images_emb_mask","attention_mask","position_ids","past_key_values"];constructor(...I){super(...I),this._generation_mode="text"}async forward(I){const J=this._generation_mode??"text";let Ae;if(J==="text"||!I.past_key_values){const nt=this.sessions.prepare_inputs_embeds,_t=(0,o.pick)(I,nt.inputNames);Ae=await j(nt,_t)}else{const nt=this.sessions.gen_img_embeds,_t=(0,o.pick)({image_ids:I.input_ids},nt.inputNames);Ae=await j(nt,_t)}const Pe={...I,...Ae},Ee=await ce(this,Pe),Re=this.sessions[J==="text"?"lm_head":"gen_head"];if(!Re)throw new Error(`Unable to find "${Re}" generation head`);const qe=await j(Re,(0,o.pick)(Ee,Re.inputNames));return{...Ae,...Ee,...qe}}async generate(I){return this._generation_mode="text",super.generate(I)}async generate_images(I){this._generation_mode="image";const J=(I.inputs??I[this.main_input_name]).dims[1],Pe=(await super.generate(I)).slice(null,[J,null]),Ee=this.sessions.image_decode,{decoded_image:Re}=await j(Ee,{generated_tokens:Pe}),qe=Re.add_(1).mul_(255/2).clamp_(0,255).to("uint8"),nt=[];for(const _t of qe){const Rt=g.RawImage.fromTensor(_t);nt.push(Rt)}return nt}}class F2 extends we{constructor({char_logits:I,bpe_logits:J,wp_logits:Ae}){super(),this.char_logits=I,this.bpe_logits=J,this.wp_logits=Ae}get logits(){return[this.char_logits,this.bpe_logits,this.wp_logits]}}class L2 extends H{}class R2 extends L2{async _call(I){return new F2(await super._call(I))}}class Nm extends H{}class Y2 extends Nm{}class N2 extends Nm{}class jm extends H{}class j2 extends jm{}class U2 extends jm{}class W2 extends H{forward_params=["input_ids","attention_mask","position_ids","audio_values","past_key_values"]}class Um extends W2{_merge_input_ids_with_audio_features(I){const J=I.audio_features.dims.at(-1),Ae=I.audio_features.view(-1,J);return V({audio_token_id:this.config.ignore_index??this.config.audio_token_id,...I,audio_features:Ae})}}class V2 extends Um{}class Ud extends H{main_input_name="input_values";forward_params=["input_values"]}class Q2 extends we{constructor({audio_codes:I}){super(),this.audio_codes=I}}class H2 extends we{constructor({audio_values:I}){super(),this.audio_values=I}}class K2 extends Ud{async encode(I){return new Q2(await j(this.sessions.encoder_model,I))}async decode(I){return new H2(await j(this.sessions.decoder_model,I))}}class q2 extends Ud{static async from_pretrained(I,J={}){return super.from_pretrained(I,{...J,model_file_name:J.model_file_name??"encoder_model"})}}class X2 extends Ud{static async from_pretrained(I,J={}){return super.from_pretrained(I,{...J,model_file_name:J.model_file_name??"decoder_model"})}}class Wd extends H{main_input_name="input_values";forward_params=["input_values"]}class Z2 extends we{constructor({audio_codes:I}){super(),this.audio_codes=I}}class J2 extends we{constructor({audio_values:I}){super(),this.audio_values=I}}class eS extends Wd{async encode(I){return new Z2(await j(this.sessions.encoder_model,I))}async decode(I){return new J2(await j(this.sessions.decoder_model,I))}}class tS extends Wd{static async from_pretrained(I,J={}){return super.from_pretrained(I,{...J,model_file_name:J.model_file_name??"encoder_model"})}}class rS extends Wd{static async from_pretrained(I,J={}){return super.from_pretrained(I,{...J,model_file_name:J.model_file_name??"decoder_model"})}}class Vd extends H{main_input_name="input_values";forward_params=["input_values"]}class nS extends Vd{async encode(I){return await j(this.sessions.encoder_model,I)}async decode(I){return await j(this.sessions.decoder_model,I)}}class sS extends Vd{static async from_pretrained(I,J={}){return super.from_pretrained(I,{...J,model_file_name:J.model_file_name??"encoder_model"})}}class aS extends Vd{static async from_pretrained(I,J={}){return super.from_pretrained(I,{...J,model_file_name:J.model_file_name??"decoder_model"})}}class Tr{static MODEL_CLASS_MAPPINGS=null;static BASE_IF_FAIL=!1;static async from_pretrained(I,{progress_callback:J=null,config:Ae=null,cache_dir:Pe=null,local_files_only:Ee=!1,revision:Re="main",model_file_name:qe=null,subfolder:nt="onnx",device:_t=null,dtype:Rt=null,use_external_data_format:Yt=null,session_options:Jt={}}={}){const Ct={progress_callback:J,config:Ae,cache_dir:Pe,local_files_only:Ee,revision:Re,model_file_name:qe,subfolder:nt,device:_t,dtype:Rt,use_external_data_format:Yt,session_options:Jt};if(Ct.config=await n.AutoConfig.from_pretrained(I,Ct),!this.MODEL_CLASS_MAPPINGS)throw new Error("`MODEL_CLASS_MAPPINGS` not implemented for this type of `AutoClass`: "+this.name);const fr=Ct.config.model_type;for(const $t of this.MODEL_CLASS_MAPPINGS){let Tt=$t.get(fr);if(!Tt){for(const or of $t.values())if(or[0]===fr){Tt=or;break}if(!Tt)continue}return await Tt[1].from_pretrained(I,Ct)}if(this.BASE_IF_FAIL)return CS.has(fr)||console.warn(`Unknown model class "${fr}", attempting to construct from base class.`),await H.from_pretrained(I,Ct);throw Error(`Unsupported model type: ${fr}`)}}const zz=new Map([["bert",["BertModel",Se]],["neobert",["NeoBertModel",rt]],["modernbert",["ModernBertModel",Xe]],["nomic_bert",["NomicBertModel",ar]],["roformer",["RoFormerModel",ma]],["electra",["ElectraModel",Ft]],["esm",["EsmModel",ea]],["convbert",["ConvBertModel",Ms]],["camembert",["CamembertModel",le]],["deberta",["DebertaModel",Ot]],["deberta-v2",["DebertaV2Model",yr]],["mpnet",["MPNetModel",ta]],["albert",["AlbertModel",ct]],["distilbert",["DistilBertModel",fn]],["roberta",["RobertaModel",ao]],["xlm",["XLMMo
2832del",Uo]],["xlm-roberta",["XLMRobertaModel",oo]],["clap",["ClapModel",p2]],["clip",["CLIPModel",mi]],["clipseg",["CLIPSegModel",yi]],["chinese_clip",["ChineseCLIPModel",ia]],["siglip",["SiglipModel",wi]],["jina_clip",["JinaCLIPModel",va]],["mobilebert",["MobileBertModel",wn]],["squeezebert",["SqueezeBertModel",te]],["wav2vec2",["Wav2Vec2Model",_$]],["wav2vec2-bert",["Wav2Vec2BertModel",O$]],["unispeech",["UniSpeechModel",D$]],["unispeech-sat",["UniSpeechSatModel",C$]],["hubert",["HubertModel",F$]],["wavlm",["WavLMModel",Y$]],["audio-spectrogram-transformer",["ASTModel",ci]],["vits",["VitsModel",zm]],["pyannote",["PyAnnoteModel",v$]],["wespeaker-resnet",["WeSpeakerResNetModel",E$]],["detr",["DetrModel",ZT]],["rt_detr",["RTDetrModel",tC]],["rt_detr_v2",["RTDetrV2Model",nC]],["rf_detr",["RFDetrModel",iC]],["d_fine",["DFineModel",uC]],["table-transformer",["TableTransformerModel",dC]],["vit",["ViTModel",it]],["ijepa",["IJepaModel",ir]],["pvt",["PvtModel",Td]],["vit_msn",["ViTMSNModel",kT]],["vit_mae",["ViTMAEModel",ST]],["groupvit",["GroupViTModel",zT]],["fastvit",["FastViTModel",FT]],["mobilevit",["MobileViTModel",NT]],["mobilevitv2",["MobileViTV2Model",UT]],["owlvit",["OwlViTModel",VT]],["owlv2",["Owlv2Model",HT]],["beit",["BeitModel",qT]],["deit",["DeiTModel",AC]],["hiera",["HieraModel",mC]],["convnext",["ConvNextModel",UC]],["convnextv2",["ConvNextV2Model",VC]],["dinov2",["Dinov2Model",HC]],["dinov2_with_registers",["Dinov2WithRegistersModel",qC]],["dinov3_vit",["DINOv3ViTModel",JC]],["dinov3_convnext",["DINOv3ConvNextModel",t$]],["resnet",["ResNetModel",_C]],["swin",["SwinModel",yC]],["swin2sr",["Swin2SRModel",MC]],["donut-swin",["DonutSwinModel",jC]],["yolos",["YolosModel",s$]],["dpt",["DPTModel",BC]],["glpn",["GLPNModel",RC]],["hifigan",["SpeechT5HifiGan",q$]],["efficientnet",["EfficientNetModel",y2]],["decision_transformer",["DecisionTransformerModel",O2]],["patchtst",["PatchTSTForPrediction",Y2]],["patchtsmixer",["PatchTSMixerForPrediction",j2]],["mobilenet_v1",["MobileNetV1Model",P2]],["mobilenet_v2",["MobileNetV2Model",B2]],["mobilenet_v3",["MobileNetV3Model",D2]],["mobilenet_v4",["MobileNetV4Model",C2]],["maskformer",["MaskFormerModel",FC]],["mgp-str",["MgpstrForSceneTextRecognition",R2]],["style_text_to_speech_2",["StyleTextToSpeech2Model",Q$]]]),Fz=new Map([["t5",["T5Model",jt]],["longt5",["LongT5Model",gr]],["mt5",["MT5Model",Dn]],["bart",["BartModel",Jn]],["mbart",["MBartModel",Wn]],["marian",["MarianModel",A$]],["whisper",["WhisperModel",uo]],["m2m_100",["M2M100Model",m$]],["blenderbot",["BlenderbotModel",Nr]],["blenderbot-small",["BlenderbotSmallModel",zn]]]),Lz=new Map([["mimi",["MimiModel",K2]],["dac",["DacModel",eS]],["snac",["SnacModel",nS]]]),Rz=new Map([["bloom",["BloomModel",fo]],["jais",["JAISModel",Ra]],["gpt2",["GPT2Model",Cs]],["gptj",["GPTJModel",x]],["gpt_bigcode",["GPTBigCodeModel",K]],["gpt_neo",["GPTNeoModel",Ea]],["gpt_neox",["GPTNeoXModel",vi]],["codegen",["CodeGenModel",Le]],["llama",["LlamaModel",wt]],["nanochat",["NanoChatModel",$s]],["arcee",["ArceeModel",pu]],["lfm2",["Lfm2Model",Au]],["smollm3",["SmolLM3Model",mu]],["exaone",["ExaoneModel",Pu]],["olmo",["OlmoModel",xu]],["olmo2",["Olmo2Model",dl]],["mobilellm",["MobileLLMModel",vu]],["granite",["GraniteModel",sd]],["granitemoehybrid",["GraniteMoeHybridModel",id]],["cohere",["CohereModel",ld]],["gemma",["GemmaModel",cd]],["gemma2",["Gemma2Model",pd]],["vaultgemma",["VaultGemmaModel",Ad]],["gemma3_text",["Gemma3Model",md]],["helium",["HeliumModel",_u]],["glm",["GlmModel",yu]],["openelm",["OpenELMModel",_d]],["qwen2",["Qwen2Model",yd]],["qwen3",["Qwen3Model",Pd]],["phi",["PhiModel",xd]],["phi3",["Phi3Model",Dd]],["mpt",["MptModel",z]],["opt",["OPTModel",ue]],["mistral",["MistralModel",e2]],["ministral",["MinistralModel",r2]],["ministral3",["Ministral3Model",s2]],["ernie4_5",["Ernie4_5Model",i2]],["starcoder2",["Starcoder2Model",l2]],["falcon",["FalconModel",c2]],["stablelm",["StableLmModel",_2]],["modernbert-decoder",["ModernBertDecoderModel",Vt]]]),Wm=new Map([["speecht5",["SpeechT5ForSpeechToText",H$]],["whisper",["WhisperForConditionalGeneration",di]],["lite-whisper",["LiteWhisperForConditionalGeneration",qo]],["moonshine",["MoonshineForConditionalGeneration",Oa]]]),iS=new Map([["speecht5",["SpeechT5ForTextToSpeech",K$]]]),oS=new Map([["vits",["VitsModel",zm]],["musicgen",["MusicgenForConditionalGeneration",Ym]],["supertonic",["SupertonicForConditionalGeneration",Tm]]]),lS=new Map([["bert",["BertForSequenceClassification",ve]],["neobert",["NeoBertForSequenceClassification",ht]],["modernbert",["ModernBertForSequenceClassification",yt]],["roformer",["RoFormerForSequenceClassification",_a]],["electra",["ElectraF
2832orSequenceClassification",S]],["esm",["EsmForSequenceClassification",xs]],["convbert",["ConvBertForSequenceClassification",Er]],["camembert",["CamembertForSequenceClassification",Oe]],["deberta",["DebertaForSequenceClassification",St]],["deberta-v2",["DebertaV2ForSequenceClassification",vs]],["mpnet",["MPNetForSequenceClassification",ra]],["albert",["AlbertForSequenceClassification",ut]],["distilbert",["DistilBertForSequenceClassification",qr]],["roberta",["RobertaForSequenceClassification",No]],["xlm",["XLMForSequenceClassification",Vo]],["xlm-roberta",["XLMRobertaForSequenceClassification",li]],["bart",["BartForSequenceClassification",Wr]],["mbart",["MBartForSequenceClassification",Xr]],["mobilebert",["MobileBertForSequenceClassification",Ze]],["squeezebert",["SqueezeBertForSequenceClassification",pe]]]),uS=new Map([["bert",["BertForTokenClassification",Ve]],["neobert",["NeoBertForTokenClassification",He]],["modernbert",["ModernBertForTokenClassification",Mt]],["roformer",["RoFormerForTokenClassification",Ur]],["electra",["ElectraForTokenClassification",ie]],["esm",["EsmForTokenClassification",Es]],["convbert",["ConvBertForTokenClassification",us]],["camembert",["CamembertForTokenClassification",gt]],["deberta",["DebertaForTokenClassification",rr]],["deberta-v2",["DebertaV2ForTokenClassification",En]],["mpnet",["MPNetForTokenClassification",ii]],["distilbert",["DistilBertForTokenClassification",vr]],["roberta",["RobertaForTokenClassification",io]],["xlm",["XLMForTokenClassification",Qo]],["xlm-roberta",["XLMRobertaForTokenClassification",lo]]]),Vm=new Map([["t5",["T5ForConditionalGeneration",Or]],["longt5",["LongT5ForConditionalGeneration",Ar]],["mt5",["MT5ForConditionalGeneration",Un]],["bart",["BartForConditionalGeneration",Yr]],["mbart",["MBartForConditionalGeneration",gs]],["marian",["MarianMTModel",h$]],["m2m_100",["M2M100ForConditionalGeneration",f$]],["blenderbot",["BlenderbotForConditionalGeneration",rn]],["blenderbot-small",["BlenderbotSmallForConditionalGeneration",wa]]]),Qm=new Map([["bloom",["BloomForCausalLM",M]],["gpt2",["GPT2LMHeadModel",Pi]],["jais",["JAISLMHeadModel",Wt]],["gptj",["GPTJForCausalLM",C]],["gpt_bigcode",["GPTBigCodeForCausalLM",ee]],["gpt_neo",["GPTNeoForCausalLM",Mi]],["gpt_neox",["GPTNeoXForCausalLM",Na]],["codegen",["CodeGenForCausalLM",Qe]],["llama",["LlamaForCausalLM",Lt]],["nanochat",["NanoChatForCausalLM",mo]],["llama4_text",["Llama4ForCausalLM",mr]],["arcee",["ArceeForCausalLM",gu]],["lfm2",["Lfm2ForCausalLM",hu]],["smollm3",["SmolLM3ForCausalLM",fu]],["exaone",["ExaoneForCausalLM",Mu]],["olmo",["OlmoForCausalLM",Ss]],["olmo2",["Olmo2ForCausalLM",nd]],["mobilellm",["MobileLLMForCausalLM",Bu]],["granite",["GraniteForCausalLM",ad]],["granitemoehybrid",["GraniteMoeHybridForCausalLM",od]],["cohere",["CohereForCausalLM",ud]],["gemma",["GemmaForCausalLM",dd]],["gemma2",["Gemma2ForCausalLM",gd]],["vaultgemma",["VaultGemmaForCausalLM",hd]],["gemma3_text",["Gemma3ForCausalLM",fd]],["helium",["HeliumForCausalLM",wu]],["glm",["GlmForCausalLM",bu]],["openelm",["OpenELMForCausalLM",wd]],["qwen2",["Qwen2ForCausalLM",bd]],["qwen3",["Qwen3ForCausalLM",Md]],["phi",["PhiForCausalLM",Ed]],["phi3",["Phi3ForCausalLM",Id]],["mpt",["MptForCausalLM",G]],["opt",["OPTForCausalLM",me]],["mbart",["MBartForCausalLM",es]],["mistral",["MistralForCausalLM",t2]],["ministral",["MinistralForCausalLM",n2]],["ministral3",["Ministral3ForCausalLM",a2]],["ernie4_5",["Ernie4_5ForCausalLM",o2]],["starcoder2",["Starcoder2ForCausalLM",u2]],["falcon",["FalconForCausalLM",d2]],["trocr",["TrOCRForCausalLM",J$]],["stablelm",["StableLmForCausalLM",w2]],["modernbert-decoder",["ModernBertDecoderForCausalLM",tn]],["phi3_v",["Phi3VForCausalLM",La]]]),Yz=new Map([["multi_modality",["MultiModalityCausalLM",z2]]]),cS=new Map([["bert",["BertForMaskedLM",ze]],["neobert",["NeoBertForMaskedLM",Ue]],["modernbert",["ModernBertForMaskedLM",We]],["roformer",["RoFormerForMaskedLM",fa]],["electra",["ElectraForMaskedLM",ds]],["esm",["EsmForMaskedLM",Bs]],["convbert",["ConvBertForMaskedLM",kt]],["camembert",["CamembertForMaskedLM",_e]],["deberta",["DebertaForMaskedLM",lt]],["deberta-v2",["DebertaV2ForMaskedLM",ln]],["mpnet",["MPNetForMaskedLM",Ds]],["albert",["AlbertForMaskedLM",st]],["distilbert",["DistilBertForMaskedLM",jn]],["roberta",["RobertaF
2832orMaskedLM",Yo]],["xlm",["XLMWithLMHeadModel",Wo]],["xlm-roberta",["XLMRobertaForMaskedLM",oi]],["mobilebert",["MobileBertForMaskedLM",Ke]],["squeezebert",["SqueezeBertForMaskedLM",de]]]),dS=new Map([["bert",["BertForQuestionAnswering",Be]],["neobert",["NeoBertForQuestionAnswering",dt]],["roformer",["RoFormerForQuestionAnswering",mn]],["electra",["ElectraForQuestionAnswering",X]],["convbert",["ConvBertForQuestionAnswering",cs]],["camembert",["CamembertForQuestionAnswering",Et]],["deberta",["DebertaForQuestionAnswering",Hr]],["deberta-v2",["DebertaV2ForQuestionAnswering",ps]],["mpnet",["MPNetForQuestionAnswering",ye]],["albert",["AlbertForQuestionAnswering",pt]],["distilbert",["DistilBertForQuestionAnswering",Rr]],["roberta",["RobertaForQuestionAnswering",jo]],["xlm",["XLMForQuestionAnswering",Ho]],["xlm-roberta",["XLMRobertaForQuestionAnswering",Ko]],["mobilebert",["MobileBertForQuestionAnswering",ft]],["squeezebert",["SqueezeBertForQuestionAnswering",xe]]]),Hm=new Map([["vision-encoder-decoder",["VisionEncoderDecoderModel",pi]],["idefics3",["Idefics3ForConditionalGeneration",Pa]],["smolvlm",["SmolVLMForConditionalGeneration",aa]]]),pS=new Map([["llava",["LlavaForConditionalGeneration",gi]],["llava_onevision",["LlavaOnevisionForConditionalGeneration",Xo]],["moondream1",["Moondream1ForConditionalGeneration",Zo]],["florence2",["Florence2ForConditionalGeneration",el]],["qwen2-vl",["Qwen2VLForConditionalGeneration",Bd]],["idefics3",["Idefics3ForConditionalGeneration",Pa]],["smolvlm",["SmolVLMForConditionalGeneration",aa]],["paligemma",["PaliGemmaForConditionalGeneration",Ga]],["llava_qwen2",["LlavaQwen2ForCausalLM",Ai]],["gemma3n",["Gemma3nForConditionalGeneration",hi]],["mistral3",["Mistral3ForConditionalGeneration",za]]]),gS=new Map([["ultravox",["UltravoxModel",Um]],["voxtral",["VoxtralForConditionalGeneration",V2]]]),Nz=new Map([["vision-encoder-decoder",["VisionEncoderDecoderModel",pi]]]),AS=new Map([["vit",["ViTForImageClassification",mt]],["ijepa",["IJepaForImageClassification",Ir]],["pvt",["PvtForImageClassification",pl]],["vit_msn",["ViTMSNForImageClassification",OT]],["fastvit",["FastViTForImageClassification",LT]],["mobilevit",["MobileViTForImageClassification",jT]],["mobilevitv2",["MobileViTV2ForImageClassification",WT]],["beit",["BeitForImageClassification",XT]],["deit",["DeiTForImageClassification",hC]],["hiera",["HieraForImageClassification",fC]],["convnext",["ConvNextForImageClassification",WC]],["convnextv2",["ConvNextV2ForImageClassification",QC]],["dinov2",["Dinov2ForImageClassification",KC]],["dinov2_with_registers",["Dinov2WithRegistersForImageClassification",XC]],["resnet",["ResNetForImageClassification",wC]],["swin",["SwinForImageClassification",bC]],["segformer",["SegformerForImageClassification",m2]],["efficientnet",["EfficientNetForImageClassification",b2]],["mobilenet_v1",["MobileNetV1ForImageClassification",M2]],["mobilenet_v2",["MobileNetV2ForImageClassification",x2]],["mobilenet_v3",["MobileNetV3ForImageClassification",I2]],["mobilenet_v4",["MobileNetV4ForImageClassification",$2]]]),hS=new Map([["detr",["DetrForObjectDetection",JT]],["rt_detr",["RTDetrForObjectDetection",rC]],["rt_detr_v2",["RTDetrV2ForObjectDetection",sC]],["rf_detr",["RFDetrForObjectDetection",oC]],["d_fine",["DFineForObjectDetection",cC]],["table-transformer",["TableTransformerForObjectDetection",pC]],["yolos",["YolosForObjectDetection",a$]]]),mS=new Map([["owlvit",["OwlViTForObjectDetection",QT]],["owlv2",["Owlv2ForObjectDetection",KT]],["grounding-dino",["GroundingDinoForObjectDetection",n$]]]),Al=new Map([["detr",["DetrForSegmentation",lm]],["clipseg",["CLIPSegForImageSegmentation",bi]]]),fS=new Map([["segformer",["SegformerForSemanticSegmentation",f2]],["sapiens",["SapiensForSemanticSegmentation",IC]],["swin",["SwinForSemanticSegmentation",PC]],["mobilenet_v1",["MobileNetV1ForSemanticSegmentation",v2]],["mobilenet_v2",["MobileNetV2ForSemanticSegmentation",E2]],["mobilenet_v3",["MobileNetV3ForSemanticSegmentation",T2]],["mobilenet_v4",["MobileNetV4ForSemanticSegmentation",S2]]]),_S=new Map([["detr",["DetrForSegmentation",lm]],["maskformer",["MaskFormerForInstanceSegmentation",LC]]]),wS=new Map([["sam",["SamModel",l$]],["sam2",["Sam2Model",kd]],["edgetam",["EdgeTamModel",p$]],["sam3_tracker",["Sam3TrackerModel",g$]]]),yS=new Map([["wav2vec2",["Wav2Vec2ForCTC",w$]],["wav2vec2-bert",["Wav2Vec2BertForCTC",G$]],["unispeech",["UniSpeechForCTC",I$]],["unispeech-sat",["UniSpeechSatForCTC",$$]],["wavlm",["WavLMForCTC",N$]],["hubert",["HubertForCTC",L$]],["parakeet_ctc",["ParakeetForCTC",M$]]]),bS=new Map([["wav2vec2",["Wav2Vec2ForSequenceClassification",y$]],["wav2vec2-bert",["Wav2Vec2BertForSequenceClassification",z$]],["unispeech",["UniSpeechForSequenceClassification",T$]],["unispeech-sat",["UniSpeechSatForSequenceClassification",S$]],["wavlm",["WavLMForSequenceClassification",j$]],["hubert",["HubertForSequenceClassification",R$]],["audio-spectrogram-transformer",["ASTForAudioClassification",na]]]),PS=new Map([["wavlm",["WavLMForXVector",U$]]]),MS=new Map([["unispeech-sat",["UniSpeechSatForAudioFrameClassification",k$]],["wavlm",["WavLMForAudioFrameClassification",W$]],["wav2vec2",["Wav2Vec2ForAudioFrameClassification",b$]],["pyannote",["PyAnnoteForAudioFrameClassification",B$]]]),vS=new Map([["vitmatte",["VitMatteForImageMatting",YT]]]),jz=new Map([["patchtst",["PatchTSTForPrediction",N2]],["patchtsmixer",["PatchTSMixerForPrediction",U2]]]),BS=new Map([["swin2sr",["Swin2SRForImageSuperResolution",vC]]]),xS=new Map([["dpt",["DPTForDepthEstimation",xC]],["depth_anything",["DepthAnythingForDepthEstimation",DC]],["glpn",["GLPNForDepthEstimation",YC]],["sapiens",["SapiensForDepthEstimation",TC]],["depth_pro",["DepthProForDepthEstimation",SC]],["metric3d",["Metric3DForDepthEstimation",OC]],["metric3dv2",["Metric3Dv2ForDepthEstimation",zC]]]),ES=new Map([["sapiens",["SapiensForNormalEstimation",CC]]]),DS=new Map([["vitpose",["VitPoseForPoseEstimation",ua]]]),IS=new Map([["clip",["CLIPVisionModelWithProjection",ho]],["siglip",["SiglipVisionModel",vt]],["jina_clip",["JinaCLIPVisionModel",Ba]]]),TS=[[zz,_.EncoderOnly],[Fz,_.EncoderDecoder],[Rz,_.DecoderOnly],[Lz,_.AutoEncoder],[lS,_.EncoderOnly],[uS,_.EncoderOnly],[Vm,_.Seq2Seq],[Wm,_.Seq2Seq],[Qm,_.DecoderOnly],[Yz,_.MultiM
2832odality],[cS,_.EncoderOnly],[dS,_.EncoderOnly],[Hm,_.Vision2Seq],[pS,_.ImageTextToText],[gS,_.AudioTextToText],[AS,_.EncoderOnly],[Al,_.EncoderOnly],[_S,_.EncoderOnly],[fS,_.EncoderOnly],[vS,_.EncoderOnly],[jz,_.EncoderOnly],[BS,_.EncoderOnly],[xS,_.EncoderOnly],[ES,_.EncoderOnly],[DS,_.EncoderOnly],[hS,_.EncoderOnly],[mS,_.EncoderOnly],[wS,_.MaskGeneration],[yS,_.EncoderOnly],[bS,_.EncoderOnly],[iS,_.Seq2Seq],[oS,_.EncoderOnly],[PS,_.EncoderOnly],[MS,_.EncoderOnly],[IS,_.EncoderOnly]];for(const[D,I]of TS)for(const[J,Ae]of D.values())w.set(J,I),v.set(Ae,J),b.set(J,Ae);const Uz=[["MusicgenForConditionalGeneration",Ym,_.Musicgen],["Phi3VForCausalLM",La,_.Phi3V],["CLIPTextModelWithProjection",fi,_.EncoderOnly],["SiglipTextModel",Ma,_.EncoderOnly],["JinaCLIPTextModel",Vn,_.EncoderOnly],["ClapTextModelWithProjection",g2,_.EncoderOnly],["ClapAudioModelWithProjection",A2,_.EncoderOnly],["DacEncoderModel",tS,_.EncoderOnly],["DacDecoderModel",rS,_.EncoderOnly],["MimiEncoderModel",q2,_.EncoderOnly],["MimiDecoderModel",X2,_.EncoderOnly],["SnacEncoderModel",sS,_.EncoderOnly],["SnacDecoderModel",aS,_.EncoderOnly],["Gemma3nForConditionalGeneration",hi,_.ImageAudioTextToText],["SupertonicForConditionalGeneration",Tm,_.Supertonic]];for(const[D,I,J]of Uz)w.set(D,J),v.set(I,D),b.set(D,I);const CS=new Map([["modnet",Al],["birefnet",Al],["isnet",Al],["ben",Al]]);for(const[D,I]of CS.entries())I.set(D,["PreTrainedModel",H]),w.set(D,_.EncoderOnly),v.set(H,D),b.set(D,H);class Wz extends Tr{static MODEL_CLASS_MAPPINGS=TS.map(I=>I[0]);static BASE_IF_FAIL=!0}class Vz extends Tr{static MODEL_CLASS_MAPPINGS=[lS]}class Qz extends Tr{static MODEL_CLASS_MAPPINGS=[uS]}class Hz extends Tr{static MODEL_CLASS_MAPPINGS=[Vm]}class Kz extends Tr{static MODEL_CLASS_MAPPINGS=[Wm]}class qz extends Tr{static MODEL_CLASS_MAPPINGS=[iS]}class Xz extends Tr{static MODEL_CLASS_MAPPINGS=[oS]}class Zz extends Tr{static MODEL_CLASS_MAPPINGS=[Qm]}class Jz extends Tr{static MODEL_CLASS_MAPPINGS=[cS]}class e8 extends Tr{static MODEL_CLASS_MAPPINGS=[dS]}class t8 extends Tr{static MODEL_CLASS_MAPPINGS=[Hm]}class r8 extends Tr{static MODEL_CLASS_MAPPINGS=[AS]}class n8 extends Tr{static MODEL_CLASS_MAPPINGS=[Al]}class s8 extends Tr{static MODEL_CLASS_MAPPINGS=[fS]}class a8 extends Tr{static MODEL_CLASS_MAPPINGS=[_S]}class i8 extends Tr{static MODEL_CLASS_MAPPINGS=[hS]}class o8 extends Tr{static MODEL_CLASS_MAPPINGS=[mS]}class l8 extends Tr{static MODEL_CLASS_MAPPINGS=[wS]}class u8 extends Tr{static MODEL_CLASS_MAPPINGS=[yS]}class c8 extends Tr{static MODEL_CLASS_MAPPINGS=[bS]}class d8 extends Tr{static MODEL_CLASS_MAPPINGS=[PS]}class p8 extends Tr{static MODEL_CLASS_MAPPINGS=[MS]}class g8 extends Tr{static MODEL_CLASS_MAPPINGS=[Nz]}class A8 extends Tr{static MODEL_CLASS_MAPPINGS=[vS]}class h8 extends Tr{static MODEL_CLASS_MAPPINGS=[BS]}class m8 extends Tr{static MODEL_CLASS_MAPPINGS=[xS]}class f8 extends Tr{static MODEL_CLASS_MAPPINGS=[ES]}class _8 extends Tr{static MODEL_CLASS_MAPPINGS=[DS]}class w8 extends Tr{static MODEL_CLASS_MAPPINGS=[IS]}class y8 extends Tr{static MODEL_CLASS_MAPPINGS=[pS]}class b8 extends Tr{static MODEL_CLASS_MAPPINGS=[gS]}class P8 extends we{constructor({logits:I,past_key_values:J,encoder_outputs:Ae,decoder_attentions:Pe=null,cross_attentions:Ee=null}){super(),this.logits=I,this.past_key_values=J,this.encoder_outputs=Ae,this.decoder_attentions=Pe,this.cross_attentions=Ee}}class Ht extends we{constructor({logits:I,...J}){super(),this.logits=I;const Ae=Object.values(J);Ae.length>0&&(this.attentions=Ae)}}class $S extends we{constructor({logits:I,embeddings:J}){super(),this.logits=I,this.embeddings=J}}class Pn extends we{constructor({logits:I}){super(),this.logits=I}}class In extends we{constructor({logits:I}){super(),this.logits=I}}class Fn extends we{constructor({start_logits:I,end_logits:J}){super(),this.start_logits=I,this.end_logits=J}}class xi extends we{constructor({logits:I}){super(),this.logits=I}}class M8 extends we{constructor({logits:I,past_key_values:J}){super(),this.logits=I,this.past_key_values=J}}class SS extends we{constructor({alphas:I}){super(),this.alphas=I}}class kS extends we{constructor({waveform:I,spectrogram:J}){super(),this.waveform=I,this.spectrogram=J}}}),
2832"./src/models/audio_spectrogram_transformer/feature_extraction_audio_spectrogram_transformer.js":((e,t,r)=>{r.r(t),r.d(t,{ASTFeatureExtractor:()=>a});var n=r("./src/base/feature_extraction_utils.js");r("./src/utils/tensor.js");var s=r("./src/utils/audio.js");class a extends n.FeatureExtractor{constructor(o){super(o);const l=this.config.sampling_rate,u=(0,s.mel_filter_bank)(257,this.config.num_mel_bins,20,Math.floor(l/2),l,null,"kaldi",!0);this.mel_filters=u,this.window=(0,s.window_function)(400,"hann",{periodic:!1}),this.mean=this.config.mean,this.std=this.config.std}async _extract_fbank_features(o,l){return(0,s.spectrogram)(o,this.window,400,160,{fft_length:512,power:2,center:!1,preemphasis:.97,mel_filters:this.mel_filters,log_mel:"log",mel_floor:1192092955078125e-22,remove_dc_offset:!0,max_num_frames:l,transpose:!0})}async _call(o){(0,n.validate_audio_inputs)(o,"ASTFeatureExtractor");const l=await this._extract_fbank_features(o,this.config.max_length);if(this.config.do_normalize){const u=this.std*2,p=l.data;for(let d=0;d<p.length;++d)p[d]=(p[d]-this.mean)/u}return{input_values:l.unsqueeze_(0)}}}}),
2832"./src/models/auto/feature_extraction_auto.js":((e,t,r)=>{r.r(t),r.d(t,{AutoFeatureExtractor:()=>i});var n=r("./src/utils/constants.js"),s=r("./src/utils/hub.js");r("./src/base/feature_extraction_utils.js");var a=r("./src/models/feature_extractors.js");class i{static async from_pretrained(l,u={}){const p=await(0,s.getModelJSON)(l,n.FEATURE_EXTRACTOR_NAME,!0,u),d=p.feature_extractor_type,c=a[d];if(!c)throw new Error(`Unknown feature_extractor_type: '${d}'. Please report this at ${n.GITHUB_ISSUE_URL}.`);return new c(p)}}}),
2832"./src/models/auto/image_processing_auto.js":((e,t,r)=>{r.r(t),r.d(t,{AutoImageProcessor:()=>o});var n=r("./src/utils/constants.js"),s=r("./src/utils/hub.js"),a=r("./src/base/image_processors_utils.js"),i=r("./src/models/image_processors.js");class o{static async from_pretrained(u,p={}){const d=await(0,s.getModelJSON)(u,n.IMAGE_PROCESSOR_NAME,!0,p),c=d.image_processor_type??d.feature_extractor_type;let g=i[c?.replace(/Fast$/,"")];return g||(c!==void 0&&console.warn(`Image processor type '${c}' not found, assuming base ImageProcessor. Please report this at ${n.GITHUB_ISSUE_URL}.`),g=a.ImageProcessor),new g(d)}}}),
2832"./src/models/auto/processing_auto.js":((e,t,r)=>{r.r(t),r.d(t,{AutoProcessor:()=>u});var n=r("./src/utils/constants.js"),s=r("./src/utils/hub.js"),a=r("./src/base/processing_utils.js"),i=r("./src/models/processors.js"),o=r("./src/models/image_processors.js"),l=r("./src/models/feature_extractors.js");class u{static async from_pretrained(d,c={}){const g=await(0,s.getModelJSON)(d,n.IMAGE_PROCESSOR_NAME,!0,c),{image_processor_type:A,feature_extractor_type:m,processor_class:B}=g;if(B&&i[B])return i[B].from_pretrained(d,c);if(!A&&!m)throw new Error("No `image_processor_type` or `feature_extractor_type` found in the config.");const f={};if(A){const P=o[A.replace(/Fast$/,"")];if(!P)throw new Error(`Unknown image_processor_type: '${A}'.`);f.image_processor=new P(g)}if(m){const P=o[m];if(P)f.image_processor=new P(g);else{const _=l[m];if(!_)throw new Error(`Unknown feature_extractor_type: '${m}'.`);f.feature_extractor=new _(g)}}const h={};return new a.Processor(h,f,null)}}}),
2832"./src/models/beit/image_processing_beit.js":((e,t,r)=>{r.r(t),r.d(t,{BeitFeatureExtractor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{}}),
2832"./src/models/bit/image_processing_bit.js":((e,t,r)=>{r.r(t),r.d(t,{BitImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{}}),
2832"./src/models/chinese_clip/image_processing_chinese_clip.js":((e,t,r)=>{r.r(t),r.d(t,{ChineseCLIPFeatureExtractor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{}}),
2832"./src/models/clap/feature_extraction_clap.js":((e,t,r)=>{r.r(t),r.d(t,{ClapFeatureExtractor:()=>a});var n=r("./src/base/feature_extraction_utils.js");r("./src/utils/tensor.js");var s=r("./src/utils/audio.js");class a extends n.FeatureExtractor{constructor(o){super(o),this.mel_filters=(0,s.mel_filter_bank)(this.config.nb_frequency_bins,this.config.feature_size,this.config.frequency_min,this.config.frequency_max,this.config.sampling_rate,null,"htk"),this.mel_filters_slaney=(0,s.mel_filter_bank)(this.config.nb_frequency_bins,this.config.feature_size,this.config.frequency_min,this.config.frequency_max,this.config.sampling_rate,"slaney","slaney"),this.window=(0,s.window_function)(this.config.fft_window_size,"hann")}async _get_input_mel(o,l,u,p){let d;const c=o.length-l;if(c>0)if(u==="rand_trunc"){const g=Math.floor(Math.random()*(c+1));o=o.subarray(g,g+l),d=await this._extract_fbank_features(o,this.mel_filters_slaney,this.config.nb_max_samples)}else throw new Error(`Truncation strategy "${u}" not implemented`);else{if(c<0){let g=new Float64Array(l);if(g.set(o),p==="repeat")for(let A=o.length;A<l;A+=o.length)g.set(o.subarray(0,Math.min(o.length,l-A)),A);else if(p==="repeatpad")for(let A=o.length;A<-c;A+=o.length)g.set(o,A);o=g}if(u==="fusion")throw new Error(`Truncation strategy "${u}" not implemented`);d=await this._extract_fbank_features(o,this.mel_filters_slaney,this.config.nb_max_samples)}return d.unsqueeze_(0)}async _extract_fbank_features(o,l,u=null){return(0,s.spectrogram)(o,this.window,this.config.fft_window_size,this.config.hop_length,{power:2,mel_filters:l,log_mel:"dB",max_num_frames:u,do_pad:!1,transpose:!0})}async _call(o,{max_length:l=null}={}){return(0,n.validate_audio_inputs)(o,"ClapFeatureExtractor"),{input_features:(await this._get_input_mel(o,l??this.config.nb_max_samples,this.config.truncation,this.config.padding)).unsqueeze_(0)}}}}),
2832"./src/models/clip/image_processing_clip.js":((e,t,r)=>{r.r(t),r.d(t,{CLIPFeatureExtractor:()=>a,CLIPImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{}class a extends s{}}),
2832"./src/models/convnext/image_processing_convnext.js":((e,t,r)=>{r.r(t),r.d(t,{ConvNextFeatureExtractor:()=>a,ConvNextImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{constructor(o){super(o),this.crop_pct=this.config.crop_pct??224/256}async resize(o){const l=this.size?.shortest_edge;if(l===void 0)throw new Error("Size dictionary must contain 'shortest_edge' key.");if(l<384){const u=Math.floor(l/this.crop_pct),[p,d]=this.get_resize_output_image_size(o,{shortest_edge:u});o=await o.resize(p,d,{resample:this.resample}),o=await o.center_crop(l,l)}else o=await o.resize(l,l,{resample:this.resample});return o}}class a extends s{}}),
2832"./src/models/dac/feature_extraction_dac.js":((e,t,r)=>{r.r(t),r.d(t,{DacFeatureExtractor:()=>s});var n=r("./src/models/encodec/feature_extraction_encodec.js");class s extends n.EncodecFeatureExtractor{}}),
2832"./src/models/deit/image_processing_deit.js":((e,t,r)=>{r.r(t),r.d(t,{DeiTFeatureExtractor:()=>a,DeiTImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{}class a extends s{}}),
vendor: 651 bytes, line 2832
2832"./src/models/detr/image_processing_detr.js":((e,t,r)=>{r.r(t),r.d(t,{DetrFeatureExtractor:()=>i,DetrImageProcessor:()=>a});var n=r("./src/base/image_processors_utils.js"),s=r("./src/utils/tensor.js");class a extends n.ImageProcessor{async _call(l){const u=await super._call(l),p=[u.pixel_values.dims[0],64,64],d=(0,s.full)(p,1n);return{...u,pixel_mask:d}}post_process_object_detection(...l){return(0,n.post_process_object_detection)(...l)}post_process_panoptic_segmentation(...l){return(0,n.post_process_panoptic_segmentation)(...l)}post_process_instance_segmentation(...l){return(0,n.post_process_instance_segmentation)(...l)}}class i extends a{}}),
2832"./src/models/dinov3_vit/image_processing_dinov3_vit.js":((e,t,r)=>{r.r(t),r.d(t,{DINOv3ViTImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{}}),
2832"./src/models/donut/image_processing_donut.js":((e,t,r)=>{r.r(t),r.d(t,{DonutFeatureExtractor:()=>a,DonutImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{pad_image(o,l,u,p={}){const[d,c,g]=l;let A=this.image_mean;Array.isArray(this.image_mean)||(A=new Array(g).fill(A));let m=this.image_std;Array.isArray(m)||(m=new Array(g).fill(A));const B=A.map((f,h)=>-f/m[h]);return super.pad_image(o,l,u,{center:!0,constant_values:B,...p})}}class a extends s{}}),
2832"./src/models/dpt/image_processing_dpt.js":((e,t,r)=>{r.r(t),r.d(t,{DPTFeatureExtractor:()=>a,DPTImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{}class a extends s{}}),
2832"./src/models/efficientnet/image_processing_efficientnet.js":((e,t,r)=>{r.r(t),r.d(t,{EfficientNetImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{constructor(i){super(i),this.include_top=this.config.include_top??!0,this.include_top&&(this.image_std=this.image_std.map(o=>o*o))}}}),
2832"./src/models/encodec/feature_extraction_encodec.js":((e,t,r)=>{r.r(t),r.d(t,{EncodecFeatureExtractor:()=>a});var n=r("./src/base/feature_extraction_utils.js"),s=r("./src/utils/tensor.js");class a extends n.FeatureExtractor{async _call(o){(0,n.validate_audio_inputs)(o,"EncodecFeatureExtractor"),o instanceof Float64Array&&(o=new Float32Array(o));const l=this.config.feature_size;if(o.length%l!==0)throw new Error(`The length of the audio data must be a multiple of the number of channels (${l}).`);const u=[1,l,o.length/l];return{input_values:new s.Tensor("float32",o,u)}}}}),
2832"./src/models/feature_extractors.js":((e,t,r)=>{r.r(t),r.d(t,{ASTFeatureExtractor:()=>n.ASTFeatureExtractor,ClapFeatureExtractor:()=>a.ClapFeatureExtractor,DacFeatureExtractor:()=>i.DacFeatureExtractor,EncodecFeatureExtractor:()=>s.EncodecFeatureExtractor,Gemma3nAudioFeatureExtractor:()=>o.Gemma3nAudioFeatureExtractor,ImageFeatureExtractor:()=>f.ImageProcessor,MoonshineFeatureExtractor:()=>l.MoonshineFeatureExtractor,ParakeetFeatureExtractor:()=>u.ParakeetFeatureExtractor,PyAnnoteFeatureExtractor:()=>p.PyAnnoteFeatureExtractor,SeamlessM4TFeatureExtractor:()=>d.SeamlessM4TFeatureExtractor,SnacFeatureExtractor:()=>c.SnacFeatureExtractor,SpeechT5FeatureExtractor:()=>g.SpeechT5FeatureExtractor,Wav2Vec2FeatureExtractor:()=>A.Wav2Vec2FeatureExtractor,WeSpeakerFeatureExtractor:()=>m.WeSpeakerFeatureExtractor,WhisperFeatureExtractor:()=>B.WhisperFeatureExtractor});var n=r("./src/models/audio_spectrogram_transformer/feature_extraction_audio_spectrogram_transformer.js"),s=r("./src/models/encodec/feature_extraction_encodec.js"),a=r("./src/models/clap/feature_extraction_clap.js"),i=r("./src/models/dac/feature_extraction_dac.js"),o=r("./src/models/gemma3n/feature_extraction_gemma3n.js"),l=r("./src/models/moonshine/feature_extraction_moonshine.js"),u=r("./src/models/parakeet/feature_extraction_parakeet.js"),p=r("./src/models/pyannote/feature_extraction_pyannote.js"),d=r("./src/models/seamless_m4t/feature_extraction_seamless_m4t.js"),c=r("./src/models/snac/feature_extraction_snac.js"),g=r("./src/models/speecht5/feature_extraction_speecht5.js"),A=r("./src/models/wav2vec2/feature_extraction_wav2vec2.js"),m=r("./src/models/wespeaker/feature_extraction_wespeaker.js"),B=r("./src/models/whisper/feature_extraction_whisper.js"),f=r("./src/base/image_processors_utils.js")}),
2832"./src/models/florence2/processing_florence2.js":((e,t,r)=>{r.r(t),r.d(t,{Florence2Processor:()=>i});var n=r("./src/base/processing_utils.js"),s=r("./src/models/auto/image_processing_auto.js"),a=r("./src/tokenizers.js");class i extends n.Processor{static tokenizer_class=a.AutoTokenizer;static image_processor_class=s.AutoImageProcessor;constructor(l,u,p){super(l,u,p);const{tasks_answer_post_processing_type:d,task_prompts_without_inputs:c,task_prompts_with_input:g}=this.image_processor.config;this.tasks_answer_post_processing_type=new Map(Object.entries(d??{})),this.task_prompts_without_inputs=new Map(Object.entries(c??{})),this.task_prompts_with_input=new Map(Object.entries(g??{})),this.regexes={quad_boxes:/(.+?)<loc_(\d+)><loc_(\d+)><loc_(\d+)><loc_(\d+)><loc_(\d+)><loc_(\d+)><loc_(\d+)><loc_(\d+)>/gm,bboxes:/([^<]+)?<loc_(\d+)><loc_(\d+)><loc_(\d+)><loc_(\d+)>/gm},this.size_per_bin=1e3}construct_prompts(l){typeof l=="string"&&(l=[l]);const u=[];for(const p of l)if(this.task_prompts_without_inputs.has(p))u.push(this.task_prompts_without_inputs.get(p));else{for(const[d,c]of this.task_prompts_with_input)if(p.includes(d)){u.push(c.replaceAll("{input}",p).replaceAll(d,""));break}u.length!==l.length&&u.push(p)}return u}post_process_generation(l,u,p){const d=this.tasks_answer_post_processing_type.get(u)??"pure_text";l=l.replaceAll("<s>","").replaceAll("</s>","");let c;switch(d){case"pure_text":c=l;break;case"description_with_bboxes":case"bboxes":case"phrase_grounding":case"ocr":const g=d==="ocr"?"quad_boxes":"bboxes",A=l.matchAll(this.regexes[g]),m=[],B=[];for(const[f,h,...P]of A)m.push(h?h.trim():m.at(-1)??""),B.push(P.map((_,w)=>(Number(_)+.5)/this.size_per_bin*p[w%2]));c={labels:m,[g]:B};break;default:throw new Error(`Task "${u}" (of type "${d}") not yet implemented.`)}return{[u]:c}}async _call(l,u=null,p={}){if(!l&&!u)throw new Error("Either text or images must be provided");const d=await this.image_processor(l,p),c=u?this.tokenizer(this.construct_prompts(u),p):{};return{...d,...c}}}}),
2832"./src/models/gemma3n/feature_extraction_gemma3n.js":((e,t,r)=>{r.r(t),r.d(t,{Gemma3nAudioFeatureExtractor:()=>i});var n=r("./src/base/feature_extraction_utils.js"),s=r("./src/utils/tensor.js"),a=r("./src/utils/audio.js");class i extends n.FeatureExtractor{constructor(l){super(l);const{fft_length:u,feature_size:p,min_frequency:d,max_frequency:c,sampling_rate:g,frame_length:A}=this.config,m=(0,a.mel_filter_bank)(Math.floor(1+u/2),p,d,c,g,null,"htk",!1);this.mel_filters=m,this.window=(0,a.window_function)(A,"hann")}async _extract_fbank_features(l,u){return(0,a.spectrogram)(l,this.window,this.config.frame_length,this.config.hop_length,{fft_length:this.config.fft_length,center:!1,onesided:!0,preemphasis:this.config.preemphasis,preemphasis_htk_flavor:this.config.preemphasis_htk_flavor,mel_filters:this.mel_filters,log_mel:"log",mel_floor:this.config.mel_floor,remove_dc_offset:!1,transpose:!0})}async _call(l,{max_length:u=48e4,truncation:p=!0,padding:d=!0,pad_to_multiple_of:c=128}={}){if((0,n.validate_audio_inputs)(l,"Gemma3nAudioFeatureExtractor"),p&&l.length>u&&(l=l.slice(0,u)),d&&l.length%c!==0){const m=c-l.length%c,B=new Float64Array(l.length+m);B.set(l),this.config.padding_value!==0&&B.fill(this.config.padding_value,l.length),l=B}const g=await this._extract_fbank_features(l,this.config.max_length),A=(0,s.full)([1,g.dims[0]],!0);return{input_features:g.unsqueeze_(0),input_features_mask:A}}}}),
2832"./src/models/gemma3n/processing_gemma3n.js":((e,t,r)=>{r.r(t),r.d(t,{Gemma3nProcessor:()=>o});var n=r("./src/base/processing_utils.js"),s=r("./src/models/auto/image_processing_auto.js"),a=r("./src/models/auto/feature_extraction_auto.js"),i=r("./src/tokenizers.js");r("./src/utils/image.js"),r("./src/utils/audio.js");class o extends n.Processor{static image_processor_class=s.AutoImageProcessor;static feature_extractor_class=a.AutoFeatureExtractor;static tokenizer_class=i.AutoTokenizer;static uses_processor_config=!0;static uses_chat_template_file=!0;constructor(u,p,d){super(u,p,d),this.audio_seq_length=this.config.audio_seq_length,this.image_seq_length=this.config.image_seq_length;const{audio_token_id:c,boa_token:g,audio_token:A,eoa_token:m,image_token_id:B,boi_token:f,image_token:h,eoi_token:P}=this.tokenizer.config;this.audio_token_id=c,this.boa_token=g,this.audio_token=A;const _=A.repeat(this.audio_seq_length);this.full_audio_sequence=` 2833 2834${g}${_}${m} 2835 2836`,this.image_token_id=B,this.boi_token=f,this.image_token=h;const w=h.repeat(this.image_seq_length);this.full_image_sequence=` 2837 2838${f}${w}${P} 2839 2840`}async _call(u,p=null,d=null,c={}){typeof u=="string"&&(u=[u]);let g;d&&(g=await this.feature_extractor(d,c),u=u.map(B=>B.replaceAll(this.audio_token,this.full_audio_sequence)));let A;return p&&(A=await this.image_processor(p,c),u=u.map(B=>B.replaceAll(this.image_token,this.full_image_sequence))),{...this.tokenizer(u,c),...A,...g}}}}),
2840"./src/models/glpn/image_processing_glpn.js":((e,t,r)=>{r.r(t),r.d(t,{GLPNFeatureExtractor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{}}),
2840"./src/models/grounding_dino/image_processing_grounding_dino.js":((e,t,r)=>{r.r(t),r.d(t,{GroundingDinoImageProcessor:()=>a});var n=r("./src/base/image_processors_utils.js"),s=r("./src/utils/tensor.js");class a extends n.ImageProcessor{async _call(o){const l=await super._call(o),u=l.pixel_values.dims,p=(0,s.ones)([u[0],u[2],u[3]]);return{...l,pixel_mask:p}}}}),
2840"./src/models/grounding_dino/processing_grounding_dino.js":((e,t,r)=>{r.r(t),r.d(t,{GroundingDinoProcessor:()=>l});var n=r("./src/base/processing_utils.js"),s=r("./src/models/auto/image_processing_auto.js"),a=r("./src/tokenizers.js"),i=r("./src/base/image_processors_utils.js");function o(u,p){const c=u.dims.at(-1)-1,g=u.tolist();g.fill(!1,0,1),g.fill(!1,c);const A=p.tolist();return g.map((m,B)=>m?B:null).filter(m=>m!==null).map(m=>A[m])}class l extends n.Processor{static tokenizer_class=a.AutoTokenizer;static image_processor_class=s.AutoImageProcessor;async _call(p,d,c={}){const g=p?await this.image_processor(p,c):{};return{...d?this.tokenizer(d,c):{},...g}}post_process_grounded_object_detection(p,d,{box_threshold:c=.25,text_threshold:g=.25,target_sizes:A=null}={}){const{logits:m,pred_boxes:B}=p,f=m.dims[0];if(A!==null&&A.length!==f)throw Error("Make sure that you pass in as many target sizes as the batch dimension of the logits");const h=m.dims.at(1),P=m.sigmoid(),_=P.max(-1).tolist(),w=B.tolist().map(v=>v.map(y=>(0,i.center_to_corners_format)(y))),b=[];for(let v=0;v<f;++v){const y=A!==null?A[v]:null;y!==null&&(w[v]=w[v].map(F=>F.map((R,L)=>R*y[(L+1)%2])));const $=_[v],k=[],W=[],j=[];for(let F=0;F<h;++F){const R=$[F];if(R<=c)continue;const L=w[v][F],Q=P[v][F];k.push(R),j.push(L);const ne=o(Q.gt(g),d[v]);W.push(ne)}b.push({scores:k,boxes:j,labels:this.batch_decode(W)})}return b}}}),
2840"./src/models/idefics3/image_processing_idefics3.js":((e,t,r)=>{r.r(t),r.d(t,{Idefics3ImageProcessor:()=>a});var n=r("./src/base/image_processors_utils.js"),s=r("./src/utils/tensor.js");class a extends n.ImageProcessor{constructor(o){super(o),this.do_image_splitting=o.do_image_splitting??!0,this.max_image_size=o.max_image_size}get_resize_for_vision_encoder(o,l){let[u,p]=o.dims.slice(-2);const d=p/u;return p>=u?(p=Math.ceil(p/l)*l,u=Math.floor(p/d),u=Math.ceil(u/l)*l):(u=Math.ceil(u/l)*l,p=Math.floor(u*d),p=Math.ceil(p/l)*l),{height:u,width:p}}async _call(o,{do_image_splitting:l=null,return_row_col_info:u=!1}={}){let p;if(!Array.isArray(o))p=[[o]];else{if(o.length===0||!o[0])throw new Error("No images provided.");Array.isArray(o[0])?p=o:p=[o]}let d=[],c=[],g=[];const A=[],m=[];for(const v of p){let y=await Promise.all(v.map(W=>this.preprocess(W)));A.push(...y.map(W=>W.original_size)),m.push(...y.map(W=>W.reshaped_input_size)),y.forEach(W=>W.pixel_values.unsqueeze_(0));const{longest_edge:$}=this.max_image_size;let k;if(l??this.do_image_splitting){let W=new Array(y.length),j=new Array(y.length);k=await Promise.all(y.map(async(F,R)=>{const L=this.get_resize_for_vision_encoder(F.pixel_values,$),Q=await(0,s.interpolate_4d)(F.pixel_values,{size:[L.height,L.width]}),{frames:ne,num_splits_h:re,num_splits_w:ce}=await this.split_image(Q,this.max_image_size);return W[R]=re,j[R]=ce,(0,s.cat)(ne,0)})),c.push(W),g.push(j)}else{const W=[$,$];k=await Promise.all(y.map(j=>(0,s.interpolate_4d)(j.pixel_values,{size:W}))),c.push(new Array(y.length).fill(0)),g.push(new Array(y.length).fill(0))}d.push((0,s.cat)(k,0))}const B=d.length,[f,h,P,_]=d[0].dims;let w,b;if(B===1)w=d[0].unsqueeze_(0),b=(0,s.full)([B,f,P,_],!0);else{const v=Math.max(...d.map(k=>k.dims.at(0)));b=(0,s.full)([B,v,P,_],!0);const y=b.data,$=v*P*_;for(let k=0;k<B;++k){const W=d[k].dims[0];if(W<v){d[k]=(0,s.cat)([d[k],(0,s.full)([v-W,h,P,_],0)],0);const j=k*$+W*P*_,F=(k+1)*$;y.fill(!1,j,F)}}w=(0,s.stack)(d,0)}return{pixel_values:w,pixel_attention_mask:b,original_sizes:A,reshaped_input_sizes:m,...u?{rows:c,cols:g}:{}}}async split_image(o,{longest_edge:l}){const u=l,p=l,d=[],[c,g]=o.dims.slice(-2);let A=0,m=0;if(c>u||g>p){A=Math.ceil(c/u),m=Math.ceil(g/p);const B=Math.ceil(c/A),f=Math.ceil(g/m);for(let _=0;_<A;++_)for(let w=0;w<m;++w){let b,v,y,$;_===A-1?(v=c-B,$=c):(v=_*B,$=(_+1)*B),w===m-1?(b=g-f,y=g):(b=w*f,y=(w+1)*f);const k=[v,b],W=[$,y],j=await(0,s.slice)(o,k,W,[2,3]);d.push(j)}const h=u,P=p;(c!==h||g!==P)&&(o=await(0,s.interpolate_4d)(o,{size:[h,P]}))}return d.push(o),{frames:d,num_splits_h:A,num_splits_w:m}}}}),
2840"./src/models/idefics3/processing_idefics3.js":((e,t,r)=>{r.r(t),r.d(t,{Idefics3Processor:()=>p});var n=r("./src/base/processing_utils.js"),s=r("./src/models/auto/image_processing_auto.js"),a=r("./src/tokenizers.js");r("./src/utils/image.js");var i=r("./src/utils/core.js");function o(d,c,g,A,m,B){let f="";for(let h=0;h<c;++h){for(let P=0;P<g;++P)f+=A+`<row_${h+1}_col_${P+1}>`+m.repeat(d);f+=` 2841`}return f+=` 2842${A}${B}`+m.repeat(d)+`${A}`,f}function l(d,c,g,A){return`${c}${A}`+g.repeat(d)+`${c}`}function u(d,c,g,A,m,B){return d===0&&c===0?l(g,A,m,B):o(g,d,c,A,m,B)}class p extends n.Processor{static image_processor_class=s.AutoImageProcessor;static tokenizer_class=a.AutoTokenizer;static uses_processor_config=!0;fake_image_token="<fake_token_around_image>";image_token="<image>";global_img_token="<global-img>";async _call(c,g=null,A={}){A.return_row_col_info??=!0;let m;g&&(m=await this.image_processor(g,A)),Array.isArray(c)||(c=[c]);const B=m.rows??[new Array(c.length).fill(0)],f=m.cols??[new Array(c.length).fill(0)],h=this.config.image_seq_len,P=[],_=[];for(let b=0;b<c.length;++b){const v=c[b],y=B[b],$=f[b];P.push((0,i.count)(v,this.image_token));const k=y.map((F,R)=>u(F,$[R],h,this.fake_image_token,this.image_token,this.global_img_token)),W=v.split(this.image_token);if(W.length===0)throw new Error("The image token should be present in the text.");let j=W[0];for(let F=0;F<k.length;++F)j+=k[F]+W[F+1];_.push(j)}return{...this.tokenizer(_),...m}}}}),
2842"./src/models/image_processors.js":((e,t,r)=>{r.r(t),r.d(t,{BeitFeatureExtractor:()=>n.BeitFeatureExtractor,BitImageProcessor:()=>s.BitImageProcessor,CLIPFeatureExtractor:()=>i.CLIPFeatureExtractor,CLIPImageProcessor:()=>i.CLIPImageProcessor,ChineseCLIPFeatureExtractor:()=>a.ChineseCLIPFeatureExtractor,ConvNextFeatureExtractor:()=>o.ConvNextFeatureExtractor,ConvNextImageProcessor:()=>o.ConvNextImageProcessor,DINOv3ViTImageProcessor:()=>p.DINOv3ViTImageProcessor,DPTFeatureExtractor:()=>c.DPTFeatureExtractor,DPTImageProcessor:()=>c.DPTImageProcessor,DeiTFeatureExtractor:()=>l.DeiTFeatureExtractor,DeiTImageProcessor:()=>l.DeiTImageProcessor,DetrFeatureExtractor:()=>u.DetrFeatureExtractor,DetrImageProcessor:()=>u.DetrImageProcessor,DonutFeatureExtractor:()=>d.DonutFeatureExtractor,DonutImageProcessor:()=>d.DonutImageProcessor,EfficientNetImageProcessor:()=>g.EfficientNetImageProcessor,GLPNFeatureExtractor:()=>A.GLPNFeatureExtractor,GroundingDinoImageProcessor:()=>m.GroundingDinoImageProcessor,Idefics3ImageProcessor:()=>B.Idefics3ImageProcessor,JinaCLIPImageProcessor:()=>h.JinaCLIPImageProcessor,LlavaOnevisionImageProcessor:()=>P.LlavaOnevisionImageProcessor,Mask2FormerImageProcessor:()=>_.Mask2FormerImageProcessor,MaskFormerFeatureExtractor:()=>w.MaskFormerFeatureExtractor,MaskFormerImageProcessor:()=>w.MaskFormerImageProcessor,MobileNetV1FeatureExtractor:()=>b.MobileNetV1FeatureExtractor,MobileNetV1ImageProcessor:()=>b.MobileNetV1ImageProcessor,MobileNetV2FeatureExtractor:()=>v.MobileNetV2FeatureExtractor,MobileNetV2ImageProcessor:()=>v.MobileNetV2ImageProcessor,MobileNetV3FeatureExtractor:()=>y.MobileNetV3FeatureExtractor,MobileNetV3ImageProcessor:()=>y.MobileNetV3ImageProcessor,MobileNetV4FeatureExtractor:()=>$.MobileNetV4FeatureExtractor,MobileNetV4ImageProcessor:()=>$.MobileNetV4ImageProcessor,MobileViTFeatureExtractor:()=>k.MobileViTFeatureExtractor,MobileViTImageProcessor:()=>k.MobileViTImageProcessor,NougatImageProcessor:()=>W.NougatImageProcessor,OwlViTFeatureExtractor:()=>F.OwlViTFeatureExtractor,OwlViTImageProcessor:()=>F.OwlViTImageProcessor,Owlv2ImageProcessor:()=>j.Owlv2ImageProcessor,Phi3VImageProcessor:()=>R.Phi3VImageProcessor,PixtralImageProcessor:()=>L.PixtralImageProcessor,PvtImageProcessor:()=>Q.PvtImageProcessor,Qwen2VLImageProcessor:()=>ne.Qwen2VLImageProcessor,RTDetrImageProcessor:()=>re.RTDetrImageProcessor,Sam2ImageProcessor:()=>ge.Sam2ImageProcessor,Sam3ImageProcessor:()=>q.Sam3ImageProcessor,SamImageProcessor:()=>ce.SamImageProcessor,SegformerFeatureExtractor:()=>V.SegformerFeatureExtractor,SegformerImageProcessor:()=>V.SegformerImageProcessor,SiglipImageProcessor:()=>U.SiglipImageProcessor,SmolVLMImageProcessor:()=>N.SmolVLMImageProcessor,Swin2SRImageProcessor:()=>oe.Swin2SRImageProcessor,VLMImageProcessor:()=>f.VLMImageProcessor,ViTFeatureExtractor:()=>fe.ViTFeatureExtractor,ViTImageProcessor:()=>fe.ViTImageProcessor,VitMatteImageProcessor:()=>De.VitMatteImageProcessor,VitPoseImageProcessor:()=>Ie.VitPoseImageProcessor,YolosFeatureExtractor:()=>je.YolosFeatureExtractor,YolosImageProcessor:()=>je.YolosImageProcessor});var n=r("./src/models/beit/image_processing_beit.js"),s=r("./src/models/bit/image_processing_bit.js"),a=r("./src/models/chinese_clip/image_processing_chinese_clip.js"),i=r("./src/models/clip/image_processing_clip.js"),o=r("./src/models/convnext/image_processing_convnext.js"),l=r("./src/models/deit/image_processing_deit.js"),u=r("./src/models/detr/image_processing_detr.js"),p=r("./src/models/dinov3_vit/image_processing_dinov3_vit.js"),d=r("./src/models/donut/image_processing_donut.js"),c=r("./src/models/dpt/image_processing_dpt.js"),g=r("./src/models/efficientnet/image_processing_efficientnet.js"),A=r("./src/models/glpn/image_processing_glpn.js"),m=r("./src/models/grounding_dino/image_processing_grounding_dino.js"),B=r("./src/models/idefics3/image_processing_idefics3.js"),f=r("./src/models/janus/image_processing_janus.js"),h=r("./src/models/jina_clip/image_processing_jina_clip.js"),P=r("./src/models/llava_onevision/image_processing_llava_onevision.js"),_=r("./src/models/mask2former/image_processing_mask2former.js"),w=r("./src/models/maskformer/image_processing_maskformer.js"),b=r("./src/models/mobilenet_v1/image_processing_mobilenet_v1.js"),v=r("./src/models/mobilenet_v2/image_processing_mobilenet_v2.js"),y=r("./src/models/mobilenet_v3/image_processing_mobilenet_v3.js"),$=r("./src/models/mobilenet_v4/image_processing_mobilenet_v4.js"),k=r("./src/models/mobilevit/image_processing_mobilevit.js"),W=r("./src/models/nougat/image_processing_nougat.js"),j=r("./src/models/owlv2/image_processing_owlv2.js"),F=r("./src/models/owlvit/image_processing_owlvit.js"),R=r("./src/models/phi3_v/image_processing_phi3_v.js"),L=r("./src/models/pixtral/image_processing_pixtral.js"),Q=r("./src/models/pvt/image_processing_pvt.js"),ne=r("./src/models/qwen2_vl/image_processing_qwen2_vl.js"),re=r("./src/models/rt_detr/image_processing_rt_detr.js"),ce=r("./src/models/sam/image_processing_sam.js"),ge=r("./src/models/sam2/image_processing_sam2.js"),q=r("./src/models/sam3/image_processing_sam3.js"),V=r("./src/models/segformer/image_processing_segformer.js"),U=r("./src/models/siglip/image_processing_siglip.js"),N=r("./src/models/smolvlm/image_processing_smolvlm.js"),oe=r("./src/models/swin2sr/image_processing_swin2sr.js"),fe=r("./src/models/vit/image_processing_vit.js"),De=r("./src/models/vitmatte/image_processing_vitmatte.js"),Ie=r("./src/models/vitpose/image_processing_vitpose.js"),je=r("./src/models/yolos/image_processing_yolos.js")}),
2842"./src/models/janus/image_processing_janus.js":((e,t,r)=>{r.r(t),r.d(t,{VLMImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{constructor(i){super({do_pad:!0,pad_size:{width:i.image_size,height:i.image_size},...i}),this.constant_values=this.config.background_color.map(o=>o*this.rescale_factor)}pad_image(i,o,l,u){return super.pad_image(i,o,l,{constant_values:this.constant_values,center:!0,...u})}}}),
2842"./src/models/janus/processing_janus.js":((e,t,r)=>{r.r(t),r.d(t,{VLChatProcessor:()=>u});var n=r("./src/base/processing_utils.js"),s=r("./src/models/auto/image_processing_auto.js"),a=r("./src/tokenizers.js"),i=r("./src/utils/core.js"),o=r("./src/utils/tensor.js"),l=r("./src/utils/image.js");class u extends n.Processor{static image_processor_class=s.AutoImageProcessor;static tokenizer_class=a.AutoTokenizer;static uses_processor_config=!0;constructor(d,c,g){super(d,c,g),this.image_tag=this.config.image_tag,this.image_start_tag=this.config.image_start_tag,this.image_end_tag=this.config.image_end_tag,this.num_image_tokens=this.config.num_image_tokens}async _call(d,{images:c=null,chat_template:g="default"}={}){c?Array.isArray(c)||(c=[c]):c=await Promise.all(d.filter(k=>k.images).flatMap(k=>k.images).map(k=>l.RawImage.read(k)));const A=this.tokenizer,m=A.apply_chat_template(d,{tokenize:!1,add_generation_prompt:!0,chat_template:g}),B=k=>A.encode(k,{add_special_tokens:!1}),f=m.split(this.image_tag),h=f.length-1;if(c.length!==h)throw new Error(`Number of images provided (${c.length}) does not match number of "${this.image_tag}" image tags (${h})`);const[P,_,w]=A.model.convert_tokens_to_ids([this.image_tag,this.image_start_tag,this.image_end_tag]);let b=B(f[0]),v=new Array(b.length).fill(!1);for(let k=1;k<f.length;++k){const W=new Array(this.num_image_tokens).fill(P),j=B(f[k]);b=(0,i.mergeArrays)(b,[_],W,[w],j);const F=new Array(this.num_image_tokens).fill(!0);v=(0,i.mergeArrays)(v,[!1],F,[!1],new Array(j.length).fill(!1))}const y=[1,b.length],$={input_ids:new o.Tensor("int64",b,y),attention_mask:new o.Tensor("int64",new Array(b.length).fill(1),y),images_seq_mask:new o.Tensor("bool",v,y),images_emb_mask:new o.Tensor("bool",new Array(h*this.num_image_tokens).fill(!0),[1,h,this.num_image_tokens])};if(c&&c.length>0){const k=await this.image_processor(c);return k.pixel_values.unsqueeze_(0),{...$,...k}}return $}}}),
2842"./src/models/jina_clip/image_processing_jina_clip.js":((e,t,r)=>{r.r(t),r.d(t,{JinaCLIPImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{constructor(i){const{resize_mode:o,fill_color:l,interpolation:u,size:p,...d}=i,c=o==="squash"?{width:p,height:p}:o==="shortest"?{shortest_edge:p}:{longest_edge:p},g=u==="bicubic"?3:2;super({...d,size:c,resample:g,do_center_crop:!0,crop_size:p,do_normalize:!0})}}}),
2842"./src/models/jina_clip/processing_jina_clip.js":((e,t,r)=>{r.r(t),r.d(t,{JinaCLIPProcessor:()=>i});var n=r("./src/base/processing_utils.js"),s=r("./src/models/auto/image_processing_auto.js"),a=r("./src/tokenizers.js");class i extends n.Processor{static tokenizer_class=a.AutoTokenizer;static image_processor_class=s.AutoImageProcessor;async _call(l=null,u=null,p={}){if(!l&&!u)throw new Error("Either text or images must be provided");const d=l?this.tokenizer(l,p):{},c=u?await this.image_processor(u,p):{};return{...d,...c}}}}),
2842"./src/models/llava/processing_llava.js":((e,t,r)=>{r.r(t),r.d(t,{LlavaProcessor:()=>i});var n=r("./src/base/processing_utils.js"),s=r("./src/models/auto/image_processing_auto.js"),a=r("./src/tokenizers.js");class i extends n.Processor{static tokenizer_class=a.AutoTokenizer;static image_processor_class=s.AutoImageProcessor;static uses_processor_config=!0;async _call(l,u=null,p={}){const d=await this.image_processor(l,p);if(u){const[g,A]=d.pixel_values.dims.slice(-2),{image_token:m,patch_size:B,num_additional_image_tokens:f}=this.config,h=Math.floor(g/B)*Math.floor(A/B)+f;u=structuredClone(u),Array.isArray(u)||(u=[u]);for(let P=0;P<u.length;++P)u[P]=u[P].replace(m,m.repeat(h))}const c=u?this.tokenizer(u,p):{};return{...d,...c}}}}),
2842"./src/models/llava_onevision/image_processing_llava_onevision.js":((e,t,r)=>{r.r(t),r.d(t,{LlavaOnevisionImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{}}),
2842"./src/models/mask2former/image_processing_mask2former.js":((e,t,r)=>{r.r(t),r.d(t,{Mask2FormerImageProcessor:()=>s});var n=r("./src/models/maskformer/image_processing_maskformer.js");class s extends n.MaskFormerImageProcessor{}}),
2842"./src/models/maskformer/image_processing_maskformer.js":((e,t,r)=>{r.r(t),r.d(t,{MaskFormerFeatureExtractor:()=>a,MaskFormerImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{post_process_panoptic_segmentation(...o){return(0,n.post_process_panoptic_segmentation)(...o)}post_process_instance_segmentation(...o){return(0,n.post_process_instance_segmentation)(...o)}}class a extends s{}}),
vendor: 1,964 bytes, line 2842
2842"./src/models/mgp_str/processing_mgp_str.js":((e,t,r)=>{r.r(t),r.d(t,{MgpstrProcessor:()=>l});var n=r("./src/base/processing_utils.js"),s=r("./src/models/auto/image_processing_auto.js"),a=r("./src/tokenizers.js"),i=r("./src/utils/maths.js");const o={char:["char_decode",1],bpe:["bpe_decode",2],wp:["wp_decode",102]};class l extends n.Processor{static tokenizer_class=a.AutoTokenizer;static image_processor_class=s.AutoImageProcessor;get char_tokenizer(){return this.components.char_tokenizer}get bpe_tokenizer(){return this.components.bpe_tokenizer}get wp_tokenizer(){return this.components.wp_tokenizer}_decode_helper(p,d){if(!o.hasOwnProperty(d))throw new Error(`Format ${d} is not supported.`);const[c,g]=o[d],A=this[c].bind(this),[m,B]=p.dims,f=[],h=[],P=p.tolist();for(let w=0;w<m;++w){const b=P[w],v=[],y=[];for(let k=1;k<B;++k){const[W,j]=(0,i.max)((0,i.softmax)(b[k]));if(y.push(W),j==g)break;v.push(j)}const $=y.length>0?y.reduce((k,W)=>k*W,1):0;h.push(v),f.push($)}return[A(h),f]}char_decode(p){return this.char_tokenizer.batch_decode(p).map(d=>d.replaceAll(" ",""))}bpe_decode(p){return this.bpe_tokenizer.batch_decode(p)}wp_decode(p){return this.wp_tokenizer.batch_decode(p).map(d=>d.replaceAll(" ",""))}batch_decode([p,d,c]){const[g,A]=this._decode_helper(p,"char"),[m,B]=this._decode_helper(d,"bpe"),[f,h]=this._decode_helper(c,"wp"),P=[],_=[];for(let w=0;w<g.length;++w){const[b,v]=(0,i.max)([A[w],B[w],h[w]]);P.push([g[w],m[w],f[w]][v]),_.push(b)}return{generated_text:P,scores:_,char_preds:g,bpe_preds:m,wp_preds:f}}static async from_pretrained(...p){const d=await super.from_pretrained(...p),c=await a.AutoTokenizer.from_pretrained("Xenova/gpt2"),g=await a.AutoTokenizer.from_pretrained("Xenova/bert-base-uncased");return d.components={image_processor:d.image_processor,char_tokenizer:d.tokenizer,bpe_tokenizer:c,wp_tokenizer:g},d}async _call(p,d=null){const c=await this.image_processor(p);return d&&(c.labels=this.tokenizer(d).input_ids),c}}}),
2842"./src/models/mobilenet_v1/image_processing_mobilenet_v1.js":((e,t,r)=>{r.r(t),r.d(t,{MobileNetV1FeatureExtractor:()=>a,MobileNetV1ImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{}class a extends s{}}),
2842"./src/models/mobilenet_v2/image_processing_mobilenet_v2.js":((e,t,r)=>{r.r(t),r.d(t,{MobileNetV2FeatureExtractor:()=>a,MobileNetV2ImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{}class a extends s{}}),
2842"./src/models/mobilenet_v3/image_processing_mobilenet_v3.js":((e,t,r)=>{r.r(t),r.d(t,{MobileNetV3FeatureExtractor:()=>a,MobileNetV3ImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{}class a extends s{}}),
2842"./src/models/mobilenet_v4/image_processing_mobilenet_v4.js":((e,t,r)=>{r.r(t),r.d(t,{MobileNetV4FeatureExtractor:()=>a,MobileNetV4ImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{}class a extends s{}}),
2842"./src/models/mobilevit/image_processing_mobilevit.js":((e,t,r)=>{r.r(t),r.d(t,{MobileViTFeatureExtractor:()=>a,MobileViTImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{}class a extends s{}}),
2842"./src/models/moonshine/feature_extraction_moonshine.js":((e,t,r)=>{r.r(t),r.d(t,{MoonshineFeatureExtractor:()=>a});var n=r("./src/base/feature_extraction_utils.js"),s=r("./src/utils/tensor.js");class a extends n.FeatureExtractor{async _call(o){(0,n.validate_audio_inputs)(o,"MoonshineFeatureExtractor"),o instanceof Float64Array&&(o=new Float32Array(o));const l=[1,o.length];return{input_values:new s.Tensor("float32",o,l)}}}}),
2842"./src/models/moonshine/processing_moonshine.js":((e,t,r)=>{r.r(t),r.d(t,{MoonshineProcessor:()=>i});var n=r("./src/models/auto/feature_extraction_auto.js"),s=r("./src/tokenizers.js"),a=r("./src/base/processing_utils.js");class i extends a.Processor{static tokenizer_class=s.AutoTokenizer;static feature_extractor_class=n.AutoFeatureExtractor;async _call(l){return await this.feature_extractor(l)}}}),
2842"./src/models/nougat/image_processing_nougat.js":((e,t,r)=>{r.r(t),r.d(t,{NougatImageProcessor:()=>s});var n=r("./src/models/donut/image_processing_donut.js");class s extends n.DonutImageProcessor{}}),
2842"./src/models/owlv2/image_processing_owlv2.js":((e,t,r)=>{r.r(t),r.d(t,{Owlv2ImageProcessor:()=>s});var n=r("./src/models/owlvit/image_processing_owlvit.js");class s extends n.OwlViTImageProcessor{}}),
2842"./src/models/owlvit/image_processing_owlvit.js":((e,t,r)=>{r.r(t),r.d(t,{OwlViTFeatureExtractor:()=>a,OwlViTImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{post_process_object_detection(...o){return(0,n.post_process_object_detection)(...o)}}class a extends s{}}),
2842"./src/models/owlvit/processing_owlvit.js":((e,t,r)=>{r.r(t),r.d(t,{OwlViTProcessor:()=>i});var n=r("./src/base/processing_utils.js"),s=r("./src/models/auto/image_processing_auto.js"),a=r("./src/tokenizers.js");class i extends n.Processor{static tokenizer_class=a.AutoTokenizer;static image_processor_class=s.AutoImageProcessor}}),
2842"./src/models/paligemma/processing_paligemma.js":((e,t,r)=>{r.r(t),r.d(t,{PaliGemmaProcessor:()=>l});var n=r("./src/base/processing_utils.js"),s=r("./src/models/auto/image_processing_auto.js"),a=r("./src/tokenizers.js");const i="<image>";function o(u,p,d,c,g){return`${c.repeat(d*g)}${p}${u} 2843`}class l extends n.Processor{static tokenizer_class=a.AutoTokenizer;static image_processor_class=s.AutoImageProcessor;static uses_processor_config=!1;async _call(p,d=null,c={}){d||(console.warn("You are using PaliGemma without a text prefix. It will perform as a picture-captioning model."),d=""),Array.isArray(p)||(p=[p]),Array.isArray(d)||(d=[d]);const g=this.tokenizer.bos_token,A=this.image_processor.config.image_seq_length;let m;d.some(h=>h.includes(i))?m=d.map(h=>{const P=h.replaceAll(i,i.repeat(A)),_=P.lastIndexOf(i),w=_===-1?0:_+i.length;return P.slice(0,w)+g+P.slice(w)+` 2844`}):(console.warn("You are passing both `text` and `images` to `PaliGemmaProcessor`. The processor expects special image tokens in the text, as many tokens as there are images per each text. It is recommended to add `<image>` tokens in the very beginning of your text. For this call, we will infer how many images each text has and add special tokens."),m=d.map(h=>o(h,g,A,i,p.length)));const B=this.tokenizer(m,c);return{...await this.image_processor(p,c),...B}}}}),
2844"./src/models/parakeet/feature_extraction_parakeet.js":((e,t,r)=>{r.r(t),r.d(t,{ParakeetFeatureExtractor:()=>o});var n=r("./src/base/feature_extraction_utils.js"),s=r("./src/utils/tensor.js"),a=r("./src/utils/audio.js");const i=1e-5;class o extends n.FeatureExtractor{constructor(u){super(u),this.config.mel_filters??=(0,a.mel_filter_bank)(Math.floor(1+this.config.n_fft/2),this.config.feature_size,0,this.config.sampling_rate/2,this.config.sampling_rate,"slaney","slaney");const p=(0,a.window_function)(this.config.win_length,"hann",{periodic:!1});this.window=new Float64Array(this.config.n_fft);const d=Math.floor((this.config.n_fft-this.config.win_length)/2);this.window.set(p,d)}async _extract_fbank_features(u){const p=this.config.preemphasis;u=new Float64Array(u);for(let c=u.length-1;c>=1;--c)u[c]-=p*u[c-1];return await(0,a.spectrogram)(u,this.window,this.window.length,this.config.hop_length,{fft_length:this.config.n_fft,power:2,mel_filters:this.config.mel_filters,log_mel:"log",mel_floor:-1/0,pad_mode:"constant",center:!0,transpose:!0,mel_offset:2**-24})}async _call(u){(0,n.validate_audio_inputs)(u,"ParakeetFeatureExtractor");const p=await this._extract_fbank_features(u),d=Math.floor((u.length+Math.floor(this.config.n_fft/2)*2-this.config.n_fft)/this.config.hop_length),c=p.data;c.fill(0,d*p.dims[1]);const[g,A]=p.dims,m=new Float64Array(A),B=new Float64Array(A);for(let P=0;P<d;++P){const _=P*A;for(let w=0;w<A;++w){const b=c[_+w];m[w]+=b,B[w]+=b*b}}const f=d>1?d-1:1;for(let P=0;P<A;++P){const _=m[P]/d,w=(B[P]-d*_*_)/f,v=1/(Math.sqrt(w)+i);for(let y=0;y<d;++y){const $=y*A+P;c[$]=(c[$]-_)*v}}const h=new BigInt64Array(g);return h.fill(1n,0,d),{input_features:p.unsqueeze_(0),attention_mask:new s.Tensor("int64",h,[1,g])}}}}),
2844"./src/models/phi3_v/image_processing_phi3_v.js":((e,t,r)=>{r.r(t),r.d(t,{Phi3VImageProcessor:()=>p});var n=r("./src/base/image_processors_utils.js"),s=r("./src/utils/tensor.js");const a=336,i=[2,3],{ceil:o,floor:l,sqrt:u}=Math;class p extends n.ImageProcessor{constructor(c){super({...c,do_normalize:!0,do_pad:!0,pad_size:"custom",do_convert_rgb:!0,do_resize:!0}),this._num_crops=c.num_crops}calc_num_image_tokens_from_image_size(c,g){const{num_img_tokens:A}=this.config;return l((l(g/a)*l(c/a)+1)*A+1+(l(g/a)+1)*u(A))}get_resize_output_image_size(c,g){const A=this._num_crops,[m,B]=c.size;let f=m/B,h=1;for(;h*Math.ceil(h/f)<=A;)h+=1;h-=1;const P=Math.floor(h*336),_=Math.floor(P/f);return[P,_]}pad_image(c,g,A,m={}){const[B,f]=g,h=a*o(B/a),P=a*o(f/a),_=[1,1,1].map((w,b)=>(w-this.image_mean[b])/this.image_std[b]);return super.pad_image(c,g,{width:P,height:h},{center:!0,constant_values:_,...m})}async _call(c,{num_crops:g=null}={}){if(this._num_crops=g??=this.config.num_crops,g<4||u(g)%1!==0)throw new Error("num_crops must be a square number >= 4");Array.isArray(c)||(c=[c]);const A=c.length,m=await Promise.all(c.map(v=>this.preprocess(v))),B=m.map(v=>v.original_size),f=m.map(v=>v.reshaped_input_size),h=[];for(const{pixel_values:v}of m){v.unsqueeze_(0);const[y,$]=v.dims.slice(-2),k=await(0,s.interpolate_4d)(v,{size:[a,a],mode:"bicubic"});if(g>0){const W=[],j=u(g),F=l($/j),R=l(y/j);for(let Q=0;Q<j;++Q)for(let ne=0;ne<j;++ne){let re,ce,ge,q;Q===j-1?(ce=y-R,q=y):(ce=Q*R,q=(Q+1)*R),ne===j-1?(re=$-F,ge=$):(re=ne*F,ge=(ne+1)*F);const V=[ce,re],U=[q,ge],N=await(0,s.slice)(v,V,U,i);W.push(N)}const L=await(0,s.interpolate_4d)((0,s.cat)(W,0),{size:[a,a],mode:"bicubic"});h.push((0,s.cat)([k,L],0))}else h.push(k)}const P=(0,s.stack)(h,0),_=f.map(v=>v.map(y=>a*o(y/a))),w=new s.Tensor("int64",_.flat(),[A,2]),b=_.map(([v,y])=>this.calc_num_image_tokens_from_image_size(y,v));return{pixel_values:P,original_sizes:B,reshaped_input_sizes:f,image_sizes:w,num_img_tokens:b}}}}),
2844"./src/models/phi3_v/processing_phi3_v.js":((e,t,r)=>{r.r(t),r.d(t,{Phi3VProcessor:()=>l});var n=r("./src/base/processing_utils.js"),s=r("./src/models/auto/image_processing_auto.js"),a=r("./src/tokenizers.js");r("./src/utils/image.js");const i="<|image|>",o=/<\|image_\d+\|>/g;class l extends n.Processor{static image_processor_class=s.AutoImageProcessor;static tokenizer_class=a.AutoTokenizer;async _call(p,d=null,{padding:c=!0,truncation:g=!0,num_crops:A=null}={}){Array.isArray(p)||(p=[p]);let m,B;if(d){B=await this.image_processor(d,{num_crops:A});const{num_img_tokens:f}=B,h=p.map((_,w)=>_.split(o).join(i.repeat(f[w])));m=this.tokenizer(h,{padding:c,truncation:g});const P=this.tokenizer.model.convert_tokens_to_ids([i])[0];m.input_ids.map_(_=>_==P?-_:_)}else m=this.tokenizer(p);return{...m,...B}}}}),
2844"./src/models/pixtral/image_processing_pixtral.js":((e,t,r)=>{r.r(t),r.d(t,{PixtralImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{get_resize_output_image_size(i,o){const{longest_edge:l}=o;if(l===void 0)throw new Error("size must contain 'longest_edge'");const[u,p]=i.size,d=Math.max(u,p)/l;let c=u,g=p;d>1&&(c=Math.floor(u/d),g=Math.floor(p/d));const{patch_size:A,spatial_merge_size:m}=this.config;if(!m)throw new Error("config must contain 'spatial_merge_size'");const B=A*m,f=Math.floor((c-1)/B)+1,h=Math.floor((g-1)/B)+1;return[f*B,h*B]}}}),
2844"./src/models/pixtral/processing_pixtral.js":((e,t,r)=>{r.r(t),r.d(t,{PixtralProcessor:()=>i});var n=r("./src/base/processing_utils.js"),s=r("./src/models/auto/image_processing_auto.js"),a=r("./src/tokenizers.js");class i extends n.Processor{static tokenizer_class=a.AutoTokenizer;static image_processor_class=s.AutoImageProcessor;static uses_processor_config=!0;async _call(l,u=null,p={}){const d=await this.image_processor(l,p);if(u){const[g,A]=d.pixel_values.dims.slice(-2),{image_token:m,image_break_token:B,image_end_token:f,patch_size:h,spatial_merge_size:P}=this.config,_=h*P,w=Math.floor(g/_),b=Math.floor(A/_);u=structuredClone(u),Array.isArray(u)||(u=[u]);for(let v=0;v<u.length;++v){const y=m.repeat(b),$=y+B,k=y+f,W=$.repeat(w-1)+k;u[v]=u[v].replace(m,W)}}const c=u?this.tokenizer(u,p):{};return{...d,...c}}}}),
2844"./src/models/processors.js":((e,t,r)=>{r.r(t),r.d(t,{Florence2Processor:()=>n.Florence2Processor,Gemma3nProcessor:()=>s.Gemma3nProcessor,GroundingDinoProcessor:()=>a.GroundingDinoProcessor,Idefics3Processor:()=>i.Idefics3Processor,JinaCLIPProcessor:()=>l.JinaCLIPProcessor,LlavaProcessor:()=>u.LlavaProcessor,MgpstrProcessor:()=>p.MgpstrProcessor,MoonshineProcessor:()=>d.MoonshineProcessor,OwlViTProcessor:()=>c.OwlViTProcessor,PaliGemmaProcessor:()=>g.PaliGemmaProcessor,Phi3VProcessor:()=>A.Phi3VProcessor,PixtralProcessor:()=>m.PixtralProcessor,PyAnnoteProcessor:()=>B.PyAnnoteProcessor,Qwen2VLProcessor:()=>f.Qwen2VLProcessor,Sam2Processor:()=>P.Sam2Processor,Sam2VideoProcessor:()=>P.Sam2VideoProcessor,SamProcessor:()=>h.SamProcessor,SmolVLMProcessor:()=>_.SmolVLMProcessor,SpeechT5Processor:()=>w.SpeechT5Processor,UltravoxProcessor:()=>b.UltravoxProcessor,VLChatProcessor:()=>o.VLChatProcessor,VoxtralProcessor:()=>v.VoxtralProcessor,Wav2Vec2Processor:()=>y.Wav2Vec2Processor,Wav2Vec2ProcessorWithLM:()=>$.Wav2Vec2ProcessorWithLM,WhisperProcessor:()=>k.WhisperProcessor});var n=r("./src/models/florence2/processing_florence2.js"),s=r("./src/models/gemma3n/processing_gemma3n.js"),a=r("./src/models/grounding_dino/processing_grounding_dino.js"),i=r("./src/models/idefics3/processing_idefics3.js"),o=r("./src/models/janus/processing_janus.js"),l=r("./src/models/jina_clip/processing_jina_clip.js"),u=r("./src/models/llava/processing_llava.js"),p=r("./src/models/mgp_str/processing_mgp_str.js"),d=r("./src/models/moonshine/processing_moonshine.js"),c=r("./src/models/owlvit/processing_owlvit.js"),g=r("./src/models/paligemma/processing_paligemma.js"),A=r("./src/models/phi3_v/processing_phi3_v.js"),m=r("./src/models/pixtral/processing_pixtral.js"),B=r("./src/models/pyannote/processing_pyannote.js"),f=r("./src/models/qwen2_vl/processing_qwen2_vl.js"),h=r("./src/models/sam/processing_sam.js"),P=r("./src/models/sam2/processing_sam2.js"),_=r("./src/models/smolvlm/processing_smolvlm.js"),w=r("./src/models/speecht5/processing_speecht5.js"),b=r("./src/models/ultravox/processing_ultravox.js"),v=r("./src/models/voxtral/processing_voxtral.js"),y=r("./src/models/wav2vec2/processing_wav2vec2.js"),$=r("./src/models/wav2vec2_with_lm/processing_wav2vec2_with_lm.js"),k=r("./src/models/whisper/processing_whisper.js")}),
2844"./src/models/pvt/image_processing_pvt.js":((e,t,r)=>{r.r(t),r.d(t,{PvtImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{}}),
vendor: 949 bytes, line 2844
2844"./src/models/pyannote/feature_extraction_pyannote.js":((e,t,r)=>{r.r(t),r.d(t,{PyAnnoteFeatureExtractor:()=>i});var n=r("./src/base/feature_extraction_utils.js"),s=r("./src/utils/tensor.js"),a=r("./src/utils/maths.js");class i extends n.FeatureExtractor{async _call(l){(0,n.validate_audio_inputs)(l,"PyAnnoteFeatureExtractor"),l instanceof Float64Array&&(l=new Float32Array(l));const u=[1,1,l.length];return{input_values:new s.Tensor("float32",l,u)}}samples_to_frames(l){return(l-this.config.offset)/this.config.step}post_process_speaker_diarization(l,u){const p=u/this.samples_to_frames(u)/this.config.sampling_rate,d=[];for(const c of l.tolist()){const g=[];let A=-1;for(let m=0;m<c.length;++m){const B=(0,a.softmax)(c[m]),[f,h]=(0,a.max)(B),[P,_]=[m,m+1];h!==A?(A=h,g.push({id:h,start:P,end:_,score:f})):(g.at(-1).end=_,g.at(-1).score+=f)}d.push(g.map(({id:m,start:B,end:f,score:h})=>({id:m,start:B*p,end:f*p,confidence:h/(f-B)})))}return d}}}),
2844"./src/models/pyannote/processing_pyannote.js":((e,t,r)=>{r.r(t),r.d(t,{PyAnnoteProcessor:()=>a});var n=r("./src/base/processing_utils.js"),s=r("./src/models/pyannote/feature_extraction_pyannote.js");class a extends n.Processor{static feature_extractor_class=s.PyAnnoteFeatureExtractor;async _call(o){return await this.feature_extractor(o)}post_process_speaker_diarization(...o){return this.feature_extractor.post_process_speaker_diarization(...o)}get sampling_rate(){return this.feature_extractor.config.sampling_rate}}}),
2844"./src/models/qwen2_vl/image_processing_qwen2_vl.js":((e,t,r)=>{r.r(t),r.d(t,{Qwen2VLImageProcessor:()=>a});var n=r("./src/base/image_processors_utils.js"),s=r("./src/utils/tensor.js");class a extends n.ImageProcessor{async _call(o,...l){const{pixel_values:u,original_sizes:p,reshaped_input_sizes:d}=await super._call(o,...l);let c=u;const{temporal_patch_size:g,merge_size:A,patch_size:m}=this.config;c.dims[0]===1&&(c=(0,s.cat)(Array.from({length:g},()=>c),0));const B=c.dims[0]/g,f=c.dims[1],h=Math.floor(c.dims[2]/m),P=Math.floor(c.dims[3]/m),_=c.view(B,g,f,Math.floor(h/A),A,m,Math.floor(P/A),A,m).permute(0,3,6,4,7,2,1,5,8).view(B*h*P,f*g*m*m),w=new s.Tensor("int64",[B,h,P],[1,3]);return{pixel_values:_,image_grid_thw:w,original_sizes:p,reshaped_input_sizes:d}}}}),
2844"./src/models/qwen2_vl/processing_qwen2_vl.js":((e,t,r)=>{r.r(t),r.d(t,{Qwen2VLProcessor:()=>i});var n=r("./src/base/processing_utils.js"),s=r("./src/models/auto/image_processing_auto.js"),a=r("./src/tokenizers.js");r("./src/utils/image.js");class i extends n.Processor{static image_processor_class=s.AutoImageProcessor;static tokenizer_class=a.AutoTokenizer;async _call(l,u=null,...p){Array.isArray(l)||(l=[l]);let d,c;if(u&&(d=await this.image_processor(u),c=d.image_grid_thw),c){let A=this.image_processor.config.merge_size**2,m=0;const B=c.tolist();l=l.map(f=>{for(;f.includes("<|image_pad|>");){const h=Number(B[m++].reduce((P,_)=>P*_,1n));f=f.replace("<|image_pad|>","<|placeholder|>".repeat(Math.floor(h/A)))}return f.replaceAll("<|placeholder|>","<|image_pad|>")})}return{...this.tokenizer(l),...d}}}}),
2844"./src/models/rt_detr/image_processing_rt_detr.js":((e,t,r)=>{r.r(t),r.d(t,{RTDetrImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{post_process_object_detection(...i){return(0,n.post_process_object_detection)(...i)}}}),
2844"./src/models/sam/image_processing_sam.js":((e,t,r)=>{r.r(t),r.d(t,{SamImageProcessor:()=>i});var n=r("./src/base/image_processors_utils.js"),s=r("./src/utils/core.js"),a=r("./src/utils/tensor.js");class i extends n.ImageProcessor{reshape_input_points(l,u,p,d=!1){l=structuredClone(l);let c=(0,s.calculateDimensions)(l);if(c.length===3)d||(c=[1,...c]),l=[l];else if(c.length!==4)throw Error("The input_points must be a 4D tensor of shape `batch_size`, `point_batch_size`, `nb_points_per_image`, `2`.");for(let g=0;g<l.length;++g){const[A,m]=u[g],[B,f]=p[g],h=[f/m,B/A];for(let P=0;P<l[g].length;++P)for(let _=0;_<l[g][P].length;++_)for(let w=0;w<l[g][P][_].length;++w)l[g][P][_][w]*=h[w%2]}return new a.Tensor("float32",Float32Array.from(l.flat(1/0)),c)}add_input_labels(l,u){let p=(0,s.calculateDimensions)(l);if(p.length===2)p=[1,...p],l=[l];else if(p.length!==3)throw Error("The input_points must be a 4D tensor of shape `batch_size`, `point_batch_size`, `nb_points_per_image`, `2`.");if(p.some((d,c)=>d!==u.dims[c]))throw Error(`The first ${p.length} dimensions of 'input_points' and 'input_labels' must be the same.`);return new a.Tensor("int64",l.flat(1/0).map(BigInt),p)}async _call(l,{input_points:u=null,input_labels:p=null,input_boxes:d=null}={}){const c=await super._call(l);if(u&&(c.input_points=this.reshape_input_points(u,c.original_sizes,c.reshaped_input_sizes)),p){if(!c.input_points)throw Error("`input_points` must be provided if `input_labels` are provided.");c.input_labels=this.add_input_labels(p,c.input_points)}return d&&(c.input_boxes=this.reshape_input_points(d,c.original_sizes,c.reshaped_input_sizes,!0)),c}async post_process_masks(l,u,p,{mask_threshold:d=0,binarize:c=!0,pad_size:g=null}={}){const A=[];g=g??this.pad_size??this.size;const m=[g.height,g.width];for(let B=0;B<u.length;++B){const f=u[B],h=p[B];let P=await(0,a.interpolate_4d)(l[B],{mode:"bilinear",size:m});if(P=P.slice(null,null,[0,h[0]],[0,h[1]]),P=await(0,a.interpolate_4d)(P,{mode:"bilinear",size:f}),c){const _=P.data,w=new Uint8Array(_.length);for(let b=0;b<_.length;++b)_[b]>d&&(w[b]=1);P=new a.Tensor("bool",w,P.dims)}A.push(P)}return A}generate_crop_boxes(l,u,{crop_n_layers:p=0,overlap_ratio:d=512/1500,points_per_crop:c=32,crop_n_points_downscale_factor:g=1}={}){}}}),
2844"./src/models/sam/processing_sam.js":((e,t,r)=>{r.r(t),r.d(t,{SamProcessor:()=>a});var n=r("./src/base/processing_utils.js"),s=r("./src/models/auto/image_processing_auto.js");class a extends n.Processor{static image_processor_class=s.AutoImageProcessor;async _call(...o){return await this.image_processor(...o)}post_process_masks(...o){return this.image_processor.post_process_masks(...o)}reshape_input_points(...o){return this.image_processor.reshape_input_points(...o)}}}),
2844"./src/models/sam2/image_processing_sam2.js":((e,t,r)=>{r.r(t),r.d(t,{Sam2ImageProcessor:()=>n.SamImageProcessor});var n=r("./src/models/sam/image_processing_sam.js")}),
2844"./src/models/sam2/processing_sam2.js":((e,t,r)=>{r.r(t),r.d(t,{Sam2Processor:()=>s,Sam2VideoProcessor:()=>a});var n=r("./src/models/sam/processing_sam.js");class s extends n.SamProcessor{}class a extends s{}}),
2844"./src/models/sam3/image_processing_sam3.js":((e,t,r)=>{r.r(t),r.d(t,{Sam3ImageProcessor:()=>n.Sam2ImageProcessor});var n=r("./src/models/sam2/image_processing_sam2.js")}),
2844"./src/models/seamless_m4t/feature_extraction_seamless_m4t.js":((e,t,r)=>{r.r(t),r.d(t,{SeamlessM4TFeatureExtractor:()=>i});var n=r("./src/base/feature_extraction_utils.js"),s=r("./src/utils/tensor.js"),a=r("./src/utils/audio.js");class i extends n.FeatureExtractor{constructor(l){super(l);const u=this.config.sampling_rate,p=(0,a.mel_filter_bank)(257,this.config.num_mel_bins,20,Math.floor(u/2),u,null,"kaldi",!0);this.mel_filters=p,this.window=(0,a.window_function)(400,"povey",{periodic:!1})}async _extract_fbank_features(l,u){return l=l.map(p=>p*32768),(0,a.spectrogram)(l,this.window,400,160,{fft_length:512,power:2,center:!1,preemphasis:.97,mel_filters:this.mel_filters,log_mel:"log",mel_floor:1192092955078125e-22,remove_dc_offset:!0,max_num_frames:u,transpose:!0})}async _call(l,{padding:u=!0,pad_to_multiple_of:p=2,do_normalize_per_mel_bins:d=!0,return_attention_mask:c=!0}={}){(0,n.validate_audio_inputs)(l,"SeamlessM4TFeatureExtractor");let g=await this._extract_fbank_features(l,this.config.max_length);if(d){const[w,b]=g.dims,v=g.data;for(let y=0;y<b;++y){let $=0;for(let F=0;F<w;++F)$+=v[F*b+y];const k=$/w;let W=0;for(let F=0;F<w;++F)W+=(v[F*b+y]-k)**2;W/=w-1;const j=Math.sqrt(W+1e-7);for(let F=0;F<w;++F){const R=F*b+y;v[R]=(v[R]-k)/j}}}let A;if(u){const[w,b]=g.dims,v=g.data,y=w%p;if(y>0){const $=new Float32Array(b*(w+y));$.set(v),$.fill(this.config.padding_value,v.length);const k=w+y;g=new s.Tensor(g.type,$,[k,b]),c&&(A=new s.Tensor("int64",new BigInt64Array(k),[1,k]),A.data.fill(1n,0,w))}}const[m,B]=g.dims,f=this.config.stride;if(m%f!==0)throw new Error(`The number of frames (${m}) must be a multiple of the stride (${f}).`);const P=g.view(1,Math.floor(m/f),B*f),_={input_features:P};if(c){const w=P.dims[1],b=new BigInt64Array(w);if(A){const v=A.data;for(let y=1,$=0;y<m;y+=f,++$)b[$]=v[y]}else b.fill(1n);_.attention_mask=new s.Tensor("int64",b,[1,w])}return _}}}),
2844"./src/models/segformer/image_processing_segformer.js":((e,t,r)=>{r.r(t),r.d(t,{SegformerFeatureExtractor:()=>a,SegformerImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{post_process_semantic_segmentation(...o){return(0,n.post_process_semantic_segmentation)(...o)}}class a extends s{}}),
2844"./src/models/siglip/image_processing_siglip.js":((e,t,r)=>{r.r(t),r.d(t,{SiglipImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{}}),
2844"./src/models/smolvlm/image_processing_smolvlm.js":((e,t,r)=>{r.r(t),r.d(t,{SmolVLMImageProcessor:()=>n.Idefics3ImageProcessor});var n=r("./src/models/idefics3/image_processing_idefics3.js")}),
2844"./src/models/smolvlm/processing_smolvlm.js":((e,t,r)=>{r.r(t),r.d(t,{SmolVLMProcessor:()=>n.Idefics3Processor});var n=r("./src/models/idefics3/processing_idefics3.js")}),
2844"./src/models/snac/feature_extraction_snac.js":((e,t,r)=>{r.r(t),r.d(t,{SnacFeatureExtractor:()=>s});var n=r("./src/models/dac/feature_extraction_dac.js");class s extends n.DacFeatureExtractor{}}),
2844"./src/models/speecht5/feature_extraction_speecht5.js":((e,t,r)=>{r.r(t),r.d(t,{SpeechT5FeatureExtractor:()=>s});var n=r("./src/base/feature_extraction_utils.js");class s extends n.FeatureExtractor{}}),
2844"./src/models/speecht5/processing_speecht5.js":((e,t,r)=>{r.r(t),r.d(t,{SpeechT5Processor:()=>i});var n=r("./src/base/processing_utils.js"),s=r("./src/tokenizers.js"),a=r("./src/models/auto/feature_extraction_auto.js");class i extends n.Processor{static tokenizer_class=s.AutoTokenizer;static feature_extractor_class=a.AutoFeatureExtractor;async _call(l){return await this.feature_extractor(l)}}}),
2844"./src/models/swin2sr/image_processing_swin2sr.js":((e,t,r)=>{r.r(t),r.d(t,{Swin2SRImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{pad_image(i,o,l,u={}){const[p,d,c]=o;return super.pad_image(i,o,{width:d+(l-d%l)%l,height:p+(l-p%l)%l},{mode:"symmetric",center:!1,constant_values:-1,...u})}}}),
vendor: 937 bytes, line 2844
2844"./src/models/ultravox/processing_ultravox.js":((e,t,r)=>{r.r(t),r.d(t,{UltravoxProcessor:()=>i});var n=r("./src/models/auto/feature_extraction_auto.js"),s=r("./src/tokenizers.js"),a=r("./src/base/processing_utils.js");class i extends a.Processor{static tokenizer_class=s.AutoTokenizer;static feature_extractor_class=n.AutoFeatureExtractor;static uses_processor_config=!0;async _call(l,u=null,p={}){if(Array.isArray(l))throw new Error("Batched inputs are not supported yet.");let d={};if(u){const g=u.length,{input_features:A}=await this.feature_extractor(u,{...p,max_length:g}),m=Math.round(g/this.config.encoder_ds_factor+1e-4),B=1+Math.ceil(m/this.config.stack_factor);d.audio_token_len=[B],d.audio_values=A;const f=this.config.audio_placeholder;if(!l.includes(f))throw new Error(`The input text does not contain the image token ${f}.`);l=l.replaceAll(f,f.repeat(B))}return{...this.tokenizer(l,{add_special_tokens:!1,...p}),...d}}}}),
2844"./src/models/vit/image_processing_vit.js":((e,t,r)=>{r.r(t),r.d(t,{ViTFeatureExtractor:()=>a,ViTImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{}class a extends s{}}),
2844"./src/models/vitmatte/image_processing_vitmatte.js":((e,t,r)=>{r.r(t),r.d(t,{VitMatteImageProcessor:()=>a});var n=r("./src/base/image_processors_utils.js"),s=r("./src/utils/tensor.js");class a extends n.ImageProcessor{async _call(o,l){Array.isArray(o)||(o=[o]),Array.isArray(l)||(l=[l]);const u=await Promise.all(o.map(c=>this.preprocess(c))),p=await Promise.all(l.map(c=>this.preprocess(c,{do_normalize:!1,do_convert_rgb:!1,do_convert_grayscale:!0})));return{pixel_values:(0,s.stack)(u.map((c,g)=>(0,s.cat)([c.pixel_values,p[g].pixel_values],0)),0),original_sizes:u.map(c=>c.original_size),reshaped_input_sizes:u.map(c=>c.reshaped_input_size)}}}}),
2844"./src/models/vitpose/image_processing_vitpose.js":((e,t,r)=>{r.r(t),r.d(t,{VitPoseImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{post_process_pose_estimation(i,o,{threshold:l=null}={}){const u=i.tolist(),[p,d,c,g]=i.dims,A=[];for(let m=0;m<p;++m){const B=u[m],f=o[m],h=[];for(let P=0;P<f.length;++P){const _=f[P],w=[],b=[],v=[],y=_.at(-2)/g,$=_.at(-1)/c;for(let k=0;k<B.length;++k){let[W,j]=[0,0],F=0,R=-1/0;const L=B[k];for(let ne=0;ne<L.length;++ne){const re=L[ne];for(let ce=0;ce<re.length;++ce){const ge=re[ce];F+=ge,R=Math.max(R,ge),W+=(ce+.5)*ge,j+=ne*ge}}if(l!=null&&R<l)continue;const Q=[y*W/F,$*j/F];w.push(Q),v.push(k),b.push(R)}h.push({bbox:_,scores:b,labels:v,keypoints:w})}A.push(h)}return A}}}),
2844"./src/models/voxtral/processing_voxtral.js":((e,t,r)=>{r.r(t),r.d(t,{VoxtralProcessor:()=>d});var n=r("./src/models/auto/feature_extraction_auto.js"),s=r("./src/tokenizers.js"),a=r("./src/base/processing_utils.js"),i=r("./src/utils/tensor.js");const o="[AUDIO]",l="[BEGIN_AUDIO]",u=375;function p(c,g){const A=[];for(let m=0;m<c.length;m+=g)A.push(c.subarray(m,Math.min(m+g,c.length)));return A}class d extends a.Processor{static tokenizer_class=s.AutoTokenizer;static feature_extractor_class=n.AutoFeatureExtractor;static uses_processor_config=!1;async _call(g,A=null,m={}){if(Array.isArray(g))throw new Error("Batched inputs are not supported yet.");const B={};if(A){if(!g.includes(o))throw new Error(`The input text does not contain the audio token ${o}.`);Array.isArray(A)||(A=[A]);const h=g.split(o),P=h.length-1;if(P!==A.length)throw new Error(`The number of audio inputs (${A.length}) does not match the number of audio tokens in the text (${P}).`);const _=this.feature_extractor.config.n_samples,w=A.map(k=>p(k,_)),b=w.map(k=>k.length),v=w.flat(),y=(await Promise.all(v.map(k=>this.feature_extractor(k,m)))).map(k=>k.input_features);B.audio_values=y.length>1?(0,i.cat)(y,0):y[0];let $=h[0];for(let k=0;k<b.length;++k){$+=l;for(let W=0;W<b[k];++W)$+=o.repeat(u);$+=h[k+1]}g=$}return{...this.tokenizer(g,{add_special_tokens:!1,...m}),...B}}}}),
2844"./src/models/wav2vec2/feature_extraction_wav2vec2.js":((e,t,r)=>{r.r(t),r.d(t,{Wav2Vec2FeatureExtractor:()=>a});var n=r("./src/base/feature_extraction_utils.js"),s=r("./src/utils/tensor.js");class a extends n.FeatureExtractor{_zero_mean_unit_var_norm(o){const u=o.reduce((d,c)=>d+c,0)/o.length,p=o.reduce((d,c)=>d+(c-u)**2,0)/o.length;return o.map(d=>(d-u)/Math.sqrt(p+1e-7))}async _call(o){(0,n.validate_audio_inputs)(o,"Wav2Vec2FeatureExtractor"),o instanceof Float64Array&&(o=new Float32Array(o));let l=o;this.config.do_normalize&&(l=this._zero_mean_unit_var_norm(l));const u=[1,l.length];return{input_values:new s.Tensor("float32",l,u),attention_mask:new s.Tensor("int64",new BigInt64Array(l.length).fill(1n),u)}}}}),
2844"./src/models/wav2vec2/processing_wav2vec2.js":((e,t,r)=>{r.r(t),r.d(t,{Wav2Vec2Processor:()=>i});var n=r("./src/tokenizers.js"),s=r("./src/models/auto/feature_extraction_auto.js"),a=r("./src/base/processing_utils.js");class i extends a.Processor{static tokenizer_class=n.AutoTokenizer;static feature_extractor_class=s.AutoFeatureExtractor;async _call(l){return await this.feature_extractor(l)}}}),
2844"./src/models/wav2vec2_with_lm/processing_wav2vec2_with_lm.js":((e,t,r)=>{r.r(t),r.d(t,{Wav2Vec2ProcessorWithLM:()=>i});var n=r("./src/tokenizers.js"),s=r("./src/models/auto/feature_extraction_auto.js"),a=r("./src/base/processing_utils.js");class i extends a.Processor{static tokenizer_class=n.AutoTokenizer;static feature_extractor_class=s.AutoFeatureExtractor;async _call(l){return await this.feature_extractor(l)}}}),
2844"./src/models/wespeaker/feature_extraction_wespeaker.js":((e,t,r)=>{r.r(t),r.d(t,{WeSpeakerFeatureExtractor:()=>a});var n=r("./src/base/feature_extraction_utils.js");r("./src/utils/tensor.js");var s=r("./src/utils/audio.js");class a extends n.FeatureExtractor{constructor(o){super(o);const l=this.config.sampling_rate,u=(0,s.mel_filter_bank)(257,this.config.num_mel_bins,20,Math.floor(l/2),l,null,"kaldi",!0);this.mel_filters=u,this.window=(0,s.window_function)(400,"hamming",{periodic:!1}),this.min_num_frames=this.config.min_num_frames}async _extract_fbank_features(o){return o=o.map(l=>l*32768),(0,s.spectrogram)(o,this.window,400,160,{fft_length:512,power:2,center:!1,preemphasis:.97,mel_filters:this.mel_filters,log_mel:"log",mel_floor:1192092955078125e-22,remove_dc_offset:!0,transpose:!0,min_num_frames:this.min_num_frames})}async _call(o){(0,n.validate_audio_inputs)(o,"WeSpeakerFeatureExtractor");const l=(await this._extract_fbank_features(o)).unsqueeze_(0);if(this.config.fbank_centering_span===null){const u=l.mean(1).data,p=l.data,[d,c,g]=l.dims;for(let A=0;A<d;++A){const m=A*c*g,B=A*g;for(let f=0;f<c;++f){const h=m+f*g;for(let P=0;P<g;++P)p[h+P]-=u[B+P]}}}return{input_features:l}}}}),
2844"./src/models/whisper/common_whisper.js":((e,t,r)=>{r.r(t),r.d(t,{WHISPER_LANGUAGE_MAPPING:()=>s,WHISPER_TO_LANGUAGE_CODE_MAPPING:()=>a,whisper_language_to_code:()=>i});const n=[["en","english"],["zh","chinese"],["de","german"],["es","spanish"],["ru","russian"],["ko","korean"],["fr","french"],["ja","japanese"],["pt","portuguese"],["tr","turkish"],["pl","polish"],["ca","catalan"],["nl","dutch"],["ar","arabic"],["sv","swedish"],["it","italian"],["id","indonesian"],["hi","hindi"],["fi","finnish"],["vi","vietnamese"],["he","hebrew"],["uk","ukrainian"],["el","greek"],["ms","malay"],["cs","czech"],["ro","romanian"],["da","danish"],["hu","hungarian"],["ta","tamil"],["no","norwegian"],["th","thai"],["ur","urdu"],["hr","croatian"],["bg","bulgarian"],["lt","lithuanian"],["la","latin"],["mi","maori"],["ml","malayalam"],["cy","welsh"],["sk","slovak"],["te","telugu"],["fa","persian"],["lv","latvian"],["bn","bengali"],["sr","serbian"],["az","azerbaijani"],["sl","slovenian"],["kn","kannada"],["et","estonian"],["mk","macedonian"],["br","breton"],["eu","basque"],["is","icelandic"],["hy","armenian"],["ne","nepali"],["mn","mongolian"],["bs","bosnian"],["kk","kazakh"],["sq","albanian"],["sw","swahili"],["gl","galician"],["mr","marathi"],["pa","punjabi"],["si","sinhala"],["km","khmer"],["sn","shona"],["yo","yoruba"],["so","somali"],["af","afrikaans"],["oc","occitan"],["ka","georgian"],["be","belarusian"],["tg","tajik"],["sd","sindhi"],["gu","gujarati"],["am","amharic"],["yi","yiddish"],["lo","lao"],["uz","uzbek"],["fo","faroese"],["ht","haitian creole"],["ps","pashto"],["tk","turkmen"],["nn","nynorsk"],["mt","maltese"],["sa","sanskrit"],["lb","luxembourgish"],["my","myanmar"],["bo","tibetan"],["tl","tagalog"],["mg","malagasy"],["as","assamese"],["tt","tatar"],["haw","hawaiian"],["ln","lingala"],["ha","hausa"],["ba","bashkir"],["jw","javanese"],["su","sundanese"]],s=new Map(n),a=new Map([...n.map(([o,l])=>[l,o]),["burmese","my"],["valencian","ca"],["flemish","nl"],["haitian","ht"],["letzeburgesch","lb"],["pushto","ps"],["panjabi","pa"],["moldavian","ro"],["moldovan","ro"],["sinhalese","si"],["castilian","es"]]);function i(o){o=o.toLowerCase();let l=a.get(o);if(l===void 0){const u=o.match(/^<\|([a-z]{2})\|>$/);if(u&&(o=u[1]),s.has(o))l=o;else{const d=o.length===2?s.keys():s.values();throw new Error(`Language "${o}" is not supported. Must be one of: ${JSON.stringify(Array.from(d))}`)}}return l}}),
2844"./src/models/whisper/feature_extraction_whisper.js":((e,t,r)=>{r.r(t),r.d(t,{WhisperFeatureExtractor:()=>i});var n=r("./src/base/feature_extraction_utils.js");r("./src/utils/tensor.js");var s=r("./src/utils/audio.js"),a=r("./src/utils/maths.js");class i extends n.FeatureExtractor{constructor(l){super(l),this.config.mel_filters??=(0,s.mel_filter_bank)(Math.floor(1+this.config.n_fft/2),this.config.feature_size,0,8e3,this.config.sampling_rate,"slaney","slaney"),this.window=(0,s.window_function)(this.config.n_fft,"hann")}async _extract_fbank_features(l){const u=await(0,s.spectrogram)(l,this.window,this.config.n_fft,this.config.hop_length,{power:2,mel_filters:this.config.mel_filters,log_mel:"log10",max_num_frames:Math.min(Math.floor(l.length/this.config.hop_length),this.config.nb_max_frames)}),p=u.data,d=(0,a.max)(p)[0];for(let c=0;c<p.length;++c)p[c]=(Math.max(p[c],d-8)+4)/4;return u}async _call(l,{max_length:u=null}={}){(0,n.validate_audio_inputs)(l,"WhisperFeatureExtractor");let p;const d=u??this.config.n_samples;return l.length>d?(l.length>this.config.n_samples&&console.warn("Attempting to extract features for audio longer than 30 seconds. If using a pipeline to extract transcript from a long audio clip, remember to specify `chunk_length_s` and/or `stride_length_s`."),p=l.slice(0,d)):(p=new Float32Array(d),p.set(l)),{input_features:(await this._extract_fbank_features(p)).unsqueeze_(0)}}}}),
2844"./src/models/whisper/generation_whisper.js":((e,t,r)=>{r.r(t),r.d(t,{WhisperGenerationConfig:()=>s});var n=r("./src/generation/configuration_utils.js");class s extends n.GenerationConfig{return_timestamps=null;return_token_timestamps=null;num_frames=null;alignment_heads=null;task=null;language=null;no_timestamps_token_id=null;prompt_ids=null;is_multilingual=null;lang_to_id=null;task_to_id=null;max_initial_timestamp_index=1}}),
2844"./src/models/whisper/processing_whisper.js":((e,t,r)=>{r.r(t),r.d(t,{WhisperProcessor:()=>i});var n=r("./src/models/auto/feature_extraction_auto.js"),s=r("./src/tokenizers.js"),a=r("./src/base/processing_utils.js");class i extends a.Processor{static tokenizer_class=s.AutoTokenizer;static feature_extractor_class=n.AutoFeatureExtractor;async _call(l){return await this.feature_extractor(l)}}}),
2844"./src/models/yolos/image_processing_yolos.js":((e,t,r)=>{r.r(t),r.d(t,{YolosFeatureExtractor:()=>a,YolosImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{post_process_object_detection(...o){return(0,n.post_process_object_detection)(...o)}}class a extends s{}}),
2844"./src/ops/registry.js":((e,t,r)=>{r.r(t),r.d(t,{TensorOpRegistry:()=>i});var n=r("./src/backends/onnx.js"),s=r("./src/utils/tensor.js");const a=async(o,l,u)=>{const p=await(0,n.createInferenceSession)(new Uint8Array(o),l);return(async d=>{const c=(0,n.isONNXProxy)(),g=Object.fromEntries(Object.entries(d).map(([m,B])=>[m,(c?B.clone():B).ort_tensor])),A=await(0,n.runInferenceSession)(p,g);return Array.isArray(u)?u.map(m=>new s.Tensor(A[m])):new s.Tensor(A[u])})};class i{static session_options={};static get nearest_interpolate_4d(){return this._nearest_interpolate_4d||(this._nearest_interpolate_4d=a([8,10,18,0,58,129,1,10,41,10,1,120,10,0,10,0,10,1,115,18,1,121,34,6,82,101,115,105,122,101,42,18,10,4,109,111,100,101,34,7,110,101,97,114,101,115,116,160,1,3,18,1,114,90,31,10,1,120,18,26,10,24,8,1,18,20,10,3,18,1,98,10,3,18,1,99,10,3,18,1,104,10,3,18,1,119,90,15,10,1,115,18,10,10,8,8,7,18,4,10,2,8,4,98,31,10,1,121,18,26,10,24,8,1,18,20,10,3,18,1,98,10,3,18,1,99,10,3,18,1,104,10,3,18,1,119,66,2,16,21],this.session_options,"y")),this._nearest_interpolate_4d}static get bilinear_interpolate_4d(){return this._bilinear_interpolate_4d||(this._bilinear_interpolate_4d=a([8,9,18,0,58,128,1,10,40,10,1,120,10,0,10,0,10,1,115,18,1,121,34,6,82,101,115,105,122,101,42,17,10,4,109,111,100,101,34,6,108,105,110,101,97,114,160,1,3,18,1,114,90,31,10,1,120,18,26,10,24,8,1,18,20,10,3,18,1,98,10,3,18,1,99,10,3,18,1,104,10,3,18,1,119,90,15,10,1,115,18,10,10,8,8,7,18,4,10,2,8,4,98,31,10,1,121,18,26,10,24,8,1,18,20,10,3,18,1,98,10,3,18,1,99,10,3,18,1,104,10,3,18,1,119,66,2,16,20],this.session_options,"y")),this._bilinear_interpolate_4d}static get bicubic_interpolate_4d(){return this._bicubic_interpolate_4d||(this._bicubic_interpolate_4d=a([8,9,18,0,58,127,10,39,10,1,120,10,0,10,0,10,1,115,18,1,121,34,6,82,101,115,105,122,101,42,16,10,4,109,111,100,101,34,5,99,117,98,105,99,160,1,3,18,1,114,90,31,10,1,120,18,26,10,24,8,1,18,20,10,3,18,1,98,10,3,18,1,99,10,3,18,1,104,10,3,18,1,119,90,15,10,1,115,18,10,10,8,8,7,18,4,10,2,8,4,98,31,10,1,121,18,26,10,24,8,1,18,20,10,3,18,1,98,10,3,18,1,99,10,3,18,1,104,10,3,18,1,119,66,2,16,20],this.session_options,"y")),this._bicubic_interpolate_4d}static get matmul(){return this._matmul||(this._matmul=a([8,9,18,0,58,55,10,17,10,1,97,10,1,98,18,1,99,34,6,77,97,116,77,117,108,18,1,114,90,9,10,1,97,18,4,10,2,8,1,90,9,10,1,98,18,4,10,2,8,1,98,9,10,1,99,18,4,10,2,8,1,66,2,16,20],this.session_options,"c")),this._matmul}static get stft(){return this._stft||(this._stft=a([8,7,18,0,58,148,1,10,38,10,1,115,10,1,106,10,1,119,10,1,108,18,1,111,34,4,83,84,70,84,42,15,10,8,111,110,101,115,105,100,101,100,24,1,160,1,2,18,1,115,90,26,10,1,115,18,21,10,19,8,1,18,15,10,3,18,1,98,10,3,18,1,115,10,3,18,1,99,90,11,10,1,106,18,6,10,4,8,7,18,0,90,16,10,1,119,18,11,10,9,8,1,18,5,10,3,18,1,119,90,11,10,1,108,18,6,10,4,8,7,18,0,98,31,10,1,111,18,26,10,24,8,1,18,20,10,3,18,1,98,10,3,18,1,102,10,3,18,1,100,10,3,18,1,99,66,2,16,17],this.session_options,"o")),this._stft}static get rfft(){return this._rfft||(this._rfft=a([8,9,18,0,58,97,10,33,10,1,120,10,0,10,1,97,18,1,121,34,3,68,70,84,42,15,10,8,111,110,101,115,105,100,101,100,24,1,160,1,2,18,1,100,90,21,10,1,120,18,16,10,14,8,1,18,10,10,3,18,1,115,10,3,18,1,99,90,11,10,1,97,18,6,10,4,8,7,18,0,98,21,10,1,121,18,16,10,14,8,1,18,10,10,3,18,1,115,10,3,18,1,99,66,2,16,20],this.session_options,"y")),this._rfft}static get top_k(){return this._top_k||(this._top_k=a([8,10,18,0,58,73,10,18,10,1,120,10,1,107,18,1,118,18,1,105,34,4,84,111,112,75,18,1,116,90,9,10,1,120,18,4,10,2,8,1,90,15,10,1,107,18,10,10,8,8,7,18,4,10,2,8,1,98,9,10,1,118,18,4,10,2,8,1,98,9,10,1,105,18,4,10,2,8,7,66,2,16,21],this.session_options,["v","i"])),this._top_k}static get slice(){return this._slice||(this._slice=a([8,7,18,0,58,96,10,25,10,1,120,10,1,115,10,1,101,10,1,97,10,1,116,18,1,121,34,5,83,108,105,99,101,18,1,114,90,9,10,1,120,18,4,10,2,8,1,90,9,10,1,115,18,4,10,2,8,7,90,9,10,1,101,18,4,10,2,8,7,90,9,10,1,97,18,4,10,2,8,7,90,9,10,1,116,18,4,10,2,8,7,98,9,10,1,121,18,4,10,2,8,1,66,2,16,13],this.session_options,"y")),this._slice}}}),
2844"./src/pipelines.js":((e,t,r)=>{r.r(t),r.d(t,{AudioClassificationPipeline:()=>j,AutomaticSpeechRecognitionPipeline:()=>R,BackgroundRemovalPipeline:()=>re,DepthEstimationPipeline:()=>oe,DocumentQuestionAnsweringPipeline:()=>V,FeatureExtractionPipeline:()=>k,FillMaskPipeline:()=>P,ImageClassificationPipeline:()=>Q,ImageFeatureExtractionPipeline:()=>W,ImageSegmentationPipeline:()=>ne,ImageToImagePipeline:()=>N,ImageToTextPipeline:()=>L,ObjectDetectionPipeline:()=>ge,Pipeline:()=>m,QuestionAnsweringPipeline:()=>h,SummarizationPipeline:()=>w,Text2TextGenerationPipeline:()=>_,TextClassificationPipeline:()=>B,TextGenerationPipeline:()=>y,TextToAudioPipeline:()=>U,TokenClassificationPipeline:()=>f,TranslationPipeline:()=>b,ZeroShotAudioClassificationPipeline:()=>F,ZeroShotClassificationPipeline:()=>$,ZeroShotImageClassificationPipeline:()=>ce,ZeroShotObjectDetectionPipeline:()=>q,pipeline:()=>Ie});var n=r("./src/tokenizers.js"),s=r("./src/models.js"),a=r("./src/models/auto/processing_auto.js");r("./src/base/processing_utils.js");var i=r("./src/utils/generic.js"),o=r("./src/utils/core.js"),l=r("./src/utils/maths.js"),u=r("./src/utils/audio.js"),p=r("./src/utils/tensor.js"),d=r("./src/utils/image.js");async function c(Me){return Array.isArray(Me)||(Me=[Me]),await Promise.all(Me.map(se=>d.RawImage.read(se)))}async function g(Me,se){return Array.isArray(Me)||(Me=[Me]),await Promise.all(Me.map(H=>typeof H=="string"||H instanceof URL?(0,u.read_audio)(H,se):H instanceof Float64Array?new Float32Array(H):H))}function A(Me,se){se&&(Me=Me.map(Se=>Se|0));const[H,we,be,Ce]=Me;return{xmin:H,ymin:we,xmax:be,ymax:Ce}}class m extends i.Callable{constructor({task:se,model:H,tokenizer:we=null,processor:be=null}){super(),this.task=se,this.model=H,this.tokenizer=we,this.processor=be}async dispose(){await this.model.dispose()}}class B extends m{constructor(se){super(se)}async _call(se,{top_k:H=1}={}){const we=this.tokenizer(se,{padding:!0,truncation:!0}),be=await this.model(we),Ce=this.model.config.problem_type==="multi_label_classification"?ve=>ve.sigmoid():ve=>new p.Tensor("float32",(0,l.softmax)(ve.data),ve.dims),Se=this.model.config.id2label,ze=[];for(const ve of be.logits){const Ve=Ce(ve),Be=await(0,p.topk)(Ve,H),ke=Be[0].tolist(),Ue=Be[1].tolist().map((ht,He)=>({label:Se?Se[ht]:`LABEL_${ht}`,score:ke[He]}));H===1?ze.push(...Ue):ze.push(Ue)}return Array.isArray(se)||H===1?ze:ze[0]}}class f extends m{constructor(se){super(se)}async _call(se,{ignore_labels:H=["O"]}={}){const we=Array.isArray(se),be=this.tokenizer(we?se:[se],{padding:!0,truncation:!0}),Se=(await this.model(be)).logits,ze=this.model.config.id2label,ve=[];for(let Ve=0;Ve<Se.dims[0];++Ve){const Be=be.input_ids[Ve],ke=Se[Ve],rt=[];for(let Ue=0;Ue<ke.dims[0];++Ue){const ht=ke[Ue],He=(0,l.max)(ht.data)[1],dt=ze?ze[He]:`LABEL_${He}`;if(H.includes(dt))continue;const At=this.tokenizer.decode([Be[Ue].item()],{skip_special_tokens:!0});if(At==="")continue;const Xe=(0,l.softmax)(ht.data);rt.push({entity:dt,score:Xe[He],index:Ue,word:At})}ve.push(rt)}return we?ve:ve[0]}}class h extends m{constructor(se){super(se)}async _call(se,H,{top_k:we=1}={}){const be=this.tokenizer(se,{text_pair:H,padding:!0,truncation:!0}),{start_logits:Ce,end_logits:Se}=await this.model(be),ze=be.input_ids.tolist(),ve=be.attention_mask.tolist(),Ve=this.tokenizer.all_special_ids,Be=[];for(let ke=0;ke<Ce.dims[0];++ke){const rt=ze[ke],Ue=rt.findIndex(We=>We==this.tokenizer.sep_token_id);ve[ke].map((We,yt)=>We==1&&(yt===0||yt>Ue&&Ve.findIndex(Mt=>Mt==rt[yt])===-1));const ht=Ce[ke].tolist(),He=Se[ke].tolist();for(let We=1;We<ht.length;++We)(ve[ke]==0||We<=Ue||Ve.findIndex(yt=>yt==rt[We])!==-1)&&(ht[We]=-1/0,He[We]=-1/0);const dt=(0,l.softmax)(ht).map((We,yt)=>[We,yt]),At=(0,l.softmax)(He).map((We,yt)=>[We,yt]);dt[0][0]=0,At[0][0]=0;const Xe=(0,o.product)(dt,At).filter(We=>We[0][1]<=We[1][1]).map(We=>[We[0][1],We[1][1],We[0][0]*We[1][0]]).sort((We,yt)=>yt[2]-We[2]);for(let We=0;We<Math.min(Xe.length,we);++We){const[yt,Mt,hr]=Xe[We],Vt=rt.slice(yt,Mt+1),tn=this.tokenizer.decode(Vt,{skip_special_tokens:!0});Be.push({answer:tn,score:hr})}}return we===1?Be[0]:Be}}class P extends m{constructor(se){super(se)}async _call(se,{top_k:H=5}={}){const we=this.tokenizer(se,{padding:!0,truncation:!0}
2844),{logits:be}=await this.model(we),Ce=[],Se=we.input_ids.tolist();for(let ze=0;ze<Se.length;++ze){const ve=Se[ze],Ve=ve.findIndex(ht=>ht==this.tokenizer.mask_token_id);if(Ve===-1)throw Error(`Mask token (${this.tokenizer.mask_token}) not found in text.`);const Be=be[ze][Ve],ke=await(0,p.topk)(new p.Tensor("float32",(0,l.softmax)(Be.data),Be.dims),H),rt=ke[0].tolist(),Ue=ke[1].tolist();Ce.push(Ue.map((ht,He)=>{const dt=ve.slice();return dt[Ve]=ht,{score:rt[He],token:Number(ht),token_str:this.tokenizer.decode([ht]),sequence:this.tokenizer.decode(dt,{skip_special_tokens:!0})}}))}return Array.isArray(se)?Ce:Ce[0]}}class _ extends m{_key="generated_text";constructor(se){super(se)}async _call(se,H={}){Array.isArray(se)||(se=[se]),this.model.config.prefix&&(se=se.map(ve=>this.model.config.prefix+ve));const we=this.model.config.task_specific_params;we&&we[this.task]&&we[this.task].prefix&&(se=se.map(ve=>we[this.task].prefix+ve));const be=this.tokenizer,Ce={padding:!0,truncation:!0};let Se;this instanceof b&&"_build_translation_inputs"in be?Se=be._build_translation_inputs(se,Ce,H):Se=be(se,Ce);const ze=await this.model.generate({...Se,...H});return be.batch_decode(ze,{skip_special_tokens:!0}).map(ve=>({[this._key]:ve}))}}class w extends _{_key="summary_text";constructor(se){super(se)}}class b extends _{_key="translation_text";constructor(se){super(se)}}function v(Me){return Array.isArray(Me)&&Me.every(se=>"role"in se&&"content"in se)}class y extends m{constructor(se){super(se)}async _call(se,H={}){let we=!1,be=!1,Ce=H.add_special_tokens??(this.tokenizer.add_bos_token||this.tokenizer.add_eos_token)??!1,Se;if(typeof se=="string")Se=se=[se];else if(Array.isArray(se)&&se.every(Ue=>typeof Ue=="string"))we=!0,Se=se;else{if(v(se))se=[se];else if(Array.isArray(se)&&se.every(v))we=!0;else throw new Error("Input must be a string, an array of strings, a Chat, or an array of Chats");be=!0,Se=se.map(Ue=>this.tokenizer.apply_chat_template(Ue,{tokenize:!1,add_generation_prompt:!0})),Ce=!1}const ze=be?!1:H.return_full_text??!0;this.tokenizer.padding_side="left";const ve=this.tokenizer(Se,{add_special_tokens:Ce,padding:!0,truncation:!0}),Ve=await this.model.generate({...ve,...H}),Be=this.tokenizer.batch_decode(Ve,{skip_special_tokens:!0});let ke;!ze&&ve.input_ids.dims.at(-1)>0&&(ke=this.tokenizer.batch_decode(ve.input_ids,{skip_special_tokens:!0}).map(Ue=>Ue.length));const rt=Array.from({length:se.length},Ue=>[]);for(let Ue=0;Ue<Be.length;++Ue){const ht=Math.floor(Ue/Ve.dims[0]*se.length);ke&&(Be[Ue]=Be[Ue].slice(ke[ht])),rt[ht].push({generated_text:be?[...se[ht],{role:"assistant",content:Be[Ue]}]:Be[Ue]})}return!we&&rt.length===1?rt[0]:rt}}class $ extends m{constructor(se){super(se),this.label2id=Object.fromEntries(Object.entries(this.model.config.label2id).map(([H,we])=>[H.toLowerCase(),we])),this.entailment_id=this.label2id.entailment,this.entailment_id===void 0&&(console.warn("Could not find 'entailment' in label2id mapping. Using 2 as entailment_id."),this.entailment_id=2),this.contradiction_id=this.label2id.contradiction??this.label2id.not_entailment,this.contradiction_id===void 0&&(console.warn("Could not find 'contradiction' in label2id mapping. Using 0 as contradiction_id."),this.contradiction_id=0)}async _call(se,H,{hypothesis_template:we="This example is {}.",multi_label:be=!1}={}){const Ce=Array.isArray(se);Ce||(se=[se]),Array.isArray(H)||(H=[H]);const Se=H.map(Ve=>we.replace("{}",Ve)),ze=be||H.length===1,ve=[];for(const Ve of se){const Be=[];for(const Ue of Se){const ht=this.tokenizer(Ve,{text_pair:Ue,padding:!0,truncation:!0}),He=await this.model(ht);ze?Be.push([He.logits.data[this.contradiction_id],He.logits.data[this.entailment_id]]):Be.push(He.logits.data[this.entailment_id])}const rt=(ze?Be.map(Ue=>(0,l.softmax)(Ue)[1]):(0,l.softmax)(Be)).map((Ue,ht)=>[Ue,ht]).sort((Ue,ht)=>ht[0]-Ue[0]);ve.push({sequence:Ve,labels:rt.map(Ue=>H[Ue[1]]),scores:rt.map(Ue=>Ue[0])})}return Ce?ve:ve[0]}}class k extends m{constructor(se){super(se)}async _call(se,{pooling:H="none",normalize:we=!1,quantize:be=!1,precision:Ce="binary"}={}){const Se=this.tokenizer(se,{padding:!0,truncation:!0}
2844),ze=await this.model(Se);let ve=ze.last_hidden_state??ze.logits??ze.token_embeddings;switch(H){case"none":break;case"mean":ve=(0,p.mean_pooling)(ve,Se.attention_mask);break;case"first_token":case"cls":ve=ve.slice(null,0);break;case"last_token":case"eos":ve=ve.slice(null,-1);break;default:throw Error(`Pooling method '${H}' not supported.`)}return we&&(ve=ve.normalize(2,-1)),be&&(ve=(0,p.quantize_embeddings)(ve,Ce)),ve}}class W extends m{constructor(se){super(se)}async _call(se,{pool:H=null}={}){const we=await c(se),{pixel_values:be}=await this.processor(we),Ce=await this.model({pixel_values:be});let Se;if(H){if(!("pooler_output"in Ce))throw Error("No pooled output was returned. Make sure the model has a 'pooler' layer when using the 'pool' option.");Se=Ce.pooler_output}else Se=Ce.last_hidden_state??Ce.logits??Ce.image_embeds;return Se}}class j extends m{constructor(se){super(se)}async _call(se,{top_k:H=5}={}){const we=this.processor.feature_extractor.config.sampling_rate,be=await g(se,we),Ce=this.model.config.id2label,Se=[];for(const ze of be){const ve=await this.processor(ze),Be=(await this.model(ve)).logits[0],ke=await(0,p.topk)(new p.Tensor("float32",(0,l.softmax)(Be.data),Be.dims),H),rt=ke[0].tolist(),ht=ke[1].tolist().map((He,dt)=>({label:Ce?Ce[He]:`LABEL_${He}`,score:rt[dt]}));Se.push(ht)}return Array.isArray(se)?Se:Se[0]}}class F extends m{constructor(se){super(se)}async _call(se,H,{hypothesis_template:we="This is a sound of {}."}={}){const be=!Array.isArray(se);be&&(se=[se]);const Ce=H.map(Be=>we.replace("{}",Be)),Se=this.tokenizer(Ce,{padding:!0,truncation:!0}),ze=this.processor.feature_extractor.config.sampling_rate,ve=await g(se,ze),Ve=[];for(const Be of ve){const ke=await this.processor(Be),rt=await this.model({...Se,...ke}),Ue=(0,l.softmax)(rt.logits_per_audio.data);Ve.push([...Ue].map((ht,He)=>({score:ht,label:H[He]})))}return be?Ve[0]:Ve}}class R extends m{constructor(se){super(se)}async _call(se,H={}){switch(this.model.config.model_type){case"whisper":case"lite-whisper":return this._call_whisper(se,H);case"wav2vec2":case"wav2vec2-bert":case"unispeech":case"unispeech-sat":case"hubert":case"parakeet_ctc":return this._call_wav2vec2(se,H);case"moonshine":return this._call_moonshine(se,H);default:throw new Error(`AutomaticSpeechRecognitionPipeline does not support model type '${this.model.config.model_type}'.`)}}async _call_wav2vec2(se,H){H.language&&console.warn('`language` parameter is not yet supported for `wav2vec2` models, defaulting to "English".'),H.task&&console.warn('`task` parameter is not yet supported for `wav2vec2` models, defaulting to "transcribe".');const we=!Array.isArray(se);we&&(se=[se]);const be=this.processor.feature_extractor.config.sampling_rate,Ce=await g(se,be),Se=[];for(const ze of Ce){const ve=await this.processor(ze),Be=(await this.model(ve)).logits[0],ke=[];for(const Ue of Be)ke.push((0,l.max)(Ue.data)[1]);const rt=this.tokenizer.decode(ke,{skip_special_tokens:!0}).trim();Se.push({text:rt})}return we?Se[0]:Se}async _call_whisper(se,H){const we=H.return_timestamps??!1,be=H.chunk_length_s??0,Ce=H.force_full_sequences??!1;let Se=H.stride_length_s??null;const ze={...H};we==="word"&&(ze.return_token_timestamps=!0,ze.return_timestamps=!1);const ve=!Array.isArray(se);ve&&(se=[se]);const Ve=this.processor.feature_extractor.config.chunk_length/this.model.config.max_source_positions,Be=this.processor.feature_extractor.config.hop_length,ke=this.processor.feature_extractor.config.sampling_rate,rt=await g(se,ke),Ue=[];for(const ht of rt){let He=[];if(be>0){if(Se===null)Se=be/6;else if(be<=Se)throw Error("`chunk_length_s` must be larger than `stride_length_s`.");const Xe=ke*be,We=ke*Se,yt=Xe-2*We;let Mt=0;for(;;){const hr=Mt+Xe,Vt=ht.subarray(Mt,hr),tn=await this.processor(Vt),hn=Mt===0,ar=hr>=ht.length;if(He.push({stride:[Vt.length,hn?0:We,ar?0:We],input_features:tn.input_features,is_last:ar}),ar)break;Mt+=yt}}else He=[{stride:[ht.length,0,0],input_features:(await this.processor(ht)).input_features,is_last:!0}];for(const Xe of He){ze.num_frames=Math.floor(Xe.stride[0]/Be);const We=await this.model.generate({inputs:Xe.input_features,...ze});we==="word"?(Xe.tokens=We.sequences.tolist()[0],Xe.token_timestamps=We.token_timestamps.tolist()[0].map(yt=>(0,l.round)(yt,2))):Xe.tokens=We[0].tolist(),Xe.stride=Xe.stride.map(yt=>yt/ke)}const[dt,At]=this.tokenizer._decode_asr(He,{time_precision:Ve,return_timestamps:we,force_full_sequences:Ce});Ue.push({text:dt,...At})}return ve?Ue[0]:Ue}async _call_moonshine(se,H){const we=!Array.isArray(se);we&&(se=[se]);const be=this.processor.feature_extractor.config.sampling_rate,Ce=await g(se,be),Se=[];for(const ze of Ce){const ve=await this.processor(ze),Ve=Math.floor(ze.length/be)*6,Be=await this.model.generate({max_new_tokens:Ve,...H,...ve}),ke=this.processor.batch_decode(Be,{skip_special_tokens:!0})[0];Se.push({text:ke})}return we?Se[0]:Se}}class L extends m{constructor(se){super(se)}async _call(se,H={}){const we=Array.isArray(se),be=await c(se),{pixel_values:Ce}=await this.processor(be),Se=[];for(const ze of Ce){ze.dims=[1,...ze.dims];const ve=await this.model.generate({inputs:ze,...H}),Ve=this.tokenizer.batch_decode(ve,{skip_special_tokens:!0}).map(Be=>({generated_text:Be.trim()}));Se.push(Ve)}return we?Se:Se[0]}}class Q extends m{constructor(se){super(se)}async _call(se,{top_k:H=5}={}){const we=await c(se),{pixel_values:be}=await this.processor(we),Ce=await this.model({pixel_values:be}),Se=this.model.config.id2label,ze=[];for(const ve of Ce.logits){const Ve=await(0,p.topk)(new p.Tensor("float32",(0,l.softmax)(ve.data),ve.dims),H),Be=Ve[0].tolist(),rt=Ve[1].tolist().map((Ue,ht)=>({label:Se?Se[Ue]:`LABEL_${Ue}`,score:Be[ht]}));ze.push(rt)}return Array.isArray(se)?ze:ze[0]}}class ne extends m{constructor(se){super(se),this.subtasks_mapping={panoptic:"post_process_panoptic_segmentation",instance:"post_process_instance_segmentation",semantic:"post_process_semantic_segmentation"}}async _call(se,{threshold:H=.5,mask_threshold:we=.5,overlap_mask_area_threshold:be=.8,label_ids_to_fuse:Ce=null,target_sizes:Se=null,subtask:ze=null}={}){if(Array.isArray(se)&&se.length!==1)throw Error("Image segmentation pipeline currently only supports a batch size of 1.");const Ve=await c(se),Be=Ve.map(Xe=>[Xe.height,Xe.width]),ke=await this.processor(Ve),{inputNames:rt,outputN
2844ames:Ue}=this.model.sessions.model;if(!rt.includes("pixel_values")){if(rt.length!==1)throw Error(`Expected a single input name, but got ${rt.length} inputs: ${rt}.`);const Xe=rt[0];if(Xe in ke)throw Error(`Input name ${Xe} already exists in the inputs.`);ke[Xe]=ke.pixel_values}const ht=await this.model(ke);let He=null;if(ze!==null)He=this.subtasks_mapping[ze];else if(this.processor.image_processor){for(const[Xe,We]of Object.entries(this.subtasks_mapping))if(We in this.processor.image_processor){He=this.processor.image_processor[We].bind(this.processor.image_processor),ze=Xe;break}}const dt=this.model.config.id2label,At=[];if(ze)if(ze==="panoptic"||ze==="instance"){const Xe=He(ht,H,we,be,Ce,Se??Be)[0],We=Xe.segmentation;for(const yt of Xe.segments_info){const Mt=new Uint8ClampedArray(We.data.length);for(let Vt=0;Vt<We.data.length;++Vt)We.data[Vt]===yt.id&&(Mt[Vt]=255);const hr=new d.RawImage(Mt,We.dims[1],We.dims[0],1);At.push({score:yt.score,label:dt[yt.label_id],mask:hr})}}else if(ze==="semantic"){const{segmentation:Xe,labels:We}=He(ht,Se??Be)[0];for(const yt of We){const Mt=new Uint8ClampedArray(Xe.data.length);for(let Vt=0;Vt<Xe.data.length;++Vt)Xe.data[Vt]===yt&&(Mt[Vt]=255);
2844const hr=new d.RawImage(Mt,Xe.dims[1],Xe.dims[0],1);At.push({score:null,label:dt[yt],mask:hr})}}else throw Error(`Subtask ${ze} not supported.`);else{const We=ht[Ue[0]];for(let yt=0;yt<Be.length;++yt){const Mt=Be[yt],hr=We[yt];hr.data.some(tn=>tn<-1e-5||tn>1+1e-5)&&hr.sigmoid_();const Vt=await d.RawImage.fromTensor(hr.mul_(255).to("uint8")).resize(Mt[1],Mt[0]);At.push({label:null,score:null,mask:Vt})}}return At}}class re extends ne{constructor(se){super(se)}async _call(se,H={}){if(Array.isArray(se)&&se.length!==1)throw Error("Background removal pipeline currently only supports a batch size of 1.");const be=await c(se),Ce=await super._call(se,H);return be.map((ze,ve)=>{const Ve=ze.clone();return Ve.putAlpha(Ce[ve].mask),Ve})}}class ce extends m{constructor(se){super(se)}async _call(se,H,{hypothesis_template:we="This is a photo of {}"}={}){const be=Array.isArray(se),Ce=await c(se),Se=H.map(rt=>we.replace("{}",rt)),ze=this.tokenizer(Se,{padding:this.model.config.model_type==="siglip"?"max_length":!0,truncation:!0}),{pixel_values:ve}=await this.processor(Ce),Ve=await this.model({...ze,pixel_values:ve}),Be=this.model.config.model_type==="siglip"?rt=>rt.sigmoid().data:rt=>(0,l.softmax)(rt.data),ke=[];for(const rt of Ve.logits_per_image){const ht=[...Be(rt)].map((He,dt)=>({score:He,label:H[dt]}));ht.sort((He,dt)=>dt.score-He.score),ke.push(ht)}return be?ke:ke[0]}}class ge extends m{constructor(se){super(se)}async _call(se,{threshold:H=.9,percentage:we=!1}={}){const be=Array.isArray(se);if(be&&se.length!==1)throw Error("Object detection pipeline currently only supports a batch size of 1.");const Ce=await c(se),Se=we?null:Ce.map(Ue=>[Ue.height,Ue.width]),{pixel_values:ze,pixel_mask:ve}=await this.processor(Ce),Ve=await this.model({pixel_values:ze,pixel_mask:ve}),Be=this.processor.image_processor.post_process_object_detection(Ve,H,Se),ke=this.model.config.id2label,rt=Be.map(Ue=>Ue.boxes.map((ht,He)=>({score:Ue.scores[He],label:ke[Ue.classes[He]],box:A(ht,!we)})));return be?rt:rt[0]}}class q extends m{constructor(se){super(se)}async _call(se,H,{threshold:we=.1,top_k:be=null,percentage:Ce=!1}={}){const Se=Array.isArray(se),ze=await c(se),ve=this.tokenizer(H,{padding:!0,truncation:!0}),Ve=await this.processor(ze),Be=[];for(let ke=0;ke<ze.length;++ke){const rt=ze[ke],Ue=Ce?null:[[rt.height,rt.width]],ht=Ve.pixel_values[ke].unsqueeze_(0),He=await this.model({...ve,pixel_values:ht});let dt;if("post_process_grounded_object_detection"in this.processor){const At=this.processor.post_process_grounded_object_detection(He,ve.input_ids,{box_threshold:we,text_threshold:we,target_sizes:Ue})[0];dt=At.boxes.map((Xe,We)=>({score:At.scores[We],label:At.labels[We],box:A(Xe,!Ce)}))}else{const At=this.processor.image_processor.post_process_object_detection(He,we,Ue,!0)[0];dt=At.boxes.map((Xe,We)=>({score:At.scores[We],label:H[At.classes[We]],box:A(Xe,!Ce)}))}dt.sort((At,Xe)=>Xe.score-At.score),be!==null&&(dt=dt.slice(0,be)),Be.push(dt)}return Se?Be:Be[0]}}class V extends m{constructor(se){super(se)}async _call(se,H,we={}){const be=(await c(se))[0],{pixel_values:Ce}=await this.processor(be),Se=`<s_docvqa><s_question>${H}</s_question><s_answer>`,ze=this.tokenizer(Se,{add_special_tokens:!1,padding:!0,truncation:!0}).input_ids,ve=await this.model.generate({inputs:Ce,max_length:this.model.config.decoder.max_position_embeddings,decoder_input_ids:ze,...we}),Be=this.tokenizer.batch_decode(ve)[0].match(/<s_answer>(.*?)<\/s_answer>/);let ke=null;return Be&&Be.length>=2&&(ke=Be[1].trim()),[{answer:ke}]}}class U extends m{DEFAULT_VOCODER_ID="Xenova/speecht5_hifigan";constructor(se){super(se),this.vocoder=se.vocoder??null}async _prepare_speaker_embeddings(se){if((typeof se=="string"||se instanceof URL)&&(se=new Float32Array(await(await fetch(se)).arrayBuffer())),se instanceof Float32Array)se=new p.Tensor("float32",se,[se.length]);else if(!(se instanceof p.Tensor))throw new Error("Speaker embeddings must be a `Tensor`, `Float32Array`, `string`, or `URL`.");return se}async _call(se,{speaker_embeddings:H=null,num_inference_steps:we,speed:be}={}){return this.processor?this._call_text_to_spectrogram(se,{speaker_embeddings:H}):this.model.config.model_type==="supertonic"?this._call_supertonic(se,{speaker_embeddings:H,num_inference_steps:we,speed:be}):this._call_text_to_waveform(se)}async _call_supertonic(se,{speaker_embeddings:H,num_inference_steps:we,speed:be}){if(!H)throw new Error("Speaker embeddings must be provided for Supertonic models.");H=await this._prepare_speaker_embeddings(H);const{sampling_rate:Ce,style_dim:Se}=this.model.config;H=H.view(1,-1,Se);const ze=this.tokenizer(se,{padding:!0,truncation:!0}
2844),{waveform:ve}=await this.model.generate_speech({...ze,style:H,num_inference_steps:we,speed:be});return new u.RawAudio(ve.data,Ce)}async _call_text_to_waveform(se){const H=this.tokenizer(se,{padding:!0,truncation:!0}),{waveform:we}=await this.model(H),be=this.model.config.sampling_rate;return new u.RawAudio(we.data,be)}async _call_text_to_spectrogram(se,{speaker_embeddings:H}){this.vocoder||(console.log("No vocoder specified, using default HifiGan vocoder."),this.vocoder=await s.AutoModel.from_pretrained(this.DEFAULT_VOCODER_ID,{dtype:"fp32"}));const{input_ids:we}=this.tokenizer(se,{padding:!0,truncation:!0});H=await this._prepare_speaker_embeddings(H),H=H.view(1,-1);const{waveform:be}=await this.model.generate_speech(we,H,{vocoder:this.vocoder}),Ce=this.processor.feature_extractor.config.sampling_rate;return new u.RawAudio(be.data,Ce)}}class N extends m{constructor(se){super(se)}async _call(se){const H=await c(se),we=await this.processor(H),be=await this.model(we),Ce=[];for(const Se of be.reconstruction){const ze=Se.squeeze().clamp_(0,1).mul_(255).round_().to("uint8");Ce.push(d.RawImage.fromTensor(ze))}return Ce.length>1?Ce:Ce[0]}}class oe extends m{constructor(se){super(se)}async _call(se){const H=await c(se),we=await this.processor(H),{predicted_depth:be}=await this.model(we),Ce=[];for(let Se=0;Se<H.length;++Se){const ze=be[Se],[ve,Ve]=ze.dims.slice(-2),[Be,ke]=H[Se].size,rt=(await(0,p.interpolate_4d)(ze.view(1,1,ve,Ve),{size:[ke,Be],mode:"bilinear"})).view(ke,Be),Ue=rt.min().item(),ht=rt.max().item(),He=rt.sub(Ue).div_(ht-Ue).mul_(255).to("uint8").unsqueeze(0),dt=d.RawImage.fromTensor(He);Ce.push({predicted_depth:rt,depth:dt})}return Ce.length>1?Ce:Ce[0]}}const fe=Object.freeze({"text-classification":{tokenizer:n.AutoTokenizer,pipeline:B,model:s.AutoModelForSequenceClassification,default:{model:"Xenova/distilbert-base-uncased-finetuned-sst-2-english"},type:"text"},"token-classification":{tokenizer:n.AutoTokenizer,pipeline:f,model:s.AutoModelForTokenClassification,default:{model:"Xenova/bert-base-multilingual-cased-ner-hrl"},type:"text"},"question-answering":{tokenizer:n.AutoTokenizer,pipeline:h,model:s.AutoModelForQuestionAnswering,default:{model:"Xenova/distilbert-base-cased-distilled-squad"},type:"text"},"fill-mask":{tokenizer:n.AutoTokenizer,pipeline:P,model:s.AutoModelForMaskedLM,default:{model:"Xenova/bert-base-uncased"},type:"text"},summarization:{tokenizer:n.AutoTokenizer,pipeline:w,model:s.AutoModelForSeq2SeqLM,default:{model:"Xenova/distilbart-cnn-6-6"},type:"text"},translation:{tokenizer:n.AutoTokenizer,pipeline:b,model:s.AutoModelForSeq2SeqLM,default:{model:"Xenova/t5-small"},type:"text"},"text2text-generation":{tokenizer:n.AutoTokenizer,pipeline:_,model:s.AutoModelForSeq2SeqLM,default:{model:"Xenova/flan-t5-small"},type:"text"},"text-generation":{tokenizer:n.AutoTokenizer,pipeline:y,model:s.AutoModelForCausalLM,default:{model:"Xenova/gpt2"},type:"text"},"zero-shot-classification":{tokenizer:n.AutoTokenizer,pipeline:$,model:s.AutoModelForSequenceClassification,default:{model:"Xenova/distilbert-base-uncased-mnli"},type:"text"},"audio-classification":{pipeline:j,model:s.AutoModelForAudioClassification,processor:a.AutoProcessor,default:{model:"Xenova/wav2vec2-base-superb-ks"},type:"audio"},"zero-shot-audio-classification":{tokenizer:n.AutoTokenizer,pipeline:F,model:s.AutoModel,processor:a.AutoProcessor,default:{model:"Xenova/clap-htsat-unfused"},type:"multimodal"},"automatic-speech-recognition":{tokenizer:n.AutoTokenizer,pipeline:R,model:[s.AutoModelForSpeechSeq2Seq,s.AutoModelForCTC],processor:a.AutoProcessor,default:{model:"Xenova/whisper-tiny.en"},type:"multimodal"},"text-to-audio":{tokenizer:n.AutoTokenizer,pipeline:U,model:[s.AutoModelForTextToWaveform,s.AutoModelForTextToSpectrogram],processor:[a.AutoProcessor,null],default:{model:"Xenova/speecht5_tts"},type:"text"},"image-to-text":{tokenizer:n.AutoTokenizer,pipeline:L,model:s.AutoModelForVision2Seq,processor:a.AutoProcessor,default:{model:"Xenova/vit-gpt2-image-captioning"},type:"multimodal"},"image-classification":{pipeline:Q,model:s.AutoModelForImageClassification,processor:a.AutoProcessor,default:{model:"Xenova/vit-base-patch16-224"},type:"multimodal"},"image-segmentation":{pipeline:ne,model:[s.AutoModelForImageSegmentation,s.AutoModelForSemanticSegmentation,s.AutoModelForUniversalSegmentation],processor:a.AutoProcessor,default:{model:"Xenova/detr-resnet-50-panoptic"},type:"multimodal"},"background-removal":{pipeline:re,model:[s.AutoModelForImageSegmentation,s.AutoModelForSemanticSegmentation,s.AutoModelForUniversalSegmentation],processor:a.AutoProcessor,default:{model:"Xenova/modnet"},type:"image"},"zero-shot-image-classification":{tokenizer:n.AutoTokenizer,pipeline:ce,model:s.AutoModel,processor:a.AutoProcessor,default:{model:"Xenova/clip-vit-base-patch32"},type:"multimodal"},"object-detection":{pipeline:ge,model:s.AutoModelForObjectDetection,processor:a.AutoProcessor,default:{model:"Xenova/detr-resnet-50"},type:"multimodal"},"zero-shot-object-detection":{tokenizer:n.AutoTokenizer,pipeline:q,model:s.AutoModelForZeroShotObjectDetection,processor:a.AutoProcessor,default:{model:"Xenova/owlvit-base-patch32"},type:"multimodal"},"document-question-answering":{tokenizer:n.AutoTokenizer,pipeline:V,model:s.AutoModelForDocumentQuestionAnswering,processor:a.AutoProcessor,default:{model:"Xenova/d
2844onut-base-finetuned-docvqa"},type:"multimodal"},"image-to-image":{pipeline:N,model:s.AutoModelForImageToImage,processor:a.AutoProcessor,default:{model:"Xenova/swin2SR-classical-sr-x2-64"},type:"image"},"depth-estimation":{pipeline:oe,model:s.AutoModelForDepthEstimation,processor:a.AutoProcessor,default:{model:"Xenova/dpt-large"},type:"image"},"feature-extraction":{tokenizer:n.AutoTokenizer,pipeline:k,model:s.AutoModel,default:{model:"Xenova/all-MiniLM-L6-v2"},type:"text"},"image-feature-extraction":{processor:a.AutoProcessor,pipeline:W,model:[s.AutoModelForImageFeatureExtraction,s.AutoModel],default:{model:"Xenova/vit-base-patch16-224-in21k"},type:"image"}}),De=Object.freeze({"sentiment-analysis":"text-classification",ner:"token-classification",asr:"automatic-speech-recognition","text-to-speech":"text-to-audio",embeddings:"feature-extraction"});async function Ie(Me,se=null,{progress_callback:H=null,config:we=null,cache_dir:be=null,local_files_only:Ce=!1,revision:Se="main",device:ze=null,dtype:ve=null,subfolder:Ve="onnx",use_external_data_format:Be=null,model_file_name:ke=null,session_options:rt={}}={}){Me=De[Me]??Me;const Ue=fe[Me.split("_",1)[0]];if(!Ue)throw Error(`Unsupported pipeline: ${Me}. Must be one of [${Object.keys(fe)}]`);se||(se=Ue.default.model,console.log(`No model specified. Using default model: "${se}".`));const ht={progress_callback:H,config:we,cache_dir:be,local_files_only:Ce,revision:Se,device:ze,dtype:ve,subfolder:Ve,use_external_data_format:Be,model_file_name:ke,session_options:rt},He=new Map([["tokenizer",Ue.tokenizer],["model",Ue.model],["processor",Ue.processor]]),dt=await je(He,se,ht);dt.task=Me,(0,o.dispatchCallback)(H,{status:"ready",task:Me,model:se});const At=Ue.pipeline;return new At(dt)}async function je(Me,se,H){const we=Object.create(null),be=[];for(const[Ce,Se]of Me.entries()){if(!Se)continue;let ze;Array.isArray(Se)?ze=new Promise(async(ve,Ve)=>{let Be;for(const ke of Se){if(ke===null){ve(null);return}try{ve(await ke.from_pretrained(se,H));return}catch(rt){if(rt.message?.includes("Unsupported model type"))Be=rt;else if(rt.message?.includes("Could not locate file"))Be=rt;else{Ve(rt);return}}}Ve(Be)}):ze=Se.from_pretrained(se,H),we[Ce]=ze,be.push(ze)}await Promise.all(be);for(const[Ce,Se]of Object.entries(we))we[Ce]=await Se;return we}}),
2844"./src/tokenizers.js":((e,t,r)=>{r.r(t),r.d(t,{AlbertTokenizer:()=>us,AutoTokenizer:()=>ii,BartTokenizer:()=>at,BertTokenizer:()=>Er,BlenderbotSmallTokenizer:()=>Ze,BlenderbotTokenizer:()=>Ke,BloomTokenizer:()=>rr,CLIPTokenizer:()=>xs,CamembertTokenizer:()=>le,CodeGenTokenizer:()=>Bs,CodeLlamaTokenizer:()=>yr,CohereTokenizer:()=>Ds,ConvBertTokenizer:()=>ie,DebertaTokenizer:()=>Ft,DebertaV2Tokenizer:()=>ds,DistilBertTokenizer:()=>ae,ElectraTokenizer:()=>Oe,EsmTokenizer:()=>Kr,FalconTokenizer:()=>En,GPT2Tokenizer:()=>Et,GPTNeoXTokenizer:()=>ps,GemmaTokenizer:()=>qr,Grok1Tokenizer:()=>vr,HerbertTokenizer:()=>S,LlamaTokenizer:()=>kr,M2M100Tokenizer:()=>Zn,MBart50Tokenizer:()=>lt,MBartTokenizer:()=>Ot,MPNetTokenizer:()=>vs,MarianTokenizer:()=>_n,MgpstrTokenizer:()=>ra,MobileBertTokenizer:()=>cs,NllbTokenizer:()=>jn,NougatTokenizer:()=>Dr,PreTrainedTokenizer:()=>kt,Qwen2Tokenizer:()=>fn,RoFormerTokenizer:()=>X,RobertaTokenizer:()=>St,SiglipTokenizer:()=>Es,SpeechT5Tokenizer:()=>ft,SqueezeBertTokenizer:()=>pr,T5Tokenizer:()=>gt,TokenizerModel:()=>W,VitsTokenizer:()=>ta,Wav2Vec2CTCTokenizer:()=>wn,WhisperTokenizer:()=>ea,XLMRobertaTokenizer:()=>ln,XLMTokenizer:()=>_e,is_chinese_char:()=>P});var n=r("./src/utils/generic.js"),s=r("./src/utils/core.js"),a=r("./src/utils/hub.js"),i=r("./src/utils/maths.js"),o=r("./src/utils/tensor.js"),l=r("./src/utils/data-structures.js"),u=r("./node_modules/@huggingface/jinja/dist/index.js"),p=r("./src/models/whisper/common_whisper.js");async function d(ye,O){const te=await Promise.all([(0,a.getModelJSON)(ye,"tokenizer.json",!0,O),(0,a.getModelJSON)(ye,"tokenizer_config.json",!0,O)]);return O.legacy!==null&&(te[1].legacy=O.legacy),te}function c(ye,O){const te=[];let de=0;for(const pe of ye.matchAll(O)){const xe=pe[0];de<pe.index&&te.push(ye.slice(de,pe.index)),xe.length>0&&te.push(xe),de=pe.index+xe.length}return de<ye.length&&te.push(ye.slice(de)),te}function g(ye,O=!0){if(ye.Regex!==void 0){let te=ye.Regex.replace(/\\([#&~])/g,"$1");for(const[de,pe]of $)te=te.replaceAll(de,pe);return new RegExp(te,"gu")}else if(ye.String!==void 0){const te=(0,s.escapeRegExp)(ye.String);return new RegExp(O?te:`(${te})`,"gu")}else return console.warn("Unknown pattern type:",ye),null}function A(ye){return new Map(Object.entries(ye))}function m(ye){const O=ye.dims;switch(O.length){case 1:return ye.tolist();case 2:if(O[0]!==1)throw new Error("Unable to decode tensor with `batch size !== 1`. Use `tokenizer.batch_decode(...)` for batched inputs.");return ye.tolist()[0];default:throw new Error(`Expected tensor to have 1-2 dimensions, got ${O.length}.`)}}function B(ye){return ye.replace(/ \./g,".").replace(/ \?/g,"?").replace(/ \!/g,"!").replace(/ ,/g,",").replace(/ \' /g,"'").replace(/ n\'t/g,"n't").replace(/ \'m/g,"'m").replace(/ \'s/g,"'s").replace(/ \'ve/g,"'ve").replace(/ \'re/g,"'re")}function f(ye){return ye.replace(new RegExp("\\p{M}","gu"),"")}function h(ye){return f(ye.toLowerCase())}function P(ye){return ye>=19968&&ye<=40959||ye>=13312&&ye<=19903||ye>=131072&&ye<=173791||ye>=173824&&ye<=177983||ye>=177984&&ye<=178207||ye>=178208&&ye<=183983||ye>=63744&&ye<=64255||ye>=194560&&ye<=195103}function _(ye,O,te){const de=[];let pe=0;for(;pe<ye.length;){if(de.push(ye[pe]),(O.get(ye[pe])??te)!==te){++pe;continue}for(;++pe<ye.length&&(O.get(ye[pe])??te)===te;)O.get(de.at(-1))!==te&&(de[de.length-1]+=ye[pe])}return de}function w(ye){return ye.match(/\S+/g)||[]}const b="\\p{P}\\u0021-\\u002F\\u003A-\\u0040\\u005B-\\u0060\\u007B-\\u007E",v=new RegExp(`^[${b}]+$`,"gu"),y=".,!?â¦ãï¼ãà¥¤ÛØ",$=new Map([["(?i:'s|'t|'re|'ve|'m|'ll|'d)","(?:'([sS]|[tT]|[rR][eE]|[vV][eE]|[mM]|[lL][lL]|[dD]))"],["(?i:[sdmt]|ll|ve|re)","(?:[sS]|[dD]|[mM]|[tT]|[lL][lL]|[vV][eE]|[rR][eE])"],["[^\\r\\n\\p{L}\\p{N}]?+","[^\\r\\n\\p{L}\\p{N}]?"],["[^\\s\\p{L}\\p{N}]++","[^\\s\\p{L}\\p{N}]+"],[` ?[^(\\s|[${y}])]+`,` ?[^\\s${y}]+`]]);class k{constructor(O){this.content=O.content,this.id=O.id,this.single_word=O.single_word??!1,this.lstrip=O.lstrip??!1,this.rstrip=O.rstrip??!1,this.special=O.special??!1,this.normalized=O.normalized??null}}class W extends n.Callable{constructor(O){super(),this.config=O,this.vocab=[],this.tokens_to_ids=new Map,this.unk_token_id=void 0,this.unk_token=void 0,this.end_of_word_suffix=void 0,this.fuse_unk=this.config.fuse_unk??!1}static fromConfig(O,...te){switch(O.type){case"WordPiece":return new j(O);case"Unigram":return new F(O,...te);case"BPE":return new Q(O);default:if(O.vocab)return Array.isArray(O.vocab)?new F(O,...te):Object.hasOwn(O,"continuing_subword_prefix")&&Object.hasOwn(O,"unk_token")?Object.hasOwn(O,"merges")?new Q(O):new j(O):new ne(O,...te);throw new Error(`Unknown TokenizerModel type: ${O.type}`)}}_call(O){return O=this.encode(O),this.fuse_unk&&(O=_(O,this.tokens_to_ids,this.unk_token_id)),O}encode(O){throw Error("encode should be implemented in subclass.")}convert_tokens_to_ids(O){return O.map(te=>this.tokens_to_ids.get(te)??this.unk_token_id)}convert_ids_to_tokens(O){return O.map(te=>this.vocab[te]??this.unk_token)}}class j extends W{constructor(O){super(O),this.tokens_to_ids=A(O.vocab),this.unk_token_id=this.tokens_to_ids.get(O.unk_token),this.unk_token=O.unk_token,this.max_input_chars_per_word=O.max_input_chars_per_word??100,this.vocab=new Array(this.tokens_to_ids.size);for(const[te,de]of this.tokens_to_ids)this.vocab[de]=te}encode(O){const te=[];for(const de of O){const pe=[...de];if(pe.length>this.max_input_chars_per_word){te.push(this.unk_token);continue}let xe=!1,Fe=0;const ct=[];for(;Fe<pe.length;){let ut=pe.length,pt=null;for(;Fe<ut;){let st=pe.slice(Fe,ut).join("");if(Fe>0&&(st=this.config.continuing_subword_prefix+st),this.tokens_to_ids.has(st)){pt=st;break}--ut}if(pt===null){xe=!0;break}ct.push(pt),Fe=ut}xe?te.push(this.unk_token):te.push(...ct)}return te}}class F extends W{constructor(O,te){super(O);const de=O.vocab.length;this.vocab=new Array(de),this.scores=new Array(de);for(let pe=0;pe<de;++pe)[this.vocab[pe],this.scores[pe]]=O.vocab[pe];
2844this.unk_token_id=O.unk_id,this.unk_token=this.vocab[O.unk_id],this.tokens_to_ids=new Map(this.vocab.map((pe,xe)=>[pe,xe])),this.bos_token=" ",this.bos_token_id=this.tokens_to_ids.get(this.bos_token),this.eos_token=te.eos_token,this.eos_token_id=this.tokens_to_ids.get(this.eos_token),this.unk_token=this.vocab[this.unk_token_id],this.minScore=(0,i.min)(this.scores)[0],this.unk_score=this.minScore-10,this.scores[this.unk_token_id]=this.unk_score,this.trie=new l.CharTrie,this.trie.extend(this.vocab),this.fuse_unk=!0}populateNodes(O){const te=O.chars,de=1;let pe=0;for(;pe<te.length;){let xe=!1;const Fe=te.slice(pe).join(""),ct=this.trie.commonPrefixSearch(Fe);for(const ut of ct){const pt=this.tokens_to_ids.get(ut),st=this.scores[pt],Xt=(0,s.len)(ut);O.insert(pe,Xt,st,pt),!xe&&Xt===de&&(xe=!0)}xe||O.insert(pe,de,this.unk_score,this.unk_token_id),pe+=de}}tokenize(O){const te=new l.TokenLattice(O,this.bos_token_id,this.eos_token_id);return this.populateNodes(te),te.tokens()}encode(O){const te=[];for(const de of O){const pe=this.tokenize(de);te.push(...pe)}return te}}const R=(()=>{const ye=[...Array.from({length:94},(pe,xe)=>xe+33),...Array.from({length:12},(pe,xe)=>xe+161),...Array.from({length:82},(pe,xe)=>xe+174)],O=ye.slice();let te=0;for(let pe=0;pe<256;++pe)ye.includes(pe)||(ye.push(pe),O.push(256+te),te+=1);const de=O.map(pe=>String.fromCharCode(pe));return Object.fromEntries(ye.map((pe,xe)=>[pe,de[xe]]))})(),L=(0,s.reverseDictionary)(R);class Q extends W{constructor(O){super(O),this.tokens_to_ids=A(O.vocab),this.unk_token_id=this.tokens_to_ids.get(O.unk_token),this.unk_token=O.unk_token,this.vocab=new Array(this.tokens_to_ids.size);for(const[de,pe]of this.tokens_to_ids)this.vocab[pe]=de;const te=Array.isArray(O.merges[0]);this.merges=te?O.merges:O.merges.map(de=>de.split(" ",2)),this.bpe_ranks=new Map(this.merges.map((de,pe)=>[JSON.stringify(de),pe])),this.end_of_word_suffix=O.end_of_word_suffix,this.continuing_subword_suffix=O.continuing_subword_suffix??null,this.byte_fallback=this.config.byte_fallback??!1,this.byte_fallback&&(this.text_encoder=new TextEncoder),this.ignore_merges=this.config.ignore_merges??!1,this.max_length_to_cache=256,this.cache_capacity=1e4,this.cache=new l.LRUCache(this.cache_capacity)}clear_cache(){this.cache.clear()}bpe(O){if(O.length===0)return[];const te=this.cache.get(O);if(te!==void 0)return te;const de=Array.from(O);this.end_of_word_suffix&&(de[de.length-1]+=this.end_of_word_suffix);let pe=[];if(de.length>1){const xe=new l.PriorityQueue((ut,pt)=>ut.score<pt.score);let Fe={token:de[0],bias:0,prev:null,next:null},ct=Fe;for(let ut=1;ut<de.length;++ut){const pt={bias:ut/de.length,token:de[ut],prev:ct,next:null};ct.next=pt,this._add_node(xe,ct),ct=pt}for(;!xe.isEmpty();){const ut=xe.pop();if(ut.deleted||!ut.next||ut.next.deleted)continue;if(ut.deleted=!0,ut.next.deleted=!0,ut.prev){const st={...ut.prev};ut.prev.deleted=!0,ut.prev=st,st.prev?st.prev.next=st:Fe=st}const pt={token:ut.token+ut.next.token,bias:ut.bias,prev:ut.prev,next:ut.next.next};pt.prev?(pt.prev.next=pt,this._add_node(xe,pt.prev)):Fe=pt,pt.next&&(pt.next.prev=pt,this._add_node(xe,pt))}for(let ut=Fe;ut!==null;ut=ut.next)pe.push(ut.token)}else pe=de;if(this.continuing_subword_suffix)for(let xe=0;xe<pe.length-1;++xe)pe[xe]+=this.continuing_subword_suffix;return O.length<this.max_length_to_cache&&this.cache.put(O,pe),pe}_add_node(O,te){const de=this.bpe_ranks.get(JSON.stringify([te.token,te.next.token]));de!==void 0&&(te.score=de+te.bias,O.push(te))}encode(O){const te=[];for(const de of O){if(this.ignore_merges&&this.tokens_to_ids.has(de)){te.push(de);continue}const pe=this.bpe(de);for(const xe of pe)if(this.tokens_to_ids.has(xe))te.push(xe);else if(this.byte_fallback){const Fe=Array.from(this.text_encoder.encode(xe)).map(ct=>`<0x${ct.toString(16).toUpperCase().padStart(2,"0")}>`);Fe.every(ct=>this.tokens_to_ids.has(ct))?te.push(...Fe):te.push(this.unk_token)}else te.push(this.unk_token)}return te}}class ne extends W{constructor(O,te){super(O),this.tokens_to_ids=A(te.target_lang?O.vocab[te.target_lang]:O.vocab),this.bos_token=te.bos_token,this.bos_token_id=this.tokens_to_ids.get(this.bos_token),this.eos_token=te.eos_token,this.eos_token_id=this.tokens_to_ids.get(this.eos_token),this.pad_token=te.pad_token,this.pad_token_id=this.tokens_to_ids.get(this.pad_token),this.unk_token=te.unk_token,this.unk_token_id=this.tokens_to_ids.get(this.unk_token),this.vocab=new Array(this.tokens_to_ids.size);for(const[de,pe]of this.tokens_to_ids)this.vocab[pe]=de}encode(O){return O}}class re extends n.Callable{constructor(O){super(),this.config=O}static fromConfig(O){if(O===null)return null;
2844switch(O.type){case"BertNormalizer":return new Me(O);case"Precompiled":return new ar(O);case"Sequence":return new je(O);case"Replace":return new ce(O);case"NFC":return new q(O);case"NFD":return new V(O);case"NFKC":return new U(O);case"NFKD":return new N(O);case"Strip":return new oe(O);case"StripAccents":return new fe(O);case"Lowercase":return new De(O);case"Prepend":return new Ie(O);default:throw new Error(`Unknown Normalizer type: ${O.type}`)}}normalize(O){throw Error("normalize should be implemented in subclass.")}_call(O){return this.normalize(O)}}class ce extends re{normalize(O){const te=g(this.config.pattern);return te===null?O:O.replaceAll(te,this.config.content)}}class ge extends re{form=void 0;normalize(O){return O=O.normalize(this.form),O}}class q extends ge{form="NFC"}class V extends ge{form="NFD"}class U extends ge{form="NFKC"}class N extends ge{form="NFKD"}class oe extends re{normalize(O){return this.config.strip_left&&this.config.strip_right?O=O.trim():(this.config.strip_left&&(O=O.trimStart()),this.config.strip_right&&(O=O.trimEnd())),O}}class fe extends re{normalize(O){return O=f(O),O}}class De extends re{normalize(O){return O=O.toLowerCase(),O}}class Ie extends re{normalize(O){return O=this.config.prepend+O,O}}class je extends re{constructor(O){super(O),this.normalizers=O.normalizers.map(te=>re.fromConfig(te))}normalize(O){return this.normalizers.reduce((te,de)=>de.normalize(te),O)}}class Me extends re{_tokenize_chinese_chars(O){const te=[];for(let de=0;de<O.length;++de){const pe=O[de],xe=pe.charCodeAt(0);P(xe)?(te.push(" "),te.push(pe),te.push(" ")):te.push(pe)}return te.join("")}stripAccents(O){return O.normalize("NFD").replace(new RegExp("\\p{Mn}","gu"),"")}_is_control(O){switch(O){case" ":case` 2845`:case"\r":return!1;default:return new RegExp("^\\p{Cc}|\\p{Cf}|\\p{Co}|\\p{Cs}$","u").test(O)}}_clean_text(O){const te=[];for(const de of O){const pe=de.charCodeAt(0);pe===0||pe===65533||this._is_control(de)||(/^\s$/.test(de)?te.push(" "):te.push(de))}return te.join("")}normalize(O){return this.config.clean_text&&(O=this._clean_text(O)),this.config.handle_chinese_chars&&(O=this._tokenize_chinese_chars(O)),this.config.lowercase?(O=O.toLowerCase(),this.config.strip_accents!==!1&&(O=this.stripAccents(O))):this.config.strip_accents&&(O=this.stripAccents(O)),O}}class se extends n.Callable{static fromConfig(O){if(O===null)return null;switch(O.type){case"BertPreTokenizer":return new H(O);case"Sequence":return new On(O);case"Whitespace":return new ma(O);case"WhitespaceSplit":return new fa(O);case"Metaspace":return new tn(O);case"ByteLevel":return new we(O);case"Split":return new be(O);case"Punctuation":return new Ce(O);case"Digits":return new Se(O);case"Replace":return new _a(O);
2845case"FixedLength":return new Ur(O);default:throw new Error(`Unknown PreTokenizer type: ${O.type}`)}}pre_tokenize_text(O,te){throw Error("pre_tokenize_text should be implemented in subclass.")}pre_tokenize(O,te){return(Array.isArray(O)?O.map(de=>this.pre_tokenize_text(de,te)):this.pre_tokenize_text(O,te)).flat()}_call(O,te){return this.pre_tokenize(O,te)}}class H extends se{constructor(O){super(),this.pattern=new RegExp(`[^\\s${b}]+|[${b}]`,"gu")}pre_tokenize_text(O,te){return O.trim().match(this.pattern)||[]}}class we extends se{constructor(O){super(),this.config=O,this.add_prefix_space=this.config.add_prefix_space,this.trim_offsets=this.config.trim_offsets,this.use_regex=this.config.use_regex??!0,this.pattern=new RegExp("'s|'t|'re|'ve|'m|'ll|'d| ?\\p{L}+| ?\\p{N}+| ?[^\\s\\p{L}\\p{N}]+|\\s+(?!\\S)|\\s+","gu"),this.byte_encoder=R,this.text_encoder=new TextEncoder}pre_tokenize_text(O,te){return this.add_prefix_space&&!O.startsWith(" ")&&(O=" "+O),(this.use_regex?O.match(this.pattern)||[]:[O]).map(pe=>Array.from(this.text_encoder.encode(pe),xe=>this.byte_encoder[xe]).join(""))}}class be extends se{constructor(O){super(),this.config=O,this.pattern=g(this.config.pattern,this.config.invert)}pre_tokenize_text(O,te){return this.pattern===null?[]:this.config.invert?O.match(this.pattern)||[]:this.config.behavior?.toLowerCase()==="removed"?O.split(this.pattern).filter(de=>de):c(O,this.pattern)}}class Ce extends se{constructor(O){super(),this.config=O,this.pattern=new RegExp(`[^${b}]+|[${b}]+`,"gu")}pre_tokenize_text(O,te){return O.match(this.pattern)||[]}}class Se extends se{constructor(O){super(),this.config=O;const te=`[^\\d]+|\\d${this.config.individual_digits?"":"+"}`;this.pattern=new RegExp(te,"gu")}pre_tokenize_text(O,te){return O.match(this.pattern)||[]}}class ze extends n.Callable{constructor(O){super(),this.config=O}static fromConfig(O){if(O===null)return null;switch(O.type){case"TemplateProcessing":return new Be(O);case"ByteLevel":return new ke(O);case"RobertaProcessing":return new Ve(O);case"BertProcessing":return new ve(O);case"Sequence":return new rt(O);default:throw new Error(`Unknown PostProcessor type: ${O.type}`)}}post_process(O,...te){throw Error("post_process should be implemented in subclass.")}_call(O,...te){return this.post_process(O,...te)}}class ve extends ze{constructor(O){super(O),this.cls=O.cls[0],this.sep=O.sep[0]}post_process(O,te=null,{add_special_tokens:de=!0}={}){de&&(O=(0,s.mergeArrays)([this.cls],O,[this.sep]));let pe=new Array(O.length).fill(0);if(te!==null){const xe=de&&this instanceof Ve?[this.sep]:[],Fe=de?[this.sep]:[];O=(0,s.mergeArrays)(O,xe,te,Fe),pe=(0,s.mergeArrays)(pe,new Array(te.length+xe.length+Fe.length).fill(1))}return{tokens:O,token_type_ids:pe}}}class Ve extends ve{}class Be extends ze{constructor(O){super(O),this.single=O.single,this.pair=O.pair}post_process(O,te=null,{add_special_tokens:de=!0}={}){const pe=te===null?this.single:this.pair;let xe=[],Fe=[];for(const ct of pe)"SpecialToken"in ct?de&&(xe.push(ct.SpecialToken.id),Fe.push(ct.SpecialToken.type_id)):"Sequence"in ct&&(ct.Sequence.id==="A"?(xe=(0,s.mergeArrays)(xe,O),Fe=(0,s.mergeArrays)(Fe,new Array(O.length).fill(ct.Sequence.type_id))):ct.Sequence.id==="B"&&(xe=(0,s.mergeArrays)(xe,te),Fe=(0,s.mergeArrays)(Fe,new Array(te.length).fill(ct.Sequence.type_id))));return{tokens:xe,token_type_ids:Fe}}}class ke extends ze{post_process(O,te=null){return te&&(O=(0,s.mergeArrays)(O,te)),{tokens:O}}}class rt extends ze{constructor(O){super(O),this.processors=O.processors.map(te=>ze.fromConfig(te))}post_process(O,te=null,de={}){let pe;for(const xe of this.processors)if(xe instanceof ke)O=xe.post_process(O).tokens,te&&(te=xe.post_process(te).tokens);else{const Fe=xe.post_process(O,te,de);O=Fe.tokens,pe=Fe.token_type_ids}return{tokens:O,token_type_ids:pe}}}class Ue extends n.Callable{constructor(O){super(),this.config=O,this.added_tokens=[],this.end_of_word_suffix=null,this.trim_offsets=O.trim_offsets}static fromConfig(O){if(O===null)return null;switch(O.type){case"WordPiece":return new Xe(O);case"Metaspace":return new hn(O);case"ByteLevel":return new We(O);case"Replace":return new ht(O);case"ByteFallback":return new He(O);case"Fuse":return new dt(O);case"Strip":return new At(O);case"Sequence":return new Mt(O);case"CTC":return new yt(O);case"BPEDecoder":return new hr(O);
2845default:throw new Error(`Unknown Decoder type: ${O.type}`)}}_call(O){return this.decode(O)}decode(O){return this.decode_chain(O).join("")}decode_chain(O){throw Error("`decode_chain` should be implemented in subclass.")}}class ht extends Ue{decode_chain(O){const te=g(this.config.pattern);return te===null?O:O.map(de=>de.replaceAll(te,this.config.content))}}class He extends Ue{constructor(O){super(O),this.text_decoder=new TextDecoder}decode_chain(O){const te=[];let de=[];for(const pe of O){let xe=null;if(pe.length===6&&pe.startsWith("<0x")&&pe.endsWith(">")){const Fe=parseInt(pe.slice(3,5),16);isNaN(Fe)||(xe=Fe)}if(xe!==null)de.push(xe);else{if(de.length>0){const Fe=this.text_decoder.decode(Uint8Array.from(de));te.push(Fe),de=[]}te.push(pe)}}if(de.length>0){const pe=this.text_decoder.decode(Uint8Array.from(de));te.push(pe),de=[]}return te}}class dt extends Ue{decode_chain(O){return[O.join("")]}}class At extends Ue{constructor(O){super(O),this.content=this.config.content,this.start=this.config.start,this.stop=this.config.stop}decode_chain(O){return O.map(te=>{let de=0;for(let xe=0;xe<this.start&&te[xe]===this.content;++xe){de=xe+1;continue}let pe=te.length;for(let xe=0;xe<this.stop;++xe){const Fe=te.length-xe-1;if(te[Fe]===this.content){pe=Fe;continue}else break}return te.slice(de,pe)})}}class Xe extends Ue{constructor(O){super(O),this.cleanup=O.cleanup}decode_chain(O){return O.map((te,de)=>(de!==0&&(te.startsWith(this.config.prefix)?te=te.replace(this.config.prefix,""):te=" "+te),this.cleanup&&(te=B(te)),te))}}class We extends Ue{constructor(O){super(O),this.byte_decoder=L,this.text_decoder=new TextDecoder("utf-8",{fatal:!1,ignoreBOM:!0}),this.end_of_word_suffix=null}convert_tokens_to_string(O){const te=O.join(""),de=new Uint8Array([...te].map(xe=>this.byte_decoder[xe]));return this.text_decoder.decode(de)}decode_chain(O){const te=[];let de=[];for(const pe of O)this.added_tokens.find(xe=>xe.content===pe)!==void 0?(de.length>0&&(te.push(this.convert_tokens_to_string(de)),de=[]),te.push(pe)):de.push(pe);return de.length>0&&te.push(this.convert_tokens_to_string(de)),te}}class yt extends Ue{constructor(O){super(O),this.pad_token=this.config.pad_token,this.word_delimiter_token=this.config.word_delimiter_token,this.cleanup=this.config.cleanup}convert_tokens_to_string(O){if(O.length===0)return"";const te=[O[0]];for(let xe=1;xe<O.length;++xe)O[xe]!==te.at(-1)&&te.push(O[xe]);let pe=te.filter(xe=>xe!==this.pad_token).join("");return this.cleanup&&(pe=B(pe).replaceAll(this.word_delimiter_token," ").trim()),pe}decode_chain(O){return[this.convert_tokens_to_string(O)]}}class Mt extends Ue{constructor(O){super(O),this.decoders=O.decoders.map(te=>Ue.fromConfig(te))}decode_chain(O){return this.decoders.reduce((te,de)=>de.decode_chain(te),O)}}class hr extends Ue{constructor(O){super(O),this.suffix=this.config.suffix}decode_chain(O){return O.map((te,de)=>te.replaceAll(this.suffix,de===O.length-1?"":" "))}}class Vt extends Ue{decode_chain(O){let te="";for(let de=1;de<O.length;de+=2)te+=O[de];return[te]}}class tn extends se{constructor(O){super(),this.replacement=O.replacement,this.strRep=O.str_rep||this.replacement,this.prepend_scheme=O.prepend_scheme??"always"}pre_tokenize_text(O,{section_index:te=void 0}={}){let de=O.replaceAll(" ",this.strRep);return!de.startsWith(this.replacement)&&(this.prepend_scheme==="always"||this.prepend_scheme==="first"&&te===0)&&(de=this.strRep+de),[de]}}class hn extends Ue{constructor(O){super(O),this.replacement=O.replacement}decode_chain(O){const te=[];for(let de=0;de<O.length;++de){let pe=O[de].replaceAll(this.replacement," ");de==0&&pe.startsWith(" ")&&(pe=pe.substring(1)),te.push(pe)}return te}}class ar extends re{constructor(O){super(O),this.charsmap=O.precompiled_charsmap}normalize(O){return O=O.replace(/[\u0001-\u0008\u000B\u000E-\u001F\u007F\u008F\u009F]/gm,""),O=O.replace(/[\u0009\u000A\u000C\u000D\u00A0\u1680\u2000-\u200F\u2028\u2029\u202F\u205F\u2581\u3000\uFEFF\uFFFD]/gm," "),O.includes("ï½")?O=O.split("ï½").map(de=>de.normalize("NFKC")).join("ï½"):O=O.normalize("NFKC"),O}}class On extends se{constructor(O){super(),this.tokenizers=O.pretokenizers.map(te=>se.fromConfig(te))}pre_tokenize_text(O,te){return this.tokenizers.reduce((de,pe)=>pe.pre_tokenize(de,te),[O])}}class ma extends se{constructor(O){super()}pre_tokenize_text(O,te){return O.match(/\w+|[^\w\s]+/g)||[]}}class fa extends se{constructor(O){super()}pre_tokenize_text(O,te){return w(O)}}class _a extends se{constructor(O){super(),this.config=O,this.pattern=g(this.config.pattern),this.content=this.config.content}
2845pre_tokenize_text(O,te){return this.pattern===null?[O]:[O.replaceAll(this.pattern,this.config.content)]}}class Ur extends se{constructor(O){super(),this._length=O.length}pre_tokenize_text(O,te){const de=[];for(let pe=0;pe<O.length;pe+=this._length)de.push(O.slice(pe,pe+this._length));return de}}const mn=["bos_token","eos_token","unk_token","sep_token","pad_token","cls_token","mask_token"];function Nn(ye,O,te,de){for(const pe of Object.keys(ye)){const xe=O-ye[pe].length,Fe=te(pe),ct=new Array(xe).fill(Fe);ye[pe]=de==="right"?(0,s.mergeArrays)(ye[pe],ct):(0,s.mergeArrays)(ct,ye[pe])}}function Ms(ye,O){for(const te of Object.keys(ye))ye[te].length=O}class kt extends n.Callable{return_token_type_ids=!1;padding_side="right";constructor(O,te){super(),this.config=te,this.normalizer=re.fromConfig(O.normalizer),this.pre_tokenizer=se.fromConfig(O.pre_tokenizer),this.model=W.fromConfig(O.model,te),this.post_processor=ze.fromConfig(O.post_processor),this.decoder=Ue.fromConfig(O.decoder),this.special_tokens=[],this.all_special_ids=[],this.added_tokens=[];for(const de of O.added_tokens){const pe=new k(de);this.added_tokens.push(pe),this.model.tokens_to_ids.set(pe.content,pe.id),this.model.vocab[pe.id]=pe.content,pe.special&&(this.special_tokens.push(pe.content),this.all_special_ids.push(pe.id))}if(this.additional_special_tokens=te.additional_special_tokens??[],this.special_tokens.push(...this.additional_special_tokens),this.special_tokens=[...new Set(this.special_tokens)],this.decoder&&(this.decoder.added_tokens=this.added_tokens,this.decoder.end_of_word_suffix=this.model.end_of_word_suffix),this.added_tokens_splitter=new l.DictionarySplitter(this.added_tokens.map(de=>de.content)),this.added_tokens_map=new Map(this.added_tokens.map(de=>[de.content,de])),this.mask_token=this.getToken("mask_token"),this.mask_token_id=this.model.tokens_to_ids.get(this.mask_token),this.pad_token=this.getToken("pad_token","eos_token"),this.pad_token_id=this.model.tokens_to_ids.get(this.pad_token),this.sep_token=this.getToken("sep_token"),this.sep_token_id=this.model.tokens_to_ids.get(this.sep_token),this.unk_token=this.getToken("unk_token"),this.unk_token_id=this.model.tokens_to_ids.get(this.unk_token),this.bos_token=this.getToken("bos_token"),this.bos_token_id=this.model.tokens_to_ids.get(this.bos_token),this.eos_token=this.getToken("eos_token"),this.eos_token_id=this.model.tokens_to_ids.get(this.eos_token),this.model_max_length=te.model_max_length,this.remove_space=te.remove_space,this.clean_up_tokenization_spaces=te.clean_up_tokenization_spaces??!0,this.do_lowercase_and_remove_accent=te.do_lowercase_and_remove_accent??!1,te.padding_side&&(this.padding_side=te.padding_side),this.add_bos_token=te.add_bos_token,this.add_eos_token=te.add_eos_token,this.legacy=!1,this.chat_template=te.chat_template??null,Array.isArray(this.chat_template)){const de=Object.create(null);for(const{name:pe,template:xe}of this.chat_template){if(typeof pe!="string"||typeof xe!="string")throw new Error('Chat template must be a list of objects with "name" and "template" properties');de[pe]=xe}this.chat_template=de}this._compiled_template_cache=new Map}getToken(...O){for(const te of O){const de=this.config[te];if(de)if(typeof de=="object"){if(de.__type==="AddedToken")return de.content;throw Error(`Unknown token: ${de}`)}else return de}return null}static async from_pretrained(O,{progress_callback:te=null,config:de=null,cache_dir:pe=null,local_files_only:xe=!1,revision:Fe="main",legacy:ct=null}={}){const ut=await d(O,{progress_callback:te,config:de,cache_dir:pe,local_files_only:xe,revision:Fe,legacy:ct});return new this(...ut)}_call(O,{text_pair:te=null,add_special_tokens:de=!0,padding:pe=!1,truncation:xe=null,max_length:Fe=null,return_tensor:ct=!0,return_token_type_ids:ut=null}={}){const pt=Array.isArray(O);let st;if(pt){if(O.length===0)throw Error("text array must be non-empty");if(te!==null){if(Array.isArray(te)){if(O.length!==te.length)throw Error("text and text_pair must have the same length")}else throw Error("text_pair must also be an array");st=O.map((jt,Or)=>this._encode_plus(jt,{text_pair:te[Or],add_special_tokens:de,return_token_type_ids:ut}))}else st=O.map(jt=>this._encode_plus(jt,{add_special_tokens:de,return_token_type_ids:ut}))}else{if(O==null)throw Error("text may not be null or undefined");if(Array.isArray(te))throw Error("When specifying `text_pair`, since `text` is a string, `text_pair` must also be a string (i.e., not an array).");st=[this._encode_plus(O,{text_pair:te,add_special_tokens:de,return_token_type_ids:ut})]}if(Fe===null?Fe=this.model_max_length:xe===null&&(pe===!0?(console.warn("`max_length` is ignored when `padding: true` and there is no truncation strategy. To pad to max length, use `padding: 'max_length'`."),Fe=this.model_max_length):pe===!1&&(console.warn("Truncation was not explicitly activated but `max_length` is provided a specific value, please use `truncation: true` to explicitly truncate examples to max length."),xe=!0)),pe===!0&&(Fe=Math.min((0,i.max)(st.map(jt=>jt.input_ids.length))[0],Fe??1/0)),Fe=Math.min(Fe,this.model_max_length??1/0),pe||xe)for(let jt=0;jt<st.length;++jt)st[jt].input_ids.length!==Fe&&(st[jt].input_ids.length>Fe?xe&&Ms(st[jt],Fe):pe&&Nn(st[jt],Fe,Or=>Or==="input_ids"?this.pad_token_id:0,this.padding_side));const Xt={};if(ct){if(!(pe&&xe)&&st.some(Or=>{for(const un of Object.keys(Or))if(Or[un].length!==st[0][un]?.length)return!0;return!1}))throw Error("Unable to create tensor, you should probably activate truncation and/or padding with 'padding=true' and 'truncation=true' to have batched tensors with the same length.");const jt=[st.length,st[0].input_ids.length];for(const Or of Object.keys(st[0]))Xt[Or]=new o.Tensor("int64",BigInt64Array.from(st.flatMap(un=>un[Or]).map(BigInt)),jt)}
2845else{for(const jt of Object.keys(st[0]))Xt[jt]=st.map(Or=>Or[jt]);if(!pt)for(const jt of Object.keys(Xt))Xt[jt]=Xt[jt][0]}return Xt}_encode_text(O){if(O===null)return null;const te=this.added_tokens_splitter.split(O);for(let pe=0;pe<te.length;++pe){const xe=this.added_tokens_map.get(te[pe]);xe&&(xe.lstrip&&pe>0&&(te[pe-1]=te[pe-1].trimEnd()),xe.rstrip&&pe<te.length-1&&(te[pe+1]=te[pe+1].trimStart()))}return te.flatMap((pe,xe)=>{if(pe.length===0)return[];if(this.added_tokens_map.has(pe))return[pe];if(this.remove_space===!0&&(pe=pe.trim().split(/\s+/).join(" ")),this.do_lowercase_and_remove_accent&&(pe=h(pe)),this.normalizer!==null&&(pe=this.normalizer(pe)),pe.length===0)return[];const Fe=this.pre_tokenizer!==null?this.pre_tokenizer(pe,{section_index:xe}):[pe];return this.model(Fe)})}_encode_plus(O,{text_pair:te=null,add_special_tokens:de=!0,return_token_type_ids:pe=null}={}){const{tokens:xe,token_type_ids:Fe}=this._tokenize_helper(O,{pair:te,add_special_tokens:de}),ct=this.model.convert_tokens_to_ids(xe),ut={input_ids:ct,attention_mask:new Array(ct.length).fill(1)};return(pe??this.return_token_type_ids)&&Fe&&(ut.token_type_ids=Fe),ut}_tokenize_helper(O,{pair:te=null,add_special_tokens:de=!1}={}){const pe=this._encode_text(O),xe=this._encode_text(te);return this.post_processor?this.post_processor(pe,xe,{add_special_tokens:de}):{tokens:(0,s.mergeArrays)(pe??[],xe??[])}}tokenize(O,{pair:te=null,add_special_tokens:de=!1}={}){return this._tokenize_helper(O,{pair:te,add_special_tokens:de}).tokens}encode(O,{text_pair:te=null,add_special_tokens:de=!0,return_token_type_ids:pe=null}={}){return this._encode_plus(O,{text_pair:te,add_special_tokens:de,return_token_type_ids:pe}).input_ids}batch_decode(O,te={}){return O instanceof o.Tensor&&(O=O.tolist()),O.map(de=>this.decode(de,te))}decode(O,te={}){if(O instanceof o.Tensor&&(O=m(O)),!Array.isArray(O)||O.length===0||!(0,s.isIntegralNumber)(O[0]))throw Error("token_ids must be a non-empty array of integers.");return this.decode_single(O,te)}decode_single(O,{skip_special_tokens:te=!1,clean_up_tokenization_spaces:de=null}){let pe=this.model.convert_ids_to_tokens(O);te&&(pe=pe.filter(Fe=>!this.special_tokens.includes(Fe)));let xe=this.decoder?this.decoder(pe):pe.join(" ");return this.decoder&&this.decoder.end_of_word_suffix&&(xe=xe.replaceAll(this.decoder.end_of_word_suffix," "),te&&(xe=xe.trim())),(de??this.clean_up_tokenization_spaces)&&(xe=B(xe)),xe}get_chat_template({chat_template:O=null,tools:te=null}={}){if(this.chat_template&&typeof this.chat_template=="object"){const de=this.chat_template;if(O!==null&&Object.hasOwn(de,O))O=de[O];else if(O===null)if(te!==null&&"tool_use"in de)O=de.tool_use;else if("default"in de)O=de.default;else throw Error(`This model has multiple chat templates with no default specified! Please either pass a chat template or the name of the template you wish to use to the 'chat_template' argument. Available template names are ${Object.keys(de).sort()}.`)}else if(O===null)if(this.chat_template)O=this.chat_template;else throw Error("Cannot use apply_chat_template() because tokenizer.chat_template is not set and no template argument was passed! For information about writing templates and setting the tokenizer.chat_template attribute, please see the documentation at https://huggingface.co/docs/transformers/main/en/chat_templating");return O}apply_chat_template(O,{tools:te=null,documents:de=null,chat_template:pe=null,add_generation_prompt:xe=!1,tokenize:Fe=!0,padding:ct=!1,truncation:ut=!1,max_length:pt=null,return_tensor:st=!0,return_dict:Xt=!1,tokenizer_kwargs:jt={},...Or}={}){if(pe=this.get_chat_template({chat_template:pe,tools:te}),typeof pe!="string")throw Error(`chat_template must be a string, but got ${typeof pe}`);let un=this._compiled_template_cache.get(pe);un===void 0&&(un=new u.Template(pe),this._compiled_template_cache.set(pe,un));const gr=Object.create(null);for(const Br of mn){const Dn=this.getToken(Br);Dn&&(gr[Br]=Dn)}const Ar=un.render({messages:O,add_generation_prompt:xe,tools:te,documents:de,...gr,...Or});if(Fe){const Br=this._call(Ar,{add_special_tokens:!1,padding:ct,truncation:ut,max_length:pt,return_tensor:st,...jt});return Xt?Br:Br.input_ids}return Ar}}class Er extends kt{return_token_type_ids=!0}class us extends kt{return_token_type_ids=!0}class cs extends kt{return_token_type_ids=!0}class pr extends kt{return_token_type_ids=!0}class Ft extends kt{return_token_type_ids=!0}class ds extends kt{return_token_type_ids=!0}class S extends kt{return_token_type_ids=!0}class ie extends kt{return_token_type_ids=!0}class X extends kt{return_token_type_ids=!0}class ae extends kt{}class le extends kt{}class _e extends kt{return_token_type_ids=!0;constructor(O,te){super(O,te),console.warn('WARNING: `XLMTokenizer` is not yet supported by Hugging Face\'s "fast" tokenizers library. Therefore, you may experience slightly inaccurate results.')}}class Oe extends kt{return_token_type_ids=!0}class gt extends kt{}class Et extends kt{}class at extends kt{}class Ot extends kt{constructor(O,te){super(O,te),this.languageRegex=/^[a-z]{2}_[A-Z]{2}$/,this.language_codes=this.special_tokens.filter(de=>this.languageRegex.test(de)),this.lang_to_token=de=>de}_build_translation_inputs(O,te,de){return Rr(this,O,te,de)}}class lt extends Ot{}class St extends kt{}class rr extends kt{}const Hr="â";class kr extends kt{padding_side="left";constructor(O,te){super(O,te),this.legacy=te.legacy??!0,this.legacy||(this.normalizer=null,this.pre_tokenizer=new tn({replacement:Hr,prepe
2845nd_scheme:"first"}))}_encode_text(O){if(O===null)return null;if(this.legacy||O.length===0)return super._encode_text(O);let te=super._encode_text(Hr+O.replaceAll(Hr," "));return te.length>1&&te[0]===Hr&&this.special_tokens.includes(te[1])&&(te=te.slice(1)),te}}class yr extends kt{}class ln extends kt{}class vs extends kt{}class En extends kt{}class ps extends kt{}class Kr extends kt{}class fn extends kt{}class qr extends kt{}class vr extends kt{}function Rr(ye,O,te,de){if(!("language_codes"in ye)||!Array.isArray(ye.language_codes))throw new Error("Tokenizer must have `language_codes` attribute set and it should be an array of language ids.");if(!("languageRegex"in ye)||!(ye.languageRegex instanceof RegExp))throw new Error("Tokenizer must have `languageRegex` attribute set and it should be a regular expression.");if(!("lang_to_token"in ye)||typeof ye.lang_to_token!="function")throw new Error("Tokenizer must have `lang_to_token` attribute set and it should be a function.");const pe=de.src_lang,xe=de.tgt_lang;if(!ye.language_codes.includes(xe))throw new Error(`Target language code "${xe}" is not valid. Must be one of: {${ye.language_codes.join(", ")}}`);if(pe!==void 0){if(!ye.language_codes.includes(pe))throw new Error(`Source language code "${pe}" is not valid. Must be one of: {${ye.language_codes.join(", ")}}`);for(const Fe of ye.post_processor.config.single)if("SpecialToken"in Fe&&ye.languageRegex.test(Fe.SpecialToken.id)){Fe.SpecialToken.id=ye.lang_to_token(pe);break}}return de.forced_bos_token_id=ye.model.convert_tokens_to_ids([ye.lang_to_token(xe)])[0],ye._call(O,te)}class jn extends kt{constructor(O,te){super(O,te),this.languageRegex=/^[a-z]{3}_[A-Z][a-z]{3}$/,this.language_codes=this.special_tokens.filter(de=>this.languageRegex.test(de)),this.lang_to_token=de=>de}_build_translation_inputs(O,te,de){return Rr(this,O,te,de)}}class Zn extends kt{constructor(O,te){super(O,te),this.languageRegex=/^__[a-z]{2,3}__$/,this.language_codes=this.special_tokens.filter(de=>this.languageRegex.test(de)).map(de=>de.slice(2,-2)),this.lang_to_token=de=>`__${de}__`}_build_translation_inputs(O,te,de){return Rr(this,O,te,de)}}class ea extends kt{get timestamp_begin(){return this.model.convert_tokens_to_ids(["<|notimestamps|>"])[0]+1}_decode_asr(O,{return_timestamps:te=!1,return_language:de=!1,time_precision:pe=null,force_full_sequences:xe=!0}={}){if(pe===null)throw Error("Must specify time_precision");let Fe=null;const ct=te==="word";function ut(){return{language:Fe,timestamp:[null,null],text:""}}const pt=[];let st=ut(),Xt=0;const jt=this.timestamp_begin,un=jt+1500;let gr=[],Ar=[],Br=!1,Dn=null;const Un=new Set(this.all_special_ids);for(const Yr of O){const Wr=Yr.tokens,yn=ct?Yr.token_timestamps:null;let Wn=null,gs=jt;if("stride"in Yr){const[dn,Nr,rn]=Yr.stride;if(Xt-=Nr,Dn=dn-rn,Nr&&(gs=Nr/pe+jt),rn)for(let zr=Wr.length-1;zr>=0;--zr){const zn=Number(Wr[zr]);if(zn>=jt){if(Wn!==null&&(zn-jt)*pe<Dn)break;Wn=zn}}}let Xr=[],es=[];for(let dn=0;dn<Wr.length;++dn){const Nr=Number(Wr[dn]);if(Un.has(Nr)){const rn=this.decode([Nr]),zr=p.WHISPER_LANGUAGE_MAPPING.get(rn.slice(2,-2));if(zr!==void 0){if(Fe!==null&&zr!==Fe&&!te){gr.push(Xr);const zn=this.findLongestCommonSequence(gr)[0],wa=this.decode(zn);st.text=wa,pt.push(st),gr=[],Xr=[],st=ut()}Fe=st.language=zr}}else if(Nr>
2845=jt&&Nr<=un){const rn=(Nr-jt)*pe+Xt,zr=(0,i.round)(rn,2);if(Wn!==null&&Nr>=Wn)Br=!0;else if(Br||gr.length>0&&Nr<gs)Br=!1;else if(st.timestamp[0]===null)st.timestamp[0]=zr;else if(zr!==st.timestamp[0]){st.timestamp[1]=zr,gr.push(Xr),ct&&Ar.push(es);const[zn,wa]=this.findLongestCommonSequence(gr,Ar),Is=this.decode(zn);st.text=Is,ct&&(st.words=this.collateWordTimestamps(zn,wa,Fe)),pt.push(st),gr=[],Xr=[],Ar=[],es=[],st=ut()}}else if(Xr.push(Nr),ct){let rn=(0,i.round)(yn[dn]+Xt,2),zr;if(dn+1<yn.length){zr=(0,i.round)(yn[dn+1]+Xt,2);const zn=this.decode([Nr]);v.test(zn)&&(zr=(0,i.round)(Math.min(rn+pe,zr),2))}else zr=null;es.push([rn,zr])}}if("stride"in Yr){const[dn,Nr,rn]=Yr.stride;Xt+=dn-rn}Xr.length>0?(gr.push(Xr),ct&&Ar.push(es)):gr.every(dn=>dn.length===0)&&(st=ut(),gr=[],Xr=[],Ar=[],es=[])}if(gr.length>0){if(xe&&te)throw new Error("Whisper did not predict an ending timestamp, which can happen if audio is cut off in the middle of a word. Also make sure WhisperTimeStampLogitsProcessor was used during generation.");const[Yr,Wr]=this.findLongestCommonSequence(gr,Ar),yn=this.decode(Yr);st.text=yn,ct&&(st.words=this.collateWordTimestamps(Yr,Wr,Fe)),pt.push(st)}let cn=Object.create(null);const Jn=pt.map(Yr=>Yr.text).join("");if(te||de){for(let Yr=0;Yr<pt.length;++Yr){const Wr=pt[Yr];te||delete Wr.timestamp,de||delete Wr.language}if(ct){const Yr=[];for(const Wr of pt)for(const yn of Wr.words)Yr.push(yn);cn={chunks:Yr}}else cn={chunks:pt}}return[Jn,cn]}findLongestCommonSequence(O,te=null){let de=O[0],pe=de.length,xe=[];const Fe=Array.isArray(te)&&te.length>0;let ct=Fe?[]:null,ut=Fe?te[0]:null;for(let pt=1;pt<O.length;++pt){const st=O[pt];let Xt=0,jt=[pe,pe,0,0];const Or=st.length;for(let cn=1;cn<pe+Or;++cn){const Jn=Math.max(0,pe-cn),Yr=Math.min(pe,pe+Or-cn),Wr=de.slice(Jn,Yr),yn=Math.max(0,cn-pe),Wn=Math.min(Or,cn),gs=st.slice(yn,Wn);if(Wr.length!==gs.length)throw new Error("There is a bug within whisper `decode_asr` function, please report it. Dropping to prevent bad inference.");let Xr;Fe?Xr=Wr.filter((Nr,rn)=>Nr===gs[rn]&&ut[Jn+rn]<=te[pt][yn+rn]).length:Xr=Wr.filter((Nr,rn)=>Nr===gs[rn]).length;const es=cn/1e4,dn=Xr/cn+es;Xr>1&&dn>Xt&&(Xt=dn,jt=[Jn,Yr,yn,Wn])}const[un,gr,Ar,Br]=jt,Dn=Math.floor((gr+un)/2),Un=Math.floor((Br+Ar)/2);xe.push(...de.slice(0,Dn)),de=st.slice(Un),pe=de.length,Fe&&(ct.push(...ut.slice(0,Dn)),ut=te[pt].slice(Un))}return xe.push(...de),Fe?(ct.push(...ut),[xe,ct]):[xe,[]]}collateWordTimestamps(O,te,de){const[pe,xe,Fe]=this.combineTokensIntoWords(O,de),ct=[];for(let ut=0;ut<pe.length;++ut){const pt=Fe[ut];ct.push({text:pe[ut],timestamp:[te[pt.at(0)][0],te[pt.at(-1)][1]]})}return ct}combineTokensIntoWords(O,te,de=`"'â¡¿([{-`,pe=`"'.ã,ï¼!ï¼?ï¼:ï¼â)]}ã`){te=te??"english";let xe,Fe,ct;return["chinese","japanese","thai","lao","myanmar"].includes(te)?[xe,Fe,ct]=this.splitTokensOnUnicode(O):[xe,Fe,ct]=this.splitTokensOnSpaces(O),this.mergePunctuations(xe,Fe,ct,de,pe)}decode(O,te){let de;return te?.decode_with_timestamps?(O instanceof o.Tensor&&(O=m(O)),de=this.decodeWithTimestamps(O,te)):de=super.decode(O,te),de}decodeWithTimestamps(O,te){const de=te?.time_precision??.02,pe=Array.from(this.all_special_ids).at(-1)+1;let xe=[[]];for(let Fe of O)if(Fe=Number(Fe),Fe>=pe){const ct=((Fe-pe)*de).toFixed(2);xe.push(`<|${ct}|>`),xe.push([])}else xe[xe.length-1].push(Fe);return xe=xe.map(Fe=>typeof Fe=="string"?Fe:super.decode(Fe,te)),xe.join("")}splitTokensOnUnicode(O){const te=this.decode(O,{decode_with_timestamps:!0}),de="�",pe=[],xe=[],Fe=[];let ct=[],ut=[],pt=0;for(let st=0;st<O.length;++st){const Xt=O[st];ct.push(Xt),ut.push(st);const jt=this.decode(ct,{decode_with_timestamps:!0});(!jt.includes(de)||te[pt+jt.indexOf(de)]===de)&&(pe.push(jt),xe.push(ct),Fe.push(ut),ct=[],ut=[],pt+=jt.length)}return[pe,xe,Fe]}splitTokensOnSpaces(O){const[te,de,pe]=this.splitTokensOnUnicode(O),xe=[],Fe=[],ct=[],ut=new RegExp(`^[${b}]$`,"gu");for(let pt=0;pt<te.length;++pt){const st=te[pt],Xt=de[pt],jt=pe[pt],Or=Xt[0]>=this.model.tokens_to_ids.get("<|endoftext|>"),un=st.startsWith(" "),gr=st.trim(),Ar=ut.test(gr);if(Or||un||Ar||xe.length===0)xe.push(st),Fe.push(Xt),ct.push(jt);else{const Br=xe.length-1;xe[Br]+=st,Fe[Br].push(...Xt),ct[Br].push(...jt)}}return[xe,Fe,ct]}mergePunctuations(O,te,de,pe,xe){const Fe=structuredClone(O),ct=structuredClone(te),ut=structuredClone(de);let pt=Fe.length-2,st=Fe.length-1;for(;pt>=0;)Fe[pt].startsWith(" ")&&pe.includes(Fe[pt].trim())?(Fe[st]=Fe[pt]+
2845Fe[st],ct[st]=(0,s.mergeArrays)(ct[pt],ct[st]),ut[st]=(0,s.mergeArrays)(ut[pt],ut[st]),Fe[pt]="",ct[pt]=[],ut[pt]=[]):st=pt,--pt;for(pt=0,st=1;st<Fe.length;)!Fe[pt].endsWith(" ")&&xe.includes(Fe[st])?(Fe[pt]+=Fe[st],ct[pt]=(0,s.mergeArrays)(ct[pt],ct[st]),ut[pt]=(0,s.mergeArrays)(ut[pt],ut[st]),Fe[st]="",ct[st]=[],ut[st]=[]):pt=st,++st;return[Fe.filter(Xt=>Xt),ct.filter(Xt=>Xt.length>0),ut.filter(Xt=>Xt.length>0)]}}class Bs extends kt{}class xs extends kt{}class Es extends kt{}class _n extends kt{constructor(O,te){super(O,te),this.languageRegex=/^(>>\w+<<)\s*/g,this.supported_language_codes=this.model.vocab.filter(de=>this.languageRegex.test(de)),console.warn('WARNING: `MarianTokenizer` is not yet supported by Hugging Face\'s "fast" tokenizers library. Therefore, you may experience slightly inaccurate results.')}_encode_text(O){if(O===null)return null;const[te,...de]=O.trim().split(this.languageRegex);if(de.length===0)return super._encode_text(te);if(de.length===2){const[pe,xe]=de;return this.supported_language_codes.includes(pe)||console.warn(`Unsupported language code "${pe}" detected, which may lead to unexpected behavior. Should be one of: ${JSON.stringify(this.supported_language_codes)}`),(0,s.mergeArrays)([pe],super._encode_text(xe))}}}class wn extends kt{}class Ke extends kt{}class Ze extends kt{}class ft extends kt{}class Dr extends kt{}class ta extends kt{constructor(O,te){super(O,te),this.decoder=new Vt({})}}class Ds extends kt{}class ra extends kt{}class ii{static TOKENIZER_CLASS_MAPPING={T5Tokenizer:gt,DistilBertTokenizer:ae,CamembertTokenizer:le,DebertaTokenizer:Ft,DebertaV2Tokenizer:ds,BertTokenizer:Er,HerbertTokenizer:S,ConvBertTokenizer:ie,RoFormerTokenizer:X,XLMTokenizer:_e,ElectraTokenizer:Oe,MobileBertTokenizer:cs,SqueezeBertTokenizer:pr,AlbertTokenizer:us,GPT2Tokenizer:Et,BartTokenizer:at,MBartTokenizer:Ot,MBart50Tokenizer:lt,RobertaTokenizer:St,WhisperTokenizer:ea,CodeGenTokenizer:Bs,CLIPTokenizer:xs,SiglipTokenizer:Es,MarianTokenizer:_n,BloomTokenizer:rr,NllbTokenizer:jn,M2M100Tokenizer:Zn,LlamaTokenizer:kr,CodeLlamaTokenizer:yr,XLMRobertaTokenizer:ln,MPNetTokenizer:vs,FalconTokenizer:En,GPTNeoXTokenizer:ps,EsmTokenizer:Kr,Wav2Vec2CTCTokenizer:wn,BlenderbotTokenizer:Ke,BlenderbotSmallTokenizer:Ze,SpeechT5Tokenizer:ft,NougatTokenizer:Dr,VitsTokenizer:ta,Qwen2Tokenizer:fn,GemmaTokenizer:qr,Grok1Tokenizer:vr,CohereTokenizer:Ds,MgpstrTokenizer:ra,PreTrainedTokenizer:kt};static async from_pretrained(O,{progress_callback:te=null,config:de=null,cache_dir:pe=null,local_files_only:xe=!1,revision:Fe="main",legacy:ct=null}={}){const[ut,pt]=await d(O,{progress_callback:te,config:de,cache_dir:pe,local_files_only:xe,revision:Fe,legacy:ct}),st=pt.tokenizer_class?.replace(/Fast$/,"")??"PreTrainedTokenizer";let Xt=this.TOKENIZER_CLASS_MAPPING[st];return Xt||(console.warn(`Unknown tokenizer class "${st}", attempting to construct from base class.`),Xt=kt),new Xt(ut,pt)}}}),
2845"./src/utils/audio.js":((e,t,r)=>{r.r(t),r.d(t,{RawAudio:()=>j,hamming:()=>c,hanning:()=>d,mel_filter_bank:()=>P,read_audio:()=>u,spectrogram:()=>y,window_function:()=>$});var n=r("./src/utils/hub.js"),s=r("./src/utils/maths.js"),a=r("./src/utils/core.js"),i=r("./src/env.js"),o=r("./src/utils/tensor.js"),l=r("?7992");async function u(F,R){if(typeof AudioContext>"u")throw Error("Unable to load audio from path/URL since `AudioContext` is not available in your environment. Instead, audio data should be passed directly to the pipeline/processor. For more information and some example code, see https://huggingface.co/docs/transformers.js/guides/node-audio-processing.");const L=await(await(0,n.getFile)(F)).arrayBuffer(),Q=new AudioContext({sampleRate:R});typeof R>"u"&&console.warn(`No sampling rate provided, using default of ${Q.sampleRate}Hz.`);const ne=await Q.decodeAudioData(L);let re;if(ne.numberOfChannels===2){const ce=Math.sqrt(2),ge=ne.getChannelData(0),q=ne.getChannelData(1);re=new Float32Array(ge.length);for(let V=0;V<ne.length;++V)re[V]=ce*(ge[V]+q[V])/2}else re=ne.getChannelData(0);return re}function p(F,R){if(F<1)return new Float64Array;if(F===1)return new Float64Array([1]);const L=1-R,Q=2*Math.PI/(F-1),ne=new Float64Array(F);for(let re=0;re<F;++re)ne[re]=R-L*Math.cos(re*Q);return ne}function d(F){return p(F,.5)}function c(F){return p(F,.54)}const g={htk:F=>2595*Math.log10(1+F/700),kaldi:F=>1127*Math.log(1+F/700),slaney:(F,R=1e3,L=15,Q=27/Math.log(6.4))=>F>=R?L+Math.log(F/R)*Q:3*F/200};function A(F,R="htk"){const L=g[R];if(!L)throw new Error('mel_scale should be one of "htk", "slaney" or "kaldi".');return typeof F=="number"?L(F):F.map(Q=>L(Q))}const m={htk:F=>700*(10**(F/2595)-1),kaldi:F=>700*(Math.exp(F/1127)-1),slaney:(F,R=1e3,L=15,Q=Math.log(6.4)/27)=>F>=L?R*Math.exp(Q*(F-L)):200*F/3};function B(F,R="htk"){const L=m[R];if(!L)throw new Error('mel_scale should be one of "htk", "slaney" or "kaldi".');return typeof F=="number"?L(F):F.map(Q=>L(Q))}function f(F,R){const L=Float64Array.from({length:R.length-1},(ce,ge)=>R[ge+1]-R[ge]),Q=Array.from({length:F.length},()=>new Array(R.length));for(let ce=0;ce<F.length;++ce){const ge=Q[ce];for(let q=0;q<R.length;++q)ge[q]=R[q]-F[ce]}const ne=R.length-2,re=Array.from({length:ne},()=>new Array(F.length));for(let ce=0;ce<F.length;++ce){const ge=Q[ce];for(let q=0;q<ne;++q){const V=-ge[q]/L[q],U=ge[q+2]/L[q+1];re[q][ce]=Math.max(0,Math.min(V,U))}}return re}function h(F,R,L){const Q=(R-F)/(L-1);return Float64Array.from({length:L},(ne,re)=>F+Q*re)}function P(F,R,L,Q,ne,re=null,ce="htk",ge=!1){if(re!==null&&re!=="slaney")throw new Error('norm must be one of null or "slaney"');if(F<2)throw new Error(`Require num_frequency_bins: ${F} >= 2`);if(L>Q)throw new Error(`Require min_frequency: ${L} <= max_frequency: ${Q}`);const q=A(L,ce),V=A(Q,ce),U=h(q,V,R+2);let N=B(U,ce),oe;if(ge){const De=ne/((F-1)*2);oe=A(Float64Array.from({length:F},(Ie,je)=>je*De),ce),N=U}else oe=h(0,Math.floor(ne/2),F);const fe=f(oe,N);if(re!==null&&re==="slaney")for(let De=0;De<R;++De){const Ie=fe[De],je=2/(N[De+2]-N[De]);for(let Me=0;Me<F;++Me)Ie[Me]*=je}return fe}function _(F,R,L){const Q=new F.constructor(F.length+R+L),ne=F.length-1;for(let re=0;re<F.length;++re)Q[R+re]=F[re];for(let re=1;re<=R;++re)Q[R-re]=F[(0,a.calculateReflectOffset)(re,ne)];for(let re=1;re<=L;++re)Q[ne+R+re]=F[(0,a.calculateReflectOffset)(ne-re,ne)];return Q}function w(F,R,L,Q,ne){if(L<=0)throw new Error("reference must be greater than zero");if(Q<=0)throw new Error("min_value must be greater than zero");L=Math.max(Q,L);const re=Math.log10(L);for(let ce=0;ce<F.length;++ce)F[ce]=R*Math.log10(Math.max(Q,F[ce])-re);if(ne!==null){if(ne<=0)throw new Error("db_range must be greater than zero");const ce=(0,s.max)(F)[0]-ne;for(let ge=0;ge<F.length;++ge)F[ge]=Math.max(F[ge],ce)}return F}function b(F,R=1,L=1e-5,Q=null){return w(F,20,R,L,Q)}function v(F,R=1,L=1e-10,Q=null){return w(F,10,R,L,Q)}async function y(F,R,L,Q,{fft_length:ne=null,power:re=1,center:ce=!0,pad_mode:ge="reflect",onesided:q=!0,preemphasis:V=null,preemphasis_htk_flavor:U=!0,mel_filters:N=null,mel_floor:oe=1e-10,log_mel:fe=null,reference:De=1,min_value:Ie=1e-10,db_range:je=null,remove_dc_offset:Me=null,min_num_frames:se=null,max_num_frames:H=null,do_pad:we=!0,transpose:be=!1,mel_offset:Ce=0}={}){const Se=R.length;if(ne===null&&(ne=L),L>ne)throw Error(`frame_length (${L}) may not be larger than fft_length (${ne})`);if(Se!==L)throw new Error(`Length of the window (${Se}) must equal frame_length (${L})`);
2845if(Q<=0)throw new Error("hop_length must be greater than zero");if(re===null&&N!==null)throw new Error("You have provided `mel_filters` but `power` is `None`. Mel spectrogram computation is not yet supported for complex-valued spectrogram. Specify `power` to fix this issue.");if(!U)throw new Error("`preemphasis_htk_flavor=false` is not currently supported.");if(ce)switch(ge){case"reflect":{const Xe=Math.floor((ne-1)/2)+1;F=_(F,Xe,Xe);break}case"constant":{const Xe=Math.floor(ne/2),We=new F.constructor(F.length+2*Xe);We.set(F,Xe),F=We;break}default:throw new Error(`pad_mode="${ge}" not implemented yet.`)}let ze=Math.floor(1+Math.floor((F.length-L)/Q));se!==null&&ze<se&&(ze=se);const ve=q?Math.floor(ne/2)+1:ne;let Ve=ze,Be=ze;H!==null&&(H>ze?we&&(Be=H):Be=Ve=H);const ke=new s.FFT(ne),rt=new Float64Array(ne),Ue=new Float64Array(ke.outputBufferSize),ht=new Float32Array(ve*Be);for(let Xe=0;Xe<Ve;++Xe){const We=Xe*Q,yt=Math.min(F.length-We,L);yt!==L&&rt.fill(0,0,L);for(let Mt=0;Mt<yt;++Mt)rt[Mt]=F[We+Mt];if(Me){let Mt=0;for(let Vt=0;Vt<yt;++Vt)Mt+=rt[Vt];const hr=Mt/yt;for(let Vt=0;Vt<yt;++Vt)rt[Vt]-=hr}if(V!==null){for(let Mt=yt-1;Mt>=1;--Mt)rt[Mt]-=V*rt[Mt-1];rt[0]*=1-V}for(let Mt=0;Mt<R.length;++Mt)rt[Mt]*=R[Mt];ke.realTransform(Ue,rt);for(let Mt=0;Mt<ve;++Mt){const hr=Mt<<1;ht[Mt*Be+Xe]=Ue[hr]**2+Ue[hr+1]**2}}if(re!==null&&re!==2){const Xe=re/2;for(let We=0;We<ht.length;++We)ht[We]**=Xe}const He=N.length;let dt=await(0,o.matmul)(new o.Tensor("float32",N.flat(),[He,ve]),new o.Tensor("float32",ht,[ve,Be]));be&&(dt=dt.transpose(1,0));const At=dt.data;for(let Xe=0;Xe<At.length;++Xe)At[Xe]=Ce+Math.max(oe,At[Xe]);if(re!==null&&fe!==null){const Xe=Math.min(At.length,Ve*He);switch(fe){case"log":for(let We=0;We<Xe;++We)At[We]=Math.log(At[We]);break;case"log10":for(let We=0;We<Xe;++We)At[We]=Math.log10(At[We]);break;case"dB":if(re===1)b(At,De,Ie,je);else if(re===2)v(At,De,Ie,je);else throw new Error(`Cannot use log_mel option '${fe}' with power ${re}`);break;default:throw new Error(`log_mel must be one of null, 'log', 'log10' or 'dB'. Got '${fe}'`)}}return dt}function $(F,R,{periodic:L=!0,frame_length:Q=null,center:ne=!0}={}){const re=L?F+1:F;let ce;switch(R){case"boxcar":ce=new Float64Array(re).fill(1);break;case"hann":case"hann_window":ce=d(re);break;case"hamming":ce=c(re);break;case"povey":ce=d(re).map(ge=>Math.pow(ge,.85));break;default:throw new Error(`Unknown window type ${R}.`)}if(L&&(ce=ce.subarray(0,F)),Q===null)return ce;if(F>Q)throw new Error(`Length of the window (${F}) may not be larger than frame_length (${Q})`);return ce}function k(F,R){let L=44;const Q=new ArrayBuffer(L+F.length*4),ne=new DataView(Q);W(ne,0,"RIFF"),ne.setUint32(4,36+F.length*4,!0),W(ne,8,"WAVE"),W(ne,12,"fmt "),ne.setUint32(16,16,!0),ne.setUint16(20,3,!0),ne.setUint16(22,1,!0),ne.setUint32(24,R,!0),ne.setUint32(28,R*4,!0),ne.setUint16(32,4,!0),ne.setUint16(34,32,!0),W(ne,36,"data"),ne.setUint32(40,F.length*4,!0);for(let re=0;re<F.length;++re,L+=4)ne.setFloat32(L,F[re],!0);return Q}function W(F,R,L){for(let Q=0;Q<L.length;++Q)F.setUint8(R+Q,L.charCodeAt(Q))}class j{constructor(R,L){this.audio=R,this.sampling_rate=L}toWav(){return k(this.audio,this.sampling_rate)}toBlob(){const R=this.toWav();return new Blob([R],{type:"audio/wav"})}async save(R){let L;if(i.apis.IS_BROWSER_ENV){if(i.apis.IS_WEBWORKER_ENV)throw new Error("Unable to save a file from a Web Worker.");L=a.saveBlob}else if(i.apis.IS_FS_AVAILABLE)L=async(Q,ne)=>{let re=await ne.arrayBuffer();l.writeFileSync(Q,Buffer.from(re))};else throw new Error("Unable to save because filesystem is disabled in this environment.");await L(R,this.toBlob())}}}),
2845"./src/utils/constants.js":((e,t,r)=>{r.r(t),r.d(t,{CHAT_TEMPLATE_NAME:()=>l,CONFIG_NAME:()=>s,FEATURE_EXTRACTOR_NAME:()=>a,GENERATION_CONFIG_NAME:()=>u,GITHUB_ISSUE_URL:()=>n,IMAGE_PROCESSOR_NAME:()=>i,PROCESSOR_NAME:()=>o});const n="https://github.com/huggingface/transformers.js/issues/new/choose",s="config.json",a="preprocessor_config.json",i=a,o="processor_config.json",l="chat_template.jinja",u="generation_config.json"}),
2845"./src/utils/core.js":((e,t,r)=>{r.r(t),r.d(t,{calculateDimensions:()=>u,calculateReflectOffset:()=>g,count:()=>f,dispatchCallback:()=>n,escapeRegExp:()=>a,isIntegralNumber:()=>o,isNullishDimension:()=>l,isTypedArray:()=>i,len:()=>B,mergeArrays:()=>d,pick:()=>m,pop:()=>p,product:()=>c,reverseDictionary:()=>s,saveBlob:()=>A});function n(h,P){h&&h(P)}function s(h){return Object.fromEntries(Object.entries(h).map(([P,_])=>[_,P]))}function a(h){return h.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function i(h){return h?.prototype?.__proto__?.constructor?.name==="TypedArray"}function o(h){return Number.isInteger(h)||typeof h=="bigint"}function l(h){return h==null||h===-1}function u(h){const P=[];let _=h;for(;Array.isArray(_);)P.push(_.length),_=_[0];return P}function p(h,P,_=void 0){const w=h[P];if(w!==void 0)return delete h[P],w;if(_===void 0)throw Error(`Key ${P} does not exist in object.`);return _}function d(...h){return Array.prototype.concat.apply([],h)}function c(...h){return h.reduce((P,_)=>P.flatMap(w=>_.map(b=>[w,b])))}function g(h,P){return Math.abs((h+P)%(2*P)-P)}function A(h,P){const _=URL.createObjectURL(P),w=document.createElement("a");w.href=_,w.download=h,w.click(),w.remove(),URL.revokeObjectURL(_)}function m(h,P){return Object.assign({},...P.map(_=>{if(h[_]!==void 0)return{[_]:h[_]}}))}function B(h){let P=0;for(const _ of h)++P;return P}function f(h,P){let _=0;for(const w of h)w===P&&++_;return _}}),
2845"./src/utils/data-structures.js":((e,t,r)=>{r.r(t),r.d(t,{CharTrie:()=>s,DictionarySplitter:()=>l,LRUCache:()=>u,PriorityQueue:()=>n,TokenLattice:()=>i});class n{constructor(d=(g,A)=>g>A,c=1/0){this._heap=[],this._comparator=d,this._maxSize=c}get size(){return this._heap.length}isEmpty(){return this.size===0}peek(){return this._heap[0]}push(...d){return this.extend(d)}extend(d){for(const c of d)if(this.size<this._maxSize)this._heap.push(c),this._siftUp();else{const g=this._smallest();this._comparator(c,this._heap[g])&&(this._heap[g]=c,this._siftUpFrom(g))}return this.size}pop(){const d=this.peek(),c=this.size-1;return c>0&&this._swap(0,c),this._heap.pop(),this._siftDown(),d}replace(d){const c=this.peek();return this._heap[0]=d,this._siftDown(),c}_parent(d){return(d+1>>>1)-1}_left(d){return(d<<1)+1}_right(d){return d+1<<1}_greater(d,c){return this._comparator(this._heap[d],this._heap[c])}_swap(d,c){const g=this._heap[d];this._heap[d]=this._heap[c],this._heap[c]=g}_siftUp(){this._siftUpFrom(this.size-1)}_siftUpFrom(d){for(;d>0&&this._greater(d,this._parent(d));)this._swap(d,this._parent(d)),d=this._parent(d)}_siftDown(){let d=0;for(;this._left(d)<this.size&&this._greater(this._left(d),d)||this._right(d)<this.size&&this._greater(this._right(d),d);){const c=this._right(d)<this.size&&this._greater(this._right(d),this._left(d))?this._right(d):this._left(d);this._swap(d,c),d=c}}_smallest(){return 2**Math.floor(Math.log2(this.size))-1}}class s{constructor(){this.root=a.default()}extend(d){for(const c of d)this.push(c)}push(d){let c=this.root;for(const g of d){let A=c.children.get(g);A===void 0&&(A=a.default(),c.children.set(g,A)),c=A}c.isLeaf=!0}*commonPrefixSearch(d){let c=this.root;if(c===void 0)return;let g="";for(const A of d){if(g+=A,c=c.children.get(A),c===void 0)return;c.isLeaf&&(yield g)}}}class a{constructor(d,c){this.isLeaf=d,this.children=c}static default(){return new a(!1,new Map)}}class i{constructor(d,c,g){this.chars=Array.from(d),this.len=this.chars.length,this.bosTokenId=c,this.eosTokenId=g,this.nodes=[],this.beginNodes=Array.from({length:this.len+1},()=>[]),this.endNodes=Array.from({length:this.len+1},()=>[]);const A=new o(this.bosTokenId,0,0,0,0),m=new o(this.eosTokenId,1,this.len,0,0);this.nodes.push(A.clone()),this.nodes.push(m.clone()),this.beginNodes[this.len].push(m),this.endNodes[0].push(A)}insert(d,c,g,A){const m=this.nodes.length,B=new o(A,m,d,c,g);this.beginNodes[d].push(B),this.endNodes[d+c].push(B),this.nodes.push(B)}viterbi(){const d=this.len;let c=0;for(;c<=d;){if(this.beginNodes[c].length==0)return[];for(let f of this.beginNodes[c]){f.prev=null;let h=0,P=null;for(let _ of this.endNodes[c]){const w=_.backtraceScore+f.score;(P===null||w>h)&&(P=_.clone(),h=w)}if(P!==null)f.prev=P,f.backtraceScore=h;else return[]}++c}const g=[],m=this.beginNodes[d][0].prev;if(m===null)return[];let B=m.clone();for(;B.prev!==null;)g.push(B.clone()),B=B.clone().prev.clone();return g.reverse(),g}piece(d){return this.chars.slice(d.pos,d.pos+d.length).join("")}tokens(){return this.viterbi().map(c=>this.piece(c))}tokenIds(){return this.viterbi().map(c=>c.tokenId)}}class o{constructor(d,c,g,A,m){this.tokenId=d,this.nodeId=c,this.pos=g,this.length=A,this.score=m,this.prev=null,this.backtraceScore=0}clone(){const d=new o(this.tokenId,this.nodeId,this.pos,this.length,this.score);return d.prev=this.prev,d.backtraceScore=this.backtraceScore,d}}class l{constructor(d){this.trie=this._buildTrie(d)}_buildTrie(d){const c=Object.create(null);for(const g of d){let A=c;for(let m=0;m<g.length;++m)A=A[g[m]]??=Object.create(null);A.end=g}return c}split(d){const c=[],g=d.length;let A=0,m=0;for(;m<g;){let B=this.trie,f=null,h=m;for(;h<g&&(B=B[d[h]]);)B.end&&(f=B.end),++h;f?(m>A&&c.push(d.slice(A,m)),c.push(f),m+=f.length,A=m):++m}return A<g&&c.push(d.slice(A)),c}}class u{constructor(d){this.capacity=d,this.cache=new Map}get(d){if(!this.cache.has(d))return;const c=this.cache.get(d);return this.cache.delete(d),this.cache.set(d,c),c}put(d,c){this.cache.has(d)&&this.cache.delete(d),this.cache.set(d,c),this.cache.size>this.capacity&&this.cache.delete(this.cache.keys().next().value)}clear(){this.cache.clear()}}}),
2845"./src/utils/devices.js":((e,t,r)=>{r.r(t),r.d(t,{DEVICE_TYPES:()=>n});const n=Object.freeze({auto:"auto",gpu:"gpu",cpu:"cpu",wasm:"wasm",webgpu:"webgpu",cuda:"cuda",dml:"dml",webnn:"webnn","webnn-npu":"webnn-npu","webnn-gpu":"webnn-gpu","webnn-cpu":"webnn-cpu"})}),
2845"./src/utils/dtypes.js":((e,t,r)=>{r.r(t),r.d(t,{DATA_TYPES:()=>i,DEFAULT_DEVICE_DTYPE_MAPPING:()=>o,DEFAULT_DTYPE_SUFFIX_MAPPING:()=>l,isWebGpuFp16Supported:()=>a});var n=r("./src/env.js"),s=r("./src/utils/devices.js");const a=(function(){let u;return async function(){if(u===void 0)if(!n.apis.IS_WEBGPU_AVAILABLE)u=!1;else try{u=(await navigator.gpu.requestAdapter()).features.has("shader-f16")}catch{u=!1}return u}})(),i=Object.freeze({auto:"auto",fp32:"fp32",fp16:"fp16",q8:"q8",int8:"int8",uint8:"uint8",q4:"q4",bnb4:"bnb4",q4f16:"q4f16"}),o=Object.freeze({[s.DEVICE_TYPES.wasm]:i.q8}),l=Object.freeze({[i.fp32]:"",[i.fp16]:"_fp16",[i.int8]:"_int8",[i.uint8]:"_uint8",[i.q8]:"_quantized",[i.q4]:"_q4",[i.q4f16]:"_q4f16",[i.bnb4]:"_bnb4"})}),
2845"./src/utils/generic.js":((e,t,r)=>{r.r(t),r.d(t,{Callable:()=>n});const n=class{constructor(){let s=function(...a){return s._call(...a)};return Object.setPrototypeOf(s,new.target.prototype)}_call(...s){throw Error("Must implement _call method in subclass")}}}),
2845"./src/utils/hub.js":((e,t,r)=>{r.r(t),r.d(t,{MAX_EXTERNAL_DATA_CHUNKS:()=>o,getFile:()=>g,getModelFile:()=>h,getModelJSON:()=>_,getModelText:()=>P});var n=r("?7992"),s=r("?5af5"),a=r("./src/env.js"),i=r("./src/utils/core.js");const o=100,l={txt:"text/plain",html:"text/html",css:"text/css",js:"text/javascript",json:"application/json",png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif"};class u{constructor(y){if(this.filePath=y,this.headers=new Headers,this.exists=n.existsSync(y),this.exists){this.status=200,this.statusText="OK";let $=n.statSync(y);this.headers.set("content-length",$.size.toString()),this.updateContentType();const k=n.createReadStream(y);this.body=new ReadableStream({start(W){k.on("data",j=>W.enqueue(j)),k.on("end",()=>W.close()),k.on("error",j=>W.error(j))},cancel(){k.destroy()}})}else this.status=404,this.statusText="Not Found",this.body=null}updateContentType(){const y=this.filePath.toString().split(".").pop().toLowerCase();this.headers.set("content-type",l[y]??"application/octet-stream")}clone(){let y=new u(this.filePath);return y.exists=this.exists,y.status=this.status,y.statusText=this.statusText,y.headers=new Headers(this.headers),y}async arrayBuffer(){return(await n.promises.readFile(this.filePath)).buffer}async blob(){const y=await n.promises.readFile(this.filePath);return new Blob([y],{type:this.headers.get("content-type")})}async text(){return await n.promises.readFile(this.filePath,"utf8")}async json(){return JSON.parse(await this.text())}}function p(v,y=null,$=null){let k;try{k=new URL(v)}catch{return!1}return!(y&&!y.includes(k.protocol)||$&&!$.includes(k.hostname))}const d=/^(\b[\w\-.]+\b\/)?\b[\w\-.]{1,96}\b$/;function c(v){return!(!d.test(v)||v.includes("..")||v.includes("--")||v.endsWith(".git")||v.endsWith(".ipynb"))}async function g(v){if(a.env.useFS&&!p(v,["http:","https:","blob:"]))return new u(v instanceof URL?v.protocol==="file:"?v.pathname:v.toString():v);if(typeof process<"u"&&process?.release?.name==="node"){const y=!!Kg?.TESTING_REMOTELY,$=a.env.version,k=new Headers;if(k.set("User-Agent",`transformers.js/${$}; is_ci/${y};`),p(v,["http:","https:"],["huggingface.co","hf.co"])){const j=Kg?.HF_TOKEN??Kg?.HF_ACCESS_TOKEN;j&&k.set("Authorization",`Bearer ${j}`)}return fetch(v,{headers:k})}else return fetch(v)}const A={400:"Bad request error occurred while trying to load file",401:"Unauthorized access to file",403:"Forbidden access to file",404:"Could not locate file",408:"Request timeout error occurred while trying to load file",500:"Internal server error error occurred while trying to load file",502:"Bad gateway error occurred while trying to load file",503:"Service unavailable error occurred while trying to load file",504:"Gateway timeout error occurred while trying to load file"};function m(v,y,$){if(!$)return null;const k=A[v]??`Error (${v}) occurred while trying to load file`;throw Error(`${k}: "${y}".`)}class B{constructor(y){this.path=y}async match(y){let $=s.join(this.path,y),k=new u($);if(k.exists)return k}async put(y,$,k=void 0){let W=s.join(this.path,y);try{const j=$.headers.get("Content-Length"),F=parseInt(j??"0");let R=0;await n.promises.mkdir(s.dirname(W),{recursive:!0});const L=n.createWriteStream(W),Q=$.body.getReader();for(;;){const{done:ne,value:re}=await Q.read();if(ne)break;await new Promise((ge,q)=>{L.write(re,V=>{if(V){q(V);return}ge()})}),R+=re.length;const ce=F?R/F*100:0;k?.({progress:ce,loaded:R,total:F})}L.close()}catch(j){try{await n.promises.unlink(W)}catch{}throw j}}}async function f(v,...y){for(let $ of y)try{let k=await v.match($);if(k)return k}catch{continue}}async function h(v,y,$=!0,k={},W=!1){if(!a.env.allowLocalModels){if(k.local_files_only)throw Error("Invalid configuration detected: local models are disabled (`env.allowLocalModels=false`) but you have requested to only use local models (`local_files_only=true`).");if(!a.env.allowRemoteModels)throw Error("Invalid configuration detected: both local and remote models are disabled. Fix by setting `env.allowLocalModels` or `env.allowRemoteModels` to `true`.")}(0,i.dispatchCallback)(k.progress_callback,{status:"initiate",name:v,file:y});let j;if(!j&&a.env.useCustomCache){if(!a.env.customCache)throw Error("`env.useCustomCache=true`, but `env.customCache` is not defined.");if(!a.env.customCache.match||!a.env.customCache.put)throw new Error("`env.customCache` must be an object which implements the `match` and `put` functions of the Web Cache API. For more information, see https://developer.mozilla.org/en-US/docs/Web/API/Cache");j=a.env.customCache}if(!j&&a.env.useBrowserCache){if(typeof caches>"u")throw Error("Browser cache is not available in this environment.");try{j=await caches.open("transformers-cache")}catch(oe){console.warn("An error occurred while opening the browser cache:",oe)}}if(!j&&a.env.useFSCache){if(!a.apis.IS_FS_AVAILABLE)throw Error("File System Cache is not available in this environment.");j=new B(k.cache_dir??a.env.cacheDir)}const F=k.revision??"main",R=b(v,y),L=c(v),Q=L?b(a.env.localModelPath,R):R,ne=b(a.env.remoteHost,a.env.remotePathTemplate.replaceAll("{model}",v).replaceAll("{revision}",encodeURIComponent(F)),y);let re;
2845const ce=j instanceof B?F==="main"?R:b(v,F,y):ne;let ge=!1,q;j&&(q=await f(j,Q,ce));const V=q!==void 0;if(q===void 0){if(a.env.allowLocalModels)if(p(R,["http:","https:"])){if(k.local_files_only)throw new Error(`\`local_files_only=true\`, but attempted to load a remote file from: ${R}.`);if(!a.env.allowRemoteModels)throw new Error(`\`env.allowRemoteModels=false\`, but attempted to load a remote file from: ${R}.`)}else try{q=await g(Q),re=Q}catch(fe){console.warn(`Unable to load from local path "${Q}": "${fe}"`)}if(q===void 0||q.status===404){if(k.local_files_only||!a.env.allowRemoteModels){if($)throw Error(`\`local_files_only=true\` or \`env.allowRemoteModels=false\` and file was not found locally at "${Q}".`);return null}if(!L)throw Error(`Local file missing at "${Q}" and download aborted due to invalid model ID "${v}".`);if(q=await g(ne),q.status!==200)return m(q.status,ne,$);re=ce}ge=j&&typeof Response<"u"&&q instanceof Response&&q.status===200}(0,i.dispatchCallback)(k.progress_callback,{status:"download",name:v,file:y});let U;if(!(a.apis.IS_NODE_ENV&&W)){let oe;k.progress_callback?V&&typeof navigator<"u"&&/firefox/i.test(navigator.userAgent)?(oe=new Uint8Array(await q.arrayBuffer()),(0,i.dispatchCallback)(k.progress_callback,{status:"progress",name:v,file:y,progress:100,loaded:oe.length,total:oe.length})):oe=await w(q,fe=>{(0,i.dispatchCallback)(k.progress_callback,{status:"progress",name:v,file:y,...fe})}):oe=new Uint8Array(await q.arrayBuffer()),U=oe}if(ge&&re&&await j.match(re)===void 0)if(U)await j.put(re,new Response(U,{headers:q.headers})).catch(oe=>{console.warn(`Unable to add response to browser cache: ${oe}.`)});else{const oe=k.progress_callback?fe=>(0,i.dispatchCallback)(k.progress_callback,{status:"progress",name:v,file:y,...fe}):void 0;await j.put(re,q,oe)}if((0,i.dispatchCallback)(k.progress_callback,{status:"done",name:v,file:y}),U){if(!a.apis.IS_NODE_ENV&&W)throw new Error("Cannot return path in a browser environment.");return U}if(q instanceof u)return q.filePath;const N=await j?.match(re);if(N instanceof u)return N.filePath;if(N instanceof Response)return new Uint8Array(await N.arrayBuffer());if(typeof N=="string")return N;throw new Error("Unable to get model file path or buffer.")}async function P(v,y,$=!0,k={}){const W=await h(v,y,$,k,!1);return W===null?null:new TextDecoder("utf-8").decode(W)}async function _(v,y,$=!0,k={}){const W=await P(v,y,$,k);return W===null?{}:JSON.parse(W)}async function w(v,y){const $=v.headers.get("Content-Length");$===null&&console.warn("Unable to determine content-length from response headers. Will expand buffer when needed.");let k=parseInt($??"0"),W=new Uint8Array(k),j=0;const F=v.body.getReader();async function R(){const{done:L,value:Q}=await F.read();if(L)return;const ne=j+Q.length;if(ne>k){k=ne;const ce=new Uint8Array(k);ce.set(W),W=ce}W.set(Q,j),j=ne;const re=j/k*100;return y({progress:re,loaded:j,total:k}),R()}return await R(),W}function b(...v){return v=v.map((y,$)=>($&&(y=y.replace(new RegExp("^/"),"")),$!==v.length-1&&(y=y.replace(new RegExp("/$"),"")),y)),v.join("/")}}),
2845"./src/utils/image.js":((e,t,r)=>{r.r(t),r.d(t,{RawImage:()=>A,load_image:()=>m});var n=r("./src/utils/core.js"),s=r("./src/utils/hub.js"),a=r("./src/env.js"),i=r("./src/utils/tensor.js"),o=r("?2b25");let l,u,p;const d=a.apis.IS_BROWSER_ENV||a.apis.IS_WEBWORKER_ENV;if(d)l=(B,f)=>{if(!self.OffscreenCanvas)throw new Error("OffscreenCanvas not supported by this browser.");return new self.OffscreenCanvas(B,f)},p=self.createImageBitmap,u=self.ImageData;else if(o)p=async B=>{const h=(await B.metadata()).channels,{data:P,info:_}=await B.rotate().raw().toBuffer({resolveWithObject:!0}),w=new A(new Uint8ClampedArray(P),_.width,_.height,_.channels);return h!==void 0&&h!==_.channels&&w.convert(h),w};else throw new Error("Unable to load image processing library.");const c={0:"nearest",1:"lanczos",2:"bilinear",3:"bicubic",4:"box",5:"hamming"},g=new Map([["png","image/png"],["jpg","image/jpeg"],["jpeg","image/jpeg"],["gif","image/gif"]]);class A{constructor(f,h,P,_){this.data=f,this.width=h,this.height=P,this.channels=_}get size(){return[this.width,this.height]}static async read(f){if(f instanceof A)return f;if(typeof f=="string"||f instanceof URL)return await this.fromURL(f);if(f instanceof Blob)return await this.fromBlob(f);if(typeof HTMLCanvasElement<"u"&&f instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&f instanceof OffscreenCanvas)return this.fromCanvas(f);throw new Error(`Unsupported input type: ${typeof f}`)}static fromCanvas(f){if(!d)throw new Error("fromCanvas() is only supported in browser environments.");const P=f.getContext("2d").getImageData(0,0,f.width,f.height).data;return new A(P,f.width,f.height,4)}static async fromURL(f){const h=await(0,s.getFile)(f);if(h.status!==200)throw new Error(`Unable to read image from "${f}" (${h.status} ${h.statusText})`);const P=await h.blob();return this.fromBlob(P)}static async fromBlob(f){if(d){const h=await p(f),P=l(h.width,h.height).getContext("2d");return P.drawImage(h,0,0),new this(P.getImageData(0,0,h.width,h.height).data,h.width,h.height,4)}else{const h=o(await f.arrayBuffer());return await p(h)}}static fromTensor(f,h="CHW"){if(f.dims.length!==3)throw new Error(`Tensor should have 3 dimensions, but has ${f.dims.length} dimensions.`);if(h==="CHW")f=f.transpose(1,2,0);else if(h!=="HWC")throw new Error(`Unsupported channel format: ${h}`);if(!(f.data instanceof Uint8ClampedArray||f.data instanceof Uint8Array))throw new Error(`Unsupported tensor type: ${f.type}`);switch(f.dims[2]){case 1:case 2:case 3:case 4:return new A(f.data,f.dims[1],f.dims[0],f.dims[2]);default:throw new Error(`Unsupported number of channels: ${f.dims[2]}`)}}grayscale(){if(this.channels===1)return this;const f=new Uint8ClampedArray(this.width*this.height*1);switch(this.channels){case 3:case 4:for(let h=0,P=0;h<this.data.length;h+=this.channels){const _=this.data[h],w=this.data[h+1],b=this.data[h+2];f[P++]=Math.round(.2989*_+.587*w+.114*b)}break;default:throw new Error(`Conversion failed due to unsupported number of channels: ${this.channels}`)}return this._update(f,this.width,this.height,1)}rgb(){if(this.channels===3)return this;const f=new Uint8ClampedArray(this.width*this.height*3);switch(this.channels){case 1:for(let h=0,P=0;h<this.data.length;++h)f[P++]=this.data[h],f[P++]=this.data[h],f[P++]=this.data[h];break;case 4:for(let h=0,P=0;h<this.data.length;h+=4)f[P++]=this.data[h],f[P++]=this.data[h+1],f[P++]=this.data[h+2];break;default:throw new Error(`Conversion failed due to unsupported number of channels: ${this.channels}`)}return this._update(f,this.width,this.height,3)}rgba(){if(this.channels===4)return this;const f=new Uint8ClampedArray(this.width*this.height*4);switch(this.channels){case 1:for(let h=0,P=0;h<this.data.length;++h)f[P++]=this.data[h],f[P++]=this.data[h],f[P++]=this.data[h],f[P++]=255;break;case 3:for(let h=0,P=0;h<this.data.length;h+=3)f[P++]=this.data[h],f[P++]=this.data[h+1],f[P++]=this.data[h+2],f[P++]=255;break;default:throw new Error(`Conversion failed due to unsupported number of channels: ${this.channels}`)}return this._update(f,this.width,this.height,4)}putAlpha(f){if(f.width!==this.width||f.height!==this.height)throw new Error(`Expected mask size to be ${this.width}x${this.height}, but got ${f.width}x${f.height}`);if(f.channels!==1)throw new Error(`Expected mask to have 1 channel, but got ${f.channels}`);const h=this.data,P=f.data,_=this.width*this.height;if(this.channels===3){const w=new Uint8ClampedArray(_*4);for(let b=0,v=0,y=0;b<_;++b)w[y++]=h[v++],w[y++]=h[v++],w[y++]=h[v++],w[y++]=P[b];return this._update(w,this.width,this.height,4)}else if(this.channels===4){for(let w=0;w<_;++w)h[4*w+3]=P[w];return this}throw new Error(`Expected image to have 3 or 4 channels, but got ${this.channels}`)}async resize(f,h,{resample:P=2}={}){if(this.width===f&&this.height===h)return this;let _=c[P]??P;const w=(0,n.isNullishDimension)(f),b=(0,n.isNullishDimension)(h);if(w&&b)return this;if(w?f=h/this.height*this.width:b&&(h=f/this.width*this.height),d){const v=this.channels,y=this.toCanvas(),$=l(f,h).getContext("2d");return $.drawImage(y,0,0,f,h),new A($.getImageData(0,0,f,h).data,f,h,4).convert(v)}else{let v=this.toSharp();switch(_){case"box":case"hamming":(_==="box"||_==="hamming")&&(console.warn(`Resampling method ${_} is not yet supported. Using bilinear instead.`),_="bilinear");case"nearest":case"bilinear":case"bicubic":v=v.affine([f/this.width,0,0,h/this.height],{interpolator:_});break;case"lanczos":v=v.resize({width:f,height:h,fit:"fill",kernel:"lanczos3"});break;default:throw new Error(`Resampling method ${_} is not supported.`)}return await p(v)}}async pad([f,h,P,_]){if(f=Math.max(f,0),h=Math.max(h,0),P=Math.max(P,0),_=Math.max(_,0),f===0&&h===0&&P===0&&_===0)return this;if(d){const w=this.channels,b=this.toCanvas(),v=this.width+f+h,y=this.height+P+_,$=l(v,y).getContext("2d");return $.drawImage(b,0,0,this.width,this.height,f,P,this.width,this.height),new A($.getImageData(0,0,v,y).data,v,y,4).convert(w)}else{const w=this.toSharp().extend({left:f,right:h,top:P,bottom:_});return await p(w)}}async crop([f,h,P,_]){if(f=Math.max(f,0),h=Math.max(h,0),P=Math.min(P,this.width-1),_=Math.min(_,this.height-1),f===0&&h===0&&P===this.width-1&&_===this.height-1)return this;const w=P-f+1,b=_-h+1;if(d){const v=this.channels,y=this.toCanvas(),$=l(w,b).getContext("2d");return $.drawImage(y,f,h,w,b,0,0,w,b),new A($.getImageData(0,0,w,b).data,w,b,4).convert(v)}else{const v=this.toSharp().extract({left:f,top:h,width:w,height:b});return await p(v)}}async center_crop(f,h){if(this.width===f&&this.height===h)return this;const P=(this.width-f)/2,_=(this.height-h)/2;if(d){const w=this.channels,b=this.toCanvas(),v=l(f,h).getContext("2d");let y=0,$=0,k=0,W=0;return P>=0?y=P:k=-P,_>=0?$=_:W=-_,v.drawImage(b,y,$,f,h,k,W,f,h),new A(v.getImageData(0,0,f,h).data,f,h,4).convert(w)}else{let w=this.toSharp();if(P>=0&&_>=0)w=w.extract({left:Math.floor(P),top:Math.floor(_),width:f,height:h});else if(P<=0&&_<=0){const b=Math.floor(-_),v=Math.floor(-P);w=w.extend({top:b,left:v,right:f-this.width-v,bottom:h-this.height-b})}else{let b=[0,0],v=0;_<0?(b[0]=Math.floor(-_),b[1]=h-this.height-b[0]):v=Math.floor(_);let y=[0,0],$=0;P<0?(y[0]=Math.floor(-P),y[1]=f-this.width-y[0]):$=Math.floor(P),w=w.extend({top:b[0],bottom:b[1],left:y[0],right:y[1]}).extract({left:$,top:v,width:f,height:h})}return await p(w)}}async toBlob(f="image/png",h=1){if(!d)throw new Error("toBlob() is only supported in browser environments.");return await this.toCanvas().convertToBlob({type:f,quality:h})}toTensor(f="CHW"){let h=new i.Tensor("uint8",new Uint8Array(this.data),[this.height,this.width,this.channels]);if(f!=="HWC")if(f==="CHW")h=h.permute(2,0,1);else throw new Error(`Unsupported channel format: ${f}`);return h}toCanvas(){if(!d)throw new Error("toCanvas() is only supported in browser environments.");const f=this.clone().rgba(),h=l(f.width,f.height),P=new u(f.data,f.width,f.height);
2845return h.getContext("2d").putImageData(P,0,0),h}split(){const{data:f,width:h,height:P,channels:_}=this,w=f.constructor,b=f.length/_,v=Array.from({length:_},()=>new w(b));for(let y=0;y<b;++y){const $=_*y;for(let k=0;k<_;++k)v[k][y]=f[$+k]}return v.map(y=>new A(y,h,P,1))}_update(f,h,P,_=null){return this.data=f,this.width=h,this.height=P,_!==null&&(this.channels=_),this}clone(){return new A(this.data.slice(),this.width,this.height,this.channels)}convert(f){if(this.channels===f)return this;switch(f){case 1:this.grayscale();break;case 3:this.rgb();break;case 4:this.rgba();break;default:throw new Error(`Conversion failed due to unsupported number of channels: ${this.channels}`)}return this}async save(f){if(d){if(a.apis.IS_WEBWORKER_ENV)throw new Error("Unable to save an image from a Web Worker.");const h=f.split(".").pop().toLowerCase(),P=g.get(h)??"image/png",_=await this.toBlob(P);(0,n.saveBlob)(f,_)}else{if(a.apis.IS_FS_AVAILABLE)return await this.toSharp().toFile(f);throw new Error("Unable to save the image because filesystem is disabled in this environment.")}}toSharp(){if(d)throw new Error("toSharp() is only supported in server-side environments.");return o(this.data,{raw:{width:this.width,height:this.height,channels:this.channels}})}}const m=A.read.bind(A)}),
2845"./src/utils/maths.js":((e,t,r)=>{r.r(t),r.d(t,{FFT:()=>m,bankers_round:()=>h,cos_sim:()=>l,dot:()=>o,dynamic_time_warping:()=>P,interpolate_data:()=>n,log_softmax:()=>i,magnitude:()=>u,max:()=>d,medianFilter:()=>B,min:()=>p,permute_data:()=>s,round:()=>f,softmax:()=>a});function n(_,[w,b,v],[y,$],k="bilinear",W=!1){const j=$/v,F=y/b,R=new _.constructor(y*$*w),L=b*v,Q=y*$;for(let ne=0;ne<y;++ne)for(let re=0;re<$;++re){const ce=ne*$+re,ge=(re+.5)/j-.5,q=(ne+.5)/F-.5;let V=Math.floor(ge),U=Math.floor(q);const N=Math.min(V+1,v-1),oe=Math.min(U+1,b-1);V=Math.max(V,0),U=Math.max(U,0);const fe=ge-V,De=q-U,Ie=(1-fe)*(1-De),je=fe*(1-De),Me=(1-fe)*De,se=fe*De,H=U*v,we=oe*v,be=H+V,Ce=H+N,Se=we+V,ze=we+N;for(let ve=0;ve<w;++ve){const Ve=ve*L;R[ve*Q+ce]=Ie*_[Ve+be]+je*_[Ve+Ce]+Me*_[Ve+Se]+se*_[Ve+ze]}}return R}function s(_,w,b){const v=new Array(b.length),y=new Array(b.length);for(let W=b.length-1,j=1;W>=0;--W)y[W]=j,v[W]=w[b[W]],j*=v[W];const $=b.map((W,j)=>y[b.indexOf(j)]),k=new _.constructor(_.length);for(let W=0;W<_.length;++W){let j=0;for(let F=w.length-1,R=W;F>=0;--F)j+=R%w[F]*$[F],R=Math.floor(R/w[F]);k[j]=_[W]}return[k,v]}function a(_){const w=d(_)[0],b=_.map($=>Math.exp($-w)),v=b.reduce(($,k)=>$+k,0);return b.map($=>$/v)}function i(_){const w=d(_)[0];let b=0;for(let $=0;$<_.length;++$)b+=Math.exp(_[$]-w);const v=Math.log(b);return _.map($=>$-w-v)}function o(_,w){let b=0;for(let v=0;v<_.length;++v)b+=_[v]*w[v];return b}function l(_,w){const b=o(_,w),v=u(_),y=u(w);return b/(v*y)}function u(_){return Math.sqrt(_.reduce((w,b)=>w+b*b,0))}function p(_){if(_.length===0)throw Error("Array must not be empty");let w=_[0],b=0;for(let v=1;v<_.length;++v)_[v]<w&&(w=_[v],b=v);return[w,b]}function d(_){if(_.length===0)throw Error("Array must not be empty");let w=_[0],b=0;for(let v=1;v<_.length;++v)_[v]>w&&(w=_[v],b=v);return[w,b]}function c(_){return _>0&&(_&_-1)===0}class g{constructor(w){if(this.size=w|0,this.size<=1||!c(this.size))throw new Error("FFT size must be a power of two larger than 1");this._csize=w<<1,this.table=new Float64Array(this.size*2);for(let v=0;v<this.table.length;v+=2){const y=Math.PI*v/this.size;this.table[v]=Math.cos(y),this.table[v+1]=-Math.sin(y)}let b=0;for(let v=1;this.size>v;v<<=1)++b;this._width=b%2===0?b-1:b,this._bitrev=new Int32Array(1<<this._width);for(let v=0;v<this._bitrev.length;++v){this._bitrev[v]=0;for(let y=0;y<this._width;y+=2){const $=this._width-y-2;this._bitrev[v]|=(v>>>y&3)<<$}}}createComplexArray(){return new Float64Array(this._csize)}fromComplexArray(w,b){const v=b||new Array(w.length>>>1);for(let y=0;y<w.length;y+=2)v[y>>>1]=w[y];return v}toComplexArray(w,b){const v=b||this.createComplexArray();for(let y=0;y<v.length;y+=2)v[y]=w[y>>>1],v[y+1]=0;return v}transform(w,b){if(w===b)throw new Error("Input and output buffers must be different");this._transform4(w,b,1)}realTransform(w,b){if(w===b)throw new Error("Input and output buffers must be different");this._realTransform4(w,b,1)}inverseTransform(w,b){if(w===b)throw new Error("Input and output buffers must be different");this._transform4(w,b,-1);for(let v=0;v<w.length;++v)w[v]/=this.size}_transform4(w,b,v){const y=this._csize;let k=1<<this._width,W=y/k<<1,j,F;const R=this._bitrev;if(W===4)for(j=0,F=0;j<y;j+=W,++F){const Q=R[F];this._singleTransform2(b,w,j,Q,k)}else for(j=0,F=0;j<y;j+=W,++F){const Q=R[F];this._singleTransform4(b,w,j,Q,k,v)}const L=this.table;for(k>>=2;k>=2;k>>=2){W=y/k<<1;const Q=W>>>2;for(j=0;j<y;j+=W){const ne=j+Q-1;for(let re=j,ce=0;re<ne;re+=2,ce+=k){const ge=re,q=ge+Q,V=q+Q,U=V+Q,N=w[ge],oe=w[ge+1],fe=w[q],De=w[q+1],Ie=w[V],je=w[V+1],Me=w[U],se=w[U+1],H=L[ce],we=v*L[ce+1],be=fe*H-De*we,Ce=fe*we+De*H,Se=L[2*ce],ze=v*L[2*ce+1],ve=Ie*Se-je*ze,Ve=Ie*ze+je*Se,Be=L[3*ce],ke=v*L[3*ce+1],rt=Me*Be-se*ke,Ue=Me*ke+se*Be,ht=N+ve,He=oe+Ve,dt=N-ve,At=oe-Ve,Xe=be+rt,We=Ce+Ue,yt=v*(be-rt),Mt=v*(Ce-Ue);w[ge]=ht+Xe,w[ge+1]=He+We,w[q]=dt+Mt,w[q+1]=At-yt,w[V]=ht-Xe,w[V+1]=He-We,w[U]=dt-Mt,w[U+1]=At+yt}}}}_singleTransform2(w,b,v,y,$){const k=w[y],W=w[y+1],j=w[y+$],F=w[y+$+1];b[v]=k+j,b[v+1]=W+F,b[v+2]=k-j,b[v+3]=W-F}_singleTransform4(w,b,v,y,$,k){const W=$*2,j=$*3,F=w[y],R=w[y+1],L=w[y+$],Q=w[y+$+1],ne=w[y+W],re=w[y+W+1],ce=w[y+j],ge=w[y+j+1],q=F+ne,V=R+re,U=F-ne,N=R-re,oe=L+ce,fe=Q+ge,De=k*(L-ce),Ie=k*(Q-ge);b[v]=q+oe,b[v+1]=V+fe,b[v+2]=U+Ie,b[v+3]=N-De,b[v+4]=q-oe,b[v+5]=V-fe,b[v+6]=U-Ie,b[v+7]=N+De}_realTransform4(w,b,v){const y=this._csize;let k=1<<this._width,W=y/k<<1,j,F;const R=this._bitrev;if(W===4)for(j=0,F=0;j<y;j+=W,++F){const ne=R[F];this._singleRealTransform2(b,w,j,ne>>>1,k>>>1)}else for(j=0,F=0;j<y;j+=W,++F){const ne=R[F];this._singleRealTransform4(b,w,j,ne>>>1,k>>>1,v)}const L=this.table;for(k>>=2;k>=2;k>>=2){W=y/k<<1;const ne=W>>>1,re=ne>>>1,ce=re>>>1;for(j=0;j<y;j+=W)for(let ge=0,q=0;ge<=ce;
vendor: 3,757 bytes, line 2845
2845ge+=2,q+=k){const V=j+ge,U=V+re,N=U+re,oe=N+re,fe=w[V],De=w[V+1],Ie=w[U],je=w[U+1],Me=w[N],se=w[N+1],H=w[oe],we=w[oe+1],be=fe,Ce=De,Se=L[q],ze=v*L[q+1],ve=Ie*Se-je*ze,Ve=Ie*ze+je*Se,Be=L[2*q],ke=v*L[2*q+1],rt=Me*Be-se*ke,Ue=Me*ke+se*Be,ht=L[3*q],He=v*L[3*q+1],dt=H*ht-we*He,At=H*He+we*ht,Xe=be+rt,We=Ce+Ue,yt=be-rt,Mt=Ce-Ue,hr=ve+dt,Vt=Ve+At,tn=v*(ve-dt),hn=v*(Ve-At);if(w[V]=Xe+hr,w[V+1]=We+Vt,w[U]=yt+hn,w[U+1]=Mt-tn,ge===0){w[N]=Xe-hr,w[N+1]=We-Vt;continue}if(ge===ce)continue;const ar=j+re-ge,On=j+ne-ge;w[ar]=yt-v*hn,w[ar+1]=-Mt-v*tn,w[On]=Xe-v*hr,w[On+1]=-We+v*Vt}}const Q=y>>>1;for(let ne=2;ne<Q;ne+=2)w[y-ne]=w[ne],w[y-ne+1]=-w[ne+1]}_singleRealTransform2(w,b,v,y,$){const k=w[y],W=w[y+$];b[v]=k+W,b[v+1]=0,b[v+2]=k-W,b[v+3]=0}_singleRealTransform4(w,b,v,y,$,k){const W=$*2,j=$*3,F=w[y],R=w[y+$],L=w[y+W],Q=w[y+j],ne=F+L,re=F-L,ce=R+Q,ge=k*(R-Q);b[v]=ne+ce,b[v+1]=0,b[v+2]=re,b[v+3]=-ge,b[v+4]=ne-ce,b[v+5]=0,b[v+6]=re,b[v+7]=ge}}class A{constructor(w){const b=2*(w-1),v=2*(2*w-1),y=2**Math.ceil(Math.log2(v));this.bufferSize=y,this._a=b;const $=new Float64Array(v),k=new Float64Array(y);this._chirpBuffer=new Float64Array(y),this._buffer1=new Float64Array(y),this._buffer2=new Float64Array(y),this._outBuffer1=new Float64Array(y),this._outBuffer2=new Float64Array(y);const W=-2*Math.PI/w,j=Math.cos(W),F=Math.sin(W);for(let R=0;R<v>>1;++R){const L=(R+1-w)**2/2,Q=Math.sqrt(j**2+F**2)**L,ne=L*Math.atan2(F,j),re=2*R;$[re]=Q*Math.cos(ne),$[re+1]=Q*Math.sin(ne),k[re]=$[re],k[re+1]=-$[re+1]}this._slicedChirpBuffer=$.subarray(b,v),this._f=new g(y>>1),this._f.transform(this._chirpBuffer,k)}_transform(w,b,v){const y=this._buffer1,$=this._buffer2,k=this._outBuffer1,W=this._outBuffer2,j=this._chirpBuffer,F=this._slicedChirpBuffer,R=this._a;if(v)for(let L=0;L<F.length;L+=2){const Q=L+1,ne=L>>1,re=b[ne];y[L]=re*F[L],y[Q]=re*F[Q]}else for(let L=0;L<F.length;L+=2){const Q=L+1;y[L]=b[L]*F[L]-b[Q]*F[Q],y[Q]=b[L]*F[Q]+b[Q]*F[L]}this._f.transform(k,y);for(let L=0;L<j.length;L+=2){const Q=L+1;$[L]=k[L]*j[L]-k[Q]*j[Q],$[Q]=k[L]*j[Q]+k[Q]*j[L]}this._f.inverseTransform(W,$);for(let L=0;L<W.length;L+=2){const Q=W[L+R],ne=W[L+R+1],re=F[L],ce=F[L+1];w[L]=Q*re-ne*ce,w[L+1]=Q*ce+ne*re}}transform(w,b){this._transform(w,b,!1)}realTransform(w,b){this._transform(w,b,!0)}}class m{constructor(w){this.fft_length=w,this.isPowerOfTwo=c(w),this.isPowerOfTwo?(this.fft=new g(w),this.outputBufferSize=2*w):(this.fft=new A(w),this.outputBufferSize=this.fft.bufferSize)}realTransform(w,b){this.fft.realTransform(w,b)}transform(w,b){this.fft.transform(w,b)}}function B(_,w){if(w%2===0||w<=0)throw new Error("Window size must be a positive odd number");const b=new _.constructor(_.length),v=new _.constructor(w),y=Math.floor(w/2);for(let $=0;$<_.length;++$){let k=0;for(let W=-y;W<=y;++W){let j=$+W;j<0?j=Math.abs(j):j>=_.length&&(j=2*(_.length-1)-j),v[k++]=_[j]}v.sort(),b[$]=v[y]}return b}function f(_,w){const b=Math.pow(10,w);return Math.round(_*b)/b}function h(_){const w=Math.round(_);return Math.abs(_)%1===.5?w%2===0?w:w-1:w}function P(_){const w=_.length,b=_[0].length,v=[w+1,b+1],y=Array.from({length:v[0]},()=>Array(v[1]).fill(1/0));y[0][0]=0;const $=Array.from({length:v[0]},()=>Array(v[1]).fill(-1));for(let R=1;R<v[1];++R)for(let L=1;L<v[0];++L){const Q=y[L-1][R-1],ne=y[L-1][R],re=y[L][R-1];let ce,ge;Q<ne&&Q<re?(ce=Q,ge=0):ne<Q&&ne<re?(ce=ne,ge=1):(ce=re,ge=2),y[L][R]=_[L-1][R-1]+ce,$[L][R]=ge}for(let R=0;R<v[1];++R)$[0][R]=2;for(let R=0;R<v[0];++R)$[R][0]=1;let k=w,W=b,j=[],F=[];for(;k>0||W>0;)switch(j.push(k-1),F.push(W-1),$[k][W]){case 0:--k,--W;break;case 1:--k;break;case 2:--W;break;default:throw new Error(`Internal error in dynamic time warping. Unexpected trace[${k}, ${W}]. Please file a bug report.`)}return j.reverse(),F.reverse(),[j,F]}}),
2845"./src/utils/tensor.js":((e,t,r)=>{r.r(t),r.d(t,{DataTypeMap:()=>i,Tensor:()=>o,cat:()=>b,full:()=>F,full_like:()=>R,interpolate:()=>p,interpolate_4d:()=>d,layer_norm:()=>h,matmul:()=>c,mean:()=>k,mean_pooling:()=>f,ones:()=>L,ones_like:()=>Q,permute:()=>u,quantize_embeddings:()=>q,rand:()=>ce,randn:()=>ge,rfft:()=>g,slice:()=>B,stack:()=>v,std_mean:()=>$,topk:()=>A,zeros:()=>ne,zeros_like:()=>re});var n=r("./src/utils/maths.js"),s=r("./src/backends/onnx.js"),a=r("./src/ops/registry.js");const i=Object.freeze({float32:Float32Array,float16:typeof Float16Array<"u"?Float16Array:Uint16Array,float64:Float64Array,string:Array,int8:Int8Array,uint8:Uint8Array,int16:Int16Array,uint16:Uint16Array,int32:Int32Array,uint32:Uint32Array,int64:BigInt64Array,uint64:BigUint64Array,bool:Uint8Array,uint4:Uint8Array,int4:Int8Array});class o{get dims(){return this.ort_tensor.dims}set dims(U){this.ort_tensor.dims=U}get type(){return this.ort_tensor.type}get data(){return this.ort_tensor.data}get size(){return this.ort_tensor.size}get location(){return this.ort_tensor.location}ort_tensor;constructor(...U){return(0,s.isONNXTensor)(U[0])?this.ort_tensor=U[0]:this.ort_tensor=new s.Tensor(U[0],U[1],U[2]),new Proxy(this,{get:(N,oe)=>{if(typeof oe=="string"){let fe=Number(oe);if(Number.isInteger(fe))return N._getitem(fe)}return N[oe]},set:(N,oe,fe)=>N[oe]=fe})}dispose(){this.ort_tensor.dispose()}*[Symbol.iterator](){const[U,...N]=this.dims;if(N.length>0){const oe=N.reduce((fe,De)=>fe*De);for(let fe=0;fe<U;++fe)yield this._subarray(fe,oe,N)}else yield*this.data}_getitem(U){const[N,...oe]=this.dims;if(U=w(U,N),oe.length>0){const fe=oe.reduce((De,Ie)=>De*Ie);return this._subarray(U,fe,oe)}else return new o(this.type,[this.data[U]],oe)}indexOf(U){const N=this.data;for(let oe=0;oe<N.length;++oe)if(N[oe]==U)return oe;return-1}_subarray(U,N,oe){const fe=U*N,De=(U+1)*N,Ie="subarray"in this.data?this.data.subarray(fe,De):this.data.slice(fe,De);return new o(this.type,Ie,oe)}item(){const U=this.data;if(U.length!==1)throw new Error(`a Tensor with ${U.length} elements cannot be converted to Scalar`);return U[0]}tolist(){return l(this.data,this.dims)}sigmoid(){return this.clone().sigmoid_()}sigmoid_(){const U=this.data;for(let N=0;N<U.length;++N)U[N]=1/(1+Math.exp(-U[N]));return this}map(U){return this.clone().map_(U)}map_(U){const N=this.data;for(let oe=0;oe<N.length;++oe)N[oe]=U(N[oe],oe,N);return this}mul(U){return this.clone().mul_(U)}mul_(U){const N=this.data;for(let oe=0;oe<N.length;++oe)N[oe]*=U;return this}div(U){return this.clone().div_(U)}div_(U){const N=this.data;for(let oe=0;oe<N.length;++oe)N[oe]/=U;return this}add(U){return this.clone().add_(U)}add_(U){const N=this.data;for(let oe=0;oe<N.length;++oe)N[oe]+=U;return this}sub(U){return this.clone().sub_(U)}sub_(U){const N=this.data;for(let oe=0;oe<N.length;++oe)N[oe]-=U;return this}clone(){return new o(this.type,this.data.slice(),this.dims.slice())}slice(...U){const N=[],oe=[];for(let H=0;H<this.dims.length;++H){let we=U[H];if(we==null)oe.push([0,this.dims[H]]),N.push(this.dims[H]);else if(typeof we=="number")we=w(we,this.dims[H],H),oe.push([we,we+1]);else if(Array.isArray(we)&&we.length===2){let[be,Ce]=we;if(be=be===null?0:w(be,this.dims[H],H,!1),Ce=Ce===null?this.dims[H]:w(Ce,this.dims[H],H,!1),be>Ce)throw new Error(`Invalid slice: ${we}`);const Se=[Math.max(be,0),Math.min(Ce,this.dims[H])];oe.push(Se),N.push(Se[1]-Se[0])}else throw new Error(`Invalid slice: ${we}`)}const fe=oe.map(([H,we])=>we-H),De=fe.reduce((H,we)=>H*we),Ie=this.data,je=new Ie.constructor(De),Me=this.stride();let se=!0;for(let H=1;H<fe.length;++H)if(oe[H][0]!==0||oe[H][1]!==this.dims[H]){se=!1;break}if(se){const H=oe[0][0]*Me[0],we=oe[0][1]*Me[0];if(ArrayBuffer.isView(Ie))je.set(Ie.subarray(H,we));else if(Array.isArray(Ie)){const be=Ie.slice(H,we);for(let Ce=0;Ce<be.length;++Ce)je[Ce]=be[Ce]}else throw new Error("Unsupported data type for slicing")}else for(let H=0;H<De;++H){let we=0;for(let be=fe.length-1,Ce=H;be>=0;--be){const Se=fe[be];we+=(Ce%Se+oe[be][0])*Me[be],Ce=Math.floor(Ce/Se)}je[H]=Ie[we]}return new o(this.type,je,N)}permute(...U){return u(this,U)}transpose(...U){return this.permute(...U)}sum(U=null,N=!1){return this.norm(1,U,N)}norm(U="fro",N=null,oe=!1){if(U==="fro")U=2;else if(typeof U=="string")throw Error(`Unsupported norm: ${U}`);const fe=this.data,De=(se,H)=>se+H**U;if(N===null){const se=fe.reduce(De,0)**(1/U);return new o(this.type,[se],[])}const[Ie,je,Me]=y(De,this,N,oe);if(U!==1)for(let se=0;se<je.length;++se)je[se]=je[se]**(1/U);return new o(Ie,je,Me)}normalize_(U=2,N=1){N=w(N,this.dims.length);const oe=this.norm(U,N,!0),fe=this.data,De=oe.data;for(let Ie=0;Ie<fe.length;++Ie){let je=0;for(let Me=this.dims.length-1,se=Ie,H=1;Me>=0;--Me){const we=this.dims[Me];if(Me!==N){const be=se%we;je+=be*H,H*=this.dims[Me]}se=Math.floor(se/we)}fe[Ie]/=De[je]}return this}normalize(U=2,N=1){return this.clone().normalize_(U,N)}stride(){return W(this.dims)}squeeze(U=null){return new o(this.type,this.data,P(this.dims,U))}squeeze_(U=null){return this.dims=P(this.dims,U),this}unsqueeze(U=null){return new o(this.type,this.data,_(this.dims,U))}unsqueeze_(U=null){return this.dims=_(this.dims,U),this}flatten_(U=0,N=-1){N=(N+this.dims.length)%this.dims.length;let oe=this.dims.slice(0,U),fe=this.dims.slice(U,N+1),De=this.dims.slice(N+1);return this.dims=[...oe,fe.reduce((Ie,je)=>Ie*je,1),...De],this}flatten(U=0,N=-1){return this.clone().flatten_(U,N)}view(...U){let N=-1;for(let fe=0;fe<U.length;++fe)if(U[fe]===-1){if(N!==-1)throw new Error("Only one dimension can be inferred");N=fe}const oe=this.data;if(N!==-1){const fe=U.reduce((De,Ie,je)=>je!==N?De*Ie:De,1);U[N]=oe.length/fe}return new o(this.type,oe,U)}neg_(){const U=this.data;for(let N=0;N<U.length;++N)U[N]=-U[N];return this}neg(){return this.clone().neg_()}gt(U){const N=new Uint8Array(this.data.length),oe=this.data;for(let fe=0;fe<oe.length;++fe)N[fe]=oe[fe]>U?1:0;return new o("bool",N,this.dims)}lt(U){const N=new Uint8Array(this.data.length),oe=this.data;for(let fe=0;fe<oe.length;++fe)N[fe]=oe[fe]<U?1:0;return new o("bool",N,this.dims)}clamp_(U,N){const oe=this.data;for(let fe=0;fe<oe.length;++fe)oe[fe]=Math.min(Math.max(oe[fe],U),N);return this}clamp(U,N){return this.clone().clamp_(U,N)}round_(){const U=this.data;for(let N=0;N<U.length;++N)U[N]=Math.round(U[N]);return this}
2845round(){return this.clone().round_()}mean(U=null,N=!1){return k(this,U,N)}min(U=null,N=!1){if(U===null){const Ie=(0,n.min)(this.data)[0];return new o(this.type,[Ie],[])}const[oe,fe,De]=y((Ie,je)=>Math.min(Ie,je),this,U,N,1/0);return new o(oe,fe,De)}max(U=null,N=!1){if(U===null){const Ie=(0,n.max)(this.data)[0];return new o(this.type,[Ie],[])}const[oe,fe,De]=y((Ie,je)=>Math.max(Ie,je),this,U,N,-1/0);return new o(oe,fe,De)}argmin(U=null,N=!1){if(U!==null)throw new Error("`dim !== null` not yet implemented.");const oe=(0,n.min)(this.data)[1];return new o("int64",[BigInt(oe)],[])}argmax(U=null,N=!1){if(U!==null)throw new Error("`dim !== null` not yet implemented.");const oe=(0,n.max)(this.data)[1];return new o("int64",[BigInt(oe)],[])}to(U){if(this.type===U)return this;if(!i.hasOwnProperty(U))throw new Error(`Unsupported type: ${U}`);let N;const oe=["int64","uint64"].includes(this.type),fe=["int64","uint64"].includes(U);return oe&&!fe?N=Number:!oe&&fe&&(["float16","float32","float64"].includes(this.type)?N=De=>BigInt(Math.floor(De)):N=BigInt),new o(U,i[U].from(this.data,N),this.dims)}}function l(V,U){const N=V.length,oe=U.reduce((De,Ie)=>De*Ie);if(N!==oe)throw Error(`cannot reshape array of size ${N} into shape (${U})`);let fe=V;for(let De=U.length-1;De>=0;De--)fe=fe.reduce((Ie,je)=>{let Me=Ie[Ie.length-1];return Me.length<U[De]?Me.push(je):Ie.push([je]),Ie},[[]]);return fe[0]}function u(V,U){const[N,oe]=(0,n.permute_data)(V.data,V.dims,U);return new o(V.type,N,oe)}function p(V,[U,N],oe="bilinear",fe=!1){const De=V.dims.at(-3)??1,Ie=V.dims.at(-2),je=V.dims.at(-1);let Me=(0,n.interpolate_data)(V.data,[De,Ie,je],[U,N],oe,fe);return new o(V.type,Me,[De,U,N])}async function d(V,{size:U=null,mode:N="bilinear"}={}){if(V.dims.length!==4)throw new Error("`interpolate_4d` currently only supports 4D input.");if(!U)throw new Error("`interpolate_4d` requires a `size` argument.");let oe;if(U.length===2)oe=[...V.dims.slice(0,2),...U];else if(U.length===3)oe=[V.dims[0],...U];else if(U.length===4)oe=U;else throw new Error("`size` must be of length 2, 3, or 4.");let fe;if(N==="nearest")fe=await a.TensorOpRegistry.nearest_interpolate_4d;else if(N==="bilinear")fe=await a.TensorOpRegistry.bilinear_interpolate_4d;else if(N==="bicubic")fe=await a.TensorOpRegistry.bicubic_interpolate_4d;else throw new Error(`Unsupported mode: ${N}`);const De=new o("int64",new BigInt64Array(oe.map(BigInt)),[oe.length]);return await fe({x:V,s:De})}async function c(V,U){return await(await a.TensorOpRegistry.matmul)({a:V,b:U})}async function g(V,U){return await(await a.TensorOpRegistry.rfft)({x:V,a:U})}async function A(V,U){const N=await a.TensorOpRegistry.top_k;return U==null?U=V.dims.at(-1):U=Math.min(U,V.dims.at(-1)),await N({x:V,k:new o("int64",[BigInt(U)],[1])})}const m=V=>new o("int64",V,[V.length]);async function B(V,U,N,oe,fe){return await(await a.TensorOpRegistry.slice)({x:V,s:m(U),e:m(N),a:m(oe),t:m(fe??new Array(oe.length).fill(1))})}function f(V,U){const N=V.data,oe=U.data,fe=[V.dims[0],V.dims[2]],De=new N.constructor(fe[0]*fe[1]),[Ie,je,Me]=V.dims;let se=0;for(let H=0;H<Ie;++H){const we=H*Me*je;for(let be=0;be<Me;++be){let Ce=0,Se=0;const ze=H*je,ve=we+be;for(let Be=0;Be<je;++Be){const ke=Number(oe[ze+Be]);Se+=ke,Ce+=N[ve+Be*Me]*ke}const Ve=Ce/Se;De[se++]=Ve}}return new o(V.type,De,fe)}function h(V,U,{eps:N=1e-5}={}){if(V.dims.length!==2)throw new Error("`layer_norm` currently only supports 2D input.");const[oe,fe]=V.dims;if(U.length!==1&&U[0]!==fe)throw new Error("`normalized_shape` must be a 1D array with shape `[input.dims[1]]`.");const[De,Ie]=$(V,1,0,!0),je=De.data,Me=Ie.data,se=V.data,H=new se.constructor(se.length);for(let we=0;we<oe;++we){const be=we*fe;for(let Ce=0;Ce<fe;++Ce){const Se=be+Ce;H[Se]=(se[Se]-Me[we])/(je[we]+N)}}return new o(V.type,H,V.dims)}function P(V,U){return V=V.slice(),U===null?V=V.filter(N=>N!==1):typeof U=="number"?V[U]===1&&V.splice(U,1):Array.isArray(U)&&(V=V.filter((N,oe)=>N!==1||!U.includes(oe))),V}function _(V,U){return U=w(U,V.length+1),V=V.slice(),V.splice(U,0,1),V}function w(V,U,N=null,oe=!0){if(V<-U||V>=U){if(oe)throw new Error(`IndexError: index ${V} is out of bounds for dimension${N===null?"":" "+N} with size ${U}`);return V<-U?0:U}return V<0&&(V=(V%U+U)%U),V}function b(V,U=0){U=w(U,V[0].dims.length);const N=V[0].dims.slice();N[U]=V.reduce((Ie,je)=>Ie+je.dims[U],0);const oe=N.reduce((Ie,je)=>Ie*je,1),fe=new V[0].data.constructor(oe),De=V[0].type;if(U===0){let Ie=0;for(const je of V){const Me=je.data;fe.set(Me,Ie),Ie+=Me.length}}else{let Ie=0;for(let je=0;je<V.length;++je){const{data:Me,dims:se}=V[je];for(let H=0;H<Me.length;++H){let we=0;for(let be=se.length-1,Ce=H,Se=1;be>=0;--be){const ze=se[be];let ve=Ce%ze;be===U&&(ve+=Ie),we+=ve*Se,Se*=N[be],Ce=Math.floor(Ce/ze)}fe[we]=Me[H]}Ie+=se[U]}}return new o(De,fe,N)}function v(V,U=0){return b(V.map(N=>N.unsqueeze(U)),U)}function y(V,U,N=null,oe=!1,fe=null){const De=U.data,Ie=U.dims;N=w(N,Ie.length);const je=Ie.slice();je[N]=1;const Me=new De.constructor(De.length/Ie[N]);
2845fe!==null&&Me.fill(fe);for(let se=0;se<De.length;++se){let H=0;for(let we=Ie.length-1,be=se,Ce=1;we>=0;--we){const Se=Ie[we];if(we!==N){const ze=be%Se;H+=ze*Ce,Ce*=je[we]}be=Math.floor(be/Se)}Me[H]=V(Me[H],De[se],se,H)}return oe||je.splice(N,1),[U.type,Me,je]}function $(V,U=null,N=1,oe=!1){const fe=V.data,De=V.dims;if(U===null){const Ce=fe.reduce((Ve,Be)=>Ve+Be,0)/fe.length,Se=Math.sqrt(fe.reduce((Ve,Be)=>Ve+(Be-Ce)**2,0)/(fe.length-N)),ze=new o(V.type,[Ce],[]);return[new o(V.type,[Se],[]),ze]}U=w(U,De.length);const Ie=k(V,U,oe),je=Ie.data,[Me,se,H]=y((be,Ce,Se,ze)=>be+(Ce-je[ze])**2,V,U,oe);for(let be=0;be<se.length;++be)se[be]=Math.sqrt(se[be]/(De[U]-N));return[new o(Me,se,H),Ie]}function k(V,U=null,N=!1){const oe=V.dims,fe=V.data;if(U===null){const Me=fe.reduce((se,H)=>se+H,0);return new o(V.type,[Me/fe.length],[])}U=w(U,oe.length);const[De,Ie,je]=y((Me,se)=>Me+se,V,U,N);if(oe[U]!==1)for(let Me=0;Me<Ie.length;++Me)Ie[Me]/=oe[U];return new o(De,Ie,je)}function W(V){const U=new Array(V.length);for(let N=V.length-1,oe=1;N>=0;--N)U[N]=oe,oe*=V[N];return U}function j(V,U,N,oe){const fe=V.reduce((De,Ie)=>De*Ie,1);return new o(N,new oe(fe).fill(U),V)}function F(V,U){let N,oe;if(typeof U=="number")N="float32",oe=Float32Array;else if(typeof U=="bigint")N="int64",oe=BigInt64Array;else if(typeof U=="boolean")N="bool",oe=Uint8Array;else throw new Error(`Unsupported data type: ${typeof U}`);return j(V,U,N,oe)}function R(V,U){return F(V.dims,U)}function L(V){return j(V,1n,"int64",BigInt64Array)}function Q(V){return L(V.dims)}function ne(V){return j(V,0n,"int64",BigInt64Array)}function re(V){return ne(V.dims)}function ce(V){const U=V.reduce((N,oe)=>N*oe,1);return new o("float32",Float32Array.from({length:U},()=>Math.random()),V)}function ge(V){const U=V.reduce((oe,fe)=>oe*fe,1);function N(){const oe=1-Math.random(),fe=1-Math.random();return Math.sqrt(-2*Math.log(oe))*Math.cos(2*Math.PI*fe)}return new o("float32",Float32Array.from({length:U},()=>N()),V)}function q(V,U){if(V.dims.length!==2)throw new Error("The tensor must have 2 dimensions");if(V.dims.at(-1)%8!==0)throw new Error("The last dimension of the tensor must be a multiple of 8");if(!["binary","ubinary"].includes(U))throw new Error("The precision must be either 'binary' or 'ubinary'");const N=U==="binary",oe=N?"int8":"uint8",fe=N?Int8Array:Uint8Array,De=V.data,Ie=new fe(De.length/8);for(let je=0;je<De.length;++je){const Me=De[je]>0?1:0,se=Math.floor(je/8),H=je%8;Ie[se]|=Me<<7-H,N&&H===0&&(Ie[se]-=128)}return new o(oe,Ie,[V.dims[0],V.dims[1]/8])}}),
2845"./src/utils/video.js":((e,t,r)=>{r.r(t),r.d(t,{RawVideo:()=>i,RawVideoFrame:()=>a,load_video:()=>o});var n=r("./src/utils/image.js"),s=r("./src/env.js");class a{constructor(u,p){this.image=u,this.timestamp=p}}class i{constructor(u,p){u.length>0&&u[0]instanceof n.RawImage&&(u=u.map((d,c)=>new a(d,(c+1)/(u.length+1)*p))),this.frames=u,this.duration=p}get width(){return this.frames[0].image.width}get height(){return this.frames[0].image.height}get fps(){return this.frames.length/this.duration}}async function o(l,{num_frames:u=null,fps:p=null}={}){if(!s.apis.IS_BROWSER_ENV)throw new Error("`load_video` is currently only supported in browser environments.");if(u==null&&p==null)throw new Error("Either num_frames or fps must be provided.");const d=[],c=document.createElement("video");if(c.crossOrigin="anonymous",c.muted=!0,typeof l=="string")c.src=l;else if(l instanceof Blob)c.src=URL.createObjectURL(l);else if(l instanceof HTMLVideoElement)c.src=l.src;else throw new Error("Invalid URL or video element provided.");if(await new Promise(P=>c.onloadedmetadata=P),c.seekable.start(0)===c.seekable.end(0)){const _=await(await fetch(c.src)).blob();c.src=URL.createObjectURL(_),await new Promise(w=>c.onloadedmetadata=w)}const g=c.duration;let A,m;u!=null?(A=u,m=u===1?0:g/(u-1)):(m=1/p,A=Math.floor(g/m));let B=[];for(let P=0;P<A;++P)B.push(u===1?g/2:P*m);const f=document.createElement("canvas");f.width=c.videoWidth,f.height=c.videoHeight;const h=f.getContext("2d",{willReadFrequently:!0});for(const P of B){c.currentTime=P,await new Promise(v=>{c.onseeked=v}),h.drawImage(c,0,0,f.width,f.height);const _=h.getImageData(0,0,f.width,f.height),w=new n.RawImage(_.data,f.width,f.height,4),b=new a(w,P);d.push(b)}return c.remove(),new i(d,g)}})
2845},wM={};function Pr(e){var t=wM[e];if(t!==void 0)return t.exports;var r=wM[e]={exports:{}};return v4[e](r,r.exports,Pr),r.exports}(()=>{var e=Object.getPrototypeOf?r=>Object.getPrototypeOf(r):r=>r.__proto__,t;Pr.t=function(r,n){if(n&1&&(r=this(r)),n&8||typeof r=="object"&&r&&(n&4&&r.__esModule||n&16&&typeof r.then=="function"))return r;var s=Object.create(null);Pr.r(s);var a={};t=t||[null,e({}),e([]),e(e)];for(var i=n&2&&r;typeof i=="object"&&!~t.indexOf(i);i=e(i))Object.getOwnPropertyNames(i).forEach(o=>a[o]=()=>r[o]);return a.default=()=>r,Pr.d(s,a),s}})(),Pr.d=(e,t)=>{for(var r in t)Pr.o(t,r)&&!Pr.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},Pr.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Pr.r=e=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var E={};(()=>{Pr.r(E),Pr.d(E,{ASTFeatureExtractor:()=>d.ASTFeatureExtractor,ASTForAudioClassification:()=>r.ASTForAudioClassification,ASTModel:()=>r.ASTModel,ASTPreTrainedModel:()=>r.ASTPreTrainedModel,AlbertForMaskedLM:()=>r.AlbertForMaskedLM,AlbertForQuestionAnswering:()=>r.AlbertForQuestionAnswering,AlbertForSequenceClassification:()=>r.AlbertForSequenceClassification,AlbertModel:()=>r.AlbertModel,AlbertPreTrainedModel:()=>r.AlbertPreTrainedModel,AlbertTokenizer:()=>n.AlbertTokenizer,ArceeForCausalLM:()=>r.ArceeForCausalLM,ArceeModel:()=>r.ArceeModel,ArceePreTrainedModel:()=>r.ArceePreTrainedModel,AudioClassificationPipeline:()=>t.AudioClassificationPipeline,AutoConfig:()=>s.AutoConfig,AutoFeatureExtractor:()=>c.AutoFeatureExtractor,AutoImageProcessor:()=>m.AutoImageProcessor,AutoModel:()=>r.AutoModel,AutoModelForAudioClassification:()=>r.AutoModelForAudioClassification,AutoModelForAudioFrameClassification:()=>r.AutoModelForAudioFrameClassification,AutoModelForAudioTextToText:()=>r.AutoModelForAudioTextToText,AutoModelForCTC:()=>r.AutoModelForCTC,AutoModelForCausalLM:()=>r.AutoModelForCausalLM,AutoModelForDepthEstimation:()=>r.AutoModelForDepthEstimation,AutoModelForDocumentQuestionAnswering:()=>r.AutoModelForDocumentQuestionAnswering,AutoModelForImageClassification:()=>r.AutoModelForImageClassification,AutoModelForImageFeatureExtraction:()=>r.AutoModelForImageFeatureExtraction,AutoModelForImageMatting:()=>r.AutoModelForImageMatting,AutoModelForImageSegmentation:()=>r.AutoModelForImageSegmentation,AutoModelForImageTextToText:()=>r.AutoModelForImageTextToText,AutoModelForImageToImage:()=>r.AutoModelForImageToImage,AutoModelForMaskGeneration:()=>r.AutoModelForMaskGeneration,AutoModelForMaskedLM:()=>r.AutoModelForMaskedLM,AutoModelForNormalEstimation:()=>r.AutoModelForNormalEstimation,AutoModelForObjectDetection:()=>r.AutoModelForObjectDetection,AutoModelForPoseEstimation:()=>r.AutoModelForPoseEstimation,AutoModelForQuestionAnswering:()=>r.AutoModelForQuestionAnswering,AutoModelForSemanticSegmentation:()=>r.AutoModelForSemanticSegmentation,AutoModelForSeq2SeqLM:()=>r.AutoModelForSeq2SeqLM,AutoModelForSequenceClassification:()=>r.AutoModelForSequenceClassification,AutoModelForSpeechSeq2Seq:()=>r.AutoModelForSpeechSeq2Seq,AutoModelForTextToSpectrogram:()=>r.AutoModelForTextToSpectrogram,AutoModelForTextToWaveform:()=>r.AutoModelForTextToWaveform,AutoModelForTokenClassification:()=>r.AutoModelForTokenClassification,AutoModelForUniversalSegmentation:()=>r.AutoModelForUniversalSegmentation,AutoModelForVision2Seq:()=>r.AutoModelForVision2Seq,AutoModelForXVector:()=>r.AutoModelForXVector,AutoModelForZeroShotObjectDetection:()=>r.AutoModelForZeroShotObjectDetection,AutoProcessor:()=>h.AutoProcessor,AutoTokenizer:()=>n.AutoTokenizer,AutomaticSpeechRecognitionPipeline:()=>t.AutomaticSpeechRecognitionPipeline,BackgroundRemovalPipeline:()=>t.BackgroundRemovalPipeline,BartForConditionalGeneration:()=>r.BartForConditionalGeneration,BartForSequenceClassification:()=>r.BartForSequenceClassification,BartModel:()=>r.BartModel,BartPretrainedModel:()=>r.BartPretrainedModel,BartTokenizer:()=>n.BartTokenizer,BaseModelOutput:()=>r.BaseModelOutput,BaseStreamer:()=>P.BaseStreamer,BeitFeatureExtractor:()=>A.BeitFeatureExtractor,BeitForImageClassification:()=>
2845r.BeitForImageClassification,BeitModel:()=>r.BeitModel,BeitPreTrainedModel:()=>r.BeitPreTrainedModel,BertForMaskedLM:()=>r.BertForMaskedLM,BertForQuestionAnswering:()=>r.BertForQuestionAnswering,BertForSequenceClassification:()=>r.BertForSequenceClassification,BertForTokenClassification:()=>r.BertForTokenClassification,BertModel:()=>r.BertModel,BertPreTrainedModel:()=>r.BertPreTrainedModel,BertTokenizer:()=>n.BertTokenizer,BitImageProcessor:()=>A.BitImageProcessor,BlenderbotForConditionalGeneration:()=>r.BlenderbotForConditionalGeneration,BlenderbotModel:()=>r.BlenderbotModel,BlenderbotPreTrainedModel:()=>r.BlenderbotPreTrainedModel,BlenderbotSmallForConditionalGeneration:()=>r.BlenderbotSmallForConditionalGeneration,BlenderbotSmallModel:()=>r.BlenderbotSmallModel,BlenderbotSmallPreTrainedModel:()=>r.BlenderbotSmallPreTrainedModel,BlenderbotSmallTokenizer:()=>n.BlenderbotSmallTokenizer,BlenderbotTokenizer:()=>n.BlenderbotTokenizer,BloomForCausalLM:()=>r.BloomForCausalLM,BloomModel:()=>r.BloomModel,BloomPreTrainedModel:()=>r.BloomPreTrainedModel,BloomTokenizer:()=>n.BloomTokenizer,CLIPFeatureExtractor:()=>A.CLIPFeatureExtractor,CLIPImageProcessor:()=>A.CLIPImageProcessor,CLIPModel:()=>r.CLIPModel,CLIPPreTrainedModel:()=>r.CLIPPreTrainedModel,CLIPSegForImageSegmentation:()=>r.CLIPSegForImageSegmentation,CLIPSegModel:()=>r.CLIPSegModel,CLIPSegPreTrainedModel:()=>r.CLIPSegPreTrainedModel,CLIPTextModel:()=>r.CLIPTextModel,CLIPTextModelWithProjection:()=>r.CLIPTextModelWithProjection,CLIPTokenizer:()=>n.CLIPTokenizer,CLIPVisionModel:()=>r.CLIPVisionModel,CLIPVisionModelWithProjection:()=>r.CLIPVisionModelWithProjection,CamembertForMaskedLM:()=>r.CamembertForMaskedLM,CamembertForQuestionAnswering:()=>r.CamembertForQuestionAnswering,CamembertForSequenceClassification:()=>r.CamembertForSequenceClassification,CamembertForTokenClassification:()=>r.CamembertForTokenClassification,CamembertModel:()=>r.CamembertModel,CamembertPreTrainedModel:()=>r.CamembertPreTrainedModel,CamembertTokenizer:()=>n.CamembertTokenizer,CausalLMOutput:()=>r.CausalLMOutput,CausalLMOutputWithPast:()=>r.CausalLMOutputWithPast,ChineseCLIPFeatureExtractor:()=>A.ChineseCLIPFeatureExtractor,ChineseCLIPModel:()=>r.ChineseCLIPModel,ChineseCLIPPreTrainedModel:()=>r.ChineseCLIPPreTrainedModel,ClapAudioModelWithProjection:()=>r.ClapAudioModelWithProjection,ClapFeatureExtractor:()=>d.ClapFeatureExtractor,ClapModel:()=>r.ClapModel,ClapPreTrainedModel:()=>r.ClapPreTrainedModel,ClapTextModelWithProjection:()=>r.ClapTextModelWithProjection,ClassifierFreeGuidanceLogitsProcessor:()=>w.ClassifierFreeGuidanceLogitsProcessor,CodeGenForCausalLM:()=>r.CodeGenForCausalLM,CodeGenModel:()=>r.CodeGenModel,CodeGenPreTrainedModel:()=>r.CodeGenPreTrainedModel,CodeGenTokenizer:()=>n.CodeGenTokenizer,CodeLlamaTokenizer:()=>n.CodeLlamaTokenizer,CohereForCausalLM:()=>r.CohereForCausalLM,CohereModel:()=>r.CohereModel,CoherePreTrainedModel:()=>r.CoherePreTrainedModel,CohereTokenizer:()=>n.CohereTokenizer,ConvBertForMaskedLM:()=>r.ConvBertForMaskedLM,ConvBertForQuestionAnswering:()=>r.ConvBertForQuestionAnswering,ConvBertForSequenceClassification:()=>r.ConvBertForSequenceClassification,ConvBertForTokenClassification:()=>r.ConvBertForTokenClassification,ConvBertModel:()=>r.ConvBertModel,ConvBertPreTrainedModel:()=>r.ConvBertPreTrainedModel,ConvBertTokenizer:()=>n.ConvBertTokenizer,ConvNextFeatureExtractor:()=>A.ConvNextFeatureExtractor,ConvNextForImageClassification:()=>r.ConvNextForImageClassification,ConvNextImageProcessor:()=>A.ConvNextImageProcessor,ConvNextModel:()=>r.ConvNextModel,ConvNextPreTrainedModel:()=>r.ConvNextPreTrainedModel,ConvNextV2ForImageClassification:()=>r.ConvNextV2ForImageClassification,ConvNextV2Model:()=>r.ConvNextV2Model,ConvNextV2PreTrainedModel:()=>r.ConvNextV2PreTrainedModel,DFineForObjectDetection:()=>r.DFineForObjectDetection,DFineModel:()=>r.DFineModel,DFinePreTrainedModel:()=>r.DFinePreTrainedModel,DINOv3ConvNextModel:()=>r.DINOv3ConvNextModel,DINOv3ConvNextPreTrainedModel:()=>r.DINOv3ConvNextPreTrainedModel,DINOv3ViTImageProcessor:()=>A.DINOv3ViTImageProcessor,DINOv3ViTModel:()=>r.DINOv3ViTModel,DINOv3ViTPreTrainedModel:()=>r.DINOv3ViTPreTrainedModel,DPTFeatureExtractor:()=>A.DPTFeatureExtractor,DPTForDepthEstimation:()=>r.DPTForDepthEstimation,DPTImageProcessor:()=>A.DPTImageProcessor,DPTModel:()=>r.DPTModel,DPTPreTrainedModel:()=>r.DPTPreTrainedModel,DacDecoderModel:()=>r.DacDecoderModel,DacDecoderOutput:()=>r.DacDecoderOutput,DacEncoderModel:()=>r.DacEncoderModel,DacEncoderOutput:()=>r.DacEncoderOutput,DacFeatureExtractor:()=>d.DacFeatureExtractor,DacModel:()=>r.DacModel,DacPreTrainedModel:()=>r.DacPreTrainedModel,DataTypeMap:()=>l.DataTypeMap,DebertaForMaskedLM:()=>r.DebertaForMaskedLM,DebertaForQuestionAnswering:()=>r.DebertaForQuestionAnswering,DebertaForSequenceClassification:()=>r.DebertaForSequenceClassification,DebertaForTokenClassification:()=>r.DebertaForTokenClassification,DebertaModel:()=>r.DebertaModel,DebertaPreTrainedModel:()=>r.DebertaPreTrainedModel,DebertaTokenizer:()=>n.DebertaTokenizer,DebertaV2ForMaskedLM:()=>r.DebertaV2ForMaskedLM,DebertaV2ForQuestionAnswering:()=>r.DebertaV2ForQuestionAnswering,DebertaV2ForSequenceClassification:()=>r.DebertaV2ForSequenceClassification,DebertaV2ForTokenClassification:()=>r.DebertaV2ForTokenClassification,DebertaV2Model:()=>r.DebertaV2Model,DebertaV2PreTrainedModel:()=>r.DebertaV2PreTrainedModel,DebertaV2Tokenizer:()=>n.DebertaV2Tokenizer,DecisionTransformerModel:()=>r.DecisionTransformerModel,DecisionTransformerPreTrainedModel:()=>r.DecisionTransformerPreTrainedModel,DeiTFeatureExtractor:()=>A.DeiTFeatureExtractor,DeiTForImageClassification:()=>r.DeiTForImageClassification,DeiTImageProcessor:()=>A.DeiTImageProcessor,DeiTModel:()=>r.DeiTModel,DeiTPreTrainedModel:()=>r.DeiTPreTrainedModel,DepthAnythingForDepthEstimation:()=>r.DepthAnythingForDepthEstimation,DepthAnythingPreTrainedModel:()=>r.DepthAnythingPreTrainedModel,DepthEstimationPipeline:()=>t.DepthEstimationPipeline,DepthProForDepthEstimation:()=>r.DepthProForDepthEstimation,DepthProPreTrainedModel:()=>r.DepthProPreTrainedModel,DetrFeatureExtractor:()=>A.DetrFeatureExtractor,DetrForObjectDetection:()=>r.DetrForObjectDetection,DetrForSegmentation:()=>r.DetrForSegmentation,DetrImageProcessor:()=>A.DetrImageProcessor,DetrModel:()=>r.DetrModel,DetrObjectDetectionOutput:()=>r.DetrObjectDetectionOutput,DetrPreTrainedModel:()=>r.DetrPreTrainedModel,DetrSegmentationOutput:()=>r.DetrSegmentationOutput,Dinov2ForImageClassification:()=>r.Dinov2ForImageClassification,Dinov2Model:()=>r.Dinov2Model,Dinov2PreTrainedModel:()=>r.Dinov2PreTrainedModel,Dinov2WithRegistersForImageClassification:()=>r.Dinov2WithRegistersForImageClassification,Dinov2WithRegistersModel:()=>r.Dinov2WithRegistersModel,Dinov2WithRegistersPreTrainedModel:()=>r.Dinov2WithRegistersPreTrainedModel,DistilBertForMaskedLM:()=>r.DistilBertForMaskedLM,DistilBertForQuestionAnswering:()=>r.DistilBertForQuestionAnswering,DistilBertForSequenceClassification:()=>r.DistilBertForSequenceClassification,DistilBertForTokenClassification:()=>r.DistilBertForTokenClassification,DistilBertModel:()=>r.DistilBertModel,DistilBertPreTrainedModel:()=>r.DistilBertPreTrainedModel,DistilBertTokenizer:()=>n.DistilBertTokenizer,DocumentQuestionAnsweringPipeline:()=>t.DocumentQuestionAnsweringPipeline,DonutFeatureExtractor:()=>A.DonutFeatureExtractor,DonutImageProcessor:()=>A.DonutImageProcessor,DonutSwinModel:()=>r.DonutSwinModel,DonutSwinPreTrainedModel:()=>r.DonutSwinPreTrainedModel,EdgeTamModel:()=>r.EdgeTamModel,EfficientNetForImageClassification:()=>r.EfficientNetForImageClassification,EfficientNetImageProcessor:()=>A.EfficientNetImageProcessor,EfficientNetModel:()=>r.EfficientNetModel,EfficientNetPreTrainedModel:()=>
2845r.EfficientNetPreTrainedModel,ElectraForMaskedLM:()=>r.ElectraForMaskedLM,ElectraForQuestionAnswering:()=>r.ElectraForQuestionAnswering,ElectraForSequenceClassification:()=>r.ElectraForSequenceClassification,ElectraForTokenClassification:()=>r.ElectraForTokenClassification,ElectraModel:()=>r.ElectraModel,ElectraPreTrainedModel:()=>r.ElectraPreTrainedModel,ElectraTokenizer:()=>n.ElectraTokenizer,EncodecFeatureExtractor:()=>d.EncodecFeatureExtractor,EosTokenCriteria:()=>_.EosTokenCriteria,Ernie4_5ForCausalLM:()=>r.Ernie4_5ForCausalLM,Ernie4_5Model:()=>r.Ernie4_5Model,Ernie4_5PreTrainedModel:()=>r.Ernie4_5PreTrainedModel,EsmForMaskedLM:()=>r.EsmForMaskedLM,EsmForSequenceClassification:()=>r.EsmForSequenceClassification,EsmForTokenClassification:()=>r.EsmForTokenClassification,EsmModel:()=>r.EsmModel,EsmPreTrainedModel:()=>r.EsmPreTrainedModel,EsmTokenizer:()=>n.EsmTokenizer,ExaoneForCausalLM:()=>r.ExaoneForCausalLM,ExaoneModel:()=>r.ExaoneModel,ExaonePreTrainedModel:()=>r.ExaonePreTrainedModel,FFT:()=>u.FFT,FalconForCausalLM:()=>r.FalconForCausalLM,FalconModel:()=>r.FalconModel,FalconPreTrainedModel:()=>r.FalconPreTrainedModel,FalconTokenizer:()=>n.FalconTokenizer,FastViTForImageClassification:()=>r.FastViTForImageClassification,FastViTModel:()=>r.FastViTModel,FastViTPreTrainedModel:()=>r.FastViTPreTrainedModel,FeatureExtractionPipeline:()=>t.FeatureExtractionPipeline,FeatureExtractor:()=>p.FeatureExtractor,FillMaskPipeline:()=>t.FillMaskPipeline,Florence2ForConditionalGeneration:()=>r.Florence2ForConditionalGeneration,Florence2PreTrainedModel:()=>r.Florence2PreTrainedModel,Florence2Processor:()=>f.Florence2Processor,ForcedBOSTokenLogitsProcessor:()=>w.ForcedBOSTokenLogitsProcessor,ForcedEOSTokenLogitsProcessor:()=>w.ForcedEOSTokenLogitsProcessor,GLPNFeatureExtractor:()=>A.GLPNFeatureExtractor,GLPNForDepthEstimation:()=>r.GLPNForDepthEstimation,GLPNModel:()=>r.GLPNModel,GLPNPreTrainedModel:()=>r.GLPNPreTrainedModel,GPT2LMHeadModel:()=>r.GPT2LMHeadModel,GPT2Model:()=>r.GPT2Model,GPT2PreTrainedModel:()=>r.GPT2PreTrainedModel,GPT2Tokenizer:()=>n.GPT2Tokenizer,GPTBigCodeForCausalLM:()=>r.GPTBigCodeForCausalLM,GPTBigCodeModel:()=>r.GPTBigCodeModel,GPTBigCodePreTrainedModel:()=>r.GPTBigCodePreTrainedModel,GPTJForCausalLM:()=>r.GPTJForCausalLM,GPTJModel:()=>r.GPTJModel,GPTJPreTrainedModel:()=>r.GPTJPreTrainedModel,GPTNeoForCausalLM:()=>r.GPTNeoForCausalLM,GPTNeoModel:()=>r.GPTNeoModel,GPTNeoPreTrainedModel:()=>r.GPTNeoPreTrainedModel,GPTNeoXForCausalLM:()=>r.GPTNeoXForCausalLM,GPTNeoXModel:()=>r.GPTNeoXModel,GPTNeoXPreTrainedModel:()=>r.GPTNeoXPreTrainedModel,GPTNeoXTokenizer:()=>n.GPTNeoXTokenizer,Gemma2ForCausalLM:()=>r.Gemma2ForCausalLM,Gemma2Model:()=>r.Gemma2Model,Gemma2PreTrainedModel:()=>r.Gemma2PreTrainedModel,Gemma3ForCausalLM:()=>r.Gemma3ForCausalLM,Gemma3Model:()=>r.Gemma3Model,Gemma3PreTrainedModel:()=>r.Gemma3PreTrainedModel,Gemma3nAudioFeatureExtractor:()=>d.Gemma3nAudioFeatureExtractor,Gemma3nForConditionalGeneration:()=>r.Gemma3nForConditionalGeneration,Gemma3nPreTrainedModel:()=>r.Gemma3nPreTrainedModel,Gemma3nProcessor:()=>f.Gemma3nProcessor,GemmaForCausalLM:()=>r.GemmaForCausalLM,GemmaModel:()=>r.GemmaModel,GemmaPreTrainedModel:()=>r.GemmaPreTrainedModel,GemmaTokenizer:()=>n.GemmaTokenizer,GlmForCausalLM:()=>r.GlmForCausalLM,GlmModel:()=>r.GlmModel,GlmPreTrainedModel:()=>r.GlmPreTrainedModel,GraniteForCausalLM:()=>r.GraniteForCausalLM,GraniteModel:()=>r.GraniteModel,GraniteMoeHybridForCausalLM:()=>r.GraniteMoeHybridForCausalLM,GraniteMoeHybridModel:()=>r.GraniteMoeHybridModel,GraniteMoeHybridPreTrainedModel:()=>r.GraniteMoeHybridPreTrainedModel,GranitePreTrainedModel:()=>r.GranitePreTrainedModel,Grok1Tokenizer:()=>n.Grok1Tokenizer,GroundingDinoForObjectDetection:()=>r.GroundingDinoForObjectDetection,GroundingDinoImageProcessor:()=>A.GroundingDinoImageProcessor,GroundingDinoPreTrainedModel:()=>r.GroundingDinoPreTrainedModel,GroundingDinoProcessor:()=>f.GroundingDinoProcessor,GroupViTModel:()=>r.GroupViTModel,GroupViTPreTrainedModel:()=>r.GroupViTPreTrainedModel,HeliumForCausalLM:()=>r.HeliumForCausalLM,HeliumModel:()=>r.HeliumModel,HeliumPreTrainedModel:()=>r.HeliumPreTrainedModel,HerbertTokenizer:()=>n.HerbertTokenizer,HieraForImageClassification:()=>r.HieraForImageClassification,HieraModel:()=>r.HieraModel,HieraPreTrainedModel:()=>r.HieraPreTrainedModel,HubertForCTC:()=>r.HubertForCTC,HubertForSequenceClassification:()=>r.HubertForSequenceClassification,HubertModel:()=>r.HubertModel,HubertPreTrainedModel:()=>r.HubertPreTrainedModel,IJepaForImageClassification:()=>r.IJepaForImageClassification,IJepaModel:()=>r.IJepaModel,IJepaPreTrainedModel:()=>r.IJepaPreTrainedModel,Idefics3ForConditionalGeneration:()=>r.Idefics3ForConditionalGeneration,Idefics3ImageProcessor:()=>A.Idefics3ImageProcessor,Idefics3PreTrainedModel:()=>r.Idefics3PreTrainedModel,Idefics3Processor:()=>f.Idefics3Processor,ImageClassificationPipeline:()=>t.ImageClassificationPipeline,ImageFeatureExtractionPipeline:()=>t.ImageFeatureExtractionPipeline,ImageFeatureExtractor:()=>d.ImageFeatureExtractor,ImageMattingOutput:()=>r.ImageMattingOutput,ImageProcessor:()=>g.ImageProcessor,ImageSegmentationPipeline:()=>t.ImageSegmentationPipeline,ImageToImagePipeline:()=>t.ImageToImagePipeline,ImageToTextPipeline:()=>t.ImageToTextPipeline,InterruptableStoppingCriteria:()=>_.InterruptableStoppingCriteria,JAISLMHeadModel:()=>r.JAISLMHeadModel,JAISModel:()=>r.JAISModel,JAISPreTrainedModel:()=>r.JAISPreTrainedModel,JinaCLIPImageProcessor:()=>A.JinaCLIPImageProcessor,JinaCLIPModel:()=>r.JinaCLIPModel,JinaCLIPPreTrainedModel:()=>r.JinaCLIPPreTrainedModel,JinaCLIPProcessor:()=>f.JinaCLIPProcessor,JinaCLIPTextModel:()=>r.JinaCLIPTextModel,JinaCLIPVisionModel:()=>r.JinaCLIPVisionModel,Lfm2ForCausalLM:()=>r.Lfm2ForCausalLM,Lfm2Model:()=>r.Lfm2Model,Lfm2PreTrainedModel:()=>r.Lfm2PreTrainedModel,LiteWhisperForConditionalGeneration:()=>r.LiteWhisperForConditionalGeneration,Llama4ForCausalLM:()=>r.Llama4ForCausalLM,Llama4PreTrainedModel:()=>r.Llama4PreTrainedModel,LlamaForCausalLM:()=>r.LlamaForCausalLM,LlamaModel:()=>r.LlamaModel,LlamaPreTrainedModel:()=>r.LlamaPreTrainedModel,LlamaTokenizer:()=>n.LlamaTokenizer,LlavaForConditionalGeneration:()=>r.LlavaForConditionalGeneration,LlavaOnevisionForConditionalGeneration:()=>r.LlavaOnevisionForConditionalGeneration,LlavaOnevisionImageProcessor:()=>A.LlavaOnevisionImageProcessor,LlavaPreTrainedModel:()=>r.LlavaPreTrainedModel,LlavaProcessor:()=>f.LlavaProcessor,LlavaQwen2ForCausalLM:()=>r.LlavaQwen2ForCausalLM,LogitsProcessor:()=>w.LogitsProcessor,LogitsProcessorList:()=>w.LogitsProcessorList,LogitsWarper:()=>w.LogitsWarper,LongT5ForConditionalGeneration:()=>r.LongT5ForConditionalGeneration,LongT5Model:()=>r.LongT5Model,LongT5PreTrainedModel:()=>r.LongT5PreTrainedModel,M2M100ForConditionalGeneration:()=>r.M2M100ForConditionalGeneration,M2M100Model:()=>r.M2M100Model,M2M100PreTrainedModel:()=>r.M2M100PreTrainedModel,M2M100Tokenizer:()=>n.M2M100Tokenizer,MBart50Tokenizer:()=>n.MBart50Tokenizer,MBartForCausalLM:()=>r.MBartForCausalLM,MBartForConditionalGeneration:()=>r.MBartForConditionalGeneration,MBartForSequenceClassification:()=>r.MBartForSequenceClassification,MBartModel:()=>r.MBartModel,MBartPreTrainedModel:()=>r.MBartPreTrainedModel,MBartTokenizer:()=>n.MBartTokenizer,MPNetForMaskedLM:()=>r.MPNetForMaskedLM,MPNetForQuestionAnswering:()=>r.MPNetForQuestionAnswering,MPNetForSequenceClassification:()=>r.MPNetForSequenceClassification,MPNetForTokenClassification:()=>r.MPNetForTokenClassification,MPNetModel:()=>r.MPNetModel,MPNetPreTrainedModel:()=>r.MPNetPreTrainedModel,MPNetTokenizer:()=>
2845n.MPNetTokenizer,MT5ForConditionalGeneration:()=>r.MT5ForConditionalGeneration,MT5Model:()=>r.MT5Model,MT5PreTrainedModel:()=>r.MT5PreTrainedModel,MarianMTModel:()=>r.MarianMTModel,MarianModel:()=>r.MarianModel,MarianPreTrainedModel:()=>r.MarianPreTrainedModel,MarianTokenizer:()=>n.MarianTokenizer,Mask2FormerImageProcessor:()=>A.Mask2FormerImageProcessor,MaskFormerFeatureExtractor:()=>A.MaskFormerFeatureExtractor,MaskFormerForInstanceSegmentation:()=>r.MaskFormerForInstanceSegmentation,MaskFormerImageProcessor:()=>A.MaskFormerImageProcessor,MaskFormerModel:()=>r.MaskFormerModel,MaskFormerPreTrainedModel:()=>r.MaskFormerPreTrainedModel,MaskedLMOutput:()=>r.MaskedLMOutput,MaxLengthCriteria:()=>_.MaxLengthCriteria,Metric3DForDepthEstimation:()=>r.Metric3DForDepthEstimation,Metric3DPreTrainedModel:()=>r.Metric3DPreTrainedModel,Metric3Dv2ForDepthEstimation:()=>r.Metric3Dv2ForDepthEstimation,Metric3Dv2PreTrainedModel:()=>r.Metric3Dv2PreTrainedModel,MgpstrForSceneTextRecognition:()=>r.MgpstrForSceneTextRecognition,MgpstrModelOutput:()=>r.MgpstrModelOutput,MgpstrPreTrainedModel:()=>r.MgpstrPreTrainedModel,MgpstrProcessor:()=>f.MgpstrProcessor,MgpstrTokenizer:()=>n.MgpstrTokenizer,MimiDecoderModel:()=>r.MimiDecoderModel,MimiDecoderOutput:()=>r.MimiDecoderOutput,MimiEncoderModel:()=>r.MimiEncoderModel,MimiEncoderOutput:()=>r.MimiEncoderOutput,MimiModel:()=>r.MimiModel,MimiPreTrainedModel:()=>r.MimiPreTrainedModel,MinLengthLogitsProcessor:()=>w.MinLengthLogitsProcessor,MinNewTokensLengthLogitsProcessor:()=>w.MinNewTokensLengthLogitsProcessor,Ministral3ForCausalLM:()=>r.Ministral3ForCausalLM,Ministral3Model:()=>r.Ministral3Model,Ministral3PreTrainedModel:()=>r.Ministral3PreTrainedModel,MinistralForCausalLM:()=>r.MinistralForCausalLM,MinistralModel:()=>r.MinistralModel,MinistralPreTrainedModel:()=>r.MinistralPreTrainedModel,Mistral3ForConditionalGeneration:()=>r.Mistral3ForConditionalGeneration,MistralForCausalLM:()=>r.MistralForCausalLM,MistralModel:()=>r.MistralModel,MistralPreTrainedModel:()=>r.MistralPreTrainedModel,MobileBertForMaskedLM:()=>r.MobileBertForMaskedLM,MobileBertForQuestionAnswering:()=>r.MobileBertForQuestionAnswering,MobileBertForSequenceClassification:()=>r.MobileBertForSequenceClassification,MobileBertModel:()=>r.MobileBertModel,MobileBertPreTrainedModel:()=>r.MobileBertPreTrainedModel,MobileBertTokenizer:()=>n.MobileBertTokenizer,MobileLLMForCausalLM:()=>r.MobileLLMForCausalLM,MobileLLMModel:()=>r.MobileLLMModel,MobileLLMPreTrainedModel:()=>r.MobileLLMPreTrainedModel,MobileNetV1FeatureExtractor:()=>A.MobileNetV1FeatureExtractor,MobileNetV1ForImageClassification:()=>r.MobileNetV1ForImageClassification,MobileNetV1ForSemanticSegmentation:()=>r.MobileNetV1ForSemanticSegmentation,MobileNetV1ImageProcessor:()=>A.MobileNetV1ImageProcessor,MobileNetV1Model:()=>r.MobileNetV1Model,MobileNetV1PreTrainedModel:()=>r.MobileNetV1PreTrainedModel,MobileNetV2FeatureExtractor:()=>A.MobileNetV2FeatureExtractor,MobileNetV2ForImageClassification:()=>r.MobileNetV2ForImageClassification,MobileNetV2ForSemanticSegmentation:()=>r.MobileNetV2ForSemanticSegmentation,MobileNetV2ImageProcessor:()=>A.MobileNetV2ImageProcessor,MobileNetV2Model:()=>r.MobileNetV2Model,MobileNetV2PreTrainedModel:()=>r.MobileNetV2PreTrainedModel,MobileNetV3FeatureExtractor:()=>A.MobileNetV3FeatureExtractor,MobileNetV3ForImageClassification:()=>r.MobileNetV3ForImageClassification,MobileNetV3ForSemanticSegmentation:()=>r.MobileNetV3ForSemanticSegmentation,MobileNetV3ImageProcessor:()=>A.MobileNetV3ImageProcessor,MobileNetV3Model:()=>r.MobileNetV3Model,MobileNetV3PreTrainedModel:()=>r.MobileNetV3PreTrainedModel,MobileNetV4FeatureExtractor:()=>A.MobileNetV4FeatureExtractor,MobileNetV4ForImageClassification:()=>r.MobileNetV4ForImageClassification,MobileNetV4ForSemanticSegmentation:()=>r.MobileNetV4ForSemanticSegmentation,MobileNetV4ImageProcessor:()=>A.MobileNetV4ImageProcessor,MobileNetV4Model:()=>r.MobileNetV4Model,MobileNetV4PreTrainedModel:()=>r.MobileNetV4PreTrainedModel,MobileViTFeatureExtractor:()=>A.MobileViTFeatureExtractor,MobileViTForImageClassification:()=>r.MobileViTForImageClassification,MobileViTImageProcessor:()=>A.MobileViTImageProcessor,MobileViTModel:()=>r.MobileViTModel,MobileViTPreTrainedModel:()=>r.MobileViTPreTrainedModel,MobileViTV2ForImageClassification:()=>r.MobileViTV2ForImageClassification,MobileViTV2Model:()=>r.MobileViTV2Model,MobileViTV2PreTrainedModel:()=>r.MobileViTV2PreTrainedModel,ModelOutput:()=>r.ModelOutput,ModernBertDecoderForCausalLM:()=>r.ModernBertDecoderForCausalLM,ModernBertDecoderModel:()=>r.ModernBertDecoderModel,ModernBertDecoderPreTrainedModel:()=>r.ModernBertDecoderPreTrainedModel,ModernBertForMaskedLM:()=>r.ModernBertForMaskedLM,ModernBertForSequenceClassification:()=>r.ModernBertForSequenceClassification,ModernBertForTokenClassification:()=>r.ModernBertForTokenClassification,ModernBertModel:()=>r.ModernBertModel,ModernBertPreTrainedModel:()=>r.ModernBertPreTrainedModel,Moondream1ForConditionalGeneration:()=>r.Moondream1ForConditionalGeneration,MoonshineFeatureExtractor:()=>d.MoonshineFeatureExtractor,MoonshineForConditionalGeneration:()=>r.MoonshineForConditionalGeneration,MoonshineModel:()=>r.MoonshineModel,MoonshinePreTrainedModel:()=>r.MoonshinePreTrainedModel,MoonshineProcessor:()=>f.MoonshineProcessor,MptForCausalLM:()=>r.MptForCausalLM,MptModel:()=>r.MptModel,MptPreTrainedModel:()=>
2845r.MptPreTrainedModel,MultiModalityCausalLM:()=>r.MultiModalityCausalLM,MultiModalityPreTrainedModel:()=>r.MultiModalityPreTrainedModel,MusicgenForCausalLM:()=>r.MusicgenForCausalLM,MusicgenForConditionalGeneration:()=>r.MusicgenForConditionalGeneration,MusicgenModel:()=>r.MusicgenModel,MusicgenPreTrainedModel:()=>r.MusicgenPreTrainedModel,NanoChatForCausalLM:()=>r.NanoChatForCausalLM,NanoChatModel:()=>r.NanoChatModel,NanoChatPreTrainedModel:()=>r.NanoChatPreTrainedModel,NeoBertForMaskedLM:()=>r.NeoBertForMaskedLM,NeoBertForQuestionAnswering:()=>r.NeoBertForQuestionAnswering,NeoBertForSequenceClassification:()=>r.NeoBertForSequenceClassification,NeoBertForTokenClassification:()=>r.NeoBertForTokenClassification,NeoBertModel:()=>r.NeoBertModel,NeoBertPreTrainedModel:()=>r.NeoBertPreTrainedModel,NllbTokenizer:()=>n.NllbTokenizer,NoBadWordsLogitsProcessor:()=>w.NoBadWordsLogitsProcessor,NoRepeatNGramLogitsProcessor:()=>w.NoRepeatNGramLogitsProcessor,NomicBertModel:()=>r.NomicBertModel,NomicBertPreTrainedModel:()=>r.NomicBertPreTrainedModel,NougatImageProcessor:()=>A.NougatImageProcessor,NougatTokenizer:()=>n.NougatTokenizer,OPTForCausalLM:()=>r.OPTForCausalLM,OPTModel:()=>r.OPTModel,OPTPreTrainedModel:()=>r.OPTPreTrainedModel,ObjectDetectionPipeline:()=>t.ObjectDetectionPipeline,Olmo2ForCausalLM:()=>r.Olmo2ForCausalLM,Olmo2Model:()=>r.Olmo2Model,Olmo2PreTrainedModel:()=>r.Olmo2PreTrainedModel,OlmoForCausalLM:()=>r.OlmoForCausalLM,OlmoModel:()=>r.OlmoModel,OlmoPreTrainedModel:()=>r.OlmoPreTrainedModel,OpenELMForCausalLM:()=>r.OpenELMForCausalLM,OpenELMModel:()=>r.OpenELMModel,OpenELMPreTrainedModel:()=>r.OpenELMPreTrainedModel,OwlViTFeatureExtractor:()=>A.OwlViTFeatureExtractor,OwlViTForObjectDetection:()=>r.OwlViTForObjectDetection,OwlViTImageProcessor:()=>A.OwlViTImageProcessor,OwlViTModel:()=>r.OwlViTModel,OwlViTPreTrainedModel:()=>r.OwlViTPreTrainedModel,OwlViTProcessor:()=>f.OwlViTProcessor,Owlv2ForObjectDetection:()=>r.Owlv2ForObjectDetection,Owlv2ImageProcessor:()=>A.Owlv2ImageProcessor,Owlv2Model:()=>r.Owlv2Model,Owlv2PreTrainedModel:()=>r.Owlv2PreTrainedModel,PaliGemmaForConditionalGeneration:()=>r.PaliGemmaForConditionalGeneration,PaliGemmaPreTrainedModel:()=>r.PaliGemmaPreTrainedModel,PaliGemmaProcessor:()=>f.PaliGemmaProcessor,ParakeetFeatureExtractor:()=>d.ParakeetFeatureExtractor,ParakeetForCTC:()=>r.ParakeetForCTC,ParakeetPreTrainedModel:()=>r.ParakeetPreTrainedModel,PatchTSMixerForPrediction:()=>r.PatchTSMixerForPrediction,PatchTSMixerModel:()=>r.PatchTSMixerModel,PatchTSMixerPreTrainedModel:()=>r.PatchTSMixerPreTrainedModel,PatchTSTForPrediction:()=>r.PatchTSTForPrediction,PatchTSTModel:()=>r.PatchTSTModel,PatchTSTPreTrainedModel:()=>r.PatchTSTPreTrainedModel,Phi3ForCausalLM:()=>r.Phi3ForCausalLM,Phi3Model:()=>r.Phi3Model,Phi3PreTrainedModel:()=>r.Phi3PreTrainedModel,Phi3VForCausalLM:()=>r.Phi3VForCausalLM,Phi3VImageProcessor:()=>A.Phi3VImageProcessor,Phi3VPreTrainedModel:()=>r.Phi3VPreTrainedModel,Phi3VProcessor:()=>f.Phi3VProcessor,PhiForCausalLM:()=>r.PhiForCausalLM,PhiModel:()=>r.PhiModel,PhiPreTrainedModel:()=>r.PhiPreTrainedModel,Pipeline:()=>t.Pipeline,PixtralImageProcessor:()=>A.PixtralImageProcessor,PixtralProcessor:()=>f.PixtralProcessor,PreTrainedModel:()=>r.PreTrainedModel,PreTrainedTokenizer:()=>n.PreTrainedTokenizer,PretrainedConfig:()=>s.PretrainedConfig,PretrainedMixin:()=>r.PretrainedMixin,Processor:()=>B.Processor,PvtForImageClassification:()=>r.PvtForImageClassification,PvtImageProcessor:()=>A.PvtImageProcessor,PvtModel:()=>r.PvtModel,PvtPreTrainedModel:()=>r.PvtPreTrainedModel,PyAnnoteFeatureExtractor:()=>d.PyAnnoteFeatureExtractor,PyAnnoteForAudioFrameClassification:()=>r.PyAnnoteForAudioFrameClassification,PyAnnoteModel:()=>r.PyAnnoteModel,PyAnnotePreTrainedModel:()=>r.PyAnnotePreTrainedModel,PyAnnoteProcessor:()=>f.PyAnnoteProcessor,QuestionAnsweringModelOutput:()=>r.QuestionAnsweringModelOutput,QuestionAnsweringPipeline:()=>t.QuestionAnsweringPipeline,Qwen2ForCausalLM:()=>r.Qwen2ForCausalLM,Qwen2Model:()=>r.Qwen2Model,Qwen2PreTrainedModel:()=>r.Qwen2PreTrainedModel,Qwen2Tokenizer:()=>n.Qwen2Tokenizer,Qwen2VLForConditionalGeneration:()=>r.Qwen2VLForConditionalGeneration,Qwen2VLImageProcessor:()=>A.Qwen2VLImageProcessor,Qwen2VLPreTrainedModel:()=>r.Qwen2VLPreTrainedModel,Qwen2VLProcessor:()=>f.Qwen2VLProcessor,Qwen3ForCausalLM:()=>r.Qwen3ForCausalLM,Qwen3Model:()=>r.Qwen3Model,Qwen3PreTrainedModel:()=>r.Qwen3PreTrainedModel,RFDetrForObjectDetection:()=>r.RFDetrForObjectDetection,RFDetrModel:()=>r.RFDetrModel,RFDetrObjectDetectionOutput:()=>r.RFDetrObjectDetectionOutput,RFDetrPreTrainedModel:()=>r.RFDetrPreTrainedModel,RTDetrForObjectDetection:()=>r.RTDetrForObjectDetection,RTDetrImageProcessor:()=>A.RTDetrImageProcessor,RTDetrModel:()=>r.RTDetrModel,RTDetrObjectDetectionOutput:()=>r.RTDetrObjectDetectionOutput,RTDetrPreTrainedModel:()=>
2845r.RTDetrPreTrainedModel,RTDetrV2ForObjectDetection:()=>r.RTDetrV2ForObjectDetection,RTDetrV2Model:()=>r.RTDetrV2Model,RTDetrV2ObjectDetectionOutput:()=>r.RTDetrV2ObjectDetectionOutput,RTDetrV2PreTrainedModel:()=>r.RTDetrV2PreTrainedModel,RawAudio:()=>a.RawAudio,RawImage:()=>i.RawImage,RawVideo:()=>o.RawVideo,RawVideoFrame:()=>o.RawVideoFrame,RepetitionPenaltyLogitsProcessor:()=>w.RepetitionPenaltyLogitsProcessor,ResNetForImageClassification:()=>r.ResNetForImageClassification,ResNetModel:()=>r.ResNetModel,ResNetPreTrainedModel:()=>r.ResNetPreTrainedModel,RoFormerForMaskedLM:()=>r.RoFormerForMaskedLM,RoFormerForQuestionAnswering:()=>r.RoFormerForQuestionAnswering,RoFormerForSequenceClassification:()=>r.RoFormerForSequenceClassification,RoFormerForTokenClassification:()=>r.RoFormerForTokenClassification,RoFormerModel:()=>r.RoFormerModel,RoFormerPreTrainedModel:()=>r.RoFormerPreTrainedModel,RoFormerTokenizer:()=>n.RoFormerTokenizer,RobertaForMaskedLM:()=>r.RobertaForMaskedLM,RobertaForQuestionAnswering:()=>r.RobertaForQuestionAnswering,RobertaForSequenceClassification:()=>
2845r.RobertaForSequenceClassification,RobertaForTokenClassification:()=>r.RobertaForTokenClassification,RobertaModel:()=>r.RobertaModel,RobertaPreTrainedModel:()=>r.RobertaPreTrainedModel,RobertaTokenizer:()=>n.RobertaTokenizer,Sam2ImageProcessor:()=>A.Sam2ImageProcessor,Sam2ImageSegmentationOutput:()=>r.Sam2ImageSegmentationOutput,Sam2Model:()=>r.Sam2Model,Sam2PreTrainedModel:()=>r.Sam2PreTrainedModel,Sam2Processor:()=>f.Sam2Processor,Sam2VideoProcessor:()=>f.Sam2VideoProcessor,Sam3ImageProcessor:()=>A.Sam3ImageProcessor,Sam3TrackerModel:()=>r.Sam3TrackerModel,SamImageProcessor:()=>A.SamImageProcessor,SamImageSegmentationOutput:()=>r.SamImageSegmentationOutput,SamModel:()=>r.SamModel,SamPreTrainedModel:()=>r.SamPreTrainedModel,SamProcessor:()=>f.SamProcessor,SapiensForDepthEstimation:()=>r.SapiensForDepthEstimation,SapiensForNormalEstimation:()=>r.SapiensForNormalEstimation,SapiensForSemanticSegmentation:()=>r.SapiensForSemanticSegmentation,SapiensPreTrainedModel:()=>r.SapiensPreTrainedModel,SeamlessM4TFeatureExtractor:()=>d.SeamlessM4TFeatureExtractor,SegformerFeatureExtractor:()=>A.SegformerFeatureExtractor,SegformerForImageClassification:()=>r.SegformerForImageClassification,SegformerForSemanticSegmentation:()=>r.SegformerForSemanticSegmentation,SegformerImageProcessor:()=>A.SegformerImageProcessor,SegformerModel:()=>r.SegformerModel,SegformerPreTrainedModel:()=>r.SegformerPreTrainedModel,Seq2SeqLMOutput:()=>r.Seq2SeqLMOutput,SequenceClassifierOutput:()=>r.SequenceClassifierOutput,SiglipImageProcessor:()=>A.SiglipImageProcessor,SiglipModel:()=>r.SiglipModel,SiglipPreTrainedModel:()=>r.SiglipPreTrainedModel,SiglipTextModel:()=>r.SiglipTextModel,SiglipTokenizer:()=>n.SiglipTokenizer,SiglipVisionModel:()=>r.SiglipVisionModel,SmolLM3ForCausalLM:()=>r.SmolLM3ForCausalLM,SmolLM3Model:()=>r.SmolLM3Model,SmolLM3PreTrainedModel:()=>r.SmolLM3PreTrainedModel,SmolVLMForConditionalGeneration:()=>r.SmolVLMForConditionalGeneration,SmolVLMImageProcessor:()=>A.SmolVLMImageProcessor,SmolVLMProcessor:()=>f.SmolVLMProcessor,SnacDecoderModel:()=>r.SnacDecoderModel,SnacEncoderModel:()=>r.SnacEncoderModel,SnacFeatureExtractor:()=>d.SnacFeatureExtractor,SnacModel:()=>r.SnacModel,SnacPreTrainedModel:()=>r.SnacPreTrainedModel,SpeechT5FeatureExtractor:()=>d.SpeechT5FeatureExtractor,SpeechT5ForSpeechToText:()=>r.SpeechT5ForSpeechToText,SpeechT5ForTextToSpeech:()=>r.SpeechT5ForTextToSpeech,SpeechT5HifiGan:()=>r.SpeechT5HifiGan,SpeechT5Model:()=>r.SpeechT5Model,SpeechT5PreTrainedModel:()=>r.SpeechT5PreTrainedModel,SpeechT5Processor:()=>f.SpeechT5Processor,SpeechT5Tokenizer:()=>n.SpeechT5Tokenizer,SqueezeBertForMaskedLM:()=>r.SqueezeBertForMaskedLM,SqueezeBertForQuestionAnswering:()=>r.SqueezeBertForQuestionAnswering,SqueezeBertForSequenceClassification:()=>r.SqueezeBertForSequenceClassification,SqueezeBertModel:()=>r.SqueezeBertModel,SqueezeBertPreTrainedModel:()=>r.SqueezeBertPreTrainedModel,SqueezeBertTokenizer:()=>n.SqueezeBertTokenizer,StableLmForCausalLM:()=>r.StableLmForCausalLM,StableLmModel:()=>r.StableLmModel,StableLmPreTrainedModel:()=>r.StableLmPreTrainedModel,Starcoder2ForCausalLM:()=>r.Starcoder2ForCausalLM,Starcoder2Model:()=>r.Starcoder2Model,Starcoder2PreTrainedModel:()=>r.Starcoder2PreTrainedModel,StoppingCriteria:()=>_.StoppingCriteria,StoppingCriteriaList:()=>_.StoppingCriteriaList,StyleTextToSpeech2Model:()=>r.StyleTextToSpeech2Model,StyleTextToSpeech2PreTrainedModel:()=>r.StyleTextToSpeech2PreTrainedModel,SummarizationPipeline:()=>t.SummarizationPipeline,SupertonicForConditionalGeneration:()=>r.SupertonicForConditionalGeneration,SupertonicPreTrainedModel:()=>r.SupertonicPreTrainedModel,SuppressTokensAtBeginLogitsProcessor:()=>w.SuppressTokensAtBeginLogitsProcessor,Swin2SRForImageSuperResolution:()=>r.Swin2SRForImageSuperResolution,Swin2SRImageProcessor:()=>A.Swin2SRImageProcessor,Swin2SRModel:()=>r.Swin2SRModel,Swin2SRPreTrainedModel:()=>r.Swin2SRPreTrainedModel,SwinForImageClassification:()=>r.SwinForImageClassification,SwinForSemanticSegmentation:()=>r.SwinForSemanticSegmentation,SwinModel:()=>r.SwinModel,SwinPreTrainedModel:()=>r.SwinPreTrainedModel,T5ForConditionalGeneration:()=>r.T5ForConditionalGeneration,T5Model:()=>r.T5Model,T5PreTrainedModel:()=>r.T5PreTrainedModel,T5Tokenizer:()=>n.T5Tokenizer,TableTransformerForObjectDetection:()=>r.TableTransformerForObjectDetection,TableTransformerModel:()=>r.TableTransformerModel,TableTransformerObjectDetectionOutput:()=>r.TableTransformerObjectDetectionOutput,TableTransformerPreTrainedModel:()=>r.TableTransformerPreTrainedModel,TemperatureLogitsWarper:()=>w.TemperatureLogitsWarper,Tensor:()=>l.Tensor,Text2TextGenerationPipeline:()=>t.Text2TextGenerationPipeline,TextClassificationPipeline:()=>t.TextClassificationPipeline,TextGenerationPipeline:()=>t.TextGenerationPipeline,TextStreamer:()=>P.TextStreamer,TextToAudioPipeline:()=>t.TextToAudioPipeline,TokenClassificationPipeline:()=>t.TokenClassificationPipeline,TokenClassifierOutput:()=>r.TokenClassifierOutput,TokenizerModel:()=>n.TokenizerModel,TopKLogitsWarper:()=>w.TopKLogitsWarper,TopPLogitsWarper:()=>w.TopPLogitsWarper,TrOCRForCausalLM:()=>r.TrOCRForCausalLM,TrOCRPreTrainedModel:()=>r.TrOCRPreTrainedModel,TranslationPipeline:()=>t.TranslationPipeline,UltravoxModel:()=>r.UltravoxModel,UltravoxPreTrainedModel:()=>r.UltravoxPreTrainedModel,UltravoxProcessor:()=>f.UltravoxProcessor,UniSpeechForCTC:()=>r.UniSpeechForCTC,UniSpeechForSequenceClassification:()=>r.UniSpeechForSequenceClassification,UniSpeechModel:()=>r.UniSpeechModel,UniSpeechPreTrainedModel:()=>r.UniSpeechPreTrainedModel,UniSpeechSatForAudioFrameClassification:()=>r.UniSpeechSatForAudioFrameClassification,UniSpeechSatForCTC:()=>r.UniSpeechSatForCTC,UniSpeechSatForSequenceClassification:()=>r.UniSpeechSatForSequenceClassification,UniSpeechSatModel:()=>r.UniSpeechSatModel,UniSpeechSatPreTrainedModel:()=>r.UniSpeechSatPreTrainedModel,VLChatProcessor:()=>f.VLChatProcessor,VLMImageProcessor:()=>
2845A.VLMImageProcessor,VaultGemmaForCausalLM:()=>r.VaultGemmaForCausalLM,VaultGemmaModel:()=>r.VaultGemmaModel,VaultGemmaPreTrainedModel:()=>r.VaultGemmaPreTrainedModel,ViTFeatureExtractor:()=>A.ViTFeatureExtractor,ViTForImageClassification:()=>r.ViTForImageClassification,ViTImageProcessor:()=>A.ViTImageProcessor,ViTMAEModel:()=>r.ViTMAEModel,ViTMAEPreTrainedModel:()=>r.ViTMAEPreTrainedModel,ViTMSNForImageClassification:()=>r.ViTMSNForImageClassification,ViTMSNModel:()=>r.ViTMSNModel,ViTMSNPreTrainedModel:()=>r.ViTMSNPreTrainedModel,ViTModel:()=>r.ViTModel,ViTPreTrainedModel:()=>r.ViTPreTrainedModel,VisionEncoderDecoderModel:()=>r.VisionEncoderDecoderModel,VitMatteForImageMatting:()=>r.VitMatteForImageMatting,VitMatteImageProcessor:()=>A.VitMatteImageProcessor,VitMattePreTrainedModel:()=>r.VitMattePreTrainedModel,VitPoseForPoseEstimation:()=>r.VitPoseForPoseEstimation,VitPoseImageProcessor:()=>A.VitPoseImageProcessor,VitPosePreTrainedModel:()=>r.VitPosePreTrainedModel,VitsModel:()=>r.VitsModel,VitsModelOutput:()=>r.VitsModelOutput,VitsPreTrainedModel:()=>r.VitsPreTrainedModel,VitsTokenizer:()=>n.VitsTokenizer,VoxtralForConditionalGeneration:()=>r.VoxtralForConditionalGeneration,VoxtralProcessor:()=>f.VoxtralProcessor,Wav2Vec2BertForCTC:()=>r.Wav2Vec2BertForCTC,Wav2Vec2BertForSequenceClassification:()=>r.Wav2Vec2BertForSequenceClassification,Wav2Vec2BertModel:()=>r.Wav2Vec2BertModel,Wav2Vec2BertPreTrainedModel:()=>r.Wav2Vec2BertPreTrainedModel,Wav2Vec2CTCTokenizer:()=>n.Wav2Vec2CTCTokenizer,Wav2Vec2FeatureExtractor:()=>d.Wav2Vec2FeatureExtractor,Wav2Vec2ForAudioFrameClassification:()=>r.Wav2Vec2ForAudioFrameClassification,Wav2Vec2ForCTC:()=>r.Wav2Vec2ForCTC,Wav2Vec2ForSequenceClassification:()=>r.Wav2Vec2ForSequenceClassification,Wav2Vec2Model:()=>r.Wav2Vec2Model,Wav2Vec2PreTrainedModel:()=>r.Wav2Vec2PreTrainedModel,Wav2Vec2Processor:()=>f.Wav2Vec2Processor,Wav2Vec2ProcessorWithLM:()=>f.Wav2Vec2ProcessorWithLM,WavLMForAudioFrameClassification:()=>r.WavLMForAudioFrameClassification,WavLMForCTC:()=>r.WavLMForCTC,WavLMForSequenceClassification:()=>r.WavLMForSequenceClassification,WavLMForXVector:()=>r.WavLMForXVector,WavLMModel:()=>r.WavLMModel,WavLMPreTrainedModel:()=>r.WavLMPreTrainedModel,WeSpeakerFeatureExtractor:()=>d.WeSpeakerFeatureExtractor,WeSpeakerResNetModel:()=>r.WeSpeakerResNetModel,WeSpeakerResNetPreTrainedModel:()=>r.WeSpeakerResNetPreTrainedModel,WhisperFeatureExtractor:()=>d.WhisperFeatureExtractor,WhisperForConditionalGeneration:()=>r.WhisperForConditionalGeneration,WhisperModel:()=>r.WhisperModel,WhisperPreTrainedModel:()=>r.WhisperPreTrainedModel,WhisperProcessor:()=>f.WhisperProcessor,WhisperTextStreamer:()=>P.WhisperTextStreamer,WhisperTimeStampLogitsProcessor:()=>w.WhisperTimeStampLogitsProcessor,WhisperTokenizer:()=>n.WhisperTokenizer,XLMForQuestionAnswering:()=>r.XLMForQuestionAnswering,XLMForSequenceClassification:()=>r.XLMForSequenceClassification,XLMForTokenClassification:()=>r.XLMForTokenClassification,XLMModel:()=>r.XLMModel,XLMPreTrainedModel:()=>r.XLMPreTrainedModel,XLMRobertaForMaskedLM:()=>r.XLMRobertaForMaskedLM,XLMRobertaForQuestionAnswering:()=>r.XLMRobertaForQuestionAnswering,XLMRobertaForSequenceClassification:()=>r.XLMRobertaForSequenceClassification,XLMRobertaForTokenClassification:()=>r.XLMRobertaForTokenClassification,XLMRobertaModel:()=>r.XLMRobertaModel,XLMRobertaPreTrainedModel:()=>r.XLMRobertaPreTrainedModel,XLMRobertaTokenizer:()=>n.XLMRobertaTokenizer,XLMTokenizer:()=>n.XLMTokenizer,XLMWithLMHeadModel:()=>r.XLMWithLMHeadModel,XVectorOutput:()=>r.XVectorOutput,YolosFeatureExtractor:()=>A.YolosFeatureExtractor,YolosForObjectDetection:()=>r.YolosForObjectDetection,YolosImageProcessor:()=>A.YolosImageProcessor,YolosModel:()=>r.YolosModel,YolosObjectDetectionOutput:()=>r.YolosObjectDetectionOutput,YolosPreTrainedModel:()=>r.YolosPreTrainedModel,ZeroShotAudioClassificationPipeline:()=>t.ZeroShotAudioClassificationPipeline,ZeroShotClassificationPipeline:()=>t.ZeroShotClassificationPipeline,ZeroShotImageClassificationPipeline:()=>t.ZeroShotImageClassificationPipeline,ZeroShotObjectDetectionPipeline:()=>t.ZeroShotObjectDetectionPipeline,bankers_round:()=>u.bankers_round,cat:()=>l.cat,cos_sim:()=>u.cos_sim,dot:()=>u.dot,dynamic_time_warping:()=>u.dynamic_time_warping,env:()=>e.env,full:()=>l.full,full_like:()=>l.full_like,getCacheShapes:()=>s.getCacheShapes,hamming:()=>a.hamming,hanning:()=>a.hanning,interpolate:()=>l.interpolate,interpolate_4d:()=>l.interpolate_4d,interpolate_data:()=>u.interpolate_data,is_chinese_char:()=>n.is_chinese_char,layer_norm:()=>l.layer_norm,load_image:()=>i.load_image,load_video:()=>o.load_video,log_softmax:()=>u.log_softmax,magnitude:()=>u.magnitude,matmul:()=>l.matmul,max:()=>u.max,mean:()=>l.mean,mean_pooling:()=>l.mean_pooling,medianFilter:()=>u.medianFilter,mel_filter_bank:()=>a.mel_filter_bank,min:()=>u.min,ones:()=>l.ones,ones_like:()=>l.ones_like,permute:()=>l.permute,permute_data:()=>u.permute_data,pipeline:()=>t.pipeline,quantize_embeddings:()=>l.quantize_embeddings,rand:()=>l.rand,randn:()=>l.randn,read_audio:()=>a.read_audio,rfft:()=>l.rfft,round:()=>u.round,slice:()=>l.slice,softmax:()=>u.softmax,spectrogram:()=>a.spectrogram,stack:()=>l.stack,std_mean:()=>l.std_mean,topk:()=>l.topk,window_function:()=>a.window_function,zeros:()=>l.zeros,zeros_like:()=>l.zeros_like});var e=Pr("./src/env.js"),t=Pr("./src/pipelines.js"),r=Pr("./src/models.js"),n=Pr("./src/tokenizers.js"),s=Pr("./src/configs.js"),a=Pr("./src/utils/audio.js"),i=Pr("./src/utils/image.js"),o=Pr("./src/utils/video.js"),l=Pr("./src/utils/tensor.js"),u=Pr("./src/utils/maths.js"),p=Pr("./src/base/feature_extraction_utils.js"),d=Pr("./src/models/feature_extractors.js"),
2845c=Pr("./src/models/auto/feature_extraction_auto.js"),g=Pr("./src/base/image_processors_utils.js"),A=Pr("./src/models/image_processors.js"),m=Pr("./src/models/auto/image_processing_auto.js"),B=Pr("./src/base/processing_utils.js"),f=Pr("./src/models/processors.js"),h=Pr("./src/models/auto/processing_auto.js"),P=Pr("./src/generation/streamers.js"),_=Pr("./src/generation/stopping_criteria.js"),w=Pr("./src/generation/logits_process.js")})(),E.ASTFeatureExtractor,E.ASTForAudioClassification,E.ASTModel,E.ASTPreTrainedModel,E.AlbertForMaskedLM,E.AlbertForQuestionAnswering,E.AlbertForSequenceClassification,E.AlbertModel,E.AlbertPreTrainedModel,E.AlbertTokenizer,E.ArceeForCausalLM,E.ArceeModel,E.ArceePreTrainedModel,E.AudioClassificationPipeline,E.AutoConfig,E.AutoFeatureExtractor,E.AutoImageProcessor,E.AutoModel,E.AutoModelForAudioClassification,E.AutoModelForAudioFrameClassification,E.AutoModelForAudioTextToText,E.AutoModelForCTC,E.AutoModelForCausalLM,E.AutoModelForDepthEstimation,E.AutoModelForDocumentQuestionAnswering,E.AutoModelForImageClassification,E.AutoModelForImageFeatureExtraction,E.AutoModelForImageMatting,E.AutoModelForImageSegmentation,E.AutoModelForImageTextToText,E.AutoModelForImageToImage,E.AutoModelForMaskGeneration,E.AutoModelForMaskedLM,E.AutoModelForNormalEstimation,E.AutoModelForObjectDetection,E.AutoModelForPoseEstimation,E.AutoModelForQuestionAnswering,E.AutoModelForSemanticSegmentation,E.AutoModelForSeq2SeqLM,E.AutoModelForSequenceClassification,E.AutoModelForSpeechSeq2Seq,E.AutoModelForTextToSpectrogram,E.AutoModelForTextToWaveform,E.AutoModelForTokenClassification,E.AutoModelForUniversalSegmentation,E.AutoModelForVision2Seq,E.AutoModelForXVector,E.AutoModelForZeroShotObjectDetection;var B4=E.AutoProcessor;E.AutoTokenizer,E.AutomaticSpeechRecognitionPipeline,E.BackgroundRemovalPipeline,E.BartForConditionalGeneration,E.BartForSequenceClassification,E.BartModel,E.BartPretrainedModel,E.BartTokenizer,E.BaseModelOutput,E.BaseStreamer,E.BeitFeatureExtractor,E.BeitForImageClassification,E.BeitModel,E.BeitPreTrainedModel,E.BertForMaskedLM,E.BertForQuestionAnswering,E.BertForSequenceClassification,E.BertForTokenClassification,E.BertModel,E.BertPreTrainedModel,E.BertTokenizer,E.BitImageProcessor,E.BlenderbotForConditionalGeneration,E.BlenderbotModel,E.BlenderbotPreTrainedModel,E.BlenderbotSmallForConditionalGeneration,E.BlenderbotSmallModel,E.BlenderbotSmallPreTrainedModel,E.BlenderbotSmallTokenizer,E.BlenderbotTokenizer,E.BloomForCausalLM,E.BloomModel,E.BloomPreTrainedModel,E.BloomTokenizer,E.CLIPFeatureExtractor,E.CLIPImageProcessor,E.CLIPModel,E.CLIPPreTrainedModel,E.CLIPSegForImageSegmentation,E.CLIPSegModel,E.CLIPSegPreTrainedModel,E.CLIPTextModel,E.CLIPTextModelWithProjection,E.CLIPTokenizer,E.CLIPVisionModel,E.CLIPVisionModelWithProjection,E.CamembertForMaskedLM,E.CamembertForQuestionAnswering,E.CamembertForSequenceClassification,E.CamembertForTokenClassification,E.CamembertModel,E.CamembertPreTrainedModel,E.CamembertTokenizer,E.CausalLMOutput,E.CausalLMOutputWithPast,E.ChineseCLIPFeatureExtractor,E.ChineseCLIPModel,E.ChineseCLIPPreTrainedModel,E.ClapAudioModelWithProjection,E.ClapFeatureExtractor,E.ClapModel,E.ClapPreTrainedModel,E.ClapTextModelWithProjection,E.ClassifierFreeGuidanceLogitsProcessor,E.CodeGenForCausalLM,E.CodeGenModel,E.CodeGenPreTrainedModel,E.CodeGenTokenizer,E.CodeLlamaTokenizer,E.CohereForCausalLM,E.CohereModel,E.CoherePreTrainedModel,E.CohereTokenizer,E.ConvBertForMaskedLM,E.ConvBertForQuestionAnswering,E.ConvBertForSequenceClassification,E.ConvBertForTokenClassification,E.ConvBertModel,E.ConvBertPreTrainedModel,E.ConvBertTokenizer,E.ConvNextFeatureExtractor,E.ConvNextForImageClassification,E.ConvNextImageProcessor,E.ConvNextModel,E.ConvNextPreTrainedModel,E.ConvNextV2ForImageClassification,E.ConvNextV2Model,E.ConvNextV2PreTrainedModel,E.DFineForObjectDetection,E.DFineModel,E.DFinePreTrainedModel,E.DINOv3ConvNextModel,E.DINOv3ConvNextPreTrainedModel,E.DINOv3ViTImageProcessor,E.DINOv3ViTModel,E.DINOv3ViTPreTrainedModel,E.DPTFeatureExtractor,E.DPTForDepthEstimation,E.DPTImageProcessor,E.DPTModel,
2845E.DPTPreTrainedModel,E.DacDecoderModel,E.DacDecoderOutput,E.DacEncoderModel,E.DacEncoderOutput,E.DacFeatureExtractor,E.DacModel,E.DacPreTrainedModel,E.DataTypeMap,E.DebertaForMaskedLM,E.DebertaForQuestionAnswering,E.DebertaForSequenceClassification,E.DebertaForTokenClassification,E.DebertaModel,E.DebertaPreTrainedModel,E.DebertaTokenizer,E.DebertaV2ForMaskedLM,E.DebertaV2ForQuestionAnswering,E.DebertaV2ForSequenceClassification,E.DebertaV2ForTokenClassification,E.DebertaV2Model,E.DebertaV2PreTrainedModel,E.DebertaV2Tokenizer,E.DecisionTransformerModel,E.DecisionTransformerPreTrainedModel,E.DeiTFeatureExtractor,E.DeiTForImageClassification,E.DeiTImageProcessor,E.DeiTModel,E.DeiTPreTrainedModel,E.DepthAnythingForDepthEstimation,E.DepthAnythingPreTrainedModel,E.DepthEstimationPipeline,E.DepthProForDepthEstimation,E.DepthProPreTrainedModel,E.DetrFeatureExtractor,E.DetrForObjectDetection,E.DetrForSegmentation,E.DetrImageProcessor,E.DetrModel,E.DetrObjectDetectionOutput,E.DetrPreTrainedModel,E.DetrSegmentationOutput,E.Dinov2ForImageClassification,E.Dinov2Model,E.Dinov2PreTrainedModel,E.Dinov2WithRegistersForImageClassification,E.Dinov2WithRegistersModel,E.Dinov2WithRegistersPreTrainedModel,E.DistilBertForMaskedLM,E.DistilBertForQuestionAnswering,E.DistilBertForSequenceClassification,E.DistilBertForTokenClassification,E.DistilBertModel,E.DistilBertPreTrainedModel,E.DistilBertTokenizer,E.DocumentQuestionAnsweringPipeline,E.DonutFeatureExtractor,E.DonutImageProcessor,E.DonutSwinModel,E.DonutSwinPreTrainedModel,E.EdgeTamModel,E.EfficientNetForImageClassification,E.EfficientNetImageProcessor,E.EfficientNetModel,E.EfficientNetPreTrainedModel,E.ElectraForMaskedLM,E.ElectraF
2845orQuestionAnswering,E.ElectraForSequenceClassification,E.ElectraForTokenClassification,E.ElectraModel,E.ElectraPreTrainedModel,E.ElectraTokenizer,E.EncodecFeatureExtractor,E.EosTokenCriteria,E.Ernie4_5ForCausalLM,E.Ernie4_5Model,E.Ernie4_5PreTrainedModel,E.EsmForMaskedLM,E.EsmForSequenceClassification,E.EsmForTokenClassification,E.EsmModel,E.EsmPreTrainedModel,E.EsmTokenizer,E.ExaoneForCausalLM,E.ExaoneModel,E.ExaonePreTrainedModel,E.FFT,E.FalconForCausalLM,E.FalconModel,E.FalconPreTrainedModel,E.FalconTokenizer,E.FastViTForImageClassification,E.FastViTModel,E.FastViTPreTrainedModel,E.FeatureExtractionPipeline,E.FeatureExtractor,E.FillMaskPipeline,E.Florence2ForConditionalGeneration,E.Florence2PreTrainedModel,E.Florence2Processor,E.ForcedBOSTokenLogitsProcessor,E.ForcedEOSTokenLogitsProcessor,E.GLPNFeatureExtractor,E.GLPNForDepthEstimation,E.GLPNModel,E.GLPNPreTrainedModel,E.GPT2LMHeadModel,E.GPT2Model,E.GPT2PreTrainedModel,E.GPT2Tokenizer,E.GPTBigCodeForCausalLM,E.GPTBigCodeModel,E.GPTBigCodePreTrainedModel,E.GPTJForCausalLM,E.GPTJModel,E.GPTJPreTrainedModel,E.GPTNeoForCausalLM,E.GPTNeoModel,E.GPTNeoPreTrainedModel,E.GPTNeoXForCausalLM,E.GPTNeoXModel,E.GPTNeoXPreTrainedModel,E.GPTNeoXTokenizer,E.Gemma2ForCausalLM,E.Gemma2Model,E.Gemma2PreTrainedModel,E.Gemma3ForCausalLM,E.Gemma3Model,E.Gemma3PreTrainedModel,E.Gemma3nAudioFeatureExtractor,E.Gemma3nForConditionalGeneration,E.Gemma3nPreTrainedModel,E.Gemma3nProcessor,E.GemmaForCausalLM,E.GemmaModel,E.GemmaPreTrainedModel,E.GemmaTokenizer,E.GlmForCausalLM,E.GlmModel,E.GlmPreTrainedModel,E.GraniteForCausalLM,E.GraniteModel,E.GraniteMoeHybridForCausalLM,E.GraniteMoeHybridModel,E.GraniteMoeHybridPreTrainedModel,E.GranitePreTrainedModel,E.Grok1Tokenizer,E.GroundingDinoForObjectDetection,E.GroundingDinoImageProcessor,E.GroundingDinoPreTrainedModel,E.GroundingDinoProcessor,E.GroupViTModel,E.GroupViTPreTrainedModel,E.HeliumForCausalLM,E.HeliumModel,E.HeliumPreTrainedModel,E.HerbertTokenizer,E.HieraForImageClassification,E.HieraModel,E.HieraPreTrainedModel,E.HubertForCTC,E.HubertForSequenceClassification,E.HubertModel,E.HubertPreTrainedModel,E.IJepaForImageClassification,E.IJepaModel,E.IJepaPreTrainedModel,E.Idefics3ForConditionalGeneration,E.Idefics3ImageProcessor,E.Idefics3PreTrainedModel,E.Idefics3Processor,E.ImageClassificationPipeline,E.ImageFeatureExtractionPipeline,E.ImageFeatureExtractor,E.ImageMattingOutput,E.ImageProcessor,E.ImageSegmentationPipeline,E.ImageToImagePipeline,E.ImageToTextPipeline,E.InterruptableStoppingCriteria,E.JAISLMHeadModel,E.JAISModel,E.JAISPreTrainedModel,E.JinaCLIPImageProcessor,E.JinaCLIPModel,E.JinaCLIPPreTrainedModel,E.JinaCLIPProcessor,E.JinaCLIPTextModel,E.JinaCLIPVisionModel,E.Lfm2ForCausalLM,E.Lfm2Model,E.Lfm2PreTrainedModel,E.LiteWhisperForConditionalGeneration,E.Llama4ForCausalLM,E.Llama4PreTrainedModel,E.LlamaForCausalLM,E.LlamaModel,E.LlamaPreTrainedModel,E.LlamaTokenizer,E.LlavaForConditionalGeneration,E.LlavaOnevisionForConditionalGeneration,E.LlavaOnevisionImageProcessor,E.LlavaPreTrainedModel,E.LlavaProcessor,E.LlavaQwen2ForCausalLM,E.LogitsProcessor,E.LogitsProcessorList,E.LogitsWarper,E.LongT5ForConditionalGeneration,E.LongT5Model,E.LongT5PreTrainedModel,E.M2M100ForConditionalGeneration,E.M2M100Model,E.M2M100PreTrainedModel,E.M2M100Tokenizer,E.MBart50Tokenizer,E.MBartForCausalLM,E.MBartForConditionalGeneration,E.MBartForSequenceClassification,E.MBartModel,E.MBartPreTrainedModel,E.MBartTokenizer,E.MPNetForMaskedLM,E.MPNetForQuestionAnswering,E.MPNetForSequenceClassification,E.MPNetForTokenClassification,E.MPNetModel,E.MPNetPreTrainedModel,E.MPNetTokenizer,E.MT5ForConditionalGeneration,E.MT5Model,E.MT5PreTrainedModel,E.MarianMTModel,E.MarianModel,E.MarianPreTrainedModel,E.MarianTokenizer,E.Mask2FormerImageProcessor,E.MaskFormerFeatureExtractor,E.MaskFormerForInstanceSegmentation,E.MaskFormerImageProcessor,E.MaskFormerModel,E.MaskFormerPreTrainedModel,E.MaskedLMOutput,E.MaxLengthCriteria,E.Metric3DForDepthEstimation,E.Metric3DPreTrainedModel,E.Metric3Dv2ForDepthEstimation,E.Metric3Dv2PreTrainedModel,E.MgpstrForSceneTextRecognition,E.MgpstrModelOutput,E.MgpstrPreTrainedModel,E.MgpstrProcessor,E.MgpstrTokenizer,E.MimiDecoderModel,E.MimiDecoderOutput,E.MimiEncoderModel,E.MimiEncoderOutput,E.MimiModel,E.MimiPreTrainedModel,E.MinLengthLogitsProcessor,E.MinNewTokensLengthLogitsProcessor,E.Ministral3ForCausalLM,E.Ministral3Model,E.Ministral3PreTrainedModel,E.MinistralForCausalLM,E.MinistralModel,E.MinistralPreTrainedModel,E.Mistral3ForConditionalGeneration,E.MistralForCausalLM,E.MistralModel,E.MistralPreTrainedModel,E.MobileBertForMaskedLM,E.MobileBertForQuestionAnswering,E.MobileBertForSequenceClassification,E.MobileBertModel,E.MobileBertPreTrainedModel,E.MobileBertTokenizer,E.MobileLLMForCausalLM,E.MobileLLMModel,E.MobileLLMPreTrainedModel,E.MobileNetV1FeatureExtractor,
2845E.MobileNetV1ForImageClassification,E.MobileNetV1ForSemanticSegmentation,E.MobileNetV1ImageProcessor,E.MobileNetV1Model,E.MobileNetV1PreTrainedModel,E.MobileNetV2FeatureExtractor,E.MobileNetV2ForImageClassification,E.MobileNetV2ForSemanticSegmentation,E.MobileNetV2ImageProcessor,E.MobileNetV2Model,E.MobileNetV2PreTrainedModel,E.MobileNetV3FeatureExtractor,E.MobileNetV3ForImageClassification,E.MobileNetV3ForSemanticSegmentation,E.MobileNetV3ImageProcessor,E.MobileNetV3Model,E.MobileNetV3PreTrainedModel,E.MobileNetV4FeatureExtractor,E.MobileNetV4ForImageClassification,E.MobileNetV4ForSemanticSegmentation,E.MobileNetV4ImageProcessor,E.MobileNetV4Model,E.MobileNetV4PreTrainedModel,E.MobileViTFeatureExtractor,E.MobileViTForImageClassification,E.MobileViTImageProcessor,E.MobileViTModel,E.MobileViTPreTrainedModel,E.MobileViTV2ForImageClassification,E.MobileViTV2Model,E.MobileViTV2PreTrainedModel,E.ModelOutput,E.ModernBertDecoderForCausalLM,E.ModernBertDecoderModel,E.ModernBertDecoderPreTrainedModel,E.ModernBertForMaskedLM,E.ModernBertForSequenceClassification,E.ModernBertForTokenClassification,E.ModernBertModel,E.ModernBertPreTrainedModel,E.Moondream1ForConditionalGeneration,E.MoonshineFeatureExtractor,E.MoonshineForConditionalGeneration,E.MoonshineModel,E.MoonshinePreTrainedModel,E.MoonshineProcessor,E.MptForCausalLM,E.MptModel,E.MptPreTrainedModel,E.MultiModalityCausalLM,E.MultiModalityPreTrainedModel,E.MusicgenForCausalLM,E.MusicgenForConditionalGeneration,E.MusicgenModel,E.MusicgenPreTrainedModel,E.NanoChatForCausalLM,E.NanoChatModel,E.NanoChatPreTrainedModel,E.NeoBertForMaskedLM,E.NeoBertForQuestionAnswering,E.NeoBertForSequenceClassification,E.NeoBertForTokenClassification,E.NeoBertModel,E.NeoBertPreTrainedModel,E.NllbTokenizer,E.NoBadWordsLogitsProcessor,E.NoRepeatNGramLogitsProcessor,E.NomicBertModel,E.NomicBertPreTrainedModel,E.NougatImageProcessor,E.NougatTokenizer,E.OPTForCausalLM,E.OPTModel,E.OPTPreTrainedModel,E.ObjectDetectionPipeline,E.Olmo2ForCausalLM,E.Olmo2Model,E.Olmo2PreTrainedModel,E.OlmoForCausalLM,E.OlmoModel,E.OlmoPreTrainedModel,E.OpenELMForCausalLM,E.OpenELMModel,E.OpenELMPreTrainedModel,E.OwlViTFeatureExtractor,E.OwlViTForObjectDetection,E.OwlViTImageProcessor,E.OwlViTModel,E.OwlViTPreTrainedModel,E.OwlViTProcessor,E.Owlv2ForObjectDetection,E.Owlv2ImageProcessor,E.Owlv2Model,E.Owlv2PreTrainedModel,E.PaliGemmaForConditionalGeneration,E.PaliGemmaPreTrainedModel,E.PaliGemmaProcessor,E.ParakeetFeatureExtractor,E.ParakeetForCTC,E.ParakeetPreTrainedModel,E.PatchTSMixerForPrediction,E.PatchTSMixerModel,E.PatchTSMixerPreTrainedModel,E.PatchTSTForPrediction,E.PatchTSTModel,E.PatchTSTPreTrainedModel,E.Phi3ForCausalLM,E.Phi3Model,E.Phi3PreTrainedModel,E.Phi3VForCausalLM,E.Phi3VImageProcessor,E.Phi3VPreTrainedModel,E.Phi3VProcessor,E.PhiForCausalLM,E.PhiModel,E.PhiPreTrainedModel,E.Pipeline,E.PixtralImageProcessor,E.PixtralProcessor,E.PreTrainedModel,E.PreTrainedTokenizer,E.PretrainedConfig,E.PretrainedMixin,E.Processor,E.PvtForImageClassification,E.PvtImageProcessor,E.PvtModel,E.PvtPreTrainedModel,E.PyAnnoteFeatureExtractor,E.PyAnnoteForAudioFrameClassification,E.PyAnnoteModel,E.PyAnnotePreTrainedModel,E.PyAnnoteProcessor,E.QuestionAnsweringModelOutput,E.QuestionAnsweringPipeline,E.Qwen2ForCausalLM,E.Qwen2Model,E.Qwen2PreTrainedModel,E.Qwen2Tokenizer,E.Qwen2VLForConditionalGeneration,E.Qwen2VLImageProcessor,E.Qwen2VLPreTrainedModel,E.Qwen2VLProcessor,E.Qwen3ForCausalLM,E.Qwen3Model,E.Qwen3PreTrainedModel,E.RFDetrForObjectDetection,E.RFDetrModel,E.RFDetrObjectDetectionOutput,E.RFDetrPreTrainedModel,E.RTDetrForObjectDetection,E.RTDetrImageProcessor,E.RTDetrModel,E.RTDetrObjectDetectionOutput,E.RTDetrPreTrainedModel,E.RTDetrV2ForObjectDetection,E.RTDetrV2Model,E.RTDetrV2ObjectDetectionOutput,E.RTDetrV2PreTrainedModel,E.RawAudio;var ga=E.RawImage;E.RawVideo,E.RawVideoFrame,E.RepetitionPenaltyLogitsProcessor,E.ResNetForImageClassification,E.ResNetModel,E.ResNetPreTrainedModel,E.RoFormerForMaskedLM,E.RoFormerForQuestionAnswering,E.RoFormerForSequenceClassification,E.RoFormerForTokenClassification,E.RoFormerModel,E.RoFormerPreTrainedModel,E.RoFormerTokenizer,E.RobertaF
2845orMaskedLM,E.RobertaForQuestionAnswering,E.RobertaForSequenceClassification,E.RobertaForTokenClassification,E.RobertaModel,E.RobertaPreTrainedModel,E.RobertaTokenizer,E.Sam2ImageProcessor,E.Sam2ImageSegmentationOutput,E.Sam2Model,E.Sam2PreTrainedModel,E.Sam2Processor,E.Sam2VideoProcessor,E.Sam3ImageProcessor,E.Sam3TrackerModel,E.SamImageProcessor,E.SamImageSegmentationOutput;var x4=E.SamModel;E.SamPreTrainedModel,E.SamProcessor,E.SapiensForDepthEstimation,E.SapiensForNormalEstimation,E.SapiensForSemanticSegmentation,E.SapiensPreTrainedModel,E.SeamlessM4TFeatureExtractor,E.SegformerFeatureExtractor,E.SegformerForImageClassification,E.SegformerForSemanticSegmentation,E.SegformerImageProcessor,E.SegformerModel,E.SegformerPreTrainedModel,E.Seq2SeqLMOutput,E.SequenceClassifierOutput,E.SiglipImageProcessor,E.SiglipModel,E.SiglipPreTrainedModel,E.SiglipTextModel,E.SiglipTokenizer,E.SiglipVisionModel,E.SmolLM3ForCausalLM,E.SmolLM3Model,E.SmolLM3PreTrainedModel,E.SmolVLMForConditionalGeneration,E.SmolVLMImageProcessor,E.SmolVLMProcessor,E.SnacDecoderModel,E.SnacEncoderModel,E.SnacFeatureExtractor,E.SnacModel,E.SnacPreTrainedModel,E.SpeechT5FeatureExtractor,E.SpeechT5ForSpeechToText,E.SpeechT5ForTextToSpeech,E.SpeechT5HifiGan,E.SpeechT5Model,E.SpeechT5PreTrainedModel,E.SpeechT5Processor,E.SpeechT5Tokenizer,E.SqueezeBertForMaskedLM,E.SqueezeBertForQuestionAnswering,E.SqueezeBertForSequenceClassification,E.SqueezeBertModel,E.SqueezeBertPreTrainedModel,E.SqueezeBertTokenizer,E.StableLmForCausalLM,E.StableLmModel,E.StableLmPreTrainedModel,E.Starcoder2ForCausalLM,E.Starcoder2Model,E.Starcoder2PreTrainedModel,E.StoppingCriteria,E.StoppingCriteriaList,E.StyleTextToSpeech2Model,E.StyleTextToSpeech2PreTrainedModel,E.SummarizationPipeline,E.SupertonicForConditionalGeneration,E.SupertonicPreTrainedModel,E.SuppressTokensAtBeginLogitsProcessor,E.Swin2SRForImageSuperResolution,E.Swin2SRImageProcessor,E.Swin2SRModel,E.Swin2SRPreTrainedModel,E.SwinForImageClassification,E.SwinForSemanticSegmentation,E.SwinModel,E.SwinPreTrainedModel,E.T5ForConditionalGeneration,E.T5Model,E.T5PreTrainedModel,E.T5Tokenizer,E.TableTransformerForObjectDetection,E.TableTransformerModel,E.TableTransformerObjectDetectionOutput,E.TableTransformerPreTrainedModel,E.TemperatureLogitsWarper,E.Tensor,E.Text2TextGenerationPipeline,E.TextClassificationPipeline,E.TextGenerationPipeline,E.TextStreamer,E.TextToAudioPipeline,E.TokenClassificationPipeline,E.TokenClassifierOutput,E.TokenizerModel,E.TopKLogitsWarper,E.TopPLogitsWarper,E.TrOCRForCausalLM,E.TrOCRPreTrainedModel,E.TranslationPipeline,E.UltravoxModel,E.UltravoxPreTrainedModel,E.UltravoxProcessor,E.UniSpeechForCTC,E.UniSpeechForSequenceClassification,E.UniSpeechModel,E.UniSpeechPreTrainedModel,E.UniSpeechSatForAudioFrameClassification,E.UniSpeechSatForCTC,E.UniSpeechSatForSequenceClassification,E.UniSpeechSatModel,E.UniSpeechSatPreTrainedModel,E.VLChatProcessor,E.VLMImageProcessor,E.VaultGemmaForCausalLM,E.VaultGemmaModel,E.VaultGemmaPreTrainedModel,E.ViTFeatureExtractor,E.ViTForImageClassification,E.ViTImageProcessor,E.ViTMAEModel,E.ViTMAEPreTrainedModel,E.ViTMSNForImageClassification,E.ViTMSNModel,E.ViTMSNPreTrainedModel,E.ViTModel,E.ViTPreTrainedModel,E.VisionEncoderDecoderModel,E.VitMatteForImageMatting,E.VitMatteImageProcessor,E.VitMattePreTrainedModel,E.VitPoseForPoseEstimation,E.VitPoseImageProcessor,E.VitPosePreTrainedModel,E.VitsModel,E.VitsModelOutput,E.VitsPreTrainedModel,E.VitsTokenizer,E.VoxtralForConditionalGeneration,E.VoxtralProcessor,E.Wav2Vec2BertForCTC,E.Wav2Vec2BertForSequenceClassification,E.Wav2Vec2BertModel,E.Wav2Vec2BertPreTrainedModel,E.Wav2Vec2CTCTokenizer,E.Wav2Vec2FeatureExtractor,E.Wav2Vec2ForAudioFrameClassification,E.Wav2Vec2ForCTC,E.Wav2Vec2ForSequenceClassification,E.Wav2Vec2Model,E.Wav2Vec2PreTrainedModel,E.Wav2Vec2Processor,E.Wav2Vec2ProcessorWithLM,E.WavLMForAudioFrameClassification,E.WavLMForCTC,E.WavLMForSequenceClassification,E.WavLMForXVector,E.WavLMModel,E.WavLMPreTrainedModel,E.WeSpeakerFeatureExtractor,E.WeSpeakerResNetModel,E.WeSpeakerResNetPreTrainedModel,E.WhisperFeatureExtractor,
2845E.WhisperForConditionalGeneration,E.WhisperModel,E.WhisperPreTrainedModel,E.WhisperProcessor,E.WhisperTextStreamer,E.WhisperTimeStampLogitsProcessor,E.WhisperTokenizer,E.XLMForQuestionAnswering,E.XLMForSequenceClassification,E.XLMForTokenClassification,E.XLMModel,E.XLMPreTrainedModel,E.XLMRobertaForMaskedLM,E.XLMRobertaForQuestionAnswering,E.XLMRobertaForSequenceClassification,E.XLMRobertaForTokenClassification,E.XLMRobertaModel,E.XLMRobertaPreTrainedModel,E.XLMRobertaTokenizer,E.XLMTokenizer,E.XLMWithLMHeadModel,E.XVectorOutput,E.YolosFeatureExtractor,E.YolosForObjectDetection,E.YolosImageProcessor,E.YolosModel,E.YolosObjectDetectionOutput,E.YolosPreTrainedModel,E.ZeroShotAudioClassificationPipeline,E.ZeroShotClassificationPipeline,E.ZeroShotImageClassificationPipeline,E.ZeroShotObjectDetectionPipeline,E.bankers_round,E.cat,E.cos_sim,E.dot,E.dynamic_time_warping;var To=E.env;E.full,E.full_like,E.getCacheShapes,E.hamming,E.hanning,E.interpolate,E.interpolate_4d,E.interpolate_data,E.is_chinese_char,E.layer_norm,E.load_image,E.load_video,E.log_softmax,E.magnitude,E.matmul,E.max,E.mean,E.mean_pooling,E.medianFilter,E.mel_filter_bank,E.min,E.ones,E.ones_like,E.permute,E.permute_data;var yM=E.pipeline;E.quantize_embeddings,E.rand,E.randn,E.read_audio,E.rfft,E.round,E.slice,E.softmax,E.spectrogram,E.stack,E.std_mean,E.topk,E.window_function,E.zeros,E.zeros_like;var qg=Object.defineProperty,E4=Object.getOwnPropertyDescriptor,D4=Object.getOwnPropertyNames,I4=Object.prototype.hasOwnProperty,T4=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')}),et=(e,t)=>()=>(e&&(t=e(e=0)),t),Co=(e,t)=>{for(var r in t)qg(e,r,{get:t[r],enumerable:!0})},C4=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of D4(t))!I4.call(e,s)&&s!==r&&qg(e,s,{get:()=>t[s],enumerable:!(n=E4(t,s))||n.enumerable});return e},Ol=e=>C4(qg({},"__esModule",{value:!0}),e),Gl,Ka,$o,bM,PM,MM=et(()=>{Gl=new Map,Ka=[],$o=(e,t,r)=>{if(t&&typeof t.init=="function"&&typeof t.createInferenceSessionHandler=="function"){let n=Gl.get(e);if(n===void 0)Gl.set(e,{backend:t,priority:r});else{if(n.priority>r)return;if(n.priority===r&&n.backend!==t)throw new Error(`cannot register backend "${e}" using priority ${r}`)}if(r>=0){let s=Ka.indexOf(e);s!==-1&&Ka.splice(s,1);for(let a=0;a<Ka.length;a++)if(Gl.get(Ka[a]).priority<=r){Ka.splice(a,0,e);return}Ka.push(e)}return}throw new TypeError("not a valid backend")},bM=async e=>{let t=Gl.get(e);if(!t)return"backend not found.";if(t.initialized)return t.backend;if(t.aborted)return t.error;{let r=!!t.initPromise;try{return r||(t.initPromise=t.backend.init(e)),await t.initPromise,t.initialized=!0,t.backend}catch(n){return r||(t.error=`${n}`,t.aborted=!0),t.error}finally{delete t.initPromise}}},PM=async e=>{let t=e.executionProviders||[],r=t.map(l=>typeof l=="string"?l:l.name),n=r.length===0?Ka:r,s,a=[],i=new Set;for(let l of n){let u=await bM(l);typeof u=="string"?a.push({name:l,err:u}):(s||(s=u),s===u&&i.add(l))}if(!s)throw new Error(`no available backend found. ERR: ${a.map(l=>`[${l.name}] ${l.err}`).join(", ")}`);for(let{name:l,err:u}of a)r.includes(l)&&console.warn(`removing requested execution provider "${l}" from session options because it is not available: ${u}`);let o=t.filter(l=>i.has(typeof l=="string"?l:l.name));return[s,new Proxy(e,{get:(l,u)=>u==="executionProviders"?o:Reflect.get(l,u)})]}}),$4=et(()=>{MM()}),vM,S4=et(()=>{vM="1.24.3"}),Xg,$n,BM=et(()=>{S4(),Xg="warning",$n={wasm:{},webgl:{},webgpu:{},versions:{common:vM},set logLevel(e){if(e!==void 0){if(typeof e!="string"||["verbose","info","warning","error","fatal"].indexOf(e)===-1)throw new Error(`Unsupported logging level: ${e}`);Xg=e}},get logLevel(){return Xg}},Object.defineProperty($n,"logLevel",{enumerable:!0})}),Sr,k4=et(()=>{BM(),Sr=$n}),xM,EM,O4=et(()=>{xM=(e,t)=>{let r=typeof document<"u"?document.createElement("canvas"):new OffscreenCanvas(1,1);
vendor: 8,495 bytes, line 2845
2845r.width=e.dims[3],r.height=e.dims[2];let n=r.getContext("2d");if(n!=null){let s,a;t?.tensorLayout!==void 0&&t.tensorLayout==="NHWC"?(s=e.dims[2],a=e.dims[3]):(s=e.dims[3],a=e.dims[2]);let i=t?.format!==void 0?t.format:"RGB",o=t?.norm,l,u;o===void 0||o.mean===void 0?l=[255,255,255,255]:typeof o.mean=="number"?l=[o.mean,o.mean,o.mean,o.mean]:(l=[o.mean[0],o.mean[1],o.mean[2],0],o.mean[3]!==void 0&&(l[3]=o.mean[3])),o===void 0||o.bias===void 0?u=[0,0,0,0]:typeof o.bias=="number"?u=[o.bias,o.bias,o.bias,o.bias]:(u=[o.bias[0],o.bias[1],o.bias[2],0],o.bias[3]!==void 0&&(u[3]=o.bias[3]));let p=a*s,d=0,c=p,g=p*2,A=-1;i==="RGBA"?(d=0,c=p,g=p*2,A=p*3):i==="RGB"?(d=0,c=p,g=p*2):i==="RBG"&&(d=0,g=p,c=p*2);for(let m=0;m<a;m++)for(let B=0;B<s;B++){let f=(e.data[d++]-u[0])*l[0],h=(e.data[c++]-u[1])*l[1],P=(e.data[g++]-u[2])*l[2],_=A===-1?255:(e.data[A++]-u[3])*l[3];n.fillStyle="rgba("+f+","+h+","+P+","+_+")",n.fillRect(B,m,1,1)}if("toDataURL"in r)return r.toDataURL();throw new Error("toDataURL is not supported")}else throw new Error("Can not access image data")},EM=(e,t)=>{let r=typeof document<"u"?document.createElement("canvas").getContext("2d"):new OffscreenCanvas(1,1).getContext("2d"),n;if(r!=null){let s,a,i;t?.tensorLayout!==void 0&&t.tensorLayout==="NHWC"?(s=e.dims[2],a=e.dims[1],i=e.dims[3]):(s=e.dims[3],a=e.dims[2],i=e.dims[1]);let o=t!==void 0&&t.format!==void 0?t.format:"RGB",l=t?.norm,u,p;l===void 0||l.mean===void 0?u=[255,255,255,255]:typeof l.mean=="number"?u=[l.mean,l.mean,l.mean,l.mean]:(u=[l.mean[0],l.mean[1],l.mean[2],255],l.mean[3]!==void 0&&(u[3]=l.mean[3])),l===void 0||l.bias===void 0?p=[0,0,0,0]:typeof l.bias=="number"?p=[l.bias,l.bias,l.bias,l.bias]:(p=[l.bias[0],l.bias[1],l.bias[2],0],l.bias[3]!==void 0&&(p[3]=l.bias[3]));let d=a*s;if(t!==void 0&&(t.format!==void 0&&i===4&&t.format!=="RGBA"||i===3&&t.format!=="RGB"&&t.format!=="BGR"))throw new Error("Tensor format doesn't match input tensor dims");let c=4,g=0,A=1,m=2,B=3,f=0,h=d,P=d*2,_=-1;o==="RGBA"?(f=0,h=d,P=d*2,_=d*3):o==="RGB"?(f=0,h=d,P=d*2):o==="RBG"&&(f=0,P=d,h=d*2),n=r.createImageData(s,a);for(let w=0;w<a*s;g+=c,A+=c,m+=c,B+=c,w++)n.data[g]=(e.data[f++]-p[0])*u[0],n.data[A]=(e.data[h++]-p[1])*u[1],n.data[m]=(e.data[P++]-p[2])*u[2],n.data[B]=_===-1?255:(e.data[_++]-p[3])*u[3]}else throw new Error("Can not access image data");return n}}),mc,DM,IM,TM,CM,$M,G4=et(()=>{Jg(),mc=(e,t)=>{if(e===void 0)throw new Error("Image buffer must be defined");if(t.height===void 0||t.width===void 0)throw new Error("Image height and width must be defined");if(t.tensorLayout==="NHWC")throw new Error("NHWC Tensor layout is not supported yet");let{height:r,width:n}=t,s=t.norm??{mean:255,bias:0},a,i;typeof s.mean=="number"?a=[s.mean,s.mean,s.mean,s.mean]:a=[s.mean[0],s.mean[1],s.mean[2],s.mean[3]??255],typeof s.bias=="number"?i=[s.bias,s.bias,s.bias,s.bias]:i=[s.bias[0],s.bias[1],s.bias[2],s.bias[3]??0];let o=t.format!==void 0?t.format:"RGBA",l=t.tensorFormat!==void 0&&t.tensorFormat!==void 0?t.tensorFormat:"RGB",u=r*n,p=l==="RGBA"?new Float32Array(u*4):new Float32Array(u*3),d=4,c=0,g=1,A=2,m=3,B=0,f=u,h=u*2,P=-1;o==="RGB"&&(d=3,c=0,g=1,A=2,m=-1),l==="RGBA"?P=u*3:l==="RBG"?(B=0,h=u,f=u*2):l==="BGR"&&(h=0,f=u,B=u*2);for(let _=0;_<u;_++,c+=d,A+=d,g+=d,m+=d)p[B++]=(e[c]+i[0])/a[0],p[f++]=(e[g]+i[1])/a[1],p[h++]=(e[A]+i[2])/a[2],P!==-1&&m!==-1&&(p[P++]=(e[m]+i[3])/a[3]);return l==="RGBA"?new ss("float32",p,[1,4,r,n]):new ss("float32",p,[1,3,r,n])},DM=async(e,t)=>{let r=typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement,n=typeof ImageData<"u"&&e instanceof ImageData,s=typeof ImageBitmap<"u"&&e instanceof ImageBitmap,a=typeof e=="string",i,o=t??{},l=()=>{if(typeof document<"u")return document.createElement("canvas");if(typeof OffscreenCanvas<"u")return new OffscreenCanvas(1,1);throw new Error("Canvas is not supported")},u=p=>typeof HTMLCanvasElement<"u"&&p instanceof HTMLCanvasElement||p instanceof OffscreenCanvas?p.getContext("2d"):null;if(r){let p=l();p.width=e.width,p.height=e.height;let d=u(p);if(d!=null){let c=e.height,g=e.width;if(t!==void 0&&t.resizedHeight!==void 0&&t.resizedWidth!==void 0&&(c=t.resizedHeight,g=t.resizedWidth),t!==void 0){if(o=t,t.tensorFormat!==void 0)throw new Error("Image input config format must be RGBA for HTMLImageElement");o.tensorFormat="RGBA",o.height=c,o.width=g}else o.tensorFormat="RGBA",o.height=c,o.width=g;d.drawImage(e,0,0),i=d.getImageData(0,0,g,c).data}else throw new Error("Can not access image data")}else if(n){let p,d;if(t!==void 0&&t.resizedWidth!==void 0&&t.resizedHeight!==void 0?(p=t.resizedHeight,d=t.resizedWidth):(p=e.height,d=e.width),t!==void 0&&(o=t),o.format="RGBA",o.height=p,o.width=d,t!==void 0){let c=l();c.width=d,c.height=p;let g=u(c);if(g!=null)g.putImageData(e,0,0),i=g.getImageData(0,0,d,p).data;else throw new Error("Can not access image data")}else i=e.data}else if(s){if(t===void 0)throw new Error("Please provide image config with format for Imagebitmap");let p=l();p.width=e.width,p.height=e.height;let d=u(p);if(d!=null){let c=e.height,g=e.width;return d.drawImage(e,0,0,g,c),i=d.getImageData(0,0,g,c).data,o.height=c,o.width=g,mc(i,o)}else throw new Error("Can not access image data")}else{if(a)return new Promise((p,d)=>{let c=l(),g=u(c);if(!e||!g)return d();let A=new Image;A.crossOrigin="Anonymous",A.src=e,A.onload=()=>{c.width=A.width,c.height=A.height,g.drawImage(A,0,0,c.width,c.height);let m=g.getImageData(0,0,c.width,c.height);o.height=c.height,o.width=c.width,p(mc(m.data,o))}});throw new Error("Input data provided is not supported - aborted tensor creation")}if(i!==void 0)return mc(i,o);throw new Error("Input data provided is not supported - aborted tensor creation")},IM=(e,t)=>{let{width:r,height:n,download:s,dispose:a}=t,i=[1,n,r,4];return new ss({location:"texture",type:"float32",texture:e,dims:i,download:s,dispose:a})},TM=(e,t)=>{let{dataType:r,dims:n,download:s,dispose:a}=t;return new ss({location:"gpu-buffer",type:r??"float32",gpuBuffer:e,dims:n,download:s,dispose:a})},CM=(e,t)=>{let{dataType:r,dims:n,download:s,dispose:a}=t;return new ss({location:"ml-tensor",type:r??"float32",mlTensor:e,dims:n,download:s,dispose:a})},$M=(e,t,r)=>new ss({location:"cpu-pinned",type:e,data:t,dims:r??[t.length]})}),Yi,zl,Zg,SM,z4=et(()=>{Yi=new Map([["float32",Float32Array],["uint8",Uint8Array],["int8",Int8Array],["uint16",Uint16Array],["int16",Int16Array],["int32",Int32Array],["bool",Uint8Array],["float64",Float64Array],["uint32",Uint32Array],["int4",Uint8Array],["uint4",Uint8Array]]),zl=new Map([[Float32Array,"float32"],[Uint8Array,"uint8"],[Int8Array,"int8"],[Uint16Array,"uint16"],[Int16Array,"int16"],[Int32Array,"int32"],[Float64Array,"float64"],[Uint32Array,"uint32"]]),Zg=!1,SM=()=>{if(!Zg){Zg=!0;let e=typeof BigInt64Array<"u"&&BigInt64Array.from,t=typeof BigUint64Array<"u"&&BigUint64Array.from,r=globalThis.Float16Array,n=typeof r<"u"&&r.from;e&&(Yi.set("int64",BigInt64Array),zl.set(BigInt64Array,"int64")),t&&(Yi.set("uint64",BigUint64Array),zl.set(BigUint64Array,"uint64")),n?(Yi.set("float16",r),zl.set(r,"float16")):Yi.set("float16",Uint16Array)}}}),kM,OM,F4=et(()=>{Jg(),kM=e=>{let t=1;for(let r=0;r<e.length;r++){let n=e[r];if(typeof n!="number"||!Number.isSafeInteger(n))throw new TypeError(`dims[${r}] must be an integer, got: ${n}`);if(n<0)throw new RangeError(`dims[${r}] must be a non-negative integer, got: ${n}`);t*=n}return t},OM=(e,t)=>{switch(e.location){case"cpu":return new ss(e.type,e.data,t);case"cpu-pinned":return new ss({location:"cpu-pinned",data:e.data,type:e.type,dims:t});case"texture":return new ss({location:"texture",texture:e.texture,type:e.type,dims:t});case"gpu-buffer":return new ss({location:"gpu-buffer",gpuBuffer:e.gpuBuffer,type:e.type,dims:t});case"ml-tensor":return new ss({location:"ml-tensor",mlTensor:e.mlTensor,type:e.type,dims:t});default:throw new Error(`tensorReshape: tensor location ${e.location} is not supported`)}}}),ss,Jg=et(()=>{O4(),G4(),z4(),F4(),ss=class{constructor(e,t,r){SM();let n,s;if(typeof e=="object"&&"location"in e)switch(this.dataLocation=e.location,n=e.type,s=e.dims,e.location){case"cpu-pinned":{let i=Yi.get(n);if(!i)throw new TypeError(`unsupported type "${n}" to create tensor from pinned buffer`);if(!(e.data instanceof i))throw new TypeError(`buffer should be of type ${i.name}`);this.cpuData=e.data;break}case"texture":{if(n!=="float32")throw new TypeError(`unsupported type "${n}" to create tensor from texture`);this.gpuTextureData=e.texture,this.downloader=e.download,this.disposer=e.dis
vendor: 2,107 bytes, line 2845
2845pose;break}case"gpu-buffer":{if(n!=="float32"&&n!=="float16"&&n!=="int32"&&n!=="int64"&&n!=="uint32"&&n!=="uint8"&&n!=="bool"&&n!=="uint4"&&n!=="int4")throw new TypeError(`unsupported type "${n}" to create tensor from gpu buffer`);this.gpuBufferData=e.gpuBuffer,this.downloader=e.download,this.disposer=e.dispose;break}case"ml-tensor":{if(n!=="float32"&&n!=="float16"&&n!=="int32"&&n!=="int64"&&n!=="uint32"&&n!=="uint64"&&n!=="int8"&&n!=="uint8"&&n!=="bool"&&n!=="uint4"&&n!=="int4")throw new TypeError(`unsupported type "${n}" to create tensor from MLTensor`);this.mlTensorData=e.mlTensor,this.downloader=e.download,this.disposer=e.dispose;break}default:throw new Error(`Tensor constructor: unsupported location '${this.dataLocation}'`)}else{let i,o;if(typeof e=="string")if(n=e,o=r,e==="string"){if(!Array.isArray(t))throw new TypeError("A string tensor's data must be a string array.");i=t}else{let l=Yi.get(e);if(l===void 0)throw new TypeError(`Unsupported tensor type: ${e}.`);if(Array.isArray(t)){if(e==="float16"&&l===Uint16Array||e==="uint4"||e==="int4")throw new TypeError(`Creating a ${e} tensor from number array is not supported. Please use ${l.name} as data.`);e==="uint64"||e==="int64"?i=l.from(t,BigInt):i=l.from(t)}else if(t instanceof l)i=t;else if(t instanceof Uint8ClampedArray)if(e==="uint8")i=Uint8Array.from(t);else throw new TypeError("A Uint8ClampedArray tensor's data must be type of uint8");else if(e==="float16"&&t instanceof Uint16Array&&l!==Uint16Array)i=new globalThis.Float16Array(t.buffer,t.byteOffset,t.length);else throw new TypeError(`A ${n} tensor's data must be type of ${l}`)}else if(o=t,Array.isArray(e)){if(e.length===0)throw new TypeError("Tensor type cannot be inferred from an empty array.");let l=typeof e[0];if(l==="string")n="string",i=e;else if(l==="boolean")n="bool",i=Uint8Array.from(e);else throw new TypeError(`Invalid element type of data array: ${l}.`)}else if(e instanceof Uint8ClampedArray)n="uint8",i=Uint8Array.from(e);else{let l=zl.get(e.constructor);if(l===void 0)throw new TypeError(`Unsupported type for tensor data: ${e.constructor}.`);n=l,i=e}
vendor: 6,585 bytes, line 2845
2845if(o===void 0)o=[i.length];else if(!Array.isArray(o))throw new TypeError("A tensor's dims must be a number array");s=o,this.cpuData=i,this.dataLocation="cpu"}let a=kM(s);if(this.cpuData&&a!==this.cpuData.length&&!((n==="uint4"||n==="int4")&&Math.ceil(a/2)===this.cpuData.length))throw new Error(`Tensor's size(${a}) does not match data length(${this.cpuData.length}).`);this.type=n,this.dims=s,this.size=a}static async fromImage(e,t){return DM(e,t)}static fromTexture(e,t){return IM(e,t)}static fromGpuBuffer(e,t){return TM(e,t)}static fromMLTensor(e,t){return CM(e,t)}static fromPinnedBuffer(e,t,r){return $M(e,t,r)}toDataURL(e){return xM(this,e)}toImageData(e){return EM(this,e)}get data(){if(this.ensureValid(),!this.cpuData)throw new Error("The data is not on CPU. Use `getData()` to download GPU data to CPU, or use `texture` or `gpuBuffer` property to access the GPU data directly.");return this.cpuData}get location(){return this.dataLocation}get texture(){if(this.ensureValid(),!this.gpuTextureData)throw new Error("The data is not stored as a WebGL texture.");return this.gpuTextureData}get gpuBuffer(){if(this.ensureValid(),!this.gpuBufferData)throw new Error("The data is not stored as a WebGPU buffer.");return this.gpuBufferData}get mlTensor(){if(this.ensureValid(),!this.mlTensorData)throw new Error("The data is not stored as a WebNN MLTensor.");return this.mlTensorData}async getData(e){switch(this.ensureValid(),this.dataLocation){case"cpu":case"cpu-pinned":return this.data;case"texture":case"gpu-buffer":case"ml-tensor":{if(!this.downloader)throw new Error("The current tensor is not created with a specified data downloader.");if(this.isDownloading)throw new Error("The current tensor is being downloaded.");try{this.isDownloading=!0;let t=await this.downloader();return this.downloader=void 0,this.dataLocation="cpu",this.cpuData=t,e&&this.disposer&&(this.disposer(),this.disposer=void 0),t}finally{this.isDownloading=!1}}default:throw new Error(`cannot get data from location: ${this.dataLocation}`)}}dispose(){if(this.isDownloading)throw new Error("The current tensor is being downloaded.");this.disposer&&(this.disposer(),this.disposer=void 0),this.cpuData=void 0,this.gpuTextureData=void 0,this.gpuBufferData=void 0,this.mlTensorData=void 0,this.downloader=void 0,this.isDownloading=void 0,this.dataLocation="none"}ensureValid(){if(this.dataLocation==="none")throw new Error("The tensor is disposed.")}reshape(e){if(this.ensureValid(),this.downloader||this.disposer)throw new Error("Cannot reshape a tensor that owns GPU resource.");return OM(this,e)}}}),An,GM=et(()=>{Jg(),An=ss}),fc,eA,Aa,js,Ni,ji,zM=et(()=>{BM(),fc=(e,t)=>{(typeof $n.trace>"u"?!$n.wasm.trace:!$n.trace)||console.timeStamp(`${e}::ORT::${t}`)},eA=(e,t)=>{let r=new Error().stack?.split(/\r\n|\r|\n/g)||[],n=!1;for(let s=0;s<r.length;s++){if(n&&!r[s].includes("TRACE_FUNC")){let a=`FUNC_${e}::${r[s].trim().split(" ")[1]}`;t&&(a+=`::${t}`),fc("CPU",a);return}r[s].includes("TRACE_FUNC")&&(n=!0)}},Aa=e=>{(typeof $n.trace>"u"?!$n.wasm.trace:!$n.trace)||eA("BEGIN",e)},js=e=>{(typeof $n.trace>"u"?!$n.wasm.trace:!$n.trace)||eA("END",e)},Ni=e=>{(typeof $n.trace>"u"?!$n.wasm.trace:!$n.trace)||console.time(`ORT::${e}`)},ji=e=>{(typeof $n.trace>"u"?!$n.wasm.trace:!$n.trace)||console.timeEnd(`ORT::${e}`)}}),FM,L4=et(()=>{MM(),GM(),zM(),FM=class LS{constructor(t){this.handler=t}async run(t,r,n){Aa(),Ni("InferenceSession.run");let s={},a={};if(typeof t!="object"||t===null||t instanceof An||Array.isArray(t))throw new TypeError("'feeds' must be an object that use input names as keys and OnnxValue as corresponding values.");let i=!0;if(typeof r=="object"){if(r===null)throw new TypeError("Unexpected argument[1]: cannot be null.");if(r instanceof An)throw new TypeError("'fetches' cannot be a Tensor");if(Array.isArray(r)){if(r.length===0)throw new TypeError("'fetches' cannot be an empty array.");i=!1;for(let u of r){if(typeof u!="string")throw new TypeError("'fetches' must be a string array or an object.");if(this.outputNames.indexOf(u)===-1)throw new RangeError(`'fetches' contains invalid output name: ${u}.`);s[u]=null}if(typeof n=="object"&&n!==null)a=n;else if(typeof n<"u")throw new TypeError("'options' must be an object.")}else{let u=!1,p=Object.getOwnPropertyNames(r);for(let d of this.outputNames)if(p.indexOf(d)!==-1){let c=r[d];(c===null||c instanceof An)&&(u=!0,i=!1,s[d]=c)}if(u){if(typeof n=="object"&&n!==null)a=n;else if(typeof n<"u")throw new TypeError("'options' must be an object.")}else a=r}}else if(typeof r<"u")throw new TypeError("Unexpected argument[1]: must be 'fetches' or 'options'.");for(let u of this.inputNames)if(typeof t[u]>"u")throw new Error(`input '${u}' is missing in 'feeds'.`);if(i)for(let u of this.outputNames)s[u]=null;let o=await this.handler.run(t,s,a),l={};for(let u in o)if(Object.hasOwnProperty.call(o,u)){let p=o[u];p instanceof An?l[u]=p:l[u]=new An(p.type,p.data,p.dims)}return ji("InferenceSession.run"),js(),l}async release(){return this.handler.dispose()}static async create(t,r,n,s){Aa(),Ni("InferenceSession.create");let a,i={};if(typeof t=="string"){if(a=t,typeof r=="object"&&r!==null)i=r;else if(typeof r<"u")throw new TypeError("'options' must be an object.")}else if(t instanceof Uint8Array){if(a=t,typeof r=="object"&&r!==null)i=r;else if(typeof r<"u")throw new TypeError("'options' must be an object.")}else if(t instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&t instanceof SharedArrayBuffer){let p=t,d=0,c=t.byteLength;if(typeof r=="object"&&r!==null)i=r;else if(typeof r=="number"){if(d=r,!Number.isSafeInteger(d))throw new RangeError("'byteOffset' must be an integer.");if(d<0||d>=p.byteLength)throw new RangeError(`'byteOffset' is out of range [0, ${p.byteLength}).`);if(c=t.byteLength-d,typeof n=="number"){if(c=n,!Number.isSafeInteger(c))throw new RangeError("'byteLength' must be an integer.");if(c<=0||d+c>p.byteLength)throw new RangeError(`'byteLength' is out of range (0, ${p.byteLength-d}].`);if(typeof s=="object"&&s!==null)i=s;else if(typeof s<"u")throw new TypeError("'options' must be an object.")}else if(typeof n<"u")throw new TypeError("'byteLength' must be a number.")}else if(typeof r<"u")throw new TypeError("'options' must be an object.");a=new Uint8Array(p,d,c)}else throw new TypeError("Unexpected argument[0]: must be 'path' or 'buffer'.");let[o,l]=await PM(i),u=await o.createInferenceSessionHandler(a,l);return ji("InferenceSession.create"),js(),new LS(u)}startProfiling(){this.handler.startProfiling()}endProfiling(){this.handler.endProfiling()}get inputNames(){return this.handler.inputNames}
vendor: 22,145 bytes, lines 2845-2848
2845get outputNames(){return this.handler.outputNames}get inputMetadata(){return this.handler.inputMetadata}get outputMetadata(){return this.handler.outputMetadata}}}),So,R4=et(()=>{L4(),So=FM}),Y4=et(()=>{}),N4=et(()=>{}),j4=et(()=>{}),U4=et(()=>{}),W4={};Co(W4,{InferenceSession:()=>So,TRACE:()=>fc,TRACE_EVENT_BEGIN:()=>Ni,TRACE_EVENT_END:()=>ji,TRACE_FUNC_BEGIN:()=>Aa,TRACE_FUNC_END:()=>js,Tensor:()=>An,env:()=>Sr,registerBackend:()=>$o});var ys=et(()=>{$4(),k4(),R4(),GM(),Y4(),N4(),zM(),j4(),U4()}),tA=et(()=>{}),LM={};Co(LM,{default:()=>RM});var rA,nA,RM,V4=et(()=>{yI(),Ui(),uA(),rA="ort-wasm-proxy-worker",nA=globalThis.self?.name===rA,nA&&(self.onmessage=e=>{let{type:t,in:r}=e.data;try{switch(t){case"init-wasm":pA(r.wasm).then(()=>{Mh(r).then(()=>{postMessage({type:t})},n=>{postMessage({type:t,err:n})})},n=>{postMessage({type:t,err:n})});break;case"init-ep":{let{epName:n,env:s}=r;vh(s,n).then(()=>{postMessage({type:t})},a=>{postMessage({type:t,err:a})});break}case"copy-from":{let{buffer:n}=r,s=Gc(n);postMessage({type:t,out:s});break}case"create":{let{model:n,options:s}=r;xh(n,s).then(a=>{postMessage({type:t,out:a})},a=>{postMessage({type:t,err:a})});break}case"release":Eh(r),postMessage({type:t});break;case"run":{let{sessionId:n,inputIndices:s,inputs:a,outputIndices:i,options:o}=r;Ih(n,s,a,i,new Array(i.length).fill(null),o).then(l=>{l.some(u=>u[3]!=="cpu")?postMessage({type:t,err:"Proxy does not support non-cpu tensor location."}):postMessage({type:t,out:l},Ch([...a,...l]))},l=>{postMessage({type:t,err:l})});break}case"end-profiling":Th(r),postMessage({type:t});break;default:}}catch(n){postMessage({type:t,err:n})}}),RM=nA?null:e=>new Worker(e??as,{type:"module",name:rA})}),YM={};Co(YM,{default:()=>jM});async function NM(e={}){var t=e,r=!!globalThis.window,n=!!globalThis.WorkerGlobalScope,s=n&&self.name?.startsWith("em-pthread");t.mountExternalData=(M,T)=>{M.startsWith("./")&&(M=M.substring(2)),(t.Zc||(t.Zc=new Map)).set(M,T)},t.unmountExternalData=()=>{delete t.Zc},globalThis.SharedArrayBuffer??new WebAssembly.Memory({initial:0,maximum:0,ae:!0}).buffer.constructor;let a=M=>async(...T)=>{try{if(t.$c)throw Error("Session already started");let z=t.$c={Nd:T[0],errors:[]},G=await M(...T);if(t.$c!==z)throw Error("Session mismatch");t.gd?.flush();let Z=z.errors;if(0<Z.length){let ue=await Promise.all(Z);if(ue=ue.filter(me=>me),0<ue.length)throw Error(ue.join(` 2846`))}return G}finally{t.$c=null}};t.jsepInit=(M,T)=>{if(M==="webgpu"){[t.gd,t.Dd,t.Hd,t.jd,t.Gd,t.ac,t.Id,t.Kd,t.Ed,t.Fd,t.Jd]=T;let z=t.gd;t.jsepRegisterBuffer=(G,Z,ue,me)=>z.registerBuffer(G,Z,ue,me),t.jsepGetBuffer=G=>z.getBuffer(G),t.jsepCreateDownloader=(G,Z,ue)=>z.createDownloader(G,Z,ue),t.jsepOnCreateSession=G=>{z.onCreateSession(G)},t.jsepOnReleaseSession=G=>{z.onReleaseSession(G)},t.jsepOnRunStart=G=>z.onRunStart(G),t.Ld=(G,Z)=>{z.upload(G,Z)}}else if(M==="webnn"){let z=T[0];[t.Zd,t.vd,t.webnnEnsureTensor,t.xd,t.webnnDownloadTensor,t.Yd,t.webnnEnableTraceEvent]=T.slice(1),t.webnnReleaseTensorId=t.vd,t.webnnUploadTensor=t.xd,t.webnnRegisterMLContext=t.Yd,t.webnnOnRunStart=G=>z.onRunStart(G),t.webnnOnRunEnd=z.onRunEnd.bind(z),t.webnnOnReleaseSession=G=>{z.onReleaseSession(G)},t.webnnCreateMLTensorDownloader=(G,Z)=>z.createMLTensorDownloader(G,Z),t.webnnRegisterMLTensor=(G,Z,ue,me)=>z.registerMLTensor(G,Z,ue,me),t.webnnCreateMLContext=G=>z.createMLContext(G),t.webnnRegisterMLConstant=(G,Z,ue,me,Ge,it)=>z.registerMLConstant(G,Z,ue,me,Ge,t.Zc,it),t.webnnRegisterGraphInput=z.registerGraphInput.bind(z),t.webnnIsGraphInput=z.isGraphInput.bind(z),t.webnnRegisterGraphOutput=z.registerGraphOutput.bind(z),t.webnnIsGraphOutput=z.isGraphOutput.bind(z),t.webnnCreateTemporaryTensor=z.createTemporaryTensor.bind(z),t.webnnIsGraphInputOutputTypeSupported=z.isGraphInputOutputTypeSupported.bind(z)}};let i=()=>{let M=T=>(...z)=>{let G=Ar;return z=T(...z),Ar!=G?new Promise((Z,ue)=>{Wr={resolve:Z,reject:ue}}):z};(()=>{for(let T of["_OrtAppendExecutionProvider","_OrtCreateSession","_OrtRun","_OrtRunWithBinding","_OrtBindInput"])t[T]=M(t[T])})(),a!==void 0&&(t._OrtRun=a(t._OrtRun),t._OrtRunWithBinding=a(t._OrtRunWithBinding)),i=void 0};t.asyncInit=()=>{i?.()};var o,l,u=(M,T)=>{throw T},p=self.location.href,d="";if(r||n){try{d=new URL(".",p).href}catch{}n&&(l=M=>{var T=new XMLHttpRequest;return T.open("GET",M,!1),T.responseType="arraybuffer",T.send(null),new Uint8Array(T.response)}),o=async M=>{if(v(M))return new Promise((z,G)=>{var Z=new XMLHttpRequest;Z.open("GET",M,!0),Z.responseType="arraybuffer",Z.onload=()=>{Z.status==200||Z.status==0&&Z.response?z(Z.response):G(Z.status)},Z.onerror=G,Z.send(null)});var T=await fetch(M,{credentials:"same-origin"});if(T.ok)return T.arrayBuffer();throw Error(T.status+" : "+T.url)}}var c,g,A,m,B,f,h=console.log.bind(console),P=console.error.bind(console),_=h,w=P,b=!1,v=M=>M.startsWith("file://");function y(){dt.buffer!=k.buffer&&V()}if(s){let M=function(T){try{var z=T.data,G=z.Uc;if(G==="load"){let Z=[];self.onmessage=ue=>Z.push(ue),f=()=>{postMessage({Uc:"loaded"});for(let ue of Z)M(ue);self.onmessage=M};for(let ue of z.Ad)t[ue]&&!t[ue].proxy||(t[ue]=(...me)=>{postMessage({Uc:"callHandler",zd:ue,args:me})},ue=="print"&&(_=t[ue]),ue=="printErr"&&(w=t[ue]));dt=z.Vd,V(),g=z.Wd,fe(),fo()}else if(G==="run"){(function(Z){var ue=(y(),L)[Z+52>>>2>>>0];Z=(y(),L)[Z+56>>>2>>>0],Pi(ue,ue-Z),Ut(ue)})(z.Tc),oa(z.Tc,0,0,1,0,0),Ue(),xe(z.Tc),$||(Ma(),$=!0);try{At(z.Pd,z.dd)}catch(Z){if(Z!="unwind")throw Z}}else z.target!=="setimmediate"&&(G==="checkMailbox"?$&&Fe():G&&(w(`worker: received unknown command ${G}`),w(z)))}catch(Z){throw va(),Z}};var $=!1;self.onunhandledrejection=T=>{throw T.reason||T},self.onmessage=M}var k,W,j,F,R,L,Q,ne,re,ce,ge,q=!1;function V(){var M=dt.buffer;t.HEAP8=k=new Int8Array(M),j=new Int16Array(M),t.HEAPU8=W=new Uint8Array(M),F=new Uint16Array(M),t.HEAP32=R=new Int32Array(M),t.HEAPU32=L=new Uint32Array(M),Q=new Float32Array(M),ne=new Float64Array(M),re=new BigInt64Array(M),ce=new BigUint64Array(M)}function U(){q=!0,s?f():Ss.tb()}function N(M){throw w(M="Aborted("+M+")"),b=!0,M=new WebAssembly.RuntimeError(M+". Build with -sASSERTIONS for more info."),B?.(M),M}function oe(){return{a:{ma:Du,hb:nd,g:yt,J:hr,f:On,o:ma,h:fa,ha:_a,b:Ur,T:mn,Ia:Ms,n:kt,_:Ft,Ya:ds,Ea:S,Ga:ie,Za:X,Wa:ae,Pa:le,Va:_e,ka:Oe,Fa:gt,Ca:Et,Xa:at,Da:Ot,cb:lt,ea:vs,xa:En,va:Zn,da:Bs,O:xs,H:Es,wa:Ke,Z:ye,ya:O,Sa:te,Aa:ct,Ja:pt,ta:st,fa:Xt,Ra:xe,$a:jt,R:gs,s:zn,c:fn,ib:wa,y:Is,M:ao,D:Yo,m:No,t:io,jb:jo,I:ya,S:Uo,j:Wo,v:Vo,r:Qo,l:Ho,Ma:ba,Na:lo,Oa:Ko,Ka:ui,La:ci,ua:uo,eb:di,bb:co,u:pi,aa:go,ga:gi,ab:qo,V:Xo,_a:Zo,Ba:Jo,F:sa,U:el,la:As,za:hi,gb:za,fb:tl,Ta:La,Ua:hs,Ha:ze,$:mi,ja:Ao,Qa:fi,ia:ho,lb:Id,na:vd,mb:Dd,oa:Md,G:fd,d:id,q:ad,w:sd,B:gd,pb:bd,K:hd,x:Tu,pa:zu,X:Bd,ba:yd,nb:Lu,ob:Ed,ra:Ou,qa:Gu,qb:_d,N:ku,Y:Pd,e:od,A:ld,k:Iu,kb:Ru,p:Cu,z:cd,C:ud,E:dd,L:Su,rb:md,Q:Fu,ca:Ad,W:xd,sb:pd,sa:$u,P:wd,i:_i,a:dt,db:Ce}}}async function fe(){function M(G,Z){var ue=Ss=G.exports;G={};for(let[me,Ge]of Object.entries(ue))typeof Ge=="function"?(ue=un(Ge),G[me]=ue):G[me]=Ge;return Ss=G,Ss=(function(){var me=Ss,Ge=mt=>Qt=>mt(Qt)>>>0,it=mt=>()=>mt()>>>0;return(me=Object.assign({},me)).ub=Ge(me.ub),me.Yb=it(me.Yb),me._b=Ge(me._b),me.mc=Ge(me.mc),me.nc=it(me.nc),me.rc=Ge(me.rc),me})(),Be.push(Ss.$b),wi=(G=Ss).ub,Ma=G.vb,t._OrtInit=G.wb,t._OrtGetLastError=G.xb,t._OrtCreateSessionOptions=G.yb,t._OrtAppendExecutionProvider=G.zb,t._OrtAddFreeDimensionOverride=G.Ab,t._OrtAddSessionConfigEntry=G.Bb,t._OrtReleaseSessionOptions=G.Cb,t._OrtCreateSession=G.Db,t._OrtReleaseSession=G.Eb,t._OrtGetInputOutputCount=G.Fb,t._OrtGetInputOutputMetadata=G.Gb,t._OrtFree=G.Hb,t._OrtCreateTensor=G.Ib,t._OrtGetTensorData=G.Jb,t._OrtReleaseTensor=G.Kb,t._OrtCreateRunOptions=G.Lb,t._OrtAddRunConfigEntry=G.Mb,t._OrtReleaseRunOptions=G.Nb,t._OrtCreateBinding=G.Ob,t._OrtBindInput=G.Pb,t._OrtBindOutput=G.Qb,t._OrtClearBoundOutputs=G.Rb,t._OrtReleaseBinding=G.Sb,t._OrtRunWithBinding=G.Tb,t._OrtRun=G.Ub,t._OrtEndProfiling=G.Vb,t._JsepOutput=G.Wb,t._JsepGetNodeName=G.Xb,vt=G.Yb,Kn=t._free=G.Zb,ia=t._malloc=G._b,oa=G.bc,va=G.cc,Vn=G.dc,Ba=G.ec,la=G.fc,yi=G.gc,bi=G.hc,Zt=G.ic,Cs=G.jc,Pi=G.kc,Ut=G.lc,Ra=G.mc,Wt=G.nc,xa=G.oc,Ea=G.pc,Mi=G.qc,Ya=G.rc,vi=G.sc,Na=G.tc,ja=G.uc,x=G.vc,C=G.wc,Y=G.xc,K=G.yc,ee=G.zc,he=G.Ac,Le=G.Bc,Qe=G.Cc,ot=G.Dc,wt=G.Ec,Lt=G.Fc,sr=G.Gc,mr=G.Hc,nn=G.Ic,$s=G.Jc,mo=G.Kc,nl=G.Lc,pu=G.Mc,gu=G.Nc,sl=G.Oc,Au=G.Pc,hu=G.Rc,al=G.Sc,mu=G.bd,fu=G.cd,il=G.hd,_u=G.kd,wu=G.ld,ol=G.md,yu=G.nd,bu=G.od,ll=G.pd,Pu=G.qd,Mu=G.rd,ul=G.wd,vu=G.Rd,Bu=G.Sd,cl=G.Td,xu=G.Ud,g=Z,Ss}var T,z=oe();return t.instantiateWasm?new Promise(G=>{t.instantiateWasm(z,(Z,ue)=>{G(M(Z,ue))})}):s?M(new WebAssembly.Instance(g,oe()),g):(ge??=t.locateFile?t.locateFile?t.locateFile("ort-wasm-simd-threaded.jsep.wasm",d):d+"ort-wasm-simd-threaded.jsep.wasm":new URL("/assets/ort-wasm-simd-threaded.jsep-C887KxcQ.wasm",self.location.href).href,T=await(async function(G){var Z=ge;if(!c&&!v(Z))try{var ue=fetch(Z,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(ue,G)}catch(me){w(`wasm streaming compile failed: ${me}`),w("falling back to ArrayBuffer instantiation")}return(async function(me,Ge){try{var it=await(async function(mt){if(!c)try{var Qt=await o(mt);return new Uint8Array(Qt)}catch{}if(mt==ge&&c)mt=new Uint8Array(c);else{if(!l)throw"both async and sync fetching of the wasm failed";mt=l(mt)}return mt})(me);return await WebAssembly.instantiate(it,Ge)}catch(mt){w(`failed to asynchronously prepare wasm: ${mt}`),N(mt)}})(Z,G)})(z),M(T.instance,T.module))}class De{name="ExitStatus";constructor(T){this.message=`Program terminated with exit(${T})`,this.status=T}}var Ie=M=>{M.terminate(),M.onmessage=()=>{}},je=[],Me=0,se=null,H=M=>{ve.length==0&&(He(),ht(ve[0]));var T=ve.pop();if(!T)return 6;Ve.push(T),ke[M.Tc]=T,T.Tc=M.Tc;var z={Uc:"run",Pd:M.Od,dd:M.dd,Tc:M.Tc};return T.postMessage(z,M.ud),0},we=0,be=(M,T,...z)=>{var G,Z=16*z.length,ue=Wt(),me=Ra(Z),Ge=me>>>3;for(G of z)typeof G=="bigint"?((y(),re)[Ge++>>>0]=1n,(y(),re)[Ge++>>>0]=G):((y(),re)[Ge++>>>0]=0n,(y(),ne)[Ge++>>>0]=G);return M=Vn(M,0,Z,me,T),Ut(ue),M};function Ce(M){if(s)return be(0,1,M);if(A=M,!(0<we)){for(var T of Ve)Ie(T);for(T of ve)Ie(T);ve=[],Ve=[],ke={},b=!0}u(0,new De(M))}function Se(M){if(s)return be(1,0,M);ze(M)}var ze=M=>{if(A=M,s)throw Se(M),"unwind";Ce(M)},ve=[],Ve=[],Be=[],ke={},rt=M=>{var T=M.Tc;delete ke[T],ve.push(M),Ve.splice(Ve.indexOf(M),1),M.Tc=0,Ba(T)};function Ue(){Be.forEach(M=>M())}var ht=M=>new Promise(T=>{M.onmessage=Z=>{var ue=Z.data;if(Z=ue.Uc,ue.ad&&ue.ad!=vt()){var me=ke[ue.ad];me?me.postMessage(ue,ue.ud):w(`Internal error! Worker sent a message "${Z}" to target pthread ${ue.ad}, but that thread no longer exists!`)}else Z==="checkMailbox"?Fe():Z==="spawnThread"?H(ue):Z==="cleanupThread"?de(()=>{rt(ke[ue.Qd])}):Z==="loaded"?(M.loaded=!0,T(M)):ue.target==="setimmediate"?M.postMessage(ue):Z==="uncaughtException"?M.onerror(ue.error):Z==="callHandler"?t[ue.zd](...ue.args):Z&&w(`worker sent an unknown command ${Z}`)},M.onerror=Z=>{throw w(`worker sent an error! ${Z.filename}:${Z.lineno}: ${Z.message}`),Z};var z,G=[];for(z of[])t.propertyIsEnumerable(z)&&G.push(z);M.postMessage({Uc:"load",Ad:G,Vd:dt,Wd:g})});function He(){var M=new Worker((()=>{let T=URL;return self.location.href>"file:"&&self.location.href<"file;"?new T("ort.bundle.min.mjs",self.location.href):new URL(self.location.href)})(),{type:"module",workerData:"em-pthread",name:"em-pthread"});ve.push(M)}var dt,At=(M,T)=>{we=0,M=Na(M,T),0<we?A=M:la(M)},Xe=[],We=0;function yt(M){var T=new hn(M>>>=0);return(y(),k)[T.Vc+12>>>0]==0&&(Vt(T,!0),We--),tn(T,!1),Xe.push(T),Ya(M)}var Mt=0,hr=()=>{Zt(0,0);var M=Xe.pop();xa(M.ed),Mt=0};function Vt(M,T){T=T?1:0,(y(),k)[M.Vc+12>>>0]=T}function tn(M,T){T=T?1:0,(y(),k)[M.Vc+13>>>0]=T}class hn{constructor(T){this.ed=T,this.Vc=T-24}}var ar=M=>{var T=Mt;if(!T)return Cs(0),0;var z=new hn(T);(y(),L)[z.Vc+16>>>2>>>0]=T;var G=(y(),L)[z.Vc+4>>>2>>>0];if(!G)return Cs(0),T;for(var Z of M){if(Z===0||Z===G)break;if(Mi(Z,G,z.Vc+16))return Cs(Z),T}return Cs(G),T};function On(){return ar([])}function ma(M){return ar([M>>>0])}function fa(M,T,z,G){return ar([M>>>0,T>>>0,z>>>0,G>>>0])}var _a=()=>{var M=Xe.pop();M||N("no exception to throw");var T=M.ed;throw(y(),k)[M.Vc+13>>>0]==0&&(Xe.push(M),tn(M,!0),Vt(M,!1),We++),Ea(T),Mt=T};function Ur(M,T,z){var G=new hn(M>>>=0);throw T>>>=0,z>>>=0,(y(),L)[G.Vc+16>>>2>>>0]=0,(y(),L)[G.Vc+4>>>2>>>0]=T,(y(),L)[G.Vc+8>>>2>>>0]=z,Ea(M),We++,Mt=M}var mn=()=>We;function Nn(M,T,z,G){return s?be(2,1,M,T,z,G):Ms(M,T,z,G)}function Ms(M,T,z,G){if(M>>>=0,T>>>=0,z>>>=0,G>>>=0,!globalThis.SharedArrayBuffer)return 6;var Z=[];return s&&Z.length===0?Nn(M,T,z,G):(M={Od:z,Tc:M,dd:G,ud:Z},s?(M.Uc="spawnThread",postMessage(M,Z),0):H(M))}function kt(M){throw Mt||=M>>>0,Mt}var Er=globalThis.TextDecoder&&new TextDecoder,us=(M,T,z,G)=>{if(z=T+z,G)return z;for(;M[T]&&!(T>=z);)++T;return T},cs=(M,T=0,z,G)=>{if(16<(z=us(M,T>>>=0,z,G))-T&&M.buffer&&Er)return Er.decode(M.buffer instanceof ArrayBuffer?M.subarray(T,z):M.slice(T,z));for(G="";T<z;){var Z=M[T++];if(128&Z){var ue=63&M[T++];if((224&Z)==192)G+=String.fromCharCode((31&Z)<<6|ue);else{var me=63&M[T++];65536>(Z=(240&Z)==224?(15&Z)<<12|ue<<6|me:(7&Z)<<18|ue<<12|me<<6|63&M[T++])?G+=String.fromCharCode(Z):(Z-=65536,G+=String.fromCharCode(55296|Z>>10,56320|1023&Z))}}else G+=String.fromCharCode(Z)}return G},pr=(M,T,z)=>(M>>>=0)?cs((y(),W),M,T,z):"";function Ft(M,T,z){return s?be(3,1,M,T,z):0}function ds(M,T){if(s)return be(4,1,M,T)}function S(M,T){if(s)return be(5,1,M,T)}function ie(M,T,z){if(s)return be(6,1,M,T,z)}function X(M,T,z){return s?be(7,1,M,T,z):0}function ae(M,T){if(s)return be(8,1,M,T)}function le(M,T,z){if(s)return be(9,1,M,T,z)}function _e(M,T,z,G){if(s)return be(10,1,M,T,z,G)}function Oe(M,T,z,G){if(s)return be(11,1,M,T,z,G)}function gt(M,T,z,G){if(s)return be(12,1,M,T,z,G)}function Et(M){if(s)return be(13,1,M)}function at(M,T){if(s)return be(14,1,M,T)}function Ot(M,T,z){if(s)return be(15,1,M,T,z)}var lt=()=>N(""),St=M=>{M>>>=0;for(var T="";;){var z=(y(),W)[M++>>>0];if(!z)return T;T+=String.fromCharCode(z)}},rr={},Hr={},kr=class extends Error{constructor(M){super(M),this.name="BindingError"}};function yr(M,T,z={}){return(function(G,Z,ue={}){var me=Z.name;if(!G)throw new kr(`type "${me}" must have a positive integer typeid pointer`);if(Hr.hasOwnProperty(G)){if(ue.Bd)return;throw new kr(`Cannot register type '${me}' twice`)}Hr[G]=Z,rr.hasOwnProperty(G)&&(Z=rr[G],delete rr[G],Z.forEach(Ge=>Ge()))})(M,T,z)}var ln=(M,T,z)=>{switch(T){case 1:return z?G=>(y(),k)[G>>>0]:G=>(y(),W)[G>>>0];case 2:return z?G=>(y(),j)[G>>>1>>>0]:G=>(y(),F)[G>>>1>>>0];case 4:return z?G=>(y(),R)[G>>>2>>>0]:G=>(y(),L)[G>>>2>>>0];case 8:return z?G=>(y(),re)[G>>>3>>>0]:G=>(y(),ce)[G>>>3>>>0];default:throw new TypeError(`invalid integer width (${T}): ${M}`)}};function vs(M,T,z,G,Z){M>>>=0,z>>>=0,T=St(T>>>0);let ue=me=>me;if(G=G===0n){let me=8*z;ue=Ge=>BigInt.asUintN(me,Ge),Z=ue(Z)}yr(M,{name:T,Qc:ue,Xc:(me,Ge)=>(typeof Ge=="number"&&(Ge=BigInt(Ge)),Ge),Wc:ln(T,z,!G),Yc:null})}function En(M,T,z,G){yr(M>>>=0,{name:T=St(T>>>0),Qc:function(Z){return!!Z},Xc:function(Z,ue){return ue?z:G},Wc:function(Z){return this.Qc((y(),W)[Z>>>0])},Yc:null})}var ps=[],Kr=[0,1,,1,null,1,!0,1,!1,1];function fn(M){9<(M>>>=0)&&--Kr[M+1]==0&&(Kr[M]=void 0,ps.push(M))}var qr=M=>{if(!M)throw new kr(`Cannot use deleted val. handle = ${M}`);return Kr[M]},vr=M=>{switch(M){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:let T=ps.pop()||Kr.length;return Kr[T]=M,Kr[T+1]=1,T}};function Rr(M){return this.Qc((y(),L)[M>>>2>>>0])}var jn={name:"emscripten::val",Qc:M=>{var T=qr(M);return fn(M),T},Xc:(M,T)=>vr(T),Wc:Rr,Yc:null};function Zn(M){return yr(M>>>0,jn)}var ea=(M,T)=>{switch(T){case 4:return function(z){return this.Qc((y(),Q)[z>>>2>>>0])};case 8:return function(z){return this.Qc((y(),ne)[z>>>3>>>0])};default:throw new TypeError(`invalid float width (${T}): ${M}`)}};function Bs(M,T,z){z>>>=0,yr(M>>>=0,{name:T=St(T>>>0),Qc:G=>G,Xc:(G,Z)=>Z,Wc:ea(T,z),Yc:null})}function xs(M,T,z,G,Z){M>>>=0,z>>>=0,T=St(T>>>0);let ue=Ge=>Ge;if(G===0){var me=32-8*z;ue=Ge=>Ge<<me>>>me,Z=ue(Z)}yr(M,{name:T,Qc:ue,Xc:(Ge,it)=>it,Wc:ln(T,z,G!==0),Yc:null})}function Es(M,T,z){function G(ue){var me=(y(),L)[ue>>>2>>>0];return ue=(y(),L)[ue+4>>>2>>>0],new Z((y(),k).buffer,ue,me)}var Z=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][T];yr(M>>>=0,{name:z=St(z>>>0),Qc:G,Wc:G},{Bd:!0})}var _n=(M,T,z)=>{var G=(y(),W);if(T>>>=0,0<z){var Z=T;z=T+z-1;for(var ue=0;ue<M.length;++ue){var me=M.codePointAt(ue);if(127>=me){if(T>=z)break;G[T++>>>0]=me}else if(2047>=me){if(T+1>=z)break;G[T++>>>0]=192|me>>6,G[T++>>>0]=128|63&me}else if(65535>=me){if(T+2>=z)break;G[T++>>>0]=224|me>>12,G[T++>>>0]=128|me>>6&63,G[T++>>>0]=128|63&me}else{if(T+3>=z)break;G[T++>>>0]=240|me>>18,G[T++>>>0]=128|me>>12&63,G[T++>>>0]=128|me>>6&63,G[T++>>>0]=128|63&me,ue++}}G[T>>>0]=0,M=T-Z}else M=0;return M},wn=M=>{for(var T=0,z=0;z<M.length;++z){var G=M.charCodeAt(z);127>=G?T++:2047>=G?T+=2:55296<=G&&57343>=G?(T+=4,++z):T+=3}return T};function Ke(M,T){yr(M>>>=0,{name:T=St(T>>>0),Qc(z){var G=(y(),L)[z>>>2>>>0];return G=pr(z+4,G,!0),Kn(z),G},Xc(z,G){G instanceof ArrayBuffer&&(G=new Uint8Array(G));var Z=typeof G=="string";if(!(Z||ArrayBuffer.isView(G)&&G.BYTES_PER_ELEMENT==1))throw new kr("Cannot pass non-string to std::string");var ue=Z?wn(G):G.length,me=ia(4+ue+1),Ge=me+4;return(y(),L)[me>>>2>>>0]=ue,Z?_n(G,Ge,ue+1):(y(),W).set(G,Ge>>>0),z!==null&&z.push(Kn,me),me},Wc:Rr,Yc(z){Kn(z)}})}var Ze=globalThis.TextDecoder?new TextDecoder("utf-16le"):void 0,ft=(M,T,z)=>{if(M>>>=1,16<(T=us((y(),F),M,T/2,z))-M&&Ze)return Ze.decode((y(),F).slice(M,T));for(z="";M<T;++M){var G=(y(),F)[M>>>0];z+=String.fromCharCode(G)}return z},Dr=(M,T,z)=>{if(z??=2147483647,2>z)return 0;var G=T;z=(z-=2)<2*M.length?z/2:M.length;for(var Z=0;Z<z;++Z){var ue=M.charCodeAt(Z);(y(),j)[T>>>1>>>0]=ue,T+=2}return(y(),j)[T>>>1>>>0]=0,T-G},ta=M=>2*M.length,Ds=(M,T,z)=>{var G="";M>>>=2;for(var Z=0;!(Z>=T/4);Z++){var ue=(y(),L)[M+Z>>>0];if(!ue&&!z)break;G+=String.fromCodePoint(ue)}return G},ra=(M,T,z)=>{if(T>>>=0,z??=2147483647,4>z)return 0;var G=T;z=G+z-4;for(var Z=0;Z<M.length;++Z){var ue=M.codePointAt(Z);if(65535<ue&&Z++,(y(),R)[T>>>2>>>0]=ue,(T+=4)+4>z)break}return(y(),R)[T>>>2>>>0]=0,T-G},ii=M=>{for(var T=0,z=0;z<M.length;++z)65535<M.codePointAt(z)&&z++,T+=4;return T};function ye(M,T,z){if(M>>>=0,T>>>=0,z=St(z>>>=0),T===2)var G=ft,Z=Dr,ue=ta;else G=Ds,Z=ra,ue=ii;yr(M,{name:z,Qc:me=>{var Ge=(y(),L)[me>>>2>>>0];return Ge=G(me+4,Ge*T,!0),Kn(me),Ge},Xc:(me,Ge)=>{if(typeof Ge!="string")throw new kr(`Cannot pass non-string to C++ string type ${z}`);var it=ue(Ge),mt=ia(4+it+T);return(y(),L)[mt>>>2>>>0]=it/T,Z(Ge,mt+4,it+T),me!==null&&me.push(Kn,mt),mt},Wc:Rr,Yc(me){Kn(me)}})}function O(M,T){yr(M>>>=0,{Cd:!0,name:T=St(T>>>0),Qc:()=>{},Xc:()=>{}})}function te(M){oa(M>>>0,!n,1,!r,131072,!1),Ue()}var de=M=>{if(!b)try{if(M(),!(0<we))try{s?vt()&&la(A):ze(A)}catch(T){T instanceof De||T=="unwind"||u(0,T)}}catch(T){T instanceof De||T=="unwind"||u(0,T)}},pe=!Atomics.waitAsync||globalThis.navigator?.userAgent&&91>Number((navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./)||[])[2]);function xe(M){M>>>=0,pe||(Atomics.waitAsync((y(),R),M>>>2,M).value.then(Fe),M+=128,Atomics.store((y(),R),M>>>2,1))}var Fe=()=>de(()=>{var M=vt();M&&(xe(M),bi())});function ct(M,T){(M>>>=0)==T>>>0?setTimeout(Fe):s?postMessage({ad:M,Uc:"checkMailbox"}):(M=ke[M])&&M.postMessage({Uc:"checkMailbox"})}var ut=[];function pt(M,T,z,G,Z){for(T>>>=0,Z>>>=0,ut.length=0,z=Z>>>3,G=Z+G>>>3;z<G;){var ue;ue=(y(),re)[z++>>>0]?(y(),re)[z++>>>0]:(y(),ne)[z++>>>0],ut.push(ue)}return(T?dl[T]:Eu[M])(...ut)}var st=()=>{we=0};function Xt(M){M>>>=0,s?postMessage({Uc:"cleanupThread",Qd:M}):rt(ke[M])}function jt(M){}var Or=M=>{try{M()}catch(T){N(T)}};function un(M){var T=(...z)=>{Dn.push(M);try{return M(...z)}finally{b||(Dn.pop(),Ar&&gr===1&&Dn.length===0&&(gr=0,we+=1,Or(Bu),typeof Fibers<"u"&&Fibers.ce()))}};return Jn.set(M,T),T}var gr=0,Ar=null,Br=0,Dn=[],Un=new Map,cn=new Map,Jn=new Map,Yr=0,Wr=null,yn=[],Wn=M=>(function(T){if(!b){if(gr===0){var z=!1,G=!1;T((Z=0)=>{if(!b&&(Br=Z,z=!0,G)){gr=2,Or(()=>cl(Ar)),typeof MainLoop<"u"&&MainLoop.yd&&MainLoop.resume(),Z=!1;try{var ue=(function(){var it=(y(),R)[Ar+8>>>2>>>0];return it=cn.get(it),it=Jn.get(it),--we,it()})()}catch(it){ue=it,Z=!0}var me=!1;if(!Ar){var Ge=Wr;Ge&&(Wr=null,(Z?Ge.reject:Ge.resolve)(ue),me=!0)}if(Z&&!me)throw ue}}),G=!0,z||(gr=1,Ar=(function(){var Z=ia(65548),ue=Z+12;if((y(),L)[Z>>>2>>>0]=ue,(y(),L)[Z+4>>>2>>>0]=ue+65536,ue=Dn[0],!Un.has(ue)){var me=Yr++;Un.set(ue,me),cn.set(me,ue)}return ue=Un.get(ue),(y(),R)[Z+8>>>2>>>0]=ue,Z})(),typeof MainLoop<"u"&&MainLoop.yd&&MainLoop.pause(),Or(()=>vu(Ar)))}else gr===2?(gr=0,Or(xu),Kn(Ar),Ar=null,yn.forEach(de)):N(`invalid state: ${gr}`);return Br}})(T=>{M().then(T)});function gs(M){return M>>>=0,Wn(async()=>{var T=await qr(M);return vr(T)})}var Xr=[],es=M=>{var T=Xr.length;return Xr.push(M),T},dn=(M,T)=>{for(var z=Array(M),G=0;G<M;++G){var Z=G,ue=(y(),L)[T+4*G>>>2>>>0],me=Hr[ue];if(me===void 0)throw M=`parameter ${G}`,ue=wi(ue),T=St(ue),Kn(ue),new kr(`${M} has unknown type ${T}`);z[Z]=me}return z},Nr=(M,T,z)=>{var G=[];return M=M(G,z),G.length&&((y(),L)[T>>>2>>>0]=vr(G)),M},rn={},zr=M=>{var T=rn[M];return T===void 0?St(M):T};function zn(M,T,z){var[G,...Z]=dn(M,T>>>0);T=G.Xc.bind(G);var ue=Z.map(it=>it.Wc.bind(it));M--;var me={toValue:qr};switch(M=ue.map((it,mt)=>{var Qt=`argFromPtr${mt}`;return me[Qt]=it,`${Qt}(args${mt?"+"+8*mt:""})`}),z){case 0:var Ge="toValue(handle)";break;case 2:Ge="new (toValue(handle))";break;case 3:Ge="";break;case 1:me.getStringOrSymbol=zr,Ge="toValue(handle)[getStringOrSymbol(methodName)]"}return Ge+=`(${M})`,G.Cd||(me.toReturnWire=T,me.emval_returnValue=Nr,Ge=`return emval_returnValue(toReturnWire, destructorsRef, ${Ge})`),Ge=`return function (handle, methodName, destructorsRef, args) { 2847 ${Ge} 2848 }`,z=new Function(Object.keys(me),Ge)(...Object.values(me)),Ge=`methodCaller<(${Z.map(it=>it.name)}) => ${G.name}>
2848`,es(Object.defineProperty(z,"name",{value:Ge}))}function wa(M,T){return T>>>=0,(M=qr(M>>>0))==qr(T)}function Is(M){return(M>>>=0)?(M=zr(M),vr(globalThis[M])):vr(globalThis)}function ao(M){return M=zr(M>>>0),vr(t[M])}function Yo(M,T){return T>>>=0,M=qr(M>>>0),T=qr(T),vr(M[T])}function No(M){9<(M>>>=0)&&(Kr[M+1]+=1)}function io(M,T,z,G,Z){return Xr[M>>>0](T>>>0,z>>>0,G>>>0,Z>>>0)}function jo(M,T,z,G,Z){return io(M>>>0,T>>>0,z>>>0,G>>>0,Z>>>0)}function ya(){return vr([])}function Uo(M){M=qr(M>>>0);for(var T=Array(M.length),z=0;z<M.length;z++)T[z]=M[z];return vr(T)}function Wo(M){return vr(zr(M>>>0))}function Vo(){return vr({})}function Qo(M){for(var T=qr(M>>>=0);T.length;){var z=T.pop();T.pop()(z)}fn(M)}function Ho(M,T,z){T>>>=0,z>>>=0,M=qr(M>>>0),T=qr(T),z=qr(z),M[T]=z}function ba(M,T){M=-9007199254740992>M||9007199254740992<M?NaN:Number(M),T>>>=0,M=new Date(1e3*M),(y(),R)[T>>>2>>>0]=M.getUTCSeconds(),(y(),R)[T+4>>>2>>>0]=M.getUTCMinutes(),(y(),R)[T+8>>>2>>>0]=M.getUTCHours(),(y(),R)[T+12>>>2>>>0]=M.getUTCDate(),(y(),R)[T+16>>>2>>>0]=M.getUTCMonth(),(y(),R)[T+20>>>2>>>0]=M.getUTCFullYear()-1900,(y(),R)[T+24>>>2>>>0]=M.getUTCDay(),M=(M.getTime()-Date.UTC(M.getUTCFullYear(),0,1,0,0,0,0))/864e5|0,(y(),R)[T+28>>>2>>>0]=M}var oo=M=>M%4==0&&(M%100!=0||M%400==0),oi=[0,31,60,91,121,152,182,213,244,274,305,335],li=[0,31,59,90,120,151,181,212,243,273,304,334];function lo(M,T){M=-9007199254740992>M||9007199254740992<M?NaN:Number(M),T>>>=0,M=new Date(1e3*M),(y(),R)[T>>>2>>>0]=M.getSeconds(),(y(),R)[T+4>>>2>>>0]=M.getMinutes(),(y(),R)[T+8>>>2>>>0]=M.getHours(),(y(),R)[T+12>>>2>>>0]=M.getDate(),(y(),R)[T+16>>>2>>>0]=M.getMonth(),(y(),R)[T+20>>>2>>>0]=M.getFullYear()-1900,(y(),R)[T+24>>>2>>>0]=M.getDay();var z=(oo(M.getFullYear())?oi:li)[M.getMonth()]+M.getDate()-1|0;(y(),R)[T+28>>>2>>>0]=z,(y(),R)[T+36>>>2>>>0]=-60*M.getTimezoneOffset(),z=new Date(M.getFullYear(),6,1).getTimezoneOffset();var G=new Date(M.getFullYear(),0,1).getTimezoneOffset();M=0|(z!=G&&M.getTimezoneOffset()==Math.min(G,z)),(y(),R)[T+32>>>2>>>0]=M}function Ko(M){M>>>=0;var T=new Date((y(),R)[M+20>>>2>>>0]+1900,(y(),R)[M+16>>>2>>>0],(y(),R)[M+12>>>2>>>0],(y(),R)[M+8>>>2>>>0],(y(),R)[M+4>>>2>>>0],(y(),R)[M>>>2>>>0],0),z=(y(),R)[M+32>>>2>>>0],G=T.getTimezoneOffset(),Z=new Date(T.getFullYear(),6,1).getTimezoneOffset(),ue=new Date(T.getFullYear(),0,1).getTimezoneOffset(),me=Math.min(ue,Z);return 0>z?(y(),R)[M+32>>>2>>>0]=+(Z!=ue&&me==G):0<z!=(me==G)&&(Z=Math.max(ue,Z),T.setTime(T.getTime()+6e4*((0<z?me:Z)-G))),(y(),R)[M+24>>>2>>>0]=T.getDay(),z=(oo(T.getFullYear())?oi:li)[T.getMonth()]+T.getDate()-1|0,(y(),R)[M+28>>>2>>>0]=z,(y(),R)[M>>>2>>>0]=T.getSeconds(),(y(),R)[M+4>>>2>>>0]=T.getMinutes(),(y(),R)[M+8>>>2>>>0]=T.getHours(),(y(),R)[M+12>>>2>>>0]=T.getDate(),(y(),R)[M+16>>>2>>>0]=T.getMonth(),(y(),R)[M+20>>>2>>>0]=T.getYear(),M=T.getTime(),BigInt(isNaN(M)?-1:M/1e3)}function ui(M,T,z,G,Z,ue,me){return s?be(16,1,M,T,z,G,Z,ue,me):-52}function ci(M,T,z,G,Z,ue){if(s)return be(17,1,M,T,z,G,Z,ue)}var na={},sa=()=>performance.timeOrigin+performance.now();function uo(M,T){if(s)return be(18,1,M,T);if(na[M]&&(clearTimeout(na[M].id),delete na[M]),!T)return 0;var z=setTimeout(()=>{delete na[M],de(()=>yi(M,performance.timeOrigin+performance.now()))},T);return na[M]={id:z,be:T},0}function di(M,T,z,G){M>>>=0,T>>>=0,z>>>=0,G>>>=0;var Z=new Date().getFullYear(),ue=new Date(Z,0,1).getTimezoneOffset();Z=new Date(Z,6,1).getTimezoneOffset();var me=Math.max(ue,Z);(y(),L)[M>>>2>>>0]=60*me,(y(),R)[T>>>2>>>0]=+(ue!=Z),M=(T=Ge=>{var it=Math.abs(Ge);return`UTC${0<=Ge?"-":"+"}${String(Math.floor(it/60)).padStart(2,"0")}${String(it%60).padStart(2,"0")}`})(ue),T=T(Z),Z<ue?(_n(M,z,17),_n(T,G,17)):(_n(M,G,17),_n(T,z,17))}var qo=()=>Date.now();function co(M,T,z){return z>>>=0,0<=M&&3>=M?(M===0?M=Date.now():M=performance.timeOrigin+performance.now(),M=Math.round(1e6*M),(y(),re)[z>>>3>>>
vendor: 12,498 bytes, lines 2848-2850
28480]=BigInt(M),0):28}var po=[],Oa=(M,T)=>{po.length=0;for(var z;z=(y(),W)[M++>>>0];){var G=z!=105;T+=(G&=z!=112)&&T%8?4:0,po.push(z==112?(y(),L)[T>>>2>>>0]:z==106?(y(),re)[T>>>3>>>0]:z==105?(y(),R)[T>>>2>>>0]:(y(),ne)[T>>>3>>>0]),T+=G?8:4}return po};function pi(M,T,z){return M>>>=0,T=Oa(T>>>0,z>>>0),dl[M](...T)}function go(M,T,z){return M>>>=0,T=Oa(T>>>0,z>>>0),dl[M](...T)}var gi=()=>{};function Xo(M,T){return w(pr(M>>>0,T>>>0))}var Zo=()=>{throw we+=1,"unwind"};function Jo(){return 4294901760}var el=()=>navigator.hardwareConcurrency,Ts={},Ga=M=>{var T;return(T=/\bwasm-function\[\d+\]:(0x[0-9a-f]+)/.exec(M))?+T[1]:(T=/:(\d+):\d+(?:\)|$)/.exec(M))?2147483648|+T[1]:0},Ai=M=>{for(var T of M)(M=Ga(T))&&(Ts[M]=T)};function za(){var M=Error().stack.toString().split(` 2849`);return M[0]=="Error"&&M.shift(),Ai(M),Ts.sd=Ga(M[3]),Ts.Md=M,Ts.sd}function As(M){if(!(M=Ts[M>>>0]))return 0;var T;if(T=/^\s+at .*\.wasm\.(.*) \(.*\)$/.exec(M))M=T[1];else if(T=/^\s+at (.*) \(.*\)$/.exec(M))M=T[1];else{if(!(T=/^(.+?)@/.exec(M)))return 0;M=T[1]}Kn(As.td??0),T=wn(M)+1;var z=ia(T);return z&&_n(M,z,T),As.td=z,As.td}function hi(M){M>>>=0;var T=(y(),W).length;if(M<=T||4294901760<M)return!1;for(var z=1;4>=z;z*=2){var G=T*(1+.2/z);G=Math.min(G,M+100663296);e:{G=(Math.min(4294901760,65536*Math.ceil(Math.max(M,G)/65536))-dt.buffer.byteLength+65535)/65536|0;try{dt.grow(G),V();var Z=1;break e}catch{}Z=void 0}if(Z)return!0}return!1}function tl(M,T,z){if(M>>>=0,T>>>=0,Ts.sd==M)var G=Ts.Md;else(G=Error().stack.toString().split(` 2850`))[0]=="Error"&&G.shift(),Ai(G);for(var Z=3;G[Z]&&Ga(G[Z])!=M;)++Z;for(M=0;M<z&&G[M+Z];++M)(y(),R)[T+4*M>>>2>>>0]=Ga(G[M+Z]);return M}var Pa,aa={},Fa=()=>{if(!Pa){var M,T={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8",_:"./this.program"};for(M in aa)aa[M]===void 0?delete T[M]:T[M]=aa[M];var z=[];for(M in T)z.push(`${M}=${T[M]}`);Pa=z}return Pa};function La(M,T){if(s)return be(19,1,M,T);M>>>=0,T>>>=0;var z,G=0,Z=0;for(z of Fa()){var ue=T+G;(y(),L)[M+Z>>>2>>>0]=ue,G+=_n(z,ue,1/0)+1,Z+=4}return 0}function hs(M,T){if(s)return be(20,1,M,T);M>>>=0,T>>>=0;var z=Fa();for(var G of((y(),L)[M>>>2>>>0]=z.length,M=0,z))M+=wn(G)+1;return(y(),L)[T>>>2>>>0]=M,0}function mi(M){return s?be(21,1,M):52}function Ao(M,T,z,G){return s?be(22,1,M,T,z,G):52}function fi(M,T,z,G){return s?be(23,1,M,T,z,G):70}var rl=[null,[],[]];function ho(M,T,z,G){if(s)return be(24,1,M,T,z,G);T>>>=0,z>>>=0,G>>>=0;for(var Z=0,ue=0;ue<z;ue++){var me=(y(),L)[T>>>2>>>0],Ge=(y(),L)[T+4>>>2>>>0];T+=8;for(var it=0;it<Ge;it++){var mt=M,Qt=(y(),W)[me+it>>>0],ir=rl[mt];Qt===0||Qt===10?((mt===1?_:w)(cs(ir)),ir.length=0):ir.push(Qt)}Z+=Ge}return(y(),L)[G>>>2>>>0]=Z,0}function _i(M){return M>>>0}s||(function(){for(var M=t.numThreads-1;M--;)He();je.push(async()=>{var T=(async function(){if(!s)return Promise.all(ve.map(ht))})();Me++,await T,--Me==0&&se&&(T=se,se=null,T())})})(),s||(dt=new WebAssembly.Memory({initial:256,maximum:65536,shared:!0}),V()),t.wasmBinary&&(c=t.wasmBinary),t.stackSave=()=>Wt(),t.stackRestore=M=>Ut(M),t.stackAlloc=M=>Ra(M),t.setValue=function(M,T,z="i8"){switch(z.endsWith("*")&&(z="*"),z){case"i1":case"i8":(y(),k)[M>>>0]=T;break;case"i16":(y(),j)[M>>>1>>>0]=T;break;case"i32":(y(),R)[M>>>2>>>0]=T;break;case"i64":(y(),re)[M>>>3>>>0]=BigInt(T);break;case"float":(y(),Q)[M>>>2>>>0]=T;break;case"double":(y(),ne)[M>>>3>>>0]=T;break;case"*":(y(),L)[M>>>2>>>0]=T;break;default:N(`invalid type for setValue: ${z}`)}},t.getValue=function(M,T="i8"){switch(T.endsWith("*")&&(T="*"),T){case"i1":case"i8":return(y(),k)[M>>>0];case"i16":return(y(),j)[M>>>1>>>0];case"i32":return(y(),R)[M>>>2>>>0];case"i64":return(y(),re)[M>>>3>>>0];case"float":return(y(),Q)[M>>>2>>>0];case"double":return(y(),ne)[M>>>3>>>0];case"*":return(y(),L)[M>>>2>>>0];default:N(`invalid type for getValue: ${T}`)}},t.UTF8ToString=pr,t.stringToUTF8=_n,t.lengthBytesUTF8=wn;var wi,Ma,vt,Kn,ia,oa,va,Vn,Ba,la,yi,bi,Zt,Cs,Pi,Ut,Ra,Wt,xa,Ea,Mi,Ya,vi,Na,ja,x,C,Y,K,ee,he,Le,Qe,ot,wt,Lt,sr,mr,nn,$s,mo,nl,pu,gu,sl,Au,hu,al,mu,fu,il,_u,wu,ol,yu,bu,ll,Pu,Mu,ul,vu,Bu,cl,xu,Ss,Eu=[Ce,Se,Nn,Ft,ds,S,ie,X,ae,le,_e,Oe,gt,Et,at,Ot,ui,ci,uo,La,hs,mi,Ao,fi,ho],dl={929356:(M,T,z,G,Z)=>{if(t===void 0||!t.Zc)return 1;if((M=pr(Number(M>>>0))).startsWith("./")&&(M=M.substring(2)),!(M=t.Zc.get(M)))return 2;if(T=Number(T>>>0),z=Number(z>>>0),G=Number(G>>>0),T+z>M.byteLength)return 3;try{let ue=M.subarray(T,T+z);switch(Z){case 0:(y(),W).set(ue,G>>>0);break;case 1:t.Xd?t.Xd(G,ue):t.Ld(G,ue);break;default:return 4}return 0}catch{return 4}},930180:(M,T,z)=>{t.xd(M,(y(),W).subarray(T>>>0,T+z>>>0))},930244:()=>t.Zd(),930286:M=>{t.vd(M)},930323:()=>{t.Ed()},930354:()=>{t.Fd()},930383:()=>{t.Jd()},930408:M=>t.Dd(M),930441:M=>t.Hd(M),930473:(M,T,z)=>{t.jd(Number(M),Number(T),Number(z),!0)},930536:(M,T,z)=>{t.jd(Number(M),Number(T),Number(z))},930593:()=>typeof wasmOffsetConverter<"u",930650:M=>{t.ac("Abs",M,void 0)},930701:M=>{t.ac("Neg",M,void 0)},930752:M=>{t.ac("Floor",M,void 0)},930805:M=>{t.ac("Ceil",M,void 0)},930857:M=>{t.ac("Reciprocal",M,void 0)},930915:M=>{t.ac("Sqrt",M,void 0)},930967:M=>{t.ac("Exp",M,void 0)},931018:M=>{t.ac("Erf",M,void 0)},931069:M=>{t.ac("Sigmoid",M,void 0)},931124:(M,T,z)=>{t.ac("HardSigmoid",M,{alpha:T,beta:z})},931203:M=>{t.ac("Log",M,void 0)},931254:M=>{t.ac("Sin",M,void 0)},931305:M=>{t.ac("Cos",M,void 0)},931356:M=>{t.ac("Tan",M,void 0)},931407:M=>{t.ac("Asin",M,void 0)},931459:M=>{t.ac("Acos",M,void 0)},931511:M=>{t.ac("Atan",M,void 0)},931563:M=>{t.ac("Sinh",M,void 0)},931615:M=>{t.ac("Cosh",M,void 0)},931667:M=>{t.ac("Asinh",M,void 0)},931720:M=>{t.ac("Acosh",M,void 0)},931773:M=>{t.ac("Atanh",M,void 0)},931826:M=>{t.ac("Tanh",M,void 0)},931878:M=>{t.ac("Not",M,void 0)},931929:(M,T,z)=>{t.ac("Clip",M,{min:T,max:z})},931998:M=>{t.ac("Clip",M,void 0)},932050:(M,T)=>{t.ac("Elu",M,{alpha:T})},932108:M=>{t.ac("Gelu",M,void 0)},932160:M=>{t.ac("Relu",M,void 0)},932212:(M,T)=>{t.ac("LeakyRelu",M,{alpha:T})},932276:(M,T)=>{t.ac("ThresholdedRelu",M,{alpha:T})},932346:(M,T)=>{t.ac("Cast",M,{to:T})},932404:M=>{t.ac("Add",M,void 0)},932455:M=>{t.ac("Sub",M,void 0)},932506:M=>{t.ac("Mul",M,void 0)},932557:M=>{t.ac("Div",M,void 0)},932608:M=>{t.ac("Pow",M,void 0)},932659:M=>{t.ac("Equal",M,void 0)},932712:M=>{t.ac("Greater",M,void 0)},932767:M=>{t.ac("GreaterOrEqual",M,void 0)},932829:M=>{t.ac("Less",M,void 0)},932881:M=>{t.ac("LessOrEqual",M,void 0)},932940:(M,T,z,G,Z)=>{t.ac("ReduceMean",M,{keepDims:!!T,noopWithEmptyAxes:!!z,axes:G?Array.from((y(),R).subarray(Number(G)>>>0,Number(Z)>>>0)):[]})},933115:(M,T,z,G,Z)=>{t.ac("ReduceMax",M,{keepDims:!!T,noopWithEmptyAxes:!!z,axes:G?Array.from((y(),R).subarray(Number(G)>>>0,Number(Z)>>>0)):[]})},933289:(M,T,z,G,Z)=>{t.ac("ReduceMin",M,{keepDims:!!T,noopWithEmptyAxes:!!z,axes:G?Array.from((y(),R).subarray(Number(G)>>>0,Number(Z)>>>0)):[]})},933463:(M,T,z,G,Z)=>{t.ac("ReduceProd",M,{keepDims:!!T,noopWithEmptyAxes:!!z,axes:G?Array.from((y(),R).subarray(Number(G)>>>0,Number(Z)>>>0)):[]})},933638:(M,T,z,G,Z)=>{t.ac("ReduceSum",M,{keepDims:!!T,noopWithEmptyAxes:!!z,axes:G?Array.from((y(),R).subarray(Number(G)>>>0,Number(Z)>>>0)):[]})},933812:(M,T,z,G,Z)=>{t.ac("ReduceL1",M,{keepDims:!!T,noopWithEmptyAxes:!!z,axes:G?Array.from((y(),R).subarray(Number(G)>>>0,Number(Z)>>>0)):[]})},933985:(M,T,z,G,Z)=>{t.ac("ReduceL2",M,{keepDims:!!T,noopWithEmptyAxes:!!z,axes:G?Array.from((y(),R).subarray(Number(G)>>>0,Number(Z)>>>0)):[]})},934158:(M,T,z,G,Z)=>{t.ac("ReduceLogSum",M,{keepDims:!!T,noopWithEmptyAxes:!!z,axes:G?Array.from((y(),R).subarray(Number(G)>>>0,Number(Z)>>>0)):[]})},934335:(M,T,z,G,Z)=>{t.ac("ReduceSumSquare",M,{keepDims:!!T,noopWithEmptyAxes:!!z,axes:G?Array.from((y(),R).subarray(Number(G)>>>0,Number(Z)>>>0)):[]})},934515:(M,T,z,G,Z)=>{t.ac("ReduceLogSumExp",M,{keepDims:!!T,noopWithEmptyAxes:!!z,axes:G?Array.from((y(),R).subarray(Number(G)>>>0,Number(Z)>>>0)):[]})},934695:M=>{t.ac("Where",M,void 0)},934748:(M,T,z)=>{t.ac("Transpose",M,{perm:T?Array.from((y(),R).subarray(Number(T)>>>0,Number(z)>>>0)):[]})},934872:(M,T,z,G)=>{t.ac("DepthToSpace",M,{blocksize:T,mode:pr(z),format:G?"NHWC":"NCHW"})},935005:(M,T,z,G)=>{t.ac("DepthToSpace",M,{blocksize:T,mode:pr(z),format:G?"NHWC":"NCHW"})},935138:(M,T,z,G,Z,ue,me,Ge,it,mt,Qt,ir,Ir,Gr,ua)=>{t.ac("ConvTranspose",M,{format:it?"NHWC":"NCHW",autoPad:T,dilations:[z],group:G,kernelShape:[Z],pads:[ue,me],strides:[Ge],wIsConst:()=>!!(y(),k)[mt>>>0],outputPadding:Qt?Array.from((y(),R).subarray(Number(Qt)>>>0,Number(ir)>>>0)):[],outputShape:Ir?Array.from((y(),R).subarray(Number(Ir)>>>0,Number(Gr)>>>0)):[],activation:pr(ua)})},935571:(M,T,z,G,Z,ue,me,Ge,it,mt,Qt,ir,Ir,Gr)=>{t.ac("ConvTranspose",M,{format:Ge?"NHWC":"NCHW",autoPad:T,dilations:Array.from((y(),R).subarray(Number(z)>>>0,2+(Number(z)>>>0)>>>0)),group:G,kernelShape:Array.from((y(),R).subarray(Number(Z)>>>0,2+(Number(Z)>>>0)>>>0)),pads:Array.from((y(),R).subarray(Number(ue)>>>0,4+(Number(ue)>>>0)>>>0)),strides:Array.from((y(),R).subarray(Number(me)>>>0,2+(Number(me)>>>0)>>>0)),wIsConst:()=>!!(y(),k)[it>>>0],outputPadding:mt?Array.from((y(),R).subarray(Number(mt)>>>0,Number(Qt)>>>0)):[],outputShape:ir?Array.from((y(),R).subarray(Number(ir)>>>0,Number(Ir)>>>0)):[],activation:pr(Gr)})},936232:(M,T,z,G,Z,ue,me,Ge,it,mt,Qt,ir,Ir,Gr,ua)=>{t.ac("ConvTranspose",M,{format:it?"NHWC":"NCHW",autoPad:T,dilations:[z],group:G,kernelShape:[Z],pads:[ue,me],strides:[Ge],wIsConst:()=>!!(y(),k)[mt>>>0],outputPadding:Qt?Array.from((y(),R).subarray(Number(Qt)>>>0,Number(ir)>>>0)):[],outputShape:Ir?Array.from((y(),R).subarray(Number(Ir)>>>0,Number(Gr)>>>0)):[],activation:pr(ua)})},936665:(M,T,z,G,Z,ue,me,Ge,it,mt,Qt,ir,Ir,Gr)=>{t.ac("ConvTranspose",M,{format:Ge?"NHWC":"NCHW",autoPad:T,dilations:Array.from((y(),R).subarray(Number(z)>>>0,2+(Number(z)>>>0)>>>0)),group:G,kernelShape:Array.from((y(),R).subarray(Number(Z)>>>0,2+(Number(Z)>>>0)>>>0)),pads:Array.from((y(),R).subarray(Number(ue)>>>0,4+(Number(ue)>>>0)>>>0)),strides:Array.from((y(),R).subarray(Number(me)>>>0,2+(Number(me)>>>0)>>>0)),wIsConst:()=>!!(y(),k)[it>>>0],outputPadding:mt?Array.from((y(),R).subarray(Number(mt)>>>0,Number(Qt)>>>0)):[],outputShape:ir?Array.from((y(),R).subarray(Number(ir)>>>0,Number(Ir)>>>0)):[],activation:pr(Gr)})},937326:(M,T)=>{t.ac("GlobalAveragePool",M,{format:T?"NHWC":"NCHW"})},937417:(M,T,z,G,Z,ue,me,Ge,it,mt,Qt,ir,Ir,Gr)=>{t.ac("AveragePool",M,{format:Gr?"NHWC":"NCHW",auto_pad:T,ceil_mode:z,count_include_pad:G,storage_order:Z,dilations:ue?Array.from((y(),R).subarray(Number(ue)>>>0,Number(me)>>>0)):[],kernel_shape:Ge?Array.from((y(),R).subarray(Number(Ge)>>>0,Number(it)>>>0)):[],pads:mt?Array.from((y(),R).subarray(Number(mt)>>>0,Number(Qt)>>>0)):[],strides:ir?Array.from((y(),R).subarray(Number(ir)>>>0,Number(Ir)>>>0)):[]})},937896:(M,T)=>{t.ac("GlobalAveragePool",M,{format:T?"NHWC":"NCHW"})},937987:(M,T,z,G,Z,ue,me,Ge,it,mt,Qt,ir,Ir,Gr)=>{t.ac("AveragePool",M,{format:Gr?"NHWC":"NCHW",auto_pad:T,ceil_mode:z,count_include_pad:G,storage_order:Z,dilations:ue?Array.from((y(),R).subarray(Number(ue)>>>0,Number(me)>>>0)):[],kernel_shape:Ge?Array.from((y(),R).subarray(Number(Ge)>>>0,Number(it)>>>0)):[],pads:mt?Array.from((y(),R).subarray(Number(mt)>>>0,Number(Qt)>>>0)):[],strides:ir?Array.from((y(),R).subarray(Number(ir)>>>0,Number(Ir)>>>0)):[]})},938466:(M,T)=>{t.ac("GlobalMaxPool",M,{format:T?"NHWC":"NCHW"})},938553:(M,T,z,G,Z,ue,me,Ge,it,mt,Qt,ir,Ir,Gr)=>{t.ac("MaxPool",M,{format:Gr?"NHWC":"NCHW",auto_pad:T,ceil_mode:z,count_include_pad:G,storage_order:Z,dilations:ue?Array.from((y(),R).subarray(Number(ue)>>>0,Number(me)>>>0)):[],kernel_shape:Ge?Array.from((y(),R).subarray(Number(Ge)>>>0,Number(it)>>>0)):[],pads:mt?Array.from((y(),R).subarray(Number(mt)>>>0,Number(Qt)>>>0)):[],strides:ir?Array.from((y(),R).subarray(Number(ir)>>>0,Number(Ir)>>>0)):[]})},939028:(M,T)=>{t.ac("GlobalMaxPool",M,{format:T?"NHWC":"NCHW"})},939115:(M,T,z,G,Z,ue,me,Ge,it,mt,Qt,ir,Ir,Gr)=>{t.ac("MaxPool",M,{format:Gr?"NHWC":"NCHW",auto_pad:T,ceil_mode:z,count_include_pad:G,storage_order:Z,dilations:ue?Array.from((y(),R).subarray(Number(ue)>>>0,Number(me)>>>0)):[],kernel_shape:Ge?Array.from((y(),R).subarray(Number(Ge)>>>0,Number(it)>>>0)):[],pads:mt?Array.from((y(),R).subarray(Number(mt)>>>0,Number(Qt)>>>0)):[],strides:ir?Array.from((y(),R).subarray(Number(ir)>>>0,Number(Ir)>>>0)):[]})},939590:(M,T,z,G,Z)=>{t.ac("Gemm",M,{alpha:T,beta:z,transA:G,transB:Z})},939694:M=>{t.ac("MatMul",M,void 0)},939748:(M,T,z,G)=>
vendor: 4,178 bytes, line 2850
2850{t.ac("ArgMax",M,{keepDims:!!T,selectLastIndex:!!z,axis:G})},939856:(M,T,z,G)=>{t.ac("ArgMin",M,{keepDims:!!T,selectLastIndex:!!z,axis:G})},939964:(M,T)=>{t.ac("Softmax",M,{axis:T})},940027:(M,T)=>{t.ac("Concat",M,{axis:T})},940087:(M,T,z,G,Z)=>{t.ac("Split",M,{axis:T,numOutputs:z,splitSizes:G?Array.from((y(),R).subarray(Number(G)>>>0,Number(Z)>>>0)):[]})},940243:M=>{t.ac("Expand",M,void 0)},940297:(M,T)=>{t.ac("Gather",M,{axis:Number(T)})},940368:(M,T)=>{t.ac("GatherElements",M,{axis:Number(T)})},940447:(M,T)=>{t.ac("GatherND",M,{batch_dims:Number(T)})},940526:(M,T,z,G,Z,ue,me,Ge,it,mt,Qt)=>{t.ac("Resize",M,{antialias:T,axes:z?Array.from((y(),R).subarray(Number(z)>>>0,Number(G)>>>0)):[],coordinateTransformMode:pr(Z),cubicCoeffA:ue,excludeOutside:me,extrapolationValue:Ge,keepAspectRatioPolicy:pr(it),mode:pr(mt),nearestMode:pr(Qt)})},940888:(M,T,z,G,Z,ue,me)=>{t.ac("Slice",M,{starts:T?Array.from((y(),R).subarray(Number(T)>>>0,Number(z)>>>0)):[],ends:G?Array.from((y(),R).subarray(Number(G)>>>0,Number(Z)>>>0)):[],axes:ue?Array.from((y(),R).subarray(Number(ue)>>>0,Number(me)>>>0)):[]})},941152:M=>{t.ac("Tile",M,void 0)},941204:(M,T,z)=>{t.ac("InstanceNormalization",M,{epsilon:T,format:z?"NHWC":"NCHW"})},941318:(M,T,z)=>{t.ac("InstanceNormalization",M,{epsilon:T,format:z?"NHWC":"NCHW"})},941432:M=>{t.ac("Range",M,void 0)},941485:(M,T)=>{t.ac("Einsum",M,{equation:pr(T)})},941566:(M,T,z,G,Z)=>{t.ac("Pad",M,{mode:T,value:z,pads:G?Array.from((y(),R).subarray(Number(G)>>>0,Number(Z)>>>0)):[]})},941709:(M,T,z,G,Z,ue)=>{t.ac("BatchNormalization",M,{epsilon:T,momentum:z,spatial:!!Z,trainingMode:!!G,format:ue?"NHWC":"NCHW"})},941878:(M,T,z,G,Z,ue)=>{t.ac("BatchNormalization",M,{epsilon:T,momentum:z,spatial:!!Z,trainingMode:!!G,format:ue?"NHWC":"NCHW"})},942047:(M,T,z)=>{t.ac("CumSum",M,{exclusive:Number(T),reverse:Number(z)})},942144:(M,T,z)=>{t.ac("DequantizeLinear",M,{axis:T,blockSize:z})},942234:(M,T,z,G,Z)=>{t.ac("GridSample",M,{align_corners:T,mode:pr(z),padding_mode:pr(G),format:Z?"NHWC":"NCHW"})},942404:(M,T,z,G,Z)=>{t.ac("GridSample",M,{align_corners:T,mode:pr(z),padding_mode:pr(G),format:Z?"NHWC":"NCHW"})},942574:(M,T)=>{t.ac("ScatterND",M,{reduction:pr(T)})},942659:(M,T,z,G,Z,ue,me,Ge,it)=>{t.ac("Attention",M,{numHeads:T,isUnidirectional:z,maskFilterValue:G,scale:Z,doRotary:ue,qkvHiddenSizes:me?Array.from((y(),R).subarray(Number(Ge)>>>0,Number(Ge)+me>>>0)):[],pastPresentShareBuffer:!!it})},942931:M=>{t.ac("BiasAdd",M,void 0)},942986:M=>{t.ac("BiasSplitGelu",M,void 0)},943047:M=>{t.ac("FastGelu",M,void 0)},943103:(M,T,z,G,Z,ue,me,Ge,it,mt,Qt,ir,Ir,Gr,ua,_o)=>{t.ac("Conv",M,{format:ir?"NHWC":"NCHW",auto_pad:T,dilations:z?Array.from((y(),R).subarray(Number(z)>>>0,Number(G)>>>0)):[],group:Z,kernel_shape:ue?Array.from((y(),R).subarray(Number(ue)>>>0,Number(me)>>>0)):[],pads:Ge?Array.from((y(),R).subarray(Number(Ge)>>>0,Number(it)>>>0)):[],strides:mt?Array.from((y(),R).subarray(Number(mt)>>>0,Number(Qt)>>>0)):[],w_is_const:()=>!!(y(),k)[Number(Ir)>>>0],activation:pr(Gr),activation_params:ua?Array.from((y(),Q).subarray(Number(ua)>>>0,Number(_o)>>>0)):[]})},943687:M=>{t.ac("Gelu",M,void 0)},943739:(M,T,z,G,Z,ue,me,Ge,it)=>{t.ac("GroupQueryAttention",M,{numHeads:T,kvNumHeads:z,scale:G,softcap:Z,doRotary:ue,rotaryInterleaved:me,smoothSoftmax:Ge,localWindowSize:it})},943956:(M,T,z,G)=>{t.ac("LayerNormalization",M,{axis:T,epsilon:z,simplified:!!G})},944067:(M,T,z,G)=>{t.ac("LayerNormalization",M,{axis:T,epsilon:z,simplified:!!G})},944178:(M,T,z,G,Z,ue)=>{t.ac("MatMulNBits",M,{k:T,n:z,accuracyLevel:G,bits:Z,blockSize:ue})},944305:(M,T,z,G,Z,ue)=>{t.ac("MultiHeadAttention",M,{numHeads:T,isUnidirectional:z,maskFilterValue:G,scale:Z,doRotary:ue})},944464:(M,T)=>{t.ac("QuickGelu",M,{alpha:T})},944528:(M,T,z,G,Z)=>{t.ac("RotaryEmbedding",M,{interleaved:!!T,numHeads:z,rotaryEmbeddingDim:G,scale:Z})},944667:(M,T,z)=>{t.ac("SkipLayerNormalization",M,{epsilon:T,simplified:!!z})},944769:(M,T,z)=>{t.ac("SkipLayerNormalization",M,{epsilon:T,simplified:!!z})},944871:(M,T,z,G)=>{t.ac("GatherBlockQuantized",M,{gatherAxis:T,quantizeAxis:z,blockSize:G})},944992:M=>{t.Id(M)},945026:(M,T)=>t.Kd(Number(M),Number(T),t.$c.Nd,t.$c.errors)};
2850function nd(M,T,z){return Wn(async()=>{await t.Gd(Number(M),Number(T),Number(z))})}function Du(){return typeof wasmOffsetConverter<"u"}function sd(M,T,z,G){var Z=Wt();try{return Le(M,T,z,G)}catch(ue){if(Ut(Z),ue!==ue+0)throw ue;Zt(1,0)}}function ad(M,T,z){var G=Wt();try{return Y(M,T,z)}catch(Z){if(Ut(G),Z!==Z+0)throw Z;Zt(1,0)}}function Iu(M,T,z){var G=Wt();try{vi(M,T,z)}catch(Z){if(Ut(G),Z!==Z+0)throw Z;Zt(1,0)}}function id(M,T){var z=Wt();try{return Na(M,T)}catch(G){if(Ut(z),G!==G+0)throw G;Zt(1,0)}}function od(M){var T=Wt();try{ja(M)}catch(z){if(Ut(T),z!==z+0)throw z;Zt(1,0)}}function Tu(M,T,z,G,Z,ue,me){var Ge=Wt();try{return ee(M,T,z,G,Z,ue,me)}catch(it){if(Ut(Ge),it!==it+0)throw it;Zt(1,0)}}function ld(M,T){var z=Wt();try{Qe(M,T)}catch(G){if(Ut(z),G!==G+0)throw G;Zt(1,0)}}function ud(M,T,z,G,Z,ue){var me=Wt();try{x(M,T,z,G,Z,ue)}catch(Ge){if(Ut(me),Ge!==Ge+0)throw Ge;Zt(1,0)}}function Cu(M,T,z,G){var Z=Wt();try{he(M,T,z,G)}catch(ue){if(Ut(Z),ue!==ue+0)throw ue;Zt(1,0)}}function cd(M,T,z,G,Z){var ue=Wt();try{C(M,T,z,G,Z)}catch(me){if(Ut(ue),me!==me+0)throw me;Zt(1,0)}}function dd(M,T,z,G,Z,ue,me){var Ge=Wt();try{wt(M,T,z,G,Z,ue,me)}catch(it){if(Ut(Ge),it!==it+0)throw it;Zt(1,0)}}function $u(M,T,z,G,Z,ue,me){var Ge=Wt();try{Lt(M,T,z,G,Z,ue,me)}catch(it){if(Ut(Ge),it!==it+0)throw it;Zt(1,0)}}function pd(M,T,z,G,Z,ue,me,Ge){var it=Wt();try{$s(M,T,z,G,Z,ue,me,Ge)}catch(mt){if(Ut(it),mt!==mt+0)throw mt;Zt(1,0)}}function gd(M,T,z,G,Z){var ue=Wt();try{return ot(M,T,z,G,Z)}catch(me){if(Ut(ue),me!==me+0)throw me;Zt(1,0)}}function Su(M,T,z,G,Z,ue,me,Ge){var it=Wt();try{mo(M,T,z,G,Z,ue,me,Ge)}catch(mt){if(Ut(it),mt!==mt+0)throw mt;Zt(1,0)}}function Ad(M,T,z,G,Z,ue,me,Ge,it,mt,Qt,ir){var Ir=Wt();try{sr(M,T,z,G,Z,ue,me,Ge,it,mt,Qt,ir)}catch(Gr){if(Ut(Ir),Gr!==Gr+0)throw Gr;Zt(1,0)}}function hd(M,T,z,G,Z,ue){var me=Wt();try{return mr(M,T,z,G,Z,ue)}catch(Ge){if(Ut(me),Ge!==Ge+0)throw Ge;Zt(1,0)}}function ku(M,T,z){var G=Wt();try{return nl(M,T,z)}catch(Z){if(Ut(G),Z!==Z+0)throw Z;return Zt(1,0),0n}}function md(M,T,z,G,Z,ue,me,Ge,it){var mt=Wt();try{K(M,T,z,G,Z,ue,me,Ge,it)}catch(Qt){if(Ut(mt),Qt!==Qt+0)throw Qt;Zt(1,0)}}function fd(M){var T=Wt();try{return pu(M)}catch(z){if(Ut(T),z!==z+0)throw z;Zt(1,0)}}function Ou(M,T,z){var G=Wt();try{return gu(M,T,z)}catch(Z){if(Ut(G),Z!==Z+0)throw Z;Zt(1,0)}}function _d(M,T){var z=Wt();try{return ul(M,T)}catch(G){if(Ut(z),G!==G+0)throw G;return Zt(1,0),0n}}function wd(M,T,z,G,Z){var ue=Wt();try{sl(M,T,z,G,Z)}catch(me){if(Ut(ue),me!==me+0)throw me;Zt(1,0)}}function Gu(M){var T=Wt();try{return Au(M)}catch(z){if(Ut(T),z!==z+0)throw z;return Zt(1,0),0n}}function yd(M,T,z,G,Z,ue){var me=Wt();try{return _u(M,T,z,G,Z,ue)}catch(Ge){if(Ut(me),Ge!==Ge+0)throw Ge;Zt(1,0)}}function bd(M,T,z,G,Z,ue){var me=Wt();try{return wu(M,T,z,G,Z,ue)}catch(Ge){if(Ut(me),Ge!==Ge+0)throw Ge;Zt(1,0)}}function zu(M,T,z,G,Z,ue,me,Ge){var it=Wt();try{return nn(M,T,z,G,Z,ue,me,Ge)}catch(mt){if(Ut(it),mt!==mt+0)throw mt;Zt(1,0)}}function Pd(M,T,z,G,Z){var ue=Wt();try{return ol(M,T,z,G,Z)}catch(me){if(Ut(ue),me!==me+0)throw me;return Zt(1,0),0n}}function Md(M,T,z,G){var Z=Wt();try{return yu(M,T,z,G)}catch(ue){if(Ut(Z),ue!==ue+0)throw ue;Zt(1,0)}}function vd(M,T,z,G){var Z=Wt();try{return bu(M,T,z,G)}catch(ue){if(Ut(Z),ue!==ue+0)throw ue;Zt(1,0)}}function Bd(M,T,z,G,Z,ue,me,Ge,it,mt,Qt,ir){var Ir=Wt();try{return ll(M,T,z,G,Z,ue,me,Ge,it,mt,Qt,ir)}catch(Gr){if(Ut(Ir),Gr!==Gr+0)throw Gr;Zt(1,0)}}function Fu(M,T,z,G,Z,ue,me,Ge,it,mt,Qt){var ir=Wt();try{fu(M,T,z,G,Z,ue,me,Ge,it,mt,Qt)}catch(Ir){if(Ut(ir),Ir!==Ir+0)throw Ir;Zt(1,0)}}function xd(M,T,z,G,Z,ue,me,Ge,it,mt,Qt,ir,Ir,Gr,ua,_o){var Td=Wt();try{il(M,T,z,G,Z,ue,me,Ge,it,mt,Qt,ir,Ir,Gr,ua,_o)}catch(pl){if(Ut(Td),pl!==pl+0)throw pl;Zt(1,0)}}function Ed(M,T,z,G){var Z=Wt();try{return Pu(M,T,z,G)}catch(ue){if(Ut(Z),ue!==ue+0)throw ue;Zt(1,0)}}function Lu(M,T,z,G,Z){var ue=Wt();try{return Mu(M,T,z,G,Z)}catch(me){if(Ut(ue),me!==me+0)throw me;Zt(1,0)}}function Dd(M,T,z){var G=Wt();try{return hu(M,T,z)}catch(Z){if(Ut(G),Z!==Z+0)throw Z;Zt(1,0)}}function Id(M,T,z){var G=Wt();try{return al(M,T,z)}catch(Z){if(Ut(G),Z!==Z+0)throw Z;Zt(1,0)}}function Ru(M,T,z,G){var Z=Wt();try{mu(M,T,z,G)}catch(ue){if(Ut(Z),ue!==ue+0)throw ue;Zt(1,0)}}function fo(){if(0<Me)se=fo;else if(s)m?.(t),U();else{for(var M=je;0<M.length;)M.shift()(t);0<Me?se=fo:(t.calledRun=!0,b||(U(),m?.(t)))}}return s||(Ss=await fe(),fo()),t.PTR_SIZE=4,q?t:new Promise((M,T)=>{m=M,B=T})}var jM,UM,Q4=et(()=>{jM=NM,UM=globalThis.self?.name?.startsWith("em-pthread"),UM&&NM()}),sA,aA,WM,as,VM,_c,QM,HM,iA,KM,oA,qM,lA,XM,uA=et(()=>{tA(),sA=typeof location>"u"?void 0:location.origin,aA=self.location.href>"file:"&&self.location.href<"file;",WM=()=>{{if(aA){let e=URL;return new URL(new e("ort.bundle.min.mjs",self.location.href).href,sA).href}return self.location.href}},as=WM(),VM=()=>
vendor: 4,325 bytes, line 2850
2850{if(as&&!as.startsWith("blob:"))return as.substring(0,as.lastIndexOf("/")+1)},_c=(e,t)=>{try{let r=t??as;return(r?new URL(e,r):new URL(e)).origin===sA}catch{return!1}},QM=(e,t)=>{let r=t??as;try{return(r?new URL(e,r):new URL(e)).href}catch{return}},HM=(e,t)=>`${t??"./"}${e}`,iA=async e=>{let t=await(await fetch(e,{credentials:"same-origin"})).blob();return URL.createObjectURL(t)},KM=async e=>(await import(e)).default,oA=(V4(),Ol(LM)).default,qM=async()=>{if(!as)throw new Error("Failed to load proxy worker: cannot determine the script source URL.");if(_c(as))return[void 0,oA()];let e=await iA(as);return[e,oA(e)]},lA=(Q4(),Ol(YM)).default,XM=async(e,t,r,n)=>{let s=lA&&!(e||t);if(s)if(as)s=_c(as)||n&&!r;else if(n&&!r)s=!0;else throw new Error("cannot determine the script source URL.");if(s)return[void 0,lA];{let a="ort-wasm-simd-threaded.jsep.mjs",i=e??QM(a,t),o=r&&i&&!_c(i,t),l=o?await iA(i):i??HM(a,t);return[o?l:void 0,await KM(l)]}}}),cA,wc,Fl,dA,ZM,JM,ev,pA,Lr,Ui=et(()=>{uA(),wc=!1,Fl=!1,dA=!1,ZM=()=>{if(typeof SharedArrayBuffer>"u")return!1;try{return typeof MessageChannel<"u"&&new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch{return!1}},JM=()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,30,1,28,0,65,0,253,15,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,186,1,26,11]))}catch{return!1}},ev=()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,19,1,17,0,65,1,253,15,65,2,253,15,65,3,253,15,253,147,2,11]))}catch{return!1}},pA=async e=>{if(wc)return Promise.resolve();if(Fl)throw new Error("multiple calls to 'initializeWebAssembly()' detected.");if(dA)throw new Error("previous call to 'initializeWebAssembly()' failed.");Fl=!0;let t=e.initTimeout,r=e.numThreads;if(e.simd!==!1){if(e.simd==="relaxed"){if(!ev())throw new Error("Relaxed WebAssembly SIMD is not supported in the current environment.")}else if(!JM())throw new Error("WebAssembly SIMD is not supported in the current environment.")}let n=ZM();r>1&&!n&&(typeof self<"u"&&!self.crossOriginIsolated&&console.warn("env.wasm.numThreads is set to "+r+", but this will not work unless you enable crossOriginIsolated mode. See https://web.dev/cross-origin-isolation-guide/ for more info."),console.warn("WebAssembly multi-threading is not supported in the current environment. Falling back to single-threading."),e.numThreads=r=1);let s=e.wasmPaths,a=typeof s=="string"?s:void 0,i=s?.mjs,o=i?.href??i,l=s?.wasm,u=l?.href??l,p=e.wasmBinary,[d,c]=await XM(o,a,r>1,!!p||!!u),g=!1,A=[];if(t>0&&A.push(new Promise(m=>{setTimeout(()=>{g=!0,m()},t)})),A.push(new Promise((m,B)=>{let f={numThreads:r};if(p)f.wasmBinary=p,f.locateFile=h=>h;else if(u||a)f.locateFile=h=>u??a+h;else if(o&&o.indexOf("blob:")!==0)f.locateFile=h=>new URL(h,o).href;else if(d){let h=VM();h&&(f.locateFile=P=>h+P)}c(f).then(h=>{Fl=!1,wc=!0,cA=h,m(),d&&URL.revokeObjectURL(d)},h=>{Fl=!1,dA=!0,B(h)})})),await Promise.race(A),g)throw new Error(`WebAssembly backend initializing failed due to timeout: ${t}ms`)},Lr=()=>{if(wc&&cA)return cA;throw new Error("WebAssembly is not initialized yet.")}}),Us,yc,xr,gA=et(()=>{Ui(),Us=(e,t)=>{let r=Lr(),n=r.lengthBytesUTF8(e)+1,s=r._malloc(n);return r.stringToUTF8(e,s,n),t.push(s),s},yc=(e,t,r,n)=>{if(typeof e=="object"&&e!==null){if(r.has(e))throw new Error("Circular reference in options");r.add(e)}Object.entries(e).forEach(([s,a])=>{let i=t?t+s:s;if(typeof a=="object")yc(a,i+".",r,n);else if(typeof a=="string"||typeof a=="number")n(i,a.toString());else if(typeof a=="boolean")n(i,a?"1":"0");else throw new Error(`Can't handle extra config type: ${typeof a}`)})},xr=e=>{let t=Lr(),r=t.stackSave();try{let n=t.PTR_SIZE,s=t.stackAlloc(2*n);t._OrtGetLastError(s,s+n);let a=Number(t.getValue(s,n===4?"i32":"i64")),i=t.getValue(s+n,"*"),o=i?t.UTF8ToString(i):"";throw new Error(`${e} ERROR_CODE: ${a}, ERROR_MESSAGE: ${o}`)}finally{t.stackRestore(r)}}}),tv,H4=et(()=>{Ui(),gA(),tv=e=>{let t=Lr(),r=0,n=[],s=e||{};try{if(e?.logSeverityLevel===void 0)s.logSeverityLevel=2;else if(typeof e.logSeverityLevel!="number"||!Number.isInteger(e.logSeverityLevel)||e.logSeverityLevel<0||e.logSeverityLevel>
vendor: 12,558 bytes, line 2850
28504)throw new Error(`log severity level is not valid: ${e.logSeverityLevel}`);if(e?.logVerbosityLevel===void 0)s.logVerbosityLevel=0;else if(typeof e.logVerbosityLevel!="number"||!Number.isInteger(e.logVerbosityLevel))throw new Error(`log verbosity level is not valid: ${e.logVerbosityLevel}`);e?.terminate===void 0&&(s.terminate=!1);let a=0;return e?.tag!==void 0&&(a=Us(e.tag,n)),r=t._OrtCreateRunOptions(s.logSeverityLevel,s.logVerbosityLevel,!!s.terminate,a),r===0&&xr("Can't create run options."),e?.extra!==void 0&&yc(e.extra,"",new WeakSet,(i,o)=>{let l=Us(i,n),u=Us(o,n);t._OrtAddRunConfigEntry(r,l,u)!==0&&xr(`Can't set a run config entry: ${i} - ${o}.`)}),[r,n]}catch(a){throw r!==0&&t._OrtReleaseRunOptions(r),n.forEach(i=>t._free(i)),a}}}),rv,nv,sv,Ll,av,iv,K4=et(()=>{Ui(),gA(),rv=e=>{switch(e){case"disabled":return 0;case"basic":return 1;case"extended":return 2;case"layout":return 3;case"all":return 99;default:throw new Error(`unsupported graph optimization level: ${e}`)}},nv=e=>{switch(e){case"sequential":return 0;case"parallel":return 1;default:throw new Error(`unsupported execution mode: ${e}`)}},sv=e=>{e.extra||(e.extra={}),e.extra.session||(e.extra.session={});let t=e.extra.session;t.use_ort_model_bytes_directly||(t.use_ort_model_bytes_directly="1"),e.executionProviders&&e.executionProviders.some(r=>(typeof r=="string"?r:r.name)==="webgpu")&&(e.enableMemPattern=!1)},Ll=(e,t,r,n)=>{let s=Us(t,n),a=Us(r,n);Lr()._OrtAddSessionConfigEntry(e,s,a)!==0&&xr(`Can't set a session config entry: ${t} - ${r}.`)},av=async(e,t,r)=>{let n=t.executionProviders;for(let s of n){let a=typeof s=="string"?s:s.name,i=[];switch(a){case"webnn":if(a="WEBNN",typeof s!="string"){let d=s?.deviceType;d&&Ll(e,"deviceType",d,r)}break;case"webgpu":if(a="JS",typeof s!="string"){let d=s;if(d?.preferredLayout){if(d.preferredLayout!=="NCHW"&&d.preferredLayout!=="NHWC")throw new Error(`preferredLayout must be either 'NCHW' or 'NHWC': ${d.preferredLayout}`);Ll(e,"preferredLayout",d.preferredLayout,r)}}break;case"wasm":case"cpu":continue;default:throw new Error(`not supported execution provider: ${a}`)}let o=Us(a,r),l=i.length,u=0,p=0;if(l>0){u=Lr()._malloc(l*Lr().PTR_SIZE),r.push(u),p=Lr()._malloc(l*Lr().PTR_SIZE),r.push(p);for(let d=0;d<l;d++)Lr().setValue(u+d*Lr().PTR_SIZE,i[d][0],"*"),Lr().setValue(p+d*Lr().PTR_SIZE,i[d][1],"*")}await Lr()._OrtAppendExecutionProvider(e,o,u,p,l)!==0&&xr(`Can't append execution provider: ${a}.`)}},iv=async e=>{let t=Lr(),r=0,n=[],s=e||{};sv(s);try{let a=rv(s.graphOptimizationLevel??"all"),i=nv(s.executionMode??"sequential"),o=typeof s.logId=="string"?Us(s.logId,n):0,l=s.logSeverityLevel??2;if(!Number.isInteger(l)||l<0||l>4)throw new Error(`log severity level is not valid: ${l}`);let u=s.logVerbosityLevel??0;if(!Number.isInteger(u)||u<0||u>4)throw new Error(`log verbosity level is not valid: ${u}`);let p=typeof s.optimizedModelFilePath=="string"?Us(s.optimizedModelFilePath,n):0;if(r=t._OrtCreateSessionOptions(a,!!s.enableCpuMemArena,!!s.enableMemPattern,i,!!s.enableProfiling,0,o,l,u,p),r===0&&xr("Can't create session options."),s.executionProviders&&await av(r,s,n),s.enableGraphCapture!==void 0){if(typeof s.enableGraphCapture!="boolean")throw new Error(`enableGraphCapture must be a boolean value: ${s.enableGraphCapture}`);Ll(r,"enableGraphCapture",s.enableGraphCapture.toString(),n)}if(s.freeDimensionOverrides)for(let[d,c]of Object.entries(s.freeDimensionOverrides)){if(typeof d!="string")throw new Error(`free dimension override name must be a string: ${d}`);if(typeof c!="number"||!Number.isInteger(c)||c<0)throw new Error(`free dimension override value must be a non-negative integer: ${c}`);let g=Us(d,n);t._OrtAddFreeDimensionOverride(r,g,c)!==0&&xr(`Can't set a free dimension override: ${d} - ${c}.`)}return s.extra!==void 0&&yc(s.extra,"",new WeakSet,(d,c)=>{Ll(r,d,c,n)}),[r,n]}catch(a){throw r!==0&&t._OrtReleaseSessionOptions(r)!==0&&xr("Can't release session options."),n.forEach(i=>t._free(i)),a}}}),Wi,Ca,Vi,bc,Pc,AA,hA,mA,Gt=et(()=>{Wi=e=>{switch(e){case"int8":return 3;case"uint8":return 2;case"bool":return 9;case"int16":return 5;case"uint16":return 4;case"int32":return 6;case"uint32":return 12;case"float16":return 10;case"float32":return 1;case"float64":return 11;case"string":return 8;case"int64":return 7;case"uint64":return 13;case"int4":return 22;case"uint4":return 21;default:throw new Error(`unsupported data type: ${e}`)}},Ca=e=>{switch(e){case 3:return"int8";case 2:return"uint8";case 9:return"bool";case 5:return"int16";case 4:return"uint16";case 6:return"int32";case 12:return"uint32";case 10:return"float16";case 1:return"float32";case 11:return"float64";case 8:return"string";case 7:return"int64";case 13:return"uint64";case 22:return"int4";case 21:return"uint4";default:throw new Error(`unsupported data type: ${e}`)}},Vi=(e,t)=>{let r=[-1,4,1,1,2,2,4,8,-1,1,2,8,4,8,-1,-1,-1,-1,-1,-1,-1,.5,.5][e],n=typeof t=="number"?t:t.reduce((s,a)=>s*a,1);return r>0?Math.ceil(n*r):void 0},bc=e=>{switch(e){case"float16":return typeof Float16Array<"u"&&Float16Array.from?Float16Array:Uint16Array;case"float32":return Float32Array;case"uint8":return Uint8Array;case"int8":return Int8Array;case"uint16":return Uint16Array;case"int16":return Int16Array;case"int32":return Int32Array;case"bool":return Uint8Array;case"float64":return Float64Array;case"uint32":return Uint32Array;case"int64":return BigInt64Array;case"uint64":return BigUint64Array;default:throw new Error(`unsupported type: ${e}`)}},Pc=e=>{switch(e){case"verbose":return 0;case"info":return 1;case"warning":return 2;case"error":return 3;case"fatal":return 4;default:throw new Error(`unsupported logging level: ${e}`)}},AA=e=>e==="float32"||e==="float16"||e==="int32"||e==="int64"||e==="uint32"||e==="uint8"||e==="bool"||e==="uint4"||e==="int4",hA=e=>e==="float32"||e==="float16"||e==="int32"||e==="int64"||e==="uint32"||e==="uint64"||e==="int8"||e==="uint8"||e==="bool"||e==="uint4"||e==="int4",mA=e=>{switch(e){case"none":return 0;case"cpu":return 1;case"cpu-pinned":return 2;case"texture":return 3;case"gpu-buffer":return 4;case"ml-tensor":return 5;default:throw new Error(`unsupported data location: ${e}`)}}}),fA,ov=et(()=>{tA(),fA=async e=>{if(typeof e=="string"){let t=await fetch(e);if(!t.ok)throw new Error(`failed to load external data file: ${e}`);let r=t.headers.get("Content-Length"),n=r?parseInt(r,10):0;if(n<1073741824)return new Uint8Array(await t.arrayBuffer());{if(!t.body)throw new Error(`failed to load external data file: ${e}, no response body.`);let s=t.body.getReader(),a;try{a=new ArrayBuffer(n)}catch(o){if(o instanceof RangeError){let l=Math.ceil(n/65536);a=new WebAssembly.Memory({initial:l,maximum:l}).buffer}else throw o}let i=0;for(;;){let{done:o,value:l}=await s.read();if(o)break;let u=l.byteLength;new Uint8Array(a,i,u).set(l),i+=u}return new Uint8Array(a,0,n)}}else return e instanceof Blob?new Uint8Array(await e.arrayBuffer()):e instanceof Uint8Array?e:new Uint8Array(e)}}),lv,uv,cv,dv,_A,pv,ur,$a=et(()=>{Gt(),lv=["V","I","W","E","F"],uv=(e,t)=>{console.log(`[${lv[e]},${new Date().toISOString()}]${t}`)},_A=(e,t)=>{cv=e,dv=t},pv=(e,t)=>{let r=Pc(e),n=Pc(cv);r>=n&&uv(r,typeof t=="function"?t():t)},ur=(...e)=>{dv&&pv(...e)}}),gv,ko,$e,Mc,Av,hv,mv,qt=et(()=>{gv=class{static calcMatMulShape(e,t){return e[1]!==t[0]?void 0:[e[0],t[1]]}},ko=class{static calcShape(e,t,r=!1){let n=e.length,s=t.length;if(n===0)return t;if(s===0)return e;let a=Math.max(e.length,t.length),i=new Array(a);if(r){if(n<2||s<2)return;let o=gv.calcMatMulShape([e[n-2],e[n-1]],[t[s-2],t[s-1]]);if(o===void 0)return;[i[a-2],i[a-1]]=o}for(let o=r?3:1;o<=a;o++){let l=n-o<0?1:e[n-o],u=s-o<0?1:t[s-o];if(l!==u&&l>1&&u>1)return;let p=Math.max(l,u);if(l&&u)i[a-o]=Math.max(l,u);else{if(p>1)return;i[a-o]=0}}return i}static isValidBroadcast(e,t){let r=e.length,n=t.length;if(r>n)return!1;for(let s=1;s<=r;s++)if(e[r-s]!==1&&e[r-s]!==t[n-s])return!1;return!0}},$e=class Zd{static size(t){return Zd.getSizeFromDimensionRange(t,0,t.length)}static convertShape(t,r=4){let n=t.length;if(n===0)return[];let s=new Array(n),a=n-1;for(;a>=0;){if(t[a]%r===0){s[a]=t[a]/r;break}if(r%t[a]!==0)throw new Error("cannot convert shape");s[a]=1,r/=t[a],a--}for(a--;a>=0;a--)s[a]=t[a];return s}static sizeFromDimension(t,r){if(r<0||r>t.length)throw new Error(`invalid dimension of ${r} for sizeFromDimension as Tensor has ${t.length} dimensions.`);return Zd.getSizeFromDimensionRange(t,r,t.length)}static sizeToDimension(t,r){if(r<0||r>t.length)throw new Error(`invalid dimension of ${r} for sizeToDimension as Tensor has ${t.length} dimensions.`);return Zd.getSizeFromDimensionRange(t,0,r)}static getSizeFromDimensionRange(t,r,n){let s=1;for(let a=r;a<n;a++){if(t[a]<0)throw new Error("cannot get valid size from specified dimension range. Most likely the range contains negative values in them.");s*=Number(t[a])}return s}static computeStrides(t){let r=t.length;if(r===0)return[];if(r===1)return[1];let n=new Array(r);n[r-1]=1,n[r-2]=t[r-1];for(let s=r-3;s>=0;--s)n[s]=n[s+1]*t[s+1];return n}static normalizeAxis(t,r){if(t<-r&&t>=r)throw new Error("unsupported axis for this operation.");return t<0?t+r:t}static normalizeAxes(t,r){return t.map(n=>this.normalizeAxis(n,r??t.length))}static sortBasedOnPerm(t,r){return r?r.map(n=>t[n]):t.slice().reverse()}static padShape(t,r){let n=t.length;return t.map((s,a)=>s+r[a]+r[a+n])}static areEqual(t,r){return t.length!==r.length?!1:t.every((n,s)=>n===r[s])}},Mc=class Wu{static adjustPoolAttributes(t,r,n,s,a,i){if(!t&&n.length!==r.length-2)throw new Error("length of specified kernel shapes should be 2 less than length of input dimensions");if(t)for(let o=0;o<r.length-2;o++)o>=n.length?n.push(r[o+2]):n[o]=r[o+2];for(let o=0;o<n.length;o++)if(o<s.length){if(s[o]<0)throw new Error("strides should be greater than or equal to 1")}else s.push(1);for(let o=0;o<n.length;o++)if(o<a.length){if(a[o]<0)throw new Error("dilations should be greater than or equal to 1")}else a.push(1);for(let o=0;o<n.length*2;o++)if(o<i.length){if(i[o]<0)throw new Error("pad should be greater than or equal to 1")}else i.push(0);for(let o=0;o<n.length;o++){if(n[o]<=0)throw new Error("kernel shapes need to be greater than 0");if(i[o]>=n[o]||i[o+n.length]>=n[o])throw new Error("pads should be smaller than kernel")}}static adjustPadsBasedOnAutoPad(t,r,n,s,a,i,o){if(o){if(a.length!==2*(t.length-2))throw new Error("length of pads should be twice the length of data dimensions");if(r.length!==t.length-2)throw new Error("length of strides should be the length of data dimensions");if(s.length!==t.length-2)throw new Error("length of kernel shapes should be the length of data dimensions");for(let l=0;l<t.length-2;l++)Wu.adjustPadAndReturnShape(t[l+(i?1:2)],r[l],n[l],s[l],a,l,l+t.length-2,o)}}static computePoolOutputShape(t,r,n,s,a,i,o){if(r.length<=0)throw new Error("input shape must be of size greater than 0");let l=[r[0],r[1]];return Wu.computeShapeHelper(t,r,l,n,s,a,i,o),l}static computeConvOutputShape(t,r,n,s,a,i,o){if(t.length<=0||r.length<=0)throw new Error("invalid input tensor dims or invalid filter tensor dims");let l=[t[0],r[0]];return Wu.computeShapeHelper(!1,t,l,n,s,a,i,o),l}static computeShapeHelper(t,r,n,s,a,i,o,l){if(t)for(let u=0;u<r.length-2;u++)n.push(1);else for(let u=0;u<r.length-2;u++)n.push(Wu.adjustPadAndReturnShape(r[u+2],s[u],a[u],i[u],o,u,u+r.length-2,l))}static adjustPadAndReturnShape(t,r,n,s,a,i,o,l){let u=n*(s-1)+1;if(l&&l!=="NOTSET")switch(l){case"VALID":return a[i]=0,a[o]=0,Math.floor((t-u)/r+1);case"SAME_LOWER":case"SAME_UPPER":if(n!==1)throw new Error("Dilation not supported for SAME_UPPER or SAME_LOWER");{let p=((t+r-1)/r-1)*r+s-t;return a[i]=Math.floor(l==="SAME_LOWER"?(p+1)/2:p/2),a[o]=p-a[i],Math.floor((t+p-s)/r+1)}default:throw new Error("Unsupported AutoPad type")}else return Math.floor((t+a[i]+a[o]-u)/r+1)}},Av=class{static getShapeOfGemmResult(e,t,r,n,s){if(e.length!==2||r.length!==2)throw new Error("shape need to be of size 2");let a,i,o;t?(a=e[1],i=e[0]):(a=e[0],i=e[1]);let l=-1;if(n?(o=r[0],l=1):(o=r[1],l=0),r[l]!==i)throw new Error("dimension mismatch");if(a<=0||o<=0||i<=0)throw new Error("invalid shape specified");if(s&&!ko.isValidBroadcast(s,[a,o]))throw new Error("gemm: invalid bias shape for broadcast");return[a,o,i]}},hv=-34028234663852886e22,mv=34028234663852886e22}),wA,fv=et(()=>{Gt(),wA=(e,t)=>new(bc(t))(e)}),yA,bA,PA,_v,MA,wv,vA,BA,xA,yv,bv,q4=et(()=>{Gt(),$a(),yA=new Map([["float32",32],["float16",16],["int32",32],["uint32",32],["int64",64],["uint64",64],["int8",8],["uint8",8],["int4",4],["uint4",4]]),bA=(e,t)=>
vendor: 7,711 bytes, line 2850
2850{if(t==="int32")return e;let r=yA.get(t);if(!r)throw new Error(`WebNN backend does not support data type: ${t}`);let n=r/8;if(e.byteLength%n!==0)throw new Error(`Invalid Uint8Array length - must be a multiple of ${n}.`);let s=e.byteLength/n,a=new(bc(t))(e.buffer,e.byteOffset,s);switch(t){case"int64":case"uint64":{let i=new Int32Array(s);for(let o=0;o<s;o++){let l=a[o];if(l>2147483647n||l<-2147483648n)throw new Error("Can not convert int64 data to int32 - value out of range.");i[o]=Number(l)}return new Uint8Array(i.buffer)}case"int8":case"uint8":case"uint32":{if(t==="uint32"&&a.some(o=>o>2147483647))throw new Error("Can not convert uint32 data to int32 - value out of range.");let i=Int32Array.from(a,Number);return new Uint8Array(i.buffer)}default:throw new Error(`Unsupported data conversion from ${t} to 'int32'`)}},PA=(e,t)=>{if(t==="int32")return e;if(e.byteLength%4!==0)throw new Error("Invalid Uint8Array length - must be a multiple of 4 (int32).");let r=e.byteLength/4,n=new Int32Array(e.buffer,e.byteOffset,r);switch(t){case"int64":{let s=BigInt64Array.from(n,BigInt);return new Uint8Array(s.buffer)}case"uint64":{if(n.some(a=>a<0))throw new Error("Can not convert int32 data to uin64 - negative value found.");let s=BigUint64Array.from(n,BigInt);return new Uint8Array(s.buffer)}case"int8":{if(n.some(a=>a<-128||a>127))throw new Error("Can not convert int32 data to int8 - value out of range.");let s=Int8Array.from(n,Number);return new Uint8Array(s.buffer)}case"uint8":{if(n.some(s=>s<0||s>255))throw new Error("Can not convert int32 data to uint8 - value out of range.");return Uint8Array.from(n,Number)}case"uint32":{if(n.some(a=>a<0))throw new Error("Can not convert int32 data to uint32 - negative value found.");let s=Uint32Array.from(n,Number);return new Uint8Array(s.buffer)}default:throw new Error(`Unsupported data conversion from 'int32' to ${t}`)}},_v=1,MA=()=>_v++,wv=new Map([["int8","int32"],["uint8","int32"],["uint32","int32"],["int64","int32"]]),vA=(e,t)=>{let r=yA.get(e);if(!r)throw new Error(`WebNN backend does not support data type: ${e}`);return t.length>0?Math.ceil(t.reduce((n,s)=>n*s)*r/8):0},BA=class{constructor(e){this.isDataConverted=!1;let{sessionId:t,context:r,tensor:n,dataType:s,shape:a,fallbackDataType:i}=e;this.sessionId=t,this.mlContext=r,this.mlTensor=n,this.dataType=s,this.tensorShape=a,this.fallbackDataType=i}get tensor(){return this.mlTensor}get type(){return this.dataType}get fallbackType(){return this.fallbackDataType}get shape(){return this.tensorShape}get byteLength(){return vA(this.dataType,this.tensorShape)}destroy(){ur("verbose",()=>"[WebNN] TensorWrapper.destroy"),this.mlTensor.destroy()}write(e){this.mlContext.writeTensor(this.mlTensor,e)}async read(e){if(this.fallbackDataType){let t=await this.mlContext.readTensor(this.mlTensor),r=PA(new Uint8Array(t),this.dataType);if(e){(e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)).set(r);return}else return r.buffer}else return e?this.mlContext.readTensor(this.mlTensor,e):this.mlContext.readTensor(this.mlTensor)}canReuseTensor(e,t,r){return this.mlContext===e&&this.dataType===t&&this.tensorShape.length===r.length&&this.tensorShape.every((n,s)=>n===r[s])}setIsDataConverted(e){this.isDataConverted=e}},xA=class{constructor(e,t){this.tensorManager=e,this.wrapper=t}get tensorWrapper(){return this.wrapper}releaseTensor(){this.tensorWrapper&&(this.tensorManager.releaseTensor(this.tensorWrapper),this.wrapper=void 0)}async ensureTensor(e,t,r,n){let s=this.tensorManager.getMLContext(e),a=this.tensorManager.getMLOpSupportLimits(e),i;if(!a?.input.dataTypes.includes(t)){if(i=wv.get(t),!i||a?.input.dataTypes.includes(i))throw new Error(`WebNN backend does not support data type: ${t}`);ur("verbose",()=>`[WebNN] TensorIdTracker.ensureTensor: fallback dataType from ${t} to ${i}`)}if(this.wrapper){if(this.wrapper.canReuseTensor(s,t,r))return this.wrapper.tensor;if(n){if(this.wrapper.byteLength!==vA(t,r))throw new Error("Unable to copy data to tensor with different size.");this.activeUpload=new Uint8Array(await this.wrapper.read())}this.tensorManager.releaseTensor(this.wrapper)}let o=typeof MLTensorUsage>"u"?void 0:MLTensorUsage.READ|MLTensorUsage.WRITE;return this.wrapper=await this.tensorManager.getCachedTensor(e,t,r,o,!0,!0,i),n&&this.activeUpload&&(this.wrapper.write(this.activeUpload),this.activeUpload=void 0),this.wrapper.tensor}upload(e){let t=e;if(this.wrapper){if(this.wrapper.fallbackType)if(this.wrapper.fallbackType==="int32")t=bA(e,this.wrapper.type),this.wrapper.setIsDataConverted(!0);else throw new Error(`Unsupported fallback data type: ${this.wrapper.fallbackType}`);if(e.byteLength===this.wrapper.byteLength){this.wrapper.write(t);return}else ur("verbose",()=>"Data size does not match tensor size. Releasing tensor."),this.releaseTensor()}this.activeUpload?this.activeUpload.set(t):this.activeUpload=new Uint8Array(t)}async download(e){if(this.activeUpload){let t=this.wrapper?.isDataConverted?PA(this.activeUpload,this.wrapper?.type):this.activeUpload;if(e){e instanceof ArrayBuffer?new Uint8Array(e).set(t):new Uint8Array(e.buffer,e.byteOffset,e.byteLength).set(t);return}else return t.buffer}if(!this.wrapper)throw new Error("Tensor has not been created.");return e?this.wrapper.read(e):this.wrapper.read()}},yv=class{constructor(e){this.backend=e,this.tensorTrackersById=new Map,this.freeTensors=[],this.externalTensors=new Set}getMLContext(e){let t=this.backend.getMLContext(e);if(!t)throw new Error("MLContext not found for session.");return t}getMLOpSupportLimits(e){return this.backend.getMLOpSupportLimits(e)}reserveTensorId(){let e=MA();return this.tensorTrackersById.set(e,new xA(this)),e}releaseTensorId(e){let t=this.tensorTrackersById.get(e);t&&(this.tensorTrackersById.delete(e),t.tensorWrapper&&this.releaseTensor(t.tensorWrapper))}async ensureTensor(e,t,r,n,s){ur("verbose",()=>`[WebNN] TensorManager.ensureTensor {tensorId: ${t}, dataType: ${r}, shape: ${n}, copyOld: ${s}}`);let a=this.tensorTrackersById.get(t);if(!a)throw new Error("Tensor not found.");return a.ensureTensor(e,r,n,s)}upload(e,t){let r=this.tensorTrackersById.get(e);if(!r)throw new Error("Tensor not found.");r.upload(t)}async download(e,t){ur("verbose",()=>`[WebNN] TensorManager.download {tensorId: ${e}, dstBuffer: ${t?.byteLength}}`);let r=this.tensorTrackersById.get(e);if(!r)throw new Error("Tensor not found.");return r.download(t)}releaseTensorsForSession(e){for(let t of this.freeTensors)t.sessionId===e&&t.destroy();this.freeTensors=this.freeTensors.filter(t=>t.sessionId!==e)}registerTensor(e,t,r,n){let s=this.getMLContext(e),a=MA(),i=new BA({sessionId:e,context:s,tensor:t,dataType:r,shape:n});return this.tensorTrackersById.set(a,new xA(this,i)),this.externalTensors.add(i),a}async getCachedTensor(e,t,r,n,s,a,i){let o=this.getMLContext(e);for(let[u,p]of this.freeTensors.entries())if(p.canReuseTensor(o,t,r)){ur("verbose",()=>`[WebNN] Reusing tensor {dataType: ${t}, ${i?`fallbackDataType: ${i},`:""} shape: ${r}`);let d=this.freeTensors.splice(u,1)[0];return d.sessionId=e,d}ur("verbose",()=>`[WebNN] MLContext.createTensor {dataType: ${t}, ${i?`fallbackDataType: ${i},`:""} shape: ${r}}`);let l=await o.createTensor({dataType:i??t,shape:r,dimensions:r,usage:n,writable:s,readable:a});return new BA({sessionId:e,context:o,tensor:l,dataType:t,shape:r,fallbackDataType:i})}releaseTensor(e){this.externalTensors.has(e)&&this.externalTensors.delete(e),this.freeTensors.push(e)}},bv=(...e)=>new yv(...e)}),Rl,Pv,Mv,X4=et(()=>{Gt(),Ui(),fv(),q4(),$a(),Rl=new Map([[1,"float32"],[10,"float16"],[6,"int32"],[12,"uint32"],[7,"int64"],[13,"uint64"],[22,"int4"],[21,"uint4"],[3,"int8"],[2,"uint8"],[9,"uint8"]]),Pv=(e,t)=>
2850{if(e===t)return!0;if(e===void 0||t===void 0)return!1;let r=Object.keys(e).sort(),n=Object.keys(t).sort();return r.length===n.length&&r.every((s,a)=>s===n[a]&&e[s]===t[s])},Mv=class{constructor(e){this.tensorManager=bv(this),this.mlContextBySessionId=new Map,this.sessionIdsByMLContext=new Map,this.mlContextCache=[],this.sessionGraphInputs=new Map,this.sessionGraphOutputs=new Map,this.temporaryGraphInputs=[],this.temporaryGraphOutputs=[],this.temporarySessionTensorIds=new Map,this.mlOpSupportLimitsBySessionId=new Map,_A(e.logLevel,!!e.debug)}get currentSessionId(){if(this.activeSessionId===void 0)throw new Error("No active session");return this.activeSessionId}onRunStart(e){ur("verbose",()=>`[WebNN] onRunStart {sessionId: ${e}}`),this.activeSessionId=e}onRunEnd(e){ur("verbose",()=>`[WebNN] onRunEnd {sessionId: ${e}}`);let t=this.temporarySessionTensorIds.get(e);if(t){for(let r of t)ur("verbose",()=>`[WebNN] releasing temporary tensor {tensorId: ${r}}`),this.tensorManager.releaseTensorId(r);this.temporarySessionTensorIds.delete(e),this.activeSessionId=void 0}}async createMLContext(e){if(e instanceof GPUDevice){let r=this.mlContextCache.findIndex(n=>n.gpuDevice===e);if(r!==-1)return this.mlContextCache[r].mlContext;{let n=await navigator.ml.createContext(e);return this.mlContextCache.push({gpuDevice:e,mlContext:n}),n}}else if(e===void 0){let r=this.mlContextCache.findIndex(n=>n.options===void 0&&n.gpuDevice===void 0);if(r!==-1)return this.mlContextCache[r].mlContext;{let n=await navigator.ml.createContext();return this.mlContextCache.push({mlContext:n}),n}}let t=this.mlContextCache.findIndex(r=>Pv(r.options,e));if(t!==-1)return this.mlContextCache[t].mlContext;{let r=await navigator.ml.createContext(e);return this.mlContextCache.push({options:e,mlContext:r}),r}}registerMLContext(e,t){this.mlContextBySessionId.set(e,t);let r=this.sessionIdsByMLContext.get(t);r||(r=new Set,this.sessionIdsByMLContext.set(t,r)),r.add(e),this.mlOpSupportLimitsBySessionId.has(e)||this.mlOpSupportLimitsBySessionId.set(e,t.opSupportLimits()),this.temporaryGraphInputs.length>0&&(this.sessionGraphInputs.set(e,this.temporaryGraphInputs),this.temporaryGraphInputs=[]),this.temporaryGraphOutputs.length>0&&(this.sessionGraphOutputs.set(e,this.temporaryGraphOutputs),this.temporaryGraphOutputs=[])}onReleaseSession(e){this.sessionGraphInputs.delete(e),this.sessionGraphOutputs.delete(e);let t=this.mlContextBySessionId.get(e);if(!t)return;this.tensorManager.releaseTensorsForSession(e),this.mlContextBySessionId.delete(e),this.mlOpSupportLimitsBySessionId.delete(e);let r=this.sessionIdsByMLContext.get(t);if(r.delete(e),r.size===0){this.sessionIdsByMLContext.delete(t);let n=this.mlContextCache.findIndex(s=>s.mlContext===t);n!==-1&&this.mlContextCache.splice(n,1)}}getMLContext(e){return this.mlContextBySessionId.get(e)}getMLOpSupportLimits(e){return this.mlOpSupportLimitsBySessionId.get(e)}reserveTensorId(){return this.tensorManager.reserveTensorId()}releaseTensorId(e){ur("verbose",()=>`[WebNN] releaseTensorId {tensorId: ${e}}`),this.tensorManager.releaseTensorId(e)}async ensureTensor(e,t,r,n,s){let a=Rl.get(r);if(!a)throw new Error(`Unsupported ONNX data type: ${r}`);return this.tensorManager.ensureTensor(e??this.currentSessionId,t,a,n,s)}async createTemporaryTensor(e,t,r){ur("verbose",()=>`[WebNN] createTemporaryTensor {onnxDataType: ${t}, shape: ${r}}`);let n=Rl.get(t);if(!n)throw new Error(`Unsupported ONNX data type: ${t}`);let s=this.tensorManager.reserveTensorId();await this.tensorManager.ensureTensor(e,s,n,r,!1);let a=this.temporarySessionTensorIds.get(e);return a?a.push(s):this.temporarySessionTensorIds.set(e,[s]),s}uploadTensor(e,t){if(!Lr().shouldTransferToMLTensor)throw new Error("Trying to upload to a MLTensor while shouldTransferToMLTensor is false");ur("verbose",()=>`[WebNN] uploadTensor {tensorId: ${e}, data: ${t.byteLength}}`),this.tensorManager.upload(e,t)}async downloadTensor(e,t){return this.tensorManager.download(e,t)}createMLTensorDownloader(e,t){return async()=>{let r=await this.tensorManager.download(e);return wA(r,t)}}registerMLTensor(e,t,r,n){let s=Rl.get(r);if(!s)throw new Error(`Unsupported ONNX data type: ${r}`);let a=this.tensorManager.registerTensor(e,t,s,n);return ur("verbose",()=>`[WebNN] registerMLTensor {tensor: ${t}, dataType: ${s}, dimensions: ${n}} -> {tensorId: ${a}}`),a}registerMLConstant(e,t,r,n,s,a,i=!1){if(!a)throw new Error("External mounted files are not available.");let o=e;e.startsWith("./")&&(o=e.substring(2));let l=a.get(o);if(!l)throw new Error(`File with name ${o} not found in preloaded files.`);if(t+r>l.byteLength)throw new Error("Out of bounds: data offset and length exceed the external file data size.");let u=l.slice(t,t+r).buffer,p;switch(s.dataType){case"float32":p=new Float32Array(u);break;case"float16":p=typeof Float16Array<"u"&&Float16Array.from?new Float16Array(u):new Uint16Array(u);break;case"int32":p=new Int32Array(u);break;case"uint32":p=new Uint32Array(u);break;case"int64":if(i){let d=bA(new Uint8Array(u),"int64");p=new Int32Array(d.buffer),s.dataType="int32"}else p=new BigInt64Array(u);break;case"uint64":p=new BigUint64Array(u);break;case"int8":p=new Int8Array(u);break;case"int4":case"uint4":case"uint8":p=new Uint8Array(u);break;default:throw new Error(`Unsupported data type: ${s.dataType} in creating WebNN Constant from external data.`)}return ur("verbose",()=>`[WebNN] registerMLConstant {dataType: ${s.dataType}, shape: ${s.shape}}} ${i?"(Note: it was int64 data type and registered to int32 as workaround)":""}`),n.constant(s,p)}registerGraphInput(e){this.temporaryGraphInputs.push(e)}registerGraphOutput(e){this.temporaryGraphOutputs.push(e)}isGraphInput(e,t){let r=this.sessionGraphInputs.get(e);return r?r.includes(t):!1}isGraphOutput(e,t){let r=this.sessionGraphOutputs.get(e);return r?r.includes(t):!1}isGraphInputOutputTypeSupported(e,t,r=!0){let n=Rl.get(Wi(t)),s=this.mlOpSupportLimitsBySessionId.get(e);return typeof n>"u"?!1:r?!!s?.input.dataTypes.includes(n):!!s?.output.dataTypes.includes(n)}flush(){}}}),EA=et(()=>{}),DA,vc,Bc,vv,Bv,IA,TA,xv,Ev,Z4=et(()=>{$a(),EA(),DA=new Map([[64,250],[128,200],[256,200],[512,200],[2048,230],[4096,200
vendor: 20,596 bytes, lines 2850-2935
2850],[8192,50],[16384,50],[32768,50],[65536,50],[131072,50],[262144,50],[524288,50],[1048576,50],[2097152,30],[4194304,20],[8388608,10],[12582912,10],[16777216,10],[26214400,15],[33554432,22],[44236800,2],[58982400,6],[67108864,6],[134217728,6],[167772160,6]]),vc=[],Bc=e=>Math.ceil(Number(e)/16)*16,vv=e=>{for(let t=0;t<vc.length;t++){let r=vc[t];if(e<=r)return r}return Math.ceil(e/16)*16},Bv=1,IA=()=>Bv++,TA=async(e,t,r,n)=>{let s=Bc(r),a=e.device.createBuffer({size:s,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ});try{let i=e.getCommandEncoder();e.endComputePass(),i.copyBufferToBuffer(t,0,a,0,s),e.flush(),await a.mapAsync(GPUMapMode.READ);let o=a.getMappedRange();if(n){let l=n();return l.set(new Uint8Array(o,0,r)),l}else return new Uint8Array(o.slice(0,r))}finally{a.destroy()}},xv=class{constructor(e){this.backend=e,this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map,this.buffersPending=[],this.capturedPendingBuffers=new Map;for(let[t]of DA)vc.push(t),this.freeBuffers.set(t,[]),this.freeUniformBuffers.set(t,[]);this.sessionCount=0}upload(e,t){let r=t.buffer,n=t.byteOffset,s=t.byteLength,a=Bc(s),i=this.storageCache.get(e);if(!i)throw new Error("gpu data for uploading does not exist");if(Number(i.originalSize)!==s)throw new Error(`inconsistent data size. gpu data size=${i.originalSize}, data size=${s}`);let o=this.backend.device.createBuffer({mappedAtCreation:!0,size:a,usage:GPUBufferUsage.MAP_WRITE|GPUBufferUsage.COPY_SRC}),l=o.getMappedRange();new Uint8Array(l).set(new Uint8Array(r,n,s)),o.unmap();let u=this.backend.device.createCommandEncoder();u.copyBufferToBuffer(o,0,i.gpuData.buffer,0,a),this.backend.device.queue.submit([u.finish()]),o.destroy(),ur("verbose",()=>`[WebGPU] GpuDataManager.upload(id=${e})`)}memcpy(e,t){let r=this.storageCache.get(e);if(!r)throw new Error("source gpu data for memcpy does not exist");let n=this.storageCache.get(t);if(!n)throw new Error("destination gpu data for memcpy does not exist");if(r.originalSize!==n.originalSize)throw new Error("inconsistent source and destination gpu data size");let s=Bc(r.originalSize),a=this.backend.getCommandEncoder();this.backend.endComputePass(),a.copyBufferToBuffer(r.gpuData.buffer,0,n.gpuData.buffer,0,s)}registerExternalBuffer(e,t,r){let n;if(r){if(n=r[0],e===r[1])return ur("verbose",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${t}) => id=${n}, buffer is the same, skip.`),n;if(this.backend.capturedCommandList.has(this.backend.currentSessionId))throw new Error(`Registering a different external buffer under graph capture mode is not supported yet. 2851 Please use the previous external buffer!`)}else n=IA();return this.storageCache.set(n,{gpuData:{id:n,type:0,buffer:e},originalSize:t}),ur("verbose",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${t}) => id=${n}, registered.`),n}unregisterExternalBuffer(e){e!==void 0&&(this.storageCache.delete(e),ur("verbose",()=>`[WebGPU] GpuDataManager.unregisterExternalBuffer() => id=${e}`))}create(e,t=GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST){let r=vv(e),n,s=(t&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE,a=(t&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM;if(s||a){let o=(s?this.freeBuffers:this.freeUniformBuffers).get(r);o?o.length>0?n=o.pop():n=this.backend.device.createBuffer({size:r,usage:t}):n=this.backend.device.createBuffer({size:r,usage:t})}else n=this.backend.device.createBuffer({size:r,usage:t});let i={id:IA(),type:0,buffer:n};return this.storageCache.set(i.id,{gpuData:i,originalSize:Number(e)}),ur("verbose",()=>`[WebGPU] GpuDataManager.create(size=${e}) => id=${i.id}`),i}get(e){return this.storageCache.get(e)?.gpuData}release(e){let t=typeof e=="bigint"?Number(e):e,r=this.storageCache.get(t);if(!r){if(this.storageCache.size===0)return 0;throw new Error("releasing data does not exist")}return ur("verbose",()=>`[WebGPU] GpuDataManager.release(id=${t}), gpuDataId=${r.gpuData.id}`),this.storageCache.delete(t),this.buffersPending.push(r.gpuData.buffer),r.originalSize}async download(e,t){let r=this.storageCache.get(Number(e));if(!r)throw new Error("data does not exist");await TA(this.backend,r.gpuData.buffer,r.originalSize,t)}refreshPendingBuffers(){if(this.buffersPending.length!==0)if(this.backend.sessionStatus==="default"){for(let e of this.buffersPending){let t=DA.get(e.size);if((e.usage&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE){let r=this.freeBuffers.get(e.size)||[];t===void 0||r.length>=t?e.destroy():r.push(e)}else if((e.usage&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM){let r=this.freeUniformBuffers.get(e.size)||[];t===void 0||r.length>=t?e.destroy():r.push(e)}else e.destroy()}this.buffersPending=[]}else{let e=this.capturedPendingBuffers.get(this.backend.currentSessionId);e||(e=[],this.capturedPendingBuffers.set(this.backend.currentSessionId,e));for(let t of this.buffersPending)e.push(t);this.buffersPending=[]}}dispose(){this.freeBuffers.forEach(e=>{e.forEach(t=>{t.destroy()})}),this.freeUniformBuffers.forEach(e=>{e.forEach(t=>{t.destroy()})}),this.storageCache.forEach(e=>{e.gpuData.buffer.destroy()}),this.capturedPendingBuffers.forEach(e=>{e.forEach(t=>{t.destroy()})}),this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map,this.capturedPendingBuffers=new Map}onCreateSession(){this.sessionCount+=1}onReleaseSession(e){let t=this.capturedPendingBuffers.get(e);t&&(t.forEach(r=>{r.destroy()}),this.capturedPendingBuffers.delete(e)),this.sessionCount-=1,this.sessionCount===0&&(ur("warning",()=>"[WebGPU] Clearing webgpu buffer cache"),this.storageCache.forEach(r=>{r.gpuData.buffer.destroy()}),this.storageCache=new Map)}},Ev=(...e)=>new xv(...e)}),Dv,Mr,on=et(()=>{Dv=class{constructor(e){Object.assign(this,e)}get cacheKey(){return this.key||(this.key=Object.getOwnPropertyNames(this).sort().map(e=>`${this[e]}`).join(";")),this.key}},Mr=e=>new Dv(e)}),Oo,xc,Bn,Rn,It,en,CA,Go,qa,xt,Yl,Ne,Pt,Iv,$A,Tv,Cv,tr=et(()=>{Gt(),qt(),Oo=64,xc=(e,t)=>{if(t===3)throw new Error("vec3 has same alignment as vec4, use vec4 instead");switch(Number(e)){case 10:return t>1?`vec${t}<f16>`:"f16";case 1:return t>1?`vec${t}<f32>`:"f32";case 6:return t>1?`vec${t}<i32>`:"i32";case 12:return t>1?`vec${t}<u32>`:"u32";case 7:if(t>1)throw new Error("currently not supported vecX of uint64 yet");return["vec2<u32>","i32"];case 13:if(t>1)throw new Error("currently not supported vecX of uint64 yet");return["vec2<u32>","u32"];case 9:if(t!==4)throw new Error("bool must be vec4");return["u32","vec4<bool>"];case 22:return"i32";case 21:return"u32";default:throw new Error(`Unknown data type: ${e}`)}},Bn=(e,t=1)=>{let r=xc(e,t);return typeof r=="string"?r:r[0]},Rn=(e,t=1)=>{let r=xc(e,t);return typeof r=="string"?r:r[1]},It=(...e)=>{let t=[];return e.forEach(r=>{r.length!==0&&t.push({type:12,data:r},{type:12,data:$e.computeStrides(r)})}),t},en=e=>e%4===0?4:e%2===0?2:1,CA=(e="f32",t,r="0")=>!t||t===1?`${e}(${r})`:`vec${t}<${e}>(${r})`,Go=(e,t,r)=>e==="f32"?r:t===1?`f32(${r})`:`vec${t}<f32>(${r})`,qa=(e,t)=>t===4?`(${e}.x + ${e}.y + ${e}.z + ${e}.w)`:t===2?`(${e}.x + ${e}.y)`:t===3?`(${e}.x + ${e}.y + ${e}.z)`:e,xt=(e,t,r,n)=>e.startsWith("uniforms.")&&r>4?typeof t=="string"?n==="f16"?`${e}[(${t}) / 8][(${t}) % 8 / 4][(${t}) % 8 % 4]`:`${e}[(${t}) / 4][(${t}) % 4]`:n==="f16"?`${e}[${Math.floor(t/8)}][${Math.floor(t%8/4)}][${t%8%4}]`:`${e}[${Math.floor(t/4)}][${t%4}]`:r>1?`${e}[${t}]`:e,Yl=(e,t,r,n,s)=>{let a=typeof r=="number",i=a?r:r.length,o=[...new Array(i).keys()],l=i<2?"u32":i<=4?`vec${i}<u32>`:`array<u32, ${i}>`,u=xc(t,s),p=typeof u=="string"?u:u[1],d=typeof u=="string"?u:u[0],c={indices:l,value:p,storage:d,tensor:t},g=q=>typeof q=="string"?q:`${q}u`,A={offsetToIndices:!1,indicesToOffset:!1,broadcastedIndicesToOffset:!1,set:!1,setByIndices:!1,get:!1,getByIndices:!1},m=a?"uniforms.":"",B=`${m}${e}_shape`,f=`${m}${e}_strides`,h="";for(let q=0;q<i-1;q++)h+=` 2852 let dim${q} = current / ${xt(f,q,i)}; 2853 let rest${q} = current % ${xt(f,q,i)}; 2854 indices[${q}] = dim${q}; 2855 current = rest${q}; 2856 `;h+=`indices[${i-1}] = current;`;let P=i<2?"":` 2857 fn o2i_${e}(offset: u32) -> ${c.indices} { 2858 var indices: ${c.indices}; 2859 var current = offset; 2860 ${h} 2861 return indices; 2862 }`,_=q=>(A.offsetToIndices=!0,i<2?q:`o2i_${e}(${q})`),w=[];if(i>=2)for(let q=i-1;q>=0;q--)w.push(`${xt(f,q,i)} * (indices[${q}])`);let b=i<2?"":` 2863 fn i2o_${e}(indices: ${c.indices}) -> u32 { 2864 return ${w.join("+")}; 2865 }`,v=q=>(A.indicesToOffset=!0,i<2?q:`i2o_${e}(${q})`),y=(...q)=>i===0?"0u":`${c.indices}(${q.map(g).join(",")})`,$=(q,V)=>i<2?`${q}`:`${xt(q,V,i)}`,k=(q,V,U)=>i<2?`${q}=${U};`:`${xt(q,V,i)}=${U};`,W={},j=(q,V)=>{A.broadcastedIndicesToOffset=!0;let U=`${V.name}broadcastedIndicesTo${e}Offset`;if(U in W)return`${U}(${q})`;let N=[];for(let oe=i-1;oe>=0;oe--){let fe=V.indicesGet("outputIndices",oe+V.rank-i);N.push(`${$(f,oe)} * (${fe} % ${$(B,oe)})`)}return W[U]=`fn ${U}(outputIndices: ${V.type.indices}) -> u32 { 2866 return ${N.length>0?N.join("+"):"0u"}; 2867 }`,`${U}(${q})`},F=(q,V)=>(()=>{if(c.storage===c.value)return`${e}[${q}]=${V};`;if(c.storage==="vec2<u32>"&&c.value==="i32")return`${e}[${q}]=vec2<u32>(u32(${V}), select(0u, 0xFFFFFFFFu, ${V} < 0));`;if(c.storage==="vec2<u32>"&&c.value==="u32")return`${e}[${q}]=vec2<u32>(u32(${V}), 0u);`;if(c.storage==="u32"&&c.value==="vec4<bool>")return`${e}[${q}]=dot(vec4<u32>(0x1, 0x100, 0x10000, 0x1000000), vec4<u32>(${V}));`;throw new Error(`not supported combination of storage type ${c.storage} and value type ${c.value} yet`)})(),R=q=>(()=>{if(c.storage===c.value)return`${e}[${q}]`;if(c.storage==="vec2<u32>"&&c.value==="i32")return`i32(${e}[${q}].x)`;if(c.storage==="vec2<u32>"&&c.value==="u32")return`u32(${e}[${q}].x)`;if(c.storage==="u32"&&c.value==="vec4<bool>")return`vec4<bool>(bool(${e}[${q}] & 0xFFu), bool(${e}[${q}] & 0xFF00u), bool(${e}[${q}] & 0xFF0000u), bool(${e}[${q}] & 0xFF000000u))`;throw new Error(`not supported combination of storage type ${c.storage} and value type ${c.value} yet`)})(),L=i<2?"":` 2868 fn get_${e}ByIndices(indices: ${c.indices}) -> ${p} { 2869 return ${R(`i2o_${e}(indices)`)}; 2870 }`,Q=i<2?"":(()=>{let q=o.map(U=>`d${U}: u32`).join(", "),V=o.map(U=>`d${U}`).join(", ");return` 2871 fn get_${e}(${q}) -> ${p} { 2872 return get_${e}ByIndices(${y(V)}); 2873 }`})(),ne=(...q)=>{if(q.length!==i)throw new Error(`indices length must be ${i}`);let V=q.map(g).join(",");return i===0?R("0u"):i===1?R(V[0]):(A.get=!0,A.getByIndices=!0,A.indicesToOffset=!0,`get_${e}(${V})`)},re=q=>i<2?R(q):(A.getByIndices=!0,A.indicesToOffset=!0,`get_${e}ByIndices(${q})`),ce=i<2?"":` 2874 fn set_${e}ByIndices(indices: ${c.indices}, value: ${p}) { 2875 ${F(`i2o_${e}(indices)`,"value")} 2876 }`,ge=i<2?"":(()=>{let q=o.map(U=>`d${U}: u32`).join(", "),V=o.map(U=>`d${U}`).join(", ");return` 2877 fn set_${e}(${q}, value: ${p}) { 2878 set_${e}ByIndices(${y(V)}, value); 2879 }`})();return{impl:()=>{let q=[],V=!1;return A.offsetToIndices&&(q.push(P),V=!0),A.indicesToOffset&&(q.push(b),V=!0),A.broadcastedIndicesToOffset&&(Object.values(W).forEach(U=>q.push(U)),V=!0),A.set&&(q.push(ge),V=!0),A.setByIndices&&(q.push(ce),V=!0),A.get&&(q.push(Q),V=!0),A.getByIndices&&(q.push(L),V=!0),!a&&V&&q.unshift(`const ${B} = ${c.indices}(${r.join(",")});`,`const ${f} = ${c.indices}(${$e.computeStrides(r).join(",")});`),q.join(` 2880`)},type:c,offsetToIndices:_,indicesToOffset:v,broadcastedIndicesToOffset:j,indices:y,indicesGet:$,indicesSet:k,set:(...q)=>{if(q.length!==i+1)throw new Error(`indices length must be ${i}`);let V=q[i];if(typeof V!="string")throw new Error("value must be string");let U=q.slice(0,i).map(g).join(",");return i===0?F("0u",V):i===1?F(U[0],V):(A.set=!0,A.setByIndices=!0,A.indicesToOffset=!0,`set_${e}(${U}, ${V})`)},setByOffset:F,setByIndices:(q,V)=>i<2?F(q,V):(A.setByIndices=!0,A.indicesToOffset=!0,`set_${e}ByIndices(${q}, ${V});`),get:ne,getByOffset:R,getByIndices:re,usage:n,name:e,strides:f,shape:B,rank:i}},Ne=(e,t,r,n=1)=>Yl(e,t,r,"input",n),Pt=(e,t,r,n=1)=>Yl(e,t,r,"output",n),Iv=(e,t,r)=>Yl(e,t,r,"atomicOutput",1),$A=(e,t,r,n=1)=>Yl(e,t,r,"internal",n),Tv=class{constructor(e,t){this.normalizedDispatchGroup=e,this.limits=t,this.internalVariables=[],this.variables=[],this.uniforms=[],this.variableIndex=0}guardAgainstOutOfBoundsWorkgroupSizes(e){return`if (global_idx >= ${typeof e=="number"?`${e}u`:e}) { return; }`}mainStart(e=Oo){let t=typeof e=="number"?e:e[0],r=typeof e=="number"?1:e[1],n=typeof e=="number"?1:e[2];if(t>this.limits.maxComputeWorkgroupSizeX||r>this.limits.maxComputeWorkgroupSizeY||n>this.limits.maxComputeWorkgroupSizeZ)throw new Error(`workgroup size [${t}, ${r}, ${n}] exceeds the maximum workgroup size [${this.limits.maxComputeWorkgroupSizeX}, ${this.limits.maxComputeWorkgroupSizeY}, ${this.limits.maxComputeWorkgroupSizeZ}].`);if(t*r*n>this.limits.maxComputeInvocationsPerWorkgroup)throw new Error(`workgroup size [${t}, ${r}, ${n}] exceeds the maximum workgroup invocations ${this.limits.maxComputeInvocationsPerWorkgroup}.`);let s=this.normalizedDispatchGroup[1]===1&&this.normalizedDispatchGroup[2]===1,a=s?`@builtin(global_invocation_id) global_id : vec3<u32>, 2881 @builtin(workgroup_id) workgroup_id : vec3<u32>, 2882 @builtin(local_invocation_index) local_idx : u32, 2883 @builtin(local_invocation_id) local_id : vec3<u32>`:`@builtin(global_invocation_id) global_id : vec3<u32>, 2884 @builtin(local_invocation_id) local_id : vec3<u32>, 2885 @builtin(local_invocation_index) local_idx : u32, 2886 @builtin(workgroup_id) workgroup_id : vec3<u32>, 2887 @builtin(num_workgroups) num_workgroups : vec3<u32>`,i=s?`let global_idx = global_id.x; 2888 let workgroup_index = workgroup_id.x;`:`let workgroup_index = workgroup_id.z * num_workgroups[0] * num_workgroups[1] + 2889 workgroup_id.y * num_workgroups[0] + workgroup_id.x; 2890 let global_idx = workgroup_index * ${t*r*n}u + local_idx;`;return`@compute @workgroup_size(${t}, ${r}, ${n}) 2891 fn main(${a}) { 2892 ${i} 2893 `}appendVariableUniforms(e){e.rank!==0&&(e.shape.startsWith("uniforms.")&&this.uniforms.push({name:e.shape.replace("uniforms.",""),type:"u32",length:e.rank}),e.strides.startsWith("uniforms.")&&this.uniforms.push({name:e.strides.replace("uniforms.",""),type:"u32",length:e.rank}))}declareVariable(e,t){if(e.usage==="internal")throw new Error("cannot use internal variable with declareVariable(). use registerInternalVariables() instead.");this.variables.push(e),this.appendVariableUniforms(e);let r=e.usage==="input"?"read":"read_write",n=e.usage==="atomicOutput"?"atomic<i32>":e.type.storage;return`@group(0) @binding(${t}) var<storage, ${r}> ${e.name}: array<${n}>;`}declareVariables(...e){return e.map(t=>this.declareVariable(t,this.variableIndex++)).join(` 2894`)}registerInternalVariable(e){if(e.usage!=="internal")throw new Error("cannot use input or output variable with registerInternalVariable(). use declareVariables() instead.");this.internalVariables.push(e),this.appendVariableUniforms(e)}registerInternalVariables(...e){return e.forEach(t=>this.registerInternalVariable(t)),this}registerUniform(e,t,r=1){return this.uniforms.push({name:e,type:t,length:r}),this}registerUniforms(e){return this.uniforms=this.uniforms.concat(e),this}uniformDeclaration(){if(this.uniforms.length===0)return"";let e=[];for(let{name:t,type:r,length:n}of this.uniforms)if(n&&n>4)r==="f16"?e.push(`@align(16) ${t}:array<mat2x4<${r}>, ${Math.ceil(n/8)}>`):e.push(`${t}:array<vec4<${r}>, ${Math.ceil(n/4)}>`);else{let s=n==null||n===1?r:`vec${n}<${r}>`;e.push(`${t}:${s}`)}return` 2895 struct Uniforms { ${e.join(", ")} }; 2896 @group(0) @binding(${this.variableIndex}) var<uniform> uniforms: Uniforms;`}get additionalImplementations(){return this.uniformDeclaration()+this.variables.map(e=>e.impl()).join(` 2897`)+this.internalVariables.map(e=>e.impl()).join(` 2898`)}get variablesInfo(){if(this.uniforms.length===0)return;let e=t=>[12,10,1,6][["u32","f16","f32","i32"].indexOf(t)];return this.uniforms.map(t=>[e(t.type),t.length??1])}},Cv=(e,t)=>new Tv(e,t)}),$v,SA,Sv,kv,Ov,Gv,is,zv,Fv,Xa=et(()=>{Gt(),qt(),on(),tr(),$v=(e,t)=>{if(!e||e.length!==1)throw new Error("Transpose requires 1 input.");if(t.length!==0&&t.length!==e[0].dims.length)throw new Error(`perm size ${t.length} does not match input rank ${e[0].dims.length}`)},SA=(e,t)=>t.length!==0?t:[...new Array(e).keys()].reverse(),Sv=(e,t)=>$e.sortBasedOnPerm(e,SA(e.length,t)),kv=(e,t,r,n)=>{let s=`fn perm(i: ${n.type.indices}) -> ${r.type.indices} { 2899 var a: ${r.type.indices};`;for(let a=0;a<t;++a)s+=`a[${e[a]}]=i[${a}];`;return s+="return a;}"},Ov=(e,t)=>{let r=[],n=[];for(let s=0;s<e.length;++s)e[s]!==1&&r.push(e[s]),e[t[s]]!==1&&n.push(t[s]);return{newShape:r,newPerm:n}},Gv=(e,t)=>{let r=0;for(let n=0;n<e.length;++n)if(t[e[n]]!==1){if(e[n]<r)return!1;r=e[n]}return!0},is=(e,t)=>{let r=e.dataType,n=e.dims.length,s=SA(n,t),a=Sv(e.dims,s),i=e.dims,o=a,l=n<2||Gv(s,e.dims),u;if(l)return u=A=>{let m=Ne("input",r,i,4),B=Pt("output",r,o,4);return` 2900 ${A.registerUniform("output_size","u32").declareVariables(m,B)} 2901 ${A.mainStart()} 2902 ${A.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 2903 output[global_idx] = input[global_idx]; 2904 }`},{name:"TransposeCopy",shaderCache:{inputDependencies:["type"]},getRunData:()=>{let A=$e.size(a);return{outputs:[{dims:a,dataType:e.dataType}],dispatchGroup:{x:Math.ceil(A/64/4)},programUniforms:[{type:12,data:Math.ceil(A/4)}]}},getShaderSource:u};let{newShape:p,newPerm:d}=Ov(e.dims,s),c=$e.areEqual(d,[2,3,1]),g=$e.areEqual(d,[3,1,2]);if(p.length===2||c||g){i=c?[p[0],p[1]*p[2]]:g?[p[0]*p[1],p[2]]:p,o=[i[1],i[0]];let A=16;return u=m=>{let B=Ne("a",r,i.length),f=Pt("output",r,o.length);return` 2905 ${m.registerUniform("output_size","u32").declareVariables(B,f)} 2906 var<workgroup> tile : array<array<${f.type.value}, ${A+1}>, ${A}>; 2907 ${m.mainStart([A,A,1])} 2908 let stride = (uniforms.output_shape[1] - 1) / ${A} + 1; 2909 let workgroup_id_x = workgroup_index % stride; 2910 let workgroup_id_y = workgroup_index / stride; 2911 let input_col = workgroup_id_y * ${A}u + local_id.x; 2912 let input_row = workgroup_id_x * ${A}u + local_id.y; 2913 if (input_row < uniforms.a_shape[0] && input_col < uniforms.a_shape[1]) { 2914 tile[local_id.y][local_id.x] = ${B.getByIndices(`${B.type.indices}(input_row, input_col)`)}; 2915 } 2916 workgroupBarrier(); 2917 2918 let output_col = workgroup_id_x * ${A}u + local_id.x; 2919 let output_row = workgroup_id_y * ${A}u + local_id.y; 2920 if (output_row < uniforms.output_shape[0] && output_col < uniforms.output_shape[1]) { 2921 ${f.setByIndices(`${f.type.indices}(output_row, output_col)`,"tile[local_id.x][local_id.y]")} 2922 } 2923 }`},{name:"TransposeShared",shaderCache:{inputDependencies:["type"]},getRunData:()=>{let m=$e.size(a);return{outputs:[{dims:a,dataType:e.dataType}],dispatchGroup:{x:Math.ceil(o[1]/A),y:Math.ceil(o[0]/A)},programUniforms:[{type:12,data:m},...It(i,o)]}},getShaderSource:u}}return u=A=>{let m=Ne("a",r,i.length),B=Pt("output",r,o.length);return` 2924 ${A.registerUniform("output_size","u32").declareVariables(m,B)} 2925 2926 ${kv(s,n,m,B)} 2927 2928 ${A.mainStart()} 2929 ${A.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 2930 2931 let indices = ${B.offsetToIndices("global_idx")}; 2932 let aIndices = perm(indices); 2933 2934 ${B.setByOffset("global_idx",m.getByIndices("aIndices"))} 2935 }`},{name:"Transpose",shaderCache:{hint:`${t}`,inputDependencies:["rank"]},getRunData:()=>{let A=$e.size(a);return{outputs:[{dims:a,dataType:e.dataType}],dispatchGroup:{x:Math.ceil(A/64)},programUniforms:[{type:12,data:A},...It(i,o)]}},getShaderSource:u}},zv=(e,t)=>{$v(e.inputs,t.perm),e.compute(is(e.inputs[0],t.perm))},Fv=e=>Mr({perm:e.perm})}),Lv,Rv,Yv,Nv,jv,Uv,Wv,Vv,Qv,Hv,Ws,Kv,qv,Xv,Zv,Jv,eB,tB,rB,nB,sB,J4=et(()=>{Gt(),qt(),tr(),OA(),Xa(),Lv={max:"select(bestValue, candidate, candidate > bestValue)",min:"select(bestValue, candidate, candidate < bestValue)",mean:"bestValue + candidate",sum:"bestValue + candidate",prod:"bestValue * candidate",sumSquare:"bestValue + candidate * candidate",logSumExp:"bestValue + exp(candidate)",l1:"bestValue + abs(candidate)",l2:"bestValue + candidate * candidate",logSum:"bestValue + candidate"},Rv={max:"select(bestValue, candidate, candidate > bestValue)",min:"select(bestValue, candidate, candidate < bestValue)",mean:"bestValue + candidate",sum:"bestValue + candidate",prod:"bestValue * candidate",sumSquare:"bestValue + candidate",logSumExp:"bestValue + candidate",l1:"bestValue + candidate",l2:"bestValue + candidate",logSum:"bestValue + candidate"},Yv={max:"_A[offset]",min:"_A[offset]",mean:"0",sum:"0",prod:"1",sumSquare:"
29350",logSumExp:"0",l1:"0",l2:"0",logSum:"0"},Nv={max:"bestValue",min:"bestValue",sum:"bestValue",prod:"bestValue",sumSquare:"bestValue",logSumExp:"log(bestValue)",l1:"bestValue",l2:"sqrt(bestValue)",logSum:"log(bestValue)"},jv=(e,t)=>{let r=[];for(let n=t-e;n<t;++n)r.push(n);return r},Uv=(e,t)=>{let r=[],n=e.length;for(let a=0;a<n;a++)t.indexOf(a)===-1&&r.push(e[a]);let s=t.map(a=>e[a]);return[r,s]},Wv=(e,t)=>{let r=e.length+t.length,n=[],s=0;for(let a=0;a<r;a++)t.indexOf(a)===-1?n.push(e[s++]):n.push(1);return n},Vv=(e,t)=>{for(let r=0;r<e.length;++r)if(e[e.length-r-1]!==t-1-r)return!1;return!0},Qv=(e,t)=>{let r=[];if(!Vv(e,t)){for(let n=0;n<t;++n)e.indexOf(n)===-1&&r.push(n);e.forEach(n=>r.push(n))}return r},Hv=(e,t,r,n,s,a,i)=>{let o=r[0].dims,l=$e.size(a),u=$e.size(i),p=Ne("_A",r[0].dataType,o),d=Pt("output",s,a),c=64;l===1&&(c=256);let g=` 2936 var<workgroup> aBestValues : array<f32, ${c}>; 2937 `,A=m=>` 2938 ${m.registerUniform("reduceSize","u32").declareVariables(p,d)} 2939 ${g} 2940 fn DIV_CEIL(a : u32, b : u32) -> u32 { 2941 return ((a - 1u) / b + 1u); 2942 } 2943 ${m.mainStart(c)} 2944 2945 let outputIndex = global_idx / ${c}; 2946 let offset = outputIndex * uniforms.reduceSize; 2947 2948 var bestValue = f32(${Yv[n]}); 2949 let Length = uniforms.reduceSize; 2950 for (var k = local_idx; k < Length; k = k + ${c}) { 2951 let candidate = f32(${p.getByOffset("offset + k")}); 2952 bestValue = ${Lv[n]}; 2953 } 2954 aBestValues[local_idx] = bestValue; 2955 workgroupBarrier(); 2956 2957 var reduceSize = min(Length, ${c}u); 2958 for (var currentSize = reduceSize / 2u; reduceSize > 1u; 2959 currentSize = reduceSize / 2u) { 2960 let interval = DIV_CEIL(reduceSize, 2u); 2961 if (local_idx < currentSize) { 2962 let candidate = aBestValues[local_idx + interval]; 2963 bestValue = ${Rv[n]}; 2964 aBestValues[local_idx] = bestValue; 2965 } 2966 reduceSize = interval; 2967 workgroupBarrier(); 2968 } 2969 2970 if (local_idx == 0u) { 2971 ${d.setByOffset("outputIndex",`${n==="mean"?`${d.type.storage}(bestValue / f32(uniforms.reduceSize))`:`${d.type.storage}(${Nv[n]})`}`)}; 2972 } 2973 }`;return{name:e,shaderCache:{hint:`${t};${c}`,inputDependencies:["type"]},getShaderSource:A,getRunData:()=>({outputs:[{dims:a,dataType:s}],dispatchGroup:{x:l},programUniforms:[{type:12,data:u}]})}},Ws=(e,t,r,n)=>
vendor: 11,470 bytes, lines 2973-3019
2973{let s=e.inputs.length===1?r:kA(e.inputs,r),a=s.axes;a.length===0&&!s.noopWithEmptyAxes&&(a=e.inputs[0].dims.map((g,A)=>A));let i=$e.normalizeAxes(a,e.inputs[0].dims.length),o=i,l=e.inputs[0],u=Qv(o,e.inputs[0].dims.length);u.length>0&&(l=e.compute(is(e.inputs[0],u),{inputs:[0],outputs:[-1]})[0],o=jv(o.length,l.dims.length));let[p,d]=Uv(l.dims,o),c=p;s.keepDims&&(c=Wv(p,i)),e.compute(Hv(t,s.cacheKey,[l],n,e.inputs[0].dataType,c,d),{inputs:[l]})},Kv=(e,t)=>{Ws(e,"ReduceMeanShared",t,"mean")},qv=(e,t)=>{Ws(e,"ReduceL1Shared",t,"l1")},Xv=(e,t)=>{Ws(e,"ReduceL2Shared",t,"l2")},Zv=(e,t)=>{Ws(e,"ReduceLogSumExpShared",t,"logSumExp")},Jv=(e,t)=>{Ws(e,"ReduceMaxShared",t,"max")},eB=(e,t)=>{Ws(e,"ReduceMinShared",t,"min")},tB=(e,t)=>{Ws(e,"ReduceProdShared",t,"prod")},rB=(e,t)=>{Ws(e,"ReduceSumShared",t,"sum")},nB=(e,t)=>{Ws(e,"ReduceSumSquareShared",t,"sumSquare")},sB=(e,t)=>{Ws(e,"ReduceLogSumShared",t,"logSum")}}),Vs,aB,Ec,kA,Qs,iB,oB,lB,uB,cB,dB,pB,gB,AB,hB,Hs,mB,fB,_B,wB,yB,bB,PB,MB,vB,BB,OA=et(()=>{Gt(),qt(),on(),tr(),J4(),Vs=e=>{if(!e||e.length===0||e.length>2)throw new Error("Reduce op requires 1 or 2 inputs.");if(e.length===2&&e[1].dims.length!==1)throw new Error("Invalid axes input dims.")},aB=e=>["","",`var value = ${e.getByIndices("input_indices")};`,""],Ec=(e,t,r,n,s,a,i=!1,o=!1)=>{let l=[],u=r[0].dims,p=u.length,d=$e.normalizeAxes(s,p),c=!o&&d.length===0;u.forEach((m,B)=>{c||d.indexOf(B)>=0?i&&l.push(1):l.push(m)});let g=l.length,A=$e.size(l);return{name:e,shaderCache:t,getShaderSource:m=>{let B=[],f=Ne("_A",r[0].dataType,p),h=Pt("output",a,g),P=n(f,h,d),_=P[2];for(let w=0,b=0;w<p;w++)c||d.indexOf(w)>=0?(i&&b++,_=`for(var j${w}: u32 = 0; j${w} < ${u[w]}; j${w}++) { 2974 ${P[2].includes("last_index")?`let last_index = j${w};`:""} 2975 ${f.indicesSet("input_indices",w,`j${w}`)} 2976 ${_} 2977 }`):(B.push(`${f.indicesSet("input_indices",w,h.indicesGet("output_indices",b))};`),b++);return` 2978 2979 ${m.registerUniform("output_size","u32").declareVariables(f,h)} 2980 2981 ${m.mainStart()} 2982 ${m.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 2983 var input_indices: ${f.type.indices}; 2984 let output_indices = ${h.offsetToIndices("global_idx")}; 2985 2986 ${B.join(` 2987`)} 2988 ${P[0]} // init ops for reduce max/min 2989 ${P[1]} 2990 ${_} 2991 ${P[3]} 2992 ${P.length===4?h.setByOffset("global_idx","value"):P.slice(4).join(` 2993`)} 2994 }`},getRunData:()=>({outputs:[{dims:l,dataType:a}],dispatchGroup:{x:Math.ceil(A/64)},programUniforms:[{type:12,data:A},...It(u,l)]})}},kA=(e,t)=>{let r=[];return e[1].dims[0]>0&&e[1].getBigInt64Array().forEach(n=>r.push(Number(n))),Mr({axes:r,keepDims:t.keepDims,noopWithEmptyAxes:t.noopWithEmptyAxes})},Qs=(e,t,r,n)=>{let s=e.inputs,a=s.length===1?r:kA(s,r);e.compute(Ec(t,{hint:a.cacheKey,inputDependencies:["rank"]},[s[0]],a.noopWithEmptyAxes&&a.axes.length===0?aB:n,a.axes,s[0].dataType,a.keepDims,a.noopWithEmptyAxes),{inputs:[0]})},iB=(e,t)=>{Vs(e.inputs),Qs(e,"ReduceLogSum",t,(r,n)=>[`var value = ${n.type.storage}(0);`,"",`value += ${r.getByIndices("input_indices")};`,"value = log(value);"])},oB=(e,t)=>{Vs(e.inputs),Qs(e,"ReduceL1",t,(r,n)=>[`var value = ${n.type.storage}(0);`,"",`value += abs(${r.getByIndices("input_indices")});`,""])},lB=(e,t)=>{Vs(e.inputs),Qs(e,"ReduceL2",t,(r,n)=>[`var t = ${n.type.value}(0); var value = ${n.type.value}(0);`,"",`t = ${r.getByIndices("input_indices")}; value += (t * t);`,"value = sqrt(value);"])},uB=(e,t)=>{Vs(e.inputs),Qs(e,"ReduceLogSumExp",t,(r,n)=>[`var value = ${n.type.storage}(0);`,"",`value += exp(${r.getByIndices("input_indices")});`,"value = log(value);"])},cB=(e,t)=>{Vs(e.inputs),Qs(e,"ReduceMax",t,(r,n,s)=>{let a=[];for(let i=0;i<r.rank;i++)(s.indexOf(i)>=0||s.length===0)&&a.push(r.indicesSet("input_indices",i,0));return[`${a.join(` 2995`)}`,`var value = ${r.getByIndices("input_indices")};`,`value = max(value, ${r.getByIndices("input_indices")});`,""]})},dB=(e,t)=>{Vs(e.inputs),Qs(e,"ReduceMean",t,(r,n,s)=>{let a=1;for(let i=0;i<r.rank;i++)(s.indexOf(i)>=0||s.length===0)&&(a*=e.inputs[0].dims[i]);return["var sum = f32(0);","",`sum += f32(${r.getByIndices("input_indices")});`,`let value = ${n.type.value}(sum / ${a});`]})},pB=(e,t)=>{Vs(e.inputs),Qs(e,"ReduceMin",t,(r,n,s)=>{let a=[];for(let i=0;i<r.rank;i++)(s.indexOf(i)>=0||s.length===0)&&a.push(`input_indices[${i}] = 0;`);return[`${a.join(` 2996`)}`,`var value = ${r.getByIndices("input_indices")};`,`value = min(value, ${r.getByIndices("input_indices")});`,""]})},gB=(e,t)=>{Vs(e.inputs),Qs(e,"ReduceProd",t,(r,n)=>[`var value = ${n.type.storage}(1);`,"",`value *= ${r.getByIndices("input_indices")};`,""])},AB=(e,t)=>{Vs(e.inputs),Qs(e,"ReduceSum",t,(r,n)=>[`var value = ${n.type.storage}(0);`,"",`value += ${r.getByIndices("input_indices")};`,""])},hB=(e,t)=>{Vs(e.inputs),Qs(e,"ReduceSumSquare",t,(r,n)=>[`var t = ${n.type.value}(0); var value = ${n.type.value}(0);`,"",`t = ${r.getByIndices("input_indices")}; value += t * t;`,""])},Hs=(e,t,r)=>{if(t.length===0)return r;let n=1,s=1;for(let a=0;a<t.length;a++)t.indexOf(a)===-1?n*=e[a]:s*=e[a];return s<32&&n>1024},mB=(e,t)=>{Hs(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?dB(e,t):Kv(e,t)},fB=(e,t)=>{Hs(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?oB(e,t):qv(e,t)},_B=(e,t)=>{Hs(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?lB(e,t):Xv(e,t)},wB=(e,t)=>{Hs(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?uB(e,t):Zv(e,t)},yB=(e,t)=>{Hs(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?cB(e,t):Jv(e,t)},bB=(e,t)=>{Hs(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?pB(e,t):eB(e,t)},PB=(e,t)=>{Hs(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?gB(e,t):tB(e,t)},MB=(e,t)=>{Hs(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?AB(e,t):rB(e,t)},vB=(e,t)=>{Hs(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?hB(e,t):nB(e,t)},BB=(e,t)=>{Hs(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?iB(e,t):sB(e,t)}}),GA,xB,EB,zA,e3=et(()=>{Gt(),on(),OA(),GA=e=>{if(!e||e.length===0||e.length>2)throw new Error("ArgMinMaxOp op requires 1 or 2 inputs.");if(e[0].dataType!==1)throw new Error("Invalid input type.")},xB=(e,t)=>{GA(e.inputs);let r=(n,s,a)=>{let i=[];for(let o=0;o<n.rank;o++)(a.indexOf(o)>=0||a.length===0)&&i.push(`input_indices[${o}] = 0;`);return[`${i.join(` 2997`)}`,`var value = ${n.getByIndices("input_indices")}; 2998var best_index : i32 = 0;`,`if (${n.getByIndices("input_indices")} ${t.selectLastIndex>0?"<=":"<"} value) { 2999 value = ${n.getByIndices("input_indices")}; 3000 best_index = i32(last_index); 3001 }`,"",s.setByOffset("global_idx","best_index")]};e.compute(Ec("ArgMin",{hint:t.cacheKey,inputDependencies:["rank"]},[e.inputs[0]],r,[t.axis],7,t.keepDims),{inputs:[0]})},EB=(e,t)=>{GA(e.inputs);let r=(n,s,a)=>{let i=[];for(let o=0;o<n.rank;o++)(a.indexOf(o)>=0||a.length===0)&&i.push(`input_indices[${o}] = 0;`);return[`${i.join(` 3002`)}`,`var value = ${n.getByIndices("input_indices")}; 3003var best_index : i32 = 0;`,`if (${n.getByIndices("input_indices")} ${t.selectLastIndex>0?">=":">"} value) { 3004 value = ${n.getByIndices("input_indices")}; 3005 best_index = i32(last_index); 3006 }`,"",s.setByOffset("global_idx","best_index")]};e.compute(Ec("argMax",{hint:t.cacheKey,inputDependencies:["rank"]},[e.inputs[0]],r,[t.axis],7,t.keepDims),{inputs:[0]})},zA=e=>Mr(e)}),DB,Dc,IB,TB,CB,Nl,$B,SB,FA=et(()=>{Gt(),qt(),EA(),tr(),DB=(e,t)=>{let r=e[0],n=e[1],s=e[2],a=e[3],i=e[4],o=e[5];if(i&&o)throw new Error("Attention cannot have both past and attention_bias");if(r.dims.length!==3)throw new Error('Input "input" must have 3 dimensions');let l=r.dims[0],u=r.dims[1],p=r.dims[2];if(s.dims.length!==1)throw new Error('Input "bias" is expected to have 1 dimensions');if(n.dims.length!==2)throw new Error('Input "weights" is expected to have 2 dimensions');if(n.dims[0]!==p)throw new Error("Input 1 dimension 0 should have same length as dimension 2 of input 0");if(s.dims[0]!==n.dims[1])throw new Error('Input "bias" dimension 0 should have same length as dimension 1 of input "weights"');let d=s.dims[0]/3,c=d,g=c;if(t.qkvHiddenSizes.length>0){if(t.qkvHiddenSizes.length!==3)throw new Error("qkv_hidden_sizes attribute should have 3 elements");for(let P of t.qkvHiddenSizes)if(P%t.numHeads!==0)throw new Error("qkv_hidden_sizes should be divisible by num_heads");d=t.qkvHiddenSizes[0],c=t.qkvHiddenSizes[1],g=t.qkvHiddenSizes[2]}let A=u;if(d!==c)throw new Error("qkv_hidden_sizes first element should be same as the second");if(s.dims[0]!==d+c+g)throw new Error('Input "bias" dimension 0 should have same length as sum of Q/K/V hidden sizes');let m=0;if(i){if(c!==g)throw new Error('Input "past" expect k_hidden_size == v_hidden_size');if(i.dims.length!==5)throw new Error('Input "past" must have 5 dimensions');if(i.dims[0]!==2)throw new Error('Input "past" first dimension must be 2');if(i.dims[1]!==l)throw new Error('Input "past" second dimension must be batch_size');if(i.dims[2]!==t.numHeads)throw new Error('Input "past" third dimension must be num_heads');if(i.dims[4]!==c/t.numHeads)throw new Error('Input "past" fifth dimension must be k_hidden_size / num_heads');t.pastPresentShareBuffer||(m=i.dims[3])}let B=A+m,f=-1,h=0;if(a)throw new Error("Mask not supported");if(i)throw new Error("past is not supported");if(o){if(o.dims.length!==4)throw new Error('Input "attention_bias" must have 4 dimensions');if(o.dims[0]!==l||o.dims[1]!==t.numHeads||o.dims[2]!==u||o.dims[3]!==B)throw new Error('Expect "attention_bias" shape (batch_size, num_heads, sequence_length, total_sequence_length)')}return{batchSize:l,sequenceLength:u,pastSequenceLength:m,kvSequenceLength:A,totalSequenceLength:B,maxSequenceLength:f,inputHiddenSize:p,hiddenSize:d,vHiddenSize:g,headSize:Math.floor(d/t.numHeads),vHeadSize:Math.floor(g/t.numHeads),numHeads:t.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:t.maskFilterValue,maskType:h,scale:t.scale,broadcastResPosBias:!1,passPastInKv:!1,qkvFormat:1}},Dc=(e,t,r)=>t&&e?` 3007 let total_sequence_length_input = u32(${t.getByOffset("0")}); 3008 let present_sequence_length = max(total_sequence_length_input, uniforms.past_sequence_length); 3009 let is_subsequent_prompt: bool = sequence_length > 1 && sequence_length != total_sequence_length_input; 3010 let is_first_prompt: bool = is_subsequent_prompt == false && sequence_length == total_sequence_length_input; 3011 total_sequence_length = u32(${e?.getByOffset("batchIdx")}) + 1; 3012 var past_sequence_length: u32 = 0; 3013 if (is_first_prompt == false) { 3014 past_sequence_length = total_sequence_length - sequence_length; 3015 } 3016 `:` 3017 ${r?"let past_sequence_length = uniforms.past_sequence_length":""}; 3018 let present_sequence_length = total_sequence_length; 3019 `,IB=(e,t,r,n,s,a,i,o)=>{let l=en(i?1:a),u=64,p=a/l;p<u&&(u=32);let d=Math.ceil(a/l/u),c=[{type:12,data:t},{type:12,data:r},{type:12,data:n},{type:12,data:s},{type:12,data:p},{type:12,data:d}],g=Bn(e.dataType,l),A=Rn(1,l),m=["type"];i&&m.push("type"),o&&m.push("type");let B=f=>{let h=Pt("x",e.dataType,e.dims,l),P=[h],_=i?Ne("seq_lens",i.dataType,i.dims):void 0;_&&P.push(_);let w=o?Ne("total_sequence_length_input",o.dataType,o.dims):void 0;w&&P.push(w);let b=Rn(e.dataType),v=[{name:"batch_size",type:"u32"},{name:"num_heads",type:"u32"},{name:"past_sequence_length",type:"u32"},{name:"sequence_length",type:"u32"},{name:"total_sequence_length",type:"u32"},{name:"elements_per_thread",type:"u32"}];return`
3020 var<workgroup> thread_max: array<f32, ${u}>; 3021 var<workgroup> thread_sum: array<f32, ${u}>; 3022 ${f.registerUniforms(v).declareVariables(...P)} 3023 ${f.mainStart([u,1,1])} 3024 let batchIdx = workgroup_id.z / uniforms.num_heads; 3025 let headIdx = workgroup_id.z % uniforms.num_heads; 3026 let sequence_length = uniforms.sequence_length; 3027 var total_sequence_length = uniforms.total_sequence_length; 3028 ${Dc(_,w,!1)} 3029 let local_offset = local_idx * uniforms.elements_per_thread; 3030 let offset = (global_idx / ${u}) * uniforms.total_sequence_length + local_offset; 3031 let seq_causal_length = ${i?"u32(past_sequence_length + workgroup_id.y + 1)":"total_sequence_length"}; 3032 var thread_max_vector = ${A}(-3.4028234663852886e+38f); 3033 for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < seq_causal_length; i++) { 3034 thread_max_vector = max(${A}(x[offset + i]), thread_max_vector); 3035 } 3036 thread_max[local_idx] = ${(()=>{switch(l){case 1:return"thread_max_vector";case 2:return"max(thread_max_vector.x, thread_max_vector.y)";case 4:return"max(max(thread_max_vector.x, thread_max_vector.y), max(thread_max_vector.z, thread_max_vector.w))";default:throw new Error(`Unsupported components: ${l}`)}})()}; 3037 workgroupBarrier(); 3038 3039 var max_value = f32(-3.4028234663852886e+38f); 3040 for (var i = 0u; i < ${u}; i++) { 3041 max_value = max(thread_max[i], max_value); 3042 } 3043 3044 var sum_vector = ${A}(0); 3045 for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < seq_causal_length; i++) { 3046 sum_vector += exp(${A}(x[offset + i]) - max_value); 3047 } 3048 thread_sum[local_idx] = ${(()=>{switch(l){case 1:return"sum_vector";case 2:return"sum_vector.x + sum_vector.y";case 4:return"sum_vector.x + sum_vector.y + sum_vector.z + sum_vector.w";default:throw new Error(`Unsupported components: ${l}`)}})()}; 3049 workgroupBarrier(); 3050 3051 var sum: f32 = 0; 3052 for (var i = 0u; i < ${u}; i++) { 3053 sum += thread_sum[i]; 3054 } 3055 3056 if (sum == 0) { 3057 for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < seq_causal_length; i++) { 3058 x[offset + i] = ${h.type.value}(${b}(1.0) / ${b}(seq_causal_length)); 3059 } 3060 } else { 3061 for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < seq_causal_length; i++) { 3062 var f32input = ${A}(x[offset + i]); 3063 x[offset + i] = ${h.type.value}(exp(f32input - max_value) / sum); 3064 } 3065 } 3066 ${i?` 3067 for (var total_seq_id: u32 = seq_causal_length; total_seq_id + local_offset < uniforms.total_sequence_length; total_seq_id++) { 3068 x[offset + total_seq_id] = ${h.type.value}(${b}(0)); 3069 }`:""}; 3070 }`};return{name:"AttentionProbsSoftmax",shaderCache:{hint:`${u};${g};${l}`,inputDependencies:m},getShaderSource:B,getRunData:()=>({outputs:[],dispatchGroup:{x:1,y:s,z:t*r},programUniforms:c})}},TB=(e,t,r,n,s,a,i,o,l)=>{let u=i+a.kvSequenceLength,p=[a.batchSize,a.numHeads,a.sequenceLength,u],d=e>1&&n,c=a.kvNumHeads?a.kvNumHeads:a.numHeads,g=d?[a.batchSize,c,u,a.headSize]:void 0,A=a.nReps?a.nReps:1,m=a.scale===0?1/Math.sqrt(a.headSize):a.scale,B=en(a.headSize),f=a.headSize/B,h=12,P={x:Math.ceil(u/h),y:Math.ceil(a.sequenceLength/h),z:a.batchSize*a.numHeads},_=[{type:12,data:a.sequenceLength},{type:12,data:f},{type:12,data:u},{type:12,data:a.numHeads},{type:12,data:a.headSize},{type:1,data:m},{type:12,data:i},{type:12,data:a.kvSequenceLength},{type:12,data:A}],w=d&&n&&$e.size(n.dims)>0,b=["type","type"];w&&b.push("type"),s&&b.push("type"),o&&b.push("type"),l&&b.push("type");let v=[{dims:p,dataType:t.dataType,gpuDataType:0}];d&&v.push({dims:g,dataType:t.dataType,gpuDataType:0});let y=$=>{let k=Ne("q",t.dataType,t.dims,B),W=Ne("key",r.dataType,r.dims,B),j=[k,W];if(w){let ce=Ne("past_key",n.dataType,n.dims,B);j.push(ce)}s&&j.push(Ne("attention_bias",s.dataType,s.dims));let F=o?Ne("seq_lens",o.dataType,o.dims):void 0;F&&j.push(F);let R=l?Ne("total_sequence_length_input",l.dataType,l.dims):void 0;R&&j.push(R);let L=Pt("output",t.dataType,p),Q=[L];d&&Q.push(Pt("present_key",t.dataType,g,B));let ne=Rn(1,B),re=[{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"num_heads",type:"u32"},{name:"head_size",type:"u32"},{name:"alpha",type:"f32"},{name:"past_sequence_length",type:"u32"},{name:"kv_sequence_length",type:"u32"},{name:"n_reps",type:"u32"}];return` 3071 const TILE_SIZE = ${h}u; 3072 3073 var<workgroup> tileQ: array<${k.type.storage}, ${h*h}>;
3074 var<workgroup> tileK: array<${k.type.storage}, ${h*h}>; 3075 ${$.registerUniforms(re).declareVariables(...j,...Q)} 3076 ${$.mainStart([h,h,1])} 3077 // x holds the N and y holds the M 3078 let headIdx = workgroup_id.z % uniforms.num_heads; 3079 let kvHeadIdx = ${A===1?"headIdx":"headIdx / uniforms.n_reps"}; 3080 let kv_num_heads = ${A===1?"uniforms.num_heads":"uniforms.num_heads / uniforms.n_reps"}; 3081 let batchIdx = workgroup_id.z / uniforms.num_heads; 3082 let m = workgroup_id.y * TILE_SIZE; 3083 let n = workgroup_id.x * TILE_SIZE; 3084 let sequence_length = uniforms.M; 3085 var total_sequence_length = uniforms.N; 3086 ${Dc(F,R,!0)} 3087 let absKvHeadIdx = batchIdx * kv_num_heads + kvHeadIdx; 3088 let qOffset = workgroup_id.z * uniforms.M * uniforms.K + m * uniforms.K; 3089 ${w&&d?"let pastKeyOffset = absKvHeadIdx * uniforms.past_sequence_length * uniforms.K;":""}; 3090 let kOffset = absKvHeadIdx * uniforms.kv_sequence_length * uniforms.K; 3091 ${d?"let presentKeyOffset = absKvHeadIdx * uniforms.N * uniforms.K;":""} 3092 var value = ${ne}(0); 3093 for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) { 3094 if (global_id.y < uniforms.M && w + local_id.x < uniforms.K) { 3095 tileQ[TILE_SIZE * local_id.y + local_id.x] = q[qOffset + local_id.y * uniforms.K + w + local_id.x]; 3096 } 3097 if (n + local_id.y < uniforms.N && w + local_id.x < uniforms.K) { 3098 var idx = TILE_SIZE * local_id.y + local_id.x; 3099 ${w&&d?` 3100 if (n + local_id.y < past_sequence_length) { 3101 tileK[idx] = past_key[pastKeyOffset + (n + local_id.y) * uniforms.K + w + local_id.x]; 3102 } else if (n + local_id.y - past_sequence_length < uniforms.kv_sequence_length) { 3103 tileK[idx] = key[kOffset + (n + local_id.y - past_sequence_length) * uniforms.K + w + local_id.x]; 3104 }`:` 3105 if (n + local_id.y < uniforms.kv_sequence_length) { 3106 tileK[idx] = key[kOffset + (n + local_id.y) * uniforms.K + w + local_id.x]; 3107 }`} 3108 ${d?`if (n + local_id.y < present_sequence_length) { 3109 present_key[presentKeyOffset + (n + local_id.y) * uniforms.K + w + local_id.x] = tileK[idx]; 3110 }`:""} 3111 } 3112 workgroupBarrier(); 3113 3114 for (var k: u32 = 0u; k < TILE_SIZE && w+k < uniforms.K; k++) { 3115 value += ${ne}(tileQ[TILE_SIZE * local_id.y + k] * tileK[TILE_SIZE * local_id.x + k]); 3116 } 3117 3118 workgroupBarrier(); 3119 } 3120 3121 if (global_id.y < uniforms.M && global_id.x < total_sequence_length) { 3122 let headOffset = workgroup_id.z * uniforms.M * uniforms.N; 3123 let outputIdx = headOffset + global_id.y * uniforms.N + global_id.x; 3124 var sum: f32 = ${(()=>{switch(B){case 1:return"value";case 2:return"value.x + value.y";case 4:return"value.x + value.y + value.z + value.w";default:throw new Error(`Unsupported components: ${B}`)}})()}; 3125 output[outputIdx] = ${L.type.value} (sum * uniforms.alpha) + ${s?"attention_bias[outputIdx]":"0.0"}; 3126 } 3127 }`};return{name:"AttentionProbs",shaderCache:{hint:`${B};${s!==void 0};${n!==void 0};${e}`,inputDependencies:b},getRunData:()=>({outputs:v,dispatchGroup:P,programUniforms:_}),getShaderSource:y}},CB=(e,t,r,n,s,a,i=void 0,o=void 0)=>{let l=a+s.kvSequenceLength,u=s.nReps?s.nReps:1,p=s.vHiddenSize*u,d=e>1&&n,c=s.kvNumHeads?s.kvNumHeads:s.numHeads,g=d?[s.batchSize,c,l,s.headSize]:void 0,A=[s.batchSize,s.sequenceLength,p],m=12,B={x:Math.ceil(s.vHeadSize/m),y:Math.ceil(s.sequenceLength/m),z:s.batchSize*s.numHeads},f=[{type:12,data:s.sequenceLength},{type:12,data:l},{type:12,data:s.vHeadSize},{type:12,data:s.numHeads},{type:12,data:s.headSize},{type:12,data:p},{type:12,data:a},{type:12,data:s.kvSequenceLength},{type:12,data:u}],h=d&&n&&$e.size(n.dims)>0,P=["type","type"];h&&P.push("type"),i&&P.push("type"),o&&P.push("type");let _=[{dims:A,dataType:t.dataType,gpuDataType:0}];d&&_.push({dims:g,dataType:t.dataType,gpuDataType:0});let w=b=>{let v=Ne("probs",t.dataType,t.dims),y=Ne("v",r.dataType,r.dims),$=[v,y];h&&$.push(Ne("past_value",n.dataType,n.dims));let k=i?Ne("seq_lens",i.dataType,i.dims):void 0;i&&$.push(k);let W=o?Ne("total_sequence_length_input",o.dataType,o.dims):void 0;o&&$.push(W);let j=[Pt("output",t.dataType,A)];d&&j.push(Pt("present_value",t.dataType,g));let F=[{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"num_heads",type:"u32"},{name:"head_size",type:"u32"},{name:"v_hidden_size",type:"u32"},{name:"past_sequence_length",type:"u32"},{name:"kv_sequence_length",type:"u32"},{name:"n_reps",type:"u32"}];return` 3128 const TILE_SIZE = ${m}u; 3129 var<workgroup> tileQ: array<${v.type.value}, ${m*m}>;
3130 var<workgroup> tileV: array<${v.type.value}, ${m*m}>; 3131 ${b.registerUniforms(F).declareVariables(...$,...j)} 3132 ${b.mainStart([m,m,1])} 3133 let headIdx = workgroup_id.z % uniforms.num_heads; 3134 let batchIdx = workgroup_id.z / uniforms.num_heads; 3135 let kvHeadIdx = ${u===1?"headIdx":"headIdx / uniforms.n_reps"}; 3136 let kv_num_heads = ${u===1?"uniforms.num_heads":"uniforms.num_heads / uniforms.n_reps"}; 3137 let m = global_id.y; 3138 let n = global_id.x; 3139 let sequence_length = uniforms.M; 3140 var total_sequence_length = uniforms.K; 3141 ${Dc(k,W,!0)} 3142 let offsetA = workgroup_id.z * uniforms.M * uniforms.K + m * uniforms.K; 3143 let absKvHeadIdx = batchIdx * kv_num_heads + kvHeadIdx; // kvHeadIdx is relative to the batch 3144 ${h&&d?"let pastValueOffset = absKvHeadIdx * uniforms.N * uniforms.past_sequence_length + n;":""}; 3145 let vOffset = absKvHeadIdx * uniforms.N * uniforms.kv_sequence_length + n; 3146 ${d?"let presentValueOffset = absKvHeadIdx * uniforms.N * uniforms.K + n;":""} 3147 var value = ${v.type.storage}(0); 3148 for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) { 3149 if (m < uniforms.M && w + local_id.x < uniforms.K) { 3150 tileQ[TILE_SIZE * local_id.y + local_id.x] = probs[offsetA + w + local_id.x]; 3151 } 3152 if (n < uniforms.N && w + local_id.y < uniforms.K) { 3153 var idx = TILE_SIZE * local_id.y + local_id.x; 3154 ${h&&d?` 3155 if (w + local_id.y < past_sequence_length) { 3156 tileV[idx] = past_value[pastValueOffset + (w + local_id.y) * uniforms.N]; 3157 } else if (w + local_id.y - past_sequence_length < uniforms.kv_sequence_length) { 3158 tileV[idx] = v[vOffset + (w + local_id.y - past_sequence_length) * uniforms.N]; 3159 } 3160 `:` 3161 if (w + local_id.y < uniforms.kv_sequence_length) { 3162 tileV[idx] = v[vOffset + (w + local_id.y) * uniforms.N]; 3163 }`} 3164 ${d?` 3165 if (w + local_id.y < present_sequence_length) { 3166 present_value[presentValueOffset + (w + local_id.y) * uniforms.N] = tileV[idx]; 3167 }`:""} 3168 } 3169 workgroupBarrier(); 3170 for (var k: u32 = 0u; k < TILE_SIZE && w+k < total_sequence_length; k++) { 3171 value += tileQ[TILE_SIZE * local_id.y + k] * tileV[TILE_SIZE * k + local_id.x]; 3172 } 3173 workgroupBarrier(); 3174 } 3175 3176 // we need to transpose output from BNSH_v to BSND_v 3177 if (m < uniforms.M && n < uniforms.N) { 3178 let outputIdx = batchIdx * uniforms.M * uniforms.v_hidden_size + m * uniforms.v_hidden_size 3179 + headIdx * uniforms.N + n; 3180 output[outputIdx] = value; 3181 } 3182 }`};return{name:"AttentionScore",shaderCache:{hint:`${n!==void 0};${e}`,inputDependencies:P},getRunData:()=>({outputs:_,dispatchGroup:B,programUniforms:f}),getShaderSource:w}},Nl=(e,t,r,n,s,a,i,o,l,u,p=void 0,d=void 0)=>{let c=Math.min(e.outputCount,1+(i?1:0)+(o?1:0)),g=c>1?u.pastSequenceLength:0,A=g+u.kvSequenceLength,m=l&&$e.size(l.dims)>0?l:void 0,B=[t,r];c>1&&i&&$e.size(i.dims)>0&&B.push(i),m&&B.push(m),p&&B.push(p),d&&B.push(d);let f=e.compute(TB(c,t,r,i,m,u,g,p,d),{inputs:B,outputs:c>1?[-1,1]:[-1]})[0];e.compute(IB(f,u.batchSize,u.numHeads,g,u.sequenceLength,A,p,d),{inputs:p&&d?[f,p,d]:[f],outputs:[]});let h=[f,n];c>1&&o&&$e.size(o.dims)>0&&h.push(o),p&&h.push(p),d&&h.push(d),e.compute(CB(c,f,n,o,u,g,p,d),{inputs:h,outputs:c>1?[0,2]:[0]})},$B=(e,t)=>{let r=[t.batchSize,t.numHeads,t.sequenceLength,t.headSize],n=t.sequenceLength,s=t.inputHiddenSize,a=t.headSize,i=12,o={x:Math.ceil(t.headSize/i),y:Math.ceil(t.sequenceLength/i),z:t.batchSize*t.numHeads},l=[e.inputs[0],e.inputs[1],e.inputs[2]],u=[{type:12,data:n},{type:12,data:s},{type:12,data:a},{type:12,data:t.numHeads},{type:12,data:t.headSize},{type:12,data:t.hiddenSize},{type:12,data:t.hiddenSize+t.hiddenSize+t.vHiddenSize}],p=d=>{let c=Pt("output_q",l[0].dataType,r),g=Pt("output_k",l[0].dataType,r),A=Pt("output_v",l[0].dataType,r),m=Ne("input",l[0].dataType,l[0].dims),B=Ne("weight",l[1].dataType,l[1].dims),f=Ne("bias",l[2].dataType,l[2].dims),h=m.type.storage,P=[{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"num_heads",type:"u32"},{name:"head_size",type:"u32"},{name:"hidden_size",type:"u32"},{name:"ldb",type:"u32"}];return` 3183 const TILE_SIZE = ${i}u; 3184 var<workgroup> tileInput: array<${h}, ${i*i}>;
3185 var<workgroup> tileWeightQ: array<${h}, ${i*i}>; 3186 var<workgroup> tileWeightK: array<${h}, ${i*i}>; 3187 var<workgroup> tileWeightV: array<${h}, ${i*i}>; 3188 ${d.registerUniforms(P).declareVariables(m,B,f,c,g,A)} 3189 ${d.mainStart([i,i,1])} 3190 let batchIndex = workgroup_id.z / uniforms.num_heads; 3191 let headNumber = workgroup_id.z % uniforms.num_heads; 3192 let m = global_id.y; 3193 let n = global_id.x; 3194 3195 let inputOffset = batchIndex * (uniforms.M * uniforms.K) + m * uniforms.K; 3196 let biasOffsetQ = headNumber * uniforms.head_size; 3197 let biasOffsetK = uniforms.hidden_size + biasOffsetQ; 3198 let biasOffsetV = uniforms.hidden_size + biasOffsetK; 3199 3200 var valueQ = ${h}(0); 3201 var valueK = ${h}(0); 3202 var valueV = ${h}(0); 3203 for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) { 3204 if (m < uniforms.M && w + local_id.x < uniforms.K) { 3205 tileInput[TILE_SIZE * local_id.y + local_id.x] = input[inputOffset + w + local_id.x]; 3206 } 3207 if (n < uniforms.N && w + local_id.y < uniforms.K) { 3208 let offset = n + (w + local_id.y) * uniforms.ldb; 3209 tileWeightQ[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetQ + offset]; 3210 tileWeightK[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetK + offset]; 3211 tileWeightV[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetV + offset]; 3212 } 3213 workgroupBarrier(); 3214 for (var k: u32 = 0u; k<TILE_SIZE && w+k < uniforms.K; k++) { 3215 let inputTileOffset = TILE_SIZE * local_id.y + k; 3216 let weightTileOffset = TILE_SIZE * k + local_id.x; 3217 valueQ += tileInput[inputTileOffset] * tileWeightQ[weightTileOffset]; 3218 valueK += tileInput[inputTileOffset] * tileWeightK[weightTileOffset]; 3219 valueV += tileInput[inputTileOffset] * tileWeightV[weightTileOffset]; 3220 } 3221 3222 workgroupBarrier(); 3223 } 3224 3225 let headOffset = (m * uniforms.N + n) % uniforms.head_size; 3226 valueQ += bias[headOffset + biasOffsetQ]; 3227 valueK += bias[headOffset + biasOffsetK]; 3228 valueV += bias[headOffset + biasOffsetV]; 3229 3230 let offset = workgroup_id.z * uniforms.M * uniforms.N; 3231 if (m < uniforms.M && n < uniforms.N) { 3232 let outputIdx = offset + m * uniforms.N + n; 3233 output_q[outputIdx] = valueQ; 3234 output_k[outputIdx] = valueK; 3235 output_v[outputIdx] = valueV; 3236 } 3237 }`};return e.compute({name:"AttentionPrepare",shaderCache:{inputDependencies:["type","type","type"]},getRunData:()=>({outputs:[{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0},{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0},{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0}],dispatchGroup:o,programUniforms:u}),getShaderSource:p},{inputs:l,outputs:[-1,-1,-1]})},SB=(e,t)=>{let r=DB(e.inputs,t),[n,s,a]=$B(e,r);return Nl(e,n,s,a,e.inputs[4],void 0,void 0,void 0,e.inputs[5],r)}}),kB,OB,GB,zB,t3=et(()=>{ys(),Gt(),qt(),on(),tr(),kB=(e,t)=>{if(!e||e.length!==5)throw new Error("BatchNormalization requires 5 inputs");let r=(n,s,a)=>{let i=s.length;if(i!==n.length)throw new Error(`${a}: num dimensions != ${i}`);s.forEach((o,l)=>{if(o!==n[l])throw new Error(`${a}: dim[${l}] do not match`)})};if(e[0].dims.length>1){let n=t.format==="NHWC"?t.spatial?e[0].dims.slice(-1):e[0].dims.slice(-1).concat(e[0].dims.slice(1,e[0].dims.length-1)):e[0].dims.slice(1,t.spatial?2:void 0);r(e[1].dims,n,"Invalid input scale"),r(e[2].dims,n,"Invalid input B"),r(e[3].dims,n,"Invalid input mean"),r(e[4].dims,n,"Invalid input var")}else r(e[1].dims,[1],"Invalid input scale"),r(e[2].dims,[1],"Invalid input B"),r(e[3].dims,[1],"Invalid input mean"),r(e[4].dims,[1],"Invalid input var")},OB=(e,t)=>{let{epsilon:r,spatial:n,format:s}=t,a=e[0].dims,i=n?en(a[a.length-1]):1,o=s==="NHWC"&&a.length>1?i:1,l=$e.size(a)/i,u=n,p=u?a.length:a,d=Ne("x",e[0].dataType,e[0].dims,i),c=Ne("scale",e[1].dataType,e[1].dims,o),g=Ne("bias",e[2].dataType,e[2].dims,o),A=Ne("inputMean",e[3].dataType,e[3].dims,o),m=Ne("inputVar",e[4].dataType,e[4].dims,o),B=Pt("y",e[0].dataType,p,i),f=()=>{let P="";if(n)P=`let cOffset = ${a.length===1?"0u":s==="NHWC"?`outputIndices[${a.length-1}] / ${i}`:"outputIndices[1]"};`;else if(s==="NCHW")P=` 3238 ${B.indicesSet("outputIndices","0","0")} 3239 let cOffset = ${B.indicesToOffset("outputIndices")};`;else{P=`var cIndices = ${c.type.indices}(0);
3240 cIndices[0] = outputIndices[${a.length-1}];`;for(let _=1;_<c.rank;_++)P+=`cIndices[${_}] = outputIndices[${_}];`;P+=`let cOffset = ${c.indicesToOffset("cIndices")};`}return P},h=P=>` 3241 const epsilon = ${r}; 3242 ${P.registerUniform("outputSize","u32").declareVariables(d,c,g,A,m,B)} 3243 ${P.mainStart()} 3244 ${P.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} 3245 var outputIndices = ${B.offsetToIndices(`global_idx * ${i}`)}; 3246 ${f()} 3247 let scale = ${c.getByOffset("cOffset")}; 3248 let bias = ${g.getByOffset("cOffset")}; 3249 let inputMean = ${A.getByOffset("cOffset")}; 3250 let inputVar = ${m.getByOffset("cOffset")}; 3251 let x = ${d.getByOffset("global_idx")}; 3252 let value = (x - inputMean) * inverseSqrt(inputVar + epsilon) * scale + bias; 3253 ${B.setByOffset("global_idx","value")} 3254 }`;return{name:"BatchNormalization",shaderCache:{hint:`${t.epsilon}_${t.format}_${n}_${i}`,inputDependencies:u?["rank","type","type","type","type"]:void 0},getShaderSource:h,getRunData:()=>({outputs:[{dims:e[0].dims,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(l/64)},programUniforms:u?[{type:12,data:l},...It(a)]:[{type:12,data:l}]})}},GB=e=>Mr(e),zB=(e,t)=>{let{inputs:r,outputCount:n}=e,s=GB({...t,outputCount:n});if(Sr.webgpu.validateInputContent&&kB(r,s),t.trainingMode)throw new Error("BatchNormalization trainingMode is not supported yet.");e.compute(OB(r,s))}}),FB,LB,RB,r3=et(()=>{qt(),tr(),FB=e=>{if(e[0].dims.length!==3)throw new Error("input should have 3 dimensions");if(![320,640,1280].includes(e[0].dims[2]))throw new Error("number of channels should be 320, 640 or 1280");if(e[1].dims.length!==1)throw new Error("bias is expected to have 1 dimensions");if(e[0].dims[2]!==e[1].dims[0])throw new Error("last dimension of input and bias are not the same")},LB=e=>{let t=e[0].dims,r=e[0].dims[2],n=$e.size(t)/4,s=e[0].dataType,a=Ne("input",s,t,4),i=Ne("bias",s,[r],4),o=Ne("residual",s,t,4),l=Pt("output",s,t,4);return{name:"BiasAdd",getRunData:()=>({outputs:[{dims:t,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(n/64)}}),getShaderSource:u=>` 3255 const channels = ${r}u / 4; 3256 ${u.declareVariables(a,i,o,l)} 3257 3258 ${u.mainStart()} 3259 ${u.guardAgainstOutOfBoundsWorkgroupSizes(n)} 3260 let value = ${a.getByOffset("global_idx")} 3261 + ${i.getByOffset("global_idx % channels")} + ${o.getByOffset("global_idx")}; 3262 ${l.setByOffset("global_idx","value")} 3263 }`}},RB=e=>{FB(e.inputs),e.compute(LB(e.inputs))}}),YB,wr,NB,jB,UB,WB,VB,QB,HB,KB,qB,XB,ZB,JB,e1,t1,jl,r1,Ic,n1,s1,a1,i1,o1,l1,u1,c1,d1,p1,g1,A1,h1,m1,f1,_1,LA,w1,RA,YA,y1,b1,P1,M1,v1,B1,NA=et(()=>{Gt(),qt(),on(),tr(),YB=(e,t,r,n,s,a,i)=>{let o=Math.ceil(t/4),l="";typeof s=="string"?l=`${s}(a)`:l=s("a");let u=Ne("inputData",r,[o],4),p=Pt("outputData",n,[o],4),d=[{name:"vec_size",type:"u32"}];return i&&d.push(...i),` 3264 ${e.registerUniforms(d).declareVariables(u,p)} 3265 3266 ${a??""} 3267 3268 ${e.mainStart()} 3269 ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")} 3270 3271 let a = ${u.getByOffset("global_idx")}; 3272 ${p.setByOffset("global_idx",l)} 3273 }`},wr=(e,t,r,n,s,a=e.dataType,i,o)=>{let l=[{type:12,data:Math.ceil($e.size(e.dims)/4)}];return i&&l.push(...i),{name:t,shaderCache:{hint:s,inputDependencies:["type"]},getShaderSource:u=>YB(u,$e.size(e.dims),e.dataType,a,r,n,o),getRunData:u=>({outputs:[{dims:e.dims,dataType:a}],dispatchGroup:{x:Math.ceil($e.size(u[0].dims)/64/4)},programUniforms:l})}},NB=e=>{e.compute(wr(e.inputs[0],"Abs","abs"))},jB=e=>{e.compute(wr(e.inputs[0],"Acos","acos"))},UB=e=>{e.compute(wr(e.inputs[0],"Acosh","acosh"))},WB=e=>{e.compute(wr(e.inputs[0],"Asin","asin"))},VB=e=>{e.compute(wr(e.inputs[0],"Asinh","asinh"))},QB=e=>{e.compute(wr(e.inputs[0],"Atan","atan"))},HB=e=>{e.compute(wr(e.inputs[0],"Atanh","atanh"))},KB=e=>Mr(e),qB=(e,t)=>{let r;switch(t.to){case 10:r="vec4<f16>";break;case 1:r="vec4<f32>";break;case 12:r="vec4<u32>";break;case 6:r="vec4<i32>";break;case 9:r="vec4<bool>";break;default:throw new RangeError(`not supported type (specified in attribute 'to' from 'Cast' operator): ${t.to}`)}
vendor: 16,684 bytes, lines 3273-3432
3273e.compute(wr(e.inputs[0],"Cast",r,void 0,t.cacheKey,t.to))},XB=e=>{let t,r,n=e.length>=2&&e[1].data!==0,s=e.length>=3&&e[2].data!==0;switch(e[0].dataType){case 1:t=n?e[1].getFloat32Array()[0]:-34028234663852886e22,r=s?e[2].getFloat32Array()[0]:34028234663852886e22;break;case 10:t=n?e[1].getUint16Array()[0]:64511,r=s?e[2].getUint16Array()[0]:31743;break;default:throw new Error("Unsupport data type")}return Mr({min:t,max:r})},ZB=(e,t)=>{let r=t||XB(e.inputs),n=Rn(e.inputs[0].dataType);e.compute(wr(e.inputs[0],"Clip",s=>`clamp(${s}, vec4<${n}>(uniforms.min), vec4<${n}>(uniforms.max))`,void 0,r.cacheKey,void 0,[{type:e.inputs[0].dataType,data:r.min},{type:e.inputs[0].dataType,data:r.max}],[{name:"min",type:n},{name:"max",type:n}]),{inputs:[0]})},JB=e=>{e.compute(wr(e.inputs[0],"Ceil","ceil"))},e1=e=>{e.compute(wr(e.inputs[0],"Cos","cos"))},t1=e=>{e.compute(wr(e.inputs[0],"Cosh","cosh"))},jl=e=>Mr(e),r1=(e,t)=>{let r=Rn(e.inputs[0].dataType);e.compute(wr(e.inputs[0],"Elu",n=>`elu_vf32(${n})`,` 3274 const elu_alpha_ = ${r}(${t.alpha}); 3275 3276 fn elu_f32(a: ${r}) -> ${r} { 3277 return select((exp(a) - 1.0) * elu_alpha_, a, a >= 0.0); 3278 } 3279 3280 fn elu_vf32(v: vec4<${r}>) -> vec4<${r}> { 3281 return vec4(elu_f32(v.x), elu_f32(v.y), elu_f32(v.z), elu_f32(v.w)); 3282 }`,t.cacheKey))},Ic=(e="f32")=>` 3283const r0: ${e} = 0.3275911; 3284const r1: ${e} = 0.254829592; 3285const r2: ${e} = -0.284496736; 3286const r3: ${e} = 1.421413741; 3287const r4: ${e} = -1.453152027; 3288const r5: ${e} = 1.061405429; 3289 3290fn erf_vf32(v: vec4<${e}>) -> vec4<${e}> { 3291 let absv = abs(v); 3292 let x = 1.0 / (1.0 + r0 * absv); 3293 return sign(v) * (1.0 - ((((r5 * x + r4) * x + r3) * x + r2) * x + r1) * x * exp(-absv * absv)); 3294}`,n1=e=>{let t=Rn(e.inputs[0].dataType);e.compute(wr(e.inputs[0],"Erf",r=>`erf_vf32(${r})`,Ic(t)))},s1=e=>{e.compute(wr(e.inputs[0],"Exp","exp"))},a1=e=>{e.compute(wr(e.inputs[0],"Floor","floor"))},i1=e=>{let t=Rn(e.inputs[0].dataType);e.compute(wr(e.inputs[0],"Gelu",r=>`0.5 * ${r} * (1.0 + erf_vf32(${r} * 0.7071067811865475))`,Ic(t)))},o1=(e,t)=>{let r=Rn(e.inputs[0].dataType);e.compute(wr(e.inputs[0],"LeakyRelu",n=>`select(leaky_relu_alpha_ * ${n}, ${n}, ${n} >= vec4<${r}>(0.0))`,`const leaky_relu_alpha_ = ${r}(${t.alpha});`,t.cacheKey))},l1=e=>{e.compute(wr(e.inputs[0],"Not",t=>`!${t}`))},u1=e=>{e.compute(wr(e.inputs[0],"Neg",t=>`-${t}`))},c1=e=>{e.compute(wr(e.inputs[0],"Reciprocal",t=>`1.0/${t}`))},d1=e=>{let t=Rn(e.inputs[0].dataType);e.compute(wr(e.inputs[0],"Relu",r=>`select(vec4<${t}>(0.0), ${r}, ${r} > vec4<${t}>(0.0))`))},p1=e=>{e.compute(wr(e.inputs[0],"Sigmoid",t=>`(1.0 / (1.0 + exp(-${t})))`))},g1=e=>Mr(e),A1=(e,t)=>{let r=Rn(e.inputs[0].dataType);e.compute(wr(e.inputs[0],"HardSigmoid",n=>`max(vec4<${r}>(0.0), min(vec4<${r}>(1.0), ${t.alpha} * ${n} + vec4<${r}>(${t.beta})))`,void 0,t.cacheKey))},h1=e=>{e.compute(wr(e.inputs[0],"Sin","sin"))},m1=e=>{e.compute(wr(e.inputs[0],"Sinh","sinh"))},f1=e=>{e.compute(wr(e.inputs[0],"Sqrt","sqrt"))},_1=e=>{e.compute(wr(e.inputs[0],"Tan","tan"))},LA=e=>`sign(${e}) * (1 - exp(-2 * abs(${e}))) / (1 + exp(-2 * abs(${e})))`,w1=e=>{e.compute(wr(e.inputs[0],"Tanh",LA))},RA=(e="f32")=>` 3295const fast_gelu_a: ${e} = 0.5; 3296const fast_gelu_b: ${e} = 0.7978845608028654; 3297const fast_gelu_c: ${e} = 0.035677408136300125; 3298 3299fn tanh_v(v: vec4<${e}>) -> vec4<${e}> { 3300 return ${LA("v")}; 3301} 3302`,YA=e=>`(fast_gelu_a + fast_gelu_a * tanh_v(${e} * (fast_gelu_c * ${e} * ${e} + fast_gelu_b))) * ${e}`,y1=e=>{let t=Rn(e.inputs[0].dataType);e.compute(wr(e.inputs[0],"FastGelu",YA,RA(t),void 0,e.inputs[0].dataType))},b1=(e,t)=>{let r=Rn(e.inputs[0].dataType);return e.compute(wr(e.inputs[0],"ThresholdedRelu",n=>`select(vec4<${r}>(0.0), ${n}, ${n} > thresholded_relu_alpha_)`,`const thresholded_relu_alpha_ = vec4<${r}>(${t.alpha});`,t.cacheKey)),0},P1=e=>{e.compute(wr(e.inputs[0],"Log","log"))},M1=(e,t)=>` 3303const alpha = vec4<${e}>(${t}); 3304const one = ${e}(1.0); 3305const zero = ${e}(0.0); 3306 3307fn quick_gelu_impl(x: vec4<${e}>) -> vec4<${e}> { 3308 let v = x *alpha; 3309 var x1 : vec4<${e}>; 3310 for (var i = 0; i < 4; i = i + 1) { 3311 if (v[i] >= zero) { 3312 x1[i] = one / (one + exp(-v[i])); 3313 } else { 3314 x1[i] = one - one / (one + exp(v[i])); 3315 } 3316 } 3317 return x * x1; 3318} 3319`,v1=e=>`quick_gelu_impl(${e})`,B1=(e,t)=>{let r=Rn(e.inputs[0].dataType);e.compute(wr(e.inputs[0],"QuickGelu",v1,M1(r,t.alpha),t.cacheKey,e.inputs[0].dataType))}}),x1,E1,D1,n3=et(()=>{qt(),tr(),NA(),x1=e=>{if(e[0].dims.length!==3)throw new Error("input should have 3 dimensions");if(![2560,5120,10240].includes(e[0].dims[2]))throw new Error("hidden state should be 2560, 5120 or 10240");if(e[1].dims.length!==1)throw new Error("bias is expected to have 1 dimensions");if(e[0].dims[2]!==e[1].dims[0])throw new Error("last dimension of input and bias are not the same")},E1=e=>{let t=e[0].dims.slice();t[2]=t[2]/2;let r=Ne("input",e[0].dataType,e[0].dims,4),n=Ne("bias",e[0].dataType,[e[0].dims[2]],4),s=Pt("output",e[0].dataType,t,4),a=$e.size(t)/4,i=Bn(e[0].dataType);return{name:"BiasSplitGelu",getRunData:()=>({outputs:[{dims:t,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(a/64)}}),getShaderSource:o=>` 3320 const M_SQRT2 = sqrt(2.0); 3321 const halfChannels = ${e[0].dims[2]/4/2}u; 3322 3323 ${o.declareVariables(r,n,s)} 3324 3325 ${Ic(i)} 3326 3327 ${o.mainStart()} 3328 ${o.guardAgainstOutOfBoundsWorkgroupSizes(a)} 3329 let biasIdx = global_idx % halfChannels; 3330 let batchIndex = global_idx / halfChannels; 3331 let inputOffset = biasIdx + batchIndex * halfChannels * 2; 3332 let valueLeft = input[inputOffset] + bias[biasIdx]; 3333 let valueRight = input[inputOffset + halfChannels] + bias[biasIdx + halfChannels]; 3334 let geluRight = valueRight * 0.5 * (erf_vf32(valueRight / M_SQRT2) + 1); 3335 3336 ${s.setByOffset("global_idx","valueLeft * geluRight")} 3337 }`}},D1=e=>{x1(e.inputs),e.compute(E1(e.inputs))}}),I1,T1,Ks,C1,$1,S1,k1,O1,G1,z1,F1,L1,R1,s3=et(()=>{Gt(),qt(),tr(),I1=(e,t,r,n,s,a,i,o,l,u,p,d)=>{let c,g;typeof o=="string"?c=g=(h,P)=>`${o}((${h}),(${P}))`:typeof o=="function"?c=g=o:(c=o.scalar,g=o.vector);let A=Pt("outputData",p,n.length,4),m=Ne("aData",l,t.length,4),B=Ne("bData",u,r.length,4),f;if(s)if(a){let h=$e.size(t)===1,P=$e.size(r)===1,_=t.length>0&&t[t.length-1]%4===0,w=r.length>0&&r[r.length-1]%4===0;h||P?f=A.setByOffset("global_idx",g(h?`${m.type.value}(${m.getByOffset("0")}.x)`:m.getByOffset("global_idx"),P?`${B.type.value}(${B.getByOffset("0")}.x)`:B.getByOffset("global_idx"))):f=` 3338 let outputIndices = ${A.offsetToIndices("global_idx * 4u")}; 3339 let offsetA = ${m.broadcastedIndicesToOffset("outputIndices",A)}; 3340 let offsetB = ${B.broadcastedIndicesToOffset("outputIndices",A)}; 3341 ${A.setByOffset("global_idx",g(i||_?m.getByOffset("offsetA / 4u"):`${m.type.value}(${m.getByOffset("offsetA / 4u")}[offsetA % 4u])`,i||w?B.getByOffset("offsetB / 4u"):`${B.type.value}(${B.getByOffset("offsetB / 4u")}[offsetB % 4u])`))} 3342 `}else f=A.setByOffset("global_idx",g(m.getByOffset("global_idx"),B.getByOffset("global_idx")));else{if(!a)throw new Error("no necessary to use scalar implementation for element-wise binary op implementation.");let h=(P,_,w="")=>{let b=`aData[indexA${_}][componentA${_}]`,v=`bData[indexB${_}][componentB${_}]`;return` 3343 let outputIndices${_} = ${A.offsetToIndices(`global_idx * 4u + ${_}u`)}; 3344 let offsetA${_} = ${m.broadcastedIndicesToOffset(`outputIndices${_}`,A)}; 3345 let offsetB${_} = ${B.broadcastedIndicesToOffset(`outputIndices${_}`,A)}; 3346 let indexA${_} = offsetA${_} / 4u; 3347 let indexB${_} = offsetB${_} / 4u; 3348 let componentA${_} = offsetA${_} % 4u; 3349 let componentB${_} = offsetB${_} % 4u; 3350 ${P}[${_}] = ${w}(${c(b,v)}); 3351 `};p===9?f=` 3352 var data = vec4<u32>(0); 3353 ${h("data",0,"u32")} 3354 ${h("data",1,"u32")} 3355 ${h("data",2,"u32")} 3356 ${h("data",3,"u32")} 3357 outputData[global_idx] = dot(vec4<u32>(0x1, 0x100, 0x10000, 0x1000000), vec4<u32>(data));`:f=` 3358 ${h("outputData[global_idx]",0)} 3359 ${h("outputData[global_idx]",1)} 3360 ${h("outputData[global_idx]",2)} 3361 ${h("outputData[global_idx]",3)} 3362 `}return` 3363 ${e.registerUniform("vec_size","u32").declareVariables(m,B,A)} 3364 3365 ${d??""} 3366 3367 ${e.mainStart()} 3368 ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")} 3369 ${f} 3370 }`},T1=(e,t,r,n,s,a,i=r.dataType)=>{let o=r.dims.map(Number),l=n.dims.map(Number),u=!$e.areEqual(o,l),p=o,d=$e.size(o),c=!1,g=!1,A=[u];if(u){let m=ko.calcShape(o,l,!1);if(!m)throw new Error("Can't perform binary op on the given tensors");p=m.slice(),d=$e.size(p);let B=$e.size(o)===1,f=$e.size(l)===1,h=o.length>0&&o[o.length-1]%4===0,P=l.length>0&&l[l.length-1]%4===0;A.push(B),A.push(f),A.push(h),A.push(P);let _=1;for(let w=1;w<p.length;w++){let b=o[o.length-w],v=l[l.length-w];if(b===v)_*=b;else break}_%4===0?(g=!0,c=!0):(B||f||h||P)&&(c=!0)}else c=!0;return A.push(c),{name:e,shaderCache:{hint:t+A.map(m=>m.toString()).join("_"),inputDependencies:["rank","rank"]},getShaderSource:m=>I1(m,o,l,p,c,u,g,s,r.dataType,n.dataType,i,a),getRunData:()=>({outputs:[{dims:p,dataType:i}],dispatchGroup:{x:Math.ceil(d/64/4)},programUniforms:[{type:12,data:Math.ceil($e.size(p)/4)},...It(o,l,p)]})}},Ks=(e,t,r,n,s,a)=>{e.compute(T1(t,s??"",e.inputs[0],e.inputs[1],r,n,a))},C1=e=>{Ks(e,"Add",(t,r)=>`${t}+${r}`)},$1=e=>{Ks(e,"Div",(t,r)=>`${t}/${r}`)},S1=e=>{Ks(e,"Equal",{scalar:(t,r)=>`u32(${t}==${r})`,vector:(t,r)=>`vec4<u32>(${t}==${r})`},void 0,void 0,9)},k1=e=>{Ks(e,"Mul",(t,r)=>`${t}*${r}`)},O1=e=>{let t=Ne("input",e.inputs[0].dataType,e.inputs[0].dims).type.value;Ks(e,"Pow",{scalar:(r,n)=>`pow_custom(${r},${n})`,vector:(r,n)=>`pow_vector_custom(${r},${n})`},` 3371 fn pow_custom(a : ${t}, b : ${t}) -> ${t} { 3372 if (b == ${t}(0.0)) { 3373 return ${t}(1.0); 3374 } else if (a < ${t}(0.0) && f32(b) != floor(f32(b))) { 3375 return ${t}(pow(f32(a), f32(b))); // NaN 3376 } 3377 return select(sign(a), ${t}(1.0), round(f32(abs(b) % ${t}(2.0))) != 1.0) * ${t}(${t==="i32"?"round":""}(pow(f32(abs(a)), f32(b)))); 3378 } 3379 fn pow_vector_custom(a : vec4<${t}>, b : vec4<${t}>) -> vec4<${t}> { 3380 // TODO: implement vectorized pow 3381 return vec4<${t}>(pow_custom(a.x, b.x), pow_custom(a.y, b.y), pow_custom(a.z, b.z), pow_custom(a.w, b.w)); 3382 } 3383 `)},G1=e=>{Ks(e,"Sub",(t,r)=>`${t}-${r}`)},z1=e=>{Ks(e,"Greater",{scalar:(t,r)=>`u32(${t}>${r})`,vector:(t,r)=>`vec4<u32>(${t}>${r})`},void 0,void 0,9)},F1=e=>{Ks(e,"Less",{scalar:(t,r)=>`u32(${t}<${r})`,vector:(t,r)=>`vec4<u32>(${t}<${r})`},void 0,void 0,9)},L1=e=>{Ks(e,"GreaterOrEqual",{scalar:(t,r)=>`u32(${t}>=${r})`,vector:(t,r)=>`vec4<u32>(${t}>=${r})`},void 0,void 0,9)},R1=e=>{Ks(e,"LessOrEqual",{scalar:(t,r)=>`u32(${t}<=${r})`,vector:(t,r)=>`vec4<u32>(${t}<=${r})`},void 0,void 0,9)}}),Y1,N1,j1,U1,W1,V1,a3=et(()=>{Gt(),qt(),on(),tr(),Y1=(e,t)=>{if(!e||e.length<1)throw new Error("too few inputs");let r=0,n=e[r],s=n.dataType,a=n.dims.length;e.forEach((i,o)=>{if(o!==r){if(i.dataType!==s)throw new Error("input tensors should be one type");if(i.dims.length!==a)throw new Error("input tensors should have the same shape");i.dims.forEach((l,u)=>{if(u!==t&&l!==n.dims[u])throw new Error("non concat dimensions must match")})}})},N1=(e,t)=>` 3384 fn calculateInputIndex(index: u32) -> u32 { 3385 let sizeInConcatAxis = array<u32, ${e}u>(${t}); 3386 for (var i: u32 = 0u; i < ${e}; i += 1u ) { 3387 if (index < sizeInConcatAxis[i]) { 3388 return i; 3389 } 3390 } 3391 return ${e}u; 3392 }`,j1=(e,t)=>{let r=e.length,n=[];for(let s=0;s<r;++s){let a=t.setByOffset("global_idx",e[s].getByIndices("indices"));r===1?n.push(a):s===0?n.push(`if (inputIndex == ${s}u) { ${a} }`):s===r-1?n.push(`else { ${a} }`):n.push(`else if (inputIndex == ${s}) { ${a} }`)}return n.join(` 3393`)},U1=(e,t,r,n)=>{let s=$e.size(r),a=new Array(e.length),i=new Array(e.length),o=0,l=[],u=[],p=[{type:12,data:s}];for(let m=0;m<e.length;++m)o+=e[m].dims[t],a[m]=o,u.push(e[m].dims.length),i[m]=Ne(`input${m}`,n,u[m]),l.push("rank"),p.push({type:12,data:a[m]});for(let m=0;m<e.length;++m)p.push(...It(e[m].dims));p.push(...It(r));let d=Pt("output",n,r.length),c=d.indicesGet("indices",t),g=Array.from(Array(a.length).keys()).map(m=>`uniforms.sizeInConcatAxis${m}`).join(","),A=m=>` 3394 3395 ${(()=>{m.registerUniform("outputSize","u32");for(let B=0;B<e.length;B++)m.registerUniform(`sizeInConcatAxis${B}`,"u32");return m.declareVariables(...i,d)})()} 3396 3397 ${N1(a.length,g)} 3398 3399 ${m.mainStart()} 3400 ${m.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} 3401 3402 var indices = ${d.offsetToIndices("global_idx")}; 3403 3404 let inputIndex = calculateInputIndex(${c}); 3405 if (inputIndex != 0u) { 3406 let sizeInConcatAxis = array<u32, ${a.length}u>(${g}); 3407 ${c} -= sizeInConcatAxis[inputIndex - 1u]; 3408 } 3409 3410 ${j1(i,d)} 3411 }`;return{name:"Concat",shaderCache:{hint:`${t}`,inputDependencies:l},getRunData:()=>({outputs:[{dims:r,dataType:n}],dispatchGroup:{x:Math.ceil(s/64)},programUniforms:p}),getShaderSource:A}},W1=(e,t)=>{let r=e.inputs,n=r[0].dims,s=$e.normalizeAxis(t.axis,n.length);Y1(r,s);let a=n.slice();a[s]=r.reduce((o,l)=>o+(l.dims.length>s?l.dims[s]:0),0);let i=r.filter(o=>$e.size(o.dims)>0);e.compute(U1(i,s,a,r[0].dataType),{inputs:i})},V1=e=>Mr({axis:e.axis})}),Qi,Hi,Ki,jA,qi=et(()=>{Gt(),qt(),Qi=(e,t,r="f32")=>{switch(e.activation){case"Relu":return`value = max(value, ${t}(0.0));`;case"Sigmoid":return`value = (${t}(1.0) / (${t}(1.0) + exp(-value)));`;case"Clip":return`value = clamp(value, ${t}(${r}(uniforms.clip_min)), ${t}(${r}(uniforms.clip_max)));`;case"HardSigmoid":return`value = max(${t}(0.0), min(${t}(1.0), ${r}(uniforms.alpha) * value + ${r}(uniforms.beta)));`;case"LeakyRelu":return`value = select(${r}(uniforms.alpha) * value, value, value >= ${t}(0.0));`;case"Tanh":return`let e2x = exp(-2.0 * abs(value)); 3412 value = sign(value) * (1.0 - e2x) / (1.0 + e2x); 3413 `;case"":return"";default:throw new Error(`Unsupported activation ${e.activation}`)}},Hi=(e,t)=>{e.activation==="Clip"?t.push({type:1,data:e.clipMax},{type:1,data:e.clipMin}):e.activation==="HardSigmoid"?t.push({type:1,data:e.alpha},{type:1,data:e.beta}):e.activation==="LeakyRelu"&&t.push({type:1,data:e.alpha})},Ki=(e,t)=>{e.activation==="Clip"?t.push({name:"clip_max",type:"f32"},{name:"clip_min",type:"f32"}):e.activation==="HardSigmoid"?t.push({name:"alpha",type:"f32"},{name:"beta",type:"f32"}):e.activation==="LeakyRelu"&&t.push({name:"alpha",type:"f32"})},jA=e=>{let t=e?.activation||"";if(t==="HardSigmoid"){let[r,n]=e?.activation_params||[.2,.5];return{activation:t,alpha:r,beta:n}}else if(t==="Clip"){let[r,n]=e?.activation_params||[hv,mv];return{activation:t,clipMax:n,clipMin:r}}else if(t==="LeakyRelu"){let[r]=e?.activation_params||[.01];return{activation:t,alpha:r}}return{activation:t}}}),Sn,Q1,UA=et(()=>{Sn=(e,t)=>{switch(e){case 1:return t;case 2:return`vec2<${t}>`;case 3:return`vec3<${t}>`;case 4:return`vec4<${t}>`;default:throw new Error(`${e}-component is not supported.`)}},Q1=e=>` 3414 ${e?"value = value + getBiasByOutputCoords(coords);":""} 3415 `}),H1,i3=et(()=>{H1=e=>` 3416fn getIndexFromCoords4D(coords : vec4<i32>, shape : vec4<i32>) -> i32 { 3417 return dot(coords, vec4<i32>( 3418 shape.y * shape.z * shape.w, shape.z * shape.w, shape.w, 1)); 3419} 3420fn getOutputIndexFromCoords(coords : vec4<i32>) -> i32 { 3421 return dot(coords, vec4<i32>( 3422 i32(${e}.x), i32(${e}.y), i32(${e}.z), 1)); 3423} 3424`}),Ul,WA,VA=et(()=>{Gt(),qt(),tr(),qi(),Ul=(e,t,r,n,s)=>{let a=n-r;return` 3425 ${Array.from({length:r}).map((i,o)=>` 3426 if (${xt(t.shape,o,t.rank)} != 1) { 3427 ${t.indicesSet(e,o,xt(s,o+a,n))} 3428 } else { 3429 ${t.indicesSet(e,o,0)} 3430 }`).join("")} 3431`},WA=(e,t,r,n,s=!1,a)=>{let i=e[0].dims,o=e[1].dims,l=i[i.length-2],u=o[o.length-1],p=i[i.length-1],d=en(u),c=en(p),g=en(l),A=$e.size(r)/d/g,m=e.length>2,B=n?n.slice(0,-2):r.slice(0,-2),f=[$e.size(B),l,u],h=[{type:12,data:A},{type:12,data:l},{type:12,data:u},{type:12,data:p}];Hi(t,h),h.push(...It(B,i,o)),m&&h.push(...It(e[2].dims)),h.push(...It(f));let P=_=>{let w=$A("batch_dims",e[0].dataType,B.length),b=Ne("a",e[0].dataType,i.length,c),v=Ne("b",e[1].dataType,o.length,d),y=Pt("output",e[0].dataType,f.length,d),$=Bn(y.type.tensor),k=Qi(t,y.type.value,$),W=[b,v],j="";if(m){let L=s?d:1;W.push(Ne("bias",e[2].dataType,e[2].dims.length,L)),j=`${s?`value += bias[col / ${L}];`:`value += ${y.type.value}(bias[row + i]);`}`}let F=[{name:"output_size",type:"u32"},{name:"M",type:"u32"},{name:"N",type:"u32"},{name:"K",type:"u32"}];Ki(t,F);let R=()=>{let L=`var a_data: ${b.type.value};`;for(let Q=0;Q<c;Q++)L+=` 3432 let b_data${Q} = b[(b_offset + (k + ${Q}
3432) * uniforms.N + col) / ${d}];`;for(let Q=0;Q<g;Q++){L+=`a_data = a[(a_offset + (row + ${Q}) * uniforms.K + k) / ${c}];`;for(let ne=0;ne<c;ne++)L+=` 3433 values[${Q}] = fma(${v.type.value}(a_data${c===1?"":`[${ne}]`}), b_data${ne}, values[${Q}]); 3434`}return L};return` 3435 ${_.registerUniforms(F).registerInternalVariables(w).declareVariables(...W,y)} 3436 ${_.mainStart()} 3437 ${_.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 3438 let col = (global_idx % (uniforms.N / ${d})) * ${d}; 3439 var index1 = global_idx / (uniforms.N / ${d}); 3440 let stride1 = uniforms.M / ${g}; 3441 let row = (index1 % stride1) * ${g}; 3442 let batch = index1 / stride1; 3443 3444 ${r.length===2?"":`let batch_indices = ${w.offsetToIndices("batch")};`} 3445 3446 var a_indices: ${b.type.indices}; 3447 ${Ul("a_indices",b,b.rank-2,w.rank,"batch_indices")} 3448 ${b.indicesSet("a_indices",b.rank-2,0)} 3449 ${b.indicesSet("a_indices",b.rank-1,0)} 3450 let a_offset = ${b.indicesToOffset("a_indices")}; 3451 3452 var b_indices: ${v.type.indices}; 3453 ${Ul("b_indices",v,v.rank-2,w.rank,"batch_indices")} 3454 ${v.indicesSet("b_indices",v.rank-2,0)} 3455 ${v.indicesSet("b_indices",v.rank-1,0)} 3456 let b_offset = ${v.indicesToOffset("b_indices")}; 3457 var values: array<${y.type.value}, ${g}>; 3458 for (var k: u32 = 0u; k < uniforms.K; k = k + ${c}) { 3459 ${R()} 3460 } 3461 for (var i = 0u; i < ${g}u; i++) { 3462 var value = values[i]; 3463 ${j} 3464 ${k} 3465 let cur_indices = ${y.type.indices}(batch, row + i, col); 3466 let offset = ${y.indicesToOffset("cur_indices")}; 3467 ${y.setByOffset(`offset / ${d}`,"value")}; 3468 } 3469 } 3470 `};return{name:"MatMulNaive",shaderCache:{hint:`${t.activation};${d};${c};${g};${s}`,inputDependencies:m?["rank","rank","rank"]:["rank","rank"]},getRunData:()=>({outputs:[{dims:a?a(r):r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(A/64)},programUniforms:h}),getShaderSource:P}}}),K1,q1,QA,HA,X1,KA,Z1,Tc,qA=et(()=>{Gt(),qt(),tr(),qi(),VA(),UA(),K1=(e,t)=>e?` 3471 mm_Asub[inputRow][inputCol] = mm_readA(batch, 3472 kStart + inputRow, 3473 globalRowStart / innerElementSize + inputCol${t?", batchIndices":""}); 3474 `:` 3475 mm_Asub[inputRow][inputCol] = mm_readA(batch, 3476 globalRow + innerRow, 3477 kStart / innerElementSize + inputCol${t?", batchIndices":""}); 3478 `,q1=(e,t)=>e?` 3479 let ACached0 = mm_Asub[k * innerElementSize][localRow]; 3480 let ACached1 = mm_Asub[k * innerElementSize + 1][localRow]; 3481 let ACached2 = mm_Asub[k * innerElementSize + 2][localRow]; 3482 ${t===3?"":"let ACached3 = mm_Asub[k * innerElementSize + 3][localRow];"} 3483 for (var i = 0; i < rowPerThread; i = i + 1) { 3484 acc[i] = BCached0 * ACached0[i] + acc[i]; 3485 acc[i] = BCached1 * ACached1[i] + acc[i]; 3486 acc[i] = BCached2 * ACached2[i] + acc[i]; 3487 ${t===3?"":"acc[i] = BCached3 * ACached3[i] + acc[i];"} 3488 }`:` 3489 for (var i = 0; i < rowPerThread; i = i + 1) { 3490 let ACached = mm_Asub[tileRow + i][k]; 3491 acc[i] = BCached0 * ACached.x + acc[i]; 3492 acc[i] = BCached1 * ACached.y + acc[i]; 3493 acc[i] = BCached2 * ACached.z + acc[i]; 3494 ${t===3?"":"acc[i] = BCached3 * ACached.w + acc[i];"} 3495 }`,QA=(e,t,r="f32",n,s=!1,a=32,i=!1,o=32)=>{let l=t[1]*e[1],u=t[0]*e[0],p=s?l:a,d=s?a:l,c=p/t[0],g=a/t[1];if(!((s&&c===4&&e[1]===4||!s&&(c===3||c===4))&&p%t[0]===0&&a%t[1]===0&&e[0]===4))throw new Error(`If transposeA ${s} is true, innerElementSize ${c} and workPerThread[1] ${e[1]} must be 4. 3496 Otherwise, innerElementSize ${c} must be 3 or 4. 3497 tileAWidth ${p} must be divisible by workgroupSize[0]${t[0]}. tileInner ${a} must be divisible by workgroupSize[1] ${t[1]}. colPerThread ${e[0]} must be 4.`);return` 3498var<workgroup> mm_Asub: array<array<vec${c}<${r}>, ${p/c}>, ${d}>; 3499var<workgroup> mm_Bsub: array<array<vec4<${r}>, ${u/e[0]}>, ${a}>; 3500 3501const rowPerThread = ${e[1]}; 3502const colPerThread = ${e[0]}; 3503const innerElementSize = ${c}; 3504const tileInner = ${a}; 3505 3506@compute @workgroup_size(${t[0]}, ${t[1]}, ${t[2]}) 3507fn main(@builtin(local_invocation_id) localId : vec3<u32>, 3508 @builtin(global_invocation_id) globalId : vec3<u32>, 3509 @builtin(workgroup_id) workgroupId : vec3<u32>) { 3510 let localRow = i32(localId.y); 3511 let tileRow = localRow * rowPerThread; 3512 let tileCol = i32(localId.x); 3513 3514 let globalRow =i32(globalId.y) * rowPerThread; 3515 let globalCol = i32(globalId.x); 3516 let batch = ${i?"0":"i32(globalId.z)"}; 3517 ${n?`let batchIndices = ${n.offsetToIndices("u32(batch)")};`:""} 3518 let globalRowStart = i32(workgroupId.y) * ${l}; 3519 3520 let num_tiles = ${i?`${Math.ceil(o/a)}`:"(uniforms.dim_inner - 1) / tileInner + 1"}; 3521 var kStart = ${i?`i32(globalId.z) * ${o}`:"0"}; 3522 3523 var acc: array<vec4<${r}>, rowPerThread>; 3524 3525 // Loop over shared dimension. 3526 let tileRowB = localRow * ${g}; 3527 for (var t = 0; t < num_tiles; t = t + 1) { 3528 // Load one tile of A into local memory. 3529 for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) { 3530 let inputRow = tileRow + innerRow; 3531 let inputCol = tileCol; 3532 ${K1(s,n)} 3533 } 3534 3535 // Load one tile of B into local memory. 3536 for (var innerRow = 0; innerRow < ${g}; innerRow = innerRow + 1) { 3537 let inputRow = tileRowB + innerRow; 3538 let inputCol = tileCol; 3539 mm_Bsub[inputRow][inputCol] = mm_readB(batch, kStart + inputRow, globalCol${n?", batchIndices":""}); 3540 } 3541 kStart = kStart + tileInner; 3542 workgroupBarrier(); 3543 3544 // Compute acc values for a single thread. 3545 for (var k = 0; k < tileInner / innerElementSize; k = k + 1) { 3546 let BCached0 = mm_Bsub[k * innerElementSize][tileCol]; 3547 let BCached1 = mm_Bsub[k * innerElementSize + 1][tileCol]; 3548 let BCached2 = mm_Bsub[k * innerElementSize + 2][tileCol]; 3549 ${c===3?"":"let BCached3 = mm_Bsub[k * innerElementSize + 3][tileCol];"} 3550 3551 ${q1(s,c)} 3552 } 3553 3554 workgroupBarrier(); 3555 } 3556 3557 for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) { 3558 mm_write(batch, globalRow + innerRow, globalCol, acc[innerRow]); 3559 } 3560}`},HA=(e,t)=>e?` 3561 mm_Asub[inputRow][inputCol] = mm_readA(batch, 3562 kStart + inputRow, 3563 globalRowStart + inputCol${t?", batchIndices":""}); 3564 `:` 3565 mm_Asub[inputRow][inputCol] = mm_readA(batch, 3566 globalRowStart + inputRow, 3567 kStart + inputCol${t?", batchIndices":""}); 3568 `,X1=e=>e?"let ACached = mm_Asub[k][tileRow + innerRow];":"let ACached = mm_Asub[tileRow + innerRow][k];",KA=(e,t,r="f32",n,s=!1,a=32,i=!1,o=32,l=!1)=>{let u=e[1]*t[1],p=e[0]*t[0],d=s?u:a,c=s?a:u;if(!(c%t[1]===0&&d%t[0]===0&&a%t[1]===0))throw new Error(`tileAHight ${c} must be divisible by workgroupSize[1]${t[1]}, tileAWidth ${d} must be divisible by workgroupSize[0]${t[0]}, tileInner ${a} must be divisible by workgroupSize[1]${t[1]}`);let g=c/t[1],A=d/t[0],m=a/t[1],B=l?` 3569 let localRow = i32(localId.y); 3570 let localCol = i32(localId.x); 3571 let globalRowStart = i32(workgroupId.y) * ${u}; 3572 let globalColStart = i32(workgroupId.x) * ${p}; 3573 3574 // Loop over shared dimension. 3575 for (var t = 0; t < num_tiles; t = t + 1) { 3576 // Load one tile of A into local memory. 3577 for (var inputRow = localRow; inputRow < ${c}; inputRow = inputRow + ${t[1]}) { 3578 for (var inputCol = localCol; inputCol < ${d}; inputCol = inputCol + ${t[0]}) { 3579 ${HA(s,n)} 3580 } 3581 } 3582 // Load one tile of B into local memory. 3583 for (var inputRow = localRow; inputRow < ${a}; inputRow = inputRow + ${t[1]}) { 3584 for (var inputCol = localCol; inputCol < ${p}; inputCol = inputCol + ${t[0]}) { 3585 mm_Bsub[inputRow][inputCol] = mm_readB(batch, 3586 kStart + inputRow, 3587 globalColStart + inputCol${n?", batchIndices":""}); 3588 } 3589 } 3590 kStart = kStart + tileInner; 3591 workgroupBarrier(); 3592 3593 // Compute acc values for a single thread. 3594 var BCached : array<${r}, colPerThread>; 3595 for (var k = 0; k < tileInner; k = k + 1) { 3596 for (var inner = 0; inner < colPerThread; inner = inner + 1) { 3597 BCached[inner] = mm_Bsub[k][localCol + inner * ${t[0]}]; 3598 } 3599 for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) { 3600 let ACached = ${s?`mm_Asub[k][localRow + innerRow * ${t[1]}];`:`mm_Asub[localRow + innerRow * ${t[1]}][k];`} 3601 for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) { 3602 acc[innerRow][innerCol] = acc[innerRow][innerCol] + 3603 ACached * BCached[innerCol]; 3604 } 3605 } 3606 } 3607 workgroupBarrier(); 3608 } 3609 for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) { 3610 let gRow = globalRowStart + localRow + innerRow * ${t[1]}; 3611 for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) { 3612 let gCol = globalColStart + localCol + innerCol * ${t[0]}; 3613 mm_write(batch, gRow, gCol, acc[innerRow][innerCol]); 3614 } 3615 } 3616 `:` 3617let tileRow = i32(localId.y) * rowPerThread; 3618let tileCol = i32(localId.x) * colPerThread; 3619 3620let globalRow = i32(globalId.y) * rowPerThread; 3621let globalCol = i32(globalId.x) * colPerThread; 3622let globalRowStart = i32(workgroupId.y) * ${u}; 3623 3624let tileRowA = i32(localId.y) * ${g}; 3625let tileColA = i32(localId.x) * ${A}; 3626let tileRowB = i32(localId.y) * ${m}; 3627// Loop over shared dimension. 3628for (var t = 0; t < num_tiles; t = t + 1) { 3629 // Load one tile of A into local memory. 3630 for (var innerRow = 0; innerRow < ${g}; innerRow = innerRow + 1) { 3631 for (var innerCol = 0; innerCol < ${A}; innerCol = innerCol + 1) { 3632 let inputRow = tileRowA + innerRow; 3633 let inputCol = tileColA + innerCol; 3634 ${HA(s,n)} 3635 } 3636 } 3637 3638 // Load one tile of B into local memory. 3639 for (var innerRow = 0; innerRow < ${m}; innerRow = innerRow + 1) { 3640 for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) { 3641 let inputRow = tileRowB + innerRow; 3642 let inputCol = tileCol + innerCol; 3643 mm_Bsub[inputRow][inputCol] = mm_readB(batch, 3644 kStart + inputRow, 3645 globalCol + innerCol${n?", batchIndices":""}); 3646 } 3647 } 3648 kStart = kStart + tileInner; 3649 workgroupBarrier(); 3650 3651 // Compute acc values for a single thread. 3652 var BCached : array<${r}, colPerThread>; 3653 for (var k = 0; k < tileInner; k = k + 1) { 3654 for (var inner = 0; inner < colPerThread; inner = inner + 1) { 3655 BCached[inner] = mm_Bsub[k][tileCol + inner]; 3656 } 3657 3658 for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) { 3659 ${X1(s)} 3660 for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) { 3661 acc[innerRow][innerCol] = acc[innerRow][innerCol] + ACached * BCached[innerCol]; 3662 } 3663 } 3664 } 3665 3666 workgroupBarrier(); 3667} 3668 3669for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) { 3670 for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) { 3671 mm_write(batch, globalRow + innerRow, globalCol + innerCol, 3672 acc[innerRow][innerCol]); 3673 } 3674} 3675`;return`
3676 var<workgroup> mm_Asub : array<array<${r}, ${d}>, ${c}>; 3677 var<workgroup> mm_Bsub : array<array<${r}, ${p}>, ${a}>; 3678 const rowPerThread = ${e[1]}; 3679 const colPerThread = ${e[0]}; 3680 const tileInner = ${a}; 3681 3682@compute @workgroup_size(${t[0]}, ${t[1]}, ${t[2]}) 3683fn main(@builtin(local_invocation_id) localId : vec3<u32>, 3684 @builtin(global_invocation_id) globalId : vec3<u32>, 3685 @builtin(workgroup_id) workgroupId : vec3<u32>) { 3686 let batch = ${i?"0":"i32(globalId.z)"}; 3687 ${n?`let batchIndices = ${n.offsetToIndices("u32(batch)")};`:""} 3688 let num_tiles = ${i?`${Math.ceil(o/a)}`:"(uniforms.dim_inner - 1) / tileInner + 1"}; 3689 var kStart = ${i?`i32(globalId.z) * ${o}`:"0"}; 3690 3691 var acc : array<array<${r}, colPerThread>, rowPerThread>; 3692 ${B} 3693 } 3694`},Z1=(e,t,r,n,s=!1)=>{let[a,i,o,l]=n,u=Bn(n[0].type.tensor);return` 3695 fn mm_readA(batch: i32, row: i32, colIn: i32, batchIndices: ${a.type.indices}) -> ${Sn(e,u)} { 3696 var value = ${Sn(e,u)}(0.0); 3697 let col = colIn * ${e}; 3698 if(row < uniforms.dim_a_outer && col < uniforms.dim_inner) 3699 { 3700 var aIndices: ${i.type.indices}; 3701 ${Ul("aIndices",i,i.rank-2,a.rank,"batchIndices")} 3702 ${i.indicesSet("aIndices",i.rank-2,"u32(row)")} 3703 ${i.indicesSet("aIndices",i.rank-1,"u32(colIn)")} 3704 value = ${i.getByIndices("aIndices")}; 3705 } 3706 return value; 3707 } 3708 3709 fn mm_readB(batch: i32, row: i32, colIn: i32, batchIndices: ${a.type.indices}) -> ${Sn(e,u)} { 3710 var value = ${Sn(e,u)}(0.0); 3711 let col = colIn * ${e}; 3712 if(row < uniforms.dim_inner && col < uniforms.dim_b_outer) 3713 { 3714 var bIndices: ${o.type.indices}; 3715 ${Ul("bIndices",o,o.rank-2,a.rank,"batchIndices")} 3716 ${o.indicesSet("bIndices",o.rank-2,"u32(row)")} 3717 ${o.indicesSet("bIndices",o.rank-1,"u32(colIn)")} 3718 value = ${o.getByIndices("bIndices")}; 3719 } 3720 return value; 3721 } 3722 3723 fn mm_write(batch: i32, row: i32, colIn: i32, valueIn: ${Sn(e,u)}) { 3724 let col = colIn * ${e}; 3725 if (row < uniforms.dim_a_outer && col < uniforms.dim_b_outer) { 3726 var value = valueIn; 3727 let coords = vec3<i32>(batch, row, colIn); 3728 ${t?`value = value + ${s?"bias[colIn]":`${Sn(e,u)}(bias[row])`};`:""} 3729 ${r} 3730 ${l.setByIndices("vec3<u32>(coords)","value")} 3731 } 3732 } 3733 `},Tc=(e,t,r,n,s=!1,a)=>{let i=e[0].dims,o=e[1].dims,l=i.slice(0,-2),u=o.slice(0,-2),p=n?n.slice(0,-2):r.slice(0,-2),d=$e.size(p),c=i[i.length-2],g=i[i.length-1],A=o[o.length-1],m=g%4===0&&A%4===0,B=c<=8?[4,1,1]:[4,4,1],f=[8,8,1],h=[Math.ceil(A/f[0]/B[0]),Math.ceil(c/f[1]/B[1]),Math.ceil(d/f[2]/B[2])],P=m?4:1,_=[...l,c,g/P],w=_.length,b=[...u,g,A/P],v=b.length,y=[d,c,A/P],$=[{type:6,data:c},{type:6,data:A},{type:6,data:g}];Hi(t,$),$.push(...It(p,_,b));let k=["rank","rank"],W=e.length>2;W&&($.push(...It(e[2].dims)),k.push("rank")),$.push(...It(y));let j=F=>{let R=p.length,L=$A("batchDims",e[0].dataType,R,1),Q=Bn(e[0].dataType),ne=Ne("a",e[0].dataType,w,P),re=Ne("b",e[1].dataType,v,P),ce=Pt("result",e[0].dataType,y.length,P),ge=[ne,re];if(W){let oe=s?P:1;ge.push(Ne("bias",e[2].dataType,e[2].dims.length,oe))}let q=[{name:"dim_a_outer",type:"i32"},{name:"dim_b_outer",type:"i32"},{name:"dim_inner",type:"i32"}];Ki(t,q);let V=Bn(ce.type.tensor),U=Qi(t,ce.type.value,V),N=Z1(P,W,U,[L,ne,re,ce],s);return` 3734 ${F.registerUniforms(q).registerInternalVariables(L).declareVariables(...ge,ce)} 3735 ${N} 3736 ${m?QA(B,f,Q,L):KA(B,f,Q,L)} 3737 `};return{name:"MatMul",shaderCache:{hint:`${B};${t.activation};${m};${s}`,inputDependencies:k},getRunData:()=>({outputs:[{dims:a?a(r):r,dataType:e[0].dataType}],dispatchGroup:{x:h[0],y:h[1],z:h[2]},programUniforms:$}),getShaderSource:j}}}),J1,ex,o3=et(()=>{Gt(),$a(),tr(),qi(),UA(),i3(),qA(),J1=(e,t,r,n,s=!1,a,i=4,o=4,l=4,u="f32")=>{let p=$=>{switch($){case 1:return"resData = x[xIndex];";case 3:return`resData = vec3<${u}>(x[xIndex], x[xIndex + 1], x[xIndex + 2]);`;case 4:return"resData = x[xIndex / 4];";default:throw new Error(`innerElementSize ${$} is not supported.`)}},d=$=>{switch($){case 1:return"return w[row * i32(uniforms.w_shape[3]) + colIn];";case 4:return"return w[row * i32(uniforms.w_shape[3]) / 4 + colIn];";default:throw new Error(`innerElementSize ${$} is not supported.`)}},c=e?`
3738 let coord = vec4<i32>(batch, xRow, xCol, xCh); 3739 `:` 3740 let coord = vec4<i32>(batch, xCh, xRow, xCol); 3741 `,g=e?` 3742 let coords = vec4<i32>( 3743 batch, 3744 row / outWidth, 3745 row % outWidth, 3746 col); 3747 `:` 3748 let coords = vec4<i32>( 3749 batch, 3750 row, 3751 col / outWidth, 3752 col % outWidth); 3753 `,A=e?"i32(uniforms.x_shape[1])":"i32(uniforms.x_shape[2])",m=e?"i32(uniforms.x_shape[2])":"i32(uniforms.x_shape[3])",B=e?"row":"col",f=e?"col":"row",h=` 3754 let inChannels = i32(uniforms.w_shape[2]); 3755 let outWidth = ${e?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"}; 3756 let outRow = ${B} / outWidth; 3757 let outCol = ${B} % outWidth; 3758 3759 let WRow = ${f} / (i32(uniforms.w_shape[1]) * inChannels); 3760 let WCol = ${f} / inChannels % i32(uniforms.w_shape[1]); 3761 let xRow = outRow * uniforms.stride[0] + uniforms.dilation[0] * WRow - uniforms.pad[0]; 3762 let xCol = outCol * uniforms.stride[1] + uniforms.dilation[1] * WCol - uniforms.pad[1]; 3763 let xCh = ${f} % inChannels; 3764 var resData = ${Sn(i,u)}(0.0); 3765 // The bounds checking is always needed since we use it to pad zero for 3766 // the 'same' padding type. 3767 if (xRow >= 0 && xRow < ${A} && xCol >= 0 && xCol < ${m}) { 3768 ${c} 3769 let xIndex = getIndexFromCoords4D(coord, vec4<i32>(uniforms.x_shape)); 3770 ${p(i)} 3771 } 3772 return resData;`,P=e?t&&n?` 3773 let col = colIn * ${i}; 3774 ${h}`:` 3775 let col = colIn * ${i}; 3776 if (row < uniforms.dim_a_outer && col < uniforms.dim_inner) { 3777 ${h} 3778 } 3779 return ${Sn(i,u)}(0.0);`:n&&r?`
3780 let col = colIn * ${i}; 3781 ${h}`:` 3782 let col = colIn * ${i}; 3783 if (row < uniforms.dim_inner && col < uniforms.dim_b_outer) { 3784 ${h} 3785 } 3786 return ${Sn(i,u)}(0.0);`,_=e?n&&r?d(o):` 3787 let col = colIn * ${o}; 3788 if (row < uniforms.dim_inner && col < uniforms.dim_b_outer) { 3789 ${d(o)} 3790 } 3791 return ${Sn(o,u)}(0.0);`:` 3792 let col = colIn * ${o}; 3793 if (row < uniforms.dim_inner && col < uniforms.dim_a_outer) { 3794 ${d(o)} 3795 } 3796 return ${Sn(o,u)}(0.0);`,w=Sn(l,u),b=Sn(e?i:o,u),v=Sn(e?o:i,u),y=Qi(a,w,u);return` 3797 fn mm_readA(batch: i32, row : i32, colIn : i32) -> ${b} { 3798 ${e?P:_} 3799 } 3800 3801 fn mm_readB(batch: i32, row : i32, colIn : i32) -> ${v} { 3802 ${e?_:P} 3803 } 3804 3805 fn mm_write(batch: i32, row : i32, colIn : i32, valueIn : ${w}) { 3806 let col = colIn * ${l}; 3807 if (row < uniforms.dim_a_outer && col < uniforms.dim_b_outer) 3808 { 3809 var value = valueIn; 3810 let outWidth = ${e?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"}; 3811 ${g} 3812 ${Q1(s)} 3813 ${y} 3814 setOutputAtCoords(coords[0], coords[1], coords[2], coords[3], value); 3815 } 3816 }`},ex=(e,t,r,n,s,a,i,o,l)=>{let u=t.format==="NHWC",p=u?e[0].dims[3]:e[0].dims[1],d=r[0],c=u?r[2]:r[3],g=u?r[1]:r[2],A=u?r[3]:r[1],m=u&&(p%4===0||p%3===0)&&A%4===0,B=u?A:c*g,f=u?c*g:A,h=[8,8,1],P=n<=8?[4,1,1]:[4,4,1],_=[Math.ceil(B/h[0]/P[0]),Math.ceil(f/h[1]/P[1]),Math.ceil(d/h[2]/P[2])];ur("verbose",()=>`[conv2d_mm_webgpu] dispatch = ${_}`);let w=m?u&&p%4!==0?3:4:1,b=h[1]*P[1],v=h[0]*P[0],y=Math.max(h[0]*w,h[1]),$=n%b===0,k=s%v===0,W=a%y===0,j=m?[w,4,4]:[1,1,1],F=[{type:6,data:n},{type:6,data:s},{type:6,data:a},{type:6,data:[t.pads[0],t.pads[1]]},{type:6,data:t.strides},{type:6,data:t.dilations}];Hi(t,F),F.push(...It(e[0].dims,e[1].dims));let R=["rank","rank"];i&&(F.push(...It(e[2].dims)),R.push("rank")),F.push(...It(r));let L=Q=>{let ne=[{name:"dim_a_outer",type:"i32"},{name:"dim_b_outer",type:"i32"},{name:"dim_inner",type:"i32"},{name:"pad",type:"i32",length:2},{name:"stride",type:"i32",length:2},{name:"dilation",type:"i32",length:2}];Ki(t,ne);let re=m?4:1,ce=Bn(e[0].dataType),ge=` 3817 fn setOutputAtIndex(flatIndex : i32, value : ${m?`vec4<${ce}>`:ce}) { 3818 result[flatIndex] = ${m?`vec4<${ce}>`:ce}(value); 3819 } 3820 fn setOutputAtCoords(d0 : i32, d1 : i32, d2 : i32, d3 : i32, value : ${m?`vec4<${ce}>`:ce}) { 3821 let flatIndex = getOutputIndexFromCoords(vec4<i32>(d0, d1, d2, d3)); 3822 setOutputAtIndex(flatIndex ${m?"/ 4":""}, value); 3823 }`,q=Ne("x",e[0].dataType,e[0].dims.length,w===3?1:w),V=Ne("w",e[1].dataType,e[1].dims.length,re),U=[q,V],N=Pt("result",e[0].dataType,r.length,re);if(i){let oe=Ne("bias",e[2].dataType,e[2].dims.length,re);U.push(oe),ge+=` 3824 fn getBiasByOutputCoords(coords : vec4<i32>) -> ${m?`vec4<${ce}>`:ce} { 3825 return bias[coords.${u?"w":"y"}${m?"/ 4":""}]; 3826 }`}return` 3827 ${H1("uniforms.result_strides")} 3828 //struct Uniforms { xShape : vec4<i32>, wShape : vec4<i32>, outShape : vec4<i32>, 3829 // outShapeStrides: vec3<i32>, filterDims : vec2<i32>, pad : vec2<i32>, stride : vec2<i32>, 3830 // dilation : vec2<i32>, dimAOuter : i32, dimBOuter : i32, dimInner : i32 }; 3831 ${Q.registerUniforms(ne).declareVariables(...U,N)} 3832 ${ge} 3833 ${J1(u,$,k,W,i,t,j[0],j[1],j[2],ce)} 3834 ${m?QA(P,h,ce,void 0,!u,y):KA(P,h,ce,void 0,!u,y,!1,void 0,o)}`};return{name:"Conv2DMatMul",shaderCache:{hint:`${t.cacheKey};${w};${m};${$};${k};${W};${b};${v};${y}`,inputDependencies:R},getRunData:()=>({outputs:[{dims:l?l(r):r,dataType:e[0].dataType}],dispatchGroup:{x:_[0],y:_[1],z:_[2]},programUniforms:F}),getShaderSource:L}}}),tx,XA,Wl,rx,ZA,nx,sx,ax,l3=et(()=>{Gt(),$a(),qt(),tr(),qi(),UA(),tx=e=>{let t=1;for(let r=0;r<e.length;r++)t*=e[r];return t},XA=e=>typeof e=="number"?[e,e,e]:e,Wl=(e,t)=>t<=1?e:e+(e-1)*(t-1),rx=(e,t,r,n=1)=>{let s=Wl(t,n);return Math.floor((e[0]*(r-1)-r+s)/2)},ZA=(e,t,r,n,s)=>{s==null&&(s=rx(e,t[0],n[0]));let a=[0,0,0,r];for(let i=0;i<3;i++)e[i]+2*s>=t[i]&&(a[i]=Math.trunc((e[i]-t[i]+2*s)/n[i]+1));return a},nx=(e,t,r,n,s,a,i,o,l,u)=>{let p,d,c,g;if(e==="VALID"&&(e=0),typeof e=="number"){p={top:e,bottom:e,left:e,right:e,front:e,back:e};let A=ZA([t,r,n,1],[o,l,u],1,[s,a,i],e);d=A[0],c=A[1],g=A[2]}else if(Array.isArray(e)){if(!e.every((m,B,f)=>m===f[0]))throw Error(`Unsupported padding parameter: ${e}`);p={top:e[0],bottom:e[1],left:e[2],right:e[3],front:e[4],back:e[5]};let A=ZA([t,r,n,1],[o,l,u],1,[s,a,i],e[0]);d=A[0],c=A[1],g=A[2]}else if(e==="SAME_UPPER"){d=Math.ceil(t/s),c=Math.ceil(r/a),g=Math.ceil(n/i);let A=(d-1)*s+o-t,m=(c-1)*a+l-r,B=(g-1)*i+u-n,f=Math.floor(A/2),h=A-f,P=Math.floor(m/2),_=m-P,w=Math.floor(B/2),b=B-w;p={top:P,bottom:_,left:w,right:b,front:f,back:h}}else throw Error(`Unknown padding parameter: ${e}`);return{padInfo:p,outDepth:d,outHeight:c,outWidth:g}},sx=(e,t,r,n,s,a=!1,i="channelsLast")=>{let o,l,u,p,d;if(i==="channelsLast")[o,l,u,p,d]=e;else if(i==="channelsFirst")[o,d,l,u,p]=e;else throw new Error(`Unknown dataFormat ${i}`);let[c,,g,A,m]=t,[B,f,h]=XA(r),[P,_,w]=XA(n),b=Wl(g,P),v=Wl(A,_),y=Wl(m,w
vendor: 4,164 bytes, lines 3834-3885
3834),{padInfo:$,outDepth:k,outHeight:W,outWidth:j}=nx(s,l,u,p,B,f,h,b,v,y),F=a?c*d:c,R=[0,0,0,0,0];return i==="channelsFirst"?R=[o,F,k,W,j]:i==="channelsLast"&&(R=[o,k,W,j,F]),{batchSize:o,dataFormat:i,inDepth:l,inHeight:u,inWidth:p,inChannels:d,outDepth:k,outHeight:W,outWidth:j,outChannels:F,padInfo:$,strideDepth:B,strideHeight:f,strideWidth:h,filterDepth:g,filterHeight:A,filterWidth:m,effectiveFilterDepth:b,effectiveFilterHeight:v,effectiveFilterWidth:y,dilationDepth:P,dilationHeight:_,dilationWidth:w,inShape:e,outShape:R,filterShape:t}},ax=(e,t,r,n,s,a)=>{let i=a==="channelsLast";i?e[0].dims[3]:e[0].dims[1];let o=[64,1,1],l={x:r.map((B,f)=>f)},u=[Math.ceil(tx(l.x.map(B=>r[B]))/o[0]),1,1];ur("verbose",()=>`[conv3d_naive_webgpu] dispatch = ${u}`);let p=1,d=$e.size(r),c=[{type:12,data:d},{type:12,data:n},{type:12,data:s},{type:12,data:t.strides},{type:12,data:t.dilations}];Hi(t,c),c.push(...It(e[0].dims,e[1].dims));let g=["rank","rank"],A=e.length===3;A&&(c.push(...It(e[2].dims)),g.push("rank")),c.push(...It(r));let m=B=>{let f=[{name:"output_size",type:"u32"},{name:"filter_dims",type:"u32",length:n.length},{name:"pads",type:"u32",length:s.length},{name:"strides",type:"u32",length:t.strides.length},{name:"dilations",type:"u32",length:t.dilations.length}];Ki(t,f);let h=1,P=Bn(e[0].dataType),_=Ne("x",e[0].dataType,e[0].dims.length,p),w=Ne("W",e[1].dataType,e[1].dims.length,h),b=[_,w],v=Pt("result",e[0].dataType,r.length,h),y="";if(A){let W=Ne("bias",e[2].dataType,e[2].dims.length,h);b.push(W),y+=` 3835 fn getBiasByOutputCoords(coords : array<u32, 5>) -> ${P} { 3836 return bias[${i?xt("coords",4,5):xt("coords",1,5)}]; 3837 }`}let $=Sn(p,P),k=Qi(t,$,P);return` 3838 ${y} 3839 fn getX(d0 : u32, d1 : u32, d2 : u32, d3 : u32, d4 : u32) -> f32 { 3840 let aIndices = array<u32, 5>(d0, d1, d2, d3, d4); 3841 return ${_.getByIndices("aIndices")}; 3842 } 3843 fn getW(d0 : u32, d1 : u32, d2 : u32, d3 : u32, d4 : u32) -> f32 { 3844 let aIndices = array<u32, 5>(d0, d1, d2, d3, d4); 3845 return ${w.getByIndices("aIndices")}; 3846 } 3847 ${B.registerUniforms(f).declareVariables(...b,v)} 3848 ${B.mainStart()} 3849 ${B.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 3850 let coords = ${v.offsetToIndices("global_idx")}; 3851 let batch = ${xt("coords",0,_.rank)}; 3852 let d2 = ${i?xt("coords",_.rank-1,_.rank):xt("coords",1,_.rank)}; 3853 let xFRCCorner = vec3<u32>(${i?xt("coords",1,_.rank):xt("coords",2,_.rank)}, 3854 ${i?xt("coords",2,_.rank):xt("coords",3,_.rank)}, 3855 ${i?xt("coords",3,_.rank):xt("coords",4,_.rank)}) * uniforms.strides - uniforms.pads; 3856 let xFCorner = xFRCCorner.x; 3857 let xRCorner = xFRCCorner.y; 3858 let xCCorner = xFRCCorner.z; 3859 let xShapeY = ${i?xt("uniforms.x_shape",1,_.rank):xt("uniforms.x_shape",2,_.rank)}; 3860 let xShapeZ = ${i?xt("uniforms.x_shape",2,_.rank):xt("uniforms.x_shape",3,_.rank)}; 3861 let xShapeW = ${i?xt("uniforms.x_shape",3,_.rank):xt("uniforms.x_shape",4,_.rank)}; 3862 let xShapeU = ${i?xt("uniforms.x_shape",4,_.rank):xt("uniforms.x_shape",1,_.rank)}; 3863 let inputDepthNearestVec4 = (xShapeU / 4) * 4; 3864 let inputDepthVec4Remainder = xShapeU % 4; 3865 3866 var value = 0.0; 3867 for (var wF = 0u; wF < uniforms.filter_dims[0]; wF++) { 3868 let xF = xFCorner + wF * uniforms.dilations[0]; 3869 if (xF < 0 || xF >= xShapeY) { 3870 continue; 3871 } 3872 3873 for (var wR = 0u; wR < uniforms.filter_dims[1]; wR++) { 3874 let xR = xRCorner + wR * uniforms.dilations[1]; 3875 if (xR < 0 || xR >= xShapeZ) { 3876 continue; 3877 } 3878 3879 for (var wC = 0u; wC < uniforms.filter_dims[2]; wC++) { 3880 let xC = xCCorner + wC * uniforms.dilations[2]; 3881 if (xC < 0 || xC >= xShapeW) { 3882 continue; 3883 } 3884 3885 for (var d1 = 0u;
3885 d1 < inputDepthNearestVec4; d1 += 4) { 3886 ${i?`let xValues = vec4<f32>( 3887 getX(batch, xF, xR, xC, d1), 3888 getX(batch, xF, xR, xC, d1 + 1), 3889 getX(batch, xF, xR, xC, d1 + 2), 3890 getX(batch, xF, xR, xC, d1 + 3)); 3891 `:`let xValues = vec4<f32>( 3892 getX(batch, d1, xF, xR, xC), 3893 getX(batch, d1 + 1, xF, xR, xC), 3894 getX(batch, d1 + 2, xF, xR, xC), 3895 getX(batch, d1 + 3, xF, xR, xC)); 3896 `} 3897 let wValues = vec4<f32>( 3898 getW(d2, d1, wF, wR, wC), 3899 getW(d2, d1 + 1, wF, wR, wC), 3900 getW(d2, d1 + 2, wF, wR, wC), 3901 getW(d2, d1 + 3, wF, wR, wC)); 3902 value += dot(xValues, wValues); 3903 } 3904 if (inputDepthVec4Remainder == 1) { 3905 ${i?`value += getX(batch, xF, xR, xC, inputDepthNearestVec4) 3906 * getW(d2, inputDepthNearestVec4, wF, wR, wC);`:`value += getX(batch, inputDepthNearestVec4, xF, xR, xC) 3907 * getW(d2, inputDepthNearestVec4, wF, wR, wC);`} 3908 } else if (inputDepthVec4Remainder == 2) { 3909 ${i?`let xValues = vec2<f32>( 3910 getX(batch, xF, xR, xC, inputDepthNearestVec4), 3911 getX(batch, xF, xR, xC, inputDepthNearestVec4 + 1)); 3912 `:`let xValues = vec2<f32>( 3913 getX(batch, inputDepthNearestVec4, xF, xR, xC), 3914 getX(batch, inputDepthNearestVec4 + 1, xF, xR, xC)); 3915 `} 3916 let wValues = vec2<f32>( 3917 getW(d2, inputDepthNearestVec4, wF, wR, wC), 3918 getW(d2, inputDepthNearestVec4 + 1, wF, wR, wC)); 3919 value += dot(xValues, wValues); 3920 } else if (inputDepthVec4Remainder == 3) { 3921 ${i?`let xValues = vec3<f32>( 3922 getX(batch, xF, xR, xC, inputDepthNearestVec4), 3923 getX(batch, xF, xR, xC, inputDepthNearestVec4 + 1), 3924 getX(batch, xF, xR, xC, inputDepthNearestVec4 + 2)); 3925 `:`let xValues = vec3<f32>( 3926 getX(batch, inputDepthNearestVec4, xF, xR, xC), 3927 getX(batch, inputDepthNearestVec4 + 1, xF, xR, xC), 3928 getX(batch, inputDepthNearestVec4 + 2, xF, xR, xC)); 3929 `} 3930 let wValues = vec3<f32>( 3931 getW(d2, inputDepthNearestVec4, wF, wR, wC), 3932 getW(d2, inputDepthNearestVec4 + 1, wF, wR, wC), 3933 getW(d2, inputDepthNearestVec4 + 2, wF, wR, wC)); 3934 value += dot(xValues, wValues); 3935 } 3936 } 3937 } 3938 } 3939 ${A?"value = value + getBiasByOutputCoords(coords)":""}; 3940 ${k} 3941 result[global_idx] = f32(value); 3942 }`};return{name:"Conv3DNaive",shaderCache:{hint:`${t.cacheKey};${i};${p};${A}`,inputDependencies:g},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:u[0],y:u[1],z:u[2]},programUniforms:c}),getShaderSource:m}}}),ix,ox,u3=et(()=>{Gt(),qt(),tr(),qi(),ix=(e,t,r,n)=>{let s=e.length>2,a=s?"value += b[output_channel];":"",i=e[0].dims,o=e[1].dims,l=t.format==="NHWC",u=l?r[3]:r[1],p=u/t.group,d=l&&p>=4?en(u):1,c=$e.size(r)/d,g=[{type:12,data:c},{type:12,data:t.dilations},{type:12,data:[t.strides[0],t.strides[1]]},{type:12,data:[t.pads[0],t.pads[1]]},{type:12,data:p}];Hi(t,g),g.push(...It(i,[o[0],o[1],o[2],o[3]/d]));let A=s?["rank","rank","rank"]:["rank","rank"];g.push(...It([r[0],r[1],r[2],r[3]/d]));let m=B=>{let f=Pt("output",e[0].dataType,r.length,d),h=Bn(f.type.tensor),P=Qi(t,f.type.value,h),_=Ne("x",e[0].dataType,i.length),w=Ne("w",e[1].dataType,o.length,d),b=[_,w];s&&b.push(Ne("b",e[2].dataType,e[2].dims,d));let v=[{name:"output_size",type:"u32"},{name:"dilations",type:"u32",length:t.dilations.length},{name:"strides",type:"u32",length:2},{name:"pads",type:"u32",length:2},{name:"output_channels_per_group",type:"u32"}];Ki(t,v);let y=l?` 3943 for (var wHeight: u32 = 0u; wHeight < uniforms.w_shape[0]; wHeight++) { 3944 let xHeight = xRCCorner.x + wHeight * uniforms.dilations[0]; 3945 3946 if (xHeight < 0u || xHeight >= uniforms.x_shape[1]) { 3947 continue; 3948 } 3949 3950 for (var wWidth: u32 = 0u; wWidth < uniforms.w_shape[1]; wWidth++) { 3951 let xWidth = xRCCorner.y + wWidth * uniforms.dilations[1]; 3952 if (xWidth < 0u || xWidth >= uniforms.x_shape[2]) { 3953 continue; 3954 } 3955 3956 for (var wInChannel: u32 = 0u; wInChannel < uniforms.w_shape[2]; wInChannel++) { 3957 let input_channel = in_channel_offset + wInChannel; 3958 let xVal = ${_.get("batch","xHeight","xWidth","input_channel")}; 3959 let wVal = ${w.get("wHeight","wWidth","wInChannel","output_channel")}; 3960 value += xVal * wVal; 3961 } 3962 } 3963 } 3964 `:` 3965 for (var wInChannel: u32 = 0u; wInChannel < uniforms.w_shape[1]; wInChannel++) { 3966 let input_channel = in_channel_offset + wInChannel; 3967 for (var wHeight: u32 = 0u; wHeight < uniforms.w_shape[2]; wHeight++) { 3968 let xHeight = xRCCorner.x + wHeight * uniforms.dilations[0]; 3969 3970 if (xHeight < 0u || xHeight >= uniforms.x_shape[2]) { 3971 continue; 3972 } 3973 3974 for (var wWidth: u32 = 0u; wWidth < uniforms.w_shape[3]; wWidth++) { 3975 let xWidth = xRCCorner.y + wWidth * uniforms.dilations[1]; 3976 if (xWidth < 0u || xWidth >= uniforms.x_shape[3]) { 3977 continue; 3978 } 3979 3980 let xVal = ${_.get("batch","input_channel","xHeight","xWidth")}; 3981 let wVal = ${w.get("output_channel","wInChannel","wHeight","wWidth")}; 3982 value += xVal * wVal; 3983 } 3984 } 3985 } 3986 `;return` 3987 ${B.registerUniforms(v).declareVariables(...b,f)} 3988 3989 ${B.mainStart()} 3990 ${B.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 3991 3992 let outputIndices = ${f.offsetToIndices("global_idx")}; 3993 let batch: u32 = outputIndices[0]; 3994 let output_channel: u32 = outputIndices[${l?3:1}]; 3995 let xRCCorner: vec2<u32> = vec2<u32>(outputIndices[${l?1:2}
3995], outputIndices[${l?2:3}]) * uniforms.strides - uniforms.pads; 3996 let group_id: u32 = output_channel * ${d} / uniforms.output_channels_per_group; 3997 var in_channel_offset = group_id * uniforms.w_shape[${l?2:1}]; 3998 3999 var value: ${f.type.value} = ${f.type.value}(0); 4000 ${y} 4001 ${a} 4002 ${P} 4003 ${f.setByOffset("global_idx","value")} 4004 }`};return{name:"GroupedConv",shaderCache:{hint:`${t.cacheKey}_${d}`,inputDependencies:A},getRunData:()=>({outputs:[{dims:n?n(r):r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(c/64)},programUniforms:g}),getShaderSource:m}},ox=(e,t,r,n)=>{let s=e.length>2,a=en(r[3]),i=en(r[2]),o=$e.size(r)/a/i,l=[e[0].dims[0],e[0].dims[1],e[0].dims[2],e[0].dims[3]/a],u=[e[1].dims[0],e[1].dims[1],e[1].dims[2],e[1].dims[3]/a],p=[r[0],r[1],r[2],r[3]/a],d=[{type:12,data:o},{type:6,data:[t.strides[0],t.strides[1]]},{type:6,data:[t.pads[0],t.pads[1]]}];Hi(t,d),d.push(...It(l,u,p));let c=(i-1)*t.strides[1]+u[1],g=A=>{let m=Pt("output",e[0].dataType,p.length,a),B=Bn(m.type.tensor),f=Qi(t,m.type.value,B),h=Ne("x",e[0].dataType,l.length,a),P=Ne("w",e[1].dataType,u.length,a),_=[h,P];s&&_.push(Ne("b",e[2].dataType,e[2].dims,a));let w=s?"value += b[output_channel];":"",b=[{name:"output_size",type:"u32"},{name:"strides",type:"i32",length:2},{name:"pads",type:"i32",length:2}];return Ki(t,b),` 4005 ${A.registerUniforms(b).declareVariables(..._,m)} 4006 ${A.mainStart()} 4007 ${A.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 4008 let width0 = uniforms.output_shape[3]; 4009 let output_channel = global_idx % width0; 4010 var index1 = global_idx / width0; 4011 let width1 = uniforms.output_shape[2] / ${i}u; 4012 let col = (index1 % width1) * ${i}u; 4013 index1 = index1 / width1; 4014 let row = index1 % uniforms.output_shape[1]; 4015 let batch = index1 / uniforms.output_shape[1]; 4016 4017 let x_corner = vec2<i32>(i32(row), i32(col)) * uniforms.strides - uniforms.pads; 4018 4019 var x_vals: array<${h.type.value}, ${c}>; 4020 var values: array<${m.type.value}, ${i}>; 4021 let input_channel = output_channel; 4022 // Use constant instead of uniform can give better performance for w's height/width. 4023 for (var w_height: u32 = 0u; w_height < ${u[0]}; w_height++) { 4024 let x_height = x_corner.x + i32(w_height); 4025 if (x_height >= 0 && u32(x_height) < uniforms.x_shape[1]) { 4026 for (var i = 0; i < ${c}; i++) { 4027 let x_width = x_corner.y + i; 4028 if (x_width >= 0 && u32(x_width) < uniforms.x_shape[2]) { 4029 x_vals[i] = ${h.get("batch","u32(x_height)","u32(x_width)","input_channel")}; 4030 } else { 4031 x_vals[i] = ${h.type.value}(0); 4032 } 4033 } 4034 for (var w_width: u32 = 0u; w_width < ${u[1]}; w_width++) { 4035 let w_val = ${P.get("w_height","w_width","0","output_channel")}; 4036 for (var i = 0u; i < ${i}u; i++) { 4037 values[i] = fma(x_vals[i * u32(uniforms.strides[1]) + w_width], w_val, values[i]); 4038 } 4039 } 4040 } 4041 } 4042 4043 for (var i = 0u; i < ${i}u; i++) { 4044 var value = values[i]; 4045 ${w} 4046 ${f} 4047 ${m.set("batch","row","col + i","output_channel","value")}; 4048 } 4049 }`};return{name:"GroupedConv-Vectorize",shaderCache:{hint:`${t.cacheKey};${a};${i};${c};${u[0]};${u[1]}`,inputDependencies:s?["rank","rank","type"]:["rank","rank"]},getRunData:()=>({outputs:[{dims:n?n(r):r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(o/64)},programUniforms:d}),getShaderSource:g}}}),lx,Cc,ux,$c,JA,eh,cx,dx,th,c3=et(()=>{qt(),o3(),l3(),qA(),u3(),qi(),VA(),Xa(),lx=(e,t,r,n,s,a)=>{let i=e[0],o=e.slice(a?1:2,a?3:4),l=o.length,u=t[0],p=t.slice(2).map((c,g)=>c+(c-1)*(r[g]-1)),d=o.map((c,g)=>c+n[g]+n[g+l]).map((c,g)=>Math.floor((c-p[g]+s[g])/s[g]));return d.splice(0,0,i),d.splice(a?3:1,0,u),d},Cc=[2,3,1,0],ux=(e,t)=>{if(!e||e.length!==2&&e.length!==3)throw new Error("Conv requires 2 or 3 inputs");if(e[0].dims.length>5)throw new Error("greater than 5D is not supported");if(e[0].dims.length!==e[1].dims.length)throw new Error("filter does not have same dimension as input");let r=e[0].dims[t.format==="NHWC"?e[0].dims.length-1:1],n=e[1].dims[1]*t.group;if(r!==n)throw new Error("FILTER_IN_CHANNEL should be equal to DATA_CHANNEL");if(e.length===3&&(e[2].dims.length!==1||e[1].dims[0]!==e[2].dims[
vendor: 25,816 bytes, lines 4049-4200
40490]))throw new Error("invalid bias");let s=e[0].dims.length-2;if(t.dilations.length!==s)throw new Error(`dilations should be ${s}D`);if(t.strides.length!==s)throw new Error(`strides should be ${s}D`);if(t.pads.length!==s*2)throw new Error(`pads should be ${s*2}D`);if(t.kernelShape.length!==0&&t.kernelShape.length!==e[1].dims.length-2)throw new Error("invalid kernel shape")},$c=(e,t)=>{let r=e.kernelShape.slice();r.length<t[1].dims.length-2&&r.push(...Array(t[1].dims.length-2-r.length).fill(0));for(let a=2;a<t[1].dims.length;++a)r[a-2]===0&&(r[a-2]=t[1].dims[a]);let n=e.pads.slice();Mc.adjustPadsBasedOnAutoPad(t[0].dims,e.strides,e.dilations,r,n,e.format==="NHWC",e.autoPad);let s=Object.assign({},e);return Object.assign(s,{kernelShape:r,pads:n}),s},JA=e=>{let t=jA(e),r=e.format,n=["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][e.auto_pad],s=e.dilations,a=e.group,i=e.kernel_shape,o=e.pads,l=e.strides,u=e.w_is_const();return{autoPad:n,format:r,dilations:s,group:a,kernelShape:i,pads:o,strides:l,wIsConst:u,...t,cacheKey:`${e.format};${t.activation};`}},eh=(e,t,r,n)=>{let s=r.format==="NHWC",a=lx(t[0].dims,t[1].dims,r.dilations,r.pads,r.strides,s);if(r.group!==1){let b=[t[0]];if(s){let v=e.kernelCustomData.wT??e.compute(is(t[1],Cc),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=v),b.push(v)}else b.push(t[1]);t.length===3&&b.push(t[2]),!e.adapterInfo.isArchitecture("ampere")&&s&&t[1].dims[0]===r.group&&t[1].dims[1]===1&&r.dilations[0]===1&&r.dilations[1]===1?e.compute(ox(b,r,a,n),{inputs:b}):e.compute(ix(b,r,a,n),{inputs:b});return}let i=t.length===3,o=t[0].dims[s?1:2],l=t[0].dims[s?2:3],u=t[0].dims[s?3:1],p=t[1].dims[2],d=t[1].dims[3],c=a[s?1:2],g=a[s?2:3],A=a[s?3:1],m=s&&p===o&&d===l&&r.pads[0]===0&&r.pads[1]===0;if(m||p===1&&d===1&&r.dilations[0]===1&&r.dilations[1]===1&&r.strides[0]===1&&r.strides[1]===1&&r.pads[0]===0&&r.pads[1]===0){let b=a[0],v,y,$,k=[];if(s){let F=e.kernelCustomData.wT??e.compute(is(t[1],Cc),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];if(r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=F),m){let R=o*l*u;v=t[0].reshape([1,b,R]),y=F.reshape([1,R,A]),$=[1,b,A]}else v=t[0].reshape([b,o*l,u]),y=F.reshape([1,u,A]),$=[b,c*g,A];k.push(v),k.push(y)}else v=t[0].reshape([b,u,o*l]),y=t[1].reshape([1,A,u]),$=[b,A,c*g],k.push(y),k.push(v);i&&k.push(t[2]);let W=$[2],j=k[0].dims[k[0].dims.length-1];W<8&&j<8?e.compute(WA(k,r,a,$,s,n),{inputs:k}):e.compute(Tc(k,r,a,$,s,n),{inputs:k});return}let B=!0,f=e.kernelCustomData.wT??e.compute(is(t[1],Cc),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=f);let h=[t[0],f];i&&h.push(t[2]);let P=s?c*g:A,_=s?A:c*g,w=p*d*u;e.compute(ex(h,r,a,P,_,w,i,B,n),{inputs:h})},cx=(e,t)=>{let r=t.format==="NHWC",n=[e.inputs[0].reshape(r?[e.inputs[0].dims[0],1,e.inputs[0].dims[1],e.inputs[0].dims[2]]:[e.inputs[0].dims[0],e.inputs[0].dims[1],1,e.inputs[0].dims[2]]),e.inputs[1].reshape([e.inputs[1].dims[0],e.inputs[1].dims[1],1,e.inputs[1].dims[2]])];e.inputs.length===3&&n.push(e.inputs[2]);let s=[0,t.pads[0],0,t.pads[1]],a=[1].concat(t.strides),i=[1].concat(t.dilations),o=[1].concat(t.kernelShape),l=$c({...t,pads:s,strides:a,dilations:i,kernelShape:o},n);eh(e,n,l,u=>r?[u[0],u[2],u[3]]:[u[0],u[1],u[3]])},dx=(e,t,r)=>{let n=r.format==="NHWC"?"channelsLast":"channelsFirst",s=$c(r,t),a=r.autoPad==="NOTSET"?r.pads:r.autoPad,i=sx(t[0].dims,t[1].dims,r.strides,r.dilations,a,!1,n);e.compute(ax(t,s,i.outShape,[i.filterDepth,i.filterHeight,i.filterWidth],[i.padInfo.front,i.padInfo.top,i.padInfo.left],n))},th=(e,t)=>{if(ux(e.inputs,t),e.inputs[0].dims.length===3)cx(e,t);else if(e.inputs[0].dims.length===5)dx(e,e.inputs,t);else{let r=$c(t,e.inputs);eh(e,e.inputs,r)}}}),px,d3=et(()=>{Gt(),$a(),qt(),tr(),px=(e,t,r)=>{let n=e.length>2,s=t.outputShape,a=t.format==="NHWC",i=t.group,o=e[1].dims,l=o[2]/i,u=o[3],p=a?en(l):1,d=a&&u===1&&l>=4,c=d?Math.floor(l/4)*4:Math.floor(l/p)*p,g=l-c,A=a?en(u):1,m=a?u===1?p:A:1,B=$e.size(s)/A,f=[Math.ceil(B/64),1,1];ur("verbose",()=>`[conv2d_backprop_webgpu] dispatch = ${f}`);let h=["rank","rank"],P=[t.strides[0],t.strides[1]],_=[t.kernelShape[a?1:2],t.kernelShape[a?2:3]],w=[t.dilations[0],t.dilations[1]],b=[_[0]+(t.dilations[0]<=1?0:(t.kernelShape[a?1:2]-1)*(t.dilations[0]-1)),_[1]+(t.dilations[1]<=1?0:(t.kernelShape[a?2:3]-1)*(t.dilations[1]-1))],v=[b[0]-1-Math.floor((t.pads[0]+t.pads[2])/2),b[1]-1-Math.floor((t.pads[1]+t.pads[3])/2)],y=[{type:12,data:B},{type:12,data:P},{type:12,data:_},{type:12,data:w},{type:12,data:b},{type:6,data:v},{type:12,data:c},{type:12,data:l},{type:12,data:u},...It(e[0].dims,e[1].dims)];n&&(y.push(...It(e[2].dims)),h.push("rank")),y.push(...It(s));let $=k=>{let W=[{name:"output_size",type:"u32"},{name:"strides",type:"u32",length:P.length},{name:"filter_dims",type:"u32",length:_.length},{name:"dilations",type:"u32",length:_.length},{name:"effective_filter_dims",type:"u32",length:b.length},{name:"pads",type:"i32",length:v.length},{name:"input_channels_per_group_int",type:"u32"},{name:"input_channels_per_group",type:"u32"},{name:"output_channels_per_group",type:"u32"}],j=Bn(e[0].dataType),F=a?1:2,R=a?2:3,L=a?3:1,Q=Ne("W",e[1].dataType,e[1].dims.length,m),ne=Ne("Dy",e[0].dataType,e[0].dims.length,p),re=[ne,Q];n&&re.push(Ne("bias",e[2].dataType,[s[L]].length,A));let ce=Pt("result",e[0].dataType,s.length,A),ge=()=>{let U="";if(d)p===4?U+=` 4050 let xValue = ${ne.getByOffset("x_offset")}; 4051 let wValue = ${Q.getByOffset("w_offset")}; 4052 dotProd = dotProd + dot(xValue, wValue); 4053 x_offset += 1u; 4054 w_offset += 1u;`:p===2?U+=` 4055 dotProd = dotProd + dot(vec4<${j}>(${ne.getByOffset("x_offset")}, ${ne.getByOffset("x_offset + 1u")}), vec4<${j}>(${Q.getByOffset("w_offset")}, ${Q.getByOffset("w_offset + 1u")})); 4056 x_offset += 2u; 4057 w_offset += 2u;`:p===1&&(U+=` 4058 dotProd = dotProd + dot(vec4<${j}>(${ne.getByOffset("x_offset")}, ${ne.getByOffset("x_offset + 1u")}, ${ne.getByOffset("x_offset + 2u")}, ${ne.getByOffset("x_offset + 3u")}), vec4<${j}>(${Q.getByOffset("w_offset")}, ${Q.getByOffset("w_offset + 1u")}, ${Q.getByOffset("w_offset + 2u")}, ${Q.getByOffset("w_offset + 3u")})); 4059 x_offset += 4u; 4060 w_offset += 4u;`);else if(U+=` 4061 let xValue = ${a?ne.getByOffset(`${ne.indicesToOffset(`${ne.type.indices}(batch, idyR, idyC, inputChannel)`)} / ${p}`):ne.get("batch","inputChannel","idyR","idyC")}; 4062 `,p===1)U+=` 4063 let w_offset = ${Q.indicesToOffset(`${Q.type.indices}(u32(wRPerm), u32(wCPerm), inputChannel, wOutChannel)`)}; 4064 let wValue = ${Q.getByOffset(`w_offset / ${m}`)}; 4065 dotProd = dotProd + xValue * wValue;`;else for(let N=0;N<p;N++)U+=` 4066 let wValue${N} = ${Q.getByOffset(`${Q.indicesToOffset(`${Q.type.indices}(u32(wRPerm), u32(wCPerm), inputChannel + ${N}, wOutChannel)`)} / ${m}`)}; 4067 dotProd = dotProd + xValue[${N}] * wValue${N};`;return U},q=()=>{if(g===0)return"";if(!d)throw new Error(`packInputAs4 ${d} is not true.`);let U="";if(p===1){U+="dotProd = dotProd";for(let N=0;N<g;N++)U+=` 4068 + ${ne.getByOffset(`x_offset + ${N}`)} * ${Q.getByOffset(`w_offset + ${N}`)}`;U+=";"}else if(p===2){if(g!==2)throw new Error(`Invalid inputChannelsRemainder ${g}.`);U+=` 4069 let xValue = ${ne.getByOffset("x_offset")}; 4070 let wValue = ${Q.getByOffset("w_offset")}; 4071 dotProd = dotProd + dot(xValue, wValue);`}return U},V=` 4072 let outputIndices = ${ce.offsetToIndices(`global_idx * ${A}`)}; 4073 let batch = ${ce.indicesGet("outputIndices",0)}; 4074 let d1 = ${ce.indicesGet("outputIndices",L)}; 4075 let r = ${ce.indicesGet("outputIndices",F)}; 4076 let c = ${ce.indicesGet("outputIndices",R)}; 4077 let dyCorner = vec2<i32>(i32(r), i32(c)) - uniforms.pads; 4078 let dyRCorner = dyCorner.x; 4079 let dyCCorner = dyCorner.y; 4080 let groupId = d1 / uniforms.output_channels_per_group; 4081 let wOutChannel = d1 - groupId * uniforms.output_channels_per_group; 4082 // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1). 4083 // ? = to be determined. : = across all values in that axis. 4084 var dotProd = ${ce.type.value}(0.0); 4085 var wR: u32 = 0; 4086 if (uniforms.dilations.x == 1) { 4087 // Minimum wR >= 0 that satisfies (dyRCorner + wR) % (uniforms.strides.x) == 0 4088 wR = u32(((dyRCorner + i32(uniforms.strides.x) - 1) / i32(uniforms.strides.x)) * i32(uniforms.strides.x) - dyRCorner); 4089 } 4090 for (; wR < uniforms.effective_filter_dims.x; wR = wR + 1) { 4091 if (wR % uniforms.dilations.x != 0) { 4092 continue; 4093 } 4094 let dyR = (${j}(dyRCorner) + ${j}(wR)) / ${j}(uniforms.strides[0]); 4095 let wRPerm = uniforms.filter_dims.x - 1 - wR / uniforms.dilations.x; 4096 if (dyR < 0.0 || dyR >= ${j}(uniforms.Dy_shape[${F}]) || fract(dyR) > 0.0 || 4097 wRPerm < 0) { 4098 continue; 4099 } 4100 let idyR: u32 = u32(dyR); 4101 var wC: u32 = 0; 4102 if (uniforms.dilations.y == 1) { 4103 // Minimum wC >= 0 that satisfies (dyCCorner + wC) % (uniforms.strides.y) == 0 4104 wC = u32(((dyCCorner + i32(uniforms.strides.y) - 1) / i32(uniforms.strides.y)) * i32(uniforms.strides.y) - dyCCorner); 4105 } 4106 for (; wC < uniforms.effective_filter_dims.y; wC = wC + 1) { 4107 if (wC % uniforms.dilations.y != 0) { 4108 continue; 4109 } 4110 let dyC = (${j}(dyCCorner) + ${j}(wC)) / ${j}(uniforms.strides.y); 4111 let wCPerm = uniforms.filter_dims.y - 1 - wC / uniforms.dilations.y; 4112 if (dyC < 0.0 || dyC >= ${j}(uniforms.Dy_shape[${R}]) || 4113 fract(dyC) > 0.0 || wCPerm < 0) { 4114 continue; 4115 } 4116 let idyC: u32 = u32(dyC); 4117 var inputChannel = groupId * uniforms.input_channels_per_group; 4118 ${d?` 4119 var x_offset = ${ne.indicesToOffset(`${ne.type.indices}(batch, idyR, idyC, inputChannel)`)} / ${p}; 4120 var w_offset = ${Q.indicesToOffset(`${Q.type.indices}(wRPerm, wCPerm, inputChannel, wOutChannel)`)} / ${m}; 4121 `:""} 4122 for (var d2: u32 = 0; d2 < uniforms.input_channels_per_group_int; d2 = d2 + ${d?4:p}) { 4123 ${ge()} 4124 inputChannel = inputChannel + ${d?4:p}; 4125 } 4126 ${q()} 4127 wC = wC + uniforms.strides.y - 1; 4128 } 4129 wR = wR + uniforms.strides[0] - 1; 4130 } 4131 let value = dotProd${n?` + bias[d1 / ${A}]`:""}; 4132 ${ce.setByOffset("global_idx","value")}; 4133 `;return` 4134 ${k.registerUniforms(W).declareVariables(...re,ce)} 4135 ${k.mainStart()} 4136 ${k.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}; 4137 ${V}}`};return{name:"ConvTranspose2D",shaderCache:{hint:`${t.cacheKey};${p}${m}${A}${d}${g}`,inputDependencies:h},getRunData:()=>({dispatchGroup:{x:f[0],y:f[1],z:f[2]},outputs:[{dims:r?r(s):s,dataType:e[0].dataType}],programUniforms:y}),getShaderSource:$}}}),gx,Ax,hx,rh,mx,fx,nh,_x,wx,p3=et(()=>{d3(),qi(),Xa(),gx=(e,t,r,n,s,a)=>(e-1)*t+r+(n-1)*s+1-a,Ax=(e,t,r,n,s)=>{let a=Math.floor(e/2);t==="SAME_UPPER"?(r[n]=a,r[s]=e-a):t==="SAME_LOWER"&&(r[n]=e-a,r[s]=a)},hx=(e,t,r,n,s,a,i,o,l,u)=>{let p=e.length-2,d=u.length===0;l.length<p&&l.push(...Array(p-l.length).fill(0));let c=e[0],g=t[o?3:1]*s;for(let A=0,m=e.length-p-(o?1:0);A<p;++A,++m){let B=e[m],f=d?B*i[A]:u[A],h=gx(B,i[A],a[A],t[m],r[A],f);Ax(h,n,a,A,A+p),d&&u.push(i[A]*(B-1)+l[A]+(t[m]-1)*r[A]+1-a[A]-a[A+p])}u.splice(0,0,c),u.splice(o?3:1,0,g)},rh=(e,t)=>{let r=e.kernelShape.slice();if(e.kernelShape.length===0||e.kernelShape.reduce((d,c)=>d*c,1)===0){r.length=0;for(let d=2;d<t[1].dims.length;++d)r.push(t[1].dims[d])}let n=e.format==="NHWC";r.splice(0,0,t[1].dims[0]),r.splice(n?3:1,0,t[1].dims[1]);let s=e.pads.slice(),a=e.outputShape.slice(),i=e.outputPadding.slice(),o=t[0].dims,l=e.dilations.slice();if(l.reduce((d,c)=>d+c,0)===0){let d=t[0].dims.length-2;l=new Array(d).fill(1)}let u=e.strides.slice();if(u.reduce((d,c)=>d+c,0)===0){let d=t[0].dims.length-2;u=new Array(d).fill(1)}hx(o,r,l,e.autoPad,e.group,s,u,n,i,a);let p=Object.assign({},e);return Object.assign(p,{kernelShape:r,pads:s,outputPadding:i,outputShape:a,dilations:l,strides:u}),p},mx=e=>{let t=jA(e),r=e.format,n=["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][typeof e.autoPad>"u"?0:e.autoPad],s=e.dilations,a=e.group??1,i=e.kernelShape,o=e.pads,l=e.strides,u=e.wIsConst(),p=e.outputPadding,d=e.outputShape;return{autoPad:n,format:r,dilations:s,group:a,kernelShape:i,outputPadding:p,outputShape:d,pads:o,strides:l,wIsConst:u,...t,cacheKey:`${e.format};${t.activation};`}},fx=(e,t)=>{if(!e||e.length!==2&&e.length!==3)throw new Error("Conv requires 2 or 3 inputs");if(e[0].dims.length!==4&&e[0].dims.length!==3)throw new Error("currently only support 2-dimensional conv");if(e[0].dims.length!==e[1].dims.length)throw new Error("filter does not have same dimension as input");let r=e[0].dims[t.format==="NHWC"?e[0].dims.length-1:1],n=e[1].dims[0];if(r!==n)throw new Error("FILTER_IN_CHANNEL should be equal to DATA_CHANNEL");let s=e[1].dims[1]*t.group;if(e.length===3&&(e[2].dims.length!==1||e[2].dims[0]!==s))throw new Error("invalid bias");let a=e[0].dims.length-2;if(t.dilations.reduce((i,o)=>i+o,0)>0&&t.dilations.length!==a)throw new Error(`dilations should be ${a}D`);if(t.strides.reduce((i,o)=>i+o,0)>0&&t.strides.length!==a)throw new Error(`strides should be ${a}D`);if(t.pads.reduce((i,o)=>i+o,0)>0&&t.pads.length!==a*2)throw new Error(`pads should be ${a*2}D`);if(t.outputPadding.length!==a&&t.outputPadding.length!==0)throw new Error(`output_padding should be ${a}D`);if(t.kernelShape.reduce((i,o)=>i+o,0)>0&&t.kernelShape.length!==0&&t.kernelShape.length!==e[1].dims.length-2)throw new Error("invalid kernel shape");if(t.outputShape.length!==0&&t.outputShape.length!==e[0].dims.length-2)throw new Error("invalid output shape")},nh=(e,t,r,n)=>{let s=e.kernelCustomData.wT??e.compute(is(t[1],[2,3,0,1]),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=s);let a=[t[0],s];t.length===3&&a.push(t[2]),e.compute(px(a,r,n),{inputs:a})},_x=(e,t)=>{let r=t.format==="NHWC",n=[e.inputs[0].reshape(r?[e.inputs[0].dims[0],1,e.inputs[0].dims[1],e.inputs[0].dims[2]]:[e.inputs[0].dims[0],e.inputs[0].dims[1],1,e.inputs[0].dims[2]]),e.inputs[1].reshape([e.inputs[1].dims[0],e.inputs[1].dims[1],1,e.inputs[1].dims[2]])];e.inputs.length===3&&n.push(e.inputs[2]);let s=t.kernelShape;(s.length===0||s[0]===0)&&(s=[e.inputs[1].dims[2]]);let a=t.dilations;(a.length===0||a[0]===0)&&(a=[1]);let i=t.strides;(i.length===0||i[0]===0)&&(i=[1]);let o=t.pads;o.length===0&&(o=[0,0]),o=[0,o[0],0,o[1]],i=[1].concat(i),a=[1].concat(a),s=[1].concat(s);let l=t.outputPadding;l=[0].concat(l);let u=rh({...t,pads:o,strides:i,dilations:a,kernelShape:s,outputPadding:l},n);nh(e,n,u,p=>r?[p[0],p[2],p[3]]:[p[0],p[1],p[3]])},wx=(e,t)=>{if(fx(e.inputs,t),e.inputs[0].dims.length===3)_x(e,t);else{let r=rh(t,e.inputs);nh(e,e.inputs,r)}}}),yx,bx,Px,g3=et(()=>{Gt(),qt(),on(),tr(),yx=(e,t,r,n)=>{let s=$e.size(t),a=t.length,i=Ne("input",e,a),o=Pt("output",e,a),l=r.dataType===6?r.getInt32Array()[0]:Number(r.getBigInt64Array()[0]),u=$e.normalizeAxis(l,a),p=d=>{let c=` i32(${i.indicesGet("inputIndices","uniforms.axis")}) `,g=xt("uniforms.input_shape","uniforms.axis",a),A=n.reverse?c+(n.exclusive?" + 1":""):"0",m=n.reverse?g:c+(n.exclusive?"":" + 1");return` 4138 ${d.registerUniform("outputSize","u32").registerUniform("axis","u32").declareVariables(i,o)} 4139 ${d.mainStart()} 4140 ${d.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} 4141 var inputIndices = ${o.offsetToIndices("global_idx")}; 4142 var sum = ${o.type.value}(0); 4143 let first : i32 = ${A}; 4144 let last : i32 = ${m}; 4145 for (var i : i32 = first; i < last; i++) { 4146 ${i.indicesSet("inputIndices","uniforms.axis","u32(i)")}; 4147 sum = sum + ${i.getByIndices("inputIndices")}; 4148 } 4149 ${o.setByOffset("global_idx","sum")}; 4150 }`};return{name:"CumSum",shaderCache:{hint:n.cacheKey,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:t,dataType:e}],dispatchGroup:{x:Math.ceil(s/64)},programUniforms:[{type:12,data:s},{type:12,data:u},...It(t,t)]}),getShaderSource:p}},bx=(e,t)=>{let r=e.inputs[0].dims,n=e.inputs[0].dataType,s=e.inputs[1];e.compute(yx(n,r,s,t),{inputs:[0]})},Px=e=>{let t=e.exclusive===1,r=e.reverse===1;return Mr({exclusive:t,reverse:r})}}),Mx,vx,Bx,xx,Ex,A3=et(()=>{Gt(),qt(),on(),tr(),Mx=e=>{if(!e||e.length!==1)throw new Error("DepthToSpace requires 1 input.");if(e[0].dims.length!==4)throw new Error("DepthToSpace requires 4D input.")},vx=(e,t,r,n)=>{let s=[];s.push(`fn perm(i: ${n.type.indices}) -> ${r.type.indices} { 4151 var a: ${r.type.indices};`);for(let a=0;a<t;++a)s.push(r.indicesSet("a",e[a],`i[${a}]`));return s.push("return a;}"),s.join(` 4152`)},Bx=(e,t)=>{let r,n,s,a,i,o,l=t.format==="NHWC",u=t.blocksize,p=t.mode==="DCR";l?([r,n,s,a]=e.dims,i=p?[r,n,s,u,u,a/u**2]:[r,n,s,a/u**2,u,u],o=p?[0,1,3,2,4,5]:[0,1,4,2,5,3]):([r,n,s,a]=[e.dims[0],e.dims[2],e.dims[3],e.dims[1]],i=p?[r,u,u,a/u**2,n,s]:[r,a/u**2,u,u,n,s],o=p?[0,3,4,1,5,2]:[0,1,4,2,5,3]);let d=e.reshape(i),c=d.dims.length,g=e.dataType,A=Ne("a",g,c),m=Pt("output",g,c),B=f=>` 4153 ${f.registerUniform("output_size","u32").declareVariables(A,m)} 4154 4155 ${vx(o,c,A,m)} 4156 4157 ${f.mainStart()} 4158 ${f.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 4159 4160 let indices = ${m.offsetToIndices("global_idx")}; 4161 let aIndices = perm(indices); 4162 4163 ${m.setByOffset("global_idx",A.getByIndices("aIndices"))} 4164 }`;return{name:"DepthToSpace",shaderCache:{hint:`${e.dims};${t.blocksize};${t.mode}`,inputDependencies:["rank"]},getRunData:f=>{let h=l?[r,n*u,s*u,a/u**2]:[r,a/u**2,n*u,s*u],P=$e.size(h),_=d.dims,w=$e.sortBasedOnPerm(_,o);return{outputs:[{dims:h,dataType:f[0].dataType}],dispatchGroup:{x:Math.ceil(P/64)},programUniforms:[{type:12,data:P},...It(_,w)]}},getShaderSource:B}},xx=(e,t)=>{Mx(e.inputs),e.compute(Bx(e.inputs[0],t))},Ex=e=>Mr({blocksize:e.blocksize,mode:e.mode,format:e.format})}),Sc,Vl,sh,Dx,Ix,Tx,Cx,ah,$x,Sx,kx,h3=et(()=>{Gt(),qt(),on(),tr(),Sc="[a-zA-Z]|\\.\\.\\.",Vl="("+Sc+")+",sh="^"+Vl+"$",Dx="("+Vl+",)*"+Vl,Ix="^"+Dx+"$",Tx=class{constructor(e=-1){this.symbolToIndices=new Map,this.inputIndex=e}addSymbol(e,t){let r=this.symbolToIndices.get(e);r===void 0?r=[t]:r.push(t),this.symbolToIndices.set(e,r)}},Cx=class{constructor(e,t){this.equation=t,this.hasEllipsis=!1,this.symbolToInfo=new Map,this.lhs=new Array,this.outputDims=[];let[r,n]=t.includes("->")?t.split("->",2):[t,""];if(!r.match(RegExp(Ix)))throw new Error("Invalid LHS term");if(r.split(",").forEach((s,a)=>{let i=e[a].dims.slice();if(!s.match(RegExp(sh)))throw new Error("Invalid LHS term");let o=this.processTerm(s,!0,i,a);this.lhs.push(o)}),n==="")n+=[...this.symbolToInfo.entries()].filter(([s,a])=>a.count===1||s==="...").map(([s])=>s).join("");else if(!n.match(RegExp(Vl)))throw new Error("Invalid RHS");n.match(RegExp(Sc,"g"))?.forEach(s=>{if(s==="...")this.outputDims=this.outputDims.concat(this.ellipsisDims);else{let a=this.symbolToInfo.get(s);if(a===void 0)throw new Error("Invalid RHS symbol");this.outputDims.push(a.dimValue)}}),this.rhs=this.processTerm(n,!1,this.outputDims)}addSymbol(e,t,r){let n=this.symbolToInfo.get(e);if(n!==void 0){if(n.dimValue!==t&&n.count!==1)throw new Error("Dimension mismatch");n.count++,n.inputIndices.push(r)}else n={count:1,dimValue:t,inputIndices:[r]};this.symbolToInfo.set(e,n)}processTerm(e,t,r,n=-1){let s=r.length,a=!1,i=[],o=0;if(!e.match(RegExp(sh))&&!t&&e!=="")throw new Error("Invalid LHS term");let l=e.match(RegExp(Sc,"g")),u=new Tx(n);return l?.forEach((p,d)=>{if(p==="..."){if(a)throw new Error("Only one ellipsis is allowed per input term");a=!0;let c=s-l.length+1;if(c<0)throw new Error("Ellipsis out of bounds");if(i=r.slice(o,o+c),this.hasEllipsis){if(this.ellipsisDims.length!==i.length||this.ellipsisDims.toString()!==i.toString())throw new Error("Ellipsis dimensions mismatch")}else if(t)this.hasEllipsis=!0,this.ellipsisDims=i;else throw new Error("Ellipsis must be specified in the LHS");for(let g=0;g<i.length;g++){let A=String.fromCharCode(48+g);u.addSymbol(A,d+g),this.addSymbol(A,r[o++],n)}}else u.addSymbol(p,d+(this.hasEllipsis?this.ellipsisDims.length-1:0)),this.addSymbol(p,r[o++],n)}),u}},ah=e=>e+"_max",$x=(e,t,r,n)=>{let s=e.map(u=>u.length).map((u,p)=>Ne(`input${p}`,t,u)),a=$e.size(n),i=Pt("output",t,n.length),o=[...r.symbolToInfo.keys()].filter(u=>!r.rhs.symbolToIndices.has(u)),l=u=>{let p=[],d="var prod = 1.0;",c="var sum = 0.0;",g="sum += prod;",A=[],m=[],B=[],f=[],h=r.symbolToInfo.size===r.rhs.symbolToIndices.size;r.symbolToInfo.forEach((_,w)=>{if(r.rhs.symbolToIndices.has(w)){let b=r.rhs.symbolToIndices.get(w)?.[0];b!==void 0&&r.lhs.forEach((v,y)=>{if(_.inputIndices.includes(y)){let $=v.symbolToIndices.get(w);if($===void 0)throw new Error("Invalid symbol error");$.forEach(k=>{p.push(`${s[y].indicesSet(`input${y}Indices`,k,i.indicesGet("outputIndices",b))}`)})}})}else r.lhs.forEach((b,v)=>{if(_.inputIndices.includes(v)){let y=b.symbolToIndices.get(w);if(y===void 0)throw new Error("Invalid symbol error");y.forEach($=>{A.push(`${s[v].indicesSet(`input${v}Indices`,$,`${w}`)}`)}),f.push(`prod *= ${s[v].getByIndices(`input${v}Indices`)};`)}}),m.push(`for(var ${w}: u32 = 0; ${w} < uniforms.${ah(w)}; ${w}++) {`),B.push("}")});let P=h?[...p,`let sum = ${s.map((_,w)=>_.getByIndices(`input${w}Indices`)).join(" * ")};`]:[...p,c,...m,...A,d,...f,g,...B];return` 4165 ${u.registerUniforms(o.map(_=>({name:`${ah(_)}`,type:"u32"}))).registerUniform("outputSize","u32").declareVariables(...s,i)} 4166 4167 ${u.mainStart()} 4168 ${u.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} 4169 var outputIndices = ${i.offsetToIndices("global_idx")}; 4170 ${s.map((_,w)=>`var input${w}Indices: ${s[w].type.indices};`).join(` 4171`)} 4172 ${P.join(` 4173`)}; 4174 ${i.setByOffset("global_idx","sum")}; 4175 }`};return{name:"Einsum",shaderCache:{hint:r.equation,inputDependencies:e.map(()=>"rank")},getRunData:()=>{let u=o.filter(d=>r.symbolToInfo.has(d)).map(d=>({type:12,data:r.symbolToInfo.get(d)?.dimValue||0}));u.push({type:12,data:a});let p=e.map((d,c)=>[...It(d)]).reduce((d,c)=>d.concat(c),u);return p.push(...It(n)),{outputs:[{dims:n,dataType:t}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:p}},getShaderSource:l}},Sx=(e,t)=>{let r=new Cx(e.inputs,t.equation),n=r.outputDims,s=e.inputs.map((a,i)=>a.dims);e.compute($x(s,e.inputs[0].dataType,r,n))},kx=e=>{let t=e.equation.replace(/\s+/g,"");return Mr({equation:t})}}),Ox,ih,Gx,zx,Fx,m3=et(()=>{Gt(),qt(),tr(),Ox=e=>{if(!e||e.length!==2)throw new Error("Expand requires 2 input.");let t=e[0].dims,r=Array.from(e[1].getBigInt64Array(),Number),n=r.length<t.length?0:r.length-t.length,s=t.length<r.length?0:t.length-r.length;for(;n<r.length&&s<t.length;++n,++s)if(r[n]!==t[s]&&r[n]!==1&&t[s]!==1)throw new Error("Expand requires shape to be broadcastable to input")},ih=(e,t)=>{let r=e.length-t.length,n=[];for(let s=0;s<r;++s)n.push(e[s]);for(let s=0;s<t.length;++s)n.push(t[s]===1?e[s+r]:t[s]);return n},Gx=(e,t)=>e.length>t.length?ih(e,t):ih(t,e),zx=e=>{let t=e[0].dims,r=Array.from(e[1].getBigInt64Array(),Number),n=Gx(t,r),s=e[0].dataType,a=s===9||$e.size(t)===1,i=s===9||t.length>0&&t[t.length-1]%4===0?4:1,o=a||n.length>0&&n[n.length-1]%4===0?4:1,l=Math.ceil($e.size(n)/o),u=d=>{let c=Ne("input",s,t.length,i),g=Pt("output",s,n.length,o),A;if(s===9){let m=(B,f,h="")=>` 4176 let outputIndices${f} = ${g.offsetToIndices(`outputOffset + ${f}u`)}; 4177 let offset${f} = ${c.broadcastedIndicesToOffset(`outputIndices${f}`,g)}; 4178 let index${f} = offset${f} / 4u; 4179 let component${f} = offset${f} % 4u; 4180 ${B}[${f}] = ${h}(${c.getByOffset(`index${f}`)}[component${f}]); 4181 `;A=` 4182 let outputOffset = global_idx * ${o}; 4183 var data = vec4<u32>(0); 4184 ${m("data",0,"u32")} 4185 ${m("data",1,"u32")} 4186 ${m("data",2,"u32")} 4187 ${m("data",3,"u32")} 4188 ${g.setByOffset("global_idx","data")} 4189 }`}else A=` 4190 let outputIndices = ${g.offsetToIndices(`global_idx * ${o}`)}; 4191 let inputOffset = ${c.broadcastedIndicesToOffset("outputIndices",g)}; 4192 let data = ${g.type.value}(${c.getByOffset(`inputOffset / ${i}`)}); 4193 ${g.setByOffset("global_idx","data")} 4194 }`;return` 4195 ${d.registerUniform("vec_size","u32").declareVariables(c,g)} 4196 ${d.mainStart()} 4197 ${d.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")} 4198 ${A}`},p=[{type:12,data:l},...It(t,n)];return{name:"Expand",shaderCache:{hint:`${n.length};${i}${o}`,inputDependencies:["rank"]},getShaderSource:u,getRunData:()=>({outputs:[{dims:n,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(l/64)},programUniforms:p})}},Fx=e=>{Ox(e.inputs),e.compute(zx(e.inputs),{inputs:[0]})}}),Lx,Rx,f3=et(()=>{Gt(),qt(),tr(),NA(),Lx=e=>{let t=e[0].dataType,r=$e.size(e[0].dims),n=$e.size(e[1].dims),s=n%4===0,a=i=>{let o=Ne("x",t,[1],4),l=Ne("bias",t,[1],4),u=Pt("y",t,[1],4),p=[{name:"output_vec_size",type:"u32"},{name:"bias_size",type:"u32"}],d=g=>` 4199 let bias${g}_offset: u32 = (global_idx * 4 + ${g}) % uniforms.bias_size; 4200 let bias${g} = ${l.getByOffset(`bias${g}_offset / 4`)}[bias${g}_offset % 4];`,c=s?`
4201 let bias = ${l.getByOffset("global_idx % (uniforms.bias_size / 4)")};`:`${d(0)}${d(1)}${d(2)}${d(3)} 4202 let bias = ${o.type.value}(bias0, bias1, bias2, bias3);`;return`${i.registerUniforms(p).declareVariables(o,l,u)} 4203 4204 ${RA(Rn(t))} 4205 4206 ${i.mainStart(Oo)} 4207 ${i.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_vec_size")} 4208 4209 let x = ${o.getByOffset("global_idx")}; 4210 ${c} 4211 let x_in = x + bias; 4212 ${u.setByOffset("global_idx",YA("x_in"))} 4213 }`};return{name:"FastGeluWithBias",shaderCache:{hint:`${s}`,inputDependencies:["type","type"]},getShaderSource:a,getRunData:i=>({outputs:[{dims:i[0].dims,dataType:i[0].dataType}],programUniforms:[{type:12,data:Math.ceil(r/4)},{type:12,data:n}],dispatchGroup:{x:Math.ceil(r/Oo/4)}})}},Rx=e=>{e.inputs.length<2||$e.size(e.inputs[1].dims)===0?y1(e):e.compute(Lx(e.inputs))}}),Yx,Nx,jx,Ux,_3=et(()=>{Gt(),qt(),on(),tr(),Yx=e=>{if(!e||e.length!==2)throw new Error("Gather requires 2 inputs.")},Nx=(e,t)=>{let r=e[0].dims,n=e[1].dims,s=r.length,a=$e.normalizeAxis(t.axis,s),i=r.slice(0);i.splice(a,1,...n);let o=r[a],l=e[0].dataType===9?4:1,u=Math.ceil($e.size(i)/l),p=[{type:12,data:u},{type:6,data:o},{type:12,data:a},...It(e[0].dims,e[1].dims,i)],d=c=>{let g=Ne("data",e[0].dataType,e[0].dims.length,l),A=Ne("inputIndices",e[1].dataType,e[1].dims.length),m=Pt("output",e[0].dataType,i.length,l),B=h=>{let P=n.length,_=`var indicesIndices${h} = ${A.type.indices}(0);`;for(let w=0;w<P;w++)_+=`${P>1?`indicesIndices${h}[${w}]`:`indicesIndices${h}`} = ${i.length>1?`outputIndices${h}[uniforms.axis + ${w}]`:`outputIndices${h}`};`;_+=` 4214 var idx${h} = ${A.getByIndices(`indicesIndices${h}`)}; 4215 if (idx${h} < 0) { 4216 idx${h} = idx${h} + uniforms.axisDimLimit; 4217 } 4218 var dataIndices${h} : ${g.type.indices}; 4219 `;for(let w=0,b=0;w<s;w++)w===a?(_+=`${s>1?`dataIndices${h}[${w}]`:`dataIndices${h}`} = u32(idx${h});`,b+=P):(_+=`${s>1?`dataIndices${h}[${w}]`:`dataIndices${h}`} = ${i.length>1?`outputIndices${h}[${b}]`:`outputIndices${h}`};`,b++);return _},f;if(e[0].dataType===9){let h=(P,_,w="")=>` 4220 let outputIndices${_} = ${m.offsetToIndices(`outputOffset + ${_}u`)}; 4221 ${B(_)}; 4222 let offset${_} = ${g.indicesToOffset(`dataIndices${_}`)}; 4223 let index${_} = offset${_} / 4u; 4224 let component${_} = offset${_} % 4u; 4225 ${P}[${_}] = ${w}(${g.getByOffset(`index${_}`)}[component${_}]); 4226 `;f=` 4227 let outputOffset = global_idx * ${l}; 4228 var value = vec4<u32>(0); 4229 ${h("value",0,"u32")} 4230 ${h("value",1,"u32")} 4231 ${h("value",2,"u32")} 4232 ${h("value",3,"u32")} 4233 ${m.setByOffset("global_idx","value")} 4234 `}else f=` 4235 let outputIndices = ${m.offsetToIndices("global_idx")}; 4236 ${B("")}; 4237 let value = ${g.getByIndices("dataIndices")}; 4238 ${m.setByOffset("global_idx","value")}; 4239 `;return` 4240 ${c.registerUniform("outputSize","u32").registerUniform("axisDimLimit","i32").registerUniform("axis","u32").declareVariables(g,A,m)} 4241 ${c.mainStart()} 4242 ${c.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} 4243 ${f} 4244 }`};return{name:"Gather",shaderCache:{hint:t.cacheKey,inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:i,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:p}),getShaderSource:d}},jx=e=>Mr({axis:e.axis}),Ux=(e,t)=>{let r=e.inputs;Yx(r),e.compute(Nx(e.inputs,t))}}),Wx,Vx,Qx,w3=et(()=>{Gt(),qt(),tr(),Wx=(e,t,r,n,s,a,i,o,l)=>{let u=[{type:12,data:a},{type:12,data:n},{type:12,data:s},{type:12,data:r},{type:12,data:i},{type:12,data:o},{type:12,data:l}],p=[a];u.push(...It(t.dims,p));let d=c=>{let g=Ne("indices_data",t.dataType,t.dims.length),A=Pt("input_slice_offsets_data",12,1,1),m=[g,A],B=[{name:"output_size",type:"u32"},{name:"batch_dims",type:"u32"},{name:"input_dims",type:"u32",length:s.length},{name:"sizes_from_slice_dims_data",type:"u32",length:r.length},{name:"num_slices_per_batch",type:"u32"},{name:"input_batch_stride",type:"u32"},{name:"num_slice_dims",type:"u32"}];return` 4245 ${c.registerUniforms(B).declareVariables(...m)} 4246 ${c.mainStart()} 4247 ${c.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 4248 let batch_idx = global_idx / uniforms.num_slices_per_batch; 4249 let base_offset = batch_idx * uniforms.input_batch_stride; 4250 4251 let slice_indices_base_offset = global_idx * uniforms.num_slice_dims; 4252 var relative_slice_offset = 0; 4253 for (var dim_idx = 0u; dim_idx < uniforms.num_slice_dims; dim_idx ++) { 4254 var index = i32(indices_data[dim_idx + slice_indices_base_offset].x); 4255 let input_dim_idx = uniforms.batch_dims + dim_idx; 4256 if (index < 0) { 4257 ${s.length===1?"index += i32(uniforms.input_dims);":"index += i32(uniforms.input_dims[input_dim_idx]);"} 4258 } 4259 ${r.length===1?"relative_slice_offset += index * i32(uniforms.sizes_from_slice_dims_data);":"relative_slice_offset += index * i32(uniforms.sizes_from_slice_dims_data[dim_idx]);"} 4260 } 4261 4262 input_slice_offsets_data[global_idx] = base_offset + u32(relative_slice_offset); 4263 }`};return e.compute({name:"computeSliceOffsets",shaderCache:{hint:`${s.length}_${r.length}`,inputDependencies:["rank"]},getRunData:()=>
vendor: 13,294 bytes, lines 4263-4414
4263({outputs:[{dims:p,dataType:e.inputs[1].dataType}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:u}),getShaderSource:d},{inputs:[t],outputs:[-1]})[0]},Vx=(e,t)=>{let r=e.inputs,n=r[0].dims,s=r[0].dataType,a=r[1].dims,i=a[a.length-1],o=$e.sizeToDimension(a,a.length-1),l=$e.sizeFromDimension(n,t.batchDims+i),u=$e.sizeToDimension(n,t.batchDims),p=$e.sizeFromDimension(n,t.batchDims),d=o/u,c=new Array(i),g=l;for(let _=0;_<i;++_)c[i-1-_]=g,g*=n[t.batchDims+i-1-_];let A=Wx(e,r[1],c,t.batchDims,n,o,d,p,i),m=t.batchDims+i;if(m>n.length)throw new Error("last dimension of indices must not be larger than rank of input tensor");let B=a.slice(0,-1).concat(n.slice(m)),f=$e.size(B),h=[{type:12,data:f},{type:12,data:l},...It(r[0].dims,A.dims,B)],P=_=>{let w=Ne("data",r[0].dataType,r[0].dims.length),b=Ne("slice_offsets",12,A.dims.length),v=Pt("output",r[0].dataType,B.length);return` 4264 ${_.registerUniform("output_size","u32").registerUniform("slice_size","u32").declareVariables(w,b,v)} 4265 ${_.mainStart()} 4266 ${_.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 4267 let slice_offset = slice_offsets[global_idx / uniforms.slice_size]; 4268 output[global_idx] = data[u32(slice_offset) + global_idx % uniforms.slice_size]; 4269 }`};e.compute({name:"GatherND",shaderCache:{hint:t.cacheKey,inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:B,dataType:s}],dispatchGroup:{x:Math.ceil(f/64)},programUniforms:h}),getShaderSource:P},{inputs:[r[0],A]})},Qx=e=>({batchDims:e.batch_dims,cacheKey:""})}),Hx,Kx,qx,Xx,y3=et(()=>{Gt(),qt(),on(),tr(),Hx=(e,t)=>{if(e.length<3||e.length>4)throw new Error("GatherBlockQuantized requires 3 or 4 inputs.");let r=$e.normalizeAxis(t.quantizeAxis,e[0].dims.length),n=t.blockSize,s=e[0],a=e[2],i=e.length===4?e[3]:void 0;if(a.dims.length!==s.dims.length||!s.dims.map((o,l)=>l===r?Math.ceil(o/n)===a.dims[l]:o===a.dims[l]).reduce((o,l)=>o&&l,!0))throw new Error("Scales must have the same rank as the input tensor and the dims should match except on gatherAxis.");if(i){if(i.dataType!==s.dataType)throw new Error("Zero point must have the same data type as the input tensor.");if(i.dims.length!==a.dims.length||!i.dims.map((o,l)=>o===a.dims[l]).reduce((o,l)=>o&&l,!0))throw new Error("Zero point must have the same rank as the input tensor and the dims should match except on quantizeAxis.")}},Kx=(e,t)=>{let r=e[0].dims,n=e[1].dims,s=r.length,a=$e.normalizeAxis(t.gatherAxis,s),i=$e.normalizeAxis(t.quantizeAxis,s),o=r.slice(0);o.splice(a,1,...n);let l=$e.size(o),u=e[2].dataType,p=e[0].dataType===22,d=[{type:12,data:l},{type:12,data:i},{type:12,data:a},{type:12,data:t.blockSize},...It(...e.map((g,A)=>g.dims),o)],c=g=>{let A=Ne("data",e[0].dataType,e[0].dims.length),m=Ne("inputIndices",e[1].dataType,e[1].dims.length),B=Ne("scales",e[2].dataType,e[2].dims.length),f=e.length>3?Ne("zeroPoint",e[3].dataType,e[3].dims.length):void 0,h=Pt("output",u,o.length),P=[A,m,B];f&&P.push(f);let _=[{name:"output_size",type:"u32"},{name:"quantize_axis",type:"u32"},{name:"gather_axis",type:"u32"},{name:"block_size",type:"u32"}];return` 4270 ${g.registerUniforms(_).declareVariables(...P,h)} 4271 ${g.mainStart()} 4272 let output_indices = ${h.offsetToIndices("global_idx")}; 4273 var indices_indices = ${m.type.indices}(0); 4274 ${n.length>1?` 4275 for (var i: u32 = 0; i < ${n.length}; i++) { 4276 let index = ${h.indicesGet("output_indices","uniforms.gather_axis + i")}; 4277 ${m.indicesSet("indices_indices","i","index")}; 4278 }`:`indices_indices = ${h.indicesGet("output_indices","uniforms.gather_axis")};`}; 4279 var data_indices = ${A.type.indices}(0); 4280 for (var i: u32 = 0; i < uniforms.gather_axis; i++) { 4281 let index = ${h.indicesGet("output_indices","i")}; 4282 ${A.indicesSet("data_indices","i","index")}; 4283 } 4284 var index_from_indices = ${m.getByIndices("indices_indices")}; 4285 if (index_from_indices < 0) { 4286 index_from_indices += ${r[a]}; 4287 } 4288 ${A.indicesSet("data_indices","uniforms.gather_axis","u32(index_from_indices)")}; 4289 for (var i = uniforms.gather_axis + 1; i < ${o.length}; i++) { 4290 let index = ${h.indicesGet("output_indices",`i + ${n.length} - 1`)}; 4291 ${A.indicesSet("data_indices","i","index")}; 4292 } 4293 let data_offset = ${A.indicesToOffset("data_indices")}; 4294 let data_index = data_offset % 8; 4295 // Convert 4-bit packed data to 8-bit packed data. 4296 let packed_4bit_quantized_data = ${A.getByOffset("data_offset / 8")}; 4297 let packed_8bit_quantized_data = (packed_4bit_quantized_data >> (4 * (data_index % 2))) & 0x0f0f0f0f; 4298 let quantized_data_vec = ${p?"unpack4xI8":"unpack4xU8"}(u32(packed_8bit_quantized_data)); 4299 let quantized_data = quantized_data_vec[data_index / 2]; 4300 var scale_indices = data_indices; 4301 let quantize_axis_index = ${B.indicesGet("data_indices","uniforms.quantize_axis")} / uniforms.block_size; 4302 ${B.indicesSet("scale_indices","uniforms.quantize_axis","quantize_axis_index")}; 4303 var scale = ${B.getByIndices("scale_indices")}; 4304 ${f?` 4305 let zero_point_indices = scale_indices; 4306 let zero_point_offset = ${f.indicesToOffset("zero_point_indices")}; 4307 let zero_point_index = zero_point_offset % 8; 4308 let packed_4bit_zero_points = ${f.getByOffset("zero_point_offset / 8")}; 4309 let packed_8bit_zero_points = (packed_4bit_zero_points >> (4 * (zero_point_index % 2))) & 0x0f0f0f0f; 4310 let zero_point_vec = ${p?"unpack4xI8":"unpack4xU8"}(u32(packed_8bit_zero_points)); 4311 let zero_point = zero_point_vec[zero_point_index / 2];`:"var zero_point = 0"}; 4312 let dequantized_data = ${Rn(u)}(quantized_data - zero_point) * scale; 4313 ${h.setByOffset("global_idx","dequantized_data")}; 4314 }`};return{name:"GatherBlockQuantized",shaderCache:{hint:`${t.cacheKey};${e.filter((g,A)=>A!==1).map(g=>g.dims.join("_")).join(";")}`,inputDependencies:Array.from({length:e.length},(g,A)=>"rank")},getRunData:()=>({outputs:[{dims:o,dataType:u}],dispatchGroup:{x:Math.ceil(l/64)},programUniforms:d}),getShaderSource:c}},qx=(e,t)=>{let r=e.inputs;Hx(r,t),e.compute(Kx(e.inputs,t))},Xx=e=>Mr({blockSize:e.blockSize,gatherAxis:e.gatherAxis,quantizeAxis:e.quantizeAxis})}),Zx,Jx,eE,tE,b3=et(()=>{Gt(),qt(),on(),tr(),Zx=e=>{if(!e||e.length!==2)throw new Error("GatherElements requires 2 inputs.");if(e[0].dims.length<1)throw new Error("GatherElements requires that the data input be rank >= 1.");if(e[0].dims.length!==e[1].dims.length)throw new Error(`GatherElements requires that the data input and 4315 indices input tensors be of same rank.`)},Jx=(e,t)=>{let r=e[0].dims,n=e[0].dataType,s=r.length,a=e[1].dims,i=e[1].dataType,o=$e.normalizeAxis(t.axis,s),l=r[o],u=a.slice(0),p=$e.size(u),d=Ne("input",n,s),c=Ne("indicesInput",i,a.length),g=Pt("output",n,u.length),A=[{type:12,data:p},{type:6,data:l},{type:12,data:o}];return A.push(...It(r,a,u)),{name:"GatherElements",shaderCache:{inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:u,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(p/64)},programUniforms:A}),getShaderSource:m=>` 4316 ${m.registerUniform("outputSize","u32").registerUniform("axisDimLimit","i32").registerUniform("axis","u32").declareVariables(d,c,g)} 4317 ${m.mainStart()} 4318 ${m.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} 4319 4320 let outputIndices = ${g.offsetToIndices("global_idx")}; 4321 4322 var idx = ${c.getByOffset("global_idx")}; 4323 if (idx < 0) { 4324 idx = idx + uniforms.axisDimLimit; 4325 } 4326 var inputIndices = ${d.type.indices}(outputIndices); 4327 ${d.indicesSet("inputIndices","uniforms.axis","u32(idx)")}; 4328 let value = ${d.getByIndices("inputIndices")}; 4329 4330 ${g.setByOffset("global_idx","value")}; 4331 }`}},eE=e=>Mr({axis:e.axis}),tE=(e,t)=>{let r=e.inputs;Zx(r),e.compute(Jx(e.inputs,t))}}),rE,nE,sE,aE,P3=et(()=>{Gt(),qt(),tr(),rE=e=>{if(!e)throw new Error("Input is missing");if(e.length<2||e.length>3)throw new Error("Invaid input number.");if(e.length===3&&e[2].dims.length>2)throw new Error("Invalid input shape of C");if(e[0].dataType!==e[1].dataType||e.length===3&&e[0].dataType!==e[2].dataType)throw new Error("Input types are mismatched")},nE=(e,t)=>{let r=e[0].dims.slice(),n=e[1].dims.slice(),[s,a,i]=Av.getShapeOfGemmResult(r,t.transA,n,t.transB,e.length===3?e[2].dims:void 0),o=[s,a];if(!o)throw new Error("Can't use gemm on the given tensors");let l=16,u=Math.ceil(a/l),p=Math.ceil(s/l),d=!0,c=$e.size(o),g=[{type:12,data:d?u:c},{type:12,data:s},{type:12,data:a},{type:12,data:i},{type:1,data:t.alpha},{type:1,data:t.beta}],A=["type","type"];e.length===3&&(g.push(...It(e[2].dims)),A.push("rank")),g.push(...It(o));let m=f=>{let h="";t.transA&&t.transB?h="value += a[k * uniforms.M + m] * b[n * uniforms.K + k];":t.transA&&!t.transB?h="value += a[k * uniforms.M + m] * b[k * uniforms.N + n];":!t.transA&&t.transB?h="value += a[m * uniforms.K + k] * b[n * uniforms.K + k];":!t.transA&&!t.transB&&(h="value += a[m * uniforms.K + k] * b[k * uniforms.N + n];");let P=t.alpha===1?"":"value *= uniforms.alpha;",_=Ne("a",e[0].dataType,e[0].dims),w=Ne("b",e[1].dataType,e[1].dims),b=_.type.value,v=null,y=[_,w];e.length===3&&(v=Ne("c",e[2].dataType,e[2].dims.length),y.push(v));let $=Pt("output",e[0].dataType,o.length);y.push($);let k=[{name:"output_size",type:"u32"},{name:"M",type:"u32"},{name:"N",type:"u32"},{name:"K",type:"u32"},{name:"alpha",type:"f32"},{name:"beta",type:"f32"}];return` 4332 ${f.registerUniforms(k).declareVariables(...y)} 4333 4334 ${f.mainStart()} 4335 ${f.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 4336 4337 let m = global_idx / uniforms.N; 4338 let n = global_idx % uniforms.N; 4339 4340 var value = ${b}(0); 4341 for (var k: u32 = 0u; k < uniforms.K; k++) { 4342 ${h} 4343 } 4344 4345 ${P} 4346 ${v!=null?`let cOffset = ${v.broadcastedIndicesToOffset("vec2(m, n)",$)}; value += ${b}(uniforms.beta) * ${v.getByOffset("cOffset")};`:""} 4347 output[global_idx] = value; 4348 }`},B=f=>{let h=Ne("a",e[0].dataType,e[0].dims),P=Ne("b",e[1].dataType,e[1].dims),_=null,w=[h,P];e.length===3&&(_=Ne("c",e[2].dataType,e[2].dims.length),w.push(_));let b=Pt("output",e[0].dataType,o.length);w.push(b);let v=[{name:"num_tile_n",type:"u32"},{name:"M",type:"u32"},{name:"N",type:"u32"},{name:"K",type:"u32"},{name:"alpha",type:"f32"},{name:"beta",type:"f32"}],y="",$="";t.transA&&t.transB?($=` 4349 var col = tile_row_start + local_id.x; 4350 var row = k_start + local_id.y; 4351 if (col < uniforms.M && row < uniforms.K) { 4352 tile_a[local_id.y][local_id.x] = a[row * uniforms.M + col]; 4353 } else { 4354 tile_a[local_id.y][local_id.x] = ${h.type.value}(0); 4355 } 4356 4357 col = k_start + local_id.x; 4358 row = tile_col_start + local_id.y; 4359 if (col < uniforms.K && row < uniforms.N) { 4360 tile_b[local_id.y][local_id.x] = b[row * uniforms.K + col]; 4361 } else { 4362 tile_b[local_id.y][local_id.x] = ${P.type.value}(0); 4363 } 4364 `,y="value += tile_a[k][local_id.y] * tile_b[local_id.x][k];"):t.transA&&!t.transB?($=` 4365 var col = tile_row_start + local_id.x; 4366 var row = k_start + local_id.y; 4367 if (col < uniforms.M && row < uniforms.K) { 4368 tile_a[local_id.y][local_id.x] = a[row * uniforms.M + col]; 4369 } else { 4370 tile_a[local_id.y][local_id.x] = ${h.type.value}(0); 4371 } 4372 4373 col = tile_col_start + local_id.x; 4374 row = k_start + local_id.y; 4375 if (col < uniforms.N && row < uniforms.K) { 4376 tile_b[local_id.y][local_id.x] = b[row * uniforms.N + col]; 4377 } else { 4378 tile_b[local_id.y][local_id.x] = ${P.type.value}(0); 4379 } 4380 `,y="value += tile_a[k][local_id.y] * tile_b[k][local_id.x];"):!t.transA&&t.transB?($=` 4381 var col = k_start + local_id.x; 4382 var row = tile_row_start + local_id.y; 4383 if (col < uniforms.K && row < uniforms.M) { 4384 tile_a[local_id.y][local_id.x] = a[row * uniforms.K + col]; 4385 } else { 4386 tile_a[local_id.y][local_id.x] = ${h.type.value}(0); 4387 } 4388 4389 col = k_start + local_id.x; 4390 row = tile_col_start + local_id.y; 4391 if (col < uniforms.K && row < uniforms.N) { 4392 tile_b[local_id.y][local_id.x] = b[row * uniforms.K + col]; 4393 } else { 4394 tile_b[local_id.y][local_id.x] = ${P.type.value}(0); 4395 } 4396 `,y="value += tile_a[local_id.y][k] * tile_b[local_id.x][k];"):!t.transA&&!t.transB&&($=` 4397 var col = k_start + local_id.x; 4398 var row = tile_row_start + local_id.y; 4399 if (col < uniforms.K && row < uniforms.M) { 4400 tile_a[local_id.y][local_id.x] = a[row * uniforms.K + col]; 4401 } else { 4402 tile_a[local_id.y][local_id.x] = ${h.type.value}(0); 4403 } 4404 4405 col = tile_col_start + local_id.x; 4406 row = k_start + local_id.y; 4407 if (col < uniforms.N && row < uniforms.K) { 4408 tile_b[local_id.y][local_id.x] = b[row * uniforms.N + col]; 4409 } else { 4410 tile_b[local_id.y][local_id.x] = ${P.type.value}(0); 4411 } 4412 `,y="value += tile_a[local_id.y][k] * tile_b[k][local_id.x];");let k=t.alpha===1?"":"value *= uniforms.alpha;";return` 4413 ${f.registerUniforms(v).declareVariables(...w)} 4414 var<workgroup> tile_a: array<array<${h.type.storage}, ${l}>, ${l}>;
4415 var<workgroup> tile_b: array<array<${P.type.storage}, ${l}>, ${l}>; 4416 ${f.mainStart([l,l,1])} 4417 let tile_col_start = (workgroup_index % uniforms.num_tile_n) * ${l}; 4418 let tile_row_start = (workgroup_index / uniforms.num_tile_n) * ${l}; 4419 let num_tiles = (uniforms.K - 1) / ${l} + 1; 4420 var k_start = 0u; 4421 var value = ${b.type.value}(0); 4422 for (var t: u32 = 0u; t < num_tiles; t++) { 4423 ${$} 4424 k_start = k_start + ${l}; 4425 workgroupBarrier(); 4426 4427 for (var k: u32 = 0u; k < ${l}; k++) { 4428 ${y} 4429 } 4430 workgroupBarrier(); 4431 } 4432 4433 ${k} 4434 let m = tile_row_start + local_id.y; 4435 let n = tile_col_start + local_id.x; 4436 ${_!=null?`let cOffset = ${_.broadcastedIndicesToOffset("vec2(m, n)",b)}; value += ${b.type.value}(uniforms.beta) * ${_.getByOffset("cOffset")};`:""} 4437 if (m < uniforms.M && n < uniforms.N) { 4438 output[m * uniforms.N + n] = value; 4439 } 4440 }`};return d?{name:"GemmShared",shaderCache:{hint:`${t.cacheKey}`,inputDependencies:A},getRunData:()=>({outputs:[{dims:o,dataType:e[0].dataType}],dispatchGroup:{x:u*p},programUniforms:g}),getShaderSource:B}:{name:"Gemm",shaderCache:{hint:`${t.cacheKey}`,inputDependencies:A},getRunData:()=>({outputs:[{dims:o,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(c/64)},programUniforms:g}),getShaderSource:m}},sE=e=>{let t=e.transA,r=e.transB,n=e.alpha,s=e.beta;return{transA:t,transB:r,alpha:n,beta:s,cacheKey:`${e.transA};${e.transB};${e.alpha===1}`}},aE=(e,t)=>{rE(e.inputs),e.compute(nE(e.inputs,t))}}),ha,Sa,Xi,Zi,iE,oE,lE,uE,cE,dE,pE,gE,AE,hE,M3=et(()=>{Gt(),qt(),on(),tr(),[ha,Sa,Xi,Zi]=[0,1,2,3],iE=e=>{if(e[0].dims.length!==4)throw new Error("only 4-D tensor is supported.");if(e[0].dims.length!==e[1].dims.length)throw new Error("input dimensions must be equal to grid dimensions");if(e[0].dims.length-2!==e[1].dims[e[1].dims.length-1])throw new Error(`last dimension of grid must be equal to ${e[0].dims.length-2}`);if(e[0].dims[0]!==e[1].dims[0])throw new Error("grid batch size must match input batch size")},oE=` 4441 fn gs_get_cubic_coeffs(x: f32) -> vec4<f32> { 4442 let cubic_alpha = -0.75f; 4443 let x_abs = abs(x); 4444 var coeffs: vec4<f32>; 4445 coeffs[0] = (((cubic_alpha * (x_abs + 1) - 5 * cubic_alpha) * (x_abs + 1) + 8 * cubic_alpha) * (x_abs + 1) - 4 * cubic_alpha); 4446 coeffs[1] = (((cubic_alpha + 2) * x_abs - (cubic_alpha + 3)) * x_abs * x_abs + 1); 4447 coeffs[2] = (((cubic_alpha + 2) * (1 - x_abs) - (cubic_alpha + 3)) * (1 - x_abs) * (1 - x_abs) + 1); 4448 coeffs[3] = (((cubic_alpha * (2 - x_abs) - 5 * cubic_alpha) * (2 - x_abs) + 8 * cubic_alpha) * (2 - x_abs) - 4 * cubic_alpha); 4449 return coeffs; 4450 } 4451`,lE=e=>` 4452 fn gs_bicubic_interpolate(p: mat4x4<${e}>, x: f32, y: f32) -> ${e} { 4453 var v: vec4<f32>; 4454 var coeffs = gs_get_cubic_coeffs(x); 4455 for (var i = 0; i < 4; i++) { 4456 v[i] = coeffs[0] * p[i][0] + coeffs[1] * p[i][1] + coeffs[2] * p[i][2] + coeffs[3] * p[i][3]; 4457 } 4458 coeffs = gs_get_cubic_coeffs(y); 4459 let pixel = ${e}(coeffs[0] * v[0] + coeffs[1] * v[1] + coeffs[2] * v[2] + coeffs[3] * v[3]); 4460 return pixel; 4461 } 4462`,uE=e=>` 4463 fn gs_denormalize(n: f32, length: i32) -> f32 { 4464 ${e.alignCorners===0?` 4465 // alignCorners: false => [-1, 1] to [-0.5, length - 0.5] 4466 return ((n + 1.0) * f32(length) - 1.0) / 2.0; 4467 `:` 4468 // alignCorners: true => [-1, 1] to [0, length - 1] 4469 return (n + 1.0) / 2.0 * (f32(length - 1)); 4470 `} 4471 } 4472`,cE=e=>` 4473 ${e.paddingMode==="reflection"?` 4474 fn gs_reflect(x: i32, x_min: f32, x_max: f32) -> u32 { 4475 var dx = 0.0; 4476 var fx = f32(x); 4477 let range = x_max - x_min; 4478 if (fx < x_min) { 4479 dx = x_min - fx; 4480 let n = u32(dx / range); 4481 let r = dx - f32(n) * range; 4482 if (n % 2 == 0) { 4483 fx = x_min + r; 4484 } else { 4485 fx = x_max - r; 4486 } 4487 } else if (fx > x_max) { 4488 dx = fx - x_max; 4489 let n = u32(dx / range); 4490 let r = dx - f32(n) * range; 4491 if (n % 2 == 0) { 4492 fx = x_max - r; 4493 } else { 4494 fx = x_min + r; 4495 } 4496 } 4497 return u32(fx); 4498 }`:""} 4499`,dE=(e,t,r)=>` 4500 fn pixel_at_grid(r: i32, c: i32, H: i32, W: i32, batch: u32, channel: u32, border: vec4<f32>) -> ${t} { 4501 var pixel = ${t}(0); 4502 var indices = vec4<u32>(0); 4503 indices[${ha}] = batch; 4504 indices[${Sa}] = channel;`+(()=>{switch(r.paddingMode){case"zeros":return` 4505 if (r >= 0 && r < H && c >=0 && c < W) { 4506 indices[${Xi}] = u32(r); 4507 indices[${Zi}] = u32(c); 4508 } else { 4509 return ${t}(0); 4510 } 4511 `;case"border":return` 4512 indices[${Xi}] = u32(clamp(r, 0, H - 1)); 4513 indices[${Zi}] = u32(clamp(c, 0, W - 1)); 4514 `;case"reflection":return` 4515 indices[${Xi}] = gs_reflect(r, border[1], border[3]); 4516 indices[${Zi}] = gs_reflect(c, border[0], border[2]); 4517 `;default:throw new Error(`padding mode ${r.paddingMode} is not supported`)}})()+` 4518 return ${e.getByIndices("indices")}; 4519 } 4520`,pE=(e,t,r)=>(()=>{switch(r.mode){case"nearest":return` 4521 let result = pixel_at_grid(i32(round(y)), i32(round(x)), H_in, W_in, indices[${ha}], indices[${Sa}], border); 4522 `;case"bilinear":return` 4523 let x1 = i32(floor(x)); 4524 let y1 = i32(floor(y)); 4525 let x2 = x1 + 1; 4526 let y2 = y1 + 1; 4527 4528 let p11 = pixel_at_grid(y1, x1, H_in, W_in, indices[${ha}], indices[${Sa}], border); 4529 let p12 = pixel_at_grid(y1, x2, H_in, W_in, indices[${ha}], indices[${Sa}], border); 4530 let p21 = pixel_at_grid(y2, x1, H_in, W_in, indices[${ha}], indices[${Sa}], border); 4531 let p22 = pixel_at_grid(y2, x2, H_in, W_in, indices[${ha}], indices[${Sa}], border); 4532 4533 let dx2 = ${t}(f32(x2) - x); 4534 let dx1 = ${t}(x - f32(x1)); 4535 let dy2 = ${t}(f32(y2) - y); 4536 let dy1 = ${t}(y - f32(y1)); 4537 let result = dy2 * (dx2 * p11 + dx1 * p12) + dy1 * (dx2 * p21 + dx1 * p22); 4538 `;case"bicubic":return` 4539 let x0 = i32(floor(x)) - 1; 4540 let y0 = i32(floor(y)) - 1; 4541 var p: mat4x4<${t}>; 4542 for (var h = 0; h < 4; h++) { 4543 for (var w = 0; w < 4; w++) {
4544 p[h][w] = pixel_at_grid(h + y0, w + x0, H_in, W_in, indices[${ha}], indices[${Sa}], border); 4545 } 4546 } 4547 4548 let dx = x - f32(x0 + 1); 4549 let dy = y - f32(y0 + 1); 4550 let result = gs_bicubic_interpolate(p, dx, dy); 4551 `;default:throw new Error(`mode ${r.mode} is not supported`)}})()+`${e.setByOffset("global_idx","result")}`,gE=(e,t)=>{let r=Ne("x",e[0].dataType,e[0].dims.length),n=[e[1].dims[0],e[1].dims[1],e[1].dims[2]],s=Ne("grid",e[1].dataType,n.length,2),a=[e[0].dims[0],e[0].dims[1],e[1].dims[1],e[1].dims[2]];t.format==="NHWC"&&(a=[e[0].dims[0],e[1].dims[1],e[1].dims[2],e[0].dims[3]],[ha,Sa,Xi,Zi]=[0,3,1,2]);let i=Pt("output",e[0].dataType,a.length),o=r.type.value,l=$e.size(a),u=[{type:12,data:l},...It(e[0].dims,n,a)],p=d=>` 4552 ${d.registerUniform("output_size","u32").declareVariables(r,s,i)} 4553 ${oE} 4554 ${lE(o)} 4555 ${uE(t)} 4556 ${cE(t)} 4557 ${dE(r,o,t)} 4558 4559 ${d.mainStart()} 4560 ${d.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 4561 let H_in = i32(uniforms.x_shape[${Xi}]); 4562 let W_in = i32(uniforms.x_shape[${Zi}]); 4563 4564 ${t.alignCorners===0?` 4565 let x_min = -0.5; 4566 let x_max = f32(W_in) - 0.5; 4567 let y_min = -0.5; 4568 let y_max = f32(H_in) - 0.5; 4569 `:` 4570 let x_min = 0.0; 4571 let x_max = f32(W_in) - 1.0; 4572 let y_min = 0.0; 4573 let y_max = f32(H_in) - 1.0; 4574 `}; 4575 let border = vec4<f32>(x_min, y_min, x_max, y_max); 4576 4577 let indices = ${i.offsetToIndices("global_idx")}; 4578 var grid_indices = vec3<u32>(indices[${ha}], indices[${Xi}], indices[${Zi}]); 4579 let nxy = ${s.getByIndices("grid_indices")}; 4580 var x = gs_denormalize(f32(nxy[0]), W_in); 4581 var y = gs_denormalize(f32(nxy[1]), H_in); 4582 4583 ${pE(i,o,t)} 4584 }`;return{name:"GridSample",shaderCache:{hint:`${t.cacheKey}`,inputDependencies:["type","type"]},getRunData:d=>{let c=$e.size(a);return{outputs:[{dims:a,dataType:d[0].dataType}],dispatchGroup:{x:Math.ceil(c/64)},programUniforms:u}},getShaderSource:p}},AE=(e,t)=>{iE(e.inputs),e.compute(gE(e.inputs,t))},hE=e=>Mr({alignCorners:e.align_corners,mode:e.mode,paddingMode:e.padding_mode,format:e.format})}),Hn,mE,fE,oh,_E,Ql,wE,yE=et(()=>{Gt(),qt(),on(),EA(),FA(),tr(),Xa(),Hn=(e,t)=>e.length>t&&e[t].dims.length>0?e[t]:void 0,mE=(e,t)=>{let r=e[0],n=Hn(e,1),s=Hn(e,2),a=Hn(e,3),i=Hn(e,4),o=Hn(e,5),l=Hn(e,6),u=Hn(e,7);if(r.dims.length!==3&&r.dims.length!==5)throw new Error("Input query is expected to have 3 or 5 dimensions");let p=r.dims[0],d=r.dims[1],c=r.dims.length===3?r.dims[2]:t.numHeads*r.dims[4],g=d,A=0,m=0,B=Math.floor(c/t.numHeads);if(l&&u&&$e.size(l.dims)&&$e.size(u.dims)){if(l.dims.length!==4)throw new Error('Input "past_key" is expected to have 4 dimensions');if(l.dims[0]!==p||l.dims[1]!==t.numHeads||l.dims[3]!==B)throw new Error('Input "past_key" shape (batch_size, num_heads, past_sequence_length, head_size)');if(u.dims[0]!==p||u.dims[1]!==t.numHeads||u.dims[3]!==B)throw new Error('Input "past_value" shape (batch_size, num_heads, past_sequence_length, head_size)');if(l.dims[2]!==u.dims[2])throw new Error('Input "past_key" and "past_value" shall have same dim 2 (past_sequence_length)');if(u.dims.length!==4)throw new Error('Input "past_value" is expected to have 4 dimensions');A=l.dims[2],m=l.dims[2]}else if(l&&$e.size(l.dims)||u&&$e.size(u.dims))throw new Error('Input "past_key" and "past_value" shall be both present or both absent');let f;if(n&&$e.size(n.dims)>0){if(r.dims.length!==3)throw new Error('Input "query" is expected to have 3 dimensions when key is given');if(n.dims.length<3||n.dims.length>5)throw new Error('Input "key" is expected to have 3, 4, or 5 dimensions');if(r.dims[0]!==n.dims[0])throw new Error('Input "query" and "key" shall have same dim 0 (batch size)');if(n.dims.length===3){if(n.dims[2]!==r.dims[2])throw new Error('Input "query" and "key" shall have same dim 2 (hidden_size)');f=2,g=n.dims[1]}else if(n.dims.length===5){if(n.dims[2]!==t.numHeads||n.dims[3]!==2||n.dims[4]!==B)throw new Error('Expect "key" shape (batch_size, kv_sequence_length, num_heads, 2, head_size) for packed kv');if(s)throw new Error('Expect "value" be none when "key" has packed kv format.');f=5,g=n.dims[1]}else{if(n.dims[1]!==t.numHeads||n.dims[3]!==B)throw new Error('Expect "key" shape (batch_size, num_heads, kv_sequence_length, head_size) for past_key');f=0,g=n.dims[2]}}else{if(r.dims.length!==5)throw new Error('Input "query" is expected to have 5 dimensions when key is empty');if(r.dims[2]!==t.numHeads||r.dims[3]!==3)throw new Error('Expect "query" shape (batch_size, kv_sequence_length, num_heads, 3, head_size) for packed kv');f=3}if(a&&$e.size(a.dims)>0){if(a.dims.length!==1)throw new Error('Input "bias" is expected to have 1 dimension');
vendor: 14,708 bytes, lines 4584-4645
4584if(n&&n.dims.length===5&&n.dims[3]===2)throw new Error("bias is not allowed for packed kv.")}let h=A+g,P=0;if(i&&$e.size(i.dims)>0){P=8;let v=i.dims;throw v.length===1?v[0]===p?P=1:v[0]===3*p+2&&(P=3):v.length===2&&v[0]===p&&v[1]===h&&(P=5),P===8?new Error('Input "key_padding_mask" shape shall be (batch_size) or (batch_size, total_sequence_length)'):new Error("Mask not supported")}let _=!1,w=c;if(s&&$e.size(s.dims)>0){if(s.dims.length!==3&&s.dims.length!==4)throw new Error('Input "value" is expected to have 3 or 4 dimensions');if(r.dims[0]!==s.dims[0])throw new Error('Input "query" and "value" shall have same dim 0 (batch_size)');if(s.dims.length===3){if(g!==s.dims[1])throw new Error('Input "key" and "value" shall have the same dim 1 (kv_sequence_length)');w=s.dims[2]}else{if(g!==s.dims[2])throw new Error('Input "key" and "value" shall have the same dim 2 (kv_sequence_length)');w=s.dims[1]*s.dims[3],_=!0}}let b=!1;if(i&&$e.size(i.dims)>0)throw new Error("Key padding mask is not supported");if(o&&$e.size(o.dims)>0){if(o.dims.length!==4)throw new Error('Input "attention_bias" is expected to have 4 dimensions');if(o.dims[0]!==p||o.dims[1]!==t.numHeads||o.dims[2]!==d||o.dims[3]!==h)throw new Error('Expect "attention_bias" shape (batch_size, num_heads, sequence_length, total_sequence_length)')}return{batchSize:p,sequenceLength:d,pastSequenceLength:A,kvSequenceLength:g,totalSequenceLength:h,maxSequenceLength:m,inputHiddenSize:0,hiddenSize:c,vHiddenSize:w,headSize:B,vHeadSize:Math.floor(w/t.numHeads),numHeads:t.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:t.maskFilterValue,maskType:P,scale:t.scale,broadcastResPosBias:b,passPastInKv:_,qkvFormat:f}},fE=e=>Mr({...e}),oh=Mr({perm:[0,2,1,3]}),_E=(e,t,r,n,s,a,i)=>{let o=[n,s,a],l=$e.size(o),u=[{type:12,data:l},{type:12,data:i},{type:12,data:a}],p=d=>{let c=Pt("qkv_with_bias",t.dataType,o),g=Ne("qkv",t.dataType,o),A=Ne("bias",r.dataType,o),m=[{name:"output_size",type:"u32"},{name:"bias_offset",type:"u32"},{name:"hidden_size",type:"u32"}];return` 4585 ${d.registerUniforms(m).declareVariables(g,A,c)} 4586 ${d.mainStart()} 4587 ${d.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 4588 let bias_offset_idx = (global_idx % uniforms.hidden_size) + uniforms.bias_offset; 4589 4590 qkv_with_bias[global_idx] = qkv[global_idx] + bias[bias_offset_idx]; 4591 }`};return e.compute({name:"MultiHeadAttentionAddBias",shaderCache:{inputDependencies:["type","type"]},getRunData:()=>({outputs:[{dims:o,dataType:t.dataType,gpuDataType:0}],dispatchGroup:{x:Math.ceil(l/64)},programUniforms:u}),getShaderSource:p},{inputs:[t,r],outputs:[-1]})[0]},Ql=(e,t,r,n,s,a,i,o)=>{let l=a;if(i&&$e.size(i.dims)>0){if(n===1)throw new Error("AddBiasReshape is not implemented. Please export your model with packed QKV or KV");return l=_E(e,a,i,t,n,r*s,o),l=l.reshape([t,n,r,s]),r===1||n===1?l:e.compute(is(l,oh.perm),{inputs:[l],outputs:[-1]})[0]}else return a.dims.length===3&&(l=a.reshape([t,n,r,s])),r===1||n===1?l:e.compute(is(l,oh.perm),{inputs:[l],outputs:[-1]})[0]},wE=(e,t)=>{let r=mE(e.inputs,t),n=e.inputs[0],s=Hn(e.inputs,1),a=Hn(e.inputs,2),i=Hn(e.inputs,3),o=Hn(e.inputs,4),l=Hn(e.inputs,5),u=Hn(e.inputs,6),p=Hn(e.inputs,7);if(n.dims.length===5)throw new Error("Packed QKV is not implemented");if(s?.dims.length===5)throw new Error("Packed KV is not implemented");let d=s&&a&&s.dims.length===4&&a.dims.length===4,c=Ql(e,r.batchSize,r.numHeads,r.sequenceLength,r.headSize,n,i,0);if(d)return Nl(e,c,s,a,o,void 0,u,p,l,r);if(!s||!a)throw new Error("key and value must be provided");let g=Ql(e,r.batchSize,r.numHeads,r.kvSequenceLength,r.headSize,s,i,r.hiddenSize),A=Ql(e,r.batchSize,r.numHeads,r.kvSequenceLength,r.vHeadSize,a,i,2*r.hiddenSize);Nl(e,c,g,A,o,void 0,u,p,l,r)}}),bE,PE,ME,vE,lh,BE,xE,EE=et(()=>{Gt(),qt(),on(),tr(),bE=e=>{if(!e||e.length<1)throw new Error("too few inputs")},PE=(e,t)=>{let r=[],n=t.numOutputs;return e[1].dims[0]>0&&(e[1].getBigInt64Array().forEach(s=>r.push(Number(s))),n=r.length),Mr({numOutputs:n,axis:t.axis,splitSizes:r})},ME=e=>` 4592fn calculateOutputIndex(index: u32) -> u32 { 4593 for (var i: u32 = 0u; i < ${e}u; i += 1u ) { 4594 if (index < ${xt("uniforms.size_in_split_axis","i",e)}) { 4595 return i; 4596 } 4597 } 4598 return ${e}u; 4599}`,vE=e=>{let t=e.length,r=[];for(let n=0;n<t;++n){let s=e[n].setByIndices("indices","input[global_idx]");t===1?r.push(s):n===0?r.push(`if (output_number == ${n}u) { ${s} }`):n===t-1?r.push(`else { ${s} }`):r.push(`else if (output_number == ${n}) { ${s} }`)}return` 4600 fn writeBufferData(output_number: u32, indices: ${e[0].type.indices}, global_idx: u32) { 4601 ${r.join(` 4602`)} 4603 }`},lh=(e,t)=>{let r=e[0].dims,n=$e.size(r),s=e[0].dataType,a=$e.normalizeAxis(t.axis,r.length),i=new Array(t.numOutputs),o=Ne("input",s,r.length),l=new Array(t.numOutputs),u=[],p=[],d=0,c=[{type:12,data:n}];for(let A=0;A<t.numOutputs;A++){d+=t.splitSizes[A],l[A]=d;let m=r.slice();m[a]=t.splitSizes[A],p.push(m),i[A]=Pt(`output${A}`,s,m.length),u.push({dims:p[A],dataType:e[0].dataType})}c.push({type:12,data:l},...It(r,...p));let g=A=>` 4604 ${A.registerUniform("input_size","u32").registerUniform("size_in_split_axis","u32",l.length).declareVariables(o,...i)} 4605 ${ME(l.length)} 4606 ${vE(i)} 4607 4608 ${A.mainStart()} 4609 ${A.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.input_size")} 4610 4611 var indices = ${o.offsetToIndices("global_idx")}; 4612 var index = ${o.indicesGet("indices",a)}; 4613 let output_number = calculateOutputIndex(index); 4614 if (output_number != 0) { 4615 index -= ${xt("uniforms.size_in_split_axis","output_number - 1u",l.length)}; 4616 ${o.indicesSet("indices",a,"index")}; 4617 } 4618 writeBufferData(output_number, indices, global_idx); 4619 }`;return{name:"Split",shaderCache:{hint:t.cacheKey,inputDependencies:["rank"]},getShaderSource:g,getRunData:()=>({outputs:u,dispatchGroup:{x:Math.ceil(n/64)},programUniforms:c})}},BE=(e,t)=>{bE(e.inputs);let r=e.inputs.length===1?t:PE(e.inputs,t);e.compute(lh(e.inputs,r),{inputs:[0]})},xE=e=>{let t=e.axis,r=e.splitSizes,n=e.numOutputs<0?r.length:e.numOutputs;if(n!==r.length)throw new Error("numOutputs and splitSizes length must be equal");return Mr({axis:t,numOutputs:n,splitSizes:r})}}),DE,kc,IE,TE=et(()=>{Gt(),qt(),on(),tr(),DE=(e,t)=>{let[r,n,s,a]=e,{numHeads:i,rotaryEmbeddingDim:o}=t;if(r.dims.length!==3&&r.dims.length!==4)throw new Error(`Input 'x' is expected to have 3 or 4 dimensions, got ${r.dims.length}`);if(!$e.areEqual(n.dims,[])&&!$e.areEqual(n.dims,[1])&&n.dims.length!==2)throw new Error(`Input 'position_ids' is expected to have 0, 1, or 2 dimensions, got ${n.dims.length}`);if(s.dims.length!==2)throw new Error(`Input 'cos_cache' is expected to have 2 dimensions, got ${s.dims.length}`);if(a.dims.length!==2)throw new Error(`Input 'sin_cache' is expected to have 2 dimensions, got ${a.dims.length}`);if(!$e.areEqual(s.dims,a.dims))throw new Error("Inputs 'cos_cache' and 'sin_cache' are expected to have the same shape");if(o>0&&i===0)throw new Error("num_heads must be provided if rotary_embedding_dim is specified");let l=r.dims[0],u=r.dims[r.dims.length-2],p=s.dims[0],d=$e.sizeFromDimension(r.dims,1)/u,c=o===0?s.dims[1]*2:d/i;if(o>c)throw new Error("rotary_embedding_dim must be less than or equal to head_size");if(n.dims.length===2){if(l!==n.dims[0])throw new Error(`Input 'position_ids' dimension 0 should be of size batch_size, got ${n.dims[0]}`);if(u!==n.dims[1])throw new Error(`Input 'position_ids' dimension 1 should be of size sequence_length, got ${n.dims[1]}`)}if(c/2!==s.dims[1]&&o/2!==s.dims[1])throw new Error(`Input 'cos_cache' dimension 1 should be same as head_size / 2 or rotary_embedding_dim / 2, got ${s.dims[1]}`);if(u>p)throw new Error("Updating cos_cache and sin_cache in RotaryEmbedding is not currently supported")},kc=(e,t)=>{let{interleaved:r,numHeads:n,rotaryEmbeddingDim:s,scale:a}=t,i=e[0].dims[0],o=$e.sizeFromDimension(e[0].dims,1),l=e[0].dims[e[0].dims.length-2],u=o/l,p=e[2].dims[1],d=s===0?p*2:u/n,c=new Array(i,l,u/d,d-p),g=$e.computeStrides(c),A=[{type:1,data:a},{type:12,data:c},{type:12,data:g},...e[0].dims.length===3?new Array({type:12,data:[o,u,d,1]}):[],...e[0].dims.length===4?new Array({type:12,data:[o,d,l*d,1]}):[],...It(e[0].dims,e[1].dims,e[2].dims,e[3].dims,e[0].dims)],m=B=>{let f=Ne("input",e[0].dataType,e[0].dims.length),h=Ne("position_ids",e[1].dataType,e[1].dims.length),P=Ne("cos_cache",e[2].dataType,e[2].dims.length),_=Ne("sin_cache",e[3].dataType,e[3].dims.length),w=Pt("output",e[0].dataType,e[0].dims.length);return B.registerUniforms([{name:"scale",type:"f32"},{name:"global_shape",type:"u32",length:c.length},{name:"global_strides",type:"u32",length:g.length},{name:"input_output_strides",type:"u32",length:g.length}]),` 4620 ${B.declareVariables(f,h,P,_,w)} 4621 4622 ${B.mainStart(Oo)} 4623 let half_rotary_emb_dim = uniforms.${P.name}_shape[1]; 4624 let bsnh = global_idx / uniforms.global_strides % uniforms.global_shape; 4625 let size = uniforms.global_shape[0] * uniforms.global_strides[0]; 4626 ${B.guardAgainstOutOfBoundsWorkgroupSizes("size")} 4627 4628 if (bsnh[3] < half_rotary_emb_dim) { 4629 let position_ids_idx = 4630 ${h.broadcastedIndicesToOffset("bsnh.xy",Pt("",h.type.tensor,2))}; 4631 let position_id = 4632 u32(${h.getByOffset("position_ids_idx")}) + select(0, bsnh[1], position_ids_idx == 0); 4633 let i = dot(bsnh, uniforms.input_output_strides) + select(0, bsnh[3], ${r}); 4634 let j = i + select(half_rotary_emb_dim, 1, ${r}); 4635 let re = ${f.getByOffset("i")} * ${P.get("position_id","bsnh[3]")} - 4636 ${f.getByOffset("j")} * ${_.get("position_id","bsnh[3]")}; 4637 ${w.setByOffset("i","re")} 4638 let im = ${f.getByOffset("i")} * ${_.get("position_id","bsnh[3]")} + 4639 ${f.getByOffset("j")} * ${P.get("position_id","bsnh[3]")}; 4640 ${w.setByOffset("j","im")} 4641 } else { 4642 let k = dot(bsnh, uniforms.input_output_strides) + half_rotary_emb_dim; 4643 ${w.setByOffset("k",f.getByOffset("k"))} 4644 } 4645 }`};return{name:"RotaryEmbedding",shaderCache:{hint:Mr({interleaved:r}).cacheKey,inputDependencies:["rank","rank","rank","rank"]},getShaderSource:m,getRunData:()=>({outputs:[{dims:e[0].dims,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil($e.size(c)/Oo)},programUniforms:A})}},IE=(e,t)=>{DE(e.inputs,t),e.compute(kc(e.inputs,t))}}),CE,$E,uh,SE,kE,v3=et(()=>{on(),Gt(),FA(),yE(),EE(),Xa(),TE(),tr(),CE=(e,t)=>{if(t.doRotary&&e.length<=7)throw new Error("cos_cache and sin_cache inputs are required if do_rotary is specified");let r=e[0],n=e[1],s=e[2],a=e[3],i=e[4];if(t.doRotary!==0&&e.length<=7)throw new Error("cos_cast and sin_cache are expected if do_rotary attribute is non-zero");if(t.localWindowSize!==-1)throw new Error("Local attention is not supported");if(t.softcap!==0)throw new Error("Softcap is not supported");if(t.rotaryInterleaved!==0)throw new Error("Rotary interleaved is not supported");if(t.smoothSoftmax)throw new Error("Smooth softmax is not supported");if(r.dims.length!==3&&r.dims.length!==5)throw new Error("Input query is expected to have 3 or 5 dimensions");let o=!1,l=r.dims[0],u=r.dims[1],p=r.dims.length===3?o?r.dims[2]/3:r.dims[2]:t.numHeads*r.dims[4],d=u,c=0,g=!n||n.dims.length===0,A=Math.floor(g?p/(t.numHeads+2*t.kvNumHeads):p/t.numHeads);g&&(p=A*t.numHeads);let m=a&&a.dims.length!==0,B=i&&i.dims.length!==0;if(m&&a.dims.length===4&&a.dims[0]===l&&a.dims[1]!==t.kvNumHeads&&a.dims[2]===t.kvNumHeads&&a.dims[3]===A)throw new Error("BSNH pastKey/pastValue is not supported");if(m&&B){if(a.dims.length!==4)throw new Error('Input "past_key" is expected to have 4 dimensions');if(i.dims.length!==4)throw new Error('Input "past_value" is expected to have 4 dimensions');c=a.dims[2]}else if(m||B)throw new Error('Input "past_key" and "past_value" shall be both present or both absent');let f=1;if(n&&n.dims.length>0){if(r.dims.length!==3)throw new Error('Input "query" is expected to have 3 dimensions when key is given');if(n.dims.length<3||n.dims.length>5)throw new Error('Input "key" is expected to have 3, 4, or 5 dimensions');if(r.dims[0]!==n.dims[0])throw new Error('Input "query" and "key" shall have same dim 0 (batch size)');if(n.dims.length===3){if(r.dims[2]%n.dims[2]!==0)throw new Error('Dimension 2 of "query" should be a multiple of "key"');d=n.dims[1]}else if(n.dims.length===5){if(n.dims[2]!==t.numHeads||n.dims[3]!==2||n.dims[4]!==A)throw new Error('Expect "key" shape (batch_size, kv_sequence_length, num_heads, 2, head_size) for packed kv');if(s)throw new Error('Expect "value" be none when "key" has packed kv format.');d=n.dims[1]}else{if(n.dims[1]!==t.numHeads||n.dims[3]!==A)throw new Error('Expect "key" shape (batch_size, num_heads, kv_sequence_length, head_size) for past_key');d=n.dims[2]}}else{if(r.dims.length!==3&&r.dims.length!==5)throw new Error('Input "query" is expected to have 3 or 5 dimensions when key is empty');if(r.dims.length===5&&(r.dims[2]!==t.numHeads||r.dims[3]!==3))throw new Error('Expect "query" shape (batch_size, kv_sequence_length, num_heads, 3, head_size) for packed kv');f=3}let h=0,P=!1,_=t.kvNumHeads?A*t.kvNumHeads:p;if(s&&s.dims.length>0){if(s.dims.length!==3&&s.dims.length!==4)throw new Error('Input "value" is expected to have 3 or 4 dimensions');if(r.dims[0]!==s.dims[0])throw new Error('Input "query" and "value" shall have same dim 0 (batch_size)');if(s.dims.length===3){if(d!==s.dims[1])throw new Error('Input "key" and "value" shall have the same dim 1 (kv_sequence_length)');_=s.dims[2]}else{if(d!==s.dims[2])throw new Error('Input "past_key" and "past_value" shall have the same dim 2 (kv_sequence_length)');_=s.dims[1]*s.dims[3],P=!0}}let w=e.length>4?e[5]:void 0;if(w&&w.dims.length!==1&&w.dims[0]!==l)throw new Error('Input "seqlens" is expected to have 1 dimension and the same dim 0 as batch_size');return{batchSize:l,sequenceLength:u,pastSequenceLength:c,kvSequenceLength:d,totalSequenceLength:-1,maxSequenceLength:-1,inputHiddenSize:0,hiddenSize:p,vHiddenSize:_,headSize:A,vHeadSize:Math.floor(_/t.kvNumHeads),numHeads:t.numHeads,kvNumHeads:t.kvNumHeads,nReps:t.numHeads/t.kvNumHeads,pastPresentShareBuffer:!1,maskType:h,scale:t.scale,broadcastResPosBias:!1,passPastInKv:P,qkvFormat:f}},$E=Mr({perm:[0,2,1,3]}),uh=(e,t,r)=>{let n=t,s=r.kvNumHeads;return t.dims.length===3&&r.kvSequenceLength!==0&&(n=t.reshape([r.batchSize,r.kvSequenceLength,s,r.headSize]),n=e.compute(is(n,$E.perm),{inputs:[n],outputs:[-1]})[0]),n},SE=(e,t,r,n)=>{let s=7,a=["type","type"],i=[e*t],o=e*t,l=[{type:12,data:o},{type:12,data:t},{type:12,data:e}],u=p=>{let d=Ne("seq_lens",r.dataType,r.dims),c=Ne("total_seq_lens",n.dataType,n.dims),g=Pt("pos_
4645ids",s,i),A=[{name:"output_size",type:"u32"},{name:"sequence_length",type:"u32"},{name:"batch_size",type:"u32"}];return` 4646 ${p.registerUniforms(A).declareVariables(d,c,g)} 4647 ${p.mainStart()} 4648 ${p.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 4649 let total_sequence_length = u32(${c.getByOffset("0")}); 4650 let is_subsequent_prompt = uniforms.sequence_length > 1 && uniforms.sequence_length != total_sequence_length; 4651 let is_first_prompt = !is_subsequent_prompt && uniforms.sequence_length == total_sequence_length; 4652 let batch_idx = global_idx / uniforms.sequence_length; 4653 let sequence_idx = i32(global_idx % uniforms.sequence_length); 4654 var pos_id: i32 = 0; 4655 let seqlen = ${d.getByOffset("batch_idx")}; 4656 let total_seqlen = seqlen + 1; 4657 if (is_first_prompt) { 4658 if (sequence_idx < total_seqlen) { 4659 pos_id = sequence_idx; 4660 } else { 4661 pos_id = 1; 4662 } 4663 ${g.setByOffset("global_idx","pos_id")} 4664 } else if (is_subsequent_prompt) { 4665 let past_seqlen = total_seqlen - i32(uniforms.sequence_length); 4666 if (past_seqlen + sequence_idx < total_seqlen) { 4667 pos_id = past_seqlen + sequence_idx; 4668 } else { 4669 pos_id = 1; 4670 } 4671 ${g.setByOffset("global_idx","pos_id")} 4672 } else if (global_idx < uniforms.batch_size) { 4673 ${g.setByOffset("global_idx","seqlen")} 4674 }; 4675 } 4676 `};return{name:"GeneratePositionIds",shaderCache:{hint:`${e};${t}`,inputDependencies:a},getRunData:()=>({outputs:[{dims:i,dataType:s}],dispatchGroup:{x:Math.ceil(o/64)},programUniforms:l}),getShaderSource:u}},kE=(e,t)=>{let r=CE(e.inputs,t);if(e.inputs[0].dims.length===5)throw new Error("Packed QKV is not implemented");if(e.inputs[1]?.dims.length===5)throw new Error("Packed KV is not implemented");let n=e.inputs[0],s=e.inputs[1]&&e.inputs[1].dims.length>0?e.inputs[1]:void 0,a=e.inputs[2]&&e.inputs[2].dims.length>0?e.inputs[2]:void 0,i=e.inputs[3]&&e.inputs[3].dims.length!==0?e.inputs[3]:void 0,o=e.inputs[4]&&e.inputs[4].dims.length!==0?e.inputs[4]:void 0,l=e.inputs.length>4?e.inputs[5]:void 0,u=e.inputs.length>5?e.inputs[6]:void 0,p=r.kvNumHeads?r.kvNumHeads:r.numHeads,d=Mr({axis:2,numOutputs:3,splitSizes:[r.numHeads*r.headSize,p*r.headSize,p*r.headSize]}),[c,g,A]=!s&&!a?e.compute(lh([n],d),{inputs:[n],outputs:[-1,-1,-1]}):[n,s,a],m,B;if(t.doRotary){let _=e.compute(SE(r.batchSize,r.sequenceLength,l,u),{inputs:[l,u],outputs:[-1]})[0],w=e.inputs[7],b=e.inputs[8],v=Mr({interleaved:t.rotaryInterleaved!==0,numHeads:r.numHeads,rotaryEmbeddingDim:0,scale:t.scale}),y=[c,_,w,b],$=[-1];m=e.compute(kc(y,v),{inputs:y,outputs:$})[0],y.splice(0,1,g);let k=Mr({interleaved:t.rotaryInterleaved!==0,numHeads:r.kvNumHeads,rotaryEmbeddingDim:0,scale:t.scale});B=e.compute(kc(y,k),{inputs:y,outputs:$})[0]}let f=Ql(e,r.batchSize,r.numHeads,r.sequenceLength,r.headSize,t.doRotary?m:c,void 0,0),h=uh(e,t.doRotary?B:g,r),P=uh(e,A,r);Nl(e,f,h,P,void 0,void 0,i,o,void 0,r,l,u)}}),ch,OE,GE,zE,B3=et(()=>{Gt(),qt(),Xa(),tr(),ch=(e,t,r,n,s,a,i,o)=>{let l=en(a),u=l===1?"f32":`vec${l}f`,p=l===1?"vec2f":`mat2x${l}f`,d=s*i,c=64;d===1&&(c=256);let g=[s,i,a/l],A=[s,i,2],m=["rank","type","type"],B=[];B.push(...It(g,A));let f=h=>{let P=Ne("x",t.dataType,3,l),_=Ne("scale",r.dataType,r.dims),w=Ne("bias",n.dataType,n.dims),b=Pt("output",1,3,2),v=[P,_,w,b];return` 4677 var<workgroup> workgroup_shared : array<${p}, ${c}>; 4678 const workgroup_size = ${c}u; 4679 ${h.declareVariables(...v)} 4680 ${h.mainStart(c)} 4681 let batch = workgroup_index / uniforms.x_shape[1]; 4682 let channel = workgroup_index % uniforms.x_shape[1]; 4683 let hight = uniforms.x_shape[2]; 4684 // initialize workgroup memory 4685 var sum = ${u}(0); 4686 var squared_sum = ${u}(0); 4687 for (var h = local_idx; h < hight; h += workgroup_size) { 4688 let value = ${u}(${P.get("batch","channel","h")}); 4689 sum += value; 4690 squared_sum += value * value; 4691 } 4692 workgroup_shared[local_idx] = ${p}(sum, squared_sum); 4693 workgroupBarrier(); 4694 4695 for (var currSize = workgroup_size >> 1; currSize > 0; currSize = currSize >> 1) { 4696 if (local_idx < currSize) { 4697 workgroup_shared[local_idx] = workgroup_shared[local_idx] + workgroup_shared[local_idx + currSize]; 4698 } 4699 workgroupBarrier(); 4700 } 4701 if (local_idx == 0) { 4702 let sum_final = ${qa("workgroup_shared[0][0]",l)} / f32(hight * ${l}); 4703 let squared_sum_final = ${qa("workgroup_shared[0][1]",l)} / f32(hight * ${l}); 4704 4705 let inv_std_dev = inverseSqrt(squared_sum_final - sum_final * sum_final + f32(${o})); 4706 let channel_scale = inv_std_dev * f32(scale[channel]); 4707 let channel_shift = f32(bias[channel]) - sum_final * channel_scale; 4708 output[workgroup_index] = vec2f(channel_scale, channel_shift); 4709 } 4710 }`};return e.compute({name:"InstanceNormComputeChannelScaleShift",shaderCache:{hint:`${l};${o};${c}`,inputDependencies:m},getRunData:()=>({outputs:[{dims:A,dataType:1}],dispatchGroup:{x:d},programUniforms:B}),getShaderSource:f},{inputs:[t,r,n],outputs:[-1]})[0]},OE=(e,t,r)=>{let n=t[0].dims,s=n,a=2,i=n[0],o=n[1],l=$e.sizeFromDimension(n,a),u=en(l),p=$e.size(s)/u,d=ch(e,t[0],t[1],t[2],i,l,o,r.epsilon),c=[i,o,l/u],g=[i,o],A=["type","none"],m=B=>{let f=Ne("x",t[0].dataType,c.length,u),h=Ne("scale_shift",1,g.length,2),P=Pt("output",t[0].dataType,c.length,u),_=[f,h,P];return` 4711 ${B.registerUniform("output_size","u32").declareVariables(..._)} 4712 ${B.mainStart()} 4713 ${B.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 4714 let outputIndices = ${P.offsetToIndices("global_idx")}; 4715 let batch = outputIndices[0]; 4716 let channel = outputIndices[1]; 4717 let scale_shift = ${h.getByIndices("vec2<u32>(batch, channel)")}; 4718 let value = ${f.getByOffset("global_idx")} * ${P.type.value}(scale_shift.x) + ${P.type.value}(scale_shift.y); 4719 ${P.setByOffset("global_idx","value")}; 4720 }`};e.compute({name:"InstanceNormalization",shaderCache:{hint:`${u}`,inputDependencies:A},getRunData:()=>({outputs:[{dims:s,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(p/64)},programUniforms:[{type:12,data:p},...It(c,g,c)]}),getShaderSource:m},{inputs:[t[0],d]})},GE=(e,t,r)=>{let n=t[0].dims,s=n,a=n[0],i=n[n.length-1],o=$e.sizeFromDimension(n,1)/i,l=en(i),u=$e.size(s)/l,p=[{type:12,data:o},{type:12,data:Math.floor(i/l)}],d=["type","type"],c=!1,g=[0,n.length-1];for(let f=0;f<n.length-2;f++)c=c||n[f+1]!==1,g.push(f+1);c=c&&n[n.length-1]!==1;let A=c?e.compute(is(e.inputs[0],g),{inputs:[e.inputs[0]],outputs:[-1]})[0]:e.inputs[0].reshape(Array.from({length:n.length},(f,h)=>n[g[h]])),m=ch(e,A,t[1],t[2],a,o,i,r.epsilon),B=f=>{let h=Bn(t[0].dataType),P=l===1?"vec2f":`mat${l}x2f`,_=v=>{let y=v===0?"x":"y",$=l===1?"f32":`vec${l}f`;switch(l){case 1:return`${h}(${$}(scale.${y}))`;case 2:return`vec2<${h}>(${$}(scale[0].${y}, scale[1].${y}))`;case 4:return`vec4<${h}>(${$}(scale[0].${y}, scale[1].${y}, scale[2].${y}, scale[3].${y}))`;default:throw new Error(`Not supported compoents ${l}`)}},w=Ne("input",t[0].dataType,t[0].dims,l),b=Pt("output",t[0].dataType,s,l);return` 4721 @group(0) @binding(0) var<storage, read> input : array<${w.type.storage}>; 4722 @group(0) @binding(1) var<storage, read> scale_input : array<${P}>; 4723 @group(0) @binding(2) var<storage, read_write> output : array<${b.type.storage}>; 4724 struct Uniforms {H: u32, C : u32}; 4725 @group(0) @binding(3) var<uniform> uniforms: Uniforms; 4726 4727 ${f.mainStart()}
4728 let current_image_number = global_idx / (uniforms.C * uniforms.H); 4729 let current_channel_number = global_idx % uniforms.C; 4730 4731 let scale_offset = current_image_number * uniforms.C + current_channel_number; 4732 let scale = scale_input[scale_offset]; 4733 output[global_idx] = fma(input[global_idx], ${_(0)}, ${_(1)}); 4734 }`};e.compute({name:"InstanceNormalizationNHWC",shaderCache:{hint:`${l}`,inputDependencies:d},getRunData:()=>({outputs:[{dims:s,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:p}),getShaderSource:B},{inputs:[t[0],m]})},zE=(e,t)=>{t.format==="NHWC"?GE(e,e.inputs,t):OE(e,e.inputs,t)}}),FE,LE,RE,x3=et(()=>{Gt(),qt(),tr(),FE=e=>{if(!e||e.length<2)throw new Error("layerNorm requires at least 2 inputs.")},LE=(e,t,r)=>{let n=t.simplified,s=e[0].dims,a=e[1],i=!n&&e[2],o=s,l=$e.normalizeAxis(t.axis,s.length),u=$e.sizeToDimension(s,l),p=$e.sizeFromDimension(s,l),d=$e.size(a.dims),c=i?$e.size(i.dims):0;if(d!==p||i&&c!==p)throw new Error(`Size of X.shape()[axis:] == ${p}. 4735 Size of scale and bias (if provided) must match this. 4736 Got scale size of ${d} and bias size of ${c}`);let g=[];for(let w=0;w<s.length;++w)w<l?g.push(s[w]):g.push(1);let A=en(p),m=["type","type"],B=[{type:12,data:u},{type:1,data:p},{type:12,data:Math.floor(p/A)},{type:1,data:t.epsilon}];i&&m.push("type");let f=r>1,h=r>2,P=w=>{let b=Bn(e[0].dataType),v=[Ne("x",e[0].dataType,e[0].dims,A),Ne("scale",a.dataType,a.dims,A)];i&&v.push(Ne("bias",i.dataType,i.dims,A)),v.push(Pt("output",e[0].dataType,o,A)),f&&v.push(Pt("mean_data_output",1,g)),h&&v.push(Pt("inv_std_output",1,g));let y=[{name:"norm_count",type:"u32"},{name:"norm_size",type:"f32"},{name:"norm_size_vectorized",type:"u32"},{name:"epsilon",type:"f32"}];return` 4737 ${w.registerUniforms(y).declareVariables(...v)} 4738 ${w.mainStart()} 4739 ${w.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.norm_count")} 4740 let offset = global_idx * uniforms.norm_size_vectorized; 4741 var mean_vector = ${CA("f32",A)}; 4742 var mean_square_vector = ${CA("f32",A)}; 4743 4744 for (var h: u32 = 0u; h < uniforms.norm_size_vectorized; h++) { 4745 let value = ${Go(b,A,"x[h + offset]")}; 4746 mean_vector += value; 4747 mean_square_vector += value * value; 4748 } 4749 let mean = ${qa("mean_vector",A)} / uniforms.norm_size; 4750 let inv_std_dev = inverseSqrt(${qa("mean_square_vector",A)} / uniforms.norm_size ${n?"":"- mean * mean"} + uniforms.epsilon); 4751 4752 for (var j: u32 = 0; j < uniforms.norm_size_vectorized; j++) { 4753 let f32input = ${Go(b,A,"x[j + offset]")}; 4754 let f32scale = ${Go(b,A,"scale[j]")}; 4755 output[j + offset] = ${v[0].type.value}((f32input ${n?"":"- mean"}) * inv_std_dev * f32scale 4756 ${i?`+ ${Go(b,A,"bias[j]")}`:""} 4757 ); 4758 } 4759 4760 ${f?"mean_data_output[global_idx] = mean":""}; 4761 ${h?"inv_std_output[global_idx] = inv_std_dev":""}; 4762 }`},_=[{dims:o,dataType:e[0].dataType}];return f&&_.push({dims:g,dataType:1}),h&&_.push({dims:g,dataType:1}),{name:"LayerNormalization",shaderCache:{hint:`${A};${r};${n}`,inputDependencies:m},getRunData:()=>({outputs:_,dispatchGroup:{x:Math.ceil(u/64)},programUniforms:B}),getShaderSource:P}},RE=(e,t)=>{FE(e.inputs),e.compute(LE(e.inputs,t,e.outputCount))}}),YE,NE,E3=et(()=>{qt(),VA(),qA(),YE=e=>{if(!e||e.length!==2)throw new Error("MatMul requires 2 inputs.");if(e[0].dims[e[0].dims.length-1]!==e[1].dims[e[1].dims.length-2])throw new Error("shared dimension does not match.")},NE=e=>{YE(e.inputs);let t=ko.calcShape(e.inputs[0].dims,e.inputs[1].dims,!0);if(!t)throw new Error("Can't use matmul on the given tensors");let r=t[t.length-1],n=e.inputs[0].dims[e.inputs[0].dims.length-1];if(r<8&&n<8)e.compute(WA(e.inputs,{activation:""},t));else{let s=t[t.length-2],a=$e.size(e.inputs[0].dims.slice(0,-2)),i=$e.size(e.inputs[1].dims.slice(0,-2));if(a!==1&&s===1&&i===1){let o=e.inputs[0].reshape([1,a,n]),l=e.inputs[1].reshape([1,n,r]),u=[1,a,r],p=[o,l];e.compute(Tc(p,{activation:""},t,u),{inputs:p})}else e.compute(Tc(e.inputs,{activation:""},t))}}}),jE,UE,WE,VE,QE,D3=et(()=>{Gt(),qt(),on(),tr(),jE=(e,t)=>{if(e.length<3||e.length>4)throw new Error("MatMulNBits requires 3 or 4 inputs");let r=e[0],n=r.dims.length;if(r.dims[n-1]!==t.k)throw new Error("The last dim of input shape does not match the k value");let s=Math.floor((t.k+t.blockSize-1)/t.blockSize),a=t.blockSize/8*t.bits,i=e[1];if(!$e.areEqual(i.dims,[t.n,s,a]))throw new Error("The second inputs must be 3D tensor with shape N X nBlocksPerCol X blobSize");let o=e[2].dims;if($e.size(o)!==t.n*s)throw new Error("scales input size error.");if(e.length===4){let l=e[3].dims,u=t.n*(t.bits===8?s:Math.floor((s*t.bits+7)/8));if($e.size(l)!==u)throw new Error("zeroPoints input size error.")}},UE=(e,t)=>{let r=e[0].dims,n=r.length,s=r[n-2],a=t.k,i=t.n,o=r.slice(0,n-2),l=$e.size(o),u=e[1].dims[2]/4,p=e[0].dataType,d=en(t.k),c=en(u),g=en(i),A=o.concat([s,i]),m=s>1&&i/g%2===0?2:1,B=$e.size(A)/g/m,f=64,h=[],P=[l,s,a/d],_=$e.convertShape(e[1].dims).slice();_.splice(-1,1,u/c),h.push(...It(P)),h.push(...It(_)),h.push(...It(e[2].dims)),e.length===4&&h.push(...It($e.convertShape(e[3].dims)));let w=[l,s,i/g];h.push(...It(w));let b=v=>{let y=P.length,$=Ne("a",e[0].dataType,y,d),k=Ne("b",12,_.length,c),W=Ne("scales",e[2].dataType,e[2].dims.length),j=[$,k,W],F=e.length===4?Ne("zero_points",12,e[3].dims.length):void 0;F&&j.push(F);let R=w.length,L=Pt("output",e[0].dataType,R,g),Q=Bn(e[0].dataType),ne=(()=>{switch(d){case 1:return`array<${Q}, 8>`;case 2:return`mat4x2<${Q}>`;case 4:return`mat2x4<${Q}>`;default:throw new Error(`${d}-component is not supported.`)}})(),re=()=>{let q=` 4763 // reuse a data 4764 var input_offset = ${$.indicesToOffset(`${$.type.indices}(batch, row, word_offset)`)}; 4765 var a_data: ${ne}; 4766 for (var j: u32 = 0; j < ${8/d}; j++) { 4767 a_data[j] = ${$.getByOffset("input_offset")}; 4768 input_offset++; 4769 } 4770 `;
vendor: 4,813 bytes, lines 4770-4839
4770for(let V=0;V<g*m;V++)q+=` 4771 b_value = ${c===1?`b${V}_data`:`b${V}_data[i]`}; 4772 b_value_lower = unpack4xU8(b_value & b_mask); 4773 b_value_upper = unpack4xU8((b_value >> 4) & b_mask); 4774 b_quantized_values = ${ne}(${Array.from({length:4},(U,N)=>`${Q}(b_value_lower[${N}]), ${Q}(b_value_upper[${N}])`).join(", ")}); 4775 b_dequantized_values = ${d===1?`${ne}(${Array.from({length:8},(U,N)=>`(b_quantized_values[${N}] - ${F?`zero_point${V}`:"zero_point"}) * scale${V}`).join(", ")});`:`(b_quantized_values - ${ne}(${Array(8).fill(`${F?`zero_point${V}`:"zero_point"}`).join(",")})) * scale${V};`}; 4776 workgroup_shared[local_id.x * ${m} + ${Math.floor(V/g)}]${g>1?`[${V%g}]`:""} += ${Array.from({length:8/d},(U,N)=>`${d===1?`a_data[${N}] * b_dequantized_values[${N}]`:`dot(a_data[${N}], b_dequantized_values[${N}])`}`).join(" + ")}; 4777 `;return q},ce=()=>{let q=` 4778 var col_index = col * ${g}; 4779 ${F?` 4780 let zero_point_bytes_per_col = (nBlocksPerCol + 1) / 2; 4781 var zero_point_byte_count: u32; 4782 var zero_point_word_index: u32; 4783 var zero_point_byte_offset: u32; 4784 let zero_point_nibble_offset: u32 = block & 0x1u; 4785 var zero_point_bits_offset: u32; 4786 var zero_point_word: u32;`:` 4787 // The default zero point is 8 for unsigned 4-bit quantization. 4788 let zero_point = ${Q}(8);`} 4789 `;for(let V=0;V<g*m;V++)q+=` 4790 let scale${V} = ${W.getByOffset("col_index * nBlocksPerCol + block")}; 4791 ${F?` 4792 zero_point_byte_count = col_index * zero_point_bytes_per_col + (block >> 0x1u); 4793 zero_point_word_index = zero_point_byte_count >> 0x2u; 4794 zero_point_byte_offset = zero_point_byte_count & 0x3u; 4795 zero_point_bits_offset = (zero_point_byte_offset << 3) + (zero_point_nibble_offset << 2); 4796 zero_point_word = ${F.getByOffset("zero_point_word_index")} >> zero_point_bits_offset; 4797 let zero_point${V} = ${Q}((zero_point_word) & 0xFu);`:""} 4798 col_index += 1;`;return q},ge=()=>{let q=`col_index = col * ${g};`;for(let V=0;V<g*m;V++)q+=` 4799 let b${V}_data = ${k.getByIndices(`${k.type.indices}(col_index, block, word)`)}; 4800 col_index += 1;`;return q+=` 4801 var b_value: u32; 4802 let b_mask: u32 = 0x0F0F0F0Fu; 4803 var b_value_lower: vec4<u32>; 4804 var b_value_upper: vec4<u32>; 4805 var b_quantized_values: ${ne}; 4806 var b_dequantized_values: ${ne};`,q};return` 4807 var<workgroup> workgroup_shared: array<${L.type.value}, ${m*f}>; 4808 ${v.declareVariables(...j,L)} 4809 ${v.mainStart([f,1,1])} 4810 let output_indices = ${L.offsetToIndices(`(global_idx / ${f}) * ${m}`)}; 4811 let col = output_indices[2]; 4812 let row = output_indices[1]; 4813 let batch = output_indices[0]; 4814 let nBlocksPerCol = uniforms.b_shape[1]; 4815 4816 for (var block = local_id.x; block < nBlocksPerCol; block += ${f}) { 4817 //process one block 4818 var word_offset: u32 = block * ${t.blockSize/d}; 4819 ${ce()} 4820 for (var word: u32 = 0; word < ${u}; word += ${c}) { 4821 ${ge()} 4822 for (var i: u32 = 0; i < ${c}; i++) { 4823 ${re()} 4824 word_offset += ${8/d}; 4825 } 4826 } 4827 } 4828 workgroupBarrier(); 4829 4830 if (local_id.x < ${m}) { 4831 var output_value: ${L.type.value} = ${L.type.value}(0); 4832 var workgroup_shared_offset: u32 = local_id.x; 4833 for (var b: u32 = 0u; b < ${f}u; b++) { 4834 output_value += workgroup_shared[workgroup_shared_offset]; 4835 workgroup_shared_offset += ${m}; 4836 } 4837 ${L.setByIndices(`${L.type.indices}(batch, row, col + local_id.x)`,"output_value")}; 4838 } 4839 }`};return{name:"MatMulNBits",shaderCache:{hint:`${t.blockSize};${t.bits};${d};${c};${g};${m};${f}`,inputDependencies:Array(e.length).fill("rank")},getRunData:()=>({outputs:[{dims:A,dataType:p}],dispatchGroup:{x:B},programUniforms:h}),getShaderSource:b}},WE=(e,t)=>{let r=e[0].dims,n=r.length,s=r[n-2],a=t.k,i=t.n,o=r.slice(0,n-2),l=$e.size(o),u=e[1].dims[2]/4,p=e[0].dataType,d=en(t.k),c=en(u),g=o.concat([s,i]),A=128,m=i%8===0?8:i%4===0?4:1,B=A/m,f=B*c*8,h=f/d,P=f/t.blockSize,_=$e.size(g)/m,w=[],b=[l,s,a/d],v=$e.convertShape(e[1].dims).slice();v.splice(-1,1,u/c),w.push(...It(b)),w.push(...It(v)),w.push(...It(e[2].dims)),e.length===4&&w.push(...It($e.convertShape(e[3].dims)));let y=[l,s,i];w.push(...It(y));let $=k=>{let W=b.length,j=Ne("a",e[0].dataType,W,d),F=Ne("b",12,v.length,c),R=Ne("scales",e[2].dataType,e[2].dims.length),L=[j,F,R],Q=e.length===4?Ne("zero_points",12,e[3].dims.length):void 0;
4839Q&&L.push(Q);let ne=y.length,re=Pt("output",e[0].dataType,ne),ce=Bn(e[0].dataType),ge=()=>{switch(d){case 1:return` 4840 let a_data0 = vec4<${ce}>(sub_a[word_offset], sub_a[word_offset + 1], sub_a[word_offset + 2], sub_a[word_offset + 3]); 4841 let a_data1 = vec4<${ce}>(sub_a[word_offset + 4], sub_a[word_offset + 5], sub_a[word_offset + 6], sub_a[word_offset + 7]);`;case 2:return` 4842 let a_data0 = vec4<${ce}>(sub_a[word_offset], sub_a[word_offset + 1]); 4843 let a_data1 = vec4<${ce}>(sub_a[word_offset + 2], sub_a[word_offset + 3]);`;case 4:return` 4844 let a_data0 = sub_a[word_offset]; 4845 let a_data1 = sub_a[word_offset + 1];`;default:throw new Error(`${d}-component is not supported.`)}};return` 4846 var<workgroup> sub_a: array<${j.type.value}, ${h}>; 4847 var<workgroup> inter_results: array<array<${re.type.value}, ${B}>, ${m}>; 4848 ${k.declareVariables(...L,re)} 4849 ${k.mainStart([B,m,1])} 4850 let output_indices = ${re.offsetToIndices(`workgroup_index * ${m}`)}; 4851 let col = output_indices[2]; 4852 let row = output_indices[1]; 4853 let batch = output_indices[0]; 4854 let n_blocks_per_col = uniforms.b_shape[1]; 4855 let num_tiles = (n_blocks_per_col - 1) / ${P} + 1; 4856 4857 // Loop over shared dimension. 4858 for (var tile: u32 = 0; tile < num_tiles; tile += 1) { 4859 let a_col_start = tile * ${h}; 4860 // load one tile A data into shared memory. 4861 for (var a_offset = local_idx; a_offset < ${h}; a_offset += ${A}) 4862 { 4863 let a_col = a_col_start + a_offset; 4864 if (a_col < uniforms.a_shape[2]) 4865 { 4866 sub_a[a_offset] = ${j.getByIndices(`${j.type.indices}(batch, row, a_col)`)}; 4867 } else { 4868 sub_a[a_offset] = ${j.type.value}(0); 4869 } 4870 } 4871 workgroupBarrier(); 4872 4873 // each thread process one block 4874 let b_row = col + local_id.y; 4875 let block = tile * ${P} + local_id.x; 4876 ${Q?` 4877 let zero_point_bytes_per_col = (n_blocks_per_col + 1) / 2; 4878 let zero_point_byte_count = b_row * zero_point_bytes_per_col + (block >> 0x1u); 4879 let zero_point_word_index = zero_point_byte_count >> 0x2u; 4880 let zero_point_byte_offset = zero_point_byte_count & 0x3u; 4881 let zero_point_nibble_offset: u32 = block & 0x1u; 4882 let zero_point_bits_offset = (zero_point_byte_offset << 3) + (zero_point_nibble_offset << 2); 4883 let zero_point_word = ${Q.getByOffset("zero_point_word_index")} >> zero_point_bits_offset; 4884 let zero_point = ${ce}((zero_point_word) & 0xFu);`:` 4885 // The default zero point is 8 for unsigned 4-bit quantization. 4886 let zero_point = ${ce}(8);`} 4887 let scale = ${R.getByOffset("b_row * n_blocks_per_col + block")}; 4888 let b_data = ${F.getByIndices(`${F.type.indices}(b_row, block, 0)`)}; 4889 var word_offset = local_id.x * ${t.blockSize/d}; 4890 for (var i: u32 = 0; i < ${c}; i++) { 4891 ${ge()} 4892 let b_value = ${c===1?"b_data":"b_data[i]"}; 4893 let b_value_lower = unpack4xU8(b_value & 0x0F0F0F0Fu); 4894 let b_value_upper = unpack4xU8((b_value >> 4) & 0x0F0F0F0Fu); 4895 let b_quantized_values = mat2x4<${ce}>(${Array.from({length:4},(q,V)=>`${ce}(b_value_lower[${V}]), ${ce}(b_value_upper[${V}])`).join(", ")}); 4896 let b_dequantized_values = (b_quantized_values - mat2x4<${ce}>(${Array(8).fill("zero_point").join(",")})) * scale; 4897 inter_results[local_id.y][local_id.x] += ${Array.from({length:2},(q,V)=>`${`dot(a_data${V}, b_dequantized_values[${V}])`}`).join(" + ")}; 4898 word_offset += ${8/d}; 4899 } 4900 workgroupBarrier(); 4901 } 4902 4903 if (local_idx < ${m}) { 4904 var output_value: ${re.type.value} = ${re.type.value}(0); 4905 for (var b = 0u; b < ${B}; b++) { 4906 output_value += inter_results[local_idx][b]; 4907 } 4908 if (col + local_idx < uniforms.output_shape[2]) 4909 { 4910 ${re.setByIndices(`${re.type.indices}
vendor: 10,267 bytes, lines 4910-5056
4910(batch, row, col + local_idx)`,"output_value")} 4911 } 4912 } 4913 }`};return{name:"BlockwiseMatMulNBits32",shaderCache:{hint:`${t.blockSize};${d};${c};${B};${m}`,inputDependencies:Array(e.length).fill("rank")},getRunData:()=>({outputs:[{dims:g,dataType:p}],dispatchGroup:{x:_},programUniforms:w}),getShaderSource:$}},VE=(e,t)=>{jE(e.inputs,t),t.blockSize===32&&e.adapterInfo.isVendor("intel")&&e.adapterInfo.isArchitecture("gen-12lp")?e.compute(WE(e.inputs,t)):e.compute(UE(e.inputs,t))},QE=e=>Mr(e)}),HE,KE,qE,XE,ZE,JE,eD,tD,rD,I3=et(()=>{Gt(),qt(),tr(),HE=e=>{if(!e||e.length<1)throw new Error("Too few inputs");if(e[0].dataType!==1&&e[0].dataType!==10)throw new Error("Input type must be float or float16.");if(e.length>=2){let t=e[0].dims.length*2===e[1].dims[0];if(e.length===4&&(t=e[3].dims[0]*2===e[1].dims[0]),!t)throw new Error("The pads should be a 1D tensor of shape [2 * input_rank] or [2 * num_axes].")}},KE=(e,t,r)=>{let n="";for(let s=t-1;s>=0;--s)n+=` 4914 k = i32(${e.indicesGet("indices",s)}) - ${xt("uniforms.pads",s,r)}; 4915 if (k < 0) { 4916 break; 4917 } 4918 if (k >= i32(${xt("uniforms.x_shape",s,t)})) { 4919 break; 4920 } 4921 offset += k * i32(${xt("uniforms.x_strides",s,t)}); 4922 `;return` 4923 value = ${e.type.value}(uniforms.constant_value); 4924 for (var i = 0; i < 1; i++) { 4925 var offset = 0; 4926 var k = 0; 4927 ${n} 4928 value = x[offset]; 4929 } 4930 `},qE=(e,t,r)=>{let n="";for(let s=t-1;s>=0;--s)n+=` 4931 k = i32(${e.indicesGet("indices",s)}) - ${xt("uniforms.pads",s,r)}; 4932 if (k < 0) { 4933 k = -k; 4934 } 4935 { 4936 let _2n_1 = 2 * (i32(${xt("uniforms.x_shape",s,t)}) - 1); 4937 k = k % _2n_1; 4938 if(k >= i32(${xt("uniforms.x_shape",s,t)})) { 4939 k = _2n_1 - k; 4940 } 4941 } 4942 offset += k * i32(${xt("uniforms.x_strides",s,t)}); 4943 `;return` 4944 var offset = 0; 4945 var k = 0; 4946 ${n} 4947 value = x[offset]; 4948 `},XE=(e,t,r)=>{let n="";for(let s=t-1;s>=0;--s)n+=` 4949 k = i32(${e.indicesGet("indices",s)}) - ${xt("uniforms.pads",s,r)}; 4950 if (k < 0) { 4951 k = 0; 4952 } 4953 if (k >= i32(${xt("uniforms.x_shape",s,t)})) { 4954 k = i32(${xt("uniforms.x_shape",s,t)}) - 1; 4955 } 4956 offset += k * i32(${xt("uniforms.x_strides",s,t)}); 4957 `;return` 4958 var offset = 0; 4959 var k = 0; 4960 ${n} 4961 value = x[offset]; 4962 `},ZE=(e,t,r)=>{let n="";for(let s=t-1;s>=0;--s)n+=` 4963 k = i32(${e.indicesGet("indices",s)}) - ${xt("uniforms.pads",s,r)}; 4964 if (k < 0) { 4965 k += i32(${xt("uniforms.x_shape",s,t)}]); 4966 } 4967 if (k >= i32(${xt("uniforms.x_shape",s,t)})) { 4968 k -= i32(${xt("uniforms.x_shape",s,t)}); 4969 } 4970 offset += k * i32(${xt("uniforms.x_strides",s,t)}); 4971 `;return` 4972 var offset = 0; 4973 var k = 0; 4974 ${n} 4975 value = x[offset]; 4976 `},JE=(e,t,r)=>{switch(r.mode){case 0:return KE(e,t,r.pads.length);case 1:return qE(e,t,r.pads.length);case 2:return XE(e,t,r.pads.length);case 3:return ZE(e,t,r.pads.length);default:throw new Error("Invalid mode")}},eD=(e,t)=>{let r=$e.padShape(e[0].dims.slice(),t.pads),n=e[0].dims,s=$e.size(r),a=[{type:12,data:s},{type:6,data:t.pads}],i=e.length>=3&&e[2].data;t.mode===0&&a.push({type:i?e[2].dataType:1,data:t.value}),a.push(...It(e[0].dims,r));let o=["rank"],l=u=>{let p=Pt("output",e[0].dataType,r.length),d=Ne("x",e[0].dataType,n.length),c=d.type.value,g=JE(p,n.length,t),A=[{name:"output_size",type:"u32"},{name:"pads",type:"i32",length:t.pads.length}];return t.mode===0&&A.push({name:"constant_value",type:i?c:"f32"}),` 4977 ${u.registerUniforms(A).declareVariables(d,p)} 4978 ${u.mainStart()} 4979 ${u.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 4980 4981 let indices = ${p.offsetToIndices("global_idx")}; 4982 4983 var value = ${c}(0); 4984 ${g} 4985 output[global_idx] = value; 4986 }`};return{name:"Pad",shaderCache:{hint:`${t.mode}${i}`,inputDependencies:o},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil($e.size(r)/64)},programUniforms:a}),getShaderSource:l}},tD=(e,t)=>{if(e.length>1){let r=e[1].getBigInt64Array(),n=e.length>=3&&e[2].data?e[2].dataType===10?e[2].getUint16Array()[0]:e[2].getFloat32Array()[0]:0,s=e[0].dims.length,a=new Int32Array(2*s).fill(0);if(e.length>=4){let o=e[3].getBigInt64Array();for(let l=0;l<o.length;l++)a[Number(o[l])]=Number(r[l]),a[Number(o[l])+s]=Number(r[l+o.length])}else r.forEach((o,l)=>a[Number(l)]=Number(o));let i=[];return a.forEach(o=>i.push(o)),{mode:t.mode,value:n,pads:i}}else return t},rD=(e,t)=>{HE(e.inputs);let r=tD(e.inputs,t);e.compute(eD(e.inputs,r),{inputs:[0]})}}),Hl,dh,ph,gh,Ah,nD,sD,hh,mh,aD,iD,fh,oD,lD,_h,uD,cD,dD,pD,T3=et(()=>{ys(),Gt(),qt(),tr(),Hl=e=>{if(Sr.webgpu.validateInputContent&&(!e||e.length!==1))throw new Error("Pool ops requires 1 input.")},dh=(e,t,r)=>{let n=t.format==="NHWC",s=e.dims.slice();n&&s.splice(1,0,s.pop());let a=Object.hasOwnProperty.call(t,"dilations"),i=t.kernelShape.slice(),o=t.strides.slice(),l=a?t.dilations.slice():[],u=t.pads.slice();Mc.adjustPoolAttributes(r,s,i,o,l,u);let p=Mc.computePoolOutputShape(r,s,o,l,i,u,t.autoPad),d=Object.assign({},t);a?Object.assign(d,{kernelShape:i,strides:o,pads:u,dilations:l,cacheKey:t.cacheKey}):Object.assign(d,{kernelShape:i,strides:o,pads:u,cacheKey:t.cacheKey});let c=p.slice();return c.push(c.splice(1,1)[0]),[d,n?c:p]},ph=(e,t)=>{let r=t.format==="NHWC",n=$e.size(e),s=$e.size(t.kernelShape),a=[{type:12,data:n},{type:12,data:s}],i=[{name:"outputSize",type:"u32"},{name:"kernelSize",type:"u32"}];if(t.kernelShape.length<=2){let o=t.kernelShape[t.kernelShape.length-1],l=t.strides[t.strides.length-1],u=t.pads[t.pads.length/2-1],p=t.pads[t.pads.length-1],d=!!(u+p);a.push({type:12,data:o},{type:12,data:l},{type:12,data:u},{type:12,data:p}),i.push({name:"kw",type:"u32"},{name:"sw",type:"u32"},{name:"pwStart",type:"u32"},{name:"pwEnd",type:"u32"});let c=!1;if(t.kernelShape.length===2){let g=t.kernelShape[t.kernelShape.length-2],A=t.strides[t.strides.length-2],m=t.pads[t.pads.length/2-2],B=t.pads[t.pads.length-2];c=!!(m+B),a.push({type:12,data:g},{type:12,data:A},{type:12,data:m},{type:12,data:B}),i.push({name:"kh",type:"u32"},{name:"sh",type:"u32"},{name:"phStart",type:"u32"},{name:"phEnd",type:"u32"})}return[a,i,!0,d,c]}else{if(r)throw new Error("Pooling with kernelShape.length > 2 is not supported for NHWC format.");let o=$e.computeStrides(t.kernelShape);a.push({type:12,data:o},{type:12,data:t.pads},{type:12,data:t.strides}),i.push({name:"kernelStrides",type:"u32",length:o.length},{name:"pads",type:"u32",length:t.pads.length},{name:"strides",type:"u32",length:t.strides.length});let l=t.pads.reduce((u,p)=>u+p);return[a,i,!!l,!1,!1]}},gh=(e,t,r,n,s,a,i,o,l,u,p,d)=>{let c=s.format==="NHWC",g=t.type.value,A=Pt("output",t.type.tensor,n);if(s.kernelShape.length<=2){let m="",B="",f="",h=r-(c?2:1);if(p?m=` 4987 for (var i: u32 = 0u; i < uniforms.kw; i++) { 4988 xIndices[${h}] = indices[${h}] * uniforms.sw - uniforms.pwStart + i; 4989 if (xIndices[${h}] < 0 || xIndices[${h}] 4990 >= uniforms.x_shape[${h}]) { 4991 pad++; 4992 continue; 4993 } 4994 let x_val = x[${t.indicesToOffset("xIndices")}]; 4995 ${a} 4996 }`:m=` 4997 for (var i: u32 = 0u; i < uniforms.kw; i++) { 4998 xIndices[${h}] = indices[${h}] * uniforms.sw - uniforms.pwStart + i; 4999 let x_val = x[${t.indicesToOffset("xIndices")}]; 5000 ${a} 5001 }`,s.kernelShape.length===2){let P=r-(c?3:2);d?B=` 5002 for (var j: u32 = 0u; j < uniforms.kh; j++) { 5003 xIndices[${P}] = indices[${P}] * uniforms.sh - uniforms.phStart + j; 5004 if (xIndices[${P}] < 0 || xIndices[${P}] >= uniforms.x_shape[${P}]) { 5005 pad += i32(uniforms.kw); 5006 continue; 5007 } 5008 `:B=` 5009 for (var j: u32 = 0u; j < uniforms.kh; j++) { 5010 xIndices[${P}] = indices[${P}] * uniforms.sh - uniforms.phStart + j; 5011 `,f=` 5012 } 5013 `}return` 5014 ${e.registerUniforms(l).declareVariables(t,A)} 5015 5016 ${e.mainStart()} 5017 ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} 5018 5019 let indices = ${A.offsetToIndices("global_idx")}; 5020 var xIndices = ${A.offsetToIndices("global_idx")}; 5021 5022 var value = ${g}(${o}); 5023 var pad = 0; 5024 ${B} 5025 ${m} 5026 ${f} 5027 ${i} 5028 5029 output[global_idx] = value; 5030 }`}else{if(c)throw new Error("Pooling with kernelShape.length > 2 is not supported for NHWC format.");let m=s.kernelShape.length,B=s.pads.length,f="";return u?f=` 5031 if (xIndices[j] >= uniforms.x_shape[j]) { 5032 pad++; 5033 isPad = true; 5034 break; 5035 } 5036 } 5037 if (!isPad) { 5038 let x_val = x[${t.indicesToOffset("xIndices")}]; 5039 ${a} 5040 }`:f=` 5041 } 5042 let x_val = x[${t.indicesToOffset("xIndices")}]; 5043 ${a} 5044 `,` 5045 ${e.registerUniforms(l).declareVariables(t,A)} 5046 5047 ${e.mainStart()} 5048 ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} 5049 let indices = ${A.offsetToIndices("global_idx")}; 5050 var xIndices = ${A.offsetToIndices("global_idx")}; 5051 5052 var offsets: array<u32, ${m}>; 5053 5054 var value = ${g}(${o}); 5055 var pad = 0; 5056 var isPad = false;
5057 5058 for (var i: u32 = 0u; i < uniforms.kernelSize; i++) { 5059 var offset = i; 5060 for (var j = 0u; j < ${m-1}u; j++) { 5061 offsets[j] = offset / ${xt("uniforms.kernelStrides","j",m)}; 5062 offset -= offsets[j] * ${xt("uniforms.kernelStrides","j",m)}; 5063 } 5064 offsets[${m-1}] = offset; 5065 5066 isPad = false; 5067 for (var j = ${r-m}u; j < ${r}u; j++) { 5068 xIndices[j] = indices[j] * ${xt("uniforms.strides",`j - ${r-m}u`,m)} 5069 + offsets[j - ${r-m}u] - ${xt("uniforms.pads","j - 2u",B)}; 5070 ${f} 5071 } 5072 ${i} 5073 5074 output[global_idx] = value; 5075 }`}},Ah=e=>`${e.format};${e.ceilMode};${e.autoPad};${e.kernelShape.length}`,nD=e=>`${Ah(e)};${e.countIncludePad}`,sD=e=>`${Ah(e)};${e.storageOrder};${e.dilations}`,hh=e=>({format:e.format,autoPad:["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][e.auto_pad],ceilMode:e.ceil_mode,kernelShape:e.kernel_shape,strides:e.strides,pads:e.pads}),mh=(e,t,r,n)=>{let[s,a]=dh(t,n,r),i=Ne("x",t.dataType,t.dims.length),o=i.type.value,l="value += x_val;",u="";s.countIncludePad?u+=`value /= ${o}(uniforms.kernelSize);`:u+=`value /= ${o}(i32(uniforms.kernelSize) - pad);`;let[p,d,c,g,A]=ph(a,s);p.push(...It(t.dims,a));let m=["rank"];return{name:e,shaderCache:{hint:`${n.cacheKey};${c};${g};${A}`,inputDependencies:m},getRunData:()=>({outputs:[{dims:a,dataType:t.dataType}],dispatchGroup:{x:Math.ceil($e.size(a)/64)},programUniforms:p}),getShaderSource:B=>gh(B,i,t.dims.length,a.length,s,l,u,0,d,c,g,A)}},aD=e=>{let t=e.count_include_pad!==0,r=hh(e);if(r.ceilMode!==0)throw new Error("using ceil() in shape computation is not yet supported for AveragePool");let n={countIncludePad:t,...r,cacheKey:""};return{...n,cacheKey:nD(n)}},iD=(e,t)=>{Hl(e.inputs),e.compute(mh("AveragePool",e.inputs[0],!1,t))},fh={autoPad:"",ceilMode:0,countIncludePad:!1,kernelShape:[],strides:[],pads:[],storageOrder:0,dilations:[]},oD=e=>{let t=e.format;return{format:t,...fh,cacheKey:t}},lD=(e,t)=>{Hl(e.inputs),e.compute(mh("GlobalAveragePool",e.inputs[0],!0,t))},_h=(e,t,r,n)=>{let[s,a]=dh(t,n,r),i=` 5076 value = max(x_val, value); 5077 `,o="",l=Ne("x",t.dataType,t.dims.length),u=["rank"],[p,d,c,g,A]=ph(a,s);return p.push(...It(t.dims,a)),{name:e,shaderCache:{hint:`${n.cacheKey};${c};${g};${A}`,inputDependencies:u},getRunData:()=>({outputs:[{dims:a,dataType:t.dataType}],dispatchGroup:{x:Math.ceil($e.size(a)/64)},programUniforms:p}),getShaderSource:m=>gh(m,l,t.dims.length,a.length,s,i,o,t.dataType===10?-65504:-1e5,d,c,g,A)}},uD=(e,t)=>{Hl(e.inputs),e.compute(_h("MaxPool",e.inputs[0],!1,t))},cD=e=>{let t=e.storage_order,r=e.dilations,n=hh(e);if(t!==0)throw new Error("column major storage order is not yet supported for MaxPool");if(n.ceilMode!==0)throw new Error("using ceil() in shape computation is not yet supported for MaxPool");let s={storageOrder:t,dilations:r,...n,cacheKey:""};return{...s,cacheKey:sD(s)}},dD=e=>{let t=e.format;return{format:t,...fh,cacheKey:t}},pD=(e,t)=>{Hl(e.inputs),e.compute(_h("GlobalMaxPool",e.inputs[0],!0,t))}}),gD,AD,hD,mD,C3=et(()=>{Gt(),qt(),on(),tr(),gD=(e,t)=>{if(e.length<2||e.length>3)throw new Error("DequantizeLinear requires 2 or 3 inputs.");if(e.length===3&&e[1].dims===e[2].dims)throw new Error("x-scale and x-zero-point must have the same shape.");if(e.length===3&&e[0].dataType!==e[2].dataType)throw new Error("x and x-zero-point must have the same data type.");if(e[0].dataType===6&&e.length>2)throw new Error("In the case of dequantizing int32 there is no zero point.");if(e[1].dims.length!==0&&e[1].dims.length!==1&&e[1].dims.length!==e[0].dims.length)throw new Error("scale input must be a scalar, a 1D tensor, or have the same rank as the input tensor.");if(e.length>2){if(e[0].dataType!==e[2].dataType)throw new Error("x and x-zero-point must have the same data type.");if(e[1].dims.length!==e[2].dims.length)throw new Error("scale and zero-point inputs must have the same rank.");if(!e[1].dims.map((r,n)=>r===e[2].dims[n]).reduce((r,n)=>r&&n,!0))throw new Error("scale and zero-point inputs must have the same shape.")}if(t.blockSize>0){if(e[1].dims.length===0||e[1].dims.length===1&&e[1].dims[0]===1)throw new Error("blockSize must be set only for block quantization.");
vendor: 18,954 bytes, lines 5077-5274
5077if(!e[1].dims.map((s,a)=>a===t.axis||s===e[0].dims[a]).reduce((s,a)=>s&&a,!0))throw new Error("For block qunatization, scale input shape to match the input shape except for the axis");if(e[1].dims.length!==e[0].dims.length)throw new Error("For block qunatization the scale input rank must be the same as the x rank.");let r=e[0].dims[t.axis],n=e[1].dims[t.axis];if(t.blockSize<Math.ceil(r/n)||t.blockSize>Math.ceil(r/(n-1)-1))throw new Error("blockSize must be with in the range [ceil(dI / Si), ceil(dI / (Si - 1) - 1)].")}},AD=(e,t)=>{let r=$e.normalizeAxis(t.axis,e[0].dims.length),n=e[0].dataType,s=n===3,a=e[0].dims,i=e[1].dataType,o=$e.size(a),l=n===3||n===2,u=l?[Math.ceil($e.size(e[0].dims)/4)]:e[0].dims,p=e[1].dims,d=e.length>2?e[2]:void 0,c=d?l?[Math.ceil($e.size(d.dims)/4)]:d.dims:void 0,g=p.length===0||p.length===1&&p[0]===1,A=g===!1&&p.length===1,m=en(o),B=g&&(!l||m===4),f=B?m:1,h=B&&!l?m:1,P=Ne("input",l?12:n,u.length,h),_=Ne("scale",i,p.length),w=d?Ne("zero_point",l?12:n,c.length):void 0,b=Pt("output",i,a.length,f),v=[P,_];w&&v.push(w);let y=[u,p];d&&y.push(c);let $=[{type:12,data:o/f},{type:12,data:r},{type:12,data:t.blockSize},...It(...y,a)],k=W=>{let j=[{name:"output_size",type:"u32"},{name:"axis",type:"u32"},{name:"block_size",type:"u32"}];return` 5078 ${W.registerUniforms(j).declareVariables(...v,b)} 5079 ${W.mainStart()} 5080 ${W.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 5081 let output_indices = ${b.offsetToIndices("global_idx")}; 5082 5083 // Set input x 5084 ${l?` 5085 let input = ${P.getByOffset("global_idx / 4")}; 5086 let x_vec = ${s?"unpack4xI8(input)":"unpack4xU8(input)"}; 5087 let x_value = ${f===1?"x_vec[global_idx % 4]":"x_vec"};`:`let x_value = ${P.getByOffset("global_idx")};`}; 5088 5089 // Set scale input 5090 ${g?`let scale_value= ${_.getByOffset("0")}`:A?` 5091 let scale_index = ${b.indicesGet("output_indices","uniforms.axis")}; 5092 let scale_value= ${_.getByOffset("scale_index")};`:` 5093 var scale_indices: ${_.type.indices} = output_indices; 5094 let index = ${_.indicesGet("scale_indices","uniforms.axis")} / uniforms.block_size; 5095 ${_.indicesSet("scale_indices","uniforms.axis","index")}; 5096 let scale_value= ${_.getByIndices("scale_indices")};`}; 5097 5098 // Set zero-point input 5099 ${w?g?l?` 5100 let zero_point_input = ${w.getByOffset("0")}; 5101 let zero_point_vec = ${s?"unpack4xI8(zero_point_input)":"unpack4xU8(zero_point_input)"}; 5102 let zero_point_value= zero_point_vec[0]`:`let zero_point_value = ${w.getByOffset("0")}`:A?l?` 5103 let zero_point_index = ${b.indicesGet("output_indices","uniforms.axis")}; 5104 let zero_point_input = ${w.getByOffset("zero_point_index / 4")}; 5105 let zero_point_vec = ${s?"unpack4xI8(zero_point_input)":"unpack4xU8(zero_point_input)"}; 5106 let zero_point_value = zero_point_vec[zero_point_index % 4]`:` 5107 let zero_point_index = ${b.indicesGet("output_indices","uniforms.axis")}; 5108 let zero_point_value = ${w.getByOffset("zero_point_index")};`:l?` 5109 let zero_point_offset = ${_.indicesToOffset("scale_indices")}; 5110 let zero_point_input = ${w.getByOffset("zero_point_offset / 4")}; 5111 let zero_point_vec = ${s?"unpack4xI8(zero_point_input)":"unpack4xU8(zero_point_input)"}; 5112 let zero_point_value = zero_point_vec[zero_point_offset % 4];`:`let zero_point_value = ${w.getByIndices("scale_indices")};`:`let zero_point_value = ${l?s?"i32":"u32":P.type.value}(0);`}; 5113 // Compute and write output 5114 ${b.setByOffset("global_idx",`${b.type.value}(x_value - zero_point_value) * scale_value`)}; 5115 }`};return{name:"DequantizeLinear",shaderCache:{hint:t.cacheKey,inputDependencies:w?["rank","rank","rank"]:["rank","rank"]},getShaderSource:k,getRunData:()=>({outputs:[{dims:a,dataType:i}],dispatchGroup:{x:Math.ceil(o/f/64),y:1,z:1},programUniforms:$})}},hD=(e,t)=>{gD(e.inputs,t),e.compute(AD(e.inputs,t))},mD=e=>Mr({axis:e.axis,blockSize:e.blockSize})}),fD,_D,wD,$3=et(()=>{ys(),Gt(),tr(),fD=(e,t,r)=>{let n=e===t,s=e<t&&r<0,a=e>t&&r>0;if(n||s||a)throw new Error("Range these inputs' contents are invalid.")},_D=(e,t,r,n)=>{let s=Math.abs(Math.ceil((t-e)/r)),a=[s],i=s,o=[{type:12,data:i},{type:n,data:e},{type:n,data:r},...It(a)],l=u=>{let p=Pt("output",n,a.length),d=p.type.value,c=[{name:"outputSize",type:"u32"},{name:"start",type:d},{name:"delta",type:d}];return` 5116 ${u.registerUniforms(c).declareVariables(p)} 5117 ${u.mainStart()} 5118 ${u.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} 5119 output[global_idx] = uniforms.start + ${d}(global_idx) * uniforms.delta; 5120 }`};return{name:"Range",shaderCache:{hint:`${n}`},getShaderSource:l,getRunData:()=>({outputs:[{dims:a,dataType:n}],dispatchGroup:{x:Math.ceil(i/64)},programUniforms:o})}},wD=e=>{let t=0,r=0,n=0;e.inputs[0].dataType===6?(t=e.inputs[0].getInt32Array()[0],r=e.inputs[1].getInt32Array()[0],n=e.inputs[2].getInt32Array()[0]):e.inputs[0].dataType===1&&(t=e.inputs[0].getFloat32Array()[0],r=e.inputs[1].getFloat32Array()[0],n=e.inputs[2].getFloat32Array()[0]),Sr.webgpu.validateInputContent&&fD(t,r,n),e.compute(_D(t,r,n,e.inputs[0].dataType),{inputs:[]})}}),yD,bD,PD,MD,S3=et(()=>{Gt(),qt(),on(),tr(),yD=(e,t,r,n)=>{if(e!=="none"&&n!=="i32"&&n!=="u32"&&n!=="f32")throw new Error(`Input ${n} is not supported with reduction ${e}.`);let s=`{ 5121 var oldValue = 0; 5122 loop { 5123 let newValueF32 =`,a=`; 5124 let newValue = bitcast<i32>(newValueF32); 5125 let res = atomicCompareExchangeWeak(&${t}, oldValue, newValue); 5126 if res.exchanged { 5127 break; 5128 } 5129 oldValue = res.old_value; 5130 } 5131 }`;switch(e){case"none":return`${t}=${r};`;case"add":return n==="i32"||n==="u32"?`atomicAdd(&${t}, bitcast<${n}>(${r}));`:` 5132 ${s}bitcast<${n}>(oldValue) + (${r})${a}`;case"max":return n==="i32"||n==="u32"?`atomicMax(&${t}, bitcast<${n}>(${r}));`:` 5133 ${s}max(bitcast<f32>(oldValue), (${r}))${a}`;case"min":return n==="i32"||n==="u32"?`atomicMin(&${t}, bitcast<${n}>(${r}));`:`${s}min(bitcast<${n}>(oldValue), (${r}))${a}`;case"mul":return`${s}(bitcast<${n}>(oldValue) * (${r}))${a}`;default:throw new Error(`Reduction ${e} is not supported.`)}},bD=(e,t)=>{let r=e[0].dims,n=e[1].dims,s=r,a=1,i=Math.ceil($e.sizeToDimension(n,n.length-1)/a),o=n[n.length-1],l=$e.sizeFromDimension(r,o),u=[{type:12,data:i},{type:12,data:o},{type:12,data:l},...It(e[1].dims,e[2].dims,s)],p=d=>{let c=Ne("indices",e[1].dataType,e[1].dims.length),g=Ne("updates",e[2].dataType,e[2].dims.length,a),A=t.reduction!=="none"&&t.reduction!==""?Iv("output",e[0].dataType,s.length):Pt("output",e[0].dataType,s.length,a);return` 5134 ${d.registerUniform("output_size","u32").registerUniform("last_index_dimension","u32").registerUniform("num_updates_elements","u32").declareVariables(c,g,A)} 5135 ${d.mainStart()} 5136 ${d.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 5137 var data_offset = 0u; 5138 let indices_start = uniforms.last_index_dimension * global_idx; 5139 let indices_end = indices_start + uniforms.last_index_dimension; 5140 for (var i = indices_start; i < indices_end; i++) { 5141 var index = i32(indices[i].x); 5142 ${e[0].dims.length===1?` 5143 let element_count_dim = uniforms.output_strides; 5144 let dim_value = uniforms.output_shape;`:` 5145 let element_count_dim = uniforms.output_strides[i - indices_start]; 5146 let dim_value = uniforms.output_shape[i - indices_start];`} 5147 if (index >= 0) { 5148 if (index >= i32(dim_value)) { 5149 index = i32(dim_value - 1); 5150 } 5151 } else { 5152 if (index < -i32(dim_value)) { 5153 index = 0; 5154 } else { 5155 index += i32(dim_value); 5156 } 5157 } 5158 data_offset += u32((u32(index) * element_count_dim)); 5159 } 5160 5161 for (var i = 0u; i < uniforms.num_updates_elements; i++) { 5162 let value = updates[uniforms.num_updates_elements * global_idx + i]; 5163 ${yD(t.reduction,"output[data_offset + i]","value",A.type.value)} 5164 } 5165 5166 }`};return{name:"ScatterND",shaderCache:{hint:`${t.cacheKey}_${t.reduction}`,inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:s,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(i/64)},programUniforms:u}),getShaderSource:p}},PD=e=>Mr({reduction:e.reduction}),MD=(e,t)=>{e.compute(bD(e.inputs,t),{inputs:[e.inputs[1],e.inputs[2]],outputs:[]})}}),vD,BD,xD,wh,ED,DD,ID,TD,CD,$D,SD,kD,yh,OD,GD,zD,FD,LD,RD,YD,k3=et(()=>{Gt(),qt(),on(),tr(),vD=(e,t)=>{if(e.every(r=>r>0||(()=>{throw new Error("Resize requires scales input values to be positive")})),e.length>0){if(t.mode==="linear"){if(!(e.length===2||e.length===3||e.length===4&&e[0]===1&&e[1]===1||e.length===4&&e[0]===1&&e[3]===1||e.length===5&&e[0]===1&&e[1]===1))throw new Error(`For linear mode, Resize requires scales to be 2D, 3D, 4D with either two outermost or one innermost and 5167 one outermost scale values equal to 1, or 5D with two outermost scale values equal to 1`)}else if(t.mode==="cubic"&&!(e.length===2||e.length===4&&e[0]===1&&e[1]===1||e.length===4&&e[0]===1&&e[3]===1))throw new Error("Resize requires scales input size to be 2 or 4 for cubic mode")}},BD=(e,t,r)=>{t.every(s=>s>=0&&s<r||(()=>{throw new Error("Resize requires axes input values to be positive and less than rank")}));let n=new Array(r).fill(1);return t.forEach((s,a)=>n[s]=e[a]),n},xD=(e,t,r,n,s,a)=>{let[i,o,l]=r>10?[1,2,3]:[-1,e.length>1?1:-1,-1],u=e[0].dims.length;if(i>0&&e.length>i&&e[i].dims.length>0)e[i].getFloat32Array().forEach(p=>a.push(p));else if(t.coordinateTransformMode==="tf_crop_and_resize")throw new Error("Resize requires RoI input to be specified when coordinateTransformMode is tfCropAndResize");if(o>0&&e.length>o&&e[o].dims.length===1&&e[o].dims[0]>0){if(e[o].getFloat32Array().forEach(p=>n.push(p)),n.length!==0&&n.length!==u&&r>=18&&n.length!==t.axes.length)throw new Error("Resize requires scales input size to be same as input rank or axes size for opset 18 and up");vD(n,t),t.axes.length>0&&BD(n,t.axes,u).forEach((p,d)=>n[d]=p)}if(l>0&&e.length>l&&e[l].dims.length===1&&e[l].dims[0]>0&&(e[l].getBigInt64Array().forEach(p=>s.push(Number(p))),s.length!==0&&s.length!==u&&r>=18&&s.length!==t.axes.length))throw new Error("Resize requires sizes input size to be same as input rank or axes size for opset 18 and up");if(t.axes.length>0){if(n.length!==0&&n.length!==t.axes.length)throw new Error('Resize requires "scales" input size to be of axes rank when axes attributes is specified');if(s.length!==0&&s.length!==t.axes.length)throw new Error('Resize requires "sizes" input size to be of rank axes rank when axes attributes is specified')}if(typeof n<"u"&&typeof s<"u"&&n.length>0&&s.length>u)throw new Error("Resize requires only of scales or sizes to be specified")},wh=(e,t,r,n)=>` 5168 // The whole part and the fractional part are calculated separately due to inaccuracy of floating 5169 // point division. As an example, f32(21) / f32(7) may evaluate to 2.99... instead of 3, causing an 5170 // offset-by-one error later in floor(). 5171 let big = (${e}) * (${t}); 5172 let whole = ${n}(big / (${r})); 5173 let fract = ${n}(big % (${r})) / ${n}(${r}); 5174 return whole + fract; 5175`,ED=(e,t)=>`fn getOriginalCoordinateFromResizedCoordinate(xResized: u32, xScale: f32, lengthResized: u32, 5176 lengthOriginal: u32, roiStart: f32, roiEnd: f32) -> ${t} { `+(()=>{switch(e){case"asymmetric":return` 5177 if (xScale < 1.0 || floor(xScale) != xScale) { 5178 return ${t}(xResized) / ${t}(xScale); 5179 } else { 5180 ${wh("xResized","lengthOriginal","lengthResized",t)} 5181 } 5182 `;case"pytorch_half_pixel":return`if (lengthResized > 1) { 5183 return (${t}(xResized) + 0.5) / ${t}(xScale) - 0.5; 5184 } else { 5185 return 0.0; 5186 }`;case"tf_half_pixel_for_nn":return`return (${t}(xResized) + 0.5) / ${t}(xScale);`;case"align_corners":return`if (lengthResized == 1) { 5187 return 0.0; 5188 } else { 5189 ${wh("xResized","lengthOriginal - 1","lengthResized - 1",t)} 5190 }`;case"tf_crop_and_resize":return`if (lengthResized > 1) { 5191 return ${t}(roiStart) * ${t}(lengthOriginal - 1) + 5192 (${t}(xResized) * ${t}(roiEnd - roiStart) * ${t}(lengthOriginal - 1)) / 5193 ${t}(lengthResized - 1); 5194 } else { 5195 return 0.5 * ${t}(roiStart + roiEnd) * ${t}(lengthOriginal - 1); 5196 }`;case"half_pixel_symmetric":return`const outputWidth = ${t}xScale * ${t}(lengthResized); 5197 const adjustment = ${t}(lengthResized) / outputWidth; 5198 const center = ${t}(lengthOriginal) / 2; 5199 const offset = center * (1 - adjustment); 5200 return offset + ((${t}(xResized) + 0.5) / ${t}(xScale)) - 0.5;`;case"half_pixel":return`return ((${t}(xResized) + 0.5) / ${t}(xScale)) - 0.5;`;default:throw new Error(`Coordinate transform mode ${e} is not supported`)}})()+"}",DD=(e,t,r)=>`fn getNearestPixelFromOriginal(xOriginal: ${r}, isDownSample: bool) -> ${r} {`+(()=>{switch(e){case"round_prefer_ceil":return"if (fract(xOriginal) == 0.5) { return ceil(xOriginal); } else { return round(xOriginal); }";case"floor":return"return floor(xOriginal);";case"ceil":return"return ceil(xOriginal);";case"round_prefer_floor":return"if (fract(xOriginal) == 0.5) { return floor(xOriginal); } else { return round(xOriginal); }";default:if(t<11)return"if (isDownSample) { return ceil(xOriginal); } else { return xOriginal; }";throw new Error(`Nearest mode ${e} is not supported`)}})()+"}",ID=(e,t,r)=>{let n=new Array(r).fill(0).concat(new Array(r).fill(1)),s=e.length===0?n:e.slice();return t.length>0?(t.forEach((a,i)=>{n[a]=s[i],n[i+r]=s[t.length+i]}),n):s},TD=(e,t,r,n)=>{let s=[];if(r.length>0)if(n.length>0){if(e.forEach(a=>s.push(a)),Math.max(...n)>e.length)throw new Error("axes is out of bound");n.forEach((a,i)=>s[a]=r[i])}else r.forEach(a=>s.push(a));else{if(t.length===0)throw new Error("Resize requires either scales or sizes.");s=e.map((a,i)=>Math.round(a*t[i]))}return s},CD=(e,t,r)=>{let n=(()=>{switch(r.keepAspectRatioPolicy){case"not_larger":return r.axes.length>0?Math.min(...r.axes.map(a=>t[a]),Number.MAX_VALUE):Math.min(...t,Number.MAX_VALUE);case"not_smaller":return r.axes.length>0?Math.max(...r.axes.map(a=>t[a]),Number.MIN_VALUE):Math.max(...t,Number.MIN_VALUE);default:throw new Error(`Keep aspect ratio policy ${r.keepAspectRatioPolicy} is not supported`)}})();t.fill(1,0,t.length);let s=e.slice();return r.axes.length>0?(r.axes.forEach(a=>t[a]=n),r.axes.forEach(a=>s[a]=Math.round(e[a]*t[a]))):(t.fill(n,0,t.length),s.forEach((a,i)=>s[i]=Math.round(a*t[i]))),s},$D=(e,t,r,n,s)=>` 5201 fn calculateOriginalIndicesFromOutputIndices(output_indices: ${e.type.indices}) -> array<${e.type.value}, ${r.length}> { 5202 var original_indices: array<${e.type.value}, ${r.length}>; 5203 for (var i:u32 = 0; i < ${r.length}; i++) { 5204 var output_index = ${e.indicesGet("output_indices","i")}; 5205 var scale = ${xt("uniforms.scales","i",n)}; 5206 var roi_low = ${xt("uniforms.roi","i",s)}; 5207 var roi_hi = ${xt("uniforms.roi",`i + ${t.length}`,s)}; 5208 if (scale == 1.0) { 5209 original_indices[i] = ${e.type.value}(output_index); 5210 } else { 5211 var input_shape_i = ${xt("uniforms.input_shape","i",t.length)}; 5212 var output_shape_i = ${xt("uniforms.output_shape","i",r.length)}; 5213 original_indices[i] = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i, 5214 input_shape_i, roi_low, roi_hi); 5215 } 5216 } 5217 return original_indices; 5218 }`,SD=(e,t,r,n,s,a,i)=>` 5219 fn calculateInputIndicesFromOutputIndices(output_indices: ${t.type.indices}) -> ${e.type.indices} { 5220 var input_indices: ${e.type.indices}; 5221 for (var i:u32 = 0; i < ${n.length}; i++) { 5222 var output_index = ${t.indicesGet("output_indices","i")}; 5223 var input_index: u32; 5224 var scale = ${xt("uniforms.scales","i",s)}; 5225 if (scale == 1.0) { 5226 input_index = output_index; 5227 } else { 5228 var roi_low = ${xt("uniforms.roi","i",a)}; 5229 var roi_hi = ${xt("uniforms.roi",`i + ${r.length}`,a)}; 5230 var input_shape_i = ${xt("uniforms.input_shape","i",r.length)}; 5231 var output_shape_i = ${xt("uniforms.output_shape","i",n.length)}; 5232 var original_idx = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i, 5233 input_shape_i, roi_low, roi_hi); 5234 if (!${i} || (original_idx >= 0 && original_idx < ${t.type.value}(input_shape_i))) { 5235 if (original_idx < 0) { 5236 input_index = 0; 5237 } else if (original_idx > ${t.type.value}(input_shape_i - 1)) { 5238 input_index = input_shape_i - 1; 5239 } else { 5240 input_index = u32(getNearestPixelFromOriginal(original_idx, scale < 1)); 5241 } 5242 } else { 5243 input_index = u32(original_idx); 5244 } 5245 } 5246 ${e.indicesSet("input_indices","i","input_index")} 5247 } 5248 return input_indices; 5249 }`,kD=(e,t)=>` 5250 fn checkInputIndices(input_indices: ${e.type.indices}) -> bool { 5251 for (var i:u32 = 0; i < ${t.length}; i++) { 5252 var input_index = ${e.indicesGet("input_indices","i")}; 5253 if (input_index < 0 || input_index >= ${xt("uniforms.input_shape","i",t.length)}) { 5254 return false; 5255 } 5256 } 5257 return true; 5258 }`,yh=(e,t,r,n)=>e.rank>n?` 5259 ${e.indicesSet("input_indices",t,"channel")}; 5260 ${e.indicesSet("input_indices",r,"batch")}; 5261`:"",OD=(e,t,r,n,s)=>{let[a,i,o,l]=r.length===2?[-1,0,1,-1]:[0,2,3,1],u=e.type.value;return` 5262 fn getInputValue(batch: u32, channel: u32, row: u32, col: u32) -> ${u} { 5263 var input_indices: ${e.type.indices}; 5264 ${e.indicesSet("input_indices",i,`max(0, min(row, ${r[i]} - 1))`)}; 5265 ${e.indicesSet("input_indices",o,`max(0, min(col, ${r[o]} - 1))`)}; 5266 ${yh(e,l,a,2)} 5267 return ${e.getByIndices("input_indices")}; 5268 } 5269 5270 fn bilinearInterpolation(output_indices: ${t.type.indices}) -> ${u} { 5271 var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices); 5272 var row:${u} = originalIndices[${i}]; 5273 var col:${u} = originalIndices[${o}]; 5274 ${n?`if (row < 0 || row > (${r[i]}
vendor: 8,928 bytes, lines 5274-5436
5274 - 1) || col < 0 || col > (${r[o]} - 1)) { 5275 return ${s}; 5276 }`:""}; 5277 row = max(0, min(row, ${r[i]} - 1)); 5278 col = max(0, min(col, ${r[o]} - 1)); 5279 var row1: u32 = u32(row); 5280 var col1: u32 = u32(col); 5281 var row2: u32 = u32(row + 1); 5282 var col2: u32 = u32(col + 1); 5283 var channel: u32 = ${r.length>2?`u32(originalIndices[${l}])`:"0"}; 5284 var batch: u32 = ${r.length>2?`u32(originalIndices[${a}])`:"0"}; 5285 var x11: ${u} = getInputValue(batch, channel, row1, col1); 5286 var x12: ${u} = getInputValue(batch, channel, row1, col2); 5287 var x21: ${u} = getInputValue(batch, channel, row2, col1); 5288 var x22: ${u} = getInputValue(batch, channel, row2, col2); 5289 var dx1: ${u} = abs(row - ${u}(row1)); 5290 var dx2: ${u} = abs(${u}(row2) - row); 5291 var dy1: ${u} = abs(col - ${u}(col1)); 5292 var dy2: ${u} = abs(${u}(col2) - col); 5293 if (row1 == row2) { 5294 dx1 = 0.5; 5295 dx2 = 0.5; 5296 } 5297 if (col1 == col2) { 5298 dy1 = 0.5; 5299 dy2 = 0.5; 5300 } 5301 return (x11 * dx2 * dy2 + x12 * dx2 * dy1 + x21 * dx1 * dy2 + x22 * dx1 * dy1); 5302 }`},GD=(e,t,r,n,s,a,i,o,l,u)=>{let p=r.length===2,[d,c]=p?[0,1]:[2,3],g=e.type.value,A=m=>{let B=m===d?"row":"col";return` 5303 fn ${B}CubicInterpolation(input_indices: ${e.type.indices}, output_indices: ${t.type.indices}) -> ${g} { 5304 var output_index = ${t.indicesGet("output_indices",m)}; 5305 var originalIdx: ${g} = getOriginalCoordinateFromResizedCoordinate(output_index, ${s[m]}, 5306 ${n[m]}, ${r[m]}, ${a[m]}, ${a[m]} + ${r.length}); 5307 var fractOriginalIdx: ${g} = originalIdx - floor(originalIdx); 5308 var coefs = getCubicInterpolationCoefs(fractOriginalIdx); 5309 5310 if (${o} && (originalIdx < 0 || originalIdx > (${r[m]} - 1))) { 5311 return ${l}; 5312 } 5313 var data: array<${g}, 4> = array<${g}, 4>(0.0, 0.0, 0.0, 0.0); 5314 for (var i: i32 = -1; i < 3; i++) { 5315 var ${B}: ${g} = originalIdx + ${g}(i); 5316 if (${B} < 0 || ${B} >= ${r[m]}) { 5317 ${u?`coefs[i + 1] = 0.0; 5318 continue;`:o?`return ${l};`:`${B} = max(0, min(${B}, ${r[m]} - 1));`}; 5319 } 5320 var input_indices_copy: ${e.type.indices} = input_indices; 5321 ${e.indicesSet("input_indices_copy",m,`u32(${B})`)}; 5322 data[i + 1] = ${m===d?e.getByIndices("input_indices_copy"):"rowCubicInterpolation(input_indices_copy, output_indices)"}; 5323 } 5324 return cubicInterpolation1D(data, coefs); 5325 }`};return` 5326 ${A(d)}; 5327 ${A(c)}; 5328 fn getCubicInterpolationCoefs(s: ${g}) -> array<${g}, 4> { 5329 var absS = abs(s); 5330 var coeffs: array<${g}, 4> = array<${g}, 4>(0.0, 0.0, 0.0, 0.0); 5331 var oneMinusAbsS: ${g} = 1.0 - absS; 5332 var twoMinusAbsS: ${g} = 2.0 - absS; 5333 var onePlusAbsS: ${g} = 1.0 + absS; 5334 coeffs[0] = ((${i} * onePlusAbsS - 5 * ${i}) * onePlusAbsS + 8 * ${i}) * onePlusAbsS - 4 * ${i}; 5335 coeffs[1] = ((${i} + 2) * absS - (${i} + 3)) * absS * absS + 1; 5336 coeffs[2] = ((${i} + 2) * oneMinusAbsS - (${i} + 3)) * oneMinusAbsS * oneMinusAbsS + 1; 5337 coeffs[3] = ((${i} * twoMinusAbsS - 5 * ${i}) * twoMinusAbsS + 8 * ${i}) * twoMinusAbsS - 4 * ${i}; 5338 return coeffs; 5339 } 5340 5341 fn cubicInterpolation1D(x: array<${g}, 4>, coefs: array<${g}, 4>) -> ${g} { 5342 var coefsSum: ${g} = coefs[0] + coefs[1] + coefs[2] + coefs[3]; 5343 return (x[0] * coefs[0] + x[1] * coefs[1]+ x[2] * coefs[2]+ x[3] * coefs[3]) / coefsSum; 5344 } 5345 5346 fn bicubicInterpolation(output_indices: ${t.type.indices}) -> ${g} { 5347 var input_indices: ${e.type.indices} = output_indices; 5348 return colCubicInterpolation(input_indices, output_indices); 5349 } 5350 `},zD=(e,t,r,n,s)=>{let[a,i,o,l,u]=r.length===3?[-1,0,1,2,-1]:[0,2,3,4,1],p=e.type.value;return` 5351 fn getInputValue(batch: u32, channel: u32, depth:u32, height: u32, width: u32) -> ${p} { 5352 var input_indices: ${e.type.indices}; 5353 ${e.indicesSet("input_indices",i,`max(0, min(depth, ${r[i]} - 1))`)}; 5354 ${e.indicesSet("input_indices",o,`max(0, min(height, ${r[o]} - 1))`)}; 5355 ${e.indicesSet("input_indices",l,`max(0, min(width, ${r[l]} - 1))`)}; 5356 ${yh(e,u,a,3)} 5357 return ${e.getByIndices("input_indices")}; 5358 } 5359 5360 fn trilinearInterpolation(output_indices: ${t.type.indices}) -> ${p} { 5361 var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices); 5362 var depth:${p} = originalIndices[${i}]; 5363 var height:${p} = originalIndices[${o}]; 5364 var width:${p} = originalIndices[${l}]; 5365 ${n?`if (depth < 0 || depth > (${r[i]} - 1) || height < 0 || height > (${r[o]} - 1) || width < 0 || (width > ${r[l]} - 1)) { 5366 return ${s}; 5367 }`:""}; 5368 5369 depth = max(0, min(depth, ${r[i]} - 1)); 5370 height = max(0, min(height, ${r[o]} - 1)); 5371 width = max(0, min(width, ${r[l]} - 1)); 5372 var depth1: u32 = u32(depth); 5373 var height1: u32 = u32(height); 5374 var width1: u32 = u32(width); 5375 var depth2: u32 = u32(depth + 1); 5376 var height2: u32 = u32(height + 1); 5377 var width2: u32 = u32(width + 1); 5378 var channel: u32 = ${r.length>3?`u32(originalIndices[${u}])`:"0"}; 5379 var batch: u32 = ${r.length>3?`u32(originalIndices[${a}])`:"0"}; 5380 5381 var x111: ${p} = getInputValue(batch, channel, depth1, height1, width1); 5382 var x112: ${p} = getInputValue(batch, channel, depth1, height1, width2); 5383 var x121: ${p} = getInputValue(batch, channel, depth1, height2, width1); 5384 var x122: ${p} = getInputValue(batch, channel, depth1, height2, width2); 5385 var x211: ${p} = getInputValue(batch, channel, depth2, height1, width1); 5386 var x212: ${p} = getInputValue(batch, channel, depth2, height1, width2); 5387 var x221: ${p} = getInputValue(batch, channel, depth2, height2, width1); 5388 var x222: ${p} = getInputValue(batch, channel, depth2, height2, width2); 5389 var dx1: ${p} = abs(depth - ${p}(depth1)); 5390 var dx2: ${p} = abs(${p}(depth2) - depth); 5391 var dy1: ${p} = abs(height - ${p}(height1)); 5392 var dy2: ${p} = abs(${p}(height2) - height); 5393 var dz1: ${p} = abs(width - ${p}(width1)); 5394 var dz2: ${p} = abs(${p}(width2) - width); 5395 if (depth1 == depth2) { 5396 dx1 = 0.5; 5397 dx2 = 0.5; 5398 } 5399 if (height1 == height2) { 5400 dy1 = 0.5; 5401 dy2 = 0.5; 5402 } 5403 if (width1 == width2) { 5404 dz1 = 0.5; 5405 dz2 = 0.5; 5406 } 5407 return (x111 * dx2 * dy2 * dz2 + x112 * dx2 * dy2 * dz1 + x121 * dx2 * dy1 *dz2 + x122 * dx2 * dy1 * dz1 + 5408 x211 * dx1 * dy2 * dz2 + x212 * dx1 * dy2 * dz1 + x221 * dx1 * dy1 *dz2 + x222 * dx1 * dy1 * dz1); 5409 }`},FD=(e,t,r,n,s,a)=>{let i=e.dims,o=ID(a,t.axes,i.length),l=TD(i,n,s,t.axes),u=n.slice();n.length===0&&(u=i.map((h,P)=>h===0?1:l[P]/h),t.keepAspectRatioPolicy!=="stretch"&&(l=CD(i,u,t)));let p=Pt("output",e.dataType,l.length),d=Ne("input",e.dataType,i.length),c=$e.size(l),g=i.length===l.length&&i.every((h,P)=>h===l[P]),A=t.coordinateTransformMode==="tf_crop_and_resize",m=t.extrapolationValue,B=d.type.value,f=h=>` 5410 ${g?"":` 5411 ${ED(t.coordinateTransformMode,B)}; 5412 ${(()=>{switch(t.mode){case"nearest":return` 5413 ${kD(d,i)}; 5414 ${DD(t.nearestMode,r,B)}; 5415 ${SD(d,p,i,l,u.length,o.length,A)}; 5416 `;case"linear":return` 5417 ${$D(p,i,l,u.length,o.length)}; 5418 ${(()=>{if(i.length===2||i.length===4)return`${OD(d,p,i,A,m)}`;if(i.length===3||i.length===5)return`${zD(d,p,i,A,m)}`;throw Error("Linear mode only supports input dims 2, 3, 4 and 5 are supported in linear mode.")})()}; 5419 `;case"cubic":return` 5420 ${(()=>{if(i.length===2||i.length===4)return`${GD(d,p,i,l,u,o,t.cubicCoeffA,A,t.extrapolationValue,t.excludeOutside)}`;throw Error("Cubic mode only supports input dims 2 and 4 are supported in linear mode.")})()}; 5421 `;default:throw Error("Invalid resize mode")}})()}; 5422 `} 5423 ${h.registerUniform("output_size","u32").registerUniform("scales","f32",u.length).registerUniform("roi","f32",o.length).declareVariables(d,p)} 5424 ${h.mainStart()} 5425 ${h.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 5426 ${g?"output[global_idx] = input[global_idx];":` 5427 let output_indices = ${p.offsetToIndices("global_idx")}; 5428 var input_indices: ${d.type.indices}; 5429 ${(()=>{switch(t.mode){case"nearest":return`input_indices = calculateInputIndicesFromOutputIndices(output_indices); 5430 if (checkInputIndices(input_indices)) { 5431 output[global_idx] = ${d.getByIndices("input_indices")}; 5432 } else { 5433 output[global_idx] = ${t.extrapolationValue}; 5434 }`;case"linear":return`output[global_idx] = ${i.length===2||i.length===4?"bilinearInterpolation":"trilinearInterpolation"}(output_indices);`;case"cubic":return"output[global_idx] = bicubicInterpolation(output_indices);";default:throw Error(`Unsupported resize mode: ${t.mode}`)}})()}; 5435`} 5436 }`;
vendor: 15,732 bytes, lines 5436-5602
5436return{name:"Resize",shaderCache:{hint:`${t.cacheKey}|${r}|${u.length>0?t.mode==="cubic"?u:u.length:""}|${s.length>0?s:""}|${o.length>0?o:""}|${g}|${t.mode==="nearest"?i.length:i}`,inputDependencies:["rank"]},getShaderSource:f,getRunData:()=>({outputs:[{dims:l,dataType:e.dataType}],dispatchGroup:{x:Math.ceil(c/64)},programUniforms:[{type:12,data:c},{type:1,data:u},{type:1,data:o},...It(i,l)]})}},LD=e=>{let t=e.customDataBuffer;return new Uint32Array(t,t.byteOffset,1)[0]},RD=(e,t)=>{let r=[],n=[],s=[],a=LD(e);if(t.antialias!==0)throw Error("Only default value (0) for Antialias attribute is supported");xD(e.inputs,t,a,r,n,s),e.compute(FD(e.inputs[0],t,a,r,n,s),{inputs:[0]})},YD=e=>{let t=e.antialias,r=e.axes,n=e.coordinateTransformMode,s=e.cubicCoeffA,a=e.excludeOutside!==0,i=e.extrapolationValue,o=e.keepAspectRatioPolicy,l=e.mode,u=e.nearestMode===""?"simple":e.nearestMode;return Mr({antialias:t,axes:r,coordinateTransformMode:n,cubicCoeffA:s,excludeOutside:a,extrapolationValue:i,keepAspectRatioPolicy:o,mode:l,nearestMode:u})}}),ND,jD,UD,O3=et(()=>{Gt(),qt(),tr(),ND=e=>{if(!e||e.length<3)throw new Error("layerNorm requires at least 3 inputs.");let t=e[0],r=e[1],n=e[2];if(t.dataType!==r.dataType||t.dataType!==n.dataType)throw new Error("All inputs must have the same data type");if(t.dims.length!==3&&t.dims.length!==2)throw new Error("Input must be 2D or 3D");if(r.dims.length!==3&&r.dims.length!==2)throw new Error("Skip must be 2D or 3D");let s=t.dims[t.dims.length-1],a=t.dims[t.dims.length-2];if(r.dims[r.dims.length-1]!==s)throw new Error("Skip must have the same hidden size as input");if(r.dims[r.dims.length-2]!==a)throw new Error("Skip must have the same sequence length as input");if(n.dims.length!==1)throw new Error("Gamma must be 1D");if(n.dims[n.dims.length-1]!==s)throw new Error("Gamma must have the same hidden size as input");if(e.length>3){let i=e[3];if(i.dims.length!==1)throw new Error("Beta must be 1D");if(i.dims[i.dims.length-1]!==s)throw new Error("Beta must have the same hidden size as input")}if(e.length>4){let i=e[4];if(i.dims.length!==1)throw new Error("Bias must be 1D");if(i.dims[i.dims.length-1]!==s)throw new Error("Bias must have the same hidden size as input")}},jD=(e,t,r,n)=>{let s=t.simplified,a=e[0].dims,i=$e.size(a),o=a,l=i,u=a.slice(-1)[0],p=n?a.slice(0,-1).concat(1):[],d=!s&&e.length>3,c=e.length>4,g=n&&r>1,A=n&&r>2,m=r>3,B=64,f=en(u),h=[{type:12,data:l},{type:12,data:f},{type:12,data:u},{type:1,data:t.epsilon}],P=w=>{let b=[{name:"output_size",type:"u32"},{name:"components",type:"u32"},{name:"hidden_size",type:"u32"},{name:"epsilon",type:"f32"}],v=[Ne("x",e[0].dataType,e[0].dims,f),Ne("skip",e[1].dataType,e[1].dims,f),Ne("gamma",e[2].dataType,e[2].dims,f)];d&&v.push(Ne("beta",e[3].dataType,e[3].dims,f)),c&&v.push(Ne("bias",e[4].dataType,e[4].dims,f)),v.push(Pt("output",e[0].dataType,o,f)),g&&v.push(Pt("mean_output",1,p)),A&&v.push(Pt("inv_std_output",1,p)),m&&v.push(Pt("input_skip_bias_sum",e[0].dataType,o,f));let y=Bn(e[0].dataType),$=Bn(1,f);return` 5437 5438 ${w.registerUniforms(b).declareVariables(...v)} 5439 var<workgroup> sum_shared : array<${$}, ${B}>; 5440 var<workgroup> sum_squared_shared : array<${$}, ${B}>; 5441 5442 ${w.mainStart([B,1,1])} 5443 let ix = local_id.x; 5444 let iy = global_id.x / ${B}; 5445 5446 let hidden_size_vectorized: u32 = uniforms.hidden_size / uniforms.components; 5447 var stride = hidden_size_vectorized / ${B}; 5448 let offset = ix * stride + iy * hidden_size_vectorized; 5449 let offset1d = stride * ix; 5450 if (ix == ${B-1}) { 5451 stride = hidden_size_vectorized - stride * ix; 5452 } 5453 for (var i: u32 = 0; i < stride; i++) { 5454 let skip_value = skip[offset + i]; 5455 let bias_value = ${c?"bias[offset1d + i]":y+"(0.0)"}; 5456 let input_value = x[offset + i]; 5457 let value = input_value + skip_value + bias_value; 5458 ${m?"input_skip_bias_sum[offset + i] = value;":""} 5459 output[offset + i] = value; 5460 let f32_value = ${Go(y,f,"value")}; 5461 sum_shared[ix] += f32_value; 5462 sum_squared_shared[ix] += f32_value * f32_value; 5463 } 5464 workgroupBarrier(); 5465 5466 var reduce_size : u32 = ${B}; 5467 for (var curr_size = reduce_size >> 1; curr_size > 0; curr_size = reduce_size >> 1) { 5468 reduce_size = curr_size + (reduce_size & 1); 5469 if (ix < curr_size) { 5470 sum_shared[ix] += sum_shared[ix + reduce_size]; 5471 sum_squared_shared[ix] += sum_squared_shared[ix + reduce_size]; 5472 } 5473 workgroupBarrier(); 5474 } 5475 5476 let sum = sum_shared[0]; 5477 let square_sum = sum_squared_shared[0]; 5478 let mean = ${qa("sum",f)} / f32(uniforms.hidden_size); 5479 let inv_std_dev = inverseSqrt(${qa("square_sum",f)} / f32(uniforms.hidden_size) ${s?"":"- mean * mean"} + uniforms.epsilon); 5480 ${g?"mean_output[global_idx] = mean;":""} 5481 ${A?"inv_std_output[global_idx] = inv_std_dev;":""} 5482 5483 for (var i: u32 = 0; i < stride; i++) { 5484 output[offset + i] = (output[offset + i] ${s?"":`- ${y}(mean)`}) * 5485 ${y}(inv_std_dev) * gamma[offset1d + i] 5486 ${d?"+ beta[offset1d + i]":""}; 5487 } 5488 }`},_=[{dims:o,dataType:e[0].dataType}];return r>1&&_.push({dims:p,dataType:1}),r>2&&_.push({dims:p,dataType:1}),r>3&&_.push({dims:a,dataType:e[0].dataType}),{name:"SkipLayerNormalization",shaderCache:{hint:`${f};${g};${A};${m}`,inputDependencies:e.map((w,b)=>"type")},getShaderSource:P,getRunData:()=>({outputs:_,dispatchGroup:{x:Math.ceil(l/u)},programUniforms:h})}},UD=(e,t)=>{ND(e.inputs);let r=[0];e.outputCount>1&&r.push(-3),e.outputCount>2&&r.push(-3),e.outputCount>3&&r.push(3),e.compute(jD(e.inputs,t,e.outputCount,!1),{outputs:r})}}),WD,Kl,VD,bh,QD,HD,KD,qD,G3=et(()=>{Gt(),qt(),on(),tr(),WD=(e,t)=>{if(!e||e.length<1)throw new Error("too few inputs");if(t.axes.length!==0){if(t.axes.length!==t.starts.length||t.axes.length!==t.ends.length)throw new Error("axes, starts and ends must have the same length")}else if(t.starts.length!==t.ends.length)throw new Error("starts and ends must have the same length");e.slice(1).forEach((r,n)=>{if(e[n+1].dataType!==6&&e[n+1].dataType!==7)throw new Error(`Input ${n} must be an array of int32 or int64`)})},Kl=(e,t)=>{let r=[];if(e.length>t)if(e[t].dataType===7)e[t].getBigInt64Array().forEach(n=>r.push(Number(n)));else if(e[t].dataType===6)e[t].getInt32Array().forEach(n=>r.push(Number(n)));else throw new Error(`Input ${t} must be an array of int32 or int64`);return r},VD=(e,t)=>{if(e.length>1){let r=Kl(e,1),n=Kl(e,2),s=Kl(e,3);return s.length===0&&(s=[...Array(e[0].dims.length).keys()]),Mr({starts:r,ends:n,axes:s})}else return t},bh=(e,t,r,n,s)=>{let a=e;return e<0&&(a+=r[n[t]]),s[t]<0?Math.max(0,Math.min(a,r[n[t]]-1)):Math.max(0,Math.min(a,r[n[t]]))},QD=(e,t,r)=>`fn calculateInputIndices(output_indices: ${t.type.indices}) -> ${e.type.indices} { 5489 var input_indices: ${e.type.indices}; 5490 var carry = 0u; 5491 for (var i = ${r.length-1}; i >= 0; i--) { 5492 let input_shape_i = ${xt("uniforms.input_shape","i",r.length)}; 5493 let steps_i = ${xt("uniforms.steps","i",r.length)}; 5494 let signs_i = ${xt("uniforms.signs","i",r.length)}; 5495 let starts_i = ${xt("uniforms.starts","i",r.length)}; 5496 var output_index = ${t.indicesGet("output_indices","i")}; 5497 var input_index = output_index * steps_i + starts_i + carry; 5498 carry = input_index / input_shape_i; 5499 input_index = input_index % input_shape_i; 5500 if (signs_i < 0) { 5501 input_index = input_shape_i - input_index - 1u + starts_i; 5502 } 5503 ${e.indicesSet("input_indices","i","input_index")}; 5504 } 5505 return input_indices; 5506 }`,HD=(e,t)=>{let r=e[0].dims,n=$e.size(r),s=t.axes.length>0?$e.normalizeAxes(t.axes,r.length):[...Array(r.length).keys()],a=Kl(e,4);a.forEach(f=>f!==0||(()=>{throw new Error("step cannot be 0")})),a.length===0&&(a=Array(s.length).fill(1));let i=t.starts.map((f,h)=>bh(f,h,r,s,a)),o=t.ends.map((f,h)=>bh(f,h,r,s,a));if(s.length!==i.length||s.length!==o.length)throw new Error("start, ends and axes should have the same number of elements");if(s.length!==r.length)for(let f=0;f<r.length;++f)s.includes(f)||(i.splice(f,0,0),o.splice(f,0,r[f]),a.splice(f,0,1));let l=a.map(f=>Math.sign(f));a.forEach((f,h,P)=>{if(f<0){let _=(o[h]-i[h])/f,w=i[h],b=w+_*a[h];i[h]=b,o[h]=w,P[h]=-f}});let u=r.slice(0);s.forEach((f,h)=>{u[f]=Math.ceil((o[f]-i[f])/a[f])});let p={dims:u,dataType:e[0].dataType},d=Pt("output",e[0].dataType,u.length),c=Ne("input",e[0].dataType,e[0].dims.length),g=$e.size(u),A=[{name:"outputSize",type:"u32"},{name:"starts",type:"u32",length:i.length},{name:"signs",type:"i32",length:l.length},{name:"steps",type:"u32",length:a.length}],m=[{type:12,data:g},{type:12,data:i},{type:6,data:l},{type:12,data:a},...It(e[0].dims,u)],B=f=>` 5507 ${f.registerUniforms(A).declareVariables(c,d)} 5508 ${QD(c,d,r)} 5509 ${f.mainStart()} 5510 ${f.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} 5511 let output_indices = ${d.offsetToIndices("global_idx")}; 5512 let input_indices = calculateInputIndices(output_indices); 5513 ${d.setByOffset("global_idx",c.getByIndices("input_indices"))} 5514 }`;return{name:"Slice",shaderCache:{hint:`${l.length}_${i.length}_${a.length}`,inputDependencies:["rank"]},getShaderSource:B,getRunData:()=>({outputs:[p],dispatchGroup:{x:Math.ceil(n/64)},programUniforms:m})}},KD=(e,t)=>{WD(e.inputs,t);let r=VD(e.inputs,t);e.compute(HD(e.inputs,r),{inputs:[0]})},qD=e=>{let t=e.starts,r=e.ends,n=e.axes;return Mr({starts:t,ends:r,axes:n})}}),XD,ZD,JD,eI,z3=et(()=>{Gt(),qt(),on(),Xa(),tr(),XD=e=>{if(!e||e.length!==1)throw new Error("Softmax op requires 1 input.")},ZD=(e,t)=>{let r=e.inputs[0],n=r.dims,s=$e.size(n),a=n.length,i=$e.normalizeAxis(t.axis,a),o=i<n.length-1,l,u=[];o?(u=Array.from({length:a},(v,y)=>y),u[i]=a-1,u[a-1]=i,l=e.compute(is(r,u),{inputs:[r],outputs:[-1]})[0]):l=r;let p=l.dims,d=p[a-1],c=s/d,g=en(d),A=d/g,m=64;c===1&&(m=256);let B=(v,y)=>y===4?`max(max(${v}.x, ${v}.y), max(${v}.z, ${v}.w))`:y===2?`max(${v}.x, ${v}.y)`:y===3?`max(max(${v}.x, ${v}.y), ${v}.z)`:v,f=Ne("x",l.dataType,l.dims,g),h=Pt("result",l.dataType,l.dims,g),P=f.type.value,_=Bn(l.dataType)==="f32"?`var threadMax = ${P}(-3.4028234663852886e+38f);`:`var threadMax = ${P}(-65504.0h);`,w=v=>` 5515 var<workgroup> rowMaxShared : ${P}; 5516 var<workgroup> rowSumShared : ${P}; 5517 var<workgroup> threadShared : array<${P}, ${m}>; 5518 5519 fn getValue(row: i32, col: i32, row_stride: i32) -> ${P} { 5520 let index = row * row_stride + col; 5521 return x[index]; 5522 } 5523 5524 fn setValue(row: i32, col: i32, row_stride: i32, value: ${P}) { 5525 let index = row * row_stride + col; 5526 result[index] = value; 5527 } 5528 ${v.registerUniform("packedCols","i32").declareVariables(f,h)} 5529 ${v.mainStart(m)} 5530 let gindex = i32(global_idx); 5531 let lindex = i32(local_idx); 5532 const wg = ${m}; 5533 let row = gindex / wg; 5534 let cols = uniforms.packedCols; 5535 let row_stride : i32 = uniforms.packedCols; 5536 5537 // find the rows max 5538 ${_} 5539 for (var col = lindex; col < cols; col += wg) { 5540 let value = getValue(row, col, row_stride); 5541 threadMax = max(threadMax, value); 5542 } 5543 if (lindex < cols) { 5544 threadShared[lindex] = threadMax; 5545 } 5546 workgroupBarrier(); 5547 5548 var reduceSize = min(cols, wg); 5549 for (var currSize = reduceSize >> 1; currSize > 0; currSize = reduceSize >> 1) { 5550 reduceSize = currSize + (reduceSize & 1); 5551 if (lindex < currSize) { 5552 threadShared[lindex] = max(threadShared[lindex], threadShared[lindex + reduceSize]); 5553 } 5554 workgroupBarrier(); 5555 } 5556 if (lindex == 0) { 5557 rowMaxShared = ${P}(${B("threadShared[0]",g)}); 5558 } 5559 workgroupBarrier(); 5560 5561 // find the rows sum 5562 var threadSum = ${P}(0.0); 5563 for (var col = lindex; col < cols; col += wg) { 5564 let subExp = exp(getValue(row, col, row_stride) - rowMaxShared); 5565 threadSum += subExp; 5566 } 5567 threadShared[lindex] = threadSum; 5568 workgroupBarrier(); 5569 5570 for (var currSize = wg >> 1; currSize > 0; currSize = currSize >> 1) { 5571 if (lindex < currSize) { 5572 threadShared[lindex] = threadShared[lindex] + threadShared[lindex + currSize]; 5573 } 5574 workgroupBarrier(); 5575 } 5576 if (lindex == 0) { 5577 rowSumShared = ${P}(${qa("threadShared[0]",g)}); 5578 } 5579 workgroupBarrier(); 5580 5581 // calculate final value for each element in the row 5582 for (var col = lindex; col < cols; col += wg) { 5583 var value = exp(getValue(row, col, row_stride) - rowMaxShared) / rowSumShared; 5584 // max operation protects against NaN since all values should be >=0 5585 value = max(value, ${P}(0.0)); 5586 setValue(row, col, row_stride, value); 5587 } 5588 }`,b=e.compute({name:"Softmax",shaderCache:{hint:`${g};${m}`,inputDependencies:["type"]},getRunData:()=>({outputs:[{dims:p,dataType:l.dataType}],dispatchGroup:{x:c},programUniforms:[{type:6,data:A}]}),getShaderSource:w},{inputs:[l],outputs:[o?-1:0]})[0];o&&e.compute(is(b,u),{inputs:[b]})},JD=(e,t)=>{XD(e.inputs),ZD(e,t)},eI=e=>Mr({axis:e.axis})}),Ph,tI,rI,nI,sI,F3=et(()=>{Gt(),qt(),tr(),Ph=e=>Array.from(e.getBigInt64Array(),Number),tI=e=>{if(!e||e.length!==2)throw new Error("Tile requires 2 inputs.");if(e[0].dataType!==1&&e[0].dataType!==10&&e[0].dataType!==6&&e[0].dataType!==12)throw new Error("Tile only support float, float16, int32, and uint32 data types");if(e[1].dataType!==7)throw new Error("Tile `repeats` input should be of int64 data type");if(e[1].dims.length!==1)throw new Error("Tile `repeats` input should be 1-D");if(Ph(e[1]).length!==e[0].dims.length)throw new Error("Tile `repeats` input should have same number of elements as rank of input data tensor")},rI=(e,t)=>{let r=[];for(let n=0;n<e.length;++n)r.push(e[n]*t[n]);return r},nI=(e,t)=>{let r=e[0].dims,n=t??Ph(e[1]),s=rI(r,n),a=$e.size(s),i=e[0].dataType,o=Ne("input",i,r.length),l=Pt("output",i,s.length),u=p=>` 5589 const inputShape = ${o.indices(...r)}; 5590 ${p.registerUniform("output_size","u32").declareVariables(o,l)} 5591 ${p.mainStart()} 5592 ${p.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 5593 let output_indices = ${l.offsetToIndices("global_idx")}; 5594 var input_indices: ${o.type.indices}; 5595 for (var i = 0; i < ${r.length}; i++) { 5596 let input_dim_i = ${o.indicesGet("uniforms.input_shape","i")}; 5597 let input_dim_value = ${l.indicesGet("output_indices","i")} % input_dim_i; 5598 5599 ${o.indicesSet("input_indices","i","input_dim_value")} 5600 } 5601 ${l.setByOffset("global_idx",o.getByIndices("input_indices"))} 5602 }`;return{name:"Tile",shaderCache:{hint:`${n}`,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:s,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:[{type:12,data:a},...It(e[0].dims,s)]}),getShaderSource:u}},sI=e=>{tI(e.inputs),e.compute(nI(e.inputs),{inputs:[0]})}}),aI,iI,oI,L3=et(()=>{Gt(),qt(),tr(),aI=(e,t,r,n,s)=>{let a=Pt("output_data",s,r.length,4),i=Ne("a_data",t[1].dataType,t[1].dims.length,4),o=Ne("b_data",t[2].dataType,t[2].dims.length,4),l=Ne("c_data",t[0].dataType,t[0].dims.length,4),u,p=(d,c,g)=>`select(${c}, ${d}, ${g})`;if(!n)u=a.setByOffset("global_idx",p(i.getByOffset("global_idx"),o.getByOffset("global_idx"),l.getByOffset("global_idx")));else{let d=(c,g,A="")=>{let m=`a_data[index_a${g}][component_a${g}]`,B=`b_data[index_b${g}
5602][component_b${g}]`,f=`bool(c_data[index_c${g}] & (0xffu << (component_c${g} * 8)))`;return` 5603 let output_indices${g} = ${a.offsetToIndices(`global_idx * 4u + ${g}u`)}; 5604 let offset_a${g} = ${i.broadcastedIndicesToOffset(`output_indices${g}`,a)}; 5605 let offset_b${g} = ${o.broadcastedIndicesToOffset(`output_indices${g}`,a)}; 5606 let offset_c${g} = ${l.broadcastedIndicesToOffset(`output_indices${g}`,a)}; 5607 let index_a${g} = offset_a${g} / 4u; 5608 let index_b${g} = offset_b${g} / 4u; 5609 let index_c${g} = offset_c${g} / 4u; 5610 let component_a${g} = offset_a${g} % 4u; 5611 let component_b${g} = offset_b${g} % 4u; 5612 let component_c${g} = offset_c${g} % 4u; 5613 ${c}[${g}] = ${A}(${p(m,B,f)}); 5614 `};s===9?u=` 5615 var data = vec4<u32>(0); 5616 ${d("data",0,"u32")} 5617 ${d("data",1,"u32")} 5618 ${d("data",2,"u32")} 5619 ${d("data",3,"u32")} 5620 output_data[global_idx] = dot(vec4<u32>(0x1, 0x100, 0x10000, 0x1000000), vec4<u32>(data));`:u=` 5621 ${d("output_data[global_idx]",0)} 5622 ${d("output_data[global_idx]",1)} 5623 ${d("output_data[global_idx]",2)} 5624 ${d("output_data[global_idx]",3)} 5625 `}return` 5626 ${e.registerUniform("vec_size","u32").declareVariables(l,i,o,a)} 5627 ${e.mainStart()} 5628 ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")} 5629 ${u} 5630 }`},iI=e=>{let t=e[1].dims,r=e[2].dims,n=e[0].dims,s=e[1].dataType,a=!($e.areEqual(t,r)&&$e.areEqual(r,n)),i=t,o=$e.size(t);if(a){let u=ko.calcShape(ko.calcShape(t,r,!1),n,!1);if(!u)throw new Error("Can't perform where op on the given tensors");i=u,o=$e.size(i)}let l=Math.ceil(o/4);return{name:"Where",shaderCache:{inputDependencies:["rank","rank","rank"]},getShaderSource:u=>aI(u,e,i,a,s),getRunData:()=>({outputs:[{dims:i,dataType:s}],dispatchGroup:{x:Math.ceil(o/64/4)},programUniforms:[{type:12,data:l},...It(n,t,r,i)]})}},oI=e=>{e.compute(iI(e.inputs))}}),lI,R3=et(()=>{e3(),FA(),t3(),r3(),n3(),s3(),a3(),c3(),p3(),g3(),A3(),h3(),m3(),f3(),_3(),w3(),y3(),b3(),P3(),M3(),v3(),B3(),x3(),E3(),D3(),yE(),I3(),T3(),C3(),$3(),S3(),OA(),k3(),TE(),O3(),G3(),z3(),EE(),F3(),Xa(),NA(),L3(),lI=new Map([["Abs",[NB]],["Acos",[jB]],["Acosh",[UB]],["Add",[C1]],["ArgMax",[EB,zA]],["ArgMin",[xB,zA]],["Asin",[WB]],["Asinh",[VB]],["Atan",[QB]],["Atanh",[HB]],["Attention",[SB]],["AveragePool",[iD,aD]],["BatchNormalization",[zB]],["BiasAdd",[RB]],["BiasSplitGelu",[D1]],["Cast",[qB,KB]],["Ceil",[JB]],["Clip",[ZB]],["Concat",[W1,V1]],["Conv",[th,JA]],["ConvTranspose",[wx,mx]],["Cos",[e1]],["Cosh",[t1]],["CumSum",[bx,Px]],["DepthToSpace",[xx,Ex]],["DequantizeLinear",[hD,mD]],["Div",[$1]],["Einsum",[Sx,kx]],["Elu",[r1,jl]],["Equal",[S1]],["Erf",[n1]],["Exp",[s1]],["Expand",[Fx]],["FastGelu",[Rx]],["Floor",[a1]],["FusedConv",[th,JA]],["Gather",[Ux,jx]],["GatherElements",[tE,eE]],["GatherBlockQuantized",[qx,Xx]],["GatherND",[Vx,Qx]],["Gelu",[i1]],["Gemm",[aE,sE]],["GlobalAveragePool",[lD,oD]],["GlobalMaxPool",[pD,dD]],["Greater",[z1]],["GreaterOrEqual",[L1]],["GridSample",[AE,hE]],["GroupQueryAttention",[kE]],["HardSigmoid",[A1,g1]],["InstanceNormalization",[zE]],["LayerNormalization",[RE]],["LeakyRelu",[o1,jl]],["Less",[F1]],["LessOrEqual",[R1]],["Log",[P1]],["MatMul",[NE]],["MatMulNBits",[VE,QE]],["MaxPool",[uD,cD]],["Mul",[k1]],["MultiHeadAttention",[wE,fE]],["Neg",[u1]],["Not",[l1]],["Pad",[rD]],["Pow",[O1]],["QuickGelu",[B1,jl]],["Range",[wD]],["Reciprocal",[c1]],["ReduceMin",[bB]],["ReduceMean",[mB]],["ReduceMax",[yB]],["ReduceSum",[MB]],["ReduceProd",[PB]],["ReduceL1",[fB]],["ReduceL2",[_B]],["ReduceLogSum",[BB]],["ReduceLogSumExp",[wB]],["ReduceSumSquare",[vB]],["Relu",[d1]],["Resize",[RD,YD]],["RotaryEmbedding",[IE]],["ScatterND",[MD,PD]],["Sigmoid",[p1]],["Sin",[h1]],["Sinh",[m1]],["Slice",[KD,qD]],["SkipLayerNormalization",[UD]],["Split",[BE,xE]],["Sqrt",[f1]],["Softmax",[JD,eI]],["Sub",[G1]],["Tan",[_1]],["Tanh",[w1]],["ThresholdedRelu",[b1,jl]],["Tile",[sI]],["Transpose",[zv,Fv]],["Where",[oI]]])}),uI,Y3=et(()=>{ys(),$a(),tr(),uI=class{constructor(e){this.backend=e,this.repo=new Map,this.attributesBound=!1}getArtifact(e){return this.repo.get(e)}setArtifact(e,t){this.repo.set(e,t)}run(e,t,r,n,s){Aa(e.programInfo.name);let a=this.backend.device,i=this.backend.getComputePassEncoder();this.backend.writeTimestamp(this.backend.pendingDispatchNumber*2);let o=[];for(let u of t)o.push({binding:o.length,resource:{buffer:u.buffer}});for(let u of r)o.push({binding:o.length,resource:{buffer:u.buffer}});s&&o.push({binding:o.length,resource:s});let l=a.createBindGroup({layout:e.computePipeline.getBindGroupLayout(0),entries:o,label:e.programInfo.name});if(this.backend.sessionStatus==="capturing"){let u={kernelId:this.backend.currentKernelId,computePipeline:e.computePipeline,bindGroup:l,dispatchGroup:n};this.backend.capturedCommandList.get(this.backend.currentSessionId).push(u)}i.setPipeline(e.computePipeline),i.setBindGroup(0,l),i.dispatchWorkgroups(...n),this.backend.writeTimestamp(this.backend.pendingDispatchNumber*2+1),this.backend.pendingDispatchNumber++,(this.backend.pendingDispatchNumber>
5630=this.backend.maxDispatchNumber||this.backend.queryType==="at-passes")&&this.backend.endComputePass(),this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber&&this.backend.flush(),js(e.programInfo.name)}dispose(){}build(e,t){Aa(e.name);let r=this.backend.device,n=[];[{feature:"shader-f16",extension:"f16"},{feature:"subgroups",extension:"subgroups"}].forEach(u=>{r.features.has(u.feature)&&n.push(`enable ${u.extension};`)});let s=Cv(t,this.backend.device.limits),a=e.getShaderSource(s),i=`${n.join(` 5631`)} 5632${s.additionalImplementations} 5633${a}`,o=r.createShaderModule({code:i,label:e.name});ur("verbose",()=>`[WebGPU] ${e.name} shader code: ${i}`);let l=r.createComputePipeline({compute:{module:o,entryPoint:"main"},layout:"auto",label:e.name});return js(e.name),{programInfo:e,computePipeline:l,uniformVariablesInfo:s.variablesInfo}}normalizeDispatchGroupSize(e){let t=typeof e=="number"?e:e.x,r=typeof e=="number"?1:e.y||1,n=typeof e=="number"?1:e.z||1,s=this.backend.device.limits.maxComputeWorkgroupsPerDimension;if(t<=s&&r<=s&&n<=s)return[t,r,n];let a=t*r*n,i=Math.ceil(Math.sqrt(a));if(i>s){if(i=Math.ceil(Math.cbrt(a)),i>s)throw new Error("Total dispatch size exceeds WebGPU maximum.");return[i,i,i]}else return[i,i,1]}}}),cI={};Co(cI,{WebGpuBackend:()=>AI});var dI,pI,gI,AI,N3=et(()=>{ys(),Gt(),$a(),fv(),Z4(),R3(),Y3(),dI=(e,t)=>{if(t.length!==e.length)throw new Error(`inputDependencies length ${t.length} is not equal to inputTensors length ${e.length}.`);let r=[];for(let n=0;n<e.length;++n){let s=e[n].dataType;switch(t[n]){case"none":{r.push("");break}case"type":{r.push(`${s}`);break}case"rank":{let a=e[n].dims.length;r.push(`${s};${a}`);break}case"dims":{let a=e[n].dims.join(",");r.push(`${s};${a}`);break}default:throw new Error(`unsupported input dependency: ${t[n]}`)}}return r.join("|")},pI=(e,t,r)=>{let n=e.name;return e.shaderCache?.hint&&(n+="["+e.shaderCache.hint+"]"),n+=":"+r+`:${dI(t,e.shaderCache?.inputDependencies??new Array(t.length).fill("dims"))}`,n},gI=class{constructor(e){e&&(this.architecture=e.architecture,this.vendor=e.vendor)}isArchitecture(e){return this.architecture===e}isVendor(e){return this.vendor===e}},AI=class{constructor(){this.currentSessionId=null,this.currentKernelId=null,this.commandEncoder=null,this.computePassEncoder=null,this.maxDispatchNumber=16,this.pendingDispatchNumber=0,this.pendingKernels=[],this.pendingQueries=new Map,this.sessionStatus="default",this.capturedCommandList=new Map,this.capturedPendingKernels=new Map,this.sessionExternalDataMapping=new Map}get currentKernelCustomData(){if(this.currentKernelId===null)throw new Error("currentKernelCustomData(): currentKernelId is null. (should not happen)");let e=this.kernelCustomData.get(this.currentKernelId);return e||(e={},this.kernelCustomData.set(this.currentKernelId,e)),e}async initialize(e,t){this.env=e;let r=[],n={requiredLimits:{maxComputeWorkgroupStorageSize:t.limits.maxComputeWorkgroupStorageSize,maxComputeWorkgroupsPerDimension:t.limits.maxComputeWorkgroupsPerDimension,maxStorageBufferBindingSize:t.limits.maxStorageBufferBindingSize,maxBufferSize:t.limits.maxBufferSize,maxComputeInvocationsPerWorkgroup:t.limits.maxComputeInvocationsPerWorkgroup,maxComputeWorkgroupSizeX:t.limits.maxComputeWorkgroupSizeX,maxComputeWorkgroupSizeY:t.limits.maxComputeWorkgroupSizeY,maxComputeWorkgroupSizeZ:t.limits.maxComputeWorkgroupSizeZ},requiredFeatures:r},s=a=>t.features.has(a)&&r.push(a)&&!0;s("chromium-experimental-timestamp-query-inside-passes")||s("timestamp-query"),s("shader-f16"),s("subgroups"),this.device=await t.requestDevice(n),this.adapterInfo=new gI(t.info||await t.requestAdapterInfo()),this.gpuDataManager=Ev(this),this.programManager=new uI(this),this.kernels=new Map,this.kernelPersistentData=new Map,this.kernelCustomData=new Map,_A(e.logLevel,!!e.debug),this.device.onuncapturederror=a=>
vendor: 26,384 bytes, line 5633
5633{a.error instanceof GPUValidationError&&console.error(`An uncaught WebGPU validation error was raised: ${a.error.message}`)},Object.defineProperty(this.env.webgpu,"device",{value:this.device,writable:!1,enumerable:!0,configurable:!1}),Object.defineProperty(this.env.webgpu,"adapter",{value:t,writable:!1,enumerable:!0,configurable:!1}),this.setQueryType()}dispose(){typeof this.querySet<"u"&&this.querySet.destroy(),this.gpuDataManager.dispose()}getCommandEncoder(){return this.commandEncoder||(this.commandEncoder=this.device.createCommandEncoder()),this.commandEncoder}getComputePassEncoder(){if(!this.computePassEncoder){let e=this.getCommandEncoder(),t={};this.queryType==="at-passes"&&(t.timestampWrites={querySet:this.querySet,beginningOfPassWriteIndex:this.pendingDispatchNumber*2,endOfPassWriteIndex:this.pendingDispatchNumber*2+1}),this.computePassEncoder=e.beginComputePass(t)}return this.computePassEncoder}endComputePass(){this.computePassEncoder&&(this.computePassEncoder.end(),this.computePassEncoder=null)}flush(){if(!this.commandEncoder)return;Aa(),this.endComputePass();let e;this.queryType!=="none"&&(this.commandEncoder.resolveQuerySet(this.querySet,0,this.pendingDispatchNumber*2,this.queryResolveBuffer,0),e=this.device.createBuffer({size:this.pendingDispatchNumber*2*8,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST}),this.pendingQueries.set(e,this.pendingKernels),this.pendingKernels=[],this.commandEncoder.copyBufferToBuffer(this.queryResolveBuffer,0,e,0,this.pendingDispatchNumber*2*8)),this.device.queue.submit([this.commandEncoder.finish()]),this.gpuDataManager.refreshPendingBuffers(),this.commandEncoder=null,this.pendingDispatchNumber=0,this.queryType!=="none"&&e.mapAsync(GPUMapMode.READ).then(()=>{let t=new BigUint64Array(e.getMappedRange()),r=this.pendingQueries.get(e);for(let n=0;n<t.length/2;n++){let s=r[n],a=s.kernelId,i=this.kernels.get(a),o=i.kernelType,l=i.kernelName,u=s.programName,p=s.inputTensorViews,d=s.outputTensorViews,c=t[n*2],g=t[n*2+1];typeof this.queryTimeBase>"u"&&(this.queryTimeBase=c);let A=Number(c-this.queryTimeBase),m=Number(g-this.queryTimeBase);if(!Number.isSafeInteger(A)||!Number.isSafeInteger(m))throw new RangeError("incorrect timestamp range");if(this.env.webgpu.profiling?.ondata)this.env.webgpu.profiling.ondata({version:1,inputsMetadata:p.map(B=>({dims:B.dims,dataType:Ca(B.dataType)})),outputsMetadata:d.map(B=>({dims:B.dims,dataType:Ca(B.dataType)})),kernelId:a,kernelType:o,kernelName:l,programName:u,startTime:A,endTime:m});else{let B="";p.forEach((h,P)=>{B+=`input[${P}]: [${h.dims}] | ${Ca(h.dataType)}, `});let f="";d.forEach((h,P)=>{f+=`output[${P}]: [${h.dims}] | ${Ca(h.dataType)}, `}),console.log(`[profiling] kernel "${a}|${o}|${l}|${u}" ${B}${f}start time: ${A} ns, execution time: ${m-A} ns`)}fc("GPU",`${u}::${c}::${g}`)}e.unmap(),this.pendingQueries.delete(e)}),js()}run(e,t,r,n,s,a){Aa(e.name);let i=[];for(let h=0;h<t.length;++h){let P=t[h].data;if(P===0)continue;let _=this.gpuDataManager.get(P);if(!_)throw new Error(`no GPU data for input: ${P}`);i.push(_)}let{outputs:o,dispatchGroup:l,programUniforms:u}=e.getRunData(t),p=r.length===0?o.map((h,P)=>P):r;if(p.length!==o.length)throw new Error(`Output size ${p.length} must be equal to ${o.length}.`);let d=[],c=[];for(let h=0;h<o.length;++h){if(!Number.isInteger(p[h])||p[h]<-3||p[h]>=a)throw new Error(`Invalid output index: ${p[h]}`);if(p[h]===-3)continue;let P=p[h]===-1,_=p[h]===-2,w=P||_?s(o[h].dataType,o[h].dims):n(p[h],o[h].dataType,o[h].dims);if(d.push(w),w.data===0)continue;let b=this.gpuDataManager.get(w.data);if(!b)throw new Error(`no GPU data for output: ${w.data}`);if(P&&this.temporaryData.push(b),_){let v=this.kernelPersistentData.get(this.currentKernelId);v||(v=[],this.kernelPersistentData.set(this.currentKernelId,v)),v.push(b)}c.push(b)}if(i.length!==t.length||c.length!==d.length){if(c.length===0)return js(e.name),d;throw new Error(`Program ${e.name} has zero-sized tensor(s) in inputs or outputs. This is not supported now.`)}let g;if(u){let h=0,P=[];u.forEach(v=>{let y=typeof v.data=="number"?[v.data]:v.data;if(y.length===0)return;let $=v.type===10?2:4,k,W;v.type===10?(W=y.length>4?16:y.length>2?8:y.length*$,k=y.length>4?16:$*y.length):(W=y.length<=2?y.length*$:16,k=16),h=Math.ceil(h/W)*W,P.push(h);let j=v.type===10?8:4;h+=y.length>4?Math.ceil(y.length/j)*k:y.length*$});let _=16;h=Math.ceil(h/_)*_;let w=new ArrayBuffer(h);u.forEach((v,y)=>{let $=P[y],k=typeof v.data=="number"?[v.data]:v.data;if(v.type===6)new Int32Array(w,$,k.length).set(k);else if(v.type===12)new Uint32Array(w,$,k.length).set(k);else if(v.type===10)new Uint16Array(w,$,k.length).set(k);else if(v.type===1)new Float32Array(w,$,k.length).set(k);else throw new Error(`Unsupported uniform type: ${Ca(v.type)}`)});let b=this.gpuDataManager.create(h,GPUBufferUsage.COPY_DST|GPUBufferUsage.UNIFORM);this.device.queue.writeBuffer(b.buffer,0,w,0,h),this.gpuDataManager.release(b.id),g={offset:0,size:h,buffer:b.buffer}}let A=this.programManager.normalizeDispatchGroupSize(l),m=A[1]===1&&A[2]===1,B=pI(e,t,m),f=this.programManager.getArtifact(B);if(f||(f=this.programManager.build(e,A),this.programManager.setArtifact(B,f),ur("info",()=>`[artifact] key: ${B}, programName: ${e.name}`)),u&&f.uniformVariablesInfo){if(u.length!==f.uniformVariablesInfo.length)throw new Error(`Uniform variables count mismatch: expect ${f.uniformVariablesInfo.length}, got ${u.length} in program "${f.programInfo.name}".`);for(let h=0;h<u.length;h++){let P=u[h],_=P.type,w=typeof P.data=="number"?1:P.data.length,[b,v]=f.uniformVariablesInfo[h];if(_!==b||w!==v)throw new Error(`Uniform variable ${h} mismatch: expect type ${b} with size ${v}, got type ${_} with size ${w} in program "${f.programInfo.name}".`)}}if(ur("info",()=>`[ProgramManager] run "${e.name}" (key=${B}) with ${A[0]}x${A[1]}x${A[2]}`),this.queryType!=="none"||this.sessionStatus==="capturing"){let h={kernelId:this.currentKernelId,programName:f.programInfo.name,inputTensorViews:t,outputTensorViews:d};this.pendingKernels.push(h),this.sessionStatus==="capturing"&&this.capturedPendingKernels.get(this.currentSessionId).push(h)}return this.programManager.run(f,i,c,A,g),js(e.name),d}upload(e,t){this.gpuDataManager.upload(e,t)}memcpy(e,t){this.gpuDataManager.memcpy(e,t)}async download(e,t){await this.gpuDataManager.download(e,t)}alloc(e){return this.gpuDataManager.create(e).id}free(e){return this.gpuDataManager.release(e)}createKernel(e,t,r,n){let s=lI.get(e);if(!s)throw new Error(`kernel not implemented: ${e}`);let a={kernelType:e,kernelName:n,kernelEntry:s[0],attributes:[s[1],r]};this.kernels.set(t,a)}releaseKernel(e){let t=this.kernelPersistentData.get(e);if(t){for(let r of t)this.gpuDataManager.release(r.id);this.kernelPersistentData.delete(e)}this.kernelCustomData.delete(e),this.kernels.delete(e)}computeKernel(e,t,r){let n=this.kernels.get(e);if(!n)throw new Error(`kernel not created: ${e}`);let s=n.kernelType,a=n.kernelName,i=n.kernelEntry,o=n.attributes;if(this.currentKernelId!==null)throw new Error(`kernel "[${s}] ${a}" is not allowed to be called recursively`);this.currentKernelId=e,o[0]&&(o[1]=o[0](o[1]),o[0]=void 0),ur("info",()=>`[WebGPU] Start to run kernel "[${s}] ${a}"...`);let l=this.env.debug;this.temporaryData=[];try{return l&&this.device.pushErrorScope("validation"),i(t,o[1]),0}catch(u){return r.push(Promise.resolve(`[WebGPU] Kernel "[${s}] ${a}" failed. ${u}`)),1}finally{l&&r.push(this.device.popErrorScope().then(u=>u?`GPU validation error for kernel "[${s}] ${a}": ${u.message}`:null));for(let u of this.temporaryData)this.gpuDataManager.release(u.id);this.temporaryData=[],this.currentKernelId=null}}registerBuffer(e,t,r,n){let s=this.sessionExternalDataMapping.get(e);s||(s=new Map,this.sessionExternalDataMapping.set(e,s));let a=s.get(t),i=this.gpuDataManager.registerExternalBuffer(r,n,a);return s.set(t,[i,r]),i}unregisterBuffers(e){let t=this.sessionExternalDataMapping.get(e);t&&(t.forEach(r=>this.gpuDataManager.unregisterExternalBuffer(r[0])),this.sessionExternalDataMapping.delete(e))}getBuffer(e){let t=this.gpuDataManager.get(e);if(!t)throw new Error(`no GPU data for buffer: ${e}`);return t.buffer}createDownloader(e,t,r){return async()=>{let n=await TA(this,e,t);return wA(n.buffer,r)}}writeTimestamp(e){this.queryType==="inside-passes"&&this.computePassEncoder.writeTimestamp(this.querySet,e)}setQueryType(){this.queryType="none",(this.env.webgpu.profiling?.mode==="default"||(typeof this.env.trace>"u"?this.env.wasm.trace:this.env.trace))&&(this.device.features.has("chromium-experimental-timestamp-query-inside-passes")?this.queryType="inside-passes":this.device.features.has("timestamp-query")&&(this.queryType="at-passes"),this.queryType!=="none"&&typeof this.querySet>"u"&&(this.querySet=this.device.createQuerySet({type:"timestamp",count:this.maxDispatchNumber*2}),this.queryResolveBuffer=this.device.createBuffer({size:this.maxDispatchNumber*2*8,usage:GPUBufferUsage.COPY_SRC|GPUBufferUsage.QUERY_RESOLVE})))}captureBegin(){ur("info","captureBegin"),this.capturedCommandList.get(this.currentSessionId)||this.capturedCommandList.set(this.currentSessionId,[]),this.capturedPendingKernels.get(this.currentSessionId)||this.capturedPendingKernels.set(this.currentSessionId,[]),this.flush(),this.sessionStatus="capturing"}captureEnd(){ur("info","captureEnd"),this.flush(),this.sessionStatus="default"}replay(){ur("info","replay"),this.sessionStatus="replaying";let e=this.capturedCommandList.get(this.currentSessionId),t=this.capturedPendingKernels.get(this.currentSessionId),r=e.length;this.pendingKernels=[];for(let n=0;n<r;n++){let s=this.getComputePassEncoder(),a=e[n];this.writeTimestamp(this.pendingDispatchNumber*2),s.setPipeline(a.computePipeline),s.setBindGroup(0,a.bindGroup),s.dispatchWorkgroups(...a.dispatchGroup),this.writeTimestamp(this.pendingDispatchNumber*2+1),this.pendingDispatchNumber++,this.queryType!=="none"&&this.pendingKernels.push(t[n]),(this.pendingDispatchNumber>=this.maxDispatchNumber||this.queryType==="at-passes")&&this.endComputePass(),this.pendingDispatchNumber>=this.maxDispatchNumber&&this.flush()}this.flush(),this.sessionStatus="default"}onCreateSession(){this.gpuDataManager.onCreateSession()}onReleaseSession(e){this.unregisterBuffers(e),this.capturedCommandList.has(e)&&this.capturedCommandList.delete(e),this.capturedPendingKernels.has(e)&&this.capturedPendingKernels.delete(e),this.gpuDataManager.onReleaseSession(e)}onRunStart(e){this.currentSessionId=e,this.setQueryType()}}}),hI={};Co(hI,{init:()=>fI});var Oc,mI,fI,j3=et(()=>{Gt(),$a(),qt(),X4(),Oc=class RS{constructor(t,r,n,s){this.module=t,this.dataType=r,this.data=n,this.dims=s}getFloat32Array(){if(this.dataType!==1)throw new Error("Invalid data type");let t=$e.size(this.dims);return t===0?new Float32Array:new Float32Array(this.module.HEAP8.buffer,this.data,t)}getBigInt64Array(){if(this.dataType!==7)throw new Error("Invalid data type");let t=$e.size(this.dims);return t===0?new BigInt64Array:new BigInt64Array(this.module.HEAP8.buffer,this.data,t)}getInt32Array(){if(this.dataType!==6)throw new Error("Invalid data type");let t=$e.size(this.dims);return t===0?new Int32Array:new Int32Array(this.module.HEAP8.buffer,this.data,t)}getUint16Array(){if(this.dataType!==10&&this.dataType!==4)throw new Error("Invalid data type");let t=$e.size(this.dims);return t===0?new Uint16Array:new Uint16Array(this.module.HEAP8.buffer,this.data,t)}reshape(t){if($e.size(t)!==$e.size(this.dims))throw new Error("Invalid new shape");return new RS(this.module,this.dataType,this.data,t)}},mI=class{constructor(e,t,r){this.module=e,this.backend=t,this.customDataOffset=0,this.customDataSize=0,this.adapterInfo=t.adapterInfo;let n=e.PTR_SIZE,s=r/e.PTR_SIZE,a=n===4?"i32":"i64";this.opKernelContext=Number(e.getValue(n*s++,a));let i=Number(e.getValue(n*s++,a));this.outputCount=Number(e.getValue(n*s++,a)),this.customDataOffset=Number(e.getValue(n*s++,"*")),this.customDataSize=Number(e.getValue(n*s++,a));let o=[];for(let l=0;l<i;l++){let u=Number(e.getValue(n*s++,a)),p=Number(e.getValue(n*s++,"*")),d=Number(e.getValue(n*s++,a)),c=[];for(let g=0;g<d;g++)c.push(Number(e.getValue(n*s++,a)));o.push(new Oc(e,u,p,c))}this.inputs=o}get kernelCustomData(){return this.backend.currentKernelCustomData}get customDataBuffer(){return this.module.HEAPU8.subarray(this.customDataOffset,this.customDataOffset+this.customDataSize)}compute(e,t){let r=t?.inputs?.map(i=>typeof i=="number"?this.inputs[i]:i)??this.inputs,n=t?.outputs??[],s=(i,o,l)=>new Oc(this.module,o,this.output(i,l),l),a=(i,o)=>{let l=Vi(i,o);if(!l)throw new Error(`Unsupported data type: ${i}`);let u=l>0?this.backend.gpuDataManager.create(l).id:0;return new Oc(this.module,i,u,o)};return this.backend.run(e,r,n,s,a,this.outputCount)}output(e,t){let r=this.module.stackSave();try{let n=this.module.PTR_SIZE,s=n===4?"i32":"i64",a=this.module.stackAlloc((1+t.length)*n);this.module.setValue(a,t.length,s);for(let i=0;i<t.length;i++)this.module.setValue(a+n*(i+1),t[i],s);return this.module._JsepOutput(this.opKernelContext,e,a)}catch(n){throw new Error(`Failed to generate kernel's output[${e}] with dims [${t}]. If you are running with pre-allocated output, please make sure the output type/dims are correct. Error: ${n}`)}finally{this.module.stackRestore(r)}}},fI=async(e,t,r,n)=>{let s=t.jsepInit;if(!s)throw new Error("Failed to initialize JSEP. The WebAssembly module is not built with JSEP support.");if(e==="webgpu"){let a=(N3(),Ol(cI)).WebGpuBackend,i=new a;await i.initialize(r,n),s("webgpu",[i,o=>i.alloc(Number(o)),o=>i.free(o),(o,l,u,p=!1)=>{if(p)ur("verbose",()=>`[WebGPU] jsepCopyGpuToGpu: src=${Number(o)}, dst=${Number(l)}, size=${Number(u)}`),i.memcpy(Number(o),Number(l));else{ur("verbose",()=>`[WebGPU] jsepCopyCpuToGpu: dataOffset=${Number(o)}, gpuDataId=${Number(l)}, size=${Number(u)}`);let d=t.HEAPU8.subarray(Number(o>>>0),Number(o>>>0)+Number(u));i.upload(Number(l),d)}},async(o,l,u)=>{ur("verbose",()=>`[WebGPU] jsepCopyGpuToCpu: gpuDataId=${o}, dataOffset=${l}, size=${u}`),await i.download(Number(o),()=>t.HEAPU8.subarray(Number(l)>>>0,Number(l+u)>>>0))},(o,l,u)=>i.createKernel(o,Number(l),u,t.UTF8ToString(t._JsepGetNodeName(Number(l)))),o=>i.releaseKernel(o),(o,l,u,p)=>{ur("verbose",()=>`[WebGPU] jsepRun: sessionHandle=${u}, kernel=${o}, contextDataOffset=${l}`);let d=new mI(t,i,Number(l));return i.computeKernel(Number(o),d,p)},()=>i.captureBegin(),()=>i.captureEnd(),()=>i.replay()])}else{let a=new Mv(r);s("webnn",[a,()=>a.reserveTensorId(),i=>a.releaseTensorId(i),async(i,o,l,u,p)=>a.ensureTensor(i,o,l,u,p),(i,o)=>{a.uploadTensor(i,o)},async(i,o)=>a.downloadTensor(i,o),(i,o)=>a.registerMLContext(i,o),!!r.trace])}}}),_I,Mh,vh,Za,wI,Bh,Gc,xh,Eh,Dh,Ih,Th,Ch,yI=et(()=>{ys(),H4(),K4(),Gt(),Ui(),gA(),ov(),_I=(e,t)=>{Lr()._OrtInit(e,t)!==0&&xr("Can't initialize onnxruntime.")},Mh=async e=>{_I(e.wasm.numThreads,Pc(e.logLevel))},vh=async(e,t)=>{Lr().asyncInit?.();let r=e.webgpu.adapter;if(t==="webgpu"){if(typeof navigator>"u"||!navigator.gpu)throw new Error("WebGPU is not supported in current environment");if(r){if(typeof r.limits!="object"||typeof r.features!="object"||typeof r.requestDevice!="function")throw new Error("Invalid GPU adapter set in `env.webgpu.adapter`. It must be a GPUAdapter object.")}else{let n=e.webgpu.powerPreference;if(n!==void 0&&n!=="low-power"&&n!=="high-performance")throw new Error(`Invalid powerPreference setting: "${n}"`);let s=e.webgpu.forceFallbackAdapter;if(s!==void 0&&typeof s!="boolean")throw new Error(`Invalid forceFallbackAdapter setting: "${s}"`);if(r=await navigator.gpu.requestAdapter({powerPreference:n,forceFallbackAdapter:s}),!r)throw new Error('Failed to get GPU adapter. You may need to enable flag "--enable-unsafe-webgpu" if you are using Chrome.')}}if(t==="webnn"&&(typeof navigator>"u"||!navigator.ml))throw new Error("WebNN is not supported in current environment");{let n=(j3(),Ol(hI)).init;t==="webgpu"&&await n("webgpu",Lr(),e,r),t==="webnn"&&await n("webnn",Lr(),e)}},Za=new Map,wI=e=>{let t=Lr(),r=t.stackSave();try{let n=t.PTR_SIZE,s=t.stackAlloc(2*n);t._OrtGetInputOutputCount(e,s,s+n)!==0&&xr("Can't get session input/output count.");let a=n===4?"i32":"i64";return[Number(t.getValue(s,a)),Number(t.getValue(s+n,a))]}finally{t.stackRestore(r)}},Bh=(e,t)=>{let r=Lr(),n=r.stackSave(),s=0;try{let a=r.PTR_SIZE,i=r.stackAlloc(2*a);r._OrtGetInputOutputMetadata(e,t,i,i+a)!==0&&xr("Can't get session input/output metadata.");let o=Number(r.getValue(i,"*"));s=Number(r.getValue(i+a,"*"));let l=r.HEAP32[s/4];if(l===0)return[o,0];let u=r.HEAPU32[s/4+1],p=[];for(let d=0;d<u;d++){let c=Number(r.getValue(s+8+d*a,"*"));p.push(c!==0?r.UTF8ToString(c):Number(r.getValue(s+8+(d+u)*a,"*")))}return[o,l,p]}finally{r.stackRestore(n),s!==0&&r._OrtFree(s)}},Gc=e=>{let t=Lr(),r=t._malloc(e.byteLength);if(r===0)throw new Error(`Can't create a session. failed to allocate a buffer of size ${e.byteLength}.`);return t.HEAPU8.set(e,r),[r,e.byteLength]},xh=async(e,t)=>{let r,n,s=Lr();Array.isArray(e)?[r,n]=e:e.buffer===s.HEAPU8.buffer?[r,n]=[e.byteOffset,e.byteLength]:[r,n]=Gc(e);let a=0,i=0,o=0,l=[],u=[],p=[];try{if([i,l]=await iv(t),t?.externalData&&s.mountExternalData){let _=[];for(let w of t.externalData){let b=typeof w=="string"?w:w.path;_.push(fA(typeof w=="string"?w:w.data).then(v=>{s.mountExternalData(b,v)}))}await Promise.all(_)}for(let _ of t?.executionProviders??[])if((typeof _=="string"?_:_.name)==="webnn"){if(s.shouldTransferToMLTensor=!1,typeof _!="string"){let w=_,b=w?.context,v=w?.gpuDevice,y=w?.deviceType,$=w?.powerPreference;b?s.currentContext=b:v?s.currentContext=await s.webnnCreateMLContext(v):s.currentContext=await s.webnnCreateMLContext({deviceType:y,powerPreference:$})}else s.currentContext=await s.webnnCreateMLContext();break}a=await s._OrtCreateSession(r,n,i),s.webgpuOnCreateSession?.(a),a===0&&xr("Can't create a session."),s.jsepOnCreateSession?.(),s.currentContext&&(s.webnnRegisterMLContext(a,s.currentContext),s.currentContext=void 0,s.shouldTransferToMLTensor=!0);let[d,c]=wI(a),g=!!t?.enableGraphCapture,A=[],m=[],B=[],f=[],h=[];for(let _=0;_<d;_++){let[w,b,v]=Bh(a,_);w===0&&xr("Can't get an input name."),u.push(w);let y=s.UTF8ToString(w);A.push(y),B.push(b===0?{name:y,isTensor:!1}:{name:y,isTensor:!0,type:Ca(b),shape:v})}for(let _=0;_<c;_++){let[w,b,v]=Bh(a,_+d);w===0&&xr("Can't get an output name."),p.push(w);let y=s.UTF8ToString(w);m.push(y),f.push(b===0?{name:y,isTensor:!1}:{name:y,isTensor:!0,type:Ca(b),shape:v});{if(g&&t?.preferredOutputLocation===void 0){h.push("gpu-buffer");continue}let $=typeof t?.preferredOutputLocation=="string"?t.preferredOutputLocation:t?.preferredOutputLocation?.[y]??"cpu",k=s.webnnIsGraphOutput;if($==="cpu"&&k&&k(a,y)){h.push("ml-tensor-cpu-output");continue}if($!=="cpu"&&$!=="cpu-pinned"&&$!=="gpu-buffer"&&$!=="ml-tensor")throw new Error(`Not supported preferred output location: ${$}.`);if(g&&$!=="gpu-buffer")throw new Error(`Not supported preferred output location: ${$}. Only 'gpu-buffer' location is supported when enableGraphCapture is true.`);h.push($)}}let P=null;return h.some(_=>_==="gpu-buffer"||_==="ml-tensor"||_==="ml-tensor-cpu-output")&&(o=s._OrtCreateBinding(a),o===0&&xr("Can't create IO binding."),P={handle:o,outputPreferredLocations:h,outputPreferredLocationsEncoded:h.map(_=>_==="ml-tensor-cpu-output"?"ml-tensor":_).map(_=>mA(_))}),Za.set(a,[a,u,p,P,g,!1]),[a,A,m,B,f]}catch(d){throw u.forEach(c=>s._OrtFree(c)),p.forEach(c=>s._OrtFree(c)),o!==0&&s._OrtReleaseBinding(o)!==0&&xr("Can't release IO binding."),a!==0&&s._OrtReleaseSession(a)!==0&&xr("Can't release session."),d}finally{s._free(r),i!==0&&s._OrtReleaseSessionOptions(i)!==0&&xr("Can't release session options."),l.forEach(d=>s._free(d)),s.unmountExternalData?.()}},Eh=e=>{let t=Lr(),r=Za.get(e);if(!r)throw new Error(`cannot release session. invalid session id: ${e}`);let[n,s,a,i,o]=r;i&&(o&&t._OrtClearBoundOutputs(i.handle)!==0&&xr("Can't clear bound outputs."),t._OrtReleaseBinding(i.handle)!==0&&xr("Can't release IO binding.")),t.jsepOnReleaseSession?.(e),t.webnnOnReleaseSession?.(e),t.webgpuOnReleaseSession?.(e),s.forEach(l=>t._OrtFree(l)),a.forEach(l=>t._OrtFree(l)),t._OrtReleaseSession(n)!==0&&xr("Can't release session."),Za.delete(e)},Dh=async(e,t,r,n,s,a,i=!1)=>{if(!e){t.push(0);return}let o=Lr(),l=o.PTR_SIZE,u=e[0],p=e[1],d=e[3],c=d,g,A;if(u==="string"&&(d==="gpu-buffer"||d==="ml-tensor"))throw new Error("String tensor is not supported on GPU.");if(i&&d!=="gpu-buffer")throw new Error(`External buffer must be provided for input/output index ${a} when enableGraphCapture is true.`);if(d==="gpu-buffer"){let f=e[2].gpuBuffer;A=Vi(Wi(u),p);{let h=o.jsepRegisterBuffer;if(!h)throw new Error('Tensor location "gpu-buffer" is not supported without using WebGPU.');g=h(n,a,f,A)}}else if(d==="ml-tensor"){let f=e[2].mlTensor;A=Vi(Wi(u),p);let h=o.webnnRegisterMLTensor;if(!h)throw new Error('Tensor location "ml-tensor" is not supported without using WebNN.');g=h(n,f,Wi(u),p)}else{let f=e[2];if(Array.isArray(f)){A=l*f.length,g=o._malloc(A),r.push(g);for(let h=0;h<f.length;h++){if(typeof f[h]!="string")throw new TypeError(`tensor data at index ${h} is not a string`);o.setValue(g+h*l,Us(f[h],r),"*")}}else{let h=o.webnnIsGraphInput,P=o.webnnIsGraphOutput;if(u!=="string"&&h&&P){let _=o.UTF8ToString(s);if(h(n,_)||P(n,_)){let w=Wi(u);A=Vi(w,p),c="ml-tensor";let b=o.webnnCreateTemporaryTensor,v=o.webnnUploadTensor;if(!b||!v)throw new Error('Tensor location "ml-tensor" is not supported without using WebNN.');let y=await b(n,w,p);v(y,new Uint8Array(f.buffer,f.byteOffset,f.byteLength)),g=y}else A=f.byteLength,g=o._malloc(A),r.push(g),o.HEAPU8.set(new Uint8Array(f.buffer,f.byteOffset,A),g)}else A=f.byteLength,g=o._malloc(A),r.push(g),o.HEAPU8.set(new Uint8Array(f.buffer,f.byteOffset,A),g)}}let m=o.stackSave(),B=o.stackAlloc(4*p.length);try{p.forEach((h,P)=>o.setValue(B+P*l,h,l===4?"i32":"i64"));let f=o._OrtCreateTensor(Wi(u),g,A,B,p.length,mA(c));f===0&&xr(`Can't create tensor for input/output. session=${n}, index=${a}.`),t.push(f)}finally{o.stackRestore(m)}},Ih=async(e,t,r,n,s,a)=>{let i=Lr(),o=i.PTR_SIZE,l=Za.get(e);if(!l)throw new Error(`cannot run inference. invalid session id: ${e}`);let u=l[0],p=l[1],d=l[2],c=l[3],g=l[4],A=l[5],m=t.length,B=n.length,f=0,h=[],P=[],_=[],w=[],b=[],v=i.stackSave(),y=i.stackAlloc(m*o),$=i.stackAlloc(m*o),k=i.stackAlloc(B*o),W=i.stackAlloc(B*o);try{[f,h]=tv(a),Ni("wasm prepareInputOutputTensor");for(let L=0;L<m;L++)await Dh(r[L],P,w,e,p[t[L]],t[L],g);for(let L=0;L<B;L++)await Dh(s[L],_,w,e,d[n[L]],m+n[L],g);ji("wasm prepareInputOutputTensor");for(let L=0;L<m;L++)i.setValue(y+L*o,P[L],"*"),i.setValue($+L*o,p[t[L]],"*");for(let L=0;L<B;L++)i.setValue(k+L*o,_[L],"*"),i.setValue(W+L*o,d[n[L]],"*");if(c&&!A){let{handle:L,outputPreferredLocations:Q,outputPreferredLocationsEncoded:ne}=c;if(p.length!==m)throw new Error(`input count from feeds (${m}) is expected to be always equal to model's input count (${p.length}).`);Ni("wasm bindInputsOutputs");for(let re=0;re<m;re++){let ce=t[re];await i._OrtBindInput(L,p[ce],P[re])!==0&&xr(`Can't bind input[${re}] for session=${e}.`)}for(let re=0;re<B;re++){let ce=n[re];s[re]?.[3]?(b.push(_[re]),i._OrtBindOutput(L,d[ce],_[re],0)!==0&&xr(`Can't bind pre-allocated output[${re}] for session=${e}.`)):i._OrtBindOutput(L,d[ce],0,ne[ce])!==0&&xr(`Can't bind output[${re}] to ${Q[re]} for session=${e}.`)}ji("wasm bindInputsOutputs"),Za.set(e,[u,p,d,c,g,!0])}i.jsepOnRunStart?.(u),i.webnnOnRunStart?.(u);let j;c?j=await i._OrtRunWithBinding(u,c.handle,B,k,f):j=await i._OrtRun(u,$,y,m,W,B,k,f),j!==0&&xr("failed to call OrtRun().");let F=[],R=[];Ni("wasm ProcessOutputTensor");for(let L=0;L<B;L++){let Q=Number(i.getValue(k+L*o,"*"));if(Q===_[L]||b.includes(_[L])){F.push(s[L]),Q!==_[L]&&i._OrtReleaseTensor(Q)!==0&&xr("Can't release tensor.");continue}let ne=i.stackSave(),re=i.stackAlloc(4*o),ce=!1,ge,q=0;try{i._OrtGetTensorData(Q,re,re+o,re+2*o,re+3*o)!==0&&xr(`Can't access output tensor data on index ${L}.`);let V=o===4?"i32":"i64",U=Number(i.getValue(re,V));q=i.getValue(re+o,"*");let N=i.getValue(re+o*2,"*"),oe=Number(i.getValue(re+o*3,V)),fe=[];for(let je=0;je<oe;je++)fe.push(Number(i.getValue(N+je*o,V)));i._OrtFree(N)!==0&&xr("Can't free memory for tensor dims.");let De=fe.reduce((je,Me)=>je*Me,1);ge=Ca(U);let Ie=c?.outputPreferredLocations[n[L]];if(ge==="string"){if(Ie==="gpu-buffer"||Ie==="ml-tensor")throw new Error("String tensor is not supported on GPU.");let je=[];for(let Me=0;Me<De;Me++){let se=i.getValue(q+Me*o,"*"),H=i.getValue(q+(Me+1)*o,"*"),we=Me===De-1?void 0:H-se;je.push(i.UTF8ToString(se,we))}F.push([ge,fe,je,"cpu"])}else if(Ie==="gpu-buffer"&&De>0){let je=i.jsepGetBuffer;if(!je)throw new Error('preferredLocation "gpu-buffer" is not supported without using WebGPU.');let Me=je(q),se=Vi(U,De);if(se===void 0||!AA(ge))throw new Error(`Unsupported data type: ${ge}`);ce=!0,F.push([ge,fe,{gpuBuffer:Me,download:i.jsepCreateDownloader(Me,se,ge),dispose:()=>{i._OrtReleaseTensor(Q)!==0&&xr("Can't release tensor.")}},"gpu-buffer"])}else if(Ie==="ml-tensor"&&De>0){let je=i.webnnEnsureTensor,Me=i.webnnIsGraphInputOutputTypeSupported;if(!je||!Me)throw new Error('preferredLocation "ml-tensor" is not supported without using WebNN.');if(Vi(U,De)===void 0||!hA(ge))throw new Error(`Unsupported data type: ${ge}`);if(!Me(e,ge,!1))throw new Error(`preferredLocation "ml-tensor" for ${ge} output is not supported by current WebNN Context.`);let se=await je(e,q,U,fe,!1);ce=!0,F.push([ge,fe,{mlTensor:se,download:i.webnnCreateMLTensorDownloader(q,ge),dispose:()=>{i.webnnReleaseTensorId(q),i._OrtReleaseTensor(Q)}},"ml-tensor"])}else if(Ie==="ml-tensor-cpu-output"&&De>0){let je=i.webnnCreateMLTensorDownloader(q,ge)(),Me=F.length;ce=!0,R.push((async()=>{let se=[Me,await je];return i.webnnReleaseTensorId(q),i._OrtReleaseTensor(Q),se})()),F.push([ge,fe,[],"cpu"])}else{let je=bc(ge),Me=new je(De);new Uint8Array(Me.buffer,Me.byteOffset,Me.byteLength).set(i.HEAPU8.subarray(q,q+Me.byteLength)),F.push([ge,fe,Me,"cpu"])}}finally{i.stackRestore(ne),ge==="string"&&q&&i._free(q),ce||i._OrtReleaseTensor(Q)}}c&&!g&&(i._OrtClearBoundOutputs(c.handle)!==0&&xr("Can't clear bound outputs."),Za.set(e,[u,p,d,c,g,!1]));for(let[L,Q]of await Promise.all(R))F[L][2]=Q;return ji("wasm ProcessOutputTensor"),F}finally{i.webnnOnRunEnd?.(u),i.stackRestore(v),P.forEach(j=>i._OrtReleaseTensor(j)),_.forEach(j=>
vendor: 4,485 bytes, line 5633
5633i._OrtReleaseTensor(j)),w.forEach(j=>i._free(j)),f!==0&&i._OrtReleaseRunOptions(f),h.forEach(j=>i._free(j))}},Th=e=>{let t=Lr(),r=Za.get(e);if(!r)throw new Error("invalid session id");let n=r[0],s=t._OrtEndProfiling(n);s===0&&xr("Can't get an profile file name."),t._OrtFree(s)},Ch=e=>{let t=[];for(let r of e){let n=r[2];!Array.isArray(n)&&"buffer"in n&&t.push(n.buffer)}return t}}),Ja,bs,zo,ql,Xl,zc,$h,Fc,Ji,eo,bI,PI,MI,vI,BI,xI,EI,DI,II=et(()=>{ys(),yI(),Ui(),uA(),Ja=()=>!!Sr.wasm.proxy&&typeof document<"u",zo=!1,ql=!1,Xl=!1,Fc=new Map,Ji=(e,t)=>{let r=Fc.get(e);r?r.push(t):Fc.set(e,[t])},eo=()=>{if(zo||!ql||Xl||!bs)throw new Error("worker not ready")},bI=e=>{switch(e.data.type){case"init-wasm":zo=!1,e.data.err?(Xl=!0,$h[1](e.data.err)):(ql=!0,$h[0]()),zc&&(URL.revokeObjectURL(zc),zc=void 0);break;case"init-ep":case"copy-from":case"create":case"release":case"run":case"end-profiling":{let t=Fc.get(e.data.type);e.data.err?t.shift()[1](e.data.err):t.shift()[0](e.data.out);break}}},PI=async()=>{if(!ql){if(zo)throw new Error("multiple calls to 'initWasm()' detected.");if(Xl)throw new Error("previous call to 'initWasm()' failed.");if(zo=!0,Ja())return new Promise((e,t)=>{bs?.terminate(),qM().then(([r,n])=>{try{bs=n,bs.onerror=a=>t(a),bs.onmessage=bI,$h=[e,t];let s={type:"init-wasm",in:Sr};!s.in.wasm.wasmPaths&&(r||aA)&&(s.in.wasm.wasmPaths={wasm:new URL("/assets/ort-wasm-simd-threaded.jsep-C887KxcQ.wasm",self.location.href).href}),bs.postMessage(s),zc=r}catch(s){t(s)}},t)});try{await pA(Sr.wasm),await Mh(Sr),ql=!0}catch(e){throw Xl=!0,e}finally{zo=!1}}},MI=async e=>{if(Ja())return eo(),new Promise((t,r)=>{Ji("init-ep",[t,r]);let n={type:"init-ep",in:{epName:e,env:Sr}};bs.postMessage(n)});await vh(Sr,e)},vI=async e=>Ja()?(eo(),new Promise((t,r)=>{Ji("copy-from",[t,r]);let n={type:"copy-from",in:{buffer:e}};bs.postMessage(n,[e.buffer])})):Gc(e),BI=async(e,t)=>{if(Ja()){if(t?.preferredOutputLocation)throw new Error('session option "preferredOutputLocation" is not supported for proxy.');return eo(),new Promise((r,n)=>{Ji("create",[r,n]);let s={type:"create",in:{model:e,options:{...t}}},a=[];e instanceof Uint8Array&&a.push(e.buffer),bs.postMessage(s,a)})}else return xh(e,t)},xI=async e=>{if(Ja())return eo(),new Promise((t,r)=>{Ji("release",[t,r]);let n={type:"release",in:e};bs.postMessage(n)});Eh(e)},EI=async(e,t,r,n,s,a)=>{if(Ja()){if(r.some(i=>i[3]!=="cpu"))throw new Error("input tensor on GPU is not supported for proxy.");if(s.some(i=>i))throw new Error("pre-allocated output tensor is not supported for proxy.");return eo(),new Promise((i,o)=>{Ji("run",[i,o]);let l=r,u={type:"run",in:{sessionId:e,inputIndices:t,inputs:l,outputIndices:n,options:a}};bs.postMessage(u,Ch(l))})}else return Ih(e,t,r,n,s,a)},DI=async e=>{if(Ja())return eo(),new Promise((t,r)=>{Ji("end-profiling",[t,r]);let n={type:"end-profiling",in:e};bs.postMessage(n)});Th(e)}}),Sh,TI,CI,U3=et(()=>{ys(),II(),Gt(),tA(),ov(),Sh=(e,t)=>{switch(e.location){case"cpu":return[e.type,e.dims,e.data,"cpu"];case"gpu-buffer":return[e.type,e.dims,{gpuBuffer:e.gpuBuffer},"gpu-buffer"];case"ml-tensor":return[e.type,e.dims,{mlTensor:e.mlTensor},"ml-tensor"];default:throw new Error(`invalid data location: ${e.location} for ${t()}`)}},TI=e=>{switch(e[3]){case"cpu":return new An(e[0],e[2],e[1]);case"gpu-buffer":{let t=e[0];if(!AA(t))throw new Error(`not supported data type: ${t} for deserializing GPU tensor`);let{gpuBuffer:r,download:n,dispose:s}=e[2];return An.fromGpuBuffer(r,{dataType:t,dims:e[1],download:n,dispose:s})}case"ml-tensor":{let t=e[0];if(!hA(t))throw new Error(`not supported data type: ${t} for deserializing MLTensor tensor`);let{mlTensor:r,download:n,dispose:s}=e[2];return An.fromMLTensor(r,{dataType:t,dims:e[1],download:n,dispose:s})}default:throw new Error(`invalid data location: ${e[3]}`)}},CI=class{async fetchModelAndCopyToWasmMemory(e){return vI(await fA(e))}async loadModel(e,t){Aa();let r;typeof e=="string"?r=await this.fetchModelAndCopyToWasmMemory(e):r=e,[this.sessionId,this.inputNames,this.outputNames,this.inputMetadata,this.outputMetadata]=await BI(r,t),js()}async dispose(){return xI(this.sessionId)}async run(e,t,r){Aa();let n=[],s=[];Object.entries(e).forEach(d=>{let c=d[0],g=d[1],A=this.inputNames.indexOf(c);if(A===-1)throw new Error(`invalid input '${c}'`);n.push(g),s.push(A)});let a=[],i=[];Object.entries(t).forEach(d=>{let c=d[0],g=d[1],A=this.outputNames.indexOf(c);if(A===-1)throw new Error(`invalid output '${c}'`);a.push(g),i.push(A)});
5633let o=n.map((d,c)=>Sh(d,()=>`input "${this.inputNames[s[c]]}"`)),l=a.map((d,c)=>d?Sh(d,()=>`output "${this.outputNames[i[c]]}"`):null),u=await EI(this.sessionId,s,o,i,l,r),p={};for(let d=0;d<u.length;d++)p[this.outputNames[i[d]]]=a[d]??TI(u[d]);return js(),p}startProfiling(){}endProfiling(){DI(this.sessionId)}}}),$I={};Co($I,{OnnxruntimeWebAssemblyBackend:()=>Oh,initializeFlags:()=>kh,wasmBackend:()=>SI});var kh,Oh,SI,W3=et(()=>{ys(),II(),U3(),kh=()=>{(typeof Sr.wasm.initTimeout!="number"||Sr.wasm.initTimeout<0)&&(Sr.wasm.initTimeout=0);let e=Sr.wasm.simd;if(typeof e!="boolean"&&e!==void 0&&e!=="fixed"&&e!=="relaxed"&&(console.warn(`Property "env.wasm.simd" is set to unknown value "${e}". Reset it to \`false\` and ignore SIMD feature checking.`),Sr.wasm.simd=!1),typeof Sr.wasm.proxy!="boolean"&&(Sr.wasm.proxy=!1),typeof Sr.wasm.trace!="boolean"&&(Sr.wasm.trace=!1),typeof Sr.wasm.numThreads!="number"||!Number.isInteger(Sr.wasm.numThreads)||Sr.wasm.numThreads<=0)if(typeof self<"u"&&!self.crossOriginIsolated)Sr.wasm.numThreads=1;else{let t=typeof navigator>"u"?T4("node:os").cpus().length:navigator.hardwareConcurrency;Sr.wasm.numThreads=Math.min(4,Math.ceil((t||1)/2))}},Oh=class{async init(e){kh(),await PI(),await MI(e)}async createInferenceSessionHandler(e,t){let r=new CI;return await r.loadModel(e,t),r}},SI=new Oh});ys(),ys(),ys();var V3="1.24.3";{let e=(W3(),Ol($I)).wasmBackend;$o("webgpu",e,5),$o("webnn",e,5),$o("cpu",e,10),$o("wasm",e,10)}Object.defineProperty(Sr.versions,"web",{value:V3,enumerable:!0});var Q3="/assets/ort-wasm-simd-threaded.jsep-C887KxcQ.wasm";const H3={48:2304,96:9216},kI={48:"gYAAPIGAgDuBgIA7AAAAAAAAAAAAAAAAAAAAAIGAgDsAAAAAAAAAAAAAAAAAAAAAgYCAO4GAgDsAAAAAAAAAAIGAgDuBgIA7gYCAOwAAAAAAAAAAgYCAOwAAAADj4uI+4eDgPoGAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPIGAgDuBgIA7gYAAPIGAgDuBgIA7gYAAPMHAQDyBgIA7gYCAO4GAgDuBgIA7gYAAPIGAgDvBwEA8gYAAPIGAgDuBgIA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgYCAO4GAgDsAAAAAAAAAAAAAAAAAAAAAAAAAAIGAgDuBgIA7gYCAOwAAAAAAAAAAAAAAAIGAgDsAAAAAgYCAO4WEBD6BgAA/gYAAP4GAAD4AAAAAgYAAPAAAAACBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAADyBgAA8wcBAPIGAgDuBgIA7gYCAOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGAgDsAAAAAgYCAO4GAADyBgAA8gYCAOwAAAAAAAAAAgYAAPIGAgDsAAAAAAAAAAIGAgDsAAAAAgYCAO5GQkD6BgAA/gYAAP5GQkD4AAAAAgYCAOwAAAACBgIA7gYCAO4GAgDuBgAA8gYAAPAAAAACBgAA8wcBAPMHAQDyBgIA7gYCAO4GAADyBgAA8gYAAPMHAQDyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAADwAAAAAAAAAAIGAgDsAAAAAAAAAAIGAgDsAAAAAgYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYCAO4GAgDsAAAAAgYCAO+Hg4D6BgAA/gYAAP/Hw8D4AAAAAgYCAO4GAgDuBgIA7gYAAPIGAgDuBgAA8wcBAPIGAgDuBgIA7gYAAPIGAADyBgIA7gYCAO4GAADyBgAA8gYAAPIGAgDuBgIA7gYCAO4GAADyBgAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGAgDsAAAAAAAAAAIGAgDuBgIA7AAAAAAAAAACBgIA7AAAAAAAAAAAAAAAAAAAAAIGAgDsAAAAAgYAAPoGAAD+BgAA/gYAAP4GAAD+BgAA+AAAAAAAAAACBgIA7gYAAPAAAAACBgAA8gYAAPIGAgDuBgIA7gYCAOwAAAADBwEA8wcBAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7AAAAAIGAADwAAAAAAAAAAIGAgDsAAAAAgYCAO4GAgDuBgIA7gYCAOwAAAAAAAAAAgYCAOwAAAAAAAAAAAAAAAAAAAACBgIA7AAAAAAAAAACBgIA7oaCgPoGAAD+BgAA/gYAAP4GAAD/BwMA+AAAAAAAAAACBgIA7AAAAAIGAgDuBgAA8gYAAPAAAAACBgIA7gYCAO4GAgDuBgAA8wcBAPMHAQDzBwEA8gYCAO4GAgDsAAAAAAAAAAIGAgDuBgIA7gYCAOwAAAAAAAAAAAAAAAIGAgDsAAAAAwcBAPIGAgDuBgIA7gYCAOwAAAAAAAAAAgYCAO4GAgDuBgIA7gYAAPIGAADwAAAAAAAAAAIGAADyJiIg9gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYCAPQAAAACBgIA7AAAAAAAAAAAAAAAAgYCAO4GAADyBgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7AAAAAAAAAAAAAAAAAAAAAIGAADwAAAAAgYCAO4GAADyBgIA7gYCAOwAAAAAAAAAAgYCAO8HAQDyBgIA7gYCAO4GAgDsAAAAAgYCAO4GAgDuhoKA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/o6KiPoGAgDuBgAA8AAAAAIGAgDuBgIA7gYCAO8HAQDyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPAAAAAAAAAAAgYCAO4GAADyBgIA7gYAAPIGAgDuBgIA7gYAAPIGAADyBgIA7gYCAO4GAgDuBgAA8gYCAO4GAADyBgAA8gYCAO4mIiD2BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD6BgAA8gYCAO4GAADwAAAAAgYCAO4GAADyBgIA7wcBAPIGAADyBgAA8wcBAPMHAQDzBwEA8gYAAPIGAADyBgIA7gYCAO4GAADyBgAA8gYCAOwAAAAAAAAAAgYCAO4GAgDuBgIA7AAAAAIGAADyBgIA7AAAAAIGAgDuBgIA7AAAAAIGAgDsAAAAAgYCAOwAAAACBgIA7gYCAO+Hg4D6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP8HAwD6BgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDvBwEA8wcBAPMHAQDyBgAA8wcBAPIGAADyBgIA7gYCAO4GAADyBgAA8gYAAPIGAgDsAAAAAAAAAAIGAgDuBgAA8AAAAAIGAgDuBgIA7AAAAAAAAAAAAAAAAgYAAPIGAgDuBgIA7gYAAPAAAAACBgIA7gYCAPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/h4GA+AAAAAAAAAACBgAA8gYAAPMHAQDyBgIA7gYAAPIGAADyBgIA7gYAAPIGAADyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7AAAAAAAAAACBgIA7AAAAAAAAAACBgIA7gYCAO8HAQDwAAAAAgYCAO4GAADwAAAAAgYAAPAAAAACBgAA8gYCAOwAAAACBgIA9gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/x8PA+wcDAPYGAgDuBgAA8wcBAPIGAADyBgAA8gYAAPIGAADwAAAAAgYCAO4GAgDuBgIA7gYCAO4GAADyBgAA8gYAAPIGAgDuBgIA7gYCAOwAAAACBgIA7gYCAOwAAAAAAAAAAAAAAAIGAgDsAAAAAgYCAO4GAgDuBgIA7AAAAAMHAQDyBgAA8gYCAO4GAgD3h4OA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/4eDgPoGAAD2BgIA7gYCAOwAAAACBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAgDuBgAA8gYCAOwAAAACBgIA7AAAAAAAAAACBgIA7AAAAAIGAgDsAAAAAgYCAOwAAAACBgIA7gYCAO4GAgDuBgIA7gYCAO9PS0j6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP8HA
5633wD6BgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAgDuBgAA8gYCAO4GAgDuBgIA7AAAAAAAAAACBgIA7AAAAAAAAAAAAAAAAAAAAAIGAgDsAAAAAgYAAPIGAgDuBgIA7o6KiPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+hoKA+gYCAOwAAAACBgIA7gYCAO4GAgDvBwEA8gYCAO4GAgDuBgIA7gYCAO4GAADyBgAA8gYAAPIGAgDuBgIA7AAAAAAAAAAAAAAAAgYCAO4GAgDsAAAAAAAAAAIGAgDsAAAAAgYCAOwAAAAAAAAAAgYCAO4GAgDuhoKA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/oaCgPgAAAACBgIA7gYCAO4GAgDvBwEA8gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7AAAAAIGAADwAAAAAgYCAO4GAgDsAAAAAAAAAAIGAgDsAAAAAAAAAAAAAAACBgIA7gYAAPcHAwD6BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP9HQ0D6BgIA9gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7wcBAPIGAgDzBwEA8gYAAPAAAAACBgIA7gYCAOwAAAACBgIA7gYCAOwAAAACBgIA7gYCAO4GAgDuBgIA7AAAAAAAAAADBwMA94eDgPoGAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/h4OA+iYiIPYGAgDyBgAA8gYCAO4GAgDuBgIA7gYAAPIGAgDuBgAA8gYAAPIGAgDuBgIA7gYCAOwAAAAAAAAAAgYCAO4GAgDsAAAAAAAAAAIGAgDsAAAAAAAAAAOHgYD7x8PA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4WEhD6BgIA7gYCAO4GAADzBwEA8gYAAPMHAQDzBwEA8gYCAO4GAgDsAAAAAgYAAPIGAgDsAAAAAgYCAOwAAAAAAAAAAgYAAPIGAgDuBgAA+wcDAPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/h4OA+gYCAPYGAADzBwEA8gYAAPIGAADyBgAA8gYAAPIGAgDuBgIA7AAAAAIGAgDsAAAAAAAAAAAAAAAAAAAAAgYCAPaOioj6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP6GgoD6BgIA9gYAAPIGAgDuBgAA8gYAAPIGAgDuBgIA7AAAAAIGAgDsAAAAAgYCAO4WEBD7BwMA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/oaCgPoGAAD6BgIA7gYAAPIGAgDuBgIA7AAAAAIGAAD6RkJA+8fDwPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/h4OA+kZCQPoGAAD6BgIA84eDgPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/j4uI+4eDgPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/h4OA+gYCAO4GAAD6RkJA+4eDgPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/x8PA+kZCQPoGAAD6BgIA7gYCAO8HAQDwAAAAAgYCAO4GAAD6hoKA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/wcDAPoGAAD6BgAA8gYAAPIGAgDuBgIA7AAAAAIGAgDuBgIA7AAAAAAAAAACBgAA8gYCAPaOioj6BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP6Oioj6JiIg9gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYCAO4GAADyBgIA7gYCAOwAAAAAAAAAAgYCAO4GAADyBgIA94eDgPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/BwMA+gYAAPoGAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAOwAAAAAAAAAAAAAAAIGAgDsAAAAAgYCAO4GAgD6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/8/LyPuXkZD6BgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDsAAAAAgYCAOwAAAACBgIA7AAAAAAAAAAAAAAAAgYAAPAAAAACBgIA94+LiPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/h4OA+wcDAPYGAgDuBgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYCAO4GAgDsAAAAAgYCAOwAAAACBgIA7AAAAAIGAgDsAAAAAAAAAAAAAAAAAAAAAgYCAPdHQ0D6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP8HA
5633wD6BgAA9gYCAO4GAgDuBgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAADyBgIA7gYCAO4GAgDsAAAAAAAAAAAAAAAAAAAAAgYCAO4GAgDuhoKA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/oaCgPsHAQDzBwEA8gYAAPIGAgDuBgAA8gYAAPIGAgDuBgIA7wcBAPMHAQDyBgAA8gYAAPIGAgDsAAAAAgYCAO4GAgDsAAAAAgYCAO4GAgDuBgIA7gYCAOwAAAAAAAAAAAAAAAAAAAACBgIA7gYCAO4GAADyBgIA7oaCgPoGAAD+BgAA/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+hoKA+gYCAO4GAgDyBgIA8gYAAPIGAADyBgAA8gYAAPIGAgDuBgIA7wcBAPMHAQDyBgIA7gYAAPIGAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgAA8wcBAPMHAQDyBgAA8gYAAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYCAO8PCwj6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP9HQ0D6BgAA8gYAAPMHAQDzBwEA8gYCAOwAAAACBgIA7gYAAPIGAADyBgAA8wcBAPMHAQDyBgIA7gYCAO8HAQDzBwEA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYCAPMHAQDyBgAA8wcBAPIGAADzBwEA8gYCAO4GAgDuBgIA7gYCAO6GgID3j4uI+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/4eDgPoGAgD2BgAA8wcBAPMHAQDzBwEA8gYCAO4GAgDuBgIA7gYAAPIGAADyBgAA8gYCAPMHAQDwAAAAAgYCAO8HAQDzBwEA8gYAAPIGAADyBgAA8gYCAO4GAADyBgAA8AAAAAAAAAACBgAA8wcBAPIGAADzBwEA8gYAAPIGAADwAAAAAgYCAO4GAADzJyMg98fDwPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYCAPQAAAACBgAA8gYAAPAAAAAAAAAAAgYCAO4GAgDuBgAA8wcBAPIGAADyBgIA7AAAAAAAAAACBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgAA8gYAAPMHAQDyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAADyBgAA8gYAAPIGAADyBgIA7gYCAO4GAADyBgAA84eBgPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgIA+gYCAO4GAgDvBwEA8gYAAPIGAgDsAAAAAgYCAO4GAgDvBwEA8wcBAPIGAgDuBgAA8gYCAOwAAAAAAAAAAAAAAAIGAgDuBgIA7gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7AAAAAIGAgDuBgAA8gYAAPIGAADyBgAA8AAAAAMHAwD6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP+Hg4D6BgIA7gYCAO4GAgDuBgAA8gYAAPAAAAACBgAA8gYCAO4GAgDuBgAA8gYCAO4GAgDsAAAAAgYCAOwAAAAAAAAAAgYCAO4GAgDuBgIA7gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPMHAQDyBgAA8gYCAO4GAAD6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAgD2BgIA7gYCAOwAAAACBgAA8gYAAPIGAgDuBgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPAAAAAAAAAAAgYCAOwAAAACBgAA8gYAAPIGAADyBgIA7gYCAOwAAAAChoKA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/oaCgPoGAgDuBgIA7gYCAO4GAgDuBgAA8wcBAPAAAAACBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPAAAAACBgIA7gYCAO4GAADyBgAA8gYAAPIGAgDuBgIA7AAAAAIGAgDuBgIA9gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYCAPYGAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYAAPIGAgDuBgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDsAAAAAw8LCPoKBAT+CgQE/gYAAP4GAAD+hoKA+gYCAO4GAADyBgAA8gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDsAAAAAgYAAPIGAADyBgIA7AAAAAIGAgDuBgIA7gYAAPMHAQDyBgIA7gYAAPoKBAT+BgAA/gYAAP4GAAD+BgAA+gYCAO4GAADyBgAA8AAAAAIGAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAgDuBgIA7gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgAA8gYAAPAAAAAAAAAAAgYAAPIGAADyBgIA7gYCAO/Py8j6BgAA/gYAAP+Hg4D6BgIA7gYCAO4GAADzBwEA8gYCAO4GAgDuBgAA8gYAAPAAAAAAAAAAAgYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAgDsAAAAAgYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAgDuBgIA7gYAAPIGAADyBgIA7gYCAO5OSkj6BgAA/gYAAP5OSkj6BgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgIA7gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgAA8gYCAO4GAADyBgIA7AAAAAIGAgDvBwEA8wcBAPIGAgDsAAAAAgYCAO4GAgDuBgAA8gYAAPIGAAD6BgAA/gYAAP4WEBD6BgIA7gYCAO4GAADyBgAA8gYAAPIGAADwAAAAAgYCAOwAAAACBgIA7gYAAPIGAADyBgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgIA7AAAAAIGAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPIGAgDuBgIA7gYCAOwAAAADBwEA8gYAAPIGAgDvh4OA+4eDgPoGAgDuBgIA7gYCAO4GAADyBgAA8gYAAPIGAADyBgIA7AAAAAIGAgDsAAAAAgYAAPIGAADyBgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7",96:"gYCAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAgDwAAAAAwcBAPMHAQDyBgIA8wcBAPIGAADyhoKA8gYAAPIGAADyBgAA8AAAAAIGAADyBgIA7gYCAO4GAgDuBgIA7wcBAPIGAADzBwEA8gYCAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPIGAADwAAAAAgYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPOXkZD7z8vI+4+LiPu3sbD6BgIA7wcBAPAAAAACBgAA8gYCAO4GAADyBgIA8gYCAPIGAADyBgIA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8gYAAPIGAgDyBgIA8gYCAPIGAADzBwEA8gYCAO8HAQDyBgAA8gYAAPIGAgDuBgAA8wcBAPMHAQDyBgAA8wcBAPMHAQDyBgIA8wcBAPMHAQDyBgIA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgIA8oaCgPIGAgDyBgIA8wcBAPIGAgDyBgAA8wcBAPIGAgDvBwEA8wcBAPIGAgDyBgAA8gYAAPMHAQDzBwEA8gYCAO4GAADyBgIA8wcBAPIGAADyBgAA8gYCAO4GAgDsAAAAAgYCAOwAAAAAAAAAAgYAAPIGAADzBwEA8wcBAPIGAgDvBwEA8wcBAPIGAADzBwEA8oaCgPMHAQDzBwEA8gYCAOwAAAAAAAAAAAAAAAIGAgDsAAAAAAAAAAAAAAACBgAA8gYCAPYGAAD+BgAA/goEBP4KBAT+RkBA9gYAAPAAAAACBgIA7gYAAPIGAADyBgAA8wcBAPMHAQDyBgAA8gYAAPIGAADzBwEA8gYCAPMHAQDzBwEA8gYCAO4GAgDuBgAA8gYAAPIGAADyBgIA7gYAAPAAAAACBgAA8AAAAAIGAgDuBgIA7gYCAPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYAAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcDAPKGgoDyBgIA8oaCgPIGAgDyhoKA8gYCAOwAAAACBgAA8gYCAO4GAADyBgIA8wcBAPIGAADwAAAAAgYCAO4GAgDvBwEA8gYCAO4GAgDuBgIA7gYCAO4GAADyBgAA8gYCAOwAAAACBgIA7gYCAOwAAAACBgIA7gYCAO4GAgDsAAAAAgYCAO4GAADyBgAA8gYAAPMHAQDzBwEA8gYCAPMHAQDzBwEA8AAAAAIGAgDsAAAAAgYCAOwAAAAAAAAAAgYCAO4GAADyBgAA8paQkPoGAAD+BgAA/goEBP4GAAD/FxEQ+AAAAAAAAAACBgIA7gYAAPIGAgDsAAAAAAAAAAIGAgDuBgIA7gYAAPKGgoDyBgIA8wcBAPIGAgDyBgIA8gYAAPAAAAACBgIA7gYAAPIGAADzBwEA8gYCAPIGAgDyBgAA8wcBAPKGgoDzBwEA8gYAAPIGAADyBgIA8gYCAPMHAQDzBwEA8wcBAPIGAgDyBgIA8gYCAPMHAQDyBgAA8gYCAPMHAQDyBgIA8gYCAPMHAQDzBwEA8AAAAAIGAgDuBgIA7gYAAPIGAADyhoKA8gYAAPMHAQDwAAAAAgYCAO4GAADyBgAA8AAAAAAAAAAAAAAAAgYAAPIGAADyBgIA7AAAAAIGAgDsAAAAAgYCAO4GAgDsAAAAAgYCAO4GAADyBgIA7gYCAOwAAAACBgIA7gYCAPMHAQDyBgAA8gYCAPIGAgDuBgAA8AAAAAIGAgDsAAAAAAAAAAAAAAACBgIA7gYAAPIGAADzBwEA8paSkPoGAAD+BgAA/goEBP4KBAT+hoKA+gYCAO4GAgDuBgIA7gYCAO4GAgDsAAAAAAAAAAIGAgDuBgAA8gYCAPIGAgDzBwEA8gYAAPMHAQDyBgIA8gYCAPIGAADyBgAA8wcBAPIGAADzBwEA8gYCAPIGAgDyBgIA8gYCAPMHAQDyBgIA8gYAAPMHAQDyBgIA8oaCgPIGAgDyBgAA8gYCAO8HAQDzBwEA8oaCgPIGAgDzBwEA8gYCAPMHAQDyhoKA8gYCAPMHAQDzBwEA8AAAAAAAAAACBgIA7wcBAPKGgoDyBgIA8gYCAPMHAQDyBgIA7gYAAPIGAgDuBgIA7AAAAAAAAAADBwEA8gYCAO8HAQDzBwEA8AAAAAIGAADyBgIA7gYCAOwAAAACBgAA8AAAAAIGAgDsAAAAAAAAAAAAAAACBgAA8gYCAPMHAQDyBgAA8gYAAPMHAQDyBgAA8gYAAPIGAgDuBgIA8wcBAPAAAAACBgIA7AAAAAIGAgDvBwEA85eTkPoGAAD+BgAA/gYAAP4GAAD/z8vI+gYAAPMHAQDyBgIA7gYAAPMHAQDyBgIA7gYAAPMHAQDzBwEA8gYCAPIGAgDyBgIA8wcBAPIGAgDyBgIA8wcBAPIGAADyBgIA7gYCAO8HAQDyBgIA8oaCgPIGAgDyBgIA8gYCAPIGAgDyBgIA8gYCAPMHAQDzBwEA8wcBAPIGAgDsAAAAAwcBAPIGAADzBwEA8gYCAPMHAQDzBwEA8gYAAPKGgoDyBgIA8oaCgPIGAgDzBwEA8gYCAOwAAAADBwEA8wcBAPMHAQDyBgIA8gYCAPIGAgDzBwEA8gYAAPIGAgDyBgIA8AAAAAIGAgDuBgIA7gYCAO4GAADzBwEA8gYAAPIGAgDsAAAAAgYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7AAAAAIGAgDuBgAA8gYCAPIGAgDyBgIA8gYCAPIGAgDuBgIA8oaCgPIGAADyBgIA8AAAAAIGAADyBgIA8gYAAPIGAADyFhAQ+goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/iYgIPoGAADyBgAA8gYAAPMHAQDzBwEA8gYAAPIGAgDuBgAA8wcBAPIGAgDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAADyBgAA8gYCAO8HAQDzBwEA8wcBAPIGAgDyBgIA8gYCAPKGgoDzBwEA8gYAAPMHAQDyBgIA8gYCAPIGAADyBgIA7wcBAPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAgDzBwEA8gYCAPMHAQDzBwEA8gYCAO4GAADyBgIA7gYCAO4GAgDyBgIA8wcBAPMHAQDyBgIA8wcBAPAAAAACBgIA7AAAAAIGAADyBgAA8gYCAO4GAgDvBwEA8gYCAO4GAgDuBgAA8wcBAPMHAQDzBwEA8wcBAPIGAADwAAAAAgYCAO4GAADzBwEA8gYAAPIGAADyBgAA8wcBAPIGAADyBgIA7gYCAPIGAADyBgIA7gYAAPIGAgDuBgAA8gYAAPIGAADylpKQ+goEBP4GAAD+BgAA/gYAAP4KBAT+BgAA/k5KSPoGAADyBgAA8gYAAPIGAADyBgIA8wcBAPIGAADyBgIA7gYAAPIGAADzBwEA8wcBAPKGgoDzBwEA8gYCAPIGAADyBgAA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgAA8gYAAPMHAQDzBwEA8wcBAPIGAADzBwEA8gYAAPMHAQDzBwMA8oaCgPIGAgDyBgIA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8gYCAO8HAQDyBgAA8gYAAPMHAQDzBwEA8gYAAPIGAgDyBgIA8gYAAPIGAADyBgIA7gYAAPMHAQDyBgIA8gYCAO4GAgDsAAAAAgYAAPMHAQDzBwEA8wcBAPIGAgDuBgAA8wcBAPAAAAACBgAA8gYAAPIGAADyBgAA8gYCAO4GAgDvBwEA8gYCAO4GAgDuBgIA7AAAAAIGAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDvj4uI+goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/8/LyPoGAADyBgAA8gYAAPIGAADyBgIA8wcBAPMHAQDyBgIA8wcBAPIGAADzBwEA8gYAAPMHAQDzBwEA8gYCAO4GAADyBgAA8gYAAPIGAADyBgIA7wcBAPIGAgDzBwEA8wcBAPIGAgDyBgAA8gYCAO8HAQDzBwEA8gYAAPMHAQDyBgIA8wcBAPIGAgDzBwEA8oaCgPKGgoDyBgIA8gYCAPIGAgDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAADyBgAA8gYAAPIGAgDuBgAA8gYCAPMHAQDyBgIA7wcBAPIGAADzBwEA8gYAAPIGAADyBgIA8gYCAO4GAgDuBgAA8wcBAPIGAgDyBgIA7gYAAPIGAADyBgAA8gYAAPAAAAACBgAA8gYAAPIGAADzBwEA8gYAAPMHAQDyBgIA8wcBAPIGAADyBgIA7gYCAO4GAgDuBgAA8gYCAO4GAgDzBwEA8wcBAPKmoKD6BgAA/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4WEBD7BwEA8gYAAPIGAgDvBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAADzBwEA8gYAAPIGAgDuBgIA7gYCAO4GAgDvBwEA8wcBAPIGAADyBgIA8gYAAPIGAgDsAAAAAgYCAO4GAgDuBgIA8wcBAPMHAQDyBgIA8wcBAPIGAADyBgIA8oaCgPIGAgDyBgAA8gYAAPIGAgDyBgIA8oaCgPIGAgDyBgIA8gYCAO8HAQDyBgIA7gYCAOwAAAACBgIA7wcBAPIGAADyBgIA7wcBAPIGAgDuBgAA8gYAAPMHAQDyBgAA8gYAAPIGAgDuBgAA8wcBAPIGAgDyBgAA8wcBAPAAAAACBgIA7AAAAAIGAADyBgAA8gYAAPIGAADyBgAA8gYAAPIGAADzBwEA8wcBAPIGAgDuBgIA7AAAAAIGAgDuBgIA7gYCAO4GAADzBwEA8wcBAPLOysj6CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP8PCwj6BgAA8AAAAAIGAgDvBwEA8gYCAPIGAgDzBwEA8wcBAPMHAQDyBgAA8gYAAPMHAQDyBgAA8gYCAO4GAgDsAAAAAgYAAPIGAADzBwEA8gYAAPMHAQDyBgAA8gYCAPAAAAACBgIA7gYAAPIGAADzBwEA8gYCAPIGAgDyBgIA8gYCAPIGAgDyhoKA8gYCAPIGAADyBgIA8wcBAPMHAQDzBwEA8wcDAPIGAgDyBgIA8wcBAPIGAADyBgIA8wcBAPIGAgDuBgIA7gYCAO4GAgDvBwEA8wcBAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYAAPMHAQDzBwEA8gYAAPIGAgDyBgIA7gYCAO4GAgDuBgIA7gYCAO8HAQDyBgAA8gYCAPIGAADyBgAA8gYCAO4GAgDzBwEA8wcBAPIGAgDuBgIA7AAAAAIGAgDsAAAAAgYCAO4GAADyBgIA8iYiIPYGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+JiIg9gYCAO4GAADyBgAA8gYAAPMHAQDyBgIA7gYAAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYCAO8HAQDyBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgAA8gYAAPIGAADyBgIA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgAA8gYCAPIGAgDzBwEA8gYAAPMHAQDzBwEA8wcBAPIGAgDyBgAA8wcBAPIGAADzBwEA8wcBAPIGAADzBwEA8wcBAPIGAgDuBgIA7gYCAO4GAgDuBgAA8wcBAPIGAgDuBgAA8gYAAPIGAgDuBgIA7gYAAPMHAQDzBwEA8gYAAPIGAADyBgIA7wcBAPIGAgDsAAAAAgYAAPIGAgDzBwEA8wcBAPIGAADyBgAA8wcBAPMHAQDyBgAA8wcBAPIGAgDuBgAA8gYCAO4GAgDuBgIA7gYCAO4GAADzBwEA8oaCgPoGAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4KBAT+BgAA/gYAAP4GAAD+FhIQ+gYAAPIGAADyBgIA7AAAAAIGAADyBgIA8wcBAPIGAgDyBgAA8gYAAPIGAADyBgAA8gYCAO4GAADyBgIA7gYCAO8HAQDyBgAA8gYAAPMHAQDwAAAAAgYAAPIGAgDuBgIA8gYCAPIGAgDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAgDyBgIA7wcBAPIGAgDvBwEA8gYAAPMHAQDzBwEA8wcBAPIGAgDyhoKA8gYCAO4GAgDuBgIA7gYAAPAAAAACBgIA7gYAAPIGAADyBgAA8AAAAAAAAAACBgIA7gYAAPMHAQDwAAAAAgYAAPIGAgDuBgAA8gYCAOwAAAADBwEA8wcBAPMHAQDwAAAAAAAAAAIGAgDvBwEA8gYAAPMHAQDzBwEA8wcBAPIGAADwAAAAAgYCAO4GAADyBgIA7gYAAPAAAAAAAAAAAgYAAPAAAAACJiIg9goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD/z8vI+gYAAPYGAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAADyBgAA8gYCAOwAAAADBwEA8gYAAPIGAgDuBgAA8gYCAO4GAgDzBwEA8wcBAPIGAADyBgIA7gYAAPIGAgDuBgIA8wcBAPIGAADyBgAA8gYAAPMHAQDzBwEA8gYAAPIGAgDyBgIA8gYCAPMHAQDyBgIA8gYCAPMHAwDzBwEA8wcBAPMHAQDzBwEA8gYCAO4GAADwAAAAAgYAAPIGAgDsAAAAAgYAAPMHAQDyBgAA8gYCAOwAAAACBgAA8wcBAPMHAQDyBgAA8gYAAPIGAADyBgAA8gYCAO4GAADyBgAA8wcBAPAAAAAAAAAAAgYCAO4GAADzBwEA8gYAAPMHAQDyBgAA8wcBAPMHAQDyBgAA8gYCAO4GAgDuBgIA7AAAAAIGAADyBgIA7gYAAPMHAQDyDgoI+gYAAP4
5633KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/g4KCPoGAADyBgAA8gYAAPIGAgDuBgIA8gYCAPIGAgDyBgAA8gYCAO4GAgDuBgAA8wcBAPIGAgDuBgIA7gYAAPIGAgDzBwEA8gYCAPMHAQDyBgAA8gYCAO4GAgDuBgIA7gYAAPIGAADzBwEA8wcBAPMHAQDzBwEA8gYAAPMHAQDzBwEA8wcBAPIGAADyBgIA8gYCAPKGgoDyBgIA8wcBAPMHAQDzBwEA8gYAAPIGAgDuBgIA7gYCAO8HAQDyBgIA8gYCAO4GAgDuBgIA7gYAAPIGAgDuBgAA8wcBAPIGAgDyBgAA8gYCAO4GAADyBgAA8gYAAPIGAgDvBwEA8gYCAPAAAAAAAAAAAgYCAO4GAADzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDwAAAAAgYCAOwAAAACBgIA7AAAAAAAAAACBgIA8gYCAPJGQkD3j4uI+goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+DggI/goEBP4KBAT+BgAA/8/LyPpGQED2BgAA8oaCgPIGAgDyBgIA8wcBAPIGAADyBgIA8gYCAPIGAADzBwEA8gYAAPIGAgDyBgIA7wcBAPIGAgDyBgIA8gYCAPIGAADyBgAA8gYAAPIGAADzBwEA8wcBAPMHAQDyBgIA8gYCAPMHAQDzBwEA8gYCAPIGAgDyhoKA8gYCAPKGgoDzBwMA8gYCAPIGAADyBgIA8gYCAPMHAQDzBwEA8gYAAPMHAQDyBgAA8gYAAPMHAQDyhoKA8wcBAPIGAgDuBgAA8gYCAO4GAgDsAAAAAgYAAPIGAgDuBgAA8gYCAO8HAQDzBwEA8gYAAPIGAADzBwEA8gYAAPIGAADyBgIA7gYAAPIGAADzBwEA8gYCAO4GAADyBgIA8gYCAPMHAQDyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAADzBwEA8gYCAPKWkpD6CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/goEBP4OCAj+BgAA/goEBP4KBAT+CgQE/goEBP4WEhD7BwEA8gYCAO8HAQDyBgIA8gYAAPMHAQDzBwMA8wcBAPIGAADyBgIA7gYCAO4GAADzBwEA8gYCAPMHAQDyBgIA8gYCAPIGAADyBgAA8gYCAO8HAQDzBwEA8wcBAPIGAgDzBwEA8gYCAPMHAQDyBgIA8oaCgPMHAwDzBwEA8gYCAPIGAADyhoKA8wcBAPIGAgDzBwEA8oaCgPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8oaCgPMHAQDyBgAA8gYAAPAAAAACBgIA7gYAAPIGAgDuBgIA8gYCAPMHAQDzBwEA8gYAAPMHAQDyBgIA7gYAAPIGAgDvBwEA8wcBAPIGAADzBwEA8gYAAPIGAgDvBwEA8gYCAPKGgoDyBgAA8wcBAPIGAADzBwEA8gYCAO4GAADzBwEA8kZCQPYKBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP/Py8j6JiIg9wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgAA8gYCAO4GAgDyBgAA8wcBAPMHAQDzBwEA8gYAAPIGAADyBgIA7gYAAPIGAADzBwEA8gYCAPIGAADyBgIA7wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDyBgIA7gYAAPMHAQDzBwEA8wcBAPKGgoDyBgIA8wcBAPIGAgDyBgAA8gYAAPIGAgDuBgIA7gYAAPIGAgDuBgIA8gYCAPIGAgDyBgIA8AAAAAIGAADzBwEA8wcBAPIGAADzBwEA8gYCAO4GAADyBgIA7gYCAO4GAADzBwEA8gYCAOwAAAACBgAA8gYCAPIGAgDzBwEA8wcBAPMHAQDyBgAA8paSkPoKBAT+BgAA/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+CgQE/gYAAP4GAAD+zsrI+gYCAPIGAADyBgAA8gYAAPMHAQDzBwEA8gYAAPIGAADyBgAA8gYCAO8HAQDyBgIA8gYCAOwAAAADBwEA8gYCAO4GAgDuBgAA8wcBAPMHAQDyBgIA8gYCAPMHAQDyBgAA8wcBAPIGAADzBwEA8gYCAPMHAQDyBgIA8oaCgPMHAQDzBwEA8wcBAPIGAADzBwEA8gYCAPMHAQDyBgIA8gYAAPMHAQDyBgIA8wcBAPIGAADyBgAA8wcBAPMHAQDyBgIA8gYAAPIGAgDuBgIA7AAAAAIGAADzBwEA8oaCgPIGAgDzBwEA8gYCAO8HAQDyBgIA7gYCAO4GAADzBwEA8gYCAPIGAADyBgIA8gYCAPMHAQDyBgAA8gYCAPIGAgDzBwEA8gYCAPKGgoDyBgIA8gYCAPMHAQDylpCQ+gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4SDAz+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/iYgIPoGAgDuBgIA7gYAAPIGAgDyBgAA8gYCAO4GAADyBgAA8AAAAAIGAADyBgAA8gYAAPIGAADyBgAA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAgDyBgIA8wcBAPIGAADyBgAA8gYAAPIGAgDzBwEA8gYAAPMHAQDyBgAA8wcBAPIGAgDyBgAA8gYAAPIGAgDyBgIA8gYAAPIGAgDzBwEA8gYAAPMHAQDyhoKA8oaCgPIGAgDyBgAA8gYCAOwAAAADBwEA8gYCAPIGAgDzBwEA8gYCAO4GAADyBgAA8gYCAO4GAADzBwEA8gYAAPIGAADyBgIA7gYCAPIGAADyBgAA8AAAAAIGAADzBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDzj4uI+goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/g4ICP4GAAD+CgQE/gYAAP4GAAD+CgQE/4+LiPpGQED3BwEA8wcBAPMHAQDyBgAA8gYAAPIGAgDuBgIA7gYCAO4GAADzBwEA8wcBAPIGAADyBgAA8wcBAPIGAADzBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAADyBgAA8wcBAPIGAADzBwEA8oaCgPMHAQDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAgDzBwEA8gYAAPIGAgDvBwEA8gYCAO4GAADyBgAA8gYAAPMHAQDyBgIA7gYAAPIGAADyBgAA8wcBAPMHAQDyBgAA8gYAAPMHAQDwAAAAAgYAAPMHAQDyBgIA8wcBAPMHAQDyBgIA8wcBAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDvBwEA8gYCAPIWEhD6BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP5OSkj6BgAA8wcBAPMHAQDyBgAA8gYCAPIGAgDuBgIA7gYCAO4GAgDvBwEA8wcBAPIGAADzBwEA8gYAAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAO4GAgDyBgIA8gYCAPIGAADyBgIA8oaCgPIGAgDyBgAA8wcBAPIGAgDuBgAA8gYAAPIGAADyBgAA8oaCgPIGAADyBgAA8gYCAPIGAgDyBgAA8wcBAPIGAADzBwEA8gYCAO4GAADyBgIA7gYAAPIGAADyBgAA8gYAAPIGAADyBgAA8gYAAPMHAQDyBgIA7gYAAPIGAgDuBgIA7gYAAPMHAQDzBwEA8gYAAPIGAgDzBwEA8gYAAPIGAADyBgAA8gYCAO4GAgDuBgAA8AAAAAMHAQDyBgIA82djYPYKBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+DggI/goEBP4GAAD+FhAQ+wcBAPMHAQDyBgIA8gYCAPIGAADyBgIA7wcBAPMHAQDzBwEA8gYCAPMHAQDyBgIA8gYCAPMHAQDyBgAA8gYCAPMHAQDzBwEA8wcBAPMHAQDyhoKA8gYCAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYAAPIGAADyBgAA8gYAAPIGAgDyBgIA8gYCAPIGAgDyBgAA8wcBAPMHAQDyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDsAAAAAAAAAAAAAAAChoKA8gYCAPIGAADyBgAA8gYAAPIGAgDvBwEA8wcBAPMHAQDyBgAA8gYCAPMHAQDyBgIA7gYCAO4GAADzBwEA8oaCgPMHAQDwAAAAAgYCAO4GAADyJiIg95eTkPoKBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+DggI/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP4GAAD/j4uI+sbAwPYGAgDyhoKA8oaCgPMHAQDyBgAA8AAAAAIGAADzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAgDzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8oaCgPIGAADzBwEA8gYAAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAgDyBgAA8wcBAPIGAADyBgIA7wcBAPMHAQDwAAAAAAAAAAAAAAACBgIA7AAAAAAAAAAAAAAAAgYCAOwAAAAAAAAAAAAAAAIGAgDvBwEA8gYCAPIGAADyBgIA7gYAAPIGAADyBgAA8wcBAPIGAADzBwEA8gYCAPMHAQDzBwEA8gYAAPIGAADzBwEA8gYAAPMHAQDyBgAA8gYAAPIGAADyjoqI+gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/s7KyPsHAQDzBwEA8gYCAPMHAQDzBwEA8gYAAPIGAADzBwEA8gYCAPIGAADyBgIA8wcBAPKGgoDyBgIA8wcBAPIGAgDyhoKA8oaCgPMHAQDyBgAA8gYCAPMHAQDzBwEA8gYAAPMHAQDyBgAA8gYAAPIGAgDyBgIA8wcBAPIGAADyBgIA7gYAAPMHAQDyBgAA8wcBAPMHAQDwAAAAAAAAAAAAAAACBgIA7wcBAPMHAQDyBgIA7gYAAPIGAgDuBgIA7AAAAAAAAAACBgIA7gYAAPAAAAACBgAA8wcBAPIGAADyBgAA8gYCAO4GAADzBwEA8wcBAPMHAQDyBgIA7gYAAPIGAADyBgAA8wcBAPIGAgDuBgIA8wcBAPIWEhD6CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+DggI/goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP+XkZD6BgAA8gYCAO4GAgDyBgIA8gYCAO8HAQDyBgIA8gYAAPMHAQDyBgIA7gYCAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyhoKA8gYAAPMHAQDzBwEA8gYAAPMHAQDzBwEA8wcBAPIGAgDyBgAA8wcBAPIGAADwAAAAAgYAAPIGAgDuBgIA7AAAAAAAAAACBgIA7gYAAPIGAADzBwEA8gYCAOwAAAAAAAAAAgYCAO4GAgDsAAAAAgYCAO4GAgDsAAAAAwcBAPMHAQDyBgAA8gYAAPIGAADzBwEA8gYCAPIGAgDyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8jYwMPoKBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4OCAj+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4OCAj+CgQE/gYAAP4GAAD+BgAA+gYCAO4GAgDyBgIA8gYAAPIGAADyBgIA8gYCAO4GAADyhoKA8wcBAPIGAgDyBgIA8gYCAO4GAgDyBgIA8gYCAPIGAgDyBgAA8oaCgPIGAgDzBwEA8gYCAPKGgoDzBwEA8gYCAPIGAgDyBgIA8wcBAPMHAQDyBgIA7wcBAPIGAgDuBgAA8gYCAO4GAADyBgIA7gYCAO4GAADyBgAA8gYAAPMHAQDyBgIA8wcBAPIGAgDsAAAAAgYCAO4GAgDuBgAA8gYCAO4GAADzBwEA8gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8wcBAPIGAADzBwEA8gYAAPIGAgDsAAAAAwcBAPIGAADyJiIg98/LyPoKBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+CgQE/gYAAP4KBAT+BgAA/gYAAP4GAAD/x8PA+kZCQPYGAADyBgIA8gYAAPIGAADyBgAA8gYAAPIGAgDuBgAA8gYCAPIGAgDyBgAA8gYAAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYAAPIGAADzBwEA8gYCAO8HAQDzBwEA8gYAAPIGAgDzBwEA8wcBAPKGgoDzBwEA8gYAAPIGAADwAAAAAgYCAO4GAADyBgAA8wcBAPMHAQDyBgAA8gYAAPIGAgDuBgAA8gYAAPIGAgDuBgIA7gYCAO4GAADzBwEA8gYAAPIGAADyBgIA7gYAAPIGAgDvBwEA8wcBAPMHAQDwAAAAAgYCAO4GAgDuBgIA7gYCAO4GAgD3h4OA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/4+LiPomIiD3BwEA8gYCAO4GAgDuBgIA8wcBAPIGAADyBgAA8gYCAO8HAQDyBgIA7gYAAPMHAQDyBgIA8oaCgPMHAQDzBwEA8gYCAPIGAADyBgIA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgAA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgAA8wcBAPIGAADyBgIA7gYCAO4GAADyBgIA8gYAAPMHAQDyBgAA8gYCAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYAAPIGAgDzBwEA8wcBAPIGAADwAAAAAgYCAO8HAQDyBgIA7wcBAPIGAgDsAAAAAgYCAO4GAADzBwEA8kZCQPePi4j6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/goEBP+Pi4j6BgIA9gYCAO4GAgDuhoKA8wcBAPIGAADyBgAA8gYAAPMHAQDyBgAA8gYAAPMHAQDyhoKA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAADyBgAA8wcBAPIGAgDyhoKA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAADyBgAA8gYAAPMHAQDyhoKA8wcBAPMHAQDzBwEA8wcBAPIGAgDuBgIA7gYCAO4GAADyBgAA8gYAAPIGAADyBgAA8wcBAPMHAQDwAAAAAgYAAPIGAADyBgAA8gYCAO4GAADyBgIA7gYAAPIGAADyxsDA94+LiPoKBAT+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+DggI/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/gYAAP4KBAT+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT/T0tI+gYAAPcHAQDyBgAA8gYCAPIGAgDsAAAAAgYCAO8HAQDyBgAA8gYAAPIGAADyBgIA8wcBAPMHAQDzBwEA8gYAAPMHAQDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAgDuBgIA7gYAAPMHAQDyBgAA8gYCAPMHAQDyBgAA8gYCAO8HAQDwAAAAAgYCAO4GAADyBgAA8gYAAPMHAQDzBwEA8wcBAPIGAADyBgAA8gYCAOwAAAACBgAA8gYCAO4GAgDuBgAA8gYAAPJmYmD3V1NQ+gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/g4ICP4GAAD+BgAA/gYAAP4GAAD+CgQE/g4ICP4KBAT+CgQE/4+LiPqGgoD2BgIA8wcDAPIGAADyBgAA8gYCAO4GAADzBwEA8gYCAPMHAQDyBgIA7gYCAPIGAgDyBgAA8gYAAPIGAADzBwEA8wcBAPIGAgDzBwEA8gYCAPIGAgDyhoKA8oaCgPMHAQDzBwEA8gYCAPIGAgDuBgAA8wcBAPMHAQDyBgAA8gYCAO8HAQDzBwEA8gYAAPIGAgDuBgIA7wcBAPIGAADyBgAA8gYAAPMHAQDyBgAA8gYCAO8HAQDzBwEA8gYCAO8HAQDyBgIA7wcBAPIGAADzBwEA8gYAAPIGAADyBgIA7kZCQPeXk5D6CgQE/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4GAAD+CgQE/gYAAP4KBAT+CgQE/goEBP4OCAj+DggI/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4OCAj+BgAA/gYAAP+Pi4j6JiIg9gYAAPAAAAAAAAAAAwcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8gYAAPIGAADyBgAA8wcBAPIGAgDyBgIA8gYCAPMHAQDyBgIA8gYCAPIGAgDzBwEA8wcBAPIGAADzBwEA8gYCAPMHAQDwAAAAAgYAAPMHAQDzBwEA8gYCAO4GAgDuBgIA7wcBAPIGAADyBgIA7gYAAPIGAgDzBwEA8gYAAPIGAgDuBgIA7gYCAO4GAADzBwEA8gYCAPIGAADyBgAA8gYAAPIGAADyRkJA95eTkPoKBAT+CgQE/g4ICP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD/j4uI+gYCAPYGAgDuBgIA7gYCAO4GAADzBwEA8oaCgPMHAQDzBwEA8wcBAPKGgoDyBgAA8gYAAPMHAQDyBgAA8wcBAPIGAgDyBgAA8wcBAPIGAgDyBgIA8wcBAPIGAgDyBgIA8gYCAPIGAADyBgAA8gYCAPIGAgDyBgIA7AAAAAMHAQDzBwEA8gYCAO4GAgDuBgIA7gYCAPMHAQDyBgAA8wcBAPMHAQDyBgIA8wcBAPIGAgDuBgIA7AAAAAIGAADyBgAA8oaCgPMHAQDyBgIA7gYCAO4mICD7z8vI+gYAAP4KBAT+CgQE/g4ICP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/8fDwPoWEBD6BgIA7gYCAO4GAgDuBgAA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA7gYAAPIGAADzBwEA8gYCAPIGAgDyBgAA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8gYAAPIGAADzBwEA8wcDAPKGgoDwAAAAAgYAAPMHAQDzBwEA8gYCAO4GAgDuBgAA8gYAAPIGAADyBgAA8wcBAPMHAQDzBwEA8wcBAPIGAgDuBgIA7gYCAO4GAADyBgIA8wcBAPMHAQDyBgIA75eRkPoKBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgIA+gYAAPIGAADzBwEA8wcBAPIGAgDuBgIA8wcBAPIGAADyBgAA8gYCAPIGAgDyBgIA8gYCAPIGAgDyBgIA8gYCAPIGAgDyBgIA8wcBAPMHAQDyBgAA8wcBAPMHAwDyhoKA8gYCAPMHAQDwAAAAAgYCAO4GAgDyBgIA8gYAAPIGAADyBgIA7gYCAPIGAADyBgIA7wcBAPMHAQDyBgAA8wcBAPIGAADyBgIA7gYCAO4GAADyBgAA8wcBAPIGAAD2xsLA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/goEBP4KBAT+DggI/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/o6KiPpGQkD3BwEA8wcBAPMHAQDzBwEA8gYCAPIGAgDyBgIA8gYCAPIGAgDyBgIA8gYCAPIGAgDzBwEA8wcBAPIGAgDyhoKA8wcBAPMHAQDzBwEA8gYCAPIGAgDyhoKA8gYAAPMHAQDyBgIA7gYCAO4GAgDuBgAA8gYAAPMHAQDyBgIA7gYCAO8HAQDyBgAA8gYAAPMHAQDzBwEA8wcBAPMHAQDyBgAA8AAAAAIGAADzBwEA8iYgIPuHg4D6BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP+Pi4j7R0NA9wcBAPIGAgDuBgIA8gYAAPIGAADyBgIA8wcBAPMHAQDzBwEA8gYAAPIGAADzBwEA8wcBAPIGAgDyBgIA8wcBAPMHAQDzBwEA8gYCAPIGAADyBgAA8gYCAO4GAADyBgIA7gYCAOwAAAACBgAA8wcBAPMHAQDyBgIA7gYAAPIGAgDyhoKA8gYCAPMHAQDzBwEA8gYCAPIGAADyBgAA8gYAAPIGAAD2TkpI+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+DggI/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/hYSEPsHAQDyBgAA8gYCAO4GAADyBgIA8wcBAPMHAQDzBwEA8gYAAPIGAADyBgIA8wcBAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgIA7gYCAPKGgoDzBwEA8gYCAOwAAAADBwEA8gYAAPMHAQDyBgAA8wcBAPMHAQDyBgIA8wcBAPIGAgDzBwEA8gYCAPIGAgDzBwEA8iYgIPuPi4j6BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/gYAAP4GAAD+CgQE/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP+Xk5D6pqCg+gYAAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAgDzBwEA8wcBAPIGAgDyBgAA8gYAAPIGAADyBgAA8wcBAPIGAgDyBgAA8gYAAPIGAgDuBgAA8gYCAO8HAQDzBwEA8wcBAPMHAQDyhoKA8gYAAPIGAADyBgIA8wcBAPImIiD2zsrI+gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/g4ICP4KBAT+DggI/g4ICP4KBAT+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/paSkPomIiD3BwEA8wcBAPIGAgDzBwEA8gYCAPIGAgDzBwEA8wcBAPIGAgDzBwEA8wcBAPMHAQDyBgAA8wcBAPIGAADzBwEA8wcDAPIGAgDzBwEA8gYCAPIGAgDuBgAA8gYAAPMHAQDyBgAA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA9g4KCPvPy8j6CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/goEBP4GAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4OCAj+CgQE/goEBP4KBAT+lpKQ+kZCQPYGAADyhoKA8gYCAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8wcBAPIGAgDzBwEA8gYCAPIGAADyBgAA8gYCAPMHAQDyBgAA8wcBAPIGAADyBgAA8kZAQPYWEhD7z8vI+gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT+DggI/goEBP4KBAT+CgQE/4+LiPoWEhD6ZmJg9gYCAPKGgoDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAgDyhoKA8wcBAPMHAQDyBgIA7AAAAAIGAADzBwEA8gYAAPIGAADyBgIA7gYAAPIGAgD2FhIQ+8/LyPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/o6KiPomIiD2BgAA8gYCAPIGAADyBgIA8gYAAPIGAADyBgAA8gYAAPIGAADzBwEA8gYAAPIGAADyBgIA7wcBAPMHAQDyBgIA8gYAAPIGAADyFhAQ+w8LCPoGAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4SDAz+BgAA/g4ICP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+xsLA+paQkPsHAQDzBwEA8gYCAO4GAgDyBgAA8wcBAPMHAQDzBwEA8gYAAPMHAQDyBgAA8gYAAPIGAgDuBgAA+kZCQPvPy8j6BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/g4ICP+Pi4j6joqI+kZAQPoGAgDyBgIA8wcBAPMHAQDyBgIA8wcBAPKGgID3FxEQ+o6KiPvPy8j6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4OCAj+CgQE/goEBP4KBAT+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/g4ICP4OCAj+CgQE/gYAAP4
5633GAAD+CgQE/g4ICP4OCAj+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+DggI/goEBP+Xk5D6lpKQ+rawsPpGQkD2BgAA86ehoPoKBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/g4ICP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+DggI/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4GAAD/p6Gg+4+LiPoKBAT+CgQE/goEBP4OCAj+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4OCAj+CgQE/goEBP4GAAD+CgQE/g4ICP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+DggI/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+DggI/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT/z8vI+8/LyPoKBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4KBAT+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4KBAT/l5OQ+6ehoPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/g4ICP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/g4ICP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT/t7Gw+wcBAPKmoqD2hoCA+paSkPuPi4j6BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+CgQE/goEBP/X09D6joqI+xcREPpGQED2BgAA8wcBAPIGAgDzBwEA8wcBAPIGAADyFhAQ+oaCgPuPi4j6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/goEBP/Py8j6VlJQ+iYgIPoGAgDzBwEA8gYAAPIGAgDuBgAA8wcBAPIGAgDyBgAA8gYCAO4GAADyBgIA7gYAAPIGAADylpCQ+tbS0PoGAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+DggI/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT/DwsI+iYgIPoGAgDyhoKA8wcBAPMHAQDyBgIA7gYAAPIGAADyBgIA7gYCAPIGAgDzBwEA8wcBAPIGAADyBgAA8gYAAPIGAADyBgIA8wcBAPIGAgD2joqI+gYAAP4GAAD+BgAA/g4ICP4OCAj+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+CgQE/gYAAP4GAAD+CgQE/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4OCAj+CgQE/goEBP4KBAT+CgQE/g4ICP4OCAj+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4GAAD/z8vI+hYSEPpmYmD3BwEA8wcBAPMHAwDzBwMA8wcBAPMHAQDyBgAA8gYCAPIGAADyBgAA8gYCAPMHAQDzBwEA8wcBAPKGgoDyBgIA8gYCAPMHAQDyBgIA8gYCAPIGAADyBgAA8kZCQPYWEhD7j4uI+goEBP4KBAT+CgQE/gYAAP4KBAT+DggI/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/gYAAP4KBAT+CgQE/g4ICP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/8/LyPoOCgj6RkBA9gYAAPIGAADyBgAA8gYCAPIGAgDyhoKA8wcBAPIGAADyBgIA8wcBAPIGAgDuBgAA8gYCAPIGAADzBwEA8gYCAPKGgoDyBgIA8gYAAPMHAQDyhoKA8oaCgPIGAADzBwEA8gYAAPIGAgDyBgIA9o6KiPoKBAT+BgAA/gYAAP4KBAT+DggI/g4ICP4KBAT+CgQE/goEBP4OCAj+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP/X09D6FhIQ+oaAgPYGAgDyBgAA8gYAAPIGAADyBgAA8gYAAPIGAgDyhoKA8gYCAPMHAQDyBgIA8wcBAPIGAADyBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgAA8gYCAPIGAgDzBwEA8oaCgPIGAgDyBgAA8gYAAPIGAADwAAAAAgYAAPImIiD2npqY+gYAAP4KBAT+DggI/goEBP4GAAD+CgQE/gYAAP4GAAD+CgQE/gYAAP4OCAj+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/s7KyPpGQkD2BgIA8wcBAPMHAQDyBgAA8gYCAPIGAgDyBgIA8wcBAPIGAgDyBgIA8gYCAPMHAQDzBwEA8gYAAPMHAQDyBgIA8wcBAPMHAQDyBgAA8wcBAPIGAADyBgAA8wcBAPIGAgDzBwEA8gYCAPIGAgDuBgIA7gYCAO4GAADwAAAAAgYCAO8HAQDzBwEA8oaAgPuHg4D6BgAA/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+DggI/goEBP4KBAT+DggI/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP+Xk5D6JiAg+gYCAPMHAQDzBwEA8wcBAPIGAgDzBwEA8wcBAPIGAADzBwEA8wcBAPIGAgDyBgIA8wcBAPMHAQDyBgIA7gYAAPMHAQDzBwEA8wcBAPIGAADzBwEA8gYAAPMHAQDzBwEA8wcBAPIGAgDzBwEA8gYCAPKGgoDyBgIA8wcBAPIGAADyBgIA7gYAAPIGAADyBgAA8AAAAAIGAADyDgoI+gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4KBAT+DggI/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/lZSUPrGwMD3BwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPKGgoDzBwEA8gYCAO8HAQDyBgIA7gYAAPIGAgDuBgAA8gYCAPIGAgDzBwEA8gYCAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAgDwAAAAAgYAAPAAAAACBgAA8gYCAO4GAgDsAAAAAwcDAPePi4j6CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4GAAD+CgQE/g4ICP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP+Pi4j6JiAg+wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPKGgoDyBgIA8wcBAPMHAQDyBgIA7gYCAO4GAgDuBgIA7wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAADyBgAA8wcBAPIGAADwAAAAAgYCAO8HAQDyBgAA8AAAAAAAAAADBwEA8gYCAO4mIiD2joqI+goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+DggI/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/s7KyPqGgID3BwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPKGgoDyBgIA8wcBAPMHAQDyBgAA8wcBAPIGAADyBgAA8wcBAPIGAgDyBgIA8gYCAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDyBgIA7gYCAO4GAgDuBgIA7gYAAPIGAgDuBgIA8gYAAPIGAgDuBgIA8hYSEPoKBAT+CgQE/goEBP4KBAT+DggI/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4OCAj+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT/l5GQ+wcBAPMHAQDzBwEA8wcBAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyhoKA8wcBAPIGAADyBgIA7gYAAPIGAgDuBgAA8wcBAPMHAQDzBwEA8gYAAPMHAQDzBwEA8oaCgPIGAgDzBwEA8gYCAPIGAgDzBwEA8gYAAPMHAQDyBgAA8gYAAPIGAgDzBwEA8gYAAPMHAQDyBgIA7wcBAPIGAgDuBgAA8gYAAPImICD7z8vI+goEBP4GAAD+CgQE/goEBP4OCAj+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/8fDwPomICD7BwEA8gYAAPMHAQDzBwEA8wcBAPIGAgDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPKGgoDyBgIA8gYCAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgAA8wcBAPMHAQDzBwEA8gYCAPIGAgDzBwEA8oaCgPIGAgDyBgIA8gYCAPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYAAPIGAADyBgIA7wcBAPIGAADzBwEA8gYCAPMHAQDyZmJg94+LiPoGAAD+CgQE/goEBP4GAAD+CgQE/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD/j4uI+iYiIPcHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8oaCgPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8oaCgPMHAQDzBwEA8wcBAPIGAgDzBwEA8gYCAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8gYCAPMHAQDyBgIA8wcBAPMHAQDzBwEA8gYCAO8HAQDzBwEA8wcBAPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAgDyBgIA8kZCQPePi4j6CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP+Pi4j6RkJA9gYAAPIGAADzBwEA8gYAAPIGAADzBwEA8wcBAPMHAQDyBgIA8oaCgPMHAQDyBgIA8oaCgPIGAgDyBgIA8oaCgPMHAQDzBwEA8wcBAPIGAgDyBgIA8wcBAPIGAADyBgIA8gYAAPIGAADyBgIA7gYCAPIGAgDyBgAA8wcBAPMHAQDyBgIA8wcBAPIGAgDyhoKA8oaCgPMHAQDyBgIA8wcBAPIGAADzBwEA8gYAAPIGAgDuBgIA8gYCAPIGAgDyBgIA8wcBAPIGAgDyBgIA8gYAAPMHAQDzBwEA8wcBAPJGQkD3j4uI+goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/g4ICP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4OCAj+CgQE/goEBP4OCAj+CgQE/g4ICP4OCAj+CgQE/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/09LSPpGQkD3BwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8gYCAPMHAQDyBgIA8gYCAPIGAgDyBgIA8gYCAPMHAQDzBwEA8gYAAPIGAgDyBgIA8gYAAPIGAADyBgAA8gYAAPIGAADyBgAA8gYCAPIGAgDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAgDyBgIA8oaCgPMHAQDyBgIA8wcBAPIGAgDuBgAA8gYAAPMHAQDyBgIA8gYCAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgIA8gYCAPIGAADyhoCA909LSPoKBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4OCAj+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/gYAAP4KBAT/j4uI+sbAwPYGAgDyBgIA7wcBAPMHAQDyBgAA8gYAAPMHAQDwAAAAAgYAAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8wcBAPIGAADzBwEA8wcBAPIGAgDyhoKA8gYAAPMHAQDyBgAA8gYAAPIGAADyBgAA8gYCAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgIA8gYAAPIGAgDyBgAA8gYAAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAgDuBgAA8wcBAPMHAQDzBwEA8mZiYPeXk5D6CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/gYAAP4KBAT+DggI/g4ICP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP+Pi4j6RkJA9gYCAPIGAADzBwEA8gYCAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAADzBwEA8gYCAPMHAQDyBgAA8gYCAPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAgDyBgIA8wcBAPIGAADzBwEA8gYAAPIGAADyBgAA8wcBAPIGAgDzBwEA8wcBAPIGAADzBwEA8gYAAPMHAQDzBwEA8wcBAPIGAADyBgAA8gYAAPIGAADyBgAA8gYCAO8HAQDzBwEA8wcBAPMHAQDyBgAA8gYAAPMHAQDzBwEA8wcBAPIGAgDyBgIA7wcBAPMHAQDzBwEA8wcBAPJGQkD3j4uI+g4ICP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/goEBP4KBAT+DggI/goEBP4KBAT+CgQE/gYAAP4GAAD+DggI/4+LiPpGQkD2BgAA8gYAAPIGAgDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAgDyBgAA8wcBAPIGAADyhoKA8gYCAPMHAQDyBgIA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8wcBAPMHAQDyBgIA8wcBAPIGAADyBgAA8wcBAPIGAgDyBgIA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgAA8gYCAPIGAADyBgIA7gYCAO4GAgDuBgAA8gYAAPIGAADzBwEA8gYAAPMHAQDzBwEA8wcBAPMHAQDzBwEA8oaCgPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDyJiIg98/LyPoKBAT+CgQE/goEBP4KBAT+DggI/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4OCAj+CgQE/goEBP4KBAT/19PQ+kZCQPYGAgDzBwEA8wcBAPMHAQDyBgAA8wcBAPIGAADyBgIA8wcBAPIGAgDzBwEA8gYCAPMHAQDyBgIA8gYAAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAPKGgoDyhoKA8oaCgPMHAQDyBgIA8wcBAPIGAgDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAgDzBwEA8gYCAPIGAADyBgIA8wcBAPIGAADyBgAA8gYAAPMHAQDyBgAA8gYAAPIGAADyBgIA7gYCAO4GAADzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAgDyhoKA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYAAPMHAQDyBgIA7hYQEPoKBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+DggI/goEBP4KBAT+CgQE/gYAAP4KBAT+NjAw+oaCgPKGgoDzBwEA8wcBAPMHAQDzBwEA8gYCAO4GAgDyBgAA8wcBAPKGgoDyBgAA8wcBAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAADyBgAA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgAA8gYAAPMHAQDyBgIA7gYAAPIGAgDuBgAA8gYAAPIGAADzBwEA8gYAAPMHAQDzBwEA8wcBAPIGAgDyhoKA8oaCgPMHAQDyBgIA8gYCAPIGAgDyBgAA8wcBAPIGAADyBgAA8gYAAPOXkZD6BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4OCgj6BgIA8oaCgPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAADyBgAA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8gYCAPIGAADyBgAA8gYAAPKGgoDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAwDyBgAA8wcBAPIGAADzBwEA8gYAAPIGAADyBgAA8gYAAPMHAQDyBgAA8wcBAPMHAQDyhoKA8oaCgPKGgoDyBgIA8gYCAPIGAADzBwEA8wcBAPMHAQDyBgAA8AAAAAIGAADyBgAA8gYCAO8HAQDyzsrI+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/g4ICP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/oaCgPoGAgDuBgAA8gYCAO4GAgDzBwEA8wcBAPMHAQDyBgAA8gYCAO4GAADyBgAA8gYCAPMHAQDzBwEA8wcBAPIGAADyBgAA8gYCAPMHAQDzBwEA8gYCAPMHAQDyBgAA8gYCAPIGAADyBgAA8gYCAPIGAgDyBgIA8wcBAPIGAADzBwEA8wcBAPIGAgDuhoKA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8gYCAPIGAADyBgAA8gYAAPMHAQDwAAAAAwcBAPMHAQDyBgAA8gYCAPIGAgDyhoKA8oaCgPKGgoDyBgIA8wcBAPIGAgDyBgIA8wcBAPMHAQDyBgIA8gYAAPMHAQDyBgIA7gYAAPMHAQDyBgAA94eDgPoGAAD+BgAA/gYAAP4GAAD+CgQE/g4ICP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD/j4uI+kZCQPYGAADyBgIA7wcBAPMHAQDyBgIA8oaCgPMHAQDyBgIA7wcBAPIGAgDzBwEA8gYAAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYAAPMHAQDyBgIA8wcBAPIGAgDyBgAA8wcBAPMHAQDyBgIA8wcBAPIGAgDvBwEA8gYAAPIGAADzBwEA8gYCAO4GAADyBgIA7gYCAPMHAQDyBgIA8gYAAPMHAQDzBwEA8wcBAPMHAQDyBgIA7wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgIA8gYCAPIGAADzBwEA8gYCAPIGAgDzBwEA8wcBAPMHAQDyBgAA8gYCAPIGAgDzBwEA8wcBAPMHAQDyBgAA8gYAAPoGAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+BgAA/goEBP4GAAD+BgAA/goEBP4KBAT/R0NA9gYCAPIGAgDzBwEA8gYCAPIGAgDzBwEA8wcBAPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYAAPIGAgDyhoKA8gYCAPIGAADzBwEA8gYAAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgAA8gYCAPMHAQDyBgAA8gYAAPMHAQDyBgAA8wcBAPIGAgDyBgAA8gYCAO4GAgDuBgAA8gYCAO4GAADzBwEA8wcBAPIGAgDzBwEA8wcBAPIGAADyBgAA8gYAAPIGAADyBgAA8gYAAPIGAgDzBwEA8wcBAPMHAQDyBgAA8gYAAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYAAPJOSkj6BgAA/gYAAP4KBAT+DggI/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4WEhD6BgAA8gYCAPIGAgDzBwEA8gYAAPMHAQDyBgIA8wcBAPIGAgDyBgIA8gYCAPIGAgDyBgIA8gYAAPIGAgDyBgIA7gYCAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8gYAAPIGAADzBwEA8wcBAPIGAADzBwEA8gYAAPIGAgDuBgAA8gYAAPMHAQDyBgIA7wcBAPIGAADzBwEA8wcBAPMHAQDyBgAA8wcBAPIGAADyBgIA8gYAAPMHAQDyBgAA8gYAAPIGAgDyBgAA8wcBAPMHAQDyBgIA8gYCAPMHAQDyBgAA8oaCgPIGAADyBgIA7wcBAPMHAQDzBwEA8gYAAPMHAQDzBwEA8wcBAPMHAQDyBgIA8gYCAO5GQED3j4uI+gYAAP4OCAj+CgQE/goEBP4OCAj+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/5eTkPoGAgDzBwEA8oaCgPIGAgDzBwEA8wcBAPMHAQDyhoKA8gYCAPIGAADzBwEA8oaCgPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYAAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8gYAAPIGAADzBwEA8wcBAPIGAgDyhoKA8wcBAPMHAQDyBgIA8gYAAPIGAgDyBgAA8oaCgPIGAADzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDyBgIA8wcBAPIGAgDzBwEA8gYAAPIGAgDzBwEA8wcBAPMHAQDyBgIA8gYCAPIGAgDzBwEA8gYCAPIGAgDyBgAA8gYAAPIGAADyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAgDzBwEA8gYAAPIGAADyJiAg+goEBP4KBAT+DggI/goEBP4
5633OCAj+CgQE/g4ICP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+CgQE/qagoPoGAADyBgAA8gYAAPIGAADyBgIA8gYCAPIGAADyBgIA8gYCAO8HAQDyBgAA8wcBAPIGAADyBgAA8gYCAPIGAADyBgIA7gYAAPIGAADyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYAAPMHAQDyBgAA8wcBAPIGAADyBgAA8gYAAPMHAQDyBgIA8wcBAPIGAgDyBgIA7wcBAPKGgoDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8gYCAPIGAgDvBwEA8gYAAPIGAgDvBwEA8gYCAPKGgoDyBgIA8gYCAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDyBgIA8gYAAPIGAADzBwEA8wcBAPAAAAACBgAA8gYCAO4GAADyBgIA7s7KyPoGAAD+BgAA/gYAAP4GAAD+CgQE/g4ICP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+lpKQ+gYCAPMHAQDzBwEA8wcBAPKGgoDyBgIA8gYCAPMHAQDzBwEA8gYCAPMHAQDzBwEA8gYCAPMHAQDzBwEA8gYAAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8gYCAPIGAADyBgAA8gYAAPIGAgDvBwEA8gYCAPMHAQDzBwEA8gYCAPIGAgDzBwEA8gYAAPIGAADyBgAA8wcBAPKGgoDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAgDyBgIA8gYCAPIGAADyBgAA8gYCAO4GAADyBgIA8wcBAPIGAgDyhoKA8gYCAPIGAADzBwEA8gYCAPMHAQDyBgIA8wcBAPIGAADzBwEA8oaCgPIGAgDyBgIA8gYAAPIGAADzBwEA8wcBAPIGAgDzBwEA8gYAAPIGAADyBgAA8iYiIPfHw8D6BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/g4ICP4OCAj+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+JiIg9wcBAPMHAQDzBwEA8gYCAO4GAgDyBgAA8wcBAPMHAQDyhoKA8wcBAPMHAQDyBgAA8gYCAPMHAQDyhoKA8wcBAPIGAADzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDyBgIA8gYCAPIGAgDyBgAA8gYCAO4GAgDvBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgAA8gYAAPIGAgDyBgIA8gYCAPIGAADzBwEA8gYCAPIGAgDzBwEA8oaCgPMHAQDzBwEA8gYCAPIGAgDzBwEA8gYAAPMHAQDyBgAA8gYAAPIGAgDyBgAA8wcBAPIGAADyBgAA8gYCAO8HAQDzBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPIOCgj6BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+DggI/goEBP4KBAT+CgQE/goEBP4OCAj+CgQE/goEBP6WkpD6BgIA8gYCAPIGAgDzBwEA8wcBAPKGgoDzBwEA8wcBAPIGAADzBwEA8gYAAPMHAQDyBgAA8wcBAPIGAgDuBgAA8gYAAPIGAADzBwEA8wcBAPIGAADzBwEA8oaCgPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgIA8gYCAPIGAADyBgIA8wcBAPIGAgDyBgAA8gYCAPIGAADyBgAA8AAAAAIGAADyBgAA8wcBAPIGAADyBgIA8gYAAPIGAADzBwEA8wcBAPIGAADyBgIA8wcBAPMHAQDzBwEA8wcBAPKGgoDyBgIA8wcBAPIGAgDyBgIA8gYCAPJGQED3z8vI+gYAAP4GAAD+DggI/goEBP4GAAD+CgQE/g4ICP4KBAT+CgQE/goEBP4KBAT+CgQE/4+LiPpmYmD3BwEA8wcBAPKGgoDyBgIA8gYCAPMHAQDzBwEA8wcBAPIGAADzBwEA8wcBAPIGAgDyBgAA8gYAAPKGgoDzBwEA8gYCAPKGgoDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPIGAgDyBgIA8wcBAPMHAQDzBwEA8gYCAPIGAADzBwEA8wcBAPIGAgDzBwEA8gYAAPMHAQDzBwEA8gYAAPMHAQDyBgIA7gYAAPIGAADyBgAA8AAAAAMHAQDzBwEA8wcBAPAAAAACBgAA8gYAAPIGAADyBgAA8gYAAPIGAgDuBgAA8gYAAPMHAQDzBwEA8gYCAPIGAgDyBgIA8gYCAPIGAgDzBwEA8wcBAPIGAADyDgoI+goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/g4KCPsHAQDyhoKA8oaCgPIGAgDzBwEA8gYCAPMHAQDyBgAA8gYAAPMHAQDzBwEA8gYAAPKGgoDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgIA8gYCAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAgDyBgIA8wcBAPMHAQDyBgIA8wcBAPIGAgDuBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDzBwEA8oaCgPIGAADyBgAA8gYAAPIGAgDuBgIA7gYCAO8HAQDyBgIA7gYCAO4GAADyBgAA8wcBAPMHAQDyBgIA7wcBAPMHAQDyBgIA8gYAAPIGAgDuBgAA8gYAAPMHAQDzBwEA8gYCAPIGAgDyBgIA8oaCgPIGAgDzBwEA8gYCAPIGAADyhoCA98/LyPoKBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/mZiYPYGAADyBgIA8oaCgPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYAAPIGAADzBwEA8gYCAPIGAgDzBwEA8oaCgPIGAgDvBwEA8gYCAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8gYCAPIGAgDzBwEA8gYCAPIGAADzBwEA8wcBAPMHAQDyBgIA8gYAAPMHAQDzBwEA8gYCAPIGAADyBgAA8wcBAPMHAQDzBwEA8gYAAPIGAgDzBwEA8wcBAPMHAQDyBgIA8gYAAPIGAADyBgIA7gYAAPIGAADyBgAA8gYAAPIGAADyBgIA8gYAAPIGAgDuBgIA7wcBAPMHAQDyBgAA8gYAAPMHAQDzBwEA8gYCAPIGAADyBgAA8gYAAPIGAADzBwEA8wcBAPIGAgDyBgIA8gYCAPIGAgDzBwEA8wcBAPIGAADyBgAA8hYSEPoKBAT+BgAA/goEBP4GAAD+CgQE/goEBP4GAAD+CgQE/gYAAP4KBAT+lpKQ+gYCAPIGAgDzBwEA8gYCAPMHAQDzBwEA8gYCAPIGAgDyBgIA8wcBAPIGAADzBwEA8gYAAPIGAgDuBgIA7wcBAPIGAgDuBgAA8gYCAPIGAADyBgAA8gYCAPMHAQDyBgIA8wcBAPIGAgDyBgIA8wcBAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDyhoKA8wcBAPMHAQDzBwEA8wcBAPIGAgDuBgAA8gYCAPMHAQDzBwEA8wcBAPIGAADzBwEA8wcBAPIGAgDzBwMA8wcBAPMHAQDzBwEA8AAAAAIGAADzBwEA8AAAAAIGAADyBgIA8gYAAPIGAgDvBwEA8oaCgPIGAgDyBgAA8wcBAPIGAADwAAAAAgYAAPMHAQDyBgAA8gYCAO4GAADzBwEA8wcBAPIGAgDyBgIA8gYCAPIGAgDzBwEA8gYAAPIGAADyBgAA8kZCQPYKBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+RkJA9wcBAPIGAgDyBgIA8gYCAPKGgoDzBwEA8wcBAPKGgoDzBwEA8wcBAPMHAQDyBgIA7gYCAO4GAADyBgIA8gYAAPIGAADyBgIA7gYCAO4GAgDyBgAA8gYCAPIGAgDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAgDyBgIA8gYCAPMHAQDyBgIA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgAA8wcBAPMHAQDyBgAA8wcBAPMHAQDyBgAA8gYCAO8HAQDzBwEA8wcBAPMHAQDzBwEA8gYCAO4GAgDvBwEA8gYAAPIGAADyBgAA8gYCAO4GAADzBwEA8wcBAPIGAADyBgAA8wcBAPMHAQDyBgIA7gYCAO8HAQDyBgAA8AAAAAIGAADyBgAA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYAAPMPCwj6BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP7Oysj6BgIA8wcBAPIGAgDyBgIA8gYCAPIGAgDyBgIA8oaCgPKGgoDyBgIA8gYCAPIGAgDvBwEA8gYAAPMHAQDyBgAA8gYAAPIGAgDvBwEA8gYAAPMHAQDzBwEA8gYAAPMHAQDzBwEA8gYCAPIGAgDyBgAA8wcBAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAgDuBgAA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8gYAAPIGAADyBgAA8wcBAPIGAgDuBgAA8gYAAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8gYAAPIGAgDuBgAA8gYCAO4GAADzBwEA8gYAAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8gYAAPIGAAD6BgAA/gYAAP4KBAT+CgQE/goEBP4OCAj+BgAA/goEBP6WkJD7BwEA8wcBAPIGAADyBgAA8gYCAPKGgoDyBgIA7wcBAPMHAQDzBwEA8wcBAPKGgoDyBgIA8gYCAO4GAADwAAAAAgYCAO4GAADzBwEA8gYAAPIGAgDwAAAAAgYAAPMHAQDyBgIA8wcBAPMHAQDzBwEA8gYAAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8gYAAPIGAADyBgIA8oaCgPMHAQDyBgAA8gYAAPMHAQDzBwEA8gYAAPIGAgDuBgAA8wcBAPIGAgDuBgAA8gYAAPIGAADyBgAA8gYAAPIGAADzBwEA8gYAAPMHAQDyBgAA8gYAAPIGAADyBgAA8gYAAPIGAADyBgIA8wcBAPIGAgDyBgIA8gYCAPIGAgDzBwEA8wcBAPIGAADyhoKA8wcBAPMHAQDzz8vI+goEBP4KBAT+CgQE/goEBP4OCAj+CgQE/4+LiPoGAgDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPKGgoDyBgIA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgAA8gYCAO4GAADzBwEA8wcBAPIGAADyBgAA8wcBAPIGAADzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAADyBgAA8gYAAPIGAgDvBwEA8gYAAPIGAADyBgAA8wcBAPKGgoDyBgAA8gYCAPIGAgDyhoKA8oaCgPIGAgDzBwEA8gYCAPMHAQDzBwEA8gYAAPIGAADyBgAA8wcBAPAAAAADBwEA8wcBAPIGAgDuBgIA7gYAAPIGAgDyBgAA8wcBAPIGAADyBgIA7gYAAPMHAQDyBgIA7gYCAO4GAgDvBwEA8wcBAPMHAQDyBgIA8gYCAPIGAgDzBwEA8oaCgPMHAQDzBwEA8wcBAPIGAADyVlJQ+goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/paSkPoGAgDyBgIA8wcBAPMHAQDyhoKA8gYCAPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYAAPIGAgDyBgIA8gYAAPIGAADyBgAA8gYCAPIGAADzBwEA8gYAAPIGAgDvBwEA8oaCgPIGAgDyBgIA8gYAAPIGAADzBwEA8gYCAPIGAgDzBwEA8gYCAPIGAgDyBgAA8oaCgPIGAADzBwEA8wcBAPMHAQDyBgAA8gYAAPIGAADyBgAA8gYCAPIGAgDzBwEA8gYCAPMHAQDzBwEA8gYCAPIGAgDyBgIA8gYCAPMHAQDzBwEA8gYAAPMHAQDyBgIA7gYAAPIGAgDuBgAA8gYAAPIGAADzBwEA8gYAAPIGAADyBgIA8wcBAPIGAADwAAAAAgYAAPIGAADyBgAA8gYAAPIGAADyBgIA7wcBAPIGAgDyBgIA8gYAAPIGAADzBwEA8gYAAPMHAQDzBwEA8wcBAPMHAQDyJiAg+goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/iYgIPoGAADyBgIA8gYAAPMHAQDyBgIA8wcBAPIGAgDyBgIA8gYCAPIGAgDzBwEA8gYAAPIGAADzBwEA8gYCAO4GAgDuBgIA7gYAAPIGAADyBgAA8gYAAPMHAQDyBgAA8wcBAPIGAADyBgAA8gYCAO4GAADyhoKA8gYCAO4GAgDsAAAAAgYCAO4GAgDuBgIA7gYAAPAAAAACBgAA8gYCAO4GAgDvBwEA8gYCAPIGAADyBgAA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgIA8gYCAPIGAgDyBgIA8gYCAPMHAQDyhoKA8wcBAPIGAgDyBgAA8wcBAPMHAQDyBgAA8AAAAAIGAgDuBgIA8wcBAPAAAAACBgAA8wcBAPIGAgDuBgAA8gYAAPIGAADzBwEA8gYAAPIGAADyBgAA8gYCAO4GAADyBgIA8gYCAO8HAQDyBgAA8wcBAPMHAQDyBgAA8wcBAPMHAQDyBgAA88/LyPoGAAD+CgQE/goEBP4KBAT/j4uI+gYAAPMHAQDzBwEA8wcBAPMHAQDyBgIA8gYCAPKGgoDyBgIA8gYCAPIGAgDyBgIA7gYCAO8HAQDyBgAA8gYAAPIGAADyBgIA7gYAAPIGAgDsAAAAAAAAAAMHAQDyBgAA8gYAAPIGAgDuBgAA8gYAAPIGAADyBgAA8wcBAPIGAgDuBgIA7gYAAPMHAQDwAAAAAgYAAPIGAgDuBgIA7gYAAPMHAQDzBwEA8gYAAPMHAQDyBgAA8gYCAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgAA8gYAAPKGgoDyBgAA8wcBAPIGAADyBgAA8gYAAPMHAQDyBgAA8gYAAPIGAADyBgIA7wcBAPIGAgDzBwEA8gYAAPAAAAACBgAA8gYAAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDyBgAA8paSkPoKBAT+CgQE/goEBP4KBAT+hoKA+gYAAPMHAQDyhoKA8gYCAPIGAADyBgIA8gYCAPMHAQDyBgIA8oaCgPIGAADyBgAA8gYAAPMHAQDzBwEA8oaCgPIGAgDyBgIA7gYCAPIGAADyBgAA8wcBAPIGAgDyhoKA8wcBAPIGAADyhoKA8gYAAPIGAADyBgIA7gYAAPIGAADyBgAA8gYAAPIGAADyBgAA8gYAAPIGAADzBwEA8gYAAPMHAQDyBgAA8gYAAPIGAADzBwEA8wcBAPIGAgDyBgAA8wcBAPIGAADzBwEA8gYAAPIGAADzBwEA8gYAAPMHAQDyBgIA8gYAAPIGAgDyBgIA8wcBAPMHAQDwAAAAAgYCAO8HAQDyBgAA8gYCAOwAAAACBgAA8gYAAPIGAADyBgAA8gYAAPIGAgDvBwEA8wcBAPMHAQDzBwEA8gYAAPIGAADyBgIA7wcBAPMHAQDzBwEA8gYAAPMHAQDyBgIA8wcBAPMHAQDzBwEA8xcREPoKBAT+CgQE/goEBP4KBAT+pqCg+wcBAPIGAgDyBgIA8wcBAPIGAADzBwEA8gYCAPIGAgDyBgIA8wcBAPMHAQDyBgIA8gYCAPIGAADyBgAA8gYCAPMHAQDyBgIA7wcBAPIGAADyBgAA8wcBAPIGAADzBwEA8wcBAPIGAgDuBgAA8gYCAO4GAADyBgAA8gYAAPIGAgDuBgAA8gYAAPIGAgDuBgAA8gYAAPIGAADyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgAA8gYAAPMHAQDzBwEA8gYAAPIGAADyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAgDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAgDzBwEA8wcBAPIGAADzBwEA8gYCAO4GAADzBwEA8gYAAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgIA8gYCAPMHAQDzBwEA8wcBAPIGAADyBgAA8kZAQPYGAAD+CgQE/goEBP4KBAT+JiIg9gYCAPIGAgDyBgIA8wcBAPIGAgDyBgAA8gYCAPMHAQDyBgAA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgAA8gYAAPIGAADyBgIA7gYAAPMHAQDyBgIA7gYCAO4GAgDsAAAAAgYCAO4GAADyBgAA8wcBAPIGAADyBgAA8gYCAO4GAADzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgIA7gYAAPIGAgDyBgIA7gYAAPAAAAACBgAA8wcBAPMHAQDzBwEA8wcBAPIGAADzBwEA8wcBAPIGAgDyBgAA8wcBAPIGAgDzBwEA8wcBAPKGgoDyBgAA8wcBAPIGAADzBwEA8AAAAAIGAADyBgIA7gYAAPMHAQDyBgAA8gYAAPIGAADyBgAA8wcBAPIGAADzBwEA8gYCAPIGAADyBgIA7wcBAPIGAgDyBgIA8gYAAPMHAQDyBgIA8gYCAPMHAQDyBgIA8wcBAPMHAQDyBgAA8wcBAPOXkZD7h4OA+8/LyPunoaD7BwEA8gYCAPIGAgDzBwEA8gYAAPIGAgDvBwEA8wcBAPIGAADyBgIA8wcBAPIGAADyBgIA8wcBAPMHAQDyBgAA8gYAAPIGAADyBgAA8gYAAPIGAgDvBwEA8wcBAPIGAgDuBgAA8gYAAPIGAgDuBgAA8wcBAPIGAgDyBgIA7gYCAO4GAADzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDuBgIA7gYCAPMHAQDyBgIA7gYAAPIGAADyBgAA8"},Gh=new Map;function K3(e){if(typeof Buffer<"u")return Uint8Array.from(Buffer.from(e,"base64"));if(typeof atob<"u"){const t=atob(e),r=new Uint8Array(t.length);for(let n=0;n<t.length;n++)r[n]=t.charCodeAt(n);return r}throw new Error("No base64 decoder available in current runtime")}function q3(e){const t=Number(e);if(!(t in kI))return null;if(!Gh.has(t)){const r=K3(kI[t]),n=H3[t],s=new Float32Array(r.buffer,r.byteOffset,n);Gh.set(t,new Float32Array(s))}return new Float32Array(Gh.get(t))}const X3=3/255,Z3=.002,J3=.99,eO=255;function Zl(e,t,r,n={}){const{x:s,y:a,width:i,height:o}=r,l=Number.isFinite(n.alphaGain)&&n.alphaGain>0?n.alphaGain:1;for(let u=0;u<o;u++)for(let p=0;p<i;p++){const d=((a+u)*e.width+(s+p))*4,c=u*i+p,g=t[c];
5633if(Math.max(0,g-X3)*l<Z3)continue;const m=Math.min(g*l,J3),B=1-m;for(let f=0;f<3;f++){const P=(e.data[d+f]-m*eO)/B;e.data[d+f]=Math.max(0,Math.min(255,Math.round(P)))}}}const tO=Object.freeze({"0.5k":Object.freeze({logoSize:48,marginRight:32,marginBottom:32}),"1k":Object.freeze({logoSize:96,marginRight:64,marginBottom:64}),"2k":Object.freeze({logoSize:96,marginRight:64,marginBottom:64}),"4k":Object.freeze({logoSize:96,marginRight:64,marginBottom:64})});function Jl(e,t,r){return r.map(([n,s,a])=>({modelFamily:e,resolutionTier:t,aspectRatio:n,width:s,height:a}))}const OI=Object.freeze([...Jl("gemini-3.x-image","0.5k",[["1:1",512,512],["1:4",256,1024],["1:8",192,1536],["2:3",424,632],["3:2",632,424],["3:4",448,600],["4:1",1024,256],["4:3",600,448],["4:5",464,576],["5:4",576,464],["8:1",1536,192],["9:16",384,688],["16:9",688,384],["21:9",792,168]]),...Jl("gemini-3.x-image","1k",[["1:1",1024,1024],["2:3",848,1264],["3:2",1264,848],["3:4",896,1200],["4:3",1200,896],["4:5",928,1152],["5:4",1152,928],["9:16",768,1376],["16:9",1376,768],["21:9",1584,672]]),...Jl("gemini-3.x-image","2k",[["1:1",2048,2048],["1:4",512,2048],["1:8",384,3072],["2:3",1696,2528],["3:2",2528,1696],["3:4",1792,2400],["4:1",2048,512],["4:3",2400,1792],["4:5",1856,2304],["5:4",2304,1856],["8:1",3072,384],["9:16",1536,2752],["16:9",2752,1536],["21:9",3168,1344]]),...Jl("gemini-3.x-image","4k",[["1:1",4096,4096],["1:4",2048,8192],["1:8",1536,12288],["2:3",3392,5056],["3:2",5056,3392],["3:4",3584,4800],["4:1",8192,2048],["4:3",4800,3584],["4:5",3712,4608],["5:4",4608,3712],["8:1",12288,1536],["9:16",3072,5504],["16:9",5504,3072],["21:9",6336,2688]]),...Jl("gemini-2.5-flash-image","1k",[["1:1",1024,1024],["2:3",832,1248],["3:2",1248,832],["3:4",864,1184],["4:3",1184,864],["4:5",896,1152],["5:4",1152,896],["9:16",768,1344],["16:9",1344,768],["21:9",1536,672]])]),rO=new Map(OI.map(e=>[`${e.width}x${e.height}`,e]));function Lc(e){const t=Number(e);if(!Number.isFinite(t))return null;const r=Math.round(t);return r>0?r:null}function nO(e,t,r){return Math.max(t,Math.min(r,e))}function GI(e){return tO[e.resolutionTier]??null}function sO(e){return`${e.logoSize}:${e.marginRight}:${e.marginBottom}`}function aO(e,t){const r=Lc(e),n=Lc(t);return!r||!n?null:rO.get(`${r}x${n}`)??null}function iO(e,t){const r=aO(e,t);return r?GI(r):null}function oO(e,t,{maxRelativeAspectRatioDelta:r=.02,maxScaleMismatchRatio:n=.12,minLogoSize:s=24,maxLogoSize:a=192,limit:i=3}={}){const o=Lc(e),l=Lc(t);if(!o||!l)return[];const u=o/l,p=OI.map(g=>{const A=GI(g);if(!A)return null;const m=o/g.width,B=l/g.height,f=(m+B)/2,h=g.width/g.height,P=Math.abs(u-h)/h,_=Math.abs(m-B)/Math.max(m,B);if(P>r||_>n)return null;const w={logoSize:nO(Math.round(A.logoSize*f),s,a),marginRight:Math.max(8,Math.round(A.marginRight*m)),marginBottom:Math.max(8,Math.round(A.marginBottom*B))},b=o-w.marginRight-w.logoSize,v=l-w.marginBottom-w.logoSize;return b<0||v<0?null:{config:w,score:P*100+_*20+Math.abs(Math.log2(Math.max(f,1e-6)))}}).filter(Boolean).sort((g,A)=>g.score-A.score),d=[],c=new Set;for(const g of p){const A=`${g.config.logoSize}:${g.config.marginRight}:${g.config.marginBottom}`;if(!c.has(A)&&(c.add(A),d.push(g.config),d.length>=i))break}return d}function zI(e,t,r){const n=[];r&&n.push(r),n.push(...oO(e,t));const s=[],a=new Set;for(const i of n){if(!i)continue;const o=sO(i);a.has(o)||(a.add(o),s.push(i))}return s}const lO=.35,FI=1e-8,Xn=(e,t,r)=>Math.max(t,Math.min(r,e));function LI(e){let t=0;for(let s=0;s<e.length;s++)t+=e[s];const r=t/e.length;let n=0;for(let s=0;s<e.length;s++){const a=e[s]-r;n+=a*a}return{mean:r,variance:n/e.length}}function Rc(e,t){if(e.length!==t.length||e.length===0)return 0;const r=LI(e),n=LI(t),s=Math.sqrt(r.variance*n.variance)*e.length;if(s<FI)return 0;let a=0;for(let i=0;i<e.length;i++)a+=(e[i]-r.mean)*(t[i]-n.mean);return a/s}function RI(e,t,r,n,s){const a=new Float32Array(s*s);for(let i=0;i<s;i++){const o=(n+i)*t+r,l=i*s;for(let u=0;u<s;u++)a[l+u]=e[o+u]}return a}function YI(e,t){const{width:r,height:n,data:s}=e,a=t.size??Math.min(t.width,t.height);if(!a||a<=0)return new Float32Array(0);if(t.x<0||t.y<0||t.x+a>r||t.y+a>n)return new Float32Array(0);const i=new Float32Array(a*a);for(let o=0;o<a;o++)for(let l=0;l<a;l++){const u=((t.y+o)*r+(t.x+l))*4;i[o*a+l]=(.2126*s[u]+.7152*s[u+1]+.0722*s[u+2])/255}return i}function uO(e){const{width:t,height:r,data:n}=e,s=new Float32Array(t*r);for(let a=0;a<s.length;a++){const i=a*4;s[a]=(.2126*n[i]+.7152*n[i+1]+.0722*n[i+2])/255}return s}function Yc(e,t,r){const n=new Float32Array(t*r);for(let s=1;s<r-1;s++)for(let a=1;a<t-1;a++){const i=s*t+a,o=-e[i-t-1]-2*e[i-1]-e[i+t-1]+e[i-t+1]+2*e[i+1]+e[i+t+1],l=-e[i-t-1]-2*e[i-t]-e[i-t+1]+e[i+t-1]+2*e[i+t]+e[i+t+1];n[i]=Math.sqrt(o*o+l*l)}return n}function NI(e,t,r,n,s){let a=0,i=0,o=0;for(let p=0;p<s;p++){const d=(n+p)*t+r;for(let c=0;c<s;c++){const g=e[d+c];a+=g,i+=g*g,o++}}if(o===0)return 0;const l=a/o,u=Math.max(0,i/o-l*l);return Math.sqrt(u)}function cO(e,t){return Yc(e,t,t)}function zh({gray:e,grad:t,width:r,height:n},s,a,i){const{x:o,y:l,size:u}=i;if(o<0||l<0||o+u>r||l+u>n)return null;const p=RI(e,r,o,l,u),d=RI(t,r,o,l,u),c=Rc(p,s),g=Rc(d,a);let A=0;if(l>
56338){const B=Math.max(0,l-u),f=Math.min(u,l-B);if(f>8){const h=NI(e,r,o,l,u),P=NI(e,r,o,B,f);P>FI&&(A=Xn(1-h/P,0,1))}}const m=Math.max(0,c)*.5+Math.max(0,g)*.3+A*.2;return{confidence:Xn(m,0,1),spatialScore:c,gradientScore:g,varianceScore:A}}function dO(e,t){const r=new Set;for(let n=e;n<=t;n+=8)r.add(n);return 48>=e&&48<=t&&r.add(48),96>=e&&96<=t&&r.add(96),[...r].sort((n,s)=>n-s)}function pO(e,t,r){return zI(e,t,r)}function Fh(e,t,r){if(e.has(r))return e.get(r);const n=r===96?t:Nc(t,96,r),s=cO(n,r),a={alpha:n,grad:s};return e.set(r,a),a}function jI(e,t,{dx:r=0,dy:n=0,scale:s=1}={}){if(t<=0)return new Float32Array(0);if(!Number.isFinite(r)||!Number.isFinite(n)||!Number.isFinite(s)||s<=0)return new Float32Array(0);if(r===0&&n===0&&s===1)return new Float32Array(e);const a=(l,u)=>{const p=Math.floor(l),d=Math.floor(u),c=l-p,g=u-d,A=Xn(p,0,t-1),m=Xn(d,0,t-1),B=Xn(p+1,0,t-1),f=Xn(d+1,0,t-1),h=e[m*t+A],P=e[m*t+B],_=e[f*t+A],w=e[f*t+B],b=h+(P-h)*c,v=_+(w-_)*c;return b+(v-b)*g},i=new Float32Array(t*t),o=(t-1)/2;for(let l=0;l<t;l++)for(let u=0;u<t;u++){const p=(u-o)/s+o+r,d=(l-o)/s+o+n;i[l*t+u]=a(p,d)}return i}function Nc(e,t,r){if(r<=0)return new Float32Array(0);if(t===r)return new Float32Array(e);const n=new Float32Array(r*r),s=(t-1)/Math.max(1,r-1);for(let a=0;a<r;a++){const i=a*s,o=Math.floor(i),l=Math.min(t-1,o+1),u=i-o;for(let p=0;p<r;p++){const d=p*s,c=Math.floor(d),g=Math.min(t-1,c+1),A=d-c,m=e[o*t+c],B=e[o*t+g],f=e[l*t+c],h=e[l*t+g],P=m+(B-m)*A,_=f+(h-f)*A;n[a*r+p]=P+(_-P)*u}}return n}function qs({imageData:e,alphaMap:t,region:r}){const n=YI(e,r);return n.length===0||n.length!==t.length?0:Rc(n,t)}function Fo({imageData:e,alphaMap:t,region:r}){const n=YI(e,r);if(n.length===0||n.length!==t.length)return 0;const s=r.size??Math.min(r.width,r.height);if(!s||s<=2)return 0;const a=Yc(n,s,s),i=Yc(t,s,s);return Rc(a,i)}function gO({processedImageData:e,alphaMap:t,position:r,residualThreshold:n=.22,originalImageData:s=null,originalSpatialMismatchThreshold:a=0}){return!!(qs({imageData:e,alphaMap:t,region:{x:r.x,y:r.y,size:r.width??r.size}})>=n||s&&qs({imageData:s,alphaMap:t,region:{x:r.x,y:r.y,size:r.width??r.size}})<=a)}function AO({imageData:e,alpha96:t,defaultConfig:r,threshold:n=lO}){const{width:s,height:a}=e,i=uO(e),o=Yc(i,s,a),l={gray:i,grad:o,width:s,height:a},u=new Map,d=pO(s,a,r).map($=>{const k=$.logoSize,W={size:k,x:s-$.marginRight-k,y:a-$.marginBottom-k};if(W.x<0||W.y<0||W.x+k>s||W.y+k>
5633a)return null;const j=Fh(u,t,k),F=zh(l,j.alpha,j.grad,W);return F?{...W,...F}:null}).filter(Boolean),c=d.reduce(($,k)=>!$||k.confidence>$.confidence?k:$,null);if(c&&c.confidence>=n+.08)return{found:!0,confidence:c.confidence,spatialScore:c.spatialScore,gradientScore:c.gradientScore,varianceScore:c.varianceScore,region:{x:c.x,y:c.y,size:c.size}};const g=r.logoSize,A=Xn(Math.round(g*.65),24,144),m=Xn(Math.min(Math.round(g*2.8),Math.floor(Math.min(s,a)*.4)),A,192),B=dO(A,m),f=Math.max(32,Math.round(g*.75)),h=Xn(r.marginRight-f,8,s-A-1),P=Xn(r.marginRight+f,h,s-A-1),_=Xn(r.marginBottom-f,8,a-A-1),w=Xn(r.marginBottom+f,_,a-A-1),b=[],v=$=>{b.push($),b.sort((k,W)=>W.adjustedScore-k.adjustedScore),b.length>5&&(b.length=5)};for(const $ of d)v({size:$.size,x:$.x,y:$.y,adjustedScore:$.confidence*Math.min(1,Math.sqrt($.size/96))});for(const $ of B){const k=Fh(u,t,$);for(let W=h;W<=P;W+=8){const j=s-W-$;if(!(j<0))for(let F=_;F<=w;F+=8){const R=a-F-$;if(R<0)continue;const L=zh(l,k.alpha,k.grad,{x:j,y:R,size:$});if(!L)continue;const Q=L.confidence*Math.min(1,Math.sqrt($/96));Q<.08||v({size:$,x:j,y:R,adjustedScore:Q})}}}let y=c??{x:s-r.marginRight-r.logoSize,y:a-r.marginBottom-r.logoSize,size:r.logoSize,confidence:0,spatialScore:0,gradientScore:0,varianceScore:0};for(const $ of b){const k=Xn($.size-10,A,m),W=Xn($.size+10,A,m);for(let j=k;j<=W;j+=2){const F=Fh(u,t,j);for(let R=$.x-8;R<=$.x+8;R+=2)if(!(R<0||R+j>s))for(let L=$.y-8;L<=$.y+8;L+=2){if(L<0||L+j>a)continue;const Q=zh(l,F.alpha,F.grad,{x:R,y:L,size:j});Q&&Q.confidence>y.confidence&&(y={x:R,y:L,size:j,...Q})}}}return{found:y.confidence>=n,confidence:y.confidence,spatialScore:y.spatialScore,gradientScore:y.gradientScore,varianceScore:y.varianceScore,region:{x:y.x,y:y.y,size:y.size}}}const Lh=5,hO=1,mO=.8;function Rh(e){return typeof ImageData<"u"&&e instanceof ImageData?new ImageData(new Uint8ClampedArray(e.data),e.width,e.height):{width:e.width,height:e.height,data:new Uint8ClampedArray(e.data)}}function Yn(e,t){let r=0,n=0;for(let s=0;s<t.height;s++)for(let a=0;a<t.width;a++){const i=((t.y+s)*e.width+(t.x+a))*4,o=e.data[i],l=e.data[i+1],u=e.data[i+2];o<=Lh&&l<=Lh&&u<=Lh&&r++,n++}return n>0?r/n:0}function UI(e,t){let r=0,n=0,s=0;for(let o=0;o<t.height;o++)for(let l=0;l<t.width;l++){const u=((t.y+o)*e.width+(t.x+l))*4,p=.2126*e.data[u]+.7152*e.data[u+1]+.0722*e.data[u+2];r+=p,n+=p*p,s++}const a=s>0?r/s:0,i=s>0?Math.max(0,n/s-a*a):0;return{meanLum:a,stdLum:Math.sqrt(i)}}function fO(e,t){const r=e.y-e.height;return r<0?null:{x:e.x,y:r,width:e.width,height:e.height}}function eu({originalImageData:e,referenceImageData:t,candidateImageData:r,position:n}){const s=t??e,a=s?fO(n):null,i=a?UI(s,a):null,o=i?UI(r,n):null,l=i&&o?Math.max(0,i.meanLum-o.meanLum-hO)/Math.max(1,i.meanLum):0,u=i&&o?Math.max(0,i.stdLum*mO-o.stdLum)/Math.max(1,i.stdLum):0,p=l>0,d=u>0;return{referenceTextureStats:i,candidateTextureStats:o,darknessPenalty:l,flatnessPenalty:u,texturePenalty:l*2+u*2,tooDark:p,tooFlat:d,hardReject:p&&d}}function tu(e,t,r){return{spatialScore:qs({imageData:e,alphaMap:t,region:{x:r.x,y:r.y,size:r.width}}),gradientScore:Fo({imageData:e,alphaMap:t,region:{x:r.x,y:r.y,size:r.width}})}}const _O=4,wO=.25,yO=.05,bO=.02,PO=.08,MO=.02;function WI(e,t){return Math.abs(e.spatialScore)+Math.max(0,e.gradientScore)*.6+(t?.texturePenalty??0)}function vO(e,t,r,n={}){const s=e&&typeof e=="object"&&"imageData"in e&&t===void 0,a=s?e.imageData:e,i=s?e.alphaMap:t,o=s?e.position:r,l=s?e:n,u=Math.max(1,l.maxPasses??_O),p=l.residualThreshold??wO,d=Math.max(0,l.startingPassIndex??0),c=Number.isFinite(l.alphaGain)&&l.alphaGain>0?l.alphaGain:1;let g=Rh(a);const A=g,m=Yn(g,o),B=Math.min(1,m+yO),f=[];let h="max-passes",P=d,_=d;for(let w=0;w<u;w++){_=d+w+1;const b=tu(g,i,o),v=eu({referenceImageData:A,candidateImageData:g,position:o}),y=Rh(g);Zl(y,i,o,{alphaGain:c});const $=tu(y,i,o),k=Yn(y,o),W=Math.abs(b.spatialScore)-Math.abs($.spatialScore),j=$.gradientScore-b.gradientScore,F=eu({referenceImageData:A,candidateImageData:y,position:o});if(k>B){h="safety-near-black";break}if(F.hardReject){h="safety-texture-collapse";break}const R=WI(b,v),L=WI($,F),Q=Math.abs($.spatialScore)>Math.abs(b.spatialScore)+.03,ne=$.gradientScore>b.gradientScore+PO,re=(F.texturePenalty??0)>(v.texturePenalty??0)+MO;if(L>R+bO&&(Q||ne||re)){h="safety-quality-regression";break}if(g=y,P=d+w+1,f.push({index:P,beforeSpatialScore:b.spatialScore,beforeGradientScore:b.gradientScore,afterSpatialScore:$.spatialScore,afterGradientScore:$.gradientScore,improvement:W,gradientDelta:j,nearBlackRatio:k}),Math.abs($.spatialScore)<=p){h="residual-low";break}}return{imageData:g,passCount:P,attemptedPassCount:_,stopReason:h,passes:f}}
5633const BO=.3,xO=.12,EO=.5,DO=.45,VI=.12,QI=40,HI=192;function Lo(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function IO({spatialScore:e,gradientScore:t}){const r=Lo(e),n=Lo(t);return r===null||n===null?{tier:"insufficient"}:r>=BO&&n>=xO?{tier:"direct-match"}:r>0||n>0?{tier:"needs-validation"}:{tier:"insufficient"}}function TO(e){if(!e||e.found!==!0)return{tier:"insufficient"};const t=Lo(e.confidence),r=Lo(e.spatialScore),n=Lo(e.gradientScore),s=Lo(e?.region?.size);return t===null||r===null||n===null||s===null?{tier:"insufficient"}:t>=EO&&r>=DO&&n>=VI&&s>=QI&&s<=HI?{tier:"direct-match"}:s>=QI&&s<=HI&&n>=VI&&(t>0||r>0)?{tier:"needs-validation"}:{tier:"insufficient"}}function jc({spatialScore:e,gradientScore:t}){return IO({spatialScore:e,gradientScore:t}).tier==="direct-match"}function Uc(e){return TO(e).tier==="direct-match"}const CO=.05,$O=.08,SO=.22,kO=.04,OO=.25,GO=.22,zO=.08,KI=[-.5,-.25,0,.25,.5],FO=[.99,1,1.01],qI=[-12,-8,-4,0,4,8,12],LO=[-12,-10,-8,-6,-4,-2,2,4,6,8,10,12];function Yh(...e){const t={};for(const r of e)!r||typeof r!="object"||Object.assign(t,r);return Object.keys(t).length>0?t:null}function XI({originalImageData:e,config:t,position:r,alpha48:n,alpha96:s,getAlphaMap:a,includeCatalogVariants:i=!0}){const o=i?zI(e.width,e.height,t):[t],l=[];for(const u of o){const p=u===t?r:{x:e.width-u.marginRight-u.logoSize,y:e.height-u.marginBottom-u.logoSize,width:u.logoSize,height:u.logoSize};if(p.x<0||p.y<0||p.x+p.width>e.width||p.y+p.height>e.height)continue;const d=jh(u.logoSize,{alpha48:n,alpha96:s,getAlphaMap:a});d&&l.push({config:u,position:p,alphaMap:d,source:u===t?"standard":"standard+catalog",provenance:u===t?null:{catalogVariant:!0}})}return l}function Nh(e,{directMatch:t=!1}={}){return e?t?"direct-match":e.source?.includes("validated")||e.accepted?"validated-match":"safe-removal":"insufficient"}function Wc(e){return e?Math.abs(e.processedSpatialScore)>GO||Math.max(0,e.processedGradientScore)>zO:!0}function jh(e,{alpha48:t,alpha96:r,getAlphaMap:n}={}){if(e===48)return t;if(e===96)return r;const s=typeof n=="function"?n(e):null;return s||(r?Nc(r,96,e):null)}function to({originalImageData:e,alphaMap:t,position:r,source:n,config:s,baselineNearBlackRatio:a,adaptiveConfidence:i=null,alphaGain:o=1,provenance:l=null}){if(!t||!r)return null;const u=tu(e,t,r),p=Rh(e);Zl(p,t,r,{alphaGain:o});const d=tu(p,t,r),c=Yn(p,r),g=c-a,A=u.spatialScore-d.spatialScore,m=d.gradientScore-u.gradientScore,B=eu({referenceImageData:e,candidateImageData:p,position:r}),f=B.texturePenalty;return{accepted:B.hardReject!==!0&&g<=CO&&A>=$O&&(Math.abs(d.spatialScore)<=SO||m<=kO),source:n,config:s,position:r,alphaMap:t,adaptiveConfidence:i,alphaGain:o,provenance:Yh(l),imageData:p,originalSpatialScore:u.spatialScore,originalGradientScore:u.gradientScore,processedSpatialScore:d.spatialScore,processedGradientScore:d.gradientScore,improvement:A,nearBlackRatio:c,nearBlackIncrease:g,gradientIncrease:m,tooDark:B.tooDark,tooFlat:B.tooFlat,hardReject:B.hardReject,texturePenalty:f,validationCost:Math.abs(d.spatialScore)+Math.max(0,d.gradientScore)*.6+Math.max(0,g)*3+f}}function RO(e){const t=e.filter(r=>r?.accepted);return t.length===0?null:(t.sort((r,n)=>r.validationCost!==n.validationCost?r.validationCost-n.validationCost:n.improvement-r.improvement),t[0])}function ro(e,t,r=.005){return t?.accepted&&(!e||t.validationCost<e.validationCost-r||Math.abs(t.validationCost-e.validationCost)<=r&&t.improvement>e.improvement+.01)?t:e}function YO({originalImageData:e,alphaMap:t,position:r,baselineSpatialScore:n,baselineGradientScore:s}){const a=r.width;if(!a||a<=8)return null;let i={spatialScore:n,gradientScore:s,shift:{dx:0,dy:0,scale:1},alphaMap:t};for(const u of FO)for(const p of KI)for(const d of KI){if(d===0&&p===0&&u===1)continue;const c=jI(t,a,{dx:d,dy:p,scale:u}),g=qs({imageData:e,alphaMap:c,region:{x:r.x,y:r.y,size:a}}),A=Fo({imageData:e,alphaMap:c,region:{x:r.x,y:r.y,size:a}}),m=Math.max(0,g)*.7+Math.max(0,A)*.3,B=Math.max(0,i.spatialScore)*.7+Math.max(0,i.gradientScore)*.3;m>B+.01&&(i={spatialScore:g,gradientScore:A,shift:{dx:d,dy:p,scale:u},alphaMap:c})}const o=i.spatialScore>=n+.01,l=i.gradientScore>=s+.01;return o||l?i:null}function NO({originalImageData:e,candidateSeeds:t,adaptiveConfidence:r=null}){if(!Array.isArray(t)||t.length===0)return null;let n=null;for(const s of t)for(const a of qI)for(const i of qI){if(i===0&&a===0)continue;const o={x:s.position.x+i,y:s.position.y+a,width:s.position.width,height:s.position.height};if(o.x<0||o.y<0||o.x+o.width>e.width||o.y+o.height>e.height)continue;const l=to({originalImageData:e,alphaMap:s.alphaMap,position:o,source:`${s.source}+local`,config:s.config,baselineNearBlackRatio:Yn(e,o),adaptiveConfidence:r,provenance:Yh(s.provenance,{localShift:!0})});l?.accepted&&(n=ro(n,l,.002))}return n}function jO({originalImageData:e,candidateSeeds:t,alpha48:r,alpha96:n,getAlphaMap:s,adaptiveConfidence:a=null}){if(!Array.isArray(t)||t.length===0)return null;let i=null;for(const o of t)for(const l of LO){const u=o.position.width+l;if(u<=24||u===o.position.width)continue;const p={x:e.width-o.config.marginRight-u,y:e.height-o.config.marginBottom-u,width:u,height:u};if(p.x<0||p.y<0||p.x+p.width>e.width||p.y+p.height>e.height)continue;const d=jh(u,{alpha48:r,alpha96:n,getAlphaMap:s});if(!d)continue;const c=to({originalImageData:e,alphaMap:d,position:p,source:`${o.source}+size`,config:{logoSize:u,marginRight:o.config.marginRight,marginBottom:o.config.marginBottom},baselineNearBlackRatio:Yn(e,p),adaptiveConfidence:a,provenance:Yh(o.provenance,{sizeJitter:!0})});c?.accepted&&(i=ro(i,c,.002))}return i}function UO({originalImageData:e,config:t,position:r,alpha48:n,alpha96:s,getAlphaMap:a,allowAdaptiveSearch:i,alphaGainCandidates:o}){let l=t.logoSize===96?s:n,u=XI({originalImageData:e,config:t,position:r,alpha48:n,alpha96:s,getAlphaMap:a,includeCatalogVariants:!1}),p=u.map(L=>to({originalImageData:e,alphaMap:L.alphaMap,position:L.position,source:L.source,config:L.config,baselineNearBlackRatio:Yn(e,L.position),provenance:L.provenance}
5633)).filter(Boolean),d=p.find(L=>L.source==="standard")??p[0]??null,c=d?.originalSpatialScore??null,g=d?.originalGradientScore??null,A=jc({spatialScore:c,gradientScore:g});!A&&(!d||Wc(d))&&(u=XI({originalImageData:e,config:t,position:r,alpha48:n,alpha96:s,getAlphaMap:a,includeCatalogVariants:!0}),p=u.map(L=>to({originalImageData:e,alphaMap:L.alphaMap,position:L.position,source:L.source,config:L.config,baselineNearBlackRatio:Yn(e,L.position),provenance:L.provenance})).filter(Boolean),d=p.find(L=>L.source==="standard")??p[0]??null,c=d?.originalSpatialScore??null,g=d?.originalGradientScore??null,A=jc({spatialScore:c,gradientScore:g}));let B=null,f=null,h=null,P=!1;const _=()=>{if(P||(P=!0,!i||!s)||(B=AO({imageData:e,alpha96:s,defaultConfig:t}),f=B?.confidence??null,!B?.region||!(Uc(B)||B.confidence>=OO)))return h;const L=B.region.size,Q={x:B.region.x,y:B.region.y,width:L,height:L},ne=jh(L,{alpha48:n,alpha96:s,getAlphaMap:a});if(!ne)throw new Error(`Missing alpha map for adaptive size ${L}`);const re={logoSize:L,marginRight:e.width-Q.x-L,marginBottom:e.height-Q.y-L};return h=to({originalImageData:e,alphaMap:ne,position:Q,source:"adaptive",config:re,baselineNearBlackRatio:Yn(e,Q),adaptiveConfidence:B.confidence,provenance:{adaptive:!0}}),h};let w=null,b="insufficient";A?(w=d,b="direct-match"):d?.accepted&&(w={...d,source:`${d.source}+validated`},b="validated-match");for(const L of p){if(!L||L===d)continue;const Q=jc({spatialScore:L.originalSpatialScore,gradientScore:L.originalGradientScore})?L:L.accepted?{...L,source:`${L.source}+validated`}:null,ne=w;w=ro(w,Q,.002),w!==ne&&w&&(b=jc({spatialScore:L.originalSpatialScore,gradientScore:L.originalGradientScore})?"direct-match":"validated-match")}if(b!=="direct-match"&&Wc(w)){const L=jO({originalImageData:e,candidateSeeds:u,alpha48:n,alpha96:s,getAlphaMap:a});if(L){const Q=w;w=ro(w,{...L,source:`${L.source}+validated`},.002),w!==Q&&w&&(b="validated-match")}}if(!(!i||!s)&&(!w||Wc(w)&&gO({processedImageData:w.imageData,alphaMap:w.alphaMap,position:w.position,originalImageData:e,originalSpatialMismatchThreshold:0}))&&_(),h){const L=Uc(B)?h:h.accepted?{...h,source:`${h.source}+validated`}:null,Q=w;w=ro(w,L,.002),w!==Q&&w&&(b=Uc(B)?"direct-match":"validated-match")}if(!w&&!Uc(B)){const L=NO({originalImageData:e,candidateSeeds:u,adaptiveConfidence:f});L&&(w={...L,source:`${L.source}+validated`},b="validated-match")}if(!w){const L=RO([d,h]);if(!L)return{selectedTrial:null,source:"skipped",alphaMap:l,position:r,config:t,adaptiveConfidence:f,standardSpatialScore:c,standardGradientScore:g,templateWarp:null,alphaGain:1,decisionTier:"insufficient"};w={...L,source:`${L.source}+validated`},b="validated-match"}let y=w;l=w.alphaMap,r=w.position,t=w.config;let $=w.source,k=b||Nh(w),W=null,j=w.alphaGain??1;const F=YO({originalImageData:e,alphaMap:l,position:r,baselineSpatialScore:y.originalSpatialScore,baselineGradientScore:y.originalGradientScore});if(F){const L=to({originalImageData:e,alphaMap:F.alphaMap,position:r,source:`${$}+warp`,config:t,baselineNearBlackRatio:Yn(e,r),adaptiveConfidence:f,provenance:y.provenance}),Q=ro(y,L);Q!==y&&(l=L.alphaMap,$=Q.source,y=Q,W=F.shift,k=Nh(Q,{directMatch:k==="direct-match"}))}let R=y;if(Wc(y))for(const L of o){const Q=to({originalImageData:e,alphaMap:l,position:r,source:`${$}+gain`,config:t,baselineNearBlackRatio:Yn(e,r),adaptiveConfidence:f,alphaGain:L,provenance:y.provenance});R=ro(R,Q)}return R!==y&&(y=R,$=R.source,j=R.alphaGain,k=Nh(R,{directMatch:k==="direct-match"})),{selectedTrial:y,source:$,alphaMap:l,position:r,config:t,adaptiveConfidence:f,standardSpatialScore:c,standardGradientScore:g,templateWarp:W,alphaGain:j,decisionTier:k}}function WO({selectedTrial:e,selectionSource:t=null}={}){return e?{candidateSource:typeof t=="string"&&t?t:typeof e.source=="string"?e.source:null,texturePenalty:Number.isFinite(e.texturePenalty)?e.texturePenalty:null,tooDark:e.tooDark===!0,tooFlat:e.tooFlat===!0,hardReject:e.hardReject===!0,usedSizeJitter:e.provenance?.sizeJitter===!0}:null}function ZI(e,t){const r=iO(e,t);return r?{...r}:e>1024&&t>1024?{logoSize:96,marginRight:64,marginBottom:64}:{logoSize:48,marginRight:32,marginBottom:32}}function Vc(e,t,r){const{logoSize:n,marginRight:s,marginBottom:a}=r;return{x:e-s-n,y:t-a-n,width:n,height:n}}function Uh(e){return e===96?{logoSize:96,marginRight:64,marginBottom:64}:{logoSize:48,marginRight:32,marginBottom:32}}function JI(e,t,r){return e.logoSize===96?r:t}function eT(e,t){return t.x>=0&&t.y>=0&&t.x+t.width<=e.width&&t.y+t.height<=e.height}function VO({imageData:e,defaultConfig:t,alpha48:r,alpha96:n,minSwitchScore:s=.25,minScoreDelta:a=.08}){if(!e||!t||!r||!n)return t;const i=Uh(48),o=t.logoSize===96?Uh(96):i,l=t.logoSize===96?i:Uh(96),u=Vc(e.width,e.height,o),p=Vc(e.width,e.height,l);if(!eT(e,u))return t;
5633const d=qs({imageData:e,alphaMap:JI(o,r,n),region:{x:u.x,y:u.y,size:u.width}});if(!eT(e,p))return o;const c=qs({imageData:e,alphaMap:JI(l,r,n),region:{x:p.x,y:p.y,size:p.width}});return c>=s&&c>d+a?l:o}const QO=.5,HO=.18,KO=.18,tT=.05,qO=.42,XO=1.2,rT=[-.25,0,.25],ZO=[.99,1,1.01],nT=[1.05,1.12,1.2,1.28,1.36,1.45,1.52,1.6,1.7,1.85,2,2.2,2.4,2.6],JO=.03,Xs=2,Qc=1,eG=8,tG=.03,rG=.03,nG=.05,sG=.18,aG=-.12,iG=.6;function no(e){return typeof ImageData<"u"&&e instanceof ImageData?new ImageData(new Uint8ClampedArray(e.data),e.width,e.height):{width:e.width,height:e.height,data:new Uint8ClampedArray(e.data)}}function oG(e){if(!e)return null;const{x:t,y:r,width:n,height:s}=e;return[t,r,n,s].every(a=>Number.isFinite(a))?{x:t,y:r,width:n,height:s}:null}function lG(e){if(!e)return null;const{logoSize:t,marginRight:r,marginBottom:n}=e;return[t,r,n].every(s=>Number.isFinite(s))?{logoSize:t,marginRight:r,marginBottom:n}:null}function sT({position:e=null,config:t=null,adaptiveConfidence:r=null,originalSpatialScore:n=null,originalGradientScore:s=null,processedSpatialScore:a=null,processedGradientScore:i=null,suppressionGain:o=null,templateWarp:l=null,alphaGain:u=1,passCount:p=0,attemptedPassCount:d=0,passStopReason:c=null,passes:g=null,source:A="standard",decisionTier:m=null,applied:B=!0,skipReason:f=null,subpixelShift:h=null,selectionDebug:P=null}={}){const _=oG(e);return{applied:B,skipReason:B?null:f,size:_?_.width:null,position:_,config:lG(t),detection:{adaptiveConfidence:r,originalSpatialScore:n,originalGradientScore:s,processedSpatialScore:a,processedGradientScore:i,suppressionGain:o},templateWarp:l??null,alphaGain:u,passCount:p,attemptedPassCount:d,passStopReason:c,passes:Array.isArray(g)?g:null,source:A,decisionTier:m,subpixelShift:h??null,selectionDebug:P}}function Wh(e){return Math.max(0,Math.min(255,Math.round(e)))}function aT({spatialScore:e,gradientScore:t,texturePenalty:r}){return Math.abs(e)+Math.max(0,t)*.6+Math.max(0,r)}function uG(e,t){const r=t+Xs*2,n=new Uint8Array(r*r);for(let s=0;s<t;s++)for(let a=0;a<t;a++){if(e[s*t+a]<JO)continue;const i=s+Xs,o=a+Xs;for(let l=-Qc;l<=Qc;l++)for(let u=-Qc;u<=Qc;u++){const p=i+l,d=o+u;p<0||d<0||p>=r||d>=r||(n[p*r+d]=255)}}return{mask:n,paddedSize:r}}function cG({sourceImageData:e,repairedImageData:t,alphaMap:r,position:n,baselineSpatialScore:s,baselineGradientScore:a}){const i=eu({referenceImageData:e,candidateImageData:t,position:n}),o=aT({spatialScore:s,gradientScore:a,texturePenalty:i.texturePenalty});if(!(s<=aG||a>=sG&&i.texturePenalty>=iG))return null;const u=n.width;if(!u||u<=8)return null;const p=no(t),{mask:d,paddedSize:c}=uG(r,u),g=Math.max(0,n.x-Xs),A=Math.max(0,n.y-Xs),m=Math.min(p.width,n.x+u+Xs),B=Math.min(p.height,n.y+u+Xs),f=m-g,h=B-A;if(f<=0||h<=0)return null;let P=no(p);const _=[[-1,0],[1,0],[0,-1],[0,1],[-1,-1],[1,-1],[-1,1],[1,1]];for(let j=0;j<eG;j++){const F=no(P);for(let R=0;R<h;R++)for(let L=0;L<f;L++){const Q=L+Math.max(0,Xs-n.x),ne=R+Math.max(0,Xs-n.y);if(Q<0||ne<0||Q>=c||ne>=c)continue;const re=ne*c+Q;if(d[re]===0)continue;const ce=g+L,ge=A+R,q=(ge*P.width+ce)*4;let V=P.data[q]*.42,U=P.data[q+1]*.42,N=P.data[q+2]*.42,oe=.42;for(const[fe,De]of _){const Ie=ce+fe,je=ge+De;if(Ie<0||je<0||Ie>=P.width||je>=P.height)continue;const Me=Ie-g,se=je-A,H=Me+Math.max(0,Xs-n.x),we=se+Math.max(0,Xs-n.y),be=H>=0&&we>=0&&H<c&&we<c&&d[we*c+H]>0,Ce=(je*P.width+Ie)*4,Se=be?.08:.12;V+=P.data[Ce]*Se,U+=P.data[Ce+1]*Se,N+=P.data[Ce+2]*Se,oe+=Se}F.data[q]=Wh(V/oe),F.data[q+1]=Wh(U/oe),F.data[q+2]=Wh(N/oe),F.data[q+3]=255}P=F}const w=tu(P,r,n),b=eu({referenceImageData:e,candidateImageData:P,position:n}),v=aT({spatialScore:w.spatialScore,gradientScore:w.gradientScore,texturePenalty:b.texturePenalty}),y=o-v>=tG,$=w.gradientScore<=a-rG,k=b.texturePenalty<i.texturePenalty-.001,W=Math.abs(w.spatialScore)<=Math.abs(s)+nG;return!y||!W||!$&&!k?null:{imageData:P,spatialScore:w.spatialScore,gradientScore:w.gradientScore}}function dG({originalScore:e,processedScore:t,suppressionGain:r}){return e>=.6&&t>=QO&&r<=HO}function pG({sourceImageData:e,alphaMap:t,position:r,alphaGain:n,originalNearBlackRatio:s,baselineSpatialScore:a,baselineGradientScore:i,baselineShift:o}){const l=r.width;if(!l||l<=8||n<XO)return null;const u=Math.min(1,s+tT),p=[n],d=Math.max(1,Number((n-.01).toFixed(2))),c=Number((n+.01).toFixed(2));d!==n&&p.push(d),c!==n&&p.push(c);const g=o?.dx??0,A=o?.dy??0,m=o?.scale??1;let B=null;for(const P of ZO){const _=Number((m*P).toFixed(4));for(const w of rT){const b=A+w;for(const v of rT){const y=g+v,$=jI(t,l,{dx:y,dy:b,scale:_});for(const k of p){const W=no(e);Zl(W,$,r,{alphaGain:k});const j=Yn(W,r);if(j>u)continue;const F=qs({imageData:W,alphaMap:$,region:{x:r.x,y:r.y,size:l}}),R=Fo({imageData:W,alphaMap:$,region:{x:r.x,y:r.y,size:l}}),L=Math.abs(F)*.6+Math.max(0,R);(!B||L<B.cost)&&(B={imageData:W,alphaMap:$,alphaGain:k,shift:{dx:y,dy:b,scale:_},spatialScore:F,gradientScore:R,nearBlackRatio:j,cost:L})}}}}if(!B)return null;const f=B.gradientScore<=i-.04,h=Math.abs(B.spatialScore)<=Math.abs(a)+.08;return!f||!h?null:B}function gG({sourceImageData:e,alphaMap:t,position:r,originalSpatialScore:n,processedSpatialScore:s,originalNearBlackRatio:a}){let i=s,o=1,l=null;const u=Math.min(1,a+tT);for(const c of nT){const g=no(e);if(Zl(g,t,r,{alphaGain:c}),Yn(g,r)>u)continue;const m=qs({imageData:g,alphaMap:t,region:{x:r.x,y:r.y,size:r.width}});m<i&&(i=m,o=c,l=g)}const p=[];for(let c=-.05;c<=.05;
5633c+=.01)p.push(Number((o+c).toFixed(2)));for(const c of p){if(c<=1||c>=3)continue;const g=no(e);if(Zl(g,t,r,{alphaGain:c}),Yn(g,r)>u)continue;const m=qs({imageData:g,alphaMap:t,region:{x:r.x,y:r.y,size:r.width}});m<i&&(i=m,o=c,l=g)}const d=s-i;return!l||d<KO?null:{imageData:l,alphaGain:o,processedSpatialScore:i,suppressionGain:n-i}}function AG(e,t={}){const r=t.adaptiveMode||"auto",n=r!=="never"&&r!=="off",s=no(e),{alpha48:a,alpha96:i}=t;if(!a||!i)throw new Error("processWatermarkImageData requires alpha48 and alpha96");const o=ZI(s.width,s.height);let u=VO({imageData:s,defaultConfig:o,alpha48:a,alpha96:i}),p=Vc(s.width,s.height,u),d=u.logoSize===96?i:a,c="standard",g=null,A=1,m=null,B=null,f=null,h=0,P=0,_=null,w=null;const b=UO({originalImageData:s,config:u,position:p,alpha48:a,alpha96:i,getAlphaMap:t.getAlphaMap,allowAdaptiveSearch:n,alphaGainCandidates:nT});if(!b.selectedTrial)return{imageData:s,meta:sT({adaptiveConfidence:b.adaptiveConfidence,originalSpatialScore:b.standardSpatialScore,originalGradientScore:b.standardGradientScore,processedSpatialScore:b.standardSpatialScore,processedGradientScore:b.standardGradientScore,suppressionGain:0,alphaGain:1,source:"skipped",decisionTier:b.decisionTier??"insufficient",applied:!1,skipReason:"no-watermark-detected",selectionDebug:null})};p=b.position,d=b.alphaMap,u=b.config,c=b.source,g=b.adaptiveConfidence,B=b.templateWarp,A=b.alphaGain,f=b.decisionTier;const v=b.selectedTrial;let y=v.imageData,$=v.originalSpatialScore,k=v.originalGradientScore;const W=qs({imageData:y,alphaMap:d,region:{x:p.x,y:p.y,size:p.width}}),j=Fo({imageData:y,alphaMap:d,region:{x:p.x,y:p.y,size:p.width}}),F=Yn(y,p),R={index:1,beforeSpatialScore:$,beforeGradientScore:k,afterSpatialScore:W,afterGradientScore:j,improvement:Math.abs($)-Math.abs(W),gradientDelta:j-k,nearBlackRatio:F},L=Math.max(1,t.maxPasses??4),Q=Math.max(0,L-1),ne=Math.abs(W)<=.25,re=Q>0&&!ne?vO({imageData:y,alphaMap:d,position:p,maxPasses:Q,startingPassIndex:1,alphaGain:A}):null;y=re?.imageData??y,h=re?.passCount??1,P=re?.attemptedPassCount??1,_=re?.stopReason??(ne?"residual-low":"max-passes"),w=[R,...re?.passes??[]],h>1&&(c=`${c}+multipass`);const ce=qs({imageData:y,alphaMap:d,region:{x:p.x,y:p.y,size:p.width}}),ge=Fo({imageData:y,alphaMap:d,region:{x:p.x,y:p.y,size:p.width}});let q=ce,V=ge,U=$-q;if(dG({originalScore:$,processedScore:q,suppressionGain:U})){const oe=Yn(y,p),fe=gG({sourceImageData:y,alphaMap:d,position:p,originalSpatialScore:$,processedSpatialScore:q,originalNearBlackRatio:oe});fe&&(y=fe.imageData,A=fe.alphaGain,q=fe.processedSpatialScore,V=Fo({imageData:y,alphaMap:d,region:{x:p.x,y:p.y,size:p.width}}),U=fe.suppressionGain,c=c==="adaptive"?"adaptive+gain":`${c}+gain`)}if(q<=.3&&V>=qO){const oe=Yn(y,p),De=pG({sourceImageData:y,alphaMap:d,position:p,alphaGain:A,originalNearBlackRatio:oe,baselineSpatialScore:q,baselineGradientScore:V,baselineShift:B??{dx:0,dy:0,scale:1}});De&&(y=De.imageData,d=De.alphaMap,A=De.alphaGain,q=De.spatialScore,V=De.gradientScore,U=$-q,c=`${c}+subpixel`,m=De.shift)}const N=cG({sourceImageData:s,repairedImageData:y,alphaMap:d,position:p,baselineSpatialScore:q,baselineGradientScore:V});return N&&(y=N.imageData,q=N.spatialScore,V=N.gradientScore,U=$-q,c=`${c}+ghost`),{imageData:y,meta:sT({position:p,config:u,adaptiveConfidence:g,originalSpatialScore:$,originalGradientScore:k,processedSpatialScore:q,processedGradientScore:V,suppressionGain:U,templateWarp:B,alphaGain:A,passCount:h,attemptedPassCount:P,passStopReason:_,passes:w,source:c,decisionTier:f,applied:!0,subpixelShift:m,selectionDebug:WO({selectedTrial:v,selectionSource:b.source})})}}function hG(e,t){if(typeof OffscreenCanvas<"u")return new OffscreenCanvas(e,t);if(typeof document<"u"){const r=document.createElement("canvas");return r.width=e,r.height=t,r}throw new Error("Canvas runtime not available")}function mG(e){const t=e.getContext("2d",{willReadFrequently:!0});if(!t)throw new Error("Failed to get 2D canvas context");return t}class Vh{constructor(){this.alphaMaps={}}static async create(){return new Vh}async getAlphaMap(t){if(t!==48&&t!==96){if(this.alphaMaps[t])return this.alphaMaps[t];const n=await this.getAlphaMap(96),s=Nc(n,96,t);return this.alphaMaps[t]=s,s}if(this.alphaMaps[t])return this.alphaMaps[t];const r=q3(t);if(!r)throw new Error(`Missing embedded alpha map for size ${t}`);return this.alphaMaps[t]=r,r}async removeWatermarkFromImage(t,r={}){const n=hG(t.width,t.height),s=mG(n);s.drawImage(t,0,0);const a=s.getImageData(0,0,n.width,n.height),i=await this.getAlphaMap(48),o=await this.getAlphaMap(96),l=AG(a,{alpha48:i,alpha96:o,adaptiveMode:r.adaptiveMode,maxPasses:r.maxPasses,getAlphaMap:u=>this.alphaMaps[u]||Nc(o,96,u)});return s.putImageData(l.imageData,0,0),n.__watermarkMeta=l.meta,n}getWatermarkInfo(t,r){const n=ZI(t,r),s=Vc(t,r,n);return{size:n.logoSize,position:s,config:n}}}const fG="extreme";function _G(e){return e==="tiny"?"tiny-migan":e===fG?"migan":"lama"}const iT="Xenova/slimsam-77-uniform",wG="briaai/RMBG-1.4",yG="Xenova/swin2SR-realworld-sr-x4-64-bsrgan-psnr",bG="ai-object-remover-models-v1",PG="ai-object-remover-migan-v1",MG="ai-object-remover-tiny-migan-v1",cr=512,ei=4,ti=64,ru=6,Ro=ti-ru*2,vG=2,BG={vision_encoder:"q8",prompt_encoder_mask_decoder:"q8"}
5633,xG=new URL("/hf/",self.location.origin).toString(),EG="https://huggingface.co/",Qh=self.location.hostname==="127.0.0.1"||self.location.hostname==="localhost";To.allowLocalModels=!1,To.remoteHost=Qh?EG:xG,To.remotePathTemplate="{model}/resolve/{revision}/",To.backends.onnx.logLevel="error",To.backends.onnx.wasm&&(To.backends.onnx.wasm.numThreads=1),Sr.logLevel="error",Sr.wasm.numThreads=1,Sr.wasm.simd=!0,Sr.wasm.wasmPaths={wasm:Q3};const DG=new URL(Qh?"https://huggingface.co/Carve/LaMa-ONNX/resolve/main/lama_fp32.onnx":"/hf/Carve/LaMa-ONNX/resolve/main/lama_fp32.onnx",self.location.origin).toString(),IG=new URL(Qh?"https://huggingface.co/andraniksargsyan/migan/resolve/main/migan_pipeline_v2.onnx":"/hf/andraniksargsyan/migan/resolve/main/migan_pipeline_v2.onnx",self.location.origin).toString(),TG=new URL("/models/migan_pipeline_v2_quint8.onnx",self.location.origin).toString();let os=null,ls=null,Zs=null,dr="wasm",Js=null,Ps=null,kn="wasm",ri=null,so="wasm",ni=null,nu=null,su=null,au=null,iu=null,ou=null,Hc=null,Kc=null,qc=null,Xc=null;function tt(e,t,r,n,s,a=0){const i={type:"status",payload:{scope:e,phase:t,stage:r,message:n,progress:a,backend:s}};self.postMessage(i)}function CG(){return Xc||(Xc=Vh.create().catch(e=>{throw Xc=null,e})),Xc}function Zc(){const t=new URL(self.location.href).searchParams.get("backend");if(t==="webgpu"||t==="wasm")return t;const r=typeof navigator<"u"?navigator.userAgent:"";return/Windows/i.test(r)?"wasm":typeof navigator<"u"&&"gpu"in navigator?"webgpu":"wasm"}function oT(){const e=new URL(self.location.href).searchParams,t=e.get("extreme-backend")??e.get("backend");return t==="webgpu"||t==="wasm"?t:qh()?"webgpu":"wasm"}function si(e){const t=ka(e);return/DXGI_ERROR_DEVICE_HUNG/i.test(t)||/Device failed at creation/i.test(t)||/device lost/i.test(t)||/device removed/i.test(t)||/webgpu/i.test(t)}function ka(e){return e instanceof Error?e.message:"Unexpected worker error."}function Hh(e,t,r,n,s){const a=new Map;return i=>{const o=i.file??i.status??"artifact",l=i.status==="done"?100:i.status==="initiate"||i.status==="download"?0:i.progress??0;a.set(o,l);const u=[...a.values()],p=u.length===0?0:u.reduce((A,m)=>A+m,0)/u.length,d=Math.round(n+(s-n)*p/100),c=i.file?.split("/").pop()??"artifact",g=i.status==="done"?`${t}: ${c} ready`:`${t}: ${c}`;tt(e,"loading",t,g,r,d)}}async function lT(e,t){const r=e.headers.get("content-length"),n=r?Number(r):null;if(!e.body){const u=await e.arrayBuffer();return t(100,u.byteLength,u.byteLength),u}const s=e.body.getReader(),a=[];let i=0;for(;;){const{done:u,value:p}=await s.read();if(u)break;if(!p)continue;a.push(p),i+=p.byteLength;const d=n?Math.min(100,Math.round(i/n*100)):0;t(d,i,n)}const o=new Uint8Array(i);let l=0;for(const u of a)o.set(u,l),l+=u.byteLength;return t(100,i,n),o.buffer}async function $G(e){if(typeof caches>"u")return null;try{return await caches.open(e)}catch{return null}}async function Kh(e){const t=await $G(e.cacheName);if(t){const a=await t.match(e.url);if(a){tt(e.scope,"loading",e.cacheReadStage,e.cacheReadMessage,e.backend,e.progressStart);const i=await lT(a,(o,l,u)=>{const p=u?`${Math.round(l/1024/1024)} / ${Math.round(u/1024/1024)} MB`:`${Math.round(l/1024/1024)} MB`;tt(e.scope,"loading",e.cacheReadStage,`Reading the ${e.modelLabel} model from local cache... ${p}`,e.backend,e.progressStart+Math.round(o*e.progressReadSpan))});return tt(e.scope,"loading",e.cacheReadStage,`${e.modelLabel} cache hit. No download is needed.`,e.backend,e.progressStart+e.progressReadSpan),i}}tt(e.scope,"loading",e.downloadStage,e.downloadMessage,e.backend,e.progressStart);const r=await fetch(e.url);if(!r.ok)throw new Error(`Unable to download model: ${r.status} ${r.statusText}`);const n=new Headers(r.headers),s=await lT(r,(a,i,o)=>{const l=o?`${Math.round(i/1024/1024)} / ${Math.round(o/1024/1024)} MB`:`${Math.round(i/1024/1024)} MB`;tt(e.scope,"loading",e.downloadStage,`Downloading the ${e.modelLabel} model... ${l}`,e.backend,e.progressStart+Math.round(a*e.progressDownloadSpan))});if(t)try{tt(e.scope,"loading",e.cacheSaveStage,e.cacheSaveMessage,e.backend,e.progressSavePoint),n.set("content-length",String(s.byteLength)),await t.put(e.url,new Response(s.slice(0),{headers:n})),tt(e.scope,"loading",e.cacheSaveStage,`The ${e.modelLabel} model is cached and will be reused next time.`,e.backend,e.progressSavePoint+1)}catch{tt(e.scope,"loading",e.cacheSaveStage,`This session can continue, but the browser could not save the ${e.modelLabel} cache.`,e.backend,e.progressSavePoint+1)}return s}async function SG(e){return Kh({backend:e,cacheName:bG,cacheReadStage:"Reading LaMa cac
5633he",cacheReadMessage:"Found a local cache. Reading the LaMa model...",cacheSaveStage:"Saving LaMa cache",cacheSaveMessage:"Saving the LaMa model to the browser cache...",downloadStage:"Downloading LaMa model",downloadMessage:"First use detected. Downloading the LaMa model...",modelLabel:"LaMa",progressStart:36,progressReadSpan:18,progressDownloadSpan:26,progressSavePoint:63,scope:"lama",url:DG})}async function kG(e){return Kh({backend:e,cacheName:PG,cacheReadStage:"Reading Extreme cache",cacheReadMessage:"Found the Extreme cache. Reading the MI-GAN detail model...",cacheSaveStage:"Saving Extreme cache",cacheSaveMessage:"Saving the MI-GAN detail model to the browser cache...",downloadStage:"Downloading Extreme model",downloadMessage:"First use detected. Downloading the MI-GAN detail model...",modelLabel:"MI-GAN",progressStart:12,progressReadSpan:20,progressDownloadSpan:34,progressSavePoint:48,scope:"general",url:IG})}async function OG(e){return Kh({backend:e,cacheName:MG,cacheReadStage:"Reading Tiny cache",cacheReadMessage:"Found the Tiny cache. Reading the smallest erase model...",cacheSaveStage:"Saving Tiny cache",cacheSaveMessage:"Saving the smallest erase model to the browser cache...",downloadStage:"Downloading Tiny model",downloadMessage:"First use detected. Downloading the tiny erase model...",modelLabel:"Tiny MI-GAN",progressStart:12,progressReadSpan:20,progressDownloadSpan:34,progressSavePoint:48,scope:"general",url:TG})}async function Jc(){return lu(dr||Zc())}async function lu(e){if(!ni||dr!==e){dr=e;const t=Hh("sam","Loading SlimSAM",dr,6,34);tt("sam","loading","Loading SlimSAM","Loading the SlimSAM model files...",dr,6),ni=Promise.all([x4.from_pretrained(iT,{device:dr,dtype:BG,progress_callback:t}),B4.from_pretrained(iT,{progress_callback:t})]).then(r=>(tt("sam","ready","Loading SlimSAM","SlimSAM is ready for mask refinement.",dr,100),r)).catch(r=>{throw ni=null,tt("sam","error","Loading SlimSAM",ka(r),dr,100),r})}return ni}async function GG(){return uT(Js||Zc())}async function uT(e){if(!nu||Js!==e){Js=e;const t=e,r=Hh("general","Loading cutout model",t,6,42);tt("general","loading","Loading cutout model","Loading the transparent background model...",t,6),nu=yM("background-removal",wG,{device:t,progress_callback:r}).then(n=>n).then(n=>(tt("general","ready","Cutout model ready","The transparent background model is ready.",t,100),n)).catch(n=>{throw nu=null,tt("general","error","Cutout model unavailable",ka(n),t,100),n})}return nu}async function zG(){return dT(Ps||cT())}function cT(){const e=new URL(self.location.href).searchParams,t=e.get("upscale-backend")??e.get("backend");return t==="webgpu"||t==="wasm"?t:qh()?"webgpu":"wasm"}async function dT(e){if(!su||Ps!==e){Ps=e;const t=e,r=Hh("general","Loading 4x model",t,6,40);tt("general","loading","Loading 4x model","Loading the 4x image enlarger...",t,6),su=yM("image-to-image",yG,{device:t,progress_callback:r}).then(n=>n).then(n=>(tt("general","ready","4x model ready","The AI Image Upscaler is ready.",t,100),n)).catch(n=>{throw su=null,tt("general","error","4x model unavailable",ka(n),t,100),n})}return su}async function FG(e){iu||(iu=SG(e).catch(r=>{throw iu=null,r}));const t={executionProviders:e==="webgpu"?["webgpu","wasm"]:["wasm"],logSeverityLevel:3};try{kn=e,tt("lama","loading","Initializing LaMa","Initializing the LaMa inference session...",e,64);const r=await iu;return tt("lama","loading","Initializing LaMa","Compiling the LaMa model...",e,76),await So.create(r,t)}catch(r){if(e!=="webgpu")throw r;kn="wasm",tt("lama","loading","Initializing LaMa","WebGPU could not initialize LaMa. Falling back to WASM...","wasm",76);const n=await iu;return So.create(n,{executionProviders:["wasm"],logSeverityLevel:3})}}async function pT(){return AT(kn||Zc())}async function LG(){qc||(qc=OG("wasm").catch(t=>{throw qc=null,t})),so="wasm",tt("general","loading","Preparing Tiny model","Initializing the tiny erase model...",so,52);const e=await qc;return tt("general","loading","Preparing Tiny model","Compiling the tiny erase model...",so,68),So.create(e,{executionProviders:["wasm"],logSeverityLevel:3})}async function gT(){return Kc||(Kc=LG().then(e=>(tt("general","ready","Tiny ready","The tiny erase model is ready.",so,100),e)).catch(e=>{throw Kc=null,tt("general","error","Tiny unavailable",ka(e),so,100),e})),Kc}async function AT(e){return(!au||kn!==e)&&(kn=e,tt("lama","loading","Preparing LaMa","Preparing the LaMa erase model...",kn,36),au=FG(kn).then(t=>(tt("lama","ready","Preparing LaMa","LaMa is ready for object removal.",kn,100),t)).catch(t=>{throw au=null,tt("lama","error","Preparing LaMa",ka(t),kn,100),t})),au}function qh(){return typeof navigator<"u"&&"gpu"in navigator}function hT(){ou=null,ri=null}function mT(e){const t=ka(e);return si(e)||/can't perform binary op on the given tensors/i.test(t)||/convg2g/i.test(t)||/generator\/model/i.test(t)||/\[add\]/i.test(t)}async function RG(e){Hc||(Hc=kG(e).catch(r=>{throw Hc=null,r})),ri=e,tt("general","loading","Preparing Extreme model","Initializing the MI-GAN detail engine for Extreme cleanup...",e,52);const t=await Hc;return tt("general","loading","Preparing Extreme model","Compiling the MI-GAN detail model...",e,68),So.create(t,{executionProviders:e==="webgpu"?["webgpu"]:["wasm"],logSeverityLevel:3})}async function ed(e){const t=e==="webgpu"&&!qh()?"wasm":e;return(!ou||ri!==t)&&(ri=t,tt("general","loading","Preparing Extreme model",t==="webgpu"?"Preparing the MI-GAN detail model for Extreme cleanup...":"Preparing the MI-GAN detail model with the stable WASM runtime...",t,8),ou=RG(t).then(r=>(tt("general","ready","Extreme ready","Extreme cleanup is ready for high-detail inpainting.",t,100),r)).catch(r=>{throw ou=null,ri=null,tt("general","error","Extreme unavailable",ka(r),t,100),r})),ou}async function fT(){const e=oT();tt("general","loading","Preparing Extreme","Preparing the high-detail cleanup engine for Extreme cleanup...",e,4);let t=e;try{await ed(e),t=ri||e}catch(r){if(e==="webgpu"&&mT(r))hT(),tt("general","loading","Falling back to WASM","WebGPU is unstable on this device. Falling back to WASM for MI-GAN...","wasm",36),await ed("wasm"),t="wasm";else throw r}return tt("general","ready","Extreme ready","Extreme cleanup is ready. You can start the MI-GAN erase now.",t,100),{backend:t,qualityMo
5633de:"extreme"}}async function YG(e){if(e!=="fast"&&e!=="extreme"&&e!=="tiny")throw new Error(`Unsupported inpaint quality mode: ${String(e)}`);const t=_G(e);return t==="migan"?fT():t==="tiny-migan"?(await gT(),{backend:so,qualityMode:e}):(await pT(),{backend:kn,qualityMode:e})}function NG(e){return new Uint8Array(e)}function Nt(e,t,r){return Math.min(Math.max(e,t),r)}function td(e){let t=0;for(const r of e)r>0&&(t+=1);return t}function ai(e,t,r){let n=t,s=r,a=-1,i=-1;for(let o=0;o<r;o+=1)for(let l=0;l<t;l+=1)e[o*t+l]!==0&&(l<n&&(n=l),l>a&&(a=l),o<s&&(s=o),o>i&&(i=o));return a<0||i<0?null:{minX:n,minY:s,maxX:a,maxY:i}}function _T(e){const t=new Set,r=[];for(const n of e){const s=`${n[0]}:${n[1]}`;t.has(s)||(t.add(s),r.push(n))}return r}function jG(e,t,r,n){const s=[];for(let o=0;o<4;o+=1)for(let l=0;l<4;l+=1){const u=Nt(Math.round(n.minX+(l+.5)/4*(n.maxX-n.minX)),0,t-1),p=Nt(Math.round(n.minY+(o+.5)/4*(n.maxY-n.minY)),0,r-1);e[p*t+u]>0&&s.push([u,p])}return s.length===0&&s.push([Math.round((n.minX+n.maxX)/2),Math.round((n.minY+n.maxY)/2)]),_T(s).slice(0,8)}function wT(e,t,r,n){const[s,a,i,o]=n,l=Math.max(8,Math.round(Math.max(t,r)*.012)),u=[[s-l,a-l],[i+l,a-l],[s-l,o+l],[i+l,o+l],[Math.round((s+i)/2),a-l],[Math.round((s+i)/2),o+l],[s-l,Math.round((a+o)/2)],[i+l,Math.round((a+o)/2)]];return _T(u.map(([p,d])=>[Nt(p,0,t-1),Nt(d,0,r-1)]).filter(([p,d])=>e[d*t+p]===0)).slice(0,6)}function UG(e,t,r){const n=ai(e,t,r);if(!n)return null;const s=Math.max(12,Math.round(Math.max(t,r)*.018)),a=[Nt(n.minX-s,0,t-1),Nt(n.minY-s,0,r-1),Nt(n.maxX+s,0,t-1),Nt(n.maxY+s,0,r-1)];return{positivePoints:jG(e,t,r,n),negativePoints:wT(e,t,r,a),box:a}}function WG(e,t,r,n,s){const a=Nt(Math.round(e),0,r-1),i=Nt(Math.round(t),0,n-1),o=Nt(Math.round(s),5,Math.round(Math.max(r,n)*.48)),l=[Nt(a-o,0,r-1),Nt(i-o,0,n-1),Nt(a+o,0,r-1),Nt(i+o,0,n-1)];return{positivePoints:[[a,i]],negativePoints:wT(new Uint8Array(r*n),r,n,l),box:l,seedPoint:[a,i]}}function VG(e,t,r,n,s,a,i){const o=Nt(Math.round(Math.min(e,r)),0,s-1),l=Nt(Math.round(Math.min(t,n)),0,a-1),u=Nt(Math.round(Math.max(e,r)),0,s-1),p=Nt(Math.round(Math.max(t,n)),0,a-1),d=Nt(Math.round(i),0,Math.round(Math.max(s,a)*.22));return{box:[Nt(o-d,0,s-1),Nt(l-d,0,a-1),Nt(u+d,0,s-1),Nt(p+d,0,a-1)],focusBox:[o,l,u,p]}}function yT(e,t,r,n,s,a){const i=e.channels,[o,l,u,p]=a.box,d=Math.max(1,u-o+1),c=Math.max(1,p-l+1),g=d*c,A=Math.max(1,td(r));let m=0,B=-1/0,f=0;for(let P=0;P<i;P+=1){let _=0,w=0,b=0;for(let W=0;W<n*s;W+=1){if(e.data[W*i+P]===0)continue;_+=1;const j=W%n,F=Math.floor(W/n);r[W]>0&&(w+=1),j>=o&&j<=u&&F>=l&&F<=p&&(b+=1)}const v=w/A,y=_===0?0:b/_,$=Math.max(0,_/g-2.6)*.07,k=Number(t[P]??0)*.52+v*.34+y*.22-$;k>B&&(m=P,B=k,f=v)}const h=new Uint8Array(n*s);for(let P=0;P<n*s;P+=1)(e.data[P*i+m]>0||r[P]>0)&&(h[P]=255);return{mask:h,coverage:f}}function QG(e,t,r,n,s,a){const i=Nt(Math.round(n),0,t-1),o=Nt(Math.round(s),0,r-1),l=o*t+i;if(e[l]>0)return[i,o];for(let u=1;u<=a;u+=1)for(let p=-u;p<=u;p+=1)for(let d=-u;d<=u;d+=1){if(Math.abs(d)!==u&&Math.abs(p)!==u)continue;const c=i+d,g=o+p;if(!(c<0||c>=t||g<0||g>=r)&&e[g*t+c]>0)return[c,g]}return null}function rd(e,t,r,n,s){const a=Nt(n,0,t-1),i=Nt(s,0,r-1),o=i*t+a;if(e[o]===0)return null;const l=new Uint8Array(e.length),u=[o];l[o]=255;let p=0,d=0,c=a,g=i,A=a,m=i;for(;p<u.length;){const B=u[p++],f=B%t,h=Math.floor(B/t);d+=1,f<c&&(c=f),f>A&&(A=f),h<g&&(g=h),h>m&&(m=h);const P=[B-1,B+1,B-t,B+t];for(const _ of P){const w=_%t,b=Math.floor(_/t);_<0||_>=e.length||w<0||w>=t||b<0||b>=r||Math.abs(w-f)+Math.abs(b-h)!==1||l[_]>0||e[_]===0||(l[_]=255,u.push(_))}}return{box:{maxX:A,maxY:m,minX:c,minY:g},mask:l,pixels:d}}function bT(e,t,r,n,s,a){const i=e.channels,[o,l]=s.seedPoint,[u,p,d,c]=s.box,g=Math.max(1,r*n),A=Math.max(1,(d-u+1)*(c-p+1)),m=Math.max(4,Math.round(Math.min(r,n)*.012));let B=null,f=null,h=-1/0,P=0;for(let w=0;w<i;w+=1){const b=new Uint8Array(r*n);for(let V=0;V<r*n;V+=1)e.data[V*i+w]>0&&(b[V]=255);const v=QG(b,r,n,o,l,m);if(!v)continue;const y=rd(b,r,n,v[0],v[1]);if(!y||y.pixels===0)continue;let $=0;for(let V=0;V<y.mask.length;V+=1){if(y.mask[V]===0)continue;const U=V%r,N=Math.floor(V/r);U>=u&&U<=d&&N>=p&&N<=c&&($+=1)}const k=y.box.maxX-y.box.minX+1,W=y.box.maxY-y.box.minY+1,j=Math.max(1,k*W),F=$/y.pixels,R=y.pixels/j,L=y.pixels/g,Q=y.pixels/A,ne=+(y.box.minX===0)+ +(y.box.maxX===r-1)+ +(y.box.minY===0)+ +(y.box.maxY===n-1),re=v[0]===o&&v[1]===l?0:.08,ce=Math.max(0,L-.34)*.9+Math.max(0,Q-1.65)*.32,ge=ne*.035,q=Number(t[w]??0)*.54+F*.28+R*.18-ce-ge-re;q>
5633h&&(h=q,B=y.mask,f=y.box,P=F)}if(!B)throw new Error("No clear object was found at that point. Try another click or increase the selection scope.");const _=Xh(B,r,n,"selection",f);return{mask:a?bn(_,r,n,vG):_,coverage:P}}function HG(e,t,r,n){const[s,a,i,o]=n,l=Math.round((s+i)/2),u=Math.round((a+o)/2);let p=null,d=1/0;for(let c=a;c<=o;c+=1)for(let g=s;g<=i;g+=1){if(g<0||g>=t||c<0||c>=r||e[c*t+g]===0)continue;const A=Math.abs(l-g)+Math.abs(u-c);A<d&&(d=A,p=[g,c])}return p}function PT(e,t,r,n,s){const a=e.channels,[i,o,l,u]=s.focusBox,[p,d,c,g]=s.box,A=Math.max(1,(l-i+1)*(u-o+1)),m=Math.max(1,(c-p+1)*(g-d+1));let B=null,f=null,h=-1/0,P=0;for(let w=0;w<a;w+=1){const b=new Uint8Array(r*n);for(let Q=0;Q<r*n;Q+=1)e.data[Q*a+w]>0&&(b[Q]=255);const v=HG(b,r,n,s.focusBox);if(!v)continue;const y=rd(b,r,n,v[0],v[1]);if(!y||y.pixels===0)continue;let $=0,k=0;for(let Q=0;Q<y.mask.length;Q+=1){if(y.mask[Q]===0)continue;const ne=Q%r,re=Math.floor(Q/r);ne>=i&&ne<=l&&re>=o&&re<=u&&($+=1),ne>=p&&ne<=c&&re>=d&&re<=g&&(k+=1)}const W=$/y.pixels,j=k/y.pixels,F=$/A,R=Math.max(0,y.pixels/m-2.4)*.11,L=Number(t[w]??0)*.5+W*.24+j*.16+F*.18-R;L>h&&(h=L,B=y.mask,f=y.box,P=W)}if(!B)throw new Error("No clear object was found inside that box. Try a tighter box or switch to click select.");return{mask:Xh(B,r,n,"selection",f),coverage:P}}function bn(e,t,r,n,s){if(n<=0)return e;const a=s??ai(e,t,r);if(!a)return e;const i=new Uint8Array(e);for(let o=a.minY;o<=a.maxY;o+=1)for(let l=a.minX;l<=a.maxX;l+=1){if(e[o*t+l]===0)continue;const u=Math.max(0,o-n),p=Math.min(r-1,o+n),d=Math.max(0,l-n),c=Math.min(t-1,l+n);for(let g=u;g<=p;g+=1){const A=g*t;for(let m=d;m<=c;m+=1)i[A+m]=255}}return i}function KG(e,t,r,n){const s=r.maxX-r.minX+1,a=r.maxY-r.minY+1,i=Math.max(1,Math.min(s,a)),l=Math.max(s,a)>=i*2.2,u=Math.max(e,t);return n==="selection"?Nt(1+Math.round(i*.015)+Number(l),1,Math.max(3,Math.min(8,Math.round(u*.005)))):Nt(2+Math.round(i*.02)+Number(l),2,Math.max(4,Math.min(12,Math.round(u*.008))))}function Xh(e,t,r,n,s){const a=s??ai(e,t,r);if(!a)return e;const i=KG(t,r,a,n);return bn(e,t,r,i,a)}function qG(e){if(e.channels!==4)throw new Error("Expected an RGBA image for cutout export.");const t=new Uint8Array(e.width*e.height);for(let r=0,n=3;r<t.length;r+=1,n+=4)t[r]=e.data[n];return t}function XG(e,t){const r=e.clone().rgba();for(let n=0,s=3;n<t.length;n+=1,s+=4)r.data[s]=t[n];return r}function ZG(e,t,r,n){const s=ai(t,r,n);if(!s)throw new Error("Unable to locate the selected subject area.");const a=s.maxX-s.minX+1,i=s.maxY-s.minY+1,o=(s.minX+s.maxX)/2,l=(s.minY+s.maxY)/2,u=Math.max(1,td(t)),p=Nt(Math.round(Math.max(a,i)*.04),4,14),d=bn(t,r,n,p,s),c=Math.max(1,td(d)),g=Nt(Math.round(a*.12),10,30),A=Nt(Math.round(i*.1),10,34),m={minX:Nt(s.minX-g,0,r-1),minY:Nt(s.minY-A,0,n-1),maxX:Nt(s.maxX+g,0,r-1),maxY:Nt(s.maxY+A,0,n-1)},B=ez(m,r,n),f=[160,128,96,64,32];let h=null,P=null,_=-1/0;for(const y of f){const $=new Uint8Array(e.length);for(let W=0;W<e.length;W+=1)e[W]>=y&&($[W]=255);const k=new Uint8Array($.length);for(let W=0;W<$.length;W+=1){if($[W]===0||k[W]>0)continue;const j=W%r,F=Math.floor(W/r),R=rd($,r,n,j,F);if(!R)continue;let L=0,Q=0,ne=0;for(let H=0;H<R.mask.length;H+=1)R.mask[H]!==0&&(k[H]=255,t[H]>0&&(L+=1),d[H]>0&&(Q+=1),B[H]>0&&(ne+=1));if(L===0&&Q===0)continue;const re=(R.box.minX+R.box.maxX)/2,ce=(R.box.minY+R.box.maxY)/2,ge=Math.hypot(re-o,ce-l),q=L/u,V=Q/c,U=R.pixels/u,N=Math.max(0,m.minX-R.box.minX),oe=Math.max(0,m.minY-R.box.minY),fe=Math.max(0,R.box.maxX-m.maxX),De=Math.max(0,R.box.maxY-m.maxY),Ie=N*1.2+oe*.8+fe*1.5+De*.8,je=Math.max(0,U-1.7),Me=Math.max(0,.52-U),se=q*12e6+V*18e5+ne*2800+y*1100-Ie*12e3-ge*520-je*22e5-Me*16e5;se>_&&(_=se,h=R.mask,P=R.box)}}if(!h||!P)throw new Error("Unable to isolate the selected subject.");const w=bn(h,r,n,Nt(Math.round(p*.8),5,16),P),b=new Uint8Array(h.length);for(let y=0;y<b.length;y+=1)w[y]>0&&d[y]>0&&(b[y]=255);const v=ai(b,r,n)||P;return{mask:h,box:v,supportMask:b}}function JG(e,t,r,n,s){const a=tz(r,n,s),i=new Uint8Array(e.length);for(let o=0;o<e.length;o+=1){if(t[o]===0||a[o]===0){i[o]=0;continue}i[o]=Math.min(e[o],a[o])}return rz(i,r,n,s)}function ez(e,t,r){const n=new Uint8Array(t*r);for(let s=e.minY;s<=e.maxY;s+=1){const a=s*t;for(let i=e.minX;i<=e.maxX;i+=1)n[a+i]=255}return n}function tz(e,t,r){const n=new Uint8Array(e.length),s=bn(e,t,r,1),a=bn(e,t,r,2),i=bn(e,t,r,3);for(let o=0;o<e.length;o+=1)e[o]>0?n[o]=255:s[o]>0?n[o]=192:a[o]>0?n[o]=92:i[o]>0&&(n[o]=28);return n}function rz(e,t,r,n){const s=new Uint8Array(e.length);for(let o=0;o<e.length;o+=1)e[o]>=64&&(s[o]=255);const a=new Uint8Array(s.length),i=new Uint8Array(e.length);for(let o=0;o<s.length;o+=1){if(s[o]===0||a[o]>0)continue;const l=o%r,u=Math.floor(o/r),p=rd(s,r,n,l,u);if(!p)continue;let d=!1;for(let c=0;c<p.mask.length;c+=1)p.mask[c]!==0&&(a[c]=255,t[c]>0&&(d=!0));if(d)for(let c=0;c<p.mask.length;c+=1)p.mask[c]>0&&(i[c]=e[c])}for(let o=0;o<e.length;o+=1)t[o]>0&&e[o]>i[o]&&(i[o]=e[o]);return i}function nz(e,t){const r=bn(t,e.width,e.height,6),n=bn(t,e.width,e.height,2);let s=0,a=0,i=0,o=0,l=0,u=0,p=0;for(let h=0,P=0;h<t.length;h+=1,P+=4){if(r[h]===0||n[h]>0)continue;const _=e.data[P],w=e.data[P+1],b=e.data[P+2];s+=_,a+=w,i+=b,o+=_*_,l+=w*w,u+=b*b,p+=1}if(!p){const h=[0,e.width-1,(e.height-1)*e.width,e.height*e.width-1];for(const P of h){const _=P*4,w=e.data[_],b=e.data[_+1],v=e.data[_+2];s+=w,a+=b,i+=v,o+=w*w,l+=b*b,u+=v*v,p+=1}}
5633const d=Math.max(1,p),c=s/d,g=a/d,A=i/d,m=Math.sqrt(Math.max(0,o/d-c*c)),B=Math.sqrt(Math.max(0,l/d-g*g)),f=Math.sqrt(Math.max(0,u/d-A*A));return{red:Math.round(c),green:Math.round(g),blue:Math.round(A),uniformity:(m+B+f)/3}}function Zh(e,t,r,n){if(r>=254)return e;const s=Math.max(r/255,.08),a=(e-(1-s)*t)/s,i=Nt(a,0,255),o=Nt((1-s)*1.6,0,1),l=n<=14?1:n<=28?.82:n<=44?.58:.3,u=o*l;return Math.round(Nt(e*(1-u)+i*u,0,255))}function sz(e,t,r){const n=nz(e,r),s=e.clone().rgba();for(let a=0,i=0;a<t.length;a+=1,i+=4){const o=t[a];if(o===0){s.data[i]=0,s.data[i+1]=0,s.data[i+2]=0,s.data[i+3]=0;continue}s.data[i]=Zh(s.data[i],n.red,o,n.uniformity),s.data[i+1]=Zh(s.data[i+1],n.green,o,n.uniformity),s.data[i+2]=Zh(s.data[i+2],n.blue,o,n.uniformity),s.data[i+3]=o}return s}function uu(e,t,r,n,s,a){const i=new Uint8Array(s*a);for(let o=0;o<a;o+=1){const l=(n+o)*t+r,u=o*s;i.set(e.subarray(l,l+s),u)}return i}function az(e,t,r){const n=bn(e,t,r,16),s=bn(e,t,r,8),a=new Uint8Array(e.length);for(let i=0;i<a.length;i+=1)n[i]>0&&s[i]===0&&(a[i]=255);return a}function MT(e,t,r,n,s,a){if(s<=n)return new Uint8Array(e.length);const i=ai(e,t,r);if(!i)return new Uint8Array(e.length);const o=bn(e,t,r,s,i),l=e,u=new Uint8Array(e.length);for(let p=0;p<u.length;p+=1)o[p]>0&&l[p]===0&&(u[p]=255);return u}function iz(e,t,r,n,s,a){const i=ai(e,n,s);if(!i)throw new Error("Mask is empty. Paint an object before inpainting.");const o=i.maxX-i.minX+1,l=i.maxY-i.minY+1,u=Nt(Math.round(Math.max(o,l)*a.paddingMultiplier),a.minPadding,Math.max(a.minPadding,Math.round(Math.max(n,s)*a.maxPaddingRatio))),p=Math.max(0,i.minX-u),d=Math.max(0,i.minY-u),c=Math.min(n-1,i.maxX+u),g=Math.min(s-1,i.maxY+u),A=c-p+1,m=g-d+1,B=Math.max(A,m),f=Math.floor((B-A)/2),h=Math.floor((B-m)/2);return{x:p,y:d,width:A,height:m,squareSize:B,offsetX:f,offsetY:h,modelMask:uu(e,n,p,d,A,m),blendMask:uu(t,n,p,d,A,m),detailMask:uu(r,n,p,d,A,m),seamRing:uu(az(t,n,s),n,p,d,A,m)}}function oz(e,t,r){const n=ai(e,t,r);if(!n)throw new Error("Mask is empty. Paint an object before inpainting.");const s=n.maxX-n.minX+1,a=n.maxY-n.minY+1,i=Math.max(48,Math.round(Math.max(s,a)*.9)),o=Math.max(0,n.minX-i),l=Math.max(0,n.minY-i),u=Math.min(t-1,n.maxX+i),p=Math.min(r-1,n.maxY+i),d=u-o+1,c=p-l+1,g=Math.max(d,c),A=Math.floor((g-d)/2),m=Math.floor((g-c)/2),B=uu(e,t,o,l,d,c);return{x:o,y:l,width:d,height:c,squareSize:g,offsetX:A,offsetY:m,mask:B}}function vT(e,t,r){const n=new Uint8ClampedArray(r.width*r.height*4);for(let s=0;s<r.height;s+=1){const a=((r.y+s)*t+r.x)*4,i=s*r.width*4;n.set(e.subarray(a,a+r.width*4),i)}return n}function BT(e,t,r,n,s,a){if(t!==s||r!==a)throw new Error("Image and mask dimensions must match.");const i=Xh(n,t,r,"inpaint"),o=oz(i,t,r),l=vT(e,t,o),u=new OffscreenCanvas(o.width,o.height),p=u.getContext("2d");if(!p)throw new Error("Unable to create the crop canvas.");p.putImageData(new ImageData(l,o.width,o.height),0,0);const d=new OffscreenCanvas(o.squareSize,o.squareSize),c=d.getContext("2d",{willReadFrequently:!0});if(!c)throw new Error("Unable to create the square crop canvas.");c.clearRect(0,0,o.squareSize,o.squareSize),c.drawImage(u,o.offsetX,o.offsetY);const g=new OffscreenCanvas(o.width,o.height),A=g.getContext("2d",{willReadFrequently:!0});if(!A)throw new Error("Unable to create the source mask canvas.");const m=A.createImageData(o.width,o.height);for(let F=0;F<o.mask.length;F+=1)m.data[F*4+3]=o.mask[F];A.putImageData(m,0,0);const B=new OffscreenCanvas(o.squareSize,o.squareSize),f=B.getContext("2d",{willReadFrequently:!0});if(!f)throw new Error("Unable to create the square mask canvas.");f.clearRect(0,0,o.squareSize,o.squareSize),f.imageSmoothingEnabled=!1,f.drawImage(g,o.offsetX,o.offsetY);const P=new OffscreenCanvas(cr,cr).getContext("2d",{willReadFrequently:!0});if(!P)throw new Error("Unable to create the inpainting canvas.");P.imageSmoothingEnabled=!0,P.drawImage(d,0,0,cr,cr);const _=P.getImageData(0,0,cr,cr).data,b=new OffscreenCanvas(cr,cr).getContext("2d",{willReadFrequently:!0});if(!b)throw new Error("Unable to access the scaled mask canvas.");b.imageSmoothingEnabled=!1,b.drawImage(B,0,0,cr,cr);const v=b.getImageData(0,0,cr,cr).data,y=new Uint8Array(cr*cr);for(let F=3,R=0;F<v.length;F+=4,R+=1)y[R]=v[F];const $=bn(y,cr,cr,3),k=new Float32Array(3*cr*cr),W=new Float32Array(cr*cr),j=cr*cr;for(let F=0;F<j;F+=1)k[F]=_[F*4]/255,k[j+F]=_[F*4+1]/255,k[j*2+F]=_[F*4+2]/255,W[F]=$[F]>0?1:0;return{imageTensor:k,maskTensor:W,crop:o}}function xT(e,t,r,n,s,a){if(t!==s||r!==a)throw new Error("Image and mask dimensions must match.");const i=t*r,o=new Uint8Array(3*i),l=new Uint8Array(i);for(let u=0;u<i;u+=1){const p=u*4;o[u]=e[p],o[i+u]=e[p+1],o[i*2+u]=e[p+2],l[u]=n[u]>0?0:255}return{imageTensor:o,maskTensor:l}}function lz(e,t,r){const n=new Float32Array(e.length),s=bn(e,t,r,2),a=bn(e,t,r,5),i=bn(e,t,r,10);for(let o=0;o<e.length;o+=1)e[o]>0?n[o]=1:s[o]>0?n[o]=.78:a[o]>0?n[o]=.44:i[o]>0&&(n[o]=.16);return n}function cu(e,t,r,n,s){const a=Nt(n,0,t-1),o=(Nt(s,0,r-1)*t+a)*4;return e[o]*.299+e[o+1]*.587+e[o+2]*.114}function ET(e,t,r,n,s){const a=cu(e,t,r,n,s),i=cu(e,t,r,n-1,s),o=cu(e,t,r,n+1,s),l=cu(e,t,r,n,s-1),u=cu(e,t,r,n,s+1);return(Math.abs(a-i)+Math.abs(a-o)+Math.abs(a-l)+Math.abs(a-u))*.5}function uz(e,t,r){const n=new Uint8ClampedArray(e);for(let s=0;s<r.length;s+=1){if(r[s]===0)continue;const a=s*4;for(let i=0;i<3;
5633i+=1){const o=n[a+i],l=t[a+i],u=o-l;n[a+i]=xn(l+Nt(u,-28,28))}}return n}function cz(e,t,r,n){const s=new Uint8ClampedArray(e),a=lz(r.blendMask,r.width,r.height);for(let i=0;i<r.height;i+=1)for(let o=0;o<r.width;o+=1){const l=i*r.width+o,u=a[l];if(u===0)continue;const p=l*4,d=((r.y+i)*n+(r.x+o))*4;s[d]=xn(s[d]*(1-u)+t[p]*u),s[d+1]=xn(s[d+1]*(1-u)+t[p+1]*u),s[d+2]=xn(s[d+2]*(1-u)+t[p+2]*u),s[d+3]=255}return s}function dz(e,t,r,n,s=92,a=!0){const i=new OffscreenCanvas(cr,cr),o=i.getContext("2d");if(!o)throw new Error("Unable to create the output staging canvas.");o.putImageData(new ImageData(new Uint8ClampedArray(t),cr,cr),0,0);const u=new OffscreenCanvas(r.squareSize,r.squareSize).getContext("2d",{willReadFrequently:!0});if(!u)throw new Error("Unable to create the square output canvas.");a&&tt("general","running","Restoring local detail","Restoring the repaired region to the original local resolution...",kn,s),u.imageSmoothingEnabled=!0,u.drawImage(i,0,0,r.squareSize,r.squareSize);const p=u.getImageData(r.offsetX,r.offsetY,r.width,r.height).data,d=new Uint8ClampedArray(e),c=bn(r.mask,r.width,r.height,2),g=bn(r.mask,r.width,r.height,8);for(let A=0;A<r.height;A+=1)for(let m=0;m<r.width;m+=1){const B=A*r.width+m;let f=0;if(r.mask[B]>0?f=1:c[B]>0?f=.72:g[B]>0&&(f=.28),f===0)continue;const h=B*4,P=((r.y+A)*n+(r.x+m))*4;d[P]=xn(d[P]*(1-f)+p[h]*f),d[P+1]=xn(d[P+1]*(1-f)+p[h+1]*f),d[P+2]=xn(d[P+2]*(1-f)+p[h+2]*f),d[P+3]=255}return d}async function pz(e,t,r,n,s,a,i=!1){const o=async()=>{const c=await pT();i&&tt("general","running","Cropping repair region","Cropping the region around the mask while preserving image detail...",kn,46);const g=BT(e,t,r,n,s,a);i&&tt("general","running","Running repair model","LaMa is generating new pixels for the erased area...",kn,74);const A=await c.run({image:new An("float32",g.imageTensor,[1,3,cr,cr]),mask:new An("float32",g.maskTensor,[1,1,cr,cr])});return{backend:kn||"wasm",crop:g.crop,results:A}};let l;try{l=await o()}catch(c){if(kn==="webgpu"&&si(c))au=null,kn="wasm",i&&tt("lama","loading","Falling back to WASM","LaMa WebGPU failed on this device. Retrying with WASM...","wasm",74),l=await(async()=>{const g=await AT("wasm");i&&tt("general","running","Cropping repair region","Re-preparing the local repair region with WASM...","wasm",52);const A=BT(e,t,r,n,s,a);i&&tt("general","running","Running repair model","Retrying LaMa repair with WASM...","wasm",78);const m=await g.run({image:new An("float32",A.imageTensor,[1,3,cr,cr]),mask:new An("float32",A.maskTensor,[1,1,cr,cr])});return{backend:"wasm",crop:A.crop,results:m}})();else throw c}const u=l.results.output??Object.values(l.results)[0];if(!(u instanceof An))throw new Error("The inpainting model did not return a valid tensor.");i&&tt("general","running","Formatting model output","Converting the LaMa output tensor into an image...",l.backend,88);const p=Az(u),d=dz(e,p,l.crop,t,92,i);return{backend:l.backend,image:d}}async function du(e,t,r,n=kn){const s=new OffscreenCanvas(t,r),a=s.getContext("2d");if(!a)throw new Error("Unable to create the final output canvas.");const i=new Uint8ClampedArray(e.length);if(i.set(e),a.putImageData(new ImageData(i,t,r),0,0),tt("general","running","Encoding result image","Encoding the final result image...",n||"wasm",97),!("convertToBlob"in s))throw new Error("OffscreenCanvas.convertToBlob is not available in this browser.");return s.convertToBlob({type:"image/png"})}async function gz(e){if(!("convertToBlob"in e)||typeof e.convertToBlob!="function")throw new Error("OffscreenCanvas.convertToBlob is not available in this browser.");return e.convertToBlob({type:"image/png"})}function xn(e){return Math.max(0,Math.min(255,Math.round(e)))}function Az(e){const{dims:t,data:r,type:n}=e;let s=0,a=0,i=0,o=null;if(t.length===4&&t[0]===1?t[1]===1||t[1]===3?(s=t[1],a=t[2],i=t[3],o="chw"):(t[3]===1||t[3]===3)&&(s=t[3],a=t[1],i=t[2],o="hwc"):t.length===3&&(t[0]===1||t[0]===3?(s=t[0],a=t[1],i=t[2],o="chw"):(t[2]===1||t[2]===3)&&(s=t[2],a=t[0],i=t[1],o="hwc")),!o||i!==cr||a!==cr)throw new Error(`Unexpected LaMa output shape: [${t.join(", ")}]. Expected RGB tensor at 512x512.`);const l=r;let u=0;for(let g=0;g<l.length;g+=1){const A=Math.abs(Number(l[g]));A>u&&(u=A)}const p=n.startsWith("float")&&u<=1.5,d=new Uint8ClampedArray(i*a*4),c=i*a;for(let g=0;g<a;g+=1)for(let A=0;A<i;A+=1){const m=g*i+A;let B=0,f=0,h=0;if(o==="chw")B=Number(l[m]),f=s>1?Number(l[c+m]):B,h=s>2?Number(l[c*2+m]):f;else{const _=m*s;B=Number(l[_]),f=s>1?Number(l[_+1]):B,h=s>2?Number(l[_+2]):f}const P=m*4;d[P]=xn(p?B*255:B),d[P+1]=xn(p?f*255:f),d[P+2]=xn(p?h*255:h),d[P+3]=255}return d}function DT(e){const{dims:t,data:r,type:n}=e;let s=0,a=0,i=0,o=null;if(t.length===4&&t[0]===1?t[1]===1||t[1]===3?(s=t[1],a=Number(t[2]),i=Number(t[3]),o="chw"):(t[3]===1||t[3]===3)&&(s=t[3],a=Number(t[1]),i=Number(t[2]),o="hwc"):t.length===3&&(t[0]===1||t[0]===3?(s=t[0],a=Number(t[1]),i=Number(t[2]),o="chw"):(t[2]===1||t[2]===3)&&(s=t[2],a=Number(t[0]),i=Number(t[1]),o="hwc")),!o||i<=0||a<=0)throw new Error(`Unexpected MI-GAN output shape: [${t.join(", ")}].`);const l=r,u=i*a,p=new Uint8ClampedArray(i*a*4),d=n.startsWith("float");for(let c=0;c<u;c+=1){let g=0,A=0,m=0;if(o==="chw")g=Number(l[c]),A=s>1?Number(l[u+c]):g,m=s>2?Number(l[u*2+c]):A;else{const f=c*s;g=Number(l[f]),A=s>1?Number(l[f+1]):g,m=s>2?Number(l[f+2]):A}const B=c*4;p[B]=xn(d?g*255:g),p[B+1]=xn(d?A*255:A),p[B+2]=xn(d?m*255:m),p[B+3]=255}return p}function IT(e,t,r,n=320){const s=[];for(let o=0;o<r;o+=1)for(let l=0;l<t;l+=1)e[o*t+l]>0&&s.push({x:l,y:o});if(s.length<=n)return s;const a=[],i=s.length/n;for(let o=0;o<n;o+=1)a.push(s[Math.floor(o*i)]);return a}function Jh(e,t){const r=e.map(s=>[...s]),n=[...t];for(let s=0;s<3;s+=1){let a=s;for(let o=s+1;o<3;o+=1)Math.abs(r[o]?.[s]??0)>
5633Math.abs(r[a]?.[s]??0)&&(a=o);if(Math.abs(r[a]?.[s]??0)<1e-6)return null;a!==s&&([r[s],r[a]]=[r[a],r[s]],[n[s],n[a]]=[n[a],n[s]]);const i=r[s]?.[s]??1;for(let o=s;o<3;o+=1)r[s][o]/=i;n[s]/=i;for(let o=0;o<3;o+=1){if(o===s)continue;const l=r[o]?.[s]??0;if(l){for(let u=s;u<3;u+=1)r[o][u]-=l*(r[s]?.[u]??0);n[o]-=l*(n[s]??0)}}}return{bias:n[2]??0,x:n[0]??0,y:n[1]??0}}function hz(e,t,r){let n=0,s=0,a=0,i=0,o=0,l=0,u=0,p=0,d=0,c=0,g=0,A=0,m=0,B=0;for(const b of r){const v=(b.y*t+b.x)*4,y=e[v]??0,$=e[v+1]??0,k=e[v+2]??0;n+=b.x,s+=b.y,a+=b.x*b.x,i+=b.y*b.y,o+=b.x*b.y,l+=y,u+=$,p+=k,d+=b.x*y,c+=b.y*y,g+=b.x*$,A+=b.y*$,m+=b.x*k,B+=b.y*k}const f=Math.max(1,r.length),h=[[a,o,n],[o,i,s],[n,s,f]],P=Jh(h,[d,c,l])??{bias:l/f,x:0,y:0},_=Jh(h,[g,A,u])??{bias:u/f,x:0,y:0};return{blue:Jh(h,[m,B,p])??{bias:p/f,x:0,y:0},green:_,red:P}}function em(e,t,r){return e.x*t+e.y*r+e.bias}function TT(e,t,r,n,s,a,i){let o=0,l=0,u=0;for(const p of s){const d=p.x+a,c=p.y+i;if(d<0||d>=r||c<0||c>=n||t[c*r+d]>0)continue;const g=(p.y*r+p.x)*4,A=(c*r+d)*4;o+=Math.abs((e[g]??0)-(e[A]??0))+Math.abs((e[g+1]??0)-(e[A+1]??0))+Math.abs((e[g+2]??0)-(e[A+2]??0)),l+=Math.abs(ET(e,r,n,p.x,p.y)-ET(e,r,n,d,c)),u+=1}return u<Math.max(24,Math.round(s.length*.18))?null:{dx:a,dy:i,score:o/(u*3)+l/u*.55+Math.hypot(a,i)*.02+(1-u/Math.max(1,s.length))*18,valid:u}}function mz(e,t,r,n,s){const a=Nt(Math.round(Math.max(r,n)*.32),16,128),i=a>80?8:4,o=[];for(let p=-a;p<=a;p+=i)for(let d=-a;d<=a;d+=i){if(Math.abs(d)+Math.abs(p)<i)continue;const c=TT(e,t,r,n,s,d,p);c&&o.push(c)}const l=o.sort((p,d)=>p.score-d.score).slice(0,8),u=new Map;for(const p of l)for(let d=p.dy-i;d<=p.dy+i;d+=2)for(let c=p.dx-i;c<=p.dx+i;c+=2){if(Math.abs(c)+Math.abs(d)<2)continue;const g=TT(e,t,r,n,s,c,d);if(!g)continue;const A=`${c}:${d}`,m=u.get(A);(!m||g.score<m.score)&&u.set(A,g)}return[...u.values()].sort((p,d)=>p.score-d.score).slice(0,5)}function fz(e,t,r,n,s=1){let a=new Uint8ClampedArray(e);for(let i=0;i<s;i+=1){const o=new Uint8ClampedArray(a);for(let l=0;l<n;l+=1)for(let u=0;u<r;u+=1){const p=l*r+u;if(t[p]===0)continue;const d=p*4;let c=a[d]*.58,g=a[d+1]*.58,A=a[d+2]*.58,m=.58;const B=[[u-1,l],[u+1,l],[u,l-1],[u,l+1]];for(const[f,h]of B){if(f<0||f>=r||h<0||h>=n)continue;const P=(h*r+f)*4,_=t[h*r+f]>0?.105:.155;c+=a[P]*_,g+=a[P+1]*_,A+=a[P+2]*_,m+=_}o[d]=xn(c/m),o[d+1]=xn(g/m),o[d+2]=xn(A/m),o[d+3]=255}a=o}return a}function _z(e,t,r,n,s,a){if(t!==s||r!==a)throw new Error("Image and mask dimensions must match.");const i=bn(n,t,r,2),o=bn(n,t,r,1),l=iz(n,i,o,t,r,{maxPaddingRatio:.42,minPadding:28,paddingMultiplier:.92}),u=vT(e,t,l),p=MT(l.modelMask,l.width,l.height,0,10),d=IT(p,l.width,l.height),c=d.length>0?d:IT(MT(l.modelMask,l.width,l.height,0,6),l.width,l.height);if(c.length===0)return e;const g=hz(u,l.width,c),A=mz(u,l.modelMask,l.width,l.height,c),m=new Uint8ClampedArray(u);for(let h=0;h<l.height;h+=1)for(let P=0;P<l.width;P+=1){const _=h*l.width+P;if(l.modelMask[_]===0)continue;const w=_*4;let b=em(g.red,P,h)*.22,v=em(g.green,P,h)*.22,y=em(g.blue,P,h)*.22,$=.22;for(const k of A){const W=P+k.dx,j=h+k.dy;if(W<0||W>=l.width||j<0||j>
5633=l.height||l.modelMask[j*l.width+W]>0)continue;const F=(j*l.width+W)*4,R=1/(k.score+1)*(1/(1+Math.hypot(k.dx,k.dy)*.03));b+=(u[F]??0)*R,v+=(u[F+1]??0)*R,y+=(u[F+2]??0)*R,$+=R}m[w]=xn(b/$),m[w+1]=xn(v/$),m[w+2]=xn(y/$),m[w+3]=255}const B=fz(m,l.modelMask,l.width,l.height,2),f=uz(B,u,l.seamRing);return cz(e,f,l,t)}async function wz(e,t,r,n,s,a){const i=ri||oT();let o=i,l;try{l=await ed(i),o=ri||i}catch(A){if(i==="webgpu"&&mT(A))hT(),tt("general","loading","Falling back to WASM","WebGPU is unstable on this device. Falling back to WASM for MI-GAN...","wasm",22),l=await ed("wasm"),o="wasm";else throw A}tt("general","running","Extreme MI-GAN","Running the high-detail cleanup pass on the full image...",o,18);const u=xT(e,t,r,n,s,a),p=l.inputNames[0]||"image",d=l.inputNames[1]||"mask",c=await l.run({[p]:new An("uint8",u.imageTensor,[1,3,r,t]),[d]:new An("uint8",u.maskTensor,[1,1,r,t])}),g=c.result??Object.values(c)[0];if(!(g instanceof An))throw new Error("The MI-GAN pipeline did not return a valid tensor.");return tt("general","running","Extreme MI-GAN","Formatting the MI-GAN result for download...",o,92),{backend:o,image:DT(g),pipeline:["migan"],qualityMode:"extreme",extremeDiagnostics:{candidateCount:1,usedTiles:!1}}}async function yz(e,t,r,n,s,a){const i=await gT(),o=so;tt("general","running","Tiny MI-GAN","Running the tiny cleanup model...",o,18);const l=xT(e,t,r,n,s,a),u=i.inputNames[0]||"image",p=i.inputNames[1]||"mask",d=await i.run({[u]:new An("uint8",l.imageTensor,[1,3,r,t]),[p]:new An("uint8",l.maskTensor,[1,1,r,t])}),c=d.result??Object.values(d)[0];if(!(c instanceof An))throw new Error("The Tiny MI-GAN pipeline did not return a valid tensor.");return tt("general","running","Tiny MI-GAN","Formatting the tiny result for download...",o,92),{backend:o,image:DT(c),pipeline:["migan"],qualityMode:"tiny",extremeDiagnostics:{candidateCount:1,usedTiles:!1}}}async function bz(e){tt("general","running","Preparing image","Reading the image and preparing the smart mask...",dr,2);try{const[t,r]=await Jc(),n=t,s=r;tt("general","running","Parsing image","Parsing the image size and pixels...",dr,38),os=await ga.read(e),tt("general","running","Extracting features","Extracting image embeddings...",dr,54),ls=await s(os),Zs=await n.get_image_embeddings(ls)}catch(t){if(dr==="webgpu"&&si(t)){ni=null,dr="wasm",tt("sam","loading","Falling back to WASM","WebGPU is unstable on this device. Falling back to WASM for SlimSAM...","wasm",40);const[r,n]=await lu("wasm"),s=r,a=n;tt("general","running","Parsing image","Parsing the image size and pixels...","wasm",46),os=await ga.read(e),tt("general","running","Extracting features","Extracting image embeddings...","wasm",62),ls=await a(os),Zs=await s.get_image_embeddings(ls)}else throw t}return tt("general","ready","Image ready","The image is ready. Brush over the area you want to erase.",dr,100),{backend:dr}}async function Pz(e,t,r,n,s,a){if(e!==n||t!==s)throw new Error("The subject mask does not match the current image.");const i=new ga(new Uint8ClampedArray(r),e,t,4),o=new Uint8Array(a);if(!td(o))throw new Error("Select the subject you want to keep before extracting the PNG.");tt("general","running","Preparing cutout","Preparing the transparent background pipeline...",Js||Zc(),8);let l;try{l=await GG()}catch(h){if(Js==="webgpu"&&si(h))nu=null,Js="wasm",tt("general","loading","Falling back to WASM","The cutout model WebGPU runtime failed. Retrying with WASM...","wasm",24),l=await uT("wasm");else throw h}
5633tt("general","running","Extracting alpha matte","Generating the transparent subject matte...",Js||"wasm",48);const[u]=await l(i),p=qG(u),d=ZG(p,o,e,t),c=JG(p,d.mask,o,e,t);tt("general","running","Polishing edge","Cleaning the cutout edge and removing background contamination...",Js||"wasm",72);const g=sz(XG(i,c),c,d.mask),A=d.box;if(!A)throw new Error("Unable to isolate the selected subject.");const m=Nt(Math.round(Math.max(A.maxX-A.minX+1,A.maxY-A.minY+1)*.06),12,96),B=await g.crop([A.minX-m,A.minY-m,A.maxX+m,A.maxY+m]);tt("general","running","Exporting cutout","Encoding the transparent PNG...",Js||"wasm",88);const f=await B.toBlob("image/png");return tt("general","ready","Cutout complete","Transparent background extraction is complete. Review the result and download the PNG.",Js||"wasm",100),{width:B.width,height:B.height,imageBlob:f,backend:Js||"wasm"}}function Mz(e,t,r,n,s){const a=Math.min(Ro,t-n),i=Math.min(Ro,r-s),o=new Uint8Array(ti*ti*3);for(let l=0;l<ti;l+=1){const u=Nt(s+l-ru,0,r-1);for(let p=0;p<ti;p+=1){const d=Nt(n+p-ru,0,t-1),c=(u*t+d)*4,g=(l*ti+p)*3;o[g]=e[c],o[g+1]=e[c+1],o[g+2]=e[c+2]}}return{tileHeight:i,tileImage:new ga(o,ti,ti,3),tileWidth:a}}function vz(e,t,r,n,s,a,i){const o=r.channels,l=a*ei,u=i*ei,p=r.width*o,d=ru*ei,c=ru*ei;for(let g=0;g<u;g+=1){const A=c+g,m=s*ei+g;for(let B=0;B<l;B+=1){const f=d+B,h=A*p+f*o,P=(m*t+n*ei+B)*4;e[P]=r.data[h],e[P+1]=r.data[h+1],e[P+2]=r.data[h+2],e[P+3]=o===4?r.data[h+3]:255}}}async function Bz(e,t,r){const n=new Uint8ClampedArray(r);tt("general","running","Preparing 4x upscale","Preparing the 4x image enlarger...",Ps||cT(),8);let s;try{s=await zG()}catch(g){if(Ps==="webgpu"&&si(g))su=null,Ps="wasm",tt("general","loading","Falling back to WASM","The AI Image Upscaler WebGPU runtime failed. Retrying with WASM...","wasm",24),s=await dT("wasm");else throw g}tt("general","running","Upscaling image","Generating the 4x upscaled image...",Ps||"wasm",56);const a=e*ei,i=t*ei,o=new Uint8ClampedArray(a*i*4),l=Math.ceil(e/Ro),u=Math.ceil(t/Ro),p=l*u;let d=0;for(let g=0;g<u;g+=1)for(let A=0;A<l;A+=1){const m=A*Ro,B=g*Ro,f=Mz(n,e,t,m,B),h=await s(f.tileImage),P=Array.isArray(h)?h[0]:h;if(!P)throw new Error("The AI Image Upscaler did not return an image tile.");vz(o,a,P,m,B,f.tileWidth,f.tileHeight),d+=1;const _=56+Math.round(d/p*28);tt("general","running","Upscaling image",`Upscaling tile ${d} of ${p}...`,Ps||"wasm",_)}tt("general","running","Exporting 4x result","Encoding the 4x PNG...",Ps||"wasm",86);const c=await du(o,a,i,Ps||"wasm");return tt("general","ready","4x upscale complete","The 4x image is ready to compare and download.",Ps||"wasm",100),{width:a,height:i,imageBlob:c,backend:Ps||"wasm"}}async function xz(e,t,r){if(!os||!ls||!Zs)throw new Error("The image embedding is not ready yet.");const n=NG(r),s=UG(n,e,t);if(!s)throw new Error("Paint a mask before asking for refinement.");tt("general","running","Analyzing mask","Analyzing the range of your hand-painted mask...",dr,8);const a=async()=>{const o=os,[l,u]=await Jc(),p=l,d=u,c=Zs,g=ls,A=[...s.positivePoints,...s.negativePoints],m=[...s.positivePoints.map(()=>1),...s.negativePoints.map(()=>0)];tt("general","running","Encoding prompt points","Converting the brush stroke area into SAM prompt points...",dr,28);const B=await d(o,{input_points:[A],input_labels:[m],input_boxes:[[s.box]]});tt("general","running","Refining edges","SlimSAM is fitting the object boundaries...",dr,58);const f=await p({...c,input_points:B.input_points,input_labels:B.input_labels,input_boxes:B.input_boxes});tt("general","running","Post-processing mask","Collecting and merging the best mask...",dr,82);const h=await d.post_process_masks(f.pred_masks,g.original_sizes,g.reshaped_input_sizes),P=ga.fromTensor(h[0][0]);return yT(P,f.iou_scores.data,n,e,t,s)};let i;try{i=await a()}catch(o){if(dr==="webgpu"&&si(o))ni=null,dr="wasm",tt("sam","loading","Falling back to WASM","SlimSAM WebGPU failed during refinement. Retrying with WASM...","wasm",42),i=await(async()=>{const l=os,[u,p]=await lu("wasm"),d=u,c=p,g=Zs,A=ls,m=[...s.positivePoints,...s.negativePoints],B=[...s.positivePoints.map(()=>1),...s.negativePoints.map(()=>0)];tt("general","running","Encoding prompt points","Retrying SAM prompt encoding with WASM...","wasm",48);const f=await c(l,{input_points:[m],input_labels:[B],input_boxes:[[s.box]]});tt("general","running","Refining edges","Retrying edge refinement with WASM...","wasm",68);const h=await d({...g,input_points:f.input_points,input_labels:f.input_labels,input_boxes:f.input_boxes});tt("general","running","Post-processing mask","Finishing the final mask with WASM...","wasm",86);const P=await c.post_process_masks(h.pred_masks,A.original_sizes,A.reshaped_input_sizes),_=ga.fromTensor(P[0][0]);return yT(_,h.iou_scores.data,n,e,t,s)})();else throw o}return tt("general","ready","Mask ready","Mask refinement is complete. You can start erasing now.",dr,100),{width:e,height:t,mask:i.mask.buffer,usedSam:!0,coverage:i.coverage}}
5633async function CT(e,t,r,n,s,a={}){if(!os||!ls||!Zs)throw new Error("The image embedding is not ready yet.");const i=a.emitStatus??!0,o=a.boostEdges??!0,l=a.readyMessage??"Auto selection is ready. Refine it or start erasing.",u=(g,A,m,B,f,h=0)=>{i&&tt(g,A,m,B,f,h)},p=WG(r,n,e,t,s);u("general","running","Analyzing click","Checking the clicked area and building a smart object prompt...",dr,10);const d=async()=>{const g=os,[A,m]=await Jc(),B=A,f=m,h=Zs,P=ls,_=[...p.positivePoints,...p.negativePoints],w=[...p.positivePoints.map(()=>1),...p.negativePoints.map(()=>0)];u("general","running","Encoding selection point","Encoding the click as a local object-selection prompt...",dr,34);const b=await f(g,{input_points:[_],input_labels:[w],input_boxes:[[p.box]]});u("general","running","Locating object","SlimSAM is locating the clicked person or object...",dr,62);const v=await B({...h,input_points:b.input_points,input_labels:b.input_labels,input_boxes:b.input_boxes});u("general","running","Finalizing selection","Scoring the candidate masks and keeping the best object...",dr,86);const y=await f.post_process_masks(v.pred_masks,P.original_sizes,P.reshaped_input_sizes),$=ga.fromTensor(y[0][0]);return bT($,v.iou_scores.data,e,t,p,o)};let c;try{c=await d()}catch(g){if(dr==="webgpu"&&si(g))ni=null,dr="wasm",u("sam","loading","Falling back to WASM","SlimSAM WebGPU failed during auto select. Retrying with WASM...","wasm",44),c=await(async()=>{const A=os,[m,B]=await lu("wasm"),f=m,h=B,P=Zs,_=ls,w=[...p.positivePoints,...p.negativePoints],b=[...p.positivePoints.map(()=>1),...p.negativePoints.map(()=>0)];u("general","running","Encoding selection point","Retrying the click prompt with WASM...","wasm",52);const v=await h(A,{input_points:[w],input_labels:[b],input_boxes:[[p.box]]});u("general","running","Locating object","Retrying the auto selection with WASM...","wasm",72);const y=await f({...P,input_points:v.input_points,input_labels:v.input_labels,input_boxes:v.input_boxes});u("general","running","Finalizing selection","Finishing the object selection with WASM...","wasm",88);const $=await h.post_process_masks(y.pred_masks,_.original_sizes,_.reshaped_input_sizes),k=ga.fromTensor($[0][0]);return bT(k,y.iou_scores.data,e,t,p,o)})();else throw g}return u("general","ready","Selection ready",l,dr,100),{width:e,height:t,mask:c.mask.buffer.slice(0),coverage:c.coverage}}async function Ez(e,t,r,n,s,a){return CT(e,t,r,n,s,{boostEdges:a})}async function Dz(e,t,r,n,s,a){return CT(e,t,r,n,s,{boostEdges:a,emitStatus:!1,readyMessage:"Hover preview is ready."})}async function Iz(e,t,r,n,s,a,i){if(!os||!ls||!Zs)throw new Error("The image embedding is not ready yet.");const o=VG(r,n,s,a,e,t,i);tt("general","running","Analyzing selection box","Checking the selection box and building a smart object prompt...",dr,10);const l=async()=>{const p=os,[d,c]=await Jc(),g=d,A=c,m=Zs,B=ls;tt("general","running","Encoding selection box","Encoding the dragged box as a local object-selection prompt...",dr,34);const f=await A(p,{input_boxes:[[o.box]]});tt("general","running","Locating boxed object","SlimSAM is locating the person or object inside the box...",dr,62);const h=await g({...m,input_boxes:f.input_boxes});tt("general","running","Finalizing selection","Scoring the candidate masks and keeping the best boxed object...",dr,86);const P=await A.post_process_masks(h.pred_masks,B.original_sizes,B.reshaped_input_sizes),_=ga.fromTensor(P[0][0]);return PT(_,h.iou_scores.data,e,t,o)};let u;try{u=await l()}catch(p){if(dr==="webgpu"&&si(p))ni=null,dr="wasm",tt("sam","loading","Falling back to WASM","SlimSAM WebGPU failed during box select. Retrying with WASM...","wasm",44),u=await(async()=>{const d=os,[c,g]=await lu("wasm"),A=c,m=g,B=Zs,f=ls;tt("general","running","Encoding selection box","Retrying the box prompt with WASM...","wasm",52);const h=await m(d,{input_boxes:[[o.box]]});tt("general","running","Locating boxed object","Retrying the boxed selection with WASM...","wasm",72);const P=await A({...B,input_boxes:h.input_boxes});tt("general","running","Finalizing selection","Finishing the boxed object selection with WASM...","wasm",88);const _=await m.post_process_masks(P.pred_masks,f.original_sizes,f.reshaped_input_sizes),w=ga.fromTensor(_[0][0]);return PT(w,P.iou_scores.data,e,t,o)})();else throw p}return tt("general","ready","Selection ready","Box selection is ready. Refine it or start erasing.",dr,100),{width:e,height:t,mask:u.mask.buffer.slice(0),coverage:u.coverage}}
5633async function Tz(e,t,r,n,s,a,i,o="model"){const l=new Uint8ClampedArray(r),u=new Uint8Array(a);if(o==="lite"){tt("general","running","Preparing lightweight erase","Using a mobile-safe erase path for this device...","wasm",18);const c=_z(l,e,t,u,n,s),g=await du(c,e,t,"wasm");return tt("general","ready","Erase complete","Erase is complete. Review the comparison and download the result.","wasm",100),{width:e,height:t,imageBlob:g,backend:"wasm",qualityMode:i,pipeline:["structure-fill"]}}if(i==="tiny"){const c=await yz(l,e,t,u,n,s),g=await du(c.image,e,t,c.backend);return tt("general","ready","Erase complete","Tiny cleanup is complete. Review the comparison and download the result.",c.backend,100),{width:e,height:t,imageBlob:g,backend:c.backend,qualityMode:c.qualityMode,pipeline:c.pipeline,extremeDiagnostics:c.extremeDiagnostics}}if(i==="extreme"){const c=await wz(l,e,t,u,n,s),g=await du(c.image,e,t,c.backend);return tt("general","ready","Erase complete","Extreme cleanup is complete. Review the comparison and download the result.",c.backend,100),{width:e,height:t,imageBlob:g,backend:c.backend,qualityMode:c.qualityMode,pipeline:c.pipeline,extremeDiagnostics:c.extremeDiagnostics}}tt("general","running","Preparing erase","Preparing the LaMa erase pipeline...",kn,4);const p=await pz(l,e,t,u,n,s,!0),d=await du(p.image,e,t,p.backend);return tt("general","ready","Erase complete","Erase is complete. Review the comparison and download the result.",p.backend,100),{width:e,height:t,imageBlob:d,backend:p.backend,qualityMode:i,pipeline:["lama"]}}async function Cz(e){tt("general","running","Finding corner mark","Scanning the image for a visible corner mark...",void 0,18);const t=await CG();let r=null,n=0,s=0;if(e.imageBlob){if(typeof createImageBitmap!="function")throw new Error("Image bitmap decoding is unavailable for Gemini cleanup.");r=await createImageBitmap(e.imageBlob),n=r.width,s=r.height}else if(e.image){n=e.image.width,s=e.image.height;const l=new OffscreenCanvas(n,s),u=l.getContext("2d",{willReadFrequently:!0});if(!u)throw new Error("Unable to create the Gemini cleanup canvas.");u.putImageData(new ImageData(new Uint8ClampedArray(e.image.data),n,s),0,0),r=l}else throw new Error("No image payload was provided for Gemini cleanup.");tt("general","running","Cleaning corner mark","Cleaning the corner and rebuilding the nearby image...",void 0,64);let a=null;try{a=await t.removeWatermarkFromImage(r,{adaptiveMode:"auto",maxPasses:4})}finally{r&&"close"in r&&typeof r.close=="function"&&r.close()}tt("general","running","Finishing cleaned image","Preparing the cleaned image for review...",void 0,92);const i=await gz(a),o=a.__watermarkMeta??null;return o?.applied===!1?tt("general","ready","No matching corner mark found","No matching corner mark was found in this image.",void 0,100):tt("general","ready","Gemini cleanup complete","The cleaned image is ready to review and download.",void 0,100),{width:n,height:s,imageBlob:i,meta:o}}self.onmessage=async e=>{const t=e.data;try{if(t.type==="prepare-inpaint-model"){const r=await YG(t.payload.qualityMode);self.postMessage({id:t.id,ok:!0,type:"prepare-inpaint-model",payload:r});return}if(t.type==="prepare-extreme"){const r=await fT();self.postMessage({id:t.id,ok:!0,type:"prepare-extreme",payload:r});return}if(t.type==="prepare-image"){const r=await bz(t.payload.imageBlob);self.postMessage({id:t.id,ok:!0,type:"prepare-image",payload:r});return}if(t.type==="refine-mask"){const r=await xz(t.payload.width,t.payload.height,t.payload.mask);self.postMessage({id:t.id,ok:!0,type:"refine-mask",payload:r},[r.mask]);return}if(t.type==="point-mask"){const r=await Ez(t.payload.width,t.payload.height,t.payload.x,t.payload.y,t.payload.scope,t.payload.boostEdges);self.postMessage({id:t.id,ok:!0,type:"point-mask",payload:r},[r.mask]);return}if(t.type==="preview-point-mask"){const r=await Dz(t.payload.width,t.payload.height,t.payload.x,t.payload.y,t.payload.scope,t.payload.boostEdges);self.postMessage({id:t.id,ok:!0,type:"preview-point-mask",payload:r},[r.mask]);return}if(t.type==="box-mask"){const r=await Iz(t.payload.width,t.payload.height,t.payload.left,t.payload.top,t.payload.right,t.payload.bottom,t.payload.padding);self.postMessage({id:t.id,ok:!0,type:"box-mask",payload:r},[r.mask]);return}if(t.type==="inpaint"){const r=await Tz(t.payload.image.width,t.payload.image.height,t.payload.image.data,t.payload.mask.width,t.payload.mask.height,t.payload.mask.data,t.payload.qualityMo
5633de,t.payload.processingMode);self.postMessage({id:t.id,ok:!0,type:"inpaint",payload:r});return}if(t.type==="extract-cutout"){const r=await Pz(t.payload.image.width,t.payload.image.height,t.payload.image.data,t.payload.mask.width,t.payload.mask.height,t.payload.mask.data);self.postMessage({id:t.id,ok:!0,type:"extract-cutout",payload:r});return}if(t.type==="upscale-image"){const r=await Bz(t.payload.image.width,t.payload.image.height,t.payload.image.data);self.postMessage({id:t.id,ok:!0,type:"upscale-image",payload:r});return}if(t.type==="remove-gemini-watermark"){const r=await Cz(t.payload);self.postMessage({id:t.id,ok:!0,type:"remove-gemini-watermark",payload:r})}}catch(r){const n={id:t.id,ok:!1,error:ka(r)};self.postMessage(n)}}})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.