diff --git "a/assets/index-ehScpa3I.js" "b/assets/index-ehScpa3I.js" new file mode 100644--- /dev/null +++ "b/assets/index-ehScpa3I.js" @@ -0,0 +1,1849 @@ +(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))r(s);new MutationObserver(s=>{for(const i of s)if(i.type==="childList")for(const a of i.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&r(a)}).observe(document,{childList:!0,subtree:!0});function n(s){const i={};return s.integrity&&(i.integrity=s.integrity),s.referrerPolicy&&(i.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?i.credentials="include":s.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(s){if(s.ep)return;s.ep=!0;const i=n(s);fetch(s.href,i)}})();function dispatchCallback(t,e){t&&t(e)}function reverseDictionary(t){return Object.fromEntries(Object.entries(t).map(([e,n])=>[n,e]))}const Callable=class{constructor(){let t=function(...e){return t._call(...e)};return Object.setPrototypeOf(t,new.target.prototype)}_call(...t){throw Error("Must implement _call method in subclass")}};function isTypedArray(t){return t?.prototype?.__proto__?.constructor?.name==="TypedArray"}function isIntegralNumber(t){return Number.isInteger(t)||typeof t=="bigint"}function exists(t){return t!=null}function mergeArrays(...t){return Array.prototype.concat.apply([],t)}const sharp={},ONNX_NODE=Object.freeze(Object.defineProperty({__proto__:null,default:sharp},Symbol.toStringTag,{value:"Module"})),VERSION="3.0.0-alpha.0",BROWSER_ENV$1=typeof self<"u",WEB_CACHE_AVAILABLE=BROWSER_ENV$1&&"caches"in self,FS_AVAILABLE=!isEmpty(sharp),PATH_AVAILABLE=!isEmpty(sharp),RUNNING_LOCALLY=FS_AVAILABLE&&PATH_AVAILABLE,__dirname$1=RUNNING_LOCALLY?sharp.dirname(sharp.dirname(sharp.fileURLToPath(import.meta.url))):"./",DEFAULT_CACHE_DIR=RUNNING_LOCALLY?sharp.join(__dirname$1,"/.cache/"):null,DEFAULT_LOCAL_MODEL_PATH="/models/",localModelPath=RUNNING_LOCALLY?sharp.join(__dirname$1,DEFAULT_LOCAL_MODEL_PATH):DEFAULT_LOCAL_MODEL_PATH,env={backends:{onnx:{},tfjs:{}},experimental:{useWebGPU:!1},__dirname:__dirname$1,version:VERSION,allowRemoteModels:!0,remoteHost:"https://huggingface.co/",remotePathTemplate:"{model}/resolve/{revision}/",allowLocalModels:!BROWSER_ENV$1,localModelPath,useFS:FS_AVAILABLE,useBrowserCache:WEB_CACHE_AVAILABLE,useFSCache:FS_AVAILABLE,cacheDir:DEFAULT_CACHE_DIR,useCustomCache:!1,customCache:null};function isEmpty(t){return Object.keys(t).length===0}var define_process_env_default={};class FileResponse{_CONTENT_TYPE_MAP={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"};constructor(e){if(this.filePath=e,this.headers=new Headers,this.exists=sharp.existsSync(e),this.exists){this.status=200,this.statusText="OK";let n=sharp.statSync(e);this.headers.set("content-length",n.size.toString()),this.updateContentType();let r=this;this.body=new ReadableStream({start(s){r.arrayBuffer().then(i=>{s.enqueue(new Uint8Array(i)),s.close()})}})}else this.status=404,this.statusText="Not Found",this.body=null}updateContentType(){const e=this.filePath.toString().split(".").pop().toLowerCase();this.headers.set("content-type",this._CONTENT_TYPE_MAP[e]??"application/octet-stream")}clone(){let e=new FileResponse(this.filePath);return e.exists=this.exists,e.status=this.status,e.statusText=this.statusText,e.headers=new Headers(this.headers),e}async arrayBuffer(){return(await sharp.promises.readFile(this.filePath)).buffer}async blob(){const e=await sharp.promises.readFile(this.filePath);return new Blob([e],{type:this.headers.get("content-type")})}async text(){return await sharp.promises.readFile(this.filePath,"utf8")}async json(){return JSON.parse(await this.text())}}function isValidHttpUrl(t,e=null){let n;try{n=new URL(t)}catch{return!1}return e&&!e.includes(n.hostname)?!1:n.protocol==="http:"||n.protocol==="https:"}async function getFile(t){if(env.useFS&&!isValidHttpUrl(t))return new FileResponse(t);if(typeof process<"u"&&process?.release?.name==="node"){const e=!!define_process_env_default?.TESTING_REMOTELY,n=env.version,r=new Headers;if(r.set("User-Agent",`transformers.js/${n}; is_ci/${e};`),isValidHttpUrl(t,["huggingface.co","hf.co"])){const i=define_process_env_default?.HF_TOKEN??define_process_env_default?.HF_ACCESS_TOKEN;i&&r.set("Authorization",`Bearer ${i}`)}return fetch(t,{headers:r})}else return fetch(t)}const ERROR_MAPPING={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 handleError(t,e,n){if(!n)return null;const r=ERROR_MAPPING[t]??`Error (${t}) occurred while trying to load file`;throw Error(`${r}: "${e}".`)}class FileCache{constructor(e){this.path=e}async match(e){let n=sharp.join(this.path,e),r=new FileResponse(n);if(r.exists)return r}async put(e,n){const r=Buffer.from(await n.arrayBuffer());let s=sharp.join(this.path,e);try{await sharp.promises.mkdir(sharp.dirname(s),{recursive:!0}),await sharp.promises.writeFile(s,r)}catch(i){console.warn("An error occurred while writing the file to cache:",i)}}}async function tryCache(t,...e){for(let n of e)try{let r=await t.match(n);if(r)return r}catch{continue}}async function getModelFile(t,e,n=!0,r={}){if(!env.allowLocalModels&&r.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`).");dispatchCallback(r.progress_callback,{status:"initiate",name:t,file:e});let s;if(!s&&env.useBrowserCache){if(typeof caches>"u")throw Error("Browser cache is not available in this environment.");try{s=await caches.open("transformers-cache")}catch(w){console.warn("An error occurred while opening the browser cache:",w)}}if(!s&&env.useFSCache&&(s=new FileCache(r.cache_dir??env.cacheDir)),!s&&env.useCustomCache)throw Error("`env.useCustomCache=true`, but `env.customCache` is not defined.");const i=r.revision??"main";let a=pathJoin(t,e),u=pathJoin(env.localModelPath,a),d=pathJoin(env.remoteHost,env.remotePathTemplate.replaceAll("{model}",t).replaceAll("{revision}",encodeURIComponent(i)),e),o=i==="main"?a:pathJoin(t,i,e),l,c=s instanceof FileCache?o:d,h=!1,f;s&&(f=await tryCache(s,u,c));const p=f!==void 0;if(f===void 0){if(env.allowLocalModels)if(isValidHttpUrl(a)){if(r.local_files_only)throw new Error(`\`local_files_only=true\`, but attempted to load a remote file from: ${a}.`)}else try{f=await getFile(u),l=u}catch(y){console.warn(`Unable to load from local path "${u}": "${y}"`)}if(f===void 0||f.status===404){if(r.local_files_only||!env.allowRemoteModels){if(n)throw Error(`\`local_files_only=true\` or \`env.allowRemoteModels=false\` and file was not found locally at "${u}".`);return null}if(f=await getFile(d),f.status!==200)return handleError(f.status,d,n);l=c}h=s&&typeof Response<"u"&&f instanceof Response&&f.status===200}dispatchCallback(r.progress_callback,{status:"download",name:t,file:e});const g={status:"progress",name:t,file:e};let b;return r.progress_callback?p&&typeof navigator<"u"&&/firefox/i.test(navigator.userAgent)?(b=new Uint8Array(await f.arrayBuffer()),dispatchCallback(r.progress_callback,{...g,progress:100,loaded:b.length,total:b.length})):b=await readResponse(f,w=>{dispatchCallback(r.progress_callback,{...g,...w})}):b=new Uint8Array(await f.arrayBuffer()),h&&l&&await s.match(l)===void 0&&await s.put(l,new Response(b,{headers:f.headers})).catch(w=>{console.warn(`Unable to add response to browser cache: ${w}.`)}),dispatchCallback(r.progress_callback,{status:"done",name:t,file:e}),b}async function getModelJSON(t,e,n=!0,r={}){let s=await getModelFile(t,e,n,r);if(s===null)return{};let a=new TextDecoder("utf-8").decode(s);return JSON.parse(a)}async function readResponse(t,e){const n=t.headers.get("Content-Length");n===null&&console.warn("Unable to determine content-length from response headers. Will expand buffer when needed.");let r=parseInt(n??"0"),s=new Uint8Array(r),i=0;const a=t.body.getReader();async function u(){const{done:d,value:o}=await a.read();if(d)return;let l=i+o.length;if(l>r){r=l;let h=new Uint8Array(r);h.set(s),s=h}s.set(o,i),i=l;const c=i/r*100;return e({progress:c,loaded:i,total:r}),u()}return await u(),s}function pathJoin(...t){return t=t.map((e,n)=>(n&&(e=e.replace(new RegExp("^/"),"")),n!==t.length-1&&(e=e.replace(new RegExp("/$"),"")),e)),t.join("/")}function transpose_data(t,e,n){const r=new Array(n.length),s=new Array(n.length);for(let u=n.length-1,d=1;u>=0;--u)s[u]=d,r[u]=e[n[u]],d*=r[u];const i=n.map((u,d)=>s[n.indexOf(d)]),a=new t.constructor(t.length);for(let u=0;u=0;--o)d+=l%e[o]*i[o],l=Math.floor(l/e[o]);a[d]=t[u]}return[a,r]}function softmax(t){const e=max(t)[0],n=t.map(i=>Math.exp(i-e)),r=n.reduce((i,a)=>i+a,0);return n.map(i=>i/r)}function log_softmax(t){return softmax(t).map(r=>Math.log(r))}function getTopItems(t,e=0){return t=Array.from(t).map((n,r)=>[r,n]).sort((n,r)=>r[1]-n[1]),e!==null&&e>0&&(t=t.slice(0,e)),t}function max(t){if(t.length===0)throw Error("Array must not be empty");let e=t[0],n=0;for(let r=1;re&&(e=t[r],n=r);return[Number(e),n]}function medianFilter(t,e){if(e%2===0||e<=0)throw new Error("Window size must be a positive odd number");const n=new t.constructor(t.length),r=new t.constructor(e),s=Math.floor(e/2);for(let i=0;i=t.length&&(d=2*(t.length-1)-d),r[a++]=t[d]}r.sort(),n[i]=r[s]}return n}const scriptRel="modulepreload",assetsURL=function(t){return"/"+t},seen={},__vitePreload=function(e,n,r){let s=Promise.resolve();if(n&&n.length>0){const i=document.getElementsByTagName("link");s=Promise.all(n.map(a=>{if(a=assetsURL(a),a in seen)return;seen[a]=!0;const u=a.endsWith(".css"),d=u?'[rel="stylesheet"]':"";if(!!r)for(let c=i.length-1;c>=0;c--){const h=i[c];if(h.href===a&&(!u||h.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${a}"]${d}`))return;const l=document.createElement("link");if(l.rel=u?"stylesheet":scriptRel,u||(l.as="script",l.crossOrigin=""),l.href=a,document.head.appendChild(l),u)return new Promise((c,h)=>{l.addEventListener("load",c),l.addEventListener("error",()=>h(new Error(`Unable to preload CSS for ${a}`)))})}))}return s.then(()=>e()).catch(i=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=i,window.dispatchEvent(a),!a.defaultPrevented)throw i})};/*! + * ONNX Runtime Web v1.17.1 + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. + */var vd=Object.create,En=Object.defineProperty,wd=Object.getOwnPropertyDescriptor,_d=Object.getOwnPropertyNames,Od=Object.getPrototypeOf,Id=Object.prototype.hasOwnProperty,L=(t,e)=>()=>(t&&(e=t(t=0)),e),me=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Pr=(t,e)=>{for(var n in e)En(t,n,{get:e[n],enumerable:!0})},Ha=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of _d(e))!Id.call(t,s)&&s!==n&&En(t,s,{get:()=>e[s],enumerable:!(r=wd(e,s))||r.enumerable});return t},Er=(t,e,n)=>(n=t!=null?vd(Od(t)):{},Ha(e||!t||!t.__esModule?En(n,"default",{value:t,enumerable:!0}):n,t)),rr=t=>Ha(En({},"__esModule",{value:!0}),t),Dn,nr,or,Ln,Fn=L(()=>{Dn=new Map,nr=[],or=(t,e,n)=>{if(e&&typeof e.init=="function"&&typeof e.createInferenceSessionHandler=="function"){let r=Dn.get(t);if(r===void 0)Dn.set(t,{backend:e,priority:n});else{if(r.priority>n)return;if(r.priority===n&&r.backend!==e)throw new Error(`cannot register backend "${t}" using priority ${n}`)}if(n>=0){let s=nr.indexOf(t);s!==-1&&nr.splice(s,1);for(let i=0;i{let e=t.length===0?nr:t,n=[];for(let r of e){let s=Dn.get(r);if(s){if(s.initialized)return s.backend;if(s.aborted)continue;let i=!!s.initPromise;try{return i||(s.initPromise=s.backend.init(r)),await s.initPromise,s.initialized=!0,s.backend}catch(a){i||n.push({name:r,err:a}),s.aborted=!0}finally{delete s.initPromise}}}throw new Error(`no available backend found. ERR: ${n.map(r=>`[${r.name}] ${r.err}`).join(", ")}`)}}),qa=L(()=>{Fn()}),ja,Ya=L(()=>{ja="1.17.1"}),Xa,ir,Ho=L(()=>{Ya(),Xa="warning",ir={wasm:{},webgl:{},webgpu:{},versions:{common:ja},set logLevel(t){if(t!==void 0){if(typeof t!="string"||["verbose","info","warning","error","fatal"].indexOf(t)===-1)throw new Error(`Unsupported logging level: ${t}`);Xa=t}},get logLevel(){return Xa}},Object.defineProperty(ir,"logLevel",{enumerable:!0})}),Z,Ka=L(()=>{Ho(),Z=ir}),Ja,Za,Qa=L(()=>{Ja=(t,e)=>{let n=typeof document<"u"?document.createElement("canvas"):new OffscreenCanvas(1,1);n.width=t.dims[3],n.height=t.dims[2];let r=n.getContext("2d");if(r!=null){let s,i;e?.tensorLayout!==void 0&&e.tensorLayout==="NHWC"?(s=t.dims[2],i=t.dims[3]):(s=t.dims[3],i=t.dims[2]);let a=e?.format!==void 0?e.format:"RGB",u=e?.norm,d,o;u===void 0||u.mean===void 0?d=[255,255,255,255]:typeof u.mean=="number"?d=[u.mean,u.mean,u.mean,u.mean]:(d=[u.mean[0],u.mean[1],u.mean[2],0],u.mean[3]!==void 0&&(d[3]=u.mean[3])),u===void 0||u.bias===void 0?o=[0,0,0,0]:typeof u.bias=="number"?o=[u.bias,u.bias,u.bias,u.bias]:(o=[u.bias[0],u.bias[1],u.bias[2],0],u.bias[3]!==void 0&&(o[3]=u.bias[3]));let l=i*s,c=0,h=l,f=l*2,p=-1;a==="RGBA"?(c=0,h=l,f=l*2,p=l*3):a==="RGB"?(c=0,h=l,f=l*2):a==="RBG"&&(c=0,f=l,h=l*2);for(let g=0;g{let n=typeof document<"u"?document.createElement("canvas").getContext("2d"):new OffscreenCanvas(1,1).getContext("2d"),r;if(n!=null){let s,i,a;e?.tensorLayout!==void 0&&e.tensorLayout==="NHWC"?(s=t.dims[2],i=t.dims[1],a=t.dims[3]):(s=t.dims[3],i=t.dims[2],a=t.dims[1]);let u=e!==void 0&&e.format!==void 0?e.format:"RGB",d=e?.norm,o,l;d===void 0||d.mean===void 0?o=[255,255,255,255]:typeof d.mean=="number"?o=[d.mean,d.mean,d.mean,d.mean]:(o=[d.mean[0],d.mean[1],d.mean[2],255],d.mean[3]!==void 0&&(o[3]=d.mean[3])),d===void 0||d.bias===void 0?l=[0,0,0,0]:typeof d.bias=="number"?l=[d.bias,d.bias,d.bias,d.bias]:(l=[d.bias[0],d.bias[1],d.bias[2],0],d.bias[3]!==void 0&&(l[3]=d.bias[3]));let c=i*s;if(e!==void 0&&(e.format!==void 0&&a===4&&e.format!=="RGBA"||a===3&&e.format!=="RGB"&&e.format!=="BGR"))throw new Error("Tensor format doesn't match input tensor dims");let h=4,f=0,p=1,g=2,b=3,w=0,y=c,T=c*2,S=-1;u==="RGBA"?(w=0,y=c,T=c*2,S=c*3):u==="RGB"?(w=0,y=c,T=c*2):u==="RBG"&&(w=0,T=c,y=c*2),r=n.createImageData(s,i);for(let E=0;E{$n(),qo=(t,e)=>{if(t===void 0)throw new Error("Image buffer must be defined");if(e.height===void 0||e.width===void 0)throw new Error("Image height and width must be defined");if(e.tensorLayout==="NHWC")throw new Error("NHWC Tensor layout is not supported yet");let{height:n,width:r}=e,s=e.norm??{mean:255,bias:0},i,a;typeof s.mean=="number"?i=[s.mean,s.mean,s.mean,s.mean]:i=[s.mean[0],s.mean[1],s.mean[2],s.mean[3]??255],typeof s.bias=="number"?a=[s.bias,s.bias,s.bias,s.bias]:a=[s.bias[0],s.bias[1],s.bias[2],s.bias[3]??0];let u=e.format!==void 0?e.format:"RGBA",d=e.tensorFormat!==void 0&&e.tensorFormat!==void 0?e.tensorFormat:"RGB",o=n*r,l=d==="RGBA"?new Float32Array(o*4):new Float32Array(o*3),c=4,h=0,f=1,p=2,g=3,b=0,w=o,y=o*2,T=-1;u==="RGB"&&(c=3,h=0,f=1,p=2,g=-1),d==="RGBA"?T=o*3:d==="RBG"?(b=0,y=o,w=o*2):d==="BGR"&&(y=0,w=o,b=o*2);for(let S=0;S{let n=typeof HTMLImageElement<"u"&&t instanceof HTMLImageElement,r=typeof ImageData<"u"&&t instanceof ImageData,s=typeof ImageBitmap<"u"&&t instanceof ImageBitmap,i=typeof t=="string",a,u=e??{},d=()=>{if(typeof document<"u")return document.createElement("canvas");if(typeof OffscreenCanvas<"u")return new OffscreenCanvas(1,1);throw new Error("Canvas is not supported")},o=l=>l instanceof HTMLCanvasElement||l instanceof OffscreenCanvas?l.getContext("2d"):null;if(n){let l=d();l.width=t.width,l.height=t.height;let c=o(l);if(c!=null){let h=t.height,f=t.width;if(e!==void 0&&e.resizedHeight!==void 0&&e.resizedWidth!==void 0&&(h=e.resizedHeight,f=e.resizedWidth),e!==void 0){if(u=e,e.tensorFormat!==void 0)throw new Error("Image input config format must be RGBA for HTMLImageElement");u.tensorFormat="RGBA",u.height=h,u.width=f}else u.tensorFormat="RGBA",u.height=h,u.width=f;c.drawImage(t,0,0),a=c.getImageData(0,0,f,h).data}else throw new Error("Can not access image data")}else if(r){let l,c;if(e!==void 0&&e.resizedWidth!==void 0&&e.resizedHeight!==void 0?(l=e.resizedHeight,c=e.resizedWidth):(l=t.height,c=t.width),e!==void 0&&(u=e),u.format="RGBA",u.height=l,u.width=c,e!==void 0){let h=d();h.width=c,h.height=l;let f=o(h);if(f!=null)f.putImageData(t,0,0),a=f.getImageData(0,0,c,l).data;else throw new Error("Can not access image data")}else a=t.data}else if(s){if(e===void 0)throw new Error("Please provide image config with format for Imagebitmap");let l=d();l.width=t.width,l.height=t.height;let c=o(l);if(c!=null){let h=t.height,f=t.width;return c.drawImage(t,0,0,f,h),a=c.getImageData(0,0,f,h).data,u.height=h,u.width=f,qo(a,u)}else throw new Error("Can not access image data")}else{if(i)return new Promise((l,c)=>{let h=d(),f=o(h);if(!t||!f)return c();let p=new Image;p.crossOrigin="Anonymous",p.src=t,p.onload=()=>{h.width=p.width,h.height=p.height,f.drawImage(p,0,0,h.width,h.height);let g=f.getImageData(0,0,h.width,h.height);u.height=h.height,u.width=h.width,l(qo(g.data,u))}});throw new Error("Input data provided is not supported - aborted tensor creation")}if(a!==void 0)return qo(a,u);throw new Error("Input data provided is not supported - aborted tensor creation")},ts=(t,e)=>{let{width:n,height:r,download:s,dispose:i}=e,a=[1,r,n,4];return new Ye({location:"texture",type:"float32",texture:t,dims:a,download:s,dispose:i})},rs=(t,e)=>{let{dataType:n,dims:r,download:s,dispose:i}=e;return new Ye({location:"gpu-buffer",type:n??"float32",gpuBuffer:t,dims:r,download:s,dispose:i})},ns=(t,e,n)=>new Ye({location:"cpu-pinned",type:t,data:e,dims:n??[e.length]})}),Qr,Cn,is,as,ss=L(()=>{Qr=new Map([["float32",Float32Array],["uint8",Uint8Array],["int8",Int8Array],["uint16",Uint16Array],["float16",Uint16Array],["int16",Int16Array],["int32",Int32Array],["bool",Uint8Array],["float64",Float64Array],["uint32",Uint32Array]]),Cn=new Map([[Float32Array,"float32"],[Uint8Array,"uint8"],[Int8Array,"int8"],[Uint16Array,"uint16"],[Int16Array,"int16"],[Int32Array,"int32"],[Float64Array,"float64"],[Uint32Array,"uint32"]]),is=!1,as=()=>{if(!is){is=!0;let t=typeof BigInt64Array<"u"&&typeof BigInt64Array.from=="function",e=typeof BigUint64Array<"u"&&typeof BigUint64Array.from=="function";t&&(Qr.set("int64",BigInt64Array),Cn.set(BigInt64Array,"int64")),e&&(Qr.set("uint64",BigUint64Array),Cn.set(BigUint64Array,"uint64"))}}}),us,ls,fs=L(()=>{$n(),us=t=>{let e=1;for(let n=0;n{switch(t.location){case"cpu":return new Ye(t.type,t.data,e);case"cpu-pinned":return new Ye({location:"cpu-pinned",data:t.data,type:t.type,dims:e});case"texture":return new Ye({location:"texture",texture:t.texture,type:t.type,dims:e});case"gpu-buffer":return new Ye({location:"gpu-buffer",gpuBuffer:t.gpuBuffer,type:t.type,dims:e});default:throw new Error(`tensorReshape: tensor location ${t.location} is not supported`)}}}),Ye,$n=L(()=>{Qa(),os(),ss(),fs(),Ye=class{constructor(t,e,n){as();let r,s;if(typeof t=="object"&&"location"in t)switch(this.dataLocation=t.location,r=t.type,s=t.dims,t.location){case"cpu-pinned":{let a=Qr.get(r);if(!a)throw new TypeError(`unsupported type "${r}" to create tensor from pinned buffer`);if(!(t.data instanceof a))throw new TypeError(`buffer should be of type ${a.name}`);this.cpuData=t.data;break}case"texture":{if(r!=="float32")throw new TypeError(`unsupported type "${r}" to create tensor from texture`);this.gpuTextureData=t.texture,this.downloader=t.download,this.disposer=t.dispose;break}case"gpu-buffer":{if(r!=="float32"&&r!=="float16"&&r!=="int32"&&r!=="int64"&&r!=="uint32"&&r!=="bool")throw new TypeError(`unsupported type "${r}" to create tensor from gpu buffer`);this.gpuBufferData=t.gpuBuffer,this.downloader=t.download,this.disposer=t.dispose;break}default:throw new Error(`Tensor constructor: unsupported location '${this.dataLocation}'`)}else{let a,u;if(typeof t=="string")if(r=t,u=n,t==="string"){if(!Array.isArray(e))throw new TypeError("A string tensor's data must be a string array.");a=e}else{let d=Qr.get(t);if(d===void 0)throw new TypeError(`Unsupported tensor type: ${t}.`);if(Array.isArray(e)){if(t==="float16")throw new TypeError("Creating a float16 tensor from number array is not supported. Please use Uint16Array as data.");t==="uint64"||t==="int64"?a=d.from(e,BigInt):a=d.from(e)}else if(e instanceof d)a=e;else throw new TypeError(`A ${r} tensor's data must be type of ${d}`)}else if(u=e,Array.isArray(t)){if(t.length===0)throw new TypeError("Tensor type cannot be inferred from an empty array.");let d=typeof t[0];if(d==="string")r="string",a=t;else if(d==="boolean")r="bool",a=Uint8Array.from(t);else throw new TypeError(`Invalid element type of data array: ${d}.`)}else{let d=Cn.get(t.constructor);if(d===void 0)throw new TypeError(`Unsupported type for tensor data: ${t.constructor}.`);r=d,a=t}if(u===void 0)u=[a.length];else if(!Array.isArray(u))throw new TypeError("A tensor's dims must be a number array");s=u,this.cpuData=a,this.dataLocation="cpu"}let i=us(s);if(this.cpuData&&i!==this.cpuData.length)throw new Error(`Tensor's size(${i}) does not match data length(${this.cpuData.length}).`);this.type=r,this.dims=s,this.size=i}static async fromImage(t,e){return es(t,e)}static fromTexture(t,e){return ts(t,e)}static fromGpuBuffer(t,e){return rs(t,e)}static fromPinnedBuffer(t,e,n){return ns(t,e,n)}toDataURL(t){return Ja(this,t)}toImageData(t){return Za(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}async getData(t){switch(this.ensureValid(),this.dataLocation){case"cpu":case"cpu-pinned":return this.data;case"texture":case"gpu-buffer":{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 e=await this.downloader();return this.downloader=void 0,this.dataLocation="cpu",this.cpuData=e,t&&this.disposer&&(this.disposer(),this.disposer=void 0),e}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.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 ls(this,t)}}}),Re,kn=L(()=>{$n(),Re=Ye}),cs,ps,ar,sr,jo=L(()=>{Ho(),cs=(t,e)=>{ir.wasm.trace&&console.timeStamp(`${t}::ORT::${e}`)},ps=(t,e)=>{let n=new Error().stack?.split(/\r\n|\r|\n/g)||[],r=!1;for(let s=0;s{ir.wasm.trace&&ps("BEGIN",t)},sr=t=>{ir.wasm.trace&&ps("END",t)}}),Bn,ds=L(()=>{Fn(),kn(),jo(),Bn=class Go{constructor(e){this.handler=e}async run(e,n,r){ar();let s={},i={};if(typeof e!="object"||e===null||e instanceof Re||Array.isArray(e))throw new TypeError("'feeds' must be an object that use input names as keys and OnnxValue as corresponding values.");let a=!0;if(typeof n=="object"){if(n===null)throw new TypeError("Unexpected argument[1]: cannot be null.");if(n instanceof Re)throw new TypeError("'fetches' cannot be a Tensor");if(Array.isArray(n)){if(n.length===0)throw new TypeError("'fetches' cannot be an empty array.");a=!1;for(let o of n){if(typeof o!="string")throw new TypeError("'fetches' must be a string array or an object.");if(this.outputNames.indexOf(o)===-1)throw new RangeError(`'fetches' contains invalid output name: ${o}.`);s[o]=null}if(typeof r=="object"&&r!==null)i=r;else if(typeof r<"u")throw new TypeError("'options' must be an object.")}else{let o=!1,l=Object.getOwnPropertyNames(n);for(let c of this.outputNames)if(l.indexOf(c)!==-1){let h=n[c];(h===null||h instanceof Re)&&(o=!0,a=!1,s[c]=h)}if(o){if(typeof r=="object"&&r!==null)i=r;else if(typeof r<"u")throw new TypeError("'options' must be an object.")}else i=n}}else if(typeof n<"u")throw new TypeError("Unexpected argument[1]: must be 'fetches' or 'options'.");for(let o of this.inputNames)if(typeof e[o]>"u")throw new Error(`input '${o}' is missing in 'feeds'.`);if(a)for(let o of this.outputNames)s[o]=null;let u=await this.handler.run(e,s,i),d={};for(let o in u)if(Object.hasOwnProperty.call(u,o)){let l=u[o];l instanceof Re?d[o]=l:d[o]=new Re(l.type,l.data,l.dims)}return sr(),d}async release(){return this.handler.dispose()}static async create(e,n,r,s){ar();let i,a={};if(typeof e=="string"){if(i=e,typeof n=="object"&&n!==null)a=n;else if(typeof n<"u")throw new TypeError("'options' must be an object.")}else if(e instanceof Uint8Array){if(i=e,typeof n=="object"&&n!==null)a=n;else if(typeof n<"u")throw new TypeError("'options' must be an object.")}else if(e instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&e instanceof SharedArrayBuffer){let o=e,l=0,c=e.byteLength;if(typeof n=="object"&&n!==null)a=n;else if(typeof n=="number"){if(l=n,!Number.isSafeInteger(l))throw new RangeError("'byteOffset' must be an integer.");if(l<0||l>=o.byteLength)throw new RangeError(`'byteOffset' is out of range [0, ${o.byteLength}).`);if(c=e.byteLength-l,typeof r=="number"){if(c=r,!Number.isSafeInteger(c))throw new RangeError("'byteLength' must be an integer.");if(c<=0||l+c>o.byteLength)throw new RangeError(`'byteLength' is out of range (0, ${o.byteLength-l}].`);if(typeof s=="object"&&s!==null)a=s;else if(typeof s<"u")throw new TypeError("'options' must be an object.")}else if(typeof r<"u")throw new TypeError("'byteLength' must be a number.")}else if(typeof n<"u")throw new TypeError("'options' must be an object.");i=new Uint8Array(o,l,c)}else throw new TypeError("Unexpected argument[0]: must be 'path' or 'buffer'.");let u=(a.executionProviders||[]).map(o=>typeof o=="string"?o:o.name),d=await(await Ln(u)).createInferenceSessionHandler(i,a);return sr(),new Go(d)}startProfiling(){this.handler.startProfiling()}endProfiling(){this.handler.endProfiling()}get inputNames(){return this.handler.inputNames}get outputNames(){return this.handler.outputNames}}}),Sd,hs=L(()=>{ds(),Sd=Bn}),ms=L(()=>{}),Ad,Nn,bs=L(()=>{Fn(),kn(),Ad="Training backend could not be resolved. Make sure you're using the correct configuration & WebAssembly files.",Nn=class Jo{constructor(e,n,r){this.handler=e,this.hasOptimizerModel=n,this.hasEvalModel=r}get trainingInputNames(){return this.handler.inputNames}get trainingOutputNames(){return this.handler.outputNames}get evalInputNames(){if(this.hasEvalModel)return this.handler.evalInputNames;throw new Error("This training session has no evalModel loaded.")}get evalOutputNames(){if(this.hasEvalModel)return this.handler.evalOutputNames;throw new Error("This training session has no evalModel loaded.")}static async create(e,n){let r=e.evalModel||"",s=e.optimizerModel||"",i=n||{},a=(i.executionProviders||[]).map(d=>typeof d=="string"?d:d.name),u=await Ln(a);if(u.createTrainingSessionHandler){let d=await u.createTrainingSessionHandler(e.checkpointState,e.trainModel,r,s,i);return new Jo(d,!!e.optimizerModel,!!e.evalModel)}else throw new Error(Ad)}typeNarrowingForRunStep(e,n,r,s,i){let a={},u={};if(typeof r!="object"||r===null||r instanceof Re||Array.isArray(r))throw new TypeError("'feeds' must be an object that use input names as keys and OnnxValue as corresponding values.");let d=!0;if(typeof s=="object"){if(s===null)throw new TypeError("Unexpected argument[1]: cannot be null.");if(s instanceof Re)throw new TypeError("'fetches' cannot be a Tensor");if(Array.isArray(s)){if(s.length===0)throw new TypeError("'fetches' cannot be an empty array.");d=!1;for(let o of s){if(typeof o!="string")throw new TypeError("'fetches' must be a string array or an object.");if(n.indexOf(o)===-1)throw new RangeError(`'fetches' contains invalid output name: ${o}.`);a[o]=null}if(typeof i=="object"&&i!==null)u=i;else if(typeof i<"u")throw new TypeError("'options' must be an object.")}else{let o=!1,l=Object.getOwnPropertyNames(s);for(let c of n)if(l.indexOf(c)!==-1){let h=s[c];(h===null||h instanceof Re)&&(o=!0,d=!1,a[c]=h)}if(o){if(typeof i=="object"&&i!==null)u=i;else if(typeof i<"u")throw new TypeError("'options' must be an object.")}else u=s}}else if(typeof s<"u")throw new TypeError("Unexpected argument[1]: must be 'fetches' or 'options'.");for(let o of e)if(typeof r[o]>"u")throw new Error(`input '${o}' is missing in 'feeds'.`);if(d)for(let o of n)a[o]=null;return[a,u]}convertHandlerReturnTypeToMapOfTensors(e){let n={};for(let r in e)if(Object.hasOwnProperty.call(e,r)){let s=e[r];s instanceof Re?n[r]=s:n[r]=new Re(s.type,s.data,s.dims)}return n}async lazyResetGrad(){await this.handler.lazyResetGrad()}async runTrainStep(e,n,r){let[s,i]=this.typeNarrowingForRunStep(this.trainingInputNames,this.trainingOutputNames,e,n,r),a=await this.handler.runTrainStep(e,s,i);return this.convertHandlerReturnTypeToMapOfTensors(a)}async runOptimizerStep(e){if(this.hasOptimizerModel)await this.handler.runOptimizerStep(e||{});else throw new Error("This TrainingSession has no OptimizerModel loaded.")}async runEvalStep(e,n,r){if(this.hasEvalModel){let[s,i]=this.typeNarrowingForRunStep(this.evalInputNames,this.evalOutputNames,e,n,r),a=await this.handler.runEvalStep(e,s,i);return this.convertHandlerReturnTypeToMapOfTensors(a)}else throw new Error("This TrainingSession has no EvalModel loaded.")}async getParametersSize(e=!0){return this.handler.getParametersSize(e)}async loadParametersBuffer(e,n=!0){let r=await this.getParametersSize(n);if(e.length!==4*r)throw new Error("Size of the buffer passed into loadParametersBuffer must match the number of parameters in the model. Please use getParametersSize method to check.");return this.handler.loadParametersBuffer(e,n)}async getContiguousParameters(e=!0){return this.handler.getContiguousParameters(e)}async release(){return this.handler.dispose()}}}),Pd,gs=L(()=>{bs(),Pd=Nn}),Yo={};Pr(Yo,{InferenceSession:()=>Sd,TRACE:()=>cs,TRACE_FUNC_BEGIN:()=>ar,TRACE_FUNC_END:()=>sr,Tensor:()=>Re,TrainingSession:()=>Pd,env:()=>Z,registerBackend:()=>or});var vt=L(()=>{qa(),Ka(),hs(),kn(),jo(),ms(),gs()});function jt(t,e,n,r){if(e===void 0)return Dd(t);if(n===void 0)Rn(t,e);else if(typeof n=="number"&&r===void 0)Rn(t,e);else if(typeof n=="string"&&r===void 0)Rn(t,n,1,e);else if(typeof n=="string"&&typeof r=="number")Rn(t,n,r,e);else throw new TypeError("input is valid")}function Dd(t){return{verbose:jt.verbose.bind(null,t),info:jt.info.bind(null,t),warning:jt.warning.bind(null,t),error:jt.error.bind(null,t),fatal:jt.fatal.bind(null,t)}}function Rn(t,e,n,r){let s=en[r||""]||en[""];Ts[t]{Xo=class{log(t,e,n){}},Ko=class{log(t,e,n){console.log(`${this.color(t)} ${n?"\x1B[35m"+n+"\x1B[0m ":""}${e}`)}color(t){switch(t){case"verbose":return"\x1B[34;40mv\x1B[0m";case"info":return"\x1B[32mi\x1B[0m";case"warning":return"\x1B[30;43mw\x1B[0m";case"error":return"\x1B[31;40me\x1B[0m";case"fatal":return"\x1B[101mf\x1B[0m";default:throw new Error(`unsupported severity: ${t}`)}}},Ts={verbose:1e3,info:2e3,warning:4e3,error:5e3,fatal:6e3},Ed={none:new Xo,console:new Ko},xs={provider:"console",minimalSeverity:"warning",logDateTime:!0,logSourceLocation:!1},en={"":xs},(t=>{function e(o,l){t("verbose",o,l)}t.verbose=e;function n(o,l){t("info",o,l)}t.info=n;function r(o,l){t("warning",o,l)}t.warning=r;function s(o,l){t("error",o,l)}t.error=s;function i(o,l){t("fatal",o,l)}t.fatal=i;function a(o){en={},u("",o||{})}t.reset=a;function u(o,l){if(o==="*")a(l);else{let c=en[o]||xs;en[o]={provider:l.provider||c.provider,minimalSeverity:l.minimalSeverity||c.minimalSeverity,logDateTime:l.logDateTime===void 0?c.logDateTime:l.logDateTime,logSourceLocation:l.logSourceLocation===void 0?c.logSourceLocation:l.logSourceLocation}}}t.set=u;function d(o){let l={};o.logLevel&&(l.minimalSeverity=o.logLevel),u("",l)}t.setWithEnv=d})(jt||={}),ce=jt,Gn=class{constructor(t,e,n,r,s,i){this.category=t,this.name=e,this.startTime=n,this.endCallback=r,this.timer=s,this.ctx=i}async end(){return this.endCallback(this)}async checkTimer(){if(this.ctx===void 0||this.timer===void 0)throw new Error("No webgl timer found");return this.ctx.endTimer(),this.ctx.waitForQueryAndGetTime(this.timer)}},Un=class{constructor(t,e,n,r){this.category=t,this.name=e,this.startTime=n,this.endTime=r}},zn=class{constructor(t,e,n){this._started=!1,this._flushPointer=0,this._started=!1,this._maxNumberEvents=t===void 0?1e4:t,this._flushBatchSize=e===void 0?10:e,this._flushIntervalInMilliseconds=n===void 0?5e3:n}static create(t){return t===void 0?new this:new this(t.maxNumberEvents,t.flushBatchSize,t.flushIntervalInMilliseconds)}start(){this._started=!0,this._timingEvents=[],this._flushTime=Mn(),this._flushPointer=0}stop(){for(this._started=!1;this._flushPointer{a.then(async o=>{s&&await s.end(),u(o)},async o=>{s&&await s.end(),d(o)})});if(!i&&s){let u=s.end();if(u&&typeof u.then=="function")return new Promise((d,o)=>{u.then(()=>{d(a)},l=>{o(l)})})}return a}begin(t,e,n){if(!this._started)throw new Error("profiler is not started yet");if(n===void 0){let r=Mn();return this.flush(r),new Gn(t,e,r,s=>this.endSync(s))}else{let r=n.beginTimer();return new Gn(t,e,0,async s=>this.end(s),r,n)}}async end(t){let e=await t.checkTimer();this._timingEvents.length=this._flushBatchSize||t-this._flushTime>=this._flushIntervalInMilliseconds){for(let e=this._flushPointer;this._flushPointerperformance.now():Date.now});function vs(t,e,n){for(let r of n){let s=r[0],i=r[1],a=r[2],u=r[3],d=r[4];if(t.opType===s){for(let o of e)if((o.domain===i||o.domain==="ai.onnx"&&i==="")&&Ld(o.version,a))return{opImpl:u,opInit:d}}}throw new TypeError(`cannot resolve operator '${t.opType}' with opsets: ${e.map(r=>`${r.domain||"ai.onnx"} v${r.version}`).join(", ")}`)}function Ld(t,e){if(e.endsWith("+")){let n=Number.parseInt(e.substring(0,e.length-1),10);return!isNaN(n)&&n<=t}else if(e.split("-").length===2){let n=e.split("-"),r=Number.parseInt(n[0],10),s=Number.parseInt(n[1],10);return!isNaN(r)&&!isNaN(s)&&r<=t&&t<=s}else return Number.parseInt(e,10)===t}var ws=L(()=>{}),_s=me(t=>{t.__esModule=!0;var e=function(){function n(r){if(!r)throw new TypeError("Invalid argument; `value` has no value.");this.value=n.EMPTY,r&&n.isGuid(r)&&(this.value=r)}return n.isGuid=function(r){var s=r.toString();return r&&(r instanceof n||n.validator.test(s))},n.create=function(){return new n([n.gen(2),n.gen(1),n.gen(1),n.gen(1),n.gen(3)].join("-"))},n.createEmpty=function(){return new n("emptyguid")},n.parse=function(r){return new n(r)},n.raw=function(){return[n.gen(2),n.gen(1),n.gen(1),n.gen(1),n.gen(3)].join("-")},n.gen=function(r){for(var s="",i=0;i>>=0,(s=0<=t&&t<256)&&(r=Ss[t],r)?r:(n=le(t,0,!0),s&&(Ss[t]=n),n)):(t|=0,(s=-128<=t&&t<128)&&(r=Is[t],r)?r:(n=le(t,t<0?-1:0,!1),s&&(Is[t]=n),n))}function ft(t,e){if(isNaN(t))return e?Ut:wt;if(e){if(t<0)return Ut;if(t>=Ds)return $s}else{if(t<=-Ps)return tt;if(t+1>=Ps)return Fs}return t<0?ft(-t,e).neg():le(t%Lr|0,t/Lr|0,e)}function le(t,e,n){return new be(t,e,n)}function Qo(t,e,n){if(t.length===0)throw Error("empty string");if(typeof e=="number"?(n=e,e=!1):e=!!e,t==="NaN"||t==="Infinity"||t==="+Infinity"||t==="-Infinity")return e?Ut:wt;if(n=n||10,n<2||360)throw Error("interior hyphen");if(r===0)return Qo(t.substring(1),e,n).neg();for(var s=ft(Vn(n,8)),i=wt,a=0;a{lt=null;try{lt=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch{}be.prototype.__isLong__,Object.defineProperty(be.prototype,"__isLong__",{value:!0}),be.isLong=We,Is={},Ss={},be.fromInt=ur,be.fromNumber=ft,be.fromBits=le,Vn=Math.pow,be.fromString=Qo,be.fromValue=_t,As=65536,$d=1<<24,Lr=As*As,Ds=Lr*Lr,Ps=Ds/2,Es=ur($d),wt=ur(0),be.ZERO=wt,Ut=ur(0,!0),be.UZERO=Ut,Dr=ur(1),be.ONE=Dr,Ls=ur(1,!0),be.UONE=Ls,Zo=ur(-1),be.NEG_ONE=Zo,Fs=le(-1,2147483647,!1),be.MAX_VALUE=Fs,$s=le(-1,-1,!0),be.MAX_UNSIGNED_VALUE=$s,tt=le(0,-2147483648,!1),be.MIN_VALUE=tt,$=be.prototype,$.toInt=function(){return this.unsigned?this.low>>>0:this.low},$.toNumber=function(){return this.unsigned?(this.high>>>0)*Lr+(this.low>>>0):this.high*Lr+(this.low>>>0)},$.toString=function(t){if(t=t||10,t<2||36>>0,o=d.toString(t);if(i=u,i.isZero())return o+a;for(;o.length<6;)o="0"+o;a=""+o+a}},$.getHighBits=function(){return this.high},$.getHighBitsUnsigned=function(){return this.high>>>0},$.getLowBits=function(){return this.low},$.getLowBitsUnsigned=function(){return this.low>>>0},$.getNumBitsAbs=function(){if(this.isNegative())return this.eq(tt)?64:this.neg().getNumBitsAbs();for(var t=this.high!=0?this.high:this.low,e=31;e>0&&!(t&1<=0},$.isOdd=function(){return(this.low&1)===1},$.isEven=function(){return(this.low&1)===0},$.equals=function(t){return We(t)||(t=_t(t)),this.unsigned!==t.unsigned&&this.high>>>31===1&&t.high>>>31===1?!1:this.high===t.high&&this.low===t.low},$.eq=$.equals,$.notEquals=function(t){return!this.eq(t)},$.neq=$.notEquals,$.ne=$.notEquals,$.lessThan=function(t){return this.comp(t)<0},$.lt=$.lessThan,$.lessThanOrEqual=function(t){return this.comp(t)<=0},$.lte=$.lessThanOrEqual,$.le=$.lessThanOrEqual,$.greaterThan=function(t){return this.comp(t)>0},$.gt=$.greaterThan,$.greaterThanOrEqual=function(t){return this.comp(t)>=0},$.gte=$.greaterThanOrEqual,$.ge=$.greaterThanOrEqual,$.compare=function(t){if(We(t)||(t=_t(t)),this.eq(t))return 0;var e=this.isNegative(),n=t.isNegative();return e&&!n?-1:!e&&n?1:this.unsigned?t.high>>>0>this.high>>>0||t.high===this.high&&t.low>>>0>this.low>>>0?-1:1:this.sub(t).isNegative()?-1:1},$.comp=$.compare,$.negate=function(){return!this.unsigned&&this.eq(tt)?tt:this.not().add(Dr)},$.neg=$.negate,$.add=function(t){We(t)||(t=_t(t));var e=this.high>>>16,n=this.high&65535,r=this.low>>>16,s=this.low&65535,i=t.high>>>16,a=t.high&65535,u=t.low>>>16,d=t.low&65535,o=0,l=0,c=0,h=0;return h+=s+d,c+=h>>>16,h&=65535,c+=r+u,l+=c>>>16,c&=65535,l+=n+a,o+=l>>>16,l&=65535,o+=e+i,o&=65535,le(c<<16|h,o<<16|l,this.unsigned)},$.subtract=function(t){return We(t)||(t=_t(t)),this.add(t.neg())},$.sub=$.subtract,$.multiply=function(t){if(this.isZero())return this;if(We(t)||(t=_t(t)),lt){var e=lt.mul(this.low,this.high,t.low,t.high);return le(e,lt.get_high(),this.unsigned)}if(t.isZero())return this.unsigned?Ut:wt;if(this.eq(tt))return t.isOdd()?tt:wt;if(t.eq(tt))return this.isOdd()?tt:wt;if(this.isNegative())return t.isNegative()?this.neg().mul(t.neg()):this.neg().mul(t).neg();if(t.isNegative())return this.mul(t.neg()).neg();if(this.lt(Es)&&t.lt(Es))return ft(this.toNumber()*t.toNumber(),this.unsigned);var n=this.high>>>16,r=this.high&65535,s=this.low>>>16,i=this.low&65535,a=t.high>>>16,u=t.high&65535,d=t.low>>>16,o=t.low&65535,l=0,c=0,h=0,f=0;return f+=i*o,h+=f>>>16,f&=65535,h+=s*o,c+=h>>>16,h&=65535,h+=i*d,c+=h>>>16,h&=65535,c+=r*o,l+=c>>>16,c&=65535,c+=s*d,l+=c>>>16,c&=65535,c+=i*u,l+=c>>>16,c&=65535,l+=n*o+r*d+s*u+i*a,l&=65535,le(h<<16|f,l<<16|c,this.unsigned)},$.mul=$.multiply,$.divide=function(t){if(We(t)||(t=_t(t)),t.isZero())throw Error("division by zero");if(lt){if(!this.unsigned&&this.high===-2147483648&&t.low===-1&&t.high===-1)return this;var e=(this.unsigned?lt.div_u:lt.div_s)(this.low,this.high,t.low,t.high);return le(e,lt.get_high(),this.unsigned)}if(this.isZero())return this.unsigned?Ut:wt;var n,r,s;if(this.unsigned){if(t.unsigned||(t=t.toUnsigned()),t.gt(this))return Ut;if(t.gt(this.shru(1)))return Ls;s=Ut}else{if(this.eq(tt)){if(t.eq(Dr)||t.eq(Zo))return tt;if(t.eq(tt))return Dr;var i=this.shr(1);return n=i.div(t).shl(1),n.eq(wt)?t.isNegative()?Dr:Zo:(r=this.sub(t.mul(n)),s=n.add(r.div(t)),s)}else if(t.eq(tt))return this.unsigned?Ut:wt;if(this.isNegative())return t.isNegative()?this.neg().div(t.neg()):this.neg().div(t).neg();if(t.isNegative())return this.div(t.neg()).neg();s=wt}for(r=this;r.gte(t);){n=Math.max(1,Math.floor(r.toNumber()/t.toNumber()));for(var a=Math.ceil(Math.log(n)/Math.LN2),u=a<=48?1:Vn(2,a-48),d=ft(n),o=d.mul(t);o.isNegative()||o.gt(r);)n-=u,d=ft(n,this.unsigned),o=d.mul(t);d.isZero()&&(d=Dr),s=s.add(d),r=r.sub(o)}return s},$.div=$.divide,$.modulo=function(t){if(We(t)||(t=_t(t)),lt){var e=(this.unsigned?lt.rem_u:lt.rem_s)(this.low,this.high,t.low,t.high);return le(e,lt.get_high(),this.unsigned)}return this.sub(this.div(t).mul(t))},$.mod=$.modulo,$.rem=$.modulo,$.not=function(){return le(~this.low,~this.high,this.unsigned)},$.countLeadingZeros=function(){return this.high?Math.clz32(this.high):Math.clz32(this.low)+32},$.clz=$.countLeadingZeros,$.countTrailingZeros=function(){return this.low?Os(this.low):Os(this.high)+32},$.ctz=$.countTrailingZeros,$.and=function(t){return We(t)||(t=_t(t)),le(this.low&t.low,this.high&t.high,this.unsigned)},$.or=function(t){return We(t)||(t=_t(t)),le(this.low|t.low,this.high|t.high,this.unsigned)},$.xor=function(t){return We(t)||(t=_t(t)),le(this.low^t.low,this.high^t.high,this.unsigned)},$.shiftLeft=function(t){return We(t)&&(t=t.toInt()),(t&=63)===0?this:t<32?le(this.low<>>32-t,this.unsigned):le(0,this.low<>>t|this.high<<32-t,this.high>>t,this.unsigned):le(this.high>>t-32,this.high>=0?0:-1,this.unsigned)},$.shr=$.shiftRight,$.shiftRightUnsigned=function(t){return We(t)&&(t=t.toInt()),(t&=63)===0?this:t<32?le(this.low>>>t|this.high<<32-t,this.high>>>t,this.unsigned):t===32?le(this.high,0,this.unsigned):le(this.high>>>t-32,0,this.unsigned)},$.shru=$.shiftRightUnsigned,$.shr_u=$.shiftRightUnsigned,$.rotateLeft=function(t){var e;return We(t)&&(t=t.toInt()),(t&=63)===0?this:t===32?le(this.high,this.low,this.unsigned):t<32?(e=32-t,le(this.low<>>e,this.high<>>e,this.unsigned)):(t-=32,e=32-t,le(this.high<>>e,this.low<>>e,this.unsigned))},$.rotl=$.rotateLeft,$.rotateRight=function(t){var e;return We(t)&&(t=t.toInt()),(t&=63)===0?this:t===32?le(this.high,this.low,this.unsigned):t<32?(e=32-t,le(this.high<>>t,this.low<>>t,this.unsigned)):(t-=32,e=32-t,le(this.low<>>t,this.high<>>t,this.unsigned))},$.rotr=$.rotateRight,$.toSigned=function(){return this.unsigned?le(this.low,this.high,!1):this},$.toUnsigned=function(){return this.unsigned?this:le(this.low,this.high,!0)},$.toBytes=function(t){return t?this.toBytesLE():this.toBytesBE()},$.toBytesLE=function(){var t=this.high,e=this.low;return[e&255,e>>>8&255,e>>>16&255,e>>>24,t&255,t>>>8&255,t>>>16&255,t>>>24]},$.toBytesBE=function(){var t=this.high,e=this.low;return[t>>>24,t>>>16&255,t>>>8&255,t&255,e>>>24,e>>>16&255,e>>>8&255,e&255]},be.fromBytes=function(t,e,n){return n?be.fromBytesLE(t,e):be.fromBytesBE(t,e)},be.fromBytesLE=function(t,e){return new be(t[0]|t[1]<<8|t[2]<<16|t[3]<<24,t[4]|t[5]<<8|t[6]<<16|t[7]<<24,e)},be.fromBytesBE=function(t,e){return new be(t[4]<<24|t[5]<<16|t[6]<<8|t[7],t[0]<<24|t[1]<<16|t[2]<<8|t[3],e)},zt=be}),_,Wn=L(()=>{_={},_.Offset,_.Table,_.SIZEOF_SHORT=2,_.SIZEOF_INT=4,_.FILE_IDENTIFIER_LENGTH=4,_.SIZE_PREFIX_LENGTH=4,_.Encoding={UTF8_BYTES:1,UTF16_STRING:2},_.int32=new Int32Array(2),_.float32=new Float32Array(_.int32.buffer),_.float64=new Float64Array(_.int32.buffer),_.isLittleEndian=new Uint16Array(new Uint8Array([1,0]).buffer)[0]===1,_.Long=function(t,e){this.low=t|0,this.high=e|0},_.Long.create=function(t,e){return t==0&&e==0?_.Long.ZERO:new _.Long(t,e)},_.Long.prototype.toFloat64=function(){return(this.low>>>0)+this.high*4294967296},_.Long.prototype.equals=function(t){return this.low==t.low&&this.high==t.high},_.Long.ZERO=new _.Long(0,0),_.Builder=function(t){if(t)var e=t;else var e=1024;this.bb=_.ByteBuffer.allocate(e),this.space=e,this.minalign=1,this.vtable=null,this.vtable_in_use=0,this.isNested=!1,this.object_start=0,this.vtables=[],this.vector_num_elems=0,this.force_defaults=!1},_.Builder.prototype.clear=function(){this.bb.clear(),this.space=this.bb.capacity(),this.minalign=1,this.vtable=null,this.vtable_in_use=0,this.isNested=!1,this.object_start=0,this.vtables=[],this.vector_num_elems=0,this.force_defaults=!1},_.Builder.prototype.forceDefaults=function(t){this.force_defaults=t},_.Builder.prototype.dataBuffer=function(){return this.bb},_.Builder.prototype.asUint8Array=function(){return this.bb.bytes().subarray(this.bb.position(),this.bb.position()+this.offset())},_.Builder.prototype.prep=function(t,e){t>this.minalign&&(this.minalign=t);for(var n=~(this.bb.capacity()-this.space+e)+1&t-1;this.space=0&&this.vtable[e]==0;e--);for(var n=e+1;e>=0;e--)this.addInt16(this.vtable[e]!=0?t-this.vtable[e]:0);var r=2;this.addInt16(t-this.object_start);var s=(n+r)*_.SIZEOF_SHORT;this.addInt16(s);var i=0,a=this.space;e:for(e=0;e=0;i--)this.writeInt8(s.charCodeAt(i))}this.prep(this.minalign,_.SIZEOF_INT+r),this.addOffset(t),r&&this.addInt32(this.bb.capacity()-this.space),this.bb.setPosition(this.space)},_.Builder.prototype.finishSizePrefixed=function(t,e){this.finish(t,e,!0)},_.Builder.prototype.requiredField=function(t,e){var n=this.bb.capacity()-t,r=n-this.bb.readInt32(n),s=this.bb.readInt16(r+e)!=0;if(!s)throw new Error("FlatBuffers: field "+e+" must be set")},_.Builder.prototype.startVector=function(t,e,n){this.notNested(),this.vector_num_elems=e,this.prep(_.SIZEOF_INT,t*e),this.prep(n,t*e)},_.Builder.prototype.endVector=function(){return this.writeInt32(this.vector_num_elems),this.offset()},_.Builder.prototype.createString=function(t){if(t instanceof Uint8Array)var e=t;else for(var e=[],n=0;n=56320)r=s;else{var i=t.charCodeAt(n++);r=(s<<10)+i+-56613888}r<128?e.push(r):(r<2048?e.push(r>>6&31|192):(r<65536?e.push(r>>12&15|224):e.push(r>>18&7|240,r>>12&63|128),e.push(r>>6&63|128)),e.push(r&63|128))}this.addInt8(0),this.startVector(1,e.length,1),this.bb.setPosition(this.space-=e.length);for(var n=0,a=this.space,u=this.bb.bytes();n>24},_.ByteBuffer.prototype.readUint8=function(t){return this.bytes_[t]},_.ByteBuffer.prototype.readInt16=function(t){return this.readUint16(t)<<16>>16},_.ByteBuffer.prototype.readUint16=function(t){return this.bytes_[t]|this.bytes_[t+1]<<8},_.ByteBuffer.prototype.readInt32=function(t){return this.bytes_[t]|this.bytes_[t+1]<<8|this.bytes_[t+2]<<16|this.bytes_[t+3]<<24},_.ByteBuffer.prototype.readUint32=function(t){return this.readInt32(t)>>>0},_.ByteBuffer.prototype.readInt64=function(t){return new _.Long(this.readInt32(t),this.readInt32(t+4))},_.ByteBuffer.prototype.readUint64=function(t){return new _.Long(this.readUint32(t),this.readUint32(t+4))},_.ByteBuffer.prototype.readFloat32=function(t){return _.int32[0]=this.readInt32(t),_.float32[0]},_.ByteBuffer.prototype.readFloat64=function(t){return _.int32[_.isLittleEndian?0:1]=this.readInt32(t),_.int32[_.isLittleEndian?1:0]=this.readInt32(t+4),_.float64[0]},_.ByteBuffer.prototype.writeInt8=function(t,e){this.bytes_[t]=e},_.ByteBuffer.prototype.writeUint8=function(t,e){this.bytes_[t]=e},_.ByteBuffer.prototype.writeInt16=function(t,e){this.bytes_[t]=e,this.bytes_[t+1]=e>>8},_.ByteBuffer.prototype.writeUint16=function(t,e){this.bytes_[t]=e,this.bytes_[t+1]=e>>8},_.ByteBuffer.prototype.writeInt32=function(t,e){this.bytes_[t]=e,this.bytes_[t+1]=e>>8,this.bytes_[t+2]=e>>16,this.bytes_[t+3]=e>>24},_.ByteBuffer.prototype.writeUint32=function(t,e){this.bytes_[t]=e,this.bytes_[t+1]=e>>8,this.bytes_[t+2]=e>>16,this.bytes_[t+3]=e>>24},_.ByteBuffer.prototype.writeInt64=function(t,e){this.writeInt32(t,e.low),this.writeInt32(t+4,e.high)},_.ByteBuffer.prototype.writeUint64=function(t,e){this.writeUint32(t,e.low),this.writeUint32(t+4,e.high)},_.ByteBuffer.prototype.writeFloat32=function(t,e){_.float32[0]=e,this.writeInt32(t,_.int32[0])},_.ByteBuffer.prototype.writeFloat64=function(t,e){_.float64[0]=e,this.writeInt32(t,_.int32[_.isLittleEndian?0:1]),this.writeInt32(t+4,_.int32[_.isLittleEndian?1:0])},_.ByteBuffer.prototype.getBufferIdentifier=function(){if(this.bytes_.length>10)+55296,(i&1023)+56320))}return r},_.ByteBuffer.prototype.__indirect=function(t){return t+this.readInt32(t)},_.ByteBuffer.prototype.__vector=function(t){return t+this.readInt32(t)+_.SIZEOF_INT},_.ByteBuffer.prototype.__vector_len=function(t){return this.readInt32(t+this.readInt32(t))},_.ByteBuffer.prototype.__has_identifier=function(t){if(t.length!=_.FILE_IDENTIFIER_LENGTH)throw new Error("FlatBuffers: file identifier must be length "+_.FILE_IDENTIFIER_LENGTH);for(var e=0;e<_.FILE_IDENTIFIER_LENGTH;e++)if(t.charCodeAt(e)!=this.readInt8(this.position_+_.SIZEOF_INT+e))return!1;return!0},_.ByteBuffer.prototype.createLong=function(t,e){return _.Long.create(t,e)}}),W,tn=L(()=>{Wn(),(t=>{(e=>{(n=>{(r=>(r[r.UNDEFINED=0]="UNDEFINED",r[r.FLOAT=1]="FLOAT",r[r.INT=2]="INT",r[r.STRING=3]="STRING",r[r.TENSOR=4]="TENSOR",r[r.GRAPH=5]="GRAPH",r[r.FLOATS=6]="FLOATS",r[r.INTS=7]="INTS",r[r.STRINGS=8]="STRINGS",r[r.TENSORS=9]="TENSORS",r[r.GRAPHS=10]="GRAPHS",r[r.SPARSE_TENSOR=11]="SPARSE_TENSOR",r[r.SPARSE_TENSORS=12]="SPARSE_TENSORS"))(n.AttributeType||={})})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{(r=>(r[r.UNKNOWN=0]="UNKNOWN",r[r.VALUE=1]="VALUE",r[r.PARAM=2]="PARAM"))(n.DimensionValueType||={})})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{(r=>(r[r.UNDEFINED=0]="UNDEFINED",r[r.FLOAT=1]="FLOAT",r[r.UINT8=2]="UINT8",r[r.INT8=3]="INT8",r[r.UINT16=4]="UINT16",r[r.INT16=5]="INT16",r[r.INT32=6]="INT32",r[r.INT64=7]="INT64",r[r.STRING=8]="STRING",r[r.BOOL=9]="BOOL",r[r.FLOAT16=10]="FLOAT16",r[r.DOUBLE=11]="DOUBLE",r[r.UINT32=12]="UINT32",r[r.UINT64=13]="UINT64",r[r.COMPLEX64=14]="COMPLEX64",r[r.COMPLEX128=15]="COMPLEX128",r[r.BFLOAT16=16]="BFLOAT16",r[r.FLOAT8E4M3FN=17]="FLOAT8E4M3FN",r[r.FLOAT8E4M3FNUZ=18]="FLOAT8E4M3FNUZ",r[r.FLOAT8E5M2=19]="FLOAT8E5M2",r[r.FLOAT8E5M2FNUZ=20]="FLOAT8E5M2FNUZ"))(n.TensorDataType||={})})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{(r=>(r[r.Primitive=0]="Primitive",r[r.Fused=1]="Fused"))(n.NodeType||={})})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{(r=>(r[r.NONE=0]="NONE",r[r.tensor_type=1]="tensor_type",r[r.sequence_type=2]="sequence_type",r[r.map_type=3]="map_type"))(n.TypeInfoValue||={})})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsShape(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsShape(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}dim(i,a){let u=this.bb.__offset(this.bb_pos,4);return u?(a||new t.experimental.fbs.Dimension).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+u)+i*4),this.bb):null}dimLength(){let i=this.bb.__offset(this.bb_pos,4);return i?this.bb.__vector_len(this.bb_pos+i):0}static startShape(i){i.startObject(1)}static addDim(i,a){i.addFieldOffset(0,a,0)}static createDimVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startDimVector(i,a){i.startVector(4,a,4)}static endShape(i){return i.endObject()}static createShape(i,a){return r.startShape(i),r.addDim(i,a),r.endShape(i)}}n.Shape=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsDimension(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsDimension(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}value(i){let a=this.bb.__offset(this.bb_pos,4);return a?(i||new t.experimental.fbs.DimensionValue).__init(this.bb.__indirect(this.bb_pos+a),this.bb):null}denotation(i){let a=this.bb.__offset(this.bb_pos,6);return a?this.bb.__string(this.bb_pos+a,i):null}static startDimension(i){i.startObject(2)}static addValue(i,a){i.addFieldOffset(0,a,0)}static addDenotation(i,a){i.addFieldOffset(1,a,0)}static endDimension(i){return i.endObject()}static createDimension(i,a,u){return r.startDimension(i),r.addValue(i,a),r.addDenotation(i,u),r.endDimension(i)}}n.Dimension=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsDimensionValue(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsDimensionValue(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}dimType(){let i=this.bb.__offset(this.bb_pos,4);return i?this.bb.readInt8(this.bb_pos+i):0}dimValue(){let i=this.bb.__offset(this.bb_pos,6);return i?this.bb.readInt64(this.bb_pos+i):this.bb.createLong(0,0)}dimParam(i){let a=this.bb.__offset(this.bb_pos,8);return a?this.bb.__string(this.bb_pos+a,i):null}static startDimensionValue(i){i.startObject(3)}static addDimType(i,a){i.addFieldInt8(0,a,0)}static addDimValue(i,a){i.addFieldInt64(1,a,i.createLong(0,0))}static addDimParam(i,a){i.addFieldOffset(2,a,0)}static endDimensionValue(i){return i.endObject()}static createDimensionValue(i,a,u,d){return r.startDimensionValue(i),r.addDimType(i,a),r.addDimValue(i,u),r.addDimParam(i,d),r.endDimensionValue(i)}}n.DimensionValue=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsTensorTypeAndShape(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsTensorTypeAndShape(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}elemType(){let i=this.bb.__offset(this.bb_pos,4);return i?this.bb.readInt32(this.bb_pos+i):0}shape(i){let a=this.bb.__offset(this.bb_pos,6);return a?(i||new t.experimental.fbs.Shape).__init(this.bb.__indirect(this.bb_pos+a),this.bb):null}static startTensorTypeAndShape(i){i.startObject(2)}static addElemType(i,a){i.addFieldInt32(0,a,0)}static addShape(i,a){i.addFieldOffset(1,a,0)}static endTensorTypeAndShape(i){return i.endObject()}static createTensorTypeAndShape(i,a,u){return r.startTensorTypeAndShape(i),r.addElemType(i,a),r.addShape(i,u),r.endTensorTypeAndShape(i)}}n.TensorTypeAndShape=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsMapType(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsMapType(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}keyType(){let i=this.bb.__offset(this.bb_pos,4);return i?this.bb.readInt32(this.bb_pos+i):0}valueType(i){let a=this.bb.__offset(this.bb_pos,6);return a?(i||new t.experimental.fbs.TypeInfo).__init(this.bb.__indirect(this.bb_pos+a),this.bb):null}static startMapType(i){i.startObject(2)}static addKeyType(i,a){i.addFieldInt32(0,a,0)}static addValueType(i,a){i.addFieldOffset(1,a,0)}static endMapType(i){return i.endObject()}static createMapType(i,a,u){return r.startMapType(i),r.addKeyType(i,a),r.addValueType(i,u),r.endMapType(i)}}n.MapType=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsSequenceType(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsSequenceType(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}elemType(i){let a=this.bb.__offset(this.bb_pos,4);return a?(i||new t.experimental.fbs.TypeInfo).__init(this.bb.__indirect(this.bb_pos+a),this.bb):null}static startSequenceType(i){i.startObject(1)}static addElemType(i,a){i.addFieldOffset(0,a,0)}static endSequenceType(i){return i.endObject()}static createSequenceType(i,a){return r.startSequenceType(i),r.addElemType(i,a),r.endSequenceType(i)}}n.SequenceType=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}nodeIndex(){return this.bb.readUint32(this.bb_pos)}srcArgIndex(){return this.bb.readInt32(this.bb_pos+4)}dstArgIndex(){return this.bb.readInt32(this.bb_pos+8)}static createEdgeEnd(i,a,u,d){return i.prep(4,12),i.writeInt32(d),i.writeInt32(u),i.writeInt32(a),i.offset()}}n.EdgeEnd=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsNodeEdge(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsNodeEdge(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}nodeIndex(){let i=this.bb.__offset(this.bb_pos,4);return i?this.bb.readUint32(this.bb_pos+i):0}inputEdges(i,a){let u=this.bb.__offset(this.bb_pos,6);return u?(a||new t.experimental.fbs.EdgeEnd).__init(this.bb.__vector(this.bb_pos+u)+i*12,this.bb):null}inputEdgesLength(){let i=this.bb.__offset(this.bb_pos,6);return i?this.bb.__vector_len(this.bb_pos+i):0}outputEdges(i,a){let u=this.bb.__offset(this.bb_pos,8);return u?(a||new t.experimental.fbs.EdgeEnd).__init(this.bb.__vector(this.bb_pos+u)+i*12,this.bb):null}outputEdgesLength(){let i=this.bb.__offset(this.bb_pos,8);return i?this.bb.__vector_len(this.bb_pos+i):0}static startNodeEdge(i){i.startObject(3)}static addNodeIndex(i,a){i.addFieldInt32(0,a,0)}static addInputEdges(i,a){i.addFieldOffset(1,a,0)}static startInputEdgesVector(i,a){i.startVector(12,a,4)}static addOutputEdges(i,a){i.addFieldOffset(2,a,0)}static startOutputEdgesVector(i,a){i.startVector(12,a,4)}static endNodeEdge(i){return i.endObject()}static createNodeEdge(i,a,u,d){return r.startNodeEdge(i),r.addNodeIndex(i,a),r.addInputEdges(i,u),r.addOutputEdges(i,d),r.endNodeEdge(i)}}n.NodeEdge=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsNode(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsNode(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}name(i){let a=this.bb.__offset(this.bb_pos,4);return a?this.bb.__string(this.bb_pos+a,i):null}docString(i){let a=this.bb.__offset(this.bb_pos,6);return a?this.bb.__string(this.bb_pos+a,i):null}domain(i){let a=this.bb.__offset(this.bb_pos,8);return a?this.bb.__string(this.bb_pos+a,i):null}sinceVersion(){let i=this.bb.__offset(this.bb_pos,10);return i?this.bb.readInt32(this.bb_pos+i):0}index(){let i=this.bb.__offset(this.bb_pos,12);return i?this.bb.readUint32(this.bb_pos+i):0}opType(i){let a=this.bb.__offset(this.bb_pos,14);return a?this.bb.__string(this.bb_pos+a,i):null}type(){let i=this.bb.__offset(this.bb_pos,16);return i?this.bb.readInt32(this.bb_pos+i):0}executionProviderType(i){let a=this.bb.__offset(this.bb_pos,18);return a?this.bb.__string(this.bb_pos+a,i):null}inputs(i,a){let u=this.bb.__offset(this.bb_pos,20);return u?this.bb.__string(this.bb.__vector(this.bb_pos+u)+i*4,a):null}inputsLength(){let i=this.bb.__offset(this.bb_pos,20);return i?this.bb.__vector_len(this.bb_pos+i):0}outputs(i,a){let u=this.bb.__offset(this.bb_pos,22);return u?this.bb.__string(this.bb.__vector(this.bb_pos+u)+i*4,a):null}outputsLength(){let i=this.bb.__offset(this.bb_pos,22);return i?this.bb.__vector_len(this.bb_pos+i):0}attributes(i,a){let u=this.bb.__offset(this.bb_pos,24);return u?(a||new t.experimental.fbs.Attribute).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+u)+i*4),this.bb):null}attributesLength(){let i=this.bb.__offset(this.bb_pos,24);return i?this.bb.__vector_len(this.bb_pos+i):0}inputArgCounts(i){let a=this.bb.__offset(this.bb_pos,26);return a?this.bb.readInt32(this.bb.__vector(this.bb_pos+a)+i*4):0}inputArgCountsLength(){let i=this.bb.__offset(this.bb_pos,26);return i?this.bb.__vector_len(this.bb_pos+i):0}inputArgCountsArray(){let i=this.bb.__offset(this.bb_pos,26);return i?new Int32Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+i),this.bb.__vector_len(this.bb_pos+i)):null}implicitInputs(i,a){let u=this.bb.__offset(this.bb_pos,28);return u?this.bb.__string(this.bb.__vector(this.bb_pos+u)+i*4,a):null}implicitInputsLength(){let i=this.bb.__offset(this.bb_pos,28);return i?this.bb.__vector_len(this.bb_pos+i):0}static startNode(i){i.startObject(13)}static addName(i,a){i.addFieldOffset(0,a,0)}static addDocString(i,a){i.addFieldOffset(1,a,0)}static addDomain(i,a){i.addFieldOffset(2,a,0)}static addSinceVersion(i,a){i.addFieldInt32(3,a,0)}static addIndex(i,a){i.addFieldInt32(4,a,0)}static addOpType(i,a){i.addFieldOffset(5,a,0)}static addType(i,a){i.addFieldInt32(6,a,0)}static addExecutionProviderType(i,a){i.addFieldOffset(7,a,0)}static addInputs(i,a){i.addFieldOffset(8,a,0)}static createInputsVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startInputsVector(i,a){i.startVector(4,a,4)}static addOutputs(i,a){i.addFieldOffset(9,a,0)}static createOutputsVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startOutputsVector(i,a){i.startVector(4,a,4)}static addAttributes(i,a){i.addFieldOffset(10,a,0)}static createAttributesVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startAttributesVector(i,a){i.startVector(4,a,4)}static addInputArgCounts(i,a){i.addFieldOffset(11,a,0)}static createInputArgCountsVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addInt32(a[u]);return i.endVector()}static startInputArgCountsVector(i,a){i.startVector(4,a,4)}static addImplicitInputs(i,a){i.addFieldOffset(12,a,0)}static createImplicitInputsVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startImplicitInputsVector(i,a){i.startVector(4,a,4)}static endNode(i){return i.endObject()}static createNode(i,a,u,d,o,l,c,h,f,p,g,b,w,y){return r.startNode(i),r.addName(i,a),r.addDocString(i,u),r.addDomain(i,d),r.addSinceVersion(i,o),r.addIndex(i,l),r.addOpType(i,c),r.addType(i,h),r.addExecutionProviderType(i,f),r.addInputs(i,p),r.addOutputs(i,g),r.addAttributes(i,b),r.addInputArgCounts(i,w),r.addImplicitInputs(i,y),r.endNode(i)}}n.Node=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsValueInfo(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsValueInfo(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}name(i){let a=this.bb.__offset(this.bb_pos,4);return a?this.bb.__string(this.bb_pos+a,i):null}docString(i){let a=this.bb.__offset(this.bb_pos,6);return a?this.bb.__string(this.bb_pos+a,i):null}type(i){let a=this.bb.__offset(this.bb_pos,8);return a?(i||new t.experimental.fbs.TypeInfo).__init(this.bb.__indirect(this.bb_pos+a),this.bb):null}static startValueInfo(i){i.startObject(3)}static addName(i,a){i.addFieldOffset(0,a,0)}static addDocString(i,a){i.addFieldOffset(1,a,0)}static addType(i,a){i.addFieldOffset(2,a,0)}static endValueInfo(i){return i.endObject()}static createValueInfo(i,a,u,d){return r.startValueInfo(i),r.addName(i,a),r.addDocString(i,u),r.addType(i,d),r.endValueInfo(i)}}n.ValueInfo=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsTypeInfo(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsTypeInfo(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}denotation(i){let a=this.bb.__offset(this.bb_pos,4);return a?this.bb.__string(this.bb_pos+a,i):null}valueType(){let i=this.bb.__offset(this.bb_pos,6);return i?this.bb.readUint8(this.bb_pos+i):0}value(i){let a=this.bb.__offset(this.bb_pos,8);return a?this.bb.__union(i,this.bb_pos+a):null}static startTypeInfo(i){i.startObject(3)}static addDenotation(i,a){i.addFieldOffset(0,a,0)}static addValueType(i,a){i.addFieldInt8(1,a,0)}static addValue(i,a){i.addFieldOffset(2,a,0)}static endTypeInfo(i){return i.endObject()}static createTypeInfo(i,a,u,d){return r.startTypeInfo(i),r.addDenotation(i,a),r.addValueType(i,u),r.addValue(i,d),r.endTypeInfo(i)}}n.TypeInfo=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsOperatorSetId(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsOperatorSetId(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}domain(i){let a=this.bb.__offset(this.bb_pos,4);return a?this.bb.__string(this.bb_pos+a,i):null}version(){let i=this.bb.__offset(this.bb_pos,6);return i?this.bb.readInt64(this.bb_pos+i):this.bb.createLong(0,0)}static startOperatorSetId(i){i.startObject(2)}static addDomain(i,a){i.addFieldOffset(0,a,0)}static addVersion(i,a){i.addFieldInt64(1,a,i.createLong(0,0))}static endOperatorSetId(i){return i.endObject()}static createOperatorSetId(i,a,u){return r.startOperatorSetId(i),r.addDomain(i,a),r.addVersion(i,u),r.endOperatorSetId(i)}}n.OperatorSetId=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsTensor(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsTensor(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}name(i){let a=this.bb.__offset(this.bb_pos,4);return a?this.bb.__string(this.bb_pos+a,i):null}docString(i){let a=this.bb.__offset(this.bb_pos,6);return a?this.bb.__string(this.bb_pos+a,i):null}dims(i){let a=this.bb.__offset(this.bb_pos,8);return a?this.bb.readInt64(this.bb.__vector(this.bb_pos+a)+i*8):this.bb.createLong(0,0)}dimsLength(){let i=this.bb.__offset(this.bb_pos,8);return i?this.bb.__vector_len(this.bb_pos+i):0}dataType(){let i=this.bb.__offset(this.bb_pos,10);return i?this.bb.readInt32(this.bb_pos+i):0}rawData(i){let a=this.bb.__offset(this.bb_pos,12);return a?this.bb.readUint8(this.bb.__vector(this.bb_pos+a)+i):0}rawDataLength(){let i=this.bb.__offset(this.bb_pos,12);return i?this.bb.__vector_len(this.bb_pos+i):0}rawDataArray(){let i=this.bb.__offset(this.bb_pos,12);return i?new Uint8Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+i),this.bb.__vector_len(this.bb_pos+i)):null}stringData(i,a){let u=this.bb.__offset(this.bb_pos,14);return u?this.bb.__string(this.bb.__vector(this.bb_pos+u)+i*4,a):null}stringDataLength(){let i=this.bb.__offset(this.bb_pos,14);return i?this.bb.__vector_len(this.bb_pos+i):0}static startTensor(i){i.startObject(6)}static addName(i,a){i.addFieldOffset(0,a,0)}static addDocString(i,a){i.addFieldOffset(1,a,0)}static addDims(i,a){i.addFieldOffset(2,a,0)}static createDimsVector(i,a){i.startVector(8,a.length,8);for(let u=a.length-1;u>=0;u--)i.addInt64(a[u]);return i.endVector()}static startDimsVector(i,a){i.startVector(8,a,8)}static addDataType(i,a){i.addFieldInt32(3,a,0)}static addRawData(i,a){i.addFieldOffset(4,a,0)}static createRawDataVector(i,a){i.startVector(1,a.length,1);for(let u=a.length-1;u>=0;u--)i.addInt8(a[u]);return i.endVector()}static startRawDataVector(i,a){i.startVector(1,a,1)}static addStringData(i,a){i.addFieldOffset(5,a,0)}static createStringDataVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startStringDataVector(i,a){i.startVector(4,a,4)}static endTensor(i){return i.endObject()}static createTensor(i,a,u,d,o,l,c){return r.startTensor(i),r.addName(i,a),r.addDocString(i,u),r.addDims(i,d),r.addDataType(i,o),r.addRawData(i,l),r.addStringData(i,c),r.endTensor(i)}}n.Tensor=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsSparseTensor(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsSparseTensor(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}values(i){let a=this.bb.__offset(this.bb_pos,4);return a?(i||new t.experimental.fbs.Tensor).__init(this.bb.__indirect(this.bb_pos+a),this.bb):null}indices(i){let a=this.bb.__offset(this.bb_pos,6);return a?(i||new t.experimental.fbs.Tensor).__init(this.bb.__indirect(this.bb_pos+a),this.bb):null}dims(i){let a=this.bb.__offset(this.bb_pos,8);return a?this.bb.readInt64(this.bb.__vector(this.bb_pos+a)+i*8):this.bb.createLong(0,0)}dimsLength(){let i=this.bb.__offset(this.bb_pos,8);return i?this.bb.__vector_len(this.bb_pos+i):0}static startSparseTensor(i){i.startObject(3)}static addValues(i,a){i.addFieldOffset(0,a,0)}static addIndices(i,a){i.addFieldOffset(1,a,0)}static addDims(i,a){i.addFieldOffset(2,a,0)}static createDimsVector(i,a){i.startVector(8,a.length,8);for(let u=a.length-1;u>=0;u--)i.addInt64(a[u]);return i.endVector()}static startDimsVector(i,a){i.startVector(8,a,8)}static endSparseTensor(i){return i.endObject()}static createSparseTensor(i,a,u,d){return r.startSparseTensor(i),r.addValues(i,a),r.addIndices(i,u),r.addDims(i,d),r.endSparseTensor(i)}}n.SparseTensor=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsAttribute(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsAttribute(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}name(i){let a=this.bb.__offset(this.bb_pos,4);return a?this.bb.__string(this.bb_pos+a,i):null}docString(i){let a=this.bb.__offset(this.bb_pos,6);return a?this.bb.__string(this.bb_pos+a,i):null}type(){let i=this.bb.__offset(this.bb_pos,8);return i?this.bb.readInt32(this.bb_pos+i):0}f(){let i=this.bb.__offset(this.bb_pos,10);return i?this.bb.readFloat32(this.bb_pos+i):0}i(){let i=this.bb.__offset(this.bb_pos,12);return i?this.bb.readInt64(this.bb_pos+i):this.bb.createLong(0,0)}s(i){let a=this.bb.__offset(this.bb_pos,14);return a?this.bb.__string(this.bb_pos+a,i):null}t(i){let a=this.bb.__offset(this.bb_pos,16);return a?(i||new t.experimental.fbs.Tensor).__init(this.bb.__indirect(this.bb_pos+a),this.bb):null}g(i){let a=this.bb.__offset(this.bb_pos,18);return a?(i||new t.experimental.fbs.Graph).__init(this.bb.__indirect(this.bb_pos+a),this.bb):null}floats(i){let a=this.bb.__offset(this.bb_pos,20);return a?this.bb.readFloat32(this.bb.__vector(this.bb_pos+a)+i*4):0}floatsLength(){let i=this.bb.__offset(this.bb_pos,20);return i?this.bb.__vector_len(this.bb_pos+i):0}floatsArray(){let i=this.bb.__offset(this.bb_pos,20);return i?new Float32Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+i),this.bb.__vector_len(this.bb_pos+i)):null}ints(i){let a=this.bb.__offset(this.bb_pos,22);return a?this.bb.readInt64(this.bb.__vector(this.bb_pos+a)+i*8):this.bb.createLong(0,0)}intsLength(){let i=this.bb.__offset(this.bb_pos,22);return i?this.bb.__vector_len(this.bb_pos+i):0}strings(i,a){let u=this.bb.__offset(this.bb_pos,24);return u?this.bb.__string(this.bb.__vector(this.bb_pos+u)+i*4,a):null}stringsLength(){let i=this.bb.__offset(this.bb_pos,24);return i?this.bb.__vector_len(this.bb_pos+i):0}tensors(i,a){let u=this.bb.__offset(this.bb_pos,26);return u?(a||new t.experimental.fbs.Tensor).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+u)+i*4),this.bb):null}tensorsLength(){let i=this.bb.__offset(this.bb_pos,26);return i?this.bb.__vector_len(this.bb_pos+i):0}graphs(i,a){let u=this.bb.__offset(this.bb_pos,28);return u?(a||new t.experimental.fbs.Graph).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+u)+i*4),this.bb):null}graphsLength(){let i=this.bb.__offset(this.bb_pos,28);return i?this.bb.__vector_len(this.bb_pos+i):0}static startAttribute(i){i.startObject(13)}static addName(i,a){i.addFieldOffset(0,a,0)}static addDocString(i,a){i.addFieldOffset(1,a,0)}static addType(i,a){i.addFieldInt32(2,a,0)}static addF(i,a){i.addFieldFloat32(3,a,0)}static addI(i,a){i.addFieldInt64(4,a,i.createLong(0,0))}static addS(i,a){i.addFieldOffset(5,a,0)}static addT(i,a){i.addFieldOffset(6,a,0)}static addG(i,a){i.addFieldOffset(7,a,0)}static addFloats(i,a){i.addFieldOffset(8,a,0)}static createFloatsVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addFloat32(a[u]);return i.endVector()}static startFloatsVector(i,a){i.startVector(4,a,4)}static addInts(i,a){i.addFieldOffset(9,a,0)}static createIntsVector(i,a){i.startVector(8,a.length,8);for(let u=a.length-1;u>=0;u--)i.addInt64(a[u]);return i.endVector()}static startIntsVector(i,a){i.startVector(8,a,8)}static addStrings(i,a){i.addFieldOffset(10,a,0)}static createStringsVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startStringsVector(i,a){i.startVector(4,a,4)}static addTensors(i,a){i.addFieldOffset(11,a,0)}static createTensorsVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startTensorsVector(i,a){i.startVector(4,a,4)}static addGraphs(i,a){i.addFieldOffset(12,a,0)}static createGraphsVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startGraphsVector(i,a){i.startVector(4,a,4)}static endAttribute(i){return i.endObject()}static createAttribute(i,a,u,d,o,l,c,h,f,p,g,b,w,y){return r.startAttribute(i),r.addName(i,a),r.addDocString(i,u),r.addType(i,d),r.addF(i,o),r.addI(i,l),r.addS(i,c),r.addT(i,h),r.addG(i,f),r.addFloats(i,p),r.addInts(i,g),r.addStrings(i,b),r.addTensors(i,w),r.addGraphs(i,y),r.endAttribute(i)}}n.Attribute=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsGraph(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsGraph(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}initializers(i,a){let u=this.bb.__offset(this.bb_pos,4);return u?(a||new t.experimental.fbs.Tensor).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+u)+i*4),this.bb):null}initializersLength(){let i=this.bb.__offset(this.bb_pos,4);return i?this.bb.__vector_len(this.bb_pos+i):0}nodeArgs(i,a){let u=this.bb.__offset(this.bb_pos,6);return u?(a||new t.experimental.fbs.ValueInfo).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+u)+i*4),this.bb):null}nodeArgsLength(){let i=this.bb.__offset(this.bb_pos,6);return i?this.bb.__vector_len(this.bb_pos+i):0}nodes(i,a){let u=this.bb.__offset(this.bb_pos,8);return u?(a||new t.experimental.fbs.Node).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+u)+i*4),this.bb):null}nodesLength(){let i=this.bb.__offset(this.bb_pos,8);return i?this.bb.__vector_len(this.bb_pos+i):0}maxNodeIndex(){let i=this.bb.__offset(this.bb_pos,10);return i?this.bb.readUint32(this.bb_pos+i):0}nodeEdges(i,a){let u=this.bb.__offset(this.bb_pos,12);return u?(a||new t.experimental.fbs.NodeEdge).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+u)+i*4),this.bb):null}nodeEdgesLength(){let i=this.bb.__offset(this.bb_pos,12);return i?this.bb.__vector_len(this.bb_pos+i):0}inputs(i,a){let u=this.bb.__offset(this.bb_pos,14);return u?this.bb.__string(this.bb.__vector(this.bb_pos+u)+i*4,a):null}inputsLength(){let i=this.bb.__offset(this.bb_pos,14);return i?this.bb.__vector_len(this.bb_pos+i):0}outputs(i,a){let u=this.bb.__offset(this.bb_pos,16);return u?this.bb.__string(this.bb.__vector(this.bb_pos+u)+i*4,a):null}outputsLength(){let i=this.bb.__offset(this.bb_pos,16);return i?this.bb.__vector_len(this.bb_pos+i):0}sparseInitializers(i,a){let u=this.bb.__offset(this.bb_pos,18);return u?(a||new t.experimental.fbs.SparseTensor).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+u)+i*4),this.bb):null}sparseInitializersLength(){let i=this.bb.__offset(this.bb_pos,18);return i?this.bb.__vector_len(this.bb_pos+i):0}static startGraph(i){i.startObject(8)}static addInitializers(i,a){i.addFieldOffset(0,a,0)}static createInitializersVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startInitializersVector(i,a){i.startVector(4,a,4)}static addNodeArgs(i,a){i.addFieldOffset(1,a,0)}static createNodeArgsVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startNodeArgsVector(i,a){i.startVector(4,a,4)}static addNodes(i,a){i.addFieldOffset(2,a,0)}static createNodesVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startNodesVector(i,a){i.startVector(4,a,4)}static addMaxNodeIndex(i,a){i.addFieldInt32(3,a,0)}static addNodeEdges(i,a){i.addFieldOffset(4,a,0)}static createNodeEdgesVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startNodeEdgesVector(i,a){i.startVector(4,a,4)}static addInputs(i,a){i.addFieldOffset(5,a,0)}static createInputsVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startInputsVector(i,a){i.startVector(4,a,4)}static addOutputs(i,a){i.addFieldOffset(6,a,0)}static createOutputsVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startOutputsVector(i,a){i.startVector(4,a,4)}static addSparseInitializers(i,a){i.addFieldOffset(7,a,0)}static createSparseInitializersVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startSparseInitializersVector(i,a){i.startVector(4,a,4)}static endGraph(i){return i.endObject()}static createGraph(i,a,u,d,o,l,c,h,f){return r.startGraph(i),r.addInitializers(i,a),r.addNodeArgs(i,u),r.addNodes(i,d),r.addMaxNodeIndex(i,o),r.addNodeEdges(i,l),r.addInputs(i,c),r.addOutputs(i,h),r.addSparseInitializers(i,f),r.endGraph(i)}}n.Graph=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsModel(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsModel(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}irVersion(){let i=this.bb.__offset(this.bb_pos,4);return i?this.bb.readInt64(this.bb_pos+i):this.bb.createLong(0,0)}opsetImport(i,a){let u=this.bb.__offset(this.bb_pos,6);return u?(a||new t.experimental.fbs.OperatorSetId).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+u)+i*4),this.bb):null}opsetImportLength(){let i=this.bb.__offset(this.bb_pos,6);return i?this.bb.__vector_len(this.bb_pos+i):0}producerName(i){let a=this.bb.__offset(this.bb_pos,8);return a?this.bb.__string(this.bb_pos+a,i):null}producerVersion(i){let a=this.bb.__offset(this.bb_pos,10);return a?this.bb.__string(this.bb_pos+a,i):null}domain(i){let a=this.bb.__offset(this.bb_pos,12);return a?this.bb.__string(this.bb_pos+a,i):null}modelVersion(){let i=this.bb.__offset(this.bb_pos,14);return i?this.bb.readInt64(this.bb_pos+i):this.bb.createLong(0,0)}docString(i){let a=this.bb.__offset(this.bb_pos,16);return a?this.bb.__string(this.bb_pos+a,i):null}graph(i){let a=this.bb.__offset(this.bb_pos,18);return a?(i||new t.experimental.fbs.Graph).__init(this.bb.__indirect(this.bb_pos+a),this.bb):null}graphDocString(i){let a=this.bb.__offset(this.bb_pos,20);return a?this.bb.__string(this.bb_pos+a,i):null}static startModel(i){i.startObject(9)}static addIrVersion(i,a){i.addFieldInt64(0,a,i.createLong(0,0))}static addOpsetImport(i,a){i.addFieldOffset(1,a,0)}static createOpsetImportVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startOpsetImportVector(i,a){i.startVector(4,a,4)}static addProducerName(i,a){i.addFieldOffset(2,a,0)}static addProducerVersion(i,a){i.addFieldOffset(3,a,0)}static addDomain(i,a){i.addFieldOffset(4,a,0)}static addModelVersion(i,a){i.addFieldInt64(5,a,i.createLong(0,0))}static addDocString(i,a){i.addFieldOffset(6,a,0)}static addGraph(i,a){i.addFieldOffset(7,a,0)}static addGraphDocString(i,a){i.addFieldOffset(8,a,0)}static endModel(i){return i.endObject()}static createModel(i,a,u,d,o,l,c,h,f,p){return r.startModel(i),r.addIrVersion(i,a),r.addOpsetImport(i,u),r.addProducerName(i,d),r.addProducerVersion(i,o),r.addDomain(i,l),r.addModelVersion(i,c),r.addDocString(i,h),r.addGraph(i,f),r.addGraphDocString(i,p),r.endModel(i)}}n.Model=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsKernelCreateInfos(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsKernelCreateInfos(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}nodeIndices(i){let a=this.bb.__offset(this.bb_pos,4);return a?this.bb.readUint32(this.bb.__vector(this.bb_pos+a)+i*4):0}nodeIndicesLength(){let i=this.bb.__offset(this.bb_pos,4);return i?this.bb.__vector_len(this.bb_pos+i):0}nodeIndicesArray(){let i=this.bb.__offset(this.bb_pos,4);return i?new Uint32Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+i),this.bb.__vector_len(this.bb_pos+i)):null}kernelDefHashes(i){let a=this.bb.__offset(this.bb_pos,6);return a?this.bb.readUint64(this.bb.__vector(this.bb_pos+a)+i*8):this.bb.createLong(0,0)}kernelDefHashesLength(){let i=this.bb.__offset(this.bb_pos,6);return i?this.bb.__vector_len(this.bb_pos+i):0}static startKernelCreateInfos(i){i.startObject(2)}static addNodeIndices(i,a){i.addFieldOffset(0,a,0)}static createNodeIndicesVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addInt32(a[u]);return i.endVector()}static startNodeIndicesVector(i,a){i.startVector(4,a,4)}static addKernelDefHashes(i,a){i.addFieldOffset(1,a,0)}static createKernelDefHashesVector(i,a){i.startVector(8,a.length,8);for(let u=a.length-1;u>=0;u--)i.addInt64(a[u]);return i.endVector()}static startKernelDefHashesVector(i,a){i.startVector(8,a,8)}static endKernelCreateInfos(i){return i.endObject()}static createKernelCreateInfos(i,a,u){return r.startKernelCreateInfos(i),r.addNodeIndices(i,a),r.addKernelDefHashes(i,u),r.endKernelCreateInfos(i)}}n.KernelCreateInfos=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsSubGraphSessionState(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsSubGraphSessionState(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}graphId(i){let a=this.bb.__offset(this.bb_pos,4);return a?this.bb.__string(this.bb_pos+a,i):null}sessionState(i){let a=this.bb.__offset(this.bb_pos,6);return a?(i||new t.experimental.fbs.SessionState).__init(this.bb.__indirect(this.bb_pos+a),this.bb):null}static startSubGraphSessionState(i){i.startObject(2)}static addGraphId(i,a){i.addFieldOffset(0,a,0)}static addSessionState(i,a){i.addFieldOffset(1,a,0)}static endSubGraphSessionState(i){let a=i.endObject();return i.requiredField(a,4),a}static createSubGraphSessionState(i,a,u){return r.startSubGraphSessionState(i),r.addGraphId(i,a),r.addSessionState(i,u),r.endSubGraphSessionState(i)}}n.SubGraphSessionState=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsSessionState(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsSessionState(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}kernels(i){let a=this.bb.__offset(this.bb_pos,4);return a?(i||new t.experimental.fbs.KernelCreateInfos).__init(this.bb.__indirect(this.bb_pos+a),this.bb):null}subGraphSessionStates(i,a){let u=this.bb.__offset(this.bb_pos,6);return u?(a||new t.experimental.fbs.SubGraphSessionState).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+u)+i*4),this.bb):null}subGraphSessionStatesLength(){let i=this.bb.__offset(this.bb_pos,6);return i?this.bb.__vector_len(this.bb_pos+i):0}static startSessionState(i){i.startObject(2)}static addKernels(i,a){i.addFieldOffset(0,a,0)}static addSubGraphSessionStates(i,a){i.addFieldOffset(1,a,0)}static createSubGraphSessionStatesVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startSubGraphSessionStatesVector(i,a){i.startVector(4,a,4)}static endSessionState(i){return i.endObject()}static createSessionState(i,a,u){return r.startSessionState(i),r.addKernels(i,a),r.addSubGraphSessionStates(i,u),r.endSessionState(i)}}n.SessionState=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsInferenceSession(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsInferenceSession(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static bufferHasIdentifier(i){return i.__has_identifier("ORTM")}ortVersion(i){let a=this.bb.__offset(this.bb_pos,4);return a?this.bb.__string(this.bb_pos+a,i):null}model(i){let a=this.bb.__offset(this.bb_pos,6);return a?(i||new t.experimental.fbs.Model).__init(this.bb.__indirect(this.bb_pos+a),this.bb):null}sessionState(i){let a=this.bb.__offset(this.bb_pos,8);return a?(i||new t.experimental.fbs.SessionState).__init(this.bb.__indirect(this.bb_pos+a),this.bb):null}static startInferenceSession(i){i.startObject(3)}static addOrtVersion(i,a){i.addFieldOffset(0,a,0)}static addModel(i,a){i.addFieldOffset(1,a,0)}static addSessionState(i,a){i.addFieldOffset(2,a,0)}static endInferenceSession(i){return i.endObject()}static finishInferenceSessionBuffer(i,a){i.finish(a,"ORTM")}static finishSizePrefixedInferenceSessionBuffer(i,a){i.finish(a,"ORTM",!0)}static createInferenceSession(i,a,u,d){return r.startInferenceSession(i),r.addOrtVersion(i,a),r.addModel(i,u),r.addSessionState(i,d),r.endInferenceSession(i)}}n.InferenceSession=r})(e.fbs||={})})(t.experimental||={})})(W||={})}),ks=me((t,e)=>{e.exports=n;function n(r,s){for(var i=new Array(arguments.length-1),a=0,u=2,d=!0;u{var e=t;e.length=function(a){var u=a.length;if(!u)return 0;for(var d=0;--u%4>1&&a.charAt(u)==="=";)++d;return Math.ceil(a.length*3)/4-d};var n=new Array(64),r=new Array(123);for(s=0;s<64;)r[n[s]=s<26?s+65:s<52?s+71:s<62?s-4:s-59|43]=s++;var s;e.encode=function(a,u,d){for(var o=null,l=[],c=0,h=0,f;u>2],f=(p&3)<<4,h=1;break;case 1:l[c++]=n[f|p>>4],f=(p&15)<<2,h=2;break;case 2:l[c++]=n[f|p>>6],l[c++]=n[p&63],h=0;break}c>8191&&((o||(o=[])).push(String.fromCharCode.apply(String,l)),c=0)}return h&&(l[c++]=n[f],l[c++]=61,h===1&&(l[c++]=61)),o?(c&&o.push(String.fromCharCode.apply(String,l.slice(0,c))),o.join("")):String.fromCharCode.apply(String,l.slice(0,c))};var i="invalid encoding";e.decode=function(a,u,d){for(var o=d,l=0,c,h=0;h1)break;if((f=r[f])===void 0)throw Error(i);switch(l){case 0:c=f,l=1;break;case 1:u[d++]=c<<2|(f&48)>>4,c=f,l=2;break;case 2:u[d++]=(c&15)<<4|(f&60)>>2,c=f,l=3;break;case 3:u[d++]=(c&3)<<6|f,l=0;break}}if(l===1)throw Error(i);return d-o},e.test=function(a){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(a)}}),Us=me((t,e)=>{e.exports=n;function n(){this._listeners={}}n.prototype.on=function(r,s,i){return(this._listeners[r]||(this._listeners[r]=[])).push({fn:s,ctx:i||this}),this},n.prototype.off=function(r,s){if(r===void 0)this._listeners={};else if(s===void 0)this._listeners[r]=[];else for(var i=this._listeners[r],a=0;a{e.exports=n(n);function n(u){return typeof Float32Array<"u"?function(){var d=new Float32Array([-0]),o=new Uint8Array(d.buffer),l=o[3]===128;function c(g,b,w){d[0]=g,b[w]=o[0],b[w+1]=o[1],b[w+2]=o[2],b[w+3]=o[3]}function h(g,b,w){d[0]=g,b[w]=o[3],b[w+1]=o[2],b[w+2]=o[1],b[w+3]=o[0]}u.writeFloatLE=l?c:h,u.writeFloatBE=l?h:c;function f(g,b){return o[0]=g[b],o[1]=g[b+1],o[2]=g[b+2],o[3]=g[b+3],d[0]}function p(g,b){return o[3]=g[b],o[2]=g[b+1],o[1]=g[b+2],o[0]=g[b+3],d[0]}u.readFloatLE=l?f:p,u.readFloatBE=l?p:f}():function(){function d(l,c,h,f){var p=c<0?1:0;if(p&&(c=-c),c===0)l(1/c>0?0:2147483648,h,f);else if(isNaN(c))l(2143289344,h,f);else if(c>34028234663852886e22)l((p<<31|2139095040)>>>0,h,f);else if(c<11754943508222875e-54)l((p<<31|Math.round(c/1401298464324817e-60))>>>0,h,f);else{var g=Math.floor(Math.log(c)/Math.LN2),b=Math.round(c*Math.pow(2,-g)*8388608)&8388607;l((p<<31|g+127<<23|b)>>>0,h,f)}}u.writeFloatLE=d.bind(null,r),u.writeFloatBE=d.bind(null,s);function o(l,c,h){var f=l(c,h),p=(f>>31)*2+1,g=f>>>23&255,b=f&8388607;return g===255?b?NaN:p*(1/0):g===0?p*1401298464324817e-60*b:p*Math.pow(2,g-150)*(b+8388608)}u.readFloatLE=o.bind(null,i),u.readFloatBE=o.bind(null,a)}(),typeof Float64Array<"u"?function(){var d=new Float64Array([-0]),o=new Uint8Array(d.buffer),l=o[7]===128;function c(g,b,w){d[0]=g,b[w]=o[0],b[w+1]=o[1],b[w+2]=o[2],b[w+3]=o[3],b[w+4]=o[4],b[w+5]=o[5],b[w+6]=o[6],b[w+7]=o[7]}function h(g,b,w){d[0]=g,b[w]=o[7],b[w+1]=o[6],b[w+2]=o[5],b[w+3]=o[4],b[w+4]=o[3],b[w+5]=o[2],b[w+6]=o[1],b[w+7]=o[0]}u.writeDoubleLE=l?c:h,u.writeDoubleBE=l?h:c;function f(g,b){return o[0]=g[b],o[1]=g[b+1],o[2]=g[b+2],o[3]=g[b+3],o[4]=g[b+4],o[5]=g[b+5],o[6]=g[b+6],o[7]=g[b+7],d[0]}function p(g,b){return o[7]=g[b],o[6]=g[b+1],o[5]=g[b+2],o[4]=g[b+3],o[3]=g[b+4],o[2]=g[b+5],o[1]=g[b+6],o[0]=g[b+7],d[0]}u.readDoubleLE=l?f:p,u.readDoubleBE=l?p:f}():function(){function d(l,c,h,f,p,g){var b=f<0?1:0;if(b&&(f=-f),f===0)l(0,p,g+c),l(1/f>0?0:2147483648,p,g+h);else if(isNaN(f))l(0,p,g+c),l(2146959360,p,g+h);else if(f>17976931348623157e292)l(0,p,g+c),l((b<<31|2146435072)>>>0,p,g+h);else{var w;if(f<22250738585072014e-324)w=f/5e-324,l(w>>>0,p,g+c),l((b<<31|w/4294967296)>>>0,p,g+h);else{var y=Math.floor(Math.log(f)/Math.LN2);y===1024&&(y=1023),w=f*Math.pow(2,-y),l(w*4503599627370496>>>0,p,g+c),l((b<<31|y+1023<<20|w*1048576&1048575)>>>0,p,g+h)}}}u.writeDoubleLE=d.bind(null,r,0,4),u.writeDoubleBE=d.bind(null,s,4,0);function o(l,c,h,f,p){var g=l(f,p+c),b=l(f,p+h),w=(b>>31)*2+1,y=b>>>20&2047,T=4294967296*(b&1048575)+g;return y===2047?T?NaN:w*(1/0):y===0?w*5e-324*T:w*Math.pow(2,y-1075)*(T+4503599627370496)}u.readDoubleLE=o.bind(null,i,0,4),u.readDoubleBE=o.bind(null,a,4,0)}(),u}function r(u,d,o){d[o]=u&255,d[o+1]=u>>>8&255,d[o+2]=u>>>16&255,d[o+3]=u>>>24}function s(u,d,o){d[o]=u>>>24,d[o+1]=u>>>16&255,d[o+2]=u>>>8&255,d[o+3]=u&255}function i(u,d){return(u[d]|u[d+1]<<8|u[d+2]<<16|u[d+3]<<24)>>>0}function a(u,d){return(u[d]<<24|u[d+1]<<16|u[d+2]<<8|u[d+3])>>>0}}),Xs=me((exports,module)=>{module.exports=inquire;function inquire(moduleName){try{var mod=eval("quire".replace(/^/,"re"))(moduleName);if(mod&&(mod.length||Object.keys(mod).length))return mod}catch(t){}return null}}),Js=me(t=>{var e=t;e.length=function(n){for(var r=0,s=0,i=0;i191&&o<224?u[d++]=(o&31)<<6|n[r++]&63:o>239&&o<365?(o=((o&7)<<18|(n[r++]&63)<<12|(n[r++]&63)<<6|n[r++]&63)-65536,u[d++]=55296+(o>>10),u[d++]=56320+(o&1023)):u[d++]=(o&15)<<12|(n[r++]&63)<<6|n[r++]&63,d>8191&&((a||(a=[])).push(String.fromCharCode.apply(String,u)),d=0);return a?(d&&a.push(String.fromCharCode.apply(String,u.slice(0,d))),a.join("")):String.fromCharCode.apply(String,u.slice(0,d))},e.write=function(n,r,s){for(var i=s,a,u,d=0;d>6|192,r[s++]=a&63|128):(a&64512)===55296&&((u=n.charCodeAt(d+1))&64512)===56320?(a=65536+((a&1023)<<10)+(u&1023),++d,r[s++]=a>>18|240,r[s++]=a>>12&63|128,r[s++]=a>>6&63|128,r[s++]=a&63|128):(r[s++]=a>>12|224,r[s++]=a>>6&63|128,r[s++]=a&63|128);return s-i}}),Qs=me((t,e)=>{e.exports=n;function n(r,s,i){var a=i||8192,u=a>>>1,d=null,o=a;return function(l){if(l<1||l>u)return r(l);o+l>a&&(d=r(a),o=0);var c=s.call(d,o,o+=l);return o&7&&(o=(o|7)+1),c}}}),tu=me((t,e)=>{e.exports=r;var n=Xt();function r(u,d){this.lo=u>>>0,this.hi=d>>>0}var s=r.zero=new r(0,0);s.toNumber=function(){return 0},s.zzEncode=s.zzDecode=function(){return this},s.length=function(){return 1};var i=r.zeroHash="\0\0\0\0\0\0\0\0";r.fromNumber=function(u){if(u===0)return s;var d=u<0;d&&(u=-u);var o=u>>>0,l=(u-o)/4294967296>>>0;return d&&(l=~l>>>0,o=~o>>>0,++o>4294967295&&(o=0,++l>4294967295&&(l=0))),new r(o,l)},r.from=function(u){if(typeof u=="number")return r.fromNumber(u);if(n.isString(u))if(n.Long)u=n.Long.fromString(u);else return r.fromNumber(parseInt(u,10));return u.low||u.high?new r(u.low>>>0,u.high>>>0):s},r.prototype.toNumber=function(u){if(!u&&this.hi>>>31){var d=~this.lo+1>>>0,o=~this.hi>>>0;return d||(o=o+1>>>0),-(d+o*4294967296)}return this.lo+this.hi*4294967296},r.prototype.toLong=function(u){return n.Long?new n.Long(this.lo|0,this.hi|0,!!u):{low:this.lo|0,high:this.hi|0,unsigned:!!u}};var a=String.prototype.charCodeAt;r.fromHash=function(u){return u===i?s:new r((a.call(u,0)|a.call(u,1)<<8|a.call(u,2)<<16|a.call(u,3)<<24)>>>0,(a.call(u,4)|a.call(u,5)<<8|a.call(u,6)<<16|a.call(u,7)<<24)>>>0)},r.prototype.toHash=function(){return String.fromCharCode(this.lo&255,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,this.hi&255,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},r.prototype.zzEncode=function(){var u=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^u)>>>0,this.lo=(this.lo<<1^u)>>>0,this},r.prototype.zzDecode=function(){var u=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^u)>>>0,this.hi=(this.hi>>>1^u)>>>0,this},r.prototype.length=function(){var u=this.lo,d=(this.lo>>>28|this.hi<<4)>>>0,o=this.hi>>>24;return o===0?d===0?u<16384?u<128?1:2:u<2097152?3:4:d<16384?d<128?5:6:d<2097152?7:8:o<128?9:10}}),Xt=me(t=>{var e=t;e.asPromise=ks(),e.base64=Ms(),e.EventEmitter=Us(),e.float=Ys(),e.inquire=Xs(),e.utf8=Js(),e.pool=Qs(),e.LongBits=tu(),e.isNode=!!(typeof global<"u"&&global&&global.process&&global.process.versions&&global.process.versions.node),e.global=e.isNode&&global||typeof window<"u"&&window||typeof self<"u"&&self||t,e.emptyArray=Object.freeze?Object.freeze([]):[],e.emptyObject=Object.freeze?Object.freeze({}):{},e.isInteger=Number.isInteger||function(s){return typeof s=="number"&&isFinite(s)&&Math.floor(s)===s},e.isString=function(s){return typeof s=="string"||s instanceof String},e.isObject=function(s){return s&&typeof s=="object"},e.isset=e.isSet=function(s,i){var a=s[i];return a!=null&&s.hasOwnProperty(i)?typeof a!="object"||(Array.isArray(a)?a.length:Object.keys(a).length)>0:!1},e.Buffer=function(){try{var s=e.inquire("buffer").Buffer;return s.prototype.utf8Write?s:null}catch{return null}}(),e._Buffer_from=null,e._Buffer_allocUnsafe=null,e.newBuffer=function(s){return typeof s=="number"?e.Buffer?e._Buffer_allocUnsafe(s):new e.Array(s):e.Buffer?e._Buffer_from(s):typeof Uint8Array>"u"?s:new Uint8Array(s)},e.Array=typeof Uint8Array<"u"?Uint8Array:Array,e.Long=e.global.dcodeIO&&e.global.dcodeIO.Long||e.global.Long||e.inquire("long"),e.key2Re=/^true|false|0|1$/,e.key32Re=/^-?(?:0|[1-9][0-9]*)$/,e.key64Re=/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/,e.longToHash=function(s){return s?e.LongBits.from(s).toHash():e.LongBits.zeroHash},e.longFromHash=function(s,i){var a=e.LongBits.fromHash(s);return e.Long?e.Long.fromBits(a.lo,a.hi,i):a.toNumber(!!i)};function n(s,i,a){for(var u=Object.keys(i),d=0;d-1;--d)if(i[u[d]]===1&&this[u[d]]!==void 0&&this[u[d]]!==null)return u[d]}},e.oneOfSetter=function(s){return function(i){for(var a=0;a{e.exports=l;var n=Xt(),r,s=n.LongBits,i=n.base64,a=n.utf8;function u(y,T,S){this.fn=y,this.len=T,this.next=void 0,this.val=S}function d(){}function o(y){this.head=y.head,this.tail=y.tail,this.len=y.len,this.next=y.states}function l(){this.len=0,this.head=new u(d,0,0),this.tail=this.head,this.states=null}var c=function(){return n.Buffer?function(){return(l.create=function(){return new r})()}:function(){return new l}};l.create=c(),l.alloc=function(y){return new n.Array(y)},n.Array!==Array&&(l.alloc=n.pool(l.alloc,n.Array.prototype.subarray)),l.prototype._push=function(y,T,S){return this.tail=this.tail.next=new u(y,T,S),this.len+=T,this};function h(y,T,S){T[S]=y&255}function f(y,T,S){for(;y>127;)T[S++]=y&127|128,y>>>=7;T[S]=y}function p(y,T){this.len=y,this.next=void 0,this.val=T}p.prototype=Object.create(u.prototype),p.prototype.fn=f,l.prototype.uint32=function(y){return this.len+=(this.tail=this.tail.next=new p((y=y>>>0)<128?1:y<16384?2:y<2097152?3:y<268435456?4:5,y)).len,this},l.prototype.int32=function(y){return y<0?this._push(g,10,s.fromNumber(y)):this.uint32(y)},l.prototype.sint32=function(y){return this.uint32((y<<1^y>>31)>>>0)};function g(y,T,S){for(;y.hi;)T[S++]=y.lo&127|128,y.lo=(y.lo>>>7|y.hi<<25)>>>0,y.hi>>>=7;for(;y.lo>127;)T[S++]=y.lo&127|128,y.lo=y.lo>>>7;T[S++]=y.lo}l.prototype.uint64=function(y){var T=s.from(y);return this._push(g,T.length(),T)},l.prototype.int64=l.prototype.uint64,l.prototype.sint64=function(y){var T=s.from(y).zzEncode();return this._push(g,T.length(),T)},l.prototype.bool=function(y){return this._push(h,1,y?1:0)};function b(y,T,S){T[S]=y&255,T[S+1]=y>>>8&255,T[S+2]=y>>>16&255,T[S+3]=y>>>24}l.prototype.fixed32=function(y){return this._push(b,4,y>>>0)},l.prototype.sfixed32=l.prototype.fixed32,l.prototype.fixed64=function(y){var T=s.from(y);return this._push(b,4,T.lo)._push(b,4,T.hi)},l.prototype.sfixed64=l.prototype.fixed64,l.prototype.float=function(y){return this._push(n.float.writeFloatLE,4,y)},l.prototype.double=function(y){return this._push(n.float.writeDoubleLE,8,y)};var w=n.Array.prototype.set?function(y,T,S){T.set(y,S)}:function(y,T,S){for(var E=0;E>>0;if(!T)return this._push(h,1,0);if(n.isString(y)){var S=l.alloc(T=i.length(y));i.decode(y,S,0),y=S}return this.uint32(T)._push(w,T,y)},l.prototype.string=function(y){var T=a.length(y);return T?this.uint32(T)._push(a.write,T,y):this._push(h,1,0)},l.prototype.fork=function(){return this.states=new o(this),this.head=this.tail=new u(d,0,0),this.len=0,this},l.prototype.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new u(d,0,0),this.len=0),this},l.prototype.ldelim=function(){var y=this.head,T=this.tail,S=this.len;return this.reset().uint32(S),S&&(this.tail.next=y.next,this.tail=T,this.len+=S),this},l.prototype.finish=function(){for(var y=this.head.next,T=this.constructor.alloc(this.len),S=0;y;)y.fn(y.val,T,S),S+=y.len,y=y.next;return T},l._configure=function(y){r=y,l.create=c(),r._configure()}}),fu=me((t,e)=>{e.exports=s;var n=li();(s.prototype=Object.create(n.prototype)).constructor=s;var r=Xt();function s(){n.call(this)}s._configure=function(){s.alloc=r._Buffer_allocUnsafe,s.writeBytesBuffer=r.Buffer&&r.Buffer.prototype instanceof Uint8Array&&r.Buffer.prototype.set.name==="set"?function(a,u,d){u.set(a,d)}:function(a,u,d){if(a.copy)a.copy(u,d,0,a.length);else for(var o=0;o>>0;return this.uint32(u),u&&this._push(s.writeBytesBuffer,u,a),this};function i(a,u,d){a.length<40?r.utf8.write(a,u,d):u.utf8Write?u.utf8Write(a,d):u.write(a,d)}s.prototype.string=function(a){var u=r.Buffer.byteLength(a);return this.uint32(u),u&&this._push(i,u,a),this},s._configure()}),pi=me((t,e)=>{e.exports=u;var n=Xt(),r,s=n.LongBits,i=n.utf8;function a(f,p){return RangeError("index out of range: "+f.pos+" + "+(p||1)+" > "+f.len)}function u(f){this.buf=f,this.pos=0,this.len=f.length}var d=typeof Uint8Array<"u"?function(f){if(f instanceof Uint8Array||Array.isArray(f))return new u(f);throw Error("illegal buffer")}:function(f){if(Array.isArray(f))return new u(f);throw Error("illegal buffer")},o=function(){return n.Buffer?function(f){return(u.create=function(p){return n.Buffer.isBuffer(p)?new r(p):d(p)})(f)}:d};u.create=o(),u.prototype._slice=n.Array.prototype.subarray||n.Array.prototype.slice,u.prototype.uint32=function(){var f=4294967295;return function(){if(f=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(f=(f|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(f=(f|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(f=(f|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(f=(f|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return f;if((this.pos+=5)>this.len)throw this.pos=this.len,a(this,10);return f}}(),u.prototype.int32=function(){return this.uint32()|0},u.prototype.sint32=function(){var f=this.uint32();return f>>>1^-(f&1)|0};function l(){var f=new s(0,0),p=0;if(this.len-this.pos>4){for(;p<4;++p)if(f.lo=(f.lo|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return f;if(f.lo=(f.lo|(this.buf[this.pos]&127)<<28)>>>0,f.hi=(f.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return f;p=0}else{for(;p<3;++p){if(this.pos>=this.len)throw a(this);if(f.lo=(f.lo|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return f}return f.lo=(f.lo|(this.buf[this.pos++]&127)<>>0,f}if(this.len-this.pos>4){for(;p<5;++p)if(f.hi=(f.hi|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return f}else for(;p<5;++p){if(this.pos>=this.len)throw a(this);if(f.hi=(f.hi|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return f}throw Error("invalid varint encoding")}u.prototype.bool=function(){return this.uint32()!==0};function c(f,p){return(f[p-4]|f[p-3]<<8|f[p-2]<<16|f[p-1]<<24)>>>0}u.prototype.fixed32=function(){if(this.pos+4>this.len)throw a(this,4);return c(this.buf,this.pos+=4)},u.prototype.sfixed32=function(){if(this.pos+4>this.len)throw a(this,4);return c(this.buf,this.pos+=4)|0};function h(){if(this.pos+8>this.len)throw a(this,8);return new s(c(this.buf,this.pos+=4),c(this.buf,this.pos+=4))}u.prototype.float=function(){if(this.pos+4>this.len)throw a(this,4);var f=n.float.readFloatLE(this.buf,this.pos);return this.pos+=4,f},u.prototype.double=function(){if(this.pos+8>this.len)throw a(this,4);var f=n.float.readDoubleLE(this.buf,this.pos);return this.pos+=8,f},u.prototype.bytes=function(){var f=this.uint32(),p=this.pos,g=this.pos+f;if(g>this.len)throw a(this,f);return this.pos+=f,Array.isArray(this.buf)?this.buf.slice(p,g):p===g?new this.buf.constructor(0):this._slice.call(this.buf,p,g)},u.prototype.string=function(){var f=this.bytes();return i.read(f,0,f.length)},u.prototype.skip=function(f){if(typeof f=="number"){if(this.pos+f>this.len)throw a(this,f);this.pos+=f}else do if(this.pos>=this.len)throw a(this);while(this.buf[this.pos++]&128);return this},u.prototype.skipType=function(f){switch(f){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(f=this.uint32()&7)!==4;)this.skipType(f);break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+f+" at offset "+this.pos)}return this},u._configure=function(f){r=f,u.create=o(),r._configure();var p=n.Long?"toLong":"toNumber";n.merge(u.prototype,{int64:function(){return l.call(this)[p](!1)},uint64:function(){return l.call(this)[p](!0)},sint64:function(){return l.call(this).zzDecode()[p](!1)},fixed64:function(){return h.call(this)[p](!0)},sfixed64:function(){return h.call(this)[p](!1)}})}}),Tu=me((t,e)=>{e.exports=s;var n=pi();(s.prototype=Object.create(n.prototype)).constructor=s;var r=Xt();function s(i){n.call(this,i)}s._configure=function(){r.Buffer&&(s.prototype._slice=r.Buffer.prototype.slice)},s.prototype.string=function(){var i=this.uint32();return this.buf.utf8Slice?this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+i,this.len)):this.buf.toString("utf-8",this.pos,this.pos=Math.min(this.pos+i,this.len))},s._configure()}),vu=me((t,e)=>{e.exports=r;var n=Xt();(r.prototype=Object.create(n.EventEmitter.prototype)).constructor=r;function r(s,i,a){if(typeof s!="function")throw TypeError("rpcImpl must be a function");n.EventEmitter.call(this),this.rpcImpl=s,this.requestDelimited=!!i,this.responseDelimited=!!a}r.prototype.rpcCall=function s(i,a,u,d,o){if(!d)throw TypeError("request must be specified");var l=this;if(!o)return n.asPromise(s,l,i,a,u,d);if(!l.rpcImpl){setTimeout(function(){o(Error("already ended"))},0);return}try{return l.rpcImpl(i,a[l.requestDelimited?"encodeDelimited":"encode"](d).finish(),function(c,h){if(c)return l.emit("error",c,i),o(c);if(h===null){l.end(!0);return}if(!(h instanceof u))try{h=u[l.responseDelimited?"decodeDelimited":"decode"](h)}catch(f){return l.emit("error",f,i),o(f)}return l.emit("data",h,i),o(null,h)})}catch(c){l.emit("error",c,i),setTimeout(function(){o(c)},0);return}},r.prototype.end=function(s){return this.rpcImpl&&(s||this.rpcImpl(null,null,null),this.rpcImpl=null,this.emit("end").off()),this}}),_u=me(t=>{var e=t;e.Service=vu()}),Iu=me((t,e)=>{e.exports={}}),Pu=me(t=>{var e=t;e.build="minimal",e.Writer=li(),e.BufferWriter=fu(),e.Reader=pi(),e.BufferReader=Tu(),e.util=Xt(),e.rpc=_u(),e.roots=Iu(),e.configure=n;function n(){e.util._configure(),e.Writer._configure(e.BufferWriter),e.Reader._configure(e.BufferReader)}n()}),Du=me((t,e)=>{e.exports=Pu()}),$r=me((t,e)=>{var n=Du(),r=n.Reader,s=n.Writer,i=n.util,a=n.roots.default||(n.roots.default={});a.onnx=function(){var u={};return u.Version=function(){var d={},o=Object.create(d);return o[d[0]="_START_VERSION"]=0,o[d[1]="IR_VERSION_2017_10_10"]=1,o[d[2]="IR_VERSION_2017_10_30"]=2,o[d[3]="IR_VERSION_2017_11_3"]=3,o[d[4]="IR_VERSION_2019_1_22"]=4,o[d[5]="IR_VERSION_2019_3_18"]=5,o[d[6]="IR_VERSION_2019_9_19"]=6,o[d[7]="IR_VERSION_2020_5_8"]=7,o[d[8]="IR_VERSION_2021_7_30"]=8,o[d[9]="IR_VERSION"]=9,o}(),u.AttributeProto=function(){function d(o){if(this.floats=[],this.ints=[],this.strings=[],this.tensors=[],this.graphs=[],this.sparseTensors=[],this.typeProtos=[],o)for(var l=Object.keys(o),c=0;c>>3){case 1:{h.name=o.string();break}case 21:{h.refAttrName=o.string();break}case 13:{h.docString=o.string();break}case 20:{h.type=o.int32();break}case 2:{h.f=o.float();break}case 3:{h.i=o.int64();break}case 4:{h.s=o.bytes();break}case 5:{h.t=a.onnx.TensorProto.decode(o,o.uint32());break}case 6:{h.g=a.onnx.GraphProto.decode(o,o.uint32());break}case 22:{h.sparseTensor=a.onnx.SparseTensorProto.decode(o,o.uint32());break}case 14:{h.tp=a.onnx.TypeProto.decode(o,o.uint32());break}case 7:{if(h.floats&&h.floats.length||(h.floats=[]),(f&7)===2)for(var p=o.uint32()+o.pos;o.pos>>0,o.i.high>>>0).toNumber())),o.s!=null&&(typeof o.s=="string"?i.base64.decode(o.s,l.s=i.newBuffer(i.base64.length(o.s)),0):o.s.length>=0&&(l.s=o.s)),o.t!=null){if(typeof o.t!="object")throw TypeError(".onnx.AttributeProto.t: object expected");l.t=a.onnx.TensorProto.fromObject(o.t)}if(o.g!=null){if(typeof o.g!="object")throw TypeError(".onnx.AttributeProto.g: object expected");l.g=a.onnx.GraphProto.fromObject(o.g)}if(o.sparseTensor!=null){if(typeof o.sparseTensor!="object")throw TypeError(".onnx.AttributeProto.sparseTensor: object expected");l.sparseTensor=a.onnx.SparseTensorProto.fromObject(o.sparseTensor)}if(o.tp!=null){if(typeof o.tp!="object")throw TypeError(".onnx.AttributeProto.tp: object expected");l.tp=a.onnx.TypeProto.fromObject(o.tp)}if(o.floats){if(!Array.isArray(o.floats))throw TypeError(".onnx.AttributeProto.floats: array expected");l.floats=[];for(var c=0;c>>0,o.ints[c].high>>>0).toNumber())}if(o.strings){if(!Array.isArray(o.strings))throw TypeError(".onnx.AttributeProto.strings: array expected");l.strings=[];for(var c=0;c=0&&(l.strings[c]=o.strings[c])}if(o.tensors){if(!Array.isArray(o.tensors))throw TypeError(".onnx.AttributeProto.tensors: array expected");l.tensors=[];for(var c=0;c>>0,o.i.high>>>0).toNumber():o.i),o.s!=null&&o.hasOwnProperty("s")&&(c.s=l.bytes===String?i.base64.encode(o.s,0,o.s.length):l.bytes===Array?Array.prototype.slice.call(o.s):o.s),o.t!=null&&o.hasOwnProperty("t")&&(c.t=a.onnx.TensorProto.toObject(o.t,l)),o.g!=null&&o.hasOwnProperty("g")&&(c.g=a.onnx.GraphProto.toObject(o.g,l)),o.floats&&o.floats.length){c.floats=[];for(var f=0;f>>0,o.ints[f].high>>>0).toNumber():o.ints[f]}if(o.strings&&o.strings.length){c.strings=[];for(var f=0;f>>3){case 1:{h.name=o.string();break}case 2:{h.type=a.onnx.TypeProto.decode(o,o.uint32());break}case 3:{h.docString=o.string();break}default:o.skipType(f&7);break}}return h},d.decodeDelimited=function(o){return o instanceof r||(o=new r(o)),this.decode(o,o.uint32())},d.verify=function(o){if(typeof o!="object"||o===null)return"object expected";if(o.name!=null&&o.hasOwnProperty("name")&&!i.isString(o.name))return"name: string expected";if(o.type!=null&&o.hasOwnProperty("type")){var l=a.onnx.TypeProto.verify(o.type);if(l)return"type."+l}return o.docString!=null&&o.hasOwnProperty("docString")&&!i.isString(o.docString)?"docString: string expected":null},d.fromObject=function(o){if(o instanceof a.onnx.ValueInfoProto)return o;var l=new a.onnx.ValueInfoProto;if(o.name!=null&&(l.name=String(o.name)),o.type!=null){if(typeof o.type!="object")throw TypeError(".onnx.ValueInfoProto.type: object expected");l.type=a.onnx.TypeProto.fromObject(o.type)}return o.docString!=null&&(l.docString=String(o.docString)),l},d.toObject=function(o,l){l||(l={});var c={};return l.defaults&&(c.name="",c.type=null,c.docString=""),o.name!=null&&o.hasOwnProperty("name")&&(c.name=o.name),o.type!=null&&o.hasOwnProperty("type")&&(c.type=a.onnx.TypeProto.toObject(o.type,l)),o.docString!=null&&o.hasOwnProperty("docString")&&(c.docString=o.docString),c},d.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},d.getTypeUrl=function(o){return o===void 0&&(o="type.googleapis.com"),o+"/onnx.ValueInfoProto"},d}(),u.NodeProto=function(){function d(o){if(this.input=[],this.output=[],this.attribute=[],o)for(var l=Object.keys(o),c=0;c>>3){case 1:{h.input&&h.input.length||(h.input=[]),h.input.push(o.string());break}case 2:{h.output&&h.output.length||(h.output=[]),h.output.push(o.string());break}case 3:{h.name=o.string();break}case 4:{h.opType=o.string();break}case 7:{h.domain=o.string();break}case 5:{h.attribute&&h.attribute.length||(h.attribute=[]),h.attribute.push(a.onnx.AttributeProto.decode(o,o.uint32()));break}case 6:{h.docString=o.string();break}default:o.skipType(f&7);break}}return h},d.decodeDelimited=function(o){return o instanceof r||(o=new r(o)),this.decode(o,o.uint32())},d.verify=function(o){if(typeof o!="object"||o===null)return"object expected";if(o.input!=null&&o.hasOwnProperty("input")){if(!Array.isArray(o.input))return"input: array expected";for(var l=0;l>>3){case 1:{h.initialization=a.onnx.GraphProto.decode(o,o.uint32());break}case 2:{h.algorithm=a.onnx.GraphProto.decode(o,o.uint32());break}case 3:{h.initializationBinding&&h.initializationBinding.length||(h.initializationBinding=[]),h.initializationBinding.push(a.onnx.StringStringEntryProto.decode(o,o.uint32()));break}case 4:{h.updateBinding&&h.updateBinding.length||(h.updateBinding=[]),h.updateBinding.push(a.onnx.StringStringEntryProto.decode(o,o.uint32()));break}default:o.skipType(f&7);break}}return h},d.decodeDelimited=function(o){return o instanceof r||(o=new r(o)),this.decode(o,o.uint32())},d.verify=function(o){if(typeof o!="object"||o===null)return"object expected";if(o.initialization!=null&&o.hasOwnProperty("initialization")){var l=a.onnx.GraphProto.verify(o.initialization);if(l)return"initialization."+l}if(o.algorithm!=null&&o.hasOwnProperty("algorithm")){var l=a.onnx.GraphProto.verify(o.algorithm);if(l)return"algorithm."+l}if(o.initializationBinding!=null&&o.hasOwnProperty("initializationBinding")){if(!Array.isArray(o.initializationBinding))return"initializationBinding: array expected";for(var c=0;c>>3){case 1:{h.irVersion=o.int64();break}case 8:{h.opsetImport&&h.opsetImport.length||(h.opsetImport=[]),h.opsetImport.push(a.onnx.OperatorSetIdProto.decode(o,o.uint32()));break}case 2:{h.producerName=o.string();break}case 3:{h.producerVersion=o.string();break}case 4:{h.domain=o.string();break}case 5:{h.modelVersion=o.int64();break}case 6:{h.docString=o.string();break}case 7:{h.graph=a.onnx.GraphProto.decode(o,o.uint32());break}case 14:{h.metadataProps&&h.metadataProps.length||(h.metadataProps=[]),h.metadataProps.push(a.onnx.StringStringEntryProto.decode(o,o.uint32()));break}case 20:{h.trainingInfo&&h.trainingInfo.length||(h.trainingInfo=[]),h.trainingInfo.push(a.onnx.TrainingInfoProto.decode(o,o.uint32()));break}case 25:{h.functions&&h.functions.length||(h.functions=[]),h.functions.push(a.onnx.FunctionProto.decode(o,o.uint32()));break}default:o.skipType(f&7);break}}return h},d.decodeDelimited=function(o){return o instanceof r||(o=new r(o)),this.decode(o,o.uint32())},d.verify=function(o){if(typeof o!="object"||o===null)return"object expected";if(o.irVersion!=null&&o.hasOwnProperty("irVersion")&&!i.isInteger(o.irVersion)&&!(o.irVersion&&i.isInteger(o.irVersion.low)&&i.isInteger(o.irVersion.high)))return"irVersion: integer|Long expected";if(o.opsetImport!=null&&o.hasOwnProperty("opsetImport")){if(!Array.isArray(o.opsetImport))return"opsetImport: array expected";for(var l=0;l>>0,o.irVersion.high>>>0).toNumber())),o.opsetImport){if(!Array.isArray(o.opsetImport))throw TypeError(".onnx.ModelProto.opsetImport: array expected");l.opsetImport=[];for(var c=0;c>>0,o.modelVersion.high>>>0).toNumber())),o.docString!=null&&(l.docString=String(o.docString)),o.graph!=null){if(typeof o.graph!="object")throw TypeError(".onnx.ModelProto.graph: object expected");l.graph=a.onnx.GraphProto.fromObject(o.graph)}if(o.metadataProps){if(!Array.isArray(o.metadataProps))throw TypeError(".onnx.ModelProto.metadataProps: array expected");l.metadataProps=[];for(var c=0;c>>0,o.irVersion.high>>>0).toNumber():o.irVersion),o.producerName!=null&&o.hasOwnProperty("producerName")&&(c.producerName=o.producerName),o.producerVersion!=null&&o.hasOwnProperty("producerVersion")&&(c.producerVersion=o.producerVersion),o.domain!=null&&o.hasOwnProperty("domain")&&(c.domain=o.domain),o.modelVersion!=null&&o.hasOwnProperty("modelVersion")&&(typeof o.modelVersion=="number"?c.modelVersion=l.longs===String?String(o.modelVersion):o.modelVersion:c.modelVersion=l.longs===String?i.Long.prototype.toString.call(o.modelVersion):l.longs===Number?new i.LongBits(o.modelVersion.low>>>0,o.modelVersion.high>>>0).toNumber():o.modelVersion),o.docString!=null&&o.hasOwnProperty("docString")&&(c.docString=o.docString),o.graph!=null&&o.hasOwnProperty("graph")&&(c.graph=a.onnx.GraphProto.toObject(o.graph,l)),o.opsetImport&&o.opsetImport.length){c.opsetImport=[];for(var f=0;f>>3){case 1:{h.key=o.string();break}case 2:{h.value=o.string();break}default:o.skipType(f&7);break}}return h},d.decodeDelimited=function(o){return o instanceof r||(o=new r(o)),this.decode(o,o.uint32())},d.verify=function(o){return typeof o!="object"||o===null?"object expected":o.key!=null&&o.hasOwnProperty("key")&&!i.isString(o.key)?"key: string expected":o.value!=null&&o.hasOwnProperty("value")&&!i.isString(o.value)?"value: string expected":null},d.fromObject=function(o){if(o instanceof a.onnx.StringStringEntryProto)return o;var l=new a.onnx.StringStringEntryProto;return o.key!=null&&(l.key=String(o.key)),o.value!=null&&(l.value=String(o.value)),l},d.toObject=function(o,l){l||(l={});var c={};return l.defaults&&(c.key="",c.value=""),o.key!=null&&o.hasOwnProperty("key")&&(c.key=o.key),o.value!=null&&o.hasOwnProperty("value")&&(c.value=o.value),c},d.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},d.getTypeUrl=function(o){return o===void 0&&(o="type.googleapis.com"),o+"/onnx.StringStringEntryProto"},d}(),u.TensorAnnotation=function(){function d(o){if(this.quantParameterTensorNames=[],o)for(var l=Object.keys(o),c=0;c>>3){case 1:{h.tensorName=o.string();break}case 2:{h.quantParameterTensorNames&&h.quantParameterTensorNames.length||(h.quantParameterTensorNames=[]),h.quantParameterTensorNames.push(a.onnx.StringStringEntryProto.decode(o,o.uint32()));break}default:o.skipType(f&7);break}}return h},d.decodeDelimited=function(o){return o instanceof r||(o=new r(o)),this.decode(o,o.uint32())},d.verify=function(o){if(typeof o!="object"||o===null)return"object expected";if(o.tensorName!=null&&o.hasOwnProperty("tensorName")&&!i.isString(o.tensorName))return"tensorName: string expected";if(o.quantParameterTensorNames!=null&&o.hasOwnProperty("quantParameterTensorNames")){if(!Array.isArray(o.quantParameterTensorNames))return"quantParameterTensorNames: array expected";for(var l=0;l>>3){case 1:{h.node&&h.node.length||(h.node=[]),h.node.push(a.onnx.NodeProto.decode(o,o.uint32()));break}case 2:{h.name=o.string();break}case 5:{h.initializer&&h.initializer.length||(h.initializer=[]),h.initializer.push(a.onnx.TensorProto.decode(o,o.uint32()));break}case 15:{h.sparseInitializer&&h.sparseInitializer.length||(h.sparseInitializer=[]),h.sparseInitializer.push(a.onnx.SparseTensorProto.decode(o,o.uint32()));break}case 10:{h.docString=o.string();break}case 11:{h.input&&h.input.length||(h.input=[]),h.input.push(a.onnx.ValueInfoProto.decode(o,o.uint32()));break}case 12:{h.output&&h.output.length||(h.output=[]),h.output.push(a.onnx.ValueInfoProto.decode(o,o.uint32()));break}case 13:{h.valueInfo&&h.valueInfo.length||(h.valueInfo=[]),h.valueInfo.push(a.onnx.ValueInfoProto.decode(o,o.uint32()));break}case 14:{h.quantizationAnnotation&&h.quantizationAnnotation.length||(h.quantizationAnnotation=[]),h.quantizationAnnotation.push(a.onnx.TensorAnnotation.decode(o,o.uint32()));break}default:o.skipType(f&7);break}}return h},d.decodeDelimited=function(o){return o instanceof r||(o=new r(o)),this.decode(o,o.uint32())},d.verify=function(o){if(typeof o!="object"||o===null)return"object expected";if(o.node!=null&&o.hasOwnProperty("node")){if(!Array.isArray(o.node))return"node: array expected";for(var l=0;l>>3){case 1:{if(h.dims&&h.dims.length||(h.dims=[]),(f&7)===2)for(var p=o.uint32()+o.pos;o.pos>>0,o.dims[c].high>>>0).toNumber())}if(o.dataType!=null&&(l.dataType=o.dataType|0),o.segment!=null){if(typeof o.segment!="object")throw TypeError(".onnx.TensorProto.segment: object expected");l.segment=a.onnx.TensorProto.Segment.fromObject(o.segment)}if(o.floatData){if(!Array.isArray(o.floatData))throw TypeError(".onnx.TensorProto.floatData: array expected");l.floatData=[];for(var c=0;c=0&&(l.stringData[c]=o.stringData[c])}if(o.int64Data){if(!Array.isArray(o.int64Data))throw TypeError(".onnx.TensorProto.int64Data: array expected");l.int64Data=[];for(var c=0;c>>0,o.int64Data[c].high>>>0).toNumber())}if(o.name!=null&&(l.name=String(o.name)),o.docString!=null&&(l.docString=String(o.docString)),o.rawData!=null&&(typeof o.rawData=="string"?i.base64.decode(o.rawData,l.rawData=i.newBuffer(i.base64.length(o.rawData)),0):o.rawData.length>=0&&(l.rawData=o.rawData)),o.externalData){if(!Array.isArray(o.externalData))throw TypeError(".onnx.TensorProto.externalData: array expected");l.externalData=[];for(var c=0;c>>0,o.uint64Data[c].high>>>0).toNumber(!0))}return l},d.toObject=function(o,l){l||(l={});var c={};if((l.arrays||l.defaults)&&(c.dims=[],c.floatData=[],c.int32Data=[],c.stringData=[],c.int64Data=[],c.doubleData=[],c.uint64Data=[],c.externalData=[]),l.defaults&&(c.dataType=0,c.segment=null,c.name="",l.bytes===String?c.rawData="":(c.rawData=[],l.bytes!==Array&&(c.rawData=i.newBuffer(c.rawData))),c.docString="",c.dataLocation=l.enums===String?"DEFAULT":0),o.dims&&o.dims.length){c.dims=[];for(var h=0;h>>0,o.dims[h].high>>>0).toNumber():o.dims[h]}if(o.dataType!=null&&o.hasOwnProperty("dataType")&&(c.dataType=o.dataType),o.segment!=null&&o.hasOwnProperty("segment")&&(c.segment=a.onnx.TensorProto.Segment.toObject(o.segment,l)),o.floatData&&o.floatData.length){c.floatData=[];for(var h=0;h>>0,o.int64Data[h].high>>>0).toNumber():o.int64Data[h]}if(o.name!=null&&o.hasOwnProperty("name")&&(c.name=o.name),o.rawData!=null&&o.hasOwnProperty("rawData")&&(c.rawData=l.bytes===String?i.base64.encode(o.rawData,0,o.rawData.length):l.bytes===Array?Array.prototype.slice.call(o.rawData):o.rawData),o.doubleData&&o.doubleData.length){c.doubleData=[];for(var h=0;h>>0,o.uint64Data[h].high>>>0).toNumber(!0):o.uint64Data[h]}if(o.docString!=null&&o.hasOwnProperty("docString")&&(c.docString=o.docString),o.externalData&&o.externalData.length){c.externalData=[];for(var h=0;h>>3){case 1:{f.begin=l.int64();break}case 2:{f.end=l.int64();break}default:l.skipType(p&7);break}}return f},o.decodeDelimited=function(l){return l instanceof r||(l=new r(l)),this.decode(l,l.uint32())},o.verify=function(l){return typeof l!="object"||l===null?"object expected":l.begin!=null&&l.hasOwnProperty("begin")&&!i.isInteger(l.begin)&&!(l.begin&&i.isInteger(l.begin.low)&&i.isInteger(l.begin.high))?"begin: integer|Long expected":l.end!=null&&l.hasOwnProperty("end")&&!i.isInteger(l.end)&&!(l.end&&i.isInteger(l.end.low)&&i.isInteger(l.end.high))?"end: integer|Long expected":null},o.fromObject=function(l){if(l instanceof a.onnx.TensorProto.Segment)return l;var c=new a.onnx.TensorProto.Segment;return l.begin!=null&&(i.Long?(c.begin=i.Long.fromValue(l.begin)).unsigned=!1:typeof l.begin=="string"?c.begin=parseInt(l.begin,10):typeof l.begin=="number"?c.begin=l.begin:typeof l.begin=="object"&&(c.begin=new i.LongBits(l.begin.low>>>0,l.begin.high>>>0).toNumber())),l.end!=null&&(i.Long?(c.end=i.Long.fromValue(l.end)).unsigned=!1:typeof l.end=="string"?c.end=parseInt(l.end,10):typeof l.end=="number"?c.end=l.end:typeof l.end=="object"&&(c.end=new i.LongBits(l.end.low>>>0,l.end.high>>>0).toNumber())),c},o.toObject=function(l,c){c||(c={});var h={};if(c.defaults){if(i.Long){var f=new i.Long(0,0,!1);h.begin=c.longs===String?f.toString():c.longs===Number?f.toNumber():f}else h.begin=c.longs===String?"0":0;if(i.Long){var f=new i.Long(0,0,!1);h.end=c.longs===String?f.toString():c.longs===Number?f.toNumber():f}else h.end=c.longs===String?"0":0}return l.begin!=null&&l.hasOwnProperty("begin")&&(typeof l.begin=="number"?h.begin=c.longs===String?String(l.begin):l.begin:h.begin=c.longs===String?i.Long.prototype.toString.call(l.begin):c.longs===Number?new i.LongBits(l.begin.low>>>0,l.begin.high>>>0).toNumber():l.begin),l.end!=null&&l.hasOwnProperty("end")&&(typeof l.end=="number"?h.end=c.longs===String?String(l.end):l.end:h.end=c.longs===String?i.Long.prototype.toString.call(l.end):c.longs===Number?new i.LongBits(l.end.low>>>0,l.end.high>>>0).toNumber():l.end),h},o.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},o.getTypeUrl=function(l){return l===void 0&&(l="type.googleapis.com"),l+"/onnx.TensorProto.Segment"},o}(),d.DataLocation=function(){var o={},l=Object.create(o);return l[o[0]="DEFAULT"]=0,l[o[1]="EXTERNAL"]=1,l}(),d}(),u.SparseTensorProto=function(){function d(o){if(this.dims=[],o)for(var l=Object.keys(o),c=0;c>>3){case 1:{h.values=a.onnx.TensorProto.decode(o,o.uint32());break}case 2:{h.indices=a.onnx.TensorProto.decode(o,o.uint32());break}case 3:{if(h.dims&&h.dims.length||(h.dims=[]),(f&7)===2)for(var p=o.uint32()+o.pos;o.pos>>0,o.dims[c].high>>>0).toNumber())}return l},d.toObject=function(o,l){l||(l={});var c={};if((l.arrays||l.defaults)&&(c.dims=[]),l.defaults&&(c.values=null,c.indices=null),o.values!=null&&o.hasOwnProperty("values")&&(c.values=a.onnx.TensorProto.toObject(o.values,l)),o.indices!=null&&o.hasOwnProperty("indices")&&(c.indices=a.onnx.TensorProto.toObject(o.indices,l)),o.dims&&o.dims.length){c.dims=[];for(var h=0;h>>0,o.dims[h].high>>>0).toNumber():o.dims[h]}return c},d.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},d.getTypeUrl=function(o){return o===void 0&&(o="type.googleapis.com"),o+"/onnx.SparseTensorProto"},d}(),u.TensorShapeProto=function(){function d(o){if(this.dim=[],o)for(var l=Object.keys(o),c=0;c>>3){case 1:{h.dim&&h.dim.length||(h.dim=[]),h.dim.push(a.onnx.TensorShapeProto.Dimension.decode(o,o.uint32()));break}default:o.skipType(f&7);break}}return h},d.decodeDelimited=function(o){return o instanceof r||(o=new r(o)),this.decode(o,o.uint32())},d.verify=function(o){if(typeof o!="object"||o===null)return"object expected";if(o.dim!=null&&o.hasOwnProperty("dim")){if(!Array.isArray(o.dim))return"dim: array expected";for(var l=0;l>>3){case 1:{p.dimValue=c.int64();break}case 2:{p.dimParam=c.string();break}case 3:{p.denotation=c.string();break}default:c.skipType(g&7);break}}return p},o.decodeDelimited=function(c){return c instanceof r||(c=new r(c)),this.decode(c,c.uint32())},o.verify=function(c){if(typeof c!="object"||c===null)return"object expected";var h={};if(c.dimValue!=null&&c.hasOwnProperty("dimValue")&&(h.value=1,!i.isInteger(c.dimValue)&&!(c.dimValue&&i.isInteger(c.dimValue.low)&&i.isInteger(c.dimValue.high))))return"dimValue: integer|Long expected";if(c.dimParam!=null&&c.hasOwnProperty("dimParam")){if(h.value===1)return"value: multiple values";if(h.value=1,!i.isString(c.dimParam))return"dimParam: string expected"}return c.denotation!=null&&c.hasOwnProperty("denotation")&&!i.isString(c.denotation)?"denotation: string expected":null},o.fromObject=function(c){if(c instanceof a.onnx.TensorShapeProto.Dimension)return c;var h=new a.onnx.TensorShapeProto.Dimension;return c.dimValue!=null&&(i.Long?(h.dimValue=i.Long.fromValue(c.dimValue)).unsigned=!1:typeof c.dimValue=="string"?h.dimValue=parseInt(c.dimValue,10):typeof c.dimValue=="number"?h.dimValue=c.dimValue:typeof c.dimValue=="object"&&(h.dimValue=new i.LongBits(c.dimValue.low>>>0,c.dimValue.high>>>0).toNumber())),c.dimParam!=null&&(h.dimParam=String(c.dimParam)),c.denotation!=null&&(h.denotation=String(c.denotation)),h},o.toObject=function(c,h){h||(h={});var f={};return h.defaults&&(f.denotation=""),c.dimValue!=null&&c.hasOwnProperty("dimValue")&&(typeof c.dimValue=="number"?f.dimValue=h.longs===String?String(c.dimValue):c.dimValue:f.dimValue=h.longs===String?i.Long.prototype.toString.call(c.dimValue):h.longs===Number?new i.LongBits(c.dimValue.low>>>0,c.dimValue.high>>>0).toNumber():c.dimValue,h.oneofs&&(f.value="dimValue")),c.dimParam!=null&&c.hasOwnProperty("dimParam")&&(f.dimParam=c.dimParam,h.oneofs&&(f.value="dimParam")),c.denotation!=null&&c.hasOwnProperty("denotation")&&(f.denotation=c.denotation),f},o.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},o.getTypeUrl=function(c){return c===void 0&&(c="type.googleapis.com"),c+"/onnx.TensorShapeProto.Dimension"},o}(),d}(),u.TypeProto=function(){function d(l){if(l)for(var c=Object.keys(l),h=0;h>>3){case 1:{f.tensorType=a.onnx.TypeProto.Tensor.decode(l,l.uint32());break}case 4:{f.sequenceType=a.onnx.TypeProto.Sequence.decode(l,l.uint32());break}case 5:{f.mapType=a.onnx.TypeProto.Map.decode(l,l.uint32());break}case 9:{f.optionalType=a.onnx.TypeProto.Optional.decode(l,l.uint32());break}case 8:{f.sparseTensorType=a.onnx.TypeProto.SparseTensor.decode(l,l.uint32());break}case 6:{f.denotation=l.string();break}default:l.skipType(p&7);break}}return f},d.decodeDelimited=function(l){return l instanceof r||(l=new r(l)),this.decode(l,l.uint32())},d.verify=function(l){if(typeof l!="object"||l===null)return"object expected";var c={};if(l.tensorType!=null&&l.hasOwnProperty("tensorType")){c.value=1;{var h=a.onnx.TypeProto.Tensor.verify(l.tensorType);if(h)return"tensorType."+h}}if(l.sequenceType!=null&&l.hasOwnProperty("sequenceType")){if(c.value===1)return"value: multiple values";c.value=1;{var h=a.onnx.TypeProto.Sequence.verify(l.sequenceType);if(h)return"sequenceType."+h}}if(l.mapType!=null&&l.hasOwnProperty("mapType")){if(c.value===1)return"value: multiple values";c.value=1;{var h=a.onnx.TypeProto.Map.verify(l.mapType);if(h)return"mapType."+h}}if(l.optionalType!=null&&l.hasOwnProperty("optionalType")){if(c.value===1)return"value: multiple values";c.value=1;{var h=a.onnx.TypeProto.Optional.verify(l.optionalType);if(h)return"optionalType."+h}}if(l.sparseTensorType!=null&&l.hasOwnProperty("sparseTensorType")){if(c.value===1)return"value: multiple values";c.value=1;{var h=a.onnx.TypeProto.SparseTensor.verify(l.sparseTensorType);if(h)return"sparseTensorType."+h}}return l.denotation!=null&&l.hasOwnProperty("denotation")&&!i.isString(l.denotation)?"denotation: string expected":null},d.fromObject=function(l){if(l instanceof a.onnx.TypeProto)return l;var c=new a.onnx.TypeProto;if(l.tensorType!=null){if(typeof l.tensorType!="object")throw TypeError(".onnx.TypeProto.tensorType: object expected");c.tensorType=a.onnx.TypeProto.Tensor.fromObject(l.tensorType)}if(l.sequenceType!=null){if(typeof l.sequenceType!="object")throw TypeError(".onnx.TypeProto.sequenceType: object expected");c.sequenceType=a.onnx.TypeProto.Sequence.fromObject(l.sequenceType)}if(l.mapType!=null){if(typeof l.mapType!="object")throw TypeError(".onnx.TypeProto.mapType: object expected");c.mapType=a.onnx.TypeProto.Map.fromObject(l.mapType)}if(l.optionalType!=null){if(typeof l.optionalType!="object")throw TypeError(".onnx.TypeProto.optionalType: object expected");c.optionalType=a.onnx.TypeProto.Optional.fromObject(l.optionalType)}if(l.sparseTensorType!=null){if(typeof l.sparseTensorType!="object")throw TypeError(".onnx.TypeProto.sparseTensorType: object expected");c.sparseTensorType=a.onnx.TypeProto.SparseTensor.fromObject(l.sparseTensorType)}return l.denotation!=null&&(c.denotation=String(l.denotation)),c},d.toObject=function(l,c){c||(c={});var h={};return c.defaults&&(h.denotation=""),l.tensorType!=null&&l.hasOwnProperty("tensorType")&&(h.tensorType=a.onnx.TypeProto.Tensor.toObject(l.tensorType,c),c.oneofs&&(h.value="tensorType")),l.sequenceType!=null&&l.hasOwnProperty("sequenceType")&&(h.sequenceType=a.onnx.TypeProto.Sequence.toObject(l.sequenceType,c),c.oneofs&&(h.value="sequenceType")),l.mapType!=null&&l.hasOwnProperty("mapType")&&(h.mapType=a.onnx.TypeProto.Map.toObject(l.mapType,c),c.oneofs&&(h.value="mapType")),l.denotation!=null&&l.hasOwnProperty("denotation")&&(h.denotation=l.denotation),l.sparseTensorType!=null&&l.hasOwnProperty("sparseTensorType")&&(h.sparseTensorType=a.onnx.TypeProto.SparseTensor.toObject(l.sparseTensorType,c),c.oneofs&&(h.value="sparseTensorType")),l.optionalType!=null&&l.hasOwnProperty("optionalType")&&(h.optionalType=a.onnx.TypeProto.Optional.toObject(l.optionalType,c),c.oneofs&&(h.value="optionalType")),h},d.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},d.getTypeUrl=function(l){return l===void 0&&(l="type.googleapis.com"),l+"/onnx.TypeProto"},d.Tensor=function(){function l(c){if(c)for(var h=Object.keys(c),f=0;f>>3){case 1:{p.elemType=c.int32();break}case 2:{p.shape=a.onnx.TensorShapeProto.decode(c,c.uint32());break}default:c.skipType(g&7);break}}return p},l.decodeDelimited=function(c){return c instanceof r||(c=new r(c)),this.decode(c,c.uint32())},l.verify=function(c){if(typeof c!="object"||c===null)return"object expected";if(c.elemType!=null&&c.hasOwnProperty("elemType")&&!i.isInteger(c.elemType))return"elemType: integer expected";if(c.shape!=null&&c.hasOwnProperty("shape")){var h=a.onnx.TensorShapeProto.verify(c.shape);if(h)return"shape."+h}return null},l.fromObject=function(c){if(c instanceof a.onnx.TypeProto.Tensor)return c;var h=new a.onnx.TypeProto.Tensor;if(c.elemType!=null&&(h.elemType=c.elemType|0),c.shape!=null){if(typeof c.shape!="object")throw TypeError(".onnx.TypeProto.Tensor.shape: object expected");h.shape=a.onnx.TensorShapeProto.fromObject(c.shape)}return h},l.toObject=function(c,h){h||(h={});var f={};return h.defaults&&(f.elemType=0,f.shape=null),c.elemType!=null&&c.hasOwnProperty("elemType")&&(f.elemType=c.elemType),c.shape!=null&&c.hasOwnProperty("shape")&&(f.shape=a.onnx.TensorShapeProto.toObject(c.shape,h)),f},l.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},l.getTypeUrl=function(c){return c===void 0&&(c="type.googleapis.com"),c+"/onnx.TypeProto.Tensor"},l}(),d.Sequence=function(){function l(c){if(c)for(var h=Object.keys(c),f=0;f>>3){case 1:{p.elemType=a.onnx.TypeProto.decode(c,c.uint32());break}default:c.skipType(g&7);break}}return p},l.decodeDelimited=function(c){return c instanceof r||(c=new r(c)),this.decode(c,c.uint32())},l.verify=function(c){if(typeof c!="object"||c===null)return"object expected";if(c.elemType!=null&&c.hasOwnProperty("elemType")){var h=a.onnx.TypeProto.verify(c.elemType);if(h)return"elemType."+h}return null},l.fromObject=function(c){if(c instanceof a.onnx.TypeProto.Sequence)return c;var h=new a.onnx.TypeProto.Sequence;if(c.elemType!=null){if(typeof c.elemType!="object")throw TypeError(".onnx.TypeProto.Sequence.elemType: object expected");h.elemType=a.onnx.TypeProto.fromObject(c.elemType)}return h},l.toObject=function(c,h){h||(h={});var f={};return h.defaults&&(f.elemType=null),c.elemType!=null&&c.hasOwnProperty("elemType")&&(f.elemType=a.onnx.TypeProto.toObject(c.elemType,h)),f},l.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},l.getTypeUrl=function(c){return c===void 0&&(c="type.googleapis.com"),c+"/onnx.TypeProto.Sequence"},l}(),d.Map=function(){function l(c){if(c)for(var h=Object.keys(c),f=0;f>>3){case 1:{p.keyType=c.int32();break}case 2:{p.valueType=a.onnx.TypeProto.decode(c,c.uint32());break}default:c.skipType(g&7);break}}return p},l.decodeDelimited=function(c){return c instanceof r||(c=new r(c)),this.decode(c,c.uint32())},l.verify=function(c){if(typeof c!="object"||c===null)return"object expected";if(c.keyType!=null&&c.hasOwnProperty("keyType")&&!i.isInteger(c.keyType))return"keyType: integer expected";if(c.valueType!=null&&c.hasOwnProperty("valueType")){var h=a.onnx.TypeProto.verify(c.valueType);if(h)return"valueType."+h}return null},l.fromObject=function(c){if(c instanceof a.onnx.TypeProto.Map)return c;var h=new a.onnx.TypeProto.Map;if(c.keyType!=null&&(h.keyType=c.keyType|0),c.valueType!=null){if(typeof c.valueType!="object")throw TypeError(".onnx.TypeProto.Map.valueType: object expected");h.valueType=a.onnx.TypeProto.fromObject(c.valueType)}return h},l.toObject=function(c,h){h||(h={});var f={};return h.defaults&&(f.keyType=0,f.valueType=null),c.keyType!=null&&c.hasOwnProperty("keyType")&&(f.keyType=c.keyType),c.valueType!=null&&c.hasOwnProperty("valueType")&&(f.valueType=a.onnx.TypeProto.toObject(c.valueType,h)),f},l.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},l.getTypeUrl=function(c){return c===void 0&&(c="type.googleapis.com"),c+"/onnx.TypeProto.Map"},l}(),d.Optional=function(){function l(c){if(c)for(var h=Object.keys(c),f=0;f>>3){case 1:{p.elemType=a.onnx.TypeProto.decode(c,c.uint32());break}default:c.skipType(g&7);break}}return p},l.decodeDelimited=function(c){return c instanceof r||(c=new r(c)),this.decode(c,c.uint32())},l.verify=function(c){if(typeof c!="object"||c===null)return"object expected";if(c.elemType!=null&&c.hasOwnProperty("elemType")){var h=a.onnx.TypeProto.verify(c.elemType);if(h)return"elemType."+h}return null},l.fromObject=function(c){if(c instanceof a.onnx.TypeProto.Optional)return c;var h=new a.onnx.TypeProto.Optional;if(c.elemType!=null){if(typeof c.elemType!="object")throw TypeError(".onnx.TypeProto.Optional.elemType: object expected");h.elemType=a.onnx.TypeProto.fromObject(c.elemType)}return h},l.toObject=function(c,h){h||(h={});var f={};return h.defaults&&(f.elemType=null),c.elemType!=null&&c.hasOwnProperty("elemType")&&(f.elemType=a.onnx.TypeProto.toObject(c.elemType,h)),f},l.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},l.getTypeUrl=function(c){return c===void 0&&(c="type.googleapis.com"),c+"/onnx.TypeProto.Optional"},l}(),d.SparseTensor=function(){function l(c){if(c)for(var h=Object.keys(c),f=0;f>>3){case 1:{p.elemType=c.int32();break}case 2:{p.shape=a.onnx.TensorShapeProto.decode(c,c.uint32());break}default:c.skipType(g&7);break}}return p},l.decodeDelimited=function(c){return c instanceof r||(c=new r(c)),this.decode(c,c.uint32())},l.verify=function(c){if(typeof c!="object"||c===null)return"object expected";if(c.elemType!=null&&c.hasOwnProperty("elemType")&&!i.isInteger(c.elemType))return"elemType: integer expected";if(c.shape!=null&&c.hasOwnProperty("shape")){var h=a.onnx.TensorShapeProto.verify(c.shape);if(h)return"shape."+h}return null},l.fromObject=function(c){if(c instanceof a.onnx.TypeProto.SparseTensor)return c;var h=new a.onnx.TypeProto.SparseTensor;if(c.elemType!=null&&(h.elemType=c.elemType|0),c.shape!=null){if(typeof c.shape!="object")throw TypeError(".onnx.TypeProto.SparseTensor.shape: object expected");h.shape=a.onnx.TensorShapeProto.fromObject(c.shape)}return h},l.toObject=function(c,h){h||(h={});var f={};return h.defaults&&(f.elemType=0,f.shape=null),c.elemType!=null&&c.hasOwnProperty("elemType")&&(f.elemType=c.elemType),c.shape!=null&&c.hasOwnProperty("shape")&&(f.shape=a.onnx.TensorShapeProto.toObject(c.shape,h)),f},l.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},l.getTypeUrl=function(c){return c===void 0&&(c="type.googleapis.com"),c+"/onnx.TypeProto.SparseTensor"},l}(),d}(),u.OperatorSetIdProto=function(){function d(o){if(o)for(var l=Object.keys(o),c=0;c>>3){case 1:{h.domain=o.string();break}case 2:{h.version=o.int64();break}default:o.skipType(f&7);break}}return h},d.decodeDelimited=function(o){return o instanceof r||(o=new r(o)),this.decode(o,o.uint32())},d.verify=function(o){return typeof o!="object"||o===null?"object expected":o.domain!=null&&o.hasOwnProperty("domain")&&!i.isString(o.domain)?"domain: string expected":o.version!=null&&o.hasOwnProperty("version")&&!i.isInteger(o.version)&&!(o.version&&i.isInteger(o.version.low)&&i.isInteger(o.version.high))?"version: integer|Long expected":null},d.fromObject=function(o){if(o instanceof a.onnx.OperatorSetIdProto)return o;var l=new a.onnx.OperatorSetIdProto;return o.domain!=null&&(l.domain=String(o.domain)),o.version!=null&&(i.Long?(l.version=i.Long.fromValue(o.version)).unsigned=!1:typeof o.version=="string"?l.version=parseInt(o.version,10):typeof o.version=="number"?l.version=o.version:typeof o.version=="object"&&(l.version=new i.LongBits(o.version.low>>>0,o.version.high>>>0).toNumber())),l},d.toObject=function(o,l){l||(l={});var c={};if(l.defaults)if(c.domain="",i.Long){var h=new i.Long(0,0,!1);c.version=l.longs===String?h.toString():l.longs===Number?h.toNumber():h}else c.version=l.longs===String?"0":0;return o.domain!=null&&o.hasOwnProperty("domain")&&(c.domain=o.domain),o.version!=null&&o.hasOwnProperty("version")&&(typeof o.version=="number"?c.version=l.longs===String?String(o.version):o.version:c.version=l.longs===String?i.Long.prototype.toString.call(o.version):l.longs===Number?new i.LongBits(o.version.low>>>0,o.version.high>>>0).toNumber():o.version),c},d.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},d.getTypeUrl=function(o){return o===void 0&&(o="type.googleapis.com"),o+"/onnx.OperatorSetIdProto"},d}(),u.OperatorStatus=function(){var d={},o=Object.create(d);return o[d[0]="EXPERIMENTAL"]=0,o[d[1]="STABLE"]=1,o}(),u.FunctionProto=function(){function d(o){if(this.input=[],this.output=[],this.attribute=[],this.attributeProto=[],this.node=[],this.opsetImport=[],o)for(var l=Object.keys(o),c=0;c>>3){case 1:{h.name=o.string();break}case 4:{h.input&&h.input.length||(h.input=[]),h.input.push(o.string());break}case 5:{h.output&&h.output.length||(h.output=[]),h.output.push(o.string());break}case 6:{h.attribute&&h.attribute.length||(h.attribute=[]),h.attribute.push(o.string());break}case 11:{h.attributeProto&&h.attributeProto.length||(h.attributeProto=[]),h.attributeProto.push(a.onnx.AttributeProto.decode(o,o.uint32()));break}case 7:{h.node&&h.node.length||(h.node=[]),h.node.push(a.onnx.NodeProto.decode(o,o.uint32()));break}case 8:{h.docString=o.string();break}case 9:{h.opsetImport&&h.opsetImport.length||(h.opsetImport=[]),h.opsetImport.push(a.onnx.OperatorSetIdProto.decode(o,o.uint32()));break}case 10:{h.domain=o.string();break}default:o.skipType(f&7);break}}return h},d.decodeDelimited=function(o){return o instanceof r||(o=new r(o)),this.decode(o,o.uint32())},d.verify=function(o){if(typeof o!="object"||o===null)return"object expected";if(o.name!=null&&o.hasOwnProperty("name")&&!i.isString(o.name))return"name: string expected";if(o.input!=null&&o.hasOwnProperty("input")){if(!Array.isArray(o.input))return"input: array expected";for(var l=0;l{Wn(),ei(),ye=Er($r()),mr(),cr=class{static arraysEqual(t,e){if(t.length!==e.length)return!1;for(let n=0;n1&&l>1)return;u[a-d]=Math.max(o,l)}return u}static index(e,n){let r=new Array(n.length);return Qt.fillIndex(e,n,r),r}static fillIndex(e,n,r){let s=e.length-n.length;for(let i=0;i=0;y--)o[y]=b%a[y],b=Math.floor(b/a[y]);p||(Qt.fillIndex(o,e.dims,l),h=e.get(l)),g||(Qt.fillIndex(o,n.dims,c),f=n.get(c)),d.set(o,r(h,f))}}return d}}static isValidBroadcast(e,n){let r=e.length,s=n.length;if(r>s)return!1;for(let i=1;i<=r;i++)if(e[r-i]!==1&&e[r-i]!==n[s-i])return!1;return!0}static getBroadcastDims(e,n){let r=e.length,s=[];for(let i=0;i1&&u===1&&s.unshift(a)}return s}},Xn=class{static getShapeOfGemmResult(t,e,n,r,s){if(t.length!==2||n.length!==2)throw new Error("shape need to be of size 2");let i,a,u;e?(i=t[1],a=t[0]):(i=t[0],a=t[1]);let d=-1;if(r?(u=n[0],d=1):(u=n[1],d=0),n[d]!==a)throw new Error("dimension mismatch");if(i<=0||u<=0||a<=0)throw new Error("invalid shape specified");if(s&&!Xe.isValidBroadcast(s,[i,u]))throw new Error("gemm: invalid bias shape for broadcast");return[i,u,a]}},Ve=class Sr{static tensorDataTypeFromProto(e){switch(e){case ye.onnx.TensorProto.DataType.INT8:return"int8";case ye.onnx.TensorProto.DataType.UINT8:return"uint8";case ye.onnx.TensorProto.DataType.BOOL:return"bool";case ye.onnx.TensorProto.DataType.INT16:return"int16";case ye.onnx.TensorProto.DataType.UINT16:return"uint16";case ye.onnx.TensorProto.DataType.INT32:return"int32";case ye.onnx.TensorProto.DataType.UINT32:return"uint32";case ye.onnx.TensorProto.DataType.FLOAT:return"float32";case ye.onnx.TensorProto.DataType.DOUBLE:return"float64";case ye.onnx.TensorProto.DataType.STRING:return"string";case ye.onnx.TensorProto.DataType.INT64:return"int32";case ye.onnx.TensorProto.DataType.UINT64:return"uint32";default:throw new Error(`unsupported data type: ${ye.onnx.TensorProto.DataType[e]}`)}}static tensorDataTypeStringToEnum(e){switch(e){case"int8":return ye.onnx.TensorProto.DataType.INT8;case"uint8":return ye.onnx.TensorProto.DataType.UINT8;case"bool":return ye.onnx.TensorProto.DataType.BOOL;case"int16":return ye.onnx.TensorProto.DataType.INT16;case"uint16":return ye.onnx.TensorProto.DataType.UINT16;case"int32":return ye.onnx.TensorProto.DataType.INT32;case"uint32":return ye.onnx.TensorProto.DataType.UINT32;case"float32":return ye.onnx.TensorProto.DataType.FLOAT;case"float64":return ye.onnx.TensorProto.DataType.DOUBLE;case"string":return ye.onnx.TensorProto.DataType.STRING;case"int64":return ye.onnx.TensorProto.DataType.INT64;case"uint64":return ye.onnx.TensorProto.DataType.UINT64;default:throw new Error(`unsupported data type: ${e}`)}}static tensorDimsFromProto(e){return e.map(n=>zt.isLong(n)?n.toNumber():n)}static tensorValueTypeFromProto(e){return{tensorType:Sr.tensorDataTypeFromProto(e.elemType),shape:{dims:Sr.tensorDimsFromProto(e.shape.dim.map(n=>n.dimValue))}}}static tensorDimsFromORTFormat(e){let n=[];for(let r=0;re.length)throw new Error(`invalid dimension of ${n} for sizeFromDimension as Tensor has ${e.length} dimensions.`);return xt.getSizeFromDimensionRange(e,n,e.length)}static sizeToDimension(e,n){if(n<0||n>e.length)throw new Error(`invalid dimension of ${n} for sizeToDimension as Tensor has ${e.length} dimensions.`);return xt.getSizeFromDimensionRange(e,0,n)}static getSizeFromDimensionRange(e,n,r){let s=1;for(let i=n;i=0;--s)r[s]=r[s+1]*e[s+1];return r}static transpose(e){return e.slice().reverse()}static indicesToOffset(e,n,r){r===void 0&&(r=e.length);let s=0;for(let i=0;i=n)throw new Error("unsupported axis for this operation.");return e<0?e+n:e}static normalizeAxes(e,n){return e.map(r=>this.normalizeAxis(r,n))}static incrementIndex(e,n,r){if(n.length===0||e.length===0)throw new Error("Index incrementing unsupported for scalar Tensor");if(r===void 0)r=n.length;else if(r<=0||r>n.length)throw new Error("Incorrect axis to increment on");for(let s=r-1;s>=0&&(e[s]++,!(e[s]=e.length)throw new Error("the dimension with value zero exceeds the dimension size of the input tensor");s[d]=e[d]}else s[d]=n[d];a*=s[d]}}let u=xt.size(e);if(i!==-1){if(u%a!==0)throw new Error(`the input tensor cannot be reshaped to the requested shape. Input shape: [${e}] Output shape: [${n}]`);s[i]=u/a}else if(a!==u)throw new Error("reshapedDims and originalDims don't have matching sizes");return s}static sortBasedOnPerm(e,n){return n?n.map(r=>e[r]):e.slice().reverse()}static padShape(e,n){let r=e.length;return e.map((s,i)=>s+n[i]+n[i+r])}static areEqual(e,n){return e.length!==n.length?!1:e.every((r,s)=>r===n[s])}static validateDimsAndCalcSize(e){if(e.length>6)throw new TypeError("Only rank 0 to 6 is supported for tensor shape.");let n=1;for(let r of e){if(!Number.isInteger(r))throw new TypeError(`Invalid shape: ${r} is not an integer`);if(r<0||r>2147483647)throw new TypeError(`Invalid shape: length ${r} is not allowed`);n*=r}return n}static flattenShape(e,n){n<0&&(n+=e.length);let r=e.reduce((i,a)=>i*a,1),s=e.slice(n).reduce((i,a)=>i*a,1);return[r/s,s]}static squeezeShape(e,n){let r=new Array;n=xt.normalizeAxes(n,e.length);for(let s=0;s=0;if(i&&e[s]!==1)throw new Error("squeeze an axis of size different than 1");(n.length===0&&e[s]>1||n.length>0&&!i)&&r.push(e[s])}return r}static unsqueezeShape(e,n){let r=new Array(e.length+n.length);r.fill(0);for(let i=0;i=r.length)throw new Error("'axes' has an out of range axis");if(r[a]!==0)throw new Error("'axes' has a duplicate axis");r[a]=1}let s=0;for(let i=0;i=r.length?r.push(n[u+2]):r[u]=n[u+2];for(let u=0;u=r[u]||a[u+r.length]>=r[u])throw new Error("pads should be smaller than kernel")}}static adjustPadsBasedOnAutoPad(e,n,r,s,i,a){if(a){if(i.length!==2*(e.length-2))throw new Error("length of pads should be twice the length of data dimensions");if(n.length!==e.length-2)throw new Error("length of strides should be the length of data dimensions");if(s.length!==e.length-2)throw new Error("length of kernel shapes should be the length of data dimensions");for(let u=0;u{Cu=Er(_s()),ei(),tn(),te=Er($r()),fe(),mi=W.experimental.fbs,Fe=class Hn{constructor(e,n,r,s,i,a=Cu.Guid.create()){this.dims=e,this.type=n,this.dataProvider=r,this.asyncDataProvider=s,this.cache=i,this.dataId=a,this.size=U.validateDimsAndCalcSize(e);let u=this.size,d=r===void 0&&s===void 0&&i===void 0;if(i!==void 0&&i.length!==u)throw new RangeError("Input dims doesn't match data length.");if(n==="string"){if(i!==void 0&&(!Array.isArray(i)||!i.every(o=>typeof o=="string")))throw new TypeError("cache should be a string array");d&&(this.cache=new Array(u))}else{if(i!==void 0){let o=ku(n);if(!(i instanceof o))throw new TypeError(`cache should be type ${o.name}`)}if(d){let o=new ArrayBuffer(u*Vd(n));this.cache=Wd(o,n)}}}get data(){if(this.cache===void 0){let e=this.dataProvider(this.dataId);if(e.length!==this.size)throw new Error("Length of data provided by the Data Provider is inconsistent with the dims of this Tensor.");this.cache=e}return this.cache}get stringData(){if(this.type!=="string")throw new TypeError("data type is not string");return this.data}get integerData(){switch(this.type){case"uint8":case"int8":case"uint16":case"int16":case"int32":case"uint32":case"bool":return this.data;default:throw new TypeError("data type is not integer (uint8, int8, uint16, int16, int32, uint32, bool)")}}get floatData(){switch(this.type){case"float32":case"float64":return this.data;default:throw new TypeError("data type is not float (float32, float64)")}}get numberData(){if(this.type!=="string")return this.data;throw new TypeError("type cannot be non-number (string)")}get(e){return this.data[U.indicesToOffset(e,this.strides)]}set(e,n){this.data[U.indicesToOffset(e,this.strides)]=n}async getData(){return this.cache===void 0&&(this.cache=await this.asyncDataProvider(this.dataId)),this.cache}get strides(){return this._strides||(this._strides=U.computeStrides(this.dims)),this._strides}static fromProto(e){if(!e)throw new Error("cannot construct Value from an empty tensor");let n=Ve.tensorDataTypeFromProto(e.dataType),r=Ve.tensorDimsFromProto(e.dims),s=new Hn(r,n);if(n==="string")e.stringData.forEach((i,a)=>{s.data[a]=sn(i)});else if(e.rawData&&typeof e.rawData.byteLength=="number"&&e.rawData.byteLength>0){let i=s.data,a=new DataView(e.rawData.buffer,e.rawData.byteOffset,e.rawData.byteLength),u=Fu(e.dataType),d=e.rawData.byteLength/u;if(e.rawData.byteLength%u!==0)throw new Error("invalid buffer length");if(i.length!==d)throw new Error("buffer length mismatch");for(let o=0;o0){let i=s.data,a=new DataView(e.rawDataArray().buffer,e.rawDataArray().byteOffset,e.rawDataLength()),u=Fu(e.dataType()),d=e.rawDataLength()/u;if(e.rawDataLength()%u!==0)throw new Error("invalid buffer length");if(i.length!==d)throw new Error("buffer length mismatch");for(let o=0;o{Hd={version:"",attribute:"attribute",varyingVertex:"varying",varyingFrag:"varying",texture2D:"texture2D",output:"gl_FragColor",outputDeclaration:""},qd={version:"#version 300 es",attribute:"in",varyingVertex:"out",varyingFrag:"in",texture2D:"texture",output:"outputColor",outputDeclaration:"out vec4 outputColor;"}}),ae=L(()=>{});async function gi(t,e=r=>0,n){return new Promise((r,s)=>{let i=0,a=()=>{if(t()){r();return}i++;let u=e(i);if(n!=null&&i>=n){s();return}setTimeout(a,u)};a()})}function Kn(t){return Cr(typeof t<"u"&&t.length!==0,()=>"empty string found for sampler name"),"get"+t.charAt(0).toUpperCase()+t.slice(1)}function Mu(t){return Cr(typeof t<"u"&&t.length!==0,()=>"empty string found for sampler name"),"get"+t.charAt(0).toUpperCase()+t.slice(1)+"AtOutCoords"}function kr(t,e){let n=JSON.parse(JSON.stringify(t));return n=e,n}function Br(t,e){return e.map(n=>t[n]).join(", ")}function Ke(t){if(t<=1)return"int";if(t===2)return"ivec2";if(t===3)return"ivec3";if(t===4)return"ivec4";if(t===5)return"ivec5";if(t===6)return"ivec6";throw Error(`GPU for rank ${t} is not yet supported`)}function St(t=6){return["x","y","z","w","u","v"].slice(0,t)}var Ft=L(()=>{fe()});function jd(t,e){return St(e).map(n=>`${t}.${n}`)}function Nr(t,e){return e===1?[t]:jd(t,e)}function $t(){return` + float getChannel(vec4 frag, int dim) { + int modCoord = imod(dim, 2); + return modCoord == 0 ? frag.r : frag.g; + } + + float getChannel(vec4 frag, vec2 innerDims) { + vec2 modCoord = mod(innerDims, 2.); + return modCoord.x == 0. ? + (modCoord.y == 0. ? frag.r : frag.g) : + (modCoord.y == 0. ? frag.b : frag.a); + } + `}var br=L(()=>{Ft()});function Xd(t,e,n){if(t===0)return"false";if(t===1)return`rc > ${e[0]}`;let r="";for(let s=t-2;s= ${e[s-t+2]}`,s= ${t[0]} ? 0. : getA(rc + 1), + 0, 0`;let r="r, c",s="r, cp1",i="rp1, c",a="rp1, cp1",u="";if(n>2)for(let d=0;d= ${r}; + bool cEdge = cp1 >= ${n}; + `}var Gu,Yd,Uu,zu=L(()=>{xe(),ae(),Ft(),br(),Gu={name:"pack",inputNames:["A"],inputTypes:[1]},Yd=(t,e)=>{let n=q(t.session.backend.glContext.version),r=e.dims,s=r.length,i=e.dims.length,a=Ke(i),u=Nr("rc",i),d=Jd(i,u,r[r.length-2],r[r.length-1]),o;s===0?o=[1,1]:s===1?o=[r[0],1]:o=[r[i-1],r[i-2]];let l=Xd(i,o,u),c=Kd(r,u),h=` + void main() { + ${a} rc = getOutputCoords(); + + if(${l}) { + ${n.output} = vec4(0); + } else { + ${d} + + ${n.output} = vec4(${c}); + } + } + `;return{...Gu,hasMain:!0,output:{dims:e.dims,type:e.type,textureType:2},shaderSource:h}},Uu=(t,e)=>({...Gu,get:()=>Yd(t,e)})});function yi(t){if(t.length===0)return[1,1,1];let e=1;for(let n=0;n1?t[t.length-2]:1,t[t.length-1]]}function Wu(t,e){let n=!1;return t.length===0||e.length===0?n=!0:t.length<2||e.length<2?n=t[t.length-1]===e[e.length-1]:n=t[t.length-1]===e[e.length-1]&&t[t.length-2]===e[e.length-2],n}function eh(t){let e=U.computeStrides(t),n=["b","r","c"],r="index";return` + ivec3 inputCoordsFromReshapedOutCoords(int index) { + ${e.map((s,i)=>{let a=`int ${n[i]} = ${r} / ${s}`,u=i===e.length-1?`int ${n[i+1]} = ${r} - ${n[i]} * ${s}`:`index -= ${n[i]} * ${s}`;return`${a}; ${u};`}).join("")} + return ivec3(b, r, c); + } + `}function th(t){let e=U.computeStrides(t);return` + int getFlattenedIndex(ivec3 coords) { + // reverse y, z order + return coords.x * ${e[0]} + coords.z * ${e[1]} + coords.y; + } +`}var Zd,Qd,Vu,Hu=L(()=>{fe(),xe(),ae(),br(),Zd=t=>({name:"Reshape (packed)",inputTypes:[2],inputNames:["A"],cacheHint:`${t}`}),Qd=(t,e,n,r)=>{let s=e.dims,i=r,a="";for(let o=0;o<4;o++){let l="";switch(o){case 0:l="outputCoords = rc;";break;case 1:l="outputCoords = ivec3(rc.x, rc.y+1, rc.z);";break;case 2:l="outputCoords = ivec3(rc.x, rc.y, rc.z+1);";break;case 3:l="outputCoords = ivec3(rc.x, rc.y+1, rc.z+1);";break;default:throw new Error}a+=` + ${l} + ${o>0?"if(outputCoords.y < rows && outputCoords.z < cols){":""} + int flattenedIndex = getFlattenedIndex(outputCoords); + + ivec3 inputRC = inputCoordsFromReshapedOutCoords(flattenedIndex); + vec2 innerDims = vec2(float(inputRC.y),float(inputRC.z)); + + result[${o}] = getChannel(getA(inputRC.x, inputRC.y, inputRC.z), innerDims); + + ${o>0?"}":""} + `}let u=q(t.session.backend.glContext.version),d=` + ${eh(s)} + ${th(i)} + ${$t()} + + void main() { + ivec3 rc = getOutputCoords(); + + vec4 result = vec4(0.0); + + ivec3 outputCoords; + int rows = ${i[2]}; + int cols = ${i[1]}; + + ${a} + ${u.output} = result; + } + `;return{...n,output:{dims:i,type:e.type,textureType:2},shaderSource:d,hasMain:!0}},Vu=(t,e,n)=>{let r=Zd(n);return{...r,get:()=>Qd(t,e,r,n)}}}),Ti,qu=L(()=>{xe(),ae(),Ti=(t,e)=>{let n=e.shape,r=q(t.session.backend.glContext.version),s=` + const float FLOAT_MAX = 1.70141184e38; + const float FLOAT_MIN = 1.17549435e-38; + + bool isNaN(float val) { + return (val < 1.0 || 0.0 < val || val == 0.0) ? false : true; + } + + highp vec4 encodeAsUint8(highp float v) { + if (isNaN(v)) { + return vec4(255, 255, 255, 255); + } + + highp float av = abs(v); + + if(av < FLOAT_MIN) { + return vec4(0.0, 0.0, 0.0, 0.0); + } else if(v > FLOAT_MAX) { + return vec4(0.0, 0.0, 128.0, 127.0) / 255.0; + } else if(v < -FLOAT_MAX) { + return vec4(0.0, 0.0, 128.0, 255.0) / 255.0; + } + + highp vec4 c = vec4(0,0,0,0); + + highp float e = floor(log2(av)); + highp float m = exp2(fract(log2(av))) - 1.0; + + c[2] = floor(128.0 * m); + m -= c[2] / 128.0; + c[1] = floor(32768.0 * m); + m -= c[1] / 32768.0; + c[0] = floor(8388608.0 * m); + + highp float ebias = e + 127.0; + c[3] = floor(ebias / 2.0); + ebias -= c[3] * 2.0; + c[2] += floor(ebias) * 128.0; + + c[3] += 128.0 * step(0.0, -v); + + return c / 255.0; + } + + void main() { + float value = ${r.texture2D}(X,TexCoords).r; + ${r.output} = encodeAsUint8(value); + }`,i={name:"Uint8Encode",inputTypes:[0],inputNames:["X"],output:{dims:n,type:e.tensor.type,textureType:3},shaderSource:s,hasMain:!0};return t.executeProgram(i,[e.tensor])}});function nh(t,e){if(t===1)return"rc";let n="";for(let r=0;r{xe(),ae(),Ft(),br(),ju={name:"unpack",inputNames:["A"],inputTypes:[2]},rh=(t,e)=>{let n=e.dims.length,r=Nr("rc",n),s=r.slice(-2),i=Ke(n),a=$t(),u=e.dims.length===0?"":nh(n,r),d=n<=1?"rc":`vec2(${s.join(",")})`,o=q(t.session.backend.glContext.version),l=` + ${a} + void main() { + ${i} rc = getOutputCoords(); + + // Sample the texture with the coords to get the rgba channel value. + vec4 packedInput = getA(${u}); + + ${o.output} = vec4(getChannel(packedInput, ${d}), 0, 0, 0); + } + `;return{...ju,hasMain:!0,output:{dims:e.dims,type:e.type,textureType:0},shaderSource:l}},Yu=(t,e)=>({...ju,get:()=>rh(t,e)})}),Jn,un,Zn,ln=L(()=>{ut(),Jn=class{constructor(t,e=1){if(e===1)this.internalFormat=t.R32F,this.format=t.RED,this.textureType=t.FLOAT,this.channelSize=e;else if(e===4)this.internalFormat=t.RGBA32F,this.format=t.RGBA,this.textureType=t.FLOAT,this.channelSize=e;else throw new Error(`Invalid number of channels: ${e}`)}encode(t,e){let n,r;return t.constructor!==Float32Array&&(ce.warning("Encoder","data was not of type Float32; creating new Float32Array"),r=new Float32Array(t)),e*this.channelSize>t.length?(ce.warning("Encoder","Source data too small. Allocating larger array"),r=t,n=this.allocate(e*this.channelSize),r.forEach((s,i)=>n[i]=s)):(r=t,n=r),n}allocate(t){return new Float32Array(t*4)}decode(t,e){return this.channelSize===1?t.filter((n,r)=>r%4===0).subarray(0,e):t.subarray(0,e)}},un=class{constructor(t,e=1,n){if(e!==1&&e!==4)throw new Error(`Invalid number of channels: ${e}`);this.internalFormat=t.RGBA,this.format=t.RGBA,this.channelSize=e,this.textureType=n||t.FLOAT}encode(t,e){let n=t;return this.channelSize===1&&(ce.verbose("Encoder","Exploding into a larger array"),n=this.allocate(e),t.forEach((r,s)=>n[s*4]=r)),n}allocate(t){return new Float32Array(t*4)}decode(t,e){return this.channelSize===1?t.filter((n,r)=>r%4===0).subarray(0,e):t.subarray(0,e)}},Zn=class{constructor(t,e=1){if(this.channelSize=4,e===1)this.internalFormat=t.ALPHA,this.format=t.ALPHA,this.textureType=t.UNSIGNED_BYTE,this.channelSize=e;else if(e===4)this.internalFormat=t.RGBA,this.format=t.RGBA,this.textureType=t.UNSIGNED_BYTE,this.channelSize=e;else throw new Error(`Invalid number of channels: ${e}`)}encode(t,e){return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}allocate(t){return new Uint8Array(t*this.channelSize)}decode(t,e){if(t instanceof Uint8Array)return t.subarray(0,e);throw new Error(`Invalid array type: ${t.constructor}`)}}}),fn,Ku,xi,Ju=L(()=>{fe(),ae(),fn=(t,e,n)=>{let r=n===0||n===1?1:4,s=n===2,i=n===1||n===2,a=n===4?e.length-1:void 0,u=n===4?e.map((d,o)=>o===e.length-1?d*4:d):void 0;return xi(t,e,r,u,{isPacked:s,reverseWH:i,breakAxis:a})},Ku=(t,e,n)=>{let r=fn(t,e,n);return[r.width,r.height]},xi=(t,e,n=1,r,s)=>{let i=!!(s&&s.isPacked),[a,u]=t.computeTextureWH(i&&r||e,s),d=e.length,o=e.slice(0);if(d===0&&(o=[1]),n===1)r=e;else if(i){if(n!==4)throw new Error("a packed texture must be 4-channel");r=e,d>0&&(o[d-1]=Math.ceil(o[d-1]/2)),d>1&&(o[d-2]=Math.ceil(o[d-2]/2))}else if(!r)throw new Error("Unpacked shape is needed when using channels > 1");return{width:a,height:u,channels:n,isPacked:i,shape:o,strides:U.computeStrides(o),unpackedShape:r,reversedWH:s&&s.reverseWH}}}),ih,Qn,Qu=L(()=>{ut(),mr(),fe(),zu(),Hu(),qu(),Xu(),ln(),Ju(),ae(),ih=(t,e)=>{let n=e.map(s=>`${s.unpackedShape.join(",")};${s.width}x${s.height}`).join("_"),r=t.name;return t.cacheHint&&(r+="["+t.cacheHint+"]"),r+=":"+n,r},Qn=class{constructor(t){this.session=t,this.packedTextureDataCache=new Map,this.unpackedTextureDataCache=new Map}calculateTextureWidthAndHeight(t,e){return Ku(this.session.layoutStrategy,t,e)}executeProgram(t,e){if(e.lengththis.readTexture(i),async a=>this.readTextureAsync(i),void 0,s),texture:n};return this.setTextureData(i.tensor.dataId,i,t.isPacked),i}getTextureData(t,e=!1){return this.session.isInitializer(t)?this.session.getTextureData(t,e):e?this.packedTextureDataCache.get(t):this.unpackedTextureDataCache.get(t)}setTextureData(t,e,n=!1){this.session.isInitializer(t)?this.session.setTextureData(t,e,n):(n?this.packedTextureDataCache:this.unpackedTextureDataCache).set(t,e)}isTextureLayoutCached(t,e=!1){return!!this.getTextureData(t.dataId,e)}dispose(){this.session.textureManager.clearActiveTextures(),this.packedTextureDataCache.forEach(t=>this.session.textureManager.releaseTexture(t)),this.packedTextureDataCache=new Map,this.unpackedTextureDataCache.forEach(t=>this.session.textureManager.releaseTexture(t)),this.unpackedTextureDataCache=new Map}readTexture(t){return t.isPacked?this.readTexture(this.unpack(t)):this.session.backend.glContext.isFloat32DownloadSupported?this.session.textureManager.readTexture(t,t.tensor.type,t.channels):this.session.textureManager.readUint8TextureAsFloat(Ti(this,t))}async readTextureAsync(t){return t.isPacked?this.readTextureAsync(this.unpack(t)):this.session.backend.glContext.isFloat32DownloadSupported?this.session.textureManager.readTextureAsync(t,t.tensor.type,t.channels):this.session.textureManager.readUint8TextureAsFloat(Ti(this,t))}pack(t){return this.executeProgram(Uu(this,t.tensor),[t.tensor])}unpack(t){return this.executeProgram(Yu(this,t.tensor),[t.tensor])}}}),vi,ee,Ge=L(()=>{vi=class{constructor(t){Object.assign(this,t)}get cacheKey(){return this.key||(this.key=Object.getOwnPropertyNames(this).sort().map(t=>`${this[t]}`).join(";")),this.key}},ee=t=>new vi(t)}),el,tl,rl,ah,sh,nl=L(()=>{Ge(),xe(),ae(),el={name:"BatchNormalization",inputNames:["A","Scale","B","Mean","Variance"],inputTypes:[0,0,0,0,0]},tl=(t,e,n)=>(sh(e),[t.run({...el,cacheHint:n.cacheKey,get:()=>ah(t,e,n)},e)]),rl=t=>{let e=t.attributes.getFloat("epsilon",1e-5),n=t.attributes.getFloat("momentum",.9),r=t.attributes.getInt("spatial",1);return ee({epsilon:e,momentum:n,spatial:r})},ah=(t,e,n)=>{let r=q(t.session.backend.glContext.version),s=e[0].dims.length,[i,a]=t.calculateTextureWidthAndHeight(e[1].dims,0),u=` + float process(int[${s}] indices) { + vec2 position = offsetToCoords(indices[1], ${i}, ${a}); + float scale = getColorAsFloat(${r.texture2D}(Scale, position)); + float mean = getColorAsFloat(${r.texture2D}(Mean, position)); + float variance = getColorAsFloat(${r.texture2D}(Variance, position)); + float b = getColorAsFloat(${r.texture2D}(B, position)); + + return scale * ( (_A(indices) - mean) / sqrt(variance + float(${n.epsilon})) ) + b; + }`;return{...el,output:{dims:e[0].dims,type:e[0].type,textureType:0},shaderSource:u}},sh=t=>{if(!t||t.length!==5)throw new Error("BatchNormalization requires 5 inputs.");let e=t[0],n=t[1],r=t[2],s=t[3],i=t[4];if(e.dims.length<3||n.dims.length!==1||r.dims.length!==1||s.dims.length!==1||i.dims.length!==1)throw new Error("invalid input shape.");if(n.dims[0]!==e.dims[1]||r.dims[0]!==e.dims[1]||s.dims[0]!==e.dims[1]||i.dims[0]!==e.dims[1])throw new Error("invalid input shape.");if(e.type!=="float32"&&e.type!=="float64"||n.type!=="float32"&&n.type!=="float64"||r.type!=="float32"&&r.type!=="float64"||s.type!=="float32"&&s.type!=="float64"||i.type!=="float32"&&i.type!=="float64")throw new Error("invalid input tensor types.")}}),eo,pt,R,cn,to$1,Vt=L(()=>{eo=class{constructor(t,e,n,r){this.glContext=t,this.programInfo=e,this.inputTextureLayouts=n,this.outputTextureLayout=r}},pt=class{constructor(t){this.context=t}},R=class{constructor(t,e){this.routineBody=t,this.dependencies=e}},cn=class{constructor(t,e,n){this.name=t,n?this.dependencies=n:this.dependencies=[],e&&(this.routineBody=e)}addDependency(t){t&&this.dependencies.push(t)}},to$1=class{static returnOrderedNodes(t){if(!t||t.length===0)return[];if(t.length===1)return t;let e=new Set,n=new Set,r=new Array;return this.createOrderedNodes(t,e,n,r),r}static createOrderedNodes(t,e,n,r){for(let s=0;s0)for(let i=0;i b); + } + vec4 ${t}(vec4 v1, vec4 v2) { + return vec4( v1.r > v2.r , + v1.g > v2.g, + v1.b > v2.b, + v1.a > v2.a ); + } + `,name:t,type:0}}function mh(){let t="less_";return{body:` + float ${t}(float a, float b) { + return float(a < b); + } + vec4 ${t}(vec4 v1, vec4 v2) { + return vec4( v1.r < v2.r , + v1.g < v2.g, + v1.b < v2.b, + v1.a < v2.a ); + } + `,name:t,type:0}}function bh(){let t="and_";return{body:` + float ${t}(float a, float b) { + return float( bool(a) && bool(b) ); + } + vec4 ${t}(vec4 v1, vec4 v2) { + bvec4 b1 = bvec4(v1); + bvec4 b2 = bvec4(v2); + return vec4( b1.r && b2.r , + b1.g && b2.g, + b1.b && b2.b, + b1.a && b2.a ); + } + `,name:t,type:0}}function gh(){let t="or_";return{body:` + float ${t}(float a, float b) { + return float( bool(a) || bool(b) ); + } + vec4 ${t}(vec4 v1, vec4 v2) { + bvec4 b1 = bvec4(v1); + bvec4 b2 = bvec4(v2); + return vec4( b1.r || b2.r , + b1.g || b2.g, + b1.b || b2.b, + b1.a || b2.a ); + } + `,name:t,type:0}}function yh(){let t="xor_";return{body:` + float ${t}(float a, float b) { + return float( bool(a) ^^ bool(b) ); + } + vec4 ${t}(vec4 v1, vec4 v2) { + bvec4 b1 = bvec4(v1); + bvec4 b2 = bvec4(v2); + return vec4( b1.r ^^ b2.r , + b1.g ^^ b2.g, + b1.b ^^ b2.b, + b1.a ^^ b2.a ); + } + `,name:t,type:0}}function Th(){return vh("pow")}function xh(){let t="prelu_";return{body:` + float ${t}(float a, float b) { + return a < 0.0 ? a * b: a; + } + vec4 ${t}(vec4 v1, vec4 v2) { + return vec4( + v1.r < 0.0 ? v1.r * v2.r: v1.r, + v1.g < 0.0 ? v1.g * v2.g: v1.g, + v1.b < 0.0 ? v1.b * v2.b: v1.b, + v1.a < 0.0 ? v1.a * v2.a: v1.a + ); + } + `,name:t,type:0}}function vh(t){let e=`${t}_`;return{body:` + float ${e}(float a, float b) { + return ${t}(a, b); + } + vec4 ${e}(vec4 v1, vec4 v2) { + return ${t}(v1, v2); + } + `,name:e,type:0}}var dt,wh,ol,il,al,sl,ul,ll,fl,cl,pl,dl,hl,ml,bl=L(()=>{fe(),Vt(),xe(),ae(),dt=(t,e,n,r=e[0].type,s)=>{let i=t.session.pack?2:0;return{name:n.name,inputNames:["A","B"],inputTypes:[i,i],cacheHint:s,get:()=>wh(t,e,n,r)}},wh=(t,e,n,r=e[0].type)=>{let s=t.session.pack?2:0,i=!U.areEqual(e[0].dims,e[1].dims),a=e[0].dims,u=t.session.pack;if(i){let l=Xe.calcShape(e[0].dims,e[1].dims,!1);if(!l)throw new Error("Can't perform binary op on the given tensors");a=l;let c=a.length,h=e[0].dims.length!==0?e[0].dims.length:1,f=e[1].dims.length!==0?e[1].dims.length:1,p=e[0].dims.length!==0?"bcastIndices_A(indices, aindices);":"aindices[0] = 0;",g=e[1].dims.length!==0?"bcastIndices_B(indices, bindices);":"bindices[0] = 0;",b=q(t.session.backend.glContext.version),w=u?` + ${n.body} + void main() { + vec4 a = getAAtOutCoords(); + vec4 b = getBAtOutCoords(); + vec4 result = ${n.name}(a, b); + ${b.output} = result; + }`:` + ${n.body} + float process(int indices[${c}]) { + int aindices[${h}]; + int bindices[${f}]; + ${p} + ${g} + return ${n.name}(_A(aindices), _B(bindices)); + }`;return{name:n.name,inputNames:["A","B"],inputTypes:[s,s],output:{dims:a,type:r,textureType:s},shaderSource:w,hasMain:u}}let d=q(t.session.backend.glContext.version),o=` + ${n.body} + void main() { + vec4 v1 = ${d.texture2D}(A, TexCoords); + vec4 v2 = ${d.texture2D}(B, TexCoords); + vec4 result = ${n.name}(v1, v2); + ${d.output} = result; + } + `;return{name:n.name,inputNames:["A","B"],inputTypes:[s,s],output:{dims:e[0].dims,type:r,textureType:s},shaderSource:o,hasMain:!0}},ol=(t,e)=>[t.run(dt(t,e,lh()),e)],il=(t,e)=>[t.run(dt(t,e,bh(),"bool"),e)],al=(t,e)=>[t.run(dt(t,e,fh()),e)],sl=(t,e)=>[t.run(dt(t,e,dh(),"bool"),e)],ul=(t,e)=>[t.run(dt(t,e,hh(),"bool"),e)],ll=(t,e)=>[t.run(dt(t,e,mh(),"bool"),e)],fl=(t,e)=>[t.run(dt(t,e,ch()),e)],cl=(t,e)=>[t.run(dt(t,e,gh(),"bool"),e)],pl=(t,e)=>[t.run(dt(t,e,Th()),e)],dl=(t,e)=>[t.run(dt(t,e,xh()),e)],hl=(t,e)=>[t.run(dt(t,e,ph()),e)],ml=(t,e)=>[t.run(dt(t,e,yh(),"bool"),e)]}),gl,yl,Oh,Tl=L(()=>{fe(),gl=(t,e,n)=>(Oh(e),[t.cast(e[0],n)]),yl=t=>Ve.tensorDataTypeFromProto(t.attributes.getInt("to")),Oh=t=>{if(!t||t.length!==1)throw new Error("Cast requires 1 input.");if(t[0].type==="string")throw new Error("Invalid input type.")}}),Ih,Sh,xl,ro,vl=L(()=>{xe(),ae(),Ft(),br(),Ih=(t,e)=>({name:"Concat (packed)",inputNames:Array.from({length:t},(n,r)=>`X${r}`),inputTypes:Array(t).fill(2),cacheHint:e}),Sh=(t,e,n,r)=>{let s=n[0].dims.slice();if(r>=s.length||r<-1*s.length)throw new Error("axis specified for concat doesn't match input dimensionality");r<0&&(r=s.length+r);let i=s.slice(0);for(let E=1;EE.dims),c=St(a),h=new Array(l.length-1);h[0]=l[0][r];for(let E=1;E= ${h[E-1]}) { + return getChannel( + getX${E}(${ro(c,f,N)}), + vec2(${ro(p,f,N)})); + }`}let w=h.length,y=h[h.length-1];b+=` + return getChannel( + getX${w}(${ro(c,f,y)}), + vec2(${ro(p,f,y)}));`;let T=q(t.session.backend.glContext.version),S=` + ${o} + float getValue(${c.map(E=>"int "+E)}) { + ${b} + } + + void main() { + ${d} coords = getOutputCoords(); + int lastDim = coords.${c[a-1]}; + coords.${c[a-1]} = coords.${c[a-2]}; + coords.${c[a-2]} = lastDim; + + vec4 result = vec4(getValue(${u}), 0., 0., 0.); + + ${u[a-1]} = ${u[a-1]} + 1; + if (${u[a-1]} < ${i[a-1]}) { + result.g = getValue(${u}); + } + + ${u[a-2]} = ${u[a-2]} + 1; + if (${u[a-2]} < ${i[a-2]}) { + result.a = getValue(${u}); + } + + ${u[a-1]} = ${u[a-1]} - 1; + if (${u[a-2]} < ${i[a-2]} && + ${u[a-1]} < ${i[a-1]}) { + result.b = getValue(${u}); + } + ${T.output} = result; + } + `;return{...e,output:{dims:i,type:n[0].type,textureType:2},shaderSource:S,hasMain:!0}},xl=(t,e,n)=>{let r=Ih(e.length,n.cacheKey);return{...r,get:()=>Sh(t,r,e,n.axis)}},ro=(t,e,n)=>{let r=t.indexOf(e);return t.map((s,i)=>i===r?`${s} - ${n}`:s).join()}}),wl,Ah,Ph,Eh,_l,Dh,Lh,Fh,Ol,$h,Il=L(()=>{Ge(),ae(),vl(),wl=(t,e,n)=>($h(e),t.session.pack&&e[0].dims.length>1?[t.run(xl(t,e,n),e)]:[t.run(Eh(t,e,n),e)]),Ah=(t,e)=>({name:"Concat",inputNames:Array.from({length:t},(n,r)=>`X${r}`),inputTypes:Array(t).fill(0),cacheHint:e}),Ph=(t,e,n,r)=>{let s=n[0].dims.slice();if(r>=s.length||r<-1*s.length)throw new Error("axis specified for concat doesn't match input dimensionality");r<0&&(r=s.length+r);let i=s.slice(0);for(let f=1;f{let r=Ah(e.length,n.cacheKey);return{...r,get:()=>Ph(t,r,e,n.axis)}},_l=t=>`int getTextureWhereDataResides(int index) { + ${t.map((e,n)=>`if(index<${e}) {return ${n};} +`).join("")} + }`,Dh=t=>_l(t),Lh=(t,e)=>{let n=[`float fetchDataFromCorrectTexture(int textureIndex, int indices[${e}]) {`];for(let r=0;r{let e=["int getSizeInConcatAxisValueFromIndex(int index) {"];for(let n=0;nee({axis:t.attributes.getInt("axis")}),$h=t=>{if(!t||t.length<1)throw new Error("too few inputs");let e=t[0].type,n=t[0].dims.length;if(e==="string")throw new Error("string tensor is not supported yet");for(let r of t){if(r.type!==e)throw new Error("input tensors should be one type");if(r.dims.length!==n)throw new Error("input tensors should have the same shape")}}});function Ch(){return ht("abs")}function kh(){return ht("acos")}function Bh(){return ht("asin")}function Nh(){return ht("atan")}function Rh(){return ht("ceil")}function Mh(){return ht("cos")}function Gh(t){let e="elu";return{body:` + const float alpha = float(${t}); + + float ${e}_(float a) { + return a >= 0.0 ? a: (exp(a) - 1.0) * alpha; + } + vec4 ${e}_(vec4 v) { + return vec4(${e}_(v.x), ${e}_(v.y), ${e}_(v.z), ${e}_(v.w)); + } + `,name:e,type:0}}function Uh(){return ht("exp")}function zh(){return ht("floor")}function wi(t,e){let n="clip";return{body:` + const float min = float(${t}); + const float max = float(${e}); + + float ${n}_(float a) { + return clamp(a, min, max); + } + vec4 ${n}_(vec4 v) { + return clamp(v, min, max); + } + `,name:n,type:0}}function Vh(){let t="indentity";return{body:` + float ${t}_(float a) { + return a; + } + vec4 ${t}_(vec4 v) { + return v; + } + `,name:t,type:0}}function Wh(t){let e="leakyRelu";return{body:` + const float alpha = float(${t}); + + float ${e}_(float a) { + return a < 0.0 ? a * alpha : a; + } + vec4 ${e}_(vec4 v) { + return vec4(${e}_(v.x), ${e}_(v.y), ${e}_(v.z), ${e}_(v.w)); + } + `,name:e,type:0}}function Hh(){return ht("log")}function qh(){let t="neg";return{body:` + float ${t}_(float a) { + return -a; + } + vec4 ${t}_(vec4 v) { + return -v; + } + `,name:t,type:0}}function jh(){let t="not";return{body:` + float ${t}_(float a) { + return float( ! bool(a) ); + } + bool ${t}_(bool a) { + return !a; + } + vec4 ${t}_(vec4 v) { + return vec4(!bool(v.x), !bool(v.y), !bool(v.z), !bool(v.w)); + } + bvec4 ${t}_(bvec4 v) { + return bvec4(!v.x, !v.y, !v.z, !v.w); + } + `,name:t,type:0}}function Yh(){return ht("sin")}function _i(){let t="relu";return{body:` + float ${t}_(float a) { + return max( a, 0.0 ); + } + vec4 ${t}_(vec4 v) { + return max( v, 0.0 ); + } + `,name:t,type:0}}function Oi(){let t="sigmoid";return{body:` + float ${t}_(float a) { + return 1.0 / (1.0 + exp(-a)); + } + vec4 ${t}_(vec4 v) { + return 1.0 / (1.0 + exp(-v)); + } + `,name:t,type:0}}function Xh(){return ht("sqrt")}function Kh(){return ht("tan")}function Jh(){let t="tanh";return{body:` + float ${t}_(float a) { + a = clamp(a, -10., 10.); + a = exp(2.*a); + return (a - 1.) / (a + 1.); + } + vec4 ${t}_(vec4 v) { + v = clamp(v, -10., 10.); + v = exp(2.*v); + return (v - 1.) / (v + 1.); + } + `,name:t,type:0}}function ht(t){return{body:` + float ${t}_(float a) { + return ${t}(a); + } + vec4 ${t}_(vec4 v) { + return ${t}(v); + } + `,name:t,type:0}}var Zh,Pe,Sl,Al,Pl,El,Ii,Dl,Ll,Qh,Fl,$l,Cl,kl,Bl,Nl,Si,Rl,Ml,Gl,Ul,zl,Vl,Wl,Hl,ql,jl,Yl,Ai=L(()=>{Ge(),fe(),Vt(),xe(),ae(),Zh=(t,e,n,r)=>{let s=t.session.pack?2:0,i=q(t.session.backend.glContext.version);return{...e,output:{dims:n.dims,type:n.type,textureType:s},shaderSource:` + ${r.body} + void main() { + vec4 v = ${i.texture2D}(A, TexCoords); + v = ${r.name}_(v); + ${i.output} = v; + } + `,hasMain:!0}},Pe=(t,e,n,r)=>{let s=t.session.pack?2:0,i={name:n.name,inputTypes:[s],inputNames:["A"],cacheHint:r};return{...i,get:()=>Zh(t,i,e,n)}},Sl=(t,e)=>[t.run(Pe(t,e[0],Ch()),e)],Al=(t,e)=>[t.run(Pe(t,e[0],kh()),e)],Pl=(t,e)=>[t.run(Pe(t,e[0],Bh()),e)],El=(t,e)=>[t.run(Pe(t,e[0],Nh()),e)],Ii=(t,e,n)=>[t.run(Pe(t,e[0],wi(n.min,n.max),n.cacheKey),e)],Dl=t=>ee({min:t.attributes.getFloat("min",dr),max:t.attributes.getFloat("max",hr)}),Ll=(t,e)=>{let n=Qh(t,e);return Ii(t,[e[0]],n)},Qh=(t,e)=>{if(e.length>=3&&(!t.session.isInitializer(e[1].dataId)||!t.session.isInitializer(e[2].dataId)))throw new Error("dynamic clip attributes are not allowed");let n=e.length>=3?e[1].numberData[0]:dr,r=e.length>=3?e[2].numberData[0]:hr;return ee({min:n,max:r})},Fl=(t,e)=>[t.run(Pe(t,e[0],Rh()),e)],$l=(t,e)=>[t.run(Pe(t,e[0],Mh()),e)],Cl=(t,e,n)=>[t.run(Pe(t,e[0],Gh(n.alpha),n.cacheKey),e)],kl=t=>ee({alpha:t.attributes.getFloat("alpha",1)}),Bl=(t,e)=>[t.run(Pe(t,e[0],Uh()),e)],Nl=(t,e)=>[t.run(Pe(t,e[0],zh()),e)],Si=(t,e)=>[t.run(Pe(t,e[0],Vh()),e)],Rl=(t,e,n)=>[t.run(Pe(t,e[0],Wh(n.alpha),n.cacheKey),e)],Ml=t=>ee({alpha:t.attributes.getFloat("alpha",.01)}),Gl=(t,e)=>[t.run(Pe(t,e[0],Hh()),e)],Ul=(t,e)=>[t.run(Pe(t,e[0],qh()),e)],zl=(t,e)=>[t.run(Pe(t,e[0],jh()),e)],Vl=(t,e)=>[t.run(Pe(t,e[0],_i()),e)],Wl=(t,e)=>[t.run(Pe(t,e[0],Oi()),e)],Hl=(t,e)=>[t.run(Pe(t,e[0],Yh()),e)],ql=(t,e)=>[t.run(Pe(t,e[0],Xh()),e)],jl=(t,e)=>[t.run(Pe(t,e[0],Kh()),e)],Yl=(t,e)=>[t.run(Pe(t,e[0],Jh()),e)]});function Ct(t){let e;switch(t.activation){case"Relu":e=_i();break;case"Sigmoid":e=Oi();break;case"Clip":e=wi(t.clipMin,t.clipMax);break;default:return{activationFunction:"",applyActivation:""}}let n=e.name,r=e.body,s=`value = ${n}_(value);`;return{activationFunction:r,applyActivation:s}}var Rr,gr=L(()=>{fe(),Ai(),Rr=t=>{let e=t.getString("activation","");if(e==="Clip"){let[n,r]=t.getFloats("activation_params",[dr,hr]);return{activation:e,clipMax:r,clipMin:n,activationCacheKey:`${e}:${n},${r}`}}return{activation:e,activationCacheKey:e}}}),tm,rm,Xl,Kl=L(()=>{ut(),xe(),ae(),no(),gr(),tm=(t,e)=>({name:"GroupedConv",inputNames:t?["X","W","Bias"]:["X","W"],inputTypes:t?[0,0,0]:[0,0],cacheHint:e}),rm=(t,e,n,r)=>{let s=e.length>2?"value += getBias(output_channel);":"",i=e[0].dims.slice(),a=e[1].dims.slice(),u=a[0]/r.group;ce.verbose("GroupedConv",`autpPad:${r.autoPad}, dilations:${r.dilations}, group:${r.group}, kernelShape:${r.kernelShape}, pads:${r.pads}, strides:${r.strides}`);let d=Mr(i,a,r.dilations,r.pads,r.strides),o=q(t.session.backend.glContext.version),{activationFunction:l,applyActivation:c}=Ct(r),h=` + const ivec2 strides = ivec2(${r.strides[0]}, ${r.strides[1]}); + const ivec2 pads = ivec2(${r.pads[0]}, ${r.pads[1]}); + ${l} + void main() { + ivec4 coords = getOutputCoords(); + int batch = coords.x; + int output_channel = coords.y; + ivec2 xRCCorner = coords.zw * strides - pads; + int group_id = output_channel / ${u}; + + float value = 0.0; + for (int wInChannel = 0; wInChannel < ${a[1]}; wInChannel++) { + int input_channel = group_id * ${a[1]} + wInChannel; + for (int wHeight = 0; wHeight < ${a[2]}; wHeight++) { + int xHeight = xRCCorner.x + wHeight * ${r.dilations[0]}; + + if (xHeight < 0 || xHeight >= ${i[2]}) { + continue; + } + + for (int wWidth = 0; wWidth < ${a[3]}; wWidth++) { + int xWidth = xRCCorner.y + wWidth * ${r.dilations[1]}; + if (xWidth < 0 || xWidth >= ${i[3]}) { + continue; + } + + float xVal = getX(batch, input_channel, xWidth, xHeight); + float wVal = getW(output_channel, wInChannel, wWidth, wHeight); + value += xVal*wVal; + } + } + } + ${s} + ${c} + ${o.output} = vec4(value, .0, .0, .0); + } +`;return{...n,output:{dims:d,type:e[0].type,textureType:0},shaderSource:h,hasMain:!0}},Xl=(t,e,n)=>{let r=tm(e.length>2,n.cacheKey);return{...r,get:()=>rm(t,e,r,n)}}}),nm,om,Jl,Zl=L(()=>{xe(),ae(),br(),nm=t=>({name:"Im2Col (packed)",inputNames:["A"],inputTypes:[2],cacheHint:t}),om=(t,e,n,r,s,i)=>{let a=n.dims,u=r.dims,d=2,o=3,l=s.length,c=[u[1]*u[2]*u[3],s[2]*s[3]],h=u[2]*u[3],f=$t(),p=q(t.session.backend.glContext.version),g="";for(let w=0;w<=1;w++)for(let y=0;y<=1;y++)g+=` + blockIndex = rc.x + ${y}; + pos = rc.y + ${w}; + + if(blockIndex < ${c[1]} && pos < ${c[0]}) { + offsetY = int(blockIndex / (${s[l-1]})) * ${i.strides[0]} - + ${i.pads[0]}; + d0 = offsetY + ${i.dilations[0]} * (imod(pos, ${h}) / ${u[2]}); + + if(d0 < ${a[d]} && d0 >= 0) { + offsetX = imod(blockIndex, ${s[l-1]}) * ${i.strides[1]} - + ${i.pads[1]}; + d1 = offsetX + ${i.dilations[1]} * imod(imod(pos, ${h}), ${u[2]}); + + if(d1 < ${a[o]} && d1 >= 0) { + + ch = int(float(pos)/ ${h}.); + innerDims = vec2(d0, d1); + result[${w*2+y}] = getChannel( + getA(0, ch, int(innerDims.x), + int(innerDims.y)), innerDims); + } + } + } + + `;let b=` + ${f} + + void main() { + ivec2 rc = getOutputCoords(); + vec4 result = vec4(0.0); + int blockIndex, pos, offsetY, d0, offsetX, d1, ch; + vec2 innerDims; + ${g} + ${p.output} = result; + } + `;return{...e,output:{dims:c,type:n.type,textureType:2},shaderSource:b,hasMain:!0}},Jl=(t,e,n,r,s)=>{let i=nm(s.cacheKey);return{...i,get:()=>om(t,i,e,n,r,s)}}});function am(t,e,n){let r=e[0].dims,s=e[1].dims,i=Xe.calcShape(r,s,!0);if(!i)throw new Error("Can't use matmul on the given tensors");let a=Ke(i.length),u=St(),{activationFunction:d,applyActivation:o}=Ct(n),l=e.length>2,c=l?"value += getBiasForMatmul();":"",h=l?`${Ei(a,u,e[2].dims,i,!1)}`:"",f=i.length,p=r.length,g=s.length,b=r[r.length-1],w=` + ${d} + ${h} + float process(int indices[${f}]) { + int a[${p}]; + int b[${g}]; + bcastMatmulIndices_A(indices, a); + bcastMatmulIndices_B(indices, b); + + float value; + for (int k=0; k<${b}; ++k) { + a[${p-1}] = k; + b[${g-2}] = k; + value += _A(a) * _B(b); + } + ${c} + ${o} + return value; + }`;return{...t,output:{dims:i,type:e[0].type,textureType:0},shaderSource:w}}function Pi(t,e){let n=im(t.length>2,e.activationCacheKey);return{...n,get:()=>am(n,t,e)}}function Ei(t,e,n,r,s){let i="",a=n.length,u=r.length,d=u-a;u<2&&a>0?i="coords":i=n.map((h,f)=>`coords.${e[f+d]}`).join(", ");let o=Xe.getBroadcastDims(n,r).map(h=>`coords.${e[h+d]} = 0;`).join(` +`),l=U.size(n)===1,c="vec4(outputValue.xx, outputValue.yy)";return l&&(c="vec4(outputValue.x)"),s?` +vec4 getBiasForMatmul() { + ${t} coords = getOutputCoords(); + ${o} + vec4 outputValue = getBias(${i}); + return ${c}; +}`:` +float getBiasForMatmul() { + ${t} coords = getOutputCoords(); + ${o} + return getBias(coords.x); +}`}var Ql,ef,im,sm,oo=L(()=>{fe(),ae(),Ft(),gr(),Di(),Ql=(t,e,n)=>(sm(e),t.session.pack?[t.run(io(t,e,n),e)]:[t.run(Pi(e,n),e)]),ef=t=>Rr(t.attributes),im=(t,e)=>({name:"MatMul",inputNames:t?["A","B","Bias"]:["A","B"],inputTypes:t?[0,0,0]:[0,0],cacheHint:e}),sm=t=>{if(!t||t.length!==2)throw new Error("MatMul requires 2 inputs.");if(t[0].dims[t[0].dims.length-1]!==t[1].dims[t[1].dims.length-2])throw new Error("shared dimension does not match.");if(t[0].type!=="float32"&&t[0].type!=="float64"||t[1].type!=="float32"&&t[1].type!=="float64")throw new Error("inputs should be float type");if(t[0].type!==t[1].type)throw new Error("inputs types should match")}});function fm(t,e,n,r){let s=[],i=[],a=n[0].dims,u=n[1].dims,d=a.length,o=u.length,l=r.length,c=l-d,h=l-o;s=a.map((y,T)=>`coords.${e[T+c]}`),s[d-1]="i*2",s.join(", "),i=u.map((y,T)=>`coords.${e[T+h]}`),i[o-2]="i*2",i.join(", ");let f=Xe.getBroadcastDims(a,r),p=Xe.getBroadcastDims(u,r),g=f.map(y=>`coords.${e[y+c]} = 0;`).join(` +`),b=p.map(y=>`coords.${e[y+h]} = 0;`).join(` +`),w=`int lastDim = coords.${e[l-1]}; + coords.${e[l-1]} = coords.${e[l-2]}; + coords.${e[l-2]} = lastDim;`;return` +vec4 getAAtOutCoordsMatmul(int i) { + ${t} coords = getOutputCoords(); + ${w} + ${g} + vec4 outputValue = getA(${s}); + return outputValue; +} + +vec4 getBAtOutCoordsMatmul(int i) { + ${t} coords = getOutputCoords(); + ${w} + ${b} + vec4 outputValue = getB(${i}); + return outputValue; +}`}function cm(t,e){let n="";for(let r=0;r{fe(),xe(),ae(),Ft(),gr(),oo(),um=(t,e)=>({name:"MatMul (packed)",inputNames:t?["A","B","Bias"]:["A","B"],inputTypes:t?[2,2,2]:[2,2],cacheHint:e}),lm=(t,e,n,r)=>{let s=n.length>2,i=s?"value += getBiasForMatmul();":"",a=n[0].dims,u=n[1].dims,d=Xe.calcShape(a,u,!0),o=!U.areEqual(n[0].dims,n[1].dims);if(!d)throw new Error("Can't use matmul on the given tensors");let l=a[a.length-1],c=Math.ceil(l/2),h=a.length,f=u.length,p=q(t.session.backend.glContext.version),g=Ke(d.length),b=d.length,w=St(),{activationFunction:y,applyActivation:T}=Ct(r),S=s?`${Ei(g,w,n[2].dims,d,!0)}`:"",E=o?`${fm(g,w,n,d)}`:"",N=o?"getAAtOutCoordsMatmul(i)":`getA(${cm(w,h)})`,B=o?"getBAtOutCoordsMatmul(i)":`getB(${pm(w,f)})`,F=o?"":`${g} rc = + getOutputCoords(); int lastDim = rc.${w[b-1]}; rc.${w[b-1]} = + rc.${w[b-2]}; rc.${w[b-2]} = lastDim; + `,k=` + ${E} + ${S} + ${y} + void main() { + ${F} + + vec4 value = vec4(0); + for (int i = 0; i < ${c}; i++) { + vec4 a = ${N}; + vec4 b = ${B}; + + value += (a.rrbb * b.rgrg); + value += (a.ggaa * b.baba); + } + ${i} + ${T} + ${p.output} = value; + }`;return{...e,output:{dims:d,type:n[0].type,textureType:2},shaderSource:k,hasMain:!0}},io=(t,e,n)=>{let r=um(e.length>2,n.activationCacheKey);return{...r,get:()=>lm(t,r,e,n)}}}),tf,rf=L(()=>{no(),Zl(),Di(),tf=(t,e,n)=>{let r=e[0].dims,s=e[1].dims,i=Mr(r,s,n.dilations,n.pads,n.strides),a=t.run(Jl(t,e[0],e[1],i,n),[e[0]]),u=t.reshapePacked(e[1],[s[0],s[1]*s[2]*s[3]]),d=e.length===3?[u,a,e[2]]:[u,a],o=t.run(io(t,d,n),d);return t.reshapePacked(o,i)}}),dm,hm,nf,Li,Fi=L(()=>{ae(),dm=t=>({name:"Im2Col",inputNames:["X"],inputTypes:[0],cacheHint:t}),hm=(t,e,n,r,s,i)=>{let a=n.dims,u=r.dims,d=s.length,o=Li(a,u,s,4),l=` + const int XC = ${a[1]}; + const int XH = ${a[2]}; + const int XW = ${a[3]}; + const int KH = ${i.kernelShape[0]}; + const int KW = ${i.kernelShape[1]}; + const int dilationH = ${i.dilations[0]}; + const int dilationW = ${i.dilations[1]}; + const int strideH = ${i.strides[0]}; + const int strideW = ${i.strides[1]}; + const int padH = ${i.pads[0]}; + const int padW = ${i.pads[1]}; + const int KHKW = KH*KW; + const int XCKHKW = XC * KHKW; + const int outputChannels = 4; + vec4 process(int indices[${d}]) { + int b = indices[0]; // batch size + int oh = indices[1] * strideH - padH; //output height + int ow = indices[2] * strideW - padW; //output width + int p = indices[3] * outputChannels; //patch + vec4 value = vec4(0.0); + for(int i=0; i < outputChannels; ++i) { + if(p < XCKHKW) { + int patchC = p / KHKW; + int patchH = (p - patchC*KHKW) / KW; + int patchW = (p - patchC*KHKW) - patchH * KW; + int xh2 = oh + patchH * dilationH; + int xw2 = ow + patchW * dilationW; + int x[${a.length}]; + x[0] = b; + x[1] = patchC; + x[2] = xh2; + x[3] = xw2; + if(xh2 >= 0 && + xh2 < XH && + xw2 >= 0 && + xw2 < XW) { + value[i] = _X(x); + } + } + ++p; + } + return value; + } + `;return{...e,output:{dims:o,type:n.type,textureType:4},shaderSource:l}},nf=(t,e,n,r,s)=>{let i=dm(s.cacheKey);return{...i,get:()=>hm(t,i,e,n,r,s)}},Li=(t,e,n,r=4)=>[n[0],n[2],n[3],Math.ceil(t[1]*e[2]*e[3]/r)]}),mm,bm,of,af=L(()=>{fe(),xe(),ae(),gr(),Fi(),mm=(t,e)=>({name:"ConvDotProduct",inputNames:t?["Im2Col","K","B"]:["Im2Col","K"],inputTypes:t?[0,4,0]:[0,4],cacheKey:e.activationCacheKey}),bm=(t,e,n,r,s)=>{let i=n[0].dims,a=n[1].dims,u=[a[0],Math.ceil(i[1]*a[2]*a[3]/4)],d=Li(i,a,r),[o,l]=t.calculateTextureWidthAndHeight(u,4),c=U.computeStrides(d),[h,f]=t.calculateTextureWidthAndHeight(d,4),p=r.length,g=n.length<3?"0.0":"_B(b)",b=Math.ceil(i[1]*a[2]*a[3]/4),{activationFunction:w,applyActivation:y}=Ct(s),T=q(t.session.backend.glContext.version),S=` +${w} +float process(int indices[${p}]) { + int b[1]; + b[0] = indices[1]; + int im2col[4]; + im2col[0] = indices[0]; + im2col[1] = indices[2]; + im2col[2] = indices[3]; + int im2colOffset = im2col[0] * ${c[0]} + im2col[1] * ${c[1]} + im2col[2] * ${c[2]}; + int kernelOffset = indices[1] * ${u[1]}; + float value = ${g}; + for (int i = 0; i < ${b}; ++i) { + vec2 im2colCoords = offsetToCoords(im2colOffset, ${h}, ${f}); + vec2 kernelCoords = offsetToCoords(kernelOffset, ${o}, ${l}); + value += dot(${T.texture2D}(Im2Col, im2colCoords), ${T.texture2D}(K, kernelCoords)); + ++im2colOffset; + ++kernelOffset; + } + ${y} + return value; +}`;return{...e,output:{dims:r,type:n[0].type,textureType:0},shaderSource:S}},of=(t,e,n,r)=>{let s=mm(e.length>2,r);return{...s,get:()=>bm(t,s,e,n,r)}}}),Mr,$i,gm,ym,Tm,xm,Ci,vm,no=L(()=>{Ge(),fe(),Kl(),rf(),af(),gr(),Fi(),oo(),Mr=(t,e,n,r,s)=>{let i=t[0],a=t.slice(2),u=a.length,d=e[0],o=e.slice(2).map((c,h)=>c+(c-1)*(n[h]-1)),l=a.map((c,h)=>c+r[h]+r[h+u]).map((c,h)=>Math.floor((c-o[h]+s[h])/s[h]));return[i,d].concat(...l)},$i=(t,e,n)=>(vm(e,n),gm(t,e,n)),gm=(t,e,n)=>{let r=xm(n,e),s=t.session.pack,i=r.kernelShape[0]===1&&r.kernelShape[1]===1;return r.group>1?[t.run(Xl(t,e,r),e)]:i&&s?[ym(t,e,r)]:s&&e[0].dims.length===4&&e[0].dims[0]===1&&!i?[tf(t,e,r)]:[Tm(t,e,r)]},ym=(t,e,n)=>{let r=e[0].dims,s=e[1].dims,i=Mr(r,s,n.dilations,n.pads,n.strides),a=t.reshapeUnpacked(e[0],[r[1],r[2]*r[3]]),u=t.reshapeUnpacked(e[1],[s[0],s[1]]),d=e.length>2?[u,a,e[2]]:[u,a],o=t.run(Pi(d,n),d);return t.reshapeUnpacked(o,i)},Tm=(t,e,n)=>{let r=e[0].dims,s=e[1].dims,i=Mr(r,s,n.dilations,n.pads,n.strides),a=t.run(nf(t,e[0],e[1],i,n),[e[0]]),u=e.length===3?[a,e[1],e[2]]:[a,e[1]];return t.run(of(t,e,i,n),u)},xm=(t,e)=>{let n=t.kernelShape.slice();if(t.kernelShape.length===0)for(let i=2;i{let e=t.attributes,n=Rr(e),r=e.getString("auto_pad","NOTSET"),s=e.getInts("dilations",[1,1]),i=e.getInt("group",1),a=e.getInts("kernel_shape",[]),u=e.getInts("pads",[0,0,0,0]),d=e.getInts("strides",[1,1]);return ee({autoPad:r,dilations:s,group:i,kernelShape:a,pads:u,strides:d,...n})},vm=(t,e)=>{if(!t||t.length!==2&&t.length!==3)throw new Error("Conv requires 2 or 3 inputs");if(t[0].dims.length!==4||t[1].dims.length!==4)throw new Error("currently only support 2-dimensional conv");let n=t[0].dims[1],r=t[1].dims[1]*e.group;if(n!==r)throw new Error("FILTER_IN_CHANNEL should be equal to DATA_CHANNEL");if(t.length===3&&(t[2].dims.length!==1||t[1].dims[0]!==t[2].dims[0]))throw new Error("invalid bias");let s=t[0].dims.length-2;if(e.dilations.length!==s)throw new Error(`dilations should be ${s}D`);if(e.strides.length!==s)throw new Error(`strides should be ${s}D`);if(e.pads.length!==s*2)throw new Error(`pads should be ${s*2}D`);if(e.kernelShape.length!==0&&e.kernelShape.length!==t[1].dims.length-2)throw new Error("invalid kernel shape");if(t[0].type!=="float32"||t[1].type!=="float32")throw new Error("Conv input(X,W) should be float tensor");if(t.length===3&&t[2].type!=="float32")throw new Error("Conv input(bias) should be float tensor")}}),wm,_m,Om,sf,Im,Sm,Am,Pm,Em,Dm,uf,Lm,lf=L(()=>{Ge(),xe(),ae(),gr(),wm=(t,e,n,r,s,i)=>(t-1)*e+n+(r-1)*s+1-i,_m=(t,e,n,r,s)=>{let i=Math.floor(t/2);e==="SAME_UPPER"?(n[r]=i,n[s]=t-i):e==="SAME_LOWER"&&(n[r]=t-i,n[s]=i)},Om=(t,e,n,r,s,i,a,u)=>{let d=t.length-2,o=u.length===0;for(let l=0;l(Lm(e,n),Im(t,e,n)),Im=(t,e,n)=>{let r=Dm(n,e);return[Em(t,e,r)]},Sm=(t,e)=>({name:"ConvTranspose",inputNames:t?["X","W","B"]:["X","W"],inputTypes:t?[0,0,0]:[0,0],cacheHint:e}),Am=(t,e,n,r)=>{let s=e.length>2?"getB(output_channel)":"0.0",i=e[0].dims,a=e[1].dims,u=a[1],d=a[0]/r.group,o=[e[0].dims[0],e[1].dims[1]*r.group,...r.outputShape],l=q(t.session.backend.glContext.version),{activationFunction:c,applyActivation:h}=Ct(r),f=` + const ivec2 strides = ivec2(${r.strides[0]}, ${r.strides[1]}); + const ivec2 pads = ivec2(${r.pads[0]}, ${r.pads[1]}); + ${c} + void main() { + ivec4 coords = getOutputCoords(); + int batch = coords.x; + int output_channel = coords.y; + + ivec2 loc = coords.zw + pads; + + int group_id = output_channel / ${u}; + int wOutChannel = output_channel - group_id * ${u}; + + float value = ${s}; + for (int inChannelOffset = 0; inChannelOffset < ${d}; inChannelOffset++) { + int input_channel = group_id * ${d} + inChannelOffset; + for (int wWOff = 0; wWOff < ${a[2]}; wWOff++) { + for (int wHOff = 0; wHOff < ${a[3]}; wHOff++) { + ivec2 wOff = ivec2(wWOff * ${r.dilations[0]}, wHOff * ${r.dilations[1]}); + ivec2 wLoc = loc - wOff; + ivec2 wLocIn = wLoc / strides; + if ( + wLocIn * strides == wLoc && + wLocIn.x >= 0 && wLocIn.x < ${i[2]} && + wLocIn.y >= 0 && wLocIn.y < ${i[3]} + ) { + float xVal = getX(batch, input_channel, wLocIn.y, wLocIn.x); + float wVal = getW(input_channel, wOutChannel, wHOff, wWOff); + value += xVal * wVal; + } + } + } + } + ${h} + ${l.output} = vec4(value, .0, .0, .0); + } +`;return{...n,output:{dims:o,type:e[0].type,textureType:0},shaderSource:f,hasMain:!0}},Pm=(t,e,n)=>{let r=Sm(e.length>2,n.cacheKey);return{...r,get:()=>Am(t,e,r,n)}},Em=(t,e,n)=>t.run(Pm(t,e,n),e),Dm=(t,e)=>{let n=t.kernelShape.slice();if(t.kernelShape.length===0)for(let u=2;u{let e=t.attributes,n=Rr(e),r=e.getString("auto_pad","NOTSET"),s=e.getInts("dilations",[1,1]),i=e.getInt("group",1),a=e.getInts("kernel_shape",[]),u=e.getInts("output_padding",[0,0]),d=e.getInts("output_shape",[]),o=e.getInts("pads",[0,0,0,0]),l=e.getInts("strides",[1,1]);return ee({autoPad:r,dilations:s,group:i,kernelShape:a,outputPadding:u,outputShape:d,pads:o,strides:l,...n})},Lm=(t,e)=>{if(!t||t.length!==2&&t.length!==3)throw new Error("Conv requires 2 or 3 inputs");if(t[0].dims.length!==4||t[1].dims.length!==4)throw new Error("currently only support 2-dimensional conv");let n=t[0].dims[1],r=t[1].dims[0];if(n!==r)throw new Error("FILTER_IN_CHANNEL should be equal to DATA_CHANNEL");let s=t[1].dims[1]*e.group;if(t.length===3&&(t[2].dims.length!==1||t[2].dims[0]!==s))throw new Error("invalid bias");let i=t[0].dims.length-2;if(e.dilations.length!==i)throw new Error(`dilations should be ${i}D`);if(e.strides.length!==i)throw new Error(`strides should be ${i}D`);if(e.pads.length!==i*2)throw new Error(`pads should be ${i*2}D`);if(e.outputPadding.length!==i)throw new Error(`output_padding should be ${i}D`);if(e.kernelShape.length!==0&&e.kernelShape.length!==t[1].dims.length-2)throw new Error("invalid kernel shape");if(e.outputShape.length!==0&&e.outputShape.length!==t[0].dims.length-2)throw new Error("invalid output shape");if(t[0].type!=="float32"||t[1].type!=="float32")throw new Error("ConvTranspose input(X,W) should be float tensor");if(t.length===3&&t[2].type!=="float32")throw new Error("ConvTranspose input(bias) should be float tensor")}}),ff,yr,cf,Fm,pf,$m,Cm,km,ao=L(()=>{Ge(),fe(),ae(),ff={name:"Transpose",inputNames:["A"],inputTypes:[0]},yr=(t,e,n)=>(km(e),[t.run({...ff,cacheHint:n.cacheKey,get:()=>Fm(t,e[0],n.perm)},e)]),cf=t=>ee({perm:t.attributes.getInts("perm",[])}),Fm=(t,e,n)=>{let r=e.dims;n=pf(r,n);let s=$m(r,n),i=r.length,a=` + ${Cm("perm",n,i)} + float process(int indices[${i}]) { + int a[${i}]; + perm(a, indices); + return _A(a); + }`;return{...ff,output:{dims:s,type:e.type,textureType:0},shaderSource:a}},pf=(t,e)=>(e&&e.length!==t.length&&(e=[...t.keys()].reverse()),e),$m=(t,e)=>(e=pf(t,e),U.sortBasedOnPerm(t,e)),Cm=(t,e,n)=>{let r=[];r.push(`void ${t}(out int a[${n}], int src[${n}]) {`);for(let s=0;s{if(!t||t.length!==1)throw new Error("Transpose requires 1 input.");if(t[0].type!=="float32"&&t[0].type!=="float64")throw new Error("input should be float tensor")}}),df,hf,Bm,mf=L(()=>{ao(),df=(t,e,n)=>{Bm(e);let r=n.blocksize,s=r*r,i=n.mode==="DCR"?[0,3,4,1,5,2]:[0,1,4,2,5,3],a=n.mode==="DCR"?[e[0].dims[0],r,r,e[0].dims[1]/s,e[0].dims[2],e[0].dims[3]]:[e[0].dims[0],e[0].dims[1]/s,r,r,e[0].dims[2],e[0].dims[3]],u=t.reshapeUnpacked(e[0],a),d={perm:i,cacheKey:`${i}`},[o]=yr(t,[u],d),l=[e[0].dims[0],e[0].dims[1]/s,e[0].dims[2]*r,e[0].dims[3]*r];return[t.reshapeUnpacked(o,l)]},hf=t=>{let e=t.attributes.getInt("blocksize");if(e<1)throw new Error(`blocksize must be >= 1, but got : ${e} for DepthToSpace`);let n=t.attributes.getString("mode","DCR");if(n!=="DCR"&&n!=="CRD")throw new Error(`unrecognized mode: ${n} for DepthToSpace`);return{mode:n,blocksize:e}},Bm=t=>{if(t.length!==1)throw new Error(`DepthToSpace expect 1 inputs, but got ${t.length}`);if(t[0].type==="string"||t[0].dims.length!==4)throw new TypeError("DepthToSpace input should be a 4-D numeric tensor")}}),bf,gf,Nm,yf=L(()=>{fe(),bf=(t,e,n)=>{Nm(e,n);let r=U.flattenShape(e[0].dims,n);return[t.reshapeUnpacked(e[0],r)]},gf=t=>t.attributes.getInt("axis",1),Nm=(t,e)=>{if(!t||t.length!==1)throw new Error("Flatten requires 1 input.");let n=t[0].dims.length;if(n===0)throw new Error("scalar tensor is not supported.");if(e<-n||e>n)throw new Error("Invalid axis");if(t[0].type==="string")throw new Error("string tensor is not supported.")}}),Jt,pn=L(()=>{Jt=["float32","float64","int32","int16","int8","uint16","uint32","uint8"]}),Tf,xf,Rm,Mm,Gm,Um,vf=L(()=>{Ge(),pn(),fe(),ae(),Tf=(t,e,n)=>(Um(e,n.axis),[t.run(Gm(t,e,n),e)]),xf=t=>ee({axis:t.attributes.getInt("axis",0)}),Rm={name:"Gather",inputNames:["A","B"],inputTypes:[0,0]},Mm=(t,e,n,r)=>{let s=n[0].dims.slice(),i=n[1].dims.slice(),a=new Array(s.length+i.length-1);r=U.normalizeAxis(r,s.length);let u=[];for(let h=0;h{let r={...Rm,cacheHint:n.cacheKey};return{...r,get:()=>Mm(t,r,e,n.axis)}},Um=(t,e)=>{if(!t||t.length!==2)throw new Error("Gather requires 2 inputs.");let n=t[0].dims.length;if(n<1)throw new Error("Invalid input shape.");if(e<-n||e>n-1)throw new Error("Invalid axis.");if(Jt.indexOf(t[0].type)===-1)throw new Error("Invaid input type.");if(t[1].type!=="int32"&&t[1].type!=="int16")throw new Error("Invaid input type.")}}),ki,wf,_f,Of,zm,Vm,Wm,If=L(()=>{Ge(),fe(),ae(),ki=(t,e,n)=>(Wm(e,n),[t.run(zm(e,n),e)]),wf=(t,e)=>{let n=t.attributes.getInt("transA",0)!==0,r=t.attributes.getInt("transB",0)!==0,s=t.attributes.getFloat("alpha",1),i=t.attributes.getFloat("beta",1);return ee({transA:n,transB:r,alpha:s,beta:i,isOptionalC:e})},_f=t=>wf(t,!1),Of=t=>wf(t,!0),zm=(t,e)=>{let n={name:"Gemm",inputNames:t.length===3?["A","B","C"]:["A","B"],inputTypes:t.length===3?[0,0,0]:[0,0],key:e.cacheKey};return{...n,get:()=>Vm(n,t,e)}},Vm=(t,e,n)=>{let r=e[0].dims.slice(),s=e[1].dims.slice(),[i,a]=Xn.getShapeOfGemmResult(r,n.transA,s,n.transB,e.length===3?e[2].dims:void 0),u=[i,a];if(!u)throw new Error("Can't use gemm on the given tensors");let d=r[r.length-1],o="";n.transA&&(d=r[0]),n.transA&&n.transB?o="value += _A_T(a) * _B_T(b);":n.transA&&!n.transB?o="value += _A_T(a) * _B(b);":!n.transA&&n.transB?o="value += _A(a) * _B_T(b);":!n.transA&&!n.transB&&(o="value += _A(a) * _B(b);");let l=u.length,c=e.length===3?`int c[${e[2].dims.length}];`:"",h=e.length===3?"bcastIndices_C(indices, c);":"",f=e.length===3?"value += beta * _C(c);":"",p=` + float process(int indices[${l}]) { + int a[${l}]; + int b[${l}]; + ${c} + + copyVec(indices, a); + copyVec(indices, b); + ${h} + + float value = 0.0; + for (int k=0; k<${d}; ++k) { + a[${l-1}] = k; + b[${l-2}] = k; + ${o} + } + + value = value * alpha; + ${f} + return value; + }`;return{...t,output:{dims:u,type:e[0].type,textureType:0},variables:[{name:"alpha",type:"float",data:n.alpha},{name:"beta",type:"float",data:n.beta}],shaderSource:p}},Wm=(t,e)=>{if(!t)throw new Error("Input is missing");if(e.isOptionalC&&(t.length<2||t.length>3))throw new Error("Invaid input shape.");if(!e.isOptionalC&&t.length!==3)throw new Error("Gemm requires 3 inputs");if(t.length===3&&t[2].dims.length!==1&&t[2].dims.length!==2)throw new Error("Invalid input shape of C");if(t[0].type!=="float32"&&t[0].type!=="float64"||t[1].type!=="float32"&&t[1].type!=="float64"||t.length===3&&t[2].type!=="float32"&&t[2].type!=="float64")throw new Error("Invalid input type.");if(t[0].type!==t[1].type||t.length===3&&t[0].type!==t[2].type)throw new Error("Input types are mismatched")}}),Sf,Af,Hm,qm,jm,Ym,Xm,Pf=L(()=>{Ge(),ae(),Sf=(t,e,n)=>(Xm(e),[t.run(jm(t,e,n),e)]),Af=t=>{let e=t.attributes.getFloat("scale"),n=t.attributes.getFloats("bias");return ee({scale:e,bias:n})},Hm={name:"ImageScaler",inputNames:["X"],inputTypes:[0]},qm=(t,e,n,r)=>{let s=n[0].dims.slice(),i=s.length,a=` + ${Ym(r.bias.length)} + float process(int indices[${i}]) { + return _X(indices) * scale + getBias(bias, indices[1]); + }`;return{...e,output:{dims:s,type:n[0].type,textureType:0},variables:[{name:"bias",type:"float",arrayLength:r.bias.length,data:r.bias},{name:"scale",type:"float",data:r.scale}],shaderSource:a}},jm=(t,e,n)=>{let r={...Hm,cacheHint:n.cacheKey};return{...r,get:()=>qm(t,r,e,n)}},Ym=t=>{let e=[`float getBias(float bias[${t}], int channel) {`];for(let n=0;n{if(!t||t.length!==1)throw new Error("ImageScaler requires 1 input.");if(t[0].dims.length!==4)throw new Error("Invalid input shape.");if(t[0].type!=="float32"&&t[0].type!=="float64")throw new Error("Invalid input type.")}}),Df,Lf,Ef,Km,Jm,Zm,Qm,eb,tb,Ff=L(()=>{xe(),ae(),Df=(t,e,n)=>{tb(e);let r=t.run(Jm(e[0]),e);return[t.run(eb(t,e[0],n,r.dims),[e[0],r,e[1],e[2]])]},Lf=t=>t.attributes.getFloat("epsilon",1e-5),Ef={name:"InstanceNormalization_MeanAndVariance",inputNames:["X"],inputTypes:[0]},Km=(t,e)=>{let n=e.dims.slice(),r=n[1],s=n[2]*n[3],i=[n[0],r],a=` + vec4 process(int[2] indices) { + vec4 v = vec4(0.0); + int a[4]; + a[0] = indices[0]; + a[1] = indices[1]; + float temp = 0.0; + for(int a2=0; a2<${n[2]}; a2++) { + a[2] = a2; + for(int a3=0; a3<${n[3]}; a3++) { + a[3] = a3; + float x = _X(a); + temp += x; + } + } + float mean = temp / float(${s}); + temp = 0.0; + for(int a2=0; a2<${n[2]}; a2++) { + a[2] = a2; + for(int a3=0; a3<${n[3]}; a3++) { + a[3] = a3; + float x = _X(a); + temp += (x - mean) * (x - mean); + } + } + v.r = mean; + v.g = temp / float(${s}); + + return v; + }`;return{...t,output:{dims:i,type:e.type,textureType:4},shaderSource:a}},Jm=t=>({...Ef,get:()=>Km(Ef,t)}),Zm={name:"InstanceNormalization_ComputeOutput",inputNames:["X","MeanAndVariance","Scale","B"],inputTypes:[0,4,0,0]},Qm=(t,e,n,r,s)=>{let i=q(t.session.backend.glContext.version),[a,u]=t.calculateTextureWidthAndHeight(s,4),[d,o]=[a/4,u],l=` + vec4 get_MeanAndVariance(int[2] mv) { + int offset = indicesToOffset_MeanAndVariance(mv); + vec2 coords = offsetToCoords(offset, ${d}, ${o}); + return ${i.texture2D}(MeanAndVariance, coords); + } + + float process(int[4] indices) { + int mv[2]; + mv[0] = indices[0]; + mv[1] = indices[1]; + vec4 mean_and_variance = get_MeanAndVariance(mv); + float mean = mean_and_variance.r; + float variance = mean_and_variance.g; + + int sb[1]; + sb[0] = indices[1]; + float scale = _Scale(sb); + float b = _B(sb); + + return scale * (_X(indices) - mean) / sqrt(variance + epsilon) + b; + }`;return{...e,output:{dims:n.dims,type:n.type,textureType:0},variables:[{name:"epsilon",type:"float",data:r}],shaderSource:l}},eb=(t,e,n,r)=>{let s={...Zm,cacheHint:`${n}`};return{...s,get:()=>Qm(t,s,e,n,r)}},tb=t=>{if(!t||t.length!==3)throw new Error("InstanceNormalization requires 3 inputs.");let e=t[0],n=t[1],r=t[2];if(e.dims.length<3||n.dims.length!==1||r.dims.length!==1)throw new Error("Invalid input shape.");if(n.dims[0]!==e.dims[1]||r.dims[0]!==e.dims[1])throw new Error("Input shapes are mismatched.");if(e.type!=="float32"&&e.type!=="float64"||n.type!=="float32"&&n.type!=="float64"||r.type!=="float32"&&r.type!=="float64")throw new Error("Invalid input type.");if(t[0].dims.length!==4)throw new Error("Only support 4-D input shape.")}});function rb(t,e){let n=t[0].dims[1],r=t[0].dims.length,s=-Math.floor((e.size-1)/2),i=Math.ceil((e.size-1)/2),a=`float(${e.alpha}) / float(${e.size})`,u=`float(${e.bias})`,d=`float(${e.beta})`,o=` + float process(int indices[${r}]) { + int c = indices[1]; + float x = _X(indices); + float square_sum = 0.0; + + for (int i = ${s}; i <= ${i}; i++) { + int idx = c + i; + if (c >= 0 && c < ${n}) { + indices[1] = idx; + float j = _X(indices); + square_sum += j * j; + } + } + return x / pow(${u} + ${a} * square_sum, ${d}); + }`;return{...kf,cacheHint:e.cacheKey,output:{dims:t[0].dims,type:t[0].type,textureType:0},shaderSource:o}}function nb(t,e){return{...kf,cacheHint:e.cacheKey,get:()=>rb(t,e)}}var $f,Cf,kf,ob,Bf=L(()=>{Ge(),ae(),$f=(t,e,n)=>(ob(e),[t.run(nb(e,n),e)]),Cf=t=>{let e=t.attributes.getFloat("alpha",1e-4),n=t.attributes.getFloat("beta",.75),r=t.attributes.getFloat("bias",1),s=t.attributes.getInt("size");return ee({alpha:e,beta:n,bias:r,size:s})},kf={name:"LRN",inputNames:["X"],inputTypes:[0]},ob=t=>{if(!t||t.length!==1)throw new Error("LRN requires 1 input.");if(t[0].dims.length!==4)throw new Error('currently only support LRN for input with "NCHW" format');if(t[0].type!=="float32")throw new Error("input should be float type")}}),ib,Bi,Nf,Rf,Mf,ab,sb,ub,lb,fb,cb,pb,db,Gf=L(()=>{Ge(),fe(),xe(),ae(),ib={name:"Pad",inputNames:["A"],inputTypes:[0]},Bi=(t,e,n)=>(ub(e),[t.run({...ib,cacheHint:n.cacheKey,get:()=>sb(t,e[0],n)},e)]),Nf=t=>{let e=t.attributes.getString("mode","constant"),n=t.attributes.getFloat("value",0),r=t.attributes.getInts("pads");return ee({mode:e,value:n,pads:r})},Rf=(t,e,n)=>{lb(e);let r=ab(t,e,n);return Bi(t,[e[0]],r)},Mf=t=>t.attributes.getString("mode","constant"),ab=(t,e,n)=>{if(!t.session.isInitializer(e[1].dataId)||e.length>=3&&!t.session.isInitializer(e[2].dataId))throw new Error("dynamic pad attributes are not allowed");let r=Array.from(e[1].integerData),s=e.length>=3?e[2].floatData[0]:0;return ee({mode:n,pads:r,value:s})},sb=(t,e,n)=>{let r=U.padShape(e.dims.slice(),n.pads),s=r.length,i=` + ${fb(t,e,n)} + float process(int[${s}] indices) { + return padA(indices); + }`;return{name:"Pad",inputNames:["A"],inputTypes:[0],output:{dims:r,type:e.type,textureType:0},shaderSource:i}},ub=t=>{if(!t||t.length!==1)throw new Error("Pad requires 1 input");if(t[0].type!=="float32"&&t[0].type!=="float64")throw new Error("Invalid input type.")},lb=t=>{if(!t||t.length!==2&&t.length!==3)throw new Error("Pad requires 2 or 3 inputs");if(t[1].type!=="int32")throw new Error("Invalid input type.");if(t.length>=3&&t[2].type==="string")throw new Error("Invalid input type.")},fb=(t,e,n)=>{let r=q(t.session.backend.glContext.version),[s,i]=t.calculateTextureWidthAndHeight(e.dims,0),a=U.computeStrides(e.dims);switch(n.mode){case"constant":return cb(r,e.dims,a,s,i,n.pads,n.value);case"reflect":return pb(r,e.dims,a,s,i,n.pads);case"edge":return db(r,e.dims,a,s,i,n.pads);default:throw new Error("Invalid mode")}},cb=(t,e,n,r,s,i,a)=>{let u=e.length,d="";for(let o=u-1;o>=0;--o)d+=` + k = m[${o}] - ${i[o]}; + if (k < 0) return constant; + if (k >= ${e[o]}) return constant; + offset += k * ${n[o]}; + `;return` + float padA(int m[${u}]) { + const float constant = float(${a}); + int offset = 0; + int k = 0; + ${d} + vec2 coords = offsetToCoords(offset, ${r}, ${s}); + float value = getColorAsFloat(${t.texture2D}(A, coords)); + return value; + } + `},pb=(t,e,n,r,s,i)=>{let a=e.length,u="";for(let d=a-1;d>=0;--d)u+=` + k = m[${d}] - ${i[d]}; + if (k < 0) { k = -k; } + { + const int _2n_1 = ${2*(e[d]-1)}; + k = int( mod( float(k), float(_2n_1) ) ) ; + if(k >= ${e[d]}) { k = _2n_1 - k; } + } + offset += k * ${n[d]}; + `;return` + float padA(int m[${a}]) { + int offset = 0; + int k = 0; + ${u} + vec2 coords = offsetToCoords(offset, ${r}, ${s}); + float value = getColorAsFloat(${t.texture2D}(A, coords)); + return value; + } + `},db=(t,e,n,r,s,i)=>{let a=e.length,u="";for(let d=a-1;d>=0;--d)u+=` + k = m[${d}] - ${i[d]}; + if (k < 0) k = 0; + if (k >= ${e[d]}) k = ${e[d]-1}; + offset += k * ${n[d]}; + `;return` + float padA(int m[${a}]) { + int offset = 0; + int k = 0; + ${u} + vec2 coords = offsetToCoords(offset, ${r}, ${s}); + float value = getColorAsFloat(${t.texture2D}(A, coords)); + return value; + } + `}}),zf,Vf,Wf,Hf,qf,jf,Yf,Xf,Kf,hb,Uf,Jf,uo,Zf,so,mb,Qf=L(()=>{Ge(),fe(),ae(),zf=(t,e,n)=>{uo(e);let r={name:"AveragePool",inputNames:["X"],inputTypes:[0],cacheHint:n.cacheKey};return[t.run({...r,get:()=>Wf(e,r,!1,n)},e)]},Vf=t=>{let e=t.attributes.getString("auto_pad","NOTSET"),n=t.attributes.getInt("ceil_mode",0),r=t.attributes.getInt("count_include_pad",0)!==0,s=t.attributes.getInts("kernel_shape"),i=t.attributes.getInts("strides",[]),a=t.attributes.getInts("pads",[]);if(n!==0)throw new Error("using ceil() in shape computation is not yet supported for AveragePool");return ee({autoPad:e,ceilMode:n,countIncludePad:r,kernelShape:s,strides:i,pads:a})},Wf=(t,e,n,r)=>{let[s,i]=Kf(t,r,n),a=U.size(s.kernelShape),u="value += _X(x);",d="";s.countIncludePad?d+=`value /= float(${a});`:d+=`value /= float(${a} - pad);`;let o=` + ${Zf(t[0].dims,s,u,d,"0.0")} + `;return{...e,output:{dims:i,type:t[0].type,textureType:0},shaderSource:o}},Hf=(t,e,n)=>{uo(e);let r={name:"GlobalAveragePool",inputNames:["X"],inputTypes:[0],cacheHint:`${n.countIncludePad}`};return[t.run({...r,get:()=>Wf(e,r,!0,n)},e)]},qf=t=>{let e=t.attributes.getInt("count_include_pad",0)!==0;return ee({autoPad:"",ceilMode:0,countIncludePad:e,kernelShape:[],strides:[],pads:[]})},jf=(t,e,n)=>{uo(e);let r={name:"MaxPool",inputNames:["X"],inputTypes:[0],cacheHint:n.cacheKey};return[t.run({...r,get:()=>Xf(e,r,!1,n)},e)]},Yf=t=>{let e=t.attributes.getString("auto_pad","NOTSET"),n=t.attributes.getInt("ceil_mode",0),r=t.attributes.getInts("kernel_shape"),s=t.attributes.getInts("strides",[]),i=t.attributes.getInts("pads",[]),a=t.attributes.getInt("storage_order",0),u=t.attributes.getInts("dilations",[]);if(a!==0)throw new Error("column major storage order is not yet supported for MaxPool");if(n!==0)throw new Error("using ceil() in shape computation is not yet supported for MaxPool");return ee({autoPad:e,ceilMode:n,countIncludePad:!1,kernelShape:r,strides:s,pads:i,storageOrder:a,dilations:u})},Xf=(t,e,n,r)=>{let[s,i]=Kf(t,r,n),a=` + value = max(_X(x), value); + `,u="",d=` + ${Zf(t[0].dims,s,a,u,"-1e5")} + `;return{...e,output:{dims:i,type:t[0].type,textureType:0},shaderSource:d}},Kf=(t,e,n)=>{let r=t[0].dims.slice(),s=Object.hasOwnProperty.call(e,"dilations"),i=e.kernelShape.slice(),a=e.strides.slice(),u=s?e.dilations.slice():[],d=e.pads.slice();pr.adjustPoolAttributes(n,r,i,a,u,d);let o=pr.computePoolOutputShape(n,r,a,u,i,d,e.autoPad),l=Object.assign({},e);return s?Object.assign(l,{kernelShape:i,strides:a,pads:d,dilations:u,cacheKey:e.cacheKey}):Object.assign(l,{kernelShape:i,strides:a,pads:d,cacheKey:e.cacheKey}),[l,o]},hb={autoPad:"",ceilMode:0,countIncludePad:!1,kernelShape:[],strides:[],pads:[],storageOrder:0,dilations:[],cacheKey:""},Uf={name:"GlobalMaxPool",inputNames:["X"],inputTypes:[0]},Jf=(t,e)=>(uo(e),[t.run({...Uf,get:()=>Xf(e,Uf,!0,hb)},e)]),uo=t=>{if(!t||t.length!==1)throw new Error("Pool ops requires 1 input.");if(t[0].type!=="float32"&&t[0].type!=="float64")throw new Error("Invalid input type.")},Zf=(t,e,n,r,s)=>{let i=t.length;if(e.kernelShape.length<=2){let a=e.kernelShape[e.kernelShape.length-1],u=e.strides[e.strides.length-1],d=e.pads[e.pads.length/2-1],o=e.pads[e.pads.length-1],l=t[i-1],c="",h="",f="";if(d+o!==0?c=` + for (int i = 0; i < ${a}; i++) { + x[${i} - 1] = indices[${i} - 1] * ${u} - ${d} + i; + if (x[${i} - 1] < 0 || x[${i} - 1] >= ${l}) { + pad++; + continue; + } + ${n} + }`:c=` + for (int i = 0; i < ${a}; i++) { + x[${i} - 1] = indices[${i} - 1] * ${u} - ${d} + i; + ${n} + }`,e.kernelShape.length===2){let p=e.kernelShape[e.kernelShape.length-2],g=e.strides[e.strides.length-2],b=e.pads[e.pads.length/2-2],w=e.pads[e.pads.length-2],y=t[i-2];b+w!==0?h=` + for (int j = 0; j < ${p}; j++) { + x[${i} - 2] = indices[${i} - 2] * ${g} - ${b} + j; + if (x[${i} - 2] < 0 || x[${i} - 2] >= ${y}) { + pad+= ${a}; + continue; + } + `:h=` + for (int j = 0; j < ${p}; j++) { + x[${i} - 2] = indices[${i} - 2] * ${g} - ${b} + j; + `,f=` + } + `}return` + float process(int indices[${i}]) { + int x[${i}]; + copyVec(indices, x); + + float value = ${s}; + int pad = 0; + ${h} + ${c} + ${f} + ${r} + return value; + } + `}else{let a=U.size(e.kernelShape),u=U.computeStrides(e.kernelShape),d=u.length,o=e.pads.length,l=mb(d),c=so(t,"inputDims"),h=so(e.pads,"pads"),f=so(u,"kernelStrides"),p=so(e.strides,"strides"),g=e.pads.reduce((w,y)=>w+y),b="";return g?b=` + if (x[j] >= inputDims[j] || x[j] < 0) { + pad++; + isPad = true; + break; + } + } + if (!isPad) { + ${n} + }`:b=` + } + ${n} + `,` + ${l} + float process(int indices[${i}]) { + int x[${i}]; + copyVec(indices, x); + int offset[${d}]; + int pads[${o}]; + int inputDims[${i}]; + int kernelStrides[${d}]; + int strides[${d}]; + ${h} + ${c} + ${p} + ${f} + + float value = ${s}; + int pad = 0; + bool isPad = false; + for (int i = 0; i < ${a}; i++) { + offsetToIndices(i, kernelStrides, offset); + isPad = false; + for (int j = ${i} - ${d}; j < ${i}; j++) { + x[j] = indices[j] * strides[j - ${i} + ${d}] + + offset[j - ${i} + ${d}] - pads[j - 2]; + ${b} + } + ${r} + + return value; + } + `}},so=(t,e)=>{let n="";for(let r=0;r` + void offsetToIndices(int offset, int[${t}] strides, out int[${t}] indices) { + if (${t} == 0) { + return; + } + for (int i = 0; i < ${t} - 1; ++i) { + indices[i] = offset / strides[i]; + offset -= indices[i] * strides[i]; + } + indices[${t} - 1] = offset; + }`}),Tr,Zt,bb,gb,ec,tc,rc,nc,oc,ic,ac,sc=L(()=>{Ge(),pn(),fe(),ae(),Tr=(t,e,n,r,s)=>{gb(e);let i={name:r,inputNames:["A"],inputTypes:[0]};return[t.run({...i,cacheHint:n.cacheKey,get:()=>bb(t,e,n,r,s,i)},e)]},Zt=t=>{let e=t.attributes.getInts("axes",[]),n=t.attributes.getInt("keepdims",1)===1;return ee({axes:e,keepDims:n})},bb=(t,e,n,r,s,i)=>{let a=[],u=e[0].dims.length||1,d=[],o=U.normalizeAxes(n.axes,e[0].dims.length),l=s(e,o),c=l[1];for(let f=0;f=0||o.length===0?(n.keepDims&&a.push(1),c=` + for(int j${f} = 0; j${f} < ${e[0].dims[f]}; j${f}++) { + inputIdx[${f}] = j${f}; + ${c} + }`):(d.push(`inputIdx[${f}] = outputIdx[${a.length}];`),a.push(e[0].dims[f]));let h=` + float process(int outputIdx[${a.length||1}]) { + float value; // final result + int inputIdx[${u}]; // addressing input data + ${d.join(` +`)} + ${l[0]} // init ops for reduce max/min + ${c} + ${l[2]} // final computation for reduce mean + return value; + }`;return{...i,output:{dims:a,type:e[0].type,textureType:0},shaderSource:h}},gb=t=>{if(!t||t.length!==1)throw new Error("Reduce op requires 1 input.");if(Jt.indexOf(t[0].type)===-1)throw new Error("Invalid input type.")},ec=(t,e,n)=>Tr(t,e,n,"ReduceSum",()=>["value = 0.0;","value += _A(inputIdx);",""]),tc=(t,e,n)=>Tr(t,e,n,"ReduceMean",(r,s)=>{let i=1;for(let a=0;a=0||s.length===0)&&(i*=r[0].dims[a]);return["value = 0.0;","value += _A(inputIdx);",`value /= ${i}.;`]}),rc=(t,e,n)=>Tr(t,e,n,"ReduceMax",(r,s)=>{let i=[];for(let a=0;a=0||s.length===0)&&i.push(`inputIdx[${a}] = 0;`);return[`${i.join(` +`)} +value = _A(inputIdx);`,"value = max(value, _A(inputIdx));",""]}),nc=(t,e,n)=>Tr(t,e,n,"ReduceMin",(r,s)=>{let i=[];for(let a=0;a=0||s.length===0)&&i.push(`inputIdx[${a}] = 0;`);return[`${i.join(` +`)} +value = _A(inputIdx);`,"value = min(value, _A(inputIdx));",""]}),oc=(t,e,n)=>Tr(t,e,n,"ReduceProd",()=>["value = 1.0;","value *= _A(inputIdx);",""]),ic=(t,e,n)=>Tr(t,e,n,"ReduceLogSum",()=>["value = 0.0;","value += _A(inputIdx);","value = log(value);"]),ac=(t,e,n)=>Tr(t,e,n,"ReduceLogSumSquare",()=>["float t; value = 0.0;","t = _A(inputIdx); value += t * t;",""])}),uc,lc=L(()=>{fe(),uc=(t,e)=>{let n=U.calculateReshapedDims(e[0].dims,e[1].integerData);return t.session.pack?[t.reshapePacked(e[0],n)]:[t.reshapeUnpacked(e[0],n)]}}),fc,Ni,cc,pc,dn,yb,Ri,lo,Mi=L(()=>{Ge(),xe(),ae(),fc={name:"Upsample",inputNames:["X"],inputTypes:[0]},Ni=(t,e,n)=>(Ri(e,n),[t.run({...fc,cacheHint:n.cacheKey,get:()=>yb(t,e,n)},e)]),cc=t=>dn(t,7),pc=t=>dn(t,9),dn=(t,e)=>{let n=e>=10,r=t.attributes.getString("mode","nearest");if(r!=="nearest"&&r!=="linear"&&(e<11||r!=="cubic"))throw new Error(`unrecognized mode: ${r}`);let s=[];e<9&&(s=t.attributes.getFloats("scales"),lo(s,r,n));let i=t.attributes.getFloat("extrapolation_value",0),a=e>10?t.attributes.getString("coordinate_transformation_mode","half_pixel"):"asymmetric";if(["asymmetric","pytorch_half_pixel","tf_half_pixel_for_nn","align_corners","tf_crop_and_resize","half_pixel"].indexOf(a)===-1)throw new Error(`coordinate_transform_mode '${a}' is not supported`);let u=a==="tf_crop_and_resize",d=u,o=r==="nearest"&&e>=11?t.attributes.getString("nearest_mode","round_prefer_floor"):"";if(["round_prefer_floor","round_prefer_ceil","floor","ceil",""].indexOf(o)===-1)throw new Error(`nearest_mode '${o}' is not supported`);let l=t.attributes.getFloat("cubic_coeff_a",-.75),c=t.attributes.getInt("exclude_outside",0)!==0;if(c&&r!=="cubic")throw new Error("exclude_outside can be set to 1 only when mode is CUBIC.");let h=e<11?!0:r==="nearest"&&a==="asymmetric"&&o==="floor",f=0,p=0,g=0;return e>10?t.inputs.length>2?(f=1,p=2,g=3):(p=1,g=2):e===9&&(p=1),ee({opset:e,isResize:n,mode:r,scales:s,extrapolationValue:i,coordinateTransformMode:a,useExtrapolation:d,needRoiInput:u,nearestMode:o,cubicCoefficientA:l,excludeOutside:c,useNearest2xOptimization:h,roiInputIdx:f,scalesInputIdx:p,sizesInputIdx:g})},yb=(t,e,n)=>{let r=q(t.session.backend.glContext.version),[s,i]=t.calculateTextureWidthAndHeight(e[0].dims,0),a=e[0].dims.map((g,b)=>Math.floor(g*n.scales[b])),[u,d]=t.calculateTextureWidthAndHeight(a,0),o=a.length,l=new Array(o),c=new Array(o),h=` + int output_pitches[${o}]; + int input_pitches[${o}]; + `;for(let g=o-1;g>=0;g--)l[g]=g===o-1?1:l[g+1]*a[g+1],c[g]=g===o-1?1:c[g+1]*e[0].dims[g+1],h+=` + output_pitches[${g}] = ${l[g]}; + input_pitches[${g}] = ${c[g]}; + `;let f=` + float getInputFloat(int index) { + vec2 coords = offsetToCoords(index, ${s}, ${i}); + float value = getColorAsFloat(${r.texture2D}(X, coords)); + return value; + } + `,p=n.mode==="nearest"?` + ${f} + float process(int indices[${o}]) { + int input_index = 0; + int output_index = coordsToOffset(TexCoords, ${u}, ${d}); + + ${h} + + int d, m; + for (int dim = 0; dim < ${o}; ++dim) { + d = output_index / output_pitches[dim]; + m = output_index - d * output_pitches[dim]; + output_index = m; + + if (scales[dim] != 1 && d > 0) { + int d2 = d / scales[dim]; + m = d - d2 * scales[dim]; + d = d2; + } + input_index += input_pitches[dim] * d; + } + + return getInputFloat(input_index); + }`:o===4?` + ${f} + float process(int indices[4]) { + int input_index = 0; + int output_index = coordsToOffset(TexCoords, ${u}, ${d}); + + ${h} + + int m; + int index_of_dim0, index_of_dim1, index_of_dim2, index_of_dim3; + index_of_dim0 = output_index / output_pitches[0]; + m = output_index - index_of_dim0 * output_pitches[0]; + index_of_dim1 = m / output_pitches[1]; + m = m - index_of_dim1 * output_pitches[1]; + index_of_dim2 = m / output_pitches[2]; + m = m - index_of_dim2 * output_pitches[2]; + index_of_dim3 = m; + + int index_of_input_dim2, index_of_input_dim3, x_offset, y_offset; + index_of_input_dim2 = index_of_dim2 / scales[2]; + y_offset = index_of_dim2 - index_of_input_dim2 * scales[2]; + index_of_input_dim3 = index_of_dim3 / scales[3]; + x_offset = index_of_dim3 - index_of_input_dim3 * scales[3]; + + input_index = index_of_dim0 * input_pitches[0] + + index_of_dim1 * input_pitches[1] + + index_of_input_dim2 * input_pitches[2] + + index_of_input_dim3; + + float x00 = getInputFloat(input_index); + float x10, x01, x11; + + bool end_of_dim2 = false; + if (index_of_input_dim2 == (${e[0].dims[2]} - 1)) { + // It's the end in dimension 2 + x01 = x00; + end_of_dim2 = true; + } else { + x01 = getInputFloat(input_index + input_pitches[2]); + } + + if (index_of_input_dim3 == (input_pitches[2] - 1)) { + // It's the end in dimension 3 + x10 = x00; + x11 = x01; + } + else { + x10 = getInputFloat(input_index + 1); + x11 = end_of_dim2 ? x10 : getInputFloat(input_index + input_pitches[2] + 1); + } + + float y0 = x00 + float(y_offset) * (x01 - x00) / float(scales[2]); + float y1 = x10 + float(y_offset) * (x11 - x10) / float(scales[2]); + return y0 + float(x_offset) * (y1 - y0) / float(scales[3]); + }`:` + ${f} + float process(int indices[2]) { + int input_index = 0; + int output_index = coordsToOffset(TexCoords, ${u}, ${d}); + + ${h} + + int m; + int index_of_dim0, index_of_dim1; + index_of_dim0 = output_index / output_pitches[0]; + m = output_index - index_of_dim0 * output_pitches[0]; + index_of_dim1 = m; + + int index_of_input_dim0, index_of_input_dim1, x_offset, y_offset; + index_of_input_dim0 = index_of_dim0 / scales[0]; + y_offset = index_of_dim0 - index_of_input_dim0 * scales[0]; + index_of_input_dim1 = index_of_dim1 / scales[1]; + x_offset = index_of_dim1 - index_of_input_dim1 * scales[1]; + + input_index = index_of_input_dim0 * input_pitches[0] + index_of_input_dim1; + + float x00 = getInputFloat(input_index); + float x10, x01, x11; + + bool end_of_dim0 = false; + if (index_of_input_dim0 == (${e[0].dims[0]} - 1)) { + // It's the end in dimension 0 + x01 = x00; + end_of_dim0 = true; + } else { + x01 = getInputFloat(input_index + input_pitches[0]); + } + + if (index_of_input_dim1 == (input_pitches[0] - 1)) { + // It's the end in dimension 1 + x10 = x00; + x11 = x01; + } + else { + x10 = getInputFloat(input_index + 1); + x11 = end_of_dim0 ? x10 : getInputFloat(input_index + input_pitches[0] + 1); + } + + float y0 = x00 + float(y_offset) * (x01 - x00) / float(scales[0]); + float y1 = x10 + float(y_offset) * (x11 - x10) / float(scales[0]); + return y0 + float(x_offset) * (y1 - y0) / float(scales[1]); + }`;return{...fc,output:{dims:a,type:e[0].type,textureType:0},shaderSource:p,variables:[{name:"scales",type:"int",arrayLength:n.scales.length,data:n.scales.map(g=>Math.ceil(g))}]}},Ri=(t,e)=>{if(!t||e.opset<9&&t.length!==1||e.opset>=9&&e.opset<11&&t.length!==2||e.opset>=11&&t.length<2)throw new Error("invalid inputs.");if(e.scales.length>0&&t[0].dims.length!==e.scales.length)throw new Error("Invalid input shape.");if(t[0].type==="string")throw new Error("Invalid input tensor types.")},lo=(t,e,n)=>{if(n){for(let r of t)if(r<=0)throw new Error("Scale value should be greater than 0.")}else for(let r of t)if(r<1)throw new Error("Scale value should be greater than or equal to 1.");if((e==="linear"||e==="cubic")&&t.length!==2&&(t.length!==4||t[0]!==1||t[1]!==1))throw new Error(`'Linear' mode and 'Cubic' mode only support 2-D inputs ('Bilinear', 'Bicubic') or 4-D inputs with the corresponding outermost 2 scale values being 1 in the ${n?"Resize":"Upsample"} opeartor.`)}}),Gi,Ui,dc,hc,Tb,xb,vb,wb,mc=L(()=>{xe(),ae(),Ft(),br(),Mi(),Gi={name:"Resize",inputNames:["A"],inputTypes:[2]},Ui=(t,e,n)=>(Ri(e,n),[t.run({...Gi,cacheHint:n.cacheKey,get:()=>Tb(t,e,n)},e)]),dc=t=>dn(t,10),hc=t=>dn(t,11),Tb=(t,e,n)=>{let r=q(t.session.backend.glContext.version),[s,i]=xb(e,n);if(s.every(y=>y===1)&&n.coordinateTransformMode!=="tf_crop_and_resize")return{...Gi,output:{dims:i,type:e[0].type,textureType:2},hasMain:!0,shaderSource:`void main() { + vec4 v = ${r.texture2D}(X, TexCoords); + ${r.output} = v; + }`};let a=i.length;if(a<2)throw new Error(`output dimension should be at least 2, but got ${a}`);let u=i[a-2],d=i[a-1],o=e[0].dims;if(a!==o.length)throw new Error(`output dimension should match input ${o.length}, but got ${a}`);let l=o[a-2],c=o[a-1],h=s[a-2],f=s[a-1],p="";if(n.mode!=="linear")throw new Error(`resize (packed) does not support mode: '${n.mode}'`);switch(n.coordinateTransformMode){case"asymmetric":p=` + vec4 getSourceFracIndex(ivec4 coords) { + return vec4(coords) / scaleWHWH; + } + `;break;case"half_pixel":p=` + vec4 getSourceFracIndex(ivec4 coords) { + return (vec4(coords) + 0.5) / scaleWHWH - 0.5; + } + `;break;case"pytorch_half_pixel":p=` + vec4 getSourceFracIndex(ivec4 coords) { + vec4 fcoords = vec4(coords); + return vec4( + ${d}.0 > 1.0 ? (fcoords.x + 0.5) / scaleWHWH.x - 0.5 : 0.0, + ${u}.0 > 1.0 ? (fcoords.y + 0.5) / scaleWHWH.y - 0.5 : 0.0, + ${d}.0 > 1.0 ? (fcoords.z + 0.5) / scaleWHWH.z - 0.5 : 0.0, + ${u}.0 > 1.0 ? (fcoords.w + 0.5) / scaleWHWH.w - 0.5 : 0.0 + ); + } + `;break;case"align_corners":p=` + vec4 getSourceFracIndex(ivec4 coords) { + vec4 resized = vec4(${d}.0 - 1.0, ${u}.0 - 1.0, ${d}.0 - 1.0, + ${u}.0 - 1.0); + vec4 original = vec4(${c}.0 - 1.0, ${l}.0 - 1.0, ${c}.0 - 1.0, + ${l}.0 - 1.0); + vec4 new_scale = original / resized; + return vec4(coords) * new_scale; + } + `;break;default:throw new Error(`resize (packed) does not support coordinateTransformMode: '${n.coordinateTransformMode}'`)}let g=Ke(a),b=$t(),w=` + const vec2 inputWH = vec2(${l}.0, ${c}.0); + const vec4 scaleWHWH = vec4(float(${h}), float(${f}), float(${h}), float(${f})); + ${b} + ${p} + float getAValue(int x10, int r, int c, int d) { + return getChannel(getA(x10, r, c, d), vec2(c, d)); + } + void main() { + ${g} rc = getOutputCoords(); + + int batch = rc[0]; + int depth = rc[1]; + + // retrieve the 4 coordinates that is used in the 4 packed output values. + ivec4 coords = ivec4(rc.wz, rc.w + 1, rc.z + 1); + + // calculate the source index in fraction + vec4 sourceFrac = getSourceFracIndex(coords); + + // get the lower and upper bound of the 4 values that will be packed into one texel. + ivec4 x00 = ivec4(max(sourceFrac.xy, vec2(0.0)), min(inputWH - 1.0, ceil(sourceFrac.xy))); + ivec4 x01 = ivec4(max(sourceFrac.xw, vec2(0.0)), min(inputWH - 1.0, ceil(sourceFrac.xw))); + ivec4 x10 = ivec4(max(sourceFrac.zy, vec2(0.0)), min(inputWH - 1.0, ceil(sourceFrac.zy))); + ivec4 x11 = ivec4(max(sourceFrac.zw, vec2(0.0)), min(inputWH - 1.0, ceil(sourceFrac.zw))); + + bool hasNextRow = rc.w < ${u-1}; + bool hasNextCol = rc.z < ${d-1}; + + // pack x00, x01, x10, x11's top-left corner into one vec4 structure + vec4 topLeft = vec4( + getAValue(batch, depth, x00.x, x00.y), + hasNextCol ? getAValue(batch, depth, x01.x, x01.y) : 0.0, + hasNextRow ? getAValue(batch, depth, x10.x, x10.y) : 0.0, + (hasNextRow && hasNextCol) ? getAValue(batch, depth, x11.x, x11.y) : 0.0); + + // pack x00, x01, x10, x11's top-right corner into one vec4 structure + vec4 topRight = vec4( + getAValue(batch, depth, x00.x, x00.w), + hasNextCol ? getAValue(batch, depth, x01.x, x01.w) : 0.0, + hasNextRow ? getAValue(batch, depth, x10.x, x10.w) : 0.0, + (hasNextRow && hasNextCol) ? getAValue(batch, depth, x11.x, x11.w) : 0.0); + + // pack x00, x01, x10, x11's bottom-left corner into one vec4 structure + vec4 bottomLeft = vec4( + getAValue(batch, depth, x00.z, x00.y), + hasNextCol ? getAValue(batch, depth, x01.z, x01.y) : 0.0, + hasNextRow ? getAValue(batch, depth, x10.z, x10.y) : 0.0, + (hasNextRow && hasNextCol) ? getAValue(batch, depth, x11.z, x11.y) : 0.0); + + // pack x00, x01, x10, x11's bottom-right corner into one vec4 structure + vec4 bottomRight = vec4( + getAValue(batch, depth, x00.z, x00.w), + hasNextCol ? getAValue(batch, depth, x01.z, x01.w) : 0.0, + hasNextRow ? getAValue(batch, depth, x10.z, x10.w) : 0.0, + (hasNextRow && hasNextCol) ? getAValue(batch, depth, x11.z, x11.w) : 0.0); + + // calculate the interpolation fraction on u and v direction + vec4 frac = vec4(sourceFrac) - floor(sourceFrac); + vec4 clampFrac = clamp(frac, vec4(0.0), vec4(1.0)); + + vec4 top = mix(topLeft, topRight, clampFrac.ywyw); + vec4 bottom = mix(bottomLeft, bottomRight, clampFrac.ywyw); + vec4 newValue = mix(top, bottom, clampFrac.xxzz); + + ${r.output} = vec4(newValue); + } + `;return{...Gi,output:{dims:i,type:e[0].type,textureType:2},hasMain:!0,shaderSource:w}},xb=(t,e)=>{let n=t[0].dims,r=e.scales,s;if(r.length===0){let a=t[e.scalesInputIdx];if(a&&a.size!==0){if(t[e.sizesInputIdx])throw new Error("Only one of scales or sizes must be provided as input.");r=vb(a,e.mode,e.isResize)}else{let u=t[e.sizesInputIdx];if(!u||u.size===0)throw new Error("Either scales or sizes MUST be provided as input.");s=Array.from(u.integerData),r=wb(s,n,e.mode,e.isResize)}}else if(t[e.sizesInputIdx])throw new Error("Only one of scales or sizes must be provided as input.");let i=s||n.map((a,u)=>Math.floor(a*r[u]));return[r,i]},vb=(t,e,n)=>{let r=Array.from(t.floatData);return lo(r,e,n),r},wb=(t,e,n,r)=>{let s=e.length,i=new Array(s);for(let a=0,u=s;a{mr(),bc=(t,e)=>(_b(e),[new Fe([e[0].dims.length],"int32",void 0,void 0,new Int32Array(e[0].dims))]),_b=t=>{if(!t||t.length!==1)throw new Error("Shape requires 1 input.")}}),zi,yc,Tc,xc,Ob,vc,Ib,Sb,wc=L(()=>{Ge(),pn(),fe(),ae(),zi={name:"Slice",inputNames:["A"],inputTypes:[0]},yc=(t,e,n)=>(Ob(e),[t.run({...zi,cacheHint:n.cacheKey,get:()=>xc(t,e[0],n)},e)]),Tc=t=>{let e=t.attributes.getInts("starts"),n=t.attributes.getInts("ends"),r=t.attributes.getInts("axes",[]);return ee({starts:e,ends:n,axes:r})},xc=(t,e,n)=>{let r=n.axes.length===0?e.dims.slice(0).map((l,c)=>c):n.axes,s=U.normalizeAxes(r,e.dims.length),i=n.starts.map((l,c)=>l>e.dims[s[c]]-1?e.dims[s[c]]:U.normalizeAxis(l,e.dims[s[c]])),a=n.ends.map((l,c)=>l>e.dims[s[c]]-1?e.dims[s[c]]:U.normalizeAxis(l,e.dims[s[c]])),u=e.dims.slice(),d=[];for(let l=0;l0&&d.push(`outputIdx[${s[l]}] += ${i[l]};`);let o=` + float process(int outputIdx[${u.length}]) { + ${d.join(` + `)} + return _A(outputIdx); + }`;return{...zi,output:{dims:u,type:e.type,textureType:0},shaderSource:o}},Ob=t=>{if(!t||t.length!==1)throw new Error("Slice requires 1 input.");if(Jt.indexOf(t[0].type)===-1)throw new Error("Invalid input type.")},vc=(t,e)=>{Sb(e);let n=Ib(t,e);return[t.run({...zi,cacheHint:n.cacheKey,get:()=>xc(t,e[0],n)},[e[0]])]},Ib=(t,e)=>{if(!t.session.isInitializer(e[1].dataId)||!t.session.isInitializer(e[2].dataId)||e.length>=4&&!t.session.isInitializer(e[3].dataId)||e.length>=5&&!t.session.isInitializer(e[4].dataId))throw new Error("dynamic slice attributes are not allowed");if(e.length>=5&&e[4].integerData.some(a=>a!==1))throw new Error("currently non-1 steps is not supported for Slice");let n=Array.from(e[1].integerData),r=Array.from(e[2].integerData),s=e.length>=4?Array.from(e[3].integerData):[],i=`${s};${n};${r}`;return{starts:n,ends:r,axes:s,cacheKey:i}},Sb=t=>{if(!t||t.length<3||t.length>5)throw new Error("Invalid input number.");if(t[1].type!=="int32"||t[1].dims.length!==1)throw new Error("Invalid input type.");if(t[2].type!=="int32"||t[2].dims.length!==1)throw new Error("Invalid input type.");if(t.length>=4&&(t[3].type!=="int32"||t[3].dims.length!==1))throw new Error("Invalid input type.");if(t.length>=5&&(t[4].type!=="int32"||t[4].dims.length!==1))throw new Error("Invalid input type.")}}),_c,Oc,Ic,Sc,Ac,Pc,Ec,Dc,Ab,Pb,Eb,Lc,Fc=L(()=>{Ge(),fe(),xe(),ae(),ao(),_c={name:"SoftmaxComputeMax",inputNames:["A"],inputTypes:[0]},Oc={name:"SoftmaxComputeScale",inputNames:["A","Max"],inputTypes:[0,0]},Ic={name:"SoftMax",inputNames:["A","Max","Norm"],inputTypes:[0,0,0]},Sc=(t,e,n)=>{Lc(e);let r=e[0].dims.slice(),s=U.normalizeAxis(n.axis,r.length),i=U.sizeToDimension(r,s),a=U.sizeFromDimension(r,s);return Dc(t,e,n,i,a)},Ac=t=>ee({axis:t.attributes.getInt("axis",1)}),Pc=t=>ee({axis:t.attributes.getInt("axis",-1)}),Ec=(t,e,n)=>{Lc(e);let r=e[0].dims.slice(),s=U.normalizeAxis(n.axis,r.length),i=r.length,a=s!==i-1,u=[],d=[],o=[],l;a&&(d=Array.from({length:i}).map((p,g)=>g),d[s]=i-1,d[i-1]=s,d.map(p=>u.push(r[p])),l=ee({perm:d}),o=yr(t,e,l));let c=a?U.sizeToDimension(u,i-1):U.sizeToDimension(r,i-1),h=a?U.sizeFromDimension(u,i-1):U.sizeFromDimension(r,i-1),f=Dc(t,a?o:e,n,c,h);return a?yr(t,f,l):f},Dc=(t,e,n,r,s)=>{let i=Ab(t,e[0],r,s,[r]),a=t.run({..._c,cacheHint:n.cacheKey,get:()=>i},e),u=Pb(t,e[0],r,s,i.output.dims,[r]),d=t.run({...Oc,cacheHint:n.cacheKey,get:()=>u},[e[0],a]),o=Eb(t,e[0],r,s,i.output.dims,u.output.dims);return[t.run({...Ic,cacheHint:n.cacheKey,get:()=>o},[e[0],a,d])]},Ab=(t,e,n,r,s)=>{let[i,a]=t.calculateTextureWidthAndHeight(e.dims,0),u=s.length;if(n<1||r<1)throw new Error("Logical row count N and feature count D must be greater than or equal to 1");if(s.length!==1)throw new Error("Dimensionality of the output should be 1");if(s[0]!==n)throw new Error("Shape of the output should be equal to logical row count");let d=q(t.session.backend.glContext.version),o=` + float process(int[${u}] indices) { + int logical_row_start_offset = indices[0] * ${r}; + + float max = getColorAsFloat(${d.texture2D}(A, offsetToCoords(logical_row_start_offset, ${i}, + ${a} ))); + for(int i=1; i<${r}; ++i) + { + float current = getColorAsFloat(${d.texture2D}(A, offsetToCoords(logical_row_start_offset + i, + ${i}, ${a}))); + if(current > max) + max = current; + } + + return max; + }`;return{..._c,output:{dims:s,type:e.type,textureType:0},shaderSource:o}},Pb=(t,e,n,r,s,i)=>{let[a,u]=t.calculateTextureWidthAndHeight(e.dims,0),d=i.length;if(n<1||r<1)throw new Error("Logical row count N and feature count D must be greater than or equal to 1");if(i.length!==1)throw new Error("Dimensionality of the output should be 1");if(i[0]!==n)throw new Error("Shape of the output should be equal to logical row count");if(s.length!==1)throw new Error("Dimensionality of the intermediate results should be 1");if(s[0]!==n)throw new Error("Shape of the intermediate results should be equal to logical row count");let o=q(t.session.backend.glContext.version),l=` + float process(int[${d}] indices) { + int logical_row_start_offset = indices[0] * ${r}; + + float norm_factor = 0.0; + float max = _Max(indices); + for(int i=0; i<${r}; ++i) + { + norm_factor += exp(getColorAsFloat(${o.texture2D}(A, offsetToCoords(logical_row_start_offset + i, + ${a}, ${u}))) - max); + } + + return norm_factor; + }`;return{...Oc,output:{dims:i,type:e.type,textureType:0},shaderSource:l}},Eb=(t,e,n,r,s,i)=>{let[a,u]=t.calculateTextureWidthAndHeight(e.dims,0),d=e.dims.length;if(n<1||r<1)throw new Error("Logical row count N and feature count D must be greater than or equal to 1");if(s.length!==1||i.length!==1)throw new Error("Dimensionality of the intermediate results should be 1");if(s[0]!==n||i[0]!==n)throw new Error("Shape of the intermediate results should be equal to logical row count");let o=` + float process(int[${d}] indices) { + + // get offset of current logical tensor index from the 2-D texture coordinates (TexCoords) + int offset = coordsToOffset(TexCoords, ${a}, ${u}); + + //determine the logical row for this index + int logical_row_index[1]; + logical_row_index[0] = offset / ${r}; + + float norm_factor = _Norm(logical_row_index); + + // avoid possible division by 0 + // if norm_facor is 0, all elements are zero + // if so, return 0 + if(norm_factor == 0.0) + return 0.0; + + return exp(_A(indices) - _Max(logical_row_index)) / norm_factor; + }`;return{...Ic,output:{dims:e.dims,type:e.type,textureType:0},shaderSource:o}},Lc=t=>{if(!t||t.length!==1)throw new Error("Softmax requires 1 input.");if(t[0].type!=="float32"&&t[0].type!=="float64")throw new Error("Invalid input type")}}),$c,Cc,kc,Db,Lb,Fb,Bc=L(()=>{Ge(),fe(),ae(),$c={name:"Split",inputNames:["A"],inputTypes:[0]},Cc=(t,e,n)=>{Fb(e);let r=U.normalizeAxis(n.axis,e[0].dims.length),s=Db(t,e,r,n),i=[];for(let a=0;aLb(t,e[0],n,r,a)},e));return i},kc=t=>{let e=t.attributes.getInt("axis",0),n=t.attributes.getInts("split",[]),r=t.outputs.length;return ee({axis:e,split:n,numOutputs:r})},Db=(t,e,n,r)=>{let[,s]=an.splitShape(e[0].dims,n,r.split,r.numOutputs);return s.length},Lb=(t,e,n,r,s)=>{let[i,a]=an.splitShape(e.dims,r,n.split,n.numOutputs),u=a[s],d=i[s],o=` + float process(int indices[${d.length}]) { + indices[${r}] += ${u}; + return _A(indices); + } + `;return{...$c,cacheHint:`${n.cacheKey}:${s}`,output:{dims:d,type:e.type,textureType:0},shaderSource:o}},Fb=t=>{if(!t||t.length!==1)throw new Error("Split requires one input.");if(t[0].type!=="int8"&&t[0].type!=="uint8"&&t[0].type!=="int16"&&t[0].type!=="uint16"&&t[0].type!=="int32"&&t[0].type!=="uint32"&&t[0].type!=="float32"&&t[0].type!=="float64"&&t[0].type!=="bool")throw new Error("Invalid input type.")}}),Vi,Nc,Rc,$b,Cb,Mc=L(()=>{fe(),Vi=(t,e,n)=>{$b(e);let r=U.squeezeShape(e[0].dims,n);return[t.reshapeUnpacked(e[0],r)]},Nc=(t,e)=>(Cb(e),Vi(t,[e[0]],Array.from(e[1].integerData))),Rc=t=>t.attributes.getInts("axes"),$b=t=>{if(!t||t.length!==1)throw new Error("Squeeze requires 1 input.");if(t[0].type==="string")throw new Error("invalid input tensor types.")},Cb=t=>{if(!t||t.length!==2)throw new Error("Squeeze requires 2 inputs.");if(t[1].type!=="int32")throw new Error("Invalid input type.")}}),Gc,kb,Bb,Uc=L(()=>{xe(),ae(),Gc=(t,e)=>{Bb(e);let n={name:"Sum",inputNames:e.map((r,s)=>`X${s}`),inputTypes:new Array(e.length).fill(0)};return[t.run({...n,get:()=>kb(t,e,n)},e)]},kb=(t,e,n)=>{let r=q(t.session.backend.glContext.version),s=e[0].dims.slice(),i=` + void main() { + vec4 result = ${e.map((a,u)=>`${r.texture2D}(X${u},TexCoords)`).join(" + ")}; + ${r.output} = result; + } + `;return{...n,output:{dims:s,type:e[0].type,textureType:0},hasMain:!0,shaderSource:i}},Bb=t=>{if(!t||t.length===0)throw new Error("Sum requires inputs.");let e=t[0].dims.length;for(let n=1;n{pn(),ae(),zc=(t,e)=>{Rb(e);let n={name:"Tile",inputNames:["A"],inputTypes:[0]};return[t.run({...n,get:()=>Nb(t,e,n)},e)]},Nb=(t,e,n)=>{let r=e[0].dims.slice(),s=new Array(r.length),i=[];for(let d=0;d{if(!t||t.length!==2)throw new Error("Tile requires 2 input.");if(t[1].dims.length!==1)throw new Error("The second input shape must 1 dimension.");if(t[1].dims[0]!==t[0].dims.length)throw new Error("Invalid input shape.");if(Jt.indexOf(t[0].type)===-1)throw new Error("Invalid input type.");if(t[1].type!=="int32"&&t[1].type!=="int16")throw new Error("Invalid repeat type.")}}),Wi,Wc,Hc,Mb,Gb,qc=L(()=>{fe(),Wi=(t,e,n)=>{Mb(e);let r=U.unsqueezeShape(e[0].dims,n);return[t.reshapeUnpacked(e[0],r)]},Wc=(t,e)=>(Gb(e),Wi(t,[e[0]],Array.from(e[1].integerData))),Hc=t=>t.attributes.getInts("axes"),Mb=t=>{if(!t||t.length!==1)throw new Error("Unsqueeze requires 1 input.");if(t[0].type==="string")throw new Error("invalid input tensor types.")},Gb=t=>{if(!t||t.length!==2)throw new Error("Unsqueeze requires 2 inputs.");if(t[1].type!=="int32")throw new Error("Invalid input type.")}}),jc,Yc=L(()=>{nl(),bl(),Tl(),Il(),no(),lf(),mf(),yf(),vf(),If(),Pf(),Ff(),Bf(),oo(),Gf(),Qf(),sc(),lc(),mc(),gc(),wc(),Fc(),Bc(),Mc(),Uc(),Vc(),ao(),Ai(),qc(),Mi(),jc=[["Abs","","6+",Sl],["Acos","","7+",Al],["Add","","7+",ol],["And","","7+",il],["Asin","","7+",Pl],["Atan","","7+",El],["AveragePool","","7+",zf,Vf],["BatchNormalization","","7+",tl,rl],["Cast","","6+",gl,yl],["Ceil","","6+",Fl],["Clip","","6-10",Ii,Dl],["Clip","","11+",Ll],["Concat","","4+",wl,Ol],["Conv","","1+",$i,Ci],["ConvTranspose","","1+",sf,uf],["Cos","","7+",$l],["Div","","7+",al],["Dropout","","7+",Si],["DepthToSpace","","1+",df,hf],["Equal","","7+",sl],["Elu","","6+",Cl,kl],["Exp","","6+",Bl],["Flatten","","1+",bf,gf],["Floor","","6+",Nl],["FusedConv","com.microsoft","1+",$i,Ci],["Gather","","1+",Tf,xf],["Gemm","","7-10",ki,_f],["Gemm","","11+",ki,Of],["GlobalAveragePool","","1+",Hf,qf],["GlobalMaxPool","","1+",Jf],["Greater","","7+",ul],["Identity","","1+",Si],["ImageScaler","","1+",Sf,Af],["InstanceNormalization","","6+",Df,Lf],["LeakyRelu","","6+",Rl,Ml],["Less","","7+",ll],["LRN","","1+",$f,Cf],["Log","","6+",Gl],["MatMul","","1+",Ql,ef],["MaxPool","","1+",jf,Yf],["Mul","","7+",fl],["Neg","","6+",Ul],["Not","","1+",zl],["Or","","7+",cl],["Pad","","2-10",Bi,Nf],["Pad","","11+",Rf,Mf],["Pow","","7+",pl],["PRelu","","7+",dl],["ReduceLogSum","","1+",ic,Zt],["ReduceMax","","1+",rc,Zt],["ReduceMean","","1+",tc,Zt],["ReduceMin","","1+",nc,Zt],["ReduceProd","","1+",oc,Zt],["ReduceSum","","1-12",ec,Zt],["ReduceSumSquare","","1+",ac,Zt],["Relu","","6+",Vl],["Reshape","","5+",uc],["Resize","","10",Ui,dc],["Resize","","11+",Ui,hc],["Shape","","1+",bc],["Sigmoid","","6+",Wl],["Sin","","7+",Hl],["Slice","","10+",vc],["Slice","","1-9",yc,Tc],["Softmax","","1-12",Sc,Ac],["Softmax","","13+",Ec,Pc],["Split","","2-12",Cc,kc],["Sqrt","","6+",ql],["Squeeze","","1-12",Vi,Rc],["Squeeze","","13+",Nc],["Sub","","7+",hl],["Sum","","6+",Gc],["Tan","","7+",jl],["Tanh","","6+",Yl],["Tile","","6+",zc],["Transpose","","1+",yr,cf],["Upsample","","7-8",Ni,cc],["Upsample","","9",Ni,pc],["Unsqueeze","","1-12",Wi,Hc],["Unsqueeze","","13+",Wc],["Xor","","7+",ml]]});function Kc(t){let e={},n;for(;(n=Xc.exec(t))!==null;){let r=n[3].split(",").map(s=>{let i=s.trim().split(" ");return i&&i.length===2?{type:i[0],name:i[1]}:null}).filter(s=>s!==null);e[n[2]]={params:r,body:n[4]}}for(let r in e){let s=Ub.replace("__FUNC__",r),i=new RegExp(s,"gm");for(;(n=i.exec(t))!==null;){let a=n[1],u=n[2],d=n[3].split(","),o=a?`${a} ${u};`:"",l=e[r].body,c="";e[r].params.forEach((f,p)=>{f&&(c+=`${f.type} ${f.name} = ${d[p]}; +`)}),l=`${c} + ${l}`,l=l.replace("return",`${u} = `);let h=` + ${o} + { + ${l} + } + `;t=t.replace(n[0],h)}}return t=t.replace(Xc,""),t}var Xc,Ub,Jc=L(()=>{Xc=/@inline[\s\n\r]+(\w+)[\s\n\r]+([0-9a-zA-Z_]+)\s*\(([^)]*)\)\s*{(([^}]|[\n\r])*)}/gm,Ub="(\\w+)?\\s+([_0-9a-zA-Z]+)\\s+=\\s+__FUNC__\\((.*)\\)\\s*;"});function Gr(t,e){let n=[],r=[],s=e!=null&&Array.isArray(e)&&e.length===0,i=e==null||s?null:zb(e,t).sort(),a=0;for(let u=0;uu)&&t[u]===1&&(n.push(t[u]),r.push(u)),i[a]<=u&&a++}t[u]!==1&&(n.push(t[u]),r.push(u))}return{newShape:n,keptDims:r}}function zb(t,e){let n=e.length;return t=t==null?e.map((r,s)=>s):[].concat(t),Cr(t.every(r=>r>=-n&&r`All values in axis param must be in range [-${n}, ${n}) but got axis ${t}`),Cr(t.every(Vb),()=>`All values in axis param must be integers but got axis ${t}`),t.map(r=>r<0?n+r:r)}function Vb(t){return t%1===0}function Wb(t){if(t.length===0)return 1;let e=t[0];for(let n=1;n{ut(),fe(),fo=class{constructor(t){this.maxTextureSize=t}computeTextureWH(t,e){let n=this.computeTexture(t,e);return e&&e.isPacked&&(n[0]/=2,n[1]/=2),e&&e.reverseWH?[n[1],n[0]]:n}computeTexture(t,e){let n=e&&e.isPacked;if(t.length===0)return n?[2,2]:[1,1];let r=this.maxTextureSize;if(e&&e.breakAxis!==void 0){let a=e.breakAxis>=t.length?1:t.slice(e.breakAxis).reduce((d,o)=>d*o),u=e.breakAxis<=0?1:t.slice(0,e.breakAxis).reduce((d,o)=>d*o);if(a>r||u>r)ce.verbose("TextureLayout",`Given width/height preferences were unattainable: shape:${t}, breakAxis:${e.breakAxis}`);else return[a,u]}let s=t.slice(0);n&&(r=r*2,s=s.map((a,u)=>u>=s.length-2?s[u]%2===0?s[u]:s[u]+1:s[u]),s.length===1&&(s=[2,s[0]])),s.length!==2&&(s=Gr(s).newShape);let i=Wb(s);return s.length<=1&&i<=r?[1,i]:s.length===2&&s[0]<=r&&s[1]<=r?s:s.length===3&&s[0]*s[1]<=r&&s[2]<=r?[s[0]*s[1],s[2]]:s.length===3&&s[0]<=r&&s[1]*s[2]<=r?[s[0],s[1]*s[2]]:s.length===4&&s[0]*s[1]*s[2]<=r&&s[3]<=r?[s[0]*s[1]*s[2],s[3]]:s.length===4&&s[0]<=r&&s[1]*s[2]*s[3]<=r?[s[0],s[1]*s[2]*s[3]]:n?Zc(i/4).map(a=>a*2):Zc(i)}}}),co,Qc=L(()=>{fe(),Vt(),xe(),Hi(),Ft(),co=class extends pt{constructor(t){super(t)}getFunctions(){return{...this.offsetToCoords(),...this.coordsToOffset(),...this.toVec(),...this.valueFrom(),...this.getCommonUtilFuncs(),...this.getInputsSamplingSnippets(),...this.getOutputSamplingSnippet()}}getCustomTypes(){return{}}offsetToCoords(){let t="offsetToCoords";return{offsetToCoords:new R(` + vec2 ${t}(int offset, int width, int height) { + int t = offset / width; + int s = offset - t*width; + vec2 coords = (vec2(s,t) + vec2(0.5,0.5)) / vec2(width, height); + return coords; + } + `)}}coordsToOffset(){let t="coordsToOffset";return{coordsToOffset:new R(` + int ${t}(vec2 coords, int width, int height) { + float s = coords.s * float(width); + float t = coords.t * float(height); + int offset = int(t) * width + int(s); + return offset; + } + `)}}getOutputSamplingSnippet(){let t=this.context.outputTextureLayout;return t.isPacked?this.getPackedOutputSamplingSnippet(t):this.getUnpackedOutputSamplingSnippet(t)}getPackedOutputSamplingSnippet(t){let e=t.unpackedShape,n=[t.width,t.height],r={},s="getOutputCoords";switch(e.length){case 0:r[s]=this.getOutputScalarCoords();break;case 1:r[s]=this.getOutputPacked1DCoords(e,n);break;case 2:r[s]=this.getOutputPacked2DCoords(e,n);break;case 3:r[s]=this.getOutputPacked3DCoords(e,n);break;default:r[s]=this.getOutputPackedNDCoords(e,n)}let i=` + void setOutput(vec4 val) { + ${q(this.context.glContext.version).output} = val; + } + `,a="floatTextureSetRGBA";return r[a]=new R(i),r}getUnpackedOutputSamplingSnippet(t){let e=t.unpackedShape,n=[t.width,t.height],r={},s="getOutputCoords";switch(e.length){case 0:r[s]=this.getOutputScalarCoords();break;case 1:r[s]=this.getOutputUnpacked1DCoords(e,n);break;case 2:r[s]=this.getOutputUnpacked2DCoords(e,n);break;case 3:r[s]=this.getOutputUnpacked3DCoords(e,n);break;case 4:r[s]=this.getOutputUnpacked4DCoords(e,n);break;case 5:r[s]=this.getOutputUnpacked5DCoords(e,n);break;case 6:r[s]=this.getOutputUnpacked6DCoords(e,n);break;default:throw new Error(`Unsupported output dimensionality: ${e.length}`)}let i=` + void setOutput(float val) { + ${q(this.context.glContext.version).output} = vec4(val, 0, 0, 0); + } + `,a="floatTextureSetR";return r[a]=new R(i),r}getOutputScalarCoords(){return new R(` + int getOutputCoords() { + return 0; + } + `)}getOutputPacked1DCoords(t,e){let n=e,r="";return n[0]===1?(r=` + int getOutputCoords() { + return 2 * int(TexCoords.y * ${n[1]}.0); + } + `,new R(r)):n[1]===1?(r=` + int getOutputCoords() { + return 2 * int(TexCoords.x * ${n[0]}.0); + } + `,new R(r)):(r=` + int getOutputCoords() { + ivec2 resTexRC = ivec2(TexCoords.xy * + vec2(${n[0]}, ${n[1]})); + return 2 * (resTexRC.y * ${n[0]} + resTexRC.x); + } + `,new R(r))}getOutputPacked2DCoords(t,e){let n="";if(cr.arraysEqual(t,e))return n=` + ivec2 getOutputCoords() { + return 2 * ivec2(TexCoords.xy * vec2(${e[0]}, ${e[1]})); + } + `,new R(n);let r=e,s=Math.ceil(t[1]/2);return n=` + ivec2 getOutputCoords() { + ivec2 resTexRC = ivec2(TexCoords.xy * + vec2(${r[0]}, ${r[1]})); + + int index = resTexRC.y * ${r[0]} + resTexRC.x; + + // reverse r and c order for packed texture + int r = imod(index, ${s}) * 2; + int c = 2 * (index / ${s}); + + return ivec2(r, c); + } + `,new R(n)}getOutputPacked3DCoords(t,e){let n=[e[0],e[1]],r=Math.ceil(t[2]/2),s=r*Math.ceil(t[1]/2),i=` + ivec3 getOutputCoords() { + ivec2 resTexRC = ivec2(TexCoords.xy * + vec2(${n[0]}, ${n[1]})); + int index = resTexRC.y * ${n[0]} + resTexRC.x; + + int b = index / ${s}; + index -= b * ${s}; + + // reverse r and c order for packed texture + int r = imod(index, ${r}) * 2; + int c = 2 * (index / ${r}); + + return ivec3(b, r, c); + } + `;return new R(i)}getOutputPackedNDCoords(t,e){let n=[e[0],e[1]],r=Math.ceil(t[t.length-1]/2),s=r*Math.ceil(t[t.length-2]/2),i=s,a="",u="b, r, c";for(let o=2;o=0;--u)s[u]=s[u+1]*t[u+1];let i=["r","c","d"],a=s.map((u,d)=>{let o=`int ${i[d]} = index / ${u}`,l=d===s.length-1?`int ${i[d+1]} = index - ${i[d]} * ${u}`:`index -= ${i[d]} * ${u}`;return`${o}; ${l};`}).join("");return n=` + ivec3 getOutputCoords() { + ivec2 resTexRC = ivec2(TexCoords.xy * + vec2(${e[0]}, ${e[1]})); + int index = resTexRC.y * ${e[0]} + resTexRC.x; + ${a} + return ivec3(r, c, d); + } + `,new R(n)}getOutputUnpacked4DCoords(t,e){let n="",r=t.length,s=null;r<2&&(s=[]),s=new Array(r-1),s[r-2]=t[r-1];for(let u=r-3;u>=0;--u)s[u]=s[u+1]*t[u+1];let i=["r","c","d","d2"],a=s.map((u,d)=>{let o=`int ${i[d]} = index / ${u}`,l=d===s.length-1?`int ${i[d+1]} = index - ${i[d]} * ${u}`:`index -= ${i[d]} * ${u}`;return`${o}; ${l};`}).join("");return n=` + ivec4 getOutputCoords() { + ivec2 resTexRC = ivec2(TexCoords.xy * + vec2(${e[0]}, ${e[1]})); + int index = resTexRC.y * ${e[0]} + resTexRC.x; + ${a} + return ivec4(r, c, d, d2); + } + `,new R(n)}getOutputUnpacked5DCoords(t,e){let n="",r=t.length,s=null;r<2&&(s=[]),s=new Array(r-1),s[r-2]=t[r-1];for(let u=r-3;u>=0;--u)s[u]=s[u+1]*t[u+1];let i=["r","c","d","d2","d3"],a=s.map((u,d)=>{let o=`int ${i[d]} = index / ${u}`,l=d===s.length-1?`int ${i[d+1]} = index - ${i[d]} * ${u}`:`index -= ${i[d]} * ${u}`;return`${o}; ${l};`}).join("");return n=` + ivec5 getOutputCoords() { + ivec2 resTexRC = ivec2(TexCoords.xy * + vec2(${e[0]}, ${e[1]})); + int index = resTexRC.y * ${e[0]} + resTexRC.x; + ${a} + return ivec5(r, c, d, d2, d3); + } + `,new R(n)}getOutputUnpacked6DCoords(t,e){let n="",r=t.length,s=null;r<2&&(s=[]),s=new Array(r-1),s[r-2]=t[r-1];for(let u=r-3;u>=0;--u)s[u]=s[u+1]*t[u+1];let i=["r","c","d","d2","d3","d4"],a=s.map((u,d)=>{let o=`int ${i[d]} = index / ${u}`,l=d===s.length-1?`int ${i[d+1]} = index - ${i[d]} * ${u}`:`index -= ${i[d]} * ${u}`;return`${o}; ${l};`}).join("");return n=` + ivec6 getOutputCoords() { + ivec2 resTexRC = ivec2(TexCoords.xy * + vec2(${e[0]}, ${e[1]})); + int index = resTexRC.y * ${e[0]} + resTexRC.x; + ${a} + return ivec6(r, c, d, d2, d3, d4); + } + `,new R(n)}getCommonUtilFuncs(){let t={},e="uvFromFlat";t[e]=new R(` + vec2 uvFromFlat(int texNumR, int texNumC, int index) { + int texC = index / texNumR; + int texR = index - texC * texNumR; + // TODO: swap texR, texC order in following function so row is corresponding to u and column is corresponding to + // v. + return (vec2(texR, texC) + halfCR) / vec2(texNumR, texNumC); + } + `),e="packedUVfrom1D",t[e]=new R(` + vec2 packedUVfrom1D(int texNumR, int texNumC, int index) { + int texelIndex = index / 2; + int texR = texelIndex / texNumC; + int texC = texelIndex - texR * texNumC; + return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR); + } + `),e="packedUVfrom2D",t[e]=new R(` + vec2 packedUVfrom2D(int texNumR, int texNumC, int texelsInLogicalRow, int row, int col) { + int texelIndex = (row / 2) * texelsInLogicalRow + (col / 2); + int texR = texelIndex / texNumC; + int texC = texelIndex - texR * texNumC; + return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR); + } + `),e="packedUVfrom3D",t[e]=new R(` + vec2 packedUVfrom3D(int texNumR, int texNumC, + int texelsInBatch, int texelsInLogicalRow, int b, + int row, int col) { + int index = b * texelsInBatch + (row / 2) * texelsInLogicalRow + (col / 2); + int texR = index / texNumC; + int texC = index - texR * texNumC; + return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR); + } + `),e="sampleTexture";let n=q(this.context.glContext.version);return t[e]=new R(` + float sampleTexture(sampler2D textureSampler, vec2 uv) { + return ${n.texture2D}(textureSampler, uv).r; + }`),t}getInputsSamplingSnippets(){let t={},e=this.context.outputTextureLayout;return this.context.programInfo.inputNames.forEach((n,r)=>{let s=this.context.inputTextureLayouts[r],i=Kn(n);s.isPacked?t[i]=this.getPackedSamplerFromInput(i,n,s):t[i]=this.getUnpackedSamplerFromInput(i,n,s);let a=Mu(n);s.unpackedShape.length<=e.unpackedShape.length&&(s.isPacked?t[a]=this.getPackedSamplerAtOutputCoords(a,s,e,n):t[a]=this.getUnpackedSamplerAtOutputCoords(a,s,e,n))}),t}getPackedSamplerAtOutputCoords(t,e,n,r){let s=e.unpackedShape,i=n.unpackedShape,a=Kn(r),u=s.length,d=i.length,o=Xe.getBroadcastDims(s,i),l=Ke(d),c=d-u,h,f=St();u===0?h="":d<2&&o.length>=1?h="coords = 0;":h=o.map(S=>`coords.${f[S+c]} = 0;`).join(` +`);let p="";d<2&&u>0?p="coords":p=s.map((S,E)=>`coords.${f[E+c]}`).join(", ");let g="return outputValue;",b=U.size(s)===1,w=U.size(i)===1;if(u===1&&!b&&!w)g=` + return vec4(outputValue.xy, outputValue.xy); + `;else if(b&&!w)d===1?g=` + return vec4(outputValue.x, outputValue.x, 0., 0.); + `:g=` + return vec4(outputValue.x); + `;else if(o.length){let S=u-2,E=u-1;o.indexOf(S)>-1&&o.indexOf(E)>-1?g="return vec4(outputValue.x);":o.indexOf(S)>-1?g="return vec4(outputValue.x, outputValue.y, outputValue.x, outputValue.y);":o.indexOf(E)>-1&&(g="return vec4(outputValue.xx, outputValue.zz);")}let y=` + int lastDim = coords.${f[d-1]}; + coords.${f[d-1]} = coords.${f[d-2]}; + coords.${f[d-2]} = lastDim; + `,T=` + vec4 ${t}() { + ${l} coords = getOutputCoords(); + ${y} + ${h} + vec4 outputValue = ${a}(${p}); + ${g} + } + `;return new R(T,["coordinates.getOutputCoords"])}getUnpackedSamplerAtOutputCoords(t,e,n,r){let s=[n.width,n.height],i=[e.width,e.height],a=e.unpackedShape.length,u=n.unpackedShape.length,d=e.unpackedShape,o=n.unpackedShape,l=Kn(r);if(a===u&&cr.arraysEqual(i,s)){let y=` + float ${t}() { + return sampleTexture(${r}, TexCoords); + } + `;return new R(y,["coordinates.sampleTexture"])}let c=Ke(u),h=Xe.getBroadcastDims(d,o),f=u-a,p,g=St();a===0?p="":u<2&&h.length>=1?p="coords = 0;":p=h.map(y=>`coords.${g[y+f]} = 0;`).join(` +`);let b="";u<2&&a>0?b="coords":b=e.unpackedShape.map((y,T)=>`coords.${g[T+f]}`).join(", ");let w=` + float ${t}() { + ${c} coords = getOutputCoords(); + ${p} + return ${l}(${b}); + } + `;return new R(w,["coordinates.getOutputCoords"])}getPackedSamplerFromInput(t,e,n){switch(n.unpackedShape.length){case 0:return this.getPackedSamplerScalar(t,e);case 1:return this.getPackedSampler1D(t,e,n);case 2:return this.getPackedSampler2D(t,e,n);case 3:return this.getPackedSampler3D(t,e,n);default:return this.getPackedSamplerND(t,e,n)}}getUnpackedSamplerFromInput(t,e,n){let r=n.unpackedShape;switch(r.length){case 0:return this.getUnpackedSamplerScalar(t,e,n);case 1:return this.getUnpackedSampler1D(t,e,n);case 2:return this.getUnpackedSampler2D(t,e,n);case 3:return this.getUnpackedSampler3D(t,e,n);case 4:return this.getUnpackedSampler4D(t,e,n);case 5:return this.getUnpackedSampler5D(t,e,n);case 6:return this.getUnpackedSampler6D(t,e,n);default:throw new Error(`Unsupported dimension ${r.length}-D`)}}getPackedSamplerScalar(t,e){let n=q(this.context.glContext.version),r=` + vec4 ${t}() { + return ${n.texture2D}(${e}, halfCR); + } + `;return new R(r)}getPackedSampler1D(t,e,n){let r=[n.width,n.height],s=[r[1],r[0]],i=q(this.context.glContext.version),a=`vec4 ${t}(int index) { + vec2 uv = packedUVfrom1D( + ${s[0]}, ${s[1]}, index); + return ${i.texture2D}(${e}, uv); + }`;return new R(a,["coordinates.packedUVfrom1D"])}getPackedSampler2D(t,e,n){let r=n.unpackedShape,s=[n.width,n.height],i=q(this.context.glContext.version),a=s[0],u=s[1];if(s!=null&&cr.arraysEqual(r,s)){let c=`vec4 ${t}(int row, int col) { + vec2 uv = (vec2(col, row) + halfCR) / vec2(${u}.0, ${a}.0); + return ${i.texture2D}(${e}, uv); + }`;return new R(c)}let d=s,o=Math.ceil(r[1]/2),l=`vec4 ${t}(int row, int col) { + vec2 uv = packedUVfrom2D(${d[1]}, ${d[0]}, ${o}, row, col); + return ${i.texture2D}(${e}, uv); + }`;return new R(l,["coordinates.packedUVfrom2D"])}getPackedSampler3D(t,e,n){let r=n.unpackedShape,s=[n.width,n.height],i=[s[0],s[1]],a=q(this.context.glContext.version);if(r[0]===1){let h=r.slice(1),f=[1,2],p=kr(r,h),g=["b","row","col"],b=JSON.parse(JSON.stringify(n));b.unpackedShape=p;let w=this.getPackedSamplerFromInput(t,e,b),y=`${w.routineBody} + vec4 ${t}(int b, int row, int col) { + return ${t}(${Br(g,f)}); + } `;return new R(y,w.dependencies)}let u=i[0],d=i[1],o=Math.ceil(r[2]/2),l=o*Math.ceil(r[1]/2),c=`vec4 ${t}(int b, int row, int col) { + vec2 uv = packedUVfrom3D( + ${d}, ${u}, ${l}, ${o}, b, row, col); + return ${a.texture2D}(${e}, uv);}`;return new R(c,["coordinates.packedUVfrom3D"])}getPackedSamplerND(t,e,n){let r=n.unpackedShape,s=r.length,i=[n.width,n.height],a=q(this.context.glContext.version),u=[i[0],i[1]],d=u[1],o=u[0],l=Math.ceil(r[s-1]/2),c=l*Math.ceil(r[s-2]/2),h="int b, int row, int col",f=`b * ${c} + (row / 2) * ${l} + (col / 2)`;for(let g=2;g{let r=this.context.inputTextureLayouts[n],s=(r.unpackedShape.length>0?r.unpackedShape:r.shape).length,i=`_${e}`;t[i]=new R(this.getValueFromSingle(e,s,r.width,r.height,!1),[`shapeUtils.indicesToOffset${i}`,"coordinates.offsetToCoords","fragcolor.getColorAsFloat"]),i=i+"_T",t[i]=new R(this.getValueFromSingle(e,s,r.width,r.height,!0),[`shapeUtils.indicesToOffset${i}`,"coordinates.offsetToCoords","fragcolor.getColorAsFloat"])}),t}getValueFromSingle(t,e,n,r,s){let i=`_${t}`;s&&(i=i+"_T");let a=q(this.context.glContext.version);return` + float ${i}(int m[${e}]) { + int offset = indicesToOffset${i}(m); + vec2 coords = offsetToCoords(offset, ${n}, ${r}); + float value = getColorAsFloat(${a.texture2D}(${t}, coords)); + return value; + } + `}getPackedValueFrom(t,e,n,r,s){let i=`_${t}_Pack`;s&&(i=i+"_T");let a=q(this.context.glContext.version);return` + vec4 ${i}(int m[${e}]) { + int offset = indicesToOffset_${t}(m); + vec2 coords = offsetToCoords(offset, ${n}, ${r}); + return ${a.texture2D}(${t}, coords); + } + `}}}),po,ep=L(()=>{Vt(),po=class Ar extends pt{constructor(e){super(e)}getFunctions(){return{...this.encodeFloat32(),...this.decodeFloat32()}}getCustomTypes(){return{}}encodeFloat32(){return{encode:new R(`highp vec4 encode(highp float f) { + return vec4(f, 0.0, 0.0, 0.0); + } + `)}}decodeFloat32(){return{decode:new R(`highp float decode(highp vec4 rgba) { + return rgba.r; + } + `)}}encodeUint8(){let e=Ar.isLittleEndian()?"rgba.rgba=rgba.abgr;":"";return{encode:new R(` + highp vec4 encode(highp float f) { + highp float F = abs(f); + highp float Sign = step(0.0,-f); + highp float Exponent = floor(log2(F)); + highp float Mantissa = (exp2(- Exponent) * F); + Exponent = floor(log2(F) + 127.0) + floor(log2(Mantissa)); + highp vec4 rgba; + rgba[0] = 128.0 * Sign + floor(Exponent*exp2(-1.0)); + rgba[1] = 128.0 * mod(Exponent,2.0) + mod(floor(Mantissa*128.0),128.0); + rgba[2] = floor(mod(floor(Mantissa*exp2(23.0 -8.0)),exp2(8.0))); + rgba[3] = floor(exp2(23.0)*mod(Mantissa,exp2(-15.0))); + ${e} + rgba = rgba / 255.0; // values need to be normalized to [0,1] + return rgba; + } + `)}}decodeUint8(){let e=Ar.isLittleEndian()?"rgba.rgba=rgba.abgr;":"";return{decode:new R(` + highp float decode(highp vec4 rgba) { + rgba = rgba * 255.0; // values need to be de-normalized from [0,1] to [0,255] + ${e} + highp float Sign = 1.0 - step(128.0,rgba[0])*2.0; + highp float Exponent = 2.0 * mod(rgba[0],128.0) + step(128.0,rgba[1]) - 127.0; + highp float Mantissa = mod(rgba[1],128.0)*65536.0 + rgba[2]*256.0 +rgba[3] + float(0x800000); + highp float Result = Sign * exp2(Exponent) * (Mantissa * exp2(-23.0 )); + return Result; + } + `)}}static isLittleEndian(){let e=new ArrayBuffer(4),n=new Uint32Array(e),r=new Uint8Array(e);if(n[0]=3735928559,r[0]===239)return!0;if(r[0]===222)return!1;throw new Error("unknown endianness")}}}),ho,tp=L(()=>{Vt(),xe(),ho=class extends pt{constructor(t){super(t)}getFunctions(){return{...this.setFragColor(),...this.getColorAsFloat()}}getCustomTypes(){return{}}setFragColor(){let t=q(this.context.glContext.version);return{setFragColor:new R(` + void setFragColor(float value) { + ${t.output} = encode(value); + } + `,["encoding.encode"])}}getColorAsFloat(){return{getColorAsFloat:new R(` + float getColorAsFloat(vec4 color) { + return decode(color); + } + `,["encoding.decode"])}}}}),mo,rp=L(()=>{Vt(),mo=class rn extends pt{constructor(e){super(e)}getFunctions(){return{...this.bcastIndex(),...this.bcastMatmulIndex(),...this.offsetToIndices(),...this.indicesToOffset(),...this.incrementIndices()}}getCustomTypes(){return{}}bcastIndex(){let e=this.context.outputTextureLayout.shape.length,n={};return this.context.programInfo.inputNames.forEach((r,s)=>{let i=this.context.inputTextureLayouts[s].unpackedShape;if(i.length<=e){let a=i.length,u=e-a,d=`bcastIndices_${r}`,o="";for(let c=0;c{let i=this.context.inputTextureLayouts[s].shape;if(!(i.length<2||i.length>e)){let a=i.length,u=e-a,d=`bcastMatmulIndices_${r}`,o="";for(let c=0;c{let s=this.context.inputTextureLayouts[r].shape,i=this.context.inputTextureLayouts[r].strides,a=s.length,u=`indicesToOffset_${n}`;e[u]=new R(rn.indexToOffsetSingle(u,a,i)),u=`indicesToOffset_${n}_T`,e[u]=new R(rn.indexToOffsetSingle(u,a,i.slice().reverse()))}),e}static indexToOffsetSingle(e,n,r){let s="";for(let i=n-1;i>=0;--i)s+=` + offset += indices[${i}] * ${r[i]}; + `;return` + int ${e}(int indices[${n}]) { + int offset = 0; + ${s} + return offset; + } + `}offsetToIndices(){let e={};return this.context.programInfo.inputNames.forEach((n,r)=>{let s=this.context.inputTextureLayouts[r].shape,i=this.context.inputTextureLayouts[r].strides,a=s.length,u=`offsetToIndices_${n}`;e[u]=new R(rn.offsetToIndicesSingle(u,a,i)),u=`offsetToIndices_${n}_T`,e[u]=new R(rn.offsetToIndicesSingle(u,a,i.slice().reverse()))}),e}static offsetToIndicesSingle(e,n,r){let s=[];for(let i=0;i{let s=this.context.inputTextureLayouts[r].shape,i=s.length,a=`incrementIndices_${n}`,u="";for(let o=0;o= 0; --i) { + if(i > axis) continue; + indices[i] += 1; + if(indices[i] < shape[i]) { + break; + } + indices[i] = 0; + } + } + `;e[a]=new R(d)}),e}}}),bo,np=L(()=>{Vt(),bo=class extends pt{constructor(t){super(t)}getCustomTypes(){return{}}getFunctions(){return{...this.binaryVecFunctions(),...this.copyVec(),...this.setVecItem(),...this.getVecItem()}}binaryVecFunctions(){let t=this.context.outputTextureLayout.shape.length,e={add:"+=",sub:"-=",mul:"*=",div:"/="},n={};for(let r in e){let s=`${r}Vec`,i="";for(let u=0;u{Qc(),ep(),tp(),rp(),np(),qi={encoding:po,fragcolor:ho,vec:bo,shapeUtils:mo,coordinates:co}}),go,ip=L(()=>{Vt(),Jc(),op(),xe(),go=class{constructor(t,e,n,r){this.libs={},this.glslLibRoutineDependencyGraph={},this.context=new eo(t,e,n,r),Object.keys(qi).forEach(i=>{let a=new qi[i](this.context);this.libs[i]=a});let s=this.glslLibRoutineDependencyGraph;for(let i in this.libs){let a=this.libs[i].getFunctions();for(let u in a){let d=i+"."+u,o;s[d]?(o=s[d],o.routineBody=a[u].routineBody):(o=new cn(d,a[u].routineBody),s[d]=o);let l=a[u].dependencies;if(l)for(let c=0;c{let r=n.split(".")[1];t.indexOf(r)!==-1&&e.push(this.glslLibRoutineDependencyGraph[n])}),to$1.returnOrderedNodes(e)}getUniforms(t,e){let n=[];if(t)for(let r of t)n.push(`uniform sampler2D ${r};`);if(e)for(let r of e)n.push(`uniform ${r.type} ${r.name}${r.arrayLength?`[${r.arrayLength}]`:""};`);return n.join(` +`)}}}),yo,ap=L(()=>{vt(),ut(),ip(),xe(),yo=class{constructor(t,e,n){this.profiler=t,this.glContext=e,this.textureLayoutStrategy=n,this.repo=new Map,this.attributesBound=!1}getArtifact(t){return this.repo.get(t)}setArtifact(t,e){this.repo.set(t,e)}run(t,e,n){this.profiler.event("op",`ProgramManager.run ${t.programInfo.name??"unknown kernel"}`,()=>{let r=this.glContext.gl,s=t.program;r.useProgram(s);try{this.bindOutput(n),this.attributesBound||this.bindAttributes(t.attribLocations),this.bindUniforms(t.uniformLocations,t.programInfo.variables??[],e)}catch(i){throw ce.error("ProgramManager",t.programInfo.shaderSource),i}this.profiler.event("backend","GlContext.draw()",()=>{this.glContext.draw()})},this.glContext)}dispose(){this.vertexShader&&this.glContext.deleteShader(this.vertexShader),this.repo.forEach(t=>this.glContext.deleteProgram(t.program))}build(t,e,n){return this.profiler.event("backend","ProgramManager.build",()=>{let r=new go(this.glContext,t,e,n),s=r.preprocess(),i=this.compile(s);return{programInfo:t,program:i,uniformLocations:this.getUniformLocations(i,r.context.programInfo.inputNames,r.context.programInfo.variables),attribLocations:this.getAttribLocations(i)}})}compile(t){if(!this.vertexShader){ce.verbose("ProrgramManager","Compiling and caching Vertex shader for the first time");let r=Bu(this.glContext.version);this.vertexShader=this.glContext.compileShader(r,this.glContext.gl.VERTEX_SHADER)}Z.debug&&ce.verbose("ProrgramManager",`FragShader: +${t} +`);let e=this.glContext.compileShader(t,this.glContext.gl.FRAGMENT_SHADER),n=this.glContext.createProgram(this.vertexShader,e);return this.glContext.deleteShader(e),n}bindOutput(t){let e=t.width,n=t.height;ce.verbose("ProrgramManager",`Binding output texture to Framebuffer: w/h=${e}/${n}, shape=${t.shape}, type=${t.tensor.type}`),this.glContext.attachFramebuffer(t.texture,e,n)}bindAttributes(t){let e=t.position,n=t.textureCoord;this.glContext.setVertexAttributes(e,n),this.attributesBound=!0}bindUniforms(t,e,n){let r=this.glContext.gl,s=0;for(let{name:i,type:a,location:u,arrayLength:d}of t){let o=e.find(l=>l.name===i)?.data;if(a!=="sampler2D"&&!o)throw new Error(`variable '${i}' does not have data defined in program info`);switch(a){case"sampler2D":this.bindTexture(n[s],u,s),s++;break;case"float":d?r.uniform1fv(u,o):r.uniform1f(u,o);break;case"int":d?r.uniform1iv(u,o):r.uniform1i(u,o);break;default:throw new Error(`Uniform not implemented: ${a}`)}}}bindTexture(t,e,n){this.glContext.bindTextureToUniform(t.texture,n,e)}getAttribLocations(t){return{position:this.getAttribLocation(t,"position"),textureCoord:this.getAttribLocation(t,"textureCoord")}}getUniformLocations(t,e,n){let r=[];if(e)for(let s of e)r.push({name:s,type:"sampler2D",location:this.getUniformLocation(t,s)});if(n)for(let s of n)r.push({...s,location:this.getUniformLocation(t,s.name)});return r}getUniformLocation(t,e){let n=this.glContext.gl.getUniformLocation(t,e);if(n===null)throw new Error(`Uniform ${e} not found.`);return n}getAttribLocation(t,e){return this.glContext.gl.getAttribLocation(t,e)}}}),To,sp=L(()=>{ut(),ln(),To=class{constructor(t,e,n,r){this.glContext=t,this.layoutStrategy=e,this.profiler=n,this.config=r,this.pendingRead=new Map,r.reuseTextures&&(this.inUseTextures=new Map,this.idleTextures=new Map,this.textureLookup=new Map)}createTextureFromLayout(t,e,n,r){let s=this.toEncoderType(t),i=this.glContext.getEncoder(s,e.channels||1,r);if(e.isPacked&&r===1)throw new Error("not implemented");let a=e.width,u=e.height,d,o;if(this.config.reuseTextures){d=`${a}x${u}_${i.format}_${i.internalFormat}_${i.textureType}`,o=this.inUseTextures.get(d),o||(o=[],this.inUseTextures.set(d,o));let c=this.idleTextures.get(d);if(c&&c.length>0){let h=c.pop();return o.push(h),r===1&&this.glContext.updateTexture(h,a,u,i,this.toTextureData(t,n)),h}}ce.verbose("TextureManager",`Creating new texture of size ${e.width}x${e.height}`);let l=this.glContext.allocateTexture(a,u,i,this.toTextureData(t,n));return this.config.reuseTextures&&(o.push(l),this.textureLookup.set(l,d)),l}readTexture(t,e,n){return n||(n=1),this.profiler.event("backend","TextureManager.readTexture",()=>{let r=t.shape.reduce((i,a)=>i*a)*n,s=this.glContext.readTexture(t.texture,t.width,t.height,r,this.toEncoderType(e),n);return this.toTensorData(e,s)})}async readTextureAsync(t,e,n){let r=t.tensor.dataId;if(n||(n=1),this.pendingRead.has(r)){let s=this.pendingRead.get(r);return new Promise(i=>s?.push(i))}return this.profiler.event("backend","TextureManager.readTextureAsync",async()=>{this.pendingRead.set(r,[]);let s=t.shape.reduce((d,o)=>d*o)*n;await this.glContext.createAndWaitForFence();let i=this.glContext.readTexture(t.texture,t.width,t.height,s,this.toEncoderType(e),n),a=this.toTensorData(e,i),u=this.pendingRead.get(r);return this.pendingRead.delete(r),u?.forEach(d=>d(a)),a})}readUint8TextureAsFloat(t){return this.profiler.event("backend","TextureManager.readUint8TextureAsFloat",()=>{let e=t.shape.reduce((r,s)=>r*s),n=this.glContext.readTexture(t.texture,t.width,t.height,e*4,"byte",4);return new Float32Array(n.buffer,n.byteOffset,e)})}releaseTexture(t,e){let n;if(this.config.reuseTextures&&(n=this.textureLookup.get(t.texture),n)){e&&this.textureLookup.delete(n);let r=this.inUseTextures.get(n);if(r){let s=r.indexOf(t.texture);if(s!==-1){r.splice(s,1);let i=this.idleTextures.get(n);i||(i=[],this.idleTextures.set(n,i)),i.push(t.texture)}}}(!n||e)&&(ce.verbose("TextureManager",`Deleting texture of size ${t.width}x${t.height}`),this.glContext.deleteTexture(t.texture))}toTensorData(t,e){switch(t){case"int16":return e instanceof Int16Array?e:Int16Array.from(e);case"int32":return e instanceof Int32Array?e:Int32Array.from(e);case"int8":return e instanceof Int8Array?e:Int8Array.from(e);case"uint16":return e instanceof Uint16Array?e:Uint16Array.from(e);case"uint32":return e instanceof Uint32Array?e:Uint32Array.from(e);case"uint8":case"bool":return e instanceof Uint8Array?e:Uint8Array.from(e);case"float32":return e instanceof Float32Array?e:Float32Array.from(e);case"float64":return e instanceof Float64Array?e:Float64Array.from(e);default:throw new Error(`TensorData type ${t} is not supported`)}}toTextureData(t,e){if(e)return e instanceof Float32Array?e:new Float32Array(e)}toEncoderType(t){return"float"}clearActiveTextures(){this.glContext.clearActiveTextures()}}}),xo,up=L(()=>{ut(),ws(),Qu(),Yc(),ap(),Hi(),sp(),xo=class{constructor(t,e){this.backend=t,this.context=e,this.layoutStrategy=new fo(t.glContext.maxTextureSize),this.programManager=new yo(this.context.profiler,t.glContext,this.layoutStrategy),this.textureManager=new To(t.glContext,this.layoutStrategy,this.context.profiler,{reuseTextures:t.textureCacheMode==="full"}),this.packedTextureDataCache=new Map,this.unpackedTextureDataCache=new Map,this.pack=t.pack,this.pack2unpackMap=new Map,this.unpack2packMap=new Map}createInferenceHandler(){return new Qn(this)}onGraphInitialized(t){let e=t.getValues().filter(n=>n.from===-1&&n.tensor).map(n=>n.tensor.dataId);this.initializers=new Set(e)}isInitializer(t){return this.initializers?this.initializers.has(t):!1}addInitializer(t){this.initializers.add(t)}getTextureData(t,e){return e?this.packedTextureDataCache.get(t):this.unpackedTextureDataCache.get(t)}setTextureData(t,e,n=!1){ce.verbose("WebGLSessionHandler","Storing Texture data in cache"),n?this.packedTextureDataCache.set(t,e):this.unpackedTextureDataCache.set(t,e)}dispose(){this.programManager.dispose(),this.textureManager.clearActiveTextures(),this.packedTextureDataCache.forEach(t=>this.textureManager.releaseTexture(t,!0)),this.packedTextureDataCache=new Map,this.unpackedTextureDataCache.forEach(t=>this.textureManager.releaseTexture(t,!0)),this.unpackedTextureDataCache=new Map}resolve(t,e,n){let r=vs(t,e,jc);return{impl:r.opImpl,context:r.opInit?r.opInit(t,n):t}}}});function Hb(t){let e=0;for(;e{vt(),ln(),ln(),Ft(),hn=class{constructor(t,e){this.frameBufferBound=!1,this.itemsToPoll=[],this.gl=t,this.version=e,this.getExtensions(),this.vertexbuffer=this.createVertexbuffer(),this.framebuffer=this.createFramebuffer(),this.queryVitalParameters()}allocateTexture(t,e,n,r){let s=this.gl,i=s.createTexture();s.bindTexture(s.TEXTURE_2D,i),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MIN_FILTER,s.NEAREST),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MAG_FILTER,s.NEAREST),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_S,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_T,s.CLAMP_TO_EDGE);let a=r?n.encode(r,t*e):null;return s.texImage2D(s.TEXTURE_2D,0,n.internalFormat,t,e,0,n.format,n.textureType,a),this.checkError(),i}updateTexture(t,e,n,r,s){let i=this.gl;i.bindTexture(i.TEXTURE_2D,t);let a=r.encode(s,e*n);i.texSubImage2D(i.TEXTURE_2D,0,0,0,e,n,r.format,r.textureType,a),this.checkError()}attachFramebuffer(t,e,n){let r=this.gl;r.bindTexture(r.TEXTURE_2D,t),r.bindFramebuffer(r.FRAMEBUFFER,this.framebuffer),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,t,0),this.checkError(),r.viewport(0,0,e,n),r.scissor(0,0,e,n)}readTexture(t,e,n,r,s,i){let a=this.gl;i||(i=1),this.frameBufferBound||this.attachFramebuffer(t,e,n);let u=this.getEncoder(s,i),d=u.allocate(e*n);return a.bindTexture(a.TEXTURE_2D,t),a.framebufferTexture2D(a.FRAMEBUFFER,a.COLOR_ATTACHMENT0,a.TEXTURE_2D,t,0),a.readPixels(0,0,e,n,a.RGBA,u.textureType,d),this.checkError(),u.decode(d,r)}isFramebufferReady(){return!0}getActiveTexture(){let t=this.gl;return`TEXTURE${t.getParameter(this.gl.ACTIVE_TEXTURE)-t.TEXTURE0}`}getTextureBinding(){return this.gl.getParameter(this.gl.TEXTURE_BINDING_2D)}getFramebufferBinding(){return this.gl.getParameter(this.gl.FRAMEBUFFER_BINDING)}setVertexAttributes(t,e){let n=this.gl;n.vertexAttribPointer(t,3,n.FLOAT,!1,20,0),n.enableVertexAttribArray(t),e!==-1&&(n.vertexAttribPointer(e,2,n.FLOAT,!1,20,12),n.enableVertexAttribArray(e)),this.checkError()}createProgram(t,e){let n=this.gl,r=n.createProgram();return n.attachShader(r,t),n.attachShader(r,e),n.linkProgram(r),r}compileShader(t,e){let n=this.gl,r=n.createShader(e);if(!r)throw new Error(`createShader() returned null with type ${e}`);if(n.shaderSource(r,t),n.compileShader(r),n.getShaderParameter(r,n.COMPILE_STATUS)===!1)throw new Error(`Failed to compile shader: ${n.getShaderInfoLog(r)} +Shader source: +${t}`);return r}deleteShader(t){this.gl.deleteShader(t)}bindTextureToUniform(t,e,n){let r=this.gl;r.activeTexture(r.TEXTURE0+e),this.checkError(),r.bindTexture(r.TEXTURE_2D,t),this.checkError(),r.uniform1i(n,e),this.checkError()}draw(){this.gl.drawArrays(this.gl.TRIANGLE_STRIP,0,4),this.checkError()}checkError(){if(Z.debug){let t=this.gl,e=t.getError(),n="";switch(e){case t.NO_ERROR:return;case t.INVALID_ENUM:n="INVALID_ENUM";break;case t.INVALID_VALUE:n="INVALID_VALUE";break;case t.INVALID_OPERATION:n="INVALID_OPERATION";break;case t.INVALID_FRAMEBUFFER_OPERATION:n="INVALID_FRAMEBUFFER_OPERATION";break;case t.OUT_OF_MEMORY:n="OUT_OF_MEMORY";break;case t.CONTEXT_LOST_WEBGL:n="CONTEXT_LOST_WEBGL";break;default:n=`Unknown WebGL Error: ${e.toString(16)}`}throw new Error(n)}}deleteTexture(t){this.gl.deleteTexture(t)}deleteProgram(t){this.gl.deleteProgram(t)}getEncoder(t,e,n=0){if(this.version===2)return new Jn(this.gl,e);switch(t){case"float":return n===1||this.isRenderFloat32Supported?new un(this.gl,e):new un(this.gl,e,this.textureHalfFloatExtension.HALF_FLOAT_OES);case"int":throw new Error("not implemented");case"byte":return new Zn(this.gl,e);default:throw new Error(`Invalid dataType: ${t}`)}}clearActiveTextures(){let t=this.gl;for(let e=0;ethis.isTimerResultAvailable(t)),this.getTimerResult(t)}async createAndWaitForFence(){let t=this.createFence(this.gl);return this.pollFence(t)}createFence(t){let e,n=t,r=n.fenceSync(n.SYNC_GPU_COMMANDS_COMPLETE,0);return t.flush(),r===null?e=()=>!0:e=()=>{let s=n.clientWaitSync(r,0,0);return s===n.ALREADY_SIGNALED||s===n.CONDITION_SATISFIED},{query:r,isFencePassed:e}}async pollFence(t){return new Promise(e=>{this.addItemToPoll(()=>t.isFencePassed(),()=>e())})}pollItems(){let t=Hb(this.itemsToPoll.map(e=>e.isDoneFn));for(let e=0;e<=t;++e){let{resolveFn:n}=this.itemsToPoll[e];n()}this.itemsToPoll=this.itemsToPoll.slice(t+1)}async addItemToPoll(t,e){this.itemsToPoll.push({isDoneFn:t,resolveFn:e}),!(this.itemsToPoll.length>1)&&await gi(()=>(this.pollItems(),this.itemsToPoll.length===0))}}});function ji(t){let e;if((!t||t==="webgl2")&&"webgl2"in Ur?e=Ur.webgl2:(!t||t==="webgl")&&"webgl"in Ur&&(e=Ur.webgl),!e)try{let r=jb();e=fp(r,t)}catch{let r=qb();e=fp(r,t)}t=t||e.version===1?"webgl":"webgl2";let n=e.gl;return Ur[t]=e,n.isContextLost()?(delete Ur[t],ji(t)):(n.disable(n.DEPTH_TEST),n.disable(n.STENCIL_TEST),n.disable(n.BLEND),n.disable(n.DITHER),n.disable(n.POLYGON_OFFSET_FILL),n.disable(n.SAMPLE_COVERAGE),n.enable(n.SCISSOR_TEST),n.enable(n.CULL_FACE),n.cullFace(n.BACK),e)}function fp(t,e){let n={alpha:!1,depth:!1,antialias:!1,stencil:!1,preserveDrawingBuffer:!1,premultipliedAlpha:!1,failIfMajorPerformanceCaveat:!1},r,s=n;if((!e||e==="webgl2")&&(r=t.getContext("webgl2",s),r))try{return new hn(r,2)}catch(i){ce.warning("GlContextFactory",`failed to create WebGLContext using contextId 'webgl2'. Error: ${i}`)}if((!e||e==="webgl")&&(r=t.getContext("webgl",s)||t.getContext("experimental-webgl",s),r))try{return new hn(r,1)}catch(i){ce.warning("GlContextFactory",`failed to create WebGLContext using contextId 'webgl' or 'experimental-webgl'. Error: ${i}`)}throw new Error("WebGL is not supported")}function qb(){if(typeof document>"u")throw new TypeError("failed to create canvas: document is not supported");let t=document.createElement("canvas");return t.width=1,t.height=1,t}function jb(){if(typeof OffscreenCanvas>"u")throw new TypeError("failed to create offscreen canvas: OffscreenCanvas is not supported");return new OffscreenCanvas(1,1)}var Ur,cp=L(()=>{ut(),lp(),Ur={}}),vo,pp=L(()=>{vt(),ut(),up(),cp(),vo=class{get contextId(){return Z.webgl.contextId}set contextId(t){Z.webgl.contextId=t}get matmulMaxBatchSize(){return Z.webgl.matmulMaxBatchSize}set matmulMaxBatchSize(t){Z.webgl.matmulMaxBatchSize=t}get textureCacheMode(){return Z.webgl.textureCacheMode}set textureCacheMode(t){Z.webgl.textureCacheMode=t}get pack(){return Z.webgl.pack}set pack(t){Z.webgl.pack=t}get async(){return Z.webgl.async}set async(t){Z.webgl.async=t}initialize(){try{return this.glContext=ji(this.contextId),typeof this.matmulMaxBatchSize!="number"&&(this.matmulMaxBatchSize=16),typeof this.textureCacheMode!="string"&&(this.textureCacheMode="full"),typeof this.pack!="boolean"&&(this.pack=!1),typeof this.async!="boolean"&&(this.async=!1),ce.setWithEnv(Z),Z.webgl.context||Object.defineProperty(Z.webgl,"context",{value:this.glContext.gl}),ce.verbose("WebGLBackend",`Created WebGLContext: ${typeof this.glContext} with matmulMaxBatchSize: ${this.matmulMaxBatchSize}; textureCacheMode: ${this.textureCacheMode}; pack: ${this.pack}; async: ${this.async}.`),!0}catch(t){return ce.warning("WebGLBackend",`Unable to initialize WebGLBackend. ${t}`),!1}}createSessionHandler(t){return new xo(this,t)}dispose(){this.glContext.dispose()}}});async function Yi(t){if(t){let e=typeof t=="string"?[t]:t;for(let n of e){let r=dp.get(n);if(r)return r;let s=await Xb(n);if(s)return s}}else return Yi(["webgl"]);throw new Error("no available backend to use")}async function Xb(t){let e=Yb;if(typeof e[t]<"u"&&Kb(e[t])){let n=e[t],r=n.initialize();if(typeof r=="object"&&"then"in r&&(r=await r),r)return dp.set(t,n),n}}function Kb(t){let e=t;return"initialize"in e&&typeof e.initialize=="function"&&"createSessionHandler"in e&&typeof e.createSessionHandler=="function"&&"dispose"in e&&typeof e.dispose=="function"}var dp,Yb,hp=L(()=>{pp(),dp=new Map,Yb={webgl:new vo}}),Xi,wo,mp=L(()=>{ut(),Xi=class{constructor(t,e){this.op=t,this.node=e}},wo=class{constructor(t,e,n){this.graph=t,this.profiler=n,this.initialize(e)}initialize(t){this.profiler.event("session","ExecutionPlan.initialize",()=>{let e=this.graph.getNodes();if(e.length!==t.length)throw new Error("The size of nodes and OPs do not match.");this._ops=t.map((n,r)=>new Xi(n,e[r])),this.reset(),this._starter=[],this._ops.forEach((n,r)=>{let s=!0;for(let i of n.node.inputs)if(!this._values[i]&&this.graph.getInputIndices().indexOf(i)===-1){s=!1;break}s&&this._starter.push(r)})})}reset(){this._values=this.graph.getValues().map(t=>t.tensor)}async execute(t,e){return this.profiler.event("session","ExecutionPlan.execute",async()=>{this.reset();let n=t.createInferenceHandler(),r=this.graph.getInputIndices();if(e.length!==r.length)throw new Error(`number of input tensors don't match the number of inputs to the model: actual: ${e.length} expected: ${r.length}`);e.forEach((o,l)=>{let c=r[l];this._values[c]=o});let s=this._starter.slice(0),i=this.graph.getValues(),a=this.graph.getNodes(),u=0;for(;uthis._values[g]);if(c.indexOf(void 0)!==-1)throw new Error(`unresolved input detected: op: ${l.node}`);let h=c;ce.verbose("ExecPlan",`Runing op:${l.node.name} (${h.map((g,b)=>`'${l.node.inputs[b]}': ${g.type}[${g.dims.join(",")}]`).join(", ")})`);let f=await this.profiler.event("node",l.node.name,async()=>l.op.impl(n,h,l.op.context));if(f.length!==l.node.outputs.length)throw new Error("the size of output does not match model definition.");f.forEach((g,b)=>{let w=l.node.outputs[b];if(this._values[w])throw new Error(`output [${w}] already has value: op:${l.node.name}`);this._values[w]=g});let p=new Set;f.forEach((g,b)=>{let w=l.node.outputs[b];for(let y of i[w].to){let T=a[y],S=!0;for(let E of T.inputs)if(!this._values[E]){S=!1;break}S&&p.add(y)}}),s.push(...p)}let d=[];for(let o=0;o{tn(),oe=Er($r()),mr(),fe(),mt=W.experimental.fbs,mn=class on{constructor(e){if(this._attributes=new Map,e!=null){for(let n of e)n instanceof oe.onnx.AttributeProto?this._attributes.set(n.name,[on.getValue(n),on.getType(n)]):n instanceof mt.Attribute&&this._attributes.set(n.name(),[on.getValue(n),on.getType(n)]);if(this._attributes.sizeFe.fromProto(s));if(e instanceof mt.Attribute)return r.map(s=>Fe.fromOrtTensor(s))}return n===oe.onnx.AttributeProto.AttributeType.STRING&&e instanceof oe.onnx.AttributeProto?sn(r):n===oe.onnx.AttributeProto.AttributeType.STRINGS&&e instanceof oe.onnx.AttributeProto?r.map(sn):r}static getValueNoCheck(e){return e instanceof oe.onnx.AttributeProto?this.getValueNoCheckFromOnnxFormat(e):this.getValueNoCheckFromOrtFormat(e)}static getValueNoCheckFromOnnxFormat(e){switch(e.type){case oe.onnx.AttributeProto.AttributeType.FLOAT:return e.f;case oe.onnx.AttributeProto.AttributeType.INT:return e.i;case oe.onnx.AttributeProto.AttributeType.STRING:return e.s;case oe.onnx.AttributeProto.AttributeType.TENSOR:return e.t;case oe.onnx.AttributeProto.AttributeType.GRAPH:return e.g;case oe.onnx.AttributeProto.AttributeType.FLOATS:return e.floats;case oe.onnx.AttributeProto.AttributeType.INTS:return e.ints;case oe.onnx.AttributeProto.AttributeType.STRINGS:return e.strings;case oe.onnx.AttributeProto.AttributeType.TENSORS:return e.tensors;case oe.onnx.AttributeProto.AttributeType.GRAPHS:return e.graphs;default:throw new Error(`unsupported attribute type: ${oe.onnx.AttributeProto.AttributeType[e.type]}`)}}static getValueNoCheckFromOrtFormat(e){switch(e.type()){case mt.AttributeType.FLOAT:return e.f();case mt.AttributeType.INT:return e.i();case mt.AttributeType.STRING:return e.s();case mt.AttributeType.TENSOR:return e.t();case mt.AttributeType.GRAPH:return e.g();case mt.AttributeType.FLOATS:return e.floatsArray();case mt.AttributeType.INTS:{let n=[];for(let r=0;r{bp(),tn(),Ji=Er($r()),mr(),fe(),_o=W.experimental.fbs,Zi={from:(t,e)=>new Ki(t,e)},kt=class{constructor(t){this._from=void 0,this._to=[],this.tensor=void 0,this.type=void 0,t&&(this.type=Ve.tensorValueTypeFromProto(t.type.tensorType))}get from(){return this._from}get to(){return this._to}},Oo=class{constructor(t,e){t instanceof Ji.onnx.NodeProto?(this.name=t.name,this.opType=t.opType,this.attributes=new mn(t.attribute)):t instanceof _o.Node&&(this.name=e??t.name(),this.opType=t.opType(),this.attributes=new mn(Ve.tensorAttributesFromORTFormat(t))),this.inputs=[],this.outputs=[],this.executeNode=!0}},Ki=class{constructor(t,e){if(!t)throw new TypeError("graph is empty");this.buildGraph(t),this.transformGraph(e),this.checkIsAcyclic()}getInputIndices(){return this._allInputIndices}getInputNames(){return this._allInputNames}getOutputIndices(){return this._allOutputIndices}getOutputNames(){return this._allOutputNames}getValues(){return this._allData}getNodes(){return this._nodes}buildGraph(t){if(t instanceof Ji.onnx.GraphProto)this.buildGraphFromOnnxFormat(t);else if(t instanceof _o.Graph)this.buildGraphFromOrtFormat(t);else throw new TypeError("Graph type is not supported.")}buildGraphFromOnnxFormat(t){let e=new Map;this._allData=[],this._allInputIndices=[],this._allInputNames=[],this._allOutputIndices=[],this._allOutputNames=[],this._nodes=[];let n=new Map;if(!t.input)throw new Error("missing information in graph: input");let r=[];for(let s of t.input){if(e.has(s.name))throw new Error(`duplicated input name: ${s.name}`);let i=this._allData.push(new kt(s))-1;e.set(s.name,i),r.push(s.name)}if(!t.initializer)throw new Error("missing information in graph: initializer");for(let s of t.initializer){let i=e.get(s.name);if(i===void 0){let a=new kt;a.type={shape:{dims:Ve.tensorDimsFromProto(s.dims)},tensorType:Ve.tensorDataTypeFromProto(s.dataType)},i=this._allData.push(a)-1,e.set(s.name,i)}this._allData[i]._from=-1,this._allData[i].tensor=Fe.fromProto(s)}for(let s=0;s"u"&&(d=this._allData.push(new kt)-1,e.set(u,d)),i.outputs.push(d),this._allData[d]._from!==void 0)throw new Error(`multiple nodes output to one data value: ${d}`);if(this._allData[d]._from=s,a.opType==="Constant"){if(!a.attribute||a.attribute.length!==1||!a.attribute[0].t)throw new Error("missing attributes or missing tensor value in attributes for this Constant operator");if(!a.output||a.output.length!==1)throw new Error("missing output or incorrect number of outputs for this Constant operator");i.outputs.pop(),i.executeNode=!1,this._allData[d]._from=-1,this._allData[d].tensor=Fe.fromProto(a.attribute[0].t)}}}for(let s=0;s"u"){if(u===""&&(a.input.length===3||a.input.length===4)&&a.opType==="Resize")continue;throw new Error(`unrecognized input '${u}' for node: ${a.name}`)}i.inputs.push(d),this._allData[d]._to.push(s)}}return!0}buildGraphFromOrtFormat(t){let e=new Map;this._allData=[],this._allInputIndices=[],this._allInputNames=[],this._allOutputIndices=[],this._allOutputNames=[],this._nodes=[];let n=new Map,r=[];for(let s=0;s"u"&&(o=this._allData.push(new kt)-1,e.set(d,o)),i.outputs.push(o),this._allData[o]._from!==void 0)throw new Error(`multiple nodes output to one data value: ${o}`);if(this._allData[o]._from=s,a.opType()==="Constant"){if(a.attributesLength()!==1||!a.attributes(0).t())throw new Error("missing attributes or missing tensor value in attributes for this Constant operator");if(a.outputsLength()!==1)throw new Error("missing output or incorrect number of outputs for this Constant operator");i.outputs.pop(),i.executeNode=!1,this._allData[o]._from=-1,this._allData[o].tensor=Fe.fromOrtTensor(a.attributes(0).t())}}}for(let s=0;s"u")throw new Error(`unrecognized input '${d}' for node: ${a.name()}`);i.inputs.push(o),this._allData[o]._to.push(s)}}}checkIsAcyclic(){let t=new Set;this._allInputIndices.forEach(r=>{this._allData[r]._to.forEach(s=>{t.add(s)})});let e=Array.from(t),n=new Array(this._nodes.length).fill("white");for(;e.length>0;){let r=e.pop();n[r]==="gray"?n[r]="black":(e.push(r),n[r]="gray",this._nodes[r].outputs.forEach(s=>{let i=this._allData[s];if(typeof i.tensor<"u")throw new Error("node outputs should not be initialized");if(i._from!==r)throw new Error("from property of the Value object doesn't match index of Node being processed");i._to.forEach(a=>{if(n[a]==="gray")throw new Error("model graph is cyclic");n[a]==="white"&&e.push(a)})}))}}transformGraph(t){this.removeAllIdentityNodes(),this.removeAllDropoutNodes(),this.fuseConvActivationNodes(),t&&t.transformGraph(this),this.finalizeGraph()}finalizeGraph(){let t=0,e=new Array(this._nodes.length,0),n=0;for(let r=0;r{this._allData[s]._from=-2});this._nodes.splice(n,this._nodes.length-n);for(let r=0;r=0)s._to[i]=e[s._to[i]];else throw new Error("Trying to update a removed node")}t=0;for(let r=0;r0){let s=-1;this._allData[r].from!==void 0&&this._allData[r].from!==-1?(s=this._nodes[this._allData[r].from].outputs.indexOf(r+t),s!==-1&&(this._nodes[this._allData[r].from].outputs[s]=r)):(s=this._allInputIndices.indexOf(r+t),s!==-1&&(this._allInputIndices[s]=r)),this._allData[r].to.forEach(i=>{s=this._nodes[i].inputs.indexOf(r+t),s!==-1&&(this._nodes[i].inputs[s]=r)}),this._allData[r].to.length===0&&(s=this._allOutputIndices.indexOf(r+t),s!==-1&&(this._allOutputIndices[s]=r))}}}deleteNode(t){let e=this._nodes[t];if(e.outputs.length>1){for(let a=1;a0)throw new Error("Node deletion with more than one output connected to other nodes is not supported. ")}e.executeNode=!1;let n=e.inputs[0],r=e.outputs[0],s=this._allData[r].to;for(let a=0;a0)for(let a of s){let u=this._nodes[a].inputs.indexOf(r);if(u===-1)throw new Error("The Node object doesn't have the output Value in it's 'inputs' property ");this._nodes[a].inputs[u]=n,this._allData[n].to.push(a)}}removeAllDropoutNodes(){let t=0;for(let e of this._nodes){if(e.opType==="Dropout"){if(e.inputs.length!==1)throw new Error("Dropout nodes should only contain one input. ");if(e.outputs.length!==1&&e.outputs.length!==2)throw new Error("Dropout nodes should contain either 1 or 2 output(s)");if(e.outputs.length===2&&this._allData[e.outputs[1]]._to.length!==0)throw new Error("Dropout nodes's second output should not be referenced by other nodes");this.deleteNode(t)}t++}}removeAllIdentityNodes(){let t=0;for(let e of this._nodes)e.opType==="Identity"&&this.deleteNode(t),t++}isActivation(t){switch(t.opType){case"Relu":case"Sigmoid":case"Clip":return!0;default:return!1}}fuseConvActivationNodes(){for(let t of this._nodes)if(t.opType==="Conv"){let e=this._allData[t.outputs[0]]._to;if(e.length===1&&this.isActivation(this._nodes[e[0]])){let n=this._nodes[e[0]];if(n.opType==="Clip")if(n.inputs.length===1)try{t.attributes.set("activation_params","floats",[n.attributes.getFloat("min"),n.attributes.getFloat("max")])}catch{t.attributes.set("activation_params","floats",[dr,hr])}else if(n.inputs.length>=3&&this._allData[n.inputs[1]].tensor!==void 0&&this._allData[n.inputs[2]].tensor!==void 0)t.attributes.set("activation_params","floats",[this._allData[n.inputs[1]].tensor.floatData[0],this._allData[n.inputs[2]].tensor.floatData[0]]);else continue;t.attributes.set("activation","string",n.opType),this.deleteNode(e[0])}}}}}),yp,Jb,Io,Tp=L(()=>{Wn(),gp(),tn(),yp=Er($r()),fe(),Jb=W.experimental.fbs,Io=class{constructor(){}load(t,e,n){if(!n)try{this.loadFromOnnxFormat(t,e);return}catch(r){if(n!==void 0)throw r}this.loadFromOrtFormat(t,e)}loadFromOnnxFormat(t,e){let n=yp.onnx.ModelProto.decode(t);if(nt.longToNumber(n.irVersion)<3)throw new Error("only support ONNX model with IR_VERSION>=3");this._opsets=n.opsetImport.map(r=>({domain:r.domain,version:nt.longToNumber(r.version)})),this._graph=Zi.from(n.graph,e)}loadFromOrtFormat(t,e){let n=new _.ByteBuffer(t),r=Jb.InferenceSession.getRootAsInferenceSession(n).model();if(nt.longToNumber(r.irVersion())<3)throw new Error("only support ONNX model with IR_VERSION>=3");this._opsets=[];for(let s=0;s{hp(),mp(),ut(),Tp(),So=class{constructor(t={}){this._initialized=!1,this.backendHint=t.backendHint,this.profiler=zn.create(t.profiler),this.context={profiler:this.profiler,graphInputTypes:[],graphInputDims:[]}}get inputNames(){return this._model.graph.getInputNames()}get outputNames(){return this._model.graph.getOutputNames()}startProfiling(){this.profiler.start()}endProfiling(){this.profiler.stop()}async loadModel(t,e,n){await this.profiler.event("session","Session.loadModel",async()=>{let r=await Yi(this.backendHint);if(this.sessionHandler=r.createSessionHandler(this.context),this._model=new Io,typeof t=="string"){let s=t.endsWith(".ort");if(typeof process<"u"&&process.versions&&process.versions.node){let i=await(void 0)(t);this.initialize(i,s)}else{let i=await(await fetch(t)).arrayBuffer();this.initialize(new Uint8Array(i),s)}}else if(ArrayBuffer.isView(t))this.initialize(t);else{let s=new Uint8Array(t,e||0,n||t.byteLength);this.initialize(s)}})}initialize(t,e){if(this._initialized)throw new Error("already initialized");this.profiler.event("session","Session.initialize",()=>{let n=this.sessionHandler.transformGraph?this.sessionHandler:void 0;this._model.load(t,n,e),this.sessionHandler.onGraphInitialized&&this.sessionHandler.onGraphInitialized(this._model.graph),this.initializeOps(this._model.graph),this._executionPlan=new wo(this._model.graph,this._ops,this.profiler)}),this._initialized=!0}async run(t){if(!this._initialized)throw new Error("session not initialized yet");return this.profiler.event("session","Session.run",async()=>{let e=this.normalizeAndValidateInputs(t),n=await this._executionPlan.execute(this.sessionHandler,e);return this.createOutput(n)})}normalizeAndValidateInputs(t){let e=this._model.graph.getInputNames();if(Array.isArray(t)){if(t.length!==e.length)throw new Error(`incorrect input array length: expected ${e.length} but got ${t.length}`)}else{if(t.size!==e.length)throw new Error(`incorrect input map size: expected ${e.length} but got ${t.size}`);let n=new Array(t.size),r=0;for(let s=0;s{vt(),mr(),Ao=class{constructor(t){this.session=t,this.inputNames=this.session.inputNames,this.outputNames=this.session.outputNames}async dispose(){}async run(t,e,n){let r=new Map;for(let a in t)if(Object.hasOwnProperty.call(t,a)){let u=t[a];r.set(a,new Fe(u.dims,u.type,void 0,void 0,u.data))}let s=await this.session.run(r),i={};return s.forEach((a,u)=>{i[u]=new Re(a.type,a.data,a.dims)}),i}startProfiling(){this.session.startProfiling()}endProfiling(){this.session.endProfiling()}}}),wp={};Pr(wp,{onnxjsBackend:()=>Qb});var Qi,Qb,_p=L(()=>{xp(),vp(),Qi=class{async init(){}async createInferenceSessionHandler(t,e){let n=new So(e);return typeof t=="string"?await n.loadModel(t):await n.loadModel(t),new Ao(n)}},Qb=new Qi}),ea={};Pr(ea,{createReadStream:()=>Op,readFile:()=>eg,readFileSync:()=>tg});var eg,tg,Op,ta=L(()=>{eg=void 0,tg=void 0,Op=void 0}),ra={};Pr(ra,{join:()=>rg});var rg,na=L(()=>{rg=void 0}),Ap=me((t,e)=>{var n=(()=>{var r=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(r=r||__filename),function(s={}){var i=s,a,u;i.ready=new Promise((v,P)=>{a=v,u=P});var d=Object.assign({},i),o="./this.program",l=typeof window=="object",c=typeof importScripts=="function",h=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",f="",p,g,b;if(h){var w=(ta(),rr(ea)),y=(na(),rr(ra));f=c?y.dirname(f)+"/":__dirname+"/",p=(v,P)=>(v=Te(v)?new URL(v):y.normalize(v),w.readFileSync(v,P?void 0:"utf8")),b=v=>(v=p(v,!0),v.buffer||(v=new Uint8Array(v)),v),g=(v,P,M,C=!0)=>{v=Te(v)?new URL(v):y.normalize(v),w.readFile(v,C?void 0:"utf8",(V,Q)=>{V?M(V):P(C?Q.buffer:Q)})},!i.thisProgram&&1"[Emscripten Module object]"}else(l||c)&&(c?f=self.location.href:typeof document<"u"&&document.currentScript&&(f=document.currentScript.src),r&&(f=r),f.indexOf("blob:")!==0?f=f.substr(0,f.replace(/[?#].*/,"").lastIndexOf("/")+1):f="",p=v=>{var P=new XMLHttpRequest;return P.open("GET",v,!1),P.send(null),P.responseText},c&&(b=v=>{var P=new XMLHttpRequest;return P.open("GET",v,!1),P.responseType="arraybuffer",P.send(null),new Uint8Array(P.response)}),g=(v,P,M)=>{var C=new XMLHttpRequest;C.open("GET",v,!0),C.responseType="arraybuffer",C.onload=()=>{C.status==200||C.status==0&&C.response?P(C.response):M()},C.onerror=M,C.send(null)});var T=console.log.bind(console),S=console.error.bind(console);Object.assign(i,d),d=null,typeof WebAssembly!="object"&&we("no native wasm support detected");var E,N=!1,B,F,k,G,re;function ie(){var v=E.buffer;i.HEAP8=B=new Int8Array(v),i.HEAP16=new Int16Array(v),i.HEAPU8=F=new Uint8Array(v),i.HEAPU16=new Uint16Array(v),i.HEAP32=k=new Int32Array(v),i.HEAPU32=G=new Uint32Array(v),i.HEAPF32=new Float32Array(v),i.HEAPF64=re=new Float64Array(v)}var ge=[],X=[],K=[],he=0,se=null;function we(v){throw v="Aborted("+v+")",S(v),N=!0,v=new WebAssembly.RuntimeError(v+". Build with -sASSERTIONS for more info."),u(v),v}var ue=v=>v.startsWith("data:application/octet-stream;base64,"),Te=v=>v.startsWith("file://"),Le;if(Le="ort-wasm.wasm",!ue(Le)){var ze=Le;Le=i.locateFile?i.locateFile(ze,f):f+ze}function qe(v){if(b)return b(v);throw"both async and sync fetching of the wasm failed"}function Ie(v){if(l||c){if(typeof fetch=="function"&&!Te(v))return fetch(v,{credentials:"same-origin"}).then(P=>{if(!P.ok)throw"failed to load wasm binary file at '"+v+"'";return P.arrayBuffer()}).catch(()=>qe(v));if(g)return new Promise((P,M)=>{g(v,C=>P(new Uint8Array(C)),M)})}return Promise.resolve().then(()=>qe(v))}function $e(v,P,M){return Ie(v).then(C=>WebAssembly.instantiate(C,P)).then(C=>C).then(M,C=>{S(`failed to asynchronously prepare wasm: ${C}`),we(C)})}function Ce(v,P){var M=Le;return typeof WebAssembly.instantiateStreaming!="function"||ue(M)||Te(M)||h||typeof fetch!="function"?$e(M,v,P):fetch(M,{credentials:"same-origin"}).then(C=>WebAssembly.instantiateStreaming(C,v).then(P,function(V){return S(`wasm streaming compile failed: ${V}`),S("falling back to ArrayBuffer instantiation"),$e(M,v,P)}))}var Ze,Be={919888:(v,P,M,C)=>{if(typeof i>"u"||!i.za)return 1;if(v=Tt(v>>>0),v.startsWith("./")&&(v=v.substring(2)),v=i.za.get(v),!v)return 2;if(P>>>=0,M>>>=0,P+M>v.byteLength)return 3;try{return F.set(v.subarray(P,P+M),C>>>0>>>0),0}catch{return 4}}};function Se(v){this.xa=v-24,this.Ha=function(P){G[this.xa+4>>>2>>>0]=P},this.Ga=function(P){G[this.xa+8>>>2>>>0]=P},this.Aa=function(P,M){this.Fa(),this.Ha(P),this.Ga(M)},this.Fa=function(){G[this.xa+16>>>2>>>0]=0}}var Je=0,at=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,ct=(v,P,M)=>{P>>>=0;var C=P+M;for(M=P;v[M]&&!(M>=C);)++M;if(16V?C+=String.fromCharCode(V):(V-=65536,C+=String.fromCharCode(55296|V>>10,56320|V&1023))}}else C+=String.fromCharCode(V)}return C},Tt=(v,P)=>(v>>>=0)?ct(F,v,P):"",gt=v=>{for(var P=0,M=0;M=C?P++:2047>=C?P+=2:55296<=C&&57343>=C?(P+=4,++M):P+=3}return P},ot=(v,P,M,C)=>{if(M>>>=0,!(0=de){var ke=v.charCodeAt(++Q);de=65536+((de&1023)<<10)|ke&1023}if(127>=de){if(M>=C)break;P[M++>>>0]=de}else{if(2047>=de){if(M+1>=C)break;P[M++>>>0]=192|de>>6}else{if(65535>=de){if(M+2>=C)break;P[M++>>>0]=224|de>>12}else{if(M+3>=C)break;P[M++>>>0]=240|de>>18,P[M++>>>0]=128|de>>12&63}P[M++>>>0]=128|de>>6&63}P[M++>>>0]=128|de&63}}return P[M>>>0]=0,M-V},st=v=>v%4===0&&(v%100!==0||v%400===0),_n=[0,31,60,91,121,152,182,213,244,274,305,335],Bt=[0,31,59,90,120,151,181,212,243,273,304,334],wn=v=>{var P=gt(v)+1,M=Lt(P);return M&&ot(v,F,M,P),M},et=[],Dt={},Ot=()=>{if(!Pt){var v={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",_:o||"./this.program"},P;for(P in Dt)Dt[P]===void 0?delete v[P]:v[P]=Dt[P];var M=[];for(P in v)M.push(`${P}=${v[P]}`);Pt=M}return Pt},Pt,xn=[null,[],[]],yt=[31,29,31,30,31,30,31,31,30,31,30,31],Wt=[31,28,31,30,31,30,31,31,30,31,30,31];function vn(v){var P=Array(gt(v)+1);return ot(v,P,0,P.length),P}function Mt(v,P,M,C){function V(I,pe,ve){for(I=typeof I=="number"?I.toString():I||"";I.lengthKt?-1:0rt-I.getDate())pe-=rt-I.getDate()+1,I.setDate(1),11>ve?I.setMonth(ve+1):(I.setMonth(0),I.setFullYear(I.getFullYear()+1));else{I.setDate(I.getDate()+pe);break}}return ve=new Date(I.getFullYear()+1,0,4),pe=ke(new Date(I.getFullYear(),0,4)),ve=ke(ve),0>=de(pe,I)?0>=de(ve,I)?I.getFullYear()+1:I.getFullYear():I.getFullYear()-1}v>>>=0,P>>>=0,M>>>=0,C>>>=0;var je=G[C+40>>>2>>>0];C={Da:k[C>>>2>>>0],Ca:k[C+4>>>2>>>0],va:k[C+8>>>2>>>0],ya:k[C+12>>>2>>>0],wa:k[C+16>>>2>>>0],ua:k[C+20>>>2>>>0],oa:k[C+24>>>2>>>0],ta:k[C+28>>>2>>>0],Ia:k[C+32>>>2>>>0],Ba:k[C+36>>>2>>>0],Ea:je?Tt(je):""},M=Tt(M),je={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var Ue in je)M=M.replace(new RegExp(Ue,"g"),je[Ue]);var qt="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),Yt="January February March April May June July August September October November December".split(" ");je={"%a":I=>qt[I.oa].substring(0,3),"%A":I=>qt[I.oa],"%b":I=>Yt[I.wa].substring(0,3),"%B":I=>Yt[I.wa],"%C":I=>Q((I.ua+1900)/100|0,2),"%d":I=>Q(I.ya,2),"%e":I=>V(I.ya,2," "),"%g":I=>He(I).toString().substring(2),"%G":I=>He(I),"%H":I=>Q(I.va,2),"%I":I=>(I=I.va,I==0?I=12:12{for(var pe=0,ve=0;ve<=I.wa-1;pe+=(st(I.ua+1900)?yt:Wt)[ve++]);return Q(I.ya+pe,3)},"%m":I=>Q(I.wa+1,2),"%M":I=>Q(I.Ca,2),"%n":()=>` +`,"%p":I=>0<=I.va&&12>I.va?"AM":"PM","%S":I=>Q(I.Da,2),"%t":()=>" ","%u":I=>I.oa||7,"%U":I=>Q(Math.floor((I.ta+7-I.oa)/7),2),"%V":I=>{var pe=Math.floor((I.ta+7-(I.oa+6)%7)/7);if(2>=(I.oa+371-I.ta-2)%7&&pe++,pe)pe==53&&(ve=(I.oa+371-I.ta)%7,ve==4||ve==3&&st(I.ua)||(pe=1));else{pe=52;var ve=(I.oa+7-I.ta-1)%7;(ve==4||ve==5&&st(I.ua%400-1))&&pe++}return Q(pe,2)},"%w":I=>I.oa,"%W":I=>Q(Math.floor((I.ta+7-(I.oa+6)%7)/7),2),"%y":I=>(I.ua+1900).toString().substring(2),"%Y":I=>I.ua+1900,"%z":I=>{I=I.Ba;var pe=0<=I;return I=Math.abs(I)/60,(pe?"+":"-")+("0000"+(I/60*100+I%60)).slice(-4)},"%Z":I=>I.Ea,"%%":()=>"%"},M=M.replace(/%%/g,"\0\0");for(Ue in je)M.includes(Ue)&&(M=M.replace(new RegExp(Ue,"g"),je[Ue](C)));return M=M.replace(/\0\0/g,"%"),Ue=vn(M),Ue.length>P?0:(B.set(Ue,v>>>0),Ue.length-1)}var qn={a:function(v,P,M){throw v>>>=0,new Se(v).Aa(P>>>0,M>>>0),Je=v,Je},e:function(){return 0},H:function(){},x:function(){},z:function(){},J:function(){return 0},F:function(){},A:function(){},E:function(){},g:function(){},y:function(){},v:function(){},G:function(){},w:function(){},k:()=>1,n:function(v,P,M){v=P+2097152>>>0<4194305-!!v?(v>>>0)+4294967296*P:NaN,M>>>=0,v=new Date(1e3*v),k[M>>>2>>>0]=v.getUTCSeconds(),k[M+4>>>2>>>0]=v.getUTCMinutes(),k[M+8>>>2>>>0]=v.getUTCHours(),k[M+12>>>2>>>0]=v.getUTCDate(),k[M+16>>>2>>>0]=v.getUTCMonth(),k[M+20>>>2>>>0]=v.getUTCFullYear()-1900,k[M+24>>>2>>>0]=v.getUTCDay(),k[M+28>>>2>>>0]=(v.getTime()-Date.UTC(v.getUTCFullYear(),0,1,0,0,0,0))/864e5|0},o:function(v,P,M){v=P+2097152>>>0<4194305-!!v?(v>>>0)+4294967296*P:NaN,M>>>=0,v=new Date(1e3*v),k[M>>>2>>>0]=v.getSeconds(),k[M+4>>>2>>>0]=v.getMinutes(),k[M+8>>>2>>>0]=v.getHours(),k[M+12>>>2>>>0]=v.getDate(),k[M+16>>>2>>>0]=v.getMonth(),k[M+20>>>2>>>0]=v.getFullYear()-1900,k[M+24>>>2>>>0]=v.getDay(),k[M+28>>>2>>>0]=(st(v.getFullYear())?_n:Bt)[v.getMonth()]+v.getDate()-1|0,k[M+36>>>2>>>0]=-(60*v.getTimezoneOffset()),P=new Date(v.getFullYear(),6,1).getTimezoneOffset();var C=new Date(v.getFullYear(),0,1).getTimezoneOffset();k[M+32>>>2>>>0]=(P!=C&&v.getTimezoneOffset()==Math.min(C,P))|0},p:function(v){v>>>=0;var P=new Date(k[v+20>>>2>>>0]+1900,k[v+16>>>2>>>0],k[v+12>>>2>>>0],k[v+8>>>2>>>0],k[v+4>>>2>>>0],k[v>>>2>>>0],0),M=k[v+32>>>2>>>0],C=P.getTimezoneOffset(),V=new Date(P.getFullYear(),6,1).getTimezoneOffset(),Q=new Date(P.getFullYear(),0,1).getTimezoneOffset(),de=Math.min(Q,V);return 0>M?k[v+32>>>2>>>0]=+(V!=Q&&de==C):0>>2>>>0]=P.getDay(),k[v+28>>>2>>>0]=(st(P.getFullYear())?_n:Bt)[P.getMonth()]+P.getDate()-1|0,k[v>>>2>>>0]=P.getSeconds(),k[v+4>>>2>>>0]=P.getMinutes(),k[v+8>>>2>>>0]=P.getHours(),k[v+12>>>2>>>0]=P.getDate(),k[v+16>>>2>>>0]=P.getMonth(),k[v+20>>>2>>>0]=P.getYear(),v=P.getTime(),isNaN(v)?(k[Ht()>>>2>>>0]=61,v=-1):v/=1e3,On((Ze=v,1<=+Math.abs(Ze)?0>>0:~~+Math.ceil((Ze-+(~~Ze>>>0))/4294967296)>>>0:0)),v>>>0},l:function(){return-52},m:function(){},t:function(v,P,M){function C(He){return(He=He.toTimeString().match(/\(([A-Za-z ]+)\)$/))?He[1]:"GMT"}M>>>=0;var V=new Date().getFullYear(),Q=new Date(V,0,1),de=new Date(V,6,1);V=Q.getTimezoneOffset();var ke=de.getTimezoneOffset();G[v>>>0>>>2>>>0]=60*Math.max(V,ke),k[P>>>0>>>2>>>0]=+(V!=ke),v=C(Q),P=C(de),v=wn(v),P=wn(P),ke>>2>>>0]=v,G[M+4>>>2>>>0]=P):(G[M>>>2>>>0]=P,G[M+4>>>2>>>0]=v)},d:()=>{we("")},B:function(v,P,M){v>>>=0,P>>>=0,M>>>=0,et.length=0;for(var C;C=F[P++>>>0];){var V=C!=105;V&=C!=112,M+=V&&M%8?4:0,et.push(C==112?G[M>>>2>>>0]:C==105?k[M>>>2>>>0]:re[M>>>3>>>0]),M+=V?8:4}return Be[v].apply(null,et)},h:()=>Date.now(),u:function(){return 4294901760},b:()=>performance.now(),I:function(v,P,M){return P>>>=0,F.copyWithin(v>>>0>>>0,P>>>0,P+(M>>>0)>>>0)},s:function(v){v>>>=0;var P=F.length;if(4294901760=M;M*=2){var C=P*(1+.2/M);C=Math.min(C,v+100663296);var V=Math;C=Math.max(v,C);e:{V=(V.min.call(V,4294901760,C+(65536-C%65536)%65536)-E.buffer.byteLength+65535)/65536;try{E.grow(V),ie();var Q=1;break e}catch{}Q=void 0}if(Q)return!0}return!1},C:function(v,P){v>>>=0,P>>>=0;var M=0;return Ot().forEach((C,V)=>{var Q=P+M;for(V=G[v+4*V>>>2>>>0]=Q,Q=0;Q>>0>>>0]=C.charCodeAt(Q);B[V>>>0>>>0]=0,M+=C.length+1}),0},D:function(v,P){v>>>=0,P>>>=0;var M=Ot();G[v>>>2>>>0]=M.length;var C=0;return M.forEach(V=>C+=V.length+1),G[P>>>2>>>0]=C,0},f:()=>52,j:function(){return 52},q:function(){return 70},i:function(v,P,M,C){P>>>=0,M>>>=0,C>>>=0;for(var V=0,Q=0;Q>>2>>>0],ke=G[P+4>>>2>>>0];P+=8;for(var He=0;He>>0],Ue=xn[v];je===0||je===10?((v===1?T:S)(ct(Ue,0)),Ue.length=0):Ue.push(je)}V+=ke}return G[C>>>2>>>0]=V,0},r:Mt,c:function(v,P,M,C){return Mt(v>>>0,P>>>0,M>>>0,C>>>0)}},H=function(){function v(M){return H=M.exports,H=Nt(),E=H.K,ie(),X.unshift(H.L),he--,he==0&&se&&(M=se,se=null,M()),H}var P={a:qn};if(he++,i.instantiateWasm)try{return i.instantiateWasm(P,v)}catch(M){S(`Module.instantiateWasm callback failed with error: ${M}`),u(M)}return Ce(P,function(M){v(M.instance)}).catch(u),{}}();i._OrtInit=(v,P)=>(i._OrtInit=H.M)(v,P),i._OrtGetLastError=(v,P)=>(i._OrtGetLastError=H.N)(v,P),i._OrtCreateSessionOptions=(v,P,M,C,V,Q,de,ke,He,je)=>(i._OrtCreateSessionOptions=H.O)(v,P,M,C,V,Q,de,ke,He,je),i._OrtAppendExecutionProvider=(v,P)=>(i._OrtAppendExecutionProvider=H.P)(v,P),i._OrtAddFreeDimensionOverride=(v,P,M)=>(i._OrtAddFreeDimensionOverride=H.Q)(v,P,M),i._OrtAddSessionConfigEntry=(v,P,M)=>(i._OrtAddSessionConfigEntry=H.R)(v,P,M),i._OrtReleaseSessionOptions=v=>(i._OrtReleaseSessionOptions=H.S)(v),i._OrtCreateSession=(v,P,M)=>(i._OrtCreateSession=H.T)(v,P,M),i._OrtReleaseSession=v=>(i._OrtReleaseSession=H.U)(v),i._OrtGetInputOutputCount=(v,P,M)=>(i._OrtGetInputOutputCount=H.V)(v,P,M),i._OrtGetInputName=(v,P)=>(i._OrtGetInputName=H.W)(v,P),i._OrtGetOutputName=(v,P)=>(i._OrtGetOutputName=H.X)(v,P),i._OrtFree=v=>(i._OrtFree=H.Y)(v),i._OrtCreateTensor=(v,P,M,C,V,Q)=>(i._OrtCreateTensor=H.Z)(v,P,M,C,V,Q),i._OrtGetTensorData=(v,P,M,C,V)=>(i._OrtGetTensorData=H._)(v,P,M,C,V),i._OrtReleaseTensor=v=>(i._OrtReleaseTensor=H.$)(v),i._OrtCreateRunOptions=(v,P,M,C)=>(i._OrtCreateRunOptions=H.aa)(v,P,M,C),i._OrtAddRunConfigEntry=(v,P,M)=>(i._OrtAddRunConfigEntry=H.ba)(v,P,M),i._OrtReleaseRunOptions=v=>(i._OrtReleaseRunOptions=H.ca)(v),i._OrtCreateBinding=v=>(i._OrtCreateBinding=H.da)(v),i._OrtBindInput=(v,P,M)=>(i._OrtBindInput=H.ea)(v,P,M),i._OrtBindOutput=(v,P,M,C)=>(i._OrtBindOutput=H.fa)(v,P,M,C),i._OrtClearBoundOutputs=v=>(i._OrtClearBoundOutputs=H.ga)(v),i._OrtReleaseBinding=v=>(i._OrtReleaseBinding=H.ha)(v),i._OrtRunWithBinding=(v,P,M,C,V)=>(i._OrtRunWithBinding=H.ia)(v,P,M,C,V),i._OrtRun=(v,P,M,C,V,Q,de,ke)=>(i._OrtRun=H.ja)(v,P,M,C,V,Q,de,ke),i._OrtEndProfiling=v=>(i._OrtEndProfiling=H.ka)(v);var Ht=()=>(Ht=H.la)(),Lt=i._malloc=v=>(Lt=i._malloc=H.ma)(v);i._free=v=>(i._free=H.na)(v);var On=v=>(On=H.pa)(v),Gt=()=>(Gt=H.qa)(),Sn=v=>(Sn=H.ra)(v),ne=v=>(ne=H.sa)(v);function Nt(){var v=H;v=Object.assign({},v);var P=C=>()=>C()>>>0,M=C=>V=>C(V)>>>0;return v.la=P(v.la),v.ma=M(v.ma),v.qa=P(v.qa),v.sa=M(v.sa),v}i.stackAlloc=ne,i.stackSave=Gt,i.stackRestore=Sn,i.UTF8ToString=Tt,i.stringToUTF8=(v,P,M)=>ot(v,F,P,M),i.lengthBytesUTF8=gt;var Et;se=function v(){Et||At(),Et||(se=v)};function At(){if(!(0n)}),Pp=me(()=>{}),Ep=me(()=>{}),Dp={};Pr(Dp,{cpus:()=>ng});var ng,Lp=L(()=>{ng=void 0}),Cp=me((t,e)=>{var n=(()=>{var r=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(r=r||__filename),function(s={}){function i(){return K.buffer!=ue.buffer&&Ie(),ue}function a(){return K.buffer!=ue.buffer&&Ie(),Te}function u(){return K.buffer!=ue.buffer&&Ie(),Le}function d(){return K.buffer!=ue.buffer&&Ie(),ze}function o(){return K.buffer!=ue.buffer&&Ie(),qe}var l=s,c,h;l.ready=new Promise((m,x)=>{c=m,h=x});var f=Object.assign({},l),p="./this.program",g=(m,x)=>{throw x},b=typeof window=="object",w=typeof importScripts=="function",y=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",T=l.ENVIRONMENT_IS_PTHREAD||!1,S="";function E(m){return l.locateFile?l.locateFile(m,S):S+m}var N,B,F;if(y){var k=(ta(),rr(ea)),G=(na(),rr(ra));S=w?G.dirname(S)+"/":__dirname+"/",N=(x,O)=>(x=gt(x)?new URL(x):G.normalize(x),k.readFileSync(x,O?void 0:"utf8")),F=x=>(x=N(x,!0),x.buffer||(x=new Uint8Array(x)),x),B=(x,O,A,j=!0)=>{x=gt(x)?new URL(x):G.normalize(x),k.readFile(x,j?void 0:"utf8",(z,Y)=>{z?A(z):O(j?Y.buffer:Y)})},!l.thisProgram&&1{throw process.exitCode=x,O},l.inspect=()=>"[Emscripten Module object]";let m;try{m=Pp()}catch(x){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),x}global.Worker=m.Worker}else(b||w)&&(w?S=self.location.href:typeof document<"u"&&document.currentScript&&(S=document.currentScript.src),typeof r<"u"&&r&&(S=r),S.indexOf("blob:")!==0?S=S.substr(0,S.replace(/[?#].*/,"").lastIndexOf("/")+1):S="",y||(N=m=>{var x=new XMLHttpRequest;return x.open("GET",m,!1),x.send(null),x.responseText},w&&(F=m=>{var x=new XMLHttpRequest;return x.open("GET",m,!1),x.responseType="arraybuffer",x.send(null),new Uint8Array(x.response)}),B=(m,x,O)=>{var A=new XMLHttpRequest;A.open("GET",m,!0),A.responseType="arraybuffer",A.onload=()=>{A.status==200||A.status==0&&A.response?x(A.response):O()},A.onerror=O,A.send(null)}));y&&typeof performance>"u"&&(global.performance=Ep().performance);var re=console.log.bind(console),ie=console.error.bind(console);y&&(re=(...m)=>k.writeSync(1,m.join(" ")+` +`),ie=(...m)=>k.writeSync(2,m.join(" ")+` +`));var ge=re,X=ie;Object.assign(l,f),f=null,typeof WebAssembly!="object"&&ct("no native wasm support detected");var K,he,se=!1,we,ue,Te,Le,ze,qe;function Ie(){var m=K.buffer;l.HEAP8=ue=new Int8Array(m),l.HEAP16=new Int16Array(m),l.HEAPU8=Te=new Uint8Array(m),l.HEAPU16=new Uint16Array(m),l.HEAP32=Le=new Int32Array(m),l.HEAPU32=ze=new Uint32Array(m),l.HEAPF32=new Float32Array(m),l.HEAPF64=qe=new Float64Array(m)}var $e=16777216;if(T)K=l.wasmMemory;else if(l.wasmMemory)K=l.wasmMemory;else if(K=new WebAssembly.Memory({initial:$e/65536,maximum:65536,shared:!0}),!(K.buffer instanceof SharedArrayBuffer))throw X("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),y&&X("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)"),Error("bad memory");Ie(),$e=K.buffer.byteLength;var Ce=[],Ze=[],Be=[],Se=0,Je=null;function at(){if(Se--,Se==0&&Je){var m=Je;Je=null,m()}}function ct(m){throw m="Aborted("+m+")",X(m),se=!0,we=1,m=new WebAssembly.RuntimeError(m+". Build with -sASSERTIONS for more info."),h(m),m}var Tt=m=>m.startsWith("data:application/octet-stream;base64,"),gt=m=>m.startsWith("file://"),ot;ot="ort-wasm-threaded.wasm",Tt(ot)||(ot=E(ot));function st(m){if(F)return F(m);throw"both async and sync fetching of the wasm failed"}function _n(m){if(b||w){if(typeof fetch=="function"&&!gt(m))return fetch(m,{credentials:"same-origin"}).then(x=>{if(!x.ok)throw"failed to load wasm binary file at '"+m+"'";return x.arrayBuffer()}).catch(()=>st(m));if(B)return new Promise((x,O)=>{B(m,A=>x(new Uint8Array(A)),O)})}return Promise.resolve().then(()=>st(m))}function Bt(m,x,O){return _n(m).then(A=>WebAssembly.instantiate(A,x)).then(A=>A).then(O,A=>{X(`failed to asynchronously prepare wasm: ${A}`),ct(A)})}function wn(m,x){var O=ot;return typeof WebAssembly.instantiateStreaming!="function"||Tt(O)||gt(O)||y||typeof fetch!="function"?Bt(O,m,x):fetch(O,{credentials:"same-origin"}).then(A=>WebAssembly.instantiateStreaming(A,m).then(x,function(j){return X(`wasm streaming compile failed: ${j}`),X("falling back to ArrayBuffer instantiation"),Bt(O,m,x)}))}var et,Dt={921276:(m,x,O,A)=>{if(typeof l>"u"||!l.cb)return 1;if(m=Mt(m>>>0),m.startsWith("./")&&(m=m.substring(2)),m=l.cb.get(m),!m)return 2;if(x>>>=0,O>>>=0,A>>>=0,x+O>m.byteLength)return 3;try{return a().set(m.subarray(x,x+O),A>>>0),0}catch{return 4}}};function Ot(m){this.name="ExitStatus",this.message=`Program terminated with exit(${m})`,this.status=m}var Pt=m=>{m.terminate(),m.onmessage=()=>{}},xn=m=>{ne.Pa.length==0&&(Gt(),ne.Ya(ne.Pa[0]));var x=ne.Pa.pop();if(!x)return 6;ne.Qa.push(x),ne.Ma[m.Oa]=x,x.Oa=m.Oa;var O={cmd:"run",start_routine:m.kb,arg:m.hb,pthread_ptr:m.Oa};return y&&x.unref(),x.postMessage(O,m.qb),0},yt=0,Wt=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,vn=(m,x,O)=>{x>>>=0;var A=x+O;for(O=x;m[O]&&!(O>=A);)++O;if(16j?A+=String.fromCharCode(j):(j-=65536,A+=String.fromCharCode(55296|j>>10,56320|j&1023))}}else A+=String.fromCharCode(j)}return A},Mt=(m,x)=>(m>>>=0)?vn(a(),m,x):"",qn=m=>{var x=vr();return m=m(),In(x),m};function H(m,x){var O=arguments.length-2,A=arguments;return qn(()=>{for(var j=Or(8*O),z=j>>>3,Y=0;Y>>0]=Me}return Mo(m,O,j,x)})}function Ht(m){if(T)return H(0,1,m);we=m,0{if(we=m,T)throw Et(m),"unwind";Ht(m)};function On(){for(var m=l.numThreads;m--;)Gt();Ce.unshift(()=>{Se++,Sn(()=>at())})}function Gt(){var m=E("ort-wasm-threaded.worker.js");m=new Worker(m),ne.Pa.push(m)}function Sn(m){T?m():Promise.all(ne.Pa.map(ne.Ya)).then(m)}var ne={Pa:[],Qa:[],bb:[],Ma:{},Wa(){T?(ne.receiveObjectTransfer=ne.jb,ne.threadInitTLS=ne.ab,ne.setExitStatus=ne.$a):On()},$a:m=>we=m,tb:["$terminateWorker"],lb:()=>{for(var m of ne.Qa)Pt(m);for(m of ne.Pa)Pt(m);ne.Pa=[],ne.Qa=[],ne.Ma=[]},Za:m=>{var x=m.Oa;delete ne.Ma[x],ne.Pa.push(m),ne.Qa.splice(ne.Qa.indexOf(m),1),m.Oa=0,_r(x)},jb(){},ab(){ne.bb.forEach(m=>m())},Ya:m=>new Promise(x=>{m.onmessage=z=>{z=z.data;var Y=z.cmd;if(z.targetThread&&z.targetThread!=An()){var Me=ne.Ma[z.targetThread];Me?Me.postMessage(z,z.transferList):X(`Internal error! Worker sent a message "${Y}" to target pthread ${z.targetThread}, but that thread no longer exists!`)}else Y==="checkMailbox"?Pn():Y==="spawnThread"?xn(z):Y==="cleanupThread"?ne.Za(ne.Ma[z.thread]):Y==="killThread"?(z=z.thread,Y=ne.Ma[z],delete ne.Ma[z],Pt(Y),_r(z),ne.Qa.splice(ne.Qa.indexOf(Y),1),Y.Oa=0):Y==="cancelThread"?ne.Ma[z.thread].postMessage({cmd:"cancel"}):Y==="loaded"?(m.loaded=!0,y&&!m.Oa&&m.unref(),x(m)):Y==="alert"?alert(`Thread ${z.threadId}: ${z.text}`):z.target==="setimmediate"?m.postMessage(z):Y==="callHandler"?l[z.handler](...z.args):Y&&X(`worker sent an unknown command ${Y}`)},m.onerror=z=>{throw X(`worker sent an error! ${z.filename}:${z.lineno}: ${z.message}`),z},y&&(m.on("message",z=>m.onmessage({data:z})),m.on("error",z=>m.onerror(z)));var O=[],A=["onExit"],j;for(j of A)l.hasOwnProperty(j)&&O.push(j);m.postMessage({cmd:"load",handlers:O,urlOrBlob:l.mainScriptUrlOrBlob||r,wasmMemory:K,wasmModule:he})})};l.PThread=ne;var Nt=m=>{for(;0{var m=An(),x=d()[m+52>>>2>>>0];m=d()[m+56>>>2>>>0],Bo(x,x-m),In(x)};function Et(m){if(T)return H(1,0,m);Lt(m)}var At=[],v;l.invokeEntryPoint=(m,x)=>{var O=At[m];O||(m>=At.length&&(At.length=m+1),At[m]=O=v.get(m)),m=O(x),0>>2>>>0]=x},this.fb=function(x){d()[this.Va+8>>>2>>>0]=x},this.Wa=function(x,O){this.eb(),this.gb(x),this.fb(O)},this.eb=function(){d()[this.Va+16>>>2>>>0]=0}}var M=0;function C(m,x,O,A){return T?H(2,1,m,x,O,A):V(m,x,O,A)}function V(m,x,O,A){if(m>>>=0,x>>>=0,O>>>=0,A>>>=0,typeof SharedArrayBuffer>"u")return X("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;var j=[];return T&&j.length===0?C(m,x,O,A):(m={kb:O,Oa:m,hb:A,qb:j},T?(m.sb="spawnThread",postMessage(m,j),0):xn(m))}function Q(m,x,O){return T?H(3,1,m,x,O):0}function de(m,x){if(T)return H(4,1,m,x)}var ke=m=>{for(var x=0,O=0;O=A?x++:2047>=A?x+=2:55296<=A&&57343>=A?(x+=4,++O):x+=3}return x},He=(m,x,O,A)=>{if(O>>>=0,!(0=Y){var Me=m.charCodeAt(++z);Y=65536+((Y&1023)<<10)|Me&1023}if(127>=Y){if(O>=A)break;x[O++>>>0]=Y}else{if(2047>=Y){if(O+1>=A)break;x[O++>>>0]=192|Y>>6}else{if(65535>=Y){if(O+2>=A)break;x[O++>>>0]=224|Y>>12}else{if(O+3>=A)break;x[O++>>>0]=240|Y>>18,x[O++>>>0]=128|Y>>12&63}x[O++>>>0]=128|Y>>6&63}x[O++>>>0]=128|Y&63}}return x[O>>>0]=0,O-j},je=(m,x,O)=>He(m,a(),x,O);function Ue(m,x){if(T)return H(5,1,m,x)}function qt(m,x,O){if(T)return H(6,1,m,x,O)}function Yt(m,x,O){return T?H(7,1,m,x,O):0}function I(m,x){if(T)return H(8,1,m,x)}function pe(m,x,O){if(T)return H(9,1,m,x,O)}function ve(m,x,O,A){if(T)return H(10,1,m,x,O,A)}function rt(m,x,O,A){if(T)return H(11,1,m,x,O,A)}function Kt(m,x,O,A){if(T)return H(12,1,m,x,O,A)}function Ir(m){if(T)return H(13,1,m)}function Fr(m,x){if(T)return H(14,1,m,x)}function jr(m,x,O){if(T)return H(15,1,m,x,O)}function Yn(m){m>>>=0,typeof Atomics.rb=="function"&&(Atomics.rb(u(),m>>>2,m).value.then(Pn),m+=128,Atomics.store(u(),m>>>2,1))}l.__emscripten_thread_mailbox_await=Yn;var Pn=()=>{var m=An();if(m&&(Yn(m),m=No,!se))try{if(m(),!(0m%4===0&&(m%100!==0||m%400===0),Hr=[0,31,60,91,121,152,182,213,244,274,305,335],qr=[0,31,59,90,120,151,181,212,243,273,304,334];function Yr(m,x,O,A,j,z,Y,Me){return T?H(16,1,m,x,O,A,j,z,Y,Me):-52}function Xr(m,x,O,A,j,z,Y){if(T)return H(17,1,m,x,O,A,j,z,Y)}var Kr=m=>{var x=ke(m)+1,O=di(x);return O&&je(m,O,x),O},tr=[],lr={},Zr=()=>{if(!fr){var m={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",_:p||"./this.program"},x;for(x in lr)lr[x]===void 0?delete m[x]:m[x]=lr[x];var O=[];for(x in m)O.push(`${x}=${m[x]}`);fr=O}return fr},fr;function Jr(m,x){if(T)return H(18,1,m,x);m>>>=0,x>>>=0;var O=0;return Zr().forEach((A,j)=>{var z=x+O;for(j=d()[m+4*j>>>2>>>0]=z,z=0;z>>0>>>0]=A.charCodeAt(z);i()[j>>>0>>>0]=0,O+=A.length+1}),0}function ti(m,x){if(T)return H(19,1,m,x);m>>>=0,x>>>=0;var O=Zr();d()[m>>>2>>>0]=O.length;var A=0;return O.forEach(j=>A+=j.length+1),d()[x>>>2>>>0]=A,0}function ni(m){return T?H(20,1,m):52}function ri(m,x,O,A){return T?H(21,1,m,x,O,A):52}function ii(m,x,O,A,j){return T?H(22,1,m,x,O,A,j):70}var Ns=[null,[],[]];function oi(m,x,O,A){if(T)return H(23,1,m,x,O,A);x>>>=0,O>>>=0,A>>>=0;for(var j=0,z=0;z>>2>>>0],Me=d()[x+4>>>2>>>0];x+=8;for(var it=0;it>>0],Qe=Ns[m];Ne===0||Ne===10?((m===1?ge:X)(vn(Qe,0)),Qe.length=0):Qe.push(Ne)}j+=Me}return d()[A>>>2>>>0]=j,0}var si=[31,29,31,30,31,30,31,31,30,31,30,31],ai=[31,28,31,30,31,30,31,31,30,31,30,31];function Rs(m){var x=Array(ke(m)+1);return He(m,x,0,x.length),x}var Bs=(m,x)=>{i().set(m,x>>>0)};function ui(m,x,O,A){function j(D,_e,Ae){for(D=typeof D=="number"?D.toString():D||"";D.length<_e;)D=Ae[0]+D;return D}function z(D,_e){return j(D,_e,"0")}function Y(D,_e){function Ae(Wo){return 0>Wo?-1:0It-D.getDate())_e-=It-D.getDate()+1,D.setDate(1),11>Ae?D.setMonth(Ae+1):(D.setMonth(0),D.setFullYear(D.getFullYear()+1));else{D.setDate(D.getDate()+_e);break}}return Ae=new Date(D.getFullYear()+1,0,4),_e=Me(new Date(D.getFullYear(),0,4)),Ae=Me(Ae),0>=Y(_e,D)?0>=Y(Ae,D)?D.getFullYear()+1:D.getFullYear():D.getFullYear()-1}m>>>=0,x>>>=0,O>>>=0,A>>>=0;var Ne=d()[A+40>>>2>>>0];A={ob:u()[A>>>2>>>0],nb:u()[A+4>>>2>>>0],Ta:u()[A+8>>>2>>>0],Xa:u()[A+12>>>2>>>0],Ua:u()[A+16>>>2>>>0],Sa:u()[A+20>>>2>>>0],Na:u()[A+24>>>2>>>0],Ra:u()[A+28>>>2>>>0],ub:u()[A+32>>>2>>>0],mb:u()[A+36>>>2>>>0],pb:Ne?Mt(Ne):""},O=Mt(O),Ne={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var Qe in Ne)O=O.replace(new RegExp(Qe,"g"),Ne[Qe]);var zo="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),Vo="January February March April May June July August September October November December".split(" ");Ne={"%a":D=>zo[D.Na].substring(0,3),"%A":D=>zo[D.Na],"%b":D=>Vo[D.Ua].substring(0,3),"%B":D=>Vo[D.Ua],"%C":D=>z((D.Sa+1900)/100|0,2),"%d":D=>z(D.Xa,2),"%e":D=>j(D.Xa,2," "),"%g":D=>it(D).toString().substring(2),"%G":D=>it(D),"%H":D=>z(D.Ta,2),"%I":D=>(D=D.Ta,D==0?D=12:12{for(var _e=0,Ae=0;Ae<=D.Ua-1;_e+=(Rt(D.Sa+1900)?si:ai)[Ae++]);return z(D.Xa+_e,3)},"%m":D=>z(D.Ua+1,2),"%M":D=>z(D.nb,2),"%n":()=>` +`,"%p":D=>0<=D.Ta&&12>D.Ta?"AM":"PM","%S":D=>z(D.ob,2),"%t":()=>" ","%u":D=>D.Na||7,"%U":D=>z(Math.floor((D.Ra+7-D.Na)/7),2),"%V":D=>{var _e=Math.floor((D.Ra+7-(D.Na+6)%7)/7);if(2>=(D.Na+371-D.Ra-2)%7&&_e++,_e)_e==53&&(Ae=(D.Na+371-D.Ra)%7,Ae==4||Ae==3&&Rt(D.Sa)||(_e=1));else{_e=52;var Ae=(D.Na+7-D.Ra-1)%7;(Ae==4||Ae==5&&Rt(D.Sa%400-1))&&_e++}return z(_e,2)},"%w":D=>D.Na,"%W":D=>z(Math.floor((D.Ra+7-(D.Na+6)%7)/7),2),"%y":D=>(D.Sa+1900).toString().substring(2),"%Y":D=>D.Sa+1900,"%z":D=>{D=D.mb;var _e=0<=D;return D=Math.abs(D)/60,(_e?"+":"-")+("0000"+(D/60*100+D%60)).slice(-4)},"%Z":D=>D.pb,"%%":()=>"%"},O=O.replace(/%%/g,"\0\0");for(Qe in Ne)O.includes(Qe)&&(O=O.replace(new RegExp(Qe,"g"),Ne[Qe](A)));return O=O.replace(/\0\0/g,"%"),Qe=Rs(O),Qe.length>x?0:(Bs(Qe,m),Qe.length-1)}ne.Wa();var js=[Ht,Et,C,Q,de,Ue,qt,Yt,I,pe,ve,rt,Kt,Ir,Fr,jr,Yr,Xr,Jr,ti,ni,ri,ii,oi],zs={b:function(m,x,O){throw m>>>=0,new P(m).Wa(x>>>0,O>>>0),M=m,M},L:function(m){fi(m>>>0,!w,1,!b,131072,!1),ne.ab()},j:function(m){m>>>=0,T?postMessage({cmd:"cleanupThread",thread:m}):ne.Za(ne.Ma[m])},H:V,h:Q,S:de,D:Ue,F:qt,T:Yt,Q:I,J:pe,P:ve,n:rt,E:Kt,B:Ir,R:Fr,C:jr,p:()=>1,z:function(m,x){m>>>=0,m==x>>>0?setTimeout(()=>Pn()):T?postMessage({targetThread:m,cmd:"checkMailbox"}):(m=ne.Ma[m])&&m.postMessage({cmd:"checkMailbox"})},I:function(m,x,O,A){x>>>=0,er.length=O,A=A>>>0>>>3;for(var j=0;j>>0];return m=0>m?Dt[-m-1]:js[m],ne.ib=x,x=m.apply(null,er),ne.ib=0,x},K:Yn,o:function(m){y&&ne.Ma[m>>>0].ref()},s:function(m,x,O){m=x+2097152>>>0<4194305-!!m?(m>>>0)+4294967296*x:NaN,O>>>=0,m=new Date(1e3*m),u()[O>>>2>>>0]=m.getUTCSeconds(),u()[O+4>>>2>>>0]=m.getUTCMinutes(),u()[O+8>>>2>>>0]=m.getUTCHours(),u()[O+12>>>2>>>0]=m.getUTCDate(),u()[O+16>>>2>>>0]=m.getUTCMonth(),u()[O+20>>>2>>>0]=m.getUTCFullYear()-1900,u()[O+24>>>2>>>0]=m.getUTCDay(),m=(m.getTime()-Date.UTC(m.getUTCFullYear(),0,1,0,0,0,0))/864e5|0,u()[O+28>>>2>>>0]=m},t:function(m,x,O){m=x+2097152>>>0<4194305-!!m?(m>>>0)+4294967296*x:NaN,O>>>=0,m=new Date(1e3*m),u()[O>>>2>>>0]=m.getSeconds(),u()[O+4>>>2>>>0]=m.getMinutes(),u()[O+8>>>2>>>0]=m.getHours(),u()[O+12>>>2>>>0]=m.getDate(),u()[O+16>>>2>>>0]=m.getMonth(),u()[O+20>>>2>>>0]=m.getFullYear()-1900,u()[O+24>>>2>>>0]=m.getDay(),x=(Rt(m.getFullYear())?Hr:qr)[m.getMonth()]+m.getDate()-1|0,u()[O+28>>>2>>>0]=x,u()[O+36>>>2>>>0]=-(60*m.getTimezoneOffset()),x=new Date(m.getFullYear(),6,1).getTimezoneOffset();var A=new Date(m.getFullYear(),0,1).getTimezoneOffset();m=(x!=A&&m.getTimezoneOffset()==Math.min(A,x))|0,u()[O+32>>>2>>>0]=m},u:function(m){m>>>=0;var x=new Date(u()[m+20>>>2>>>0]+1900,u()[m+16>>>2>>>0],u()[m+12>>>2>>>0],u()[m+8>>>2>>>0],u()[m+4>>>2>>>0],u()[m>>>2>>>0],0),O=u()[m+32>>>2>>>0],A=x.getTimezoneOffset(),j=new Date(x.getFullYear(),6,1).getTimezoneOffset(),z=new Date(x.getFullYear(),0,1).getTimezoneOffset(),Y=Math.min(z,j);return 0>O?u()[m+32>>>2>>>0]=+(j!=z&&Y==A):0>>2>>>0]=x.getDay(),O=(Rt(x.getFullYear())?Hr:qr)[x.getMonth()]+x.getDate()-1|0,u()[m+28>>>2>>>0]=O,u()[m>>>2>>>0]=x.getSeconds(),u()[m+4>>>2>>>0]=x.getMinutes(),u()[m+8>>>2>>>0]=x.getHours(),u()[m+12>>>2>>>0]=x.getDate(),u()[m+16>>>2>>>0]=x.getMonth(),u()[m+20>>>2>>>0]=x.getYear(),m=x.getTime(),isNaN(m)?(u()[ci()>>>2>>>0]=61,m=-1):m/=1e3,Ro((et=m,1<=+Math.abs(et)?0>>0:~~+Math.ceil((et-+(~~et>>>0))/4294967296)>>>0:0)),m>>>0},q:Yr,r:Xr,y:function(m,x,O){function A(Ne){return(Ne=Ne.toTimeString().match(/\(([A-Za-z ]+)\)$/))?Ne[1]:"GMT"}m>>>=0,x>>>=0,O>>>=0;var j=new Date().getFullYear(),z=new Date(j,0,1),Y=new Date(j,6,1);j=z.getTimezoneOffset();var Me=Y.getTimezoneOffset(),it=Math.max(j,Me);d()[m>>>2>>>0]=60*it,u()[x>>>2>>>0]=+(j!=Me),m=A(z),x=A(Y),m=Kr(m),x=Kr(x),Me>>2>>>0]=m,d()[O+4>>>2>>>0]=x):(d()[O>>>2>>>0]=x,d()[O+4>>>2>>>0]=m)},c:()=>{ct("")},O:function(m,x,O){m>>>=0,x>>>=0,O>>>=0,tr.length=0;for(var A;A=a()[x++>>>0];){var j=A!=105;j&=A!=112,O+=j&&O%8?4:0,tr.push(A==112?d()[O>>>2>>>0]:A==105?u()[O>>>2>>>0]:o()[O>>>3>>>0]),O+=j?8:4}return Dt[m].apply(null,tr)},k:()=>{},i:()=>Date.now(),U:()=>{throw yt+=1,"unwind"},A:function(){return 4294901760},e:()=>performance.timeOrigin+performance.now(),f:()=>y?(Lp(),rr(Dp)).cpus().length:navigator.hardwareConcurrency,x:function(m){m>>>=0;var x=a().length;if(m<=x||4294901760=O;O*=2){var A=x*(1+.2/O);A=Math.min(A,m+100663296);var j=Math;A=Math.max(m,A);e:{j=(j.min.call(j,4294901760,A+(65536-A%65536)%65536)-K.buffer.byteLength+65535)/65536;try{K.grow(j),Ie();var z=1;break e}catch{}z=void 0}if(z)return!0}return!1},M:Jr,N:ti,G:Lt,g:ni,m:ri,v:ii,l:oi,a:K||l.wasmMemory,w:ui,d:function(m,x,O,A){return ui(m>>>0,x>>>0,O>>>0,A>>>0)}},J=function(){function m(O,A){return J=O.exports,J=Vs(),ne.bb.push(J.za),v=J.Aa,Ze.unshift(J.V),he=A,at(),J}var x={a:zs};if(Se++,l.instantiateWasm)try{return l.instantiateWasm(x,m)}catch(O){X(`Module.instantiateWasm callback failed with error: ${O}`),h(O)}return wn(x,function(O){m(O.instance,O.module)}).catch(h),{}}();l._OrtInit=(m,x)=>(l._OrtInit=J.W)(m,x),l._OrtGetLastError=(m,x)=>(l._OrtGetLastError=J.X)(m,x),l._OrtCreateSessionOptions=(m,x,O,A,j,z,Y,Me,it,Ne)=>(l._OrtCreateSessionOptions=J.Y)(m,x,O,A,j,z,Y,Me,it,Ne),l._OrtAppendExecutionProvider=(m,x)=>(l._OrtAppendExecutionProvider=J.Z)(m,x),l._OrtAddFreeDimensionOverride=(m,x,O)=>(l._OrtAddFreeDimensionOverride=J._)(m,x,O),l._OrtAddSessionConfigEntry=(m,x,O)=>(l._OrtAddSessionConfigEntry=J.$)(m,x,O),l._OrtReleaseSessionOptions=m=>(l._OrtReleaseSessionOptions=J.aa)(m),l._OrtCreateSession=(m,x,O)=>(l._OrtCreateSession=J.ba)(m,x,O),l._OrtReleaseSession=m=>(l._OrtReleaseSession=J.ca)(m),l._OrtGetInputOutputCount=(m,x,O)=>(l._OrtGetInputOutputCount=J.da)(m,x,O),l._OrtGetInputName=(m,x)=>(l._OrtGetInputName=J.ea)(m,x),l._OrtGetOutputName=(m,x)=>(l._OrtGetOutputName=J.fa)(m,x),l._OrtFree=m=>(l._OrtFree=J.ga)(m),l._OrtCreateTensor=(m,x,O,A,j,z)=>(l._OrtCreateTensor=J.ha)(m,x,O,A,j,z),l._OrtGetTensorData=(m,x,O,A,j)=>(l._OrtGetTensorData=J.ia)(m,x,O,A,j),l._OrtReleaseTensor=m=>(l._OrtReleaseTensor=J.ja)(m),l._OrtCreateRunOptions=(m,x,O,A)=>(l._OrtCreateRunOptions=J.ka)(m,x,O,A),l._OrtAddRunConfigEntry=(m,x,O)=>(l._OrtAddRunConfigEntry=J.la)(m,x,O),l._OrtReleaseRunOptions=m=>(l._OrtReleaseRunOptions=J.ma)(m),l._OrtCreateBinding=m=>(l._OrtCreateBinding=J.na)(m),l._OrtBindInput=(m,x,O)=>(l._OrtBindInput=J.oa)(m,x,O),l._OrtBindOutput=(m,x,O,A)=>(l._OrtBindOutput=J.pa)(m,x,O,A),l._OrtClearBoundOutputs=m=>(l._OrtClearBoundOutputs=J.qa)(m),l._OrtReleaseBinding=m=>(l._OrtReleaseBinding=J.ra)(m),l._OrtRunWithBinding=(m,x,O,A,j)=>(l._OrtRunWithBinding=J.sa)(m,x,O,A,j),l._OrtRun=(m,x,O,A,j,z,Y,Me)=>(l._OrtRun=J.ta)(m,x,O,A,j,z,Y,Me),l._OrtEndProfiling=m=>(l._OrtEndProfiling=J.ua)(m);var ci=()=>(ci=J.va)(),An=l._pthread_self=()=>(An=l._pthread_self=J.wa)(),di=l._malloc=m=>(di=l._malloc=J.xa)(m);l._free=m=>(l._free=J.ya)(m),l.__emscripten_tls_init=()=>(l.__emscripten_tls_init=J.za)();var fi=l.__emscripten_thread_init=(m,x,O,A,j,z)=>(fi=l.__emscripten_thread_init=J.Ba)(m,x,O,A,j,z);l.__emscripten_thread_crashed=()=>(l.__emscripten_thread_crashed=J.Ca)();var Mo=(m,x,O,A)=>(Mo=J.Da)(m,x,O,A),_r=m=>(_r=J.Ea)(m),wr=l.__emscripten_thread_exit=m=>(wr=l.__emscripten_thread_exit=J.Fa)(m),No=()=>(No=J.Ga)(),Ro=m=>(Ro=J.Ha)(m),Bo=(m,x)=>(Bo=J.Ia)(m,x),vr=()=>(vr=J.Ja)(),In=m=>(In=J.Ka)(m),Or=m=>(Or=J.La)(m);function Vs(){var m=J;m=Object.assign({},m);var x=A=>()=>A()>>>0,O=A=>j=>A(j)>>>0;return m.va=x(m.va),m.wa=x(m.wa),m.xa=O(m.xa),m.emscripten_main_runtime_thread_id=x(m.emscripten_main_runtime_thread_id),m.Ja=x(m.Ja),m.La=O(m.La),m}l.wasmMemory=K,l.stackAlloc=Or,l.stackSave=vr,l.stackRestore=In,l.keepRuntimeAlive=()=>0n)}),kp=me((t,e)=>{e.exports='"use strict";var Module={},ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require("worker_threads"),parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",e=>onmessage({data:e}));var fs=require("fs"),vm=require("vm");Object.assign(global,{self:global,require,Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:e=>vm.runInThisContext(fs.readFileSync(e,"utf8"),{filename:e}),postMessage:e=>parentPort.postMessage(e),performance:global.performance||{now:Date.now}})}var initializedJS=!1;function threadPrintErr(){var e=Array.prototype.slice.call(arguments).join(" ");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,e+`\n`);return}console.error(e)}function threadAlert(){var e=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:e,threadId:Module._pthread_self()})}var err=threadPrintErr;self.alert=threadAlert,Module.instantiateWasm=(e,t)=>{var a=Module.wasmModule;Module.wasmModule=null;var r=new WebAssembly.Instance(a,e);return t(r)},self.onunhandledrejection=e=>{throw e.reason||e};function handleMessage(e){try{if(e.data.cmd==="load"){let a=[];self.onmessage=r=>a.push(r),self.startWorker=r=>{Module=r,postMessage({cmd:"loaded"});for(let s of a)handleMessage(s);self.onmessage=handleMessage},Module.wasmModule=e.data.wasmModule;for(const r of e.data.handlers)Module[r]=(...s)=>{postMessage({cmd:"callHandler",handler:r,args:s})};if(Module.wasmMemory=e.data.wasmMemory,Module.buffer=Module.wasmMemory.buffer,Module.ENVIRONMENT_IS_PTHREAD=!0,typeof e.data.urlOrBlob=="string")importScripts(e.data.urlOrBlob);else{var t=URL.createObjectURL(e.data.urlOrBlob);importScripts(t),URL.revokeObjectURL(t)}ortWasmThreaded(Module)}else if(e.data.cmd==="run"){Module.__emscripten_thread_init(e.data.pthread_ptr,0,0,1),Module.__emscripten_thread_mailbox_await(e.data.pthread_ptr),Module.establishStackSpace(),Module.PThread.receiveObjectTransfer(e.data),Module.PThread.threadInitTLS(),initializedJS||(initializedJS=!0);try{Module.invokeEntryPoint(e.data.start_routine,e.data.arg)}catch(a){if(a!="unwind")throw a}}else e.data.cmd==="cancel"?Module._pthread_self()&&Module.__emscripten_thread_exit(-1):e.data.target==="setimmediate"||(e.data.cmd==="checkMailbox"?initializedJS&&Module.checkMailbox():e.data.cmd&&(err(`worker.js received unknown command ${e.data.cmd}`),err(e.data)))}catch(a){throw Module.__emscripten_thread_crashed?.(),a}}self.onmessage=handleMessage;\n'}),Np,ig,aa,sa,Po,Bp,ag,sg,ug,Rp,Ee,zr=L(()=>{Np=Ap(),ig=Cp(),sa=!1,Po=!1,Bp=!1,ag=t=>{if(t===1)return!1;if(typeof SharedArrayBuffer>"u")return typeof self<"u"&&!self.crossOriginIsolated&&console.warn("env.wasm.numThreads is set to "+t+", but this will not work unless you enable crossOriginIsolated mode. See https://web.dev/cross-origin-isolation-guide/ for more info."),!1;typeof process<"u"&&process.versions&&process.versions.node&&console.warn("env.wasm.numThreads is set to "+t+", however, currently onnxruntime-web does not support multi-threads in Node.js. Please consider using onnxruntime-node for performance critical scenarios.");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}},sg=()=>{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}},ug=(t,e)=>t?e?"ort-wasm-simd-threaded.wasm":"ort-wasm-simd.wasm":e?"ort-wasm-threaded.wasm":"ort-wasm.wasm",Rp=async t=>{if(sa)return Promise.resolve();if(Po)throw new Error("multiple calls to 'initializeWebAssembly()' detected.");if(Bp)throw new Error("previous call to 'initializeWebAssembly()' failed.");Po=!0;let e=t.initTimeout,n=t.numThreads,r=t.simd,s=ag(n),i=r&&sg(),a=t.wasmPaths,u=typeof a=="string"?a:void 0,d=ug(i,s),o=typeof a=="object"?a[d]:void 0,l=!1,c=[];if(e>0&&c.push(new Promise(h=>{setTimeout(()=>{l=!0,h()},e)})),c.push(new Promise((h,f)=>{let p=s?ig:Np,g={locateFile:(b,w)=>s&&b.endsWith(".worker.js")&&typeof Blob<"u"?URL.createObjectURL(new Blob([kp()],{type:"text/javascript"})):b.endsWith(".wasm")?o||(u??w)+d:w+b};if(s)if(g.numThreads=n,typeof Blob>"u")g.mainScriptUrlOrBlob=(void 0)(__dirname,"ort-wasm-threaded.js");else{let b=`var ortWasmThreaded=${p.toString()};`;g.mainScriptUrlOrBlob=new Blob([b],{type:"text/javascript"})}p(g).then(b=>{Po=!1,sa=!0,aa=b,h()},b=>{Po=!1,Bp=!0,f(b)})})),await Promise.race(c),l)throw new Error(`WebAssembly backend initializing failed due to timeout: ${e}ms`)},Ee=()=>{if(sa&&aa)return aa;throw new Error("WebAssembly is not initialized yet.")}}),De,bn,Oe,Eo=L(()=>{zr(),De=(t,e)=>{let n=Ee(),r=n.lengthBytesUTF8(t)+1,s=n._malloc(r);return n.stringToUTF8(t,s,r),e.push(s),s},bn=(t,e,n,r)=>{if(typeof t=="object"&&t!==null){if(n.has(t))throw new Error("Circular reference in options");n.add(t)}Object.entries(t).forEach(([s,i])=>{let a=e?e+s:s;if(typeof i=="object")bn(i,a+".",n,r);else if(typeof i=="string"||typeof i=="number")r(a,i.toString());else if(typeof i=="boolean")r(a,i?"1":"0");else throw new Error(`Can't handle extra config type: ${typeof i}`)})},Oe=t=>{let e=Ee(),n=e.stackSave();try{let r=e.stackAlloc(8);e._OrtGetLastError(r,r+4);let s=e.HEAP32[r/4],i=e.HEAPU32[r/4+1],a=i?e.UTF8ToString(i):"";throw new Error(`${t} ERROR_CODE: ${s}, ERROR_MESSAGE: ${a}`)}finally{e.stackRestore(n)}}}),Mp,Gp=L(()=>{zr(),Eo(),Mp=t=>{let e=Ee(),n=0,r=[],s=t||{};try{if(t?.logSeverityLevel===void 0)s.logSeverityLevel=2;else if(typeof t.logSeverityLevel!="number"||!Number.isInteger(t.logSeverityLevel)||t.logSeverityLevel<0||t.logSeverityLevel>4)throw new Error(`log serverity level is not valid: ${t.logSeverityLevel}`);if(t?.logVerbosityLevel===void 0)s.logVerbosityLevel=0;else if(typeof t.logVerbosityLevel!="number"||!Number.isInteger(t.logVerbosityLevel))throw new Error(`log verbosity level is not valid: ${t.logVerbosityLevel}`);t?.terminate===void 0&&(s.terminate=!1);let i=0;return t?.tag!==void 0&&(i=De(t.tag,r)),n=e._OrtCreateRunOptions(s.logSeverityLevel,s.logVerbosityLevel,!!s.terminate,i),n===0&&Oe("Can't create run options."),t?.extra!==void 0&&bn(t.extra,"",new WeakSet,(a,u)=>{let d=De(a,r),o=De(u,r);e._OrtAddRunConfigEntry(n,d,o)!==0&&Oe(`Can't set a run config entry: ${a} - ${u}.`)}),[n,r]}catch(i){throw n!==0&&e._OrtReleaseRunOptions(n),r.forEach(a=>e._free(a)),i}}}),lg,fg,cg,pg,Up,zp=L(()=>{zr(),Eo(),lg=t=>{switch(t){case"disabled":return 0;case"basic":return 1;case"extended":return 2;case"all":return 99;default:throw new Error(`unsupported graph optimization level: ${t}`)}},fg=t=>{switch(t){case"sequential":return 0;case"parallel":return 1;default:throw new Error(`unsupported execution mode: ${t}`)}},cg=t=>{t.extra||(t.extra={}),t.extra.session||(t.extra.session={});let e=t.extra.session;e.use_ort_model_bytes_directly||(e.use_ort_model_bytes_directly="1"),t.executionProviders&&t.executionProviders.some(n=>(typeof n=="string"?n:n.name)==="webgpu")&&(t.enableMemPattern=!1)},pg=(t,e,n)=>{for(let r of e){let s=typeof r=="string"?r:r.name;switch(s){case"webnn":if(s="WEBNN",typeof r!="string"){let a=r;if(a?.deviceType){let u=De("deviceType",n),d=De(a.deviceType,n);Ee()._OrtAddSessionConfigEntry(t,u,d)!==0&&Oe(`Can't set a session config entry: 'deviceType' - ${a.deviceType}.`)}if(a?.numThreads){let u=a.numThreads;(typeof u!="number"||!Number.isInteger(u)||u<0)&&(u=0);let d=De("numThreads",n),o=De(u.toString(),n);Ee()._OrtAddSessionConfigEntry(t,d,o)!==0&&Oe(`Can't set a session config entry: 'numThreads' - ${a.numThreads}.`)}if(a?.powerPreference){let u=De("powerPreference",n),d=De(a.powerPreference,n);Ee()._OrtAddSessionConfigEntry(t,u,d)!==0&&Oe(`Can't set a session config entry: 'powerPreference' - ${a.powerPreference}.`)}}break;case"webgpu":if(s="JS",typeof r!="string"){let a=r;if(a?.preferredLayout){if(a.preferredLayout!=="NCHW"&&a.preferredLayout!=="NHWC")throw new Error(`preferredLayout must be either 'NCHW' or 'NHWC': ${a.preferredLayout}`);let u=De("preferredLayout",n),d=De(a.preferredLayout,n);Ee()._OrtAddSessionConfigEntry(t,u,d)!==0&&Oe(`Can't set a session config entry: 'preferredLayout' - ${a.preferredLayout}.`)}}break;case"wasm":case"cpu":continue;default:throw new Error(`not supported execution provider: ${s}`)}let i=De(s,n);Ee()._OrtAppendExecutionProvider(t,i)!==0&&Oe(`Can't append execution provider: ${s}.`)}},Up=t=>{let e=Ee(),n=0,r=[],s=t||{};cg(s);try{let i=lg(s.graphOptimizationLevel??"all"),a=fg(s.executionMode??"sequential"),u=typeof s.logId=="string"?De(s.logId,r):0,d=s.logSeverityLevel??2;if(!Number.isInteger(d)||d<0||d>4)throw new Error(`log serverity level is not valid: ${d}`);let o=s.logVerbosityLevel??0;if(!Number.isInteger(o)||o<0||o>4)throw new Error(`log verbosity level is not valid: ${o}`);let l=typeof s.optimizedModelFilePath=="string"?De(s.optimizedModelFilePath,r):0;if(n=e._OrtCreateSessionOptions(i,!!s.enableCpuMemArena,!!s.enableMemPattern,a,!!s.enableProfiling,0,u,d,o,l),n===0&&Oe("Can't create session options."),s.executionProviders&&pg(n,s.executionProviders,r),s.freeDimensionOverrides)for(let[c,h]of Object.entries(s.freeDimensionOverrides)){if(typeof c!="string")throw new Error(`free dimension override name must be a string: ${c}`);if(typeof h!="number"||!Number.isInteger(h)||h<0)throw new Error(`free dimension override value must be a non-negative integer: ${h}`);let f=De(c,r);e._OrtAddFreeDimensionOverride(n,f,h)!==0&&Oe(`Can't set a free dimension override: ${c} - ${h}.`)}return s.extra!==void 0&&bn(s.extra,"",new WeakSet,(c,h)=>{let f=De(c,r),p=De(h,r);e._OrtAddSessionConfigEntry(n,f,p)!==0&&Oe(`Can't set a session config entry: ${c} - ${h}.`)}),[n,r]}catch(i){throw n!==0&&e._OrtReleaseSessionOptions(n),r.forEach(a=>e._free(a)),i}}}),ua,Vp,la,Wp,Hp,Do,qp,fa=L(()=>{ua=t=>{switch(t){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;default:throw new Error(`unsupported data type: ${t}`)}},Vp=t=>{switch(t){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";default:throw new Error(`unsupported data type: ${t}`)}},la=t=>[void 0,4,1,1,2,2,4,8,void 0,1,2,8,4,8,void 0,void 0,void 0][t],Wp=t=>{switch(t){case"float16":return 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: ${t}`)}},Hp=t=>{switch(t){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: ${t}`)}},Do=t=>t==="float32"||t==="int32"||t==="int64"||t==="bool"||t==="float16"||t==="uint32",qp=t=>{switch(t){case"none":return 0;case"cpu":return 1;case"cpu-pinned":return 2;case"texture":return 3;case"gpu-buffer":return 4;default:throw new Error(`unsupported data location: ${t}`)}}}),gn,ca=L(()=>{gn=async t=>{if(typeof t=="string")if(typeof process<"u"&&process.versions&&process.versions.node)try{return new Uint8Array(await(void 0)(t))}catch(e){if(e.code==="ERR_FS_FILE_TOO_LARGE"){let n=(void 0)(t),r=[];for await(let s of n)r.push(s);return new Uint8Array(Buffer.concat(r))}throw e}else{let e=await fetch(t);if(!e.ok)throw new Error(`failed to load external data file: ${t}`);let n=e.headers.get("Content-Length"),r=n?parseInt(n,10):0;if(r<1073741824)return new Uint8Array(await e.arrayBuffer());{if(!e.body)throw new Error(`failed to load external data file: ${t}, no response body.`);let s=e.body.getReader(),i;try{i=new ArrayBuffer(r)}catch(u){if(u instanceof RangeError){let d=Math.ceil(r/65536);i=new WebAssembly.Memory({initial:d,maximum:d}).buffer}else throw u}let a=0;for(;;){let{done:u,value:d}=await s.read();if(u)break;let o=d.byteLength;new Uint8Array(i,a,o).set(d),a+=o}return new Uint8Array(i,0,r)}}else return t instanceof Blob?new Uint8Array(await t.arrayBuffer()):t instanceof Uint8Array?t:new Uint8Array(t)}}),dg,Yp,Xp,yn,hg,pa,Kp,Jp,jp,Zp,Qp,ed,td=L(()=>{Gp(),zp(),fa(),zr(),Eo(),ca(),dg=(t,e)=>{Ee()._OrtInit(t,e)!==0&&Oe("Can't initialize onnxruntime.")},Yp=async t=>{dg(t.wasm.numThreads,Hp(t.logLevel))},Xp=async(t,e)=>{},yn=new Map,hg=t=>{let e=Ee(),n=e.stackSave();try{let r=e.stackAlloc(8);return e._OrtGetInputOutputCount(t,r,r+4)!==0&&Oe("Can't get session input/output count."),[e.HEAP32[r/4],e.HEAP32[r/4+1]]}finally{e.stackRestore(n)}},pa=t=>{let e=Ee(),n=e._malloc(t.byteLength);if(n===0)throw new Error(`Can't create a session. failed to allocate a buffer of size ${t.byteLength}.`);return e.HEAPU8.set(t,n),[n,t.byteLength]},Kp=async(t,e)=>{let n,r,s=Ee();Array.isArray(t)?[n,r]=t:t.buffer===s.HEAPU8.buffer?[n,r]=[t.byteOffset,t.byteLength]:[n,r]=pa(t);let i=0,a=0,u=[],d=[],o=[];try{if([a,u]=Up(e),e?.externalData&&s.mountExternalData){let b=[];for(let w of e.externalData){let y=typeof w=="string"?w:w.path;b.push(gn(typeof w=="string"?w:w.data).then(T=>{s.mountExternalData(y,T)}))}await Promise.all(b)}i=s._OrtCreateSession(n,r,a),i===0&&Oe("Can't create a session.");let[l,c]=hg(i),h=[],f=[],p=[];for(let b=0;bs._OrtFree(c)),o.forEach(c=>s._OrtFree(c)),i!==0&&s._OrtReleaseSession(i),l}finally{s._free(n),a!==0&&s._OrtReleaseSessionOptions(a),u.forEach(l=>s._free(l)),s.unmountExternalData?.()}},Jp=t=>{let e=Ee(),n=yn.get(t);if(!n)throw new Error(`cannot release session. invalid session id: ${t}`);let[r,s,i,a]=n;a&&e._OrtReleaseBinding(a.handle),e.jsepUnregisterBuffers?.(t),s.forEach(u=>e._OrtFree(u)),i.forEach(u=>e._OrtFree(u)),e._OrtReleaseSession(r),yn.delete(t)},jp=(t,e,n,r,s)=>{if(!t){e.push(0);return}let i=Ee(),a=t[0],u=t[1],d=t[3],o,l;if(a==="string"&&d==="gpu-buffer")throw new Error("String tensor is not supported on GPU.");if(d==="gpu-buffer"){let f=t[2].gpuBuffer,p=la(ua(a));l=u.reduce((g,b)=>g*b,1)*p,o=i.jsepRegisterBuffer(r,s,f,l)}else{let f=t[2];if(Array.isArray(f)){l=4*f.length,o=i._malloc(l),n.push(o);let p=o/4;for(let g=0;gi.HEAP32[f++]=g);let p=i._OrtCreateTensor(ua(a),o,l,h,u.length,qp(d));p===0&&Oe(`Can't create tensor for input/output. session=${r}, index=${s}.`),e.push(p)}finally{i.stackRestore(c)}},Zp=async(t,e,n,r,s,i)=>{let a=Ee(),u=yn.get(t);if(!u)throw new Error(`cannot run inference. invalid session id: ${t}`);let[d,o,l,c]=u,h=e.length,f=r.length,p=0,g=[],b=[],w=[],y=[],T=a.stackSave(),S=a.stackAlloc(h*4),E=a.stackAlloc(h*4),N=a.stackAlloc(f*4),B=a.stackAlloc(f*4);try{[p,g]=Mp(i);for(let X=0;XBe*Se,1);ue=Vp(ze);let Ze=c?.outputPreferredLocations[r[X]];if(ue==="string"){if(Ze==="gpu-buffer")throw new Error("String tensor is not supported on GPU.");let Be=[],Se=Te/4;for(let Je=0;Je0){let Be=a.jsepGetBuffer(Te),Se=la(ze);if(Se===void 0||!Do(ue))throw new Error(`Unsupported data type: ${ue}`);we=!0,ge.push([ue,$e,{gpuBuffer:Be,download:a.jsepCreateDownloader(Be,Ce*Se,ue),dispose:()=>{a._OrtReleaseTensor(K)}},"gpu-buffer"])}else{let Be=Wp(ue),Se=new Be(Ce);new Uint8Array(Se.buffer,Se.byteOffset,Se.byteLength).set(a.HEAPU8.subarray(Te,Te+Se.byteLength)),ge.push([ue,$e,Se,"cpu"])}}finally{a.stackRestore(he),ue==="string"&&Te&&a._free(Te),we||a._OrtReleaseTensor(K)}}return c&&a._OrtClearBoundOutputs(c.handle),ge}finally{a.stackRestore(T),b.forEach(F=>a._OrtReleaseTensor(F)),w.forEach(F=>a._OrtReleaseTensor(F)),y.forEach(F=>a._free(F)),p!==0&&a._OrtReleaseRunOptions(p),g.forEach(F=>a._free(F))}},Qp=t=>{let e=Ee(),n=yn.get(t);if(!n)throw new Error("invalid session id");let r=n[0],s=e._OrtEndProfiling(r);s===0&&Oe("Can't get an profile file name."),e._OrtFree(s)},ed=t=>{let e=[];for(let n of t){let r=n[2];!Array.isArray(r)&&"buffer"in r&&e.push(r.buffer)}return e}}),rd=me((t,e)=>{e.exports='/*!\n * ONNX Runtime Web v1.17.1\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n"use strict";(()=>{var Et=Object.defineProperty;var Jr=Object.getOwnPropertyDescriptor;var Xr=Object.getOwnPropertyNames;var Qr=Object.prototype.hasOwnProperty;var St=(u,d)=>()=>(u&&(d=u(u=0)),d);var et=(u,d)=>()=>(d||u((d={exports:{}}).exports,d),d.exports),Tt=(u,d)=>{for(var a in d)Et(u,a,{get:d[a],enumerable:!0})},Zr=(u,d,a,h)=>{if(d&&typeof d=="object"||typeof d=="function")for(let l of Xr(d))!Qr.call(u,l)&&l!==a&&Et(u,l,{get:()=>d[l],enumerable:!(h=Jr(d,l))||h.enumerable});return u};var tt=u=>Zr(Et({},"__esModule",{value:!0}),u);var At={};Tt(At,{createReadStream:()=>dr,readFile:()=>Kr,readFileSync:()=>en});var Kr,en,dr,Mt=St(()=>{Kr=void 0,en=void 0,dr=void 0});var Ct={};Tt(Ct,{join:()=>tn});var tn,Dt=St(()=>{tn=void 0});var gr=et((mr,xt)=>{"use strict";var pr=(()=>{var u=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(u=u||__filename),function(d={}){var a=d,h,l;a.ready=new Promise((r,o)=>{h=r,l=o});var w=Object.assign({},a),g="./this.program",i=typeof window=="object",A=typeof importScripts=="function",D=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",I="",B,F,U;if(D){var k=(Mt(),tt(At)),L=(Dt(),tt(Ct));I=A?L.dirname(I)+"/":__dirname+"/",B=(r,o)=>(r=ye(r)?new URL(r):L.normalize(r),k.readFileSync(r,o?void 0:"utf8")),U=r=>(r=B(r,!0),r.buffer||(r=new Uint8Array(r)),r),F=(r,o,s,m=!0)=>{r=ye(r)?new URL(r):L.normalize(r),k.readFile(r,m?void 0:"utf8",(O,S)=>{O?s(O):o(m?S.buffer:S)})},!a.thisProgram&&1"[Emscripten Module object]"}else(i||A)&&(A?I=self.location.href:typeof document<"u"&&document.currentScript&&(I=document.currentScript.src),u&&(I=u),I.indexOf("blob:")!==0?I=I.substr(0,I.replace(/[?#].*/,"").lastIndexOf("/")+1):I="",B=r=>{var o=new XMLHttpRequest;return o.open("GET",r,!1),o.send(null),o.responseText},A&&(U=r=>{var o=new XMLHttpRequest;return o.open("GET",r,!1),o.responseType="arraybuffer",o.send(null),new Uint8Array(o.response)}),F=(r,o,s)=>{var m=new XMLHttpRequest;m.open("GET",r,!0),m.responseType="arraybuffer",m.onload=()=>{m.status==200||m.status==0&&m.response?o(m.response):s()},m.onerror=s,m.send(null)});var _=console.log.bind(console),x=console.error.bind(console);Object.assign(a,w),w=null,typeof WebAssembly!="object"&&de("no native wasm support detected");var N,he=!1,ie,ae,E,Y,ue;function Re(){var r=N.buffer;a.HEAP8=ie=new Int8Array(r),a.HEAP16=new Int16Array(r),a.HEAPU8=ae=new Uint8Array(r),a.HEAPU16=new Uint16Array(r),a.HEAP32=E=new Int32Array(r),a.HEAPU32=Y=new Uint32Array(r),a.HEAPF32=new Float32Array(r),a.HEAPF64=ue=new Float64Array(r)}var Ie=[],ee=[],j=[],ce=0,P=null,te=null;function de(r){throw r="Aborted("+r+")",x(r),he=!0,r=new WebAssembly.RuntimeError(r+". Build with -sASSERTIONS for more info."),l(r),r}var ge=r=>r.startsWith("data:application/octet-stream;base64,"),ye=r=>r.startsWith("file://"),J;if(J="ort-wasm.wasm",!ge(J)){var fe=J;J=a.locateFile?a.locateFile(fe,I):I+fe}function we(r){if(U)return U(r);throw"both async and sync fetching of the wasm failed"}function Ae(r){if(i||A){if(typeof fetch=="function"&&!ye(r))return fetch(r,{credentials:"same-origin"}).then(o=>{if(!o.ok)throw"failed to load wasm binary file at \'"+r+"\'";return o.arrayBuffer()}).catch(()=>we(r));if(F)return new Promise((o,s)=>{F(r,m=>o(new Uint8Array(m)),s)})}return Promise.resolve().then(()=>we(r))}function Me(r,o,s){return Ae(r).then(m=>WebAssembly.instantiate(m,o)).then(m=>m).then(s,m=>{x(`failed to asynchronously prepare wasm: ${m}`),de(m)})}function Fe(r,o){var s=J;return typeof WebAssembly.instantiateStreaming!="function"||ge(s)||ye(s)||D||typeof fetch!="function"?Me(s,r,o):fetch(s,{credentials:"same-origin"}).then(m=>WebAssembly.instantiateStreaming(m,r).then(o,function(O){return x(`wasm streaming compile failed: ${O}`),x("falling back to ArrayBuffer instantiation"),Me(s,r,o)}))}var Ee,pe={919888:(r,o,s,m)=>{if(typeof a>"u"||!a.za)return 1;if(r=be(r>>>0),r.startsWith("./")&&(r=r.substring(2)),r=a.za.get(r),!r)return 2;if(o>>>=0,s>>>=0,o+s>r.byteLength)return 3;try{return ae.set(r.subarray(o,o+s),m>>>0>>>0),0}catch{return 4}}};function Oe(r){this.xa=r-24,this.Ha=function(o){Y[this.xa+4>>>2>>>0]=o},this.Ga=function(o){Y[this.xa+8>>>2>>>0]=o},this.Aa=function(o,s){this.Fa(),this.Ha(o),this.Ga(s)},this.Fa=function(){Y[this.xa+16>>>2>>>0]=0}}var ve=0,re=0,Z=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,Ce=(r,o,s)=>{o>>>=0;var m=o+s;for(s=o;r[s]&&!(s>=m);)++s;if(16O?m+=String.fromCharCode(O):(O-=65536,m+=String.fromCharCode(55296|O>>10,56320|O&1023))}}else m+=String.fromCharCode(O)}return m},be=(r,o)=>(r>>>=0)?Ce(ae,r,o):"",_e=r=>{for(var o=0,s=0;s=m?o++:2047>=m?o+=2:55296<=m&&57343>=m?(o+=4,++s):o+=3}return o},ke=(r,o,s,m)=>{if(s>>>=0,!(0=R){var K=r.charCodeAt(++S);R=65536+((R&1023)<<10)|K&1023}if(127>=R){if(s>=m)break;o[s++>>>0]=R}else{if(2047>=R){if(s+1>=m)break;o[s++>>>0]=192|R>>6}else{if(65535>=R){if(s+2>=m)break;o[s++>>>0]=224|R>>12}else{if(s+3>=m)break;o[s++>>>0]=240|R>>18,o[s++>>>0]=128|R>>12&63}o[s++>>>0]=128|R>>6&63}o[s++>>>0]=128|R&63}}return o[s>>>0]=0,s-O},Ue=r=>r%4===0&&(r%100!==0||r%400===0),ze=[0,31,60,91,121,152,182,213,244,274,305,335],at=[0,31,59,90,120,151,181,212,243,273,304,334],De=r=>{var o=_e(r)+1,s=st(o);return s&&ke(r,ae,s,o),s},Ne=[],Pe={},He=()=>{if(!$e){var r={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",_:g||"./this.program"},o;for(o in Pe)Pe[o]===void 0?delete r[o]:r[o]=Pe[o];var s=[];for(o in r)s.push(`${o}=${r[o]}`);$e=s}return $e},$e,Le=[null,[],[]],qe=[31,29,31,30,31,30,31,31,30,31,30,31],Ve=[31,28,31,30,31,30,31,31,30,31,30,31];function Ge(r){var o=Array(_e(r)+1);return ke(r,o,0,o.length),o}function ot(r,o,s,m){function O(c,W,G){for(c=typeof c=="number"?c.toString():c||"";c.lengthKe?-1:0Se-c.getDate())W-=Se-c.getDate()+1,c.setDate(1),11>G?c.setMonth(G+1):(c.setMonth(0),c.setFullYear(c.getFullYear()+1));else{c.setDate(c.getDate()+W);break}}return G=new Date(c.getFullYear()+1,0,4),W=K(new Date(c.getFullYear(),0,4)),G=K(G),0>=R(W,c)?0>=R(G,c)?c.getFullYear()+1:c.getFullYear():c.getFullYear()-1}r>>>=0,o>>>=0,s>>>=0,m>>>=0;var oe=Y[m+40>>>2>>>0];m={Da:E[m>>>2>>>0],Ca:E[m+4>>>2>>>0],va:E[m+8>>>2>>>0],ya:E[m+12>>>2>>>0],wa:E[m+16>>>2>>>0],ua:E[m+20>>>2>>>0],oa:E[m+24>>>2>>>0],ta:E[m+28>>>2>>>0],Ia:E[m+32>>>2>>>0],Ba:E[m+36>>>2>>>0],Ea:oe?be(oe):""},s=be(s),oe={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var se in oe)s=s.replace(new RegExp(se,"g"),oe[se]);var Qe="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),Ze="January February March April May June July August September October November December".split(" ");oe={"%a":c=>Qe[c.oa].substring(0,3),"%A":c=>Qe[c.oa],"%b":c=>Ze[c.wa].substring(0,3),"%B":c=>Ze[c.wa],"%C":c=>S((c.ua+1900)/100|0,2),"%d":c=>S(c.ya,2),"%e":c=>O(c.ya,2," "),"%g":c=>le(c).toString().substring(2),"%G":c=>le(c),"%H":c=>S(c.va,2),"%I":c=>(c=c.va,c==0?c=12:12{for(var W=0,G=0;G<=c.wa-1;W+=(Ue(c.ua+1900)?qe:Ve)[G++]);return S(c.ya+W,3)},"%m":c=>S(c.wa+1,2),"%M":c=>S(c.Ca,2),"%n":()=>`\n`,"%p":c=>0<=c.va&&12>c.va?"AM":"PM","%S":c=>S(c.Da,2),"%t":()=>" ","%u":c=>c.oa||7,"%U":c=>S(Math.floor((c.ta+7-c.oa)/7),2),"%V":c=>{var W=Math.floor((c.ta+7-(c.oa+6)%7)/7);if(2>=(c.oa+371-c.ta-2)%7&&W++,W)W==53&&(G=(c.oa+371-c.ta)%7,G==4||G==3&&Ue(c.ua)||(W=1));else{W=52;var G=(c.oa+7-c.ta-1)%7;(G==4||G==5&&Ue(c.ua%400-1))&&W++}return S(W,2)},"%w":c=>c.oa,"%W":c=>S(Math.floor((c.ta+7-(c.oa+6)%7)/7),2),"%y":c=>(c.ua+1900).toString().substring(2),"%Y":c=>c.ua+1900,"%z":c=>{c=c.Ba;var W=0<=c;return c=Math.abs(c)/60,(W?"+":"-")+("0000"+(c/60*100+c%60)).slice(-4)},"%Z":c=>c.Ea,"%%":()=>"%"},s=s.replace(/%%/g,"\\0\\0");for(se in oe)s.includes(se)&&(s=s.replace(new RegExp(se,"g"),oe[se](m)));return s=s.replace(/\\0\\0/g,"%"),se=Ge(s),se.length>o?0:(ie.set(se,r>>>0),se.length-1)}var $={a:function(r,o,s){throw r>>>=0,new Oe(r).Aa(o>>>0,s>>>0),ve=r,re++,ve},e:function(){return 0},H:function(){},x:function(){},z:function(){},J:function(){return 0},F:function(){},A:function(){},E:function(){},g:function(){},y:function(){},v:function(){},G:function(){},w:function(){},k:()=>1,n:function(r,o,s){r=o+2097152>>>0<4194305-!!r?(r>>>0)+4294967296*o:NaN,s>>>=0,r=new Date(1e3*r),E[s>>>2>>>0]=r.getUTCSeconds(),E[s+4>>>2>>>0]=r.getUTCMinutes(),E[s+8>>>2>>>0]=r.getUTCHours(),E[s+12>>>2>>>0]=r.getUTCDate(),E[s+16>>>2>>>0]=r.getUTCMonth(),E[s+20>>>2>>>0]=r.getUTCFullYear()-1900,E[s+24>>>2>>>0]=r.getUTCDay(),E[s+28>>>2>>>0]=(r.getTime()-Date.UTC(r.getUTCFullYear(),0,1,0,0,0,0))/864e5|0},o:function(r,o,s){r=o+2097152>>>0<4194305-!!r?(r>>>0)+4294967296*o:NaN,s>>>=0,r=new Date(1e3*r),E[s>>>2>>>0]=r.getSeconds(),E[s+4>>>2>>>0]=r.getMinutes(),E[s+8>>>2>>>0]=r.getHours(),E[s+12>>>2>>>0]=r.getDate(),E[s+16>>>2>>>0]=r.getMonth(),E[s+20>>>2>>>0]=r.getFullYear()-1900,E[s+24>>>2>>>0]=r.getDay(),E[s+28>>>2>>>0]=(Ue(r.getFullYear())?ze:at)[r.getMonth()]+r.getDate()-1|0,E[s+36>>>2>>>0]=-(60*r.getTimezoneOffset()),o=new Date(r.getFullYear(),6,1).getTimezoneOffset();var m=new Date(r.getFullYear(),0,1).getTimezoneOffset();E[s+32>>>2>>>0]=(o!=m&&r.getTimezoneOffset()==Math.min(m,o))|0},p:function(r){r>>>=0;var o=new Date(E[r+20>>>2>>>0]+1900,E[r+16>>>2>>>0],E[r+12>>>2>>>0],E[r+8>>>2>>>0],E[r+4>>>2>>>0],E[r>>>2>>>0],0),s=E[r+32>>>2>>>0],m=o.getTimezoneOffset(),O=new Date(o.getFullYear(),6,1).getTimezoneOffset(),S=new Date(o.getFullYear(),0,1).getTimezoneOffset(),R=Math.min(S,O);return 0>s?E[r+32>>>2>>>0]=+(O!=S&&R==m):0>>2>>>0]=o.getDay(),E[r+28>>>2>>>0]=(Ue(o.getFullYear())?ze:at)[o.getMonth()]+o.getDate()-1|0,E[r>>>2>>>0]=o.getSeconds(),E[r+4>>>2>>>0]=o.getMinutes(),E[r+8>>>2>>>0]=o.getHours(),E[r+12>>>2>>>0]=o.getDate(),E[r+16>>>2>>>0]=o.getMonth(),E[r+20>>>2>>>0]=o.getYear(),r=o.getTime(),isNaN(r)?(E[Ye()>>>2>>>0]=61,r=-1):r/=1e3,Je((Ee=r,1<=+Math.abs(Ee)?0>>0:~~+Math.ceil((Ee-+(~~Ee>>>0))/4294967296)>>>0:0)),r>>>0},l:function(){return-52},m:function(){},t:function(r,o,s){function m(le){return(le=le.toTimeString().match(/\\(([A-Za-z ]+)\\)$/))?le[1]:"GMT"}s>>>=0;var O=new Date().getFullYear(),S=new Date(O,0,1),R=new Date(O,6,1);O=S.getTimezoneOffset();var K=R.getTimezoneOffset();Y[r>>>0>>>2>>>0]=60*Math.max(O,K),E[o>>>0>>>2>>>0]=+(O!=K),r=m(S),o=m(R),r=De(r),o=De(o),K>>2>>>0]=r,Y[s+4>>>2>>>0]=o):(Y[s>>>2>>>0]=o,Y[s+4>>>2>>>0]=r)},d:()=>{de("")},B:function(r,o,s){r>>>=0,o>>>=0,s>>>=0,Ne.length=0;for(var m;m=ae[o++>>>0];){var O=m!=105;O&=m!=112,s+=O&&s%8?4:0,Ne.push(m==112?Y[s>>>2>>>0]:m==105?E[s>>>2>>>0]:ue[s>>>3>>>0]),s+=O?8:4}return pe[r].apply(null,Ne)},h:()=>Date.now(),u:function(){return 4294901760},b:()=>performance.now(),I:function(r,o,s){return o>>>=0,ae.copyWithin(r>>>0>>>0,o>>>0,o+(s>>>0)>>>0)},s:function(r){r>>>=0;var o=ae.length;if(4294901760=s;s*=2){var m=o*(1+.2/s);m=Math.min(m,r+100663296);var O=Math;m=Math.max(r,m);e:{O=(O.min.call(O,4294901760,m+(65536-m%65536)%65536)-N.buffer.byteLength+65535)/65536;try{N.grow(O),Re();var S=1;break e}catch{}S=void 0}if(S)return!0}return!1},C:function(r,o){r>>>=0,o>>>=0;var s=0;return He().forEach((m,O)=>{var S=o+s;for(O=Y[r+4*O>>>2>>>0]=S,S=0;S>>0>>>0]=m.charCodeAt(S);ie[O>>>0>>>0]=0,s+=m.length+1}),0},D:function(r,o){r>>>=0,o>>>=0;var s=He();Y[r>>>2>>>0]=s.length;var m=0;return s.forEach(O=>m+=O.length+1),Y[o>>>2>>>0]=m,0},f:()=>52,j:function(){return 52},q:function(){return 70},i:function(r,o,s,m){o>>>=0,s>>>=0,m>>>=0;for(var O=0,S=0;S>>2>>>0],K=Y[o+4>>>2>>>0];o+=8;for(var le=0;le>>0],se=Le[r];oe===0||oe===10?((r===1?_:x)(Ce(se,0)),se.length=0):se.push(oe)}O+=K}return Y[m>>>2>>>0]=O,0},r:ot,c:function(r,o,s,m){return ot(r>>>0,o>>>0,s>>>0,m>>>0)}},C=function(){function r(s){return C=s.exports,C=ut(),N=C.K,Re(),ee.unshift(C.L),ce--,ce==0&&(P!==null&&(clearInterval(P),P=null),te&&(s=te,te=null,s())),C}var o={a:$};if(ce++,a.instantiateWasm)try{return a.instantiateWasm(o,r)}catch(s){x(`Module.instantiateWasm callback failed with error: ${s}`),l(s)}return Fe(o,function(s){r(s.instance)}).catch(l),{}}();a._OrtInit=(r,o)=>(a._OrtInit=C.M)(r,o),a._OrtGetLastError=(r,o)=>(a._OrtGetLastError=C.N)(r,o),a._OrtCreateSessionOptions=(r,o,s,m,O,S,R,K,le,oe)=>(a._OrtCreateSessionOptions=C.O)(r,o,s,m,O,S,R,K,le,oe),a._OrtAppendExecutionProvider=(r,o)=>(a._OrtAppendExecutionProvider=C.P)(r,o),a._OrtAddFreeDimensionOverride=(r,o,s)=>(a._OrtAddFreeDimensionOverride=C.Q)(r,o,s),a._OrtAddSessionConfigEntry=(r,o,s)=>(a._OrtAddSessionConfigEntry=C.R)(r,o,s),a._OrtReleaseSessionOptions=r=>(a._OrtReleaseSessionOptions=C.S)(r),a._OrtCreateSession=(r,o,s)=>(a._OrtCreateSession=C.T)(r,o,s),a._OrtReleaseSession=r=>(a._OrtReleaseSession=C.U)(r),a._OrtGetInputOutputCount=(r,o,s)=>(a._OrtGetInputOutputCount=C.V)(r,o,s),a._OrtGetInputName=(r,o)=>(a._OrtGetInputName=C.W)(r,o),a._OrtGetOutputName=(r,o)=>(a._OrtGetOutputName=C.X)(r,o),a._OrtFree=r=>(a._OrtFree=C.Y)(r),a._OrtCreateTensor=(r,o,s,m,O,S)=>(a._OrtCreateTensor=C.Z)(r,o,s,m,O,S),a._OrtGetTensorData=(r,o,s,m,O)=>(a._OrtGetTensorData=C._)(r,o,s,m,O),a._OrtReleaseTensor=r=>(a._OrtReleaseTensor=C.$)(r),a._OrtCreateRunOptions=(r,o,s,m)=>(a._OrtCreateRunOptions=C.aa)(r,o,s,m),a._OrtAddRunConfigEntry=(r,o,s)=>(a._OrtAddRunConfigEntry=C.ba)(r,o,s),a._OrtReleaseRunOptions=r=>(a._OrtReleaseRunOptions=C.ca)(r),a._OrtCreateBinding=r=>(a._OrtCreateBinding=C.da)(r),a._OrtBindInput=(r,o,s)=>(a._OrtBindInput=C.ea)(r,o,s),a._OrtBindOutput=(r,o,s,m)=>(a._OrtBindOutput=C.fa)(r,o,s,m),a._OrtClearBoundOutputs=r=>(a._OrtClearBoundOutputs=C.ga)(r),a._OrtReleaseBinding=r=>(a._OrtReleaseBinding=C.ha)(r),a._OrtRunWithBinding=(r,o,s,m,O)=>(a._OrtRunWithBinding=C.ia)(r,o,s,m,O),a._OrtRun=(r,o,s,m,O,S,R,K)=>(a._OrtRun=C.ja)(r,o,s,m,O,S,R,K),a._OrtEndProfiling=r=>(a._OrtEndProfiling=C.ka)(r);var Ye=()=>(Ye=C.la)(),st=a._malloc=r=>(st=a._malloc=C.ma)(r);a._free=r=>(a._free=C.na)(r);var Je=r=>(Je=C.pa)(r),it=()=>(it=C.qa)(),M=r=>(M=C.ra)(r),Be=r=>(Be=C.sa)(r);function ut(){var r=C;r=Object.assign({},r);var o=m=>()=>m()>>>0,s=m=>O=>m(O)>>>0;return r.la=o(r.la),r.ma=s(r.ma),r.qa=o(r.qa),r.sa=s(r.sa),r}a.stackAlloc=Be,a.stackSave=it,a.stackRestore=M,a.UTF8ToString=be,a.stringToUTF8=(r,o,s)=>ke(r,ae,o,s),a.lengthBytesUTF8=_e;var xe;te=function r(){xe||Xe(),xe||(te=r)};function Xe(){if(!(0pr)});var hr=et(()=>{});var yr=et(()=>{});var br={};Tt(br,{cpus:()=>rn});var rn,wr=St(()=>{rn=void 0});var _r=et((vr,Ft)=>{"use strict";var Or=(()=>{var u=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(u=u||__filename),function(d={}){function a(){return j.buffer!=de.buffer&&we(),de}function h(){return j.buffer!=de.buffer&&we(),ge}function l(){return j.buffer!=de.buffer&&we(),ye}function w(){return j.buffer!=de.buffer&&we(),J}function g(){return j.buffer!=de.buffer&&we(),fe}var i=d,A,D;i.ready=new Promise((e,t)=>{A=e,D=t});var I=Object.assign({},i),B="./this.program",F=(e,t)=>{throw t},U=typeof window=="object",k=typeof importScripts=="function",L=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",_=i.ENVIRONMENT_IS_PTHREAD||!1,x="";function N(e){return i.locateFile?i.locateFile(e,x):x+e}var he,ie,ae;if(L){var E=(Mt(),tt(At)),Y=(Dt(),tt(Ct));x=k?Y.dirname(x)+"/":__dirname+"/",he=(t,n)=>(t=be(t)?new URL(t):Y.normalize(t),E.readFileSync(t,n?void 0:"utf8")),ae=t=>(t=he(t,!0),t.buffer||(t=new Uint8Array(t)),t),ie=(t,n,f,y=!0)=>{t=be(t)?new URL(t):Y.normalize(t),E.readFile(t,y?void 0:"utf8",(b,v)=>{b?f(b):n(y?v.buffer:v)})},!i.thisProgram&&1{throw process.exitCode=t,n},i.inspect=()=>"[Emscripten Module object]";let e;try{e=hr()}catch(t){throw console.error(\'The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?\'),t}global.Worker=e.Worker}else(U||k)&&(k?x=self.location.href:typeof document<"u"&&document.currentScript&&(x=document.currentScript.src),typeof u<"u"&&u&&(x=u),x.indexOf("blob:")!==0?x=x.substr(0,x.replace(/[?#].*/,"").lastIndexOf("/")+1):x="",L||(he=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},k&&(ae=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),ie=(e,t,n)=>{var f=new XMLHttpRequest;f.open("GET",e,!0),f.responseType="arraybuffer",f.onload=()=>{f.status==200||f.status==0&&f.response?t(f.response):n()},f.onerror=n,f.send(null)}));L&&typeof performance>"u"&&(global.performance=yr().performance);var ue=console.log.bind(console),Re=console.error.bind(console);L&&(ue=(...e)=>E.writeSync(1,e.join(" ")+`\n`),Re=(...e)=>E.writeSync(2,e.join(" ")+`\n`));var Ie=ue,ee=Re;Object.assign(i,I),I=null,typeof WebAssembly!="object"&&Z("no native wasm support detected");var j,ce,P=!1,te,de,ge,ye,J,fe;function we(){var e=j.buffer;i.HEAP8=de=new Int8Array(e),i.HEAP16=new Int16Array(e),i.HEAPU8=ge=new Uint8Array(e),i.HEAPU16=new Uint16Array(e),i.HEAP32=ye=new Int32Array(e),i.HEAPU32=J=new Uint32Array(e),i.HEAPF32=new Float32Array(e),i.HEAPF64=fe=new Float64Array(e)}var Ae=16777216;if(_)j=i.wasmMemory;else if(i.wasmMemory)j=i.wasmMemory;else if(j=new WebAssembly.Memory({initial:Ae/65536,maximum:65536,shared:!0}),!(j.buffer instanceof SharedArrayBuffer))throw ee("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),L&&ee("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)"),Error("bad memory");we(),Ae=j.buffer.byteLength;var Me=[],Fe=[],Ee=[],pe=0,Oe=null,ve=null;function re(){if(pe--,pe==0&&(Oe!==null&&(clearInterval(Oe),Oe=null),ve)){var e=ve;ve=null,e()}}function Z(e){throw e="Aborted("+e+")",ee(e),P=!0,te=1,e=new WebAssembly.RuntimeError(e+". Build with -sASSERTIONS for more info."),D(e),e}var Ce=e=>e.startsWith("data:application/octet-stream;base64,"),be=e=>e.startsWith("file://"),_e;_e="ort-wasm-threaded.wasm",Ce(_e)||(_e=N(_e));function ke(e){if(ae)return ae(e);throw"both async and sync fetching of the wasm failed"}function Ue(e){if(U||k){if(typeof fetch=="function"&&!be(e))return fetch(e,{credentials:"same-origin"}).then(t=>{if(!t.ok)throw"failed to load wasm binary file at \'"+e+"\'";return t.arrayBuffer()}).catch(()=>ke(e));if(ie)return new Promise((t,n)=>{ie(e,f=>t(new Uint8Array(f)),n)})}return Promise.resolve().then(()=>ke(e))}function ze(e,t,n){return Ue(e).then(f=>WebAssembly.instantiate(f,t)).then(f=>f).then(n,f=>{ee(`failed to asynchronously prepare wasm: ${f}`),Z(f)})}function at(e,t){var n=_e;return typeof WebAssembly.instantiateStreaming!="function"||Ce(n)||be(n)||L||typeof fetch!="function"?ze(n,e,t):fetch(n,{credentials:"same-origin"}).then(f=>WebAssembly.instantiateStreaming(f,e).then(t,function(y){return ee(`wasm streaming compile failed: ${y}`),ee("falling back to ArrayBuffer instantiation"),ze(n,e,t)}))}var De,Ne={921276:(e,t,n,f)=>{if(typeof i>"u"||!i.cb)return 1;if(e=Ge(e>>>0),e.startsWith("./")&&(e=e.substring(2)),e=i.cb.get(e),!e)return 2;if(t>>>=0,n>>>=0,f>>>=0,t+n>e.byteLength)return 3;try{return h().set(e.subarray(t,t+n),f>>>0),0}catch{return 4}}};function Pe(e){this.name="ExitStatus",this.message=`Program terminated with exit(${e})`,this.status=e}var He=e=>{e.terminate(),e.onmessage=()=>{}},$e=e=>{M.Pa.length==0&&(Je(),M.Ya(M.Pa[0]));var t=M.Pa.pop();if(!t)return 6;M.Qa.push(t),M.Ma[e.Oa]=t,t.Oa=e.Oa;var n={cmd:"run",start_routine:e.kb,arg:e.hb,pthread_ptr:e.Oa};return L&&t.unref(),t.postMessage(n,e.qb),0},Le=0,qe=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,Ve=(e,t,n)=>{t>>>=0;var f=t+n;for(n=t;e[n]&&!(n>=f);)++n;if(16y?f+=String.fromCharCode(y):(y-=65536,f+=String.fromCharCode(55296|y>>10,56320|y&1023))}}else f+=String.fromCharCode(y)}return f},Ge=(e,t)=>(e>>>=0)?Ve(h(),e,t):"",ot=e=>{var t=vt();return e=e(),ct(t),e};function $(e,t){var n=arguments.length-2,f=arguments;return ot(()=>{for(var y=_t(8*n),b=y>>>3,v=0;v>>0]=z}return ar(e,n,y,t)})}function C(e){if(_)return $(0,1,e);te=e,0{if(te=e,_)throw ut(e),"unwind";C(e)};function st(){for(var e=i.numThreads;e--;)Je();Me.unshift(()=>{pe++,it(()=>re())})}function Je(){var e=N("ort-wasm-threaded.worker.js");e=new Worker(e),M.Pa.push(e)}function it(e){_?e():Promise.all(M.Pa.map(M.Ya)).then(e)}var M={Pa:[],Qa:[],bb:[],Ma:{},Wa(){_?(M.receiveObjectTransfer=M.jb,M.threadInitTLS=M.ab,M.setExitStatus=M.$a):st()},$a:e=>te=e,tb:["$terminateWorker"],lb:()=>{for(var e of M.Qa)He(e);for(e of M.Pa)He(e);M.Pa=[],M.Qa=[],M.Ma=[]},Za:e=>{var t=e.Oa;delete M.Ma[t],M.Pa.push(e),M.Qa.splice(M.Qa.indexOf(e),1),e.Oa=0,wt(t)},jb(){},ab(){M.bb.forEach(e=>e())},Ya:e=>new Promise(t=>{e.onmessage=b=>{b=b.data;var v=b.cmd;if(b.targetThread&&b.targetThread!=lt()){var z=M.Ma[b.targetThread];z?z.postMessage(b,b.transferList):ee(`Internal error! Worker sent a message "${v}" to target pthread ${b.targetThread}, but that thread no longer exists!`)}else v==="checkMailbox"?ft():v==="spawnThread"?$e(b):v==="cleanupThread"?M.Za(M.Ma[b.thread]):v==="killThread"?(b=b.thread,v=M.Ma[b],delete M.Ma[b],He(v),wt(b),M.Qa.splice(M.Qa.indexOf(v),1),v.Oa=0):v==="cancelThread"?M.Ma[b.thread].postMessage({cmd:"cancel"}):v==="loaded"?(e.loaded=!0,L&&!e.Oa&&e.unref(),t(e)):v==="alert"?alert(`Thread ${b.threadId}: ${b.text}`):b.target==="setimmediate"?e.postMessage(b):v==="callHandler"?i[b.handler](...b.args):v&&ee(`worker sent an unknown command ${v}`)},e.onerror=b=>{throw ee(`worker sent an error! ${b.filename}:${b.lineno}: ${b.message}`),b},L&&(e.on("message",b=>e.onmessage({data:b})),e.on("error",b=>e.onerror(b)));var n=[],f=["onExit"],y;for(y of f)i.hasOwnProperty(y)&&n.push(y);e.postMessage({cmd:"load",handlers:n,urlOrBlob:i.mainScriptUrlOrBlob||u,wasmMemory:j,wasmModule:ce})})};i.PThread=M;var Be=e=>{for(;0{var e=lt(),t=w()[e+52>>>2>>>0];e=w()[e+56>>>2>>>0],ir(t,t-e),ct(t)};function ut(e){if(_)return $(1,0,e);Ye(e)}var xe=[],Xe;i.invokeEntryPoint=(e,t)=>{var n=xe[e];n||(e>=xe.length&&(xe.length=e+1),xe[e]=n=Xe.get(e)),e=n(t),0>>2>>>0]=t},this.fb=function(t){w()[this.Va+8>>>2>>>0]=t},this.Wa=function(t,n){this.eb(),this.gb(t),this.fb(n)},this.eb=function(){w()[this.Va+16>>>2>>>0]=0}}var o=0,s=0;function m(e,t,n,f){return _?$(2,1,e,t,n,f):O(e,t,n,f)}function O(e,t,n,f){if(e>>>=0,t>>>=0,n>>>=0,f>>>=0,typeof SharedArrayBuffer>"u")return ee("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;var y=[];return _&&y.length===0?m(e,t,n,f):(e={kb:n,Oa:e,hb:f,qb:y},_?(e.sb="spawnThread",postMessage(e,y),0):$e(e))}function S(e,t,n){return _?$(3,1,e,t,n):0}function R(e,t){if(_)return $(4,1,e,t)}var K=e=>{for(var t=0,n=0;n=f?t++:2047>=f?t+=2:55296<=f&&57343>=f?(t+=4,++n):t+=3}return t},le=(e,t,n,f)=>{if(n>>>=0,!(0=v){var z=e.charCodeAt(++b);v=65536+((v&1023)<<10)|z&1023}if(127>=v){if(n>=f)break;t[n++>>>0]=v}else{if(2047>=v){if(n+1>=f)break;t[n++>>>0]=192|v>>6}else{if(65535>=v){if(n+2>=f)break;t[n++>>>0]=224|v>>12}else{if(n+3>=f)break;t[n++>>>0]=240|v>>18,t[n++>>>0]=128|v>>12&63}t[n++>>>0]=128|v>>6&63}t[n++>>>0]=128|v&63}}return t[n>>>0]=0,n-y},oe=(e,t,n)=>le(e,h(),t,n);function se(e,t){if(_)return $(5,1,e,t)}function Qe(e,t,n){if(_)return $(6,1,e,t,n)}function Ze(e,t,n){return _?$(7,1,e,t,n):0}function c(e,t){if(_)return $(8,1,e,t)}function W(e,t,n){if(_)return $(9,1,e,t,n)}function G(e,t,n,f){if(_)return $(10,1,e,t,n,f)}function Se(e,t,n,f){if(_)return $(11,1,e,t,n,f)}function Ke(e,t,n,f){if(_)return $(12,1,e,t,n,f)}function Bt(e){if(_)return $(13,1,e)}function Wt(e,t){if(_)return $(14,1,e,t)}function kt(e,t,n){if(_)return $(15,1,e,t,n)}function mt(e){e>>>=0,typeof Atomics.rb=="function"&&(Atomics.rb(l(),e>>>2,e).value.then(ft),e+=128,Atomics.store(l(),e>>>2,1))}i.__emscripten_thread_mailbox_await=mt;var ft=()=>{var e=lt();if(e&&(mt(e),e=or,!P))try{if(e(),!(0e%4===0&&(e%100!==0||e%400===0),Nt=[0,31,60,91,121,152,182,213,244,274,305,335],Ht=[0,31,59,90,120,151,181,212,243,273,304,334];function $t(e,t,n,f,y,b,v,z){return _?$(16,1,e,t,n,f,y,b,v,z):-52}function Gt(e,t,n,f,y,b,v){if(_)return $(17,1,e,t,n,f,y,b,v)}var Yt=e=>{var t=K(e)+1,n=rr(t);return n&&oe(e,n,t),n},ht=[],yt={},jt=()=>{if(!bt){var e={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",_:B||"./this.program"},t;for(t in yt)yt[t]===void 0?delete e[t]:e[t]=yt[t];var n=[];for(t in e)n.push(`${t}=${e[t]}`);bt=n}return bt},bt;function zt(e,t){if(_)return $(18,1,e,t);e>>>=0,t>>>=0;var n=0;return jt().forEach((f,y)=>{var b=t+n;for(y=w()[e+4*y>>>2>>>0]=b,b=0;b>>0>>>0]=f.charCodeAt(b);a()[y>>>0>>>0]=0,n+=f.length+1}),0}function qt(e,t){if(_)return $(19,1,e,t);e>>>=0,t>>>=0;var n=jt();w()[e>>>2>>>0]=n.length;var f=0;return n.forEach(y=>f+=y.length+1),w()[t>>>2>>>0]=f,0}function Vt(e){return _?$(20,1,e):52}function Jt(e,t,n,f){return _?$(21,1,e,t,n,f):52}function Xt(e,t,n,f,y){return _?$(22,1,e,t,n,f,y):70}var Gr=[null,[],[]];function Qt(e,t,n,f){if(_)return $(23,1,e,t,n,f);t>>>=0,n>>>=0,f>>>=0;for(var y=0,b=0;b>>2>>>0],z=w()[t+4>>>2>>>0];t+=8;for(var Te=0;Te>>0],me=Gr[e];ne===0||ne===10?((e===1?Ie:ee)(Ve(me,0)),me.length=0):me.push(ne)}y+=z}return w()[f>>>2>>>0]=y,0}var Zt=[31,29,31,30,31,30,31,31,30,31,30,31],Kt=[31,28,31,30,31,30,31,31,30,31,30,31];function Yr(e){var t=Array(K(e)+1);return le(e,t,0,t.length),t}var jr=(e,t)=>{a().set(e,t>>>0)};function er(e,t,n,f){function y(p,H,q){for(p=typeof p=="number"?p.toString():p||"";p.lengthcr?-1:0We-p.getDate())H-=We-p.getDate()+1,p.setDate(1),11>q?p.setMonth(q+1):(p.setMonth(0),p.setFullYear(p.getFullYear()+1));else{p.setDate(p.getDate()+H);break}}return q=new Date(p.getFullYear()+1,0,4),H=z(new Date(p.getFullYear(),0,4)),q=z(q),0>=v(H,p)?0>=v(q,p)?p.getFullYear()+1:p.getFullYear():p.getFullYear()-1}e>>>=0,t>>>=0,n>>>=0,f>>>=0;var ne=w()[f+40>>>2>>>0];f={ob:l()[f>>>2>>>0],nb:l()[f+4>>>2>>>0],Ta:l()[f+8>>>2>>>0],Xa:l()[f+12>>>2>>>0],Ua:l()[f+16>>>2>>>0],Sa:l()[f+20>>>2>>>0],Na:l()[f+24>>>2>>>0],Ra:l()[f+28>>>2>>>0],ub:l()[f+32>>>2>>>0],mb:l()[f+36>>>2>>>0],pb:ne?Ge(ne):""},n=Ge(n),ne={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var me in ne)n=n.replace(new RegExp(me,"g"),ne[me]);var fr="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),lr="January February March April May June July August September October November December".split(" ");ne={"%a":p=>fr[p.Na].substring(0,3),"%A":p=>fr[p.Na],"%b":p=>lr[p.Ua].substring(0,3),"%B":p=>lr[p.Ua],"%C":p=>b((p.Sa+1900)/100|0,2),"%d":p=>b(p.Xa,2),"%e":p=>y(p.Xa,2," "),"%g":p=>Te(p).toString().substring(2),"%G":p=>Te(p),"%H":p=>b(p.Ta,2),"%I":p=>(p=p.Ta,p==0?p=12:12{for(var H=0,q=0;q<=p.Ua-1;H+=(je(p.Sa+1900)?Zt:Kt)[q++]);return b(p.Xa+H,3)},"%m":p=>b(p.Ua+1,2),"%M":p=>b(p.nb,2),"%n":()=>`\n`,"%p":p=>0<=p.Ta&&12>p.Ta?"AM":"PM","%S":p=>b(p.ob,2),"%t":()=>" ","%u":p=>p.Na||7,"%U":p=>b(Math.floor((p.Ra+7-p.Na)/7),2),"%V":p=>{var H=Math.floor((p.Ra+7-(p.Na+6)%7)/7);if(2>=(p.Na+371-p.Ra-2)%7&&H++,H)H==53&&(q=(p.Na+371-p.Ra)%7,q==4||q==3&&je(p.Sa)||(H=1));else{H=52;var q=(p.Na+7-p.Ra-1)%7;(q==4||q==5&&je(p.Sa%400-1))&&H++}return b(H,2)},"%w":p=>p.Na,"%W":p=>b(Math.floor((p.Ra+7-(p.Na+6)%7)/7),2),"%y":p=>(p.Sa+1900).toString().substring(2),"%Y":p=>p.Sa+1900,"%z":p=>{p=p.mb;var H=0<=p;return p=Math.abs(p)/60,(H?"+":"-")+("0000"+(p/60*100+p%60)).slice(-4)},"%Z":p=>p.pb,"%%":()=>"%"},n=n.replace(/%%/g,"\\0\\0");for(me in ne)n.includes(me)&&(n=n.replace(new RegExp(me,"g"),ne[me](f)));return n=n.replace(/\\0\\0/g,"%"),me=Yr(n),me.length>t?0:(jr(me,e),me.length-1)}M.Wa();var zr=[C,ut,m,S,R,se,Qe,Ze,c,W,G,Se,Ke,Bt,Wt,kt,$t,Gt,zt,qt,Vt,Jt,Xt,Qt],qr={b:function(e,t,n){throw e>>>=0,new r(e).Wa(t>>>0,n>>>0),o=e,s++,o},L:function(e){nr(e>>>0,!k,1,!U,131072,!1),M.ab()},j:function(e){e>>>=0,_?postMessage({cmd:"cleanupThread",thread:e}):M.Za(M.Ma[e])},H:O,h:S,S:R,D:se,F:Qe,T:Ze,Q:c,J:W,P:G,n:Se,E:Ke,B:Bt,R:Wt,C:kt,p:()=>1,z:function(e,t){e>>>=0,e==t>>>0?setTimeout(()=>ft()):_?postMessage({targetThread:e,cmd:"checkMailbox"}):(e=M.Ma[e])&&e.postMessage({cmd:"checkMailbox"})},I:function(e,t,n,f){t>>>=0,gt.length=n,f=f>>>0>>>3;for(var y=0;y>>0];return e=0>e?Ne[-e-1]:zr[e],M.ib=t,t=e.apply(null,gt),M.ib=0,t},K:mt,o:function(e){L&&M.Ma[e>>>0].ref()},s:function(e,t,n){e=t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN,n>>>=0,e=new Date(1e3*e),l()[n>>>2>>>0]=e.getUTCSeconds(),l()[n+4>>>2>>>0]=e.getUTCMinutes(),l()[n+8>>>2>>>0]=e.getUTCHours(),l()[n+12>>>2>>>0]=e.getUTCDate(),l()[n+16>>>2>>>0]=e.getUTCMonth(),l()[n+20>>>2>>>0]=e.getUTCFullYear()-1900,l()[n+24>>>2>>>0]=e.getUTCDay(),e=(e.getTime()-Date.UTC(e.getUTCFullYear(),0,1,0,0,0,0))/864e5|0,l()[n+28>>>2>>>0]=e},t:function(e,t,n){e=t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN,n>>>=0,e=new Date(1e3*e),l()[n>>>2>>>0]=e.getSeconds(),l()[n+4>>>2>>>0]=e.getMinutes(),l()[n+8>>>2>>>0]=e.getHours(),l()[n+12>>>2>>>0]=e.getDate(),l()[n+16>>>2>>>0]=e.getMonth(),l()[n+20>>>2>>>0]=e.getFullYear()-1900,l()[n+24>>>2>>>0]=e.getDay(),t=(je(e.getFullYear())?Nt:Ht)[e.getMonth()]+e.getDate()-1|0,l()[n+28>>>2>>>0]=t,l()[n+36>>>2>>>0]=-(60*e.getTimezoneOffset()),t=new Date(e.getFullYear(),6,1).getTimezoneOffset();var f=new Date(e.getFullYear(),0,1).getTimezoneOffset();e=(t!=f&&e.getTimezoneOffset()==Math.min(f,t))|0,l()[n+32>>>2>>>0]=e},u:function(e){e>>>=0;var t=new Date(l()[e+20>>>2>>>0]+1900,l()[e+16>>>2>>>0],l()[e+12>>>2>>>0],l()[e+8>>>2>>>0],l()[e+4>>>2>>>0],l()[e>>>2>>>0],0),n=l()[e+32>>>2>>>0],f=t.getTimezoneOffset(),y=new Date(t.getFullYear(),6,1).getTimezoneOffset(),b=new Date(t.getFullYear(),0,1).getTimezoneOffset(),v=Math.min(b,y);return 0>n?l()[e+32>>>2>>>0]=+(y!=b&&v==f):0>>2>>>0]=t.getDay(),n=(je(t.getFullYear())?Nt:Ht)[t.getMonth()]+t.getDate()-1|0,l()[e+28>>>2>>>0]=n,l()[e>>>2>>>0]=t.getSeconds(),l()[e+4>>>2>>>0]=t.getMinutes(),l()[e+8>>>2>>>0]=t.getHours(),l()[e+12>>>2>>>0]=t.getDate(),l()[e+16>>>2>>>0]=t.getMonth(),l()[e+20>>>2>>>0]=t.getYear(),e=t.getTime(),isNaN(e)?(l()[tr()>>>2>>>0]=61,e=-1):e/=1e3,sr((De=e,1<=+Math.abs(De)?0>>0:~~+Math.ceil((De-+(~~De>>>0))/4294967296)>>>0:0)),e>>>0},q:$t,r:Gt,y:function(e,t,n){function f(ne){return(ne=ne.toTimeString().match(/\\(([A-Za-z ]+)\\)$/))?ne[1]:"GMT"}e>>>=0,t>>>=0,n>>>=0;var y=new Date().getFullYear(),b=new Date(y,0,1),v=new Date(y,6,1);y=b.getTimezoneOffset();var z=v.getTimezoneOffset(),Te=Math.max(y,z);w()[e>>>2>>>0]=60*Te,l()[t>>>2>>>0]=+(y!=z),e=f(b),t=f(v),e=Yt(e),t=Yt(t),z>>2>>>0]=e,w()[n+4>>>2>>>0]=t):(w()[n>>>2>>>0]=t,w()[n+4>>>2>>>0]=e)},c:()=>{Z("")},O:function(e,t,n){e>>>=0,t>>>=0,n>>>=0,ht.length=0;for(var f;f=h()[t++>>>0];){var y=f!=105;y&=f!=112,n+=y&&n%8?4:0,ht.push(f==112?w()[n>>>2>>>0]:f==105?l()[n>>>2>>>0]:g()[n>>>3>>>0]),n+=y?8:4}return Ne[e].apply(null,ht)},k:()=>{},i:()=>Date.now(),U:()=>{throw Le+=1,"unwind"},A:function(){return 4294901760},e:()=>performance.timeOrigin+performance.now(),f:()=>L?(wr(),tt(br)).cpus().length:navigator.hardwareConcurrency,x:function(e){e>>>=0;var t=h().length;if(e<=t||4294901760=n;n*=2){var f=t*(1+.2/n);f=Math.min(f,e+100663296);var y=Math;f=Math.max(e,f);e:{y=(y.min.call(y,4294901760,f+(65536-f%65536)%65536)-j.buffer.byteLength+65535)/65536;try{j.grow(y),we();var b=1;break e}catch{}b=void 0}if(b)return!0}return!1},M:zt,N:qt,G:Ye,g:Vt,m:Jt,v:Xt,l:Qt,a:j||i.wasmMemory,w:er,d:function(e,t,n,f){return er(e>>>0,t>>>0,n>>>0,f>>>0)}},T=function(){function e(n,f){return T=n.exports,T=Vr(),M.bb.push(T.za),Xe=T.Aa,Fe.unshift(T.V),ce=f,re(),T}var t={a:qr};if(pe++,i.instantiateWasm)try{return i.instantiateWasm(t,e)}catch(n){ee(`Module.instantiateWasm callback failed with error: ${n}`),D(n)}return at(t,function(n){e(n.instance,n.module)}).catch(D),{}}();i._OrtInit=(e,t)=>(i._OrtInit=T.W)(e,t),i._OrtGetLastError=(e,t)=>(i._OrtGetLastError=T.X)(e,t),i._OrtCreateSessionOptions=(e,t,n,f,y,b,v,z,Te,ne)=>(i._OrtCreateSessionOptions=T.Y)(e,t,n,f,y,b,v,z,Te,ne),i._OrtAppendExecutionProvider=(e,t)=>(i._OrtAppendExecutionProvider=T.Z)(e,t),i._OrtAddFreeDimensionOverride=(e,t,n)=>(i._OrtAddFreeDimensionOverride=T._)(e,t,n),i._OrtAddSessionConfigEntry=(e,t,n)=>(i._OrtAddSessionConfigEntry=T.$)(e,t,n),i._OrtReleaseSessionOptions=e=>(i._OrtReleaseSessionOptions=T.aa)(e),i._OrtCreateSession=(e,t,n)=>(i._OrtCreateSession=T.ba)(e,t,n),i._OrtReleaseSession=e=>(i._OrtReleaseSession=T.ca)(e),i._OrtGetInputOutputCount=(e,t,n)=>(i._OrtGetInputOutputCount=T.da)(e,t,n),i._OrtGetInputName=(e,t)=>(i._OrtGetInputName=T.ea)(e,t),i._OrtGetOutputName=(e,t)=>(i._OrtGetOutputName=T.fa)(e,t),i._OrtFree=e=>(i._OrtFree=T.ga)(e),i._OrtCreateTensor=(e,t,n,f,y,b)=>(i._OrtCreateTensor=T.ha)(e,t,n,f,y,b),i._OrtGetTensorData=(e,t,n,f,y)=>(i._OrtGetTensorData=T.ia)(e,t,n,f,y),i._OrtReleaseTensor=e=>(i._OrtReleaseTensor=T.ja)(e),i._OrtCreateRunOptions=(e,t,n,f)=>(i._OrtCreateRunOptions=T.ka)(e,t,n,f),i._OrtAddRunConfigEntry=(e,t,n)=>(i._OrtAddRunConfigEntry=T.la)(e,t,n),i._OrtReleaseRunOptions=e=>(i._OrtReleaseRunOptions=T.ma)(e),i._OrtCreateBinding=e=>(i._OrtCreateBinding=T.na)(e),i._OrtBindInput=(e,t,n)=>(i._OrtBindInput=T.oa)(e,t,n),i._OrtBindOutput=(e,t,n,f)=>(i._OrtBindOutput=T.pa)(e,t,n,f),i._OrtClearBoundOutputs=e=>(i._OrtClearBoundOutputs=T.qa)(e),i._OrtReleaseBinding=e=>(i._OrtReleaseBinding=T.ra)(e),i._OrtRunWithBinding=(e,t,n,f,y)=>(i._OrtRunWithBinding=T.sa)(e,t,n,f,y),i._OrtRun=(e,t,n,f,y,b,v,z)=>(i._OrtRun=T.ta)(e,t,n,f,y,b,v,z),i._OrtEndProfiling=e=>(i._OrtEndProfiling=T.ua)(e);var tr=()=>(tr=T.va)(),lt=i._pthread_self=()=>(lt=i._pthread_self=T.wa)(),rr=i._malloc=e=>(rr=i._malloc=T.xa)(e);i._free=e=>(i._free=T.ya)(e),i.__emscripten_tls_init=()=>(i.__emscripten_tls_init=T.za)();var nr=i.__emscripten_thread_init=(e,t,n,f,y,b)=>(nr=i.__emscripten_thread_init=T.Ba)(e,t,n,f,y,b);i.__emscripten_thread_crashed=()=>(i.__emscripten_thread_crashed=T.Ca)();var ar=(e,t,n,f)=>(ar=T.Da)(e,t,n,f),wt=e=>(wt=T.Ea)(e),Ot=i.__emscripten_thread_exit=e=>(Ot=i.__emscripten_thread_exit=T.Fa)(e),or=()=>(or=T.Ga)(),sr=e=>(sr=T.Ha)(e),ir=(e,t)=>(ir=T.Ia)(e,t),vt=()=>(vt=T.Ja)(),ct=e=>(ct=T.Ka)(e),_t=e=>(_t=T.La)(e);function Vr(){var e=T;e=Object.assign({},e);var t=f=>()=>f()>>>0,n=f=>y=>f(y)>>>0;return e.va=t(e.va),e.wa=t(e.wa),e.xa=n(e.xa),e.emscripten_main_runtime_thread_id=t(e.emscripten_main_runtime_thread_id),e.Ja=t(e.Ja),e.La=n(e.La),e}i.wasmMemory=j,i.stackAlloc=_t,i.stackSave=vt,i.stackRestore=ct,i.keepRuntimeAlive=()=>0Or)});var Er=et((On,nn)=>{nn.exports=\'"use strict";var Module={},ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require("worker_threads"),parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",e=>onmessage({data:e}));var fs=require("fs"),vm=require("vm");Object.assign(global,{self:global,require,Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:e=>vm.runInThisContext(fs.readFileSync(e,"utf8"),{filename:e}),postMessage:e=>parentPort.postMessage(e),performance:global.performance||{now:Date.now}})}var initializedJS=!1;function threadPrintErr(){var e=Array.prototype.slice.call(arguments).join(" ");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,e+`\\n`);return}console.error(e)}function threadAlert(){var e=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:e,threadId:Module._pthread_self()})}var err=threadPrintErr;self.alert=threadAlert,Module.instantiateWasm=(e,t)=>{var a=Module.wasmModule;Module.wasmModule=null;var r=new WebAssembly.Instance(a,e);return t(r)},self.onunhandledrejection=e=>{throw e.reason||e};function handleMessage(e){try{if(e.data.cmd==="load"){let a=[];self.onmessage=r=>a.push(r),self.startWorker=r=>{Module=r,postMessage({cmd:"loaded"});for(let s of a)handleMessage(s);self.onmessage=handleMessage},Module.wasmModule=e.data.wasmModule;for(const r of e.data.handlers)Module[r]=(...s)=>{postMessage({cmd:"callHandler",handler:r,args:s})};if(Module.wasmMemory=e.data.wasmMemory,Module.buffer=Module.wasmMemory.buffer,Module.ENVIRONMENT_IS_PTHREAD=!0,typeof e.data.urlOrBlob=="string")importScripts(e.data.urlOrBlob);else{var t=URL.createObjectURL(e.data.urlOrBlob);importScripts(t),URL.revokeObjectURL(t)}ortWasmThreaded(Module)}else if(e.data.cmd==="run"){Module.__emscripten_thread_init(e.data.pthread_ptr,0,0,1),Module.__emscripten_thread_mailbox_await(e.data.pthread_ptr),Module.establishStackSpace(),Module.PThread.receiveObjectTransfer(e.data),Module.PThread.threadInitTLS(),initializedJS||(initializedJS=!0);try{Module.invokeEntryPoint(e.data.start_routine,e.data.arg)}catch(a){if(a!="unwind")throw a}}else e.data.cmd==="cancel"?Module._pthread_self()&&Module.__emscripten_thread_exit(-1):e.data.target==="setimmediate"||(e.data.cmd==="checkMailbox"?initializedJS&&Module.checkMailbox():e.data.cmd&&(err(`worker.js received unknown command ${e.data.cmd}`),err(e.data)))}catch(a){throw Module.__emscripten_thread_crashed?.(),a}}self.onmessage=handleMessage;\\n\'});var Tr;Tr=gr();var an=_r(),Ut,Pt=!1,pt=!1,Sr=!1,on=u=>{if(u===1)return!1;if(typeof SharedArrayBuffer>"u")return typeof self<"u"&&!self.crossOriginIsolated&&console.warn("env.wasm.numThreads is set to "+u+", but this will not work unless you enable crossOriginIsolated mode. See https://web.dev/cross-origin-isolation-guide/ for more info."),!1;typeof process<"u"&&process.versions&&process.versions.node&&console.warn("env.wasm.numThreads is set to "+u+", however, currently onnxruntime-web does not support multi-threads in Node.js. Please consider using onnxruntime-node for performance critical scenarios.");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}},sn=()=>{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}},un=(u,d)=>u?d?"ort-wasm-simd-threaded.wasm":"ort-wasm-simd.wasm":d?"ort-wasm-threaded.wasm":"ort-wasm.wasm",Ar=async u=>{if(Pt)return Promise.resolve();if(pt)throw new Error("multiple calls to \'initializeWebAssembly()\' detected.");if(Sr)throw new Error("previous call to \'initializeWebAssembly()\' failed.");pt=!0;let d=u.initTimeout,a=u.numThreads,h=u.simd,l=on(a),w=h&&sn(),g=u.wasmPaths,i=typeof g=="string"?g:void 0,A=un(w,l),D=typeof g=="object"?g[A]:void 0,I=!1,B=[];if(d>0&&B.push(new Promise(F=>{setTimeout(()=>{I=!0,F()},d)})),B.push(new Promise((F,U)=>{let k=l?an:Tr,L={locateFile:(_,x)=>l&&_.endsWith(".worker.js")&&typeof Blob<"u"?URL.createObjectURL(new Blob([Er()],{type:"text/javascript"})):_.endsWith(".wasm")?D||(i??x)+A:x+_};if(l)if(L.numThreads=a,typeof Blob>"u")L.mainScriptUrlOrBlob=(void 0)(__dirname,"ort-wasm-threaded.js");else{let _=`var ortWasmThreaded=${k.toString()};`;L.mainScriptUrlOrBlob=new Blob([_],{type:"text/javascript"})}k(L).then(_=>{pt=!1,Pt=!0,Ut=_,F()},_=>{pt=!1,Sr=!0,U(_)})})),await Promise.race(B),I)throw new Error(`WebAssembly backend initializing failed due to timeout: ${d}ms`)},X=()=>{if(Pt&&Ut)return Ut;throw new Error("WebAssembly is not initialized yet.")};var Q=(u,d)=>{let a=X(),h=a.lengthBytesUTF8(u)+1,l=a._malloc(h);return a.stringToUTF8(u,l,h),d.push(l),l},rt=(u,d,a,h)=>{if(typeof u=="object"&&u!==null){if(a.has(u))throw new Error("Circular reference in options");a.add(u)}Object.entries(u).forEach(([l,w])=>{let g=d?d+l:l;if(typeof w=="object")rt(w,g+".",a,h);else if(typeof w=="string"||typeof w=="number")h(g,w.toString());else if(typeof w=="boolean")h(g,w?"1":"0");else throw new Error(`Can\'t handle extra config type: ${typeof w}`)})},V=u=>{let d=X(),a=d.stackSave();try{let h=d.stackAlloc(8);d._OrtGetLastError(h,h+4);let l=d.HEAP32[h/4],w=d.HEAPU32[h/4+1],g=w?d.UTF8ToString(w):"";throw new Error(`${u} ERROR_CODE: ${l}, ERROR_MESSAGE: ${g}`)}finally{d.stackRestore(a)}};var Mr=u=>{let d=X(),a=0,h=[],l=u||{};try{if(u?.logSeverityLevel===void 0)l.logSeverityLevel=2;else if(typeof u.logSeverityLevel!="number"||!Number.isInteger(u.logSeverityLevel)||u.logSeverityLevel<0||u.logSeverityLevel>4)throw new Error(`log serverity level is not valid: ${u.logSeverityLevel}`);if(u?.logVerbosityLevel===void 0)l.logVerbosityLevel=0;else if(typeof u.logVerbosityLevel!="number"||!Number.isInteger(u.logVerbosityLevel))throw new Error(`log verbosity level is not valid: ${u.logVerbosityLevel}`);u?.terminate===void 0&&(l.terminate=!1);let w=0;return u?.tag!==void 0&&(w=Q(u.tag,h)),a=d._OrtCreateRunOptions(l.logSeverityLevel,l.logVerbosityLevel,!!l.terminate,w),a===0&&V("Can\'t create run options."),u?.extra!==void 0&&rt(u.extra,"",new WeakSet,(g,i)=>{let A=Q(g,h),D=Q(i,h);d._OrtAddRunConfigEntry(a,A,D)!==0&&V(`Can\'t set a run config entry: ${g} - ${i}.`)}),[a,h]}catch(w){throw a!==0&&d._OrtReleaseRunOptions(a),h.forEach(g=>d._free(g)),w}};var fn=u=>{switch(u){case"disabled":return 0;case"basic":return 1;case"extended":return 2;case"all":return 99;default:throw new Error(`unsupported graph optimization level: ${u}`)}},ln=u=>{switch(u){case"sequential":return 0;case"parallel":return 1;default:throw new Error(`unsupported execution mode: ${u}`)}},cn=u=>{u.extra||(u.extra={}),u.extra.session||(u.extra.session={});let d=u.extra.session;d.use_ort_model_bytes_directly||(d.use_ort_model_bytes_directly="1"),u.executionProviders&&u.executionProviders.some(a=>(typeof a=="string"?a:a.name)==="webgpu")&&(u.enableMemPattern=!1)},dn=(u,d,a)=>{for(let h of d){let l=typeof h=="string"?h:h.name;switch(l){case"webnn":if(l="WEBNN",typeof h!="string"){let g=h;if(g?.deviceType){let i=Q("deviceType",a),A=Q(g.deviceType,a);X()._OrtAddSessionConfigEntry(u,i,A)!==0&&V(`Can\'t set a session config entry: \'deviceType\' - ${g.deviceType}.`)}if(g?.numThreads){let i=g.numThreads;(typeof i!="number"||!Number.isInteger(i)||i<0)&&(i=0);let A=Q("numThreads",a),D=Q(i.toString(),a);X()._OrtAddSessionConfigEntry(u,A,D)!==0&&V(`Can\'t set a session config entry: \'numThreads\' - ${g.numThreads}.`)}if(g?.powerPreference){let i=Q("powerPreference",a),A=Q(g.powerPreference,a);X()._OrtAddSessionConfigEntry(u,i,A)!==0&&V(`Can\'t set a session config entry: \'powerPreference\' - ${g.powerPreference}.`)}}break;case"webgpu":if(l="JS",typeof h!="string"){let g=h;if(g?.preferredLayout){if(g.preferredLayout!=="NCHW"&&g.preferredLayout!=="NHWC")throw new Error(`preferredLayout must be either \'NCHW\' or \'NHWC\': ${g.preferredLayout}`);let i=Q("preferredLayout",a),A=Q(g.preferredLayout,a);X()._OrtAddSessionConfigEntry(u,i,A)!==0&&V(`Can\'t set a session config entry: \'preferredLayout\' - ${g.preferredLayout}.`)}}break;case"wasm":case"cpu":continue;default:throw new Error(`not supported execution provider: ${l}`)}let w=Q(l,a);X()._OrtAppendExecutionProvider(u,w)!==0&&V(`Can\'t append execution provider: ${l}.`)}},Cr=u=>{let d=X(),a=0,h=[],l=u||{};cn(l);try{let w=fn(l.graphOptimizationLevel??"all"),g=ln(l.executionMode??"sequential"),i=typeof l.logId=="string"?Q(l.logId,h):0,A=l.logSeverityLevel??2;if(!Number.isInteger(A)||A<0||A>4)throw new Error(`log serverity level is not valid: ${A}`);let D=l.logVerbosityLevel??0;if(!Number.isInteger(D)||D<0||D>4)throw new Error(`log verbosity level is not valid: ${D}`);let I=typeof l.optimizedModelFilePath=="string"?Q(l.optimizedModelFilePath,h):0;if(a=d._OrtCreateSessionOptions(w,!!l.enableCpuMemArena,!!l.enableMemPattern,g,!!l.enableProfiling,0,i,A,D,I),a===0&&V("Can\'t create session options."),l.executionProviders&&dn(a,l.executionProviders,h),l.freeDimensionOverrides)for(let[B,F]of Object.entries(l.freeDimensionOverrides)){if(typeof B!="string")throw new Error(`free dimension override name must be a string: ${B}`);if(typeof F!="number"||!Number.isInteger(F)||F<0)throw new Error(`free dimension override value must be a non-negative integer: ${F}`);let U=Q(B,h);d._OrtAddFreeDimensionOverride(a,U,F)!==0&&V(`Can\'t set a free dimension override: ${B} - ${F}.`)}return l.extra!==void 0&&rt(l.extra,"",new WeakSet,(B,F)=>{let U=Q(B,h),k=Q(F,h);d._OrtAddSessionConfigEntry(a,U,k)!==0&&V(`Can\'t set a session config entry: ${B} - ${F}.`)}),[a,h]}catch(w){throw a!==0&&d._OrtReleaseSessionOptions(a),h.forEach(g=>d._free(g)),w}};var Rt=u=>{switch(u){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;default:throw new Error(`unsupported data type: ${u}`)}},Dr=u=>{switch(u){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";default:throw new Error(`unsupported data type: ${u}`)}},It=u=>[void 0,4,1,1,2,2,4,8,void 0,1,2,8,4,8,void 0,void 0,void 0][u],xr=u=>{switch(u){case"float16":return 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: ${u}`)}},Fr=u=>{switch(u){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: ${u}`)}},Ur=u=>u==="float32"||u==="int32"||u==="int64"||u==="bool"||u==="float16"||u==="uint32",Pr=u=>{switch(u){case"none":return 0;case"cpu":return 1;case"cpu-pinned":return 2;case"texture":return 3;case"gpu-buffer":return 4;default:throw new Error(`unsupported data location: ${u}`)}};var Rr=async u=>{if(typeof u=="string")if(typeof process<"u"&&process.versions&&process.versions.node)try{return new Uint8Array(await(void 0)(u))}catch(d){if(d.code==="ERR_FS_FILE_TOO_LARGE"){let a=(void 0)(u),h=[];for await(let l of a)h.push(l);return new Uint8Array(Buffer.concat(h))}throw d}else{let d=await fetch(u);if(!d.ok)throw new Error(`failed to load external data file: ${u}`);let a=d.headers.get("Content-Length"),h=a?parseInt(a,10):0;if(h<1073741824)return new Uint8Array(await d.arrayBuffer());{if(!d.body)throw new Error(`failed to load external data file: ${u}, no response body.`);let l=d.body.getReader(),w;try{w=new ArrayBuffer(h)}catch(i){if(i instanceof RangeError){let A=Math.ceil(h/65536);w=new WebAssembly.Memory({initial:A,maximum:A}).buffer}else throw i}let g=0;for(;;){let{done:i,value:A}=await l.read();if(i)break;let D=A.byteLength;new Uint8Array(w,g,D).set(A),g+=D}return new Uint8Array(w,0,h)}}else return u instanceof Blob?new Uint8Array(await u.arrayBuffer()):u instanceof Uint8Array?u:new Uint8Array(u)};var pn=(u,d)=>{X()._OrtInit(u,d)!==0&&V("Can\'t initialize onnxruntime.")},Lr=async u=>{pn(u.wasm.numThreads,Fr(u.logLevel))},Br=async(u,d)=>{},nt=new Map,mn=u=>{let d=X(),a=d.stackSave();try{let h=d.stackAlloc(8);return d._OrtGetInputOutputCount(u,h,h+4)!==0&&V("Can\'t get session input/output count."),[d.HEAP32[h/4],d.HEAP32[h/4+1]]}finally{d.stackRestore(a)}},Lt=u=>{let d=X(),a=d._malloc(u.byteLength);if(a===0)throw new Error(`Can\'t create a session. failed to allocate a buffer of size ${u.byteLength}.`);return d.HEAPU8.set(u,a),[a,u.byteLength]},Wr=async(u,d)=>{let a,h,l=X();Array.isArray(u)?[a,h]=u:u.buffer===l.HEAPU8.buffer?[a,h]=[u.byteOffset,u.byteLength]:[a,h]=Lt(u);let w=0,g=0,i=0,A=[],D=[],I=[];try{if([g,A]=Cr(d),d?.externalData&&l.mountExternalData){let x=[];for(let N of d.externalData){let he=typeof N=="string"?N:N.path;x.push(Rr(typeof N=="string"?N:N.data).then(ie=>{l.mountExternalData(he,ie)}))}await Promise.all(x)}w=l._OrtCreateSession(a,h,g),w===0&&V("Can\'t create a session.");let[B,F]=mn(w),U=[],k=[],L=[];for(let x=0;xl._OrtFree(F)),I.forEach(F=>l._OrtFree(F)),i!==0&&l._OrtReleaseBinding(i),w!==0&&l._OrtReleaseSession(w),B}finally{l._free(a),g!==0&&l._OrtReleaseSessionOptions(g),A.forEach(B=>l._free(B)),l.unmountExternalData?.()}},kr=u=>{let d=X(),a=nt.get(u);if(!a)throw new Error(`cannot release session. invalid session id: ${u}`);let[h,l,w,g]=a;g&&d._OrtReleaseBinding(g.handle),d.jsepUnregisterBuffers?.(u),l.forEach(i=>d._OrtFree(i)),w.forEach(i=>d._OrtFree(i)),d._OrtReleaseSession(h),nt.delete(u)},Ir=(u,d,a,h,l)=>{if(!u){d.push(0);return}let w=X(),g=u[0],i=u[1],A=u[3],D,I;if(g==="string"&&A==="gpu-buffer")throw new Error("String tensor is not supported on GPU.");if(A==="gpu-buffer"){let U=u[2].gpuBuffer,k=It(Rt(g));I=i.reduce((L,_)=>L*_,1)*k,D=w.jsepRegisterBuffer(h,l,U,I)}else{let U=u[2];if(Array.isArray(U)){I=4*U.length,D=w._malloc(I),a.push(D);let k=D/4;for(let L=0;Lw.HEAP32[U++]=L);let k=w._OrtCreateTensor(Rt(g),D,I,F,i.length,Pr(A));k===0&&V(`Can\'t create tensor for input/output. session=${h}, index=${l}.`),d.push(k)}finally{w.stackRestore(B)}},Nr=async(u,d,a,h,l,w)=>{let g=X(),i=nt.get(u);if(!i)throw new Error(`cannot run inference. invalid session id: ${u}`);let[A,D,I,B]=i,F=d.length,U=h.length,k=0,L=[],_=[],x=[],N=[],he=g.stackSave(),ie=g.stackAlloc(F*4),ae=g.stackAlloc(F*4),E=g.stackAlloc(U*4),Y=g.stackAlloc(U*4);try{[k,L]=Mr(w);for(let P=0;Pre*Z,1);J=Dr(Me);let ve=B?.outputPreferredLocations[h[P]];if(J==="string"){if(ve==="gpu-buffer")throw new Error("String tensor is not supported on GPU.");let re=[],Z=fe/4;for(let Ce=0;Ce0){let re=g.jsepGetBuffer(fe),Z=It(Me);if(Z===void 0||!Ur(J))throw new Error(`Unsupported data type: ${J}`);ye=!0,ce.push([J,pe,{gpuBuffer:re,download:g.jsepCreateDownloader(re,Oe*Z,J),dispose:()=>{g._OrtReleaseTensor(te)}},"gpu-buffer"])}else{let re=xr(J),Z=new re(Oe);new Uint8Array(Z.buffer,Z.byteOffset,Z.byteLength).set(g.HEAPU8.subarray(fe,fe+Z.byteLength)),ce.push([J,pe,Z,"cpu"])}}finally{g.stackRestore(de),J==="string"&&fe&&g._free(fe),ye||g._OrtReleaseTensor(te)}}return B&&g._OrtClearBoundOutputs(B.handle),ce}finally{g.stackRestore(he),_.forEach(ue=>g._OrtReleaseTensor(ue)),x.forEach(ue=>g._OrtReleaseTensor(ue)),N.forEach(ue=>g._free(ue)),k!==0&&g._OrtReleaseRunOptions(k),L.forEach(ue=>g._free(ue))}},Hr=u=>{let d=X(),a=nt.get(u);if(!a)throw new Error("invalid session id");let h=a[0],l=d._OrtEndProfiling(h);l===0&&V("Can\'t get an profile file name."),d._OrtFree(l)},$r=u=>{let d=[];for(let a of u){let h=a[2];!Array.isArray(h)&&"buffer"in h&&d.push(h.buffer)}return d};self.onmessage=u=>{let{type:d,in:a}=u.data;try{switch(d){case"init-wasm":Ar(a.wasm).then(()=>{Lr(a).then(()=>{postMessage({type:d})},h=>{postMessage({type:d,err:h})})},h=>{postMessage({type:d,err:h})});break;case"init-ep":{let{epName:h,env:l}=a;Br(l,h).then(()=>{postMessage({type:d})},w=>{postMessage({type:d,err:w})});break}case"copy-from":{let{buffer:h}=a,l=Lt(h);postMessage({type:d,out:l});break}case"create":{let{model:h,options:l}=a;Wr(h,l).then(w=>{postMessage({type:d,out:w})},w=>{postMessage({type:d,err:w})});break}case"release":kr(a),postMessage({type:d});break;case"run":{let{sessionId:h,inputIndices:l,inputs:w,outputIndices:g,options:i}=a;Nr(h,l,w,g,new Array(g.length).fill(null),i).then(A=>{A.some(D=>D[3]!=="cpu")?postMessage({type:d,err:"Proxy does not support non-cpu tensor location."}):postMessage({type:d,out:A},$r(A))},A=>{postMessage({type:d,err:A})});break}case"end-profiling":Hr(a),postMessage({type:d});break;default:}}catch(h){postMessage({type:d,err:h})}};})();\n'}),xr,bt,Tn,Fo,$o,da,ha,Vr,Wr,gg,Lo,nd,od,id,ad,sd,ud,ld,ma=L(()=>{vt(),td(),zr(),xr=()=>!!Z.wasm.proxy&&typeof document<"u",Tn=!1,Fo=!1,$o=!1,ha=new Map,Vr=(t,e)=>{let n=ha.get(t);n?n.push(e):ha.set(t,[e])},Wr=()=>{if(Tn||!Fo||$o||!bt)throw new Error("worker not ready")},gg=t=>{switch(t.data.type){case"init-wasm":Tn=!1,t.data.err?($o=!0,da[1](t.data.err)):(Fo=!0,da[0]());break;case"init-ep":case"copy-from":case"create":case"release":case"run":case"end-profiling":{let e=ha.get(t.data.type);t.data.err?e.shift()[1](t.data.err):e.shift()[0](t.data.out);break}}},Lo=typeof document<"u"?document?.currentScript?.src:void 0,nd=async()=>{if(!Fo){if(Tn)throw new Error("multiple calls to 'initWasm()' detected.");if($o)throw new Error("previous call to 'initWasm()' failed.");if(Tn=!0,xr())return Z.wasm.wasmPaths===void 0&&Lo&&Lo.indexOf("blob:")!==0&&(Z.wasm.wasmPaths=Lo.substr(0,+Lo.lastIndexOf("/")+1)),new Promise((t,e)=>{bt?.terminate();let n=URL.createObjectURL(new Blob([rd()],{type:"text/javascript"}));bt=new Worker(n,{name:"ort-wasm-proxy-worker"}),bt.onerror=s=>e(s),bt.onmessage=gg,URL.revokeObjectURL(n),da=[t,e];let r={type:"init-wasm",in:Z};bt.postMessage(r)});try{await Rp(Z.wasm),await Yp(Z),Fo=!0}catch(t){throw $o=!0,t}finally{Tn=!1}}},od=async t=>{if(xr())return Wr(),new Promise((e,n)=>{Vr("init-ep",[e,n]);let r={type:"init-ep",in:{epName:t,env:Z}};bt.postMessage(r)});await Xp(Z,t)},id=async t=>xr()?(Wr(),new Promise((e,n)=>{Vr("copy-from",[e,n]);let r={type:"copy-from",in:{buffer:t}};bt.postMessage(r,[t.buffer])})):pa(t),ad=async(t,e)=>{if(xr()){if(e?.preferredOutputLocation)throw new Error('session option "preferredOutputLocation" is not supported for proxy.');return Wr(),new Promise((n,r)=>{Vr("create",[n,r]);let s={type:"create",in:{model:t,options:e}},i=[];t instanceof Uint8Array&&i.push(t.buffer),bt.postMessage(s,i)})}else return Kp(t,e)},sd=async t=>{if(xr())return Wr(),new Promise((e,n)=>{Vr("release",[e,n]);let r={type:"release",in:t};bt.postMessage(r)});Jp(t)},ud=async(t,e,n,r,s,i)=>{if(xr()){if(n.some(a=>a[3]!=="cpu"))throw new Error("input tensor on GPU is not supported for proxy.");if(s.some(a=>a))throw new Error("pre-allocated output tensor is not supported for proxy.");return Wr(),new Promise((a,u)=>{Vr("run",[a,u]);let d=n,o={type:"run",in:{sessionId:t,inputIndices:e,inputs:d,outputIndices:r,options:i}};bt.postMessage(o,ed(d))})}else return Zp(t,e,n,r,s,i)},ld=async t=>{if(xr())return Wr(),new Promise((e,n)=>{Vr("end-profiling",[e,n]);let r={type:"end-profiling",in:t};bt.postMessage(r)});Qp(t)}}),fd,yg,Co,cd=L(()=>{vt(),ma(),fa(),ca(),fd=(t,e)=>{switch(t.location){case"cpu":return[t.type,t.dims,t.data,"cpu"];case"gpu-buffer":return[t.type,t.dims,{gpuBuffer:t.gpuBuffer},"gpu-buffer"];default:throw new Error(`invalid data location: ${t.location} for ${e()}`)}},yg=t=>{switch(t[3]){case"cpu":return new Re(t[0],t[2],t[1]);case"gpu-buffer":{let e=t[0];if(!Do(e))throw new Error(`not supported data type: ${e} for deserializing GPU tensor`);let{gpuBuffer:n,download:r,dispose:s}=t[2];return Re.fromGpuBuffer(n,{dataType:e,dims:t[1],download:r,dispose:s})}default:throw new Error(`invalid data location: ${t[3]}`)}},Co=class{async fetchModelAndCopyToWasmMemory(t){return id(await gn(t))}async loadModel(t,e){ar();let n;typeof t=="string"?typeof process<"u"&&process.versions&&process.versions.node?n=await gn(t):n=await this.fetchModelAndCopyToWasmMemory(t):n=t,[this.sessionId,this.inputNames,this.outputNames]=await ad(n,e),sr()}async dispose(){return sd(this.sessionId)}async run(t,e,n){ar();let r=[],s=[];Object.entries(t).forEach(c=>{let h=c[0],f=c[1],p=this.inputNames.indexOf(h);if(p===-1)throw new Error(`invalid input '${h}'`);r.push(f),s.push(p)});let i=[],a=[];Object.entries(e).forEach(c=>{let h=c[0],f=c[1],p=this.outputNames.indexOf(h);if(p===-1)throw new Error(`invalid output '${h}'`);i.push(f),a.push(p)});let u=r.map((c,h)=>fd(c,()=>`input "${this.inputNames[s[h]]}"`)),d=i.map((c,h)=>c?fd(c,()=>`output "${this.outputNames[a[h]]}"`):null),o=await ud(this.sessionId,s,u,a,d,n),l={};for(let c=0;c{vt(),ma(),cd(),Tg=()=>{if((typeof Z.wasm.initTimeout!="number"||Z.wasm.initTimeout<0)&&(Z.wasm.initTimeout=0),typeof Z.wasm.simd!="boolean"&&(Z.wasm.simd=!0),typeof Z.wasm.proxy!="boolean"&&(Z.wasm.proxy=!1),typeof Z.wasm.trace!="boolean"&&(Z.wasm.trace=!1),typeof Z.wasm.numThreads!="number"||!Number.isInteger(Z.wasm.numThreads)||Z.wasm.numThreads<=0){(typeof self<"u"&&!self.crossOriginIsolated||typeof process<"u"&&process.versions&&process.versions.node)&&(Z.wasm.numThreads=1);let t=typeof navigator>"u"?(void 0)().length:navigator.hardwareConcurrency;Z.wasm.numThreads=Math.min(4,Math.ceil((t||1)/2))}},ko=class{async init(t){Tg(),await nd(),await od(t)}async createInferenceSessionHandler(t,e){let n=new Co;return await n.loadModel(t,e),Promise.resolve(n)}}}),dd={};Pr(dd,{wasmBackend:()=>xg});var xg,hd=L(()=>{pd(),xg=new ko});vt();vt();vt();var ys="1.17.1",zO=Yo;{let t=(_p(),rr(wp)).onnxjsBackend;or("webgl",t,-10)}{let t=(hd(),rr(dd)).wasmBackend;or("cpu",t,10),or("wasm",t,10),or("webnn",t,9)}Object.defineProperty(Z.versions,"web",{value:ys,enumerable:!0});/*! Bundled license information: + +long/index.js: + (** + * @license + * Copyright 2009 The Closure Library Authors + * Copyright 2020 Daniel Wirtz / The long.js Authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + *) +*/const ONNX_WEB=Object.freeze(Object.defineProperty({__proto__:null,get InferenceSession(){return Sd},get TRACE(){return cs},get TRACE_FUNC_BEGIN(){return ar},get TRACE_FUNC_END(){return sr},get Tensor(){return Re},get TrainingSession(){return Pd},default:zO,get env(){return Z},get registerBackend(){return or}},Symbol.toStringTag,{value:"Module"})),tensorToDataURL=(t,e)=>{const n=typeof document<"u"?document.createElement("canvas"):new OffscreenCanvas(1,1);n.width=t.dims[3],n.height=t.dims[2];const r=n.getContext("2d");if(r!=null){let s,i;e?.tensorLayout!==void 0&&e.tensorLayout==="NHWC"?(s=t.dims[2],i=t.dims[3]):(s=t.dims[3],i=t.dims[2]);const a=e?.format!==void 0?e.format:"RGB",u=e?.norm;let d,o;u===void 0||u.mean===void 0?d=[255,255,255,255]:typeof u.mean=="number"?d=[u.mean,u.mean,u.mean,u.mean]:(d=[u.mean[0],u.mean[1],u.mean[2],0],u.mean[3]!==void 0&&(d[3]=u.mean[3])),u===void 0||u.bias===void 0?o=[0,0,0,0]:typeof u.bias=="number"?o=[u.bias,u.bias,u.bias,u.bias]:(o=[u.bias[0],u.bias[1],u.bias[2],0],u.bias[3]!==void 0&&(o[3]=u.bias[3]));const l=i*s;let c=0,h=l,f=l*2,p=-1;a==="RGBA"?(c=0,h=l,f=l*2,p=l*3):a==="RGB"?(c=0,h=l,f=l*2):a==="RBG"&&(c=0,f=l,h=l*2);for(let g=0;g{const n=typeof document<"u"?document.createElement("canvas").getContext("2d"):new OffscreenCanvas(1,1).getContext("2d");let r;if(n!=null){let s,i,a;e?.tensorLayout!==void 0&&e.tensorLayout==="NHWC"?(s=t.dims[2],i=t.dims[1],a=t.dims[3]):(s=t.dims[3],i=t.dims[2],a=t.dims[1]);const u=e!==void 0&&e.format!==void 0?e.format:"RGB",d=e?.norm;let o,l;d===void 0||d.mean===void 0?o=[255,255,255,255]:typeof d.mean=="number"?o=[d.mean,d.mean,d.mean,d.mean]:(o=[d.mean[0],d.mean[1],d.mean[2],255],d.mean[3]!==void 0&&(o[3]=d.mean[3])),d===void 0||d.bias===void 0?l=[0,0,0,0]:typeof d.bias=="number"?l=[d.bias,d.bias,d.bias,d.bias]:(l=[d.bias[0],d.bias[1],d.bias[2],0],d.bias[3]!==void 0&&(l[3]=d.bias[3]));const c=i*s;if(e!==void 0&&(e.format!==void 0&&a===4&&e.format!=="RGBA"||a===3&&e.format!=="RGB"&&e.format!=="BGR"))throw new Error("Tensor format doesn't match input tensor dims");const h=4;let f=0,p=1,g=2,b=3,w=0,y=c,T=c*2,S=-1;u==="RGBA"?(w=0,y=c,T=c*2,S=c*3):u==="RGB"?(w=0,y=c,T=c*2):u==="RBG"&&(w=0,T=c,y=c*2),r=n.createImageData(s,i);for(let E=0;E{if(t===void 0)throw new Error("Image buffer must be defined");if(e.height===void 0||e.width===void 0)throw new Error("Image height and width must be defined");if(e.tensorLayout==="NHWC")throw new Error("NHWC Tensor layout is not supported yet");const{height:n,width:r}=e,s=e.norm??{mean:255,bias:0};let i,a;typeof s.mean=="number"?i=[s.mean,s.mean,s.mean,s.mean]:i=[s.mean[0],s.mean[1],s.mean[2],s.mean[3]??255],typeof s.bias=="number"?a=[s.bias,s.bias,s.bias,s.bias]:a=[s.bias[0],s.bias[1],s.bias[2],s.bias[3]??0];const u=e.format!==void 0?e.format:"RGBA",d=e.tensorFormat!==void 0&&e.tensorFormat!==void 0?e.tensorFormat:"RGB",o=n*r,l=d==="RGBA"?new Float32Array(o*4):new Float32Array(o*3);let c=4,h=0,f=1,p=2,g=3,b=0,w=o,y=o*2,T=-1;u==="RGB"&&(c=3,h=0,f=1,p=2,g=-1),d==="RGBA"?T=o*3:d==="RBG"?(b=0,y=o,w=o*2):d==="BGR"&&(y=0,w=o,b=o*2);for(let E=0;E{const n=typeof HTMLImageElement<"u"&&t instanceof HTMLImageElement,r=typeof ImageData<"u"&&t instanceof ImageData,s=typeof ImageBitmap<"u"&&t instanceof ImageBitmap,i=typeof t=="string";let a,u=e??{};const d=()=>{if(typeof document<"u")return document.createElement("canvas");if(typeof OffscreenCanvas<"u")return new OffscreenCanvas(1,1);throw new Error("Canvas is not supported")},o=l=>l instanceof HTMLCanvasElement||l instanceof OffscreenCanvas?l.getContext("2d"):null;if(n){const l=d();l.width=t.width,l.height=t.height;const c=o(l);if(c!=null){let h=t.height,f=t.width;if(e!==void 0&&e.resizedHeight!==void 0&&e.resizedWidth!==void 0&&(h=e.resizedHeight,f=e.resizedWidth),e!==void 0){if(u=e,e.tensorFormat!==void 0)throw new Error("Image input config format must be RGBA for HTMLImageElement");u.tensorFormat="RGBA",u.height=h,u.width=f}else u.tensorFormat="RGBA",u.height=h,u.width=f;c.drawImage(t,0,0),a=c.getImageData(0,0,f,h).data}else throw new Error("Can not access image data")}else if(r){let l,c;if(e!==void 0&&e.resizedWidth!==void 0&&e.resizedHeight!==void 0?(l=e.resizedHeight,c=e.resizedWidth):(l=t.height,c=t.width),e!==void 0&&(u=e),u.format="RGBA",u.height=l,u.width=c,e!==void 0){const h=d();h.width=c,h.height=l;const f=o(h);if(f!=null)f.putImageData(t,0,0),a=f.getImageData(0,0,c,l).data;else throw new Error("Can not access image data")}else a=t.data}else if(s){if(e===void 0)throw new Error("Please provide image config with format for Imagebitmap");const l=d();l.width=t.width,l.height=t.height;const c=o(l);if(c!=null){const h=t.height,f=t.width;return c.drawImage(t,0,0,f,h),a=c.getImageData(0,0,f,h).data,u.height=h,u.width=f,bufferToTensor(a,u)}else throw new Error("Can not access image data")}else{if(i)return new Promise((l,c)=>{const h=d(),f=o(h);if(!t||!f)return c();const p=new Image;p.crossOrigin="Anonymous",p.src=t,p.onload=()=>{h.width=p.width,h.height=p.height,f.drawImage(p,0,0,h.width,h.height);const g=f.getImageData(0,0,h.width,h.height);u.height=h.height,u.width=h.width,l(bufferToTensor(g.data,u))}});throw new Error("Input data provided is not supported - aborted tensor creation")}if(a!==void 0)return bufferToTensor(a,u);throw new Error("Input data provided is not supported - aborted tensor creation")},tensorFromTexture=(t,e)=>{const{width:n,height:r,download:s,dispose:i}=e,a=[1,r,n,4];return new Tensor$2({location:"texture",type:"float32",texture:t,dims:a,download:s,dispose:i})},tensorFromGpuBuffer=(t,e)=>{const{dataType:n,dims:r,download:s,dispose:i}=e;return new Tensor$2({location:"gpu-buffer",type:n??"float32",gpuBuffer:t,dims:r,download:s,dispose:i})},tensorFromPinnedBuffer=(t,e,n)=>new Tensor$2({location:"cpu-pinned",type:t,data:e,dims:n??[e.length]}),NUMERIC_TENSOR_TYPE_TO_TYPEDARRAY_MAP=new Map([["float32",Float32Array],["uint8",Uint8Array],["int8",Int8Array],["uint16",Uint16Array],["float16",Uint16Array],["int16",Int16Array],["int32",Int32Array],["bool",Uint8Array],["float64",Float64Array],["uint32",Uint32Array]]),NUMERIC_TENSOR_TYPEDARRAY_TO_TYPE_MAP=new Map([[Float32Array,"float32"],[Uint8Array,"uint8"],[Int8Array,"int8"],[Uint16Array,"uint16"],[Int16Array,"int16"],[Int32Array,"int32"],[Float64Array,"float64"],[Uint32Array,"uint32"]]);let isBigIntChecked=!1;const checkBigInt=()=>{if(!isBigIntChecked){isBigIntChecked=!0;const t=typeof BigInt64Array<"u"&&typeof BigInt64Array.from=="function",e=typeof BigUint64Array<"u"&&typeof BigUint64Array.from=="function";t&&(NUMERIC_TENSOR_TYPE_TO_TYPEDARRAY_MAP.set("int64",BigInt64Array),NUMERIC_TENSOR_TYPEDARRAY_TO_TYPE_MAP.set(BigInt64Array,"int64")),e&&(NUMERIC_TENSOR_TYPE_TO_TYPEDARRAY_MAP.set("uint64",BigUint64Array),NUMERIC_TENSOR_TYPEDARRAY_TO_TYPE_MAP.set(BigUint64Array,"uint64"))}},calculateSize=t=>{let e=1;for(let n=0;n{switch(t.location){case"cpu":return new Tensor$2(t.type,t.data,e);case"cpu-pinned":return new Tensor$2({location:"cpu-pinned",data:t.data,type:t.type,dims:e});case"texture":return new Tensor$2({location:"texture",texture:t.texture,type:t.type,dims:e});case"gpu-buffer":return new Tensor$2({location:"gpu-buffer",gpuBuffer:t.gpuBuffer,type:t.type,dims:e});default:throw new Error(`tensorReshape: tensor location ${t.location} is not supported`)}};let Tensor$2=class{constructor(e,n,r){checkBigInt();let s,i;if(typeof e=="object"&&"location"in e)switch(this.dataLocation=e.location,s=e.type,i=e.dims,e.location){case"cpu-pinned":{const u=NUMERIC_TENSOR_TYPE_TO_TYPEDARRAY_MAP.get(s);if(!u)throw new TypeError(`unsupported type "${s}" to create tensor from pinned buffer`);if(!(e.data instanceof u))throw new TypeError(`buffer should be of type ${u.name}`);this.cpuData=e.data;break}case"texture":{if(s!=="float32")throw new TypeError(`unsupported type "${s}" to create tensor from texture`);this.gpuTextureData=e.texture,this.downloader=e.download,this.disposer=e.dispose;break}case"gpu-buffer":{if(s!=="float32"&&s!=="float16"&&s!=="int32"&&s!=="int64"&&s!=="uint32"&&s!=="bool")throw new TypeError(`unsupported type "${s}" to create tensor from gpu buffer`);this.gpuBufferData=e.gpuBuffer,this.downloader=e.download,this.disposer=e.dispose;break}default:throw new Error(`Tensor constructor: unsupported location '${this.dataLocation}'`)}else{let u,d;if(typeof e=="string")if(s=e,d=r,e==="string"){if(!Array.isArray(n))throw new TypeError("A string tensor's data must be a string array.");u=n}else{const o=NUMERIC_TENSOR_TYPE_TO_TYPEDARRAY_MAP.get(e);if(o===void 0)throw new TypeError(`Unsupported tensor type: ${e}.`);if(Array.isArray(n)){if(e==="float16")throw new TypeError("Creating a float16 tensor from number array is not supported. Please use Uint16Array as data.");e==="uint64"||e==="int64"?u=o.from(n,BigInt):u=o.from(n)}else if(n instanceof o)u=n;else throw new TypeError(`A ${s} tensor's data must be type of ${o}`)}else if(d=n,Array.isArray(e)){if(e.length===0)throw new TypeError("Tensor type cannot be inferred from an empty array.");const o=typeof e[0];if(o==="string")s="string",u=e;else if(o==="boolean")s="bool",u=Uint8Array.from(e);else throw new TypeError(`Invalid element type of data array: ${o}.`)}else{const o=NUMERIC_TENSOR_TYPEDARRAY_TO_TYPE_MAP.get(e.constructor);if(o===void 0)throw new TypeError(`Unsupported type for tensor data: ${e.constructor}.`);s=o,u=e}if(d===void 0)d=[u.length];else if(!Array.isArray(d))throw new TypeError("A tensor's dims must be a number array");i=d,this.cpuData=u,this.dataLocation="cpu"}const a=calculateSize(i);if(this.cpuData&&a!==this.cpuData.length)throw new Error(`Tensor's size(${a}) does not match data length(${this.cpuData.length}).`);this.type=s,this.dims=i,this.size=a}static async fromImage(e,n){return tensorFromImage(e,n)}static fromTexture(e,n){return tensorFromTexture(e,n)}static fromGpuBuffer(e,n){return tensorFromGpuBuffer(e,n)}static fromPinnedBuffer(e,n,r){return tensorFromPinnedBuffer(e,n,r)}toDataURL(e){return tensorToDataURL(this,e)}toImageData(e){return tensorToImageData(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}async getData(e){switch(this.ensureValid(),this.dataLocation){case"cpu":case"cpu-pinned":return this.data;case"texture":case"gpu-buffer":{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 n=await this.downloader();return this.downloader=void 0,this.dataLocation="cpu",this.cpuData=n,e&&this.disposer&&(this.disposer(),this.disposer=void 0),n}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.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 tensorReshape(this,e)}};const Tensor$1=Tensor$2;let ONNX;const WEBGPU_AVAILABLE=typeof navigator<"u"&&"gpu"in navigator,USE_ONNXRUNTIME_NODE=typeof process<"u"&&process?.release?.name==="node",ONNX_MODULES=new Map;USE_ONNXRUNTIME_NODE?(ONNX=sharp??ONNX_NODE,ONNX_MODULES.set("node",ONNX)):(ONNX=zO??ONNX_WEB,ONNX_MODULES.set("web",ONNX),typeof navigator<"u"&&/iP(hone|od|ad).+16_4.+AppleWebKit/.test(navigator.userAgent)&&(ONNX.env.wasm.simd=!1));async function createInferenceSession(t,e){let n,r;if(USE_ONNXRUNTIME_NODE){const i=ONNX_MODULES.get("node");r=i.InferenceSession,n=["cpu"],Object.assign(i.env,env.backends.onnx)}else if(WEBGPU_AVAILABLE&&env.experimental.useWebGPU){let i=ONNX_MODULES.get("webgpu");i===void 0&&(i=await __vitePreload(()=>import("./ort.webgpu.min-BaaO-cT5.js"),__vite__mapDeps([])),ONNX_MODULES.set("webgpu",i)),r=i.InferenceSession,n=["webgpu","wasm"],Object.assign(i.env,env.backends.onnx)}else{const i=ONNX_MODULES.get("web");r=i.InferenceSession,n=["wasm"],Object.assign(i.env,env.backends.onnx)}const s={executionProviders:n,...e};return await r.create(t,s)}function isONNXTensor(t){for(const e of ONNX_MODULES.values())if(t instanceof e.Tensor)return!0;return!1}function isONNXProxy(){return ONNX.env.wasm.proxy}ONNX.env.wasm.wasmPaths=RUNNING_LOCALLY?sharp.join(env.__dirname,"/dist/"):`https://cdn.jsdelivr.net/npm/@xenova/transformers@${env.version}/dist/`;env.backends.onnx=ONNX.env;const DataTypeMap=Object.freeze({float32:Float32Array,float16:Uint16Array,float64:Float64Array,string:Array,int8:Int8Array,uint8:Uint8Array,int16:Int16Array,uint16:Uint16Array,int32:Int32Array,uint32:Uint32Array,int64:BigInt64Array,uint64:BigUint64Array,bool:Uint8Array});class Tensor{get dims(){return this.ort_tensor.dims}set dims(e){this.ort_tensor.dims=e}get type(){return this.ort_tensor.type}get data(){return this.ort_tensor.data}get size(){return this.ort_tensor.size}ort_tensor;constructor(...e){return isONNXTensor(e[0])?this.ort_tensor=e[0]:this.ort_tensor=new Tensor$1(e[0],e[1],e[2]),new Proxy(this,{get:(n,r)=>{if(typeof r=="string"){let s=Number(r);if(Number.isInteger(s))return n._getitem(s)}return n[r]},set:(n,r,s)=>n[r]=s})}dispose(){this.ort_tensor.dispose()}*[Symbol.iterator](){const[e,...n]=this.dims;if(n.length>0){const r=n.reduce((s,i)=>s*i);for(let s=0;s0){const s=r.reduce((i,a)=>i*a);return this._subarray(e,s,r)}else return new Tensor(this.type,[this.data[e]],r)}indexOf(e){for(let n=0;no[1])throw new Error(`Invalid slice: ${o}`);let l=[Math.max(o[0],0),Math.min(o[1],this.dims[d])];r.push(l),n.push(l[1]-l[0])}else throw new Error(`Invalid slice: ${o}`)}let s=r.map(([d,o])=>o-d),i=s.reduce((d,o)=>d*o),a=new this.data.constructor(i);const u=this.stride();for(let d=0;d=0;--l){const h=s[l];o+=(c%h+r[l][0])*u[l],c=Math.floor(c/h)}a[d]=this.data[o]}return new Tensor(this.type,a,n)}transpose(...e){return transpose(this,e)}sum(e=null,n=!1){return this.norm(1,e,n)}norm(e="fro",n=null,r=!1){if(e==="fro")e=2;else if(typeof e=="string")throw Error(`Unsupported norm: ${e}`);if(n===null){let a=this.data.reduce((u,d)=>u+d**e,0)**(1/e);return new Tensor(this.type,[a],[])}n=safeIndex(n,this.dims.length);const s=this.dims.slice();s[n]=1;const i=new this.data.constructor(this.data.length/this.dims[n]);for(let a=0;a=0;--d){const c=this.dims[d];if(d!==n){const h=o%c;u+=h*l,l*=s[d]}o=Math.floor(o/c)}i[u]+=this.data[a]**e}if(e!==1)for(let a=0;a=0;--a){const o=this.dims[a];if(a!==n){const l=u%o;i+=l*d,d*=this.dims[a]}u=Math.floor(u/o)}this.data[s]/=r.data[i]}return this}normalize(e=2,n=1){return this.clone().normalize_(e,n)}stride(){return dimsToStride(this.dims)}squeeze(e=null){return new Tensor(this.type,this.data,calc_squeeze_dims(this.dims,e))}squeeze_(e=null){return this.dims=calc_squeeze_dims(this.dims,e),this}unsqueeze(e=null){return new Tensor(this.type,this.data,calc_unsqueeze_dims(this.dims,e))}unsqueeze_(e=null){return this.dims=calc_unsqueeze_dims(this.dims,e),this}flatten_(e=0,n=-1){n=(n+this.dims.length)%this.dims.length;let r=this.dims.slice(0,e),s=this.dims.slice(e,n+1),i=this.dims.slice(n+1);return this.dims=[...r,s.reduce((a,u)=>a*u,1),...i],this}flatten(e=0,n=-1){return this.clone().flatten_(e,n)}view(...e){let n=-1;for(let r=0;ra!==n?s*i:s,1);e[n]=this.data.length/r}return new Tensor(this.type,this.data,e)}neg_(){for(let e=0;ei*a);if(n!==r)throw Error(`cannot reshape array of size ${n} into shape (${e})`);let s=t;for(let i=e.length-1;i>=0;i--)s=s.reduce((a,u)=>{let d=a[a.length-1];return d.lengthn!==1):typeof e=="number"?t[e]===1&&t.splice(e,1):Array.isArray(e)&&(t=t.filter((n,r)=>n!==1||!e.includes(r))),t}function calc_unsqueeze_dims(t,e){return e=safeIndex(e,t.length+1),t=t.slice(),t.splice(e,0,1),t}function safeIndex(t,e,n=null){if(t<-e||t>=e)throw new Error(`IndexError: index ${t} is out of bounds for dimension${n===null?"":" "+n} with size ${e}`);return t<0&&(t=(t%e+e)%e),t}function cat(t,e=0){e=safeIndex(e,t[0].dims.length);const n=t[0].dims.slice();n[e]=t.reduce((a,u)=>a+u.dims[e],0);const r=n.reduce((a,u)=>a*u,1),s=new t[0].data.constructor(r),i=t[0].type;if(e===0){let a=0;for(let u of t)s.set(u.data,a),a+=u.data.length}else{let a=0;for(let u=0;u=0;--c){const p=d.dims[c];let g=h%p;c===e&&(g+=a),l+=g*f,f*=n[c],h=Math.floor(h/p)}s[l]=d.data[o]}a+=d.dims[e]}}return new Tensor(i,s,n)}function stack(t,e=0){return cat(t.map(n=>n.unsqueeze(e)),e)}function std_mean(t,e=null,n=1,r=!1){if(e===null){const o=t.data.reduce((f,p)=>f+p,0)/t.data.length,l=Math.sqrt(t.data.reduce((f,p)=>f+(p-o)**2,0)/(t.data.length-n)),c=new Tensor(t.type,[o],[]);return[new Tensor(t.type,[l],[]),c]}e=safeIndex(e,t.dims.length);const s=mean(t,e,r),i=t.dims.slice();i[e]=1;const a=new t.data.constructor(t.data.length/t.dims[e]);for(let d=0;d=0;--l){const f=t.dims[l];if(l!==e){const p=c%f;o+=p*h,h*=i[l]}c=Math.floor(c/f)}a[o]+=(t.data[d]-s.data[o])**2}for(let d=0;da+u,0);return new Tensor(t.type,[i/t.data.length],[])}e=safeIndex(e,t.dims.length);const r=t.dims.slice();r[e]=1;const s=new t.data.constructor(t.data.length/t.dims[e]);for(let i=0;i=0;--u){const l=t.dims[u];if(u!==e){const c=d%l;a+=c*o,o*=r[u]}d=Math.floor(d/l)}s[a]+=t.data[i]}if(t.dims[e]!==1)for(let i=0;i0||u>0;)switch(d.push(a-1),o.push(u-1),i[a][u].item()){case 0:--a,--u;break;case 1:--a;break;case 2:--u;break;default:throw new Error(`Internal error in dynamic time warping. Unexpected trace[${a}, ${u}]. Please file a bug report.`)}return d.reverse(),o.reverse(),[d,o]}function dimsToStride(t){const e=new Array(t.length);for(let n=t.length-1,r=1;n>=0;--n)e[n]=r,r*=t[n];return e}function ones(t){const e=t.reduce((n,r)=>n*r,1);return new Tensor("int64",new BigInt64Array(e).fill(1n),t)}function ones_like(t){return ones(t.dims)}var TOKEN_TYPES=Object.freeze({Text:"Text",NumericLiteral:"NumericLiteral",BooleanLiteral:"BooleanLiteral",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",Set:"Set",If:"If",For:"For",In:"In",Is:"Is",NotIn:"NotIn",Else:"Else",EndIf:"EndIf",ElseIf:"ElseIf",EndFor:"EndFor",And:"And",Or:"Or",Not:"UnaryOperator"});Object.freeze({set:TOKEN_TYPES.Set,for:TOKEN_TYPES.For,in:TOKEN_TYPES.In,is:TOKEN_TYPES.Is,if:TOKEN_TYPES.If,else:TOKEN_TYPES.Else,endif:TOKEN_TYPES.EndIf,elif:TOKEN_TYPES.ElseIf,endfor:TOKEN_TYPES.EndFor,and:TOKEN_TYPES.And,or:TOKEN_TYPES.Or,not:TOKEN_TYPES.Not,"not in":TOKEN_TYPES.NotIn,true:TOKEN_TYPES.BooleanLiteral,false:TOKEN_TYPES.BooleanLiteral});TOKEN_TYPES.OpenStatement,TOKEN_TYPES.CloseStatement,TOKEN_TYPES.OpenExpression,TOKEN_TYPES.CloseExpression,TOKEN_TYPES.OpenParen,TOKEN_TYPES.CloseParen,TOKEN_TYPES.OpenCurlyBracket,TOKEN_TYPES.CloseCurlyBracket,TOKEN_TYPES.OpenSquareBracket,TOKEN_TYPES.CloseSquareBracket,TOKEN_TYPES.Comma,TOKEN_TYPES.Dot,TOKEN_TYPES.Colon,TOKEN_TYPES.Pipe,TOKEN_TYPES.ComparisonBinaryOperator,TOKEN_TYPES.ComparisonBinaryOperator,TOKEN_TYPES.ComparisonBinaryOperator,TOKEN_TYPES.ComparisonBinaryOperator,TOKEN_TYPES.ComparisonBinaryOperator,TOKEN_TYPES.ComparisonBinaryOperator,TOKEN_TYPES.AdditiveBinaryOperator,TOKEN_TYPES.AdditiveBinaryOperator,TOKEN_TYPES.MultiplicativeBinaryOperator,TOKEN_TYPES.MultiplicativeBinaryOperator,TOKEN_TYPES.MultiplicativeBinaryOperator,TOKEN_TYPES.Equals;const BYTES_TO_UNICODE=(()=>{const t=[...Array.from({length:94},(s,i)=>i+33),...Array.from({length:12},(s,i)=>i+161),...Array.from({length:82},(s,i)=>i+174)],e=t.slice();let n=0;for(let s=0;s<256;++s)t.includes(s)||(t.push(s),e.push(256+n),n+=1);const r=e.map(s=>String.fromCharCode(s));return Object.fromEntries(t.map((s,i)=>[s,r[i]]))})();reverseDictionary(BYTES_TO_UNICODE);const WHISPER_LANGUAGES=[["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"]];new Map(WHISPER_LANGUAGES);async function loadConfig(t,e){return await getModelJSON(t,"config.json",!0,e)}class PretrainedConfig{constructor(e){this.model_type=null,this.is_encoder_decoder=!1,Object.assign(this,e)}static async from_pretrained(e,{progress_callback:n=null,config:r=null,cache_dir:s=null,local_files_only:i=!1,revision:a="main"}={}){let u=r??await loadConfig(e,{progress_callback:n,config:r,cache_dir:s,local_files_only:i,revision:a});return new this(u)}}class AutoConfig{static async from_pretrained(...e){return PretrainedConfig.from_pretrained(...e)}}class LogitsProcessorList extends Callable{constructor(){super(),this.processors=[]}push(e){this.processors.push(e)}extend(e){this.processors.push(...e)}_call(e,n){for(let r of n)this.processors.forEach(s=>s(e,r))}[Symbol.iterator](){return this.processors.values()}}class LogitsProcessor extends Callable{_call(e,n){throw Error("`_call` should be implemented in a subclass")}}class ForceTokensLogitsProcessor extends LogitsProcessor{constructor(e){super(),this.force_token_map=Object.fromEntries(e??[])}_call(e,n){let r=this.force_token_map[e.length];return exists(r)&&(n.data.fill(-1/0),n.data[r]=0),n}}class ForcedBOSTokenLogitsProcessor extends LogitsProcessor{constructor(e){super(),this.bos_token_id=e}_call(e,n){return e.length===1&&(n.data.fill(-1/0),n.data[this.bos_token_id]=0),n}}class ForcedEOSTokenLogitsProcessor extends LogitsProcessor{constructor(e,n){super(),this.max_length=e,this.forced_eos_token_id=n}_call(e,n){}}class SuppressTokensAtBeginLogitsProcessor extends LogitsProcessor{constructor(e,n){super(),this.begin_suppress_tokens=e,this.begin_index=n}_call(e,n){if(e.length===this.begin_index)for(let r of this.begin_suppress_tokens)n.data[r]=-1/0;return n}}class WhisperTimeStampLogitsProcessor extends LogitsProcessor{constructor(e){super(),this.eos_token_id=e.eos_token_id,this.no_timestamps_token_id=e.no_timestamps_token_id,this.timestamp_begin=this.no_timestamps_token_id+1,this.begin_index=(e.forced_decoder_ids||[]).length+2,e.forced_decoder_ids.slice(-1)[0][1]===this.no_timestamps_token_id&&(this.begin_index-=1),this.max_initial_timestamp_index=e.max_initial_timestamp_index}_call(e,n){const r=n.data;if(r[this.no_timestamps_token_id]=-1/0,e.length===this.begin_index-1)return r.fill(-1/0),r[this.timestamp_begin]=0,n;const s=e.slice(this.begin_index),i=s.length>=1&&s[s.length-1]>=this.timestamp_begin,a=s.length<2||s[s.length-2]>=this.timestamp_begin;if(i&&(a?r.subarray(this.timestamp_begin).fill(-1/0):r.subarray(0,this.eos_token_id).fill(-1/0)),e.length===this.begin_index&&this.max_initial_timestamp_index!==null){const l=this.timestamp_begin+this.max_initial_timestamp_index;r.subarray(l+1).fill(-1/0)}const u=log_softmax(r),d=Math.log(u.subarray(this.timestamp_begin).map(Math.exp).reduce((l,c)=>l+c)),o=max(u.subarray(0,this.timestamp_begin))[0];return d>o&&r.subarray(0,this.timestamp_begin).fill(-1/0),n}}class NoRepeatNGramLogitsProcessor extends LogitsProcessor{constructor(e){super(),this.no_repeat_ngram_size=e}getNgrams(e){const n=e.length,r=[];for(let i=0;i0&&(s=s.map(i=>i/this.generation_config.temperature)),s}randomSelect(e){let n=e.reduce((s,i)=>s+i,0),r=Math.random()*n;for(let s=0;s1)return new BeamSearchSampler(e);if(e.num_return_sequences>1)throw Error(`num_return_sequences has to be 1 when doing greedy search, but is ${e.num_return_sequences}.`);return new GreedySampler(e)}}class GreedySampler extends Sampler{sample(e,n=-1){let r=this.getLogits(e,n);return[[max(r)[1],0]]}}class MultinomialSampler extends Sampler{sample(e,n=-1){let r=e.dims.at(-1);this.generation_config.top_k>0&&(r=Math.min(this.generation_config.top_k,r));const s=this.getLogits(e,n),i=getTopItems(s,r),a=softmax(i.map(u=>u[1]));return Array.from({length:this.generation_config.num_beams},()=>{const u=this.randomSelect(a);return[i[u][0],Math.log(a[u])]})}}class BeamSearchSampler extends Sampler{sample(e,n=-1){let r=e.dims.at(-1);this.generation_config.top_k>0&&(r=Math.min(this.generation_config.top_k,r));const s=this.getLogits(e,n),i=getTopItems(s,r),a=softmax(i.map(u=>u[1]));return Array.from({length:this.generation_config.num_beams},(u,d)=>[i[d][0],Math.log(a[d])])}}const MODEL_TYPES={EncoderOnly:0,EncoderDecoder:1,Seq2Seq:2,Vision2Seq:3,DecoderOnly:4,MaskGeneration:5},MODEL_TYPE_MAPPING=new Map,MODEL_NAME_TO_CLASS_MAPPING=new Map,MODEL_CLASS_TO_NAME_MAPPING=new Map;async function constructSession(t,e,n){const r=`onnx/${e}${n.quantized?"_quantized":""}.onnx`,s=await getModelFile(t,r,!0,n);let i=n.session_options||{};return await createInferenceSession(s,i)}function validateInputs(t,e){const n=Object.create(null),r=[];for(const a of t.inputNames){const u=e[a];if(!(u instanceof Tensor)){r.push(a);continue}n[a]=isONNXProxy()?u.clone():u}if(r.length>0)throw new Error(`An error occurred during model execution: "Missing the following inputs: ${r.join(", ")}.`);const s=Object.keys(e).length,i=t.inputNames.length;if(s>i){let a=Object.keys(e).filter(u=>!t.inputNames.includes(u));console.warn(`WARNING: Too many inputs were provided (${s} > ${i}). The following inputs will be ignored: "${a.join(", ")}".`)}return n}async function sessionRun(t,e){const n=validateInputs(t,e);try{const r=Object.fromEntries(Object.entries(n).map(([i,a])=>[i,a.ort_tensor]));let s=await t.run(r);s=replaceTensors(s);for(const[i,a]of Object.entries(n))i.startsWith("past_key_values")&&a.dispose();return s}catch(r){throw console.error(`An error occurred during model execution: "${r}".`),console.error("Inputs given to model:",n),r}}function replaceTensors(t){for(let e in t)isONNXTensor(t[e])?t[e]=new Tensor(t[e]):typeof t[e]=="object"&&replaceTensors(t[e]);return t}function toI64Tensor(t){if(t instanceof Tensor)return t;if(t.length===0)throw Error("items must be non-empty");if(Array.isArray(t[0])){if(t.some(e=>e.length!==t[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 Tensor("int64",BigInt64Array.from(t.flat().map(e=>BigInt(e))),[t.length,t[0].length])}else return new Tensor("int64",BigInt64Array.from(t.map(e=>BigInt(e))),[1,t.length])}function prepareAttentionMask(t,e){let n=t.config.pad_token_id??null,r=t.config.eos_token_id??null;isIntegralNumber(r)&&(r=[r]);let s=e.indexOf(n)!==-1,i=r===null||!r.includes(n);if(s&&i){let a=BigInt64Array.from(e.data.map(u=>u!=n));return new Tensor("int64",a,e.dims)}else return ones_like(e)}function preparePositionIds(t,e,n){if(!t.inputNames.includes("position_ids"))return;const r=new BigInt64Array(e.attention_mask.data.length);for(let s=0;s0&&s.push(new NoRepeatNGramLogitsProcessor(e.no_repeat_ngram_size)),e.bad_words_ids!==null&&s.push(new NoBadWordsLogitsProcessor(e.bad_words_ids,e.eos_token_id)),e.min_length!==null&&e.eos_token_id!==null&&e.min_length>0&&s.push(new MinLengthLogitsProcessor(e.min_length,e.eos_token_id)),e.min_new_tokens!==null&&e.eos_token_id!==null&&e.min_new_tokens>0&&s.push(new MinNewTokensLengthLogitsProcessor(n,e.min_new_tokens,e.eos_token_id)),e.forced_bos_token_id!==null&&s.push(new ForcedBOSTokenLogitsProcessor(e.forced_bos_token_id)),e.forced_eos_token_id!==null&&s.push(new ForcedEOSTokenLogitsProcessor(e.max_length,e.forced_eos_token_id)),e.begin_suppress_tokens!==null){let i=n>1||e.forced_bos_token_id===null?n:n+1;e.forced_decoder_ids!==null&&(i+=e.forced_decoder_ids[e.forced_decoder_ids.length-1][0]),s.push(new SuppressTokensAtBeginLogitsProcessor(e.begin_suppress_tokens,i))}return e.forced_decoder_ids!==null&&s.push(new ForceTokensLogitsProcessor(e.forced_decoder_ids)),r!==null&&s.extend(r),s}_get_generation_config(e){let n=new GenerationConfig(this.config);return"generation_config"in this&&Object.assign(n,this.generation_config),e!==null&&Object.assign(n,e),n}async generate(e,n=null,r=null,{inputs_attention_mask:s=null}={}){if(!this.can_generate){let b=`The current model class (${MODEL_CLASS_TO_NAME_MAPPING.get(this.constructor)}) is not compatible with \`.generate()\`, as it doesn't have a language model head.`;const w=this.config.model_type,y=MODEL_WITH_LM_HEAD_MAPPING_NAMES.get(w)??MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING_NAMES.get(w)??MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING_NAMES.get(w)??MODEL_FOR_VISION_2_SEQ_MAPPING_NAMES.get(w);throw y&&(b+=` Please use the following class instead: '${y[0]}'`),Error(b)}if(!(e instanceof Tensor)&&!isTypedArray(e)&&!Array.isArray(e))throw Error(`\`inputs\` must be a Tensor, TypedArray, or Array, but is "${e.constructor.name}".`);let i;if(this.config.is_encoder_decoder)i=0;else if(i=e instanceof Tensor?e.dims.at(-1):e.length,i===0)throw Error("Must supply a non-empty array of input token ids.");n=this._get_generation_config(n),r=r??new LogitsProcessorList,r=this._get_logits_processor(n,i,r);let a=n.eos_token_id;a!==null&&!Array.isArray(a)&&(a=[a]);let u=1;const d=u+(n.max_new_tokens??1/0),o=Number.isInteger(n.max_length)&&(n.max_new_tokens??null)===null;let l=Sampler.getSampler(n),c=this.getStartBeams(e,n,u,s);for(;c.some(g=>!g.done)&&u=n.max_length){b.done=!0,g.push(b);continue}let w=await this.runBeam(b);n.output_attentions&&this.addAttentionsToBeam(b,w),n.output_scores;let y=w.logits.slice(null,-1,null);r(b.output_token_ids,y);let T=l(y);for(let[S,E]of T){let N={...b};this.updateBeam(N,S),N.score+=E,a&&a.includes(S)&&(N.done=!0),g.push(N)}}++u,g=this.groupBeams(g).map(b=>b.sort((w,y)=>y.score-w.score).slice(0,n.num_beams)),c=g.flat(),n.callback_function&&n.callback_function(c)}const h=this.groupBeams(c),f=g=>h.map(b=>n.num_return_sequences>1?b.slice(0,n.num_return_sequences).map(w=>w[g]):[b[0][g]]).flat(),p=f("output_token_ids");if(n.return_dict_in_generate){const g=f("decoder_attentions"),b=f("cross_attentions");return{sequences:p,decoder_attentions:g,cross_attentions:b}}else return p}addAttentionsToBeam(e,n){if(this.config.is_encoder_decoder){if(!n.cross_attentions||n.cross_attentions.length===0)throw Error("`output_attentions` is true, but the model did not produce cross-attentions. This is most likely because the model was not exported with `output_attentions=True`.");e.cross_attentions||(e.cross_attentions=[]),e.cross_attentions.push(n.cross_attentions)}if(!n.decoder_attentions||n.decoder_attentions.length===0)throw Error("`output_attentions` is true, but the model did not produce decoder-attentions. This is most likely because the model was not exported with `output_attentions=True`.");e.decoder_attentions||(e.decoder_attentions=[]),e.decoder_attentions.push(n.decoder_attentions)}groupBeams(e){const n=Object.create(null);for(const r of e)n[r.id]===void 0?n[r.id]=[r]:n[r.id].push(r);return Object.values(n)}getPastKeyValues(e,n){const r=Object.create(null);for(const s in e)if(s.startsWith("present")){let i=s.replace("present","past_key_values");n&&s.includes("encoder")?r[i]=n[i]:r[i]=e[s]}return r}getAttentions(e){const n=Object.create(null);for(const r of["cross_attentions","decoder_attentions"]){const s=[];for(const i in e)if(i.startsWith(r)){const a=i.split(".").pop();s[a]=e[i]}n[r]=s}return n}addPastKeyValues(e,n){if(n)Object.assign(e,n);else{const s=this.config.precision||"float32",i=s==="float16"?new Uint16Array:[];if(this.config.is_encoder_decoder&&(this.add_encoder_pkv??!0)){let a=[1,this.num_encoder_heads,0,this.encoder_dim_kv],u=[1,this.num_decoder_heads,0,this.decoder_dim_kv];for(let d=0;d{let l=Array.from({length:this.config.decoder_layers},(b,w)=>cat(o.map(y=>y[w]),2)),c=stack(n.map(([b,w])=>r?l[b].slice(null,w,null,[0,r]):l[b].slice(null,w)));c=c.transpose(1,0,2,3);let[h,f]=std_mean(c,-2,0,!0),p=c.clone();for(let b=0;bc[w+1]-c[w]),p=mergeArrays([1],f).map(b=>!!b),g=[];for(let b=0;bs*i,1);e.input_labels=new Tensor("int64",new BigInt64Array(r).fill(1n),n)}return await sessionRun(this.prompt_encoder_mask_decoder,{input_points:e.input_points,input_labels:e.input_labels,image_embeddings:e.image_embeddings,image_positional_embeddings:e.image_positional_embeddings})}async _call(e){return new SamImageSegmentationOutput(await super._call(e))}}class SamImageSegmentationOutput extends ModelOutput{constructor({iou_scores:e,pred_masks:n}){super(),this.iou_scores=e,this.pred_masks=n}}class MarianPreTrainedModel extends PreTrainedModel{}class MarianModel extends MarianPreTrainedModel{}class MarianMTModel extends MarianPreTrainedModel{constructor(e,n,r,s){super(e,n),this.decoder_merged_session=r,this.generation_config=s,this.num_decoder_layers=this.config.decoder_layers,this.num_decoder_heads=this.config.decoder_attention_heads,this.decoder_dim_kv=this.config.d_model/this.num_decoder_heads,this.num_encoder_layers=this.config.encoder_layers,this.num_encoder_heads=this.config.encoder_attention_heads,this.encoder_dim_kv=this.config.d_model/this.num_encoder_heads}}class M2M100PreTrainedModel extends PreTrainedModel{}class M2M100Model extends M2M100PreTrainedModel{}class M2M100ForConditionalGeneration extends M2M100PreTrainedModel{constructor(e,n,r,s){super(e,n),this.decoder_merged_session=r,this.generation_config=s,this.num_decoder_layers=this.config.decoder_layers,this.num_decoder_heads=this.config.decoder_attention_heads,this.decoder_dim_kv=this.config.d_model/this.num_decoder_heads,this.num_encoder_layers=this.config.encoder_layers,this.num_encoder_heads=this.config.encoder_attention_heads,this.encoder_dim_kv=this.config.d_model/this.num_encoder_heads}}class Wav2Vec2PreTrainedModel extends PreTrainedModel{}class Wav2Vec2Model extends Wav2Vec2PreTrainedModel{}class Wav2Vec2ForCTC extends Wav2Vec2PreTrainedModel{async _call(e){return new CausalLMOutput(await super._call(e))}}class Wav2Vec2ForSequenceClassification extends Wav2Vec2PreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class Wav2Vec2ForAudioFrameClassification extends Wav2Vec2PreTrainedModel{async _call(e){return new TokenClassifierOutput(await super._call(e))}}class UniSpeechPreTrainedModel extends PreTrainedModel{}class UniSpeechModel extends UniSpeechPreTrainedModel{}class UniSpeechForCTC extends UniSpeechPreTrainedModel{async _call(e){return new CausalLMOutput(await super._call(e))}}class UniSpeechForSequenceClassification extends UniSpeechPreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class UniSpeechSatPreTrainedModel extends PreTrainedModel{}class UniSpeechSatModel extends UniSpeechSatPreTrainedModel{}class UniSpeechSatForCTC extends UniSpeechSatPreTrainedModel{async _call(e){return new CausalLMOutput(await super._call(e))}}class UniSpeechSatForSequenceClassification extends UniSpeechSatPreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class UniSpeechSatForAudioFrameClassification extends UniSpeechSatPreTrainedModel{async _call(e){return new TokenClassifierOutput(await super._call(e))}}class Wav2Vec2BertPreTrainedModel extends PreTrainedModel{}class Wav2Vec2BertModel extends Wav2Vec2BertPreTrainedModel{}class Wav2Vec2BertForCTC extends Wav2Vec2BertPreTrainedModel{async _call(e){return new CausalLMOutput(await super._call(e))}}class Wav2Vec2BertForSequenceClassification extends Wav2Vec2BertPreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class HubertModel extends Wav2Vec2PreTrainedModel{}class HubertForCTC extends Wav2Vec2PreTrainedModel{async _call(e){return new CausalLMOutput(await super._call(e))}}class HubertForSequenceClassification extends Wav2Vec2PreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class WavLMPreTrainedModel extends PreTrainedModel{}class WavLMModel extends WavLMPreTrainedModel{}class WavLMForCTC extends WavLMPreTrainedModel{async _call(e){return new CausalLMOutput(await super._call(e))}}class WavLMForSequenceClassification extends WavLMPreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class WavLMForXVector extends WavLMPreTrainedModel{async _call(e){return new XVectorOutput(await super._call(e))}}class WavLMForAudioFrameClassification extends WavLMPreTrainedModel{async _call(e){return new TokenClassifierOutput(await super._call(e))}}class SpeechT5PreTrainedModel extends PreTrainedModel{}class SpeechT5ForSpeechToText extends SpeechT5PreTrainedModel{}class SpeechT5ForTextToSpeech extends SpeechT5PreTrainedModel{constructor(e,n,r,s){super(e,n),this.decoder_merged_session=r,this.generation_config=s,this.num_decoder_layers=this.config.decoder_layers,this.num_decoder_heads=this.config.decoder_attention_heads,this.decoder_dim_kv=this.config.hidden_size/this.num_decoder_heads,this.num_encoder_layers=this.config.encoder_layers,this.num_encoder_heads=this.config.encoder_attention_heads,this.encoder_dim_kv=this.config.hidden_size/this.num_encoder_heads}async generate_speech(e,n,{threshold:r=.5,minlenratio:s=0,maxlenratio:i=20,vocoder:a=null}={}){const u={input_ids:e},{encoder_outputs:d,encoder_attention_mask:o}=await encoderForward(this,u),l=d.dims[1]/this.config.reduction_factor,c=Math.floor(l*i),h=Math.floor(l*s),f=this.config.num_mel_bins;let p=[],g=null,b=null,w=0;for(;;){++w;const S=boolTensor(!!b);let E;b?E=b.output_sequence_out:E=new Tensor("float32",new Float32Array(f),[1,1,f]);let N={use_cache_branch:S,output_sequence:E,encoder_attention_mask:o,speaker_embeddings:n,encoder_hidden_states:d};this.addPastKeyValues(N,g),b=await sessionRun(this.decoder_merged_session,N),g=this.getPastKeyValues(b,g);const{prob:B,spectrum:F}=b;if(p.push(F),w>=h&&(Array.from(B.data).filter(k=>k>=r).length>0||w>=c))break}const y=cat(p),{waveform:T}=await sessionRun(a.session,{spectrogram:y});return{spectrogram:y,waveform:T}}}class SpeechT5HifiGan extends PreTrainedModel{main_input_name="spectrogram"}class TrOCRPreTrainedModel extends PreTrainedModel{constructor(e,n,r){super(e,n),this.generation_config=r,this.config.pad_token_id=this.config.eos_token_id,this.num_encoder_layers=this.num_decoder_layers=this.config.decoder_layers,this.num_encoder_heads=this.num_decoder_heads=this.config.decoder_attention_heads,this.encoder_dim_kv=this.decoder_dim_kv=this.config.d_model/this.num_decoder_heads}}class TrOCRForCausalLM extends TrOCRPreTrainedModel{}class MistralPreTrainedModel extends PreTrainedModel{constructor(e,n,r){super(e,n),this.generation_config=r,this.config.pad_token_id=this.config.eos_token_id,this.num_heads=this.config.num_key_value_heads,this.num_layers=this.config.num_hidden_layers,this.dim_kv=this.config.hidden_size/this.config.num_attention_heads}}class MistralModel extends MistralPreTrainedModel{}class MistralForCausalLM extends MistralPreTrainedModel{}class Starcoder2PreTrainedModel extends PreTrainedModel{constructor(e,n,r){super(e,n),this.generation_config=r,this.config.pad_token_id=this.config.eos_token_id,this.num_heads=this.config.num_key_value_heads,this.num_layers=this.config.num_hidden_layers,this.dim_kv=this.config.hidden_size/this.config.num_attention_heads}}class Starcoder2Model extends Starcoder2PreTrainedModel{}class Starcoder2ForCausalLM extends Starcoder2PreTrainedModel{}class FalconPreTrainedModel extends PreTrainedModel{constructor(e,n,r){super(e,n),this.generation_config=r,this.config.pad_token_id=this.config.eos_token_id,this.num_heads=this.config.num_attention_heads,this.num_layers=this.config.num_hidden_layers,this.dim_kv=this.config.hidden_size/this.config.num_attention_heads}}class FalconModel extends FalconPreTrainedModel{}class FalconForCausalLM extends FalconPreTrainedModel{}class ClapPreTrainedModel extends PreTrainedModel{}class ClapModel extends ClapPreTrainedModel{}class ClapTextModelWithProjection extends ClapPreTrainedModel{static async from_pretrained(e,n={}){return n.model_file_name??="text_model",super.from_pretrained(e,n)}}class ClapAudioModelWithProjection extends ClapPreTrainedModel{static async from_pretrained(e,n={}){return n.model_file_name??="audio_model",super.from_pretrained(e,n)}}class VitsPreTrainedModel extends PreTrainedModel{}class VitsModel extends VitsPreTrainedModel{async _call(e){return new VitsModelOutput(await super._call(e))}}class SegformerPreTrainedModel extends PreTrainedModel{}class SegformerForImageClassification extends SegformerPreTrainedModel{}class SegformerForSemanticSegmentation extends SegformerPreTrainedModel{}class StableLmPreTrainedModel extends PreTrainedModel{constructor(e,n,r){super(e,n),this.generation_config=r,this.config.pad_token_id=this.config.eos_token_id,this.num_heads=this.config.num_attention_heads,this.num_layers=this.config.num_hidden_layers,this.dim_kv=this.config.hidden_size/this.num_heads}}class StableLmForCausalLM extends StableLmPreTrainedModel{}class PretrainedMixin{static MODEL_CLASS_MAPPINGS=null;static BASE_IF_FAIL=!1;static async from_pretrained(e,{quantized:n=!0,progress_callback:r=null,config:s=null,cache_dir:i=null,local_files_only:a=!1,revision:u="main",model_file_name:d=null,session_options:o={}}={}){let l={quantized:n,progress_callback:r,config:s,cache_dir:i,local_files_only:a,revision:u,model_file_name:d,session_options:o};if(s=await AutoConfig.from_pretrained(e,l),l.config||(l.config=s),!this.MODEL_CLASS_MAPPINGS)throw new Error("`MODEL_CLASS_MAPPINGS` not implemented for this type of `AutoClass`: "+this.name);for(let c of this.MODEL_CLASS_MAPPINGS){const h=c.get(s.model_type);if(h)return await h[1].from_pretrained(e,l)}if(this.BASE_IF_FAIL)return console.warn(`Unknown model class "${s.model_type}", attempting to construct from base class.`),await PreTrainedModel.from_pretrained(e,l);throw Error(`Unsupported model type: ${s.model_type}`)}}const MODEL_MAPPING_NAMES_ENCODER_ONLY=new Map([["bert",["BertModel",BertModel]],["nomic_bert",["NomicBertModel",NomicBertModel]],["roformer",["RoFormerModel",RoFormerModel]],["electra",["ElectraModel",ElectraModel]],["esm",["EsmModel",EsmModel]],["convbert",["ConvBertModel",ConvBertModel]],["camembert",["CamembertModel",CamembertModel]],["deberta",["DebertaModel",DebertaModel]],["deberta-v2",["DebertaV2Model",DebertaV2Model]],["mpnet",["MPNetModel",MPNetModel]],["albert",["AlbertModel",AlbertModel]],["distilbert",["DistilBertModel",DistilBertModel]],["roberta",["RobertaModel",RobertaModel]],["xlm",["XLMModel",XLMModel]],["xlm-roberta",["XLMRobertaModel",XLMRobertaModel]],["clap",["ClapModel",ClapModel]],["clip",["CLIPModel",CLIPModel]],["clipseg",["CLIPSegModel",CLIPSegModel]],["chinese_clip",["ChineseCLIPModel",ChineseCLIPModel]],["siglip",["SiglipModel",SiglipModel]],["mobilebert",["MobileBertModel",MobileBertModel]],["squeezebert",["SqueezeBertModel",SqueezeBertModel]],["wav2vec2",["Wav2Vec2Model",Wav2Vec2Model]],["wav2vec2-bert",["Wav2Vec2BertModel",Wav2Vec2BertModel]],["unispeech",["UniSpeechModel",UniSpeechModel]],["unispeech-sat",["UniSpeechSatModel",UniSpeechSatModel]],["hubert",["HubertModel",HubertModel]],["wavlm",["WavLMModel",WavLMModel]],["audio-spectrogram-transformer",["ASTModel",ASTModel]],["vits",["VitsModel",VitsModel]],["detr",["DetrModel",DetrModel]],["table-transformer",["TableTransformerModel",TableTransformerModel]],["vit",["ViTModel",ViTModel]],["mobilevit",["MobileViTModel",MobileViTModel]],["owlvit",["OwlViTModel",OwlViTModel]],["owlv2",["Owlv2Model",Owlv2Model]],["beit",["BeitModel",BeitModel]],["deit",["DeiTModel",DeiTModel]],["convnext",["ConvNextModel",ConvNextModel]],["convnextv2",["ConvNextV2Model",ConvNextV2Model]],["dinov2",["Dinov2Model",Dinov2Model]],["resnet",["ResNetModel",ResNetModel]],["swin",["SwinModel",SwinModel]],["swin2sr",["Swin2SRModel",Swin2SRModel]],["donut-swin",["DonutSwinModel",DonutSwinModel]],["yolos",["YolosModel",YolosModel]],["dpt",["DPTModel",DPTModel]],["glpn",["GLPNModel",GLPNModel]],["hifigan",["SpeechT5HifiGan",SpeechT5HifiGan]],["sam",["SamModel",SamModel]]]),MODEL_MAPPING_NAMES_ENCODER_DECODER=new Map([["t5",["T5Model",T5Model]],["longt5",["LongT5Model",LongT5Model]],["mt5",["MT5Model",MT5Model]],["bart",["BartModel",BartModel]],["mbart",["MBartModel",MBartModel]],["marian",["MarianModel",MarianModel]],["whisper",["WhisperModel",WhisperModel]],["m2m_100",["M2M100Model",M2M100Model]],["blenderbot",["BlenderbotModel",BlenderbotModel]],["blenderbot-small",["BlenderbotSmallModel",BlenderbotSmallModel]]]),MODEL_MAPPING_NAMES_DECODER_ONLY=new Map([["bloom",["BloomModel",BloomModel]],["gpt2",["GPT2Model",GPT2Model]],["gptj",["GPTJModel",GPTJModel]],["gpt_bigcode",["GPTBigCodeModel",GPTBigCodeModel]],["gpt_neo",["GPTNeoModel",GPTNeoModel]],["gpt_neox",["GPTNeoXModel",GPTNeoXModel]],["codegen",["CodeGenModel",CodeGenModel]],["llama",["LlamaModel",LlamaModel]],["qwen2",["Qwen2Model",Qwen2Model]],["phi",["PhiModel",PhiModel]],["mpt",["MptModel",MptModel]],["opt",["OPTModel",OPTModel]],["mistral",["MistralModel",MistralModel]],["starcoder2",["Starcoder2Model",Starcoder2Model]],["falcon",["FalconModel",FalconModel]]]),MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING_NAMES=new Map([["speecht5",["SpeechT5ForSpeechToText",SpeechT5ForSpeechToText]],["whisper",["WhisperForConditionalGeneration",WhisperForConditionalGeneration]]]),MODEL_FOR_TEXT_TO_SPECTROGRAM_MAPPING_NAMES=new Map([["speecht5",["SpeechT5ForTextToSpeech",SpeechT5ForTextToSpeech]]]),MODEL_FOR_TEXT_TO_WAVEFORM_MAPPING_NAMES=new Map([["vits",["VitsModel",VitsModel]]]),MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING_NAMES=new Map([["bert",["BertForSequenceClassification",BertForSequenceClassification]],["roformer",["RoFormerForSequenceClassification",RoFormerForSequenceClassification]],["electra",["ElectraForSequenceClassification",ElectraForSequenceClassification]],["esm",["EsmForSequenceClassification",EsmForSequenceClassification]],["convbert",["ConvBertForSequenceClassification",ConvBertForSequenceClassification]],["camembert",["CamembertForSequenceClassification",CamembertForSequenceClassification]],["deberta",["DebertaForSequenceClassification",DebertaForSequenceClassification]],["deberta-v2",["DebertaV2ForSequenceClassification",DebertaV2ForSequenceClassification]],["mpnet",["MPNetForSequenceClassification",MPNetForSequenceClassification]],["albert",["AlbertForSequenceClassification",AlbertForSequenceClassification]],["distilbert",["DistilBertForSequenceClassification",DistilBertForSequenceClassification]],["roberta",["RobertaForSequenceClassification",RobertaForSequenceClassification]],["xlm",["XLMForSequenceClassification",XLMForSequenceClassification]],["xlm-roberta",["XLMRobertaForSequenceClassification",XLMRobertaForSequenceClassification]],["bart",["BartForSequenceClassification",BartForSequenceClassification]],["mbart",["MBartForSequenceClassification",MBartForSequenceClassification]],["mobilebert",["MobileBertForSequenceClassification",MobileBertForSequenceClassification]],["squeezebert",["SqueezeBertForSequenceClassification",SqueezeBertForSequenceClassification]]]),MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING_NAMES=new Map([["bert",["BertForTokenClassification",BertForTokenClassification]],["roformer",["RoFormerForTokenClassification",RoFormerForTokenClassification]],["electra",["ElectraForTokenClassification",ElectraForTokenClassification]],["esm",["EsmForTokenClassification",EsmForTokenClassification]],["convbert",["ConvBertForTokenClassification",ConvBertForTokenClassification]],["camembert",["CamembertForTokenClassification",CamembertForTokenClassification]],["deberta",["DebertaForTokenClassification",DebertaForTokenClassification]],["deberta-v2",["DebertaV2ForTokenClassification",DebertaV2ForTokenClassification]],["mpnet",["MPNetForTokenClassification",MPNetForTokenClassification]],["distilbert",["DistilBertForTokenClassification",DistilBertForTokenClassification]],["roberta",["RobertaForTokenClassification",RobertaForTokenClassification]],["xlm",["XLMForTokenClassification",XLMForTokenClassification]],["xlm-roberta",["XLMRobertaForTokenClassification",XLMRobertaForTokenClassification]]]),MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING_NAMES=new Map([["t5",["T5ForConditionalGeneration",T5ForConditionalGeneration]],["longt5",["LongT5ForConditionalGeneration",LongT5ForConditionalGeneration]],["mt5",["MT5ForConditionalGeneration",MT5ForConditionalGeneration]],["bart",["BartForConditionalGeneration",BartForConditionalGeneration]],["mbart",["MBartForConditionalGeneration",MBartForConditionalGeneration]],["marian",["MarianMTModel",MarianMTModel]],["m2m_100",["M2M100ForConditionalGeneration",M2M100ForConditionalGeneration]],["blenderbot",["BlenderbotForConditionalGeneration",BlenderbotForConditionalGeneration]],["blenderbot-small",["BlenderbotSmallForConditionalGeneration",BlenderbotSmallForConditionalGeneration]]]),MODEL_WITH_LM_HEAD_MAPPING_NAMES=new Map([["bloom",["BloomForCausalLM",BloomForCausalLM]],["gpt2",["GPT2LMHeadModel",GPT2LMHeadModel]],["gptj",["GPTJForCausalLM",GPTJForCausalLM]],["gpt_bigcode",["GPTBigCodeForCausalLM",GPTBigCodeForCausalLM]],["gpt_neo",["GPTNeoForCausalLM",GPTNeoForCausalLM]],["gpt_neox",["GPTNeoXForCausalLM",GPTNeoXForCausalLM]],["codegen",["CodeGenForCausalLM",CodeGenForCausalLM]],["llama",["LlamaForCausalLM",LlamaForCausalLM]],["qwen2",["Qwen2ForCausalLM",Qwen2ForCausalLM]],["phi",["PhiForCausalLM",PhiForCausalLM]],["mpt",["MptForCausalLM",MptForCausalLM]],["opt",["OPTForCausalLM",OPTForCausalLM]],["mbart",["MBartForCausalLM",MBartForCausalLM]],["mistral",["MistralForCausalLM",MistralForCausalLM]],["starcoder2",["Starcoder2ForCausalLM",Starcoder2ForCausalLM]],["falcon",["FalconForCausalLM",FalconForCausalLM]],["trocr",["TrOCRForCausalLM",TrOCRForCausalLM]],["stablelm",["StableLmForCausalLM",StableLmForCausalLM]]]),MODEL_FOR_MASKED_LM_MAPPING_NAMES=new Map([["bert",["BertForMaskedLM",BertForMaskedLM]],["roformer",["RoFormerForMaskedLM",RoFormerForMaskedLM]],["electra",["ElectraForMaskedLM",ElectraForMaskedLM]],["esm",["EsmForMaskedLM",EsmForMaskedLM]],["convbert",["ConvBertForMaskedLM",ConvBertForMaskedLM]],["camembert",["CamembertForMaskedLM",CamembertForMaskedLM]],["deberta",["DebertaForMaskedLM",DebertaForMaskedLM]],["deberta-v2",["DebertaV2ForMaskedLM",DebertaV2ForMaskedLM]],["mpnet",["MPNetForMaskedLM",MPNetForMaskedLM]],["albert",["AlbertForMaskedLM",AlbertForMaskedLM]],["distilbert",["DistilBertForMaskedLM",DistilBertForMaskedLM]],["roberta",["RobertaForMaskedLM",RobertaForMaskedLM]],["xlm",["XLMWithLMHeadModel",XLMWithLMHeadModel]],["xlm-roberta",["XLMRobertaForMaskedLM",XLMRobertaForMaskedLM]],["mobilebert",["MobileBertForMaskedLM",MobileBertForMaskedLM]],["squeezebert",["SqueezeBertForMaskedLM",SqueezeBertForMaskedLM]]]),MODEL_FOR_QUESTION_ANSWERING_MAPPING_NAMES=new Map([["bert",["BertForQuestionAnswering",BertForQuestionAnswering]],["roformer",["RoFormerForQuestionAnswering",RoFormerForQuestionAnswering]],["electra",["ElectraForQuestionAnswering",ElectraForQuestionAnswering]],["convbert",["ConvBertForQuestionAnswering",ConvBertForQuestionAnswering]],["camembert",["CamembertForQuestionAnswering",CamembertForQuestionAnswering]],["deberta",["DebertaForQuestionAnswering",DebertaForQuestionAnswering]],["deberta-v2",["DebertaV2ForQuestionAnswering",DebertaV2ForQuestionAnswering]],["mpnet",["MPNetForQuestionAnswering",MPNetForQuestionAnswering]],["albert",["AlbertForQuestionAnswering",AlbertForQuestionAnswering]],["distilbert",["DistilBertForQuestionAnswering",DistilBertForQuestionAnswering]],["roberta",["RobertaForQuestionAnswering",RobertaForQuestionAnswering]],["xlm",["XLMForQuestionAnswering",XLMForQuestionAnswering]],["xlm-roberta",["XLMRobertaForQuestionAnswering",XLMRobertaForQuestionAnswering]],["mobilebert",["MobileBertForQuestionAnswering",MobileBertForQuestionAnswering]],["squeezebert",["SqueezeBertForQuestionAnswering",SqueezeBertForQuestionAnswering]]]),MODEL_FOR_VISION_2_SEQ_MAPPING_NAMES=new Map([["vision-encoder-decoder",["VisionEncoderDecoderModel",VisionEncoderDecoderModel]]]),MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING_NAMES=new Map([["vit",["ViTForImageClassification",ViTForImageClassification]],["mobilevit",["MobileViTForImageClassification",MobileViTForImageClassification]],["beit",["BeitForImageClassification",BeitForImageClassification]],["deit",["DeiTForImageClassification",DeiTForImageClassification]],["convnext",["ConvNextForImageClassification",ConvNextForImageClassification]],["convnextv2",["ConvNextV2ForImageClassification",ConvNextV2ForImageClassification]],["dinov2",["Dinov2ForImageClassification",Dinov2ForImageClassification]],["resnet",["ResNetForImageClassification",ResNetForImageClassification]],["swin",["SwinForImageClassification",SwinForImageClassification]],["segformer",["SegformerForImageClassification",SegformerForImageClassification]]]),MODEL_FOR_OBJECT_DETECTION_MAPPING_NAMES=new Map([["detr",["DetrForObjectDetection",DetrForObjectDetection]],["table-transformer",["TableTransformerForObjectDetection",TableTransformerForObjectDetection]],["yolos",["YolosForObjectDetection",YolosForObjectDetection]]]),MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING_NAMES=new Map([["owlvit",["OwlViTForObjectDetection",OwlViTForObjectDetection]],["owlv2",["Owlv2ForObjectDetection",Owlv2ForObjectDetection]]]),MODEL_FOR_IMAGE_SEGMENTATION_MAPPING_NAMES=new Map([["detr",["DetrForSegmentation",DetrForSegmentation]],["clipseg",["CLIPSegForImageSegmentation",CLIPSegForImageSegmentation]]]),MODEL_FOR_SEMANTIC_SEGMENTATION_MAPPING_NAMES=new Map([["segformer",["SegformerForSemanticSegmentation",SegformerForSemanticSegmentation]]]),MODEL_FOR_MASK_GENERATION_MAPPING_NAMES=new Map([["sam",["SamModel",SamModel]]]),MODEL_FOR_CTC_MAPPING_NAMES=new Map([["wav2vec2",["Wav2Vec2ForCTC",Wav2Vec2ForCTC]],["wav2vec2-bert",["Wav2Vec2BertForCTC",Wav2Vec2BertForCTC]],["unispeech",["UniSpeechForCTC",UniSpeechForCTC]],["unispeech-sat",["UniSpeechSatForCTC",UniSpeechSatForCTC]],["wavlm",["WavLMForCTC",WavLMForCTC]],["hubert",["HubertForCTC",HubertForCTC]]]),MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING_NAMES=new Map([["wav2vec2",["Wav2Vec2ForSequenceClassification",Wav2Vec2ForSequenceClassification]],["wav2vec2-bert",["Wav2Vec2BertForSequenceClassification",Wav2Vec2BertForSequenceClassification]],["unispeech",["UniSpeechForSequenceClassification",UniSpeechForSequenceClassification]],["unispeech-sat",["UniSpeechSatForSequenceClassification",UniSpeechSatForSequenceClassification]],["wavlm",["WavLMForSequenceClassification",WavLMForSequenceClassification]],["hubert",["HubertForSequenceClassification",HubertForSequenceClassification]],["audio-spectrogram-transformer",["ASTForAudioClassification",ASTForAudioClassification]]]),MODEL_FOR_AUDIO_XVECTOR_MAPPING_NAMES=new Map([["wavlm",["WavLMForXVector",WavLMForXVector]]]),MODEL_FOR_AUDIO_FRAME_CLASSIFICATION_MAPPING_NAMES=new Map([["unispeech-sat",["UniSpeechSatForAudioFrameClassification",UniSpeechSatForAudioFrameClassification]],["wavlm",["WavLMForAudioFrameClassification",WavLMForAudioFrameClassification]],["wav2vec2",["Wav2Vec2ForAudioFrameClassification",Wav2Vec2ForAudioFrameClassification]]]),MODEL_FOR_IMAGE_MATTING_MAPPING_NAMES=new Map([["vitmatte",["VitMatteForImageMatting",VitMatteForImageMatting]]]),MODEL_FOR_IMAGE_TO_IMAGE_MAPPING_NAMES=new Map([["swin2sr",["Swin2SRForImageSuperResolution",Swin2SRForImageSuperResolution]]]),MODEL_FOR_DEPTH_ESTIMATION_MAPPING_NAMES=new Map([["dpt",["DPTForDepthEstimation",DPTForDepthEstimation]],["depth_anything",["DepthAnythingForDepthEstimation",DepthAnythingForDepthEstimation]],["glpn",["GLPNForDepthEstimation",GLPNForDepthEstimation]]]),MODEL_CLASS_TYPE_MAPPING=[[MODEL_MAPPING_NAMES_ENCODER_ONLY,MODEL_TYPES.EncoderOnly],[MODEL_MAPPING_NAMES_ENCODER_DECODER,MODEL_TYPES.EncoderDecoder],[MODEL_MAPPING_NAMES_DECODER_ONLY,MODEL_TYPES.DecoderOnly],[MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING_NAMES,MODEL_TYPES.EncoderOnly],[MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING_NAMES,MODEL_TYPES.EncoderOnly],[MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING_NAMES,MODEL_TYPES.Seq2Seq],[MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING_NAMES,MODEL_TYPES.Seq2Seq],[MODEL_WITH_LM_HEAD_MAPPING_NAMES,MODEL_TYPES.DecoderOnly],[MODEL_FOR_MASKED_LM_MAPPING_NAMES,MODEL_TYPES.EncoderOnly],[MODEL_FOR_QUESTION_ANSWERING_MAPPING_NAMES,MODEL_TYPES.EncoderOnly],[MODEL_FOR_VISION_2_SEQ_MAPPING_NAMES,MODEL_TYPES.Vision2Seq],[MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING_NAMES,MODEL_TYPES.EncoderOnly],[MODEL_FOR_IMAGE_SEGMENTATION_MAPPING_NAMES,MODEL_TYPES.EncoderOnly],[MODEL_FOR_SEMANTIC_SEGMENTATION_MAPPING_NAMES,MODEL_TYPES.EncoderOnly],[MODEL_FOR_IMAGE_MATTING_MAPPING_NAMES,MODEL_TYPES.EncoderOnly],[MODEL_FOR_IMAGE_TO_IMAGE_MAPPING_NAMES,MODEL_TYPES.EncoderOnly],[MODEL_FOR_DEPTH_ESTIMATION_MAPPING_NAMES,MODEL_TYPES.EncoderOnly],[MODEL_FOR_OBJECT_DETECTION_MAPPING_NAMES,MODEL_TYPES.EncoderOnly],[MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING_NAMES,MODEL_TYPES.EncoderOnly],[MODEL_FOR_MASK_GENERATION_MAPPING_NAMES,MODEL_TYPES.MaskGeneration],[MODEL_FOR_CTC_MAPPING_NAMES,MODEL_TYPES.EncoderOnly],[MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING_NAMES,MODEL_TYPES.EncoderOnly],[MODEL_FOR_TEXT_TO_SPECTROGRAM_MAPPING_NAMES,MODEL_TYPES.Seq2Seq],[MODEL_FOR_TEXT_TO_WAVEFORM_MAPPING_NAMES,MODEL_TYPES.EncoderOnly],[MODEL_FOR_AUDIO_XVECTOR_MAPPING_NAMES,MODEL_TYPES.EncoderOnly],[MODEL_FOR_AUDIO_FRAME_CLASSIFICATION_MAPPING_NAMES,MODEL_TYPES.EncoderOnly]];for(const[t,e]of MODEL_CLASS_TYPE_MAPPING)for(const[n,r]of t.values())MODEL_TYPE_MAPPING.set(n,e),MODEL_CLASS_TO_NAME_MAPPING.set(r,n),MODEL_NAME_TO_CLASS_MAPPING.set(n,r);const CUSTOM_MAPPING=[["CLIPTextModelWithProjection",CLIPTextModelWithProjection,MODEL_TYPES.EncoderOnly],["CLIPVisionModelWithProjection",CLIPVisionModelWithProjection,MODEL_TYPES.EncoderOnly],["SiglipTextModel",SiglipTextModel,MODEL_TYPES.EncoderOnly],["SiglipVisionModel",SiglipVisionModel,MODEL_TYPES.EncoderOnly],["ClapTextModelWithProjection",ClapTextModelWithProjection,MODEL_TYPES.EncoderOnly],["ClapAudioModelWithProjection",ClapAudioModelWithProjection,MODEL_TYPES.EncoderOnly]];for(const[t,e,n]of CUSTOM_MAPPING)MODEL_TYPE_MAPPING.set(t,n),MODEL_CLASS_TO_NAME_MAPPING.set(e,t),MODEL_NAME_TO_CLASS_MAPPING.set(t,e);class AutoModel extends PretrainedMixin{static MODEL_CLASS_MAPPINGS=MODEL_CLASS_TYPE_MAPPING.map(e=>e[0]);static BASE_IF_FAIL=!0}class Seq2SeqLMOutput extends ModelOutput{constructor({logits:e,past_key_values:n,encoder_outputs:r,decoder_attentions:s=null,cross_attentions:i=null}){super(),this.logits=e,this.past_key_values=n,this.encoder_outputs=r,this.decoder_attentions=s,this.cross_attentions=i}}class SequenceClassifierOutput extends ModelOutput{constructor({logits:e}){super(),this.logits=e}}class XVectorOutput extends ModelOutput{constructor({logits:e,embeddings:n}){super(),this.logits=e,this.embeddings=n}}class TokenClassifierOutput extends ModelOutput{constructor({logits:e}){super(),this.logits=e}}class MaskedLMOutput extends ModelOutput{constructor({logits:e}){super(),this.logits=e}}class QuestionAnsweringModelOutput extends ModelOutput{constructor({start_logits:e,end_logits:n}){super(),this.start_logits=e,this.end_logits=n}}class CausalLMOutput extends ModelOutput{constructor({logits:e}){super(),this.logits=e}}class ImageMattingOutput extends ModelOutput{constructor({alphas:e}){super(),this.alphas=e}}class VitsModelOutput extends ModelOutput{constructor({waveform:e,spectrogram:n}){super(),this.waveform=e,this.spectrogram=n}}const BROWSER_ENV=typeof self<"u";if(!BROWSER_ENV){if(!sharp)throw new Error("Unable to load image processing library.")}/*! + * @kurkle/color v0.3.2 + * https://github.com/kurkle/color#readme + * (c) 2023 Jukka Kurkela + * Released under the MIT License + */function round(t){return t+.5|0}const lim=(t,e,n)=>Math.max(Math.min(t,n),e);function p2b(t){return lim(round(t*2.55),0,255)}function n2b(t){return lim(round(t*255),0,255)}function b2n(t){return lim(round(t/2.55)/100,0,1)}function n2p(t){return lim(round(t*100),0,100)}const map$1={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},hex=[..."0123456789ABCDEF"],h1=t=>hex[t&15],h2=t=>hex[(t&240)>>4]+hex[t&15],eq=t=>(t&240)>>4===(t&15),isShort=t=>eq(t.r)&&eq(t.g)&&eq(t.b)&&eq(t.a);function hexParse(t){var e=t.length,n;return t[0]==="#"&&(e===4||e===5?n={r:255&map$1[t[1]]*17,g:255&map$1[t[2]]*17,b:255&map$1[t[3]]*17,a:e===5?map$1[t[4]]*17:255}:(e===7||e===9)&&(n={r:map$1[t[1]]<<4|map$1[t[2]],g:map$1[t[3]]<<4|map$1[t[4]],b:map$1[t[5]]<<4|map$1[t[6]],a:e===9?map$1[t[7]]<<4|map$1[t[8]]:255})),n}const alpha=(t,e)=>t<255?e(t):"";function hexString(t){var e=isShort(t)?h1:h2;return t?"#"+e(t.r)+e(t.g)+e(t.b)+alpha(t.a,e):void 0}const HUE_RE=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function hsl2rgbn(t,e,n){const r=e*Math.min(n,1-n),s=(i,a=(i+t/30)%12)=>n-r*Math.max(Math.min(a-3,9-a,1),-1);return[s(0),s(8),s(4)]}function hsv2rgbn(t,e,n){const r=(s,i=(s+t/60)%6)=>n-n*e*Math.max(Math.min(i,4-i,1),0);return[r(5),r(3),r(1)]}function hwb2rgbn(t,e,n){const r=hsl2rgbn(t,1,.5);let s;for(e+n>1&&(s=1/(e+n),e*=s,n*=s),s=0;s<3;s++)r[s]*=1-e-n,r[s]+=e;return r}function hueValue(t,e,n,r,s){return t===s?(e-n)/r+(e.5?l/(2-i-a):l/(i+a),d=hueValue(n,r,s,l,i),d=d*60+.5),[d|0,o||0,u]}function calln(t,e,n,r){return(Array.isArray(e)?t(e[0],e[1],e[2]):t(e,n,r)).map(n2b)}function hsl2rgb(t,e,n){return calln(hsl2rgbn,t,e,n)}function hwb2rgb(t,e,n){return calln(hwb2rgbn,t,e,n)}function hsv2rgb(t,e,n){return calln(hsv2rgbn,t,e,n)}function hue(t){return(t%360+360)%360}function hueParse(t){const e=HUE_RE.exec(t);let n=255,r;if(!e)return;e[5]!==r&&(n=e[6]?p2b(+e[5]):n2b(+e[5]));const s=hue(+e[2]),i=+e[3]/100,a=+e[4]/100;return e[1]==="hwb"?r=hwb2rgb(s,i,a):e[1]==="hsv"?r=hsv2rgb(s,i,a):r=hsl2rgb(s,i,a),{r:r[0],g:r[1],b:r[2],a:n}}function rotate(t,e){var n=rgb2hsl(t);n[0]=hue(n[0]+e),n=hsl2rgb(n),t.r=n[0],t.g=n[1],t.b=n[2]}function hslString(t){if(!t)return;const e=rgb2hsl(t),n=e[0],r=n2p(e[1]),s=n2p(e[2]);return t.a<255?`hsla(${n}, ${r}%, ${s}%, ${b2n(t.a)})`:`hsl(${n}, ${r}%, ${s}%)`}const map$2={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},names$1={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};function unpack(){const t={},e=Object.keys(names$1),n=Object.keys(map$2);let r,s,i,a,u;for(r=0;r>16&255,i>>8&255,i&255]}return t}let names;function nameParse(t){names||(names=unpack(),names.transparent=[0,0,0,0]);const e=names[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:e.length===4?e[3]:255}}const RGB_RE=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;function rgbParse(t){const e=RGB_RE.exec(t);let n=255,r,s,i;if(e){if(e[7]!==r){const a=+e[7];n=e[8]?p2b(a):lim(a*255,0,255)}return r=+e[1],s=+e[3],i=+e[5],r=255&(e[2]?p2b(r):lim(r,0,255)),s=255&(e[4]?p2b(s):lim(s,0,255)),i=255&(e[6]?p2b(i):lim(i,0,255)),{r,g:s,b:i,a:n}}}function rgbString(t){return t&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${b2n(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`)}const to=t=>t<=.0031308?t*12.92:Math.pow(t,1/2.4)*1.055-.055,from=t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4);function interpolate$1(t,e,n){const r=from(b2n(t.r)),s=from(b2n(t.g)),i=from(b2n(t.b));return{r:n2b(to(r+n*(from(b2n(e.r))-r))),g:n2b(to(s+n*(from(b2n(e.g))-s))),b:n2b(to(i+n*(from(b2n(e.b))-i))),a:t.a+n*(e.a-t.a)}}function modHSL(t,e,n){if(t){let r=rgb2hsl(t);r[e]=Math.max(0,Math.min(r[e]+r[e]*n,e===0?360:1)),r=hsl2rgb(r),t.r=r[0],t.g=r[1],t.b=r[2]}}function clone$1(t,e){return t&&Object.assign(e||{},t)}function fromObject(t){var e={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(e={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(e.a=n2b(t[3]))):(e=clone$1(t,{r:0,g:0,b:0,a:1}),e.a=n2b(e.a)),e}function functionParse(t){return t.charAt(0)==="r"?rgbParse(t):hueParse(t)}class Color{constructor(e){if(e instanceof Color)return e;const n=typeof e;let r;n==="object"?r=fromObject(e):n==="string"&&(r=hexParse(e)||nameParse(e)||functionParse(e)),this._rgb=r,this._valid=!!r}get valid(){return this._valid}get rgb(){var e=clone$1(this._rgb);return e&&(e.a=b2n(e.a)),e}set rgb(e){this._rgb=fromObject(e)}rgbString(){return this._valid?rgbString(this._rgb):void 0}hexString(){return this._valid?hexString(this._rgb):void 0}hslString(){return this._valid?hslString(this._rgb):void 0}mix(e,n){if(e){const r=this.rgb,s=e.rgb;let i;const a=n===i?.5:n,u=2*a-1,d=r.a-s.a,o=((u*d===-1?u:(u+d)/(1+u*d))+1)/2;i=1-o,r.r=255&o*r.r+i*s.r+.5,r.g=255&o*r.g+i*s.g+.5,r.b=255&o*r.b+i*s.b+.5,r.a=a*r.a+(1-a)*s.a,this.rgb=r}return this}interpolate(e,n){return e&&(this._rgb=interpolate$1(this._rgb,e._rgb,n)),this}clone(){return new Color(this.rgb)}alpha(e){return this._rgb.a=n2b(e),this}clearer(e){const n=this._rgb;return n.a*=1-e,this}greyscale(){const e=this._rgb,n=round(e.r*.3+e.g*.59+e.b*.11);return e.r=e.g=e.b=n,this}opaquer(e){const n=this._rgb;return n.a*=1+e,this}negate(){const e=this._rgb;return e.r=255-e.r,e.g=255-e.g,e.b=255-e.b,this}lighten(e){return modHSL(this._rgb,2,e),this}darken(e){return modHSL(this._rgb,2,-e),this}saturate(e){return modHSL(this._rgb,1,e),this}desaturate(e){return modHSL(this._rgb,1,-e),this}rotate(e){return rotate(this._rgb,e),this}}/*! + * Chart.js v4.4.2 + * https://www.chartjs.org + * (c) 2024 Chart.js Contributors + * Released under the MIT License + */function noop(){}const uid=(()=>{let t=0;return()=>t++})();function isNullOrUndef(t){return t===null||typeof t>"u"}function isArray(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return e.slice(0,7)==="[object"&&e.slice(-6)==="Array]"}function isObject(t){return t!==null&&Object.prototype.toString.call(t)==="[object Object]"}function isNumberFinite(t){return(typeof t=="number"||t instanceof Number)&&isFinite(+t)}function finiteOrDefault(t,e){return isNumberFinite(t)?t:e}function valueOrDefault(t,e){return typeof t>"u"?e:t}const toPercentage=(t,e)=>typeof t=="string"&&t.endsWith("%")?parseFloat(t)/100:+t/e,toDimension=(t,e)=>typeof t=="string"&&t.endsWith("%")?parseFloat(t)/100*e:+t;function callback(t,e,n){if(t&&typeof t.call=="function")return t.apply(n,e)}function each(t,e,n,r){let s,i,a;if(isArray(t))if(i=t.length,r)for(s=i-1;s>=0;s--)e.call(n,t[s],s);else for(s=0;st,x:t=>t.x,y:t=>t.y};function _splitKey(t){const e=t.split("."),n=[];let r="";for(const s of e)r+=s,r.endsWith("\\")?r=r.slice(0,-1)+".":(n.push(r),r="");return n}function _getKeyResolver(t){const e=_splitKey(t);return n=>{for(const r of e){if(r==="")break;n=n&&n[r]}return n}}function resolveObjectKey(t,e){return(keyResolvers[e]||(keyResolvers[e]=_getKeyResolver(e)))(t)}function _capitalize(t){return t.charAt(0).toUpperCase()+t.slice(1)}const defined=t=>typeof t<"u",isFunction=t=>typeof t=="function",setsEqual=(t,e)=>{if(t.size!==e.size)return!1;for(const n of t)if(!e.has(n))return!1;return!0};function _isClickEvent(t){return t.type==="mouseup"||t.type==="click"||t.type==="contextmenu"}const PI=Math.PI,TAU=2*PI,PITAU=TAU+PI,INFINITY=Number.POSITIVE_INFINITY,RAD_PER_DEG=PI/180,HALF_PI=PI/2,QUARTER_PI=PI/4,TWO_THIRDS_PI=PI*2/3,log10=Math.log10,sign=Math.sign;function almostEquals(t,e,n){return Math.abs(t-e)s-i).pop(),e}function isNumber(t){return!isNaN(parseFloat(t))&&isFinite(t)}function almostWhole(t,e){const n=Math.round(t);return n-e<=t&&n+e>=t}function _setMinAndMaxByKey(t,e,n){let r,s,i;for(r=0,s=t.length;rd&&o=Math.min(e,n)-r&&t<=Math.max(e,n)+r}function _lookup(t,e,n){n=n||(a=>t[a]1;)i=s+r>>1,n(i)?s=i:r=i;return{lo:s,hi:r}}const _lookupByKey=(t,e,n,r)=>_lookup(t,n,r?s=>{const i=t[s][e];return it[s][e]_lookup(t,n,r=>t[r][e]>=n);function _filterBetween(t,e,n){let r=0,s=t.length;for(;rr&&t[s-1]>n;)s--;return r>0||s{const r="_onData"+_capitalize(n),s=t[n];Object.defineProperty(t,n,{configurable:!0,enumerable:!1,value(...i){const a=s.apply(this,i);return t._chartjs.listeners.forEach(u=>{typeof u[r]=="function"&&u[r](...i)}),a}})})}function unlistenArrayEvents(t,e){const n=t._chartjs;if(!n)return;const r=n.listeners,s=r.indexOf(e);s!==-1&&r.splice(s,1),!(r.length>0)&&(arrayEvents.forEach(i=>{delete t[i]}),delete t._chartjs)}function _arrayUnique(t){const e=new Set(t);return e.size===t.length?t:Array.from(e)}const requestAnimFrame=function(){return typeof window>"u"?function(t){return t()}:window.requestAnimationFrame}();function throttled(t,e){let n=[],r=!1;return function(...s){n=s,r||(r=!0,requestAnimFrame.call(window,()=>{r=!1,t.apply(e,n)}))}}function debounce(t,e){let n;return function(...r){return e?(clearTimeout(n),n=setTimeout(t,e,r)):t.apply(this,r),e}}const _toLeftRightCenter=t=>t==="start"?"left":t==="end"?"right":"center",_alignStartEnd=(t,e,n)=>t==="start"?e:t==="end"?n:(e+n)/2,_textX=(t,e,n,r)=>t===(r?"left":"right")?n:t==="center"?(e+n)/2:e;function _getStartAndCountOfVisiblePoints(t,e,n){const r=e.length;let s=0,i=r;if(t._sorted){const{iScale:a,_parsed:u}=t,d=a.axis,{min:o,max:l,minDefined:c,maxDefined:h}=a.getUserBounds();c&&(s=_limitValue(Math.min(_lookupByKey(u,d,o).lo,n?r:_lookupByKey(e,d,a.getPixelForValue(o)).lo),0,r-1)),h?i=_limitValue(Math.max(_lookupByKey(u,a.axis,l,!0).hi+1,n?0:_lookupByKey(e,d,a.getPixelForValue(l),!0).hi+1),s,r)-s:i=r-s}return{start:s,count:i}}function _scaleRangesChanged(t){const{xScale:e,yScale:n,_scaleRanges:r}=t,s={xmin:e.min,xmax:e.max,ymin:n.min,ymax:n.max};if(!r)return t._scaleRanges=s,!0;const i=r.xmin!==e.min||r.xmax!==e.max||r.ymin!==n.min||r.ymax!==n.max;return Object.assign(r,s),i}const atEdge=t=>t===0||t===1,elasticIn=(t,e,n)=>-(Math.pow(2,10*(t-=1))*Math.sin((t-e)*TAU/n)),elasticOut=(t,e,n)=>Math.pow(2,-10*t)*Math.sin((t-e)*TAU/n)+1,effects={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>-Math.cos(t*HALF_PI)+1,easeOutSine:t=>Math.sin(t*HALF_PI),easeInOutSine:t=>-.5*(Math.cos(PI*t)-1),easeInExpo:t=>t===0?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>t===1?1:-Math.pow(2,-10*t)+1,easeInOutExpo:t=>atEdge(t)?t:t<.5?.5*Math.pow(2,10*(t*2-1)):.5*(-Math.pow(2,-10*(t*2-1))+2),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>atEdge(t)?t:elasticIn(t,.075,.3),easeOutElastic:t=>atEdge(t)?t:elasticOut(t,.075,.3),easeInOutElastic(t){return atEdge(t)?t:t<.5?.5*elasticIn(t*2,.1125,.45):.5+.5*elasticOut(t*2-1,.1125,.45)},easeInBack(t){return t*t*((1.70158+1)*t-1.70158)},easeOutBack(t){return(t-=1)*t*((1.70158+1)*t+1.70158)+1},easeInOutBack(t){let e=1.70158;return(t/=.5)<1?.5*(t*t*(((e*=1.525)+1)*t-e)):.5*((t-=2)*t*(((e*=1.525)+1)*t+e)+2)},easeInBounce:t=>1-effects.easeOutBounce(1-t),easeOutBounce(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:t=>t<.5?effects.easeInBounce(t*2)*.5:effects.easeOutBounce(t*2-1)*.5+.5};function isPatternOrGradient(t){if(t&&typeof t=="object"){const e=t.toString();return e==="[object CanvasPattern]"||e==="[object CanvasGradient]"}return!1}function color(t){return isPatternOrGradient(t)?t:new Color(t)}function getHoverColor(t){return isPatternOrGradient(t)?t:new Color(t).saturate(.5).darken(.1).hexString()}const numbers=["x","y","borderWidth","radius","tension"],colors=["color","borderColor","backgroundColor"];function applyAnimationsDefaults(t){t.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),t.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:e=>e!=="onProgress"&&e!=="onComplete"&&e!=="fn"}),t.set("animations",{colors:{type:"color",properties:colors},numbers:{type:"number",properties:numbers}}),t.describe("animations",{_fallback:"animation"}),t.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:e=>e|0}}}})}function applyLayoutsDefaults(t){t.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})}const intlCache=new Map;function getNumberFormat(t,e){e=e||{};const n=t+JSON.stringify(e);let r=intlCache.get(n);return r||(r=new Intl.NumberFormat(t,e),intlCache.set(n,r)),r}function formatNumber(t,e,n){return getNumberFormat(e,n).format(t)}const formatters={values(t){return isArray(t)?t:""+t},numeric(t,e,n){if(t===0)return"0";const r=this.chart.options.locale;let s,i=t;if(n.length>1){const o=Math.max(Math.abs(n[0].value),Math.abs(n[n.length-1].value));(o<1e-4||o>1e15)&&(s="scientific"),i=calculateDelta(t,n)}const a=log10(Math.abs(i)),u=isNaN(a)?1:Math.max(Math.min(-1*Math.floor(a),20),0),d={notation:s,minimumFractionDigits:u,maximumFractionDigits:u};return Object.assign(d,this.options.ticks.format),formatNumber(t,r,d)},logarithmic(t,e,n){if(t===0)return"0";const r=n[e].significand||t/Math.pow(10,Math.floor(log10(t)));return[1,2,3,5,10,15].includes(r)||e>.8*n.length?formatters.numeric.call(this,t,e,n):""}};function calculateDelta(t,e){let n=e.length>3?e[2].value-e[1].value:e[1].value-e[0].value;return Math.abs(n)>=1&&t!==Math.floor(t)&&(n=t-Math.floor(t)),n}var Ticks={formatters};function applyScaleDefaults(t){t.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(e,n)=>n.lineWidth,tickColor:(e,n)=>n.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:Ticks.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),t.route("scale.ticks","color","","color"),t.route("scale.grid","color","","borderColor"),t.route("scale.border","color","","borderColor"),t.route("scale.title","color","","color"),t.describe("scale",{_fallback:!1,_scriptable:e=>!e.startsWith("before")&&!e.startsWith("after")&&e!=="callback"&&e!=="parser",_indexable:e=>e!=="borderDash"&&e!=="tickBorderDash"&&e!=="dash"}),t.describe("scales",{_fallback:"scale"}),t.describe("scale.ticks",{_scriptable:e=>e!=="backdropPadding"&&e!=="callback",_indexable:e=>e!=="backdropPadding"})}const overrides=Object.create(null),descriptors=Object.create(null);function getScope$1(t,e){if(!e)return t;const n=e.split(".");for(let r=0,s=n.length;rr.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(r,s)=>getHoverColor(s.backgroundColor),this.hoverBorderColor=(r,s)=>getHoverColor(s.borderColor),this.hoverColor=(r,s)=>getHoverColor(s.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(e),this.apply(n)}set(e,n){return set(this,e,n)}get(e){return getScope$1(this,e)}describe(e,n){return set(descriptors,e,n)}override(e,n){return set(overrides,e,n)}route(e,n,r,s){const i=getScope$1(this,e),a=getScope$1(this,r),u="_"+n;Object.defineProperties(i,{[u]:{value:i[n],writable:!0},[n]:{enumerable:!0,get(){const d=this[u],o=a[s];return isObject(d)?Object.assign({},o,d):valueOrDefault(d,o)},set(d){this[u]=d}}})}apply(e){e.forEach(n=>n(this))}}var defaults=new Defaults({_scriptable:t=>!t.startsWith("on"),_indexable:t=>t!=="events",hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[applyAnimationsDefaults,applyLayoutsDefaults,applyScaleDefaults]);function toFontString(t){return!t||isNullOrUndef(t.size)||isNullOrUndef(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}function _measureText(t,e,n,r,s){let i=e[s];return i||(i=e[s]=t.measureText(s).width,n.push(s)),i>r&&(r=i),r}function _longestText(t,e,n,r){r=r||{};let s=r.data=r.data||{},i=r.garbageCollect=r.garbageCollect||[];r.font!==e&&(s=r.data={},i=r.garbageCollect=[],r.font=e),t.save(),t.font=e;let a=0;const u=n.length;let d,o,l,c,h;for(d=0;dn.length){for(d=0;d0&&t.stroke()}}function _isPointInArea(t,e,n){return n=n||.5,!e||t&&t.x>e.left-n&&t.xe.top-n&&t.y0&&i.strokeColor!=="";let d,o;for(t.save(),t.font=s.string,setRenderOpts(t,i),d=0;d+t||0;function _readValueToProps(t,e){const n={},r=isObject(e),s=r?Object.keys(e):e,i=isObject(t)?r?a=>valueOrDefault(t[a],t[e[a]]):a=>t[a]:()=>t;for(const a of s)n[a]=numberOrZero(i(a));return n}function toTRBL(t){return _readValueToProps(t,{top:"y",right:"x",bottom:"y",left:"x"})}function toTRBLCorners(t){return _readValueToProps(t,["topLeft","topRight","bottomLeft","bottomRight"])}function toPadding(t){const e=toTRBL(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function toFont(t,e){t=t||{},e=e||defaults.font;let n=valueOrDefault(t.size,e.size);typeof n=="string"&&(n=parseInt(n,10));let r=valueOrDefault(t.style,e.style);r&&!(""+r).match(FONT_STYLE)&&(console.warn('Invalid font style specified: "'+r+'"'),r=void 0);const s={family:valueOrDefault(t.family,e.family),lineHeight:toLineHeight(valueOrDefault(t.lineHeight,e.lineHeight),n),size:n,style:r,weight:valueOrDefault(t.weight,e.weight),string:""};return s.string=toFontString(s),s}function resolve(t,e,n,r){let s=!0,i,a,u;for(i=0,a=t.length;in&&u===0?0:u+d;return{min:a(r,-Math.abs(i)),max:a(s,i)}}function createContext(t,e){return Object.assign(Object.create(t),e)}function _createResolver(t,e=[""],n,r,s=()=>t[0]){const i=n||t;typeof r>"u"&&(r=_resolve("_fallback",t));const a={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:t,_rootScopes:i,_fallback:r,_getTarget:s,override:u=>_createResolver([u,...t],e,i,r)};return new Proxy(a,{deleteProperty(u,d){return delete u[d],delete u._keys,delete t[0][d],!0},get(u,d){return _cached(u,d,()=>_resolveWithPrefixes(d,e,t,u))},getOwnPropertyDescriptor(u,d){return Reflect.getOwnPropertyDescriptor(u._scopes[0],d)},getPrototypeOf(){return Reflect.getPrototypeOf(t[0])},has(u,d){return getKeysFromAllScopes(u).includes(d)},ownKeys(u){return getKeysFromAllScopes(u)},set(u,d,o){const l=u._storage||(u._storage=s());return u[d]=l[d]=o,delete u._keys,!0}})}function _attachContext(t,e,n,r){const s={_cacheable:!1,_proxy:t,_context:e,_subProxy:n,_stack:new Set,_descriptors:_descriptors(t,r),setContext:i=>_attachContext(t,i,n,r),override:i=>_attachContext(t.override(i),e,n,r)};return new Proxy(s,{deleteProperty(i,a){return delete i[a],delete t[a],!0},get(i,a,u){return _cached(i,a,()=>_resolveWithContext(i,a,u))},getOwnPropertyDescriptor(i,a){return i._descriptors.allKeys?Reflect.has(t,a)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,a)},getPrototypeOf(){return Reflect.getPrototypeOf(t)},has(i,a){return Reflect.has(t,a)},ownKeys(){return Reflect.ownKeys(t)},set(i,a,u){return t[a]=u,delete i[a],!0}})}function _descriptors(t,e={scriptable:!0,indexable:!0}){const{_scriptable:n=e.scriptable,_indexable:r=e.indexable,_allKeys:s=e.allKeys}=t;return{allKeys:s,scriptable:n,indexable:r,isScriptable:isFunction(n)?n:()=>n,isIndexable:isFunction(r)?r:()=>r}}const readKey=(t,e)=>t?t+_capitalize(e):e,needsSubResolver=(t,e)=>isObject(e)&&t!=="adapters"&&(Object.getPrototypeOf(e)===null||e.constructor===Object);function _cached(t,e,n){if(Object.prototype.hasOwnProperty.call(t,e))return t[e];const r=n();return t[e]=r,r}function _resolveWithContext(t,e,n){const{_proxy:r,_context:s,_subProxy:i,_descriptors:a}=t;let u=r[e];return isFunction(u)&&a.isScriptable(e)&&(u=_resolveScriptable(e,u,t,n)),isArray(u)&&u.length&&(u=_resolveArray(e,u,t,a.isIndexable)),needsSubResolver(e,u)&&(u=_attachContext(u,s,i&&i[e],a)),u}function _resolveScriptable(t,e,n,r){const{_proxy:s,_context:i,_subProxy:a,_stack:u}=n;if(u.has(t))throw new Error("Recursion detected: "+Array.from(u).join("->")+"->"+t);u.add(t);let d=e(i,a||r);return u.delete(t),needsSubResolver(t,d)&&(d=createSubResolver(s._scopes,s,t,d)),d}function _resolveArray(t,e,n,r){const{_proxy:s,_context:i,_subProxy:a,_descriptors:u}=n;if(typeof i.index<"u"&&r(t))return e[i.index%e.length];if(isObject(e[0])){const d=e,o=s._scopes.filter(l=>l!==d);e=[];for(const l of d){const c=createSubResolver(o,s,t,l);e.push(_attachContext(c,i,a&&a[t],u))}}return e}function resolveFallback(t,e,n){return isFunction(t)?t(e,n):t}const getScope=(t,e)=>t===!0?e:typeof t=="string"?resolveObjectKey(e,t):void 0;function addScopes(t,e,n,r,s){for(const i of e){const a=getScope(n,i);if(a){t.add(a);const u=resolveFallback(a._fallback,n,s);if(typeof u<"u"&&u!==n&&u!==r)return u}else if(a===!1&&typeof r<"u"&&n!==r)return null}return!1}function createSubResolver(t,e,n,r){const s=e._rootScopes,i=resolveFallback(e._fallback,n,r),a=[...t,...s],u=new Set;u.add(r);let d=addScopesFromKey(u,a,n,i||n,r);return d===null||typeof i<"u"&&i!==n&&(d=addScopesFromKey(u,a,i,d,r),d===null)?!1:_createResolver(Array.from(u),[""],s,i,()=>subGetTarget(e,n,r))}function addScopesFromKey(t,e,n,r,s){for(;n;)n=addScopes(t,e,n,r,s);return n}function subGetTarget(t,e,n){const r=t._getTarget();e in r||(r[e]={});const s=r[e];return isArray(s)&&isObject(n)?n:s||{}}function _resolveWithPrefixes(t,e,n,r){let s;for(const i of e)if(s=_resolve(readKey(i,t),n),typeof s<"u")return needsSubResolver(t,s)?createSubResolver(n,r,t,s):s}function _resolve(t,e){for(const n of e){if(!n)continue;const r=n[t];if(typeof r<"u")return r}}function getKeysFromAllScopes(t){let e=t._keys;return e||(e=t._keys=resolveKeysFromAllScopes(t._scopes)),e}function resolveKeysFromAllScopes(t){const e=new Set;for(const n of t)for(const r of Object.keys(n).filter(s=>!s.startsWith("_")))e.add(r);return Array.from(e)}function _parseObjectDataRadialScale(t,e,n,r){const{iScale:s}=t,{key:i="r"}=this._parsing,a=new Array(r);let u,d,o,l;for(u=0,d=r;uet==="x"?"y":"x";function splineCurve(t,e,n,r){const s=t.skip?e:t,i=e,a=n.skip?e:n,u=distanceBetweenPoints(i,s),d=distanceBetweenPoints(a,i);let o=u/(u+d),l=d/(u+d);o=isNaN(o)?0:o,l=isNaN(l)?0:l;const c=r*o,h=r*l;return{previous:{x:i.x-c*(a.x-s.x),y:i.y-c*(a.y-s.y)},next:{x:i.x+h*(a.x-s.x),y:i.y+h*(a.y-s.y)}}}function monotoneAdjust(t,e,n){const r=t.length;let s,i,a,u,d,o=getPoint(t,0);for(let l=0;l!o.skip)),e.cubicInterpolationMode==="monotone")splineCurveMonotone(t,s);else{let o=r?t[t.length-1]:t[0];for(i=0,a=t.length;it.ownerDocument.defaultView.getComputedStyle(t,null);function getStyle(t,e){return getComputedStyle(t).getPropertyValue(e)}const positions=["top","right","bottom","left"];function getPositionedStyle(t,e,n){const r={};n=n?"-"+n:"";for(let s=0;s<4;s++){const i=positions[s];r[i]=parseFloat(t[e+"-"+i+n])||0}return r.width=r.left+r.right,r.height=r.top+r.bottom,r}const useOffsetPos=(t,e,n)=>(t>0||e>0)&&(!n||!n.shadowRoot);function getCanvasPosition(t,e){const n=t.touches,r=n&&n.length?n[0]:t,{offsetX:s,offsetY:i}=r;let a=!1,u,d;if(useOffsetPos(s,i,t.target))u=s,d=i;else{const o=e.getBoundingClientRect();u=r.clientX-o.left,d=r.clientY-o.top,a=!0}return{x:u,y:d,box:a}}function getRelativePosition(t,e){if("native"in t)return t;const{canvas:n,currentDevicePixelRatio:r}=e,s=getComputedStyle(n),i=s.boxSizing==="border-box",a=getPositionedStyle(s,"padding"),u=getPositionedStyle(s,"border","width"),{x:d,y:o,box:l}=getCanvasPosition(t,n),c=a.left+(l&&u.left),h=a.top+(l&&u.top);let{width:f,height:p}=e;return i&&(f-=a.width+u.width,p-=a.height+u.height),{x:Math.round((d-c)/f*n.width/r),y:Math.round((o-h)/p*n.height/r)}}function getContainerSize(t,e,n){let r,s;if(e===void 0||n===void 0){const i=_getParentNode(t);if(!i)e=t.clientWidth,n=t.clientHeight;else{const a=i.getBoundingClientRect(),u=getComputedStyle(i),d=getPositionedStyle(u,"border","width"),o=getPositionedStyle(u,"padding");e=a.width-o.width-d.width,n=a.height-o.height-d.height,r=parseMaxStyle(u.maxWidth,i,"clientWidth"),s=parseMaxStyle(u.maxHeight,i,"clientHeight")}}return{width:e,height:n,maxWidth:r||INFINITY,maxHeight:s||INFINITY}}const round1=t=>Math.round(t*10)/10;function getMaximumSize(t,e,n,r){const s=getComputedStyle(t),i=getPositionedStyle(s,"margin"),a=parseMaxStyle(s.maxWidth,t,"clientWidth")||INFINITY,u=parseMaxStyle(s.maxHeight,t,"clientHeight")||INFINITY,d=getContainerSize(t,e,n);let{width:o,height:l}=d;if(s.boxSizing==="content-box"){const h=getPositionedStyle(s,"border","width"),f=getPositionedStyle(s,"padding");o-=f.width+h.width,l-=f.height+h.height}return o=Math.max(0,o-i.width),l=Math.max(0,r?o/r:l-i.height),o=round1(Math.min(o,a,d.maxWidth)),l=round1(Math.min(l,u,d.maxHeight)),o&&!l&&(l=round1(o/2)),(e!==void 0||n!==void 0)&&r&&d.height&&l>d.height&&(l=d.height,o=round1(Math.floor(l*r))),{width:o,height:l}}function retinaScale(t,e,n){const r=e||1,s=Math.floor(t.height*r),i=Math.floor(t.width*r);t.height=Math.floor(t.height),t.width=Math.floor(t.width);const a=t.canvas;return a.style&&(n||!a.style.height&&!a.style.width)&&(a.style.height=`${t.height}px`,a.style.width=`${t.width}px`),t.currentDevicePixelRatio!==r||a.height!==s||a.width!==i?(t.currentDevicePixelRatio=r,a.height=s,a.width=i,t.ctx.setTransform(r,0,0,r,0,0),!0):!1}const supportsEventListenerOptions=function(){let t=!1;try{const e={get passive(){return t=!0,!1}};_isDomSupported()&&(window.addEventListener("test",null,e),window.removeEventListener("test",null,e))}catch{}return t}();function readUsedSize(t,e){const n=getStyle(t,e),r=n&&n.match(/^(\d+)(\.\d+)?px$/);return r?+r[1]:void 0}function _pointInLine(t,e,n,r){return{x:t.x+n*(e.x-t.x),y:t.y+n*(e.y-t.y)}}function _steppedInterpolation(t,e,n,r){return{x:t.x+n*(e.x-t.x),y:r==="middle"?n<.5?t.y:e.y:r==="after"?n<1?t.y:e.y:n>0?e.y:t.y}}function _bezierInterpolation(t,e,n,r){const s={x:t.cp2x,y:t.cp2y},i={x:e.cp1x,y:e.cp1y},a=_pointInLine(t,s,n),u=_pointInLine(s,i,n),d=_pointInLine(i,e,n),o=_pointInLine(a,u,n),l=_pointInLine(u,d,n);return _pointInLine(o,l,n)}const getRightToLeftAdapter=function(t,e){return{x(n){return t+t+e-n},setWidth(n){e=n},textAlign(n){return n==="center"?n:n==="right"?"left":"right"},xPlus(n,r){return n-r},leftForLtr(n,r){return n-r}}},getLeftToRightAdapter=function(){return{x(t){return t},setWidth(t){},textAlign(t){return t},xPlus(t,e){return t+e},leftForLtr(t,e){return t}}};function getRtlAdapter(t,e,n){return t?getRightToLeftAdapter(e,n):getLeftToRightAdapter()}function overrideTextDirection(t,e){let n,r;(e==="ltr"||e==="rtl")&&(n=t.canvas.style,r=[n.getPropertyValue("direction"),n.getPropertyPriority("direction")],n.setProperty("direction",e,"important"),t.prevTextDirection=r)}function restoreTextDirection(t,e){e!==void 0&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}function propertyFn(t){return t==="angle"?{between:_angleBetween,compare:_angleDiff,normalize:_normalizeAngle}:{between:_isBetween,compare:(e,n)=>e-n,normalize:e=>e}}function normalizeSegment({start:t,end:e,count:n,loop:r,style:s}){return{start:t%n,end:e%n,loop:r&&(e-t+1)%n===0,style:s}}function getSegment(t,e,n){const{property:r,start:s,end:i}=n,{between:a,normalize:u}=propertyFn(r),d=e.length;let{start:o,end:l,loop:c}=t,h,f;if(c){for(o+=d,l+=d,h=0,f=d;hd(s,T,w)&&u(s,T)!==0,E=()=>u(i,w)===0||d(i,T,w),N=()=>g||S(),B=()=>!g||E();for(let F=l,k=l;F<=c;++F)y=e[F%a],!y.skip&&(w=o(y[r]),w!==T&&(g=d(w,s,i),b===null&&N()&&(b=u(w,s)===0?F:k),b!==null&&B()&&(p.push(normalizeSegment({start:b,end:F,loop:h,count:a,style:f})),b=null),k=F,T=w));return b!==null&&p.push(normalizeSegment({start:b,end:c,loop:h,count:a,style:f})),p}function _boundSegments(t,e){const n=[],r=t.segments;for(let s=0;ss&&t[i%e].skip;)i--;return i%=e,{start:s,end:i}}function solidSegments(t,e,n,r){const s=t.length,i=[];let a=e,u=t[e],d;for(d=e+1;d<=n;++d){const o=t[d%s];o.skip||o.stop?u.skip||(r=!1,i.push({start:e%s,end:(d-1)%s,loop:r}),e=a=o.stop?d:null):(a=d,u.skip&&(e=d)),u=o}return a!==null&&i.push({start:e%s,end:a%s,loop:r}),i}function _computeSegments(t,e){const n=t.points,r=t.options.spanGaps,s=n.length;if(!s)return[];const i=!!t._loop,{start:a,end:u}=findStartAndEnd(n,s,i,r);if(r===!0)return splitByStyles(t,[{start:a,end:u,loop:i}],n,e);const d=uu({chart:e,initial:n.initial,numSteps:a,currentStep:Math.min(r-n.start,a)}))}_refresh(){this._request||(this._running=!0,this._request=requestAnimFrame.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(e=Date.now()){let n=0;this._charts.forEach((r,s)=>{if(!r.running||!r.items.length)return;const i=r.items;let a=i.length-1,u=!1,d;for(;a>=0;--a)d=i[a],d._active?(d._total>r.duration&&(r.duration=d._total),d.tick(e),u=!0):(i[a]=i[i.length-1],i.pop());u&&(s.draw(),this._notify(s,r,e,"progress")),i.length||(r.running=!1,this._notify(s,r,e,"complete"),r.initial=!1),n+=i.length}),this._lastDate=e,n===0&&(this._running=!1)}_getAnims(e){const n=this._charts;let r=n.get(e);return r||(r={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},n.set(e,r)),r}listen(e,n,r){this._getAnims(e).listeners[n].push(r)}add(e,n){!n||!n.length||this._getAnims(e).items.push(...n)}has(e){return this._getAnims(e).items.length>0}start(e){const n=this._charts.get(e);n&&(n.running=!0,n.start=Date.now(),n.duration=n.items.reduce((r,s)=>Math.max(r,s._duration),0),this._refresh())}running(e){if(!this._running)return!1;const n=this._charts.get(e);return!(!n||!n.running||!n.items.length)}stop(e){const n=this._charts.get(e);if(!n||!n.items.length)return;const r=n.items;let s=r.length-1;for(;s>=0;--s)r[s].cancel();n.items=[],this._notify(e,n,Date.now(),"complete")}remove(e){return this._charts.delete(e)}}var animator=new Animator;const transparent="transparent",interpolators={boolean(t,e,n){return n>.5?e:t},color(t,e,n){const r=color(t||transparent),s=r.valid&&color(e||transparent);return s&&s.valid?s.mix(r,n).hexString():e},number(t,e,n){return t+(e-t)*n}};class Animation{constructor(e,n,r,s){const i=n[r];s=resolve([e.to,s,i,e.from]);const a=resolve([e.from,i,s]);this._active=!0,this._fn=e.fn||interpolators[e.type||typeof a],this._easing=effects[e.easing]||effects.linear,this._start=Math.floor(Date.now()+(e.delay||0)),this._duration=this._total=Math.floor(e.duration),this._loop=!!e.loop,this._target=n,this._prop=r,this._from=a,this._to=s,this._promises=void 0}active(){return this._active}update(e,n,r){if(this._active){this._notify(!1);const s=this._target[this._prop],i=r-this._start,a=this._duration-i;this._start=r,this._duration=Math.floor(Math.max(a,e.duration)),this._total+=i,this._loop=!!e.loop,this._to=resolve([e.to,n,s,e.from]),this._from=resolve([e.from,s,n])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(e){const n=e-this._start,r=this._duration,s=this._prop,i=this._from,a=this._loop,u=this._to;let d;if(this._active=i!==u&&(a||n1?2-d:d,d=this._easing(Math.min(1,Math.max(0,d))),this._target[s]=this._fn(i,u,d)}wait(){const e=this._promises||(this._promises=[]);return new Promise((n,r)=>{e.push({res:n,rej:r})})}_notify(e){const n=e?"res":"rej",r=this._promises||[];for(let s=0;s{const i=e[s];if(!isObject(i))return;const a={};for(const u of n)a[u]=i[u];(isArray(i.properties)&&i.properties||[s]).forEach(u=>{(u===s||!r.has(u))&&r.set(u,a)})})}_animateOptions(e,n){const r=n.options,s=resolveTargetOptions(e,r);if(!s)return[];const i=this._createAnimations(s,r);return r.$shared&&awaitAll(e.options.$animations,r).then(()=>{e.options=r},()=>{}),i}_createAnimations(e,n){const r=this._properties,s=[],i=e.$animations||(e.$animations={}),a=Object.keys(n),u=Date.now();let d;for(d=a.length-1;d>=0;--d){const o=a[d];if(o.charAt(0)==="$")continue;if(o==="options"){s.push(...this._animateOptions(e,n));continue}const l=n[o];let c=i[o];const h=r.get(o);if(c)if(h&&c.active()){c.update(h,l,u);continue}else c.cancel();if(!h||!h.duration){e[o]=l;continue}i[o]=c=new Animation(h,e,o,l),s.push(c)}return s}update(e,n){if(this._properties.size===0){Object.assign(e,n);return}const r=this._createAnimations(e,n);if(r.length)return animator.add(this._chart,r),!0}}function awaitAll(t,e){const n=[],r=Object.keys(e);for(let s=0;s0||!n&&i<0)return s.index}return null}function updateStacks(t,e){const{chart:n,_cachedMeta:r}=t,s=n._stacks||(n._stacks={}),{iScale:i,vScale:a,index:u}=r,d=i.axis,o=a.axis,l=getStackKey(i,a,r),c=e.length;let h;for(let f=0;fn[r].axis===e).shift()}function createDatasetContext(t,e){return createContext(t,{active:!1,dataset:void 0,datasetIndex:e,index:e,mode:"default",type:"dataset"})}function createDataContext(t,e,n){return createContext(t,{active:!1,dataIndex:e,parsed:void 0,raw:void 0,element:n,index:e,mode:"default",type:"data"})}function clearStacks(t,e){const n=t.controller.index,r=t.vScale&&t.vScale.axis;if(r){e=e||t._parsed;for(const s of e){const i=s._stacks;if(!i||i[r]===void 0||i[r][n]===void 0)return;delete i[r][n],i[r]._visualValues!==void 0&&i[r]._visualValues[n]!==void 0&&delete i[r]._visualValues[n]}}}const isDirectUpdateMode=t=>t==="reset"||t==="none",cloneIfNotShared=(t,e)=>e?t:Object.assign({},t),createStack=(t,e,n)=>t&&!e.hidden&&e._stacked&&{keys:getSortedDatasetIndices(n,!0),values:null};class DatasetController{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(e,n){this.chart=e,this._ctx=e.ctx,this.index=n,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const e=this._cachedMeta;this.configure(),this.linkScales(),e._stacked=isStacked(e.vScale,e),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(e){this.index!==e&&clearStacks(this._cachedMeta),this.index=e}linkScales(){const e=this.chart,n=this._cachedMeta,r=this.getDataset(),s=(c,h,f,p)=>c==="x"?h:c==="r"?p:f,i=n.xAxisID=valueOrDefault(r.xAxisID,getFirstScaleId(e,"x")),a=n.yAxisID=valueOrDefault(r.yAxisID,getFirstScaleId(e,"y")),u=n.rAxisID=valueOrDefault(r.rAxisID,getFirstScaleId(e,"r")),d=n.indexAxis,o=n.iAxisID=s(d,i,a,u),l=n.vAxisID=s(d,a,i,u);n.xScale=this.getScaleForId(i),n.yScale=this.getScaleForId(a),n.rScale=this.getScaleForId(u),n.iScale=this.getScaleForId(o),n.vScale=this.getScaleForId(l)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(e){return this.chart.scales[e]}_getOtherScale(e){const n=this._cachedMeta;return e===n.iScale?n.vScale:n.iScale}reset(){this._update("reset")}_destroy(){const e=this._cachedMeta;this._data&&unlistenArrayEvents(this._data,this),e._stacked&&clearStacks(e)}_dataCheck(){const e=this.getDataset(),n=e.data||(e.data=[]),r=this._data;if(isObject(n))this._data=convertObjectDataToArray(n);else if(r!==n){if(r){unlistenArrayEvents(r,this);const s=this._cachedMeta;clearStacks(s),s._parsed=[]}n&&Object.isExtensible(n)&&listenArrayEvents(n,this),this._syncList=[],this._data=n}}addElements(){const e=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(e.dataset=new this.datasetElementType)}buildOrUpdateElements(e){const n=this._cachedMeta,r=this.getDataset();let s=!1;this._dataCheck();const i=n._stacked;n._stacked=isStacked(n.vScale,n),n.stack!==r.stack&&(s=!0,clearStacks(n),n.stack=r.stack),this._resyncElements(e),(s||i!==n._stacked)&&updateStacks(this,n._parsed)}configure(){const e=this.chart.config,n=e.datasetScopeKeys(this._type),r=e.getOptionScopes(this.getDataset(),n,!0);this.options=e.createResolver(r,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(e,n){const{_cachedMeta:r,_data:s}=this,{iScale:i,_stacked:a}=r,u=i.axis;let d=e===0&&n===s.length?!0:r._sorted,o=e>0&&r._parsed[e-1],l,c,h;if(this._parsing===!1)r._parsed=s,r._sorted=!0,h=s;else{isArray(s[e])?h=this.parseArrayData(r,s,e,n):isObject(s[e])?h=this.parseObjectData(r,s,e,n):h=this.parsePrimitiveData(r,s,e,n);const f=()=>c[u]===null||o&&c[u]g||c=0;--h)if(!p()){this.updateRangeFromParsed(o,e,f,d);break}}return o}getAllParsedValues(e){const n=this._cachedMeta._parsed,r=[];let s,i,a;for(s=0,i=n.length;s=0&&ethis.getContext(r,s,n),g=o.resolveNamedOptions(h,f,p,c);return g.$shared&&(g.$shared=d,i[a]=Object.freeze(cloneIfNotShared(g,d))),g}_resolveAnimations(e,n,r){const s=this.chart,i=this._cachedDataOpts,a=`animation-${n}`,u=i[a];if(u)return u;let d;if(s.options.animation!==!1){const l=this.chart.config,c=l.datasetAnimationScopeKeys(this._type,n),h=l.getOptionScopes(this.getDataset(),c);d=l.createResolver(h,this.getContext(e,r,n))}const o=new Animations(s,d&&d.animations);return d&&d._cacheable&&(i[a]=Object.freeze(o)),o}getSharedOptions(e){if(e.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},e))}includeOptions(e,n){return!n||isDirectUpdateMode(e)||this.chart._animationsDisabled}_getSharedOptions(e,n){const r=this.resolveDataElementOptions(e,n),s=this._sharedOptions,i=this.getSharedOptions(r),a=this.includeOptions(n,i)||i!==s;return this.updateSharedOptions(i,n,r),{sharedOptions:i,includeOptions:a}}updateElement(e,n,r,s){isDirectUpdateMode(s)?Object.assign(e,r):this._resolveAnimations(n,s).update(e,r)}updateSharedOptions(e,n,r){e&&!isDirectUpdateMode(n)&&this._resolveAnimations(void 0,n).update(e,r)}_setStyle(e,n,r,s){e.active=s;const i=this.getStyle(n,s);this._resolveAnimations(n,r,s).update(e,{options:!s&&this.getSharedOptions(i)||i})}removeHoverStyle(e,n,r){this._setStyle(e,r,"active",!1)}setHoverStyle(e,n,r){this._setStyle(e,r,"active",!0)}_removeDatasetHoverStyle(){const e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,"active",!1)}_setDatasetHoverStyle(){const e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,"active",!0)}_resyncElements(e){const n=this._data,r=this._cachedMeta.data;for(const[u,d,o]of this._syncList)this[u](d,o);this._syncList=[];const s=r.length,i=n.length,a=Math.min(i,s);a&&this.parse(0,a),i>s?this._insertElements(s,i-s,e):i{for(o.length+=n,u=o.length-1;u>=a;u--)o[u]=o[u-n]};for(d(i),u=e;us-i))}return t._cache.$bar}function computeMinSampleSize(t){const e=t.iScale,n=getAllScaleValues(e,t.type);let r=e._length,s,i,a,u;const d=()=>{a===32767||a===-32768||(defined(u)&&(r=Math.min(r,Math.abs(a-u)||r)),u=a)};for(s=0,i=n.length;s0?s[t-1]:null,u=tMath.abs(u)&&(d=u,o=a),e[n.axis]=o,e._custom={barStart:d,barEnd:o,start:s,end:i,min:a,max:u}}function parseValue(t,e,n,r){return isArray(t)?parseFloatBar(t,e,n,r):e[n.axis]=n.parse(t,r),e}function parseArrayOrPrimitive(t,e,n,r){const s=t.iScale,i=t.vScale,a=s.getLabels(),u=s===i,d=[];let o,l,c,h;for(o=n,l=n+r;o=n?1:-1)}function borderProps(t){let e,n,r,s,i;return t.horizontal?(e=t.base>t.x,n="left",r="right"):(e=t.based.controller.options.grouped),i=r.options.stacked,a=[],u=d=>{const o=d.controller.getParsed(n),l=o&&o[d.vScale.axis];if(isNullOrUndef(l)||isNaN(l))return!0};for(const d of s)if(!(n!==void 0&&u(d))&&((i===!1||a.indexOf(d.stack)===-1||i===void 0&&d.stack===void 0)&&a.push(d.stack),d.index===e))break;return a.length||a.push(void 0),a}_getStackCount(e){return this._getStacks(void 0,e).length}_getStackIndex(e,n,r){const s=this._getStacks(e,r),i=n!==void 0?s.indexOf(n):-1;return i===-1?s.length-1:i}_getRuler(){const e=this.options,n=this._cachedMeta,r=n.iScale,s=[];let i,a;for(i=0,a=n.data.length;i=0;--r)n=Math.max(n,e[r].size(this.resolveDataElementOptions(r))/2);return n>0&&n}getLabelAndValue(e){const n=this._cachedMeta,r=this.chart.data.labels||[],{xScale:s,yScale:i}=n,a=this.getParsed(e),u=s.getLabelForValue(a.x),d=i.getLabelForValue(a.y),o=a._custom;return{label:r[e]||"",value:"("+u+", "+d+(o?", "+o:"")+")"}}update(e){const n=this._cachedMeta.data;this.updateElements(n,0,n.length,e)}updateElements(e,n,r,s){const i=s==="reset",{iScale:a,vScale:u}=this._cachedMeta,{sharedOptions:d,includeOptions:o}=this._getSharedOptions(n,s),l=a.axis,c=u.axis;for(let h=n;h_angleBetween(T,u,d,!0)?1:Math.max(S,S*n,E,E*n),p=(T,S,E)=>_angleBetween(T,u,d,!0)?-1:Math.min(S,S*n,E,E*n),g=f(0,o,c),b=f(HALF_PI,l,h),w=p(PI,o,c),y=p(PI+HALF_PI,l,h);r=(g-w)/2,s=(b-y)/2,i=-(g+w)/2,a=-(b+y)/2}return{ratioX:r,ratioY:s,offsetX:i,offsetY:a}}class DoughnutController extends DatasetController{static id="doughnut";static defaults={datasetElementType:!1,dataElementType:"arc",animation:{animateRotate:!0,animateScale:!1},animations:{numbers:{type:"number",properties:["circumference","endAngle","innerRadius","outerRadius","startAngle","x","y","offset","borderWidth","spacing"]}},cutout:"50%",rotation:0,circumference:360,radius:"100%",spacing:0,indexAxis:"r"};static descriptors={_scriptable:e=>e!=="spacing",_indexable:e=>e!=="spacing"&&!e.startsWith("borderDash")&&!e.startsWith("hoverBorderDash")};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){const n=e.data;if(n.labels.length&&n.datasets.length){const{labels:{pointStyle:r,color:s}}=e.legend.options;return n.labels.map((i,a)=>{const d=e.getDatasetMeta(0).controller.getStyle(a);return{text:i,fillStyle:d.backgroundColor,strokeStyle:d.borderColor,fontColor:s,lineWidth:d.borderWidth,pointStyle:r,hidden:!e.getDataVisibility(a),index:a}})}return[]}},onClick(e,n,r){r.chart.toggleDataVisibility(n.index),r.chart.update()}}}};constructor(e,n){super(e,n),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(e,n){const r=this.getDataset().data,s=this._cachedMeta;if(this._parsing===!1)s._parsed=r;else{let i=d=>+r[d];if(isObject(r[e])){const{key:d="value"}=this._parsing;i=o=>+resolveObjectKey(r[o],d)}let a,u;for(a=e,u=e+n;a0&&!isNaN(e)?TAU*(Math.abs(e)/n):0}getLabelAndValue(e){const n=this._cachedMeta,r=this.chart,s=r.data.labels||[],i=formatNumber(n._parsed[e],r.options.locale);return{label:s[e]||"",value:i}}getMaxBorderWidth(e){let n=0;const r=this.chart;let s,i,a,u,d;if(!e){for(s=0,i=r.data.datasets.length;s0&&this.getParsed(n-1);for(let E=0;E=y){B.skip=!0;continue}const F=this.getParsed(E),k=isNullOrUndef(F[f]),G=B[h]=a.getPixelForValue(F[h],E),re=B[f]=i||k?u.getBasePixel():u.getPixelForValue(d?this.applyStack(u,F,d):F[f],E);B.skip=isNaN(G)||isNaN(re)||k,B.stop=E>0&&Math.abs(F[h]-S[h])>b,g&&(B.parsed=F,B.raw=o.data[E]),c&&(B.options=l||this.resolveDataElementOptions(E,N.active?"active":s)),w||this.updateElement(N,E,B,s),S=F}}getMaxOverflow(){const e=this._cachedMeta,n=e.dataset,r=n.options&&n.options.borderWidth||0,s=e.data||[];if(!s.length)return r;const i=s[0].size(this.resolveDataElementOptions(0)),a=s[s.length-1].size(this.resolveDataElementOptions(s.length-1));return Math.max(r,i,a)/2}draw(){const e=this._cachedMeta;e.dataset.updateControlPoints(this.chart.chartArea,e.iScale.axis),super.draw()}}class PolarAreaController extends DatasetController{static id="polarArea";static defaults={dataElementType:"arc",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:"number",properties:["x","y","startAngle","endAngle","innerRadius","outerRadius"]}},indexAxis:"r",startAngle:0};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){const n=e.data;if(n.labels.length&&n.datasets.length){const{labels:{pointStyle:r,color:s}}=e.legend.options;return n.labels.map((i,a)=>{const d=e.getDatasetMeta(0).controller.getStyle(a);return{text:i,fillStyle:d.backgroundColor,strokeStyle:d.borderColor,fontColor:s,lineWidth:d.borderWidth,pointStyle:r,hidden:!e.getDataVisibility(a),index:a}})}return[]}},onClick(e,n,r){r.chart.toggleDataVisibility(n.index),r.chart.update()}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};constructor(e,n){super(e,n),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(e){const n=this._cachedMeta,r=this.chart,s=r.data.labels||[],i=formatNumber(n._parsed[e].r,r.options.locale);return{label:s[e]||"",value:i}}parseObjectData(e,n,r,s){return _parseObjectDataRadialScale.bind(this)(e,n,r,s)}update(e){const n=this._cachedMeta.data;this._updateRadius(),this.updateElements(n,0,n.length,e)}getMinMax(){const e=this._cachedMeta,n={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return e.data.forEach((r,s)=>{const i=this.getParsed(s).r;!isNaN(i)&&this.chart.getDataVisibility(s)&&(in.max&&(n.max=i))}),n}_updateRadius(){const e=this.chart,n=e.chartArea,r=e.options,s=Math.min(n.right-n.left,n.bottom-n.top),i=Math.max(s/2,0),a=Math.max(r.cutoutPercentage?i/100*r.cutoutPercentage:1,0),u=(i-a)/e.getVisibleDatasetCount();this.outerRadius=i-u*this.index,this.innerRadius=this.outerRadius-u}updateElements(e,n,r,s){const i=s==="reset",a=this.chart,d=a.options.animation,o=this._cachedMeta.rScale,l=o.xCenter,c=o.yCenter,h=o.getIndexAngle(0)-.5*PI;let f=h,p;const g=360/this.countVisibleElements();for(p=0;p{!isNaN(this.getParsed(s).r)&&this.chart.getDataVisibility(s)&&n++}),n}_computeAngle(e,n,r){return this.chart.getDataVisibility(e)?toRadians(this.resolveDataElementOptions(e,n).angle||r):0}}class PieController extends DoughnutController{static id="pie";static defaults={cutout:0,rotation:0,circumference:360,radius:"100%"}}class RadarController extends DatasetController{static id="radar";static defaults={datasetElementType:"line",dataElementType:"point",indexAxis:"r",showLine:!0,elements:{line:{fill:"start"}}};static overrides={aspectRatio:1,scales:{r:{type:"radialLinear"}}};getLabelAndValue(e){const n=this._cachedMeta.vScale,r=this.getParsed(e);return{label:n.getLabels()[e],value:""+n.getLabelForValue(r[n.axis])}}parseObjectData(e,n,r,s){return _parseObjectDataRadialScale.bind(this)(e,n,r,s)}update(e){const n=this._cachedMeta,r=n.dataset,s=n.data||[],i=n.iScale.getLabels();if(r.points=s,e!=="resize"){const a=this.resolveDatasetElementOptions(e);this.options.showLine||(a.borderWidth=0);const u={_loop:!0,_fullLoop:i.length===s.length,options:a};this.updateElement(r,void 0,u,e)}this.updateElements(s,0,s.length,e)}updateElements(e,n,r,s){const i=this._cachedMeta.rScale,a=s==="reset";for(let u=n;u0&&this.getParsed(n-1);for(let S=n;S0&&Math.abs(N[f]-T[f])>w,b&&(B.parsed=N,B.raw=o.data[S]),h&&(B.options=c||this.resolveDataElementOptions(S,E.active?"active":s)),y||this.updateElement(E,S,B,s),T=N}this.updateSharedOptions(c,s,l)}getMaxOverflow(){const e=this._cachedMeta,n=e.data||[];if(!this.options.showLine){let u=0;for(let d=n.length-1;d>=0;--d)u=Math.max(u,n[d].size(this.resolveDataElementOptions(d))/2);return u>0&&u}const r=e.dataset,s=r.options&&r.options.borderWidth||0;if(!n.length)return s;const i=n[0].size(this.resolveDataElementOptions(0)),a=n[n.length-1].size(this.resolveDataElementOptions(n.length-1));return Math.max(s,i,a)/2}}var controllers=Object.freeze({__proto__:null,BarController,BubbleController,DoughnutController,LineController,PieController,PolarAreaController,RadarController,ScatterController});function abstract(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class DateAdapterBase{static override(e){Object.assign(DateAdapterBase.prototype,e)}options;constructor(e){this.options=e||{}}init(){}formats(){return abstract()}parse(){return abstract()}format(){return abstract()}add(){return abstract()}diff(){return abstract()}startOf(){return abstract()}endOf(){return abstract()}}var adapters={_date:DateAdapterBase};function binarySearch(t,e,n,r){const{controller:s,data:i,_sorted:a}=t,u=s._cachedMeta.iScale;if(u&&e===u.axis&&e!=="r"&&a&&i.length){const d=u._reversePixels?_rlookupByKey:_lookupByKey;if(r){if(s._sharedOptions){const o=i[0],l=typeof o.getRange=="function"&&o.getRange(e);if(l){const c=d(i,e,n-l),h=d(i,e,n+l);return{lo:c.lo,hi:h.hi}}}}else return d(i,e,n)}return{lo:0,hi:i.length-1}}function evaluateInteractionItems(t,e,n,r,s){const i=t.getSortedVisibleDatasetMetas(),a=n[e];for(let u=0,d=i.length;u{d[a](e[n],s)&&(i.push({element:d,datasetIndex:o,index:l}),u=u||d.inRange(e.x,e.y,s))}),r&&!u?[]:i}var Interaction={evaluateInteractionItems,modes:{index(t,e,n,r){const s=getRelativePosition(e,t),i=n.axis||"x",a=n.includeInvisible||!1,u=n.intersect?getIntersectItems(t,s,i,r,a):getNearestItems(t,s,i,!1,r,a),d=[];return u.length?(t.getSortedVisibleDatasetMetas().forEach(o=>{const l=u[0].index,c=o.data[l];c&&!c.skip&&d.push({element:c,datasetIndex:o.index,index:l})}),d):[]},dataset(t,e,n,r){const s=getRelativePosition(e,t),i=n.axis||"xy",a=n.includeInvisible||!1;let u=n.intersect?getIntersectItems(t,s,i,r,a):getNearestItems(t,s,i,!1,r,a);if(u.length>0){const d=u[0].datasetIndex,o=t.getDatasetMeta(d).data;u=[];for(let l=0;ln.pos===e)}function filterDynamicPositionByAxis(t,e){return t.filter(n=>STATIC_POSITIONS.indexOf(n.pos)===-1&&n.box.axis===e)}function sortByWeight(t,e){return t.sort((n,r)=>{const s=e?r:n,i=e?n:r;return s.weight===i.weight?s.index-i.index:s.weight-i.weight})}function wrapBoxes(t){const e=[];let n,r,s,i,a,u;for(n=0,r=(t||[]).length;no.box.fullSize),!0),r=sortByWeight(filterByPosition(e,"left"),!0),s=sortByWeight(filterByPosition(e,"right")),i=sortByWeight(filterByPosition(e,"top"),!0),a=sortByWeight(filterByPosition(e,"bottom")),u=filterDynamicPositionByAxis(e,"x"),d=filterDynamicPositionByAxis(e,"y");return{fullSize:n,leftAndTop:r.concat(i),rightAndBottom:s.concat(d).concat(a).concat(u),chartArea:filterByPosition(e,"chartArea"),vertical:r.concat(s).concat(d),horizontal:i.concat(a).concat(u)}}function getCombinedMax(t,e,n,r){return Math.max(t[n],e[n])+Math.max(t[r],e[r])}function updateMaxPadding(t,e){t.top=Math.max(t.top,e.top),t.left=Math.max(t.left,e.left),t.bottom=Math.max(t.bottom,e.bottom),t.right=Math.max(t.right,e.right)}function updateDims(t,e,n,r){const{pos:s,box:i}=n,a=t.maxPadding;if(!isObject(s)){n.size&&(t[s]-=n.size);const c=r[n.stack]||{size:0,count:1};c.size=Math.max(c.size,n.horizontal?i.height:i.width),n.size=c.size/c.count,t[s]+=n.size}i.getPadding&&updateMaxPadding(a,i.getPadding());const u=Math.max(0,e.outerWidth-getCombinedMax(a,t,"left","right")),d=Math.max(0,e.outerHeight-getCombinedMax(a,t,"top","bottom")),o=u!==t.w,l=d!==t.h;return t.w=u,t.h=d,n.horizontal?{same:o,other:l}:{same:l,other:o}}function handleMaxPadding(t){const e=t.maxPadding;function n(r){const s=Math.max(e[r]-t[r],0);return t[r]+=s,s}t.y+=n("top"),t.x+=n("left"),n("right"),n("bottom")}function getMargins(t,e){const n=e.maxPadding;function r(s){const i={left:0,top:0,right:0,bottom:0};return s.forEach(a=>{i[a]=Math.max(e[a],n[a])}),i}return r(t?["left","right"]:["top","bottom"])}function fitBoxes(t,e,n,r){const s=[];let i,a,u,d,o,l;for(i=0,a=t.length,o=0;i{typeof g.beforeLayout=="function"&&g.beforeLayout()});const l=d.reduce((g,b)=>b.box.options&&b.box.options.display===!1?g:g+1,0)||1,c=Object.freeze({outerWidth:e,outerHeight:n,padding:s,availableWidth:i,availableHeight:a,vBoxMaxWidth:i/2/l,hBoxMaxHeight:a/2}),h=Object.assign({},s);updateMaxPadding(h,toPadding(r));const f=Object.assign({maxPadding:h,w:i,h:a,x:s.left,y:s.top},s),p=setLayoutDims(d.concat(o),c);fitBoxes(u.fullSize,f,c,p),fitBoxes(d,f,c,p),fitBoxes(o,f,c,p)&&fitBoxes(d,f,c,p),handleMaxPadding(f),placeBoxes(u.leftAndTop,f,c,p),f.x+=f.w,f.y+=f.h,placeBoxes(u.rightAndBottom,f,c,p),t.chartArea={left:f.left,top:f.top,right:f.left+f.w,bottom:f.top+f.h,height:f.h,width:f.w},each(u.chartArea,g=>{const b=g.box;Object.assign(b,t.chartArea),b.update(f.w,f.h,{left:0,top:0,right:0,bottom:0})})}};class BasePlatform{acquireContext(e,n){}releaseContext(e){return!1}addEventListener(e,n,r){}removeEventListener(e,n,r){}getDevicePixelRatio(){return 1}getMaximumSize(e,n,r,s){return n=Math.max(0,n||e.width),r=r||e.height,{width:n,height:Math.max(0,s?Math.floor(n/s):r)}}isAttached(e){return!0}updateConfig(e){}}class BasicPlatform extends BasePlatform{acquireContext(e){return e&&e.getContext&&e.getContext("2d")||null}updateConfig(e){e.options.animation=!1}}const EXPANDO_KEY="$chartjs",EVENT_TYPES={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},isNullOrEmpty=t=>t===null||t==="";function initCanvas(t,e){const n=t.style,r=t.getAttribute("height"),s=t.getAttribute("width");if(t[EXPANDO_KEY]={initial:{height:r,width:s,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||"block",n.boxSizing=n.boxSizing||"border-box",isNullOrEmpty(s)){const i=readUsedSize(t,"width");i!==void 0&&(t.width=i)}if(isNullOrEmpty(r))if(t.style.height==="")t.height=t.width/(e||2);else{const i=readUsedSize(t,"height");i!==void 0&&(t.height=i)}return t}const eventListenerOptions=supportsEventListenerOptions?{passive:!0}:!1;function addListener(t,e,n){t&&t.addEventListener(e,n,eventListenerOptions)}function removeListener(t,e,n){t&&t.canvas&&t.canvas.removeEventListener(e,n,eventListenerOptions)}function fromNativeEvent(t,e){const n=EVENT_TYPES[t.type]||t.type,{x:r,y:s}=getRelativePosition(t,e);return{type:n,chart:e,native:t,x:r!==void 0?r:null,y:s!==void 0?s:null}}function nodeListContains(t,e){for(const n of t)if(n===e||n.contains(e))return!0}function createAttachObserver(t,e,n){const r=t.canvas,s=new MutationObserver(i=>{let a=!1;for(const u of i)a=a||nodeListContains(u.addedNodes,r),a=a&&!nodeListContains(u.removedNodes,r);a&&n()});return s.observe(document,{childList:!0,subtree:!0}),s}function createDetachObserver(t,e,n){const r=t.canvas,s=new MutationObserver(i=>{let a=!1;for(const u of i)a=a||nodeListContains(u.removedNodes,r),a=a&&!nodeListContains(u.addedNodes,r);a&&n()});return s.observe(document,{childList:!0,subtree:!0}),s}const drpListeningCharts=new Map;let oldDevicePixelRatio=0;function onWindowResize(){const t=window.devicePixelRatio;t!==oldDevicePixelRatio&&(oldDevicePixelRatio=t,drpListeningCharts.forEach((e,n)=>{n.currentDevicePixelRatio!==t&&e()}))}function listenDevicePixelRatioChanges(t,e){drpListeningCharts.size||window.addEventListener("resize",onWindowResize),drpListeningCharts.set(t,e)}function unlistenDevicePixelRatioChanges(t){drpListeningCharts.delete(t),drpListeningCharts.size||window.removeEventListener("resize",onWindowResize)}function createResizeObserver(t,e,n){const r=t.canvas,s=r&&_getParentNode(r);if(!s)return;const i=throttled((u,d)=>{const o=s.clientWidth;n(u,d),o{const d=u[0],o=d.contentRect.width,l=d.contentRect.height;o===0&&l===0||i(o,l)});return a.observe(s),listenDevicePixelRatioChanges(t,i),a}function releaseObserver(t,e,n){n&&n.disconnect(),e==="resize"&&unlistenDevicePixelRatioChanges(t)}function createProxyAndListen(t,e,n){const r=t.canvas,s=throttled(i=>{t.ctx!==null&&n(fromNativeEvent(i,t))},t);return addListener(r,e,s),s}class DomPlatform extends BasePlatform{acquireContext(e,n){const r=e&&e.getContext&&e.getContext("2d");return r&&r.canvas===e?(initCanvas(e,n),r):null}releaseContext(e){const n=e.canvas;if(!n[EXPANDO_KEY])return!1;const r=n[EXPANDO_KEY].initial;["height","width"].forEach(i=>{const a=r[i];isNullOrUndef(a)?n.removeAttribute(i):n.setAttribute(i,a)});const s=r.style||{};return Object.keys(s).forEach(i=>{n.style[i]=s[i]}),n.width=n.width,delete n[EXPANDO_KEY],!0}addEventListener(e,n,r){this.removeEventListener(e,n);const s=e.$proxies||(e.$proxies={}),a={attach:createAttachObserver,detach:createDetachObserver,resize:createResizeObserver}[n]||createProxyAndListen;s[n]=a(e,n,r)}removeEventListener(e,n){const r=e.$proxies||(e.$proxies={}),s=r[n];if(!s)return;({attach:releaseObserver,detach:releaseObserver,resize:releaseObserver}[n]||removeListener)(e,n,s),r[n]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(e,n,r,s){return getMaximumSize(e,n,r,s)}isAttached(e){const n=_getParentNode(e);return!!(n&&n.isConnected)}}function _detectPlatform(t){return!_isDomSupported()||typeof OffscreenCanvas<"u"&&t instanceof OffscreenCanvas?BasicPlatform:DomPlatform}class Element{static defaults={};static defaultRoutes=void 0;x;y;active=!1;options;$animations;tooltipPosition(e){const{x:n,y:r}=this.getProps(["x","y"],e);return{x:n,y:r}}hasValue(){return isNumber(this.x)&&isNumber(this.y)}getProps(e,n){const r=this.$animations;if(!n||!r)return this;const s={};return e.forEach(i=>{s[i]=r[i]&&r[i].active()?r[i]._to:this[i]}),s}}function autoSkip(t,e){const n=t.options.ticks,r=determineMaxTicks(t),s=Math.min(n.maxTicksLimit||r,r),i=n.major.enabled?getMajorIndices(e):[],a=i.length,u=i[0],d=i[a-1],o=[];if(a>s)return skipMajors(e,o,i,a/s),o;const l=calculateSpacing(i,e,s);if(a>0){let c,h;const f=a>1?Math.round((d-u)/(a-1)):null;for(skip(e,o,l,isNullOrUndef(f)?0:u-f,u),c=0,h=a-1;cs)return d}return Math.max(s,1)}function getMajorIndices(t){const e=[];let n,r;for(n=0,r=t.length;nt==="left"?"right":t==="right"?"left":t,offsetFromEdge=(t,e,n)=>e==="top"||e==="left"?t[e]+n:t[e]-n,getTicksLimit=(t,e)=>Math.min(e||t,t);function sample(t,e){const n=[],r=t.length/e,s=t.length;let i=0;for(;ia+u)))return d}function garbageCollect(t,e){each(t,n=>{const r=n.gc,s=r.length/2;let i;if(s>e){for(i=0;ir?r:n,r=s&&n>r?n:r,{min:finiteOrDefault(n,finiteOrDefault(r,n)),max:finiteOrDefault(r,finiteOrDefault(n,r))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const e=this.chart.data;return this.options.labels||(this.isHorizontal()?e.xLabels:e.yLabels)||e.labels||[]}getLabelItems(e=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(e))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){callback(this.options.beforeUpdate,[this])}update(e,n,r){const{beginAtZero:s,grace:i,ticks:a}=this.options,u=a.sampleSize;this.beforeUpdate(),this.maxWidth=e,this.maxHeight=n,this._margins=r=Object.assign({left:0,right:0,top:0,bottom:0},r),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+r.left+r.right:this.height+r.top+r.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=_addGrace(this,i,s),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const d=u=i||r<=1||!this.isHorizontal()){this.labelRotation=s;return}const l=this._getLabelSizes(),c=l.widest.width,h=l.highest.height,f=_limitValue(this.chart.width-c,0,this.maxWidth);u=e.offset?this.maxWidth/r:f/(r-1),c+6>u&&(u=f/(r-(e.offset?.5:1)),d=this.maxHeight-getTickMarkLength(e.grid)-n.padding-getTitleHeight(e.title,this.chart.options.font),o=Math.sqrt(c*c+h*h),a=toDegrees(Math.min(Math.asin(_limitValue((l.highest.height+6)/u,-1,1)),Math.asin(_limitValue(d/o,-1,1))-Math.asin(_limitValue(h/o,-1,1)))),a=Math.max(s,Math.min(i,a))),this.labelRotation=a}afterCalculateLabelRotation(){callback(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){callback(this.options.beforeFit,[this])}fit(){const e={width:0,height:0},{chart:n,options:{ticks:r,title:s,grid:i}}=this,a=this._isVisible(),u=this.isHorizontal();if(a){const d=getTitleHeight(s,n.options.font);if(u?(e.width=this.maxWidth,e.height=getTickMarkLength(i)+d):(e.height=this.maxHeight,e.width=getTickMarkLength(i)+d),r.display&&this.ticks.length){const{first:o,last:l,widest:c,highest:h}=this._getLabelSizes(),f=r.padding*2,p=toRadians(this.labelRotation),g=Math.cos(p),b=Math.sin(p);if(u){const w=r.mirror?0:b*c.width+g*h.height;e.height=Math.min(this.maxHeight,e.height+w+f)}else{const w=r.mirror?0:g*c.width+b*h.height;e.width=Math.min(this.maxWidth,e.width+w+f)}this._calculatePadding(o,l,b,g)}}this._handleMargins(),u?(this.width=this._length=n.width-this._margins.left-this._margins.right,this.height=e.height):(this.width=e.width,this.height=this._length=n.height-this._margins.top-this._margins.bottom)}_calculatePadding(e,n,r,s){const{ticks:{align:i,padding:a},position:u}=this.options,d=this.labelRotation!==0,o=u!=="top"&&this.axis==="x";if(this.isHorizontal()){const l=this.getPixelForTick(0)-this.left,c=this.right-this.getPixelForTick(this.ticks.length-1);let h=0,f=0;d?o?(h=s*e.width,f=r*n.height):(h=r*e.height,f=s*n.width):i==="start"?f=n.width:i==="end"?h=e.width:i!=="inner"&&(h=e.width/2,f=n.width/2),this.paddingLeft=Math.max((h-l+a)*this.width/(this.width-l),0),this.paddingRight=Math.max((f-c+a)*this.width/(this.width-c),0)}else{let l=n.height/2,c=e.height/2;i==="start"?(l=0,c=e.height):i==="end"&&(l=n.height,c=0),this.paddingTop=l+a,this.paddingBottom=c+a}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){callback(this.options.afterFit,[this])}isHorizontal(){const{axis:e,position:n}=this.options;return n==="top"||n==="bottom"||e==="x"}isFullSize(){return this.options.fullSize}_convertTicksToLabels(e){this.beforeTickToLabelConversion(),this.generateTickLabels(e);let n,r;for(n=0,r=e.length;n({width:a[k]||0,height:u[k]||0});return{first:F(0),last:F(n-1),widest:F(N),highest:F(B),widths:a,heights:u}}getLabelForValue(e){return e}getPixelForValue(e,n){return NaN}getValueForPixel(e){}getPixelForTick(e){const n=this.ticks;return e<0||e>n.length-1?null:this.getPixelForValue(n[e].value)}getPixelForDecimal(e){this._reversePixels&&(e=1-e);const n=this._startPixel+e*this._length;return _int16Range(this._alignToPixels?_alignPixel(this.chart,n,0):n)}getDecimalForPixel(e){const n=(e-this._startPixel)/this._length;return this._reversePixels?1-n:n}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:e,max:n}=this;return e<0&&n<0?n:e>0&&n>0?e:0}getContext(e){const n=this.ticks||[];if(e>=0&&eu*s?u/r:d/s:d*s0}_computeGridLineItems(e){const n=this.axis,r=this.chart,s=this.options,{grid:i,position:a,border:u}=s,d=i.offset,o=this.isHorizontal(),c=this.ticks.length+(d?1:0),h=getTickMarkLength(i),f=[],p=u.setContext(this.getContext()),g=p.display?p.width:0,b=g/2,w=function(he){return _alignPixel(r,he,g)};let y,T,S,E,N,B,F,k,G,re,ie,ge;if(a==="top")y=w(this.bottom),B=this.bottom-h,k=y-b,re=w(e.top)+b,ge=e.bottom;else if(a==="bottom")y=w(this.top),re=e.top,ge=w(e.bottom)-b,B=y+b,k=this.top+h;else if(a==="left")y=w(this.right),N=this.right-h,F=y-b,G=w(e.left)+b,ie=e.right;else if(a==="right")y=w(this.left),G=e.left,ie=w(e.right)-b,N=y+b,F=this.left+h;else if(n==="x"){if(a==="center")y=w((e.top+e.bottom)/2+.5);else if(isObject(a)){const he=Object.keys(a)[0],se=a[he];y=w(this.chart.scales[he].getPixelForValue(se))}re=e.top,ge=e.bottom,B=y+b,k=B+h}else if(n==="y"){if(a==="center")y=w((e.left+e.right)/2);else if(isObject(a)){const he=Object.keys(a)[0],se=a[he];y=w(this.chart.scales[he].getPixelForValue(se))}N=y-b,F=N-h,G=e.left,ie=e.right}const X=valueOrDefault(s.ticks.maxTicksLimit,c),K=Math.max(1,Math.ceil(c/X));for(T=0;T0&&(Ce-=Ie/2);break}Le={left:Ce,top:$e,width:Ie+ze.width,height:qe+ze.height,color:K.backdropColor}}b.push({label:S,font:k,textOffset:ie,options:{rotation:g,color:se,strokeColor:we,strokeWidth:ue,textAlign:Te,textBaseline:ge,translation:[E,N],backdrop:Le}})}return b}_getXAxisLabelAlignment(){const{position:e,ticks:n}=this.options;if(-toRadians(this.labelRotation))return e==="top"?"left":"right";let s="center";return n.align==="start"?s="left":n.align==="end"?s="right":n.align==="inner"&&(s="inner"),s}_getYAxisLabelAlignment(e){const{position:n,ticks:{crossAlign:r,mirror:s,padding:i}}=this.options,a=this._getLabelSizes(),u=e+i,d=a.widest.width;let o,l;return n==="left"?s?(l=this.right+i,r==="near"?o="left":r==="center"?(o="center",l+=d/2):(o="right",l+=d)):(l=this.right-u,r==="near"?o="right":r==="center"?(o="center",l-=d/2):(o="left",l=this.left)):n==="right"?s?(l=this.left+i,r==="near"?o="right":r==="center"?(o="center",l-=d/2):(o="left",l-=d)):(l=this.left+u,r==="near"?o="left":r==="center"?(o="center",l+=d/2):(o="right",l=this.right)):o="right",{textAlign:o,x:l}}_computeLabelArea(){if(this.options.ticks.mirror)return;const e=this.chart,n=this.options.position;if(n==="left"||n==="right")return{top:0,left:this.left,bottom:e.height,right:this.right};if(n==="top"||n==="bottom")return{top:this.top,left:0,bottom:this.bottom,right:e.width}}drawBackground(){const{ctx:e,options:{backgroundColor:n},left:r,top:s,width:i,height:a}=this;n&&(e.save(),e.fillStyle=n,e.fillRect(r,s,i,a),e.restore())}getLineWidthForValue(e){const n=this.options.grid;if(!this._isVisible()||!n.display)return 0;const s=this.ticks.findIndex(i=>i.value===e);return s>=0?n.setContext(this.getContext(s)).lineWidth:0}drawGrid(e){const n=this.options.grid,r=this.ctx,s=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(e));let i,a;const u=(d,o,l)=>{!l.width||!l.color||(r.save(),r.lineWidth=l.width,r.strokeStyle=l.color,r.setLineDash(l.borderDash||[]),r.lineDashOffset=l.borderDashOffset,r.beginPath(),r.moveTo(d.x,d.y),r.lineTo(o.x,o.y),r.stroke(),r.restore())};if(n.display)for(i=0,a=s.length;i{this.draw(i)}}]:[{z:r,draw:i=>{this.drawBackground(),this.drawGrid(i),this.drawTitle()}},{z:s,draw:()=>{this.drawBorder()}},{z:n,draw:i=>{this.drawLabels(i)}}]}getMatchingVisibleMetas(e){const n=this.chart.getSortedVisibleDatasetMetas(),r=this.axis+"AxisID",s=[];let i,a;for(i=0,a=n.length;i{const r=n.split("."),s=r.pop(),i=[t].concat(r).join("."),a=e[n].split("."),u=a.pop(),d=a.join(".");defaults.route(i,s,d,u)})}function isIChartComponent(t){return"id"in t&&"defaults"in t}class Registry{constructor(){this.controllers=new TypedRegistry(DatasetController,"datasets",!0),this.elements=new TypedRegistry(Element,"elements"),this.plugins=new TypedRegistry(Object,"plugins"),this.scales=new TypedRegistry(Scale,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...e){this._each("register",e)}remove(...e){this._each("unregister",e)}addControllers(...e){this._each("register",e,this.controllers)}addElements(...e){this._each("register",e,this.elements)}addPlugins(...e){this._each("register",e,this.plugins)}addScales(...e){this._each("register",e,this.scales)}getController(e){return this._get(e,this.controllers,"controller")}getElement(e){return this._get(e,this.elements,"element")}getPlugin(e){return this._get(e,this.plugins,"plugin")}getScale(e){return this._get(e,this.scales,"scale")}removeControllers(...e){this._each("unregister",e,this.controllers)}removeElements(...e){this._each("unregister",e,this.elements)}removePlugins(...e){this._each("unregister",e,this.plugins)}removeScales(...e){this._each("unregister",e,this.scales)}_each(e,n,r){[...n].forEach(s=>{const i=r||this._getRegistryForType(s);r||i.isForType(s)||i===this.plugins&&s.id?this._exec(e,i,s):each(s,a=>{const u=r||this._getRegistryForType(a);this._exec(e,u,a)})})}_exec(e,n,r){const s=_capitalize(e);callback(r["before"+s],[],r),n[e](r),callback(r["after"+s],[],r)}_getRegistryForType(e){for(let n=0;ni.filter(u=>!a.some(d=>u.plugin.id===d.plugin.id));this._notify(s(n,r),e,"stop"),this._notify(s(r,n),e,"start")}}function allPlugins(t){const e={},n=[],r=Object.keys(registry.plugins.items);for(let i=0;i1&&idMatchesAxis(t[0].toLowerCase());if(r)return r}throw new Error(`Cannot determine type of '${t}' axis. Please provide 'axis' or 'position' option.`)}function getAxisFromDataset(t,e,n){if(n[e+"AxisID"]===t)return{axis:e}}function retrieveAxisFromDatasets(t,e){if(e.data&&e.data.datasets){const n=e.data.datasets.filter(r=>r.xAxisID===t||r.yAxisID===t);if(n.length)return getAxisFromDataset(t,"x",n[0])||getAxisFromDataset(t,"y",n[0])}return{}}function mergeScaleConfig(t,e){const n=overrides[t.type]||{scales:{}},r=e.scales||{},s=getIndexAxis(t.type,e),i=Object.create(null);return Object.keys(r).forEach(a=>{const u=r[a];if(!isObject(u))return console.error(`Invalid scale configuration for scale: ${a}`);if(u._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${a}`);const d=determineAxis(a,u,retrieveAxisFromDatasets(a,t),defaults.scales[u.type]),o=getDefaultScaleIDFromAxis(d,s),l=n.scales||{};i[a]=mergeIf(Object.create(null),[{axis:d},u,l[d],l[o]])}),t.data.datasets.forEach(a=>{const u=a.type||t.type,d=a.indexAxis||getIndexAxis(u,e),l=(overrides[u]||{}).scales||{};Object.keys(l).forEach(c=>{const h=getAxisFromDefaultScaleID(c,d),f=a[h+"AxisID"]||h;i[f]=i[f]||Object.create(null),mergeIf(i[f],[{axis:h},r[f],l[c]])})}),Object.keys(i).forEach(a=>{const u=i[a];mergeIf(u,[defaults.scales[u.type],defaults.scale])}),i}function initOptions(t){const e=t.options||(t.options={});e.plugins=valueOrDefault(e.plugins,{}),e.scales=mergeScaleConfig(t,e)}function initData(t){return t=t||{},t.datasets=t.datasets||[],t.labels=t.labels||[],t}function initConfig(t){return t=t||{},t.data=initData(t.data),initOptions(t),t}const keyCache=new Map,keysCached=new Set;function cachedKeys(t,e){let n=keyCache.get(t);return n||(n=e(),keyCache.set(t,n),keysCached.add(n)),n}const addIfFound=(t,e,n)=>{const r=resolveObjectKey(e,n);r!==void 0&&t.add(r)};class Config{constructor(e){this._config=initConfig(e),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(e){this._config.type=e}get data(){return this._config.data}set data(e){this._config.data=initData(e)}get options(){return this._config.options}set options(e){this._config.options=e}get plugins(){return this._config.plugins}update(){const e=this._config;this.clearCache(),initOptions(e)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(e){return cachedKeys(e,()=>[[`datasets.${e}`,""]])}datasetAnimationScopeKeys(e,n){return cachedKeys(`${e}.transition.${n}`,()=>[[`datasets.${e}.transitions.${n}`,`transitions.${n}`],[`datasets.${e}`,""]])}datasetElementScopeKeys(e,n){return cachedKeys(`${e}-${n}`,()=>[[`datasets.${e}.elements.${n}`,`datasets.${e}`,`elements.${n}`,""]])}pluginScopeKeys(e){const n=e.id,r=this.type;return cachedKeys(`${r}-plugin-${n}`,()=>[[`plugins.${n}`,...e.additionalOptionScopes||[]]])}_cachedScopes(e,n){const r=this._scopeCache;let s=r.get(e);return(!s||n)&&(s=new Map,r.set(e,s)),s}getOptionScopes(e,n,r){const{options:s,type:i}=this,a=this._cachedScopes(e,r),u=a.get(n);if(u)return u;const d=new Set;n.forEach(l=>{e&&(d.add(e),l.forEach(c=>addIfFound(d,e,c))),l.forEach(c=>addIfFound(d,s,c)),l.forEach(c=>addIfFound(d,overrides[i]||{},c)),l.forEach(c=>addIfFound(d,defaults,c)),l.forEach(c=>addIfFound(d,descriptors,c))});const o=Array.from(d);return o.length===0&&o.push(Object.create(null)),keysCached.has(n)&&a.set(n,o),o}chartOptionScopes(){const{options:e,type:n}=this;return[e,overrides[n]||{},defaults.datasets[n]||{},{type:n},defaults,descriptors]}resolveNamedOptions(e,n,r,s=[""]){const i={$shared:!0},{resolver:a,subPrefixes:u}=getResolver(this._resolverCache,e,s);let d=a;if(needContext(a,n)){i.$shared=!1,r=isFunction(r)?r():r;const o=this.createResolver(e,r,u);d=_attachContext(a,r,o)}for(const o of n)i[o]=d[o];return i}createResolver(e,n,r=[""],s){const{resolver:i}=getResolver(this._resolverCache,e,r);return isObject(n)?_attachContext(i,n,void 0,s):i}}function getResolver(t,e,n){let r=t.get(e);r||(r=new Map,t.set(e,r));const s=n.join();let i=r.get(s);return i||(i={resolver:_createResolver(e,n),subPrefixes:n.filter(u=>!u.toLowerCase().includes("hover"))},r.set(s,i)),i}const hasFunction=t=>isObject(t)&&Object.getOwnPropertyNames(t).some(e=>isFunction(t[e]));function needContext(t,e){const{isScriptable:n,isIndexable:r}=_descriptors(t);for(const s of e){const i=n(s),a=r(s),u=(a||i)&&t[s];if(i&&(isFunction(u)||hasFunction(u))||a&&isArray(u))return!0}return!1}var version="4.4.2";const KNOWN_POSITIONS=["top","bottom","left","right","chartArea"];function positionIsHorizontal(t,e){return t==="top"||t==="bottom"||KNOWN_POSITIONS.indexOf(t)===-1&&e==="x"}function compare2Level(t,e){return function(n,r){return n[t]===r[t]?n[e]-r[e]:n[t]-r[t]}}function onAnimationsComplete(t){const e=t.chart,n=e.options.animation;e.notifyPlugins("afterRender"),callback(n&&n.onComplete,[t],e)}function onAnimationProgress(t){const e=t.chart,n=e.options.animation;callback(n&&n.onProgress,[t],e)}function getCanvas(t){return _isDomSupported()&&typeof t=="string"?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const instances={},getChart=t=>{const e=getCanvas(t);return Object.values(instances).filter(n=>n.canvas===e).pop()};function moveNumericKeys(t,e,n){const r=Object.keys(t);for(const s of r){const i=+s;if(i>=e){const a=t[s];delete t[s],(n>0||i>e)&&(t[i+n]=a)}}}function determineLastEvent(t,e,n,r){return!n||t.type==="mouseout"?null:r?e:t}function getSizeForArea(t,e,n){return t.options.clip?t[n]:e[n]}function getDatasetArea(t,e){const{xScale:n,yScale:r}=t;return n&&r?{left:getSizeForArea(n,e,"left"),right:getSizeForArea(n,e,"right"),top:getSizeForArea(r,e,"top"),bottom:getSizeForArea(r,e,"bottom")}:e}class Chart{static defaults=defaults;static instances=instances;static overrides=overrides;static registry=registry;static version=version;static getChart=getChart;static register(...e){registry.add(...e),invalidatePlugins()}static unregister(...e){registry.remove(...e),invalidatePlugins()}constructor(e,n){const r=this.config=new Config(n),s=getCanvas(e),i=getChart(s);if(i)throw new Error("Canvas is already in use. Chart with ID '"+i.id+"' must be destroyed before the canvas with ID '"+i.canvas.id+"' can be reused.");const a=r.createResolver(r.chartOptionScopes(),this.getContext());this.platform=new(r.platform||_detectPlatform(s)),this.platform.updateConfig(r);const u=this.platform.acquireContext(s,a.aspectRatio),d=u&&u.canvas,o=d&&d.height,l=d&&d.width;if(this.id=uid(),this.ctx=u,this.canvas=d,this.width=l,this.height=o,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new PluginService,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=debounce(c=>this.update(c),a.resizeDelay||0),this._dataChanges=[],instances[this.id]=this,!u||!d){console.error("Failed to create chart: can't acquire context from the given item");return}animator.listen(this,"complete",onAnimationsComplete),animator.listen(this,"progress",onAnimationProgress),this._initialize(),this.attached&&this.update()}get aspectRatio(){const{options:{aspectRatio:e,maintainAspectRatio:n},width:r,height:s,_aspectRatio:i}=this;return isNullOrUndef(e)?n&&i?i:s?r/s:null:e}get data(){return this.config.data}set data(e){this.config.data=e}get options(){return this._options}set options(e){this.config.options=e}get registry(){return registry}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():retinaScale(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return clearCanvas(this.canvas,this.ctx),this}stop(){return animator.stop(this),this}resize(e,n){animator.running(this)?this._resizeBeforeDraw={width:e,height:n}:this._resize(e,n)}_resize(e,n){const r=this.options,s=this.canvas,i=r.maintainAspectRatio&&this.aspectRatio,a=this.platform.getMaximumSize(s,e,n,i),u=r.devicePixelRatio||this.platform.getDevicePixelRatio(),d=this.width?"resize":"attach";this.width=a.width,this.height=a.height,this._aspectRatio=this.aspectRatio,retinaScale(this,u,!0)&&(this.notifyPlugins("resize",{size:a}),callback(r.onResize,[this,a],this),this.attached&&this._doResize(d)&&this.render())}ensureScalesHaveIDs(){const n=this.options.scales||{};each(n,(r,s)=>{r.id=s})}buildOrUpdateScales(){const e=this.options,n=e.scales,r=this.scales,s=Object.keys(r).reduce((a,u)=>(a[u]=!1,a),{});let i=[];n&&(i=i.concat(Object.keys(n).map(a=>{const u=n[a],d=determineAxis(a,u),o=d==="r",l=d==="x";return{options:u,dposition:o?"chartArea":l?"bottom":"left",dtype:o?"radialLinear":l?"category":"linear"}}))),each(i,a=>{const u=a.options,d=u.id,o=determineAxis(d,u),l=valueOrDefault(u.type,a.dtype);(u.position===void 0||positionIsHorizontal(u.position,o)!==positionIsHorizontal(a.dposition))&&(u.position=a.dposition),s[d]=!0;let c=null;if(d in r&&r[d].type===l)c=r[d];else{const h=registry.getScale(l);c=new h({id:d,type:l,ctx:this.ctx,chart:this}),r[c.id]=c}c.init(u,e)}),each(s,(a,u)=>{a||delete r[u]}),each(r,a=>{layouts.configure(this,a,a.options),layouts.addBox(this,a)})}_updateMetasets(){const e=this._metasets,n=this.data.datasets.length,r=e.length;if(e.sort((s,i)=>s.index-i.index),r>n){for(let s=n;sn.length&&delete this._stacks,e.forEach((r,s)=>{n.filter(i=>i===r._dataset).length===0&&this._destroyDatasetMeta(s)})}buildOrUpdateControllers(){const e=[],n=this.data.datasets;let r,s;for(this._removeUnreferencedMetasets(),r=0,s=n.length;r{this.getDatasetMeta(n).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(e){const n=this.config;n.update();const r=this._options=n.createResolver(n.chartOptionScopes(),this.getContext()),s=this._animationsDisabled=!r.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),this.notifyPlugins("beforeUpdate",{mode:e,cancelable:!0})===!1)return;const i=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let a=0;for(let o=0,l=this.data.datasets.length;o{o.reset()}),this._updateDatasets(e),this.notifyPlugins("afterUpdate",{mode:e}),this._layers.sort(compare2Level("z","_idx"));const{_active:u,_lastEvent:d}=this;d?this._eventHandler(d,!0):u.length&&this._updateHoverStyles(u,u,!0),this.render()}_updateScales(){each(this.scales,e=>{layouts.removeBox(this,e)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const e=this.options,n=new Set(Object.keys(this._listeners)),r=new Set(e.events);(!setsEqual(n,r)||!!this._responsiveListeners!==e.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:e}=this,n=this._getUniformDataChanges()||[];for(const{method:r,start:s,count:i}of n){const a=r==="_removeElements"?-i:i;moveNumericKeys(e,s,a)}}_getUniformDataChanges(){const e=this._dataChanges;if(!e||!e.length)return;this._dataChanges=[];const n=this.data.datasets.length,r=i=>new Set(e.filter(a=>a[0]===i).map((a,u)=>u+","+a.splice(1).join(","))),s=r(0);for(let i=1;ii.split(",")).map(i=>({method:i[1],start:+i[2],count:+i[3]}))}_updateLayout(e){if(this.notifyPlugins("beforeLayout",{cancelable:!0})===!1)return;layouts.update(this,this.width,this.height,e);const n=this.chartArea,r=n.width<=0||n.height<=0;this._layers=[],each(this.boxes,s=>{r&&s.position==="chartArea"||(s.configure&&s.configure(),this._layers.push(...s._layers()))},this),this._layers.forEach((s,i)=>{s._idx=i}),this.notifyPlugins("afterLayout")}_updateDatasets(e){if(this.notifyPlugins("beforeDatasetsUpdate",{mode:e,cancelable:!0})!==!1){for(let n=0,r=this.data.datasets.length;n=0;--n)this._drawDataset(e[n]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(e){const n=this.ctx,r=e._clip,s=!r.disabled,i=getDatasetArea(e,this.chartArea),a={meta:e,index:e.index,cancelable:!0};this.notifyPlugins("beforeDatasetDraw",a)!==!1&&(s&&clipArea(n,{left:r.left===!1?0:i.left-r.left,right:r.right===!1?this.width:i.right+r.right,top:r.top===!1?0:i.top-r.top,bottom:r.bottom===!1?this.height:i.bottom+r.bottom}),e.controller.draw(),s&&unclipArea(n),a.cancelable=!1,this.notifyPlugins("afterDatasetDraw",a))}isPointInArea(e){return _isPointInArea(e,this.chartArea,this._minPadding)}getElementsAtEventForMode(e,n,r,s){const i=Interaction.modes[n];return typeof i=="function"?i(this,e,r,s):[]}getDatasetMeta(e){const n=this.data.datasets[e],r=this._metasets;let s=r.filter(i=>i&&i._dataset===n).pop();return s||(s={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:n&&n.order||0,index:e,_dataset:n,_parsed:[],_sorted:!1},r.push(s)),s}getContext(){return this.$context||(this.$context=createContext(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(e){const n=this.data.datasets[e];if(!n)return!1;const r=this.getDatasetMeta(e);return typeof r.hidden=="boolean"?!r.hidden:!n.hidden}setDatasetVisibility(e,n){const r=this.getDatasetMeta(e);r.hidden=!n}toggleDataVisibility(e){this._hiddenIndices[e]=!this._hiddenIndices[e]}getDataVisibility(e){return!this._hiddenIndices[e]}_updateVisibility(e,n,r){const s=r?"show":"hide",i=this.getDatasetMeta(e),a=i.controller._resolveAnimations(void 0,s);defined(n)?(i.data[n].hidden=!r,this.update()):(this.setDatasetVisibility(e,r),a.update(i,{visible:r}),this.update(u=>u.datasetIndex===e?s:void 0))}hide(e,n){this._updateVisibility(e,n,!1)}show(e,n){this._updateVisibility(e,n,!0)}_destroyDatasetMeta(e){const n=this._metasets[e];n&&n.controller&&n.controller._destroy(),delete this._metasets[e]}_stop(){let e,n;for(this.stop(),animator.remove(this),e=0,n=this.data.datasets.length;e{n.addEventListener(this,i,a),e[i]=a},s=(i,a,u)=>{i.offsetX=a,i.offsetY=u,this._eventHandler(i)};each(this.options.events,i=>r(i,s))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const e=this._responsiveListeners,n=this.platform,r=(d,o)=>{n.addEventListener(this,d,o),e[d]=o},s=(d,o)=>{e[d]&&(n.removeEventListener(this,d,o),delete e[d])},i=(d,o)=>{this.canvas&&this.resize(d,o)};let a;const u=()=>{s("attach",u),this.attached=!0,this.resize(),r("resize",i),r("detach",a)};a=()=>{this.attached=!1,s("resize",i),this._stop(),this._resize(0,0),r("attach",u)},n.isAttached(this.canvas)?u():a()}unbindEvents(){each(this._listeners,(e,n)=>{this.platform.removeEventListener(this,n,e)}),this._listeners={},each(this._responsiveListeners,(e,n)=>{this.platform.removeEventListener(this,n,e)}),this._responsiveListeners=void 0}updateHoverStyle(e,n,r){const s=r?"set":"remove";let i,a,u,d;for(n==="dataset"&&(i=this.getDatasetMeta(e[0].datasetIndex),i.controller["_"+s+"DatasetHoverStyle"]()),u=0,d=e.length;u{const u=this.getDatasetMeta(i);if(!u)throw new Error("No dataset found at index "+i);return{datasetIndex:i,element:u.data[a],index:a}});!_elementsEqual(r,n)&&(this._active=r,this._lastEvent=null,this._updateHoverStyles(r,n))}notifyPlugins(e,n,r){return this._plugins.notify(this,e,n,r)}isPluginEnabled(e){return this._plugins._cache.filter(n=>n.plugin.id===e).length===1}_updateHoverStyles(e,n,r){const s=this.options.hover,i=(d,o)=>d.filter(l=>!o.some(c=>l.datasetIndex===c.datasetIndex&&l.index===c.index)),a=i(n,e),u=r?e:i(e,n);a.length&&this.updateHoverStyle(a,s.mode,!1),u.length&&s.mode&&this.updateHoverStyle(u,s.mode,!0)}_eventHandler(e,n){const r={event:e,replay:n,cancelable:!0,inChartArea:this.isPointInArea(e)},s=a=>(a.options.events||this.options.events).includes(e.native.type);if(this.notifyPlugins("beforeEvent",r,s)===!1)return;const i=this._handleEvent(e,n,r.inChartArea);return r.cancelable=!1,this.notifyPlugins("afterEvent",r,s),(i||r.changed)&&this.render(),this}_handleEvent(e,n,r){const{_active:s=[],options:i}=this,a=n,u=this._getActiveElements(e,s,r,a),d=_isClickEvent(e),o=determineLastEvent(e,this._lastEvent,r,d);r&&(this._lastEvent=null,callback(i.onHover,[e,u,this],this),d&&callback(i.onClick,[e,u,this],this));const l=!_elementsEqual(u,s);return(l||n)&&(this._active=u,this._updateHoverStyles(u,s,n)),this._lastEvent=o,l}_getActiveElements(e,n,r,s){if(e.type==="mouseout")return[];if(!r)return n;const i=this.options.hover;return this.getElementsAtEventForMode(e,i.mode,i,s)}}function invalidatePlugins(){return each(Chart.instances,t=>t._plugins.invalidate())}function clipArc(t,e,n){const{startAngle:r,pixelMargin:s,x:i,y:a,outerRadius:u,innerRadius:d}=e;let o=s/u;t.beginPath(),t.arc(i,a,u,r-o,n+o),d>s?(o=s/d,t.arc(i,a,d,n+o,r-o,!0)):t.arc(i,a,s,n+HALF_PI,r-HALF_PI),t.closePath(),t.clip()}function toRadiusCorners(t){return _readValueToProps(t,["outerStart","outerEnd","innerStart","innerEnd"])}function parseBorderRadius$1(t,e,n,r){const s=toRadiusCorners(t.options.borderRadius),i=(n-e)/2,a=Math.min(i,r*e/2),u=d=>{const o=(n-Math.min(i,d))*r/2;return _limitValue(d,0,Math.min(i,o))};return{outerStart:u(s.outerStart),outerEnd:u(s.outerEnd),innerStart:_limitValue(s.innerStart,0,a),innerEnd:_limitValue(s.innerEnd,0,a)}}function rThetaToXY(t,e,n,r){return{x:n+t*Math.cos(e),y:r+t*Math.sin(e)}}function pathArc(t,e,n,r,s,i){const{x:a,y:u,startAngle:d,pixelMargin:o,innerRadius:l}=e,c=Math.max(e.outerRadius+r+n-o,0),h=l>0?l+r+n+o:0;let f=0;const p=s-d;if(r){const K=l>0?l-r:0,he=c>0?c-r:0,se=(K+he)/2,we=se!==0?p*se/(se+r):p;f=(p-we)/2}const g=Math.max(.001,p*c-n/PI)/c,b=(p-g)/2,w=d+b+f,y=s-b-f,{outerStart:T,outerEnd:S,innerStart:E,innerEnd:N}=parseBorderRadius$1(e,h,c,y-w),B=c-T,F=c-S,k=w+T/B,G=y-S/F,re=h+E,ie=h+N,ge=w+E/re,X=y-N/ie;if(t.beginPath(),i){const K=(k+G)/2;if(t.arc(a,u,c,k,K),t.arc(a,u,c,K,G),S>0){const ue=rThetaToXY(F,G,a,u);t.arc(ue.x,ue.y,S,G,y+HALF_PI)}const he=rThetaToXY(ie,y,a,u);if(t.lineTo(he.x,he.y),N>0){const ue=rThetaToXY(ie,X,a,u);t.arc(ue.x,ue.y,N,y+HALF_PI,X+Math.PI)}const se=(y-N/h+(w+E/h))/2;if(t.arc(a,u,h,y-N/h,se,!0),t.arc(a,u,h,se,w+E/h,!0),E>0){const ue=rThetaToXY(re,ge,a,u);t.arc(ue.x,ue.y,E,ge+Math.PI,w-HALF_PI)}const we=rThetaToXY(B,w,a,u);if(t.lineTo(we.x,we.y),T>0){const ue=rThetaToXY(B,k,a,u);t.arc(ue.x,ue.y,T,w-HALF_PI,k)}}else{t.moveTo(a,u);const K=Math.cos(k)*c+a,he=Math.sin(k)*c+u;t.lineTo(K,he);const se=Math.cos(G)*c+a,we=Math.sin(G)*c+u;t.lineTo(se,we)}t.closePath()}function drawArc(t,e,n,r,s){const{fullCircles:i,startAngle:a,circumference:u}=e;let d=e.endAngle;if(i){pathArc(t,e,n,r,d,s);for(let o=0;oe!=="borderDash"};circumference;endAngle;fullCircles;innerRadius;outerRadius;pixelMargin;startAngle;constructor(e){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,e&&Object.assign(this,e)}inRange(e,n,r){const s=this.getProps(["x","y"],r),{angle:i,distance:a}=getAngleFromPoint(s,{x:e,y:n}),{startAngle:u,endAngle:d,innerRadius:o,outerRadius:l,circumference:c}=this.getProps(["startAngle","endAngle","innerRadius","outerRadius","circumference"],r),h=(this.options.spacing+this.options.borderWidth)/2,p=valueOrDefault(c,d-u)>=TAU||_angleBetween(i,u,d),g=_isBetween(a,o+h,l+h);return p&&g}getCenterPoint(e){const{x:n,y:r,startAngle:s,endAngle:i,innerRadius:a,outerRadius:u}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],e),{offset:d,spacing:o}=this.options,l=(s+i)/2,c=(a+u+o+d)/2;return{x:n+Math.cos(l)*c,y:r+Math.sin(l)*c}}tooltipPosition(e){return this.getCenterPoint(e)}draw(e){const{options:n,circumference:r}=this,s=(n.offset||0)/4,i=(n.spacing||0)/2,a=n.circular;if(this.pixelMargin=n.borderAlign==="inner"?.33:0,this.fullCircles=r>TAU?Math.floor(r/TAU):0,r===0||this.innerRadius<0||this.outerRadius<0)return;e.save();const u=(this.startAngle+this.endAngle)/2;e.translate(Math.cos(u)*s,Math.sin(u)*s);const d=1-Math.sin(Math.min(PI,r||0)),o=s*d;e.fillStyle=n.backgroundColor,e.strokeStyle=n.borderColor,drawArc(e,this,o,i,a),drawBorder(e,this,o,i,a),e.restore()}}function setStyle(t,e,n=e){t.lineCap=valueOrDefault(n.borderCapStyle,e.borderCapStyle),t.setLineDash(valueOrDefault(n.borderDash,e.borderDash)),t.lineDashOffset=valueOrDefault(n.borderDashOffset,e.borderDashOffset),t.lineJoin=valueOrDefault(n.borderJoinStyle,e.borderJoinStyle),t.lineWidth=valueOrDefault(n.borderWidth,e.borderWidth),t.strokeStyle=valueOrDefault(n.borderColor,e.borderColor)}function lineTo(t,e,n){t.lineTo(n.x,n.y)}function getLineMethod(t){return t.stepped?_steppedLineTo:t.tension||t.cubicInterpolationMode==="monotone"?_bezierCurveTo:lineTo}function pathVars(t,e,n={}){const r=t.length,{start:s=0,end:i=r-1}=n,{start:a,end:u}=e,d=Math.max(s,a),o=Math.min(i,u),l=su&&i>u;return{count:r,start:d,loop:e.loop,ilen:o(a+(o?u-S:S))%i,T=()=>{g!==b&&(t.lineTo(l,b),t.lineTo(l,g),t.lineTo(l,w))};for(d&&(f=s[y(0)],t.moveTo(f.x,f.y)),h=0;h<=u;++h){if(f=s[y(h)],f.skip)continue;const S=f.x,E=f.y,N=S|0;N===p?(Eb&&(b=E),l=(c*l+S)/++c):(T(),t.lineTo(S,E),p=N,c=0,g=b=E),w=E}T()}function _getSegmentMethod(t){const e=t.options,n=e.borderDash&&e.borderDash.length;return!t._decimated&&!t._loop&&!e.tension&&e.cubicInterpolationMode!=="monotone"&&!e.stepped&&!n?fastPathSegment:pathSegment}function _getInterpolationMethod(t){return t.stepped?_steppedInterpolation:t.tension||t.cubicInterpolationMode==="monotone"?_bezierInterpolation:_pointInLine}function strokePathWithCache(t,e,n,r){let s=e._path;s||(s=e._path=new Path2D,e.path(s,n,r)&&s.closePath()),setStyle(t,e.options),t.stroke(s)}function strokePathDirect(t,e,n,r){const{segments:s,options:i}=e,a=_getSegmentMethod(e);for(const u of s)setStyle(t,i,u.style),t.beginPath(),a(t,e,u,{start:n,end:n+r-1})&&t.closePath(),t.stroke()}const usePath2D=typeof Path2D=="function";function draw(t,e,n,r){usePath2D&&!e.options.segment?strokePathWithCache(t,e,n,r):strokePathDirect(t,e,n,r)}class LineElement extends Element{static id="line";static defaults={borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};static descriptors={_scriptable:!0,_indexable:e=>e!=="borderDash"&&e!=="fill"};constructor(e){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,e&&Object.assign(this,e)}updateControlPoints(e,n){const r=this.options;if((r.tension||r.cubicInterpolationMode==="monotone")&&!r.stepped&&!this._pointsUpdated){const s=r.spanGaps?this._loop:this._fullLoop;_updateBezierControlPoints(this._points,r,e,s,n),this._pointsUpdated=!0}}set points(e){this._points=e,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=_computeSegments(this,this.options.segment))}first(){const e=this.segments,n=this.points;return e.length&&n[e[0].start]}last(){const e=this.segments,n=this.points,r=e.length;return r&&n[e[r-1].end]}interpolate(e,n){const r=this.options,s=e[n],i=this.points,a=_boundSegments(this,{property:n,start:s,end:s});if(!a.length)return;const u=[],d=_getInterpolationMethod(r);let o,l;for(o=0,l=a.length;ot.replace("rgb(","rgba(").replace(")",", 0.5)"));function getBorderColor(t){return BORDER_COLORS[t%BORDER_COLORS.length]}function getBackgroundColor(t){return BACKGROUND_COLORS[t%BACKGROUND_COLORS.length]}function colorizeDefaultDataset(t,e){return t.borderColor=getBorderColor(e),t.backgroundColor=getBackgroundColor(e),++e}function colorizeDoughnutDataset(t,e){return t.backgroundColor=t.data.map(()=>getBorderColor(e++)),e}function colorizePolarAreaDataset(t,e){return t.backgroundColor=t.data.map(()=>getBackgroundColor(e++)),e}function getColorizer(t){let e=0;return(n,r)=>{const s=t.getDatasetMeta(r).controller;s instanceof DoughnutController?e=colorizeDoughnutDataset(n,e):s instanceof PolarAreaController?e=colorizePolarAreaDataset(n,e):s&&(e=colorizeDefaultDataset(n,e))}}function containsColorsDefinitions(t){let e;for(e in t)if(t[e].borderColor||t[e].backgroundColor)return!0;return!1}function containsColorsDefinition(t){return t&&(t.borderColor||t.backgroundColor)}var plugin_colors={id:"colors",defaults:{enabled:!0,forceOverride:!1},beforeLayout(t,e,n){if(!n.enabled)return;const{data:{datasets:r},options:s}=t.config,{elements:i}=s;if(!n.forceOverride&&(containsColorsDefinitions(r)||containsColorsDefinition(s)||i&&containsColorsDefinitions(i)))return;const a=getColorizer(t);r.forEach(a)}};function lttbDecimation(t,e,n,r,s){const i=s.samples||r;if(i>=n)return t.slice(e,e+n);const a=[],u=(n-2)/(i-2);let d=0;const o=e+n-1;let l=e,c,h,f,p,g;for(a[d++]=t[l],c=0;cf&&(f=p,h=t[y],g=y);a[d++]=h,l=g}return a[d++]=t[o],a}function minMaxDecimation(t,e,n,r){let s=0,i=0,a,u,d,o,l,c,h,f,p,g;const b=[],w=e+n-1,y=t[e].x,S=t[w].x-y;for(a=e;ag&&(g=o,h=a),s=(i*s+u.x)/++i;else{const N=a-1;if(!isNullOrUndef(c)&&!isNullOrUndef(h)){const B=Math.min(c,h),F=Math.max(c,h);B!==f&&B!==N&&b.push({...t[B],x:s}),F!==f&&F!==N&&b.push({...t[F],x:s})}a>0&&N!==f&&b.push(t[N]),b.push(u),l=E,i=0,p=g=o,c=h=f=a}}return b}function cleanDecimatedDataset(t){if(t._decimated){const e=t._data;delete t._decimated,delete t._data,Object.defineProperty(t,"data",{configurable:!0,enumerable:!0,writable:!0,value:e})}}function cleanDecimatedData(t){t.data.datasets.forEach(e=>{cleanDecimatedDataset(e)})}function getStartAndCountOfVisiblePointsSimplified(t,e){const n=e.length;let r=0,s;const{iScale:i}=t,{min:a,max:u,minDefined:d,maxDefined:o}=i.getUserBounds();return d&&(r=_limitValue(_lookupByKey(e,i.axis,a).lo,0,n-1)),o?s=_limitValue(_lookupByKey(e,i.axis,u).hi+1,r,n)-r:s=n-r,{start:r,count:s}}var plugin_decimation={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(t,e,n)=>{if(!n.enabled){cleanDecimatedData(t);return}const r=t.width;t.data.datasets.forEach((s,i)=>{const{_data:a,indexAxis:u}=s,d=t.getDatasetMeta(i),o=a||s.data;if(resolve([u,t.options.indexAxis])==="y"||!d.controller.supportsDecimation)return;const l=t.scales[d.xAxisID];if(l.type!=="linear"&&l.type!=="time"||t.options.parsing)return;let{start:c,count:h}=getStartAndCountOfVisiblePointsSimplified(d,o);const f=n.threshold||4*r;if(h<=f){cleanDecimatedDataset(s);return}isNullOrUndef(a)&&(s._data=o,delete s.data,Object.defineProperty(s,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(g){this._data=g}}));let p;switch(n.algorithm){case"lttb":p=lttbDecimation(o,c,h,r,n);break;case"min-max":p=minMaxDecimation(o,c,h,r);break;default:throw new Error(`Unsupported decimation algorithm '${n.algorithm}'`)}s._decimated=p})},destroy(t){cleanDecimatedData(t)}};function _segments(t,e,n){const r=t.segments,s=t.points,i=e.points,a=[];for(const u of r){let{start:d,end:o}=u;o=_findSegmentEnd(d,o,s);const l=_getBounds(n,s[d],s[o],u.loop);if(!e.segments){a.push({source:u,target:l,start:s[d],end:s[o]});continue}const c=_boundSegments(e,l);for(const h of c){const f=_getBounds(n,i[h.start],i[h.end],h.loop),p=_boundSegment(u,s,f);for(const g of p)a.push({source:g,target:h,start:{[n]:_getEdge(l,f,"start",Math.max)},end:{[n]:_getEdge(l,f,"end",Math.min)}})}}return a}function _getBounds(t,e,n,r){if(r)return;let s=e[t],i=n[t];return t==="angle"&&(s=_normalizeAngle(s),i=_normalizeAngle(i)),{property:t,start:s,end:i}}function _pointsFromSegments(t,e){const{x:n=null,y:r=null}=t||{},s=e.points,i=[];return e.segments.forEach(({start:a,end:u})=>{u=_findSegmentEnd(a,u,s);const d=s[a],o=s[u];r!==null?(i.push({x:d.x,y:r}),i.push({x:o.x,y:r})):n!==null&&(i.push({x:n,y:d.y}),i.push({x:n,y:o.y}))}),i}function _findSegmentEnd(t,e,n){for(;e>t;e--){const r=n[e];if(!isNaN(r.x)&&!isNaN(r.y))break}return e}function _getEdge(t,e,n,r){return t&&e?r(t[n],e[n]):t?t[n]:e?e[n]:0}function _createBoundaryLine(t,e){let n=[],r=!1;return isArray(t)?(r=!0,n=t):n=_pointsFromSegments(t,e),n.length?new LineElement({points:n,options:{tension:0},_loop:r,_fullLoop:r}):null}function _shouldApplyFill(t){return t&&t.fill!==!1}function _resolveTarget(t,e,n){let s=t[e].fill;const i=[e];let a;if(!n)return s;for(;s!==!1&&i.indexOf(s)===-1;){if(!isNumberFinite(s))return s;if(a=t[s],!a)return!1;if(a.visible)return s;i.push(s),s=a.fill}return!1}function _decodeFill(t,e,n){const r=parseFillOption(t);if(isObject(r))return isNaN(r.value)?!1:r;let s=parseFloat(r);return isNumberFinite(s)&&Math.floor(s)===s?decodeTargetIndex(r[0],e,s,n):["origin","start","end","stack","shape"].indexOf(r)>=0&&r}function decodeTargetIndex(t,e,n,r){return(t==="-"||t==="+")&&(n=e+n),n===e||n<0||n>=r?!1:n}function _getTargetPixel(t,e){let n=null;return t==="start"?n=e.bottom:t==="end"?n=e.top:isObject(t)?n=e.getPixelForValue(t.value):e.getBasePixel&&(n=e.getBasePixel()),n}function _getTargetValue(t,e,n){let r;return t==="start"?r=n:t==="end"?r=e.options.reverse?e.min:e.max:isObject(t)?r=t.value:r=e.getBaseValue(),r}function parseFillOption(t){const e=t.options,n=e.fill;let r=valueOrDefault(n&&n.target,n);return r===void 0&&(r=!!e.backgroundColor),r===!1||r===null?!1:r===!0?"origin":r}function _buildStackLine(t){const{scale:e,index:n,line:r}=t,s=[],i=r.segments,a=r.points,u=getLinesBelow(e,n);u.push(_createBoundaryLine({x:null,y:e.bottom},r));for(let d=0;d=0;--a){const u=s[a].$filler;u&&(u.line.updateControlPoints(i,u.axis),r&&u.fill&&_drawfill(t.ctx,u,i))}},beforeDatasetsDraw(t,e,n){if(n.drawTime!=="beforeDatasetsDraw")return;const r=t.getSortedVisibleDatasetMetas();for(let s=r.length-1;s>=0;--s){const i=r[s].$filler;_shouldApplyFill(i)&&_drawfill(t.ctx,i,t.chartArea)}},beforeDatasetDraw(t,e,n){const r=e.meta.$filler;!_shouldApplyFill(r)||n.drawTime!=="beforeDatasetDraw"||_drawfill(t.ctx,r,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const getBoxSize=(t,e)=>{let{boxHeight:n=e,boxWidth:r=e}=t;return t.usePointStyle&&(n=Math.min(n,e),r=t.pointStyleWidth||Math.min(r,e)),{boxWidth:r,boxHeight:n,itemHeight:Math.max(e,n)}},itemsEqual=(t,e)=>t!==null&&e!==null&&t.datasetIndex===e.datasetIndex&&t.index===e.index;class Legend extends Element{constructor(e){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,n,r){this.maxWidth=e,this.maxHeight=n,this._margins=r,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const e=this.options.labels||{};let n=callback(e.generateLabels,[this.chart],this)||[];e.filter&&(n=n.filter(r=>e.filter(r,this.chart.data))),e.sort&&(n=n.sort((r,s)=>e.sort(r,s,this.chart.data))),this.options.reverse&&n.reverse(),this.legendItems=n}fit(){const{options:e,ctx:n}=this;if(!e.display){this.width=this.height=0;return}const r=e.labels,s=toFont(r.font),i=s.size,a=this._computeTitleHeight(),{boxWidth:u,itemHeight:d}=getBoxSize(r,i);let o,l;n.font=s.string,this.isHorizontal()?(o=this.maxWidth,l=this._fitRows(a,i,u,d)+10):(l=this.maxHeight,o=this._fitCols(a,s,u,d)+10),this.width=Math.min(o,e.maxWidth||this.maxWidth),this.height=Math.min(l,e.maxHeight||this.maxHeight)}_fitRows(e,n,r,s){const{ctx:i,maxWidth:a,options:{labels:{padding:u}}}=this,d=this.legendHitBoxes=[],o=this.lineWidths=[0],l=s+u;let c=e;i.textAlign="left",i.textBaseline="middle";let h=-1,f=-l;return this.legendItems.forEach((p,g)=>{const b=r+n/2+i.measureText(p.text).width;(g===0||o[o.length-1]+b+2*u>a)&&(c+=l,o[o.length-(g>0?0:1)]=0,f+=l,h++),d[g]={left:0,top:f,row:h,width:b,height:s},o[o.length-1]+=b+u}),c}_fitCols(e,n,r,s){const{ctx:i,maxHeight:a,options:{labels:{padding:u}}}=this,d=this.legendHitBoxes=[],o=this.columnSizes=[],l=a-e;let c=u,h=0,f=0,p=0,g=0;return this.legendItems.forEach((b,w)=>{const{itemWidth:y,itemHeight:T}=calculateItemSize(r,n,i,b,s);w>0&&f+T+2*u>l&&(c+=h+u,o.push({width:h,height:f}),p+=h+u,g++,h=f=0),d[w]={left:p,top:f,col:g,width:y,height:T},h=Math.max(h,y),f+=T+u}),c+=h,o.push({width:h,height:f}),c}adjustHitBoxes(){if(!this.options.display)return;const e=this._computeTitleHeight(),{legendHitBoxes:n,options:{align:r,labels:{padding:s},rtl:i}}=this,a=getRtlAdapter(i,this.left,this.width);if(this.isHorizontal()){let u=0,d=_alignStartEnd(r,this.left+s,this.right-this.lineWidths[u]);for(const o of n)u!==o.row&&(u=o.row,d=_alignStartEnd(r,this.left+s,this.right-this.lineWidths[u])),o.top+=this.top+e+s,o.left=a.leftForLtr(a.x(d),o.width),d+=o.width+s}else{let u=0,d=_alignStartEnd(r,this.top+e+s,this.bottom-this.columnSizes[u].height);for(const o of n)o.col!==u&&(u=o.col,d=_alignStartEnd(r,this.top+e+s,this.bottom-this.columnSizes[u].height)),o.top=d,o.left+=this.left+s,o.left=a.leftForLtr(a.x(o.left),o.width),d+=o.height+s}}isHorizontal(){return this.options.position==="top"||this.options.position==="bottom"}draw(){if(this.options.display){const e=this.ctx;clipArea(e,this),this._draw(),unclipArea(e)}}_draw(){const{options:e,columnSizes:n,lineWidths:r,ctx:s}=this,{align:i,labels:a}=e,u=defaults.color,d=getRtlAdapter(e.rtl,this.left,this.width),o=toFont(a.font),{padding:l}=a,c=o.size,h=c/2;let f;this.drawTitle(),s.textAlign=d.textAlign("left"),s.textBaseline="middle",s.lineWidth=.5,s.font=o.string;const{boxWidth:p,boxHeight:g,itemHeight:b}=getBoxSize(a,c),w=function(N,B,F){if(isNaN(p)||p<=0||isNaN(g)||g<0)return;s.save();const k=valueOrDefault(F.lineWidth,1);if(s.fillStyle=valueOrDefault(F.fillStyle,u),s.lineCap=valueOrDefault(F.lineCap,"butt"),s.lineDashOffset=valueOrDefault(F.lineDashOffset,0),s.lineJoin=valueOrDefault(F.lineJoin,"miter"),s.lineWidth=k,s.strokeStyle=valueOrDefault(F.strokeStyle,u),s.setLineDash(valueOrDefault(F.lineDash,[])),a.usePointStyle){const G={radius:g*Math.SQRT2/2,pointStyle:F.pointStyle,rotation:F.rotation,borderWidth:k},re=d.xPlus(N,p/2),ie=B+h;drawPointLegend(s,G,re,ie,a.pointStyleWidth&&p)}else{const G=B+Math.max((c-g)/2,0),re=d.leftForLtr(N,p),ie=toTRBLCorners(F.borderRadius);s.beginPath(),Object.values(ie).some(ge=>ge!==0)?addRoundedRectPath(s,{x:re,y:G,w:p,h:g,radius:ie}):s.rect(re,G,p,g),s.fill(),k!==0&&s.stroke()}s.restore()},y=function(N,B,F){renderText(s,F.text,N,B+b/2,o,{strikethrough:F.hidden,textAlign:d.textAlign(F.textAlign)})},T=this.isHorizontal(),S=this._computeTitleHeight();T?f={x:_alignStartEnd(i,this.left+l,this.right-r[0]),y:this.top+l+S,line:0}:f={x:this.left+l,y:_alignStartEnd(i,this.top+S+l,this.bottom-n[0].height),line:0},overrideTextDirection(this.ctx,e.textDirection);const E=b+l;this.legendItems.forEach((N,B)=>{s.strokeStyle=N.fontColor,s.fillStyle=N.fontColor;const F=s.measureText(N.text).width,k=d.textAlign(N.textAlign||(N.textAlign=a.textAlign)),G=p+h+F;let re=f.x,ie=f.y;d.setWidth(this.width),T?B>0&&re+G+l>this.right&&(ie=f.y+=E,f.line++,re=f.x=_alignStartEnd(i,this.left+l,this.right-r[f.line])):B>0&&ie+E>this.bottom&&(re=f.x=re+n[f.line].width+l,f.line++,ie=f.y=_alignStartEnd(i,this.top+S+l,this.bottom-n[f.line].height));const ge=d.x(re);if(w(ge,ie,N),re=_textX(k,re+p+h,T?re+G:this.right,e.rtl),y(d.x(re),ie,N),T)f.x+=G+l;else if(typeof N.text!="string"){const X=o.lineHeight;f.y+=calculateLegendItemHeight(N,X)+l}else f.y+=E}),restoreTextDirection(this.ctx,e.textDirection)}drawTitle(){const e=this.options,n=e.title,r=toFont(n.font),s=toPadding(n.padding);if(!n.display)return;const i=getRtlAdapter(e.rtl,this.left,this.width),a=this.ctx,u=n.position,d=r.size/2,o=s.top+d;let l,c=this.left,h=this.width;if(this.isHorizontal())h=Math.max(...this.lineWidths),l=this.top+o,c=_alignStartEnd(e.align,c,this.right-h);else{const p=this.columnSizes.reduce((g,b)=>Math.max(g,b.height),0);l=o+_alignStartEnd(e.align,this.top,this.bottom-p-e.labels.padding-this._computeTitleHeight())}const f=_alignStartEnd(u,c,c+h);a.textAlign=i.textAlign(_toLeftRightCenter(u)),a.textBaseline="middle",a.strokeStyle=n.color,a.fillStyle=n.color,a.font=r.string,renderText(a,n.text,f,l,r)}_computeTitleHeight(){const e=this.options.title,n=toFont(e.font),r=toPadding(e.padding);return e.display?n.lineHeight+r.height:0}_getLegendItemAt(e,n){let r,s,i;if(_isBetween(e,this.left,this.right)&&_isBetween(n,this.top,this.bottom)){for(i=this.legendHitBoxes,r=0;ri.length>a.length?i:a)),e+n.size/2+r.measureText(s).width}function calculateItemHeight(t,e,n){let r=t;return typeof e.text!="string"&&(r=calculateLegendItemHeight(e,n)),r}function calculateLegendItemHeight(t,e){const n=t.text?t.text.length:0;return e*n}function isListened(t,e){return!!((t==="mousemove"||t==="mouseout")&&(e.onHover||e.onLeave)||e.onClick&&(t==="click"||t==="mouseup"))}var plugin_legend={id:"legend",_element:Legend,start(t,e,n){const r=t.legend=new Legend({ctx:t.ctx,options:n,chart:t});layouts.configure(t,r,n),layouts.addBox(t,r)},stop(t){layouts.removeBox(t,t.legend),delete t.legend},beforeUpdate(t,e,n){const r=t.legend;layouts.configure(t,r,n),r.options=n},afterUpdate(t){const e=t.legend;e.buildLabels(),e.adjustHitBoxes()},afterEvent(t,e){e.replay||t.legend.handleEvent(e.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1e3,onClick(t,e,n){const r=e.datasetIndex,s=n.chart;s.isDatasetVisible(r)?(s.hide(r),e.hidden=!0):(s.show(r),e.hidden=!1)},onHover:null,onLeave:null,labels:{color:t=>t.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const e=t.data.datasets,{labels:{usePointStyle:n,pointStyle:r,textAlign:s,color:i,useBorderRadius:a,borderRadius:u}}=t.legend.options;return t._getSortedDatasetMetas().map(d=>{const o=d.controller.getStyle(n?0:void 0),l=toPadding(o.borderWidth);return{text:e[d.index].label,fillStyle:o.backgroundColor,fontColor:i,hidden:!d.visible,lineCap:o.borderCapStyle,lineDash:o.borderDash,lineDashOffset:o.borderDashOffset,lineJoin:o.borderJoinStyle,lineWidth:(l.width+l.height)/4,strokeStyle:o.borderColor,pointStyle:r||o.pointStyle,rotation:o.rotation,textAlign:s||o.textAlign,borderRadius:a&&(u||o.borderRadius),datasetIndex:d.index}},this)}},title:{color:t=>t.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:t=>!t.startsWith("on"),labels:{_scriptable:t=>!["generateLabels","filter","sort"].includes(t)}}};class Title extends Element{constructor(e){super(),this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,n){const r=this.options;if(this.left=0,this.top=0,!r.display){this.width=this.height=this.right=this.bottom=0;return}this.width=this.right=e,this.height=this.bottom=n;const s=isArray(r.text)?r.text.length:1;this._padding=toPadding(r.padding);const i=s*toFont(r.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=i:this.width=i}isHorizontal(){const e=this.options.position;return e==="top"||e==="bottom"}_drawArgs(e){const{top:n,left:r,bottom:s,right:i,options:a}=this,u=a.align;let d=0,o,l,c;return this.isHorizontal()?(l=_alignStartEnd(u,r,i),c=n+e,o=i-r):(a.position==="left"?(l=r+e,c=_alignStartEnd(u,s,n),d=PI*-.5):(l=i-e,c=_alignStartEnd(u,n,s),d=PI*.5),o=s-n),{titleX:l,titleY:c,maxWidth:o,rotation:d}}draw(){const e=this.ctx,n=this.options;if(!n.display)return;const r=toFont(n.font),i=r.lineHeight/2+this._padding.top,{titleX:a,titleY:u,maxWidth:d,rotation:o}=this._drawArgs(i);renderText(e,n.text,0,0,r,{color:n.color,maxWidth:d,rotation:o,textAlign:_toLeftRightCenter(n.align),textBaseline:"middle",translation:[a,u]})}}function createTitle(t,e){const n=new Title({ctx:t.ctx,options:e,chart:t});layouts.configure(t,n,e),layouts.addBox(t,n),t.titleBlock=n}var plugin_title={id:"title",_element:Title,start(t,e,n){createTitle(t,n)},stop(t){const e=t.titleBlock;layouts.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,n){const r=t.titleBlock;layouts.configure(t,r,n),r.options=n},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const map=new WeakMap;var plugin_subtitle={id:"subtitle",start(t,e,n){const r=new Title({ctx:t.ctx,options:n,chart:t});layouts.configure(t,r,n),layouts.addBox(t,r),map.set(t,r)},stop(t){layouts.removeBox(t,map.get(t)),map.delete(t)},beforeUpdate(t,e,n){const r=map.get(t);layouts.configure(t,r,n),r.options=n},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const positioners={average(t){if(!t.length)return!1;let e,n,r=new Set,s=0,i=0;for(e=0,n=t.length;eu+d)/r.size,y:s/i}},nearest(t,e){if(!t.length)return!1;let n=e.x,r=e.y,s=Number.POSITIVE_INFINITY,i,a,u;for(i=0,a=t.length;i-1?t.split(` +`):t}function createTooltipItem(t,e){const{element:n,datasetIndex:r,index:s}=e,i=t.getDatasetMeta(r).controller,{label:a,value:u}=i.getLabelAndValue(s);return{chart:t,label:a,parsed:i.getParsed(s),raw:t.data.datasets[r].data[s],formattedValue:u,dataset:i.getDataset(),dataIndex:s,datasetIndex:r,element:n}}function getTooltipSize(t,e){const n=t.chart.ctx,{body:r,footer:s,title:i}=t,{boxWidth:a,boxHeight:u}=e,d=toFont(e.bodyFont),o=toFont(e.titleFont),l=toFont(e.footerFont),c=i.length,h=s.length,f=r.length,p=toPadding(e.padding);let g=p.height,b=0,w=r.reduce((S,E)=>S+E.before.length+E.lines.length+E.after.length,0);if(w+=t.beforeBody.length+t.afterBody.length,c&&(g+=c*o.lineHeight+(c-1)*e.titleSpacing+e.titleMarginBottom),w){const S=e.displayColors?Math.max(u,d.lineHeight):d.lineHeight;g+=f*S+(w-f)*d.lineHeight+(w-1)*e.bodySpacing}h&&(g+=e.footerMarginTop+h*l.lineHeight+(h-1)*e.footerSpacing);let y=0;const T=function(S){b=Math.max(b,n.measureText(S).width+y)};return n.save(),n.font=o.string,each(t.title,T),n.font=d.string,each(t.beforeBody.concat(t.afterBody),T),y=e.displayColors?a+2+e.boxPadding:0,each(r,S=>{each(S.before,T),each(S.lines,T),each(S.after,T)}),y=0,n.font=l.string,each(t.footer,T),n.restore(),b+=p.width,{width:b,height:g}}function determineYAlign(t,e){const{y:n,height:r}=e;return nt.height-r/2?"bottom":"center"}function doesNotFitWithAlign(t,e,n,r){const{x:s,width:i}=r,a=n.caretSize+n.caretPadding;if(t==="left"&&s+i+a>e.width||t==="right"&&s-i-a<0)return!0}function determineXAlign(t,e,n,r){const{x:s,width:i}=n,{width:a,chartArea:{left:u,right:d}}=t;let o="center";return r==="center"?o=s<=(u+d)/2?"left":"right":s<=i/2?o="left":s>=a-i/2&&(o="right"),doesNotFitWithAlign(o,t,e,n)&&(o="center"),o}function determineAlignment(t,e,n){const r=n.yAlign||e.yAlign||determineYAlign(t,n);return{xAlign:n.xAlign||e.xAlign||determineXAlign(t,e,n,r),yAlign:r}}function alignX(t,e){let{x:n,width:r}=t;return e==="right"?n-=r:e==="center"&&(n-=r/2),n}function alignY(t,e,n){let{y:r,height:s}=t;return e==="top"?r+=n:e==="bottom"?r-=s+n:r-=s/2,r}function getBackgroundPoint(t,e,n,r){const{caretSize:s,caretPadding:i,cornerRadius:a}=t,{xAlign:u,yAlign:d}=n,o=s+i,{topLeft:l,topRight:c,bottomLeft:h,bottomRight:f}=toTRBLCorners(a);let p=alignX(e,u);const g=alignY(e,d,o);return d==="center"?u==="left"?p+=o:u==="right"&&(p-=o):u==="left"?p-=Math.max(l,h)+s:u==="right"&&(p+=Math.max(c,f)+s),{x:_limitValue(p,0,r.width-e.width),y:_limitValue(g,0,r.height-e.height)}}function getAlignedX(t,e,n){const r=toPadding(n.padding);return e==="center"?t.x+t.width/2:e==="right"?t.x+t.width-r.right:t.x+r.left}function getBeforeAfterBodyLines(t){return pushOrConcat([],splitNewlines(t))}function createTooltipContext(t,e,n){return createContext(t,{tooltip:e,tooltipItems:n,type:"tooltip"})}function overrideCallbacks(t,e){const n=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return n?t.override(n):t}const defaultCallbacks={beforeTitle:noop,title(t){if(t.length>0){const e=t[0],n=e.chart.data.labels,r=n?n.length:0;if(this&&this.options&&this.options.mode==="dataset")return e.dataset.label||"";if(e.label)return e.label;if(r>0&&e.dataIndex"u"?defaultCallbacks[e].call(n,r):s}class Tooltip extends Element{static positioners=positioners;constructor(e){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=e.chart,this.options=e.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(e){this.options=e,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const e=this._cachedAnimations;if(e)return e;const n=this.chart,r=this.options.setContext(this.getContext()),s=r.enabled&&n.options.animation&&r.animations,i=new Animations(this.chart,s);return s._cacheable&&(this._cachedAnimations=Object.freeze(i)),i}getContext(){return this.$context||(this.$context=createTooltipContext(this.chart.getContext(),this,this._tooltipItems))}getTitle(e,n){const{callbacks:r}=n,s=invokeCallbackWithFallback(r,"beforeTitle",this,e),i=invokeCallbackWithFallback(r,"title",this,e),a=invokeCallbackWithFallback(r,"afterTitle",this,e);let u=[];return u=pushOrConcat(u,splitNewlines(s)),u=pushOrConcat(u,splitNewlines(i)),u=pushOrConcat(u,splitNewlines(a)),u}getBeforeBody(e,n){return getBeforeAfterBodyLines(invokeCallbackWithFallback(n.callbacks,"beforeBody",this,e))}getBody(e,n){const{callbacks:r}=n,s=[];return each(e,i=>{const a={before:[],lines:[],after:[]},u=overrideCallbacks(r,i);pushOrConcat(a.before,splitNewlines(invokeCallbackWithFallback(u,"beforeLabel",this,i))),pushOrConcat(a.lines,invokeCallbackWithFallback(u,"label",this,i)),pushOrConcat(a.after,splitNewlines(invokeCallbackWithFallback(u,"afterLabel",this,i))),s.push(a)}),s}getAfterBody(e,n){return getBeforeAfterBodyLines(invokeCallbackWithFallback(n.callbacks,"afterBody",this,e))}getFooter(e,n){const{callbacks:r}=n,s=invokeCallbackWithFallback(r,"beforeFooter",this,e),i=invokeCallbackWithFallback(r,"footer",this,e),a=invokeCallbackWithFallback(r,"afterFooter",this,e);let u=[];return u=pushOrConcat(u,splitNewlines(s)),u=pushOrConcat(u,splitNewlines(i)),u=pushOrConcat(u,splitNewlines(a)),u}_createItems(e){const n=this._active,r=this.chart.data,s=[],i=[],a=[];let u=[],d,o;for(d=0,o=n.length;de.filter(l,c,h,r))),e.itemSort&&(u=u.sort((l,c)=>e.itemSort(l,c,r))),each(u,l=>{const c=overrideCallbacks(e.callbacks,l);s.push(invokeCallbackWithFallback(c,"labelColor",this,l)),i.push(invokeCallbackWithFallback(c,"labelPointStyle",this,l)),a.push(invokeCallbackWithFallback(c,"labelTextColor",this,l))}),this.labelColors=s,this.labelPointStyles=i,this.labelTextColors=a,this.dataPoints=u,u}update(e,n){const r=this.options.setContext(this.getContext()),s=this._active;let i,a=[];if(!s.length)this.opacity!==0&&(i={opacity:0});else{const u=positioners[r.position].call(this,s,this._eventPosition);a=this._createItems(r),this.title=this.getTitle(a,r),this.beforeBody=this.getBeforeBody(a,r),this.body=this.getBody(a,r),this.afterBody=this.getAfterBody(a,r),this.footer=this.getFooter(a,r);const d=this._size=getTooltipSize(this,r),o=Object.assign({},u,d),l=determineAlignment(this.chart,r,o),c=getBackgroundPoint(r,o,l,this.chart);this.xAlign=l.xAlign,this.yAlign=l.yAlign,i={opacity:1,x:c.x,y:c.y,width:d.width,height:d.height,caretX:u.x,caretY:u.y}}this._tooltipItems=a,this.$context=void 0,i&&this._resolveAnimations().update(this,i),e&&r.external&&r.external.call(this,{chart:this.chart,tooltip:this,replay:n})}drawCaret(e,n,r,s){const i=this.getCaretPosition(e,r,s);n.lineTo(i.x1,i.y1),n.lineTo(i.x2,i.y2),n.lineTo(i.x3,i.y3)}getCaretPosition(e,n,r){const{xAlign:s,yAlign:i}=this,{caretSize:a,cornerRadius:u}=r,{topLeft:d,topRight:o,bottomLeft:l,bottomRight:c}=toTRBLCorners(u),{x:h,y:f}=e,{width:p,height:g}=n;let b,w,y,T,S,E;return i==="center"?(S=f+g/2,s==="left"?(b=h,w=b-a,T=S+a,E=S-a):(b=h+p,w=b+a,T=S-a,E=S+a),y=b):(s==="left"?w=h+Math.max(d,l)+a:s==="right"?w=h+p-Math.max(o,c)-a:w=this.caretX,i==="top"?(T=f,S=T-a,b=w-a,y=w+a):(T=f+g,S=T+a,b=w+a,y=w-a),E=T),{x1:b,x2:w,x3:y,y1:T,y2:S,y3:E}}drawTitle(e,n,r){const s=this.title,i=s.length;let a,u,d;if(i){const o=getRtlAdapter(r.rtl,this.x,this.width);for(e.x=getAlignedX(this,r.titleAlign,r),n.textAlign=o.textAlign(r.titleAlign),n.textBaseline="middle",a=toFont(r.titleFont),u=r.titleSpacing,n.fillStyle=r.titleColor,n.font=a.string,d=0;dy!==0)?(e.beginPath(),e.fillStyle=i.multiKeyBackground,addRoundedRectPath(e,{x:g,y:p,w:o,h:d,radius:w}),e.fill(),e.stroke(),e.fillStyle=a.backgroundColor,e.beginPath(),addRoundedRectPath(e,{x:b,y:p+1,w:o-2,h:d-2,radius:w}),e.fill()):(e.fillStyle=i.multiKeyBackground,e.fillRect(g,p,o,d),e.strokeRect(g,p,o,d),e.fillStyle=a.backgroundColor,e.fillRect(b,p+1,o-2,d-2))}e.fillStyle=this.labelTextColors[r]}drawBody(e,n,r){const{body:s}=this,{bodySpacing:i,bodyAlign:a,displayColors:u,boxHeight:d,boxWidth:o,boxPadding:l}=r,c=toFont(r.bodyFont);let h=c.lineHeight,f=0;const p=getRtlAdapter(r.rtl,this.x,this.width),g=function(F){n.fillText(F,p.x(e.x+f),e.y+h/2),e.y+=h+i},b=p.textAlign(a);let w,y,T,S,E,N,B;for(n.textAlign=a,n.textBaseline="middle",n.font=c.string,e.x=getAlignedX(this,b,r),n.fillStyle=r.bodyColor,each(this.beforeBody,g),f=u&&b!=="right"?a==="center"?o/2+l:o+2+l:0,S=0,N=s.length;S0&&n.stroke()}_updateAnimationTarget(e){const n=this.chart,r=this.$animations,s=r&&r.x,i=r&&r.y;if(s||i){const a=positioners[e.position].call(this,this._active,this._eventPosition);if(!a)return;const u=this._size=getTooltipSize(this,e),d=Object.assign({},a,this._size),o=determineAlignment(n,e,d),l=getBackgroundPoint(e,d,o,n);(s._to!==l.x||i._to!==l.y)&&(this.xAlign=o.xAlign,this.yAlign=o.yAlign,this.width=u.width,this.height=u.height,this.caretX=a.x,this.caretY=a.y,this._resolveAnimations().update(this,l))}}_willRender(){return!!this.opacity}draw(e){const n=this.options.setContext(this.getContext());let r=this.opacity;if(!r)return;this._updateAnimationTarget(n);const s={width:this.width,height:this.height},i={x:this.x,y:this.y};r=Math.abs(r)<.001?0:r;const a=toPadding(n.padding),u=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;n.enabled&&u&&(e.save(),e.globalAlpha=r,this.drawBackground(i,e,s,n),overrideTextDirection(e,n.textDirection),i.y+=a.top,this.drawTitle(i,e,n),this.drawBody(i,e,n),this.drawFooter(i,e,n),restoreTextDirection(e,n.textDirection),e.restore())}getActiveElements(){return this._active||[]}setActiveElements(e,n){const r=this._active,s=e.map(({datasetIndex:u,index:d})=>{const o=this.chart.getDatasetMeta(u);if(!o)throw new Error("Cannot find a dataset at index "+u);return{datasetIndex:u,element:o.data[d],index:d}}),i=!_elementsEqual(r,s),a=this._positionChanged(s,n);(i||a)&&(this._active=s,this._eventPosition=n,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(e,n,r=!0){if(n&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const s=this.options,i=this._active||[],a=this._getActiveElements(e,i,n,r),u=this._positionChanged(a,e),d=n||!_elementsEqual(a,i)||u;return d&&(this._active=a,(s.enabled||s.external)&&(this._eventPosition={x:e.x,y:e.y},this.update(!0,n))),d}_getActiveElements(e,n,r,s){const i=this.options;if(e.type==="mouseout")return[];if(!s)return n.filter(u=>this.chart.data.datasets[u.datasetIndex]&&this.chart.getDatasetMeta(u.datasetIndex).controller.getParsed(u.index)!==void 0);const a=this.chart.getElementsAtEventForMode(e,i.mode,i,r);return i.reverse&&a.reverse(),a}_positionChanged(e,n){const{caretX:r,caretY:s,options:i}=this,a=positioners[i.position].call(this,e,n);return a!==!1&&(r!==a.x||s!==a.y)}}var plugin_tooltip={id:"tooltip",_element:Tooltip,positioners,afterInit(t,e,n){n&&(t.tooltip=new Tooltip({chart:t,options:n}))},beforeUpdate(t,e,n){t.tooltip&&t.tooltip.initialize(n)},reset(t,e,n){t.tooltip&&t.tooltip.initialize(n)},afterDraw(t){const e=t.tooltip;if(e&&e._willRender()){const n={tooltip:e};if(t.notifyPlugins("beforeTooltipDraw",{...n,cancelable:!0})===!1)return;e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",n)}},afterEvent(t,e){if(t.tooltip){const n=e.replay;t.tooltip.handleEvent(e.event,n,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:defaultCallbacks},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:t=>t!=="filter"&&t!=="itemSort"&&t!=="external",_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]},plugins=Object.freeze({__proto__:null,Colors:plugin_colors,Decimation:plugin_decimation,Filler:index,Legend:plugin_legend,SubTitle:plugin_subtitle,Title:plugin_title,Tooltip:plugin_tooltip});const addIfString=(t,e,n,r)=>(typeof e=="string"?(n=t.push(e)-1,r.unshift({index:n,label:e})):isNaN(e)&&(n=null),n);function findOrAddLabel(t,e,n,r){const s=t.indexOf(e);if(s===-1)return addIfString(t,e,n,r);const i=t.lastIndexOf(e);return s!==i?n:s}const validIndex=(t,e)=>t===null?null:_limitValue(Math.round(t),0,e);function _getLabelForValue(t){const e=this.getLabels();return t>=0&&tn.length-1?null:this.getPixelForValue(n[e].value)}getValueForPixel(e){return Math.round(this._startValue+this.getDecimalForPixel(e)*this._valueRange)}getBasePixel(){return this.bottom}}function generateTicks$1(t,e){const n=[],{bounds:s,step:i,min:a,max:u,precision:d,count:o,maxTicks:l,maxDigits:c,includeBounds:h}=t,f=i||1,p=l-1,{min:g,max:b}=e,w=!isNullOrUndef(a),y=!isNullOrUndef(u),T=!isNullOrUndef(o),S=(b-g)/(c+1);let E=niceNum((b-g)/p/f)*f,N,B,F,k;if(E<1e-14&&!w&&!y)return[{value:g},{value:b}];k=Math.ceil(b/E)-Math.floor(g/E),k>p&&(E=niceNum(k*E/p/f)*f),isNullOrUndef(d)||(N=Math.pow(10,d),E=Math.ceil(E*N)/N),s==="ticks"?(B=Math.floor(g/E)*E,F=Math.ceil(b/E)*E):(B=g,F=b),w&&y&&i&&almostWhole((u-a)/i,E/1e3)?(k=Math.round(Math.min((u-a)/E,l)),E=(u-a)/k,B=a,F=u):T?(B=w?a:B,F=y?u:F,k=o-1,E=(F-B)/k):(k=(F-B)/E,almostEquals(k,Math.round(k),E/1e3)?k=Math.round(k):k=Math.ceil(k));const G=Math.max(_decimalPlaces(E),_decimalPlaces(B));N=Math.pow(10,isNullOrUndef(d)?G:d),B=Math.round(B*N)/N,F=Math.round(F*N)/N;let re=0;for(w&&(h&&B!==a?(n.push({value:a}),Bu)break;n.push({value:ie})}return y&&h&&F!==u?n.length&&almostEquals(n[n.length-1].value,u,relativeLabelSize(u,S,t))?n[n.length-1].value=u:n.push({value:u}):(!y||F===u)&&n.push({value:F}),n}function relativeLabelSize(t,e,{horizontal:n,minRotation:r}){const s=toRadians(r),i=(n?Math.sin(s):Math.cos(s))||.001,a=.75*e*(""+t).length;return Math.min(e/i,a)}class LinearScaleBase extends Scale{constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(e,n){return isNullOrUndef(e)||(typeof e=="number"||e instanceof Number)&&!isFinite(+e)?null:+e}handleTickRangeOptions(){const{beginAtZero:e}=this.options,{minDefined:n,maxDefined:r}=this.getUserBounds();let{min:s,max:i}=this;const a=d=>s=n?s:d,u=d=>i=r?i:d;if(e){const d=sign(s),o=sign(i);d<0&&o<0?u(0):d>0&&o>0&&a(0)}if(s===i){let d=i===0?1:Math.abs(i*.05);u(i+d),e||a(s-d)}this.min=s,this.max=i}getTickLimit(){const e=this.options.ticks;let{maxTicksLimit:n,stepSize:r}=e,s;return r?(s=Math.ceil(this.max/r)-Math.floor(this.min/r)+1,s>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${r} would result generating up to ${s} ticks. Limiting to 1000.`),s=1e3)):(s=this.computeTickLimit(),n=n||11),n&&(s=Math.min(n,s)),s}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const e=this.options,n=e.ticks;let r=this.getTickLimit();r=Math.max(2,r);const s={maxTicks:r,bounds:e.bounds,min:e.min,max:e.max,precision:n.precision,step:n.stepSize,count:n.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:n.minRotation||0,includeBounds:n.includeBounds!==!1},i=this._range||this,a=generateTicks$1(s,i);return e.bounds==="ticks"&&_setMinAndMaxByKey(a,this,"value"),e.reverse?(a.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),a}configure(){const e=this.ticks;let n=this.min,r=this.max;if(super.configure(),this.options.offset&&e.length){const s=(r-n)/Math.max(e.length-1,1)/2;n-=s,r+=s}this._startValue=n,this._endValue=r,this._valueRange=r-n}getLabelForValue(e){return formatNumber(e,this.chart.options.locale,this.options.ticks.format)}}class LinearScale extends LinearScaleBase{static id="linear";static defaults={ticks:{callback:Ticks.formatters.numeric}};determineDataLimits(){const{min:e,max:n}=this.getMinMax(!0);this.min=isNumberFinite(e)?e:0,this.max=isNumberFinite(n)?n:1,this.handleTickRangeOptions()}computeTickLimit(){const e=this.isHorizontal(),n=e?this.width:this.height,r=toRadians(this.options.ticks.minRotation),s=(e?Math.sin(r):Math.cos(r))||.001,i=this._resolveTickFontOptions(0);return Math.ceil(n/Math.min(40,i.lineHeight/s))}getPixelForValue(e){return e===null?NaN:this.getPixelForDecimal((e-this._startValue)/this._valueRange)}getValueForPixel(e){return this._startValue+this.getDecimalForPixel(e)*this._valueRange}}const log10Floor=t=>Math.floor(log10(t)),changeExponent=(t,e)=>Math.pow(10,log10Floor(t)+e);function isMajor(t){return t/Math.pow(10,log10Floor(t))===1}function steps(t,e,n){const r=Math.pow(10,n),s=Math.floor(t/r);return Math.ceil(e/r)-s}function startExp(t,e){const n=e-t;let r=log10Floor(n);for(;steps(t,e,r)>10;)r++;for(;steps(t,e,r)<10;)r--;return Math.min(r,log10Floor(t))}function generateTicks(t,{min:e,max:n}){e=finiteOrDefault(t.min,e);const r=[],s=log10Floor(e);let i=startExp(e,n),a=i<0?Math.pow(10,Math.abs(i)):1;const u=Math.pow(10,i),d=s>i?Math.pow(10,s):0,o=Math.round((e-d)*a)/a,l=Math.floor((e-d)/u/10)*u*10;let c=Math.floor((o-l)/Math.pow(10,i)),h=finiteOrDefault(t.min,Math.round((d+l+c*Math.pow(10,i))*a)/a);for(;h=10?c=c<15?15:20:c++,c>=20&&(i++,c=2,a=i>=0?1:a),h=Math.round((d+l+c*Math.pow(10,i))*a)/a;const f=finiteOrDefault(t.max,h);return r.push({value:f,major:isMajor(f),significand:c}),r}class LogarithmicScale extends Scale{static id="logarithmic";static defaults={ticks:{callback:Ticks.formatters.logarithmic,major:{enabled:!0}}};constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(e,n){const r=LinearScaleBase.prototype.parse.apply(this,[e,n]);if(r===0){this._zero=!0;return}return isNumberFinite(r)&&r>0?r:null}determineDataLimits(){const{min:e,max:n}=this.getMinMax(!0);this.min=isNumberFinite(e)?Math.max(0,e):null,this.max=isNumberFinite(n)?Math.max(0,n):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!isNumberFinite(this._userMin)&&(this.min=e===changeExponent(this.min,0)?changeExponent(this.min,-1):changeExponent(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:e,maxDefined:n}=this.getUserBounds();let r=this.min,s=this.max;const i=u=>r=e?r:u,a=u=>s=n?s:u;r===s&&(r<=0?(i(1),a(10)):(i(changeExponent(r,-1)),a(changeExponent(s,1)))),r<=0&&i(changeExponent(s,-1)),s<=0&&a(changeExponent(r,1)),this.min=r,this.max=s}buildTicks(){const e=this.options,n={min:this._userMin,max:this._userMax},r=generateTicks(n,this);return e.bounds==="ticks"&&_setMinAndMaxByKey(r,this,"value"),e.reverse?(r.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),r}getLabelForValue(e){return e===void 0?"0":formatNumber(e,this.chart.options.locale,this.options.ticks.format)}configure(){const e=this.min;super.configure(),this._startValue=log10(e),this._valueRange=log10(this.max)-log10(e)}getPixelForValue(e){return(e===void 0||e===0)&&(e=this.min),e===null||isNaN(e)?NaN:this.getPixelForDecimal(e===this.min?0:(log10(e)-this._startValue)/this._valueRange)}getValueForPixel(e){const n=this.getDecimalForPixel(e);return Math.pow(10,this._startValue+n*this._valueRange)}}function getTickBackdropHeight(t){const e=t.ticks;if(e.display&&t.display){const n=toPadding(e.backdropPadding);return valueOrDefault(e.font&&e.font.size,defaults.font.size)+n.height}return 0}function measureLabelSize(t,e,n){return n=isArray(n)?n:[n],{w:_longestText(t,e.string,n),h:n.length*e.lineHeight}}function determineLimits(t,e,n,r,s){return t===r||t===s?{start:e-n/2,end:e+n/2}:ts?{start:e-n,end:e}:{start:e,end:e+n}}function fitWithPointLabels(t){const e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},n=Object.assign({},e),r=[],s=[],i=t._pointLabels.length,a=t.options.pointLabels,u=a.centerPointLabels?PI/i:0;for(let d=0;de.r&&(u=(r.end-e.r)/i,t.r=Math.max(t.r,e.r+u)),s.starte.b&&(d=(s.end-e.b)/a,t.b=Math.max(t.b,e.b+d))}function createPointLabelItem(t,e,n){const r=t.drawingArea,{extra:s,additionalAngle:i,padding:a,size:u}=n,d=t.getPointPosition(e,r+s+a,i),o=Math.round(toDegrees(_normalizeAngle(d.angle+HALF_PI))),l=yForAngle(d.y,u.h,o),c=getTextAlignForAngle(o),h=leftForTextAlign(d.x,u.w,c);return{visible:!0,x:d.x,y:l,textAlign:c,left:h,top:l,right:h+u.w,bottom:l+u.h}}function isNotOverlapped(t,e){if(!e)return!0;const{left:n,top:r,right:s,bottom:i}=t;return!(_isPointInArea({x:n,y:r},e)||_isPointInArea({x:n,y:i},e)||_isPointInArea({x:s,y:r},e)||_isPointInArea({x:s,y:i},e))}function buildPointLabelItems(t,e,n){const r=[],s=t._pointLabels.length,i=t.options,{centerPointLabels:a,display:u}=i.pointLabels,d={extra:getTickBackdropHeight(i)/2,additionalAngle:a?PI/s:0};let o;for(let l=0;l270||n<90)&&(t-=e),t}function drawPointLabelBox(t,e,n){const{left:r,top:s,right:i,bottom:a}=n,{backdropColor:u}=e;if(!isNullOrUndef(u)){const d=toTRBLCorners(e.borderRadius),o=toPadding(e.backdropPadding);t.fillStyle=u;const l=r-o.left,c=s-o.top,h=i-r+o.width,f=a-s+o.height;Object.values(d).some(p=>p!==0)?(t.beginPath(),addRoundedRectPath(t,{x:l,y:c,w:h,h:f,radius:d}),t.fill()):t.fillRect(l,c,h,f)}}function drawPointLabels(t,e){const{ctx:n,options:{pointLabels:r}}=t;for(let s=e-1;s>=0;s--){const i=t._pointLabelItems[s];if(!i.visible)continue;const a=r.setContext(t.getPointLabelContext(s));drawPointLabelBox(n,a,i);const u=toFont(a.font),{x:d,y:o,textAlign:l}=i;renderText(n,t._pointLabels[s],d,o+u.lineHeight/2,u,{color:a.color,textAlign:l,textBaseline:"middle"})}}function pathRadiusLine(t,e,n,r){const{ctx:s}=t;if(n)s.arc(t.xCenter,t.yCenter,e,0,TAU);else{let i=t.getPointPosition(0,e);s.moveTo(i.x,i.y);for(let a=1;a{const s=callback(this.options.pointLabels.callback,[n,r],this);return s||s===0?s:""}).filter((n,r)=>this.chart.getDataVisibility(r))}fit(){const e=this.options;e.display&&e.pointLabels.display?fitWithPointLabels(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(e,n,r,s){this.xCenter+=Math.floor((e-n)/2),this.yCenter+=Math.floor((r-s)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(e,n,r,s))}getIndexAngle(e){const n=TAU/(this._pointLabels.length||1),r=this.options.startAngle||0;return _normalizeAngle(e*n+toRadians(r))}getDistanceFromCenterForValue(e){if(isNullOrUndef(e))return NaN;const n=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-e)*n:(e-this.min)*n}getValueForDistanceFromCenter(e){if(isNullOrUndef(e))return NaN;const n=e/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-n:this.min+n}getPointLabelContext(e){const n=this._pointLabels||[];if(e>=0&&e{if(c!==0||c===0&&this.min<0){d=this.getDistanceFromCenterForValue(l.value);const h=this.getContext(c),f=s.setContext(h),p=i.setContext(h);drawRadiusLine(this,f,d,a,p)}}),r.display){for(e.save(),u=a-1;u>=0;u--){const l=r.setContext(this.getPointLabelContext(u)),{color:c,lineWidth:h}=l;!h||!c||(e.lineWidth=h,e.strokeStyle=c,e.setLineDash(l.borderDash),e.lineDashOffset=l.borderDashOffset,d=this.getDistanceFromCenterForValue(n.ticks.reverse?this.min:this.max),o=this.getPointPosition(u,d),e.beginPath(),e.moveTo(this.xCenter,this.yCenter),e.lineTo(o.x,o.y),e.stroke())}e.restore()}}drawBorder(){}drawLabels(){const e=this.ctx,n=this.options,r=n.ticks;if(!r.display)return;const s=this.getIndexAngle(0);let i,a;e.save(),e.translate(this.xCenter,this.yCenter),e.rotate(s),e.textAlign="center",e.textBaseline="middle",this.ticks.forEach((u,d)=>{if(d===0&&this.min>=0&&!n.reverse)return;const o=r.setContext(this.getContext(d)),l=toFont(o.font);if(i=this.getDistanceFromCenterForValue(this.ticks[d].value),o.showLabelBackdrop){e.font=l.string,a=e.measureText(u.label).width,e.fillStyle=o.backdropColor;const c=toPadding(o.backdropPadding);e.fillRect(-a/2-c.left,-i-l.size/2-c.top,a+c.width,l.size+c.height)}renderText(e,u.label,0,-i,l,{color:o.color,strokeColor:o.textStrokeColor,strokeWidth:o.textStrokeWidth})}),e.restore()}drawTitle(){}}const INTERVALS={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},UNITS=Object.keys(INTERVALS);function sorter(t,e){return t-e}function parse(t,e){if(isNullOrUndef(e))return null;const n=t._adapter,{parser:r,round:s,isoWeekday:i}=t._parseOpts;let a=e;return typeof r=="function"&&(a=r(a)),isNumberFinite(a)||(a=typeof r=="string"?n.parse(a,r):n.parse(a)),a===null?null:(s&&(a=s==="week"&&(isNumber(i)||i===!0)?n.startOf(a,"isoWeek",i):n.startOf(a,s)),+a)}function determineUnitForAutoTicks(t,e,n,r){const s=UNITS.length;for(let i=UNITS.indexOf(t);i=UNITS.indexOf(n);i--){const a=UNITS[i];if(INTERVALS[a].common&&t._adapter.diff(s,r,a)>=e-1)return a}return UNITS[n?UNITS.indexOf(n):0]}function determineMajorUnit(t){for(let e=UNITS.indexOf(t)+1,n=UNITS.length;e=e?n[r]:n[s];t[i]=!0}}function setMajorTicks(t,e,n,r){const s=t._adapter,i=+s.startOf(e[0].value,r),a=e[e.length-1].value;let u,d;for(u=i;u<=a;u=+s.add(u,1,r))d=n[u],d>=0&&(e[d].major=!0);return e}function ticksFromTimestamps(t,e,n){const r=[],s={},i=e.length;let a,u;for(a=0;a+e.value))}initOffsets(e=[]){let n=0,r=0,s,i;this.options.offset&&e.length&&(s=this.getDecimalForValue(e[0]),e.length===1?n=1-s:n=(this.getDecimalForValue(e[1])-s)/2,i=this.getDecimalForValue(e[e.length-1]),e.length===1?r=i:r=(i-this.getDecimalForValue(e[e.length-2]))/2);const a=e.length<3?.5:.25;n=_limitValue(n,0,a),r=_limitValue(r,0,a),this._offsets={start:n,end:r,factor:1/(n+1+r)}}_generate(){const e=this._adapter,n=this.min,r=this.max,s=this.options,i=s.time,a=i.unit||determineUnitForAutoTicks(i.minUnit,n,r,this._getLabelCapacity(n)),u=valueOrDefault(s.ticks.stepSize,1),d=a==="week"?i.isoWeekday:!1,o=isNumber(d)||d===!0,l={};let c=n,h,f;if(o&&(c=+e.startOf(c,"isoWeek",d)),c=+e.startOf(c,o?"day":a),e.diff(r,n,a)>1e5*u)throw new Error(n+" and "+r+" are too far apart with stepSize of "+u+" "+a);const p=s.ticks.source==="data"&&this.getDataTimestamps();for(h=c,f=0;h+g)}getLabelForValue(e){const n=this._adapter,r=this.options.time;return r.tooltipFormat?n.format(e,r.tooltipFormat):n.format(e,r.displayFormats.datetime)}format(e,n){const s=this.options.time.displayFormats,i=this._unit,a=n||s[i];return this._adapter.format(e,a)}_tickFormatFunction(e,n,r,s){const i=this.options,a=i.ticks.callback;if(a)return callback(a,[e,n,r],this);const u=i.time.displayFormats,d=this._unit,o=this._majorUnit,l=d&&u[d],c=o&&u[o],h=r[n],f=o&&c&&h&&h.major;return this._adapter.format(e,s||(f?c:l))}generateTickLabels(e){let n,r,s;for(n=0,r=e.length;n0?u:1}getDataTimestamps(){let e=this._cache.data||[],n,r;if(e.length)return e;const s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(n=0,r=s.length;n=t[r].pos&&e<=t[s].pos&&({lo:r,hi:s}=_lookupByKey(t,"pos",e)),{pos:i,time:u}=t[r],{pos:a,time:d}=t[s]):(e>=t[r].time&&e<=t[s].time&&({lo:r,hi:s}=_lookupByKey(t,"time",e)),{time:i,pos:u}=t[r],{time:a,pos:d}=t[s]);const o=a-i;return o?u+(d-u)*(e-i)/o:u}class TimeSeriesScale extends TimeScale{static id="timeseries";static defaults=TimeScale.defaults;constructor(e){super(e),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const e=this._getTimestampsForTable(),n=this._table=this.buildLookupTable(e);this._minPos=interpolate(n,this.min),this._tableRange=interpolate(n,this.max)-this._minPos,super.initOffsets(e)}buildLookupTable(e){const{min:n,max:r}=this,s=[],i=[];let a,u,d,o,l;for(a=0,u=e.length;a=n&&o<=r&&s.push(o);if(s.length<2)return[{time:n,pos:0},{time:r,pos:1}];for(a=0,u=s.length;as-i)}_getTimestampsForTable(){let e=this._cache.all||[];if(e.length)return e;const n=this.getDataTimestamps(),r=this.getLabelTimestamps();return n.length&&r.length?e=this.normalize(n.concat(r)):e=n.length?n:r,e=this._cache.all=e,e}getDecimalForValue(e){return(interpolate(this._table,e)-this._minPos)/this._tableRange}getValueForPixel(e){const n=this._offsets,r=this.getDecimalForPixel(e)/n.factor-n.end;return interpolate(this._table,r*this._tableRange+this._minPos,!0)}}var scales=Object.freeze({__proto__:null,CategoryScale,LinearScale,LogarithmicScale,RadialLinearScale,TimeScale,TimeSeriesScale});const registerables=[controllers,elements,plugins,scales];Chart.register(...registerables);if(!navigator.gpu){const t="WebGPU is not supported by this browser.";throw alert(t),Error(t)}env.backends.onnx.wasm.proxy=!0;env.backends.onnx.wasm.wasmPaths=location.origin+"/";env.backends.onnx.wasm.numThreads=1;env.experimental.useWebGPU=!0;const ctx=document.getElementById("chart"),batchSizes=document.getElementById("batch-sizes"),xscale=document.getElementById("x-scale"),yscale=document.getElementById("y-scale"),sequenceLength=document.getElementById("sequence-length"),status=document.getElementById("status"),start=document.getElementById("start"),stop=document.getElementById("stop"),QUANTIZED=!1,NUM_WARMUP_STEPS=3,MODEL_ID="Xenova/all-MiniLM-L6-v2",config={type:"line",data:{labels:[],datasets:[{label:"WASM",data:[],borderColor:"red",backgroundColor:"rgba(255, 0, 0, 0.5)"},{label:"WebGPU",data:[],borderColor:"blue",backgroundColor:"rgba(0, 0, 255, 0.5)"}]},options:{responsive:!0,maintainAspectRatio:!1,plugins:{legend:{position:"top"}},scales:{x:{title:{display:!0,text:"Batch size"},min:1},y:{title:{display:!0,text:"Time (ms)"}}}}},toggleScale=(t,e,n)=>{t.options.scales[e].type=n?"logarithmic":"linear",t.update()};xscale.addEventListener("change",()=>toggleScale(chart,"x",xscale.checked));yscale.addEventListener("change",()=>toggleScale(chart,"y",yscale.checked));const chart=new Chart(ctx,config);status.textContent="Loading model...";let model_CPU;try{model_CPU=await AutoModel.from_pretrained(MODEL_ID,{quantized:QUANTIZED,session_options:{executionProviders:["wasm"]}})}catch(t){throw status.textContent=t.message,alert(t.message),t}let model_GPU;try{model_GPU=await AutoModel.from_pretrained(MODEL_ID,{quantized:QUANTIZED,session_options:{executionProviders:["webgpu"]}})}catch(t){throw status.textContent=t.message,alert(t.message),t}status.textContent="Ready";let interrupted=!1;start.addEventListener("click",async()=>{start.disabled=!0,stop.disabled=!1,interrupted=!1,chart.data.labels=[];for(let a=0;a{const u=ones([a,t]);return{input_ids:u,attention_mask:u}};for(let a=0;aparseInt(a)).filter(a=>a);for(const a of n){if(interrupted)break;const u=e(a);let d;{const l=performance.now();await model_CPU(u),d=performance.now()-l}let o;{const l=performance.now();await model_GPU(u),o=performance.now()-l}chart.data.labels.push(a),chart.data.datasets[0].data.push(d),chart.data.datasets[1].data.push(o),chart.update()}const r=generateResultsTable(chart.data,t),i=new URLSearchParams({title:"Transformers.js - WebGPU Benchmark Results",description:r.outerHTML}).toString();status.innerHTML=`Done! Share results`,start.disabled=!1});start.disabled=!1;stop.addEventListener("click",()=>{status.textContent="Stopping...",interrupted=!0,stop.disabled=!0});function generateResultsTable(t,e){const n=t.datasets.map(c=>c.data),r=t.labels,s=document.createElement("div"),i=document.createElement("table"),a=i.createTHead(),u=i.createTBody(),d=a.insertRow();d.insertCell().textContent="Batch Size",d.insertCell().textContent="WASM (ms)",d.insertCell().textContent="WebGPU (ms)",r.forEach((c,h)=>{const f=u.insertRow();f.insertCell().textContent=c,n.forEach(p=>{f.insertCell().textContent=p[h].toFixed(2)})}),s.appendChild(i);const o=c=>{const h=document.createElement("li");return h.textContent=c,h},l=document.createElement("ul");return l.appendChild(o(`Model: ${MODEL_ID}`)),l.appendChild(o(`Quantized: ${QUANTIZED}`)),l.appendChild(o(`Sequence length: ${e}`)),l.appendChild(o(`Browser: ${navigator.userAgent}`)),s.appendChild(l),s} +function __vite__mapDeps(indexes) { + if (!__vite__mapDeps.viteFileDeps) { + __vite__mapDeps.viteFileDeps = [] + } + return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) +}