@moq/watch 0.3.2 → 0.4.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.
- package/README.md +1 -2
- package/audio/decoder.d.ts +25 -15
- package/audio/decoder.d.ts.map +1 -1
- package/audio/emitter.d.ts +13 -10
- package/audio/emitter.d.ts.map +1 -1
- package/audio/index.d.ts +0 -2
- package/audio/index.d.ts.map +1 -1
- package/audio/source.d.ts +21 -17
- package/audio/source.d.ts.map +1 -1
- package/audio/unlock.d.ts +20 -0
- package/audio/unlock.d.ts.map +1 -0
- package/audio/unlock.test.d.ts +2 -0
- package/audio/unlock.test.d.ts.map +1 -0
- package/broadcast.d.ts +27 -57
- package/broadcast.d.ts.map +1 -1
- package/element.d.ts +42 -12
- package/element.d.ts.map +1 -1
- package/element.js +146 -90
- package/element.js.map +1 -1
- package/index.d.ts +9 -5
- package/index.d.ts.map +1 -1
- package/index.js +26 -6
- package/index.js.map +1 -0
- package/package.json +5 -5
- package/source-CWtgjSC_.js +1359 -0
- package/source-CWtgjSC_.js.map +1 -0
- package/support/element.d.ts.map +1 -1
- package/support/element.js.map +1 -1
- package/support/index.d.ts +3 -3
- package/support/index.d.ts.map +1 -1
- package/support/index.js +18 -17
- package/support/index.js.map +1 -1
- package/sync-zdwVEj9u.js +129 -0
- package/sync-zdwVEj9u.js.map +1 -0
- package/sync.d.ts +19 -18
- package/sync.d.ts.map +1 -1
- package/ui/components/buffer-control.d.ts +1 -1
- package/ui/components/buffer-control.d.ts.map +1 -1
- package/ui/components/fullscreen-button.d.ts +1 -2
- package/ui/components/fullscreen-button.d.ts.map +1 -1
- package/ui/components/play-pause.d.ts +1 -1
- package/ui/components/play-pause.d.ts.map +1 -1
- package/ui/element.d.ts.map +1 -1
- package/ui/element.js +269 -265
- package/ui/element.js.map +1 -1
- package/ui/fullscreen.d.ts +1 -2
- package/ui/fullscreen.d.ts.map +1 -1
- package/video/decoder.d.ts +32 -16
- package/video/decoder.d.ts.map +1 -1
- package/video/index.d.ts +0 -2
- package/video/index.d.ts.map +1 -1
- package/video/renderer.d.ts +14 -17
- package/video/renderer.d.ts.map +1 -1
- package/video/source.d.ts +23 -20
- package/video/source.d.ts.map +1 -1
- package/audio/backend.d.ts +0 -26
- package/audio/backend.d.ts.map +0 -1
- package/audio/mse.d.ts +0 -22
- package/audio/mse.d.ts.map +0 -1
- package/backend.d.ts +0 -65
- package/backend.d.ts.map +0 -1
- package/broadcast-CQUhUrBZ.js +0 -1701
- package/broadcast-CQUhUrBZ.js.map +0 -1
- package/buffered.d.ts +0 -19
- package/buffered.d.ts.map +0 -1
- package/mse.d.ts +0 -19
- package/mse.d.ts.map +0 -1
- package/sync-D67IxmxJ.js +0 -128
- package/sync-D67IxmxJ.js.map +0 -1
- package/video/backend.d.ts +0 -25
- package/video/backend.d.ts.map +0 -1
- package/video/mse.d.ts +0 -23
- package/video/mse.d.ts.map +0 -1
package/video/source.d.ts
CHANGED
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
import type * as Catalog from "@moq/hang/catalog";
|
|
2
|
-
import
|
|
2
|
+
import type * as Moq from "@moq/net";
|
|
3
|
+
import { type Getter, type Inputs, type Readonlys, Signal } from "@moq/signals";
|
|
3
4
|
import type { Broadcast } from "../broadcast";
|
|
4
|
-
import type { Sync } from "../sync";
|
|
5
5
|
/**
|
|
6
|
-
* A function that checks if a video configuration
|
|
6
|
+
* A function that checks if a video configuration can be played.
|
|
7
|
+
*
|
|
8
|
+
* `Decoder.supported` is the WebCodecs probe used by `<moq-watch>`.
|
|
7
9
|
*/
|
|
8
10
|
export type Supported = (config: Catalog.VideoConfig) => Promise<boolean>;
|
|
9
11
|
/** A video source error that prevents choosing a usable rendition. */
|
|
10
12
|
export type SourceError = "unsupported";
|
|
11
|
-
export type SourceProps = {
|
|
12
|
-
broadcast?: Broadcast | Signal<Broadcast | undefined>;
|
|
13
|
-
target?: Target | Signal<Target | undefined>;
|
|
14
|
-
supported?: Supported;
|
|
15
|
-
};
|
|
16
13
|
export type Target = {
|
|
17
14
|
name?: string;
|
|
18
15
|
pixels?: number;
|
|
@@ -20,23 +17,29 @@ export type Target = {
|
|
|
20
17
|
height?: number;
|
|
21
18
|
bitrate?: number;
|
|
22
19
|
};
|
|
20
|
+
export type SourceInput = {
|
|
21
|
+
broadcast: Getter<Broadcast | undefined>;
|
|
22
|
+
target: Getter<Target | undefined>;
|
|
23
|
+
supported: Getter<Supported | undefined>;
|
|
24
|
+
};
|
|
25
|
+
type SourceOutput = {
|
|
26
|
+
catalog: Signal<Catalog.Video | undefined>;
|
|
27
|
+
available: Signal<Record<string, Catalog.VideoConfig>>;
|
|
28
|
+
error: Signal<SourceError | undefined>;
|
|
29
|
+
track: Signal<string | undefined>;
|
|
30
|
+
config: Signal<Catalog.VideoConfig | undefined>;
|
|
31
|
+
jitter: Signal<Moq.Time.Milli | undefined>;
|
|
32
|
+
};
|
|
23
33
|
/**
|
|
24
34
|
* Source handles catalog extraction, support checking, and rendition selection
|
|
25
|
-
* for video playback.
|
|
35
|
+
* for video playback. The Decoder consumes whichever rendition it picks.
|
|
26
36
|
*/
|
|
27
37
|
export declare class Source {
|
|
28
38
|
#private;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
readonly available: Getter<Record<string, Catalog.VideoConfig>>;
|
|
33
|
-
/** The current source error, or undefined while healthy or still probing. */
|
|
34
|
-
readonly error: Getter<SourceError | undefined>;
|
|
35
|
-
readonly track: Getter<string | undefined>;
|
|
36
|
-
readonly config: Getter<Catalog.VideoConfig | undefined>;
|
|
37
|
-
sync: Sync;
|
|
38
|
-
supported: Signal<Supported | undefined>;
|
|
39
|
-
constructor(sync: Sync, props?: SourceProps);
|
|
39
|
+
readonly in: Readonlys<SourceInput>;
|
|
40
|
+
readonly out: Readonlys<SourceOutput>;
|
|
41
|
+
constructor(props?: Inputs<SourceInput>);
|
|
40
42
|
close(): void;
|
|
41
43
|
}
|
|
44
|
+
export {};
|
|
42
45
|
//# sourceMappingURL=source.d.ts.map
|
package/video/source.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../src/video/source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,OAAO,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../src/video/source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,OAAO,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,KAAK,GAAG,MAAM,UAAU,CAAC;AAErC,OAAO,EAAU,KAAK,MAAM,EAAU,KAAK,MAAM,EAAE,KAAK,SAAS,EAAa,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3G,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAE1E,sEAAsE;AACtE,MAAM,MAAM,WAAW,GAAG,aAAa,CAAC;AAExC,MAAM,MAAM,MAAM,GAAG;IAEpB,IAAI,CAAC,EAAE,MAAM,CAAC;IAGd,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACzB,SAAS,EAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;IACzC,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAInC,SAAS,EAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;CACzC,CAAC;AAEF,KAAK,YAAY,GAAG;IACnB,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;IAC3C,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IAGvD,KAAK,EAAE,MAAM,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IAGvC,KAAK,EAAE,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IAGhD,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;CAC3C,CAAC;AA0JF;;;GAGG;AACH,qBAAa,MAAM;;IAClB,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IAUpC,QAAQ,CAAC,GAAG,0BAAwB;IAIpC,YAAY,KAAK,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,EAUtC;IAwID,KAAK,IAAI,IAAI,CAEZ;CACD"}
|
package/audio/backend.d.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import type { Getter, Signal } from "@moq/signals";
|
|
2
|
-
import type { BufferedRanges } from "../buffered";
|
|
3
|
-
import type { Source } from "./source";
|
|
4
|
-
/** Audio-specific signals that work regardless of the backend source (MSE vs WebCodecs). */
|
|
5
|
-
export interface Backend {
|
|
6
|
-
/** The source of the audio. */
|
|
7
|
-
source: Source;
|
|
8
|
-
/** The volume of the audio, between 0 and 1. */
|
|
9
|
-
volume: Signal<number>;
|
|
10
|
-
/** Whether the audio is muted. */
|
|
11
|
-
muted: Signal<boolean>;
|
|
12
|
-
/** The stats of the audio. */
|
|
13
|
-
stats: Getter<Stats | undefined>;
|
|
14
|
-
/** Buffered time ranges for the MSE backend. */
|
|
15
|
-
buffered: Getter<BufferedRanges>;
|
|
16
|
-
/** The AudioContext used for WebCodecs playback. */
|
|
17
|
-
context: Getter<AudioContext | undefined>;
|
|
18
|
-
}
|
|
19
|
-
/** Audio playback statistics. */
|
|
20
|
-
export interface Stats {
|
|
21
|
-
/** Number of samples decoded. */
|
|
22
|
-
sampleCount: number;
|
|
23
|
-
/** Number of encoded bytes received. */
|
|
24
|
-
bytesReceived: number;
|
|
25
|
-
}
|
|
26
|
-
//# sourceMappingURL=backend.d.ts.map
|
package/audio/backend.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../src/audio/backend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,4FAA4F;AAC5F,MAAM,WAAW,OAAO;IACvB,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC;IAEf,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAEvB,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAEvB,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;IAEjC,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;IAEjC,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC;CAC1C;AAED,iCAAiC;AACjC,MAAM,WAAW,KAAK;IACrB,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,aAAa,EAAE,MAAM,CAAC;CACtB"}
|
package/audio/mse.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { type Getter, Signal } from "@moq/signals";
|
|
2
|
-
import { type BufferedRanges } from "../buffered";
|
|
3
|
-
import type { Muxer } from "../mse";
|
|
4
|
-
import type { Backend, Stats } from "./backend";
|
|
5
|
-
import type { Source } from "./source";
|
|
6
|
-
export type MseProps = {
|
|
7
|
-
volume?: number | Signal<number>;
|
|
8
|
-
muted?: boolean | Signal<boolean>;
|
|
9
|
-
};
|
|
10
|
-
export declare class Mse implements Backend {
|
|
11
|
-
#private;
|
|
12
|
-
muxer: Muxer;
|
|
13
|
-
source: Source;
|
|
14
|
-
volume: Signal<number>;
|
|
15
|
-
muted: Signal<boolean>;
|
|
16
|
-
readonly stats: Getter<Stats | undefined>;
|
|
17
|
-
readonly buffered: Getter<BufferedRanges>;
|
|
18
|
-
readonly context: Getter<AudioContext | undefined>;
|
|
19
|
-
constructor(muxer: Muxer, source: Source, props?: MseProps);
|
|
20
|
-
close(): void;
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=mse.d.ts.map
|
package/audio/mse.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mse.d.ts","sourceRoot":"","sources":["../../src/audio/mse.ts"],"names":[],"mappings":"AAGA,OAAO,EAAU,KAAK,MAAM,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,EAAE,KAAK,cAAc,EAAqB,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,MAAM,MAAM,QAAQ,GAAG;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;CAClC,CAAC;AAEF,qBAAa,GAAI,YAAW,OAAO;;IAClC,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IAEf,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAGvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,CAAe;IAGxD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,cAAc,CAAC,CAAkB;IAG3D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,GAAG,SAAS,CAAC,CAAmD;IAIrG,YAAY,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,QAAQ,EAUzD;IA8LD,KAAK,IAAI,IAAI,CAEZ;CACD"}
|
package/backend.d.ts
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import * as Moq from "@moq/net";
|
|
2
|
-
import { Effect, Signal } from "@moq/signals";
|
|
3
|
-
import * as Audio from "./audio";
|
|
4
|
-
import type { Broadcast } from "./broadcast";
|
|
5
|
-
import type { BufferedRanges } from "./buffered";
|
|
6
|
-
import { type Latency, Sync } from "./sync";
|
|
7
|
-
import * as Video from "./video";
|
|
8
|
-
export interface Backend {
|
|
9
|
-
paused: Signal<boolean>;
|
|
10
|
-
video?: Video.Backend;
|
|
11
|
-
audio?: Audio.Backend;
|
|
12
|
-
latency: Signal<Latency>;
|
|
13
|
-
jitter: Signal<Moq.Time.Milli>;
|
|
14
|
-
buffered: Signal<boolean>;
|
|
15
|
-
reset(): void;
|
|
16
|
-
}
|
|
17
|
-
export interface MultiBackendProps {
|
|
18
|
-
element?: HTMLCanvasElement | HTMLVideoElement | Signal<HTMLCanvasElement | HTMLVideoElement | undefined>;
|
|
19
|
-
broadcast?: Broadcast | Signal<Broadcast | undefined>;
|
|
20
|
-
latency?: Latency | Signal<Latency>;
|
|
21
|
-
connection?: Signal<Moq.Connection.Established | undefined>;
|
|
22
|
-
paused?: boolean | Signal<boolean>;
|
|
23
|
-
visible?: Video.Visible | Signal<Video.Visible>;
|
|
24
|
-
}
|
|
25
|
-
declare class VideoBackend implements Video.Backend {
|
|
26
|
-
source: Video.Source;
|
|
27
|
-
stats: Signal<Video.Stats | undefined>;
|
|
28
|
-
stalled: Signal<boolean>;
|
|
29
|
-
buffered: Signal<BufferedRanges>;
|
|
30
|
-
timestamp: Signal<Moq.Time.Milli>;
|
|
31
|
-
constructor(source: Video.Source);
|
|
32
|
-
}
|
|
33
|
-
declare class AudioBackend implements Audio.Backend {
|
|
34
|
-
source: Audio.Source;
|
|
35
|
-
volume: Signal<number>;
|
|
36
|
-
muted: Signal<boolean>;
|
|
37
|
-
stats: Signal<Audio.Stats | undefined>;
|
|
38
|
-
buffered: Signal<BufferedRanges>;
|
|
39
|
-
context: Signal<AudioContext | undefined>;
|
|
40
|
-
constructor(source: Audio.Source);
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* A generic backend that supports either MSE or WebCodecs based on the provided element.
|
|
44
|
-
*
|
|
45
|
-
* This primarily backs the `<moq-watch>` web component, but is useful standalone.
|
|
46
|
-
*/
|
|
47
|
-
export declare class MultiBackend implements Backend {
|
|
48
|
-
#private;
|
|
49
|
-
element: Signal<HTMLCanvasElement | HTMLVideoElement | undefined>;
|
|
50
|
-
broadcast: Signal<Broadcast | undefined>;
|
|
51
|
-
latency: Signal<Latency>;
|
|
52
|
-
jitter: Signal<Moq.Time.Milli>;
|
|
53
|
-
buffered: Signal<boolean>;
|
|
54
|
-
paused: Signal<boolean>;
|
|
55
|
-
visible: Signal<Video.Visible>;
|
|
56
|
-
video: VideoBackend;
|
|
57
|
-
audio: AudioBackend;
|
|
58
|
-
sync: Sync;
|
|
59
|
-
signals: Effect;
|
|
60
|
-
constructor(props?: MultiBackendProps);
|
|
61
|
-
reset(): void;
|
|
62
|
-
close(): void;
|
|
63
|
-
}
|
|
64
|
-
export {};
|
|
65
|
-
//# sourceMappingURL=backend.d.ts.map
|
package/backend.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,EAAE,KAAK,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,MAAM,WAAW,OAAO;IAEvB,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAGxB,KAAK,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC;IAGtB,KAAK,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC;IAGtB,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAGzB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAG/B,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAG1B,KAAK,IAAI,IAAI,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IACjC,OAAO,CAAC,EAAE,iBAAiB,GAAG,gBAAgB,GAAG,MAAM,CAAC,iBAAiB,GAAG,gBAAgB,GAAG,SAAS,CAAC,CAAC;IAC1G,SAAS,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;IAKtD,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAGpC,UAAU,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IAE5D,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAGnC,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;CAChD;AAGD,cAAM,YAAa,YAAW,KAAK,CAAC,OAAO;IAE1C,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;IAGrB,KAAK,kCAAkD;IAGvD,OAAO,kBAA8B;IAGrC,QAAQ,yBAAkC;IAG1C,SAAS,yBAAmD;IAE5D,YAAY,MAAM,EAAE,KAAK,CAAC,MAAM,EAE/B;CACD;AAGD,cAAM,YAAa,YAAW,KAAK,CAAC,OAAO;IAC1C,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;IAGrB,MAAM,iBAA2B;IAGjC,KAAK,kBAA8B;IAGnC,KAAK,kCAAkD;IAGvD,QAAQ,yBAAkC;IAG1C,OAAO,mCAAmD;IAE1D,YAAY,MAAM,EAAE,KAAK,CAAC,MAAM,EAE/B;CACD;AAED;;;;GAIG;AACH,qBAAa,YAAa,YAAW,OAAO;;IAC3C,OAAO,2DAA2E;IAClF,SAAS,EAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;IACzC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAGxB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAE/B,KAAK,EAAE,YAAY,CAAC;IAGpB,KAAK,EAAE,YAAY,CAAC;IAOpB,IAAI,EAAE,IAAI,CAAC;IAEX,OAAO,SAAgB;IAEvB,YAAY,KAAK,CAAC,EAAE,iBAAiB,EAyBpC;IAgFD,KAAK,IAAI,IAAI,CAGZ;IAED,KAAK,IAAI,IAAI,CAKZ;CACD"}
|