framefields 2.9.0 → 2.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/check-worker.mjs +2 -2
- package/dist/components/index.d.mts +2 -2
- package/dist/components/index.mjs +2 -2
- package/dist/effects/index.d.mts +1 -1
- package/dist/effects/index.mjs +1 -1
- package/dist/{index-CZjrnylh.d.mts → index-Bnh42ouE.d.mts} +657 -636
- package/dist/index-Bnh42ouE.d.mts.map +1 -0
- package/dist/index-CFoAmh7q.d.mts.map +1 -1
- package/dist/{index-Du5YgdzM.d.mts → index-CQ-bbZk3.d.mts} +16 -3
- package/dist/index-CQ-bbZk3.d.mts.map +1 -0
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +4 -4
- package/dist/preview/index.mjs +1 -1
- package/dist/{preview-BQVgn6Ho.mjs → preview-DvP8AZuV.mjs} +2 -2
- package/dist/{preview-BQVgn6Ho.mjs.map → preview-DvP8AZuV.mjs.map} +1 -1
- package/dist/preview-engine/{chunk-GEUUXTDL.mjs → chunk-D73ZKPFN.mjs} +4 -4
- package/dist/preview-engine/{chunk-UQKPDGEH.mjs → chunk-EJJITH6U.mjs} +1 -1
- package/dist/preview-engine/{chunk-374QY63R.mjs → chunk-KXLXP66K.mjs} +3 -3
- package/dist/preview-engine/chunk-XYGDTPO7.mjs +39 -0
- package/dist/preview-engine/components.mjs +1 -1
- package/dist/preview-engine/effects.mjs +1 -1
- package/dist/preview-engine/framefields.mjs +1 -1
- package/dist/preview-engine/player.mjs +1 -1
- package/dist/preview-engine/{renderers-O55BEDQZ.mjs → renderers-MDHPQY6D.mjs} +1 -1
- package/dist/preview-engine/src-4IUYUKIZ.mjs +8 -0
- package/dist/renderer/index.mjs +1 -1
- package/dist/{renderer-B0piZg9r.mjs → renderer-B2P1vgb7.mjs} +41 -22
- package/dist/renderer-B2P1vgb7.mjs.map +1 -0
- package/dist/renderer-D5bjOx83.mjs +3 -0
- package/dist/{renderer-DsEyjwfT.mjs → renderer-DPAD6fL1.mjs} +2 -2
- package/dist/{renderer-DsEyjwfT.mjs.map → renderer-DPAD6fL1.mjs.map} +1 -1
- package/dist/{src-CK5rGVbh.mjs → src-DFEqficI.mjs} +72 -24
- package/dist/src-DFEqficI.mjs.map +1 -0
- package/package.json +59 -59
- package/dist/index-CZjrnylh.d.mts.map +0 -1
- package/dist/index-Du5YgdzM.d.mts.map +0 -1
- package/dist/preview-engine/chunk-CCB3VTY2.mjs +0 -39
- package/dist/preview-engine/src-NGVAJYHC.mjs +0 -8
- package/dist/renderer-B0piZg9r.mjs.map +0 -1
- package/dist/renderer-COR66Sby.mjs +0 -3
- package/dist/src-CK5rGVbh.mjs.map +0 -1
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import{W as be,Z as ye,ba as xe,ea as ve,fa as Te,ga as Me,ha as Ue,ka as we}from"./chunk-GEUUXTDL.mjs";import{q as ke}from"./chunk-BXPM5SJ3.mjs";import{g as he}from"./chunk-KOVN277Z.mjs";import{g as S}from"./chunk-Y4NIR77Z.mjs";S();S();S();var ne=new Uint8Array(0),Pe=new Uint32Array(0);function Ce(t,e,n){ne.length<t.length&&(ne=new Uint8Array(t.length),Pe=new Uint32Array(t.length));let r=ne,a=Pe,i=0,s=0;for(let u=1;u<=t.length;u++)(u===t.length||t[u]!==t[s])&&(r[i]=t[s],a[i]=u-s,i++,s=u);return{width:e,height:n,values:r.slice(0,i),lengths:a.slice(0,i)}}function Ve(t){let e=new Uint8Array(t.width*t.height),n=0;for(let r=0;r<t.values.length;r++){let a=n+t.lengths[r];t.values[r]!==0&&e.fill(t.values[r],n,a),n=a}return e}function Re(t){return t.values.byteLength+t.lengths.byteLength}function ie(t){let{mask:e,...n}=t;return{...n,rle:Ce(e,t.width,t.height)}}function oe(t){let{rle:e,...n}=t;return{...n,mask:Ve(e)}}function re(t){let e=512+t.detections.length*128+t.objects.length*256;for(let n of t.masks??[])e+=Re(n.rle);return t.subject&&(e+=Re(t.subject.mask.rle)),e}var L=class{constructor(e=256*1024*1024){this.maxBytes=e}maxBytes;entries=new Map;bytes=0;get(e,n){let r=`${e}#${n}`,a=this.entries.get(r);return a&&(this.entries.delete(r),this.entries.set(r,a)),a}set(e,n,r){let a=`${e}#${n}`,i=this.entries.get(a);i&&(this.bytes-=re(i),this.entries.delete(a)),this.entries.set(a,r),this.bytes+=re(r);for(let[s,u]of this.entries){if(this.bytes<=this.maxBytes)break;this.entries.delete(s),this.bytes-=re(u)}}clear(){this.entries.clear(),this.bytes=0}get size(){return this.entries.size}};S();var Be=`
|
|
2
|
-
struct Params {
|
|
3
|
-
mode: u32, // 0 matte, 1 mask, 2 crop
|
|
4
|
-
_pad: u32,
|
|
5
|
-
cropMin: vec2<f32>, // uv of the subject bounds (crop)
|
|
6
|
-
cropMax: vec2<f32>,
|
|
7
|
-
_pad2: vec2<f32>,
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
@group(0) @binding(0) var<uniform> params: Params;
|
|
11
|
-
@group(0) @binding(1) var picture: texture_2d<f32>;
|
|
12
|
-
@group(0) @binding(2) var mask: texture_2d<f32>;
|
|
13
|
-
@group(0) @binding(3) var samp: sampler;
|
|
14
|
-
|
|
15
|
-
struct VSOut {
|
|
16
|
-
@builtin(position) pos: vec4<f32>,
|
|
17
|
-
@location(0) uv: vec2<f32>,
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
@vertex fn vs(@builtin(vertex_index) i: u32) -> VSOut {
|
|
21
|
-
var p = array<vec2<f32>, 3>(vec2(-1.0, -1.0), vec2(3.0, -1.0), vec2(-1.0, 3.0));
|
|
22
|
-
var out: VSOut;
|
|
23
|
-
out.pos = vec4(p[i], 0.0, 1.0);
|
|
24
|
-
out.uv = vec2(p[i].x * 0.5 + 0.5, 0.5 - p[i].y * 0.5);
|
|
25
|
-
return out;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
@fragment fn fs(in: VSOut) -> @location(0) vec4<f32> {
|
|
29
|
-
var uv = in.uv;
|
|
30
|
-
if (params.mode == 2u) {
|
|
31
|
-
uv = mix(params.cropMin, params.cropMax, uv);
|
|
32
|
-
}
|
|
33
|
-
let m = textureSampleLevel(mask, samp, uv, 0.0).r;
|
|
34
|
-
if (params.mode == 1u) {
|
|
35
|
-
return vec4(m, m, m, 1.0);
|
|
36
|
-
}
|
|
37
|
-
return textureSampleLevel(picture, samp, uv, 0.0) * m;
|
|
38
|
-
}
|
|
39
|
-
`,$=class{constructor(e,n){this.device=e;let r=e.createShaderModule({label:"vision_matte_composite",code:Be});this.pipeline=e.createRenderPipeline({label:"vision_matte_composite",layout:"auto",vertex:{module:r,entryPoint:"vs"},fragment:{module:r,entryPoint:"fs",targets:[{format:n}]},primitive:{topology:"triangle-list"}}),this.sampler=e.createSampler({magFilter:"linear",minFilter:"linear"})}device;pipeline;sampler;uniforms=[];uniformIndex=0;masks=new Map;uploadMask(e,n,r,a){let i=this.masks.get(e);(!i||i.width!==r||i.height!==a)&&(i?.destroy(),i=this.device.createTexture({label:`vision_mask_${e}`,size:[r,a],format:"r8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST}),this.masks.set(e,i));let s=Math.ceil(r/256)*256,u=n;if(s!==r){u=new Uint8Array(s*a);for(let f=0;f<a;f++)u.set(n.subarray(f*r,(f+1)*r),f*s)}return this.device.queue.writeTexture({texture:i},u.buffer,{offset:u.byteOffset,bytesPerRow:s,rowsPerImage:a},{width:r,height:a}),i}draw(e,n,r,a,i,s){let u=a.width,f=a.height,c=new Float32Array(8),g=new Uint32Array(c.buffer);g[0]=i==="matte"?0:i==="mask"?1:2,i==="crop"&&s?(c[2]=s.x0/u,c[3]=s.y0/f,c[4]=(s.x1+1)/u,c[5]=(s.y1+1)/f):(c[2]=0,c[3]=0,c[4]=1,c[5]=1,i==="crop"&&(g[0]=0)),this.uniformIndex>=this.uniforms.length&&this.uniforms.push(this.device.createBuffer({size:c.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}));let o=this.uniforms[this.uniformIndex];this.uniformIndex=(this.uniformIndex+1)%16,this.device.queue.writeBuffer(o,0,c);let p=this.device.createBindGroup({layout:this.pipeline.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:o}},{binding:1,resource:r.createView()},{binding:2,resource:a.createView()},{binding:3,resource:this.sampler}]}),y=e.beginRenderPass({label:"vision_matte_composite",colorAttachments:[{view:n,loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});y.setPipeline(this.pipeline),y.setBindGroup(0,p),y.draw(3),y.end()}};var F=new Map,Fe=4,ae=null,z=null,Ge=null,Ie=new L,je=new Map,De=new Map,Ee=new Map,Ne=new Map,Se=new Map,ce=new WeakMap,_=new Map,D=new Map,Ye=3;function ue(t,e,n,r,a,i){let s=t.get(n);return(!s||s.width!==r.width||s.height!==r.height||s.format!==r.format)&&(s?.destroy(),s=e.createTexture({size:[r.width,r.height],format:r.format,usage:a,label:i}),t.set(n,s)),s}var Xe=(t,e,n)=>ue(De,t,e,n,GPUTextureUsage.COPY_DST|GPUTextureUsage.TEXTURE_BINDING,"vision_held_frame"),Le=(t,e,n)=>ue(Ee,t,e,n,GPUTextureUsage.COPY_DST|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC,"vision_analysis_frame"),$e=(t,e,n)=>ue(Ne,t,e,n,GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC,"vision_matte");function ze(t,e,n,r,a){let i=e;return JSON.stringify([t,i?.operation?.id??i?.id??null,r,a,n.mode??"passthrough",n.variant,n.confidence,n.classes,n.maskThreshold,n.featherRadius,n.matteSource,n.keyBackground===!0,n.maxMissedFrames])}function Ke(t,e,n){let r=t.backgroundKeyThreshold;return typeof r=="number"?r:typeof r?.get=="function"?Number(r.get({frame:e,fps:n})):typeof r?._value=="number"?Number(r._value):70}function We(t,e,n){if(t)return D.set(e,{mask:t,frame:n}),t;let r=D.get(e);if(r&&n-r.frame<=Ye)return r.mask}function _e(t){let e={variant:t.variant,modelsDir:t.modelsDir,baseUrl:t.baseUrl},n=JSON.stringify(e),r=F.get(n);if(!r){if(F.size>=Fe){let[u,f]=F.entries().next().value;f.runner.close(),F.delete(u)}r={runner:ve.create(e),derived:new Map},F.set(n,r)}let a={confidence:t.confidence,classes:t.classes,maskThreshold:t.maskThreshold,featherRadius:t.featherRadius},i=JSON.stringify(a),s=r.derived.get(i);return s||(s=r.runner.derive(a),r.derived.set(i,s)),s}function qe(t,e){let n=Se.get(t);return n||(n=new be({maxMissedFrames:e.maxMissedFrames??15}),Se.set(t,n)),n}function He(t,e,n){return e<=0||n<=0?t:{people:t.people.map(r=>({...r,keypoints:r.keypoints.map(a=>({x:a.x/e,y:a.y/n,visibility:a.visibility}))}))}}function Je(t,e){if(!e)return!0;let n=t.toLowerCase();return e.some(r=>r.toLowerCase()===n)}function Qe(t,e){return t.map(n=>{let{cx:r,cy:a}=nt(n),i=null;for(let s of e){let u=s.centerX-r,f=s.centerY-a,c=u*u+f*f;(!i||c<i.distance)&&(i={trackId:s.trackId,distance:c})}return i?{...n,trackId:i.trackId}:n})}function Ze(t,e,n){let r=e*n,a=new Uint8Array(r),i=new Int32Array(r),s=0,u=c=>{a[c]||t[c]>0||(a[c]=1,i[s++]=c)};for(let c=0;c<e;c++)u(c),u((n-1)*e+c);for(let c=0;c<n;c++)u(c*e),u(c*e+e-1);let f=0;for(;f<s;){let c=i[f++],g=c%e,o=c+1;g+1<e&&!a[o]&&t[o]===0&&(a[o]=1,i[s++]=o),o=c-1,g>0&&!a[o]&&t[o]===0&&(a[o]=1,i[s++]=o),o=c+e,o<r&&!a[o]&&t[o]===0&&(a[o]=1,i[s++]=o),o=c-e,o>=0&&!a[o]&&t[o]===0&&(a[o]=1,i[s++]=o)}for(let c=0;c<r;c++)t[c]===0&&a[c]===0&&(t[c]=255)}function et(t,e,n,r=2){if(r<=0)return t;let a=new Uint8Array(e*n),i=new Uint8Array(e*n),s=2*r+1;for(let f=0;f<n;f++){let c=f*e,g=0;for(let o=-r;o<=r;o++){let p=Math.max(0,Math.min(e-1,o));g+=t[c+p]}for(let o=0;o<e;o++){a[c+o]=Math.round(g/s);let p=Math.max(0,o-r),y=Math.min(e-1,o+r+1);g+=t[c+y]-t[c+p]}}let u=new Float64Array(e);for(let f=-r;f<=r;f++){let c=Math.max(0,Math.min(n-1,f))*e;for(let g=0;g<e;g++)u[g]+=a[c+g]}for(let f=0;f<n;f++){let c=f*e,g=Math.max(0,f-r)*e,o=Math.min(n-1,f+r+1)*e;for(let p=0;p<e;p++)i[c+p]=Math.round(u[p]/s),u[p]+=a[o+p]-a[g+p]}return i}function tt(t,e,n,r,a,i){let s=0,u=0,f=0,c=0,g=(d,U)=>{let l=U*e+d;if(t[l])return;let V=l*4;s+=r[V],u+=r[V+1],f+=r[V+2],c++};for(let d=0;d<e;d+=4)g(d,0),g(d,n-1);for(let d=0;d<n;d+=4)g(0,d),g(e-1,d);if(c===0)return t;s/=c,u/=c,f/=c;let o=e*n,p=new Uint8Array(o);for(let d=0,U=0;d<o;d++,U+=4)p[d]=Math.max(Math.abs(r[U]-s),Math.abs(r[U+1]-u),Math.abs(r[U+2]-f))>a?1:0;let y=new Int32Array(o),R=0;for(let d=0;d<o;d++)t[d]>0&&(p[d]&&(t[d]=255),y[R++]=d);let v=0;for(;v<R;){let d=y[v++],U=d%e,l=d+1;U+1<e&&t[l]!==255&&p[l]&&(t[l]=255,y[R++]=l),l=d-1,U>0&&t[l]!==255&&p[l]&&(t[l]=255,y[R++]=l),l=d+e,l<o&&t[l]!==255&&p[l]&&(t[l]=255,y[R++]=l),l=d-e,l>=0&&t[l]!==255&&p[l]&&(t[l]=255,y[R++]=l)}Ze(t,e,n);let O=i!==void 0&&i>0?Math.max(1,Math.min(8,Math.round(i*50))):2;return et(t,e,n,O)}function nt(t){let{mask:e,width:n,height:r}=t,a=0,i=0,s=0;for(let u=0;u<r;u++){let f=u*n;for(let c=0;c<n;c++)e[f+c]>0&&(a+=c,i+=u,s++)}return s===0?{cx:0,cy:0}:{cx:a/s,cy:i/s}}var Oe=async t=>{let{ctx:e,encoder:n,pass:r,targetView:a,targetWidth:i,targetHeight:s,props:u,drawChild:f}=t,{virtualMedia:c}=u;ke(e.device);let g=c?.operation;if(g?.op!=="Vision")return;let o=g;r.end();let p=c?.children?.[0];if(!p)return;let y=o.effect,R=y!=null,v=c?.id??g?.id??`${i}x${s}_${o.mode}_${o.variant}_${o.keyBackground}_${o.backgroundKeyThreshold}`,O=`vision-${v}`,d=R?ce.get(y):_.get(O);d&&(d.width!==i||d.height!==s)&&(d.destroy(),d=void 0,R?ce.delete(y):_.delete(O));let U=d!==void 0;if(!d&&(d=e.device.createTexture({size:[i,s],format:e.renderer.format,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC,label:"vision_child_persistent"}),R?ce.set(y,d):_.set(O,d),_.size>4)){let m=_.keys().next().value;m&&m!==O&&(_.get(m)?.destroy(),_.delete(m))}let l=u.frame??0,V=u.compositionFrame??l,E=u.fps??24,w=o.mode??"passthrough",I=w==="mask"||w==="matte"||w==="crop",M=o.visionBundle??c.visionBundle,K=o.enableDetection!==!1||w==="boxes"||w==="tracking",N=o.enableSegmentation===!0||I&&o.matteSource!=="selfie",W=o.enableMatte===!0||I&&o.matteSource==="selfie",q=o.enablePose===!0||w==="skeleton",de=I&&!M&&!q&&!W&&o.keyBackground!==!0?rt(y,u.sourceTimeSec===void 0?l:u.sourceTimeSec*E,E,i,s):void 0,Y=de!==void 0,H=!Y&&!W&&!q&&(K||N),le=H?ze(v,p,o,i,s):"",J=m=>o.keyBackground===!0?Ke(o,V-(l-m),E):void 0,fe=m=>{if(!H||m===void 0)return;let h=Ie.get(le,m);if(!(!h||h.keyThreshold!==J(m))&&!(N&&M&&!h.masks))return h},B=U?je.get(v):void 0,P=fe(l),me=Y||P!==void 0;P||(P=fe(B));let Q;I&&U&&!me&&(Q=Xe(e.device,v,d),n.copyTextureToTexture({texture:d},{texture:Q},[i,s,1]));let X,Z=null;if(U&&!P&&!Y){let m=Le(e.device,v,d),h=e.device.createCommandEncoder({label:"vision_analysis_copy"});h.copyTextureToTexture({texture:d},{texture:m},[i,s,1]),e.device.queue.submit([h.finish()]),X={texture:m,device:e.device,width:i,height:s},I&&o.keyBackground===!0&&(Z=(await ye(X)).data)}let ge=d.createView();e.renderer.beginFrame(n,ge,{r:0,g:0,b:0,a:0},i,s,"clear").end(),await f(p,{...u},ge,d,i,s),je.set(v,l);let j=[],A=[],ee,te,x;if(Y)x=de??void 0,x?D.set(v,{mask:x,frame:l}):D.delete(v);else if(P)j=P.objects,K&&M?.setObjectResult(l,{objects:P.objects,rawDetections:P.detections}),N&&M&&P.masks&&(A=P.masks.map(oe),M.setMaskResult(l,A)),P.subject&&(x=oe(P.subject.mask),D.set(v,{mask:x,frame:l}));else if(X){let m=_e(o),h=X,T=[];if(K){T=await m.detect(h);let k=qe(v,o);l===0&&k.reset(),j=k.update(T,l,E),M?.setObjectResult(l,{objects:j,rawDetections:T})}let G=[];if(N){let k=I&&o.matteSource!=="selfie"&&o.classes!==void 0,C=await(k?_e({...o,classes:void 0}):m).segment(h);A=Qe(k?C.masks.filter(Ae=>Je(Ae.category,o.classes)):C.masks,j),G=k?C.masks:A,M?.setMaskResult(l,A)}if(W&&(ee=await m.matte(h),M?.setMatteResult(l,ee)),q){let k=await m.pose(h),b=He(k,h.width,h.height);te={people:we(b.people,j)},M?.setPoseResult(l,te)}if(I){x=We(o.matteSource==="selfie"?st(ee):Ue(G.length>0?G:M?.getMaskResult(l)??[],{classes:o.classes}),v,l);let k=J(B??l);x&&k!==void 0&&Z&&(x={...x,mask:tt(x.mask,x.width,x.height,Z,k,o.featherRadius)})}H&&B!==void 0&&Ie.set(le,B,{detections:T,objects:j,masks:M?A.map(ie):null,subject:x?{mask:ie(x)}:null,keyThreshold:J(B)})}if(I){let m=me?d:Q;if(!x||!m){e.renderer.beginFrame(n,a,{r:0,g:0,b:0,a:0},i,s,"clear").end();return}(!z||Ge!==e.renderer.format)&&(z=new $(e.device,e.renderer.format),Ge=e.renderer.format);let h=z.uploadMask(v,x.mask,x.width,x.height),T=$e(e.device,v,d);z.draw(n,T.createView(),m,h,w,w==="crop"?Me(x)??void 0:void 0),M?.setStencilTexture(T);let G=e.renderer.beginFrame(n,a,{r:0,g:0,b:0,a:0},i,s,"clear");e.renderer.drawTexture(G,T,{x:0,y:0,width:i,height:s}),G.end();return}if(w==="skeleton"){ae||(ae=new xe(e.device));let h=(M?.getPoseResult(l)??te)?.people[0];if(h&&h.keypoints.length>0){let T=ae.renderToTexture(h.keypoints,{width:i,height:s}),G=e.renderer.beginFrame(n,a,{r:0,g:0,b:0,a:0},i,s,"clear");e.renderer.drawTexture(G,T,{x:0,y:0,width:i,height:s}),G.end();return}}if(w==="boxes"||w==="tracking"){let m=e.renderer.beginFrame(n,a,{r:0,g:0,b:0,a:0},i,s,"clear");e.renderer.drawTexture(m,d,{x:0,y:0,width:i,height:s});let h=j.length>0?j:M?.getObjectResult(l).objects??[];if(h.length>0){let T="#38bdf8";for(let k of h){if(!k.active)continue;let b=k.boundingBox;e.renderer.drawRect(m,{x:b.originX,y:b.originY,width:b.width,height:2},T),e.renderer.drawRect(m,{x:b.originX,y:b.originY+b.height-2,width:b.width,height:2},T),e.renderer.drawRect(m,{x:b.originX,y:b.originY,width:2,height:b.height},T),e.renderer.drawRect(m,{x:b.originX+b.width-2,y:b.originY,width:2,height:b.height},T);let C=Math.min(16,b.width/4,b.height/4);e.renderer.drawRect(m,{x:b.originX,y:b.originY,width:C,height:4},"#ffffff"),e.renderer.drawRect(m,{x:b.originX,y:b.originY,width:4,height:C},"#ffffff"),w==="tracking"&&e.renderer.drawRect(m,{x:k.centerX-3,y:k.centerY-3,width:6,height:6},"#ef4444",3)}}m.end();return}let pe=e.renderer.beginFrame(n,a,{r:0,g:0,b:0,a:0},i,s,"clear");e.renderer.drawTexture(pe,d,{x:0,y:0,width:i,height:s}),pe.end()};function rt(t,e,n,r,a){let i=t?.[Te],s=i?.subject(e,n);if(!s)return s;let u=s.width/s.height/(r/a);if(Math.abs(u-1)<.01)return s;if(i?.exact)throw new Error("A prompted clip matte requires the source aspect ratio. Apply layout cropping after the source matte.")}function st(t){if(!t||t.coverage<=0)return;let e=Math.round(t.coverage*t.width*t.height);return{category:"person",mask:t.mask,width:t.width,height:t.height,area:e,coverage:t.coverage,detectionIndex:-1}}var bt=he({WebGPURenderer:Oe});export{bt as a};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import{T as Ee,U as ze,Y as Q,da as ee}from"./chunk-GEUUXTDL.mjs";import"./chunk-BREZX5L5.mjs";import"./chunk-EAHJZDOJ.mjs";import"./chunk-CJ4CSVU3.mjs";import"./chunk-6ISHV73H.mjs";import{g as Fe,h as V,i as $e,j as Te,k as G,l as te,m as g,n as M,p as Ce,s as K}from"./chunk-BXPM5SJ3.mjs";import"./chunk-GH77FX2Y.mjs";import"./chunk-HOV6DDBZ.mjs";import{a as A}from"./chunk-6FULVULN.mjs";import"./chunk-RECQ74RP.mjs";import"./chunk-ULOFDFHJ.mjs";import"./chunk-VEDMJBJV.mjs";import"./chunk-QEWDIPJ7.mjs";import"./chunk-OGPJTUAL.mjs";import"./chunk-5RRKGN2U.mjs";import"./chunk-BDZ3TSOT.mjs";import{f as S,g as y}from"./chunk-Y4NIR77Z.mjs";y();y();var zt="https://github.com/facebookresearch/sam3/blob/main/LICENSE";function Ne(e="SAM 3",t){if(!t?.acceptLicense&&!(typeof S<"u"&&S.env?.FRAMEFIELDS_ACCEPT_SAM_LICENSE==="1"))throw new Error(`Meta SAM License agreement required for ${e}:
|
|
2
|
-
SAM 3's model weights are subject to Meta's SAM License.
|
|
3
|
-
Review terms at: ${zt}
|
|
4
|
-
To download and run SAM 3 in Framefields, you must explicitly accept the terms by:
|
|
5
|
-
1. Passing 'acceptLicense: true' (or 'acceptSamLicense: true' in ClipVision options), or
|
|
6
|
-
2. Setting the environment variable FRAMEFIELDS_ACCEPT_SAM_LICENSE=1.`)}y();var re={tiny:{repo:"diffusionstudio/sam2.1-tiny-video-onnx-fp16",revision:"66673b5db39371b7dd7847f4d3bc0d4f4179b79e",size:512,name:"Hiera Tiny"},small:{repo:"diffusionstudio/sam2.1-small-video-onnx-fp16",revision:"927ecec6e6ae2727d0af7720eefdb07f2efe4689",size:1024,name:"Hiera Small"}},Ue={webgpu:"fp16",cuda:"fp16",cpu:"q4"},Ie="Meta SAM License",je=(e,t,r)=>`https://huggingface.co/${e}/resolve/${t}/${r}`,E=(e,t,[r,s,n])=>{let{repo:o,revision:a,size:i,name:c}=re[e],l=`sam2.1-${e}-${t}`;return{key:l,family:"sam2",filename:`${l}${r.slice(r.lastIndexOf("."))}`,url:je(o,a,r),bytes:s,sha256:n,input:[i,i],source:`Meta SAM 2.1 ${c} (Apache-2.0), Diffusion Studio ${i}px fp16 video export`,license:"Apache-2.0"}},se=(e,t)=>(r,s,[n,o,a])=>({key:r,family:"sam3",filename:s,url:je(e,t,n),bytes:o,sha256:a,input:[1008,1008],source:`Meta SAM 3 (${Ie}), pinned ${e} ONNX export`,license:Ie}),Oe=se("onnx-community/sam3-tracker-ONNX","429305c8a5b3de597243d919a07e4e6bdcd00ef7");function fe(e,[t,r],[s,n]){let{graph:o,data:a}=be(e);return[Oe(`sam3-vision_encoder-${e}`,`sam3-${o}`,[`onnx/${o}`,t,r]),Oe(`sam3-vision_encoder-${e}-data`,`sam3-${a}`,[`onnx/${a}`,s,n])]}function be(e){let t=`vision_encoder_${e}.onnx`;return{graph:t,data:`${t}_data`}}var ye=se("jax-image-tools/sam3-video-onnx","e942689a73d942f83c69b5965881cb3a0f6153ba"),Re=se("RamRom/sam3-onnx","68ce2746e903966a88549cdd08ab554ff9162db0"),W=se("danilobukvic/sam3-text-onnx","fe8f8e123bfa42d4e57d14fa2f4928a4c60f4665"),De="bundles/sam3-base-video-tracking-ortcuda-v2/graphs/base_tracker_preview_single1.onnx",Ft=[E("tiny","constants",["constants.json",9781,"67583810f4b80b762285377a5cc1066bbe19cdf8ef7fc87ff6aa78fc79830ef2"]),E("tiny","vision_encoder",["onnx/vision_encoder.onnx",58385353,"24e9ccf5994be5c8dd93ebe771a4cc4f8bb122d0524555ac3ba4e7141710b133"]),E("tiny","mask_decoder",["onnx/mask_decoder.onnx",8898805,"6bc158b0d028777ca2e25203ece0f27429c436de39a5c7fe301b3858d6059789"]),E("tiny","memory_encoder",["onnx/memory_encoder.onnx",2807753,"8b2bb6810444cee684ef938b7464c5645653f236014f5497c3db3654818cc7ce"]),E("tiny","memory_attention",["onnx/memory_attention.onnx",13029470,"67c4e4da01bc7f501b88294bb19a8200362915ece04e9d7e367a437658f342c9"]),E("tiny","pointer_tpos",["onnx/pointer_tpos.onnx",34228,"3ab5bfce40ed01208301b2d8f596b9c9f7f493dcd7e09ef01ec22e5be3694bd7"]),E("small","constants",["constants.json",9820,"09397f7251c159b64a2d581cc3ea0dbb3cf720c2e60777cb14e244405ed1c305"]),E("small","vision_encoder",["onnx/vision_encoder.onnx",83679474,"fb570036f5afac59ef20848958b075c84da746e333efd863104d94604652efc4"]),E("small","mask_decoder",["onnx/mask_decoder.onnx",8910345,"999b3b47bf2e924d522ed6cc011fa2c9b651754cc07895eb0da16a28a5ce7c4d"]),E("small","memory_encoder",["onnx/memory_encoder.onnx",2807884,"f36324e383dbf21fcd549169aedf698db00c307fd9a49538c0e5f0aa168e4f99"]),E("small","memory_attention",["onnx/memory_attention.onnx",16175204,"6666be8ca502b5c16e9a113d3d3934996d32f27e93bee5e66a8317fcceec9985"]),E("small","pointer_tpos",["onnx/pointer_tpos.onnx",34228,"f9c1b36e0aa9dc6b7c05b02a8fdaa17cc671d967ffcacc14fcd3177e65ec25e9"]),...fe("fp16",[1263005,"f8c52be6de99124bb17f25792054406abc482ce3502166f948d5c5849cd14d02"],[934729728,"4b021a4d3068c9e9153f2f2fcc9e6d280156228671c00ab6c2ddfa737da7f151"]),...fe("q4f16",[1307816,"4b96732adab3d7d70ac0964ce540a61fad097fbc10c9b27612f47d676877cefc"],[295622656,"d1d60808376dbd48e34cf89feaee708c13abed229f2398ab512149db34fdab07"]),...fe("q4",[1320396,"b80cb1cb6ab80efe646ad49ffa11d398af76e8912eb966971932ef2d8e7fe11b"],[368954368,"be632cacb4a82ef8be28285e49821b9dd7f96e3231cb90df631890f367110555"]),ye("sam3-mask_decoder","sam3-mask_decoder.onnx",["mask_decoder.onnx",17809322,"4dff9a588828eeceba4285be85fb9c2a0306447ad642d02b1d8f6bfff1f19af9"]),ye("sam3-memory_encoder","sam3-memory_encoder.onnx",["memory_encoder.onnx",5587704,"78146118c2f91073489926bb587a81f129c391b2e0d1dba3aede6fbaa699498f"]),ye("sam3-memory_attention","sam3-memory_attention.onnx",["memory_attention.onnx",34592488,"8b24dc20acbb485b81f0e67ed0980b747aaa836707ccff4567a87e59c0ca1c24"]),Re("sam3-support","sam3-base_tracker_preview_single1.onnx",[De,3064674,"d80c1958175d5de6ca72f5b95d24d853dbdb511e0851d5918a4dcf7ed000f3ea"]),Re("sam3-support-data","sam3-base_tracker_preview_single1.onnx.data",[`${De}.data`,63668224,"618f62fbac368e863ee295526efd84ca768fb9914c7e1a5d9f1fb0f28837dda1"]),W("sam3-text-vision_encoder","sam3-vision_encoder_int4_fp16attn.onnx",["vision_encoder_int4_fp16attn.onnx",5216609,"9d148134938a6a284a829733774d3b1356a706a3397bb1d4be240bf041e3ac0e"]),W("sam3-text-vision_encoder-data","sam3-vision_encoder_int4_fp16attn.onnx.data",["vision_encoder_int4_fp16attn.onnx.data",292836352,"b89c9156064e926761f29be3f87b160fd34f4c93f1de46593295d155621829a2"]),W("sam3-text-encoder","sam3-text_encoder_int8.onnx",["text_encoder_int8.onnx",357021801,"c0baf8a4165ecc4039bee9389903723e74a68d617d685a4f1dbfc21c58bb4121"]),W("sam3-text-decoder","sam3-decoder_int8.onnx",["decoder_int8.onnx",26804694,"d721e7b643bb3ee2c48a59d520401c035c702cfbb13cb7f50fa103f0beb27af8"]),W("sam3-tokenizer","sam3-tokenizer.json",["tokenizer.json",3642073,"6d9109cc838977f3ca94a379eec36aecc7c807e1785cd729660ca2fc0171fb35"]),W("sam3-tokenizer-config","sam3-tokenizer_config.json",["tokenizer_config.json",799,"39670ad98457fe8f14ca59f6bb74591e9fc850974380a63993e5b8ffc865baa2"])];function ne(){for(let e of Ft)Ee[e.key]||ze(e)}y();var oe=class{constructor(t){this.temporal=t}temporal;seed;recent=[];remember(t,r){r?(this.seed=t,this.recent=[]):(this.recent.push(t),this.recent.length>15&&this.recent.shift())}assemble(t,r=16){if(!this.seed)throw new Error("SAM 2 must be prompted before propagation.");let s=[...this.recent].reverse(),n=[this.seed,...s.slice(0,6)];for(;n.length<7;)n.push(n[1]??this.seed);let o=[this.seed,...s].slice(0,16);for(;o.length<16;)o.push(o[o.length-1]);let a=this.seed.tokens.length,i=new Float32Array(a*7+16*256),c=new Float32Array(i.length);for(let[d,h]of n.entries()){i.set(h.tokens,d*a);let u=Math.min(d,this.recent.length),p=this.temporal[d===0||u===0?6:u-1];$t(c,d*a,h.positions,p)}let l=new Float32Array(16);for(let[d,h]of o.entries())i.set(h.pointer,a*7+d*256),l[d]=Math.abs(t-h.frame)/Math.max(1,Math.min(r,16)-1);return{memory:i,positions:c,distances:l}}};function H(e){let t=e.length/256,r=new Float32Array(e.length);for(let s=0;s<256;s++)for(let n=0;n<t;n++)r[n*256+s]=e[s*t+n]??0;return r}function $t(e,t,r,s){if(!s||s.length!==64)throw new Error("Invalid SAM 2 temporal encoding.");for(let n=0;n<r.length;n++)e[t+n]=(r[n]??0)+(s[n%64]??0)}y();y();function ie(e){if(e.length===0)throw new Error("SAM 2 requires at least one prompt.");let t=-1;for(let r of e){if(!Number.isSafeInteger(r.frame)||r.frame<=t)throw new Error("SAM 2 prompt frames must be nonnegative, unique and increasing.");if(t=r.frame,r.points.length===0)throw new Error("SAM 2 prompts need points or a box.");for(let n of r.points)Tt(n);let s=r.points.filter(n=>n.label>=2);if(s.length&&(s.length!==2||s[0]?.label!==2||s[1]?.label!==3||s[0].x>=s[1].x||s[0].y>=s[1].y))throw new Error("SAM 2 boxes need top-left (2) and bottom-right (3) corners.")}}function Tt(e){if(![0,1,2,3].includes(e.label)||!Number.isFinite(e.x)||!Number.isFinite(e.y)||e.x<0||e.x>1||e.y<0||e.y>1)throw new Error("SAM 2 points require normalized coordinates and labels 0, 1, 2 or 3.")}var Ct=A.object({image_size:A.number().int().positive().multipleOf(16),memory_frames:A.literal(7),image_mean:A.tuple([A.number(),A.number(),A.number()]),image_std:A.tuple([A.number().positive(),A.number().positive(),A.number().positive()]),memory_temporal_positional_encoding:A.array(A.array(A.number()).length(64)).length(7)}),Nt=["vision_encoder","mask_decoder","memory_encoder","memory_attention","pointer_tpos"];function $n(e="tiny"){return`sam2.1-${e}-${re[e].revision}`}function N(e,t){let r=e[t];if(!r||!(r.data instanceof Float32Array))throw new Error(`Missing SAM 2 float output: ${t}`);return r.data}function X(e,t){if(t.data instanceof BigInt64Array)throw new Error(`Unsupported SAM 2 input type: ${e}`);return{name:e,data:t.data,dims:t.dims}}function I(e,t,r){return{name:e,data:t,dims:r}}var Le=class e{constructor(t,r=16){this.constants=t;this.frameCount=r;this.bank=new oe(t.memory_temporal_positional_encoding),this.size=t.image_size,this.tokens=(this.size/16)**2}constants;frameCount;sessions=new Map;bank;size;tokens;lastFrame=-1;released=!1;static async create(t={}){ne();let r=t.store??new ee(t),s=t.model??"tiny";if(!(s in re))throw new Error(`Unknown SAM 2.1 model "${s}"; use "tiny" or "small".`);let n=await r.ensure(`sam2.1-${s}-constants`),o=Ct.parse(JSON.parse(new TextDecoder().decode(n)));if(t.frameCount!==void 0&&(!Number.isSafeInteger(t.frameCount)||t.frameCount<1))throw new Error("SAM 2 frameCount must be a positive integer.");let a=new e(o,t.frameCount),i=t.provider??K();try{for(let c of Nt){let l=await i.createSession(await r.ensure(`sam2.1-${s}-${c}`));a.sessions.set(c,l)}return a}catch(c){throw a.release(),c}}run(t,r){let s=this.sessions.get(t);if(!s)throw new Error("SAM 2 tracker has been released.");if(s.runMany)return s.runMany(r);if(r.length===1&&r[0])return s.run(r[0]);throw new Error("SAM 2 requires a session provider with runMany support.")}async process(t,r,s){if(this.released)throw new Error("SAM 2 tracker has been released.");if(!Number.isSafeInteger(r)||r<0||this.lastFrame>=0&&r!==this.lastFrame+1)throw new Error("SAM 2 propagation requires consecutive source frames.");if(s&&ie([{frame:r,points:s}]),this.lastFrame<0&&!s)throw new Error("SAM 2 needs a prompt on its first frame.");let{tensor:n}=Q(t,{width:this.size,height:this.size,fit:"stretch",channels:"rgb",padValue:0,mean:this.constants.image_mean.map(l=>l*255),std:this.constants.image_std.map(l=>l*255)}),o=await this.run("vision_encoder",[I("pixel_values",n,[1,3,this.size,this.size])]),a=s?o.feats2_no_mem:await this.condition(o,r);if(!a||!o.feats0||!o.feats1)throw new Error("Invalid SAM 2 vision outputs.");let i=s??[{x:0,y:0,label:-1}],c=await this.run("mask_decoder",[X("feats0",o.feats0),X("feats1",o.feats1),X("feats2_cond",a),I("input_points",Float32Array.from(i.flatMap(l=>[l.x*this.size,l.y*this.size])),[1,1,i.length,2]),I("input_labels",Int32Array.from(i.map(l=>l.label)),[1,1,i.length])]);return await this.remember(o,c,r,s!==void 0),this.lastFrame=r,It(N(c,"high_res_mask"),t.width,t.height,N(c,"object_score_logits")[0]??-1/0,N(c,"iou")[0]??0)}async condition(t,r){let s=this.bank.assemble(r,this.frameCount),n=await this.run("pointer_tpos",[I("normalized_diffs",s.distances,[16])]),o=N(n,"pointer_pos");for(let l=0;l<16;l++)for(let d=0;d<4;d++)s.positions.set(o.subarray(l*64,(l+1)*64),7*this.tokens*64+(l*4+d)*64);let a=7*this.tokens+64,c=(await this.run("memory_attention",[I("current_vision_features",H(N(t,"feats2")),[this.tokens,1,256]),I("current_vision_position_embeddings",H(N(t,"vision_pos_embed")),[this.tokens,1,256]),I("memory",s.memory,[a,1,64]),I("memory_pos",s.positions,[a,1,64])])).conditioned_feats;if(!c)throw new Error("Missing SAM 2 conditioned features.");return c}async remember(t,r,s,n){if(!t.feats2||!r.high_res_mask)throw new Error("Invalid SAM 2 memory inputs.");let o=await this.run("memory_encoder",[X("feats2",t.feats2),X("high_res_mask",r.high_res_mask),I("object_score_logits",N(r,"object_score_logits"),[1,1]),I("binarize",new Float32Array([n?1:0]),[])]);this.bank.remember({frame:s,tokens:N(o,"memory_tokens").slice(),positions:N(o,"memory_pos").slice(),pointer:N(r,"object_pointer").slice()},n)}release(){for(let t of this.sessions.values())t.release();this.sessions.clear(),this.released=!0}};function It(e,t,r,s,n){let o=Math.round(Math.sqrt(e.length));if(o*o!==e.length||o%16!==0)throw new Error("Invalid SAM 2 mask shape.");let a=o-1,i=new Uint8Array(t*r);if(s>0)for(let c=0;c<r;c++){let l=Math.max(0,Math.min(a,(c+.5)*o/r-.5)),d=Math.floor(l),h=Math.min(a,d+1),u=l-d;for(let p=0;p<t;p++){let f=Math.max(0,Math.min(a,(p+.5)*o/t-.5)),_=Math.floor(f),m=Math.min(a,_+1),b=f-_,w=(e[d*o+_]??0)*(1-b)+(e[d*o+m]??0)*b,P=(e[h*o+_]??0)*(1-b)+(e[h*o+m]??0)*b;i[c*t+p]=w*(1-u)+P*u>0?255:0}}return{mask:i,width:t,height:r,score:s,iou:n}}y();function O(e,t){return new Uint8Array([...te(e*8),...te(t)])}function F(e,t){return g(e,$e.encode(t))}function ae(e,t){return g(5,M([F(1,e),O(20,7),g(8,new Uint8Array(t.flatMap(te)))]))}function Ve(e,t){return g(5,M([F(1,e),O(3,t),O(20,2)]))}function Ot(e,t){let r=new Uint8Array(4);return new DataView(r.buffer).setFloat32(0,t,!0),g(5,M([F(1,e),new Uint8Array([21,...r]),O(20,1)]))}function z(e,t,r,s=[]){return g(1,M([...t.map(n=>F(1,n)),F(2,r),F(4,e),...s]))}function ge(e,t){let r=M(t.map(s=>g(1,O(1,s))));return M([F(1,e),g(2,g(1,M([O(1,1),g(2,r)])))])}function we(e,t){let r=new Float32Array([t]);return M([O(2,1),F(8,e),g(9,new Uint8Array(r.buffer))])}function Be(e,t,r,s){let n=M([...e,F(2,"framefields_sam3"),...s.map(o=>g(5,o)),...t.map(([o,a])=>g(11,ge(o,a))),...r.map(([o,a])=>g(12,ge(o,a)))]);return M([O(1,9),g(7,n),g(8,O(2,18))])}function Rt(e,t){let r=V(e).find(n=>n.number===7);if(!r)throw new Error("SAM 3 constants graph is missing.");let s=new Map;for(let n of V(r.body).filter(o=>o.number===5)){let o=V(n.body),a=G(n.body,8);if(!a||!/tracker\.(maskmem_tpos_enc|no_mem_embed|obj_ptr_tpos_proj|sam_prompt_encoder\.mask_downscaling)/.test(a))continue;let i=new Map(o.filter(m=>m.number===13).map(m=>[G(m.body,1),G(m.body,2)])),c=Number(i.get("offset")??0),l=Number(i.get("length")??0),d=o.find(m=>m.number===9)?.body??t.subarray(c,c+l),h=o.find(m=>m.number===2),u=h?Fe(h.raw,1)[0]:0;if(![1,10].includes(u))throw new Error(`Unsupported SAM 3 weight type: ${a}`);if(d.length===0||d.length%(u===10?2:4)!==0)throw new Error(`Invalid SAM 3 weight: ${a}`);let p=new DataView(d.buffer,d.byteOffset,d.byteLength),f=Float32Array.from({length:d.length/(u===10?2:4)},(m,b)=>{if(u===1)return p.getFloat32(b*4,!0);let w=p.getUint16(b*2,!0),P=w&32768?-1:1,j=w>>10&31,x=w&1023;if(j===31)throw new Error(`Non-finite SAM 3 weight ${a}`);return P*(j===0?x*2**-24:(1+x/1024)*2**(j-15))}),_=new Uint8Array(f.buffer);s.set(a,{proto:M([...o.filter(m=>![2,9,13,14].includes(m.number)).map(m=>m.raw),O(2,1),g(9,_)]),data:new Float32Array(_.buffer)})}return s}function We(e,t){let r=Rt(e,t),s=c=>{let l=r.get(`tracker.${c}`);if(!l)throw new Error(`Missing SAM 3 weight ${c}`);return l},n=[],o=[we("sqrt2",Math.SQRT2),we("one",1),we("half",.5)],a="mask";for(let[c,l]of[0,3,6].entries()){let d=`sam_prompt_encoder.mask_downscaling.${l}`;for(let p of["weight","bias"])o.push(s(`${d}.${p}`).proto);let h=`conv${c}`;if(n.push(z("Conv",[a,`tracker.${d}.weight`,`tracker.${d}.bias`],h,[ae("kernel_shape",l===6?[1,1]:[2,2]),ae("strides",l===6?[1,1]:[2,2])])),a=h,l===6)continue;let u=`sam_prompt_encoder.mask_downscaling.${l+1}`;for(let p of["weight","bias"])o.push(s(`${u}.${p}`).proto);n.push(z("Transpose",[a],`nhwc${c}`,[ae("perm",[0,2,3,1])]),z("LayerNormalization",[`nhwc${c}`,`tracker.${u}.weight`,`tracker.${u}.bias`],`norm${c}`,[Ve("axis",3),Ot("epsilon",1e-6)]),z("Transpose",[`norm${c}`],`nchw${c}`,[ae("perm",[0,3,1,2])]),z("Div",[`nchw${c}`,"sqrt2"],`div${c}`),z("Erf",[`div${c}`],`erf${c}`),z("Add",[`erf${c}`,"one"],`add${c}`),z("Mul",[`add${c}`,`nchw${c}`],`mul${c}`),z("Mul",[`mul${c}`,"half"],`gelu${c}`)),a=`gelu${c}`}n.push(z("Identity",[a],"dense_prompt"));let i=[s("obj_ptr_tpos_proj.weight").proto,s("obj_ptr_tpos_proj.bias").proto];return{densePrompt:Be(n,[["mask",[1,1,288,288]]],[["dense_prompt",[1,256,72,72]]],o),pointerPosition:Be([z("Gemm",["encoding","tracker.obj_ptr_tpos_proj.weight","tracker.obj_ptr_tpos_proj.bias"],"position",[Ve("transB",1)])],[["encoding",[16,256]]],[["position",[16,64]]],i),temporal:s("maskmem_tpos_enc").data,noMemory:s("no_mem_embed").data}}function qe(e){let t=V(e),r=t.find(o=>o.number===7);if(!r)throw new Error("Missing SAM 3 decoder graph.");let s=!1,n=V(r.body).map(o=>{if(o.number!==1||G(o.body,3)!=="/mask_decoder/Add")return o.raw;let a=Te(o.body,1);if(a[0]!=="feats2"||a[1]!=="/prompt_encoder/Expand_output_0")throw new Error("Unexpected SAM 3 dense prompt contract.");return s=!0,g(1,M(V(o.body).filter(i=>i.number!==1).map(i=>i.raw).concat([F(1,"feats2"),F(1,"dense_prompt")])))});if(!s)throw new Error("SAM 3 decoder has no prompt embedding input.");return n.push(g(11,ge("dense_prompt",[1,256,72,72]))),M(t.map(o=>o===r?g(7,M(n)):o.raw))}y();var ce=class{constructor(t){this.temporal=t}temporal;seed;recent=[];remember(t,r){r?(this.seed=t,this.recent=[]):(this.recent.push(t),this.recent.length>15&&this.recent.shift())}assemble(t,r){if(!this.seed)throw new Error("SAM 3 needs a prompt before propagation.");let s=[this.seed,...this.recent.slice(-6)],n=new Float32Array(s.length*5184*64),o=new Float32Array(n.length);for(let[l,d]of s.entries()){n.set(d.tokens,l*5184*64);let h=d===this.seed?6:Math.min(5,t-d.frame-1);for(let u=0;u<d.positions.length;u++)o[l*5184*64+u]=(d.positions[u]??0)+(this.temporal[h*64+u%64]??0)}let a=[this.seed,...[...this.recent].reverse()].slice(0,16),i=new Float32Array(a.length*256),c=new Float32Array(16*256);for(let[l,d]of a.entries()){i.set(d.pointer,l*256);let h=(t-d.frame)/Math.max(1,Math.min(r,16)-1);for(let u=0;u<128;u++){let p=h/1e4**(2*Math.floor(u/2)/128);c[l*256+u]=Math.sin(p),c[l*256+128+u]=Math.cos(p)}}return{spatial:n,positions:o,pointers:i,encoding:c,pointerCount:a.length}}};function Ge(){let e=new Float32Array(1327104);for(let t=0;t<72;t++)for(let r=0;r<72;r++)for(let s=0;s<128;s++){let n=1e4**(2*Math.floor(s/2)/128),o=(t+1)/(72+1e-6)*2*Math.PI/n,a=(r+1)/(72+1e-6)*2*Math.PI/n;e[(t*72+r)*256+s]=s%2?Math.cos(o):Math.sin(o),e[(t*72+r)*256+128+s]=s%2?Math.cos(a):Math.sin(a)}return e}y();y();var Dt=class{constructor(e){this.trie=this._build_trie(e)}_build_trie(e){let t=Object.create(null);for(let r of e){let s=t;for(let n=0;n<r.length;++n){let o=r[n];s=s[o]??=Object.create(null)}s.end=r}return t}split(e){let t=[],r=e.length,s=0,n=0;for(;n<r;){let o=this.trie,a=null,i=n;for(;i<r&&(o=o[e[i]]);)o.end&&(a=o.end),++i;a?(n>s&&t.push(e.slice(s,n)),t.push(a),n+=a.length,s=n):++n}return s<r&&t.push(e.slice(s)),t}},Ke=Dt,Ut=class{constructor(e){this.content=e.content,this.id=e.id,this.single_word=e.single_word??!1,this.lstrip=e.lstrip??!1,this.rstrip=e.rstrip??!1,this.special=e.special??!1,this.normalized=e.normalized??!this.special}},jt=Ut,st=(e,t)=>{try{return new RegExp(e,t)}catch(r){if(!(r instanceof SyntaxError))throw r;let s=new Map,n=e.replace(/(\\[pP])\{([^}=]+)\}/g,(o,a,i,c)=>{let l=0;for(let h=c-1;h>=0&&e[h]==="\\";--h)++l;if(l%2===1)return o;let d=s.get(i);if(d===void 0){try{new RegExp(`\\p{${i}}`,"u"),d=i}catch{d=`Script=${i}`}s.set(i,d)}return`${a}{${d}}`});if(n===e)throw r;try{return new RegExp(n,t)}catch{throw r}}},ke=e=>e.replace(/ \./g,".").replace(/ \?/g,"?").replace(/ \!/g,"!").replace(/ ,/g,",").replace(/ \' /g,"'").replace(/ n't/g,"n't").replace(/ 'm/g,"'m").replace(/ 's/g,"'s").replace(/ 've/g,"'ve").replace(/ 're/g,"'re"),ue=(e,t=!0)=>{if(e.Regex!==void 0){let r=sr(er(e.Regex));return st(r,"gu")}else if(e.String!==void 0){let r=nr(e.String);return new RegExp(t?r:`(${r})`,"gu")}else return console.warn("Unknown pattern type:",e),null},q="\\p{Alphabetic}\\p{M}\\p{Nd}\\p{Pc}",nt=`${q}\\u00B2\\u00B3\\u00B9\\u00BC-\\u00BE`,R=`[${nt}]`,ot=`[^${nt}]`,Lt=`(?:(?<!${R})(?=${R})|(?<=${R})(?!${R}))`,Vt=`(?:(?<!${R})(?!${R})|(?<=${R})(?=${R}))`,Bt="(?:(?<![\\s\\S])|(?<=\\n))",Wt="(?:(?=\\n)|(?![\\s\\S]))",Z="0-9A-Fa-f",qt=new Map([["A","(?<![\\s\\S])"],["z","(?![\\s\\S])"],["Z","(?=\\n?(?![\\s\\S]))"],["h",`[${Z}]`],["H",`[^${Z}]`],["w",R],["W",ot],["d","\\p{Nd}"],["D","\\P{Nd}"],["s","\\p{White_Space}"],["S","\\P{White_Space}"],["b",Lt],["B",Vt],["a","\\x07"],["e","\\x1B"]]),Gt=new Map([["h",Z],["w",q],["d","\\p{Nd}"],["D","\\P{Nd}"],["s","\\p{White_Space}"],["S","\\P{White_Space}"],["a","\\x07"],["e","\\x1B"]]),Kt=new Map([["W",`[^${q}]`],["H",`[^${Z}]`]]),it=new Map([[`
|
|
7
|
-
`,"\\n"],["\r","\\r"],[" ","\\t"],["\f","\\f"],["\v","\\v"]]),Ht=new Map([["alpha","\\p{Alphabetic}"],["alnum","\\p{Alphabetic}\\p{Nd}"],["digit","\\p{Nd}"],["lower","\\p{Lowercase}"],["upper","\\p{Uppercase}"],["space","\\p{White_Space}"],["blank","\\t\\p{Zs}"],["punct","\\p{P}\\p{S}"],["cntrl","\\p{Cc}"],["word",q],["xdigit",Z]]),at="^$\\.*+?()[]{}|/",Xt=/^\(\?(?:<[=!]|<[A-Za-z_][A-Za-z0-9_]*>|[:=!>])/,ct=/^\\([pPxu])\{([^}]*)\}/,Zt=/^\{(\d+(?:,\d*)?|,\d+)\}/,Yt=/^\[:(\^?)(\p{Alphabetic}+):\]/u,Jt=/^\[:\^:\]/,Qt=/^\[(?:\.[^\]]*\.\]|=[^\]]*=\])/,lt=/^(?:\\x[0-9A-Fa-f]{2}|\\u[0-9A-Fa-f]{4}|\\c[A-Za-z])/,dt=e=>e>="A"&&e<="Z"||e>="a"&&e<="z",le=(e,t)=>String.fromCodePoint(e.codePointAt(t)),He=e=>{if(!/^[0-9A-Fa-f]{1,8}$/.test(e))return null;let t=Number.parseInt(e,16);if(t>127)return null;let r=String.fromCharCode(t);return dt(r)?`[${r.toLowerCase()}${r.toUpperCase()}]`:null},er=e=>e.replace(/\[\^\(\\s\|\[([^\]]+)\]\)\]/g,"[^()|\\s$1]"),ht="[\\s\\S]",Xe=256,Ze=()=>({fragment:"",alternatives:[],tail:null,contains_complex_set:!1}),Se=e=>{throw new SyntaxError(`Unsupported range with a set-valued character-class operand at index ${e}`)},de=(e,t,r,s=!0)=>{e.tail==="range"&&Se(r),e.alternatives.push(t),e.tail="set",e.contains_complex_set=e.contains_complex_set||s},L=(e,t,r=!1,s=-1)=>{if(r&&e.tail==="range"&&Se(s),e.tail==="range"){e.fragment+=t,e.tail="complete_range";return}e.fragment+=t,e.tail=r?"set":"scalar",e.contains_complex_set=e.contains_complex_set||r},tr=(e,t,r)=>{let s=ct.exec(e.slice(t));if(s){let[u,p,f]=s;if(p==="P"&&f==="Word")de(r,`[^${q}]`,t);else{let _=p==="x"?`\\u{${f}}`:p==="p"&&f==="Word"?q:u;L(r,_,p==="p"||p==="P",t)}return t+u.length}let n=lt.exec(e.slice(t));if(n)return L(r,n[0]),t+n[0].length;if(t+1>=e.length)throw new SyntaxError(`Unterminated escape in character class at index ${t}`);let o=le(e,t+1),a=t+1+o.length,i=it.get(o);if(i!==void 0)return L(r,i),a;let c=Kt.get(o);if(c!==void 0)return de(r,c,t),a;let l=Gt.get(o),d,h=!1;return l!==void 0?(d=l,h=o!=="a"&&o!=="e"):/[A-Za-z0-9]/.test(o)?d=`\\${o}`:at.includes(o)||o==="-"?d=`\\${o}`:d=o,L(r,d,h,t),a},ut=e=>e.length===1?e[0]:`(?:(?=(?:${e.join("|")}))${ht})`,Ye=e=>{let t=e.fragment.length===0?e.alternatives:[`[${e.fragment}]`,...e.alternatives];return ut(t)},rr=e=>{let t=st(`^(?:${e})$`,"u"),r="";for(let s=0;s<26;++s){let n=String.fromCharCode(65+s),o=String.fromCharCode(97+s),a=t.test(n),i=t.test(o);a!==i&&(r+=a?o:n)}return r},pt=(e,t,r,s=!0,n=1)=>{if(n>Xe)throw new SyntaxError(`Maximum character-class nesting depth of ${Xe} exceeded at index ${t}`);let o=t+1,a=e[o]==="^";a&&++o;let i=o,c=[Ze()],l=c[0],d=!1;for(;o<e.length;){let h=le(e,o);if(h==="\\"){o=tr(e,o,l);continue}if(h==="]"){if(o===i){L(l,"\\]"),++o;continue}if(l.tail===null)throw c.length>1?new SyntaxError(`Malformed character-class intersection with an empty operand at index ${o}`):new SyntaxError(`Empty character class at index ${t}`);let u=c.some(w=>w.contains_complex_set);if(a&&c.length>1&&d)throw new SyntaxError(`Unsupported outer-negated character-class intersection with a nested negated class containing a Unicode property, POSIX class, or shorthand at index ${t}`);let p=Ye(c[0]),f=p;if(c.length>1){let w="";for(let P=1;P<c.length;++P)w+=`(?=${Ye(c[P])})`;f=`(?:${w}${p})`}let _=c.length===1&&l.alternatives.length===0,m=l.fragment;if(r&&s){let w=rr(f);w.length>0&&(_?(m+=w,f=`[${m}]`):f=ut([f,`[${w}]`]))}return{atom:a?_?`[^${m}]`:`(?:(?!${f})${ht})`:f,end:o+1,negated:a,contains_complex_set:u,contains_nested_negated_complex_set:d}}if(e.startsWith("&&",o)){if(l.tail===null)throw new SyntaxError(`Malformed character-class intersection with an empty operand at index ${o}`);l=Ze(),c.push(l),o+=2;continue}if(h==="["){let u=e.slice(o);if(Jt.test(u))throw new SyntaxError(`Malformed empty negated POSIX character class at index ${o}`);let p=Yt.exec(u);if(p){let[,_,m]=p,b=Ht.get(m);if(b===void 0)throw new SyntaxError(`Unsupported POSIX character class "${m}" at index ${o}`);if(r&&_&&(m==="lower"||m==="upper"))throw new SyntaxError(`Unsupported negated POSIX ${m} class inside an inline case-insensitive group`);_?de(l,`[^${b}]`,o):L(l,b,!0,o),o+=p[0].length;continue}if(Qt.test(u))throw new SyntaxError(`Unsupported POSIX collating or equivalence bracket expression at index ${o}`);let f=pt(e,o,r,!1,n+1);de(l,f.atom,o,f.contains_complex_set),d||=f.contains_nested_negated_complex_set||f.negated&&f.contains_complex_set,o=f.end;continue}if(h==="-"){let u=e[o+1]==="]"||e.startsWith("&&",o+1);l.tail==="set"&&!u&&Se(o),l.tail===null||l.tail==="range"||l.tail==="complete_range"||u?L(l,"\\-"):(l.fragment+="-",l.tail="range"),++o;continue}L(l,h==="^"&&l.fragment.length===0?"\\^":h),o+=h.length}throw new SyntaxError(`${c.length>1?"Unterminated character-class intersection":"Unterminated character class"} at index ${t}`)},sr=e=>{let t="",r=-1,s=!1,n=!1,o=[],a=i=>{r=t.length,t+=i,s=!1};for(let i=0;i<e.length;){let c=le(e,i);if(c==="\\"){let l=ct.exec(e.slice(i));if(l){let[_,m,b]=l,w=_;if(m==="x"){let P=`\\u{${b}}`;w=n?He(b)??P:P}else b==="Word"&&(w=m==="p"?R:ot);a(w),i+=_.length;continue}let d=lt.exec(e.slice(i));if(d){let _=d[0],m=n&&_[1]!=="c"?He(_.slice(2))??_:_;a(m),i+=_.length;continue}if(i+1>=e.length){t+=c;break}let h=le(e,i+1);if(i+=1+h.length,h==="G")continue;let u=it.get(h);if(u!==void 0){a(u);continue}let p=qt.get(h),f;p!==void 0?f=p:/[A-Za-z0-9]/.test(h)?f=`\\${h}`:at.includes(h)?f=`\\${h}`:f=h,a(f);continue}switch(c){case"[":{let l=pt(e,i,n);a(l.atom),i=l.end;continue}case"]":a("\\]"),++i;continue;case".":a("[^\\n]"),++i;continue;case"^":a(Bt),++i;continue;case"$":a(Wt),++i;continue;case"(":{let l=e.startsWith("(?i:",i),d=l?"(?i:":Xt.exec(e.slice(i))?.[0]??"(",h=l||d==="(?>"?"(?:":d;o.push([t.length,n]),l&&(n=!0),t+=h,s=!1,i+=d.length;continue}case")":t+=c,[r,n]=o.pop()??[-1,!1],s=!1,++i;continue;case"|":t+=c,r=-1,s=!1,++i;continue;case"{":{let l=Zt.exec(e.slice(i));if(!l||r<0){a("\\{"),++i;continue}let d=l[1].startsWith(",")?`0${l[1]}`:l[1];i+=l[0].length;let h=e[i];h==="+"||h==="*"?(t=`${t.slice(0,r)}(?:${t.slice(r)}{${d}})${h}`,++i):t+=`{${d}}`,s=!0;continue}case"}":a("\\}"),++i;continue;case"+":if(s){++i;continue}t+=c,s=!0,++i;continue;case"*":case"?":t+=c,s=!0,++i;continue;default:a(n&&dt(c)?`[${c.toLowerCase()}${c.toUpperCase()}]`:c),i+=c.length;continue}}return t},nr=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),or=(e,t,r)=>{let s=[],n=0;for(;n<e.length;){if(s.push(e[n]),(t.get(e[n])??r)!==r){++n;continue}for(;++n<e.length&&(t.get(e[n])??r)===r;)t.get(s.at(-1))!==r&&(s[s.length-1]+=e[n])}return s},ir=e=>e>=19968&&e<=40959||e>=13312&&e<=19903||e>=131072&&e<=173791||e>=173824&&e<=177983||e>=177984&&e<=178207||e>=178208&&e<=183983||e>=63744&&e<=64255||e>=194560&&e<=195103,ar=e=>Number.isInteger(e)||typeof e=="bigint",cr=e=>{let t=0;for(let r of e)++t;return t},lr=e=>mt(e.toLowerCase()),$=(...e)=>Array.prototype.concat.apply([],e),xe=e=>new Map(Object.entries(e)),dr=(e,t)=>{let r=[],s=0;for(let n of e.matchAll(t)){let o=n[0];s<n.index&&r.push(e.slice(s,n.index)),o.length>0&&r.push(o),s=n.index+o.length}return s<e.length&&r.push(e.slice(s)),r},mt=e=>e.replace(/\p{M}/gu,""),Je=(e,t,r=[])=>{if(!e||Array.isArray(e)||typeof e!="object")return`${t} must be a valid object`;for(let s of r)if(!(s in e))return`${t} must contain a "${s}" property`;return null},hr=e=>e.match(/\S+/g)||[],ur=class{constructor(){let e=function(...t){return e._call(...t)};return Object.setPrototypeOf(e,new.target.prototype)}},Y=ur,pr=class extends Y{constructor(e){super(),this.config=e}_call(e){return this.normalize(e)}},U=pr,mr=class extends U{tokenize_chinese_chars(e){let t=[];for(let r=0;r<e.length;++r){let s=e[r],n=s.charCodeAt(0);ir(n)?(t.push(" "),t.push(s),t.push(" ")):t.push(s)}return t.join("")}strip_accents(e){return e.normalize("NFD").replace(/\p{Mn}/gu,"")}is_control(e){switch(e){case" ":case`
|
|
8
|
-
`:case"\r":return!1;default:return/^\p{Cc}|\p{Cf}|\p{Co}|\p{Cs}$/u.test(e)}}clean_text(e){let t=[];for(let r of e){let s=r.charCodeAt(0);s===0||s===65533||this.is_control(r)||(/^\s$/.test(r)?t.push(" "):t.push(r))}return t.join("")}normalize(e){return this.config.clean_text&&(e=this.clean_text(e)),this.config.handle_chinese_chars&&(e=this.tokenize_chinese_chars(e)),this.config.lowercase?(e=e.toLowerCase(),this.config.strip_accents!==!1&&(e=this.strip_accents(e))):this.config.strip_accents&&(e=this.strip_accents(e)),e}},_r=mr,fr=class extends U{constructor(e){super(e),this.charsmap=e.precompiled_charsmap??null}normalize(e){return e=e.replace(/[\u0001-\u0008\u000B\u000E-\u001F\u007F\u008F\u009F]/gm,""),e=e.replace(/[\u0009\u000A\u000C\u000D\u00A0\u1680\u2000-\u200F\u2028\u2029\u202F\u205F\u2581\u3000\uFEFF\uFFFD]/gm," "),e.includes("\uFF5E")?e=e.split("\uFF5E").map(r=>r.normalize("NFKC")).join("\uFF5E"):e=e.normalize("NFKC"),e}},yr=fr,br=class extends U{constructor(e){super(e),this.normalizers=(e.normalizers??[]).map(t=>_t(t))}normalize(e){return this.normalizers.reduce((t,r)=>r?r.normalize(t):t,e)}},wr=br,gr=class extends U{constructor(e){super(e),this.pattern=ue(this.config.pattern??{})}normalize(e){return this.pattern===null?e:e.replaceAll(this.pattern,this.config.content??"")}},vr=gr,kr=class extends U{constructor(){super(...arguments),this.form="NFC"}normalize(e){return e=e.normalize(this.form),e}},pe=kr,Sr=class extends pe{constructor(){super(...arguments),this.form="NFC"}},xr=Sr,Ar=class extends pe{constructor(){super(...arguments),this.form="NFD"}},Mr=Ar,Pr=class extends pe{constructor(){super(...arguments),this.form="NFKC"}},Er=Pr,zr=class extends pe{constructor(){super(...arguments),this.form="NFKD"}},Fr=zr,$r=class extends U{normalize(e){return this.config.strip_left&&this.config.strip_right?e=e.trim():(this.config.strip_left&&(e=e.trimStart()),this.config.strip_right&&(e=e.trimEnd())),e}},Tr=$r,Cr=class extends U{normalize(e){return mt(e)}},Nr=Cr,Ir=class extends U{normalize(e){return e.toLowerCase()}},Or=Ir,Rr=class extends U{normalize(e){return e=this.config.prepend+e,e}},Dr=Rr;function Ur(e){if(e===null)return null;switch(e.type){case"BertNormalizer":return new _r(e);case"Precompiled":return new yr(e);case"Sequence":return new wr(e);case"Replace":return new vr(e);case"NFC":return new xr(e);case"NFD":return new Mr(e);case"NFKC":return new Er(e);case"NFKD":return new Fr(e);case"Strip":return new Tr(e);case"StripAccents":return new Nr(e);case"Lowercase":return new Or(e);case"Prepend":return new Dr(e);default:throw new Error(`Unknown Normalizer type: ${e.type}`)}}var _t=Ur,jr=class extends Y{pre_tokenize(e,t){return(Array.isArray(e)?e.map(r=>this.pre_tokenize_text(r,t)):this.pre_tokenize_text(e,t)).flat()}_call(e,t){return this.pre_tokenize(e,t)}},T=jr,ft=(()=>{let e=[...Array.from({length:94},(n,o)=>o+33),...Array.from({length:12},(n,o)=>o+161),...Array.from({length:82},(n,o)=>o+174)],t=e.slice(),r=0;for(let n=0;n<256;++n)e.includes(n)||(e.push(n),t.push(256+r),r+=1);let s=t.map(n=>String.fromCharCode(n));return Object.fromEntries(e.map((n,o)=>[n,s[o]]))})(),Lr=e=>Object.fromEntries(Object.entries(e).map(([t,r])=>[r,t])),Vr=Lr(ft),he="\\p{P}\\u0021-\\u002F\\u003A-\\u0040\\u005B-\\u0060\\u007B-\\u007E",Br=class extends T{constructor(e){super(),this.config=e,this.add_prefix_space=this.config.add_prefix_space??!1,this.trim_offsets=this.config.trim_offsets??!1,this.use_regex=this.config.use_regex??!0,this.pattern=/'s|'t|'re|'ve|'m|'ll|'d| ?\p{L}+| ?\p{N}+| ?[^\s\p{L}\p{N}]+|\s+(?!\S)|\s+/gu,this.byte_encoder=ft,this.text_encoder=new TextEncoder}pre_tokenize_text(e,t){return this.add_prefix_space&&!e.startsWith(" ")&&(e=" "+e),(this.use_regex?e.match(this.pattern)||[]:[e]).map(s=>Array.from(this.text_encoder.encode(s),n=>this.byte_encoder[n]).join(""))}},Wr=Br,qr=class extends T{pre_tokenize_text(e,t){return e.match(/\w+|[^\w\s]+/g)||[]}},Gr=qr,Kr=class extends T{constructor(e){super(),this.replacement=e.replacement??"\u2581",this.str_rep=e.str_rep||this.replacement,this.prepend_scheme=e.prepend_scheme??"always"}pre_tokenize_text(e,t){let{section_index:r=void 0}=t??{},s=e.replaceAll(" ",this.str_rep);return!s.startsWith(this.replacement)&&(this.prepend_scheme==="always"||this.prepend_scheme==="first"&&r===0)&&(s=this.str_rep+s),[s]}},Hr=Kr,Xr=class extends T{constructor(e){super(),this.config=e,this.pattern=ue(this.config.pattern??{},this.config.invert??!0)}pre_tokenize_text(e){return this.pattern===null?[]:this.config.invert?(e.match(this.pattern)||[]).filter(t=>t):this.config.behavior?.toLowerCase()==="removed"?e.split(this.pattern).filter(t=>t):dr(e,this.pattern)}},Zr=Xr,Yr=class extends T{constructor(e){super(),this.config=e,this.pattern=new RegExp(`[^${he}]+|[${he}]+`,"gu")}pre_tokenize_text(e){return e.match(this.pattern)||[]}},Jr=Yr,Qr=class extends T{constructor(e){super(),this.config=e;let t=`[^\\d]+|\\d${this.config.individual_digits?"":"+"}`;this.pattern=new RegExp(t,"gu")}pre_tokenize_text(e){return e.match(this.pattern)||[]}},es=Qr,ts=class extends T{constructor(){super(),this.pattern=new RegExp(`[^\\s${he}]+|[${he}]`,"gu")}pre_tokenize_text(e,t){return e.trim().match(this.pattern)||[]}},rs=ts,ss=class extends T{constructor(e){super(),this.config=e,this.pattern=ue(this.config.pattern??{}),this.content=this.config.content??""}pre_tokenize_text(e){return this.pattern===null?[e]:[e.replaceAll(this.pattern,this.config.content??"")]}},ns=ss,os=class extends T{constructor(e){super(),this.tokenizers=(e.pretokenizers??[]).map(t=>yt(t))}pre_tokenize_text(e,t){return this.tokenizers.reduce((r,s)=>s?s.pre_tokenize(r,t):r,[e])}},is=os,as=class extends T{pre_tokenize_text(e){return hr(e)}},cs=as,ls=class extends T{constructor(e){super(),this.config=e,this._length=e.length}pre_tokenize_text(e){let t=[];for(let r=0;r<e.length;r+=this._length)t.push(e.slice(r,r+this._length));return t}},ds=ls;function hs(e){if(e===null)return null;switch(e.type){case"BertPreTokenizer":return new rs;case"Sequence":return new is(e);case"Whitespace":return new Gr;case"WhitespaceSplit":return new cs;case"Metaspace":return new Hr(e);case"ByteLevel":return new Wr(e);case"Split":return new Zr(e);case"Punctuation":return new Jr(e);case"Digits":return new es(e);case"Replace":return new ns(e);case"FixedLength":return new ds(e);default:throw new Error(`Unknown PreTokenizer type: ${e.type}`)}}var yt=hs,us=class extends Y{constructor(e){super(),this.config=e,this.vocab=[],this.tokens_to_ids=new Map,this.unk_token_id=void 0,this.unk_token=void 0,this.end_of_word_suffix=void 0,this.fuse_unk=this.config.fuse_unk??!1}_call(e){let t=this.encode(e);return this.fuse_unk&&(t=or(t,this.tokens_to_ids,this.unk_token_id)),t}},me=us,ps=class extends me{constructor(e){super(e),this.max_input_chars_per_word=100,this.tokens_to_ids=xe(e.vocab),this.unk_token_id=this.tokens_to_ids.get(e.unk_token),this.unk_token=e.unk_token,this.max_input_chars_per_word=e.max_input_chars_per_word??100,this.vocab=new Array(this.tokens_to_ids.size);for(let[t,r]of this.tokens_to_ids)this.vocab[r]=t}encode(e){let t=[];for(let r of e){let s=[...r];if(s.length>this.max_input_chars_per_word){t.push(this.unk_token);continue}let n=!1,o=0,a=[];for(;o<s.length;){let i=s.length,c=null;for(;o<i;){let l=s.slice(o,i).join("");if(o>0&&(l=this.config.continuing_subword_prefix+l),this.tokens_to_ids.has(l)){c=l;break}--i}if(c===null){n=!0;break}a.push(c),o=i}n?t.push(this.unk_token):t.push(...a)}return t}},Qe=ps,et=class bt{constructor(t,r){this.is_leaf=t,this.children=r}static default(){return new bt(!1,new Map)}},ms=class{constructor(){this.root=et.default()}extend(e){for(let t of e)this.push(t)}push(e){let t=this.root;for(let r of e){let s=t.children.get(r);s===void 0&&(s=et.default(),t.children.set(r,s)),t=s}t.is_leaf=!0}*common_prefix_search(e,t=0){let r=this.root;if(r===void 0)return;let s="";for(let n=t;n<e.length;++n){let o=e[n];if(s+=o,r=r.children.get(o),r===void 0)return;r.is_leaf&&(yield s)}}},_s=ms,ve=class wt{constructor(t,r,s,n,o){this.token_id=t,this.node_id=r,this.pos=s,this.length=n,this.score=o,this.prev=null,this.backtrace_score=0}clone(){let t=new wt(this.token_id,this.node_id,this.pos,this.length,this.score);return t.prev=this.prev,t.backtrace_score=this.backtrace_score,t}},fs=class{constructor(e,t,r){this.chars=Array.from(e),this.len=this.chars.length,this.bos_token_id=t,this.eos_token_id=r,this.nodes=[],this.begin_nodes=Array.from({length:this.len+1},()=>[]),this.end_nodes=Array.from({length:this.len+1},()=>[]);let s=new ve(this.bos_token_id??0,0,0,0,0),n=new ve(this.eos_token_id??0,1,this.len,0,0);this.nodes.push(s.clone()),this.nodes.push(n.clone()),this.begin_nodes[this.len].push(n),this.end_nodes[0].push(s)}insert(e,t,r,s){let n=this.nodes.length,o=new ve(s,n,e,t,r);this.begin_nodes[e].push(o),this.end_nodes[e+t].push(o),this.nodes.push(o)}viterbi(){let e=this.len,t=0;for(;t<=e;){if(this.begin_nodes[t].length==0)return[];for(let a of this.begin_nodes[t]){a.prev=null;let i=0,c=null;for(let l of this.end_nodes[t]){let d=l.backtrace_score+a.score;(c===null||d>i)&&(c=l.clone(),i=d)}if(c!==null)a.prev=c,a.backtrace_score=i;else return[]}++t}let r=[],n=this.begin_nodes[e][0].prev;if(n===null)return[];let o=n.clone();for(;o.prev!==null;)r.push(o.clone()),o=o.clone().prev.clone();return r.reverse(),r}piece(e){return this.chars.slice(e.pos,e.pos+e.length).join("")}tokens(){return this.viterbi().map(t=>this.piece(t))}token_ids(){return this.viterbi().map(t=>t.token_id)}},ys=fs;function bs(e){if(e.length===0)throw new Error("Array must not be empty");let t=e[0],r=0;for(let s=1;s<e.length;++s)e[s]<t&&(t=e[s],r=s);return[t,r]}var ws=class extends me{constructor(e,t){super(e);let r=e.vocab.length;this.vocab=new Array(r),this.scores=new Array(r);for(let s=0;s<r;++s)[this.vocab[s],this.scores[s]]=e.vocab[s];this.unk_token_id=e.unk_id,this.unk_token=this.vocab[e.unk_id],this.tokens_to_ids=new Map(this.vocab.map((s,n)=>[s,n])),this.bos_token=" ",this.bos_token_id=this.tokens_to_ids.get(this.bos_token),this.eos_token=t,this.eos_token_id=this.tokens_to_ids.get(this.eos_token),this.unk_token=this.vocab[this.unk_token_id],this.min_score=bs(this.scores)[0],this.unk_score=this.min_score-10,this.scores[this.unk_token_id]=this.unk_score,this.trie=new _s,this.trie.extend(this.vocab),this.fuse_unk=!0}populate_nodes(e){let t=e.chars,r=1,s=0;for(;s<t.length;){let n=!1,o=this.trie.common_prefix_search(t,s);for(let a of o){let i=this.tokens_to_ids.get(a),c=this.scores[i],l=cr(a);e.insert(s,l,c,i),!n&&l===r&&(n=!0)}n||e.insert(s,r,this.unk_score,this.unk_token_id),s+=r}}tokenize(e){let t=new ys(e,this.bos_token_id,this.eos_token_id);return this.populate_nodes(t),t.tokens()}encode(e){let t=[];for(let r of e){let s=this.tokenize(r);t.push(...s)}return t}},tt=ws,gs=class{constructor(e=(r,s)=>r>s,t=1/0){this._heap=[],this._comparator=e,this._max_size=t}get size(){return this._heap.length}is_empty(){return this.size===0}peek(){return this._heap[0]}push(...e){return this.extend(e)}extend(e){for(let t of e)if(this.size<this._max_size)this._heap.push(t),this._sift_up();else{let r=this._smallest();this._comparator(t,this._heap[r])&&(this._heap[r]=t,this._sift_up_from(r))}return this.size}pop(){let e=this.peek(),t=this.size-1;return t>0&&this._swap(0,t),this._heap.pop(),this._sift_down(),e}replace(e){let t=this.peek();return this._heap[0]=e,this._sift_down(),t}_parent(e){return(e+1>>>1)-1}_left(e){return(e<<1)+1}_right(e){return e+1<<1}_greater(e,t){return this._comparator(this._heap[e],this._heap[t])}_swap(e,t){let r=this._heap[e];this._heap[e]=this._heap[t],this._heap[t]=r}_sift_up(){this._sift_up_from(this.size-1)}_sift_up_from(e){for(;e>0&&this._greater(e,this._parent(e));)this._swap(e,this._parent(e)),e=this._parent(e)}_sift_down(){let e=0;for(;this._left(e)<this.size&&this._greater(this._left(e),e)||this._right(e)<this.size&&this._greater(this._right(e),e);){let t=this._right(e)<this.size&&this._greater(this._right(e),this._left(e))?this._right(e):this._left(e);this._swap(e,t),e=t}}_smallest(){return 2**Math.floor(Math.log2(this.size))-1}},vs=gs,ks=class{constructor(e){this.capacity=e,this.cache=new Map}get(e){if(!this.cache.has(e))return;let t=this.cache.get(e);return this.cache.delete(e),this.cache.set(e,t),t}put(e,t){this.cache.has(e)&&this.cache.delete(e),this.cache.set(e,t),this.cache.size>this.capacity&&this.cache.delete(this.cache.keys().next().value)}clear(){this.cache.clear()}},Ss=ks,xs=class extends me{constructor(e){super(e),this.tokens_to_ids=xe(e.vocab),this.unk_token_id=this.tokens_to_ids.get(e.unk_token),this.unk_token=e.unk_token,this.vocab=new Array(this.tokens_to_ids.size);for(let[r,s]of this.tokens_to_ids)this.vocab[s]=r;let t=Array.isArray(e.merges[0]);this.merges=t?e.merges:e.merges.map(r=>r.split(" ",2)),this.bpe_ranks=new Map(this.merges.map((r,s)=>[JSON.stringify(r),s])),this.end_of_word_suffix=e.end_of_word_suffix,this.continuing_subword_suffix=e.continuing_subword_suffix??null,this.byte_fallback=this.config.byte_fallback??!1,this.byte_fallback&&(this.text_encoder=new TextEncoder),this.ignore_merges=this.config.ignore_merges??!1,this.max_length_to_cache=256,this.cache_capacity=1e4,this.cache=new Ss(this.cache_capacity)}clear_cache(){this.cache.clear()}bpe(e){if(e.length===0)return[];let t=this.cache.get(e);if(t!==void 0)return t;let r=Array.from(e);this.end_of_word_suffix&&(r[r.length-1]+=this.end_of_word_suffix);let s=[];if(r.length>1){let n=new vs((i,c)=>i.score<c.score),o={token:r[0],bias:0,prev:null,next:null},a=o;for(let i=1;i<r.length;++i){let c={bias:i/r.length,token:r[i],prev:a,next:null};a.next=c,this.add_node(n,a),a=c}for(;!n.is_empty();){let i=n.pop();if(i.deleted||!i.next||i.next.deleted)continue;if(i.deleted=!0,i.next.deleted=!0,i.prev){let l={...i.prev};i.prev.deleted=!0,i.prev=l,l.prev?l.prev.next=l:o=l}let c={token:i.token+i.next.token,bias:i.bias,prev:i.prev,next:i.next.next};c.prev?(c.prev.next=c,this.add_node(n,c.prev)):o=c,c.next&&(c.next.prev=c,this.add_node(n,c))}for(let i=o;i!==null;i=i.next)s.push(i.token)}else s=r;if(this.continuing_subword_suffix)for(let n=0;n<s.length-1;++n)s[n]+=this.continuing_subword_suffix;return e.length<this.max_length_to_cache&&this.cache.put(e,s),s}add_node(e,t){let r=this.bpe_ranks.get(JSON.stringify([t.token,t.next.token]));r!==void 0&&(t.score=r+t.bias,e.push(t))}encode(e){let t=[];for(let r of e){if(this.ignore_merges&&this.tokens_to_ids.has(r)){t.push(r);continue}let s=this.bpe(r);for(let n of s)if(this.tokens_to_ids.has(n))t.push(n);else if(this.byte_fallback){let o=Array.from(this.text_encoder.encode(n)).map(a=>`<0x${a.toString(16).toUpperCase().padStart(2,"0")}>`);o.every(a=>this.tokens_to_ids.has(a))?t.push(...o):this.unk_token!=null&&t.push(this.unk_token)}else this.unk_token!=null&&t.push(this.unk_token)}return t}},rt=xs,As=class extends me{constructor(e,t){super(e);let r=e.vocab;this.tokens_to_ids=xe(t.target_lang?r[t.target_lang]:r),this.bos_token=t.bos_token,this.bos_token_id=this.tokens_to_ids.get(this.bos_token),this.eos_token=t.eos_token,this.eos_token_id=this.tokens_to_ids.get(this.eos_token),this.pad_token=t.pad_token,this.pad_token_id=this.tokens_to_ids.get(this.pad_token),this.unk_token=t.unk_token,this.unk_token_id=this.tokens_to_ids.get(this.unk_token),this.vocab=new Array(this.tokens_to_ids.size);for(let[s,n]of this.tokens_to_ids)this.vocab[n]=s}encode(e){return e}},Ms=As;function Ps(e,t){switch(e.type){case"WordPiece":return new Qe(e);case"Unigram":return new tt(e,t.eos_token);case"BPE":return new rt(e);default:if(e.vocab)return Array.isArray(e.vocab)?new tt(e,t.eos_token):Object.hasOwn(e,"continuing_subword_prefix")&&Object.hasOwn(e,"unk_token")?Object.hasOwn(e,"merges")?new rt(e):new Qe(e):new Ms(e,{target_lang:t.target_lang,bos_token:t.bos_token,eos_token:t.eos_token,pad_token:t.pad_token,unk_token:t.unk_token});throw new Error(`Unknown TokenizerModel type: ${e?.type}`)}}var Es=Ps,zs=class extends Y{constructor(e){super(),this.config=e}_call(e,...t){return this.post_process(e,...t)}},J=zs,Fs=class extends J{post_process(e,t=null,r=!0){let s=t===null?this.config.single:this.config.pair,n=[],o=[];for(let a of s)"SpecialToken"in a?r&&(n.push(a.SpecialToken.id),o.push(a.SpecialToken.type_id)):"Sequence"in a&&(a.Sequence.id==="A"?(n=$(n,e),o=$(o,new Array(e.length).fill(a.Sequence.type_id))):a.Sequence.id==="B"&&(n=$(n,t),o=$(o,new Array(t.length).fill(a.Sequence.type_id))));return{tokens:n,token_type_ids:o}}},$s=Fs,Ts=class extends J{post_process(e,t=null){return{tokens:e,tokens_pair:t}}},Cs=Ts,Ns=class extends J{constructor(e){super(e),this.sep=e.sep,this.cls=e.cls}post_process(e,t=null,r=!0){r&&(e=$([this.cls[0]],e,[this.sep[0]]));let s=new Array(e.length).fill(0);if(t){let n=[],o=r?[this.sep[0]]:[];e=$(e,n,t,o),s=$(s,new Array(t.length+n.length+o.length).fill(1))}return{tokens:e,token_type_ids:s}}},Is=Ns,Os=class extends J{constructor(e){super(e),this.sep=e.sep,this.cls=e.cls}post_process(e,t,r=!0){r&&(e=$([this.cls[0]],e,[this.sep[0]]));let s=new Array(e.length).fill(0);if(t){let n=r?[this.sep[0]]:[],o=r?[this.sep[0]]:[];e=$(e,n,t,o),s=$(s,new Array(t.length+n.length+o.length).fill(1))}return{tokens:e,token_type_ids:s}}},Rs=Os,Ds=class extends J{constructor(e){super(e),this.processors=(e.processors??[]).map(t=>gt(t))}post_process(e,t=null,r=!0){let s={tokens:e,tokens_pair:t};for(let n of this.processors)s=n.post_process(s.tokens,s.tokens_pair,r);return s}},Us=Ds;function js(e){if(e===null)return null;switch(e.type){case"TemplateProcessing":return new $s(e);case"ByteLevel":return new Cs(e);case"BertProcessing":return new Is(e);case"RobertaProcessing":return new Rs(e);case"Sequence":return new Us(e);default:throw new Error(`Unknown PostProcessor type: ${e.type}`)}}var gt=js,Ls=class extends Y{constructor(e){super(),this.config=e,this.added_tokens=[],this.end_of_word_suffix=null,this.trim_offsets="trim_offsets"in e?e.trim_offsets:!1}_call(e){return this.decode(e)}decode(e){return this.decode_chain(e).join("")}},D=Ls,Vs=class extends D{constructor(e){super(e),this.byte_decoder=Vr,this.text_decoder=new TextDecoder("utf-8",{fatal:!1,ignoreBOM:!0}),this.end_of_word_suffix=null}convert_tokens_to_string(e){let t=e.join(""),r=new Uint8Array([...t].map(s=>this.byte_decoder[s]));return this.text_decoder.decode(r)}decode_chain(e){let t=[],r=[];for(let s of e)this.added_tokens.find(n=>n.content===s)!==void 0?(r.length>0&&(t.push(this.convert_tokens_to_string(r)),r=[]),t.push(s)):r.push(s);return r.length>0&&t.push(this.convert_tokens_to_string(r)),t}},Bs=Vs,Ws=class extends D{constructor(e){super(e),this.cleanup=e.cleanup}decode_chain(e){return e.map((t,r)=>{if(r!==0){let s=this.config.prefix;s&&t.startsWith(s)?t=t.replace(s,""):t=" "+t}return this.cleanup&&(t=ke(t)),t})}},qs=Ws,Gs=class extends D{constructor(e){super(e),this.replacement=e.replacement??"\u2581"}decode_chain(e){let t=[];for(let r=0;r<e.length;++r){let s=e[r].replaceAll(this.replacement," ");r==0&&s.startsWith(" ")&&(s=s.substring(1)),t.push(s)}return t}},Ks=Gs,Hs=class extends D{constructor(e){super(e),this.suffix=e.suffix??""}decode_chain(e){return e.map((t,r)=>t.replaceAll(this.suffix,r===e.length-1?"":" "))}},Xs=Hs,Zs=class extends D{constructor(e){super(e),this.pad_token=e.pad_token??"",this.word_delimiter_token=e.word_delimiter_token??"",this.cleanup=e.cleanup}convert_tokens_to_string(e){if(e.length===0)return"";let t=[e[0]];for(let n=1;n<e.length;++n)e[n]!==t.at(-1)&&t.push(e[n]);let s=t.filter(n=>n!==this.pad_token).join("");return this.cleanup&&(s=ke(s).replaceAll(this.word_delimiter_token," ").trim()),s}decode_chain(e){return[this.convert_tokens_to_string(e)]}},Ys=Zs,Js=class extends D{constructor(e){super(e),this.decoders=(e.decoders??[]).map(t=>vt(t))}decode_chain(e){return this.decoders.reduce((t,r)=>r.decode_chain(t),e)}},Qs=Js,en=class extends D{constructor(e){super(e),this.pattern=ue(this.config.pattern)}decode_chain(e){let t=this.config.content??"",r=this.pattern;return r===null?e:e.map(s=>s.replaceAll(r,t))}},tn=en,rn=class extends D{decode_chain(e){return[e.join("")]}},sn=rn,nn=class extends D{constructor(e){super(e),this.content=e.content??"",this.start=e.start??0,this.stop=e.stop??0}decode_chain(e){return e.map(t=>{let r=0;for(let n=0;n<this.start&&t[n]===this.content;++n){r=n+1;continue}let s=t.length;for(let n=0;n<this.stop;++n){let o=t.length-n-1;if(t[o]===this.content){s=o;continue}else break}return t.slice(r,s)})}},on=nn,an=class extends D{constructor(e){super(e),this.text_decoder=new TextDecoder}decode_chain(e){let t=[],r=[];for(let s of e){let n=null;if(s.length===6&&s.startsWith("<0x")&&s.endsWith(">")){let o=parseInt(s.slice(3,5),16);isNaN(o)||(n=o)}if(n!==null)r.push(n);else{if(r.length>0){let o=this.text_decoder.decode(Uint8Array.from(r));t.push(o),r=[]}t.push(s)}}if(r.length>0){let s=this.text_decoder.decode(Uint8Array.from(r));t.push(s),r=[]}return t}},cn=an;function ln(e){if(e===null)return null;switch(e.type){case"ByteLevel":return new Bs(e);case"WordPiece":return new qs(e);case"Metaspace":return new Ks(e);case"BPEDecoder":return new Xs(e);case"CTC":return new Ys(e);case"Sequence":return new Qs(e);case"Replace":return new tn(e);case"Fuse":return new sn(e);case"Strip":return new on(e);case"ByteFallback":return new cn(e);default:throw new Error(`Unknown Decoder type: ${e.type}`)}}var vt=ln,dn=class{constructor(e,t){let r=Je(e,"Tokenizer",["model","decoder","post_processor","pre_tokenizer","normalizer"]);if(r)throw new Error(r);let s=Je(t,"Config");if(s)throw new Error(s);this.tokenizer=e,this.config=t,this.normalizer=_t(this.tokenizer.normalizer),this.pre_tokenizer=yt(this.tokenizer.pre_tokenizer),this.model=Es(this.tokenizer.model,this.config),this.post_processor=gt(this.tokenizer.post_processor),this.decoder=vt(this.tokenizer.decoder),this.special_tokens=[],this.all_special_ids=[],this.added_tokens=[];let n=[],o=[];this.added_tokens_map=new Map;for(let a of this.tokenizer.added_tokens){let i=new jt(a);if(this.added_tokens.push(i),this.model.tokens_to_ids.set(i.content,i.id),this.model.vocab[i.id]=i.content,i.special&&(this.special_tokens.push(i.content),this.all_special_ids.push(i.id)),this.added_tokens_map.set(i.content,i),i.normalized&&this.normalizer!==null){let c=this.normalizer(i.content);o.push(c),this.added_tokens_map.set(c,i)}else n.push(i.content)}(this.config.additional_special_tokens??[]).forEach(a=>{this.special_tokens.includes(a)||this.special_tokens.push(a)}),this.decoder&&(this.decoder.added_tokens=this.added_tokens,this.decoder.end_of_word_suffix=this.model.end_of_word_suffix),this.splitter_unnormalized=new Ke(n),this.splitter_normalized=new Ke(o),this.remove_space=this.config.remove_space,this.clean_up_tokenization_spaces=this.config.clean_up_tokenization_spaces??!0,this.do_lowercase_and_remove_accent=this.config.do_lowercase_and_remove_accent??!1}encode(e,{text_pair:t=null,add_special_tokens:r=!0,return_token_type_ids:s=null}={}){let{tokens:n,token_type_ids:o}=this.tokenize_helper(e,{text_pair:t,add_special_tokens:r}),a=n.map(c=>this.added_tokens_map.get(c)?.id??this.model.tokens_to_ids.get(c)??this.model.unk_token_id),i={ids:a,tokens:n,attention_mask:new Array(a.length).fill(1)};return s&&o&&(i.token_type_ids=o),i}decode(e,t={}){if(!Array.isArray(e)||e.length===0||!ar(e[0]))throw Error("token_ids must be a non-empty array of integers.");let r=e.map(n=>this.model.vocab[Number(n)]??this.model.unk_token);t.skip_special_tokens&&(r=r.filter(n=>!this.special_tokens.includes(n)));let s=this.decoder?this.decoder(r):r.join(" ");return this.decoder&&this.decoder.end_of_word_suffix&&(s=s.replaceAll(this.decoder.end_of_word_suffix," "),t.skip_special_tokens&&(s=s.trim())),(t.clean_up_tokenization_spaces??this.clean_up_tokenization_spaces)&&(s=ke(s)),s}tokenize(e,{text_pair:t=null,add_special_tokens:r=!1}={}){return this.tokenize_helper(e,{text_pair:t,add_special_tokens:r}).tokens}encode_text(e){if(e===null)return null;let t=this.splitter_unnormalized.split(e);return t.forEach((r,s)=>{let n=this.added_tokens_map.get(r);n&&(n.lstrip&&s>0&&(t[s-1]=t[s-1].trimEnd()),n.rstrip&&s<t.length-1&&(t[s+1]=t[s+1].trimStart()))}),t.flatMap((r,s)=>{if(r.length===0)return[];if(this.added_tokens_map.has(r))return[r];if(this.remove_space===!0&&(r=r.trim().split(/\s+/).join(" ")),this.do_lowercase_and_remove_accent&&(r=lr(r)),this.normalizer!==null&&(r=this.normalizer(r)),r.length===0)return[];let n=this.splitter_normalized.split(r);return n.forEach((o,a)=>{let i=this.added_tokens_map.get(o);i&&(i.lstrip&&a>0&&(n[a-1]=n[a-1].trimEnd()),i.rstrip&&a<n.length-1&&(n[a+1]=n[a+1].trimStart()))}),n.flatMap(o=>{if(o.length===0)return[];if(this.added_tokens_map.has(o))return[o];let a=this.pre_tokenizer!==null?this.pre_tokenizer(o,{section_index:s}):[o];return this.model(a)})})}tokenize_helper(e,{text_pair:t=null,add_special_tokens:r=!0}){let s=this.encode_text(e),n=this.encode_text(t||null);return this.post_processor?this.post_processor(s,n,r):{tokens:$(s??[],n??[])}}token_to_id(e){return this.model.tokens_to_ids.get(e)}id_to_token(e){return this.model.vocab[e]}get_added_tokens_decoder(){let e=new Map;for(let t of this.added_tokens)e.set(t.id,t);return e}get_vocab(e=!0){let t=new Map;for(let r=0;r<this.model.vocab.length;++r){let s=this.model.vocab[r];(e||!this.added_tokens_map.has(s))&&t.set(s,r)}return t}},kt=dn;function v(e,t){let r=e[t];if(!(r?.data instanceof Float32Array))throw new Error(`Missing SAM 3 float output ${t}`);return r.data}async function B(e,t){if(!e.runMany)throw new Error("SAM 3 requires a session provider with runMany support.");return e.runMany(t)}var _e=class e{constructor(t){this.tokenizer=t}tokenizer;sessions=[];static async create(t,r){let s=async o=>JSON.parse(new TextDecoder().decode(await t.ensure(o))),n=new e(new kt(await s("sam3-tokenizer"),await s("sam3-tokenizer-config")));try{n.sessions.push(await r.createSession(await t.ensure("sam3-text-vision_encoder"),{externalData:[{path:"vision_encoder_int4_fp16attn.onnx.data",data:await t.ensure("sam3-text-vision_encoder-data")}]}));for(let o of["sam3-text-encoder","sam3-text-decoder"])n.sessions.push(await r.createSession(await t.ensure(o)));return n}catch(o){throw n.release(),o}}async select(t,r,s,n=1){let[o,a,i]=this.sessions;if(!o||!a||!i)throw new Error("SAM 3 text selector has been released.");let c=this.tokenizer.encode(r).ids;if(c.length>32)throw new Error("SAM 3 text prompts must fit within 32 CLIP tokens.");let l=new BigInt64Array(32).fill(49407n),d=new BigInt64Array(32);c.forEach((x,C)=>{l[C]=BigInt(x),d[C]=1n});let h=await B(a,[{name:"input_ids",data:l,dims:[1,32]},{name:"attention_mask",data:d,dims:[1,32]}]),u=await B(o,[{name:"pixel_values",data:t,dims:[1,3,1008,1008]}]),p=[{name:"text_features",data:v(h,"text_features"),dims:[1,32,256]},{name:"attention_mask",data:d,dims:[1,32]}];for(let x of["fpn_hidden_state_0","fpn_hidden_state_1","fpn_hidden_state_2","fpn_position_encoding_2"]){let C=u[x];if(!C)throw new Error(`Missing SAM 3 concept feature ${x}`);p.push({name:x,data:v(u,x),dims:C.dims})}let f=await B(i,p),_=v(f,"pred_logits"),m=v(f,"pred_masks");if(m.length!==_.length*Ae)throw new Error("Invalid SAM 3 concept mask shape.");let b=[..._.keys()].sort((x,C)=>(_[C]??-1/0)-(_[x]??-1/0)),w=1/(1+Math.exp(-(_[b[0]??0]??-1/0)));if(w<s)throw new Error(`SAM 3 found no confident instance for text ${JSON.stringify(r)} (score ${w.toFixed(3)}, threshold ${s}).`);let P=Math.log(s/(1-s)),j=[];for(let x of b){if(j.length>=n||(_[x]??-1/0)<P)break;let C=m.slice(x*Ae,(x+1)*Ae);j.every(Et=>hn(Et,C)<=.5)&&j.push(C)}return j}release(){for(let t of this.sessions)t.release();this.sessions.length=0}},Ae=288*288;function hn(e,t){let r=0,s=0;for(let n=0;n<e.length;n++){let o=(e[n]??0)>0,a=(t[n]??0)>0;o&&a&&r++,(o||a)&&s++}return s?r/s:0}y();y();var un=2,Me=class{constructor(t,r){this.session=t;this.forget=r}session;forget;users=0;recent=[];hold(){this.users++;let t=!0;return{encode:r=>this.encode(r),release:()=>{t&&(t=!1,!(--this.users>0)&&(this.forget(),this.recent.length=0,this.session.release()))}}}encode(t){let r=pn(t),s=this.recent.find(o=>o.key===r);if(s)return s.features;let n={key:r,features:this.run(t)};return this.recent.push(n),this.recent.length>un&&this.recent.shift(),n.features.catch(()=>{let o=this.recent.indexOf(n);o>=0&&this.recent.splice(o,1)}),n.features}async run(t){let{tensor:r}=Q(t,{width:1008,height:1008,fit:"stretch",channels:"rgb",padValue:0,mean:[127.5,127.5,127.5],std:[127.5,127.5,127.5]}),s=await B(this.session,[{name:"pixel_values",data:r,dims:[1,3,1008,1008]}]);return{pixels:r,feats0:v(s,"image_embeddings.0"),feats1:v(s,"image_embeddings.1"),raw:v(s,"image_embeddings.2")}}},St=new WeakMap;async function xt(e,t,r){let s=St.get(t);s||(s=new Map,St.set(t,s));let n=s,o=n.get(r);return o||(o=(async()=>{let a=await t.createSession(await e.ensure(`sam3-vision_encoder-${r}`),{externalData:[{path:be(r).data,data:await e.ensure(`sam3-vision_encoder-${r}-data`)}]});return new Me(a,()=>n.delete(r))})(),n.set(r,o),o.catch(()=>n.delete(r))),(await o).hold()}function pn(e){let t=e.data,r=2166136261,s=16777619^t.length;for(let n=0;n<t.length;n++){let o=t[n]??0;r=Math.imul(r^o,16777619),s=Math.imul(s^o,1540483477)^s>>>15}return`${e.width}x${e.height}:${(r>>>0).toString(36)}${(s>>>0).toString(36)}`}y();function At(e){let t=new Float32Array(e[0]?.length??0).fill(-1/0);for(let r of e)for(let s=0;s<t.length;s++)t[s]=Math.max(t[s]??-1/0,r[s]??-1/0);return t}y();function Mt(e){let t=e.prompts??(e.text?[{frame:0,text:e.text}]:[]);if(!t.length)throw new Error("SAM 3 requires at least one prompt or text description.");let r=-1;for(let o of t){if(!Number.isSafeInteger(o.frame)||o.frame<=r)throw new Error("SAM 3 prompt frames must be nonnegative, unique and increasing.");if(r=o.frame,o.points!==void 0==(o.text!==void 0))throw new Error("SAM 3 prompts need either points/a box or text.");if(o.points&&ie([{frame:o.frame,points:o.points}]),o.text!==void 0&&!o.text.trim())throw new Error("SAM 3 text prompts must not be empty.");if(o.object!==void 0&&(o.text!==void 0||!Number.isSafeInteger(o.object)||o.object<1))throw new Error("SAM 3 prompt objects are positive track IDs on points prompts.")}let s=e.maxObjects??1;if(!Number.isSafeInteger(s)||s<1)throw new Error("SAM 3 maxObjects must be a positive integer.");let n=e.textThreshold??.5;if(!Number.isFinite(n)||n<=0||n>=1)throw new Error("SAM 3 textThreshold must be between zero and one.")}function pi(e){return`sam3-${e}-429305c8-video-e942689a-support-68ce2746-text-fe8f8e12-v2`}async function mn(e=K(),t){return t??Ue[await Ce(e)]}var Pe=10;function k(e,t,r){return{name:e,data:t,dims:r}}var Pt=class e{constructor(t,r,s){this.store=t;this.provider=r;this.options=s}store;provider;options;sessions=new Map;encoder;position=Ge();banks=[];temporal;noMemory;selector;lastFrame=-1;released=!1;static async create(t={}){if(Ne("SAM 3",t),ne(),t.frameCount!==void 0&&(!Number.isSafeInteger(t.frameCount)||t.frameCount<1))throw new Error("SAM 3 frameCount must be a positive integer.");if(t.textThreshold!==void 0&&(!Number.isFinite(t.textThreshold)||t.textThreshold<=0||t.textThreshold>=1))throw new Error("SAM 3 textThreshold must be between zero and one.");if(t.maxObjects!==void 0&&(!Number.isSafeInteger(t.maxObjects)||t.maxObjects<1))throw new Error("SAM 3 maxObjects must be a positive integer.");let r=t.store??new ee({...t,acceptLicense:t.acceptLicense??!0}),s=t.provider??K(),n=new e(r,s,t);try{n.encoder=await xt(r,s,await mn(s,t.precision));let o=We(await r.ensure("sam3-support"),await r.ensure("sam3-support-data"));n.temporal=o.temporal,n.noMemory=o.noMemory,n.sessions.set("dense_prompt",await s.createSession(o.densePrompt)),n.sessions.set("pointer_position",await s.createSession(o.pointerPosition));let a=await r.ensure("sam3-mask_decoder");n.sessions.set("mask_decoder",await s.createSession(a)),n.sessions.set("dense_decoder",await s.createSession(qe(a)));for(let i of["memory_encoder","memory_attention"])n.sessions.set(i,await s.createSession(await r.ensure(`sam3-${i}`)));return t.store||r.clearMemoryCache(),n}catch(o){throw n.release(),o}}run(t,r){let s=this.sessions.get(t);if(!s)throw new Error("SAM 3 tracker has been released.");return B(s,r)}async process(t,r,s){if(this.released)throw new Error("SAM 3 tracker has been released.");if(!Number.isSafeInteger(r)||r<0||this.lastFrame>=0&&r!==this.lastFrame+1)throw new Error("SAM 3 propagation requires consecutive source frames.");if(s&&Mt({prompts:[{...s,frame:r}]}),this.lastFrame<0&&!s)throw new Error("SAM 3 needs a prompt on its first frame.");if(!this.encoder)throw new Error("SAM 3 tracker has been released.");let{pixels:n,feats0:o,feats1:a,raw:i}=await this.encoder.encode(t),c=[k("feats0",o,[1,32,288,288]),k("feats1",a,[1,64,144,144])],l=await this.seeds(n,s),d=[];for(let[h,u]of this.banks.entries()){let p=l.get(h),f=p?this.initialFeatures(i):await this.condition(i,r,u),_=await this.decode(c,f,p),m=p?.mask??v(_,"high_res_masks"),b=p?.mask?Pe:v(_,"object_score_logits")[0]??-1/0;await this.remember(u,i,_,r,p,m,b),d.push({id:h+1,mask:_n(m,t.width,t.height,b),score:b,iou:p?.mask?1:Math.max(...v(_,"iou_scores"))})}return this.lastFrame=r,{width:t.width,height:t.height,objects:d}}async seeds(t,r){let s=new Map;if(r?.points){let n=(r.object??1)-1;if(n>this.banks.length)throw new Error(`SAM 3 prompt object ${n+1} skips track IDs; the next new ID is ${this.banks.length+1}.`);n===this.banks.length&&this.banks.push(this.newBank()),s.set(n,{points:r.points})}if(r?.text!==void 0){this.selector??=await _e.create(this.store,this.provider),this.options.store||this.store.clearMemoryCache();let n=await this.selector.select(t,r.text,this.options.textThreshold??.5,this.options.maxObjects??(this.options.merge?1/0:1)),o=this.options.merge?[At(n)]:n;this.banks.length=0;for(let[a,i]of o.entries()){this.banks.push(this.newBank());let c=Float32Array.from(i,d=>d>0?1:0),l=await this.run("dense_prompt",[k("mask",c,[1,1,288,288])]);s.set(a,{dense:v(l,"dense_prompt"),mask:fn(i)})}}return s}newBank(){if(!this.temporal)throw new Error("SAM 3 tracker has been released.");return new ce(this.temporal)}decode(t,r,s){let n=s?.points??[{x:0,y:0,label:-1}],o=[...t,k("feats2",r,[1,256,72,72]),k("input_points",Float32Array.from(n.flatMap(a=>[a.x*1008,a.y*1008])),[1,1,n.length,2]),k("input_labels",Int32Array.from(n.map(a=>a.label)),[1,1,n.length])];return s?.dense?this.run("dense_decoder",[...o,k("dense_prompt",s.dense,[1,256,72,72])]):this.run("mask_decoder",o)}initialFeatures(t){if(!this.noMemory)throw new Error("Missing SAM 3 no-memory embedding.");return Float32Array.from(t,(r,s)=>r+(this.noMemory?.[Math.floor(s/5184)]??0))}async condition(t,r,s){let n=s.assemble(r,this.options.frameCount??16),o=await this.run("pointer_position",[k("encoding",n.encoding,[16,256])]),a=new Float32Array(n.pointerCount*256),i=v(o,"position");for(let h=0;h<n.pointerCount;h++)for(let u=0;u<4;u++)a.set(i.subarray(h*64,(h+1)*64),(h*4+u)*64);let c=await this.run("memory_attention",[k("current_vision_features",H(t),[5184,1,256]),k("current_vision_position_embeddings",this.position,[5184,1,256]),k("spatial_memory",n.spatial,[n.spatial.length/64,1,64]),k("spatial_memory_position_embeddings",n.positions,[n.positions.length/64,1,64]),k("pointer_memory",n.pointers,[n.pointerCount*4,1,64]),k("pointer_memory_position_embeddings",a,[n.pointerCount*4,1,64])]),l=v(c,"conditioned_features"),d=new Float32Array(l.length);for(let h=0;h<5184;h++)for(let u=0;u<256;u++)d[u*5184+h]=l[h*256+u]??0;return d}async remember(t,r,s,n,o,a,i){let c=await this.run("memory_encoder",[k("vision_features",r,[1,256,72,72]),k("pred_masks_high_res",a,[1,1,1008,1008]),k("object_score_logits",Float32Array.of(i),[1,1]),k("is_mask_from_pts",new Uint8Array([o?1:0]),[1])]);t.remember({frame:n,tokens:v(c,"memory_tokens").slice(),positions:v(c,"memory_pos_enc").slice(),pointer:v(s,"object_pointer").slice()},o!==void 0)}release(){for(let t of this.sessions.values())t.release();this.sessions.clear(),this.encoder?.release(),this.encoder=void 0,this.selector?.release(),this.banks.length=0,this.temporal=void 0,this.noMemory=void 0,this.released=!0}};function _n(e,t,r,s){if(e.length!==1008*1008)throw new Error("Invalid SAM 3 high-resolution mask shape.");let n=new Uint8Array(t*r);if(s<=0)return n;for(let o=0;o<r;o++)for(let a=0;a<t;a++){let i=Math.max(0,Math.min(1007,(o+.5)*1008/r-.5)),c=Math.max(0,Math.min(1007,(a+.5)*1008/t-.5)),l=Math.floor(i),d=Math.floor(c),h=i-l,u=c-d,p=Math.min(1007,l+1),f=Math.min(1007,d+1),_=(e[l*1008+d]??0)*(1-u)+(e[l*1008+f]??0)*u,m=(e[p*1008+d]??0)*(1-u)+(e[p*1008+f]??0)*u;n[o*t+a]=_*(1-h)+m*h>0?255:0}return n}function fn(e){let t=new Float32Array(1016064);for(let r=0;r<1008;r++){let s=Math.max(0,Math.min(287,(r+.5)*288/1008-.5)),n=Math.floor(s),o=Math.min(287,n+1),a=s-n;for(let i=0;i<1008;i++){let c=Math.max(0,Math.min(287,(i+.5)*288/1008-.5)),l=Math.floor(c),d=Math.min(287,l+1),h=c-l,u=(e[n*288+l]??0)*(1-h)+(e[n*288+d]??0)*h,p=(e[o*288+l]??0)*(1-h)+(e[o*288+d]??0)*h;t[r*1008+i]=u*(1-a)+p*a>0?Pe:-Pe}}return t}export{re as SAM2_EXPORTS,Ue as SAM3_ENCODER,Ie as SAM_LICENSE,zt as SAM_LICENSE_TERMS_URL,Ft as SAM_MODELS,oe as Sam2MemoryBank,Le as Sam2Tracker,ce as Sam3MemoryBank,_e as Sam3TextSelector,Pt as Sam3Tracker,Ne as assertSamLicenseAccepted,It as decodeSam2Mask,ne as ensureSamModelsRegistered,$n as sam2Revision,H as sam2Tokens,qe as sam3DenseDecoder,be as sam3EncoderFiles,v as sam3Floats,_n as sam3Mask,Ge as sam3Position,mn as sam3Precision,pi as sam3Revision,B as sam3Run,We as sam3SupportGraphs,ie as validateSam2Prompts,Mt as validateSam3Prompts};
|