silentium 0.0.138 → 0.0.139
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/CHANGELOG.md +7 -0
- package/dist/silentium.cjs +58 -53
- package/dist/silentium.cjs.map +1 -1
- package/dist/silentium.d.ts +56 -45
- package/dist/silentium.js +58 -54
- package/dist/silentium.js.map +1 -1
- package/dist/silentium.min.js +1 -1
- package/dist/silentium.min.mjs +1 -1
- package/dist/silentium.min.mjs.map +1 -1
- package/dist/silentium.mjs +58 -54
- package/dist/silentium.mjs.map +1 -1
- package/package.json +1 -1
- package/src/base/ActualMessage.test.ts +31 -0
- package/src/base/ActualMessage.ts +12 -0
- package/src/base/Local.test.ts +8 -0
- package/src/base/Local.ts +4 -3
- package/src/components/All.test.ts +9 -0
- package/src/components/All.ts +8 -7
- package/src/components/Any.test.ts +9 -0
- package/src/components/Any.ts +4 -3
- package/src/components/Applied.test.ts +11 -2
- package/src/components/Applied.ts +4 -3
- package/src/components/AppliedDestructured.test.ts +9 -0
- package/src/components/AppliedDestructured.ts +2 -2
- package/src/components/Filtered.test.ts +14 -0
- package/src/components/Filtered.ts +4 -3
- package/src/components/FromEvent.test.ts +21 -0
- package/src/components/FromEvent.ts +10 -9
- package/src/components/Map.test.ts +9 -0
- package/src/components/Map.ts +4 -3
- package/src/components/RPC.test.ts +20 -0
- package/src/components/RPC.ts +4 -3
- package/src/components/RPCChain.test.ts +19 -0
- package/src/components/RPCChain.ts +4 -3
- package/src/index.ts +2 -1
- package/src/types/MessageType.ts +5 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
### [0.0.139](https://github.com/silentium-lab/silentium/compare/v0.0.138...v0.0.139) (2025-11-16)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* **main:** maybeMessage ([405cb11](https://github.com/silentium-lab/silentium/commit/405cb1125ac9194dced35b10613398d841603df6))
|
|
11
|
+
|
|
5
12
|
### [0.0.138](https://github.com/silentium-lab/silentium/compare/v0.0.137...v0.0.138) (2025-11-15)
|
|
6
13
|
|
|
7
14
|
|
package/dist/silentium.cjs
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
function Of(value) {
|
|
4
|
+
return new OfImpl(value);
|
|
5
|
+
}
|
|
6
|
+
class OfImpl {
|
|
7
|
+
constructor(value) {
|
|
8
|
+
this.value = value;
|
|
9
|
+
}
|
|
10
|
+
to(transport) {
|
|
11
|
+
transport.use(this.value);
|
|
12
|
+
return this;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
3
16
|
const isFilled = (value) => {
|
|
4
17
|
return value !== void 0 && value !== null;
|
|
5
18
|
};
|
|
@@ -16,6 +29,10 @@ function isTransport(o) {
|
|
|
16
29
|
return o !== null && typeof o === "object" && "use" in o && typeof o.use === "function";
|
|
17
30
|
}
|
|
18
31
|
|
|
32
|
+
function ActualMessage(message) {
|
|
33
|
+
return isMessage(message) ? message : Of(message);
|
|
34
|
+
}
|
|
35
|
+
|
|
19
36
|
function Destroyable(base) {
|
|
20
37
|
return new DestroyableImpl(base);
|
|
21
38
|
}
|
|
@@ -70,30 +87,6 @@ function ensureTransport(v, label) {
|
|
|
70
87
|
}
|
|
71
88
|
}
|
|
72
89
|
|
|
73
|
-
var __defProp$j = Object.defineProperty;
|
|
74
|
-
var __defNormalProp$j = (obj, key, value) => key in obj ? __defProp$j(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
75
|
-
var __publicField$j = (obj, key, value) => __defNormalProp$j(obj, key + "" , value);
|
|
76
|
-
function Message(executor) {
|
|
77
|
-
return new MessageImpl(executor);
|
|
78
|
-
}
|
|
79
|
-
class MessageImpl {
|
|
80
|
-
constructor(executor) {
|
|
81
|
-
this.executor = executor;
|
|
82
|
-
__publicField$j(this, "mbDestructor");
|
|
83
|
-
ensureFunction(executor, "Message: executor");
|
|
84
|
-
}
|
|
85
|
-
to(transport) {
|
|
86
|
-
this.mbDestructor = this.executor(transport);
|
|
87
|
-
return this;
|
|
88
|
-
}
|
|
89
|
-
destroy() {
|
|
90
|
-
if (typeof this.mbDestructor === "function") {
|
|
91
|
-
this.mbDestructor?.();
|
|
92
|
-
}
|
|
93
|
-
return this;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
90
|
function Transport(transportExecutor) {
|
|
98
91
|
return new TransportImpl(transportExecutor);
|
|
99
92
|
}
|
|
@@ -145,17 +138,17 @@ class TransportParentImpl {
|
|
|
145
138
|
}
|
|
146
139
|
}
|
|
147
140
|
|
|
148
|
-
var __defProp$
|
|
149
|
-
var __defNormalProp$
|
|
150
|
-
var __publicField$
|
|
141
|
+
var __defProp$j = Object.defineProperty;
|
|
142
|
+
var __defNormalProp$j = (obj, key, value) => key in obj ? __defProp$j(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
143
|
+
var __publicField$j = (obj, key, value) => __defNormalProp$j(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
151
144
|
function Local($base) {
|
|
152
|
-
return new LocalImpl($base);
|
|
145
|
+
return new LocalImpl(ActualMessage($base));
|
|
153
146
|
}
|
|
154
147
|
class LocalImpl {
|
|
155
148
|
constructor($base) {
|
|
156
149
|
this.$base = $base;
|
|
157
|
-
__publicField$
|
|
158
|
-
__publicField$
|
|
150
|
+
__publicField$j(this, "destroyed", false);
|
|
151
|
+
__publicField$j(this, "transport", TransportParent(function(v, child) {
|
|
159
152
|
if (!child.destroyed) {
|
|
160
153
|
this.use(v);
|
|
161
154
|
}
|
|
@@ -172,25 +165,36 @@ class LocalImpl {
|
|
|
172
165
|
}
|
|
173
166
|
}
|
|
174
167
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
function Of(value) {
|
|
182
|
-
return new OfImpl(value);
|
|
168
|
+
var __defProp$i = Object.defineProperty;
|
|
169
|
+
var __defNormalProp$i = (obj, key, value) => key in obj ? __defProp$i(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
170
|
+
var __publicField$i = (obj, key, value) => __defNormalProp$i(obj, key + "" , value);
|
|
171
|
+
function Message(executor) {
|
|
172
|
+
return new MessageImpl(executor);
|
|
183
173
|
}
|
|
184
|
-
class
|
|
185
|
-
constructor(
|
|
186
|
-
this.
|
|
174
|
+
class MessageImpl {
|
|
175
|
+
constructor(executor) {
|
|
176
|
+
this.executor = executor;
|
|
177
|
+
__publicField$i(this, "mbDestructor");
|
|
178
|
+
ensureFunction(executor, "Message: executor");
|
|
187
179
|
}
|
|
188
180
|
to(transport) {
|
|
189
|
-
|
|
181
|
+
this.mbDestructor = this.executor(transport);
|
|
182
|
+
return this;
|
|
183
|
+
}
|
|
184
|
+
destroy() {
|
|
185
|
+
if (typeof this.mbDestructor === "function") {
|
|
186
|
+
this.mbDestructor?.();
|
|
187
|
+
}
|
|
190
188
|
return this;
|
|
191
189
|
}
|
|
192
190
|
}
|
|
193
191
|
|
|
192
|
+
function New(construct) {
|
|
193
|
+
return Message((transport) => {
|
|
194
|
+
transport.use(construct());
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
|
|
194
198
|
function TransportOptional(base) {
|
|
195
199
|
return new TransportOptionalImpl(base);
|
|
196
200
|
}
|
|
@@ -238,7 +242,7 @@ class AllImpl {
|
|
|
238
242
|
}
|
|
239
243
|
}, this));
|
|
240
244
|
this.known = new Set(Object.keys(messages));
|
|
241
|
-
this.$messages = messages;
|
|
245
|
+
this.$messages = messages.map(ActualMessage);
|
|
242
246
|
}
|
|
243
247
|
to(transport) {
|
|
244
248
|
Object.entries(this.$messages).forEach(([key, message]) => {
|
|
@@ -256,7 +260,7 @@ var __defProp$g = Object.defineProperty;
|
|
|
256
260
|
var __defNormalProp$g = (obj, key, value) => key in obj ? __defProp$g(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
257
261
|
var __publicField$g = (obj, key, value) => __defNormalProp$g(obj, key + "" , value);
|
|
258
262
|
function Any(...messages) {
|
|
259
|
-
return new AnyImpl(...messages);
|
|
263
|
+
return new AnyImpl(...messages.map(ActualMessage));
|
|
260
264
|
}
|
|
261
265
|
class AnyImpl {
|
|
262
266
|
constructor(...messages) {
|
|
@@ -276,7 +280,7 @@ var __defProp$f = Object.defineProperty;
|
|
|
276
280
|
var __defNormalProp$f = (obj, key, value) => key in obj ? __defProp$f(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
277
281
|
var __publicField$f = (obj, key, value) => __defNormalProp$f(obj, key + "" , value);
|
|
278
282
|
function Applied($base, applier) {
|
|
279
|
-
return new AppliedImpl($base, applier);
|
|
283
|
+
return new AppliedImpl(ActualMessage($base), applier);
|
|
280
284
|
}
|
|
281
285
|
class AppliedImpl {
|
|
282
286
|
constructor($base, applier) {
|
|
@@ -386,7 +390,7 @@ var __defProp$d = Object.defineProperty;
|
|
|
386
390
|
var __defNormalProp$d = (obj, key, value) => key in obj ? __defProp$d(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
387
391
|
var __publicField$d = (obj, key, value) => __defNormalProp$d(obj, key + "" , value);
|
|
388
392
|
function Filtered($base, predicate, defaultValue) {
|
|
389
|
-
return new FilteredImpl($base, predicate, defaultValue);
|
|
393
|
+
return new FilteredImpl(ActualMessage($base), predicate, defaultValue);
|
|
390
394
|
}
|
|
391
395
|
class FilteredImpl {
|
|
392
396
|
constructor($base, predicate, defaultValue) {
|
|
@@ -412,10 +416,10 @@ var __defNormalProp$c = (obj, key, value) => key in obj ? __defProp$c(obj, key,
|
|
|
412
416
|
var __publicField$c = (obj, key, value) => __defNormalProp$c(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
413
417
|
function FromEvent($emitter, $eventName, $subscribeMethod, $unsubscribeMethod) {
|
|
414
418
|
return new FromEventImpl(
|
|
415
|
-
$emitter,
|
|
416
|
-
$eventName,
|
|
417
|
-
$subscribeMethod,
|
|
418
|
-
$unsubscribeMethod
|
|
419
|
+
ActualMessage($emitter),
|
|
420
|
+
ActualMessage($eventName),
|
|
421
|
+
ActualMessage($subscribeMethod),
|
|
422
|
+
ActualMessage($unsubscribeMethod)
|
|
419
423
|
);
|
|
420
424
|
}
|
|
421
425
|
class FromEventImpl {
|
|
@@ -714,7 +718,7 @@ var __defProp$4 = Object.defineProperty;
|
|
|
714
718
|
var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
715
719
|
var __publicField$4 = (obj, key, value) => __defNormalProp$4(obj, key + "" , value);
|
|
716
720
|
function Map($base, $target) {
|
|
717
|
-
return new MapImpl($base, $target);
|
|
721
|
+
return new MapImpl(ActualMessage($base), $target);
|
|
718
722
|
}
|
|
719
723
|
class MapImpl {
|
|
720
724
|
constructor($base, $target) {
|
|
@@ -743,7 +747,7 @@ var __defProp$3 = Object.defineProperty;
|
|
|
743
747
|
var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
744
748
|
var __publicField$3 = (obj, key, value) => __defNormalProp$3(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
745
749
|
function RPC($rpc) {
|
|
746
|
-
return new RPCImpl($rpc);
|
|
750
|
+
return new RPCImpl(ActualMessage($rpc));
|
|
747
751
|
}
|
|
748
752
|
RPC.transport = {};
|
|
749
753
|
class RPCImpl {
|
|
@@ -780,7 +784,7 @@ function RPCChain($base) {
|
|
|
780
784
|
if (!rpc.result) {
|
|
781
785
|
throw new Error("RPCChain did not find result in rpc message");
|
|
782
786
|
}
|
|
783
|
-
$base.to(rpc.result);
|
|
787
|
+
ActualMessage($base).to(rpc.result);
|
|
784
788
|
});
|
|
785
789
|
}
|
|
786
790
|
|
|
@@ -892,6 +896,7 @@ class TransportDestroyableImpl {
|
|
|
892
896
|
}
|
|
893
897
|
}
|
|
894
898
|
|
|
899
|
+
exports.ActualMessage = ActualMessage;
|
|
895
900
|
exports.All = All;
|
|
896
901
|
exports.AllImpl = AllImpl;
|
|
897
902
|
exports.Any = Any;
|
package/dist/silentium.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"silentium.cjs","sources":["../src/helpers/guards.ts","../src/base/Destroyable.ts","../src/base/DestroyContainer.ts","../src/helpers/ensures.ts","../src/base/Message.ts","../src/base/Transport.ts","../src/base/Local.ts","../src/base/New.ts","../src/base/Of.ts","../src/base/TransportOptional.ts","../src/base/Void.ts","../src/components/All.ts","../src/components/Any.ts","../src/components/Applied.ts","../src/components/AppliedDestructured.ts","../src/components/Catch.ts","../src/components/Chain.ts","../src/components/ExecutorApplied.ts","../src/components/Filtered.ts","../src/components/FromEvent.ts","../src/components/FromPromise.ts","../src/components/Late.ts","../src/components/Once.ts","../src/helpers/TransportPool.ts","../src/components/Shared.ts","../src/components/SharedSource.ts","../src/components/Primitive.ts","../src/components/LateShared.ts","../src/components/Map.ts","../src/components/RPC.ts","../src/components/RPCChain.ts","../src/components/RPCOf.ts","../src/components/Sequence.ts","../src/components/Stream.ts","../src/components/TransportApplied.ts","../src/components/TransportArgs.ts","../src/components/TransportDestroyable.ts"],"sourcesContent":["import { DestroyableType, DestroyedType } from \"types/DestroyableType\";\nimport { MessageType } from \"types/MessageType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Checks that the value is neither undefined nor null\n */\nexport const isFilled = <T>(\n value?: T,\n): value is Exclude<T, null | undefined> => {\n return value !== undefined && value !== null;\n};\n\n/**\n * Checks that the object is an message\n */\nexport function isMessage<T>(o: T): o is T & MessageType {\n return (\n o !== null &&\n typeof o === \"object\" &&\n \"to\" in o &&\n typeof (o as any).to === \"function\"\n );\n}\n\n/**\n * Checks that the object is destroyable\n */\nexport function isDestroyable<T>(o: T): o is T & DestroyableType {\n return (\n o !== null &&\n typeof o === \"object\" &&\n \"destroy\" in o &&\n typeof (o as any).destroy === \"function\"\n );\n}\n\n/**\n * Checks that the object can indicate whether it has been destroyed or not\n */\nexport function isDestroyed<T>(o: T): o is T & DestroyedType {\n return (\n o !== null &&\n typeof o === \"object\" &&\n \"destroyed\" in o &&\n typeof (o as any).destroy === \"function\"\n );\n}\n\n/**\n * Checks that the object is a transport\n */\nexport function isTransport<T>(o: T): o is T & TransportType {\n return (\n o !== null &&\n typeof o === \"object\" &&\n \"use\" in o &&\n typeof (o as any).use === \"function\"\n );\n}\n","import { isDestroyable } from \"helpers/guards\";\nimport { DestroyableType } from \"types/DestroyableType\";\n\n/**\n * Allows creating an object that definitely has a destructor,\n * useful to avoid creating unnecessary conditions\n */\nexport function Destroyable<T>(base: T) {\n return new DestroyableImpl(base);\n}\n\nexport class DestroyableImpl<T> implements DestroyableType {\n public constructor(private base: T) {}\n\n public destroy(): this {\n if (isDestroyable(this.base)) {\n this.base.destroy();\n }\n return this;\n }\n}\n","import { isDestroyable } from \"helpers/guards\";\nimport { DestroyableType } from \"types/DestroyableType\";\n\n/**\n * An object that allows collecting all disposable objects and\n * disposing them later all together\n */\nexport function DestroyContainer() {\n return new DestroyContainerImpl();\n}\n\nexport class DestroyContainerImpl implements DestroyableType {\n private destructors: DestroyableType[] = [];\n\n public add<R>(e: R): R {\n if (isDestroyable(e)) {\n this.destructors.push(e);\n }\n return e;\n }\n\n public destroy() {\n this.destructors.forEach((d) => d.destroy());\n this.destructors.length = 0;\n return this;\n }\n}\n","import { isMessage, isTransport } from \"helpers/guards\";\n\nexport function ensureFunction(v: unknown, label: string) {\n if (typeof v !== \"function\") {\n throw new Error(`${label}: is not function`);\n }\n}\n\nexport function ensureMessage(v: unknown, label: string) {\n if (!isMessage(v)) {\n throw new Error(`${label}: is not message`);\n }\n}\n\nexport function ensureTransport(v: unknown, label: string) {\n if (!isTransport(v)) {\n throw new Error(`${label}: is not transport`);\n }\n}\n","import { ensureFunction } from \"helpers/ensures\";\nimport { DestroyableType } from \"types/DestroyableType\";\nimport { MessageType } from \"types/MessageType\";\nimport { TransportType } from \"types/TransportType\";\n\ntype MessageExecutorType<T> = (\n transport: TransportType<T>,\n) => void | (() => void);\n\n/**\n * A message created from an executor function.\n * The executor function can return a message destruction function.\n */\nexport function Message<T>(executor: MessageExecutorType<T>) {\n return new MessageImpl<T>(executor);\n}\n\nexport class MessageImpl<T> implements MessageType<T>, DestroyableType {\n private mbDestructor: unknown;\n\n public constructor(private executor: MessageExecutorType<T>) {\n ensureFunction(executor, \"Message: executor\");\n }\n\n public to(transport: TransportType<T>) {\n this.mbDestructor = this.executor(transport);\n return this;\n }\n\n public destroy() {\n if (typeof this.mbDestructor === \"function\") {\n this.mbDestructor?.();\n }\n return this;\n }\n}\n","import { ensureFunction } from \"helpers/ensures\";\nimport { MessageType } from \"types/MessageType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Type of value transfer logic executor\n */\nexport type TransportExecutor<T> = (v: T) => void;\n\n/**\n * Base transport that accepts the passed value,\n * acts as a conductor to deliver the value from a message to somewhere\n */\nexport function Transport<T>(transportExecutor: TransportExecutor<T>) {\n return new TransportImpl<T>(transportExecutor);\n}\n\nexport class TransportImpl<T> implements TransportType<T> {\n public constructor(private executor: TransportExecutor<T>) {\n ensureFunction(executor, \"Transport: transport executor\");\n }\n\n public use(value: T) {\n this.executor(value);\n return this;\n }\n}\n\n/**\n * Type of executor for value passing logic and message returning\n */\nexport type TransportMessageExecutor<T, ET = T> = (v: T) => MessageType<ET>;\n\n/**\n * A transport that delivers a value from one message\n * and returns another message based on the value\n */\nexport function TransportMessage<T, ET = any>(\n executor: TransportMessageExecutor<T, ET>,\n) {\n return new TransportMessageImpl<T, ET>(executor);\n}\n\nexport class TransportMessageImpl<T, ET = T>\n implements TransportType<T, MessageType<ET>>\n{\n public constructor(private executor: TransportMessageExecutor<T, ET>) {\n ensureFunction(executor, \"TransportMessage: transport executor\");\n }\n\n public use(value: T) {\n return this.executor(value);\n }\n}\n\n/**\n * A transport that accepts a child transport\n * to perform some transformation on the value\n * during its transmission\n */\nexport function TransportParent<T>(\n executor: (this: TransportType, v: T, ...context: any[]) => void,\n ...args: any[]\n) {\n return new TransportParentImpl<T>(executor, args);\n}\n\nexport class TransportParentImpl<T> implements TransportType<T> {\n public constructor(\n private executor: (this: TransportType, v: T, ...context: any[]) => void,\n private args: any[] = [],\n private _child?: TransportType<T>,\n ) {\n ensureFunction(executor, \"TransportParent: executor\");\n }\n\n public use(value: T): this {\n if (this._child === undefined) {\n throw new Error(\"no base transport\");\n }\n this.executor.call(this._child, value, ...this.args);\n return this;\n }\n\n public child(transport: TransportType, ...args: any[]) {\n return new TransportParentImpl(\n this.executor,\n [...this.args, ...args],\n transport,\n );\n }\n}\n","import { MessageType } from \"types/MessageType\";\nimport { TransportParent } from \"base/Transport\";\nimport { ensureMessage } from \"helpers/ensures\";\nimport { TransportType } from \"types/TransportType\";\nimport { DestroyableType } from \"types/DestroyableType\";\n\n/**\n * Create local copy of source what can be destroyed\n */\nexport function Local<T>($base: MessageType<T>) {\n return new LocalImpl<T>($base);\n}\n\nexport class LocalImpl<T> implements MessageType<T>, DestroyableType {\n private destroyed = false;\n\n public constructor(private $base: MessageType<T>) {\n ensureMessage($base, \"Local: $base\");\n }\n\n public to(transport: TransportType<T>): this {\n this.$base.to(this.transport.child(transport));\n return this;\n }\n\n private transport = TransportParent(function (v: T, child: LocalImpl<T>) {\n if (!child.destroyed) {\n this.use(v);\n }\n }, this);\n\n public destroy(): this {\n this.destroyed = true;\n return this;\n }\n}\n","import { Message } from \"base/Message\";\nimport { ConstructorType } from \"types/ConstructorType\";\n\n/**\n * A component that, on each access, returns a new instance\n * of a reference type based on the constructor function\n */\nexport function New<T>(construct: ConstructorType<[], T>) {\n return Message<T>((transport) => {\n transport.use(construct());\n });\n}\n","import { MessageType } from \"types/MessageType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Helps convert a value into a message\n */\nexport function Of<T>(value: T) {\n return new OfImpl<T>(value);\n}\n\nexport class OfImpl<T> implements MessageType<T> {\n public constructor(private value: T) {}\n\n public to(transport: TransportType<T>): this {\n transport.use(this.value);\n return this;\n }\n}\n","import { MessageType } from \"types/MessageType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Allows subscribing a transport to a message\n * even if the transport reference does not exist,\n * helps avoid unnecessary conditions in application code\n */\nexport function TransportOptional(base?: TransportType) {\n return new TransportOptionalImpl(base);\n}\n\nexport class TransportOptionalImpl {\n public constructor(private base?: TransportType) {}\n\n public wait(m: MessageType) {\n if (this.base !== undefined) {\n m.to(this.base);\n }\n return this;\n }\n}\n","import { TransportType } from \"types/TransportType\";\n\n/**\n * Transport that does nothing with the passed value,\n * needed for silent message triggering\n */\nexport function Void() {\n return new VoidImpl();\n}\n\nexport class VoidImpl implements TransportType {\n public use(): this {\n return this;\n }\n}\n","import { MessageType } from \"types/MessageType\";\nimport { TransportParent } from \"base/Transport\";\nimport { TransportType } from \"types/TransportType\";\nimport { ensureMessage } from \"helpers/ensures\";\n\ntype ExtractTypeS<T> = T extends MessageType<infer U> ? U : never;\n\ntype ExtractTypesFromArrayS<T extends MessageType<any>[]> = {\n [K in keyof T]: ExtractTypeS<T[K]>;\n};\n\nconst isAllFilled = (keysFilled: Set<string>, keysKnown: Set<string>) => {\n return keysFilled.size > 0 && keysFilled.size === keysKnown.size;\n};\n\n/**\n * A message that represents values from\n * all provided messages as an array.\n * When all messages emit their values,\n * the combined value will be returned.\n * If at least one message later emits a new\n * value, the updated array with the new value\n * will be emitted by All.\n */\nexport function All<const T extends MessageType[]>(...messages: T) {\n return new AllImpl<T>(...messages);\n}\n\nexport class AllImpl<const T extends MessageType[]>\n implements MessageType<ExtractTypesFromArrayS<T>>\n{\n private known: Set<string>;\n private filled = new Set<string>();\n private $messages: T;\n private result: unknown[] = [];\n\n public constructor(...messages: T) {\n this.known = new Set<string>(Object.keys(messages));\n this.$messages = messages;\n }\n\n public to(transport: TransportType<ExtractTypesFromArrayS<T>>): this {\n Object.entries(this.$messages).forEach(([key, message]) => {\n ensureMessage(message, \"All: item\");\n message.to(this.transport.child(transport, key));\n });\n if (this.known.size === 0) {\n transport.use([] as ExtractTypesFromArrayS<T>);\n }\n return this;\n }\n\n private transport = TransportParent(function (\n v: unknown,\n child: AllImpl<T>,\n key: string,\n ) {\n child.filled.add(key);\n child.result[parseInt(key)] = v;\n if (isAllFilled(child.filled, child.known)) {\n this.use(child.result as ExtractTypesFromArrayS<T>);\n }\n }, this);\n}\n","import { ensureMessage } from \"helpers/ensures\";\nimport { MessageType } from \"types/MessageType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * A message that emits values received from\n * any of its bound messages\n */\nexport function Any<const T>(...messages: MessageType<T>[]) {\n return new AnyImpl<T>(...messages);\n}\n\nexport class AnyImpl<T> implements MessageType<T> {\n private $messages: MessageType<T>[];\n\n public constructor(...messages: MessageType<T>[]) {\n this.$messages = messages;\n }\n\n public to(transport: TransportType<T>): this {\n this.$messages.forEach((message) => {\n ensureMessage(message, \"Any: item\");\n message.to(transport);\n });\n return this;\n }\n}\n","import { MessageType } from \"types/MessageType\";\nimport { TransportParent } from \"base/Transport\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { ensureMessage } from \"helpers/ensures\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * An message that applies a function\n * to the value of the base message\n */\nexport function Applied<const T, R>(\n $base: MessageType<T>,\n applier: ConstructorType<[T], R>,\n) {\n return new AppliedImpl<T, R>($base, applier);\n}\n\nexport class AppliedImpl<T, R> implements MessageType<R> {\n public constructor(\n private $base: MessageType<T>,\n private applier: ConstructorType<[T], R>,\n ) {\n ensureMessage($base, \"Applied: base\");\n }\n\n public to(transport: TransportType<R>) {\n this.$base.to(this.transport.child(transport));\n return this;\n }\n\n private transport = TransportParent(function (\n v: T,\n child: AppliedImpl<T, R>,\n ) {\n this.use(child.applier(v));\n }, this);\n}\n","import { Applied } from \"components/Applied\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MessageType } from \"types/MessageType\";\n\n/**\n * Allows applying variables from an message that passes an array to a function,\n * where each element of the array will be passed as a separate argument\n */\nexport function AppliedDestructured<const T extends any[], R>(\n $base: MessageType<T>,\n applier: ConstructorType<T[number][], R>,\n) {\n return Applied($base, (args) => {\n return applier(...args);\n });\n}\n","import { ensureMessage, ensureTransport } from \"helpers/ensures\";\nimport { MessageType } from \"types/MessageType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * An message representing a base message where\n * its operation is wrapped in try-catch\n * and expects exceptions. If an exception\n * bubbles up, it's passed to the transports\n * as errorMessage and errorOriginal\n */\nexport function Catch<T>(\n $base: MessageType<T>,\n errorMessage: TransportType,\n errorOriginal?: TransportType,\n) {\n return new CatchImpl<T>($base, errorMessage, errorOriginal);\n}\n\nexport class CatchImpl<T> implements MessageType<T> {\n public constructor(\n private $base: MessageType<T>,\n private errorMessage: TransportType,\n private errorOriginal?: TransportType,\n ) {\n ensureMessage($base, \"Catch: base\");\n ensureTransport(errorMessage, \"Catch: errorMessage\");\n if (errorOriginal !== undefined) {\n ensureTransport(errorOriginal, \"Catch: errorOriginal\");\n }\n }\n\n public to(transport: TransportType<T>) {\n try {\n this.$base.to(transport);\n } catch (e: unknown) {\n if (e instanceof Error) {\n this.errorMessage.use(e.message);\n } else {\n this.errorMessage.use(String(e));\n }\n if (this.errorOriginal) {\n this.errorOriginal.use(e);\n }\n }\n return this;\n }\n}\n","import { TransportType } from \"types/TransportType\";\nimport { TransportParent } from \"base/Transport\";\nimport { MessageType, MessageTypeValue } from \"types/MessageType\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ntype Last<T extends readonly any[]> = T extends readonly [...infer _, infer L]\n ? L\n : never;\n\n/**\n * Chains messages together and triggers\n * the last message only when all previous messages\n * have emitted their values. The value of Chain will be the value\n * of the last message. If any messages\n * emit a value again after the overall Chain response was already returned,\n * then Chain emits again with the value of the last message.\n */\nexport function Chain<T extends readonly MessageType[]>(...messages: T) {\n return new ChainImpl<T>(...messages);\n}\n\nexport class ChainImpl<T extends readonly MessageType[]>\n implements MessageType<MessageTypeValue<Last<T>>>\n{\n private $messages: T;\n private $latest: MessageTypeValue<Last<T>> | undefined;\n\n public constructor(...messages: T) {\n this.$messages = messages;\n }\n\n public to(transport: TransportType<MessageTypeValue<Last<T>>>) {\n this.handleMessage(0, transport);\n return this;\n }\n\n private handleMessage = (index: number, transport: TransportType) => {\n const message = this.$messages[index] as Last<T>;\n const next = this.$messages[index + 1] as Last<T> | undefined;\n message.to(this.oneMessageTransport.child(transport, next, index));\n };\n\n private oneMessageTransport = TransportParent(function (\n v: MessageTypeValue<Last<T>>,\n child: ChainImpl<T>,\n next: Last<T> | undefined,\n index: number,\n ) {\n if (!next) {\n child.$latest = v as MessageTypeValue<Last<T>>;\n }\n if (child.$latest) {\n this.use(child.$latest);\n }\n if (next && !child.$latest) {\n child.handleMessage(index + 1, this);\n }\n }, this);\n}\n","import { Transport, TransportExecutor } from \"base/Transport\";\nimport { ensureMessage } from \"helpers/ensures\";\nimport { MessageType } from \"types/MessageType\";\nimport { TransportType } from \"types/TransportType\";\n\ntype ExecutorApplier<T> = (\n executor: TransportExecutor<T>,\n) => TransportExecutor<T>;\n\n/**\n * Applies a value transfer function to the transport\n * and returns the same value transfer function for the transport\n * Useful for applying functions like debounced or throttle\n */\nexport function ExecutorApplied<T>(\n $base: MessageType<T>,\n applier: ExecutorApplier<T>,\n) {\n return new ExecutorAppliedImpl<T>($base, applier);\n}\n\nexport class ExecutorAppliedImpl<T> implements MessageType<T> {\n public constructor(\n private $base: MessageType<T>,\n private applier: ExecutorApplier<T>,\n ) {\n ensureMessage($base, \"ExecutorApplied: base\");\n }\n\n public to(transport: TransportType<T>) {\n const ExecutorAppliedBaseTransport = this.applier(\n transport.use.bind(transport),\n );\n this.$base.to(Transport(ExecutorAppliedBaseTransport));\n return this;\n }\n}\n","import { MessageType } from \"types/MessageType\";\nimport { TransportParent } from \"base/Transport\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Filters values from the source message based on a predicate function,\n * optionally providing a default value when the predicate fails.\n */\nexport function Filtered<T>(\n $base: MessageType<T>,\n predicate: ConstructorType<[T], boolean>,\n defaultValue?: T,\n): MessageType<T> {\n return new FilteredImpl<T>($base, predicate, defaultValue);\n}\n\nexport class FilteredImpl<T> implements MessageType<T> {\n public constructor(\n private $base: MessageType<T>,\n private predicate: ConstructorType<[T], boolean>,\n private defaultValue?: T,\n ) {}\n\n public to(transport: TransportType<T>) {\n this.$base.to(this.parent.child(transport));\n return this;\n }\n\n private parent = TransportParent<T>(function (v, child: FilteredImpl<T>) {\n if (child.predicate(v)) {\n this.use(v);\n } else if (child.defaultValue !== undefined) {\n this.use(child.defaultValue);\n }\n }, this);\n}\n","import { TransportType } from \"types/TransportType\";\nimport { Transport, TransportParent } from \"base/Transport\";\nimport { MessageType } from \"types/MessageType\";\nimport { All } from \"components/All\";\nimport { DestroyableType } from \"types/DestroyableType\";\n\n/**\n * A message derived from event with a different\n * method call interface, based on callbacks.\n * Allows attaching a custom handler to an existing event source\n * and presenting it as a silentium message\n */\nexport function FromEvent<T>(\n $emitter: MessageType<any>,\n $eventName: MessageType<string>,\n $subscribeMethod: MessageType<string>,\n $unsubscribeMethod?: MessageType<string>,\n) {\n return new FromEventImpl<T>(\n $emitter,\n $eventName,\n $subscribeMethod,\n $unsubscribeMethod,\n );\n}\n\nexport class FromEventImpl<T> implements MessageType<T>, DestroyableType {\n private lastTransport: TransportType<T> | null = null;\n private handler = (v: T) => {\n if (this.lastTransport) {\n this.lastTransport.use(v);\n }\n };\n\n public constructor(\n private $emitter: MessageType<any>,\n private $eventName: MessageType<string>,\n private $subscribeMethod: MessageType<string>,\n private $unsubscribeMethod?: MessageType<string>,\n ) {}\n\n public to(transport: TransportType<T>): this {\n All(this.$emitter, this.$eventName, this.$subscribeMethod).to(\n this.parent.child(transport),\n );\n return this;\n }\n\n private parent = TransportParent<[any, string, string]>(function (\n [emitter, eventName, subscribe],\n child,\n ) {\n child.lastTransport = this;\n if (!emitter?.[subscribe]) {\n return;\n }\n emitter[subscribe](eventName, child.handler);\n }, this);\n\n public destroy(): this {\n this.lastTransport = null;\n if (!this.$unsubscribeMethod) {\n return this;\n }\n All(this.$emitter, this.$eventName, this.$unsubscribeMethod).to(\n Transport(([emitter, eventName, unsubscribe]) => {\n emitter?.[unsubscribe]?.(eventName, this.handler);\n }),\n );\n return this;\n }\n}\n","import { MessageType } from \"types/MessageType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Creates an message from a Promise, allowing the promise's resolution or rejection\n * to be handled as an message. The resolved value is emitted to the transport,\n * and if an error is provided, rejections are forwarded to it.\n */\nexport function FromPromise<T>(p: Promise<T>, error?: TransportType) {\n return new FromPromiseImpl<T>(p, error);\n}\n\nexport class FromPromiseImpl<T> implements MessageType<T> {\n public constructor(\n private p: Promise<T>,\n private error?: TransportType,\n ) {}\n\n public to(transport: TransportType<T>): this {\n this.p\n .then((v) => {\n transport.use(v);\n })\n .catch((e) => {\n this.error?.use(e);\n });\n return this;\n }\n}\n","import { SourceType } from \"types/SourceType\";\nimport { isFilled } from \"helpers/guards\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * A component that allows creating linked objects of information and its owner\n * in such a way that if a new value is assigned to the owner, this value\n * will become the value of the linked information source\n * https://silentium-lab.github.io/silentium/#/en/information/of\n */\nexport function Late<T>(v?: T) {\n return new LateImpl<T>(v);\n}\n\nexport class LateImpl<T> implements SourceType<T> {\n private lateTransport: TransportType<T> | null = null;\n private notify = (v?: T) => {\n if (isFilled(v) && this.lateTransport) {\n this.lateTransport.use(v);\n }\n };\n\n public constructor(private v?: T) {}\n\n public to(transport: TransportType<T>): this {\n if (this.lateTransport) {\n throw new Error(\n \"Late component gets new transport, when another was already connected!\",\n );\n }\n this.lateTransport = transport;\n this.notify(this.v);\n return this;\n }\n\n public use(value: T): this {\n this.notify(value);\n return this;\n }\n}\n","import { TransportParent } from \"base/Transport\";\nimport { MessageType } from \"types/MessageType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Limits the number of values from the information source\n * to a single value - once the first value is emitted, no more\n * values are delivered from the source\n */\nexport function Once<T>($base: MessageType<T>) {\n return new OnceImpl<T>($base);\n}\n\nexport class OnceImpl<T> implements MessageType<T> {\n private isFilled = false;\n\n public constructor(private $base: MessageType<T>) {}\n\n public to(transport: TransportType<T>): this {\n this.$base.to(this.parent.child(transport));\n return this;\n }\n\n private parent = TransportParent<T>(function (v, child) {\n if (!child.isFilled) {\n child.isFilled = true;\n this.use(v);\n }\n }, this);\n}\n","import { TransportType } from \"types/TransportType\";\nimport { Transport } from \"base/Transport\";\nimport { isDestroyed } from \"helpers/guards\";\n\n/**\n * Helps maintain an owner list allowing different\n * owners to get information from a common source\n * https://silentium-lab.github.io/silentium/#/en/utils/owner-pool\n */\nexport class TransportPool<T> {\n private transports: Set<TransportType<T>>;\n private innerTransport: TransportType<T>;\n\n public constructor() {\n this.transports = new Set<TransportType<T>>();\n this.innerTransport = Transport((v) => {\n this.transports.forEach((transport) => {\n if (isDestroyed(transport) && transport.destroyed()) {\n this.transports.delete(transport);\n return;\n }\n transport.use(v);\n });\n });\n }\n\n public transport() {\n return this.innerTransport;\n }\n\n public size(): number {\n return this.transports.size;\n }\n\n public has(owner: TransportType<T>): boolean {\n return this.transports.has(owner);\n }\n\n public add(owner: TransportType<T>) {\n this.transports.add(owner);\n return this;\n }\n\n public remove(g: TransportType<T>) {\n this.transports.delete(g);\n return this;\n }\n\n public destroy() {\n this.transports.forEach((g) => {\n this.remove(g);\n });\n return this;\n }\n}\n","import { MessageType } from \"types/MessageType\";\nimport { Late } from \"components/Late\";\nimport { Once } from \"components/Once\";\nimport { SourceType } from \"types/SourceType\";\nimport { TransportPool } from \"helpers/TransportPool\";\nimport { TransportType } from \"types/TransportType\";\nimport { isFilled } from \"helpers/guards\";\nimport { Transport } from \"base/Transport\";\n\n/**\n * An information object that helps multiple owners access\n * a single another information object\n */\nexport function Shared<T>($base: MessageType<T>, stateless = false) {\n return new SharedImpl<T>($base, stateless);\n}\n\nexport class SharedImpl<T> implements SourceType<T> {\n private transportPool = new TransportPool<T>();\n private lastValue: T | undefined;\n private calls = Late();\n\n public constructor(\n private $base: MessageType<T>,\n private stateless = false,\n ) {\n Once(this.calls).to(\n Transport(() => {\n this.$base.to(this.firstCallTransport);\n }),\n );\n }\n\n public to(transport: TransportType<T>) {\n this.calls.use(1);\n if (\n !this.stateless &&\n isFilled(this.lastValue) &&\n !this.transportPool.has(transport)\n ) {\n transport.use(this.lastValue);\n }\n this.transportPool.add(transport);\n return this;\n }\n\n public use(value: T) {\n this.calls.use(1);\n this.lastValue = value;\n this.transportPool.transport().use(value);\n return this;\n }\n\n private firstCallTransport = Transport<T>((v: T) => {\n this.lastValue = v;\n this.transportPool.transport().use(v);\n });\n\n public touched() {\n this.calls.use(1);\n }\n\n public pool() {\n return this.transportPool;\n }\n\n public destroy() {\n return this.transportPool.destroy();\n }\n}\n","import { SourceType } from \"types/SourceType\";\nimport { Shared } from \"components/Shared\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Creates a shared source that allows multiple transports to subscribe to the same underlying source.\n * The stateless parameter controls whether the sharing maintains state or not.\n */\nexport function SharedSource<T>($base: SourceType<T>, stateless = false) {\n return new SharedSourceImpl<T>($base, stateless);\n}\n\nexport class SharedSourceImpl<T> implements SourceType<T> {\n private $sharedBase: SourceType<T> & { touched: () => void };\n\n public constructor(\n private $base: SourceType<T>,\n stateless = false,\n ) {\n this.$sharedBase = Shared(this.$base, stateless);\n }\n\n public to(transport: TransportType<T>) {\n this.$sharedBase.to(transport);\n return this;\n }\n\n public use(value: T) {\n this.$sharedBase.touched();\n this.$base.use(value);\n return this;\n }\n}\n","import { Transport } from \"base/Transport\";\nimport { MessageType } from \"types/MessageType\";\n\n/**\n * Helps represent an message as a primitive type, which can be useful\n * for cases when you need to always have a reference to the current value\n * without updating the shared value when the current one changes.\n * For example, this could be used when passing an authorization token.\n * It can also be useful for testing or logging purposes.\n */\nexport function Primitive<T>($base: MessageType<T>, theValue: T | null = null) {\n return new PrimitiveImpl<T>($base, theValue);\n}\n\nexport class PrimitiveImpl<T> {\n private touched = false;\n\n public constructor(\n private $base: MessageType<T>,\n private theValue: T | null = null,\n ) {}\n\n private ensureTouched() {\n if (!this.touched) {\n this.$base.to(\n Transport((v) => {\n this.theValue = v;\n }),\n );\n }\n this.touched = true;\n }\n\n public [Symbol.toPrimitive]() {\n this.ensureTouched();\n return this.theValue;\n }\n\n public primitive() {\n this.ensureTouched();\n return this.theValue;\n }\n\n public primitiveWithException() {\n this.ensureTouched();\n if (this.theValue === null) {\n throw new Error(\"Primitive value is null\");\n }\n return this.theValue;\n }\n}\n","import { SourceType } from \"types/SourceType\";\nimport { Late } from \"components/Late\";\nimport { SharedSource } from \"components/SharedSource\";\nimport { TransportType } from \"types/TransportType\";\nimport { Primitive, PrimitiveImpl } from \"components/Primitive\";\n\n/**\n * An message with a value that will be set later,\n * capable of responding to different transports\n */\nexport function LateShared<T>(value?: T) {\n return new LateSharedImpl<T>(value);\n}\n\nexport class LateSharedImpl<T> implements SourceType<T> {\n private $msg: SourceType<T>;\n private primitive: PrimitiveImpl<T>;\n\n public constructor(value?: T) {\n this.$msg = SharedSource(Late(value));\n this.primitive = Primitive(this, value);\n }\n\n public to(transport: TransportType<T>) {\n this.$msg.to(transport);\n return this;\n }\n\n public use(value: T) {\n this.$msg.use(value);\n return this;\n }\n\n public value() {\n return this.primitive;\n }\n}\n","import { MessageType } from \"types/MessageType\";\nimport { All } from \"components/All\";\nimport { TransportType } from \"types/TransportType\";\nimport { isMessage } from \"helpers/guards\";\nimport { TransportParent } from \"base/Transport\";\nimport { Of } from \"base/Of\";\n\n/**\n * Component that applies an info object constructor to each data item,\n * producing an information source with new values\n */\nexport function Map<T, TG>(\n $base: MessageType<T[]>,\n $target: TransportType<any, MessageType<TG>>,\n) {\n return new MapImpl<T, TG>($base, $target);\n}\n\nexport class MapImpl<T, TG> implements MessageType<TG[]> {\n public constructor(\n private $base: MessageType<T[]>,\n private $target: TransportType<any, MessageType<TG>>,\n ) {}\n\n public to(transport: TransportType<TG[]>): this {\n this.$base.to(this.parent.child(transport));\n return this;\n }\n\n private parent = TransportParent<T[]>(function (v, child) {\n const infos: MessageType<TG>[] = [];\n v.forEach((val) => {\n let $val: MessageType<T> | T = val;\n if (!isMessage($val as object)) {\n $val = Of($val);\n }\n const info = child.$target.use($val);\n infos.push(info);\n });\n All(...infos).to(this);\n }, this);\n}\n","import { Transport } from \"base/Transport\";\nimport { LateShared } from \"components/LateShared\";\nimport { MessageType } from \"types/MessageType\";\nimport { RPCType } from \"types/RPCType\";\nimport { TransportType } from \"types/TransportType\";\n\ninterface RPCImplType<T> {\n result(): MessageType<T>;\n error(): MessageType<Error | string>;\n}\n\n/**\n * The ability to call an external system through\n * sending a message in a standardized format\n * RPCType, the list of transports should be defined via\n * the RPC.transport object\n */\nexport function RPC<T>($rpc: MessageType<RPCType>): RPCImplType<T> {\n return new RPCImpl($rpc);\n}\n\nRPC.transport = {} as { default: TransportType<RPCType> } & Record<\n string,\n TransportType<RPCType>\n>;\n\nexport class RPCImpl {\n private $result = LateShared();\n private $error = LateShared();\n\n public constructor(private $rpc: MessageType<RPCType>) {}\n\n public result() {\n this.$rpc.to(\n Transport((rpc) => {\n const transport =\n rpc.transport === undefined\n ? RPC.transport.default\n : RPC.transport[rpc.transport] || RPC.transport.default;\n if (!transport) {\n throw new Error(`RPCImpl: Transport not found ${rpc.transport}`);\n }\n if (!rpc.result) {\n rpc.result = this.$result;\n }\n if (!rpc.error) {\n rpc.error = this.$error;\n }\n transport.use(rpc);\n }),\n );\n return this.$result;\n }\n\n public error() {\n return this.$error;\n }\n}\n","import { Transport } from \"base/Transport\";\nimport { MessageType } from \"types/MessageType\";\nimport { RPCType } from \"types/RPCType\";\n\n/**\n * Connects an external message to an RPC message chain\n */\nexport function RPCChain($base: MessageType) {\n return Transport<RPCType>((rpc) => {\n if (!rpc.result) {\n throw new Error(\"RPCChain did not find result in rpc message\");\n }\n $base.to(rpc.result);\n });\n}\n","import { Message } from \"base/Message\";\nimport { LateShared } from \"components/LateShared\";\nimport { RPC } from \"components/RPC\";\nimport { RPCType } from \"types/RPCType\";\n\n/**\n * Message for the arrival of a specific RPC message\n * for specific transport\n */\nexport function RPCOf(transport: string) {\n const $transport = LateShared<RPCType>();\n RPC.transport[transport] = $transport;\n return Message<RPCType>((transport) => {\n $transport.to(transport);\n });\n}\n","import { TransportParent } from \"base/Transport\";\nimport { MessageType } from \"types/MessageType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Creates a sequence that accumulates all values from the source into an array,\n * emitting the growing array with each new value.\n */\nexport function Sequence<T>($base: MessageType<T>) {\n return new SequenceImpl<T>($base);\n}\n\nexport class SequenceImpl<T> implements MessageType<T[]> {\n private result: T[] = [];\n\n public constructor(private $base: MessageType<T>) {}\n\n public to(transport: TransportType<T[]>): this {\n this.$base.to(this.parent.child(transport));\n return this;\n }\n\n private parent = TransportParent<T>(function (v, child) {\n child.result.push(v);\n this.use(child.result);\n }, this);\n}\n","import { TransportParent } from \"base/Transport\";\nimport { MessageType } from \"types/MessageType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Component that receives a data array and yields values one by one\n */\nexport function Stream<T>($base: MessageType<T[]>) {\n return new StreamImpl<T>($base);\n}\n\nexport class StreamImpl<T> implements MessageType<T> {\n public constructor(private $base: MessageType<T[]>) {}\n\n public to(transport: TransportType<T>): this {\n this.$base.to(this.parent.child(transport));\n return this;\n }\n\n private parent = TransportParent<T[]>(function (v) {\n v.forEach((cv) => {\n this.use(cv);\n });\n });\n}\n","import { ConstructorType } from \"types/ConstructorType\";\nimport { MessageType } from \"types/MessageType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Creates a transport that applies a constructor to the result of another transport.\n */\nexport function TransportApplied<T>(\n baseTransport: TransportType<any, MessageType<T>>,\n applier: ConstructorType<[MessageType], MessageType<T>>,\n) {\n return new TransportAppliedImpl(baseTransport, applier);\n}\n\nexport class TransportAppliedImpl<T>\n implements TransportType<unknown, MessageType<T>>\n{\n public constructor(\n private baseTransport: TransportType<any, MessageType<T>>,\n private applier: ConstructorType<[MessageType], MessageType<T>>,\n ) {}\n\n public use(args: unknown) {\n return this.applier(this.baseTransport.use(args));\n }\n}\n","import { MessageType } from \"types/MessageType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Creates a transport that merges additional arguments into the base transport's arguments\n * at a specified index position, allowing for flexible argument composition\n */\nexport function TransportArgs(\n baseTransport: TransportType<any[], MessageType>,\n args: unknown[],\n startFromArgIndex: number = 0,\n) {\n return new TransportArgsImpl(baseTransport, args, startFromArgIndex);\n}\n\nexport class TransportArgsImpl\n implements TransportType<unknown[], MessageType<unknown>>\n{\n public constructor(\n private baseTransport: TransportType<any[], MessageType>,\n private args: unknown[],\n private startFromArgIndex: number = 0,\n ) {}\n\n public use(runArgs: unknown[]): MessageType<unknown> {\n return this.baseTransport.use(\n mergeAtIndex(runArgs, this.args, this.startFromArgIndex),\n );\n }\n}\n\nfunction mergeAtIndex(arr1: unknown[], arr2: unknown[], index: number) {\n const result = arr1.slice(0, index);\n while (result.length < index) result.push(undefined);\n return result.concat(arr2);\n}\n","import { isDestroyable } from \"helpers/guards\";\nimport { DestroyableType } from \"types/DestroyableType\";\nimport { MessageType } from \"types/MessageType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Creates a transport wrapper that automatically manages destruction of created instances\n */\nexport function TransportDestroyable<T>(\n baseTransport: TransportType<any[], MessageType<T>>,\n) {\n return new TransportDestroyableImpl<T>(baseTransport);\n}\n\nexport class TransportDestroyableImpl<T>\n implements TransportType<unknown, MessageType<T>>, DestroyableType\n{\n private destructors: DestroyableType[] = [];\n\n public constructor(\n private baseTransport: TransportType<any[], MessageType<T>>,\n ) {}\n\n public use(args: any[]) {\n const inst = this.baseTransport.use(args);\n if (isDestroyable(inst)) {\n this.destructors.push(inst);\n }\n return inst;\n }\n\n public destroy(): this {\n this.destructors.forEach((i) => i.destroy());\n return this;\n }\n}\n"],"names":["__publicField","transport"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"silentium.cjs","sources":["../src/base/Of.ts","../src/helpers/guards.ts","../src/base/ActualMessage.ts","../src/base/Destroyable.ts","../src/base/DestroyContainer.ts","../src/helpers/ensures.ts","../src/base/Transport.ts","../src/base/Local.ts","../src/base/Message.ts","../src/base/New.ts","../src/base/TransportOptional.ts","../src/base/Void.ts","../src/components/All.ts","../src/components/Any.ts","../src/components/Applied.ts","../src/components/AppliedDestructured.ts","../src/components/Catch.ts","../src/components/Chain.ts","../src/components/ExecutorApplied.ts","../src/components/Filtered.ts","../src/components/FromEvent.ts","../src/components/FromPromise.ts","../src/components/Late.ts","../src/components/Once.ts","../src/helpers/TransportPool.ts","../src/components/Shared.ts","../src/components/SharedSource.ts","../src/components/Primitive.ts","../src/components/LateShared.ts","../src/components/Map.ts","../src/components/RPC.ts","../src/components/RPCChain.ts","../src/components/RPCOf.ts","../src/components/Sequence.ts","../src/components/Stream.ts","../src/components/TransportApplied.ts","../src/components/TransportArgs.ts","../src/components/TransportDestroyable.ts"],"sourcesContent":["import { MessageType } from \"types/MessageType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Helps convert a value into a message\n */\nexport function Of<T>(value: T) {\n return new OfImpl<T>(value);\n}\n\nexport class OfImpl<T> implements MessageType<T> {\n public constructor(private value: T) {}\n\n public to(transport: TransportType<T>): this {\n transport.use(this.value);\n return this;\n }\n}\n","import { DestroyableType, DestroyedType } from \"types/DestroyableType\";\nimport { MessageType } from \"types/MessageType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Checks that the value is neither undefined nor null\n */\nexport const isFilled = <T>(\n value?: T,\n): value is Exclude<T, null | undefined> => {\n return value !== undefined && value !== null;\n};\n\n/**\n * Checks that the object is an message\n */\nexport function isMessage<T>(o: T): o is T & MessageType {\n return (\n o !== null &&\n typeof o === \"object\" &&\n \"to\" in o &&\n typeof (o as any).to === \"function\"\n );\n}\n\n/**\n * Checks that the object is destroyable\n */\nexport function isDestroyable<T>(o: T): o is T & DestroyableType {\n return (\n o !== null &&\n typeof o === \"object\" &&\n \"destroy\" in o &&\n typeof (o as any).destroy === \"function\"\n );\n}\n\n/**\n * Checks that the object can indicate whether it has been destroyed or not\n */\nexport function isDestroyed<T>(o: T): o is T & DestroyedType {\n return (\n o !== null &&\n typeof o === \"object\" &&\n \"destroyed\" in o &&\n typeof (o as any).destroy === \"function\"\n );\n}\n\n/**\n * Checks that the object is a transport\n */\nexport function isTransport<T>(o: T): o is T & TransportType {\n return (\n o !== null &&\n typeof o === \"object\" &&\n \"use\" in o &&\n typeof (o as any).use === \"function\"\n );\n}\n","import { Of } from \"base/Of\";\nimport { isMessage } from \"helpers/guards\";\nimport { MaybeMessage, MessageType } from \"types/MessageType\";\n\n/**\n * A function that helps to ensure that\n * the message is indeed a message object\n * and not just a value\n */\nexport function ActualMessage<T>(message: MaybeMessage<T>): MessageType<T> {\n return isMessage(message) ? message : Of(message);\n}\n","import { isDestroyable } from \"helpers/guards\";\nimport { DestroyableType } from \"types/DestroyableType\";\n\n/**\n * Allows creating an object that definitely has a destructor,\n * useful to avoid creating unnecessary conditions\n */\nexport function Destroyable<T>(base: T) {\n return new DestroyableImpl(base);\n}\n\nexport class DestroyableImpl<T> implements DestroyableType {\n public constructor(private base: T) {}\n\n public destroy(): this {\n if (isDestroyable(this.base)) {\n this.base.destroy();\n }\n return this;\n }\n}\n","import { isDestroyable } from \"helpers/guards\";\nimport { DestroyableType } from \"types/DestroyableType\";\n\n/**\n * An object that allows collecting all disposable objects and\n * disposing them later all together\n */\nexport function DestroyContainer() {\n return new DestroyContainerImpl();\n}\n\nexport class DestroyContainerImpl implements DestroyableType {\n private destructors: DestroyableType[] = [];\n\n public add<R>(e: R): R {\n if (isDestroyable(e)) {\n this.destructors.push(e);\n }\n return e;\n }\n\n public destroy() {\n this.destructors.forEach((d) => d.destroy());\n this.destructors.length = 0;\n return this;\n }\n}\n","import { isMessage, isTransport } from \"helpers/guards\";\n\nexport function ensureFunction(v: unknown, label: string) {\n if (typeof v !== \"function\") {\n throw new Error(`${label}: is not function`);\n }\n}\n\nexport function ensureMessage(v: unknown, label: string) {\n if (!isMessage(v)) {\n throw new Error(`${label}: is not message`);\n }\n}\n\nexport function ensureTransport(v: unknown, label: string) {\n if (!isTransport(v)) {\n throw new Error(`${label}: is not transport`);\n }\n}\n","import { ensureFunction } from \"helpers/ensures\";\nimport { MessageType } from \"types/MessageType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Type of value transfer logic executor\n */\nexport type TransportExecutor<T> = (v: T) => void;\n\n/**\n * Base transport that accepts the passed value,\n * acts as a conductor to deliver the value from a message to somewhere\n */\nexport function Transport<T>(transportExecutor: TransportExecutor<T>) {\n return new TransportImpl<T>(transportExecutor);\n}\n\nexport class TransportImpl<T> implements TransportType<T> {\n public constructor(private executor: TransportExecutor<T>) {\n ensureFunction(executor, \"Transport: transport executor\");\n }\n\n public use(value: T) {\n this.executor(value);\n return this;\n }\n}\n\n/**\n * Type of executor for value passing logic and message returning\n */\nexport type TransportMessageExecutor<T, ET = T> = (v: T) => MessageType<ET>;\n\n/**\n * A transport that delivers a value from one message\n * and returns another message based on the value\n */\nexport function TransportMessage<T, ET = any>(\n executor: TransportMessageExecutor<T, ET>,\n) {\n return new TransportMessageImpl<T, ET>(executor);\n}\n\nexport class TransportMessageImpl<T, ET = T>\n implements TransportType<T, MessageType<ET>>\n{\n public constructor(private executor: TransportMessageExecutor<T, ET>) {\n ensureFunction(executor, \"TransportMessage: transport executor\");\n }\n\n public use(value: T) {\n return this.executor(value);\n }\n}\n\n/**\n * A transport that accepts a child transport\n * to perform some transformation on the value\n * during its transmission\n */\nexport function TransportParent<T>(\n executor: (this: TransportType, v: T, ...context: any[]) => void,\n ...args: any[]\n) {\n return new TransportParentImpl<T>(executor, args);\n}\n\nexport class TransportParentImpl<T> implements TransportType<T> {\n public constructor(\n private executor: (this: TransportType, v: T, ...context: any[]) => void,\n private args: any[] = [],\n private _child?: TransportType<T>,\n ) {\n ensureFunction(executor, \"TransportParent: executor\");\n }\n\n public use(value: T): this {\n if (this._child === undefined) {\n throw new Error(\"no base transport\");\n }\n this.executor.call(this._child, value, ...this.args);\n return this;\n }\n\n public child(transport: TransportType, ...args: any[]) {\n return new TransportParentImpl(\n this.executor,\n [...this.args, ...args],\n transport,\n );\n }\n}\n","import { MaybeMessage, MessageType } from \"types/MessageType\";\nimport { TransportParent } from \"base/Transport\";\nimport { ensureMessage } from \"helpers/ensures\";\nimport { TransportType } from \"types/TransportType\";\nimport { DestroyableType } from \"types/DestroyableType\";\nimport { ActualMessage } from \"base/ActualMessage\";\n\n/**\n * Create local copy of source what can be destroyed\n */\nexport function Local<T>($base: MaybeMessage<T>) {\n return new LocalImpl<T>(ActualMessage($base));\n}\n\nexport class LocalImpl<T> implements MessageType<T>, DestroyableType {\n private destroyed = false;\n\n public constructor(private $base: MessageType<T>) {\n ensureMessage($base, \"Local: $base\");\n }\n\n public to(transport: TransportType<T>): this {\n this.$base.to(this.transport.child(transport));\n return this;\n }\n\n private transport = TransportParent(function (v: T, child: LocalImpl<T>) {\n if (!child.destroyed) {\n this.use(v);\n }\n }, this);\n\n public destroy(): this {\n this.destroyed = true;\n return this;\n }\n}\n","import { ensureFunction } from \"helpers/ensures\";\nimport { DestroyableType } from \"types/DestroyableType\";\nimport { MessageType } from \"types/MessageType\";\nimport { TransportType } from \"types/TransportType\";\n\ntype MessageExecutorType<T> = (\n transport: TransportType<T>,\n) => void | (() => void);\n\n/**\n * A message created from an executor function.\n * The executor function can return a message destruction function.\n */\nexport function Message<T>(executor: MessageExecutorType<T>) {\n return new MessageImpl<T>(executor);\n}\n\nexport class MessageImpl<T> implements MessageType<T>, DestroyableType {\n private mbDestructor: unknown;\n\n public constructor(private executor: MessageExecutorType<T>) {\n ensureFunction(executor, \"Message: executor\");\n }\n\n public to(transport: TransportType<T>) {\n this.mbDestructor = this.executor(transport);\n return this;\n }\n\n public destroy() {\n if (typeof this.mbDestructor === \"function\") {\n this.mbDestructor?.();\n }\n return this;\n }\n}\n","import { Message } from \"base/Message\";\nimport { ConstructorType } from \"types/ConstructorType\";\n\n/**\n * A component that, on each access, returns a new instance\n * of a reference type based on the constructor function\n */\nexport function New<T>(construct: ConstructorType<[], T>) {\n return Message<T>((transport) => {\n transport.use(construct());\n });\n}\n","import { MessageType } from \"types/MessageType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Allows subscribing a transport to a message\n * even if the transport reference does not exist,\n * helps avoid unnecessary conditions in application code\n */\nexport function TransportOptional(base?: TransportType) {\n return new TransportOptionalImpl(base);\n}\n\nexport class TransportOptionalImpl {\n public constructor(private base?: TransportType) {}\n\n public wait(m: MessageType) {\n if (this.base !== undefined) {\n m.to(this.base);\n }\n return this;\n }\n}\n","import { TransportType } from \"types/TransportType\";\n\n/**\n * Transport that does nothing with the passed value,\n * needed for silent message triggering\n */\nexport function Void() {\n return new VoidImpl();\n}\n\nexport class VoidImpl implements TransportType {\n public use(): this {\n return this;\n }\n}\n","import { MaybeMessage, MessageType } from \"types/MessageType\";\nimport { TransportParent } from \"base/Transport\";\nimport { TransportType } from \"types/TransportType\";\nimport { ensureMessage } from \"helpers/ensures\";\nimport { ActualMessage } from \"base/ActualMessage\";\n\ntype ExtractTypeS<T> = T extends MaybeMessage<infer U> ? U : never;\n\ntype ExtractTypesFromArrayS<T extends MaybeMessage<any>[]> = {\n [K in keyof T]: ExtractTypeS<T[K]>;\n};\n\nconst isAllFilled = (keysFilled: Set<string>, keysKnown: Set<string>) => {\n return keysFilled.size > 0 && keysFilled.size === keysKnown.size;\n};\n\n/**\n * A message that represents values from\n * all provided messages as an array.\n * When all messages emit their values,\n * the combined value will be returned.\n * If at least one message later emits a new\n * value, the updated array with the new value\n * will be emitted by All.\n */\nexport function All<const T extends MaybeMessage[]>(...messages: T) {\n return new AllImpl<T>(...messages);\n}\n\nexport class AllImpl<const T extends MaybeMessage[]>\n implements MessageType<ExtractTypesFromArrayS<T>>\n{\n private known: Set<string>;\n private filled = new Set<string>();\n private $messages: MessageType[];\n private result: unknown[] = [];\n\n public constructor(...messages: T) {\n this.known = new Set<string>(Object.keys(messages));\n this.$messages = messages.map(ActualMessage);\n }\n\n public to(transport: TransportType<ExtractTypesFromArrayS<T>>): this {\n Object.entries(this.$messages).forEach(([key, message]) => {\n ensureMessage(message, \"All: item\");\n message.to(this.transport.child(transport, key));\n });\n if (this.known.size === 0) {\n transport.use([] as ExtractTypesFromArrayS<T>);\n }\n return this;\n }\n\n private transport = TransportParent(function (\n v: unknown,\n child: AllImpl<T>,\n key: string,\n ) {\n child.filled.add(key);\n child.result[parseInt(key)] = v;\n if (isAllFilled(child.filled, child.known)) {\n this.use(child.result as ExtractTypesFromArrayS<T>);\n }\n }, this);\n}\n","import { ActualMessage } from \"base/ActualMessage\";\nimport { ensureMessage } from \"helpers/ensures\";\nimport { MaybeMessage, MessageType } from \"types/MessageType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * A message that emits values received from\n * any of its bound messages\n */\nexport function Any<const T>(...messages: MaybeMessage<T>[]) {\n return new AnyImpl<T>(...messages.map(ActualMessage));\n}\n\nexport class AnyImpl<T> implements MessageType<T> {\n private $messages: MessageType<T>[];\n\n public constructor(...messages: MessageType<T>[]) {\n this.$messages = messages;\n }\n\n public to(transport: TransportType<T>): this {\n this.$messages.forEach((message) => {\n ensureMessage(message, \"Any: item\");\n message.to(transport);\n });\n return this;\n }\n}\n","import { MaybeMessage, MessageType } from \"types/MessageType\";\nimport { TransportParent } from \"base/Transport\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { ensureMessage } from \"helpers/ensures\";\nimport { TransportType } from \"types/TransportType\";\nimport { ActualMessage } from \"base/ActualMessage\";\n\n/**\n * An message that applies a function\n * to the value of the base message\n */\nexport function Applied<const T, R>(\n $base: MaybeMessage<T>,\n applier: ConstructorType<[T], R>,\n) {\n return new AppliedImpl<T, R>(ActualMessage($base), applier);\n}\n\nexport class AppliedImpl<T, R> implements MessageType<R> {\n public constructor(\n private $base: MessageType<T>,\n private applier: ConstructorType<[T], R>,\n ) {\n ensureMessage($base, \"Applied: base\");\n }\n\n public to(transport: TransportType<R>) {\n this.$base.to(this.transport.child(transport));\n return this;\n }\n\n private transport = TransportParent(function (\n v: T,\n child: AppliedImpl<T, R>,\n ) {\n this.use(child.applier(v));\n }, this);\n}\n","import { Applied } from \"components/Applied\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * Allows applying variables from an message that passes an array to a function,\n * where each element of the array will be passed as a separate argument\n */\nexport function AppliedDestructured<const T extends any[], R>(\n $base: MaybeMessage<T>,\n applier: ConstructorType<T[number][], R>,\n) {\n return Applied($base, (args) => {\n return applier(...args);\n });\n}\n","import { ensureMessage, ensureTransport } from \"helpers/ensures\";\nimport { MessageType } from \"types/MessageType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * An message representing a base message where\n * its operation is wrapped in try-catch\n * and expects exceptions. If an exception\n * bubbles up, it's passed to the transports\n * as errorMessage and errorOriginal\n */\nexport function Catch<T>(\n $base: MessageType<T>,\n errorMessage: TransportType,\n errorOriginal?: TransportType,\n) {\n return new CatchImpl<T>($base, errorMessage, errorOriginal);\n}\n\nexport class CatchImpl<T> implements MessageType<T> {\n public constructor(\n private $base: MessageType<T>,\n private errorMessage: TransportType,\n private errorOriginal?: TransportType,\n ) {\n ensureMessage($base, \"Catch: base\");\n ensureTransport(errorMessage, \"Catch: errorMessage\");\n if (errorOriginal !== undefined) {\n ensureTransport(errorOriginal, \"Catch: errorOriginal\");\n }\n }\n\n public to(transport: TransportType<T>) {\n try {\n this.$base.to(transport);\n } catch (e: unknown) {\n if (e instanceof Error) {\n this.errorMessage.use(e.message);\n } else {\n this.errorMessage.use(String(e));\n }\n if (this.errorOriginal) {\n this.errorOriginal.use(e);\n }\n }\n return this;\n }\n}\n","import { TransportType } from \"types/TransportType\";\nimport { TransportParent } from \"base/Transport\";\nimport { MessageType, MessageTypeValue } from \"types/MessageType\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ntype Last<T extends readonly any[]> = T extends readonly [...infer _, infer L]\n ? L\n : never;\n\n/**\n * Chains messages together and triggers\n * the last message only when all previous messages\n * have emitted their values. The value of Chain will be the value\n * of the last message. If any messages\n * emit a value again after the overall Chain response was already returned,\n * then Chain emits again with the value of the last message.\n */\nexport function Chain<T extends readonly MessageType[]>(...messages: T) {\n return new ChainImpl<T>(...messages);\n}\n\nexport class ChainImpl<T extends readonly MessageType[]>\n implements MessageType<MessageTypeValue<Last<T>>>\n{\n private $messages: T;\n private $latest: MessageTypeValue<Last<T>> | undefined;\n\n public constructor(...messages: T) {\n this.$messages = messages;\n }\n\n public to(transport: TransportType<MessageTypeValue<Last<T>>>) {\n this.handleMessage(0, transport);\n return this;\n }\n\n private handleMessage = (index: number, transport: TransportType) => {\n const message = this.$messages[index] as Last<T>;\n const next = this.$messages[index + 1] as Last<T> | undefined;\n message.to(this.oneMessageTransport.child(transport, next, index));\n };\n\n private oneMessageTransport = TransportParent(function (\n v: MessageTypeValue<Last<T>>,\n child: ChainImpl<T>,\n next: Last<T> | undefined,\n index: number,\n ) {\n if (!next) {\n child.$latest = v as MessageTypeValue<Last<T>>;\n }\n if (child.$latest) {\n this.use(child.$latest);\n }\n if (next && !child.$latest) {\n child.handleMessage(index + 1, this);\n }\n }, this);\n}\n","import { Transport, TransportExecutor } from \"base/Transport\";\nimport { ensureMessage } from \"helpers/ensures\";\nimport { MessageType } from \"types/MessageType\";\nimport { TransportType } from \"types/TransportType\";\n\ntype ExecutorApplier<T> = (\n executor: TransportExecutor<T>,\n) => TransportExecutor<T>;\n\n/**\n * Applies a value transfer function to the transport\n * and returns the same value transfer function for the transport\n * Useful for applying functions like debounced or throttle\n */\nexport function ExecutorApplied<T>(\n $base: MessageType<T>,\n applier: ExecutorApplier<T>,\n) {\n return new ExecutorAppliedImpl<T>($base, applier);\n}\n\nexport class ExecutorAppliedImpl<T> implements MessageType<T> {\n public constructor(\n private $base: MessageType<T>,\n private applier: ExecutorApplier<T>,\n ) {\n ensureMessage($base, \"ExecutorApplied: base\");\n }\n\n public to(transport: TransportType<T>) {\n const ExecutorAppliedBaseTransport = this.applier(\n transport.use.bind(transport),\n );\n this.$base.to(Transport(ExecutorAppliedBaseTransport));\n return this;\n }\n}\n","import { MaybeMessage, MessageType } from \"types/MessageType\";\nimport { TransportParent } from \"base/Transport\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { TransportType } from \"types/TransportType\";\nimport { ActualMessage } from \"base/ActualMessage\";\n\n/**\n * Filters values from the source message based on a predicate function,\n * optionally providing a default value when the predicate fails.\n */\nexport function Filtered<T>(\n $base: MaybeMessage<T>,\n predicate: ConstructorType<[T], boolean>,\n defaultValue?: T,\n): MessageType<T> {\n return new FilteredImpl<T>(ActualMessage($base), predicate, defaultValue);\n}\n\nexport class FilteredImpl<T> implements MessageType<T> {\n public constructor(\n private $base: MessageType<T>,\n private predicate: ConstructorType<[T], boolean>,\n private defaultValue?: T,\n ) {}\n\n public to(transport: TransportType<T>) {\n this.$base.to(this.parent.child(transport));\n return this;\n }\n\n private parent = TransportParent<T>(function (v, child: FilteredImpl<T>) {\n if (child.predicate(v)) {\n this.use(v);\n } else if (child.defaultValue !== undefined) {\n this.use(child.defaultValue);\n }\n }, this);\n}\n","import { TransportType } from \"types/TransportType\";\nimport { Transport, TransportParent } from \"base/Transport\";\nimport { MaybeMessage, MessageType } from \"types/MessageType\";\nimport { All } from \"components/All\";\nimport { DestroyableType } from \"types/DestroyableType\";\nimport { ActualMessage } from \"base/ActualMessage\";\n\n/**\n * A message derived from event with a different\n * method call interface, based on callbacks.\n * Allows attaching a custom handler to an existing event source\n * and presenting it as a silentium message\n */\nexport function FromEvent<T>(\n $emitter: MaybeMessage<any>,\n $eventName: MaybeMessage<string>,\n $subscribeMethod: MaybeMessage<string>,\n $unsubscribeMethod?: MaybeMessage<string>,\n) {\n return new FromEventImpl<T>(\n ActualMessage($emitter),\n ActualMessage($eventName),\n ActualMessage($subscribeMethod),\n ActualMessage($unsubscribeMethod),\n );\n}\n\nexport class FromEventImpl<T> implements MessageType<T>, DestroyableType {\n private lastTransport: TransportType<T> | null = null;\n private handler = (v: T) => {\n if (this.lastTransport) {\n this.lastTransport.use(v);\n }\n };\n\n public constructor(\n private $emitter: MessageType<any>,\n private $eventName: MessageType<string>,\n private $subscribeMethod: MessageType<string>,\n private $unsubscribeMethod?: MessageType<string>,\n ) {}\n\n public to(transport: TransportType<T>): this {\n All(this.$emitter, this.$eventName, this.$subscribeMethod).to(\n this.parent.child(transport),\n );\n return this;\n }\n\n private parent = TransportParent<[any, string, string]>(function (\n [emitter, eventName, subscribe],\n child,\n ) {\n child.lastTransport = this;\n if (!emitter?.[subscribe]) {\n return;\n }\n emitter[subscribe](eventName, child.handler);\n }, this);\n\n public destroy(): this {\n this.lastTransport = null;\n if (!this.$unsubscribeMethod) {\n return this;\n }\n All(this.$emitter, this.$eventName, this.$unsubscribeMethod).to(\n Transport(([emitter, eventName, unsubscribe]) => {\n emitter?.[unsubscribe]?.(eventName, this.handler);\n }),\n );\n return this;\n }\n}\n","import { MessageType } from \"types/MessageType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Creates an message from a Promise, allowing the promise's resolution or rejection\n * to be handled as an message. The resolved value is emitted to the transport,\n * and if an error is provided, rejections are forwarded to it.\n */\nexport function FromPromise<T>(p: Promise<T>, error?: TransportType) {\n return new FromPromiseImpl<T>(p, error);\n}\n\nexport class FromPromiseImpl<T> implements MessageType<T> {\n public constructor(\n private p: Promise<T>,\n private error?: TransportType,\n ) {}\n\n public to(transport: TransportType<T>): this {\n this.p\n .then((v) => {\n transport.use(v);\n })\n .catch((e) => {\n this.error?.use(e);\n });\n return this;\n }\n}\n","import { SourceType } from \"types/SourceType\";\nimport { isFilled } from \"helpers/guards\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * A component that allows creating linked objects of information and its owner\n * in such a way that if a new value is assigned to the owner, this value\n * will become the value of the linked information source\n * https://silentium-lab.github.io/silentium/#/en/information/of\n */\nexport function Late<T>(v?: T) {\n return new LateImpl<T>(v);\n}\n\nexport class LateImpl<T> implements SourceType<T> {\n private lateTransport: TransportType<T> | null = null;\n private notify = (v?: T) => {\n if (isFilled(v) && this.lateTransport) {\n this.lateTransport.use(v);\n }\n };\n\n public constructor(private v?: T) {}\n\n public to(transport: TransportType<T>): this {\n if (this.lateTransport) {\n throw new Error(\n \"Late component gets new transport, when another was already connected!\",\n );\n }\n this.lateTransport = transport;\n this.notify(this.v);\n return this;\n }\n\n public use(value: T): this {\n this.notify(value);\n return this;\n }\n}\n","import { TransportParent } from \"base/Transport\";\nimport { MessageType } from \"types/MessageType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Limits the number of values from the information source\n * to a single value - once the first value is emitted, no more\n * values are delivered from the source\n */\nexport function Once<T>($base: MessageType<T>) {\n return new OnceImpl<T>($base);\n}\n\nexport class OnceImpl<T> implements MessageType<T> {\n private isFilled = false;\n\n public constructor(private $base: MessageType<T>) {}\n\n public to(transport: TransportType<T>): this {\n this.$base.to(this.parent.child(transport));\n return this;\n }\n\n private parent = TransportParent<T>(function (v, child) {\n if (!child.isFilled) {\n child.isFilled = true;\n this.use(v);\n }\n }, this);\n}\n","import { TransportType } from \"types/TransportType\";\nimport { Transport } from \"base/Transport\";\nimport { isDestroyed } from \"helpers/guards\";\n\n/**\n * Helps maintain an owner list allowing different\n * owners to get information from a common source\n * https://silentium-lab.github.io/silentium/#/en/utils/owner-pool\n */\nexport class TransportPool<T> {\n private transports: Set<TransportType<T>>;\n private innerTransport: TransportType<T>;\n\n public constructor() {\n this.transports = new Set<TransportType<T>>();\n this.innerTransport = Transport((v) => {\n this.transports.forEach((transport) => {\n if (isDestroyed(transport) && transport.destroyed()) {\n this.transports.delete(transport);\n return;\n }\n transport.use(v);\n });\n });\n }\n\n public transport() {\n return this.innerTransport;\n }\n\n public size(): number {\n return this.transports.size;\n }\n\n public has(owner: TransportType<T>): boolean {\n return this.transports.has(owner);\n }\n\n public add(owner: TransportType<T>) {\n this.transports.add(owner);\n return this;\n }\n\n public remove(g: TransportType<T>) {\n this.transports.delete(g);\n return this;\n }\n\n public destroy() {\n this.transports.forEach((g) => {\n this.remove(g);\n });\n return this;\n }\n}\n","import { MessageType } from \"types/MessageType\";\nimport { Late } from \"components/Late\";\nimport { Once } from \"components/Once\";\nimport { SourceType } from \"types/SourceType\";\nimport { TransportPool } from \"helpers/TransportPool\";\nimport { TransportType } from \"types/TransportType\";\nimport { isFilled } from \"helpers/guards\";\nimport { Transport } from \"base/Transport\";\n\n/**\n * An information object that helps multiple owners access\n * a single another information object\n */\nexport function Shared<T>($base: MessageType<T>, stateless = false) {\n return new SharedImpl<T>($base, stateless);\n}\n\nexport class SharedImpl<T> implements SourceType<T> {\n private transportPool = new TransportPool<T>();\n private lastValue: T | undefined;\n private calls = Late();\n\n public constructor(\n private $base: MessageType<T>,\n private stateless = false,\n ) {\n Once(this.calls).to(\n Transport(() => {\n this.$base.to(this.firstCallTransport);\n }),\n );\n }\n\n public to(transport: TransportType<T>) {\n this.calls.use(1);\n if (\n !this.stateless &&\n isFilled(this.lastValue) &&\n !this.transportPool.has(transport)\n ) {\n transport.use(this.lastValue);\n }\n this.transportPool.add(transport);\n return this;\n }\n\n public use(value: T) {\n this.calls.use(1);\n this.lastValue = value;\n this.transportPool.transport().use(value);\n return this;\n }\n\n private firstCallTransport = Transport<T>((v: T) => {\n this.lastValue = v;\n this.transportPool.transport().use(v);\n });\n\n public touched() {\n this.calls.use(1);\n }\n\n public pool() {\n return this.transportPool;\n }\n\n public destroy() {\n return this.transportPool.destroy();\n }\n}\n","import { SourceType } from \"types/SourceType\";\nimport { Shared } from \"components/Shared\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Creates a shared source that allows multiple transports to subscribe to the same underlying source.\n * The stateless parameter controls whether the sharing maintains state or not.\n */\nexport function SharedSource<T>($base: SourceType<T>, stateless = false) {\n return new SharedSourceImpl<T>($base, stateless);\n}\n\nexport class SharedSourceImpl<T> implements SourceType<T> {\n private $sharedBase: SourceType<T> & { touched: () => void };\n\n public constructor(\n private $base: SourceType<T>,\n stateless = false,\n ) {\n this.$sharedBase = Shared(this.$base, stateless);\n }\n\n public to(transport: TransportType<T>) {\n this.$sharedBase.to(transport);\n return this;\n }\n\n public use(value: T) {\n this.$sharedBase.touched();\n this.$base.use(value);\n return this;\n }\n}\n","import { Transport } from \"base/Transport\";\nimport { MessageType } from \"types/MessageType\";\n\n/**\n * Helps represent an message as a primitive type, which can be useful\n * for cases when you need to always have a reference to the current value\n * without updating the shared value when the current one changes.\n * For example, this could be used when passing an authorization token.\n * It can also be useful for testing or logging purposes.\n */\nexport function Primitive<T>($base: MessageType<T>, theValue: T | null = null) {\n return new PrimitiveImpl<T>($base, theValue);\n}\n\nexport class PrimitiveImpl<T> {\n private touched = false;\n\n public constructor(\n private $base: MessageType<T>,\n private theValue: T | null = null,\n ) {}\n\n private ensureTouched() {\n if (!this.touched) {\n this.$base.to(\n Transport((v) => {\n this.theValue = v;\n }),\n );\n }\n this.touched = true;\n }\n\n public [Symbol.toPrimitive]() {\n this.ensureTouched();\n return this.theValue;\n }\n\n public primitive() {\n this.ensureTouched();\n return this.theValue;\n }\n\n public primitiveWithException() {\n this.ensureTouched();\n if (this.theValue === null) {\n throw new Error(\"Primitive value is null\");\n }\n return this.theValue;\n }\n}\n","import { SourceType } from \"types/SourceType\";\nimport { Late } from \"components/Late\";\nimport { SharedSource } from \"components/SharedSource\";\nimport { TransportType } from \"types/TransportType\";\nimport { Primitive, PrimitiveImpl } from \"components/Primitive\";\n\n/**\n * An message with a value that will be set later,\n * capable of responding to different transports\n */\nexport function LateShared<T>(value?: T) {\n return new LateSharedImpl<T>(value);\n}\n\nexport class LateSharedImpl<T> implements SourceType<T> {\n private $msg: SourceType<T>;\n private primitive: PrimitiveImpl<T>;\n\n public constructor(value?: T) {\n this.$msg = SharedSource(Late(value));\n this.primitive = Primitive(this, value);\n }\n\n public to(transport: TransportType<T>) {\n this.$msg.to(transport);\n return this;\n }\n\n public use(value: T) {\n this.$msg.use(value);\n return this;\n }\n\n public value() {\n return this.primitive;\n }\n}\n","import { MaybeMessage, MessageType } from \"types/MessageType\";\nimport { All } from \"components/All\";\nimport { TransportType } from \"types/TransportType\";\nimport { isMessage } from \"helpers/guards\";\nimport { TransportParent } from \"base/Transport\";\nimport { Of } from \"base/Of\";\nimport { ActualMessage } from \"base/ActualMessage\";\n\n/**\n * Component that applies an info object constructor to each data item,\n * producing an information source with new values\n */\nexport function Map<T, TG>(\n $base: MaybeMessage<T[]>,\n $target: TransportType<any, MessageType<TG>>,\n) {\n return new MapImpl<T, TG>(ActualMessage($base), $target);\n}\n\nexport class MapImpl<T, TG> implements MessageType<TG[]> {\n public constructor(\n private $base: MessageType<T[]>,\n private $target: TransportType<any, MessageType<TG>>,\n ) {}\n\n public to(transport: TransportType<TG[]>): this {\n this.$base.to(this.parent.child(transport));\n return this;\n }\n\n private parent = TransportParent<T[]>(function (v, child) {\n const infos: MessageType<TG>[] = [];\n v.forEach((val) => {\n let $val: MessageType<T> | T = val;\n if (!isMessage($val as object)) {\n $val = Of($val);\n }\n const info = child.$target.use($val);\n infos.push(info);\n });\n All(...infos).to(this);\n }, this);\n}\n","import { ActualMessage } from \"base/ActualMessage\";\nimport { Transport } from \"base/Transport\";\nimport { LateShared } from \"components/LateShared\";\nimport { MaybeMessage, MessageType } from \"types/MessageType\";\nimport { RPCType } from \"types/RPCType\";\nimport { TransportType } from \"types/TransportType\";\n\ninterface RPCImplType<T> {\n result(): MessageType<T>;\n error(): MessageType<Error | string>;\n}\n\n/**\n * The ability to call an external system through\n * sending a message in a standardized format\n * RPCType, the list of transports should be defined via\n * the RPC.transport object\n */\nexport function RPC<T>($rpc: MaybeMessage<RPCType>): RPCImplType<T> {\n return new RPCImpl(ActualMessage($rpc));\n}\n\nRPC.transport = {} as { default: TransportType<RPCType> } & Record<\n string,\n TransportType<RPCType>\n>;\n\nexport class RPCImpl {\n private $result = LateShared();\n private $error = LateShared();\n\n public constructor(private $rpc: MessageType<RPCType>) {}\n\n public result() {\n this.$rpc.to(\n Transport((rpc) => {\n const transport =\n rpc.transport === undefined\n ? RPC.transport.default\n : RPC.transport[rpc.transport] || RPC.transport.default;\n if (!transport) {\n throw new Error(`RPCImpl: Transport not found ${rpc.transport}`);\n }\n if (!rpc.result) {\n rpc.result = this.$result;\n }\n if (!rpc.error) {\n rpc.error = this.$error;\n }\n transport.use(rpc);\n }),\n );\n return this.$result;\n }\n\n public error() {\n return this.$error;\n }\n}\n","import { ActualMessage } from \"base/ActualMessage\";\nimport { Transport } from \"base/Transport\";\nimport { MaybeMessage } from \"types/MessageType\";\nimport { RPCType } from \"types/RPCType\";\n\n/**\n * Connects an external message to an RPC message chain\n */\nexport function RPCChain($base: MaybeMessage) {\n return Transport<RPCType>((rpc) => {\n if (!rpc.result) {\n throw new Error(\"RPCChain did not find result in rpc message\");\n }\n ActualMessage($base).to(rpc.result);\n });\n}\n","import { Message } from \"base/Message\";\nimport { LateShared } from \"components/LateShared\";\nimport { RPC } from \"components/RPC\";\nimport { RPCType } from \"types/RPCType\";\n\n/**\n * Message for the arrival of a specific RPC message\n * for specific transport\n */\nexport function RPCOf(transport: string) {\n const $transport = LateShared<RPCType>();\n RPC.transport[transport] = $transport;\n return Message<RPCType>((transport) => {\n $transport.to(transport);\n });\n}\n","import { TransportParent } from \"base/Transport\";\nimport { MessageType } from \"types/MessageType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Creates a sequence that accumulates all values from the source into an array,\n * emitting the growing array with each new value.\n */\nexport function Sequence<T>($base: MessageType<T>) {\n return new SequenceImpl<T>($base);\n}\n\nexport class SequenceImpl<T> implements MessageType<T[]> {\n private result: T[] = [];\n\n public constructor(private $base: MessageType<T>) {}\n\n public to(transport: TransportType<T[]>): this {\n this.$base.to(this.parent.child(transport));\n return this;\n }\n\n private parent = TransportParent<T>(function (v, child) {\n child.result.push(v);\n this.use(child.result);\n }, this);\n}\n","import { TransportParent } from \"base/Transport\";\nimport { MessageType } from \"types/MessageType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Component that receives a data array and yields values one by one\n */\nexport function Stream<T>($base: MessageType<T[]>) {\n return new StreamImpl<T>($base);\n}\n\nexport class StreamImpl<T> implements MessageType<T> {\n public constructor(private $base: MessageType<T[]>) {}\n\n public to(transport: TransportType<T>): this {\n this.$base.to(this.parent.child(transport));\n return this;\n }\n\n private parent = TransportParent<T[]>(function (v) {\n v.forEach((cv) => {\n this.use(cv);\n });\n });\n}\n","import { ConstructorType } from \"types/ConstructorType\";\nimport { MessageType } from \"types/MessageType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Creates a transport that applies a constructor to the result of another transport.\n */\nexport function TransportApplied<T>(\n baseTransport: TransportType<any, MessageType<T>>,\n applier: ConstructorType<[MessageType], MessageType<T>>,\n) {\n return new TransportAppliedImpl(baseTransport, applier);\n}\n\nexport class TransportAppliedImpl<T>\n implements TransportType<unknown, MessageType<T>>\n{\n public constructor(\n private baseTransport: TransportType<any, MessageType<T>>,\n private applier: ConstructorType<[MessageType], MessageType<T>>,\n ) {}\n\n public use(args: unknown) {\n return this.applier(this.baseTransport.use(args));\n }\n}\n","import { MessageType } from \"types/MessageType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Creates a transport that merges additional arguments into the base transport's arguments\n * at a specified index position, allowing for flexible argument composition\n */\nexport function TransportArgs(\n baseTransport: TransportType<any[], MessageType>,\n args: unknown[],\n startFromArgIndex: number = 0,\n) {\n return new TransportArgsImpl(baseTransport, args, startFromArgIndex);\n}\n\nexport class TransportArgsImpl\n implements TransportType<unknown[], MessageType<unknown>>\n{\n public constructor(\n private baseTransport: TransportType<any[], MessageType>,\n private args: unknown[],\n private startFromArgIndex: number = 0,\n ) {}\n\n public use(runArgs: unknown[]): MessageType<unknown> {\n return this.baseTransport.use(\n mergeAtIndex(runArgs, this.args, this.startFromArgIndex),\n );\n }\n}\n\nfunction mergeAtIndex(arr1: unknown[], arr2: unknown[], index: number) {\n const result = arr1.slice(0, index);\n while (result.length < index) result.push(undefined);\n return result.concat(arr2);\n}\n","import { isDestroyable } from \"helpers/guards\";\nimport { DestroyableType } from \"types/DestroyableType\";\nimport { MessageType } from \"types/MessageType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Creates a transport wrapper that automatically manages destruction of created instances\n */\nexport function TransportDestroyable<T>(\n baseTransport: TransportType<any[], MessageType<T>>,\n) {\n return new TransportDestroyableImpl<T>(baseTransport);\n}\n\nexport class TransportDestroyableImpl<T>\n implements TransportType<unknown, MessageType<T>>, DestroyableType\n{\n private destructors: DestroyableType[] = [];\n\n public constructor(\n private baseTransport: TransportType<any[], MessageType<T>>,\n ) {}\n\n public use(args: any[]) {\n const inst = this.baseTransport.use(args);\n if (isDestroyable(inst)) {\n this.destructors.push(inst);\n }\n return inst;\n }\n\n public destroy(): this {\n this.destructors.forEach((i) => i.destroy());\n return this;\n }\n}\n"],"names":["__publicField","transport"],"mappings":";;AAMO,SAAS,GAAM,KAAU,EAAA;AAC9B,EAAO,OAAA,IAAI,OAAU,KAAK,CAAA;AAC5B;AAEO,MAAM,MAAoC,CAAA;AAAA,EACxC,YAAoB,KAAU,EAAA;AAAV,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAAA;AAAW,EAE/B,GAAG,SAAmC,EAAA;AAC3C,IAAU,SAAA,CAAA,GAAA,CAAI,KAAK,KAAK,CAAA;AACxB,IAAO,OAAA,IAAA;AAAA;AAEX;;ACVa,MAAA,QAAA,GAAW,CACtB,KAC0C,KAAA;AAC1C,EAAO,OAAA,KAAA,KAAU,UAAa,KAAU,KAAA,IAAA;AAC1C;AAKO,SAAS,UAAa,CAA4B,EAAA;AACvD,EACE,OAAA,CAAA,KAAM,QACN,OAAO,CAAA,KAAM,YACb,IAAQ,IAAA,CAAA,IACR,OAAQ,CAAA,CAAU,EAAO,KAAA,UAAA;AAE7B;AAKO,SAAS,cAAiB,CAAgC,EAAA;AAC/D,EACE,OAAA,CAAA,KAAM,QACN,OAAO,CAAA,KAAM,YACb,SAAa,IAAA,CAAA,IACb,OAAQ,CAAA,CAAU,OAAY,KAAA,UAAA;AAElC;AAKO,SAAS,YAAe,CAA8B,EAAA;AAC3D,EACE,OAAA,CAAA,KAAM,QACN,OAAO,CAAA,KAAM,YACb,WAAe,IAAA,CAAA,IACf,OAAQ,CAAA,CAAU,OAAY,KAAA,UAAA;AAElC;AAKO,SAAS,YAAe,CAA8B,EAAA;AAC3D,EACE,OAAA,CAAA,KAAM,QACN,OAAO,CAAA,KAAM,YACb,KAAS,IAAA,CAAA,IACT,OAAQ,CAAA,CAAU,GAAQ,KAAA,UAAA;AAE9B;;AClDO,SAAS,cAAiB,OAA0C,EAAA;AACzE,EAAA,OAAO,SAAU,CAAA,OAAO,CAAI,GAAA,OAAA,GAAU,GAAG,OAAO,CAAA;AAClD;;ACJO,SAAS,YAAe,IAAS,EAAA;AACtC,EAAO,OAAA,IAAI,gBAAgB,IAAI,CAAA;AACjC;AAEO,MAAM,eAA8C,CAAA;AAAA,EAClD,YAAoB,IAAS,EAAA;AAAT,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAAA;AAAU,EAE9B,OAAgB,GAAA;AACrB,IAAI,IAAA,aAAA,CAAc,IAAK,CAAA,IAAI,CAAG,EAAA;AAC5B,MAAA,IAAA,CAAK,KAAK,OAAQ,EAAA;AAAA;AAEpB,IAAO,OAAA,IAAA;AAAA;AAEX;;;;;ACbO,SAAS,gBAAmB,GAAA;AACjC,EAAA,OAAO,IAAI,oBAAqB,EAAA;AAClC;AAEO,MAAM,oBAAgD,CAAA;AAAA,EAAtD,WAAA,GAAA;AACL,IAAAA,eAAA,CAAA,IAAA,EAAQ,eAAiC,EAAC,CAAA;AAAA;AAAA,EAEnC,IAAO,CAAS,EAAA;AACrB,IAAI,IAAA,aAAA,CAAc,CAAC,CAAG,EAAA;AACpB,MAAK,IAAA,CAAA,WAAA,CAAY,KAAK,CAAC,CAAA;AAAA;AAEzB,IAAO,OAAA,CAAA;AAAA;AACT,EAEO,OAAU,GAAA;AACf,IAAA,IAAA,CAAK,YAAY,OAAQ,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,SAAS,CAAA;AAC3C,IAAA,IAAA,CAAK,YAAY,MAAS,GAAA,CAAA;AAC1B,IAAO,OAAA,IAAA;AAAA;AAEX;;ACxBgB,SAAA,cAAA,CAAe,GAAY,KAAe,EAAA;AACxD,EAAI,IAAA,OAAO,MAAM,UAAY,EAAA;AAC3B,IAAA,MAAM,IAAI,KAAA,CAAM,CAAG,EAAA,KAAK,CAAmB,iBAAA,CAAA,CAAA;AAAA;AAE/C;AAEgB,SAAA,aAAA,CAAc,GAAY,KAAe,EAAA;AACvD,EAAI,IAAA,CAAC,SAAU,CAAA,CAAC,CAAG,EAAA;AACjB,IAAA,MAAM,IAAI,KAAA,CAAM,CAAG,EAAA,KAAK,CAAkB,gBAAA,CAAA,CAAA;AAAA;AAE9C;AAEgB,SAAA,eAAA,CAAgB,GAAY,KAAe,EAAA;AACzD,EAAI,IAAA,CAAC,WAAY,CAAA,CAAC,CAAG,EAAA;AACnB,IAAA,MAAM,IAAI,KAAA,CAAM,CAAG,EAAA,KAAK,CAAoB,kBAAA,CAAA,CAAA;AAAA;AAEhD;;ACLO,SAAS,UAAa,iBAAyC,EAAA;AACpE,EAAO,OAAA,IAAI,cAAiB,iBAAiB,CAAA;AAC/C;AAEO,MAAM,aAA6C,CAAA;AAAA,EACjD,YAAoB,QAAgC,EAAA;AAAhC,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AACzB,IAAA,cAAA,CAAe,UAAU,+BAA+B,CAAA;AAAA;AAC1D,EAEO,IAAI,KAAU,EAAA;AACnB,IAAA,IAAA,CAAK,SAAS,KAAK,CAAA;AACnB,IAAO,OAAA,IAAA;AAAA;AAEX;AAWO,SAAS,iBACd,QACA,EAAA;AACA,EAAO,OAAA,IAAI,qBAA4B,QAAQ,CAAA;AACjD;AAEO,MAAM,oBAEb,CAAA;AAAA,EACS,YAAoB,QAA2C,EAAA;AAA3C,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AACzB,IAAA,cAAA,CAAe,UAAU,sCAAsC,CAAA;AAAA;AACjE,EAEO,IAAI,KAAU,EAAA;AACnB,IAAO,OAAA,IAAA,CAAK,SAAS,KAAK,CAAA;AAAA;AAE9B;AAOgB,SAAA,eAAA,CACd,aACG,IACH,EAAA;AACA,EAAO,OAAA,IAAI,mBAAuB,CAAA,QAAA,EAAU,IAAI,CAAA;AAClD;AAEO,MAAM,mBAAmD,CAAA;AAAA,EACvD,WACG,CAAA,QAAA,EACA,IAAc,GAAA,IACd,MACR,EAAA;AAHQ,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AACA,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AACA,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAER,IAAA,cAAA,CAAe,UAAU,2BAA2B,CAAA;AAAA;AACtD,EAEO,IAAI,KAAgB,EAAA;AACzB,IAAI,IAAA,IAAA,CAAK,WAAW,MAAW,EAAA;AAC7B,MAAM,MAAA,IAAI,MAAM,mBAAmB,CAAA;AAAA;AAErC,IAAA,IAAA,CAAK,SAAS,IAAK,CAAA,IAAA,CAAK,QAAQ,KAAO,EAAA,GAAG,KAAK,IAAI,CAAA;AACnD,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,KAAA,CAAM,cAA6B,IAAa,EAAA;AACrD,IAAA,OAAO,IAAI,mBAAA;AAAA,MACT,IAAK,CAAA,QAAA;AAAA,MACL,CAAC,GAAG,IAAK,CAAA,IAAA,EAAM,GAAG,IAAI,CAAA;AAAA,MACtB;AAAA,KACF;AAAA;AAEJ;;;;;ACjFO,SAAS,MAAS,KAAwB,EAAA;AAC/C,EAAA,OAAO,IAAI,SAAA,CAAa,aAAc,CAAA,KAAK,CAAC,CAAA;AAC9C;AAEO,MAAM,SAAwD,CAAA;AAAA,EAG5D,YAAoB,KAAuB,EAAA;AAAvB,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAF3B,IAAAA,eAAA,CAAA,IAAA,EAAQ,WAAY,EAAA,KAAA,CAAA;AAWpB,IAAAA,eAAA,CAAA,IAAA,EAAQ,WAAY,EAAA,eAAA,CAAgB,SAAU,CAAA,EAAM,KAAqB,EAAA;AACvE,MAAI,IAAA,CAAC,MAAM,SAAW,EAAA;AACpB,QAAA,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA;AACZ,OACC,IAAI,CAAA,CAAA;AAZL,IAAA,aAAA,CAAc,OAAO,cAAc,CAAA;AAAA;AACrC,EAEO,GAAG,SAAmC,EAAA;AAC3C,IAAA,IAAA,CAAK,MAAM,EAAG,CAAA,IAAA,CAAK,SAAU,CAAA,KAAA,CAAM,SAAS,CAAC,CAAA;AAC7C,IAAO,OAAA,IAAA;AAAA;AACT,EAQO,OAAgB,GAAA;AACrB,IAAA,IAAA,CAAK,SAAY,GAAA,IAAA;AACjB,IAAO,OAAA,IAAA;AAAA;AAEX;;;;;ACvBO,SAAS,QAAW,QAAkC,EAAA;AAC3D,EAAO,OAAA,IAAI,YAAe,QAAQ,CAAA;AACpC;AAEO,MAAM,WAA0D,CAAA;AAAA,EAG9D,YAAoB,QAAkC,EAAA;AAAlC,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AAF3B,IAAQA,eAAA,CAAA,IAAA,EAAA,cAAA,CAAA;AAGN,IAAA,cAAA,CAAe,UAAU,mBAAmB,CAAA;AAAA;AAC9C,EAEO,GAAG,SAA6B,EAAA;AACrC,IAAK,IAAA,CAAA,YAAA,GAAe,IAAK,CAAA,QAAA,CAAS,SAAS,CAAA;AAC3C,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,OAAU,GAAA;AACf,IAAI,IAAA,OAAO,IAAK,CAAA,YAAA,KAAiB,UAAY,EAAA;AAC3C,MAAA,IAAA,CAAK,YAAe,IAAA;AAAA;AAEtB,IAAO,OAAA,IAAA;AAAA;AAEX;;AC5BO,SAAS,IAAO,SAAmC,EAAA;AACxD,EAAO,OAAA,OAAA,CAAW,CAAC,SAAc,KAAA;AAC/B,IAAU,SAAA,CAAA,GAAA,CAAI,WAAW,CAAA;AAAA,GAC1B,CAAA;AACH;;ACHO,SAAS,kBAAkB,IAAsB,EAAA;AACtD,EAAO,OAAA,IAAI,sBAAsB,IAAI,CAAA;AACvC;AAEO,MAAM,qBAAsB,CAAA;AAAA,EAC1B,YAAoB,IAAsB,EAAA;AAAtB,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAAA;AAAuB,EAE3C,KAAK,CAAgB,EAAA;AAC1B,IAAI,IAAA,IAAA,CAAK,SAAS,MAAW,EAAA;AAC3B,MAAE,CAAA,CAAA,EAAA,CAAG,KAAK,IAAI,CAAA;AAAA;AAEhB,IAAO,OAAA,IAAA;AAAA;AAEX;;ACfO,SAAS,IAAO,GAAA;AACrB,EAAA,OAAO,IAAI,QAAS,EAAA;AACtB;AAEO,MAAM,QAAkC,CAAA;AAAA,EACtC,GAAY,GAAA;AACjB,IAAO,OAAA,IAAA;AAAA;AAEX;;;;;ACFA,MAAM,WAAA,GAAc,CAAC,UAAA,EAAyB,SAA2B,KAAA;AACvE,EAAA,OAAO,UAAW,CAAA,IAAA,GAAO,CAAK,IAAA,UAAA,CAAW,SAAS,SAAU,CAAA,IAAA;AAC9D,CAAA;AAWO,SAAS,OAAuC,QAAa,EAAA;AAClE,EAAO,OAAA,IAAI,OAAW,CAAA,GAAG,QAAQ,CAAA;AACnC;AAEO,MAAM,OAEb,CAAA;AAAA,EAMS,eAAe,QAAa,EAAA;AALnC,IAAQA,eAAA,CAAA,IAAA,EAAA,OAAA,CAAA;AACR,IAAQA,eAAA,CAAA,IAAA,EAAA,QAAA,sBAAa,GAAY,EAAA,CAAA;AACjC,IAAQA,eAAA,CAAA,IAAA,EAAA,WAAA,CAAA;AACR,IAAAA,eAAA,CAAA,IAAA,EAAQ,UAAoB,EAAC,CAAA;AAkB7B,IAAAA,eAAA,CAAA,IAAA,EAAQ,WAAY,EAAA,eAAA,CAAgB,SAClC,CAAA,EACA,OACA,GACA,EAAA;AACA,MAAM,KAAA,CAAA,MAAA,CAAO,IAAI,GAAG,CAAA;AACpB,MAAA,KAAA,CAAM,MAAO,CAAA,QAAA,CAAS,GAAG,CAAC,CAAI,GAAA,CAAA;AAC9B,MAAA,IAAI,WAAY,CAAA,KAAA,CAAM,MAAQ,EAAA,KAAA,CAAM,KAAK,CAAG,EAAA;AAC1C,QAAK,IAAA,CAAA,GAAA,CAAI,MAAM,MAAmC,CAAA;AAAA;AACpD,OACC,IAAI,CAAA,CAAA;AAzBL,IAAA,IAAA,CAAK,QAAQ,IAAI,GAAA,CAAY,MAAO,CAAA,IAAA,CAAK,QAAQ,CAAC,CAAA;AAClD,IAAK,IAAA,CAAA,SAAA,GAAY,QAAS,CAAA,GAAA,CAAI,aAAa,CAAA;AAAA;AAC7C,EAEO,GAAG,SAA2D,EAAA;AACnE,IAAO,MAAA,CAAA,OAAA,CAAQ,KAAK,SAAS,CAAA,CAAE,QAAQ,CAAC,CAAC,GAAK,EAAA,OAAO,CAAM,KAAA;AACzD,MAAA,aAAA,CAAc,SAAS,WAAW,CAAA;AAClC,MAAA,OAAA,CAAQ,GAAG,IAAK,CAAA,SAAA,CAAU,KAAM,CAAA,SAAA,EAAW,GAAG,CAAC,CAAA;AAAA,KAChD,CAAA;AACD,IAAI,IAAA,IAAA,CAAK,KAAM,CAAA,IAAA,KAAS,CAAG,EAAA;AACzB,MAAU,SAAA,CAAA,GAAA,CAAI,EAA+B,CAAA;AAAA;AAE/C,IAAO,OAAA,IAAA;AAAA;AAcX;;;;;ACvDO,SAAS,OAAgB,QAA6B,EAAA;AAC3D,EAAA,OAAO,IAAI,OAAW,CAAA,GAAG,QAAS,CAAA,GAAA,CAAI,aAAa,CAAC,CAAA;AACtD;AAEO,MAAM,OAAqC,CAAA;AAAA,EAGzC,eAAe,QAA4B,EAAA;AAFlD,IAAQA,eAAA,CAAA,IAAA,EAAA,WAAA,CAAA;AAGN,IAAA,IAAA,CAAK,SAAY,GAAA,QAAA;AAAA;AACnB,EAEO,GAAG,SAAmC,EAAA;AAC3C,IAAK,IAAA,CAAA,SAAA,CAAU,OAAQ,CAAA,CAAC,OAAY,KAAA;AAClC,MAAA,aAAA,CAAc,SAAS,WAAW,CAAA;AAClC,MAAA,OAAA,CAAQ,GAAG,SAAS,CAAA;AAAA,KACrB,CAAA;AACD,IAAO,OAAA,IAAA;AAAA;AAEX;;;;;AChBgB,SAAA,OAAA,CACd,OACA,OACA,EAAA;AACA,EAAA,OAAO,IAAI,WAAA,CAAkB,aAAc,CAAA,KAAK,GAAG,OAAO,CAAA;AAC5D;AAEO,MAAM,WAA4C,CAAA;AAAA,EAChD,WAAA,CACG,OACA,OACR,EAAA;AAFQ,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAUV,IAAAA,eAAA,CAAA,IAAA,EAAQ,WAAY,EAAA,eAAA,CAAgB,SAClC,CAAA,EACA,KACA,EAAA;AACA,MAAA,IAAA,CAAK,GAAI,CAAA,KAAA,CAAM,OAAQ,CAAA,CAAC,CAAC,CAAA;AAAA,OACxB,IAAI,CAAA,CAAA;AAbL,IAAA,aAAA,CAAc,OAAO,eAAe,CAAA;AAAA;AACtC,EAEO,GAAG,SAA6B,EAAA;AACrC,IAAA,IAAA,CAAK,MAAM,EAAG,CAAA,IAAA,CAAK,SAAU,CAAA,KAAA,CAAM,SAAS,CAAC,CAAA;AAC7C,IAAO,OAAA,IAAA;AAAA;AASX;;AC7BgB,SAAA,mBAAA,CACd,OACA,OACA,EAAA;AACA,EAAO,OAAA,OAAA,CAAQ,KAAO,EAAA,CAAC,IAAS,KAAA;AAC9B,IAAO,OAAA,OAAA,CAAQ,GAAG,IAAI,CAAA;AAAA,GACvB,CAAA;AACH;;ACJgB,SAAA,KAAA,CACd,KACA,EAAA,YAAA,EACA,aACA,EAAA;AACA,EAAA,OAAO,IAAI,SAAA,CAAa,KAAO,EAAA,YAAA,EAAc,aAAa,CAAA;AAC5D;AAEO,MAAM,SAAuC,CAAA;AAAA,EAC3C,WAAA,CACG,KACA,EAAA,YAAA,EACA,aACR,EAAA;AAHQ,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AACA,IAAA,IAAA,CAAA,YAAA,GAAA,YAAA;AACA,IAAA,IAAA,CAAA,aAAA,GAAA,aAAA;AAER,IAAA,aAAA,CAAc,OAAO,aAAa,CAAA;AAClC,IAAA,eAAA,CAAgB,cAAc,qBAAqB,CAAA;AACnD,IAAA,IAAI,kBAAkB,MAAW,EAAA;AAC/B,MAAA,eAAA,CAAgB,eAAe,sBAAsB,CAAA;AAAA;AACvD;AACF,EAEO,GAAG,SAA6B,EAAA;AACrC,IAAI,IAAA;AACF,MAAK,IAAA,CAAA,KAAA,CAAM,GAAG,SAAS,CAAA;AAAA,aAChB,CAAY,EAAA;AACnB,MAAA,IAAI,aAAa,KAAO,EAAA;AACtB,QAAK,IAAA,CAAA,YAAA,CAAa,GAAI,CAAA,CAAA,CAAE,OAAO,CAAA;AAAA,OAC1B,MAAA;AACL,QAAA,IAAA,CAAK,YAAa,CAAA,GAAA,CAAI,MAAO,CAAA,CAAC,CAAC,CAAA;AAAA;AAEjC,MAAA,IAAI,KAAK,aAAe,EAAA;AACtB,QAAK,IAAA,CAAA,aAAA,CAAc,IAAI,CAAC,CAAA;AAAA;AAC1B;AAEF,IAAO,OAAA,IAAA;AAAA;AAEX;;;;;AC9BO,SAAS,SAA2C,QAAa,EAAA;AACtE,EAAO,OAAA,IAAI,SAAa,CAAA,GAAG,QAAQ,CAAA;AACrC;AAEO,MAAM,SAEb,CAAA;AAAA,EAIS,eAAe,QAAa,EAAA;AAHnC,IAAQA,eAAA,CAAA,IAAA,EAAA,WAAA,CAAA;AACR,IAAQA,eAAA,CAAA,IAAA,EAAA,SAAA,CAAA;AAWR,IAAQA,eAAA,CAAA,IAAA,EAAA,eAAA,EAAgB,CAAC,KAAA,EAAe,SAA6B,KAAA;AACnE,MAAM,MAAA,OAAA,GAAU,IAAK,CAAA,SAAA,CAAU,KAAK,CAAA;AACpC,MAAA,MAAM,IAAO,GAAA,IAAA,CAAK,SAAU,CAAA,KAAA,GAAQ,CAAC,CAAA;AACrC,MAAA,OAAA,CAAQ,GAAG,IAAK,CAAA,mBAAA,CAAoB,MAAM,SAAW,EAAA,IAAA,EAAM,KAAK,CAAC,CAAA;AAAA,KACnE,CAAA;AAEA,IAAAA,eAAA,CAAA,IAAA,EAAQ,uBAAsB,eAAgB,CAAA,SAC5C,CACA,EAAA,KAAA,EACA,MACA,KACA,EAAA;AACA,MAAA,IAAI,CAAC,IAAM,EAAA;AACT,QAAA,KAAA,CAAM,OAAU,GAAA,CAAA;AAAA;AAElB,MAAA,IAAI,MAAM,OAAS,EAAA;AACjB,QAAK,IAAA,CAAA,GAAA,CAAI,MAAM,OAAO,CAAA;AAAA;AAExB,MAAI,IAAA,IAAA,IAAQ,CAAC,KAAA,CAAM,OAAS,EAAA;AAC1B,QAAM,KAAA,CAAA,aAAA,CAAc,KAAQ,GAAA,CAAA,EAAG,IAAI,CAAA;AAAA;AACrC,OACC,IAAI,CAAA,CAAA;AA7BL,IAAA,IAAA,CAAK,SAAY,GAAA,QAAA;AAAA;AACnB,EAEO,GAAG,SAAqD,EAAA;AAC7D,IAAK,IAAA,CAAA,aAAA,CAAc,GAAG,SAAS,CAAA;AAC/B,IAAO,OAAA,IAAA;AAAA;AAyBX;;AC5CgB,SAAA,eAAA,CACd,OACA,OACA,EAAA;AACA,EAAO,OAAA,IAAI,mBAAuB,CAAA,KAAA,EAAO,OAAO,CAAA;AAClD;AAEO,MAAM,mBAAiD,CAAA;AAAA,EACrD,WAAA,CACG,OACA,OACR,EAAA;AAFQ,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAER,IAAA,aAAA,CAAc,OAAO,uBAAuB,CAAA;AAAA;AAC9C,EAEO,GAAG,SAA6B,EAAA;AACrC,IAAA,MAAM,+BAA+B,IAAK,CAAA,OAAA;AAAA,MACxC,SAAA,CAAU,GAAI,CAAA,IAAA,CAAK,SAAS;AAAA,KAC9B;AACA,IAAA,IAAA,CAAK,KAAM,CAAA,EAAA,CAAG,SAAU,CAAA,4BAA4B,CAAC,CAAA;AACrD,IAAO,OAAA,IAAA;AAAA;AAEX;;;;;AC1BgB,SAAA,QAAA,CACd,KACA,EAAA,SAAA,EACA,YACgB,EAAA;AAChB,EAAA,OAAO,IAAI,YAAgB,CAAA,aAAA,CAAc,KAAK,CAAA,EAAG,WAAW,YAAY,CAAA;AAC1E;AAEO,MAAM,YAA0C,CAAA;AAAA,EAC9C,WAAA,CACG,KACA,EAAA,SAAA,EACA,YACR,EAAA;AAHQ,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AACA,IAAA,IAAA,CAAA,SAAA,GAAA,SAAA;AACA,IAAA,IAAA,CAAA,YAAA,GAAA,YAAA;AAQV,IAAAA,eAAA,CAAA,IAAA,EAAQ,QAAS,EAAA,eAAA,CAAmB,SAAU,CAAA,EAAG,KAAwB,EAAA;AACvE,MAAI,IAAA,KAAA,CAAM,SAAU,CAAA,CAAC,CAAG,EAAA;AACtB,QAAA,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,OACZ,MAAA,IAAW,KAAM,CAAA,YAAA,KAAiB,MAAW,EAAA;AAC3C,QAAK,IAAA,CAAA,GAAA,CAAI,MAAM,YAAY,CAAA;AAAA;AAC7B,OACC,IAAI,CAAA,CAAA;AAAA;AAbJ,EAEI,GAAG,SAA6B,EAAA;AACrC,IAAA,IAAA,CAAK,MAAM,EAAG,CAAA,IAAA,CAAK,MAAO,CAAA,KAAA,CAAM,SAAS,CAAC,CAAA;AAC1C,IAAO,OAAA,IAAA;AAAA;AAUX;;;;;ACxBO,SAAS,SACd,CAAA,QAAA,EACA,UACA,EAAA,gBAAA,EACA,kBACA,EAAA;AACA,EAAA,OAAO,IAAI,aAAA;AAAA,IACT,cAAc,QAAQ,CAAA;AAAA,IACtB,cAAc,UAAU,CAAA;AAAA,IACxB,cAAc,gBAAgB,CAAA;AAAA,IAC9B,cAAc,kBAAkB;AAAA,GAClC;AACF;AAEO,MAAM,aAA4D,CAAA;AAAA,EAQhE,WACG,CAAA,QAAA,EACA,UACA,EAAA,gBAAA,EACA,kBACR,EAAA;AAJQ,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AACA,IAAA,IAAA,CAAA,UAAA,GAAA,UAAA;AACA,IAAA,IAAA,CAAA,gBAAA,GAAA,gBAAA;AACA,IAAA,IAAA,CAAA,kBAAA,GAAA,kBAAA;AAXV,IAAAA,eAAA,CAAA,IAAA,EAAQ,eAAyC,EAAA,IAAA,CAAA;AACjD,IAAQA,eAAA,CAAA,IAAA,EAAA,SAAA,EAAU,CAAC,CAAS,KAAA;AAC1B,MAAA,IAAI,KAAK,aAAe,EAAA;AACtB,QAAK,IAAA,CAAA,aAAA,CAAc,IAAI,CAAC,CAAA;AAAA;AAC1B,KACF,CAAA;AAgBA,IAAQA,eAAA,CAAA,IAAA,EAAA,QAAA,EAAS,gBAAuC,SACtD,CAAC,SAAS,SAAW,EAAA,SAAS,GAC9B,KACA,EAAA;AACA,MAAA,KAAA,CAAM,aAAgB,GAAA,IAAA;AACtB,MAAI,IAAA,CAAC,OAAU,GAAA,SAAS,CAAG,EAAA;AACzB,QAAA;AAAA;AAEF,MAAA,OAAA,CAAQ,SAAS,CAAA,CAAE,SAAW,EAAA,KAAA,CAAM,OAAO,CAAA;AAAA,OAC1C,IAAI,CAAA,CAAA;AAAA;AAlBJ,EAEI,GAAG,SAAmC,EAAA;AAC3C,IAAA,GAAA,CAAI,KAAK,QAAU,EAAA,IAAA,CAAK,UAAY,EAAA,IAAA,CAAK,gBAAgB,CAAE,CAAA,EAAA;AAAA,MACzD,IAAA,CAAK,MAAO,CAAA,KAAA,CAAM,SAAS;AAAA,KAC7B;AACA,IAAO,OAAA,IAAA;AAAA;AACT,EAaO,OAAgB,GAAA;AACrB,IAAA,IAAA,CAAK,aAAgB,GAAA,IAAA;AACrB,IAAI,IAAA,CAAC,KAAK,kBAAoB,EAAA;AAC5B,MAAO,OAAA,IAAA;AAAA;AAET,IAAA,GAAA,CAAI,KAAK,QAAU,EAAA,IAAA,CAAK,UAAY,EAAA,IAAA,CAAK,kBAAkB,CAAE,CAAA,EAAA;AAAA,MAC3D,UAAU,CAAC,CAAC,OAAS,EAAA,SAAA,EAAW,WAAW,CAAM,KAAA;AAC/C,QAAA,OAAA,GAAU,WAAW,CAAA,GAAI,SAAW,EAAA,IAAA,CAAK,OAAO,CAAA;AAAA,OACjD;AAAA,KACH;AACA,IAAO,OAAA,IAAA;AAAA;AAEX;;AChEgB,SAAA,WAAA,CAAe,GAAe,KAAuB,EAAA;AACnE,EAAO,OAAA,IAAI,eAAmB,CAAA,CAAA,EAAG,KAAK,CAAA;AACxC;AAEO,MAAM,eAA6C,CAAA;AAAA,EACjD,WAAA,CACG,GACA,KACR,EAAA;AAFQ,IAAA,IAAA,CAAA,CAAA,GAAA,CAAA;AACA,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAAA;AACP,EAEI,GAAG,SAAmC,EAAA;AAC3C,IAAK,IAAA,CAAA,CAAA,CACF,IAAK,CAAA,CAAC,CAAM,KAAA;AACX,MAAA,SAAA,CAAU,IAAI,CAAC,CAAA;AAAA,KAChB,CAAA,CACA,KAAM,CAAA,CAAC,CAAM,KAAA;AACZ,MAAK,IAAA,CAAA,KAAA,EAAO,IAAI,CAAC,CAAA;AAAA,KAClB,CAAA;AACH,IAAO,OAAA,IAAA;AAAA;AAEX;;;;;AClBO,SAAS,KAAQ,CAAO,EAAA;AAC7B,EAAO,OAAA,IAAI,SAAY,CAAC,CAAA;AAC1B;AAEO,MAAM,QAAqC,CAAA;AAAA,EAQzC,YAAoB,CAAO,EAAA;AAAP,IAAA,IAAA,CAAA,CAAA,GAAA,CAAA;AAP3B,IAAAA,eAAA,CAAA,IAAA,EAAQ,eAAyC,EAAA,IAAA,CAAA;AACjD,IAAQA,eAAA,CAAA,IAAA,EAAA,QAAA,EAAS,CAAC,CAAU,KAAA;AAC1B,MAAA,IAAI,QAAS,CAAA,CAAC,CAAK,IAAA,IAAA,CAAK,aAAe,EAAA;AACrC,QAAK,IAAA,CAAA,aAAA,CAAc,IAAI,CAAC,CAAA;AAAA;AAC1B,KACF,CAAA;AAAA;AAEmC,EAE5B,GAAG,SAAmC,EAAA;AAC3C,IAAA,IAAI,KAAK,aAAe,EAAA;AACtB,MAAA,MAAM,IAAI,KAAA;AAAA,QACR;AAAA,OACF;AAAA;AAEF,IAAA,IAAA,CAAK,aAAgB,GAAA,SAAA;AACrB,IAAK,IAAA,CAAA,MAAA,CAAO,KAAK,CAAC,CAAA;AAClB,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,IAAI,KAAgB,EAAA;AACzB,IAAA,IAAA,CAAK,OAAO,KAAK,CAAA;AACjB,IAAO,OAAA,IAAA;AAAA;AAEX;;;;;AC9BO,SAAS,KAAQ,KAAuB,EAAA;AAC7C,EAAO,OAAA,IAAI,SAAY,KAAK,CAAA;AAC9B;AAEO,MAAM,QAAsC,CAAA;AAAA,EAG1C,YAAoB,KAAuB,EAAA;AAAvB,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAF3B,IAAAA,eAAA,CAAA,IAAA,EAAQ,UAAW,EAAA,KAAA,CAAA;AASnB,IAAAA,eAAA,CAAA,IAAA,EAAQ,QAAS,EAAA,eAAA,CAAmB,SAAU,CAAA,EAAG,KAAO,EAAA;AACtD,MAAI,IAAA,CAAC,MAAM,QAAU,EAAA;AACnB,QAAA,KAAA,CAAM,QAAW,GAAA,IAAA;AACjB,QAAA,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA;AACZ,OACC,IAAI,CAAA,CAAA;AAAA;AAZ4C,EAE5C,GAAG,SAAmC,EAAA;AAC3C,IAAA,IAAA,CAAK,MAAM,EAAG,CAAA,IAAA,CAAK,MAAO,CAAA,KAAA,CAAM,SAAS,CAAC,CAAA;AAC1C,IAAO,OAAA,IAAA;AAAA;AASX;;;;;ACpBO,MAAM,aAAiB,CAAA;AAAA,EAIrB,WAAc,GAAA;AAHrB,IAAQA,eAAA,CAAA,IAAA,EAAA,YAAA,CAAA;AACR,IAAQA,eAAA,CAAA,IAAA,EAAA,gBAAA,CAAA;AAGN,IAAK,IAAA,CAAA,UAAA,uBAAiB,GAAsB,EAAA;AAC5C,IAAK,IAAA,CAAA,cAAA,GAAiB,SAAU,CAAA,CAAC,CAAM,KAAA;AACrC,MAAK,IAAA,CAAA,UAAA,CAAW,OAAQ,CAAA,CAAC,SAAc,KAAA;AACrC,QAAA,IAAI,WAAY,CAAA,SAAS,CAAK,IAAA,SAAA,CAAU,WAAa,EAAA;AACnD,UAAK,IAAA,CAAA,UAAA,CAAW,OAAO,SAAS,CAAA;AAChC,UAAA;AAAA;AAEF,QAAA,SAAA,CAAU,IAAI,CAAC,CAAA;AAAA,OAChB,CAAA;AAAA,KACF,CAAA;AAAA;AACH,EAEO,SAAY,GAAA;AACjB,IAAA,OAAO,IAAK,CAAA,cAAA;AAAA;AACd,EAEO,IAAe,GAAA;AACpB,IAAA,OAAO,KAAK,UAAW,CAAA,IAAA;AAAA;AACzB,EAEO,IAAI,KAAkC,EAAA;AAC3C,IAAO,OAAA,IAAA,CAAK,UAAW,CAAA,GAAA,CAAI,KAAK,CAAA;AAAA;AAClC,EAEO,IAAI,KAAyB,EAAA;AAClC,IAAK,IAAA,CAAA,UAAA,CAAW,IAAI,KAAK,CAAA;AACzB,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,OAAO,CAAqB,EAAA;AACjC,IAAK,IAAA,CAAA,UAAA,CAAW,OAAO,CAAC,CAAA;AACxB,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,OAAU,GAAA;AACf,IAAK,IAAA,CAAA,UAAA,CAAW,OAAQ,CAAA,CAAC,CAAM,KAAA;AAC7B,MAAA,IAAA,CAAK,OAAO,CAAC,CAAA;AAAA,KACd,CAAA;AACD,IAAO,OAAA,IAAA;AAAA;AAEX;;;;;ACzCgB,SAAA,MAAA,CAAU,KAAuB,EAAA,SAAA,GAAY,KAAO,EAAA;AAClE,EAAO,OAAA,IAAI,UAAc,CAAA,KAAA,EAAO,SAAS,CAAA;AAC3C;AAEO,MAAM,UAAuC,CAAA;AAAA,EAK3C,WAAA,CACG,KACA,EAAA,SAAA,GAAY,KACpB,EAAA;AAFQ,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AACA,IAAA,IAAA,CAAA,SAAA,GAAA,SAAA;AANV,IAAQA,eAAA,CAAA,IAAA,EAAA,eAAA,EAAgB,IAAI,aAAiB,EAAA,CAAA;AAC7C,IAAQA,eAAA,CAAA,IAAA,EAAA,WAAA,CAAA;AACR,IAAAA,eAAA,CAAA,IAAA,EAAQ,SAAQ,IAAK,EAAA,CAAA;AAiCrB,IAAQA,eAAA,CAAA,IAAA,EAAA,oBAAA,EAAqB,SAAa,CAAA,CAAC,CAAS,KAAA;AAClD,MAAA,IAAA,CAAK,SAAY,GAAA,CAAA;AACjB,MAAA,IAAA,CAAK,aAAc,CAAA,SAAA,EAAY,CAAA,GAAA,CAAI,CAAC,CAAA;AAAA,KACrC,CAAA,CAAA;AA9BC,IAAK,IAAA,CAAA,IAAA,CAAK,KAAK,CAAE,CAAA,EAAA;AAAA,MACf,UAAU,MAAM;AACd,QAAK,IAAA,CAAA,KAAA,CAAM,EAAG,CAAA,IAAA,CAAK,kBAAkB,CAAA;AAAA,OACtC;AAAA,KACH;AAAA;AACF,EAEO,GAAG,SAA6B,EAAA;AACrC,IAAK,IAAA,CAAA,KAAA,CAAM,IAAI,CAAC,CAAA;AAChB,IAAA,IACE,CAAC,IAAA,CAAK,SACN,IAAA,QAAA,CAAS,IAAK,CAAA,SAAS,CACvB,IAAA,CAAC,IAAK,CAAA,aAAA,CAAc,GAAI,CAAA,SAAS,CACjC,EAAA;AACA,MAAU,SAAA,CAAA,GAAA,CAAI,KAAK,SAAS,CAAA;AAAA;AAE9B,IAAK,IAAA,CAAA,aAAA,CAAc,IAAI,SAAS,CAAA;AAChC,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,IAAI,KAAU,EAAA;AACnB,IAAK,IAAA,CAAA,KAAA,CAAM,IAAI,CAAC,CAAA;AAChB,IAAA,IAAA,CAAK,SAAY,GAAA,KAAA;AACjB,IAAA,IAAA,CAAK,aAAc,CAAA,SAAA,EAAY,CAAA,GAAA,CAAI,KAAK,CAAA;AACxC,IAAO,OAAA,IAAA;AAAA;AACT,EAOO,OAAU,GAAA;AACf,IAAK,IAAA,CAAA,KAAA,CAAM,IAAI,CAAC,CAAA;AAAA;AAClB,EAEO,IAAO,GAAA;AACZ,IAAA,OAAO,IAAK,CAAA,aAAA;AAAA;AACd,EAEO,OAAU,GAAA;AACf,IAAO,OAAA,IAAA,CAAK,cAAc,OAAQ,EAAA;AAAA;AAEtC;;;;;AC7DgB,SAAA,YAAA,CAAgB,KAAsB,EAAA,SAAA,GAAY,KAAO,EAAA;AACvE,EAAO,OAAA,IAAI,gBAAoB,CAAA,KAAA,EAAO,SAAS,CAAA;AACjD;AAEO,MAAM,gBAA6C,CAAA;AAAA,EAGjD,WAAA,CACG,KACR,EAAA,SAAA,GAAY,KACZ,EAAA;AAFQ,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAHV,IAAQA,eAAA,CAAA,IAAA,EAAA,aAAA,CAAA;AAMN,IAAA,IAAA,CAAK,WAAc,GAAA,MAAA,CAAO,IAAK,CAAA,KAAA,EAAO,SAAS,CAAA;AAAA;AACjD,EAEO,GAAG,SAA6B,EAAA;AACrC,IAAK,IAAA,CAAA,WAAA,CAAY,GAAG,SAAS,CAAA;AAC7B,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,IAAI,KAAU,EAAA;AACnB,IAAA,IAAA,CAAK,YAAY,OAAQ,EAAA;AACzB,IAAK,IAAA,CAAA,KAAA,CAAM,IAAI,KAAK,CAAA;AACpB,IAAO,OAAA,IAAA;AAAA;AAEX;;;;;ACtBgB,SAAA,SAAA,CAAa,KAAuB,EAAA,QAAA,GAAqB,IAAM,EAAA;AAC7E,EAAO,OAAA,IAAI,aAAiB,CAAA,KAAA,EAAO,QAAQ,CAAA;AAC7C;AAEO,MAAM,aAAiB,CAAA;AAAA,EAGrB,WAAA,CACG,KACA,EAAA,QAAA,GAAqB,IAC7B,EAAA;AAFQ,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AACA,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AAJV,IAAAA,eAAA,CAAA,IAAA,EAAQ,SAAU,EAAA,KAAA,CAAA;AAAA;AAKf,EAEK,aAAgB,GAAA;AACtB,IAAI,IAAA,CAAC,KAAK,OAAS,EAAA;AACjB,MAAA,IAAA,CAAK,KAAM,CAAA,EAAA;AAAA,QACT,SAAA,CAAU,CAAC,CAAM,KAAA;AACf,UAAA,IAAA,CAAK,QAAW,GAAA,CAAA;AAAA,SACjB;AAAA,OACH;AAAA;AAEF,IAAA,IAAA,CAAK,OAAU,GAAA,IAAA;AAAA;AACjB,EAEA,CAAQ,MAAO,CAAA,WAAW,CAAI,GAAA;AAC5B,IAAA,IAAA,CAAK,aAAc,EAAA;AACnB,IAAA,OAAO,IAAK,CAAA,QAAA;AAAA;AACd,EAEO,SAAY,GAAA;AACjB,IAAA,IAAA,CAAK,aAAc,EAAA;AACnB,IAAA,OAAO,IAAK,CAAA,QAAA;AAAA;AACd,EAEO,sBAAyB,GAAA;AAC9B,IAAA,IAAA,CAAK,aAAc,EAAA;AACnB,IAAI,IAAA,IAAA,CAAK,aAAa,IAAM,EAAA;AAC1B,MAAM,MAAA,IAAI,MAAM,yBAAyB,CAAA;AAAA;AAE3C,IAAA,OAAO,IAAK,CAAA,QAAA;AAAA;AAEhB;;;;;ACxCO,SAAS,WAAc,KAAW,EAAA;AACvC,EAAO,OAAA,IAAI,eAAkB,KAAK,CAAA;AACpC;AAEO,MAAM,cAA2C,CAAA;AAAA,EAI/C,YAAY,KAAW,EAAA;AAH9B,IAAQA,eAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AACR,IAAQA,eAAA,CAAA,IAAA,EAAA,WAAA,CAAA;AAGN,IAAA,IAAA,CAAK,IAAO,GAAA,YAAA,CAAa,IAAK,CAAA,KAAK,CAAC,CAAA;AACpC,IAAK,IAAA,CAAA,SAAA,GAAY,SAAU,CAAA,IAAA,EAAM,KAAK,CAAA;AAAA;AACxC,EAEO,GAAG,SAA6B,EAAA;AACrC,IAAK,IAAA,CAAA,IAAA,CAAK,GAAG,SAAS,CAAA;AACtB,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,IAAI,KAAU,EAAA;AACnB,IAAK,IAAA,CAAA,IAAA,CAAK,IAAI,KAAK,CAAA;AACnB,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,KAAQ,GAAA;AACb,IAAA,OAAO,IAAK,CAAA,SAAA;AAAA;AAEhB;;;;;ACxBgB,SAAA,GAAA,CACd,OACA,OACA,EAAA;AACA,EAAA,OAAO,IAAI,OAAA,CAAe,aAAc,CAAA,KAAK,GAAG,OAAO,CAAA;AACzD;AAEO,MAAM,OAA4C,CAAA;AAAA,EAChD,WAAA,CACG,OACA,OACR,EAAA;AAFQ,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAQV,IAAAA,eAAA,CAAA,IAAA,EAAQ,QAAS,EAAA,eAAA,CAAqB,SAAU,CAAA,EAAG,KAAO,EAAA;AACxD,MAAA,MAAM,QAA2B,EAAC;AAClC,MAAE,CAAA,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AACjB,QAAA,IAAI,IAA2B,GAAA,GAAA;AAC/B,QAAI,IAAA,CAAC,SAAU,CAAA,IAAc,CAAG,EAAA;AAC9B,UAAA,IAAA,GAAO,GAAG,IAAI,CAAA;AAAA;AAEhB,QAAA,MAAM,IAAO,GAAA,KAAA,CAAM,OAAQ,CAAA,GAAA,CAAI,IAAI,CAAA;AACnC,QAAA,KAAA,CAAM,KAAK,IAAI,CAAA;AAAA,OAChB,CAAA;AACD,MAAA,GAAA,CAAI,GAAG,KAAK,CAAE,CAAA,EAAA,CAAG,IAAI,CAAA;AAAA,OACpB,IAAI,CAAA,CAAA;AAAA;AAlBJ,EAEI,GAAG,SAAsC,EAAA;AAC9C,IAAA,IAAA,CAAK,MAAM,EAAG,CAAA,IAAA,CAAK,MAAO,CAAA,KAAA,CAAM,SAAS,CAAC,CAAA;AAC1C,IAAO,OAAA,IAAA;AAAA;AAeX;;;;;ACxBO,SAAS,IAAO,IAA6C,EAAA;AAClE,EAAA,OAAO,IAAI,OAAA,CAAQ,aAAc,CAAA,IAAI,CAAC,CAAA;AACxC;AAEA,GAAA,CAAI,YAAY,EAAC;AAKV,MAAM,OAAQ,CAAA;AAAA,EAIZ,YAAoB,IAA4B,EAAA;AAA5B,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAH3B,IAAAA,eAAA,CAAA,IAAA,EAAQ,WAAU,UAAW,EAAA,CAAA;AAC7B,IAAAA,eAAA,CAAA,IAAA,EAAQ,UAAS,UAAW,EAAA,CAAA;AAAA;AAE4B,EAEjD,MAAS,GAAA;AACd,IAAA,IAAA,CAAK,IAAK,CAAA,EAAA;AAAA,MACR,SAAA,CAAU,CAAC,GAAQ,KAAA;AACjB,QAAA,MAAM,SACJ,GAAA,GAAA,CAAI,SAAc,KAAA,MAAA,GACd,GAAI,CAAA,SAAA,CAAU,OACd,GAAA,GAAA,CAAI,SAAU,CAAA,GAAA,CAAI,SAAS,CAAA,IAAK,IAAI,SAAU,CAAA,OAAA;AACpD,QAAA,IAAI,CAAC,SAAW,EAAA;AACd,UAAA,MAAM,IAAI,KAAA,CAAM,CAAgC,6BAAA,EAAA,GAAA,CAAI,SAAS,CAAE,CAAA,CAAA;AAAA;AAEjE,QAAI,IAAA,CAAC,IAAI,MAAQ,EAAA;AACf,UAAA,GAAA,CAAI,SAAS,IAAK,CAAA,OAAA;AAAA;AAEpB,QAAI,IAAA,CAAC,IAAI,KAAO,EAAA;AACd,UAAA,GAAA,CAAI,QAAQ,IAAK,CAAA,MAAA;AAAA;AAEnB,QAAA,SAAA,CAAU,IAAI,GAAG,CAAA;AAAA,OAClB;AAAA,KACH;AACA,IAAA,OAAO,IAAK,CAAA,OAAA;AAAA;AACd,EAEO,KAAQ,GAAA;AACb,IAAA,OAAO,IAAK,CAAA,MAAA;AAAA;AAEhB;;AClDO,SAAS,SAAS,KAAqB,EAAA;AAC5C,EAAO,OAAA,SAAA,CAAmB,CAAC,GAAQ,KAAA;AACjC,IAAI,IAAA,CAAC,IAAI,MAAQ,EAAA;AACf,MAAM,MAAA,IAAI,MAAM,6CAA6C,CAAA;AAAA;AAE/D,IAAA,aAAA,CAAc,KAAK,CAAA,CAAE,EAAG,CAAA,GAAA,CAAI,MAAM,CAAA;AAAA,GACnC,CAAA;AACH;;ACNO,SAAS,MAAM,SAAmB,EAAA;AACvC,EAAA,MAAM,aAAa,UAAoB,EAAA;AACvC,EAAI,GAAA,CAAA,SAAA,CAAU,SAAS,CAAI,GAAA,UAAA;AAC3B,EAAO,OAAA,OAAA,CAAiB,CAACC,UAAc,KAAA;AACrC,IAAA,UAAA,CAAW,GAAGA,UAAS,CAAA;AAAA,GACxB,CAAA;AACH;;;;;ACPO,SAAS,SAAY,KAAuB,EAAA;AACjD,EAAO,OAAA,IAAI,aAAgB,KAAK,CAAA;AAClC;AAEO,MAAM,YAA4C,CAAA;AAAA,EAGhD,YAAoB,KAAuB,EAAA;AAAvB,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAF3B,IAAAD,eAAA,CAAA,IAAA,EAAQ,UAAc,EAAC,CAAA;AASvB,IAAAA,eAAA,CAAA,IAAA,EAAQ,QAAS,EAAA,eAAA,CAAmB,SAAU,CAAA,EAAG,KAAO,EAAA;AACtD,MAAM,KAAA,CAAA,MAAA,CAAO,KAAK,CAAC,CAAA;AACnB,MAAK,IAAA,CAAA,GAAA,CAAI,MAAM,MAAM,CAAA;AAAA,OACpB,IAAI,CAAA,CAAA;AAAA;AAV4C,EAE5C,GAAG,SAAqC,EAAA;AAC7C,IAAA,IAAA,CAAK,MAAM,EAAG,CAAA,IAAA,CAAK,MAAO,CAAA,KAAA,CAAM,SAAS,CAAC,CAAA;AAC1C,IAAO,OAAA,IAAA;AAAA;AAOX;;;;;ACnBO,SAAS,OAAU,KAAyB,EAAA;AACjD,EAAO,OAAA,IAAI,WAAc,KAAK,CAAA;AAChC;AAEO,MAAM,UAAwC,CAAA;AAAA,EAC5C,YAAoB,KAAyB,EAAA;AAAzB,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAO3B,IAAQA,eAAA,CAAA,IAAA,EAAA,QAAA,EAAS,eAAqB,CAAA,SAAU,CAAG,EAAA;AACjD,MAAE,CAAA,CAAA,OAAA,CAAQ,CAAC,EAAO,KAAA;AAChB,QAAA,IAAA,CAAK,IAAI,EAAE,CAAA;AAAA,OACZ,CAAA;AAAA,KACF,CAAA,CAAA;AAAA;AAXoD,EAE9C,GAAG,SAAmC,EAAA;AAC3C,IAAA,IAAA,CAAK,MAAM,EAAG,CAAA,IAAA,CAAK,MAAO,CAAA,KAAA,CAAM,SAAS,CAAC,CAAA;AAC1C,IAAO,OAAA,IAAA;AAAA;AAQX;;ACjBgB,SAAA,gBAAA,CACd,eACA,OACA,EAAA;AACA,EAAO,OAAA,IAAI,oBAAqB,CAAA,aAAA,EAAe,OAAO,CAAA;AACxD;AAEO,MAAM,oBAEb,CAAA;AAAA,EACS,WAAA,CACG,eACA,OACR,EAAA;AAFQ,IAAA,IAAA,CAAA,aAAA,GAAA,aAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAAA;AACP,EAEI,IAAI,IAAe,EAAA;AACxB,IAAA,OAAO,KAAK,OAAQ,CAAA,IAAA,CAAK,aAAc,CAAA,GAAA,CAAI,IAAI,CAAC,CAAA;AAAA;AAEpD;;AClBO,SAAS,aACd,CAAA,aAAA,EACA,IACA,EAAA,iBAAA,GAA4B,CAC5B,EAAA;AACA,EAAA,OAAO,IAAI,iBAAA,CAAkB,aAAe,EAAA,IAAA,EAAM,iBAAiB,CAAA;AACrE;AAEO,MAAM,iBAEb,CAAA;AAAA,EACS,WACG,CAAA,aAAA,EACA,IACA,EAAA,iBAAA,GAA4B,CACpC,EAAA;AAHQ,IAAA,IAAA,CAAA,aAAA,GAAA,aAAA;AACA,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AACA,IAAA,IAAA,CAAA,iBAAA,GAAA,iBAAA;AAAA;AACP,EAEI,IAAI,OAA0C,EAAA;AACnD,IAAA,OAAO,KAAK,aAAc,CAAA,GAAA;AAAA,MACxB,YAAa,CAAA,OAAA,EAAS,IAAK,CAAA,IAAA,EAAM,KAAK,iBAAiB;AAAA,KACzD;AAAA;AAEJ;AAEA,SAAS,YAAA,CAAa,IAAiB,EAAA,IAAA,EAAiB,KAAe,EAAA;AACrE,EAAA,MAAM,MAAS,GAAA,IAAA,CAAK,KAAM,CAAA,CAAA,EAAG,KAAK,CAAA;AAClC,EAAA,OAAO,MAAO,CAAA,MAAA,GAAS,KAAO,EAAA,MAAA,CAAO,KAAK,MAAS,CAAA;AACnD,EAAO,OAAA,MAAA,CAAO,OAAO,IAAI,CAAA;AAC3B;;;;;AC3BO,SAAS,qBACd,aACA,EAAA;AACA,EAAO,OAAA,IAAI,yBAA4B,aAAa,CAAA;AACtD;AAEO,MAAM,wBAEb,CAAA;AAAA,EAGS,YACG,aACR,EAAA;AADQ,IAAA,IAAA,CAAA,aAAA,GAAA,aAAA;AAHV,IAAA,aAAA,CAAA,IAAA,EAAQ,eAAiC,EAAC,CAAA;AAAA;AAIvC,EAEI,IAAI,IAAa,EAAA;AACtB,IAAA,MAAM,IAAO,GAAA,IAAA,CAAK,aAAc,CAAA,GAAA,CAAI,IAAI,CAAA;AACxC,IAAI,IAAA,aAAA,CAAc,IAAI,CAAG,EAAA;AACvB,MAAK,IAAA,CAAA,WAAA,CAAY,KAAK,IAAI,CAAA;AAAA;AAE5B,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,OAAgB,GAAA;AACrB,IAAA,IAAA,CAAK,YAAY,OAAQ,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,SAAS,CAAA;AAC3C,IAAO,OAAA,IAAA;AAAA;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|