akarisub 0.2.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/README.md +198 -167
  2. package/THIRD_PARTY_NOTICES.md +55 -163
  3. package/dist/COPYRIGHT +56 -164
  4. package/dist/index.d.ts +12 -0
  5. package/dist/index.d.ts.map +1 -0
  6. package/dist/index.js +11 -147
  7. package/dist/index.js.map +1 -0
  8. package/dist/ts/{ts/akarisub.d.ts → akarisub.d.ts} +80 -99
  9. package/dist/ts/akarisub.d.ts.map +1 -0
  10. package/dist/ts/akarisub.js +2086 -0
  11. package/dist/ts/akarisub.js.map +1 -0
  12. package/dist/ts/timing.d.ts +63 -0
  13. package/dist/ts/timing.d.ts.map +1 -0
  14. package/dist/ts/timing.js +219 -0
  15. package/dist/ts/timing.js.map +1 -0
  16. package/dist/ts/{ts/types.d.ts → types.d.ts} +103 -78
  17. package/dist/ts/types.d.ts.map +1 -0
  18. package/dist/ts/types.js +2 -0
  19. package/dist/ts/{ts/types.js.map → types.js.map} +1 -1
  20. package/dist/ts/{ts/utils.d.ts → utils.d.ts} +0 -31
  21. package/dist/ts/utils.d.ts.map +1 -0
  22. package/dist/ts/{ts/utils.js → utils.js} +0 -56
  23. package/dist/ts/utils.js.map +1 -0
  24. package/dist/ts/wasm.d.ts +12 -0
  25. package/dist/ts/wasm.d.ts.map +1 -0
  26. package/dist/ts/wasm.js +46 -0
  27. package/dist/ts/wasm.js.map +1 -0
  28. package/dist/ts/{ts/webgl2-renderer.d.ts → webgl2-renderer.d.ts} +0 -12
  29. package/dist/ts/webgl2-renderer.d.ts.map +1 -0
  30. package/dist/ts/{ts/webgl2-renderer.js → webgl2-renderer.js} +0 -27
  31. package/dist/ts/webgl2-renderer.js.map +1 -0
  32. package/dist/ts/{ts/webgpu-renderer.d.ts → webgpu-renderer.d.ts} +17 -16
  33. package/dist/ts/webgpu-renderer.d.ts.map +1 -0
  34. package/dist/ts/{ts/webgpu-renderer.js → webgpu-renderer.js} +148 -71
  35. package/dist/ts/webgpu-renderer.js.map +1 -0
  36. package/dist/ts/worker.d.ts +2 -0
  37. package/dist/ts/{ts/worker.d.ts.map → worker.d.ts.map} +1 -1
  38. package/dist/ts/{ts/worker.js → worker.js} +1064 -264
  39. package/dist/ts/worker.js.map +1 -0
  40. package/dist/wrapper.d.ts +8 -0
  41. package/dist/wrapper.d.ts.map +1 -0
  42. package/dist/{ts/index.js → wrapper.js} +4 -14
  43. package/dist/wrapper.js.map +1 -0
  44. package/package.json +24 -22
  45. package/pkg/akarisub.js +53 -0
  46. package/{dist/akarisub-worker.wasm → pkg/akarisub.wasm} +0 -0
  47. package/src/wrapper.ts +46 -0
  48. package/dist/akarisub-worker.js +0 -39
  49. package/dist/akarisub.umd.js +0 -159
  50. package/dist/ts/index.d.ts +0 -14
  51. package/dist/ts/index.d.ts.map +0 -1
  52. package/dist/ts/index.js.map +0 -1
  53. package/dist/ts/ts/akarisub.d.ts.map +0 -1
  54. package/dist/ts/ts/akarisub.js +0 -1073
  55. package/dist/ts/ts/akarisub.js.map +0 -1
  56. package/dist/ts/ts/types.d.ts.map +0 -1
  57. package/dist/ts/ts/types.js +0 -5
  58. package/dist/ts/ts/utils.d.ts.map +0 -1
  59. package/dist/ts/ts/utils.js.map +0 -1
  60. package/dist/ts/ts/webgl2-renderer.d.ts.map +0 -1
  61. package/dist/ts/ts/webgl2-renderer.js.map +0 -1
  62. package/dist/ts/ts/webgpu-renderer.d.ts.map +0 -1
  63. package/dist/ts/ts/webgpu-renderer.js.map +0 -1
  64. package/dist/ts/ts/worker.d.ts +0 -6
  65. package/dist/ts/ts/worker.js.map +0 -1
  66. package/dist/ts/wrapper.d.ts +0 -8
  67. package/dist/ts/wrapper.d.ts.map +0 -1
  68. package/dist/ts/wrapper.js +0 -9
  69. package/dist/ts/wrapper.js.map +0 -1
  70. package/src/ts/akarisub.ts +0 -1272
  71. package/src/ts/types.ts +0 -397
  72. package/src/ts/utils.ts +0 -512
  73. package/src/ts/webgl2-renderer.ts +0 -426
  74. package/src/ts/webgpu-renderer.ts +0 -691
  75. package/src/ts/worker.ts +0 -2052
  76. /package/{dist → assets}/default.woff2 +0 -0
@@ -1,48 +1,30 @@
1
- /**
2
- * Type definitions for AkariSub TypeScript implementation.
3
- */
4
- /** ASS Event (dialogue/subtitle entry) */
5
1
  export interface ASSEvent {
6
- /** Start Time of the Event (in milliseconds) */
7
2
  Start: number;
8
- /** Duration of the Event (in milliseconds) */
9
3
  Duration: number;
10
- /** Style name */
11
4
  Style: string;
12
5
  /** Character name (for information only) */
13
6
  Name: string;
14
- /** Left Margin override in pixels */
15
7
  MarginL: number;
16
- /** Right Margin override in pixels */
17
8
  MarginR: number;
18
- /** Bottom Margin override in pixels */
19
9
  MarginV: number;
20
- /** Transition Effect */
21
10
  Effect: string;
22
- /** Subtitle Text */
23
11
  Text: string;
24
- /** Read order number */
25
12
  ReadOrder: number;
26
- /** Z-index layer */
27
13
  Layer: number;
28
- /** Internal index */
29
14
  _index?: number;
30
15
  }
31
- /** ASS Style definition */
32
16
  export interface ASSStyle {
33
17
  /** Style name (case sensitive) */
34
18
  Name: string;
35
- /** Font family name */
36
19
  FontName: string;
37
- /** Font size */
38
20
  FontSize: number;
39
- /** Primary color (RGBA as uint32) */
21
+ /** RGBA packed as uint32 */
40
22
  PrimaryColour: number;
41
- /** Secondary color (RGBA as uint32) */
23
+ /** RGBA packed as uint32 */
42
24
  SecondaryColour: number;
43
- /** Outline color (RGBA as uint32) */
25
+ /** RGBA packed as uint32 */
44
26
  OutlineColour: number;
45
- /** Background/shadow color (RGBA as uint32) */
27
+ /** RGBA packed as uint32 */
46
28
  BackColour: number;
47
29
  /** Bold (-1 = true, 0 = false) */
48
30
  Bold: number;
@@ -52,82 +34,77 @@ export interface ASSStyle {
52
34
  Underline: number;
53
35
  /** StrikeOut (-1 = true, 0 = false) */
54
36
  StrikeOut: number;
55
- /** Width scale (percent) */
37
+ /** Width scale percent */
56
38
  ScaleX: number;
57
- /** Height scale (percent) */
39
+ /** Height scale percent */
58
40
  ScaleY: number;
59
- /** Extra spacing between characters (pixels) */
60
41
  Spacing: number;
61
- /** Rotation angle (degrees) */
62
42
  Angle: number;
63
43
  /** Border style (1 = outline + shadow, 3 = opaque box) */
64
44
  BorderStyle: number;
65
- /** Outline width (0-4 pixels) */
66
45
  Outline: number;
67
- /** Shadow depth (0-4 pixels) */
68
46
  Shadow: number;
69
47
  /** Alignment (1-9, numpad style) */
70
48
  Alignment: number;
71
- /** Left margin (pixels) */
72
49
  MarginL: number;
73
- /** Right margin (pixels) */
74
50
  MarginR: number;
75
- /** Vertical margin (pixels) */
76
51
  MarginV: number;
77
- /** Font encoding */
78
52
  Encoding: number;
79
- /** Treat font name as pattern */
80
53
  treat_fontname_as_pattern: number;
81
- /** Blur amount */
82
54
  Blur: number;
83
- /** Text justification */
84
55
  Justify: number;
85
56
  }
86
- /** Performance statistics for the renderer */
87
57
  export interface PerformanceStats {
88
- /** Total frames rendered since reset */
89
58
  framesRendered: number;
90
- /** Number of frames dropped */
91
59
  framesDropped: number;
92
- /** Average render time in milliseconds */
93
60
  avgRenderTime: number;
94
- /** Maximum render time in milliseconds */
95
61
  maxRenderTime: number;
96
- /** Minimum render time in milliseconds */
97
62
  minRenderTime: number;
98
- /** Last render time in milliseconds */
99
63
  lastRenderTime: number;
100
- /** Estimated render FPS based on timing */
64
+ /** Current automatically learned presentation-latency compensation in milliseconds */
65
+ timingCompensationMs?: number;
66
+ /** Number of image planes emitted by the last render */
67
+ lastImageCount?: number;
68
+ /** Total RGBA/raw image pixels emitted by the last render */
69
+ lastImagePixels?: number;
101
70
  renderFps: number;
102
- /** Whether using Web Worker */
103
71
  usingWorker: boolean;
104
- /** Whether offscreen rendering is enabled */
72
+ /** Whether worker-side raw ASS_Image WebGL2 composition is active */
73
+ rawAssImageGpu?: boolean;
74
+ workerRenderer?: 'webgl2-raw-ass' | 'canvas2d' | 'hybrid' | 'main-thread';
105
75
  offscreenRender: boolean;
106
- /** Whether on-demand rendering is enabled */
107
76
  onDemandRender: boolean;
108
- /** Number of pending render operations */
109
77
  pendingRenders: number;
110
- /** Total subtitle events in current track */
111
78
  totalEvents: number;
112
- /** Number of cache hits (unchanged frames) */
113
79
  cacheHits: number;
114
- /** Number of cache misses (rendered frames) */
115
80
  cacheMisses: number;
116
81
  }
117
- /** Configuration options for AkariSub */
82
+ /** Encoded-frame timestamps with optional media/subtitle clock offsets. */
83
+ export interface FrameTimeline extends ArrayLike<number> {
84
+ /** Origin subtracted from raw browser media timestamps when locating a frame. */
85
+ mediaTimeOrigin?: number;
86
+ /** Signed offset subtracted from frame time when sampling libass. */
87
+ subtitleTimeOffset?: number;
88
+ }
118
89
  export interface AkariSubOptions {
119
- /** Video element to sync with and overlay */
120
90
  video?: HTMLVideoElement;
121
- /** Custom canvas element (optional if video is provided) */
122
91
  canvas?: HTMLCanvasElement;
123
92
  /** Image blending mode: 'js' for hardware acceleration, 'wasm' for software */
124
93
  blendMode?: 'js' | 'wasm';
125
94
  /** Use async rendering with ImageBitmap (default: true) */
126
95
  asyncRender?: boolean;
127
- /** Use offscreen canvas rendering (default: true) */
96
+ /** Use offscreen canvas rendering (default: true for video-managed canvases, false for custom canvases) */
128
97
  offscreenRender?: boolean;
98
+ /** Use worker-side raw ASS_Image WebGL2 composition (default: false) */
99
+ rawAssImageGpu?: boolean;
129
100
  /** Use requestVideoFrameCallback for precise sync (default: true) */
130
101
  onDemandRender?: boolean;
102
+ /** Compensate measured render/presentation latency while playing (default: true) */
103
+ adaptiveTiming?: boolean;
104
+ /** Encoded video-frame timestamps and optional browser/subtitle clock offsets, in seconds */
105
+ frameTimeline?: FrameTimeline;
106
+ /** Number of exact subtitle frames to prepare ahead (default: 2) */
107
+ framePrefetch?: number;
131
108
  /** Target FPS when not using onDemandRender (default: 24) */
132
109
  targetFps?: number;
133
110
  /** Time offset in seconds (default: 0) */
@@ -146,34 +123,40 @@ export interface AkariSubOptions {
146
123
  dropAllBlur?: boolean;
147
124
  /** Clamp \\pos values to script resolution (default: false) */
148
125
  clampPos?: boolean;
149
- /** URL to the worker script */
126
+ /** Optional worker script URL. Defaults to the package worker module URL. */
150
127
  workerUrl?: string;
151
- /** URL to the WASM binary */
128
+ /** Optional WASM binary URL. Defaults to the package WASM URL resolved from import.meta.url. */
152
129
  wasmUrl?: string;
153
- /** URL to subtitle file */
130
+ /** Optional WASM glue script URL. Defaults to the package glue URL resolved from import.meta.url. */
131
+ glueUrl?: string;
154
132
  subUrl?: string;
155
- /** Subtitle content as string or UTF-8 bytes */
156
133
  subContent?: string | Uint8Array | ArrayBuffer;
157
134
  /** Encrypted subtitle content decrypted inside the worker before loading into libass */
158
135
  encryptedSubContent?: EncryptedSubtitleContent;
159
- /** Array of font URLs or Uint8Arrays */
160
136
  fonts?: (string | Uint8Array)[];
161
- /** Available fonts map (lowercase name -> URL/data) */
162
137
  availableFonts?: Record<string, string | Uint8Array>;
163
138
  /** Fallback font families in order (default: ['liberation sans']). Fontconfig uses these for cascade. */
164
139
  fallbackFonts?: string[];
165
- /** Use Local Font Access API (default: true if available) */
140
+ /** Use Local Font Access API for OS font lookup (default: true if available) */
166
141
  useLocalFonts?: boolean;
142
+ /** Use libass fontconfig provider for virtual/packaged font lookup (default: true) */
143
+ useFontconfigProvider?: boolean;
167
144
  /** libass bitmap cache memory limit in MiB */
168
145
  libassMemoryLimit?: number;
169
146
  /** libass glyph cache limit */
170
147
  libassGlyphLimit?: number;
171
148
  /** Callback invoked when all GPU renderers (WebGPU, WebGL2) are unavailable and the renderer falls back to Canvas2D */
172
149
  onCanvasFallback?: () => void;
173
- /** Additional time in seconds to render subtitles ahead for pipeline latency compensation (default: 0.008) */
150
+ /** Additional time in seconds to render subtitles ahead, on top of adaptive timing (default: 0) */
174
151
  renderAhead?: number;
175
152
  /** Pre-render early track windows after load to warm libass caches (default: false) */
176
153
  fullTrackWarmup?: boolean;
154
+ /** Wait for fullTrackWarmup to finish before ready (default: false) */
155
+ blockingFullTrackWarmup?: boolean;
156
+ /** Step in seconds for fullTrackWarmup; lower values warm more frames (default: 1) */
157
+ fullTrackWarmupStep?: number;
158
+ /** Allow adaptive CPU preblend layouts for text-heavy frames (default: false) */
159
+ adaptiveBlendLayouts?: boolean;
177
160
  }
178
161
  export interface EncryptedSubtitleContent {
179
162
  /** Non-extractable AES-GCM content key from akari-crypto's v2 transport flow */
@@ -191,7 +174,6 @@ export type ASSStyleCallback = (error: Error | null, styles: ASSStyle[]) => void
191
174
  export type PerformanceStatsCallback = (error: Error | null, stats: PerformanceStats | null) => void;
192
175
  /** @deprecated Use Promise-based resetStats() instead */
193
176
  export type ResetStatsCallback = (error: Error | null) => void;
194
- /** Image data for rendering */
195
177
  export interface RenderImage {
196
178
  x: number;
197
179
  y: number;
@@ -199,7 +181,19 @@ export interface RenderImage {
199
181
  h: number;
200
182
  image: ImageBitmap | ArrayBuffer | Uint8Array | Uint8ClampedArray | number;
201
183
  }
202
- /** Render timing debug info */
184
+ /** Raw libass ASS_Image plane exposed directly from WASM for GPU mask composition. */
185
+ export interface RawASSImage {
186
+ dst_x: number;
187
+ dst_y: number;
188
+ w: number;
189
+ h: number;
190
+ /** Pointer to ASS_Image.bitmap in WASM memory */
191
+ bitmap: number;
192
+ /** ASS_Image.color packed as RRGGBBAA */
193
+ color: number;
194
+ stride: number;
195
+ type: number;
196
+ }
203
197
  export interface RenderTimes {
204
198
  WASMRenderTime?: number;
205
199
  WASMBitmapDecodeTime?: number;
@@ -208,7 +202,6 @@ export interface RenderTimes {
208
202
  IPCTime?: number;
209
203
  bitmaps?: number;
210
204
  }
211
- /** Worker -> Main thread message for rendering */
212
205
  export interface RenderMessage {
213
206
  target: 'render';
214
207
  asyncRender: boolean;
@@ -217,14 +210,20 @@ export interface RenderMessage {
217
210
  width: number;
218
211
  height: number;
219
212
  colorSpace: string | null;
213
+ requestId?: number;
214
+ renderEpoch?: number;
215
+ presentationId?: number;
220
216
  }
221
- /** Worker -> Main thread messages */
222
217
  export type WorkerOutboundMessage = {
223
218
  target: 'ready';
224
219
  } | {
225
220
  target: 'trackReady';
226
221
  } | {
227
222
  target: 'unbusy';
223
+ requestId?: number;
224
+ renderEpoch?: number;
225
+ presentationId?: number;
226
+ painted?: boolean;
228
227
  } | {
229
228
  target: 'console';
230
229
  command: string;
@@ -255,14 +254,21 @@ export type WorkerOutboundMessage = {
255
254
  target: 'getStyleCount';
256
255
  count: number;
257
256
  } | RenderMessage;
258
- /** Main thread -> Worker init message */
259
257
  export interface WorkerInitMessage {
260
258
  target: 'init';
261
259
  wasmUrl: string;
260
+ glueUrl?: string;
262
261
  asyncRender: boolean;
263
262
  fullTrackWarmup: boolean;
263
+ blockingFullTrackWarmup: boolean;
264
+ fullTrackWarmupStep: number;
265
+ adaptiveBlendLayouts: boolean;
266
+ rawAssImageGpu: boolean;
264
267
  onDemandRender: boolean;
265
268
  initialTime: number;
269
+ initialIsPaused: boolean;
270
+ initialPlaybackRate: number;
271
+ initialTimeSnapshotAtMs: number;
266
272
  width: number;
267
273
  height: number;
268
274
  blendMode: 'js' | 'wasm';
@@ -274,17 +280,21 @@ export interface WorkerInitMessage {
274
280
  fallbackFonts: string[];
275
281
  debug: boolean;
276
282
  targetFps: number;
283
+ renderAhead: number;
284
+ adaptiveTiming: boolean;
285
+ frameTimelineMode: boolean;
277
286
  dropAllAnimations?: boolean;
278
287
  dropAllBlur?: boolean;
279
288
  clampPos?: boolean;
280
289
  libassMemoryLimit?: number;
281
290
  libassGlyphLimit?: number;
282
291
  useLocalFonts: boolean;
292
+ useFontconfigProvider: boolean;
283
293
  hasBitmapBug: boolean;
284
294
  }
285
- /** Main thread -> Worker messages */
286
295
  export type WorkerInboundMessage = WorkerInitMessage | {
287
296
  target: 'offscreenCanvas';
297
+ rawAssImageGpu?: boolean;
288
298
  transferable: [OffscreenCanvas];
289
299
  } | {
290
300
  target: 'detachOffscreen';
@@ -300,6 +310,7 @@ export type WorkerInboundMessage = WorkerInitMessage | {
300
310
  currentTime?: number;
301
311
  isPaused?: boolean;
302
312
  rate?: number;
313
+ renderAhead?: number;
303
314
  colorSpace?: string | null;
304
315
  } | {
305
316
  target: 'setTrack';
@@ -315,6 +326,26 @@ export type WorkerInboundMessage = WorkerInitMessage | {
315
326
  } | {
316
327
  target: 'demand';
317
328
  time: number;
329
+ force?: boolean;
330
+ requestId?: number;
331
+ renderEpoch?: number;
332
+ presentationId?: number;
333
+ } | {
334
+ target: 'prepare';
335
+ time: number;
336
+ prepareId: number;
337
+ renderEpoch: number;
338
+ force?: boolean;
339
+ } | {
340
+ target: 'presentation';
341
+ presentationId: number;
342
+ } | {
343
+ target: 'presentFrame';
344
+ bitmap: ImageBitmap;
345
+ presentationId: number;
346
+ } | {
347
+ target: 'frameTimelineMode';
348
+ enabled: boolean;
318
349
  } | {
319
350
  target: 'destroy';
320
351
  } | {
@@ -363,39 +394,32 @@ export type WorkerInboundMessage = WorkerInitMessage | {
363
394
  } | {
364
395
  target: 'getColorSpace';
365
396
  };
366
- /** requestVideoFrameCallback metadata */
367
397
  export interface VideoFrameCallbackMetadata {
368
- /** The current media time of the frame being displayed (seconds) */
369
398
  mediaTime: number;
370
- /** Video intrinsic width */
371
399
  width: number;
372
- /** Video intrinsic height */
373
400
  height: number;
374
- /** Number of frames presented so far */
375
401
  presentedFrames?: number;
376
- /** Time spent processing the frame (milliseconds) */
377
402
  processingDuration?: number;
378
- /** Expected time when this frame will be displayed (DOMHighResTimeStamp) */
379
403
  expectedDisplayTime?: number;
380
- /** Time at which the frame was presented (DOMHighResTimeStamp) */
381
404
  presentationTime?: number;
382
405
  }
383
406
  export type WebYCbCrColorSpace = 'BT709' | 'BT601';
384
407
  export type SubtitleColorSpace = 'BT601' | 'BT709' | 'SMPTE240M' | 'FCC' | null;
385
- /** Emscripten AkariSub Module (C ABI exports) */
386
408
  export interface AkariSubModule extends EmscriptenModule {
387
409
  _malloc: (size: number) => number;
388
410
  _free: (ptr: number) => void;
389
411
  _akarisub_create: (width: number, height: number, fallbackFontPtr: number, debug: number) => number;
390
412
  _akarisub_destroy: (handle: number) => void;
391
413
  _akarisub_set_drop_animations: (handle: number, value: number) => void;
414
+ _akarisub_set_adaptive_blend_layouts: (handle: number, value: number) => void;
392
415
  _akarisub_create_track_mem: (handle: number, contentPtr: number) => void;
393
416
  _akarisub_remove_track: (handle: number) => void;
394
417
  _akarisub_resize_canvas: (handle: number, width: number, height: number, videoWidth: number, videoHeight: number) => void;
395
- _akarisub_add_font: (handle: number, namePtr: number, dataPtr: number, size: number) => void;
418
+ _akarisub_add_font: (handle: number, namePtr: number, dataPtr: number, size: number) => number;
396
419
  _akarisub_reload_fonts: (handle: number) => void;
397
420
  _akarisub_set_default_font: (handle: number, fontPtr: number) => void;
398
421
  _akarisub_set_fallback_fonts: (handle: number, fontsPtr: number) => void;
422
+ _akarisub_set_use_fontconfig_provider: (handle: number, enabled: number) => void;
399
423
  _akarisub_set_memory_limits: (handle: number, glyphLimit: number, memoryLimit: number) => void;
400
424
  _akarisub_get_event_count: (handle: number) => number;
401
425
  _akarisub_alloc_event: (handle: number) => number;
@@ -418,6 +442,7 @@ export interface AkariSubModule extends EmscriptenModule {
418
442
  _akarisub_get_empty_window: (handle: number, tm: number, outPtr: number) => number;
419
443
  _akarisub_render_blend_collect: (handle: number, time: number, force: number, outPtr: number, maxItems: number) => number;
420
444
  _akarisub_render_image_collect: (handle: number, time: number, force: number, outPtr: number, maxItems: number) => number;
445
+ _akarisub_render_raw_collect: (handle: number, time: number, force: number, outPtr: number, maxItems: number) => number;
421
446
  FS_createPath: (parent: string, path: string, canRead: boolean, canWrite: boolean) => void;
422
447
  FS_createDataFile: (parent: string, name: string | null, data: Uint8Array, canRead: boolean, canWrite: boolean, canOwn?: boolean) => void;
423
448
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ts/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,4BAA4B;IAC5B,aAAa,EAAE,MAAM,CAAA;IACrB,4BAA4B;IAC5B,eAAe,EAAE,MAAM,CAAA;IACvB,4BAA4B;IAC5B,aAAa,EAAE,MAAM,CAAA;IACrB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAA;IACd,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAA;IACjB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAA;IACjB,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,2BAA2B;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,oCAAoC;IACpC,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,yBAAyB,EAAE,MAAM,CAAA;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,sFAAsF;IACtF,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,wDAAwD;IACxD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,6DAA6D;IAC7D,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,OAAO,CAAA;IACpB,qEAAqE;IACrE,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,cAAc,CAAC,EAAE,gBAAgB,GAAG,UAAU,GAAG,QAAQ,GAAG,aAAa,CAAA;IACzE,eAAe,EAAE,OAAO,CAAA;IACxB,cAAc,EAAE,OAAO,CAAA;IACvB,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,2EAA2E;AAC3E,MAAM,WAAW,aAAc,SAAQ,SAAS,CAAC,MAAM,CAAC;IACtD,iFAAiF;IACjF,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,qEAAqE;IACrE,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,gBAAgB,CAAA;IACxB,MAAM,CAAC,EAAE,iBAAiB,CAAA;IAC1B,+EAA+E;IAC/E,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;IACzB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,2GAA2G;IAC3G,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,wEAAwE;IACxE,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,qEAAqE;IACrE,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,oFAAoF;IACpF,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,6FAA6F;IAC7F,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,oEAAoE;IACpE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,gDAAgD;IAChD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,kDAAkD;IAClD,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,uDAAuD;IACvD,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,sDAAsD;IACtD,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,6DAA6D;IAC7D,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gGAAgG;IAChG,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,qGAAqG;IACrG,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,CAAA;IAC9C,wFAAwF;IACxF,mBAAmB,CAAC,EAAE,wBAAwB,CAAA;IAC9C,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,UAAU,CAAC,EAAE,CAAA;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,CAAA;IACpD,yGAAyG;IACzG,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,gFAAgF;IAChF,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,sFAAsF;IACtF,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,8CAA8C;IAC9C,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,+BAA+B;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,uHAAuH;IACvH,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAA;IAC7B,mGAAmG;IACnG,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,uFAAuF;IACvF,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,uEAAuE;IACvE,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,sFAAsF;IACtF,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,iFAAiF;IACjF,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACvC,gFAAgF;IAChF,UAAU,EAAE,SAAS,CAAA;IACrB,wCAAwC;IACxC,SAAS,CAAC,EAAE,WAAW,CAAA;IACvB,iEAAiE;IACjE,eAAe,CAAC,EAAE,WAAW,EAAE,CAAA;CAChC;AAED,wDAAwD;AACxD,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAA;AAChF,wDAAwD;AACxD,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAA;AAChF,uDAAuD;AACvD,MAAM,MAAM,wBAAwB,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI,KAAK,IAAI,CAAA;AACpG,yDAAyD;AACzD,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAA;AAE9D,MAAM,WAAW,WAAW;IAC1B,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,KAAK,EAAE,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,iBAAiB,GAAG,MAAM,CAAA;CAC3E;AAED,sFAAsF;AACtF,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAA;IACd,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,WAAW;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,QAAQ,CAAA;IAChB,WAAW,EAAE,OAAO,CAAA;IACpB,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,KAAK,EAAE,WAAW,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,MAAM,qBAAqB,GAC7B;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GACnB;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE,GACxB;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAC1G;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,MAAM,EAAE,kBAAkB,CAAC;IAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACjE;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,QAAQ,EAAE,CAAA;CAAE,GAC3C;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzD;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;CAAE,GACxD;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAC1C;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC1C,aAAa,CAAA;AAEjB,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,OAAO,CAAA;IACpB,eAAe,EAAE,OAAO,CAAA;IACxB,uBAAuB,EAAE,OAAO,CAAA;IAChC,mBAAmB,EAAE,MAAM,CAAA;IAC3B,oBAAoB,EAAE,OAAO,CAAA;IAC7B,cAAc,EAAE,OAAO,CAAA;IACvB,cAAc,EAAE,OAAO,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,OAAO,CAAA;IACxB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,uBAAuB,EAAE,MAAM,CAAA;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,IAAI,GAAG,MAAM,CAAA;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,IAAI,CAAA;IACrD,mBAAmB,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAA;IACrD,KAAK,EAAE,CAAC,MAAM,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,CAAA;IACnD,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,KAAK,EAAE,OAAO,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,OAAO,CAAA;IACvB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,aAAa,EAAE,OAAO,CAAA;IACtB,qBAAqB,EAAE,OAAO,CAAA;IAC9B,YAAY,EAAE,OAAO,CAAA;CACtB;AAED,MAAM,MAAM,oBAAoB,GAC5B,iBAAiB,GACjB;IAAE,MAAM,EAAE,iBAAiB,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,CAAC,eAAe,CAAC,CAAA;CAAE,GACxF;IAAE,MAAM,EAAE,iBAAiB,CAAA;CAAE,GAC7B;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7G;IACE,MAAM,EAAE,OAAO,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B,GACD;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,CAAA;CAAE,GAClE;IAAE,MAAM,EAAE,mBAAmB,CAAC;IAAC,OAAO,EAAE,wBAAwB,CAAA;CAAE,GAClE;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,GACvB;IACE,MAAM,EAAE,QAAQ,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,GACD;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5F;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,WAAW,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GACvE;IAAE,MAAM,EAAE,mBAAmB,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GACjD;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GACrB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAA;CAAE,GAChD;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;CAAE,GACnD;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC/D;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,GACvB;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;CAAE,GACnD;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC/D;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,GACvB;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;CAAE,GACrD;IAAE,MAAM,EAAE,sBAAsB,CAAA;CAAE,GAClC;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,GACtB;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE,GACxB;IAAE,MAAM,EAAE,eAAe,CAAA;CAAE,GAC3B;IAAE,MAAM,EAAE,eAAe,CAAA;CAAE,GAC3B;IAAE,MAAM,EAAE,eAAe,CAAA;CAAE,CAAA;AAE/B,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,OAAO,CAAA;AAClD,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,OAAO,GAAG,WAAW,GAAG,KAAK,GAAG,IAAI,CAAA;AAE/E,MAAM,WAAW,cAAe,SAAQ,gBAAgB;IACtD,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IACjC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5B,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IACnG,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3C,6BAA6B,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACtE,oCAAoC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7E,0BAA0B,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAAA;IACxE,sBAAsB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IAChD,uBAAuB,EAAE,CACvB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,KAChB,IAAI,CAAA;IACT,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IAC9F,sBAAsB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IAChD,0BAA0B,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACrE,4BAA4B,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACxE,qCAAqC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAChF,2BAA2B,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9F,yBAAyB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAA;IACrD,qBAAqB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAA;IACjD,sBAAsB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/D,yBAAyB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAA;IACrD,qBAAqB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAA;IACjD,sBAAsB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/D,8BAA8B,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACvE,gCAAgC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1D,+BAA+B,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAA;IAC3D,uBAAuB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IACjF,uBAAuB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9F,uBAAuB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IACjF,uBAAuB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACjG,uBAAuB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IACjF,uBAAuB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9F,uBAAuB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IACjF,uBAAuB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACjG,8BAA8B,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAA;IAC1E,0BAA0B,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAA;IAClF,8BAA8B,EAAE,CAC9B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,KACb,MAAM,CAAA;IACX,8BAA8B,EAAE,CAC9B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,KACb,MAAM,CAAA;IACX,4BAA4B,EAAE,CAC5B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,KACb,MAAM,CAAA;IACX,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAA;IAC1F,iBAAiB,EAAE,CACjB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,OAAO,EACjB,MAAM,CAAC,EAAE,OAAO,KACb,IAAI,CAAA;CACV"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ts/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/ts/types.ts"],"names":[],"mappings":""}
@@ -1,27 +1,12 @@
1
- /**
2
- * Utility functions for AkariSub.
3
- */
4
1
  import type { SubtitleColorSpace, WebYCbCrColorSpace } from './types';
5
- /** Map video color space to standard name */
6
2
  export declare const webYCbCrMap: Record<string, WebYCbCrColorSpace>;
7
- /** Color matrix conversion values for SVG filter */
8
3
  export declare const colorMatrixConversionMap: Record<string, Record<string, string>>;
9
- /** libass YCbCr color space index map */
10
4
  export declare const libassYCbCrMap: (SubtitleColorSpace | null)[];
11
- /**
12
- * Generate SVG filter URL for color space conversion.
13
- */
14
5
  export declare function getColorSpaceFilterUrl(subtitleColorSpace: SubtitleColorSpace, videoColorSpace: WebYCbCrColorSpace): string | null;
15
- /**
16
- * Compute canvas size with prescaling.
17
- */
18
6
  export declare function computeCanvasSize(width: number, height: number, prescaleFactor: number, prescaleHeightLimit: number, maxRenderHeight: number): {
19
7
  width: number;
20
8
  height: number;
21
9
  };
22
- /**
23
- * Get video position and size accounting for aspect ratio.
24
- */
25
10
  export declare function getVideoPosition(video: HTMLVideoElement, videoWidth?: number, videoHeight?: number): {
26
11
  width: number;
27
12
  height: number;
@@ -41,38 +26,22 @@ interface ASSBodyEntry {
41
26
  key?: string;
42
27
  value: string | string[] | Record<string, string>;
43
28
  }
44
- /**
45
- * Parse ASS file content.
46
- * @param content - ASS file content
47
- * @param stopAtEvents - Stop parsing when [Events] section is reached (for font detection)
48
- */
49
29
  export declare function parseAss(content: string, stopAtEvents?: boolean): ASSSection[];
50
- /**
51
- * Remove all blur tags from subtitle content.
52
- */
53
30
  export declare function dropBlur(subContent: string): string;
54
31
  /**
55
32
  * Scale override tags in Events from detected source resolution to PlayRes.
56
33
  * Only scales tags within override blocks {...} in the Events section.
57
34
  */
58
35
  export declare function fixPlayRes(subContent: string): string;
59
- /**
60
- * Test for browser image bugs.
61
- */
62
36
  export declare function testImageBugs(): Promise<{
63
37
  hasAlphaBug: boolean;
64
38
  hasBitmapBug: boolean;
65
39
  }>;
66
- /**
67
- * Run all feature detection tests.
68
- */
69
40
  export declare function runFeatureTests(): Promise<{
70
41
  hasAlphaBug: boolean;
71
42
  hasBitmapBug: boolean;
72
43
  }>;
73
- /** Get cached alpha bug value */
74
44
  export declare function getAlphaBug(): boolean | null;
75
- /** Get cached bitmap bug value */
76
45
  export declare function getBitmapBug(): boolean | null;
77
46
  export {};
78
47
  //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/ts/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAErE,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAI1D,CAAA;AAED,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAe3E,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,CAAC,kBAAkB,GAAG,IAAI,CAAC,EAYvD,CAAA;AAED,wBAAgB,sBAAsB,CACpC,kBAAkB,EAAE,kBAAkB,EACtC,eAAe,EAAE,kBAAkB,GAClC,MAAM,GAAG,IAAI,CAQf;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,mBAAmB,EAAE,MAAM,EAC3B,eAAe,EAAE,MAAM,GACtB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAyBnC;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,gBAAgB,EACvB,UAAU,GAAE,MAAyB,EACrC,WAAW,GAAE,MAA0B,GACtC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAkBzD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,OAAO,GAAG,iBAAiB,CAmB1F;AAED,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,YAAY,EAAE,CAAA;CACrB;AAED,UAAU,YAAY;IACpB,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAClD;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,GAAE,OAAe,GAAG,UAAU,EAAE,CA0ErF;AAID,wBAAgB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEnD;AAyBD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAmHrD;AAKD,wBAAsB,aAAa,IAAI,OAAO,CAAC;IAAE,WAAW,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAE,CAAC,CAyD9F;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC;IAC/C,WAAW,EAAE,OAAO,CAAA;IACpB,YAAY,EAAE,OAAO,CAAA;CACtB,CAAC,CAED;AAED,wBAAgB,WAAW,IAAI,OAAO,GAAG,IAAI,CAE5C;AAED,wBAAgB,YAAY,IAAI,OAAO,GAAG,IAAI,CAE7C"}