ibelem commited on
Commit
b2edc6b
·
verified ·
1 Parent(s): f95441d

Upload 11 files

Browse files
README.md ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: WebNN Video Object Detection
3
+ emoji: 💻
4
+ colorFrom: blue
5
+ colorTo: pink
6
+ sdk: static
7
+ pinned: false
8
+ ---
assets/index-D77ZMihC.css ADDED
@@ -0,0 +1 @@
 
 
1
+ *{box-sizing:border-box;padding:0;margin:0;font-family:sans-serif}html,body{height:100%}body{padding:16px 32px}body,#container{display:flex;flex-direction:column;justify-content:center;align-items:center}#controls{display:flex;padding:1rem;gap:1rem}#controls>div{text-align:center}h1,h4{text-align:center}h4{margin-top:.5rem}#container{position:relative;width:540px;height:405px;max-width:100%;max-height:100%;border:2px dashed #d1d5db;border-radius:.75rem;overflow:hidden;margin-top:1rem;background-size:100% 100%;background-position:center;background-repeat:no-repeat}#overlay,canvas{position:absolute;width:100%;height:100%}#status{min-height:16px;margin:8px 0}.bounding-box{position:absolute;box-sizing:border-box;border:solid 2px}.bounding-box-label{color:#fff;position:absolute;font-size:12px;margin:-16px 0 0 -2px;padding:1px}#size-container,#scale-container{display:none}a{color:#275efe;text-decoration:none}a:hover{text-decoration:underline}#versions{margin-top:.5rem;font-size:.8rem;color:#0000004d}
assets/index-Dcc8IGX5.js ADDED
The diff for this file is too large to render. See raw diff
 
assets/ort-wasm-simd-threaded.jsep-B0T3yYHD.wasm ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c46655e8a94afc45338d4cb2b840475f88e5012d524509916e505079c00bfa39
3
+ size 21596019
index.html ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>Transformers.js | Real-time object detection</title>
7
+ <script type="module" crossorigin src="/assets/index-Dcc8IGX5.js"></script>
8
+ <link rel="stylesheet" crossorigin href="/assets/index-D77ZMihC.css">
9
+ </head>
10
+
11
+ <body>
12
+ <h1>
13
+ Real-time object detection w/ YOLO12n
14
+ </h1>
15
+ <h4>
16
+ Runs locally in your browser, powered by
17
+ <a href="http://github.com/huggingface/transformers.js" target="_blank"
18
+ >🤗 Transformers.js</a
19
+ > x <label id="device"></label>
20
+ </h4>
21
+ <div id="container">
22
+ <video id="video" autoplay muted playsinline></video>
23
+ <canvas id="canvas" width="360" height="240"></canvas>
24
+ <div id="overlay"></div>
25
+ </div>
26
+ <div id="controls">
27
+ <div id="size-container">
28
+ <label>Image size</label>
29
+ (<label id="size-value">640</label>)
30
+ <br />
31
+ <input
32
+ id="size"
33
+ type="range"
34
+ min="640"
35
+ max="640"
36
+ step="32"
37
+ value="640"
38
+ disabled
39
+ />
40
+ </div>
41
+ <div>
42
+ <label>Threshold</label>
43
+ (<label id="threshold-value">0.25</label>)
44
+ <br />
45
+ <input
46
+ id="threshold"
47
+ type="range"
48
+ min="0.01"
49
+ max="1"
50
+ step="0.01"
51
+ value="0.25"
52
+ disabled
53
+ />
54
+ </div>
55
+ <div id="scale-container">
56
+ <label>Scale</label>
57
+ (<label id="scale-value">1</label>)
58
+ <br />
59
+ <input
60
+ id="scale"
61
+ type="range"
62
+ min="1"
63
+ max="1"
64
+ step="0.01"
65
+ value="1"
66
+ disabled
67
+ />
68
+ </div>
69
+ </div>
70
+ <label id="status"></label>
71
+ <div>
72
+ <a href="?device=webnn-gpu">WebNN GPU</a> · <a href="?device=webnn-npu">WebNN NPU</a>
73
+ </div>
74
+ <div id="versions">
75
+ @huggingface/transformers: 3.7.3 · onnxruntime-web: 1.22.0-dev.20250409-89f8206ba4
76
+ </div>
77
+ </body>
78
+ </html>
src/index.html ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>Transformers.js | Real-time object detection</title>
7
+ <link rel="stylesheet" href="/style.css" />
8
+ </head>
9
+
10
+ <body>
11
+ <h1>
12
+ Real-time object detection w/ YOLO12n
13
+ </h1>
14
+ <h4>
15
+ Runs locally in your browser, powered by
16
+ <a href="http://github.com/huggingface/transformers.js" target="_blank"
17
+ >🤗 Transformers.js</a
18
+ > x <label id="device"></label>
19
+ </h4>
20
+ <div id="container">
21
+ <video id="video" autoplay muted playsinline></video>
22
+ <canvas id="canvas" width="360" height="240"></canvas>
23
+ <div id="overlay"></div>
24
+ </div>
25
+ <div id="controls">
26
+ <div id="size-container">
27
+ <label>Image size</label>
28
+ (<label id="size-value">640</label>)
29
+ <br />
30
+ <input
31
+ id="size"
32
+ type="range"
33
+ min="640"
34
+ max="640"
35
+ step="32"
36
+ value="640"
37
+ disabled
38
+ />
39
+ </div>
40
+ <div>
41
+ <label>Threshold</label>
42
+ (<label id="threshold-value">0.25</label>)
43
+ <br />
44
+ <input
45
+ id="threshold"
46
+ type="range"
47
+ min="0.01"
48
+ max="1"
49
+ step="0.01"
50
+ value="0.25"
51
+ disabled
52
+ />
53
+ </div>
54
+ <div id="scale-container">
55
+ <label>Scale</label>
56
+ (<label id="scale-value">1</label>)
57
+ <br />
58
+ <input
59
+ id="scale"
60
+ type="range"
61
+ min="1"
62
+ max="1"
63
+ step="0.01"
64
+ value="1"
65
+ disabled
66
+ />
67
+ </div>
68
+ </div>
69
+ <label id="status"></label>
70
+ <div>
71
+ <a href="?device=webnn-gpu">WebNN GPU</a> · <a href="?device=webnn-npu">WebNN NPU</a>
72
+ </div>
73
+ <div id="versions">
74
+ @huggingface/transformers: 3.7.3 · onnxruntime-web: 1.22.0-dev.20250409-89f8206ba4
75
+ </div>
76
+ <script type="module" src="/main.js"></script>
77
+ </body>
78
+ </html>
src/main.js ADDED
@@ -0,0 +1,383 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { AutoModel, AutoProcessor, RawImage } from "@huggingface/transformers";
2
+
3
+ // Reference the elements that we will need
4
+ const deviceLabel = document.getElementById("device");
5
+ const status = document.getElementById("status");
6
+ const container = document.getElementById("container");
7
+ const overlay = document.getElementById("overlay");
8
+ const canvas = document.getElementById("canvas");
9
+ const video = document.getElementById("video");
10
+ const thresholdSlider = document.getElementById("threshold");
11
+ const thresholdLabel = document.getElementById("threshold-value");
12
+ const sizeSlider = document.getElementById("size");
13
+ const sizeLabel = document.getElementById("size-value");
14
+ const scaleSlider = document.getElementById("scale");
15
+ const scaleLabel = document.getElementById("scale-value");
16
+
17
+ function setStreamSize(width, height) {
18
+ video.width = canvas.width = Math.round(width);
19
+ video.height = canvas.height = Math.round(height);
20
+
21
+ // Make sure overlay matches canvas exactly
22
+ overlay.style.width = `${canvas.width}px`;
23
+ overlay.style.height = `${canvas.height}px`;
24
+ }
25
+
26
+ status.textContent = "Loading model...";
27
+
28
+ function getDeviceConfig(deviceParam, dtypeParam) {
29
+ const defaultDevice = 'webnn-gpu';
30
+ const defaultDtype = 'fp16';
31
+ const webnnDevices = ['webnn-gpu', 'webnn-cpu', 'webnn-npu'];
32
+ const supportedDtypes = ['fp16', 'fp32', 'int8'];
33
+
34
+ const device = (deviceParam || defaultDevice).toLowerCase();
35
+ const dtype = (dtypeParam && supportedDtypes.includes(dtypeParam.toLowerCase()))
36
+ ? dtypeParam.toLowerCase()
37
+ : (webnnDevices.includes(device) ? defaultDtype : 'fp32');
38
+
39
+ const sessionOptions = { logSeverityLevel: 0 };
40
+ return { device, dtype, sessionOptions };
41
+ }
42
+
43
+ const urlParams = new URLSearchParams(window.location.search);
44
+ let { device, dtype, sessionOptions } = getDeviceConfig(urlParams.get('device'), urlParams.get('dtype'));
45
+
46
+ let deviceValue = 'WebNN GPU';
47
+ switch (device) {
48
+ case 'webgpu':
49
+ deviceValue = 'WebGPU';
50
+ break;
51
+ case 'webnn-gpu':
52
+ deviceValue = 'WebNN GPU';
53
+ break;
54
+ case 'webnn-cpu':
55
+ deviceValue = 'WebNN CPU';
56
+ break;
57
+ case 'webnn-npu':
58
+ deviceValue = 'WebNN NPU';
59
+ break;
60
+ default:
61
+ deviceValue = 'WebNN GPU';
62
+ }
63
+
64
+ deviceLabel.textContent = deviceValue;
65
+ if (!['webgpu', 'webnn-gpu', 'webnn-cpu', 'webnn-npu'].includes(device)) {
66
+ status.textContent = `Unsupported device ${device}. Falling back to WebNN GPU.`;
67
+ device = 'webnn-gpu';
68
+ }
69
+
70
+ // Load model and processor
71
+ const model_id = "webnn/yolo12n";
72
+ let model, processor;
73
+
74
+ try {
75
+ status.textContent = "Loading model...";
76
+
77
+ model = await AutoModel.from_pretrained(model_id, {
78
+ device: device,
79
+ dtype: dtype,
80
+ session_options: sessionOptions
81
+ });
82
+
83
+ processor = await AutoProcessor.from_pretrained(model_id);
84
+
85
+ // Configure processor to match model's expected input size (640x640)
86
+ processor.feature_extractor.size = { width: 640, height: 640 };
87
+
88
+ status.textContent = "Model loaded successfully!";
89
+ } catch (err) {
90
+ console.error(err);
91
+ let errorMessage = `Error: ${err.message}`;
92
+ status.textContent = errorMessage;
93
+ status.style.color = "red";
94
+
95
+ // Stop execution
96
+ throw err;
97
+ }
98
+
99
+ // Set up controls
100
+ let scale = 1;
101
+ scaleSlider.addEventListener("input", () => {
102
+ scale = Number(scaleSlider.value);
103
+ setStreamSize(video.videoWidth * scale, video.videoHeight * scale);
104
+ scaleLabel.textContent = scale;
105
+ });
106
+ scaleSlider.disabled = false;
107
+
108
+ let threshold = 0.25;
109
+ thresholdSlider.addEventListener("input", () => {
110
+ threshold = Number(thresholdSlider.value);
111
+ thresholdLabel.textContent = threshold.toFixed(2);
112
+ });
113
+ thresholdSlider.disabled = false;
114
+
115
+ let size = 640;
116
+ sizeSlider.addEventListener("input", () => {
117
+ size = Number(sizeSlider.value);
118
+ processor.feature_extractor.size = { width: size, height: size };
119
+ sizeLabel.textContent = size;
120
+ });
121
+ sizeSlider.disabled = false;
122
+
123
+ status.textContent = "Ready";
124
+
125
+ const COLOURS = [
126
+ "#EF4444",
127
+ "#4299E1",
128
+ "#059669",
129
+ "#FBBF24",
130
+ "#4B52B1",
131
+ "#7B3AC2",
132
+ "#ED507A",
133
+ "#1DD1A1",
134
+ "#F3873A",
135
+ "#4B5563",
136
+ "#DC2626",
137
+ "#1852B4",
138
+ "#18A35D",
139
+ "#F59E0B",
140
+ "#4059BE",
141
+ "#6027A5",
142
+ "#D63D60",
143
+ "#00AC9B",
144
+ "#E64A19",
145
+ "#272A34",
146
+ ];
147
+
148
+ // Render a bounding box and label on the image
149
+ function renderBox(detection, canvasWidth, canvasHeight) {
150
+ const { bbox, score, class: classId } = detection;
151
+ if (score < threshold) return; // Skip boxes with low confidence
152
+
153
+ const [x, y, width, height] = bbox;
154
+ const color = COLOURS[classId % COLOURS.length];
155
+
156
+ // Ensure coordinates are within bounds
157
+ const clampedX = Math.max(0, Math.min(x, canvasWidth - width));
158
+ const clampedY = Math.max(0, Math.min(y, canvasHeight - height));
159
+ const clampedWidth = Math.max(1, Math.min(width, canvasWidth - clampedX));
160
+ const clampedHeight = Math.max(1, Math.min(height, canvasHeight - clampedY));
161
+
162
+ // Draw the box
163
+ const boxElement = document.createElement("div");
164
+ boxElement.className = "bounding-box";
165
+ Object.assign(boxElement.style, {
166
+ position: "absolute",
167
+ left: `${clampedX}px`,
168
+ top: `${clampedY}px`,
169
+ width: `${clampedWidth}px`,
170
+ height: `${clampedHeight}px`,
171
+ border: `2px solid ${color}`,
172
+ backgroundColor: "transparent",
173
+ pointerEvents: "none",
174
+ boxSizing: "border-box"
175
+ });
176
+
177
+ // Draw label
178
+ const labelElement = document.createElement("span");
179
+ labelElement.textContent = `${model.config.id2label[classId]} (${(100 * score).toFixed(1)}%)`;
180
+ labelElement.className = "bounding-box-label";
181
+ Object.assign(labelElement.style, {
182
+ backgroundColor: color,
183
+ color: "white",
184
+ padding: "2px 6px",
185
+ fontSize: "12px",
186
+ position: "absolute",
187
+ top: "-22px",
188
+ left: "0px",
189
+ whiteSpace: "nowrap",
190
+ borderRadius: "2px"
191
+ });
192
+
193
+ boxElement.appendChild(labelElement);
194
+ overlay.appendChild(boxElement);
195
+ }
196
+
197
+ function calculateIoU(boxA, boxB) {
198
+ const [xA, yA, wA, hA] = boxA;
199
+ const [xB, yB, wB, hB] = boxB;
200
+
201
+ const x1 = Math.max(xA, xB);
202
+ const y1 = Math.max(yA, yB);
203
+ const x2 = Math.min(xA + wA, xB + wB);
204
+ const y2 = Math.min(yA + hA, yB + hB);
205
+
206
+ const intersection = Math.max(0, x2 - x1) * Math.max(0, y2 - y1);
207
+ const areaA = wA * hA;
208
+ const areaB = wB * hB;
209
+
210
+ const union = areaA + areaB - intersection;
211
+ return intersection / union;
212
+ }
213
+
214
+ function applyNMS(detections, iouThreshold = 0.5) {
215
+ // Sort detections by confidence score in descending order
216
+ detections.sort((a, b) => b.score - a.score);
217
+
218
+ const filteredDetections = [];
219
+ const used = new Array(detections.length).fill(false);
220
+
221
+ for (let i = 0; i < detections.length; i++) {
222
+ if (used[i]) continue;
223
+
224
+ const detectionA = detections[i];
225
+ filteredDetections.push(detectionA);
226
+
227
+ for (let j = i + 1; j < detections.length; j++) {
228
+ if (used[j]) continue;
229
+
230
+ const detectionB = detections[j];
231
+
232
+ // Only apply NMS to boxes of the same class
233
+ if (detectionA.class === detectionB.class) {
234
+ const iou = calculateIoU(detectionA.bbox, detectionB.bbox);
235
+ if (iou > iouThreshold) {
236
+ used[j] = true; // Suppress overlapping box
237
+ }
238
+ }
239
+ }
240
+ }
241
+
242
+ return filteredDetections;
243
+ }
244
+
245
+ function processDetections(outputs, canvasWidth, canvasHeight) {
246
+ // Clear previous detections
247
+ overlay.innerHTML = "";
248
+
249
+ // Process YOLOv12 outputs
250
+ const predictions = outputs.tolist()[0]; // Get the first batch
251
+ const numClasses = predictions.length - 4; // Subtract 4 for bbox coordinates
252
+ const numPredictions = predictions[0].length; // Number of predictions
253
+
254
+ let detections = [];
255
+
256
+ // Process each prediction
257
+ for (let i = 0; i < numPredictions; i++) {
258
+ const x = predictions[0][i]; // center x (0-640)
259
+ const y = predictions[1][i]; // center y (0-640)
260
+ const w = predictions[2][i]; // width (0-640)
261
+ const h = predictions[3][i]; // height (0-640)
262
+
263
+ let maxScore = 0;
264
+ let maxClassIndex = -1;
265
+
266
+ for (let c = 0; c < numClasses; c++) {
267
+ const score = predictions[c + 4][i];
268
+ if (score > maxScore) {
269
+ maxScore = score;
270
+ maxClassIndex = c;
271
+ }
272
+ }
273
+
274
+ if (maxScore < threshold) continue;
275
+
276
+ // Convert from center coordinates to top-left coordinates
277
+ // Scale from 640x640 model output to canvas dimensions
278
+ const scaleX = canvasWidth / 640;
279
+ const scaleY = canvasHeight / 640;
280
+
281
+ const centerX = x * scaleX;
282
+ const centerY = y * scaleY;
283
+ const boxWidth = w * scaleX;
284
+ const boxHeight = h * scaleY;
285
+
286
+ const xmin = centerX - (boxWidth / 2);
287
+ const ymin = centerY - (boxHeight / 2);
288
+
289
+ detections.push({
290
+ bbox: [xmin, ymin, boxWidth, boxHeight],
291
+ score: maxScore,
292
+ class: maxClassIndex,
293
+ });
294
+ }
295
+
296
+ // Apply Non-Maximum Suppression to remove duplicate detections
297
+ const filteredDetections = applyNMS(detections, 0.45); // Lower IoU threshold for better suppression
298
+
299
+ // Debug: Log detection info
300
+ if (filteredDetections.length > 0) {
301
+ console.log(`Found ${filteredDetections.length} detections:`,
302
+ filteredDetections.map(d => ({
303
+ class: model.config.id2label[d.class],
304
+ score: d.score.toFixed(3),
305
+ bbox: d.bbox.map(v => Math.round(v))
306
+ }))
307
+ );
308
+ }
309
+
310
+ // Render filtered detections
311
+ filteredDetections.forEach((detection) => {
312
+ renderBox(detection, canvasWidth, canvasHeight);
313
+ });
314
+
315
+ return filteredDetections.length;
316
+ }
317
+
318
+ let isProcessing = false;
319
+ let previousTime;
320
+ const context = canvas.getContext("2d", { willReadFrequently: true });
321
+ function updateCanvas() {
322
+ const { width, height } = canvas;
323
+ context.drawImage(video, 0, 0, width, height);
324
+
325
+ if (!isProcessing) {
326
+ isProcessing = true;
327
+ (async function () {
328
+ try {
329
+ // Read the current frame from the video
330
+ const pixelData = context.getImageData(0, 0, width, height).data;
331
+ const image = new RawImage(pixelData, width, height, 4);
332
+
333
+ // Process the image and run the model
334
+ const inputs = await processor(image);
335
+ const { outputs } = await model(inputs);
336
+
337
+ // Process detections and render boxes
338
+ const detectionCount = processDetections(outputs, width, height);
339
+
340
+ if (previousTime !== undefined) {
341
+ const fps = 1000 / (performance.now() - previousTime);
342
+ status.textContent = `FPS: ${fps.toFixed(2)} | Detections: ${detectionCount}`;
343
+ }
344
+ previousTime = performance.now();
345
+ } catch (error) {
346
+ console.error("Detection error:", error);
347
+ status.textContent = `Error: ${error.message}`;
348
+ } finally {
349
+ isProcessing = false;
350
+ }
351
+ })();
352
+ }
353
+
354
+ window.requestAnimationFrame(updateCanvas);
355
+ }
356
+
357
+ // Start the video stream
358
+ navigator.mediaDevices
359
+ .getUserMedia(
360
+ { video: true }, // Ask for video
361
+ )
362
+ .then((stream) => {
363
+ // Set up the video and canvas elements.
364
+ video.srcObject = stream;
365
+ video.play();
366
+
367
+ const videoTrack = stream.getVideoTracks()[0];
368
+ const { width, height } = videoTrack.getSettings();
369
+
370
+ setStreamSize(width * scale, height * scale);
371
+
372
+ // Set container width and height depending on the image aspect ratio
373
+ const ar = width / height;
374
+ const [cw, ch] = ar > 720 / 405 ? [720, 720 / ar] : [405 * ar, 405];
375
+ container.style.width = `${cw}px`;
376
+ container.style.height = `${ch}px`;
377
+
378
+ // Start the animation loop
379
+ window.requestAnimationFrame(updateCanvas);
380
+ })
381
+ .catch((error) => {
382
+ alert(error);
383
+ });
src/package-lock.json ADDED
@@ -0,0 +1,2012 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "video-object-detection",
3
+ "version": "0.0.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "video-object-detection",
9
+ "version": "0.0.0",
10
+ "dependencies": {
11
+ "@huggingface/transformers": "3.7.1",
12
+ "onnxruntime-node": "^1.21.0"
13
+ },
14
+ "devDependencies": {
15
+ "vite": "^7.1.6"
16
+ }
17
+ },
18
+ "node_modules/@emnapi/runtime": {
19
+ "version": "1.4.3",
20
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.3.tgz",
21
+ "integrity": "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==",
22
+ "license": "MIT",
23
+ "optional": true,
24
+ "dependencies": {
25
+ "tslib": "^2.4.0"
26
+ }
27
+ },
28
+ "node_modules/@esbuild/aix-ppc64": {
29
+ "version": "0.25.0",
30
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz",
31
+ "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==",
32
+ "cpu": [
33
+ "ppc64"
34
+ ],
35
+ "dev": true,
36
+ "optional": true,
37
+ "os": [
38
+ "aix"
39
+ ],
40
+ "engines": {
41
+ "node": ">=18"
42
+ }
43
+ },
44
+ "node_modules/@esbuild/android-arm": {
45
+ "version": "0.25.0",
46
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz",
47
+ "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==",
48
+ "cpu": [
49
+ "arm"
50
+ ],
51
+ "dev": true,
52
+ "optional": true,
53
+ "os": [
54
+ "android"
55
+ ],
56
+ "engines": {
57
+ "node": ">=18"
58
+ }
59
+ },
60
+ "node_modules/@esbuild/android-arm64": {
61
+ "version": "0.25.0",
62
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz",
63
+ "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==",
64
+ "cpu": [
65
+ "arm64"
66
+ ],
67
+ "dev": true,
68
+ "optional": true,
69
+ "os": [
70
+ "android"
71
+ ],
72
+ "engines": {
73
+ "node": ">=18"
74
+ }
75
+ },
76
+ "node_modules/@esbuild/android-x64": {
77
+ "version": "0.25.0",
78
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz",
79
+ "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==",
80
+ "cpu": [
81
+ "x64"
82
+ ],
83
+ "dev": true,
84
+ "optional": true,
85
+ "os": [
86
+ "android"
87
+ ],
88
+ "engines": {
89
+ "node": ">=18"
90
+ }
91
+ },
92
+ "node_modules/@esbuild/darwin-arm64": {
93
+ "version": "0.25.0",
94
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz",
95
+ "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==",
96
+ "cpu": [
97
+ "arm64"
98
+ ],
99
+ "dev": true,
100
+ "optional": true,
101
+ "os": [
102
+ "darwin"
103
+ ],
104
+ "engines": {
105
+ "node": ">=18"
106
+ }
107
+ },
108
+ "node_modules/@esbuild/darwin-x64": {
109
+ "version": "0.25.0",
110
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz",
111
+ "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==",
112
+ "cpu": [
113
+ "x64"
114
+ ],
115
+ "dev": true,
116
+ "optional": true,
117
+ "os": [
118
+ "darwin"
119
+ ],
120
+ "engines": {
121
+ "node": ">=18"
122
+ }
123
+ },
124
+ "node_modules/@esbuild/freebsd-arm64": {
125
+ "version": "0.25.0",
126
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz",
127
+ "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==",
128
+ "cpu": [
129
+ "arm64"
130
+ ],
131
+ "dev": true,
132
+ "optional": true,
133
+ "os": [
134
+ "freebsd"
135
+ ],
136
+ "engines": {
137
+ "node": ">=18"
138
+ }
139
+ },
140
+ "node_modules/@esbuild/freebsd-x64": {
141
+ "version": "0.25.0",
142
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz",
143
+ "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==",
144
+ "cpu": [
145
+ "x64"
146
+ ],
147
+ "dev": true,
148
+ "optional": true,
149
+ "os": [
150
+ "freebsd"
151
+ ],
152
+ "engines": {
153
+ "node": ">=18"
154
+ }
155
+ },
156
+ "node_modules/@esbuild/linux-arm": {
157
+ "version": "0.25.0",
158
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz",
159
+ "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==",
160
+ "cpu": [
161
+ "arm"
162
+ ],
163
+ "dev": true,
164
+ "optional": true,
165
+ "os": [
166
+ "linux"
167
+ ],
168
+ "engines": {
169
+ "node": ">=18"
170
+ }
171
+ },
172
+ "node_modules/@esbuild/linux-arm64": {
173
+ "version": "0.25.0",
174
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz",
175
+ "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==",
176
+ "cpu": [
177
+ "arm64"
178
+ ],
179
+ "dev": true,
180
+ "optional": true,
181
+ "os": [
182
+ "linux"
183
+ ],
184
+ "engines": {
185
+ "node": ">=18"
186
+ }
187
+ },
188
+ "node_modules/@esbuild/linux-ia32": {
189
+ "version": "0.25.0",
190
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz",
191
+ "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==",
192
+ "cpu": [
193
+ "ia32"
194
+ ],
195
+ "dev": true,
196
+ "optional": true,
197
+ "os": [
198
+ "linux"
199
+ ],
200
+ "engines": {
201
+ "node": ">=18"
202
+ }
203
+ },
204
+ "node_modules/@esbuild/linux-loong64": {
205
+ "version": "0.25.0",
206
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz",
207
+ "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==",
208
+ "cpu": [
209
+ "loong64"
210
+ ],
211
+ "dev": true,
212
+ "optional": true,
213
+ "os": [
214
+ "linux"
215
+ ],
216
+ "engines": {
217
+ "node": ">=18"
218
+ }
219
+ },
220
+ "node_modules/@esbuild/linux-mips64el": {
221
+ "version": "0.25.0",
222
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz",
223
+ "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==",
224
+ "cpu": [
225
+ "mips64el"
226
+ ],
227
+ "dev": true,
228
+ "optional": true,
229
+ "os": [
230
+ "linux"
231
+ ],
232
+ "engines": {
233
+ "node": ">=18"
234
+ }
235
+ },
236
+ "node_modules/@esbuild/linux-ppc64": {
237
+ "version": "0.25.0",
238
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz",
239
+ "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==",
240
+ "cpu": [
241
+ "ppc64"
242
+ ],
243
+ "dev": true,
244
+ "optional": true,
245
+ "os": [
246
+ "linux"
247
+ ],
248
+ "engines": {
249
+ "node": ">=18"
250
+ }
251
+ },
252
+ "node_modules/@esbuild/linux-riscv64": {
253
+ "version": "0.25.0",
254
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz",
255
+ "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==",
256
+ "cpu": [
257
+ "riscv64"
258
+ ],
259
+ "dev": true,
260
+ "optional": true,
261
+ "os": [
262
+ "linux"
263
+ ],
264
+ "engines": {
265
+ "node": ">=18"
266
+ }
267
+ },
268
+ "node_modules/@esbuild/linux-s390x": {
269
+ "version": "0.25.0",
270
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz",
271
+ "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==",
272
+ "cpu": [
273
+ "s390x"
274
+ ],
275
+ "dev": true,
276
+ "optional": true,
277
+ "os": [
278
+ "linux"
279
+ ],
280
+ "engines": {
281
+ "node": ">=18"
282
+ }
283
+ },
284
+ "node_modules/@esbuild/linux-x64": {
285
+ "version": "0.25.0",
286
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz",
287
+ "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==",
288
+ "cpu": [
289
+ "x64"
290
+ ],
291
+ "dev": true,
292
+ "optional": true,
293
+ "os": [
294
+ "linux"
295
+ ],
296
+ "engines": {
297
+ "node": ">=18"
298
+ }
299
+ },
300
+ "node_modules/@esbuild/netbsd-arm64": {
301
+ "version": "0.25.0",
302
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz",
303
+ "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==",
304
+ "cpu": [
305
+ "arm64"
306
+ ],
307
+ "dev": true,
308
+ "optional": true,
309
+ "os": [
310
+ "netbsd"
311
+ ],
312
+ "engines": {
313
+ "node": ">=18"
314
+ }
315
+ },
316
+ "node_modules/@esbuild/netbsd-x64": {
317
+ "version": "0.25.0",
318
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz",
319
+ "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==",
320
+ "cpu": [
321
+ "x64"
322
+ ],
323
+ "dev": true,
324
+ "optional": true,
325
+ "os": [
326
+ "netbsd"
327
+ ],
328
+ "engines": {
329
+ "node": ">=18"
330
+ }
331
+ },
332
+ "node_modules/@esbuild/openbsd-arm64": {
333
+ "version": "0.25.0",
334
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz",
335
+ "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==",
336
+ "cpu": [
337
+ "arm64"
338
+ ],
339
+ "dev": true,
340
+ "optional": true,
341
+ "os": [
342
+ "openbsd"
343
+ ],
344
+ "engines": {
345
+ "node": ">=18"
346
+ }
347
+ },
348
+ "node_modules/@esbuild/openbsd-x64": {
349
+ "version": "0.25.0",
350
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz",
351
+ "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==",
352
+ "cpu": [
353
+ "x64"
354
+ ],
355
+ "dev": true,
356
+ "optional": true,
357
+ "os": [
358
+ "openbsd"
359
+ ],
360
+ "engines": {
361
+ "node": ">=18"
362
+ }
363
+ },
364
+ "node_modules/@esbuild/sunos-x64": {
365
+ "version": "0.25.0",
366
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz",
367
+ "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==",
368
+ "cpu": [
369
+ "x64"
370
+ ],
371
+ "dev": true,
372
+ "optional": true,
373
+ "os": [
374
+ "sunos"
375
+ ],
376
+ "engines": {
377
+ "node": ">=18"
378
+ }
379
+ },
380
+ "node_modules/@esbuild/win32-arm64": {
381
+ "version": "0.25.0",
382
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz",
383
+ "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==",
384
+ "cpu": [
385
+ "arm64"
386
+ ],
387
+ "dev": true,
388
+ "optional": true,
389
+ "os": [
390
+ "win32"
391
+ ],
392
+ "engines": {
393
+ "node": ">=18"
394
+ }
395
+ },
396
+ "node_modules/@esbuild/win32-ia32": {
397
+ "version": "0.25.0",
398
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz",
399
+ "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==",
400
+ "cpu": [
401
+ "ia32"
402
+ ],
403
+ "dev": true,
404
+ "optional": true,
405
+ "os": [
406
+ "win32"
407
+ ],
408
+ "engines": {
409
+ "node": ">=18"
410
+ }
411
+ },
412
+ "node_modules/@esbuild/win32-x64": {
413
+ "version": "0.25.0",
414
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz",
415
+ "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==",
416
+ "cpu": [
417
+ "x64"
418
+ ],
419
+ "dev": true,
420
+ "optional": true,
421
+ "os": [
422
+ "win32"
423
+ ],
424
+ "engines": {
425
+ "node": ">=18"
426
+ }
427
+ },
428
+ "node_modules/@huggingface/jinja": {
429
+ "version": "0.5.1",
430
+ "resolved": "https://registry.npmjs.org/@huggingface/jinja/-/jinja-0.5.1.tgz",
431
+ "integrity": "sha512-yUZLld4lrM9iFxHCwFQ7D1HW2MWMwSbeB7WzWqFYDWK+rEb+WldkLdAJxUPOmgICMHZLzZGVcVjFh3w/YGubng==",
432
+ "license": "MIT",
433
+ "engines": {
434
+ "node": ">=18"
435
+ }
436
+ },
437
+ "node_modules/@huggingface/transformers": {
438
+ "version": "3.7.1",
439
+ "resolved": "https://registry.npmjs.org/@huggingface/transformers/-/transformers-3.7.1.tgz",
440
+ "integrity": "sha512-z14yXkm7G/FKGM8Y24NLDbrSP/kbn62byKNYF04pZ6pidTVpucqRSderQgpfQWoMVrhOKmrZs29G3yQ1R28sIA==",
441
+ "license": "Apache-2.0",
442
+ "dependencies": {
443
+ "@huggingface/jinja": "^0.5.1",
444
+ "onnxruntime-node": "1.21.0",
445
+ "onnxruntime-web": "1.22.0-dev.20250409-89f8206ba4",
446
+ "sharp": "^0.34.1"
447
+ }
448
+ },
449
+ "node_modules/@img/sharp-darwin-arm64": {
450
+ "version": "0.34.1",
451
+ "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.1.tgz",
452
+ "integrity": "sha512-pn44xgBtgpEbZsu+lWf2KNb6OAf70X68k+yk69Ic2Xz11zHR/w24/U49XT7AeRwJ0Px+mhALhU5LPci1Aymk7A==",
453
+ "cpu": [
454
+ "arm64"
455
+ ],
456
+ "license": "Apache-2.0",
457
+ "optional": true,
458
+ "os": [
459
+ "darwin"
460
+ ],
461
+ "engines": {
462
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
463
+ },
464
+ "funding": {
465
+ "url": "https://opencollective.com/libvips"
466
+ },
467
+ "optionalDependencies": {
468
+ "@img/sharp-libvips-darwin-arm64": "1.1.0"
469
+ }
470
+ },
471
+ "node_modules/@img/sharp-darwin-x64": {
472
+ "version": "0.34.1",
473
+ "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.1.tgz",
474
+ "integrity": "sha512-VfuYgG2r8BpYiOUN+BfYeFo69nP/MIwAtSJ7/Zpxc5QF3KS22z8Pvg3FkrSFJBPNQ7mmcUcYQFBmEQp7eu1F8Q==",
475
+ "cpu": [
476
+ "x64"
477
+ ],
478
+ "license": "Apache-2.0",
479
+ "optional": true,
480
+ "os": [
481
+ "darwin"
482
+ ],
483
+ "engines": {
484
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
485
+ },
486
+ "funding": {
487
+ "url": "https://opencollective.com/libvips"
488
+ },
489
+ "optionalDependencies": {
490
+ "@img/sharp-libvips-darwin-x64": "1.1.0"
491
+ }
492
+ },
493
+ "node_modules/@img/sharp-libvips-darwin-arm64": {
494
+ "version": "1.1.0",
495
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.1.0.tgz",
496
+ "integrity": "sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==",
497
+ "cpu": [
498
+ "arm64"
499
+ ],
500
+ "license": "LGPL-3.0-or-later",
501
+ "optional": true,
502
+ "os": [
503
+ "darwin"
504
+ ],
505
+ "funding": {
506
+ "url": "https://opencollective.com/libvips"
507
+ }
508
+ },
509
+ "node_modules/@img/sharp-libvips-darwin-x64": {
510
+ "version": "1.1.0",
511
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.1.0.tgz",
512
+ "integrity": "sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==",
513
+ "cpu": [
514
+ "x64"
515
+ ],
516
+ "license": "LGPL-3.0-or-later",
517
+ "optional": true,
518
+ "os": [
519
+ "darwin"
520
+ ],
521
+ "funding": {
522
+ "url": "https://opencollective.com/libvips"
523
+ }
524
+ },
525
+ "node_modules/@img/sharp-libvips-linux-arm": {
526
+ "version": "1.1.0",
527
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.1.0.tgz",
528
+ "integrity": "sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==",
529
+ "cpu": [
530
+ "arm"
531
+ ],
532
+ "license": "LGPL-3.0-or-later",
533
+ "optional": true,
534
+ "os": [
535
+ "linux"
536
+ ],
537
+ "funding": {
538
+ "url": "https://opencollective.com/libvips"
539
+ }
540
+ },
541
+ "node_modules/@img/sharp-libvips-linux-arm64": {
542
+ "version": "1.1.0",
543
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.1.0.tgz",
544
+ "integrity": "sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==",
545
+ "cpu": [
546
+ "arm64"
547
+ ],
548
+ "license": "LGPL-3.0-or-later",
549
+ "optional": true,
550
+ "os": [
551
+ "linux"
552
+ ],
553
+ "funding": {
554
+ "url": "https://opencollective.com/libvips"
555
+ }
556
+ },
557
+ "node_modules/@img/sharp-libvips-linux-ppc64": {
558
+ "version": "1.1.0",
559
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.1.0.tgz",
560
+ "integrity": "sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==",
561
+ "cpu": [
562
+ "ppc64"
563
+ ],
564
+ "license": "LGPL-3.0-or-later",
565
+ "optional": true,
566
+ "os": [
567
+ "linux"
568
+ ],
569
+ "funding": {
570
+ "url": "https://opencollective.com/libvips"
571
+ }
572
+ },
573
+ "node_modules/@img/sharp-libvips-linux-s390x": {
574
+ "version": "1.1.0",
575
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.1.0.tgz",
576
+ "integrity": "sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==",
577
+ "cpu": [
578
+ "s390x"
579
+ ],
580
+ "license": "LGPL-3.0-or-later",
581
+ "optional": true,
582
+ "os": [
583
+ "linux"
584
+ ],
585
+ "funding": {
586
+ "url": "https://opencollective.com/libvips"
587
+ }
588
+ },
589
+ "node_modules/@img/sharp-libvips-linux-x64": {
590
+ "version": "1.1.0",
591
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.1.0.tgz",
592
+ "integrity": "sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==",
593
+ "cpu": [
594
+ "x64"
595
+ ],
596
+ "license": "LGPL-3.0-or-later",
597
+ "optional": true,
598
+ "os": [
599
+ "linux"
600
+ ],
601
+ "funding": {
602
+ "url": "https://opencollective.com/libvips"
603
+ }
604
+ },
605
+ "node_modules/@img/sharp-libvips-linuxmusl-arm64": {
606
+ "version": "1.1.0",
607
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.1.0.tgz",
608
+ "integrity": "sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==",
609
+ "cpu": [
610
+ "arm64"
611
+ ],
612
+ "license": "LGPL-3.0-or-later",
613
+ "optional": true,
614
+ "os": [
615
+ "linux"
616
+ ],
617
+ "funding": {
618
+ "url": "https://opencollective.com/libvips"
619
+ }
620
+ },
621
+ "node_modules/@img/sharp-libvips-linuxmusl-x64": {
622
+ "version": "1.1.0",
623
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.1.0.tgz",
624
+ "integrity": "sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==",
625
+ "cpu": [
626
+ "x64"
627
+ ],
628
+ "license": "LGPL-3.0-or-later",
629
+ "optional": true,
630
+ "os": [
631
+ "linux"
632
+ ],
633
+ "funding": {
634
+ "url": "https://opencollective.com/libvips"
635
+ }
636
+ },
637
+ "node_modules/@img/sharp-linux-arm": {
638
+ "version": "0.34.1",
639
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.1.tgz",
640
+ "integrity": "sha512-anKiszvACti2sGy9CirTlNyk7BjjZPiML1jt2ZkTdcvpLU1YH6CXwRAZCA2UmRXnhiIftXQ7+Oh62Ji25W72jA==",
641
+ "cpu": [
642
+ "arm"
643
+ ],
644
+ "license": "Apache-2.0",
645
+ "optional": true,
646
+ "os": [
647
+ "linux"
648
+ ],
649
+ "engines": {
650
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
651
+ },
652
+ "funding": {
653
+ "url": "https://opencollective.com/libvips"
654
+ },
655
+ "optionalDependencies": {
656
+ "@img/sharp-libvips-linux-arm": "1.1.0"
657
+ }
658
+ },
659
+ "node_modules/@img/sharp-linux-arm64": {
660
+ "version": "0.34.1",
661
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.1.tgz",
662
+ "integrity": "sha512-kX2c+vbvaXC6vly1RDf/IWNXxrlxLNpBVWkdpRq5Ka7OOKj6nr66etKy2IENf6FtOgklkg9ZdGpEu9kwdlcwOQ==",
663
+ "cpu": [
664
+ "arm64"
665
+ ],
666
+ "license": "Apache-2.0",
667
+ "optional": true,
668
+ "os": [
669
+ "linux"
670
+ ],
671
+ "engines": {
672
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
673
+ },
674
+ "funding": {
675
+ "url": "https://opencollective.com/libvips"
676
+ },
677
+ "optionalDependencies": {
678
+ "@img/sharp-libvips-linux-arm64": "1.1.0"
679
+ }
680
+ },
681
+ "node_modules/@img/sharp-linux-s390x": {
682
+ "version": "0.34.1",
683
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.1.tgz",
684
+ "integrity": "sha512-7s0KX2tI9mZI2buRipKIw2X1ufdTeaRgwmRabt5bi9chYfhur+/C1OXg3TKg/eag1W+6CCWLVmSauV1owmRPxA==",
685
+ "cpu": [
686
+ "s390x"
687
+ ],
688
+ "license": "Apache-2.0",
689
+ "optional": true,
690
+ "os": [
691
+ "linux"
692
+ ],
693
+ "engines": {
694
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
695
+ },
696
+ "funding": {
697
+ "url": "https://opencollective.com/libvips"
698
+ },
699
+ "optionalDependencies": {
700
+ "@img/sharp-libvips-linux-s390x": "1.1.0"
701
+ }
702
+ },
703
+ "node_modules/@img/sharp-linux-x64": {
704
+ "version": "0.34.1",
705
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.1.tgz",
706
+ "integrity": "sha512-wExv7SH9nmoBW3Wr2gvQopX1k8q2g5V5Iag8Zk6AVENsjwd+3adjwxtp3Dcu2QhOXr8W9NusBU6XcQUohBZ5MA==",
707
+ "cpu": [
708
+ "x64"
709
+ ],
710
+ "license": "Apache-2.0",
711
+ "optional": true,
712
+ "os": [
713
+ "linux"
714
+ ],
715
+ "engines": {
716
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
717
+ },
718
+ "funding": {
719
+ "url": "https://opencollective.com/libvips"
720
+ },
721
+ "optionalDependencies": {
722
+ "@img/sharp-libvips-linux-x64": "1.1.0"
723
+ }
724
+ },
725
+ "node_modules/@img/sharp-linuxmusl-arm64": {
726
+ "version": "0.34.1",
727
+ "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.1.tgz",
728
+ "integrity": "sha512-DfvyxzHxw4WGdPiTF0SOHnm11Xv4aQexvqhRDAoD00MzHekAj9a/jADXeXYCDFH/DzYruwHbXU7uz+H+nWmSOQ==",
729
+ "cpu": [
730
+ "arm64"
731
+ ],
732
+ "license": "Apache-2.0",
733
+ "optional": true,
734
+ "os": [
735
+ "linux"
736
+ ],
737
+ "engines": {
738
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
739
+ },
740
+ "funding": {
741
+ "url": "https://opencollective.com/libvips"
742
+ },
743
+ "optionalDependencies": {
744
+ "@img/sharp-libvips-linuxmusl-arm64": "1.1.0"
745
+ }
746
+ },
747
+ "node_modules/@img/sharp-linuxmusl-x64": {
748
+ "version": "0.34.1",
749
+ "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.1.tgz",
750
+ "integrity": "sha512-pax/kTR407vNb9qaSIiWVnQplPcGU8LRIJpDT5o8PdAx5aAA7AS3X9PS8Isw1/WfqgQorPotjrZL3Pqh6C5EBg==",
751
+ "cpu": [
752
+ "x64"
753
+ ],
754
+ "license": "Apache-2.0",
755
+ "optional": true,
756
+ "os": [
757
+ "linux"
758
+ ],
759
+ "engines": {
760
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
761
+ },
762
+ "funding": {
763
+ "url": "https://opencollective.com/libvips"
764
+ },
765
+ "optionalDependencies": {
766
+ "@img/sharp-libvips-linuxmusl-x64": "1.1.0"
767
+ }
768
+ },
769
+ "node_modules/@img/sharp-wasm32": {
770
+ "version": "0.34.1",
771
+ "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.1.tgz",
772
+ "integrity": "sha512-YDybQnYrLQfEpzGOQe7OKcyLUCML4YOXl428gOOzBgN6Gw0rv8dpsJ7PqTHxBnXnwXr8S1mYFSLSa727tpz0xg==",
773
+ "cpu": [
774
+ "wasm32"
775
+ ],
776
+ "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT",
777
+ "optional": true,
778
+ "dependencies": {
779
+ "@emnapi/runtime": "^1.4.0"
780
+ },
781
+ "engines": {
782
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
783
+ },
784
+ "funding": {
785
+ "url": "https://opencollective.com/libvips"
786
+ }
787
+ },
788
+ "node_modules/@img/sharp-win32-ia32": {
789
+ "version": "0.34.1",
790
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.1.tgz",
791
+ "integrity": "sha512-WKf/NAZITnonBf3U1LfdjoMgNO5JYRSlhovhRhMxXVdvWYveM4kM3L8m35onYIdh75cOMCo1BexgVQcCDzyoWw==",
792
+ "cpu": [
793
+ "ia32"
794
+ ],
795
+ "license": "Apache-2.0 AND LGPL-3.0-or-later",
796
+ "optional": true,
797
+ "os": [
798
+ "win32"
799
+ ],
800
+ "engines": {
801
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
802
+ },
803
+ "funding": {
804
+ "url": "https://opencollective.com/libvips"
805
+ }
806
+ },
807
+ "node_modules/@img/sharp-win32-x64": {
808
+ "version": "0.34.1",
809
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.1.tgz",
810
+ "integrity": "sha512-hw1iIAHpNE8q3uMIRCgGOeDoz9KtFNarFLQclLxr/LK1VBkj8nby18RjFvr6aP7USRYAjTZW6yisnBWMX571Tw==",
811
+ "cpu": [
812
+ "x64"
813
+ ],
814
+ "license": "Apache-2.0 AND LGPL-3.0-or-later",
815
+ "optional": true,
816
+ "os": [
817
+ "win32"
818
+ ],
819
+ "engines": {
820
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
821
+ },
822
+ "funding": {
823
+ "url": "https://opencollective.com/libvips"
824
+ }
825
+ },
826
+ "node_modules/@isaacs/fs-minipass": {
827
+ "version": "4.0.1",
828
+ "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz",
829
+ "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==",
830
+ "license": "ISC",
831
+ "dependencies": {
832
+ "minipass": "^7.0.4"
833
+ },
834
+ "engines": {
835
+ "node": ">=18.0.0"
836
+ }
837
+ },
838
+ "node_modules/@protobufjs/aspromise": {
839
+ "version": "1.1.2",
840
+ "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
841
+ "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==",
842
+ "license": "BSD-3-Clause"
843
+ },
844
+ "node_modules/@protobufjs/base64": {
845
+ "version": "1.1.2",
846
+ "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
847
+ "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==",
848
+ "license": "BSD-3-Clause"
849
+ },
850
+ "node_modules/@protobufjs/codegen": {
851
+ "version": "2.0.4",
852
+ "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
853
+ "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==",
854
+ "license": "BSD-3-Clause"
855
+ },
856
+ "node_modules/@protobufjs/eventemitter": {
857
+ "version": "1.1.0",
858
+ "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
859
+ "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==",
860
+ "license": "BSD-3-Clause"
861
+ },
862
+ "node_modules/@protobufjs/fetch": {
863
+ "version": "1.1.0",
864
+ "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
865
+ "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==",
866
+ "license": "BSD-3-Clause",
867
+ "dependencies": {
868
+ "@protobufjs/aspromise": "^1.1.1",
869
+ "@protobufjs/inquire": "^1.1.0"
870
+ }
871
+ },
872
+ "node_modules/@protobufjs/float": {
873
+ "version": "1.0.2",
874
+ "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
875
+ "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==",
876
+ "license": "BSD-3-Clause"
877
+ },
878
+ "node_modules/@protobufjs/inquire": {
879
+ "version": "1.1.0",
880
+ "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
881
+ "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==",
882
+ "license": "BSD-3-Clause"
883
+ },
884
+ "node_modules/@protobufjs/path": {
885
+ "version": "1.1.2",
886
+ "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
887
+ "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==",
888
+ "license": "BSD-3-Clause"
889
+ },
890
+ "node_modules/@protobufjs/pool": {
891
+ "version": "1.1.0",
892
+ "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
893
+ "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==",
894
+ "license": "BSD-3-Clause"
895
+ },
896
+ "node_modules/@protobufjs/utf8": {
897
+ "version": "1.1.0",
898
+ "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
899
+ "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==",
900
+ "license": "BSD-3-Clause"
901
+ },
902
+ "node_modules/@rollup/rollup-android-arm-eabi": {
903
+ "version": "4.50.2",
904
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.50.2.tgz",
905
+ "integrity": "sha512-uLN8NAiFVIRKX9ZQha8wy6UUs06UNSZ32xj6giK/rmMXAgKahwExvK6SsmgU5/brh4w/nSgj8e0k3c1HBQpa0A==",
906
+ "cpu": [
907
+ "arm"
908
+ ],
909
+ "dev": true,
910
+ "license": "MIT",
911
+ "optional": true,
912
+ "os": [
913
+ "android"
914
+ ]
915
+ },
916
+ "node_modules/@rollup/rollup-android-arm64": {
917
+ "version": "4.50.2",
918
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.50.2.tgz",
919
+ "integrity": "sha512-oEouqQk2/zxxj22PNcGSskya+3kV0ZKH+nQxuCCOGJ4oTXBdNTbv+f/E3c74cNLeMO1S5wVWacSws10TTSB77g==",
920
+ "cpu": [
921
+ "arm64"
922
+ ],
923
+ "dev": true,
924
+ "license": "MIT",
925
+ "optional": true,
926
+ "os": [
927
+ "android"
928
+ ]
929
+ },
930
+ "node_modules/@rollup/rollup-darwin-arm64": {
931
+ "version": "4.50.2",
932
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.50.2.tgz",
933
+ "integrity": "sha512-OZuTVTpj3CDSIxmPgGH8en/XtirV5nfljHZ3wrNwvgkT5DQLhIKAeuFSiwtbMto6oVexV0k1F1zqURPKf5rI1Q==",
934
+ "cpu": [
935
+ "arm64"
936
+ ],
937
+ "dev": true,
938
+ "license": "MIT",
939
+ "optional": true,
940
+ "os": [
941
+ "darwin"
942
+ ]
943
+ },
944
+ "node_modules/@rollup/rollup-darwin-x64": {
945
+ "version": "4.50.2",
946
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.50.2.tgz",
947
+ "integrity": "sha512-Wa/Wn8RFkIkr1vy1k1PB//VYhLnlnn5eaJkfTQKivirOvzu5uVd2It01ukeQstMursuz7S1bU+8WW+1UPXpa8A==",
948
+ "cpu": [
949
+ "x64"
950
+ ],
951
+ "dev": true,
952
+ "license": "MIT",
953
+ "optional": true,
954
+ "os": [
955
+ "darwin"
956
+ ]
957
+ },
958
+ "node_modules/@rollup/rollup-freebsd-arm64": {
959
+ "version": "4.50.2",
960
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.50.2.tgz",
961
+ "integrity": "sha512-QkzxvH3kYN9J1w7D1A+yIMdI1pPekD+pWx7G5rXgnIlQ1TVYVC6hLl7SOV9pi5q9uIDF9AuIGkuzcbF7+fAhow==",
962
+ "cpu": [
963
+ "arm64"
964
+ ],
965
+ "dev": true,
966
+ "license": "MIT",
967
+ "optional": true,
968
+ "os": [
969
+ "freebsd"
970
+ ]
971
+ },
972
+ "node_modules/@rollup/rollup-freebsd-x64": {
973
+ "version": "4.50.2",
974
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.50.2.tgz",
975
+ "integrity": "sha512-dkYXB0c2XAS3a3jmyDkX4Jk0m7gWLFzq1C3qUnJJ38AyxIF5G/dyS4N9B30nvFseCfgtCEdbYFhk0ChoCGxPog==",
976
+ "cpu": [
977
+ "x64"
978
+ ],
979
+ "dev": true,
980
+ "license": "MIT",
981
+ "optional": true,
982
+ "os": [
983
+ "freebsd"
984
+ ]
985
+ },
986
+ "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
987
+ "version": "4.50.2",
988
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.50.2.tgz",
989
+ "integrity": "sha512-9VlPY/BN3AgbukfVHAB8zNFWB/lKEuvzRo1NKev0Po8sYFKx0i+AQlCYftgEjcL43F2h9Ui1ZSdVBc4En/sP2w==",
990
+ "cpu": [
991
+ "arm"
992
+ ],
993
+ "dev": true,
994
+ "license": "MIT",
995
+ "optional": true,
996
+ "os": [
997
+ "linux"
998
+ ]
999
+ },
1000
+ "node_modules/@rollup/rollup-linux-arm-musleabihf": {
1001
+ "version": "4.50.2",
1002
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.50.2.tgz",
1003
+ "integrity": "sha512-+GdKWOvsifaYNlIVf07QYan1J5F141+vGm5/Y8b9uCZnG/nxoGqgCmR24mv0koIWWuqvFYnbURRqw1lv7IBINw==",
1004
+ "cpu": [
1005
+ "arm"
1006
+ ],
1007
+ "dev": true,
1008
+ "license": "MIT",
1009
+ "optional": true,
1010
+ "os": [
1011
+ "linux"
1012
+ ]
1013
+ },
1014
+ "node_modules/@rollup/rollup-linux-arm64-gnu": {
1015
+ "version": "4.50.2",
1016
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.50.2.tgz",
1017
+ "integrity": "sha512-df0Eou14ojtUdLQdPFnymEQteENwSJAdLf5KCDrmZNsy1c3YaCNaJvYsEUHnrg+/DLBH612/R0xd3dD03uz2dg==",
1018
+ "cpu": [
1019
+ "arm64"
1020
+ ],
1021
+ "dev": true,
1022
+ "license": "MIT",
1023
+ "optional": true,
1024
+ "os": [
1025
+ "linux"
1026
+ ]
1027
+ },
1028
+ "node_modules/@rollup/rollup-linux-arm64-musl": {
1029
+ "version": "4.50.2",
1030
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.50.2.tgz",
1031
+ "integrity": "sha512-iPeouV0UIDtz8j1YFR4OJ/zf7evjauqv7jQ/EFs0ClIyL+by++hiaDAfFipjOgyz6y6xbDvJuiU4HwpVMpRFDQ==",
1032
+ "cpu": [
1033
+ "arm64"
1034
+ ],
1035
+ "dev": true,
1036
+ "license": "MIT",
1037
+ "optional": true,
1038
+ "os": [
1039
+ "linux"
1040
+ ]
1041
+ },
1042
+ "node_modules/@rollup/rollup-linux-loong64-gnu": {
1043
+ "version": "4.50.2",
1044
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.50.2.tgz",
1045
+ "integrity": "sha512-OL6KaNvBopLlj5fTa5D5bau4W82f+1TyTZRr2BdnfsrnQnmdxh4okMxR2DcDkJuh4KeoQZVuvHvzuD/lyLn2Kw==",
1046
+ "cpu": [
1047
+ "loong64"
1048
+ ],
1049
+ "dev": true,
1050
+ "license": "MIT",
1051
+ "optional": true,
1052
+ "os": [
1053
+ "linux"
1054
+ ]
1055
+ },
1056
+ "node_modules/@rollup/rollup-linux-ppc64-gnu": {
1057
+ "version": "4.50.2",
1058
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.50.2.tgz",
1059
+ "integrity": "sha512-I21VJl1w6z/K5OTRl6aS9DDsqezEZ/yKpbqlvfHbW0CEF5IL8ATBMuUx6/mp683rKTK8thjs/0BaNrZLXetLag==",
1060
+ "cpu": [
1061
+ "ppc64"
1062
+ ],
1063
+ "dev": true,
1064
+ "license": "MIT",
1065
+ "optional": true,
1066
+ "os": [
1067
+ "linux"
1068
+ ]
1069
+ },
1070
+ "node_modules/@rollup/rollup-linux-riscv64-gnu": {
1071
+ "version": "4.50.2",
1072
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.50.2.tgz",
1073
+ "integrity": "sha512-Hq6aQJT/qFFHrYMjS20nV+9SKrXL2lvFBENZoKfoTH2kKDOJqff5OSJr4x72ZaG/uUn+XmBnGhfr4lwMRrmqCQ==",
1074
+ "cpu": [
1075
+ "riscv64"
1076
+ ],
1077
+ "dev": true,
1078
+ "license": "MIT",
1079
+ "optional": true,
1080
+ "os": [
1081
+ "linux"
1082
+ ]
1083
+ },
1084
+ "node_modules/@rollup/rollup-linux-riscv64-musl": {
1085
+ "version": "4.50.2",
1086
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.50.2.tgz",
1087
+ "integrity": "sha512-82rBSEXRv5qtKyr0xZ/YMF531oj2AIpLZkeNYxmKNN6I2sVE9PGegN99tYDLK2fYHJITL1P2Lgb4ZXnv0PjQvw==",
1088
+ "cpu": [
1089
+ "riscv64"
1090
+ ],
1091
+ "dev": true,
1092
+ "license": "MIT",
1093
+ "optional": true,
1094
+ "os": [
1095
+ "linux"
1096
+ ]
1097
+ },
1098
+ "node_modules/@rollup/rollup-linux-s390x-gnu": {
1099
+ "version": "4.50.2",
1100
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.50.2.tgz",
1101
+ "integrity": "sha512-4Q3S3Hy7pC6uaRo9gtXUTJ+EKo9AKs3BXKc2jYypEcMQ49gDPFU2P1ariX9SEtBzE5egIX6fSUmbmGazwBVF9w==",
1102
+ "cpu": [
1103
+ "s390x"
1104
+ ],
1105
+ "dev": true,
1106
+ "license": "MIT",
1107
+ "optional": true,
1108
+ "os": [
1109
+ "linux"
1110
+ ]
1111
+ },
1112
+ "node_modules/@rollup/rollup-linux-x64-gnu": {
1113
+ "version": "4.50.2",
1114
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.50.2.tgz",
1115
+ "integrity": "sha512-9Jie/At6qk70dNIcopcL4p+1UirusEtznpNtcq/u/C5cC4HBX7qSGsYIcG6bdxj15EYWhHiu02YvmdPzylIZlA==",
1116
+ "cpu": [
1117
+ "x64"
1118
+ ],
1119
+ "dev": true,
1120
+ "license": "MIT",
1121
+ "optional": true,
1122
+ "os": [
1123
+ "linux"
1124
+ ]
1125
+ },
1126
+ "node_modules/@rollup/rollup-linux-x64-musl": {
1127
+ "version": "4.50.2",
1128
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.50.2.tgz",
1129
+ "integrity": "sha512-HPNJwxPL3EmhzeAnsWQCM3DcoqOz3/IC6de9rWfGR8ZCuEHETi9km66bH/wG3YH0V3nyzyFEGUZeL5PKyy4xvw==",
1130
+ "cpu": [
1131
+ "x64"
1132
+ ],
1133
+ "dev": true,
1134
+ "license": "MIT",
1135
+ "optional": true,
1136
+ "os": [
1137
+ "linux"
1138
+ ]
1139
+ },
1140
+ "node_modules/@rollup/rollup-openharmony-arm64": {
1141
+ "version": "4.50.2",
1142
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.50.2.tgz",
1143
+ "integrity": "sha512-nMKvq6FRHSzYfKLHZ+cChowlEkR2lj/V0jYj9JnGUVPL2/mIeFGmVM2mLaFeNa5Jev7W7TovXqXIG2d39y1KYA==",
1144
+ "cpu": [
1145
+ "arm64"
1146
+ ],
1147
+ "dev": true,
1148
+ "license": "MIT",
1149
+ "optional": true,
1150
+ "os": [
1151
+ "openharmony"
1152
+ ]
1153
+ },
1154
+ "node_modules/@rollup/rollup-win32-arm64-msvc": {
1155
+ "version": "4.50.2",
1156
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.50.2.tgz",
1157
+ "integrity": "sha512-eFUvvnTYEKeTyHEijQKz81bLrUQOXKZqECeiWH6tb8eXXbZk+CXSG2aFrig2BQ/pjiVRj36zysjgILkqarS2YA==",
1158
+ "cpu": [
1159
+ "arm64"
1160
+ ],
1161
+ "dev": true,
1162
+ "license": "MIT",
1163
+ "optional": true,
1164
+ "os": [
1165
+ "win32"
1166
+ ]
1167
+ },
1168
+ "node_modules/@rollup/rollup-win32-ia32-msvc": {
1169
+ "version": "4.50.2",
1170
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.50.2.tgz",
1171
+ "integrity": "sha512-cBaWmXqyfRhH8zmUxK3d3sAhEWLrtMjWBRwdMMHJIXSjvjLKvv49adxiEz+FJ8AP90apSDDBx2Tyd/WylV6ikA==",
1172
+ "cpu": [
1173
+ "ia32"
1174
+ ],
1175
+ "dev": true,
1176
+ "license": "MIT",
1177
+ "optional": true,
1178
+ "os": [
1179
+ "win32"
1180
+ ]
1181
+ },
1182
+ "node_modules/@rollup/rollup-win32-x64-msvc": {
1183
+ "version": "4.50.2",
1184
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.50.2.tgz",
1185
+ "integrity": "sha512-APwKy6YUhvZaEoHyM+9xqmTpviEI+9eL7LoCH+aLcvWYHJ663qG5zx7WzWZY+a9qkg5JtzcMyJ9z0WtQBMDmgA==",
1186
+ "cpu": [
1187
+ "x64"
1188
+ ],
1189
+ "dev": true,
1190
+ "license": "MIT",
1191
+ "optional": true,
1192
+ "os": [
1193
+ "win32"
1194
+ ]
1195
+ },
1196
+ "node_modules/@types/estree": {
1197
+ "version": "1.0.8",
1198
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
1199
+ "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
1200
+ "dev": true,
1201
+ "license": "MIT"
1202
+ },
1203
+ "node_modules/@types/node": {
1204
+ "version": "24.5.2",
1205
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-24.5.2.tgz",
1206
+ "integrity": "sha512-FYxk1I7wPv3K2XBaoyH2cTnocQEu8AOZ60hPbsyukMPLv5/5qr7V1i8PLHdl6Zf87I+xZXFvPCXYjiTFq+YSDQ==",
1207
+ "license": "MIT",
1208
+ "dependencies": {
1209
+ "undici-types": "~7.12.0"
1210
+ }
1211
+ },
1212
+ "node_modules/boolean": {
1213
+ "version": "3.2.0",
1214
+ "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz",
1215
+ "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==",
1216
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
1217
+ "license": "MIT"
1218
+ },
1219
+ "node_modules/chownr": {
1220
+ "version": "3.0.0",
1221
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz",
1222
+ "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==",
1223
+ "license": "BlueOak-1.0.0",
1224
+ "engines": {
1225
+ "node": ">=18"
1226
+ }
1227
+ },
1228
+ "node_modules/color": {
1229
+ "version": "4.2.3",
1230
+ "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
1231
+ "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
1232
+ "license": "MIT",
1233
+ "dependencies": {
1234
+ "color-convert": "^2.0.1",
1235
+ "color-string": "^1.9.0"
1236
+ },
1237
+ "engines": {
1238
+ "node": ">=12.5.0"
1239
+ }
1240
+ },
1241
+ "node_modules/color-convert": {
1242
+ "version": "2.0.1",
1243
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
1244
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
1245
+ "license": "MIT",
1246
+ "dependencies": {
1247
+ "color-name": "~1.1.4"
1248
+ },
1249
+ "engines": {
1250
+ "node": ">=7.0.0"
1251
+ }
1252
+ },
1253
+ "node_modules/color-name": {
1254
+ "version": "1.1.4",
1255
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
1256
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
1257
+ "license": "MIT"
1258
+ },
1259
+ "node_modules/color-string": {
1260
+ "version": "1.9.1",
1261
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
1262
+ "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
1263
+ "license": "MIT",
1264
+ "dependencies": {
1265
+ "color-name": "^1.0.0",
1266
+ "simple-swizzle": "^0.2.2"
1267
+ }
1268
+ },
1269
+ "node_modules/define-data-property": {
1270
+ "version": "1.1.4",
1271
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
1272
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
1273
+ "license": "MIT",
1274
+ "dependencies": {
1275
+ "es-define-property": "^1.0.0",
1276
+ "es-errors": "^1.3.0",
1277
+ "gopd": "^1.0.1"
1278
+ },
1279
+ "engines": {
1280
+ "node": ">= 0.4"
1281
+ },
1282
+ "funding": {
1283
+ "url": "https://github.com/sponsors/ljharb"
1284
+ }
1285
+ },
1286
+ "node_modules/define-properties": {
1287
+ "version": "1.2.1",
1288
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
1289
+ "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
1290
+ "license": "MIT",
1291
+ "dependencies": {
1292
+ "define-data-property": "^1.0.1",
1293
+ "has-property-descriptors": "^1.0.0",
1294
+ "object-keys": "^1.1.1"
1295
+ },
1296
+ "engines": {
1297
+ "node": ">= 0.4"
1298
+ },
1299
+ "funding": {
1300
+ "url": "https://github.com/sponsors/ljharb"
1301
+ }
1302
+ },
1303
+ "node_modules/detect-libc": {
1304
+ "version": "2.0.3",
1305
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
1306
+ "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==",
1307
+ "license": "Apache-2.0",
1308
+ "engines": {
1309
+ "node": ">=8"
1310
+ }
1311
+ },
1312
+ "node_modules/detect-node": {
1313
+ "version": "2.1.0",
1314
+ "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
1315
+ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==",
1316
+ "license": "MIT"
1317
+ },
1318
+ "node_modules/es-define-property": {
1319
+ "version": "1.0.1",
1320
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
1321
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
1322
+ "license": "MIT",
1323
+ "engines": {
1324
+ "node": ">= 0.4"
1325
+ }
1326
+ },
1327
+ "node_modules/es-errors": {
1328
+ "version": "1.3.0",
1329
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
1330
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
1331
+ "license": "MIT",
1332
+ "engines": {
1333
+ "node": ">= 0.4"
1334
+ }
1335
+ },
1336
+ "node_modules/es6-error": {
1337
+ "version": "4.1.1",
1338
+ "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz",
1339
+ "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==",
1340
+ "license": "MIT"
1341
+ },
1342
+ "node_modules/esbuild": {
1343
+ "version": "0.25.0",
1344
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz",
1345
+ "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==",
1346
+ "dev": true,
1347
+ "hasInstallScript": true,
1348
+ "bin": {
1349
+ "esbuild": "bin/esbuild"
1350
+ },
1351
+ "engines": {
1352
+ "node": ">=18"
1353
+ },
1354
+ "optionalDependencies": {
1355
+ "@esbuild/aix-ppc64": "0.25.0",
1356
+ "@esbuild/android-arm": "0.25.0",
1357
+ "@esbuild/android-arm64": "0.25.0",
1358
+ "@esbuild/android-x64": "0.25.0",
1359
+ "@esbuild/darwin-arm64": "0.25.0",
1360
+ "@esbuild/darwin-x64": "0.25.0",
1361
+ "@esbuild/freebsd-arm64": "0.25.0",
1362
+ "@esbuild/freebsd-x64": "0.25.0",
1363
+ "@esbuild/linux-arm": "0.25.0",
1364
+ "@esbuild/linux-arm64": "0.25.0",
1365
+ "@esbuild/linux-ia32": "0.25.0",
1366
+ "@esbuild/linux-loong64": "0.25.0",
1367
+ "@esbuild/linux-mips64el": "0.25.0",
1368
+ "@esbuild/linux-ppc64": "0.25.0",
1369
+ "@esbuild/linux-riscv64": "0.25.0",
1370
+ "@esbuild/linux-s390x": "0.25.0",
1371
+ "@esbuild/linux-x64": "0.25.0",
1372
+ "@esbuild/netbsd-arm64": "0.25.0",
1373
+ "@esbuild/netbsd-x64": "0.25.0",
1374
+ "@esbuild/openbsd-arm64": "0.25.0",
1375
+ "@esbuild/openbsd-x64": "0.25.0",
1376
+ "@esbuild/sunos-x64": "0.25.0",
1377
+ "@esbuild/win32-arm64": "0.25.0",
1378
+ "@esbuild/win32-ia32": "0.25.0",
1379
+ "@esbuild/win32-x64": "0.25.0"
1380
+ }
1381
+ },
1382
+ "node_modules/escape-string-regexp": {
1383
+ "version": "4.0.0",
1384
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
1385
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
1386
+ "license": "MIT",
1387
+ "engines": {
1388
+ "node": ">=10"
1389
+ },
1390
+ "funding": {
1391
+ "url": "https://github.com/sponsors/sindresorhus"
1392
+ }
1393
+ },
1394
+ "node_modules/fdir": {
1395
+ "version": "6.5.0",
1396
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
1397
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
1398
+ "dev": true,
1399
+ "license": "MIT",
1400
+ "engines": {
1401
+ "node": ">=12.0.0"
1402
+ },
1403
+ "peerDependencies": {
1404
+ "picomatch": "^3 || ^4"
1405
+ },
1406
+ "peerDependenciesMeta": {
1407
+ "picomatch": {
1408
+ "optional": true
1409
+ }
1410
+ }
1411
+ },
1412
+ "node_modules/flatbuffers": {
1413
+ "version": "25.2.10",
1414
+ "resolved": "https://registry.npmjs.org/flatbuffers/-/flatbuffers-25.2.10.tgz",
1415
+ "integrity": "sha512-7JlN9ZvLDG1McO3kbX0k4v+SUAg48L1rIwEvN6ZQl/eCtgJz9UylTMzE9wrmYrcorgxm3CX/3T/w5VAub99UUw==",
1416
+ "license": "Apache-2.0"
1417
+ },
1418
+ "node_modules/fsevents": {
1419
+ "version": "2.3.3",
1420
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
1421
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
1422
+ "dev": true,
1423
+ "hasInstallScript": true,
1424
+ "license": "MIT",
1425
+ "optional": true,
1426
+ "os": [
1427
+ "darwin"
1428
+ ],
1429
+ "engines": {
1430
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
1431
+ }
1432
+ },
1433
+ "node_modules/global-agent": {
1434
+ "version": "3.0.0",
1435
+ "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz",
1436
+ "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==",
1437
+ "license": "BSD-3-Clause",
1438
+ "dependencies": {
1439
+ "boolean": "^3.0.1",
1440
+ "es6-error": "^4.1.1",
1441
+ "matcher": "^3.0.0",
1442
+ "roarr": "^2.15.3",
1443
+ "semver": "^7.3.2",
1444
+ "serialize-error": "^7.0.1"
1445
+ },
1446
+ "engines": {
1447
+ "node": ">=10.0"
1448
+ }
1449
+ },
1450
+ "node_modules/globalthis": {
1451
+ "version": "1.0.4",
1452
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
1453
+ "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
1454
+ "license": "MIT",
1455
+ "dependencies": {
1456
+ "define-properties": "^1.2.1",
1457
+ "gopd": "^1.0.1"
1458
+ },
1459
+ "engines": {
1460
+ "node": ">= 0.4"
1461
+ },
1462
+ "funding": {
1463
+ "url": "https://github.com/sponsors/ljharb"
1464
+ }
1465
+ },
1466
+ "node_modules/gopd": {
1467
+ "version": "1.2.0",
1468
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
1469
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
1470
+ "license": "MIT",
1471
+ "engines": {
1472
+ "node": ">= 0.4"
1473
+ },
1474
+ "funding": {
1475
+ "url": "https://github.com/sponsors/ljharb"
1476
+ }
1477
+ },
1478
+ "node_modules/guid-typescript": {
1479
+ "version": "1.0.9",
1480
+ "resolved": "https://registry.npmjs.org/guid-typescript/-/guid-typescript-1.0.9.tgz",
1481
+ "integrity": "sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==",
1482
+ "license": "ISC"
1483
+ },
1484
+ "node_modules/has-property-descriptors": {
1485
+ "version": "1.0.2",
1486
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
1487
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
1488
+ "license": "MIT",
1489
+ "dependencies": {
1490
+ "es-define-property": "^1.0.0"
1491
+ },
1492
+ "funding": {
1493
+ "url": "https://github.com/sponsors/ljharb"
1494
+ }
1495
+ },
1496
+ "node_modules/is-arrayish": {
1497
+ "version": "0.3.2",
1498
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
1499
+ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
1500
+ "license": "MIT"
1501
+ },
1502
+ "node_modules/json-stringify-safe": {
1503
+ "version": "5.0.1",
1504
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
1505
+ "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
1506
+ "license": "ISC"
1507
+ },
1508
+ "node_modules/long": {
1509
+ "version": "5.3.1",
1510
+ "resolved": "https://registry.npmjs.org/long/-/long-5.3.1.tgz",
1511
+ "integrity": "sha512-ka87Jz3gcx/I7Hal94xaN2tZEOPoUOEVftkQqZx2EeQRN7LGdfLlI3FvZ+7WDplm+vK2Urx9ULrvSowtdCieng==",
1512
+ "license": "Apache-2.0"
1513
+ },
1514
+ "node_modules/matcher": {
1515
+ "version": "3.0.0",
1516
+ "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz",
1517
+ "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==",
1518
+ "license": "MIT",
1519
+ "dependencies": {
1520
+ "escape-string-regexp": "^4.0.0"
1521
+ },
1522
+ "engines": {
1523
+ "node": ">=10"
1524
+ }
1525
+ },
1526
+ "node_modules/minipass": {
1527
+ "version": "7.1.2",
1528
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
1529
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
1530
+ "license": "ISC",
1531
+ "engines": {
1532
+ "node": ">=16 || 14 >=14.17"
1533
+ }
1534
+ },
1535
+ "node_modules/minizlib": {
1536
+ "version": "3.0.2",
1537
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz",
1538
+ "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==",
1539
+ "license": "MIT",
1540
+ "dependencies": {
1541
+ "minipass": "^7.1.2"
1542
+ },
1543
+ "engines": {
1544
+ "node": ">= 18"
1545
+ }
1546
+ },
1547
+ "node_modules/mkdirp": {
1548
+ "version": "3.0.1",
1549
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz",
1550
+ "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==",
1551
+ "license": "MIT",
1552
+ "bin": {
1553
+ "mkdirp": "dist/cjs/src/bin.js"
1554
+ },
1555
+ "engines": {
1556
+ "node": ">=10"
1557
+ },
1558
+ "funding": {
1559
+ "url": "https://github.com/sponsors/isaacs"
1560
+ }
1561
+ },
1562
+ "node_modules/nanoid": {
1563
+ "version": "3.3.11",
1564
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
1565
+ "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
1566
+ "dev": true,
1567
+ "funding": [
1568
+ {
1569
+ "type": "github",
1570
+ "url": "https://github.com/sponsors/ai"
1571
+ }
1572
+ ],
1573
+ "license": "MIT",
1574
+ "bin": {
1575
+ "nanoid": "bin/nanoid.cjs"
1576
+ },
1577
+ "engines": {
1578
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
1579
+ }
1580
+ },
1581
+ "node_modules/object-keys": {
1582
+ "version": "1.1.1",
1583
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
1584
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
1585
+ "license": "MIT",
1586
+ "engines": {
1587
+ "node": ">= 0.4"
1588
+ }
1589
+ },
1590
+ "node_modules/onnxruntime-common": {
1591
+ "version": "1.21.0",
1592
+ "resolved": "https://registry.npmjs.org/onnxruntime-common/-/onnxruntime-common-1.21.0.tgz",
1593
+ "integrity": "sha512-Q632iLLrtCAVOTO65dh2+mNbQir/QNTVBG3h/QdZBpns7mZ0RYbLRBgGABPbpU9351AgYy7SJf1WaeVwMrBFPQ==",
1594
+ "license": "MIT"
1595
+ },
1596
+ "node_modules/onnxruntime-node": {
1597
+ "version": "1.21.0",
1598
+ "resolved": "https://registry.npmjs.org/onnxruntime-node/-/onnxruntime-node-1.21.0.tgz",
1599
+ "integrity": "sha512-NeaCX6WW2L8cRCSqy3bInlo5ojjQqu2fD3D+9W5qb5irwxhEyWKXeH2vZ8W9r6VxaMPUan+4/7NDwZMtouZxEw==",
1600
+ "hasInstallScript": true,
1601
+ "license": "MIT",
1602
+ "os": [
1603
+ "win32",
1604
+ "darwin",
1605
+ "linux"
1606
+ ],
1607
+ "dependencies": {
1608
+ "global-agent": "^3.0.0",
1609
+ "onnxruntime-common": "1.21.0",
1610
+ "tar": "^7.0.1"
1611
+ }
1612
+ },
1613
+ "node_modules/onnxruntime-web": {
1614
+ "version": "1.22.0-dev.20250409-89f8206ba4",
1615
+ "resolved": "https://registry.npmjs.org/onnxruntime-web/-/onnxruntime-web-1.22.0-dev.20250409-89f8206ba4.tgz",
1616
+ "integrity": "sha512-0uS76OPgH0hWCPrFKlL8kYVV7ckM7t/36HfbgoFw6Nd0CZVVbQC4PkrR8mBX8LtNUFZO25IQBqV2Hx2ho3FlbQ==",
1617
+ "license": "MIT",
1618
+ "dependencies": {
1619
+ "flatbuffers": "^25.1.24",
1620
+ "guid-typescript": "^1.0.9",
1621
+ "long": "^5.2.3",
1622
+ "onnxruntime-common": "1.22.0-dev.20250409-89f8206ba4",
1623
+ "platform": "^1.3.6",
1624
+ "protobufjs": "^7.2.4"
1625
+ }
1626
+ },
1627
+ "node_modules/onnxruntime-web/node_modules/onnxruntime-common": {
1628
+ "version": "1.22.0-dev.20250409-89f8206ba4",
1629
+ "resolved": "https://registry.npmjs.org/onnxruntime-common/-/onnxruntime-common-1.22.0-dev.20250409-89f8206ba4.tgz",
1630
+ "integrity": "sha512-vDJMkfCfb0b1A836rgHj+ORuZf4B4+cc2bASQtpeoJLueuFc5DuYwjIZUBrSvx/fO5IrLjLz+oTrB3pcGlhovQ==",
1631
+ "license": "MIT"
1632
+ },
1633
+ "node_modules/picocolors": {
1634
+ "version": "1.1.1",
1635
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
1636
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
1637
+ "dev": true,
1638
+ "license": "ISC"
1639
+ },
1640
+ "node_modules/picomatch": {
1641
+ "version": "4.0.3",
1642
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
1643
+ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
1644
+ "dev": true,
1645
+ "license": "MIT",
1646
+ "engines": {
1647
+ "node": ">=12"
1648
+ },
1649
+ "funding": {
1650
+ "url": "https://github.com/sponsors/jonschlinkert"
1651
+ }
1652
+ },
1653
+ "node_modules/platform": {
1654
+ "version": "1.3.6",
1655
+ "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz",
1656
+ "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==",
1657
+ "license": "MIT"
1658
+ },
1659
+ "node_modules/postcss": {
1660
+ "version": "8.5.6",
1661
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
1662
+ "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
1663
+ "dev": true,
1664
+ "funding": [
1665
+ {
1666
+ "type": "opencollective",
1667
+ "url": "https://opencollective.com/postcss/"
1668
+ },
1669
+ {
1670
+ "type": "tidelift",
1671
+ "url": "https://tidelift.com/funding/github/npm/postcss"
1672
+ },
1673
+ {
1674
+ "type": "github",
1675
+ "url": "https://github.com/sponsors/ai"
1676
+ }
1677
+ ],
1678
+ "license": "MIT",
1679
+ "dependencies": {
1680
+ "nanoid": "^3.3.11",
1681
+ "picocolors": "^1.1.1",
1682
+ "source-map-js": "^1.2.1"
1683
+ },
1684
+ "engines": {
1685
+ "node": "^10 || ^12 || >=14"
1686
+ }
1687
+ },
1688
+ "node_modules/protobufjs": {
1689
+ "version": "7.5.0",
1690
+ "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.0.tgz",
1691
+ "integrity": "sha512-Z2E/kOY1QjoMlCytmexzYfDm/w5fKAiRwpSzGtdnXW1zC88Z2yXazHHrOtwCzn+7wSxyE8PYM4rvVcMphF9sOA==",
1692
+ "hasInstallScript": true,
1693
+ "license": "BSD-3-Clause",
1694
+ "dependencies": {
1695
+ "@protobufjs/aspromise": "^1.1.2",
1696
+ "@protobufjs/base64": "^1.1.2",
1697
+ "@protobufjs/codegen": "^2.0.4",
1698
+ "@protobufjs/eventemitter": "^1.1.0",
1699
+ "@protobufjs/fetch": "^1.1.0",
1700
+ "@protobufjs/float": "^1.0.2",
1701
+ "@protobufjs/inquire": "^1.1.0",
1702
+ "@protobufjs/path": "^1.1.2",
1703
+ "@protobufjs/pool": "^1.1.0",
1704
+ "@protobufjs/utf8": "^1.1.0",
1705
+ "@types/node": ">=13.7.0",
1706
+ "long": "^5.0.0"
1707
+ },
1708
+ "engines": {
1709
+ "node": ">=12.0.0"
1710
+ }
1711
+ },
1712
+ "node_modules/roarr": {
1713
+ "version": "2.15.4",
1714
+ "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz",
1715
+ "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==",
1716
+ "license": "BSD-3-Clause",
1717
+ "dependencies": {
1718
+ "boolean": "^3.0.1",
1719
+ "detect-node": "^2.0.4",
1720
+ "globalthis": "^1.0.1",
1721
+ "json-stringify-safe": "^5.0.1",
1722
+ "semver-compare": "^1.0.0",
1723
+ "sprintf-js": "^1.1.2"
1724
+ },
1725
+ "engines": {
1726
+ "node": ">=8.0"
1727
+ }
1728
+ },
1729
+ "node_modules/rollup": {
1730
+ "version": "4.50.2",
1731
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.50.2.tgz",
1732
+ "integrity": "sha512-BgLRGy7tNS9H66aIMASq1qSYbAAJV6Z6WR4QYTvj5FgF15rZ/ympT1uixHXwzbZUBDbkvqUI1KR0fH1FhMaQ9w==",
1733
+ "dev": true,
1734
+ "license": "MIT",
1735
+ "dependencies": {
1736
+ "@types/estree": "1.0.8"
1737
+ },
1738
+ "bin": {
1739
+ "rollup": "dist/bin/rollup"
1740
+ },
1741
+ "engines": {
1742
+ "node": ">=18.0.0",
1743
+ "npm": ">=8.0.0"
1744
+ },
1745
+ "optionalDependencies": {
1746
+ "@rollup/rollup-android-arm-eabi": "4.50.2",
1747
+ "@rollup/rollup-android-arm64": "4.50.2",
1748
+ "@rollup/rollup-darwin-arm64": "4.50.2",
1749
+ "@rollup/rollup-darwin-x64": "4.50.2",
1750
+ "@rollup/rollup-freebsd-arm64": "4.50.2",
1751
+ "@rollup/rollup-freebsd-x64": "4.50.2",
1752
+ "@rollup/rollup-linux-arm-gnueabihf": "4.50.2",
1753
+ "@rollup/rollup-linux-arm-musleabihf": "4.50.2",
1754
+ "@rollup/rollup-linux-arm64-gnu": "4.50.2",
1755
+ "@rollup/rollup-linux-arm64-musl": "4.50.2",
1756
+ "@rollup/rollup-linux-loong64-gnu": "4.50.2",
1757
+ "@rollup/rollup-linux-ppc64-gnu": "4.50.2",
1758
+ "@rollup/rollup-linux-riscv64-gnu": "4.50.2",
1759
+ "@rollup/rollup-linux-riscv64-musl": "4.50.2",
1760
+ "@rollup/rollup-linux-s390x-gnu": "4.50.2",
1761
+ "@rollup/rollup-linux-x64-gnu": "4.50.2",
1762
+ "@rollup/rollup-linux-x64-musl": "4.50.2",
1763
+ "@rollup/rollup-openharmony-arm64": "4.50.2",
1764
+ "@rollup/rollup-win32-arm64-msvc": "4.50.2",
1765
+ "@rollup/rollup-win32-ia32-msvc": "4.50.2",
1766
+ "@rollup/rollup-win32-x64-msvc": "4.50.2",
1767
+ "fsevents": "~2.3.2"
1768
+ }
1769
+ },
1770
+ "node_modules/semver": {
1771
+ "version": "7.7.1",
1772
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
1773
+ "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
1774
+ "license": "ISC",
1775
+ "bin": {
1776
+ "semver": "bin/semver.js"
1777
+ },
1778
+ "engines": {
1779
+ "node": ">=10"
1780
+ }
1781
+ },
1782
+ "node_modules/semver-compare": {
1783
+ "version": "1.0.0",
1784
+ "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
1785
+ "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==",
1786
+ "license": "MIT"
1787
+ },
1788
+ "node_modules/serialize-error": {
1789
+ "version": "7.0.1",
1790
+ "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz",
1791
+ "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==",
1792
+ "license": "MIT",
1793
+ "dependencies": {
1794
+ "type-fest": "^0.13.1"
1795
+ },
1796
+ "engines": {
1797
+ "node": ">=10"
1798
+ },
1799
+ "funding": {
1800
+ "url": "https://github.com/sponsors/sindresorhus"
1801
+ }
1802
+ },
1803
+ "node_modules/sharp": {
1804
+ "version": "0.34.1",
1805
+ "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.1.tgz",
1806
+ "integrity": "sha512-1j0w61+eVxu7DawFJtnfYcvSv6qPFvfTaqzTQ2BLknVhHTwGS8sc63ZBF4rzkWMBVKybo4S5OBtDdZahh2A1xg==",
1807
+ "hasInstallScript": true,
1808
+ "license": "Apache-2.0",
1809
+ "dependencies": {
1810
+ "color": "^4.2.3",
1811
+ "detect-libc": "^2.0.3",
1812
+ "semver": "^7.7.1"
1813
+ },
1814
+ "engines": {
1815
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
1816
+ },
1817
+ "funding": {
1818
+ "url": "https://opencollective.com/libvips"
1819
+ },
1820
+ "optionalDependencies": {
1821
+ "@img/sharp-darwin-arm64": "0.34.1",
1822
+ "@img/sharp-darwin-x64": "0.34.1",
1823
+ "@img/sharp-libvips-darwin-arm64": "1.1.0",
1824
+ "@img/sharp-libvips-darwin-x64": "1.1.0",
1825
+ "@img/sharp-libvips-linux-arm": "1.1.0",
1826
+ "@img/sharp-libvips-linux-arm64": "1.1.0",
1827
+ "@img/sharp-libvips-linux-ppc64": "1.1.0",
1828
+ "@img/sharp-libvips-linux-s390x": "1.1.0",
1829
+ "@img/sharp-libvips-linux-x64": "1.1.0",
1830
+ "@img/sharp-libvips-linuxmusl-arm64": "1.1.0",
1831
+ "@img/sharp-libvips-linuxmusl-x64": "1.1.0",
1832
+ "@img/sharp-linux-arm": "0.34.1",
1833
+ "@img/sharp-linux-arm64": "0.34.1",
1834
+ "@img/sharp-linux-s390x": "0.34.1",
1835
+ "@img/sharp-linux-x64": "0.34.1",
1836
+ "@img/sharp-linuxmusl-arm64": "0.34.1",
1837
+ "@img/sharp-linuxmusl-x64": "0.34.1",
1838
+ "@img/sharp-wasm32": "0.34.1",
1839
+ "@img/sharp-win32-ia32": "0.34.1",
1840
+ "@img/sharp-win32-x64": "0.34.1"
1841
+ }
1842
+ },
1843
+ "node_modules/simple-swizzle": {
1844
+ "version": "0.2.2",
1845
+ "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
1846
+ "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
1847
+ "license": "MIT",
1848
+ "dependencies": {
1849
+ "is-arrayish": "^0.3.1"
1850
+ }
1851
+ },
1852
+ "node_modules/source-map-js": {
1853
+ "version": "1.2.1",
1854
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
1855
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
1856
+ "dev": true,
1857
+ "license": "BSD-3-Clause",
1858
+ "engines": {
1859
+ "node": ">=0.10.0"
1860
+ }
1861
+ },
1862
+ "node_modules/sprintf-js": {
1863
+ "version": "1.1.3",
1864
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
1865
+ "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==",
1866
+ "license": "BSD-3-Clause"
1867
+ },
1868
+ "node_modules/tar": {
1869
+ "version": "7.4.3",
1870
+ "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz",
1871
+ "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==",
1872
+ "license": "ISC",
1873
+ "dependencies": {
1874
+ "@isaacs/fs-minipass": "^4.0.0",
1875
+ "chownr": "^3.0.0",
1876
+ "minipass": "^7.1.2",
1877
+ "minizlib": "^3.0.1",
1878
+ "mkdirp": "^3.0.1",
1879
+ "yallist": "^5.0.0"
1880
+ },
1881
+ "engines": {
1882
+ "node": ">=18"
1883
+ }
1884
+ },
1885
+ "node_modules/tinyglobby": {
1886
+ "version": "0.2.15",
1887
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
1888
+ "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
1889
+ "dev": true,
1890
+ "license": "MIT",
1891
+ "dependencies": {
1892
+ "fdir": "^6.5.0",
1893
+ "picomatch": "^4.0.3"
1894
+ },
1895
+ "engines": {
1896
+ "node": ">=12.0.0"
1897
+ },
1898
+ "funding": {
1899
+ "url": "https://github.com/sponsors/SuperchupuDev"
1900
+ }
1901
+ },
1902
+ "node_modules/tslib": {
1903
+ "version": "2.8.1",
1904
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
1905
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
1906
+ "license": "0BSD",
1907
+ "optional": true
1908
+ },
1909
+ "node_modules/type-fest": {
1910
+ "version": "0.13.1",
1911
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz",
1912
+ "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==",
1913
+ "license": "(MIT OR CC0-1.0)",
1914
+ "engines": {
1915
+ "node": ">=10"
1916
+ },
1917
+ "funding": {
1918
+ "url": "https://github.com/sponsors/sindresorhus"
1919
+ }
1920
+ },
1921
+ "node_modules/undici-types": {
1922
+ "version": "7.12.0",
1923
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.12.0.tgz",
1924
+ "integrity": "sha512-goOacqME2GYyOZZfb5Lgtu+1IDmAlAEu5xnD3+xTzS10hT0vzpf0SPjkXwAw9Jm+4n/mQGDP3LO8CPbYROeBfQ==",
1925
+ "license": "MIT"
1926
+ },
1927
+ "node_modules/vite": {
1928
+ "version": "7.1.6",
1929
+ "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.6.tgz",
1930
+ "integrity": "sha512-SRYIB8t/isTwNn8vMB3MR6E+EQZM/WG1aKmmIUCfDXfVvKfc20ZpamngWHKzAmmu9ppsgxsg4b2I7c90JZudIQ==",
1931
+ "dev": true,
1932
+ "license": "MIT",
1933
+ "dependencies": {
1934
+ "esbuild": "^0.25.0",
1935
+ "fdir": "^6.5.0",
1936
+ "picomatch": "^4.0.3",
1937
+ "postcss": "^8.5.6",
1938
+ "rollup": "^4.43.0",
1939
+ "tinyglobby": "^0.2.15"
1940
+ },
1941
+ "bin": {
1942
+ "vite": "bin/vite.js"
1943
+ },
1944
+ "engines": {
1945
+ "node": "^20.19.0 || >=22.12.0"
1946
+ },
1947
+ "funding": {
1948
+ "url": "https://github.com/vitejs/vite?sponsor=1"
1949
+ },
1950
+ "optionalDependencies": {
1951
+ "fsevents": "~2.3.3"
1952
+ },
1953
+ "peerDependencies": {
1954
+ "@types/node": "^20.19.0 || >=22.12.0",
1955
+ "jiti": ">=1.21.0",
1956
+ "less": "^4.0.0",
1957
+ "lightningcss": "^1.21.0",
1958
+ "sass": "^1.70.0",
1959
+ "sass-embedded": "^1.70.0",
1960
+ "stylus": ">=0.54.8",
1961
+ "sugarss": "^5.0.0",
1962
+ "terser": "^5.16.0",
1963
+ "tsx": "^4.8.1",
1964
+ "yaml": "^2.4.2"
1965
+ },
1966
+ "peerDependenciesMeta": {
1967
+ "@types/node": {
1968
+ "optional": true
1969
+ },
1970
+ "jiti": {
1971
+ "optional": true
1972
+ },
1973
+ "less": {
1974
+ "optional": true
1975
+ },
1976
+ "lightningcss": {
1977
+ "optional": true
1978
+ },
1979
+ "sass": {
1980
+ "optional": true
1981
+ },
1982
+ "sass-embedded": {
1983
+ "optional": true
1984
+ },
1985
+ "stylus": {
1986
+ "optional": true
1987
+ },
1988
+ "sugarss": {
1989
+ "optional": true
1990
+ },
1991
+ "terser": {
1992
+ "optional": true
1993
+ },
1994
+ "tsx": {
1995
+ "optional": true
1996
+ },
1997
+ "yaml": {
1998
+ "optional": true
1999
+ }
2000
+ }
2001
+ },
2002
+ "node_modules/yallist": {
2003
+ "version": "5.0.0",
2004
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz",
2005
+ "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==",
2006
+ "license": "BlueOak-1.0.0",
2007
+ "engines": {
2008
+ "node": ">=18"
2009
+ }
2010
+ }
2011
+ }
2012
+ }
src/package.json ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "video-object-detection",
3
+ "private": true,
4
+ "version": "0.0.0",
5
+ "type": "module",
6
+ "scripts": {
7
+ "dev": "vite",
8
+ "build": "vite build",
9
+ "preview": "vite preview"
10
+ },
11
+ "devDependencies": {
12
+ "vite": "^7.1.6"
13
+ },
14
+ "dependencies": {
15
+ "@huggingface/transformers": "3.7.1",
16
+ "onnxruntime-node": "^1.21.0"
17
+ }
18
+ }
src/style.css ADDED
@@ -0,0 +1,104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ * {
2
+ box-sizing: border-box;
3
+ padding: 0;
4
+ margin: 0;
5
+ font-family: sans-serif;
6
+ }
7
+
8
+ html,
9
+ body {
10
+ height: 100%;
11
+ }
12
+
13
+ body {
14
+ padding: 16px 32px;
15
+ }
16
+
17
+ body,
18
+ #container {
19
+ display: flex;
20
+ flex-direction: column;
21
+ justify-content: center;
22
+ align-items: center;
23
+ }
24
+
25
+ #controls {
26
+ display: flex;
27
+ padding: 1rem;
28
+ gap: 1rem;
29
+ }
30
+
31
+ #controls > div {
32
+ text-align: center;
33
+ }
34
+
35
+ h1,
36
+ h4 {
37
+ text-align: center;
38
+ }
39
+
40
+ h4 {
41
+ margin-top: 0.5rem;
42
+ }
43
+
44
+ #container {
45
+ position: relative;
46
+ width: 540px;
47
+ height: 405px;
48
+ max-width: 100%;
49
+ max-height: 100%;
50
+ border: 2px dashed #d1d5db;
51
+ border-radius: 0.75rem;
52
+ overflow: hidden;
53
+ margin-top: 1rem;
54
+ background-size: 100% 100%;
55
+ background-position: center;
56
+ background-repeat: no-repeat;
57
+ }
58
+
59
+ #overlay,
60
+ canvas {
61
+ position: absolute;
62
+ width: 100%;
63
+ height: 100%;
64
+ }
65
+
66
+ #status {
67
+ min-height: 16px;
68
+ margin: 8px 0;
69
+ }
70
+
71
+ .bounding-box {
72
+ position: absolute;
73
+ box-sizing: border-box;
74
+ border: solid 2px;
75
+ }
76
+
77
+ .bounding-box-label {
78
+ color: white;
79
+ position: absolute;
80
+ font-size: 12px;
81
+ margin: -16px 0 0 -2px;
82
+ padding: 1px;
83
+ }
84
+
85
+
86
+ #size-container, #scale-container {
87
+ display: none;
88
+ }
89
+
90
+ a {
91
+ color: rgba(39, 94, 254, 1);
92
+ text-decoration: none;
93
+ }
94
+
95
+ a:hover {
96
+ text-decoration: underline;
97
+ }
98
+
99
+ #versions {
100
+ margin-top: 0.5rem;
101
+ font-size: 0.8rem;
102
+ color: rgba(0, 0, 0, 0.3);
103
+ }
104
+
src/vite.config.js ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ import { defineConfig } from "vite";
2
+ export default defineConfig({
3
+ build: {
4
+ target: "esnext",
5
+ outDir: '../',
6
+ }
7
+ });