silentium-components 0.0.95 → 0.0.97

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 CHANGED
@@ -2,6 +2,20 @@
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.97](https://github.com/silentium-lab/silentium-components/compare/v0.0.96...v0.0.97) (2025-12-15)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * **main:** branch component bugs ([e999d99](https://github.com/silentium-lab/silentium-components/commit/e999d997c117f1db57dc5aa304f0ced7ec9c0567))
11
+
12
+ ### [0.0.96](https://github.com/silentium-lab/silentium-components/compare/v0.0.95...v0.0.96) (2025-12-11)
13
+
14
+
15
+ ### Bug Fixes
16
+
17
+ * **main:** template variable not only strings ([bdff73b](https://github.com/silentium-lab/silentium-components/commit/bdff73b504caa7050ff1767195125e963ab02ac1))
18
+
5
19
  ### [0.0.95](https://github.com/silentium-lab/silentium-components/compare/v0.0.94...v0.0.95) (2025-12-07)
6
20
 
7
21
 
@@ -5,16 +5,19 @@ var silentium = require('silentium');
5
5
  function Branch(_condition, _left, _right) {
6
6
  const $condition = silentium.ActualMessage(_condition);
7
7
  const $left = silentium.ActualMessage(_left);
8
- const $right = _right && silentium.ActualMessage(_right);
8
+ const $right = silentium.ActualMessage(_right);
9
9
  return silentium.Message(function BranchImpl(r) {
10
10
  const left = silentium.Primitive($left);
11
11
  let right;
12
- if ($right !== void 0) {
12
+ if (_right !== void 0) {
13
13
  right = silentium.Primitive($right);
14
14
  }
15
15
  $condition.then((v) => {
16
+ if (typeof v !== "boolean") {
17
+ throw new Error("Branch received not boolean value");
18
+ }
16
19
  let result = null;
17
- if (v) {
20
+ if (v === true) {
18
21
  result = left.primitive();
19
22
  } else if (right) {
20
23
  result = right.primitive();
@@ -1 +1 @@
1
- {"version":3,"file":"silentium-components.cjs","sources":["../src/behaviors/Branch.ts","../src/behaviors/BranchLazy.ts","../src/behaviors/Const.ts","../src/behaviors/Deadline.ts","../src/behaviors/Deferred.ts","../src/behaviors/Detached.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Lock.ts","../src/behaviors/Memo.ts","../src/behaviors/MergeAccumulation.ts","../src/behaviors/OnlyChanged.ts","../src/behaviors/Part.ts","../src/behaviors/Path.ts","../src/behaviors/PathExisted.ts","../src/behaviors/Polling.ts","../src/behaviors/RecordTruncated.ts","../src/behaviors/Shot.ts","../src/behaviors/Task.ts","../src/behaviors/Tick.ts","../src/structures/HashTable.ts","../src/structures/Record.ts","../src/behaviors/Transformed.ts","../src/behaviors/TransformedList.ts","../src/boolean/And.ts","../src/boolean/Bool.ts","../src/boolean/Not.ts","../src/boolean/Or.ts","../src/formats/FromJson.ts","../src/formats/ToJson.ts","../src/lists/First.ts","../src/system/RegexpMatch.ts","../src/system/RegexpMatched.ts","../src/system/RegexpReplaced.ts","../src/system/Set.ts","../src/navigation/Router.ts","../src/strings/Concatenated.ts","../src/strings/Template.ts"],"sourcesContent":["import { ActualMessage, MaybeMessage, Message, Primitive } from \"silentium\";\n\n/**\n * Allows switching between left and right messages depending on condition\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function Branch<Then, Else>(\n _condition: MaybeMessage<boolean>,\n _left: MaybeMessage<Then>,\n _right?: MaybeMessage<Else>,\n) {\n const $condition = ActualMessage(_condition);\n const $left = ActualMessage(_left);\n const $right = _right && ActualMessage(_right);\n return Message<Then | Else>(function BranchImpl(r) {\n const left = Primitive($left);\n let right: ReturnType<typeof Primitive<Else>>;\n if ($right !== undefined) {\n right = Primitive($right);\n }\n $condition.then((v) => {\n let result: Then | Else | null = null;\n if (v) {\n result = left.primitive();\n } else if (right) {\n result = right.primitive();\n }\n if (result !== null) {\n r(result);\n }\n });\n });\n}\n","import {\n ConstructorType,\n DestroyableType,\n DestroyContainer,\n Message,\n MessageType,\n} from \"silentium\";\n\n/**\n * Depending on the $condition message,\n * creates a new left or right message.\n * When condition changes, old messages are destroyed\n * and new ones are created.\n */\nexport function BranchLazy<Then, Else>(\n $condition: MessageType<boolean>,\n $left: ConstructorType<[], MessageType<Then>>,\n $right?: ConstructorType<[], MessageType<Else>>,\n): MessageType<Then | Else> & DestroyableType {\n return Message(function BranchLazyImpl(r) {\n const dc = DestroyContainer();\n const destructor = () => {\n dc.destroy();\n };\n $condition.then((v) => {\n destructor();\n let instance: MessageType<Then | Else> | undefined;\n if (v) {\n instance = $left();\n } else if ($right) {\n instance = $right();\n }\n if (instance !== undefined) {\n instance.then(r);\n dc.add(instance);\n }\n });\n return destructor;\n });\n}\n","import { Message, MessageType, ResetSilenceCache } from \"silentium\";\n\n/**\n * Constant value that will be\n * returned on each value from\n * the $trigger message\n */\nexport function Constant<T>(\n permanent: T,\n $trigger: MessageType,\n): MessageType<T> {\n return Message<T>(function ConstantImpl(resolve, reject) {\n $trigger.catch(reject).then(() => {\n resolve(permanent);\n // Do cache reset, it gives ability to send constant of same value many times\n resolve(ResetSilenceCache as T);\n });\n });\n}\n","import {\n ActualMessage,\n Filtered,\n MaybeMessage,\n Message,\n MessageType,\n Shared,\n} from \"silentium\";\n\n/**\n * Will return an error via error transport if\n * time runs out from $timeout; if $base manages to\n * respond before $timeout then the value from base will be returned\n */\nexport function Deadline<T>(\n $base: MessageType<T>,\n _timeout: MaybeMessage<number>,\n) {\n const $timeout = ActualMessage(_timeout);\n return Message<T>(function DeadlineImpl(resolve, reject) {\n let timer: ReturnType<typeof setTimeout> | number = 0;\n const base = Shared($base);\n $timeout.then((timeout) => {\n if (timer) {\n clearTimeout(timer);\n }\n let timeoutReached = false;\n\n timer = setTimeout(() => {\n if (timeoutReached) {\n return;\n }\n timeoutReached = true;\n reject(new Error(\"Timeout reached in Deadline\"));\n }, timeout);\n\n const f = Filtered(base, () => !timeoutReached);\n f.then(resolve);\n\n base.then(() => {\n timeoutReached = true;\n });\n });\n });\n}\n","import { isFilled, Message, MessageType, Primitive } from \"silentium\";\n\n/**\n * Defer one source after another, gives values Of baseSrc only when triggerSrc responds\n * https://silentium-lab.github.io/silentium-components/#/behaviors/deferred\n */\nexport function Deferred<T>(\n $base: MessageType<T>,\n $trigger: MessageType<unknown>,\n) {\n return Message<T>(function DeferredImpl(r) {\n const base = Primitive($base);\n $trigger.then(() => {\n const value = base.primitive();\n if (isFilled(value)) {\n r(value);\n }\n });\n });\n}\n","import { isFilled, Message, MessageType, Primitive } from \"silentium\";\n\n/**\n * Message separate from the base\n * allows to take one value from the base\n * but not react to new values of the base message\n */\nexport function Detached<T>($base: MessageType<T>): MessageType<T> {\n return Message<T>(function DetachedImpl(r) {\n const v = Primitive($base).primitive();\n if (isFilled(v)) {\n r(v);\n }\n });\n}\n","import { All, Applied, Late, MessageSource, MessageType } from \"silentium\";\n\n/**\n * Takes source and remember it first value\n * returns new record, what will contain only fields what was changed\n * https://silentium-lab.github.io/silentium-components/#/behaviors/dirty\n */\nexport function Dirty<T extends Record<string, unknown>>(\n $base: MessageType<T>,\n keep: string[] = [],\n exclude: string[] = [],\n cloner?: (v: T) => T,\n) {\n const $comparing = Late<T>({} as T);\n if (cloner === undefined) {\n cloner = (value) => JSON.parse(JSON.stringify(value));\n }\n return MessageSource<T>(\n function DirtyImpl(r) {\n const $comparingClone = Applied($comparing, cloner);\n All($comparingClone, $base).then(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n r(\n Object.fromEntries(\n Object.entries(comparing).filter(([key, value]) => {\n if (keep.includes(key)) {\n return true;\n }\n if (exclude.includes(key)) {\n return false;\n }\n return value !== (base as Record<string, unknown>)[key];\n }),\n ) as T,\n );\n });\n },\n (v) => {\n $comparing.use(v);\n },\n );\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * Representation Of loading process\n * first message begins loading\n * second message stops loading\n * https://silentium-lab.github.io/silentium-components/#/behaviors/loading\n */\nexport function Loading(\n $start: MessageType<unknown>,\n $finish: MessageType<unknown>,\n) {\n return Message<boolean>(function LoadingImpl(r) {\n $start.then(() => r(true));\n $finish.then(() => r(false));\n });\n}\n","import { Filtered, Message, MessageType } from \"silentium\";\n\n/**\n * Allows locking messages\n * if a $lock message arrives\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport function Lock<T>($base: MessageType<T>, $lock: MessageType<boolean>) {\n return Message<T>(function LockImpl(r) {\n let locked = false;\n $lock.then((newLock) => {\n locked = newLock;\n });\n const i = Filtered($base, () => !locked);\n i.then(r);\n });\n}\n","import { isFilled, Message, MessageType } from \"silentium\";\n\n/**\n * Didn't respond if new value Of baseSrc equals to old value\n * https://silentium-lab.github.io/silentium-components/#/behaviors/memo\n */\nexport function Memo<T>($base: MessageType<T>) {\n return Message<T>(function MemoImpl(r) {\n let last: T | null = null;\n $base.then((v) => {\n if (v !== last && isFilled(v)) {\n r(v);\n last = v;\n }\n });\n });\n}\n","import { Late, MessageType } from \"silentium\";\n\n/**\n * Есть объект и каждое новое его значение нужно мержить с прошлым\n * чтобы накопить общие изменения\n */\nexport function MergeAccumulation<T extends object>(\n $base: MessageType<T>,\n $reset?: MessageType<T>,\n): MessageType<T> {\n const accumulation = Late<T>();\n const lastAccumulated = {};\n $base.then((nextValue) => {\n accumulation.use(\n mergeWith(lastAccumulated, nextValue, (value1: any, value2: any) => {\n if (Array.isArray(value1)) {\n return value1.concat(value2);\n }\n }),\n );\n });\n\n if ($reset) {\n $reset.then((resetValue) => {\n accumulation.use(resetValue);\n });\n }\n\n return accumulation;\n}\n\nfunction mergeWith<TObject, TSource>(\n target: TObject,\n source: TSource,\n customizer: (\n objValue: any,\n srcValue: any,\n key: string,\n object: any,\n source: any,\n ) => any,\n): TObject & TSource {\n if (source == null) {\n return target as TObject & TSource;\n }\n\n Object.keys(source).forEach((key) => {\n const srcValue = (source as any)[key];\n const objValue = (target as any)[key];\n const result = customizer(objValue, srcValue, key, target, source);\n\n if (result !== undefined) {\n (target as any)[key] = result;\n } else if (isObject(srcValue) && isObject(objValue)) {\n mergeWith(objValue, srcValue, customizer);\n } else {\n (target as any)[key] = srcValue;\n }\n });\n\n return target as TObject & TSource;\n}\n\nfunction isObject(value: any): value is \"object\" {\n return value != null && typeof value === \"object\";\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * Represents source what was changed at least once\n * https://silentium-lab.github.io/silentium-components/#/behaviors/only-changed\n */\nexport function OnlyChanged<T>($base: MessageType<T>) {\n return Message<T>(function OnlyChangedImpl(r) {\n let first = false;\n $base.then((v) => {\n if (first === false) {\n first = true;\n } else {\n r(v);\n }\n });\n });\n}\n","import {\n ActualMessage,\n All,\n isFilled,\n MaybeMessage,\n MessageSource,\n MessageSourceType,\n Primitive,\n Shared,\n} from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Part<\n R,\n T extends object | Array<any> = any,\n K extends string = any,\n>($base: MessageSourceType<T>, key: MaybeMessage<K>): MessageSourceType<R> {\n const $baseShared = Shared($base);\n const $keyedShared = Shared(ActualMessage(key));\n return MessageSource(\n function PartImpl(r) {\n All($baseShared, $keyedShared).then(([base, keyed]) => {\n const keys = keyed.split(\".\");\n let value: unknown = base;\n keys.forEach((key: string) => {\n value = (value as Record<string, unknown>)[key];\n });\n if (value !== undefined && value !== base) {\n r(value as R);\n }\n });\n },\n (value) => {\n const key = Primitive($keyedShared);\n if (isFilled(key)) {\n const base = Primitive($base);\n $base.use({\n ...base.primitiveWithException(),\n [key.primitiveWithException()]: value,\n } as T);\n }\n },\n );\n}\n","import {\n ActualMessage,\n All,\n Applied,\n MaybeMessage,\n MessageType,\n} from \"silentium\";\n\nconst NotSet = Symbol(\"not-set\");\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Path<\n R,\n T extends object | Array<any> = any,\n K extends string = any,\n>($base: MessageType<T>, _keyed: MaybeMessage<K>, def?: MaybeMessage<T>) {\n const $keyed = ActualMessage(_keyed);\n const $def = ActualMessage(def ?? NotSet);\n return Applied(All($base, $keyed, $def), ([base, keyed, d]) => {\n const keys = keyed.split(\".\");\n let value: unknown = base;\n keys.forEach((key) => {\n value = (value as Record<string, unknown>)[key];\n });\n if (value !== undefined && value !== base) {\n return value as R;\n } else if (d !== NotSet) {\n return d as R;\n }\n }) as MessageType<R>;\n}\n","import { ActualMessage, Empty, MaybeMessage, Nothing } from \"silentium\";\n\nimport { Path } from \"../behaviors/Path\";\n\n/**\n * Path with separate empty message\n */\nexport function PathExisted<\n R,\n T extends object | Array<any> = any,\n K extends string = any,\n>(_base: MaybeMessage<T>, _keyed: MaybeMessage<K>) {\n const $base = ActualMessage(_base);\n const $keyed = ActualMessage(_keyed);\n return Empty(Path<R>($base, $keyed, Nothing));\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * Active polling of $base message\n * synchronized with $trigger message\n */\nexport function Polling<T>(\n $base: MessageType<T>,\n $trigger: MessageType<unknown>,\n) {\n return Message<T>(function PollingImpl(r) {\n $trigger.then(() => {\n $base.then(r);\n });\n });\n}\n","import { ActualMessage, Computed, MaybeMessage } from \"silentium\";\n\n/**\n * Helps eliminate unwanted values\n * that shouldn't exist in object fields\n */\nexport function RecordTruncated(\n _record: MaybeMessage<Record<string, unknown>>,\n _badValues: MaybeMessage<unknown[]>,\n) {\n const $record = ActualMessage(_record);\n const $badValues = ActualMessage(_badValues);\n const processRecord = (obj: any, badValues: unknown[]) => {\n if (obj === null || typeof obj !== \"object\" || Array.isArray(obj)) {\n return obj;\n }\n\n const result: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(obj)) {\n if (badValues.includes(value)) continue;\n\n const processedValue = processRecord(value, badValues);\n\n if (\n processedValue !== undefined &&\n !(\n typeof processedValue === \"object\" &&\n processedValue !== null &&\n !Array.isArray(processedValue) &&\n Object.keys(processedValue).length === 0\n )\n ) {\n result[key] = processedValue;\n }\n }\n\n return result;\n };\n\n return Computed(processRecord, $record, $badValues);\n}\n","import { isFilled, Message, MessageType, Primitive } from \"silentium\";\n\n/**\n * Helps to represent only last fresh value Of some source, refreshing controls by shotSrc\n * https://silentium-lab.github.io/silentium-components/#/behaviors/shot\n */\nexport function Shot<T>($target: MessageType<T>, $trigger: MessageType) {\n return Message<T>(function ShotImpl(r) {\n const targetSync = Primitive($target);\n targetSync.primitive();\n $trigger.then(() => {\n const value = targetSync.primitive();\n if (isFilled(value)) {\n r(value);\n }\n });\n });\n}\n","import {\n ActualMessage,\n ExecutorApplied,\n MaybeMessage,\n Message,\n} from \"silentium\";\n\n/**\n * Defer a message to the event loop\n * so that it executes once within\n * a certain timer firing interval\n */\nexport function Task<T>(baseSrc: MaybeMessage<T>, delay: number = 0) {\n const $base = ActualMessage(baseSrc);\n return Message<T>(function TaskImpl(r) {\n let prevTimer: unknown | null = null;\n ExecutorApplied($base, (fn) => {\n return (v) => {\n if (prevTimer) {\n clearTimeout(prevTimer as number);\n }\n prevTimer = setTimeout(() => {\n fn(v);\n }, delay);\n };\n }).then(r);\n });\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * Accumulates the last value Of the source and returns one result once per tick\n * https://silentium-lab.github.io/silentium-components/#/behaviors/tick\n */\nexport function Tick<T>($base: MessageType<T>) {\n return Message<T>(function TickImpl(r) {\n let microtaskScheduled = false;\n let lastValue: T | null = null;\n\n const scheduleMicrotask = () => {\n microtaskScheduled = true;\n queueMicrotask(() => {\n microtaskScheduled = false;\n if (lastValue !== null) {\n r(lastValue);\n lastValue = null;\n }\n });\n };\n\n $base.then((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n });\n });\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * By receiving a message with a key and value, collects a table\n * of all previously received messages in the form of a structure\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport function HashTable<T>($base: MessageType<[string, unknown]>) {\n return Message<T>(function HashTableImpl(r) {\n const record: Record<string, unknown> = {};\n\n $base.then(([key, value]) => {\n record[key] = value;\n r(record as T);\n });\n });\n}\n","import { ActualMessage, All, Message, MessageType } from \"silentium\";\n\ntype UnWrap<T> = T extends MessageType<infer U> ? U : T;\n\n/**\n * Returns record Of data from record Of sources\n * https://silentium-lab.github.io/silentium-components/#/structures/record\n */\nexport function Record<T>(record: Record<string, T>) {\n return Message<Record<string, UnWrap<T>>>(function RecordImpl(r) {\n const keys = Object.keys(record);\n keys.forEach((key) => {\n record[key] = ActualMessage(record[key]) as any;\n });\n All(...(Object.values(record) as any)).then((entries) => {\n const record: Record<string, any> = {};\n entries.forEach((entry, index) => {\n record[keys[index]] = entry;\n });\n r(record);\n });\n });\n}\n","import {\n ActualMessage,\n ConstructorType,\n MaybeMessage,\n Message,\n Of,\n Once,\n} from \"silentium\";\n\nimport { Record } from \"../structures\";\n\n/**\n * Modify the object structure\n * with the ability to create new fields based on\n * existing ones in the object\n */\nexport function Transformed<T extends Record<string, any>>(\n _base: MaybeMessage<T>,\n transformRules: Record<string, ConstructorType<[MaybeMessage<any>]>>,\n) {\n const $base = ActualMessage(_base);\n return Message((resolve) => {\n $base.then((v) => {\n const existedKeysMap: Record<string, number> = {};\n const sourceObject = Object.fromEntries(\n Object.entries(v).map((entry) => {\n if (transformRules[entry[0]]) {\n existedKeysMap[entry[0]] = 1;\n return [entry[0], transformRules[entry[0]](v)];\n }\n\n return [entry[0], Of(entry[1])];\n }),\n );\n\n Object.keys(transformRules).forEach((key) => {\n if (!existedKeysMap[key]) {\n sourceObject[key] = transformRules[key](v);\n }\n });\n const record = Once(Record(sourceObject));\n record.then(resolve);\n });\n });\n}\n","import { ActualMessage, ConstructorType, Map, MaybeMessage } from \"silentium\";\n\nimport { Transformed } from \"../behaviors/Transformed\";\n\nexport function TransformedList<T extends any[]>(\n _base: MaybeMessage<T>,\n transformRules: Record<string, ConstructorType<[MaybeMessage<any>]>>,\n) {\n return Map(ActualMessage(_base), (v) => Transformed(v, transformRules));\n}\n","import { All, Message, MessageType } from \"silentium\";\n\n/**\n * Logical AND over two messages\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport function And($one: MessageType<boolean>, $two: MessageType<boolean>) {\n return Message<boolean>(function AndImpl(r) {\n All($one, $two).then(([one, two]) => {\n r(!!(one && two));\n });\n });\n}\n","import { Applied, Message, MessageType } from \"silentium\";\n\n/**\n * Convert Any source to boolean source\n * https://silentium-lab.github.io/silentium-components/#/boolean/bool\n */\nexport function Bool($base: MessageType) {\n return Message<boolean>(function BoolImpl(r) {\n Applied($base, Boolean).then(r);\n });\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * Logical negation of message\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport function Not($base: MessageType<boolean>) {\n return Message<boolean>(function NotImpl(r) {\n $base.then((v) => {\n r(!v);\n });\n });\n}\n","import { All, Message, MessageType } from \"silentium\";\n\n/**\n * Logical OR over two messages\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport function Or($one: MessageType<boolean>, $two: MessageType<boolean>) {\n return Message<boolean>(function OrImpl(r) {\n All($one, $two).then(([one, two]) => {\n r(!!(one || two));\n });\n });\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport function FromJson<T = Record<string, unknown>>(\n $json: MessageType<string>,\n) {\n return Message<T>(function FromJsonImpl(resolve, reject) {\n $json.then((json) => {\n try {\n resolve(JSON.parse(json));\n } catch (e) {\n reject(new Error(`Failed to parse JSON: ${e}`));\n }\n });\n });\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport function ToJson($data: MessageType) {\n return Message<string>(function ToJsonImpl(resolve, reject) {\n $data.then((data: unknown) => {\n try {\n resolve(JSON.stringify(data));\n } catch {\n reject(new Error(\"Failed to convert to JSON\"));\n }\n });\n });\n}\n","import { Applied, Message, MessageType } from \"silentium\";\n\n/**\n * Represents the first element Of an array.\n */\nexport function First<T extends Array<unknown>>($base: MessageType<T>) {\n return Message<T[0]>(function FirstImpl(r) {\n Applied($base, (a) => a[0]).then(r);\n });\n}\n","import { ActualMessage, All, MaybeMessage, Message, Of } from \"silentium\";\n\n/**\n * First match Of regexp\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport function RegexpMatch(\n patternSrc: MaybeMessage<string>,\n valueSrc: MaybeMessage<string>,\n flagsSrc: MaybeMessage<string> = Of(\"\"),\n) {\n const $pattern = ActualMessage(patternSrc);\n const $value = ActualMessage(valueSrc);\n const $flags = ActualMessage(flagsSrc);\n return Message<string[]>(function RegexpMatchImpl(r) {\n All($pattern, $value, $flags).then(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n r(result ?? []);\n });\n });\n}\n","import { ActualMessage, All, MaybeMessage, Message, Of } from \"silentium\";\n\n/**\n * Boolean source what checks what string matches pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport function RegexpMatched(\n patternSrc: MaybeMessage<string>,\n valueSrc: MaybeMessage<string>,\n flagsSrc: MaybeMessage<string> = Of(\"\"),\n) {\n const $pattern = ActualMessage(patternSrc);\n const $value = ActualMessage(valueSrc);\n const $flags = ActualMessage(flagsSrc);\n return Message<boolean>(function RegexpMatchedImpl(r) {\n All($pattern, $value, $flags).then(([pattern, value, flags]) => {\n r(new RegExp(pattern, flags).test(value));\n });\n });\n}\n","import { ActualMessage, All, Applied, MaybeMessage } from \"silentium\";\n\n/**\n * Returns string replaced by regular expression pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-replaced\n */\nexport function RegexpReplaced(\n valueSrc: MaybeMessage<string>,\n patternSrc: MaybeMessage<string>,\n replaceValueSrc: MaybeMessage<string>,\n flagsSrc: MaybeMessage<string> = \"\",\n) {\n const $value = ActualMessage(valueSrc);\n const $pattern = ActualMessage(patternSrc);\n const $replaceValue = ActualMessage(replaceValueSrc);\n const $flags = ActualMessage(flagsSrc);\n return Applied(\n All($pattern, $value, $replaceValue, $flags),\n ([pattern, value, replaceValue, flags]) => {\n return String(value).replace(new RegExp(pattern, flags), replaceValue);\n },\n );\n}\n","import { ActualMessage, All, Message, MessageType } from \"silentium\";\n\n/**\n * Ability to mutate some object, helpful when integrate to procedure systems\n * https://silentium-lab.github.io/silentium-components/#/system/set\n */\nexport function Set<T extends Record<string, unknown>>(\n baseSrc: MessageType<T>,\n keySrc: MessageType<string>,\n valueSrc: MessageType<unknown>,\n) {\n const $base = ActualMessage(baseSrc);\n const $key = ActualMessage(keySrc);\n const $value = ActualMessage(valueSrc);\n return Message<T>(function SetImpl(r) {\n All($base, $key, $value).then(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n r(base);\n });\n });\n}\n","import {\n ActualMessage,\n All,\n ConstructorType,\n DestroyableType,\n DestroyContainer,\n MaybeMessage,\n Message,\n MessageType,\n Of,\n} from \"silentium\";\n\nimport { RegexpMatched } from \"../system\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n message: ConstructorType<[], MessageType<T>>;\n}\n\n/**\n * Router component what will return template if url matches pattern\n * https://silentium-lab.github.io/silentium-components/#/navigation/router\n */\nexport function Router<T = string>(\n $url: MessageType<string>,\n routes: MaybeMessage<Route<T>[]>,\n $default: ConstructorType<[], MessageType<T>>,\n): MessageType<T> & DestroyableType {\n const $routes = ActualMessage(routes);\n return Message<T>(function RouterImpl(r) {\n const dc = DestroyContainer();\n const destructor = () => {\n dc.destroy();\n };\n All($routes, $url).then(([routes, url]) => {\n destructor();\n const $matches = All(\n ...routes.map((r) =>\n RegexpMatched(\n Of(r.pattern),\n Of(url),\n r.patternFlags ? Of(r.patternFlags) : undefined,\n ),\n ),\n );\n $matches.then((matches) => {\n const index = matches.findIndex((v) => v === true);\n\n if (index === -1) {\n const instance = $default();\n dc.add(instance);\n instance.then(r);\n }\n\n if (index > -1) {\n const instance = routes[index].message();\n dc.add(instance);\n instance.then(r);\n }\n });\n });\n\n return destructor;\n });\n}\n","import { All, Message, MessageType, Of } from \"silentium\";\n\n/**\n * Join sources Of strings to one source\n * https://silentium-lab.github.io/silentium-components/#/string/concatenated\n */\nexport function Concatenated(\n sources: MessageType<string>[],\n joinPartSrc: MessageType<string> = Of(\"\"),\n) {\n return Message<string>(function ConcatenatedImpl(r) {\n All(joinPartSrc, ...sources).then(([joinPart, ...strings]) => {\n r(strings.join(joinPart));\n });\n });\n}\n","import {\n ActualMessage,\n All,\n Applied,\n ConstructorType,\n DestroyableType,\n DestroyContainer,\n isDestroyable,\n isMessage,\n Late,\n MaybeMessage,\n Message,\n MessageType,\n Of,\n Rejections,\n} from \"silentium\";\n\nimport { Record } from \"../structures\";\n\n/**\n * Allows creating a string template with\n * variables inserted into it; when variables change,\n * the template value will change\n */\nexport function Template(\n src: MaybeMessage<string> | ((t: TemplateImpl) => string) = \"\",\n $places: MaybeMessage<Record<string, unknown>> = Of({}),\n) {\n const $src = Late<string>();\n if (typeof src === \"string\" || isMessage(src)) {\n $src.chain(ActualMessage(src));\n }\n\n const t = new TemplateImpl(\n $src,\n $places ? ActualMessage($places) : undefined,\n );\n\n if (typeof src === \"function\") {\n $src.chain(\n Message((r) => {\n r(src(t));\n }),\n );\n }\n\n return t;\n}\n\nclass TemplateImpl implements MessageType<string>, DestroyableType {\n private dc = DestroyContainer();\n private rejections = new Rejections();\n private vars: Record<string, MessageType> = {\n $TPL: Of(\"$TPL\"),\n };\n\n public constructor(\n private $src: MessageType<string> = Of(\"\"),\n private $places: MessageType<Record<string, unknown>> = Of({}),\n ) {}\n\n public then(transport: ConstructorType<[string]>): this {\n const $vars = Record(this.vars);\n Applied(All(this.$src, this.$places, $vars), ([base, rules, vars]) => {\n try {\n Object.entries(rules).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n Object.entries(vars).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n } catch (e) {\n this.rejections.reject(e);\n }\n\n return base;\n }).then(transport);\n return this;\n }\n\n public template(value: string) {\n this.$src = Of(value);\n }\n\n /**\n * Ability to register variable\n * in concrete place Of template\n */\n public var(src: MessageType<string>) {\n const hash =\n Date.now().toString(36) + Math.random().toString(36).substring(2);\n const varName = `$var${hash}`;\n if (isDestroyable(src)) {\n this.dc.add(src);\n }\n this.vars[varName] = src;\n return varName;\n }\n\n public catch(rejected: ConstructorType<[unknown]>): this {\n this.rejections.catch(rejected);\n return this;\n }\n\n public destroy(): this {\n this.dc.destroy();\n return this;\n }\n}\n"],"names":["ActualMessage","Message","Primitive","DestroyContainer","ResetSilenceCache","Shared","Filtered","isFilled","Late","MessageSource","Applied","All","key","Empty","Nothing","Computed","ExecutorApplied","record","Of","Once","Map","routes","r","isMessage","Rejections","isDestroyable"],"mappings":";;;;AAMgB,SAAA,MAAA,CACd,UACA,EAAA,KAAA,EACA,MACA,EAAA;AACA,EAAM,MAAA,UAAA,GAAaA,wBAAc,UAAU,CAAA;AAC3C,EAAM,MAAA,KAAA,GAAQA,wBAAc,KAAK,CAAA;AACjC,EAAM,MAAA,MAAA,GAAS,MAAU,IAAAA,uBAAA,CAAc,MAAM,CAAA;AAC7C,EAAO,OAAAC,iBAAA,CAAqB,SAAS,UAAA,CAAW,CAAG,EAAA;AACjD,IAAM,MAAA,IAAA,GAAOC,oBAAU,KAAK,CAAA;AAC5B,IAAI,IAAA,KAAA;AACJ,IAAA,IAAI,WAAW,MAAW,EAAA;AACxB,MAAA,KAAA,GAAQA,oBAAU,MAAM,CAAA;AAAA;AAE1B,IAAW,UAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AACrB,MAAA,IAAI,MAA6B,GAAA,IAAA;AACjC,MAAA,IAAI,CAAG,EAAA;AACL,QAAA,MAAA,GAAS,KAAK,SAAU,EAAA;AAAA,iBACf,KAAO,EAAA;AAChB,QAAA,MAAA,GAAS,MAAM,SAAU,EAAA;AAAA;AAE3B,MAAA,IAAI,WAAW,IAAM,EAAA;AACnB,QAAA,CAAA,CAAE,MAAM,CAAA;AAAA;AACV,KACD,CAAA;AAAA,GACF,CAAA;AACH;;AClBgB,SAAA,UAAA,CACd,UACA,EAAA,KAAA,EACA,MAC4C,EAAA;AAC5C,EAAO,OAAAD,iBAAA,CAAQ,SAAS,cAAA,CAAe,CAAG,EAAA;AACxC,IAAA,MAAM,KAAKE,0BAAiB,EAAA;AAC5B,IAAA,MAAM,aAAa,MAAM;AACvB,MAAA,EAAA,CAAG,OAAQ,EAAA;AAAA,KACb;AACA,IAAW,UAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AACrB,MAAW,UAAA,EAAA;AACX,MAAI,IAAA,QAAA;AACJ,MAAA,IAAI,CAAG,EAAA;AACL,QAAA,QAAA,GAAW,KAAM,EAAA;AAAA,iBACR,MAAQ,EAAA;AACjB,QAAA,QAAA,GAAW,MAAO,EAAA;AAAA;AAEpB,MAAA,IAAI,aAAa,MAAW,EAAA;AAC1B,QAAA,QAAA,CAAS,KAAK,CAAC,CAAA;AACf,QAAA,EAAA,CAAG,IAAI,QAAQ,CAAA;AAAA;AACjB,KACD,CAAA;AACD,IAAO,OAAA,UAAA;AAAA,GACR,CAAA;AACH;;AChCgB,SAAA,QAAA,CACd,WACA,QACgB,EAAA;AAChB,EAAA,OAAOF,iBAAW,CAAA,SAAS,YAAa,CAAA,OAAA,EAAS,MAAQ,EAAA;AACvD,IAAA,QAAA,CAAS,KAAM,CAAA,MAAM,CAAE,CAAA,IAAA,CAAK,MAAM;AAChC,MAAA,OAAA,CAAQ,SAAS,CAAA;AAEjB,MAAA,OAAA,CAAQG,2BAAsB,CAAA;AAAA,KAC/B,CAAA;AAAA,GACF,CAAA;AACH;;ACJgB,SAAA,QAAA,CACd,OACA,QACA,EAAA;AACA,EAAM,MAAA,QAAA,GAAWJ,wBAAc,QAAQ,CAAA;AACvC,EAAA,OAAOC,iBAAW,CAAA,SAAS,YAAa,CAAA,OAAA,EAAS,MAAQ,EAAA;AACvD,IAAA,IAAI,KAAgD,GAAA,CAAA;AACpD,IAAM,MAAA,IAAA,GAAOI,iBAAO,KAAK,CAAA;AACzB,IAAS,QAAA,CAAA,IAAA,CAAK,CAAC,OAAY,KAAA;AACzB,MAAA,IAAI,KAAO,EAAA;AACT,QAAA,YAAA,CAAa,KAAK,CAAA;AAAA;AAEpB,MAAA,IAAI,cAAiB,GAAA,KAAA;AAErB,MAAA,KAAA,GAAQ,WAAW,MAAM;AACvB,QAAA,IAAI,cAAgB,EAAA;AAClB,UAAA;AAAA;AAEF,QAAiB,cAAA,GAAA,IAAA;AACjB,QAAO,MAAA,CAAA,IAAI,KAAM,CAAA,6BAA6B,CAAC,CAAA;AAAA,SAC9C,OAAO,CAAA;AAEV,MAAA,MAAM,CAAI,GAAAC,kBAAA,CAAS,IAAM,EAAA,MAAM,CAAC,cAAc,CAAA;AAC9C,MAAA,CAAA,CAAE,KAAK,OAAO,CAAA;AAEd,MAAA,IAAA,CAAK,KAAK,MAAM;AACd,QAAiB,cAAA,GAAA,IAAA;AAAA,OAClB,CAAA;AAAA,KACF,CAAA;AAAA,GACF,CAAA;AACH;;ACtCgB,SAAA,QAAA,CACd,OACA,QACA,EAAA;AACA,EAAO,OAAAL,iBAAA,CAAW,SAAS,YAAA,CAAa,CAAG,EAAA;AACzC,IAAM,MAAA,IAAA,GAAOC,oBAAU,KAAK,CAAA;AAC5B,IAAA,QAAA,CAAS,KAAK,MAAM;AAClB,MAAM,MAAA,KAAA,GAAQ,KAAK,SAAU,EAAA;AAC7B,MAAI,IAAAK,kBAAA,CAAS,KAAK,CAAG,EAAA;AACnB,QAAA,CAAA,CAAE,KAAK,CAAA;AAAA;AACT,KACD,CAAA;AAAA,GACF,CAAA;AACH;;ACZO,SAAS,SAAY,KAAuC,EAAA;AACjE,EAAO,OAAAN,iBAAA,CAAW,SAAS,YAAA,CAAa,CAAG,EAAA;AACzC,IAAA,MAAM,CAAI,GAAAC,mBAAA,CAAU,KAAK,CAAA,CAAE,SAAU,EAAA;AACrC,IAAI,IAAAK,kBAAA,CAAS,CAAC,CAAG,EAAA;AACf,MAAA,CAAA,CAAE,CAAC,CAAA;AAAA;AACL,GACD,CAAA;AACH;;ACPgB,SAAA,KAAA,CACd,OACA,IAAiB,GAAA,IACjB,OAAoB,GAAA,IACpB,MACA,EAAA;AACA,EAAM,MAAA,UAAA,GAAaC,cAAQ,CAAA,EAAO,CAAA;AAClC,EAAA,IAAI,WAAW,MAAW,EAAA;AACxB,IAAA,MAAA,GAAS,CAAC,KAAU,KAAA,IAAA,CAAK,MAAM,IAAK,CAAA,SAAA,CAAU,KAAK,CAAC,CAAA;AAAA;AAEtD,EAAO,OAAAC,uBAAA;AAAA,IACL,SAAS,UAAU,CAAG,EAAA;AACpB,MAAM,MAAA,eAAA,GAAkBC,iBAAQ,CAAA,UAAA,EAAY,MAAM,CAAA;AAClD,MAAIC,aAAA,CAAA,eAAA,EAAiB,KAAK,CAAE,CAAA,IAAA,CAAK,CAAC,CAAC,SAAA,EAAW,IAAI,CAAM,KAAA;AACtD,QAAA,IAAI,CAAC,SAAW,EAAA;AACd,UAAA;AAAA;AAEF,QAAA,CAAA;AAAA,UACE,MAAO,CAAA,WAAA;AAAA,YACL,MAAA,CAAO,QAAQ,SAAS,CAAA,CAAE,OAAO,CAAC,CAAC,GAAK,EAAA,KAAK,CAAM,KAAA;AACjD,cAAI,IAAA,IAAA,CAAK,QAAS,CAAA,GAAG,CAAG,EAAA;AACtB,gBAAO,OAAA,IAAA;AAAA;AAET,cAAI,IAAA,OAAA,CAAQ,QAAS,CAAA,GAAG,CAAG,EAAA;AACzB,gBAAO,OAAA,KAAA;AAAA;AAET,cAAO,OAAA,KAAA,KAAW,KAAiC,GAAG,CAAA;AAAA,aACvD;AAAA;AACH,SACF;AAAA,OACD,CAAA;AAAA,KACH;AAAA,IACA,CAAC,CAAM,KAAA;AACL,MAAA,UAAA,CAAW,IAAI,CAAC,CAAA;AAAA;AAClB,GACF;AACF;;ACnCgB,SAAA,OAAA,CACd,QACA,OACA,EAAA;AACA,EAAO,OAAAV,iBAAA,CAAiB,SAAS,WAAA,CAAY,CAAG,EAAA;AAC9C,IAAA,MAAA,CAAO,IAAK,CAAA,MAAM,CAAE,CAAA,IAAI,CAAC,CAAA;AACzB,IAAA,OAAA,CAAQ,IAAK,CAAA,MAAM,CAAE,CAAA,KAAK,CAAC,CAAA;AAAA,GAC5B,CAAA;AACH;;ACTgB,SAAA,IAAA,CAAQ,OAAuB,KAA6B,EAAA;AAC1E,EAAO,OAAAA,iBAAA,CAAW,SAAS,QAAA,CAAS,CAAG,EAAA;AACrC,IAAA,IAAI,MAAS,GAAA,KAAA;AACb,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,OAAY,KAAA;AACtB,MAAS,MAAA,GAAA,OAAA;AAAA,KACV,CAAA;AACD,IAAA,MAAM,CAAI,GAAAK,kBAAA,CAAS,KAAO,EAAA,MAAM,CAAC,MAAM,CAAA;AACvC,IAAA,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,GACT,CAAA;AACH;;ACVO,SAAS,KAAQ,KAAuB,EAAA;AAC7C,EAAO,OAAAL,iBAAA,CAAW,SAAS,QAAA,CAAS,CAAG,EAAA;AACrC,IAAA,IAAI,IAAiB,GAAA,IAAA;AACrB,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AAChB,MAAA,IAAI,CAAM,KAAA,IAAA,IAAQM,kBAAS,CAAA,CAAC,CAAG,EAAA;AAC7B,QAAA,CAAA,CAAE,CAAC,CAAA;AACH,QAAO,IAAA,GAAA,CAAA;AAAA;AACT,KACD,CAAA;AAAA,GACF,CAAA;AACH;;ACVgB,SAAA,iBAAA,CACd,OACA,MACgB,EAAA;AAChB,EAAA,MAAM,eAAeC,cAAQ,EAAA;AAC7B,EAAA,MAAM,kBAAkB,EAAC;AACzB,EAAM,KAAA,CAAA,IAAA,CAAK,CAAC,SAAc,KAAA;AACxB,IAAa,YAAA,CAAA,GAAA;AAAA,MACX,SAAU,CAAA,eAAA,EAAiB,SAAW,EAAA,CAAC,QAAa,MAAgB,KAAA;AAClE,QAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,MAAM,CAAG,EAAA;AACzB,UAAO,OAAA,MAAA,CAAO,OAAO,MAAM,CAAA;AAAA;AAC7B,OACD;AAAA,KACH;AAAA,GACD,CAAA;AAED,EAAA,IAAI,MAAQ,EAAA;AACV,IAAO,MAAA,CAAA,IAAA,CAAK,CAAC,UAAe,KAAA;AAC1B,MAAA,YAAA,CAAa,IAAI,UAAU,CAAA;AAAA,KAC5B,CAAA;AAAA;AAGH,EAAO,OAAA,YAAA;AACT;AAEA,SAAS,SAAA,CACP,MACA,EAAA,MAAA,EACA,UAOmB,EAAA;AACnB,EAAA,IAAI,UAAU,IAAM,EAAA;AAClB,IAAO,OAAA,MAAA;AAAA;AAGT,EAAA,MAAA,CAAO,IAAK,CAAA,MAAM,CAAE,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AACnC,IAAM,MAAA,QAAA,GAAY,OAAe,GAAG,CAAA;AACpC,IAAM,MAAA,QAAA,GAAY,OAAe,GAAG,CAAA;AACpC,IAAA,MAAM,SAAS,UAAW,CAAA,QAAA,EAAU,QAAU,EAAA,GAAA,EAAK,QAAQ,MAAM,CAAA;AAEjE,IAAA,IAAI,WAAW,MAAW,EAAA;AACxB,MAAC,MAAA,CAAe,GAAG,CAAI,GAAA,MAAA;AAAA,eACd,QAAS,CAAA,QAAQ,CAAK,IAAA,QAAA,CAAS,QAAQ,CAAG,EAAA;AACnD,MAAU,SAAA,CAAA,QAAA,EAAU,UAAU,UAAU,CAAA;AAAA,KACnC,MAAA;AACL,MAAC,MAAA,CAAe,GAAG,CAAI,GAAA,QAAA;AAAA;AACzB,GACD,CAAA;AAED,EAAO,OAAA,MAAA;AACT;AAEA,SAAS,SAAS,KAA+B,EAAA;AAC/C,EAAO,OAAA,KAAA,IAAS,IAAQ,IAAA,OAAO,KAAU,KAAA,QAAA;AAC3C;;AC3DO,SAAS,YAAe,KAAuB,EAAA;AACpD,EAAO,OAAAP,iBAAA,CAAW,SAAS,eAAA,CAAgB,CAAG,EAAA;AAC5C,IAAA,IAAI,KAAQ,GAAA,KAAA;AACZ,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AAChB,MAAA,IAAI,UAAU,KAAO,EAAA;AACnB,QAAQ,KAAA,GAAA,IAAA;AAAA,OACH,MAAA;AACL,QAAA,CAAA,CAAE,CAAC,CAAA;AAAA;AACL,KACD,CAAA;AAAA,GACF,CAAA;AACH;;ACFgB,SAAA,IAAA,CAId,OAA6B,GAA4C,EAAA;AACzE,EAAM,MAAA,WAAA,GAAcI,iBAAO,KAAK,CAAA;AAChC,EAAA,MAAM,YAAe,GAAAA,gBAAA,CAAOL,uBAAc,CAAA,GAAG,CAAC,CAAA;AAC9C,EAAO,OAAAS,uBAAA;AAAA,IACL,SAAS,SAAS,CAAG,EAAA;AACnB,MAAIE,aAAA,CAAA,WAAA,EAAa,YAAY,CAAE,CAAA,IAAA,CAAK,CAAC,CAAC,IAAA,EAAM,KAAK,CAAM,KAAA;AACrD,QAAM,MAAA,IAAA,GAAO,KAAM,CAAA,KAAA,CAAM,GAAG,CAAA;AAC5B,QAAA,IAAI,KAAiB,GAAA,IAAA;AACrB,QAAK,IAAA,CAAA,OAAA,CAAQ,CAACC,IAAgB,KAAA;AAC5B,UAAA,KAAA,GAAS,MAAkCA,IAAG,CAAA;AAAA,SAC/C,CAAA;AACD,QAAI,IAAA,KAAA,KAAU,MAAa,IAAA,KAAA,KAAU,IAAM,EAAA;AACzC,UAAA,CAAA,CAAE,KAAU,CAAA;AAAA;AACd,OACD,CAAA;AAAA,KACH;AAAA,IACA,CAAC,KAAU,KAAA;AACT,MAAMA,MAAAA,IAAAA,GAAMV,oBAAU,YAAY,CAAA;AAClC,MAAI,IAAAK,kBAAA,CAASK,IAAG,CAAG,EAAA;AACjB,QAAM,MAAA,IAAA,GAAOV,oBAAU,KAAK,CAAA;AAC5B,QAAA,KAAA,CAAM,GAAI,CAAA;AAAA,UACR,GAAG,KAAK,sBAAuB,EAAA;AAAA,UAC/B,CAACU,IAAAA,CAAI,sBAAuB,EAAC,GAAG;AAAA,SAC5B,CAAA;AAAA;AACR;AACF,GACF;AACF;;ACtCA,MAAM,MAAA,GAAS,OAAO,SAAS,CAAA;AAMf,SAAA,IAAA,CAId,KAAuB,EAAA,MAAA,EAAyB,GAAuB,EAAA;AACvE,EAAM,MAAA,MAAA,GAASZ,wBAAc,MAAM,CAAA;AACnC,EAAM,MAAA,IAAA,GAAOA,uBAAc,CAAA,GAAA,IAAO,MAAM,CAAA;AACxC,EAAO,OAAAU,iBAAA,CAAQC,aAAI,CAAA,KAAA,EAAO,MAAQ,EAAA,IAAI,CAAG,EAAA,CAAC,CAAC,IAAA,EAAM,KAAO,EAAA,CAAC,CAAM,KAAA;AAC7D,IAAM,MAAA,IAAA,GAAO,KAAM,CAAA,KAAA,CAAM,GAAG,CAAA;AAC5B,IAAA,IAAI,KAAiB,GAAA,IAAA;AACrB,IAAK,IAAA,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AACpB,MAAA,KAAA,GAAS,MAAkC,GAAG,CAAA;AAAA,KAC/C,CAAA;AACD,IAAI,IAAA,KAAA,KAAU,MAAa,IAAA,KAAA,KAAU,IAAM,EAAA;AACzC,MAAO,OAAA,KAAA;AAAA,KACT,MAAA,IAAW,MAAM,MAAQ,EAAA;AACvB,MAAO,OAAA,CAAA;AAAA;AACT,GACD,CAAA;AACH;;AC1BgB,SAAA,WAAA,CAId,OAAwB,MAAyB,EAAA;AACjD,EAAM,MAAA,KAAA,GAAQX,wBAAc,KAAK,CAAA;AACjC,EAAM,MAAA,MAAA,GAASA,wBAAc,MAAM,CAAA;AACnC,EAAA,OAAOa,eAAM,CAAA,IAAA,CAAQ,KAAO,EAAA,MAAA,EAAQC,iBAAO,CAAC,CAAA;AAC9C;;ACTgB,SAAA,OAAA,CACd,OACA,QACA,EAAA;AACA,EAAO,OAAAb,iBAAA,CAAW,SAAS,WAAA,CAAY,CAAG,EAAA;AACxC,IAAA,QAAA,CAAS,KAAK,MAAM;AAClB,MAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA,KACb,CAAA;AAAA,GACF,CAAA;AACH;;ACTgB,SAAA,eAAA,CACd,SACA,UACA,EAAA;AACA,EAAM,MAAA,OAAA,GAAUD,wBAAc,OAAO,CAAA;AACrC,EAAM,MAAA,UAAA,GAAaA,wBAAc,UAAU,CAAA;AAC3C,EAAM,MAAA,aAAA,GAAgB,CAAC,GAAA,EAAU,SAAyB,KAAA;AACxD,IAAI,IAAA,GAAA,KAAQ,QAAQ,OAAO,GAAA,KAAQ,YAAY,KAAM,CAAA,OAAA,CAAQ,GAAG,CAAG,EAAA;AACjE,MAAO,OAAA,GAAA;AAAA;AAGT,IAAA,MAAM,SAAkC,EAAC;AAEzC,IAAA,KAAA,MAAW,CAAC,GAAK,EAAA,KAAK,KAAK,MAAO,CAAA,OAAA,CAAQ,GAAG,CAAG,EAAA;AAC9C,MAAI,IAAA,SAAA,CAAU,QAAS,CAAA,KAAK,CAAG,EAAA;AAE/B,MAAM,MAAA,cAAA,GAAiB,aAAc,CAAA,KAAA,EAAO,SAAS,CAAA;AAErD,MAAA,IACE,mBAAmB,MACnB,IAAA,EACE,OAAO,cAAmB,KAAA,QAAA,IAC1B,mBAAmB,IACnB,IAAA,CAAC,KAAM,CAAA,OAAA,CAAQ,cAAc,CAC7B,IAAA,MAAA,CAAO,KAAK,cAAc,CAAA,CAAE,WAAW,CAEzC,CAAA,EAAA;AACA,QAAA,MAAA,CAAO,GAAG,CAAI,GAAA,cAAA;AAAA;AAChB;AAGF,IAAO,OAAA,MAAA;AAAA,GACT;AAEA,EAAO,OAAAe,kBAAA,CAAS,aAAe,EAAA,OAAA,EAAS,UAAU,CAAA;AACpD;;ACnCgB,SAAA,IAAA,CAAQ,SAAyB,QAAuB,EAAA;AACtE,EAAO,OAAAd,iBAAA,CAAW,SAAS,QAAA,CAAS,CAAG,EAAA;AACrC,IAAM,MAAA,UAAA,GAAaC,oBAAU,OAAO,CAAA;AACpC,IAAA,UAAA,CAAW,SAAU,EAAA;AACrB,IAAA,QAAA,CAAS,KAAK,MAAM;AAClB,MAAM,MAAA,KAAA,GAAQ,WAAW,SAAU,EAAA;AACnC,MAAI,IAAAK,kBAAA,CAAS,KAAK,CAAG,EAAA;AACnB,QAAA,CAAA,CAAE,KAAK,CAAA;AAAA;AACT,KACD,CAAA;AAAA,GACF,CAAA;AACH;;ACLgB,SAAA,IAAA,CAAQ,OAA0B,EAAA,KAAA,GAAgB,CAAG,EAAA;AACnE,EAAM,MAAA,KAAA,GAAQP,wBAAc,OAAO,CAAA;AACnC,EAAO,OAAAC,iBAAA,CAAW,SAAS,QAAA,CAAS,CAAG,EAAA;AACrC,IAAA,IAAI,SAA4B,GAAA,IAAA;AAChC,IAAgBe,yBAAA,CAAA,KAAA,EAAO,CAAC,EAAO,KAAA;AAC7B,MAAA,OAAO,CAAC,CAAM,KAAA;AACZ,QAAA,IAAI,SAAW,EAAA;AACb,UAAA,YAAA,CAAa,SAAmB,CAAA;AAAA;AAElC,QAAA,SAAA,GAAY,WAAW,MAAM;AAC3B,UAAA,EAAA,CAAG,CAAC,CAAA;AAAA,WACH,KAAK,CAAA;AAAA,OACV;AAAA,KACD,CAAE,CAAA,IAAA,CAAK,CAAC,CAAA;AAAA,GACV,CAAA;AACH;;ACrBO,SAAS,KAAQ,KAAuB,EAAA;AAC7C,EAAO,OAAAf,iBAAA,CAAW,SAAS,QAAA,CAAS,CAAG,EAAA;AACrC,IAAA,IAAI,kBAAqB,GAAA,KAAA;AACzB,IAAA,IAAI,SAAsB,GAAA,IAAA;AAE1B,IAAA,MAAM,oBAAoB,MAAM;AAC9B,MAAqB,kBAAA,GAAA,IAAA;AACrB,MAAA,cAAA,CAAe,MAAM;AACnB,QAAqB,kBAAA,GAAA,KAAA;AACrB,QAAA,IAAI,cAAc,IAAM,EAAA;AACtB,UAAA,CAAA,CAAE,SAAS,CAAA;AACX,UAAY,SAAA,GAAA,IAAA;AAAA;AACd,OACD,CAAA;AAAA,KACH;AAEA,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AAChB,MAAY,SAAA,GAAA,CAAA;AACZ,MAAA,IAAI,CAAC,kBAAoB,EAAA;AACvB,QAAkB,iBAAA,EAAA;AAAA;AACpB,KACD,CAAA;AAAA,GACF,CAAA;AACH;;ACtBO,SAAS,UAAa,KAAuC,EAAA;AAClE,EAAO,OAAAA,iBAAA,CAAW,SAAS,aAAA,CAAc,CAAG,EAAA;AAC1C,IAAA,MAAM,SAAkC,EAAC;AAEzC,IAAA,KAAA,CAAM,IAAK,CAAA,CAAC,CAAC,GAAA,EAAK,KAAK,CAAM,KAAA;AAC3B,MAAA,MAAA,CAAO,GAAG,CAAI,GAAA,KAAA;AACd,MAAA,CAAA,CAAE,MAAW,CAAA;AAAA,KACd,CAAA;AAAA,GACF,CAAA;AACH;;ACRO,SAAS,OAAU,MAA2B,EAAA;AACnD,EAAO,OAAAA,iBAAA,CAAmC,SAAS,UAAA,CAAW,CAAG,EAAA;AAC/D,IAAM,MAAA,IAAA,GAAO,MAAO,CAAA,IAAA,CAAK,MAAM,CAAA;AAC/B,IAAK,IAAA,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AACpB,MAAA,MAAA,CAAO,GAAG,CAAA,GAAID,uBAAc,CAAA,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,KACxC,CAAA;AACD,IAAIW,aAAA,CAAA,GAAI,OAAO,MAAO,CAAA,MAAM,CAAS,CAAE,CAAA,IAAA,CAAK,CAAC,OAAY,KAAA;AACvD,MAAA,MAAMM,UAA8B,EAAC;AACrC,MAAQ,OAAA,CAAA,OAAA,CAAQ,CAAC,KAAA,EAAO,KAAU,KAAA;AAChC,QAAAA,OAAO,CAAA,IAAA,CAAK,KAAK,CAAC,CAAI,GAAA,KAAA;AAAA,OACvB,CAAA;AACD,MAAA,CAAA,CAAEA,OAAM,CAAA;AAAA,KACT,CAAA;AAAA,GACF,CAAA;AACH;;ACNgB,SAAA,WAAA,CACd,OACA,cACA,EAAA;AACA,EAAM,MAAA,KAAA,GAAQjB,wBAAc,KAAK,CAAA;AACjC,EAAO,OAAAC,iBAAA,CAAQ,CAAC,OAAY,KAAA;AAC1B,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AAChB,MAAA,MAAM,iBAAyC,EAAC;AAChD,MAAA,MAAM,eAAe,MAAO,CAAA,WAAA;AAAA,QAC1B,OAAO,OAAQ,CAAA,CAAC,CAAE,CAAA,GAAA,CAAI,CAAC,KAAU,KAAA;AAC/B,UAAA,IAAI,cAAe,CAAA,KAAA,CAAM,CAAC,CAAC,CAAG,EAAA;AAC5B,YAAe,cAAA,CAAA,KAAA,CAAM,CAAC,CAAC,CAAI,GAAA,CAAA;AAC3B,YAAO,OAAA,CAAC,KAAM,CAAA,CAAC,CAAG,EAAA,cAAA,CAAe,MAAM,CAAC,CAAC,CAAE,CAAA,CAAC,CAAC,CAAA;AAAA;AAG/C,UAAO,OAAA,CAAC,MAAM,CAAC,CAAA,EAAGiB,aAAG,KAAM,CAAA,CAAC,CAAC,CAAC,CAAA;AAAA,SAC/B;AAAA,OACH;AAEA,MAAA,MAAA,CAAO,IAAK,CAAA,cAAc,CAAE,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AAC3C,QAAI,IAAA,CAAC,cAAe,CAAA,GAAG,CAAG,EAAA;AACxB,UAAA,YAAA,CAAa,GAAG,CAAA,GAAI,cAAe,CAAA,GAAG,EAAE,CAAC,CAAA;AAAA;AAC3C,OACD,CAAA;AACD,MAAA,MAAM,MAAS,GAAAC,cAAA,CAAK,MAAO,CAAA,YAAY,CAAC,CAAA;AACxC,MAAA,MAAA,CAAO,KAAK,OAAO,CAAA;AAAA,KACpB,CAAA;AAAA,GACF,CAAA;AACH;;ACxCgB,SAAA,eAAA,CACd,OACA,cACA,EAAA;AACA,EAAO,OAAAC,aAAA,CAAIpB,wBAAc,KAAK,CAAA,EAAG,CAAC,CAAM,KAAA,WAAA,CAAY,CAAG,EAAA,cAAc,CAAC,CAAA;AACxE;;ACHgB,SAAA,GAAA,CAAI,MAA4B,IAA4B,EAAA;AAC1E,EAAO,OAAAC,iBAAA,CAAiB,SAAS,OAAA,CAAQ,CAAG,EAAA;AAC1C,IAAIU,aAAA,CAAA,IAAA,EAAM,IAAI,CAAE,CAAA,IAAA,CAAK,CAAC,CAAC,GAAA,EAAK,GAAG,CAAM,KAAA;AACnC,MAAE,CAAA,CAAA,CAAC,EAAE,GAAA,IAAO,GAAI,CAAA,CAAA;AAAA,KACjB,CAAA;AAAA,GACF,CAAA;AACH;;ACNO,SAAS,KAAK,KAAoB,EAAA;AACvC,EAAO,OAAAV,iBAAA,CAAiB,SAAS,QAAA,CAAS,CAAG,EAAA;AAC3C,IAAAS,iBAAA,CAAQ,KAAO,EAAA,OAAO,CAAE,CAAA,IAAA,CAAK,CAAC,CAAA;AAAA,GAC/B,CAAA;AACH;;ACJO,SAAS,IAAI,KAA6B,EAAA;AAC/C,EAAO,OAAAT,iBAAA,CAAiB,SAAS,OAAA,CAAQ,CAAG,EAAA;AAC1C,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AAChB,MAAA,CAAA,CAAE,CAAC,CAAC,CAAA;AAAA,KACL,CAAA;AAAA,GACF,CAAA;AACH;;ACNgB,SAAA,EAAA,CAAG,MAA4B,IAA4B,EAAA;AACzE,EAAO,OAAAA,iBAAA,CAAiB,SAAS,MAAA,CAAO,CAAG,EAAA;AACzC,IAAIU,aAAA,CAAA,IAAA,EAAM,IAAI,CAAE,CAAA,IAAA,CAAK,CAAC,CAAC,GAAA,EAAK,GAAG,CAAM,KAAA;AACnC,MAAE,CAAA,CAAA,CAAC,EAAE,GAAA,IAAO,GAAI,CAAA,CAAA;AAAA,KACjB,CAAA;AAAA,GACF,CAAA;AACH;;ACPO,SAAS,SACd,KACA,EAAA;AACA,EAAA,OAAOV,iBAAW,CAAA,SAAS,YAAa,CAAA,OAAA,EAAS,MAAQ,EAAA;AACvD,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,IAAS,KAAA;AACnB,MAAI,IAAA;AACF,QAAQ,OAAA,CAAA,IAAA,CAAK,KAAM,CAAA,IAAI,CAAC,CAAA;AAAA,eACjB,CAAG,EAAA;AACV,QAAA,MAAA,CAAO,IAAI,KAAA,CAAM,CAAyB,sBAAA,EAAA,CAAC,EAAE,CAAC,CAAA;AAAA;AAChD,KACD,CAAA;AAAA,GACF,CAAA;AACH;;ACZO,SAAS,OAAO,KAAoB,EAAA;AACzC,EAAA,OAAOA,iBAAgB,CAAA,SAAS,UAAW,CAAA,OAAA,EAAS,MAAQ,EAAA;AAC1D,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,IAAkB,KAAA;AAC5B,MAAI,IAAA;AACF,QAAQ,OAAA,CAAA,IAAA,CAAK,SAAU,CAAA,IAAI,CAAC,CAAA;AAAA,OACtB,CAAA,MAAA;AACN,QAAO,MAAA,CAAA,IAAI,KAAM,CAAA,2BAA2B,CAAC,CAAA;AAAA;AAC/C,KACD,CAAA;AAAA,GACF,CAAA;AACH;;ACVO,SAAS,MAAgC,KAAuB,EAAA;AACrE,EAAO,OAAAA,iBAAA,CAAc,SAAS,SAAA,CAAU,CAAG,EAAA;AACzC,IAAQS,iBAAA,CAAA,KAAA,EAAO,CAAC,CAAM,KAAA,CAAA,CAAE,CAAC,CAAC,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,GACnC,CAAA;AACH;;ACHO,SAAS,YACd,UACA,EAAA,QAAA,EACA,QAAiC,GAAAQ,YAAA,CAAG,EAAE,CACtC,EAAA;AACA,EAAM,MAAA,QAAA,GAAWlB,wBAAc,UAAU,CAAA;AACzC,EAAM,MAAA,MAAA,GAASA,wBAAc,QAAQ,CAAA;AACrC,EAAM,MAAA,MAAA,GAASA,wBAAc,QAAQ,CAAA;AACrC,EAAO,OAAAC,iBAAA,CAAkB,SAAS,eAAA,CAAgB,CAAG,EAAA;AACnD,IAAIU,aAAA,CAAA,QAAA,EAAU,MAAQ,EAAA,MAAM,CAAE,CAAA,IAAA,CAAK,CAAC,CAAC,OAAA,EAAS,KAAO,EAAA,KAAK,CAAM,KAAA;AAC9D,MAAA,MAAM,SAAS,IAAI,MAAA,CAAO,SAAS,KAAK,CAAA,CAAE,KAAK,KAAK,CAAA;AACpD,MAAE,CAAA,CAAA,MAAA,IAAU,EAAE,CAAA;AAAA,KACf,CAAA;AAAA,GACF,CAAA;AACH;;ACdO,SAAS,cACd,UACA,EAAA,QAAA,EACA,QAAiC,GAAAO,YAAA,CAAG,EAAE,CACtC,EAAA;AACA,EAAM,MAAA,QAAA,GAAWlB,wBAAc,UAAU,CAAA;AACzC,EAAM,MAAA,MAAA,GAASA,wBAAc,QAAQ,CAAA;AACrC,EAAM,MAAA,MAAA,GAASA,wBAAc,QAAQ,CAAA;AACrC,EAAO,OAAAC,iBAAA,CAAiB,SAAS,iBAAA,CAAkB,CAAG,EAAA;AACpD,IAAIU,aAAA,CAAA,QAAA,EAAU,MAAQ,EAAA,MAAM,CAAE,CAAA,IAAA,CAAK,CAAC,CAAC,OAAA,EAAS,KAAO,EAAA,KAAK,CAAM,KAAA;AAC9D,MAAA,CAAA,CAAE,IAAI,MAAO,CAAA,OAAA,EAAS,KAAK,CAAE,CAAA,IAAA,CAAK,KAAK,CAAC,CAAA;AAAA,KACzC,CAAA;AAAA,GACF,CAAA;AACH;;ACbO,SAAS,cACd,CAAA,QAAA,EACA,UACA,EAAA,eAAA,EACA,WAAiC,EACjC,EAAA;AACA,EAAM,MAAA,MAAA,GAASX,wBAAc,QAAQ,CAAA;AACrC,EAAM,MAAA,QAAA,GAAWA,wBAAc,UAAU,CAAA;AACzC,EAAM,MAAA,aAAA,GAAgBA,wBAAc,eAAe,CAAA;AACnD,EAAM,MAAA,MAAA,GAASA,wBAAc,QAAQ,CAAA;AACrC,EAAO,OAAAU,iBAAA;AAAA,IACLC,aAAI,CAAA,QAAA,EAAU,MAAQ,EAAA,aAAA,EAAe,MAAM,CAAA;AAAA,IAC3C,CAAC,CAAC,OAAA,EAAS,KAAO,EAAA,YAAA,EAAc,KAAK,CAAM,KAAA;AACzC,MAAO,OAAA,MAAA,CAAO,KAAK,CAAE,CAAA,OAAA,CAAQ,IAAI,MAAO,CAAA,OAAA,EAAS,KAAK,CAAA,EAAG,YAAY,CAAA;AAAA;AACvE,GACF;AACF;;AChBgB,SAAA,GAAA,CACd,OACA,EAAA,MAAA,EACA,QACA,EAAA;AACA,EAAM,MAAA,KAAA,GAAQX,wBAAc,OAAO,CAAA;AACnC,EAAM,MAAA,IAAA,GAAOA,wBAAc,MAAM,CAAA;AACjC,EAAM,MAAA,MAAA,GAASA,wBAAc,QAAQ,CAAA;AACrC,EAAO,OAAAC,iBAAA,CAAW,SAAS,OAAA,CAAQ,CAAG,EAAA;AACpC,IAAIU,aAAA,CAAA,KAAA,EAAO,IAAM,EAAA,MAAM,CAAE,CAAA,IAAA,CAAK,CAAC,CAAC,IAAA,EAAM,GAAK,EAAA,KAAK,CAAM,KAAA;AACpD,MAAC,IAAA,CAAiC,GAAG,CAAI,GAAA,KAAA;AACzC,MAAA,CAAA,CAAE,IAAI,CAAA;AAAA,KACP,CAAA;AAAA,GACF,CAAA;AACH;;ACIgB,SAAA,MAAA,CACd,IACA,EAAA,MAAA,EACA,QACkC,EAAA;AAClC,EAAM,MAAA,OAAA,GAAUX,wBAAc,MAAM,CAAA;AACpC,EAAO,OAAAC,iBAAA,CAAW,SAAS,UAAA,CAAW,CAAG,EAAA;AACvC,IAAA,MAAM,KAAKE,0BAAiB,EAAA;AAC5B,IAAA,MAAM,aAAa,MAAM;AACvB,MAAA,EAAA,CAAG,OAAQ,EAAA;AAAA,KACb;AACA,IAAIQ,aAAA,CAAA,OAAA,EAAS,IAAI,CAAE,CAAA,IAAA,CAAK,CAAC,CAACU,OAAAA,EAAQ,GAAG,CAAM,KAAA;AACzC,MAAW,UAAA,EAAA;AACX,MAAA,MAAM,QAAW,GAAAV,aAAA;AAAA,QACf,GAAGU,OAAO,CAAA,GAAA;AAAA,UAAI,CAACC,EACb,KAAA,aAAA;AAAA,YACEJ,YAAA,CAAGI,GAAE,OAAO,CAAA;AAAA,YACZJ,aAAG,GAAG,CAAA;AAAA,YACNI,EAAE,CAAA,YAAA,GAAeJ,YAAGI,CAAAA,EAAAA,CAAE,YAAY,CAAI,GAAA;AAAA;AACxC;AACF,OACF;AACA,MAAS,QAAA,CAAA,IAAA,CAAK,CAAC,OAAY,KAAA;AACzB,QAAA,MAAM,QAAQ,OAAQ,CAAA,SAAA,CAAU,CAAC,CAAA,KAAM,MAAM,IAAI,CAAA;AAEjD,QAAA,IAAI,UAAU,EAAI,EAAA;AAChB,UAAA,MAAM,WAAW,QAAS,EAAA;AAC1B,UAAA,EAAA,CAAG,IAAI,QAAQ,CAAA;AACf,UAAA,QAAA,CAAS,KAAK,CAAC,CAAA;AAAA;AAGjB,QAAA,IAAI,QAAQ,EAAI,EAAA;AACd,UAAA,MAAM,QAAWD,GAAAA,OAAAA,CAAO,KAAK,CAAA,CAAE,OAAQ,EAAA;AACvC,UAAA,EAAA,CAAG,IAAI,QAAQ,CAAA;AACf,UAAA,QAAA,CAAS,KAAK,CAAC,CAAA;AAAA;AACjB,OACD,CAAA;AAAA,KACF,CAAA;AAED,IAAO,OAAA,UAAA;AAAA,GACR,CAAA;AACH;;AC3DO,SAAS,YACd,CAAA,OAAA,EACA,WAAmC,GAAAH,YAAA,CAAG,EAAE,CACxC,EAAA;AACA,EAAO,OAAAjB,iBAAA,CAAgB,SAAS,gBAAA,CAAiB,CAAG,EAAA;AAClD,IAAIU,aAAA,CAAA,WAAA,EAAa,GAAG,OAAO,CAAA,CAAE,KAAK,CAAC,CAAC,QAAa,EAAA,GAAA,OAAO,CAAM,KAAA;AAC5D,MAAE,CAAA,CAAA,OAAA,CAAQ,IAAK,CAAA,QAAQ,CAAC,CAAA;AAAA,KACzB,CAAA;AAAA,GACF,CAAA;AACH;;;;;ACSO,SAAS,SACd,GAA4D,GAAA,EAAA,EAC5D,UAAiDO,YAAG,CAAA,EAAE,CACtD,EAAA;AACA,EAAA,MAAM,OAAOV,cAAa,EAAA;AAC1B,EAAA,IAAI,OAAO,GAAA,KAAQ,QAAY,IAAAe,mBAAA,CAAU,GAAG,CAAG,EAAA;AAC7C,IAAK,IAAA,CAAA,KAAA,CAAMvB,uBAAc,CAAA,GAAG,CAAC,CAAA;AAAA;AAG/B,EAAA,MAAM,IAAI,IAAI,YAAA;AAAA,IACZ,IAAA;AAAA,IACA,OAAA,GAAUA,uBAAc,CAAA,OAAO,CAAI,GAAA;AAAA,GACrC;AAEA,EAAI,IAAA,OAAO,QAAQ,UAAY,EAAA;AAC7B,IAAK,IAAA,CAAA,KAAA;AAAA,MACHC,iBAAA,CAAQ,CAAC,CAAM,KAAA;AACb,QAAE,CAAA,CAAA,GAAA,CAAI,CAAC,CAAC,CAAA;AAAA,OACT;AAAA,KACH;AAAA;AAGF,EAAO,OAAA,CAAA;AACT;AAEA,MAAM,YAA6D,CAAA;AAAA,EAO1D,WAAA,CACG,OAA4BiB,YAAG,CAAA,EAAE,GACjC,OAAgD,GAAAA,YAAA,CAAG,EAAE,CAC7D,EAAA;AAFQ,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AARV,IAAA,aAAA,CAAA,IAAA,EAAQ,MAAKf,0BAAiB,EAAA,CAAA;AAC9B,IAAQ,aAAA,CAAA,IAAA,EAAA,YAAA,EAAa,IAAIqB,oBAAW,EAAA,CAAA;AACpC,IAAA,aAAA,CAAA,IAAA,EAAQ,MAAoC,EAAA;AAAA,MAC1C,IAAA,EAAMN,aAAG,MAAM;AAAA,KACjB,CAAA;AAAA;AAKG,EAEI,KAAK,SAA4C,EAAA;AACtD,IAAM,MAAA,KAAA,GAAQ,MAAO,CAAA,IAAA,CAAK,IAAI,CAAA;AAC9B,IAAAR,iBAAA,CAAQC,aAAI,CAAA,IAAA,CAAK,IAAM,EAAA,IAAA,CAAK,OAAS,EAAA,KAAK,CAAG,EAAA,CAAC,CAAC,IAAA,EAAM,KAAO,EAAA,IAAI,CAAM,KAAA;AACpE,MAAI,IAAA;AACF,QAAO,MAAA,CAAA,OAAA,CAAQ,KAAK,CAAE,CAAA,OAAA,CAAQ,CAAC,CAAC,EAAA,EAAI,GAAG,CAAM,KAAA;AAC3C,UAAA,IAAA,GAAO,IAAK,CAAA,UAAA,CAAW,EAAI,EAAA,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,SACvC,CAAA;AACD,QAAO,MAAA,CAAA,OAAA,CAAQ,IAAI,CAAE,CAAA,OAAA,CAAQ,CAAC,CAAC,EAAA,EAAI,GAAG,CAAM,KAAA;AAC1C,UAAA,IAAA,GAAO,IAAK,CAAA,UAAA,CAAW,EAAI,EAAA,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,SACvC,CAAA;AAAA,eACM,CAAG,EAAA;AACV,QAAK,IAAA,CAAA,UAAA,CAAW,OAAO,CAAC,CAAA;AAAA;AAG1B,MAAO,OAAA,IAAA;AAAA,KACR,CAAE,CAAA,IAAA,CAAK,SAAS,CAAA;AACjB,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,SAAS,KAAe,EAAA;AAC7B,IAAK,IAAA,CAAA,IAAA,GAAOO,aAAG,KAAK,CAAA;AAAA;AACtB;AAAA;AAAA;AAAA;AAAA,EAMO,IAAI,GAA0B,EAAA;AACnC,IAAA,MAAM,IACJ,GAAA,IAAA,CAAK,GAAI,EAAA,CAAE,SAAS,EAAE,CAAA,GAAI,IAAK,CAAA,MAAA,EAAS,CAAA,QAAA,CAAS,EAAE,CAAA,CAAE,UAAU,CAAC,CAAA;AAClE,IAAM,MAAA,OAAA,GAAU,OAAO,IAAI,CAAA,CAAA;AAC3B,IAAI,IAAAO,uBAAA,CAAc,GAAG,CAAG,EAAA;AACtB,MAAK,IAAA,CAAA,EAAA,CAAG,IAAI,GAAG,CAAA;AAAA;AAEjB,IAAK,IAAA,CAAA,IAAA,CAAK,OAAO,CAAI,GAAA,GAAA;AACrB,IAAO,OAAA,OAAA;AAAA;AACT,EAEO,MAAM,QAA4C,EAAA;AACvD,IAAK,IAAA,CAAA,UAAA,CAAW,MAAM,QAAQ,CAAA;AAC9B,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,OAAgB,GAAA;AACrB,IAAA,IAAA,CAAK,GAAG,OAAQ,EAAA;AAChB,IAAO,OAAA,IAAA;AAAA;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"silentium-components.cjs","sources":["../src/behaviors/Branch.ts","../src/behaviors/BranchLazy.ts","../src/behaviors/Const.ts","../src/behaviors/Deadline.ts","../src/behaviors/Deferred.ts","../src/behaviors/Detached.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Lock.ts","../src/behaviors/Memo.ts","../src/behaviors/MergeAccumulation.ts","../src/behaviors/OnlyChanged.ts","../src/behaviors/Part.ts","../src/behaviors/Path.ts","../src/behaviors/PathExisted.ts","../src/behaviors/Polling.ts","../src/behaviors/RecordTruncated.ts","../src/behaviors/Shot.ts","../src/behaviors/Task.ts","../src/behaviors/Tick.ts","../src/structures/HashTable.ts","../src/structures/Record.ts","../src/behaviors/Transformed.ts","../src/behaviors/TransformedList.ts","../src/boolean/And.ts","../src/boolean/Bool.ts","../src/boolean/Not.ts","../src/boolean/Or.ts","../src/formats/FromJson.ts","../src/formats/ToJson.ts","../src/lists/First.ts","../src/system/RegexpMatch.ts","../src/system/RegexpMatched.ts","../src/system/RegexpReplaced.ts","../src/system/Set.ts","../src/navigation/Router.ts","../src/strings/Concatenated.ts","../src/strings/Template.ts"],"sourcesContent":["import { ActualMessage, MaybeMessage, Message, MessageType, Primitive } from \"silentium\";\n\n/**\n * Allows switching between left and right messages depending on condition\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function Branch<Then, Else>(\n _condition: MaybeMessage<boolean>,\n _left: MaybeMessage<Then>,\n _right?: MaybeMessage<Else>,\n) {\n const $condition = ActualMessage(_condition);\n const $left = ActualMessage(_left);\n const $right = ActualMessage(_right);\n return Message<Then | Else>(function BranchImpl(r) {\n const left = Primitive($left);\n let right: ReturnType<typeof Primitive<Else>>;\n if (_right !== undefined) {\n right = Primitive($right as MessageType<Else>);\n }\n $condition.then((v) => {\n if (typeof v !== \"boolean\") {\n throw new Error(\"Branch received not boolean value\");\n }\n let result: Then | Else | null = null;\n if (v === true) {\n result = left.primitive();\n } else if (right) {\n result = right.primitive();\n }\n if (result !== null) {\n r(result);\n }\n });\n });\n}\n","import {\n ConstructorType,\n DestroyableType,\n DestroyContainer,\n Message,\n MessageType,\n} from \"silentium\";\n\n/**\n * Depending on the $condition message,\n * creates a new left or right message.\n * When condition changes, old messages are destroyed\n * and new ones are created.\n */\nexport function BranchLazy<Then, Else>(\n $condition: MessageType<boolean>,\n $left: ConstructorType<[], MessageType<Then>>,\n $right?: ConstructorType<[], MessageType<Else>>,\n): MessageType<Then | Else> & DestroyableType {\n return Message(function BranchLazyImpl(r) {\n const dc = DestroyContainer();\n const destructor = () => {\n dc.destroy();\n };\n $condition.then((v) => {\n destructor();\n let instance: MessageType<Then | Else> | undefined;\n if (v) {\n instance = $left();\n } else if ($right) {\n instance = $right();\n }\n if (instance !== undefined) {\n instance.then(r);\n dc.add(instance);\n }\n });\n return destructor;\n });\n}\n","import { Message, MessageType, ResetSilenceCache } from \"silentium\";\n\n/**\n * Constant value that will be\n * returned on each value from\n * the $trigger message\n */\nexport function Constant<T>(\n permanent: T,\n $trigger: MessageType,\n): MessageType<T> {\n return Message<T>(function ConstantImpl(resolve, reject) {\n $trigger.catch(reject).then(() => {\n resolve(permanent);\n // Do cache reset, it gives ability to send constant of same value many times\n resolve(ResetSilenceCache as T);\n });\n });\n}\n","import {\n ActualMessage,\n Filtered,\n MaybeMessage,\n Message,\n MessageType,\n Shared,\n} from \"silentium\";\n\n/**\n * Will return an error via error transport if\n * time runs out from $timeout; if $base manages to\n * respond before $timeout then the value from base will be returned\n */\nexport function Deadline<T>(\n $base: MessageType<T>,\n _timeout: MaybeMessage<number>,\n) {\n const $timeout = ActualMessage(_timeout);\n return Message<T>(function DeadlineImpl(resolve, reject) {\n let timer: ReturnType<typeof setTimeout> | number = 0;\n const base = Shared($base);\n $timeout.then((timeout) => {\n if (timer) {\n clearTimeout(timer);\n }\n let timeoutReached = false;\n\n timer = setTimeout(() => {\n if (timeoutReached) {\n return;\n }\n timeoutReached = true;\n reject(new Error(\"Timeout reached in Deadline\"));\n }, timeout);\n\n const f = Filtered(base, () => !timeoutReached);\n f.then(resolve);\n\n base.then(() => {\n timeoutReached = true;\n });\n });\n });\n}\n","import { isFilled, Message, MessageType, Primitive } from \"silentium\";\n\n/**\n * Defer one source after another, gives values Of baseSrc only when triggerSrc responds\n * https://silentium-lab.github.io/silentium-components/#/behaviors/deferred\n */\nexport function Deferred<T>(\n $base: MessageType<T>,\n $trigger: MessageType<unknown>,\n) {\n return Message<T>(function DeferredImpl(r) {\n const base = Primitive($base);\n $trigger.then(() => {\n const value = base.primitive();\n if (isFilled(value)) {\n r(value);\n }\n });\n });\n}\n","import { isFilled, Message, MessageType, Primitive } from \"silentium\";\n\n/**\n * Message separate from the base\n * allows to take one value from the base\n * but not react to new values of the base message\n */\nexport function Detached<T>($base: MessageType<T>): MessageType<T> {\n return Message<T>(function DetachedImpl(r) {\n const v = Primitive($base).primitive();\n if (isFilled(v)) {\n r(v);\n }\n });\n}\n","import { All, Applied, Late, MessageSource, MessageType } from \"silentium\";\n\n/**\n * Takes source and remember it first value\n * returns new record, what will contain only fields what was changed\n * https://silentium-lab.github.io/silentium-components/#/behaviors/dirty\n */\nexport function Dirty<T extends Record<string, unknown>>(\n $base: MessageType<T>,\n keep: string[] = [],\n exclude: string[] = [],\n cloner?: (v: T) => T,\n) {\n const $comparing = Late<T>({} as T);\n if (cloner === undefined) {\n cloner = (value) => JSON.parse(JSON.stringify(value));\n }\n return MessageSource<T>(\n function DirtyImpl(r) {\n const $comparingClone = Applied($comparing, cloner);\n All($comparingClone, $base).then(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n r(\n Object.fromEntries(\n Object.entries(comparing).filter(([key, value]) => {\n if (keep.includes(key)) {\n return true;\n }\n if (exclude.includes(key)) {\n return false;\n }\n return value !== (base as Record<string, unknown>)[key];\n }),\n ) as T,\n );\n });\n },\n (v) => {\n $comparing.use(v);\n },\n );\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * Representation Of loading process\n * first message begins loading\n * second message stops loading\n * https://silentium-lab.github.io/silentium-components/#/behaviors/loading\n */\nexport function Loading(\n $start: MessageType<unknown>,\n $finish: MessageType<unknown>,\n) {\n return Message<boolean>(function LoadingImpl(r) {\n $start.then(() => r(true));\n $finish.then(() => r(false));\n });\n}\n","import { Filtered, Message, MessageType } from \"silentium\";\n\n/**\n * Allows locking messages\n * if a $lock message arrives\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport function Lock<T>($base: MessageType<T>, $lock: MessageType<boolean>) {\n return Message<T>(function LockImpl(r) {\n let locked = false;\n $lock.then((newLock) => {\n locked = newLock;\n });\n const i = Filtered($base, () => !locked);\n i.then(r);\n });\n}\n","import { isFilled, Message, MessageType } from \"silentium\";\n\n/**\n * Didn't respond if new value Of baseSrc equals to old value\n * https://silentium-lab.github.io/silentium-components/#/behaviors/memo\n */\nexport function Memo<T>($base: MessageType<T>) {\n return Message<T>(function MemoImpl(r) {\n let last: T | null = null;\n $base.then((v) => {\n if (v !== last && isFilled(v)) {\n r(v);\n last = v;\n }\n });\n });\n}\n","import { Late, MessageType } from \"silentium\";\n\n/**\n * Есть объект и каждое новое его значение нужно мержить с прошлым\n * чтобы накопить общие изменения\n */\nexport function MergeAccumulation<T extends object>(\n $base: MessageType<T>,\n $reset?: MessageType<T>,\n): MessageType<T> {\n const accumulation = Late<T>();\n const lastAccumulated = {};\n $base.then((nextValue) => {\n accumulation.use(\n mergeWith(lastAccumulated, nextValue, (value1: any, value2: any) => {\n if (Array.isArray(value1)) {\n return value1.concat(value2);\n }\n }),\n );\n });\n\n if ($reset) {\n $reset.then((resetValue) => {\n accumulation.use(resetValue);\n });\n }\n\n return accumulation;\n}\n\nfunction mergeWith<TObject, TSource>(\n target: TObject,\n source: TSource,\n customizer: (\n objValue: any,\n srcValue: any,\n key: string,\n object: any,\n source: any,\n ) => any,\n): TObject & TSource {\n if (source == null) {\n return target as TObject & TSource;\n }\n\n Object.keys(source).forEach((key) => {\n const srcValue = (source as any)[key];\n const objValue = (target as any)[key];\n const result = customizer(objValue, srcValue, key, target, source);\n\n if (result !== undefined) {\n (target as any)[key] = result;\n } else if (isObject(srcValue) && isObject(objValue)) {\n mergeWith(objValue, srcValue, customizer);\n } else {\n (target as any)[key] = srcValue;\n }\n });\n\n return target as TObject & TSource;\n}\n\nfunction isObject(value: any): value is \"object\" {\n return value != null && typeof value === \"object\";\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * Represents source what was changed at least once\n * https://silentium-lab.github.io/silentium-components/#/behaviors/only-changed\n */\nexport function OnlyChanged<T>($base: MessageType<T>) {\n return Message<T>(function OnlyChangedImpl(r) {\n let first = false;\n $base.then((v) => {\n if (first === false) {\n first = true;\n } else {\n r(v);\n }\n });\n });\n}\n","import {\n ActualMessage,\n All,\n isFilled,\n MaybeMessage,\n MessageSource,\n MessageSourceType,\n Primitive,\n Shared,\n} from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Part<\n R,\n T extends object | Array<any> = any,\n K extends string = any,\n>($base: MessageSourceType<T>, key: MaybeMessage<K>): MessageSourceType<R> {\n const $baseShared = Shared($base);\n const $keyedShared = Shared(ActualMessage(key));\n return MessageSource(\n function PartImpl(r) {\n All($baseShared, $keyedShared).then(([base, keyed]) => {\n const keys = keyed.split(\".\");\n let value: unknown = base;\n keys.forEach((key: string) => {\n value = (value as Record<string, unknown>)[key];\n });\n if (value !== undefined && value !== base) {\n r(value as R);\n }\n });\n },\n (value) => {\n const key = Primitive($keyedShared);\n if (isFilled(key)) {\n const base = Primitive($base);\n $base.use({\n ...base.primitiveWithException(),\n [key.primitiveWithException()]: value,\n } as T);\n }\n },\n );\n}\n","import {\n ActualMessage,\n All,\n Applied,\n MaybeMessage,\n MessageType,\n} from \"silentium\";\n\nconst NotSet = Symbol(\"not-set\");\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Path<\n R,\n T extends object | Array<any> = any,\n K extends string = any,\n>($base: MessageType<T>, _keyed: MaybeMessage<K>, def?: MaybeMessage<T>) {\n const $keyed = ActualMessage(_keyed);\n const $def = ActualMessage(def ?? NotSet);\n return Applied(All($base, $keyed, $def), ([base, keyed, d]) => {\n const keys = keyed.split(\".\");\n let value: unknown = base;\n keys.forEach((key) => {\n value = (value as Record<string, unknown>)[key];\n });\n if (value !== undefined && value !== base) {\n return value as R;\n } else if (d !== NotSet) {\n return d as R;\n }\n }) as MessageType<R>;\n}\n","import { ActualMessage, Empty, MaybeMessage, Nothing } from \"silentium\";\n\nimport { Path } from \"../behaviors/Path\";\n\n/**\n * Path with separate empty message\n */\nexport function PathExisted<\n R,\n T extends object | Array<any> = any,\n K extends string = any,\n>(_base: MaybeMessage<T>, _keyed: MaybeMessage<K>) {\n const $base = ActualMessage(_base);\n const $keyed = ActualMessage(_keyed);\n return Empty(Path<R>($base, $keyed, Nothing));\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * Active polling of $base message\n * synchronized with $trigger message\n */\nexport function Polling<T>(\n $base: MessageType<T>,\n $trigger: MessageType<unknown>,\n) {\n return Message<T>(function PollingImpl(r) {\n $trigger.then(() => {\n $base.then(r);\n });\n });\n}\n","import { ActualMessage, Computed, MaybeMessage } from \"silentium\";\n\n/**\n * Helps eliminate unwanted values\n * that shouldn't exist in object fields\n */\nexport function RecordTruncated(\n _record: MaybeMessage<Record<string, unknown>>,\n _badValues: MaybeMessage<unknown[]>,\n) {\n const $record = ActualMessage(_record);\n const $badValues = ActualMessage(_badValues);\n const processRecord = (obj: any, badValues: unknown[]) => {\n if (obj === null || typeof obj !== \"object\" || Array.isArray(obj)) {\n return obj;\n }\n\n const result: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(obj)) {\n if (badValues.includes(value)) continue;\n\n const processedValue = processRecord(value, badValues);\n\n if (\n processedValue !== undefined &&\n !(\n typeof processedValue === \"object\" &&\n processedValue !== null &&\n !Array.isArray(processedValue) &&\n Object.keys(processedValue).length === 0\n )\n ) {\n result[key] = processedValue;\n }\n }\n\n return result;\n };\n\n return Computed(processRecord, $record, $badValues);\n}\n","import { isFilled, Message, MessageType, Primitive } from \"silentium\";\n\n/**\n * Helps to represent only last fresh value Of some source, refreshing controls by shotSrc\n * https://silentium-lab.github.io/silentium-components/#/behaviors/shot\n */\nexport function Shot<T>($target: MessageType<T>, $trigger: MessageType) {\n return Message<T>(function ShotImpl(r) {\n const targetSync = Primitive($target);\n targetSync.primitive();\n $trigger.then(() => {\n const value = targetSync.primitive();\n if (isFilled(value)) {\n r(value);\n }\n });\n });\n}\n","import {\n ActualMessage,\n ExecutorApplied,\n MaybeMessage,\n Message,\n} from \"silentium\";\n\n/**\n * Defer a message to the event loop\n * so that it executes once within\n * a certain timer firing interval\n */\nexport function Task<T>(baseSrc: MaybeMessage<T>, delay: number = 0) {\n const $base = ActualMessage(baseSrc);\n return Message<T>(function TaskImpl(r) {\n let prevTimer: unknown | null = null;\n ExecutorApplied($base, (fn) => {\n return (v) => {\n if (prevTimer) {\n clearTimeout(prevTimer as number);\n }\n prevTimer = setTimeout(() => {\n fn(v);\n }, delay);\n };\n }).then(r);\n });\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * Accumulates the last value Of the source and returns one result once per tick\n * https://silentium-lab.github.io/silentium-components/#/behaviors/tick\n */\nexport function Tick<T>($base: MessageType<T>) {\n return Message<T>(function TickImpl(r) {\n let microtaskScheduled = false;\n let lastValue: T | null = null;\n\n const scheduleMicrotask = () => {\n microtaskScheduled = true;\n queueMicrotask(() => {\n microtaskScheduled = false;\n if (lastValue !== null) {\n r(lastValue);\n lastValue = null;\n }\n });\n };\n\n $base.then((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n });\n });\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * By receiving a message with a key and value, collects a table\n * of all previously received messages in the form of a structure\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport function HashTable<T>($base: MessageType<[string, unknown]>) {\n return Message<T>(function HashTableImpl(r) {\n const record: Record<string, unknown> = {};\n\n $base.then(([key, value]) => {\n record[key] = value;\n r(record as T);\n });\n });\n}\n","import { ActualMessage, All, Message, MessageType } from \"silentium\";\n\ntype UnWrap<T> = T extends MessageType<infer U> ? U : T;\n\n/**\n * Returns record Of data from record Of sources\n * https://silentium-lab.github.io/silentium-components/#/structures/record\n */\nexport function Record<T>(record: Record<string, T>) {\n return Message<Record<string, UnWrap<T>>>(function RecordImpl(r) {\n const keys = Object.keys(record);\n keys.forEach((key) => {\n record[key] = ActualMessage(record[key]) as any;\n });\n All(...(Object.values(record) as any)).then((entries) => {\n const record: Record<string, any> = {};\n entries.forEach((entry, index) => {\n record[keys[index]] = entry;\n });\n r(record);\n });\n });\n}\n","import {\n ActualMessage,\n ConstructorType,\n MaybeMessage,\n Message,\n Of,\n Once,\n} from \"silentium\";\n\nimport { Record } from \"../structures\";\n\n/**\n * Modify the object structure\n * with the ability to create new fields based on\n * existing ones in the object\n */\nexport function Transformed<T extends Record<string, any>>(\n _base: MaybeMessage<T>,\n transformRules: Record<string, ConstructorType<[MaybeMessage<any>]>>,\n) {\n const $base = ActualMessage(_base);\n return Message((resolve) => {\n $base.then((v) => {\n const existedKeysMap: Record<string, number> = {};\n const sourceObject = Object.fromEntries(\n Object.entries(v).map((entry) => {\n if (transformRules[entry[0]]) {\n existedKeysMap[entry[0]] = 1;\n return [entry[0], transformRules[entry[0]](v)];\n }\n\n return [entry[0], Of(entry[1])];\n }),\n );\n\n Object.keys(transformRules).forEach((key) => {\n if (!existedKeysMap[key]) {\n sourceObject[key] = transformRules[key](v);\n }\n });\n const record = Once(Record(sourceObject));\n record.then(resolve);\n });\n });\n}\n","import { ActualMessage, ConstructorType, Map, MaybeMessage } from \"silentium\";\n\nimport { Transformed } from \"../behaviors/Transformed\";\n\nexport function TransformedList<T extends any[]>(\n _base: MaybeMessage<T>,\n transformRules: Record<string, ConstructorType<[MaybeMessage<any>]>>,\n) {\n return Map(ActualMessage(_base), (v) => Transformed(v, transformRules));\n}\n","import { All, Message, MessageType } from \"silentium\";\n\n/**\n * Logical AND over two messages\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport function And($one: MessageType<boolean>, $two: MessageType<boolean>) {\n return Message<boolean>(function AndImpl(r) {\n All($one, $two).then(([one, two]) => {\n r(!!(one && two));\n });\n });\n}\n","import { Applied, Message, MessageType } from \"silentium\";\n\n/**\n * Convert Any source to boolean source\n * https://silentium-lab.github.io/silentium-components/#/boolean/bool\n */\nexport function Bool($base: MessageType) {\n return Message<boolean>(function BoolImpl(r) {\n Applied($base, Boolean).then(r);\n });\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * Logical negation of message\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport function Not($base: MessageType<boolean>) {\n return Message<boolean>(function NotImpl(r) {\n $base.then((v) => {\n r(!v);\n });\n });\n}\n","import { All, Message, MessageType } from \"silentium\";\n\n/**\n * Logical OR over two messages\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport function Or($one: MessageType<boolean>, $two: MessageType<boolean>) {\n return Message<boolean>(function OrImpl(r) {\n All($one, $two).then(([one, two]) => {\n r(!!(one || two));\n });\n });\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport function FromJson<T = Record<string, unknown>>(\n $json: MessageType<string>,\n) {\n return Message<T>(function FromJsonImpl(resolve, reject) {\n $json.then((json) => {\n try {\n resolve(JSON.parse(json));\n } catch (e) {\n reject(new Error(`Failed to parse JSON: ${e}`));\n }\n });\n });\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport function ToJson($data: MessageType) {\n return Message<string>(function ToJsonImpl(resolve, reject) {\n $data.then((data: unknown) => {\n try {\n resolve(JSON.stringify(data));\n } catch {\n reject(new Error(\"Failed to convert to JSON\"));\n }\n });\n });\n}\n","import { Applied, Message, MessageType } from \"silentium\";\n\n/**\n * Represents the first element Of an array.\n */\nexport function First<T extends Array<unknown>>($base: MessageType<T>) {\n return Message<T[0]>(function FirstImpl(r) {\n Applied($base, (a) => a[0]).then(r);\n });\n}\n","import { ActualMessage, All, MaybeMessage, Message, Of } from \"silentium\";\n\n/**\n * First match Of regexp\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport function RegexpMatch(\n patternSrc: MaybeMessage<string>,\n valueSrc: MaybeMessage<string>,\n flagsSrc: MaybeMessage<string> = Of(\"\"),\n) {\n const $pattern = ActualMessage(patternSrc);\n const $value = ActualMessage(valueSrc);\n const $flags = ActualMessage(flagsSrc);\n return Message<string[]>(function RegexpMatchImpl(r) {\n All($pattern, $value, $flags).then(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n r(result ?? []);\n });\n });\n}\n","import { ActualMessage, All, MaybeMessage, Message, Of } from \"silentium\";\n\n/**\n * Boolean source what checks what string matches pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport function RegexpMatched(\n patternSrc: MaybeMessage<string>,\n valueSrc: MaybeMessage<string>,\n flagsSrc: MaybeMessage<string> = Of(\"\"),\n) {\n const $pattern = ActualMessage(patternSrc);\n const $value = ActualMessage(valueSrc);\n const $flags = ActualMessage(flagsSrc);\n return Message<boolean>(function RegexpMatchedImpl(r) {\n All($pattern, $value, $flags).then(([pattern, value, flags]) => {\n r(new RegExp(pattern, flags).test(value));\n });\n });\n}\n","import { ActualMessage, All, Applied, MaybeMessage } from \"silentium\";\n\n/**\n * Returns string replaced by regular expression pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-replaced\n */\nexport function RegexpReplaced(\n valueSrc: MaybeMessage<string>,\n patternSrc: MaybeMessage<string>,\n replaceValueSrc: MaybeMessage<string>,\n flagsSrc: MaybeMessage<string> = \"\",\n) {\n const $value = ActualMessage(valueSrc);\n const $pattern = ActualMessage(patternSrc);\n const $replaceValue = ActualMessage(replaceValueSrc);\n const $flags = ActualMessage(flagsSrc);\n return Applied(\n All($pattern, $value, $replaceValue, $flags),\n ([pattern, value, replaceValue, flags]) => {\n return String(value).replace(new RegExp(pattern, flags), replaceValue);\n },\n );\n}\n","import { ActualMessage, All, Message, MessageType } from \"silentium\";\n\n/**\n * Ability to mutate some object, helpful when integrate to procedure systems\n * https://silentium-lab.github.io/silentium-components/#/system/set\n */\nexport function Set<T extends Record<string, unknown>>(\n baseSrc: MessageType<T>,\n keySrc: MessageType<string>,\n valueSrc: MessageType<unknown>,\n) {\n const $base = ActualMessage(baseSrc);\n const $key = ActualMessage(keySrc);\n const $value = ActualMessage(valueSrc);\n return Message<T>(function SetImpl(r) {\n All($base, $key, $value).then(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n r(base);\n });\n });\n}\n","import {\n ActualMessage,\n All,\n ConstructorType,\n DestroyableType,\n DestroyContainer,\n MaybeMessage,\n Message,\n MessageType,\n Of,\n} from \"silentium\";\n\nimport { RegexpMatched } from \"../system\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n message: ConstructorType<[], MessageType<T>>;\n}\n\n/**\n * Router component what will return template if url matches pattern\n * https://silentium-lab.github.io/silentium-components/#/navigation/router\n */\nexport function Router<T = string>(\n $url: MessageType<string>,\n routes: MaybeMessage<Route<T>[]>,\n $default: ConstructorType<[], MessageType<T>>,\n): MessageType<T> & DestroyableType {\n const $routes = ActualMessage(routes);\n return Message<T>(function RouterImpl(r) {\n const dc = DestroyContainer();\n const destructor = () => {\n dc.destroy();\n };\n All($routes, $url).then(([routes, url]) => {\n destructor();\n const $matches = All(\n ...routes.map((r) =>\n RegexpMatched(\n Of(r.pattern),\n Of(url),\n r.patternFlags ? Of(r.patternFlags) : undefined,\n ),\n ),\n );\n $matches.then((matches) => {\n const index = matches.findIndex((v) => v === true);\n\n if (index === -1) {\n const instance = $default();\n dc.add(instance);\n instance.then(r);\n }\n\n if (index > -1) {\n const instance = routes[index].message();\n dc.add(instance);\n instance.then(r);\n }\n });\n });\n\n return destructor;\n });\n}\n","import { All, Message, MessageType, Of } from \"silentium\";\n\n/**\n * Join sources Of strings to one source\n * https://silentium-lab.github.io/silentium-components/#/string/concatenated\n */\nexport function Concatenated(\n sources: MessageType<string>[],\n joinPartSrc: MessageType<string> = Of(\"\"),\n) {\n return Message<string>(function ConcatenatedImpl(r) {\n All(joinPartSrc, ...sources).then(([joinPart, ...strings]) => {\n r(strings.join(joinPart));\n });\n });\n}\n","import {\n ActualMessage,\n All,\n Applied,\n ConstructorType,\n DestroyableType,\n DestroyContainer,\n isDestroyable,\n isMessage,\n Late,\n MaybeMessage,\n Message,\n MessageType,\n Of,\n Rejections,\n} from \"silentium\";\n\nimport { Record } from \"../structures\";\n\n/**\n * Allows creating a string template with\n * variables inserted into it; when variables change,\n * the template value will change\n */\nexport function Template(\n src: MaybeMessage<string> | ((t: TemplateImpl) => string) = \"\",\n $places: MaybeMessage<Record<string, unknown>> = Of({}),\n) {\n const $src = Late<string>();\n if (typeof src === \"string\" || isMessage(src)) {\n $src.chain(ActualMessage(src));\n }\n\n const t = new TemplateImpl(\n $src,\n $places ? ActualMessage($places) : undefined,\n );\n\n if (typeof src === \"function\") {\n $src.chain(\n Message((r) => {\n r(src(t));\n }),\n );\n }\n\n return t;\n}\n\nclass TemplateImpl implements MessageType<string>, DestroyableType {\n private dc = DestroyContainer();\n private rejections = new Rejections();\n private vars: Record<string, MessageType> = {\n $TPL: Of(\"$TPL\"),\n };\n\n public constructor(\n private $src: MessageType<string> = Of(\"\"),\n private $places: MessageType<Record<string, unknown>> = Of({}),\n ) {}\n\n public then(transport: ConstructorType<[string]>): this {\n const $vars = Record(this.vars);\n Applied(All(this.$src, this.$places, $vars), ([base, rules, vars]) => {\n try {\n Object.entries(rules).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n Object.entries(vars).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n } catch (e) {\n this.rejections.reject(e);\n }\n\n return base;\n }).then(transport);\n return this;\n }\n\n public template(value: string) {\n this.$src = Of(value);\n }\n\n /**\n * Ability to register variable\n * in concrete place Of template\n */\n public var(src: MessageType<unknown>) {\n const hash =\n Date.now().toString(36) + Math.random().toString(36).substring(2);\n const varName = `$var${hash}`;\n if (isDestroyable(src)) {\n this.dc.add(src);\n }\n this.vars[varName] = src;\n return varName;\n }\n\n public catch(rejected: ConstructorType<[unknown]>): this {\n this.rejections.catch(rejected);\n return this;\n }\n\n public destroy(): this {\n this.dc.destroy();\n return this;\n }\n}\n"],"names":["ActualMessage","Message","Primitive","DestroyContainer","ResetSilenceCache","Shared","Filtered","isFilled","Late","MessageSource","Applied","All","key","Empty","Nothing","Computed","ExecutorApplied","record","Of","Once","Map","routes","r","isMessage","Rejections","isDestroyable"],"mappings":";;;;AAMgB,SAAA,MAAA,CACd,UACA,EAAA,KAAA,EACA,MACA,EAAA;AACA,EAAM,MAAA,UAAA,GAAaA,wBAAc,UAAU,CAAA;AAC3C,EAAM,MAAA,KAAA,GAAQA,wBAAc,KAAK,CAAA;AACjC,EAAM,MAAA,MAAA,GAASA,wBAAc,MAAM,CAAA;AACnC,EAAO,OAAAC,iBAAA,CAAqB,SAAS,UAAA,CAAW,CAAG,EAAA;AACjD,IAAM,MAAA,IAAA,GAAOC,oBAAU,KAAK,CAAA;AAC5B,IAAI,IAAA,KAAA;AACJ,IAAA,IAAI,WAAW,MAAW,EAAA;AACxB,MAAA,KAAA,GAAQA,oBAAU,MAA2B,CAAA;AAAA;AAE/C,IAAW,UAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AACrB,MAAI,IAAA,OAAO,MAAM,SAAW,EAAA;AAC1B,QAAM,MAAA,IAAI,MAAM,mCAAmC,CAAA;AAAA;AAErD,MAAA,IAAI,MAA6B,GAAA,IAAA;AACjC,MAAA,IAAI,MAAM,IAAM,EAAA;AACd,QAAA,MAAA,GAAS,KAAK,SAAU,EAAA;AAAA,iBACf,KAAO,EAAA;AAChB,QAAA,MAAA,GAAS,MAAM,SAAU,EAAA;AAAA;AAE3B,MAAA,IAAI,WAAW,IAAM,EAAA;AACnB,QAAA,CAAA,CAAE,MAAM,CAAA;AAAA;AACV,KACD,CAAA;AAAA,GACF,CAAA;AACH;;ACrBgB,SAAA,UAAA,CACd,UACA,EAAA,KAAA,EACA,MAC4C,EAAA;AAC5C,EAAO,OAAAD,iBAAA,CAAQ,SAAS,cAAA,CAAe,CAAG,EAAA;AACxC,IAAA,MAAM,KAAKE,0BAAiB,EAAA;AAC5B,IAAA,MAAM,aAAa,MAAM;AACvB,MAAA,EAAA,CAAG,OAAQ,EAAA;AAAA,KACb;AACA,IAAW,UAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AACrB,MAAW,UAAA,EAAA;AACX,MAAI,IAAA,QAAA;AACJ,MAAA,IAAI,CAAG,EAAA;AACL,QAAA,QAAA,GAAW,KAAM,EAAA;AAAA,iBACR,MAAQ,EAAA;AACjB,QAAA,QAAA,GAAW,MAAO,EAAA;AAAA;AAEpB,MAAA,IAAI,aAAa,MAAW,EAAA;AAC1B,QAAA,QAAA,CAAS,KAAK,CAAC,CAAA;AACf,QAAA,EAAA,CAAG,IAAI,QAAQ,CAAA;AAAA;AACjB,KACD,CAAA;AACD,IAAO,OAAA,UAAA;AAAA,GACR,CAAA;AACH;;AChCgB,SAAA,QAAA,CACd,WACA,QACgB,EAAA;AAChB,EAAA,OAAOF,iBAAW,CAAA,SAAS,YAAa,CAAA,OAAA,EAAS,MAAQ,EAAA;AACvD,IAAA,QAAA,CAAS,KAAM,CAAA,MAAM,CAAE,CAAA,IAAA,CAAK,MAAM;AAChC,MAAA,OAAA,CAAQ,SAAS,CAAA;AAEjB,MAAA,OAAA,CAAQG,2BAAsB,CAAA;AAAA,KAC/B,CAAA;AAAA,GACF,CAAA;AACH;;ACJgB,SAAA,QAAA,CACd,OACA,QACA,EAAA;AACA,EAAM,MAAA,QAAA,GAAWJ,wBAAc,QAAQ,CAAA;AACvC,EAAA,OAAOC,iBAAW,CAAA,SAAS,YAAa,CAAA,OAAA,EAAS,MAAQ,EAAA;AACvD,IAAA,IAAI,KAAgD,GAAA,CAAA;AACpD,IAAM,MAAA,IAAA,GAAOI,iBAAO,KAAK,CAAA;AACzB,IAAS,QAAA,CAAA,IAAA,CAAK,CAAC,OAAY,KAAA;AACzB,MAAA,IAAI,KAAO,EAAA;AACT,QAAA,YAAA,CAAa,KAAK,CAAA;AAAA;AAEpB,MAAA,IAAI,cAAiB,GAAA,KAAA;AAErB,MAAA,KAAA,GAAQ,WAAW,MAAM;AACvB,QAAA,IAAI,cAAgB,EAAA;AAClB,UAAA;AAAA;AAEF,QAAiB,cAAA,GAAA,IAAA;AACjB,QAAO,MAAA,CAAA,IAAI,KAAM,CAAA,6BAA6B,CAAC,CAAA;AAAA,SAC9C,OAAO,CAAA;AAEV,MAAA,MAAM,CAAI,GAAAC,kBAAA,CAAS,IAAM,EAAA,MAAM,CAAC,cAAc,CAAA;AAC9C,MAAA,CAAA,CAAE,KAAK,OAAO,CAAA;AAEd,MAAA,IAAA,CAAK,KAAK,MAAM;AACd,QAAiB,cAAA,GAAA,IAAA;AAAA,OAClB,CAAA;AAAA,KACF,CAAA;AAAA,GACF,CAAA;AACH;;ACtCgB,SAAA,QAAA,CACd,OACA,QACA,EAAA;AACA,EAAO,OAAAL,iBAAA,CAAW,SAAS,YAAA,CAAa,CAAG,EAAA;AACzC,IAAM,MAAA,IAAA,GAAOC,oBAAU,KAAK,CAAA;AAC5B,IAAA,QAAA,CAAS,KAAK,MAAM;AAClB,MAAM,MAAA,KAAA,GAAQ,KAAK,SAAU,EAAA;AAC7B,MAAI,IAAAK,kBAAA,CAAS,KAAK,CAAG,EAAA;AACnB,QAAA,CAAA,CAAE,KAAK,CAAA;AAAA;AACT,KACD,CAAA;AAAA,GACF,CAAA;AACH;;ACZO,SAAS,SAAY,KAAuC,EAAA;AACjE,EAAO,OAAAN,iBAAA,CAAW,SAAS,YAAA,CAAa,CAAG,EAAA;AACzC,IAAA,MAAM,CAAI,GAAAC,mBAAA,CAAU,KAAK,CAAA,CAAE,SAAU,EAAA;AACrC,IAAI,IAAAK,kBAAA,CAAS,CAAC,CAAG,EAAA;AACf,MAAA,CAAA,CAAE,CAAC,CAAA;AAAA;AACL,GACD,CAAA;AACH;;ACPgB,SAAA,KAAA,CACd,OACA,IAAiB,GAAA,IACjB,OAAoB,GAAA,IACpB,MACA,EAAA;AACA,EAAM,MAAA,UAAA,GAAaC,cAAQ,CAAA,EAAO,CAAA;AAClC,EAAA,IAAI,WAAW,MAAW,EAAA;AACxB,IAAA,MAAA,GAAS,CAAC,KAAU,KAAA,IAAA,CAAK,MAAM,IAAK,CAAA,SAAA,CAAU,KAAK,CAAC,CAAA;AAAA;AAEtD,EAAO,OAAAC,uBAAA;AAAA,IACL,SAAS,UAAU,CAAG,EAAA;AACpB,MAAM,MAAA,eAAA,GAAkBC,iBAAQ,CAAA,UAAA,EAAY,MAAM,CAAA;AAClD,MAAIC,aAAA,CAAA,eAAA,EAAiB,KAAK,CAAE,CAAA,IAAA,CAAK,CAAC,CAAC,SAAA,EAAW,IAAI,CAAM,KAAA;AACtD,QAAA,IAAI,CAAC,SAAW,EAAA;AACd,UAAA;AAAA;AAEF,QAAA,CAAA;AAAA,UACE,MAAO,CAAA,WAAA;AAAA,YACL,MAAA,CAAO,QAAQ,SAAS,CAAA,CAAE,OAAO,CAAC,CAAC,GAAK,EAAA,KAAK,CAAM,KAAA;AACjD,cAAI,IAAA,IAAA,CAAK,QAAS,CAAA,GAAG,CAAG,EAAA;AACtB,gBAAO,OAAA,IAAA;AAAA;AAET,cAAI,IAAA,OAAA,CAAQ,QAAS,CAAA,GAAG,CAAG,EAAA;AACzB,gBAAO,OAAA,KAAA;AAAA;AAET,cAAO,OAAA,KAAA,KAAW,KAAiC,GAAG,CAAA;AAAA,aACvD;AAAA;AACH,SACF;AAAA,OACD,CAAA;AAAA,KACH;AAAA,IACA,CAAC,CAAM,KAAA;AACL,MAAA,UAAA,CAAW,IAAI,CAAC,CAAA;AAAA;AAClB,GACF;AACF;;ACnCgB,SAAA,OAAA,CACd,QACA,OACA,EAAA;AACA,EAAO,OAAAV,iBAAA,CAAiB,SAAS,WAAA,CAAY,CAAG,EAAA;AAC9C,IAAA,MAAA,CAAO,IAAK,CAAA,MAAM,CAAE,CAAA,IAAI,CAAC,CAAA;AACzB,IAAA,OAAA,CAAQ,IAAK,CAAA,MAAM,CAAE,CAAA,KAAK,CAAC,CAAA;AAAA,GAC5B,CAAA;AACH;;ACTgB,SAAA,IAAA,CAAQ,OAAuB,KAA6B,EAAA;AAC1E,EAAO,OAAAA,iBAAA,CAAW,SAAS,QAAA,CAAS,CAAG,EAAA;AACrC,IAAA,IAAI,MAAS,GAAA,KAAA;AACb,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,OAAY,KAAA;AACtB,MAAS,MAAA,GAAA,OAAA;AAAA,KACV,CAAA;AACD,IAAA,MAAM,CAAI,GAAAK,kBAAA,CAAS,KAAO,EAAA,MAAM,CAAC,MAAM,CAAA;AACvC,IAAA,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,GACT,CAAA;AACH;;ACVO,SAAS,KAAQ,KAAuB,EAAA;AAC7C,EAAO,OAAAL,iBAAA,CAAW,SAAS,QAAA,CAAS,CAAG,EAAA;AACrC,IAAA,IAAI,IAAiB,GAAA,IAAA;AACrB,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AAChB,MAAA,IAAI,CAAM,KAAA,IAAA,IAAQM,kBAAS,CAAA,CAAC,CAAG,EAAA;AAC7B,QAAA,CAAA,CAAE,CAAC,CAAA;AACH,QAAO,IAAA,GAAA,CAAA;AAAA;AACT,KACD,CAAA;AAAA,GACF,CAAA;AACH;;ACVgB,SAAA,iBAAA,CACd,OACA,MACgB,EAAA;AAChB,EAAA,MAAM,eAAeC,cAAQ,EAAA;AAC7B,EAAA,MAAM,kBAAkB,EAAC;AACzB,EAAM,KAAA,CAAA,IAAA,CAAK,CAAC,SAAc,KAAA;AACxB,IAAa,YAAA,CAAA,GAAA;AAAA,MACX,SAAU,CAAA,eAAA,EAAiB,SAAW,EAAA,CAAC,QAAa,MAAgB,KAAA;AAClE,QAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,MAAM,CAAG,EAAA;AACzB,UAAO,OAAA,MAAA,CAAO,OAAO,MAAM,CAAA;AAAA;AAC7B,OACD;AAAA,KACH;AAAA,GACD,CAAA;AAED,EAAA,IAAI,MAAQ,EAAA;AACV,IAAO,MAAA,CAAA,IAAA,CAAK,CAAC,UAAe,KAAA;AAC1B,MAAA,YAAA,CAAa,IAAI,UAAU,CAAA;AAAA,KAC5B,CAAA;AAAA;AAGH,EAAO,OAAA,YAAA;AACT;AAEA,SAAS,SAAA,CACP,MACA,EAAA,MAAA,EACA,UAOmB,EAAA;AACnB,EAAA,IAAI,UAAU,IAAM,EAAA;AAClB,IAAO,OAAA,MAAA;AAAA;AAGT,EAAA,MAAA,CAAO,IAAK,CAAA,MAAM,CAAE,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AACnC,IAAM,MAAA,QAAA,GAAY,OAAe,GAAG,CAAA;AACpC,IAAM,MAAA,QAAA,GAAY,OAAe,GAAG,CAAA;AACpC,IAAA,MAAM,SAAS,UAAW,CAAA,QAAA,EAAU,QAAU,EAAA,GAAA,EAAK,QAAQ,MAAM,CAAA;AAEjE,IAAA,IAAI,WAAW,MAAW,EAAA;AACxB,MAAC,MAAA,CAAe,GAAG,CAAI,GAAA,MAAA;AAAA,eACd,QAAS,CAAA,QAAQ,CAAK,IAAA,QAAA,CAAS,QAAQ,CAAG,EAAA;AACnD,MAAU,SAAA,CAAA,QAAA,EAAU,UAAU,UAAU,CAAA;AAAA,KACnC,MAAA;AACL,MAAC,MAAA,CAAe,GAAG,CAAI,GAAA,QAAA;AAAA;AACzB,GACD,CAAA;AAED,EAAO,OAAA,MAAA;AACT;AAEA,SAAS,SAAS,KAA+B,EAAA;AAC/C,EAAO,OAAA,KAAA,IAAS,IAAQ,IAAA,OAAO,KAAU,KAAA,QAAA;AAC3C;;AC3DO,SAAS,YAAe,KAAuB,EAAA;AACpD,EAAO,OAAAP,iBAAA,CAAW,SAAS,eAAA,CAAgB,CAAG,EAAA;AAC5C,IAAA,IAAI,KAAQ,GAAA,KAAA;AACZ,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AAChB,MAAA,IAAI,UAAU,KAAO,EAAA;AACnB,QAAQ,KAAA,GAAA,IAAA;AAAA,OACH,MAAA;AACL,QAAA,CAAA,CAAE,CAAC,CAAA;AAAA;AACL,KACD,CAAA;AAAA,GACF,CAAA;AACH;;ACFgB,SAAA,IAAA,CAId,OAA6B,GAA4C,EAAA;AACzE,EAAM,MAAA,WAAA,GAAcI,iBAAO,KAAK,CAAA;AAChC,EAAA,MAAM,YAAe,GAAAA,gBAAA,CAAOL,uBAAc,CAAA,GAAG,CAAC,CAAA;AAC9C,EAAO,OAAAS,uBAAA;AAAA,IACL,SAAS,SAAS,CAAG,EAAA;AACnB,MAAIE,aAAA,CAAA,WAAA,EAAa,YAAY,CAAE,CAAA,IAAA,CAAK,CAAC,CAAC,IAAA,EAAM,KAAK,CAAM,KAAA;AACrD,QAAM,MAAA,IAAA,GAAO,KAAM,CAAA,KAAA,CAAM,GAAG,CAAA;AAC5B,QAAA,IAAI,KAAiB,GAAA,IAAA;AACrB,QAAK,IAAA,CAAA,OAAA,CAAQ,CAACC,IAAgB,KAAA;AAC5B,UAAA,KAAA,GAAS,MAAkCA,IAAG,CAAA;AAAA,SAC/C,CAAA;AACD,QAAI,IAAA,KAAA,KAAU,MAAa,IAAA,KAAA,KAAU,IAAM,EAAA;AACzC,UAAA,CAAA,CAAE,KAAU,CAAA;AAAA;AACd,OACD,CAAA;AAAA,KACH;AAAA,IACA,CAAC,KAAU,KAAA;AACT,MAAMA,MAAAA,IAAAA,GAAMV,oBAAU,YAAY,CAAA;AAClC,MAAI,IAAAK,kBAAA,CAASK,IAAG,CAAG,EAAA;AACjB,QAAM,MAAA,IAAA,GAAOV,oBAAU,KAAK,CAAA;AAC5B,QAAA,KAAA,CAAM,GAAI,CAAA;AAAA,UACR,GAAG,KAAK,sBAAuB,EAAA;AAAA,UAC/B,CAACU,IAAAA,CAAI,sBAAuB,EAAC,GAAG;AAAA,SAC5B,CAAA;AAAA;AACR;AACF,GACF;AACF;;ACtCA,MAAM,MAAA,GAAS,OAAO,SAAS,CAAA;AAMf,SAAA,IAAA,CAId,KAAuB,EAAA,MAAA,EAAyB,GAAuB,EAAA;AACvE,EAAM,MAAA,MAAA,GAASZ,wBAAc,MAAM,CAAA;AACnC,EAAM,MAAA,IAAA,GAAOA,uBAAc,CAAA,GAAA,IAAO,MAAM,CAAA;AACxC,EAAO,OAAAU,iBAAA,CAAQC,aAAI,CAAA,KAAA,EAAO,MAAQ,EAAA,IAAI,CAAG,EAAA,CAAC,CAAC,IAAA,EAAM,KAAO,EAAA,CAAC,CAAM,KAAA;AAC7D,IAAM,MAAA,IAAA,GAAO,KAAM,CAAA,KAAA,CAAM,GAAG,CAAA;AAC5B,IAAA,IAAI,KAAiB,GAAA,IAAA;AACrB,IAAK,IAAA,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AACpB,MAAA,KAAA,GAAS,MAAkC,GAAG,CAAA;AAAA,KAC/C,CAAA;AACD,IAAI,IAAA,KAAA,KAAU,MAAa,IAAA,KAAA,KAAU,IAAM,EAAA;AACzC,MAAO,OAAA,KAAA;AAAA,KACT,MAAA,IAAW,MAAM,MAAQ,EAAA;AACvB,MAAO,OAAA,CAAA;AAAA;AACT,GACD,CAAA;AACH;;AC1BgB,SAAA,WAAA,CAId,OAAwB,MAAyB,EAAA;AACjD,EAAM,MAAA,KAAA,GAAQX,wBAAc,KAAK,CAAA;AACjC,EAAM,MAAA,MAAA,GAASA,wBAAc,MAAM,CAAA;AACnC,EAAA,OAAOa,eAAM,CAAA,IAAA,CAAQ,KAAO,EAAA,MAAA,EAAQC,iBAAO,CAAC,CAAA;AAC9C;;ACTgB,SAAA,OAAA,CACd,OACA,QACA,EAAA;AACA,EAAO,OAAAb,iBAAA,CAAW,SAAS,WAAA,CAAY,CAAG,EAAA;AACxC,IAAA,QAAA,CAAS,KAAK,MAAM;AAClB,MAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA,KACb,CAAA;AAAA,GACF,CAAA;AACH;;ACTgB,SAAA,eAAA,CACd,SACA,UACA,EAAA;AACA,EAAM,MAAA,OAAA,GAAUD,wBAAc,OAAO,CAAA;AACrC,EAAM,MAAA,UAAA,GAAaA,wBAAc,UAAU,CAAA;AAC3C,EAAM,MAAA,aAAA,GAAgB,CAAC,GAAA,EAAU,SAAyB,KAAA;AACxD,IAAI,IAAA,GAAA,KAAQ,QAAQ,OAAO,GAAA,KAAQ,YAAY,KAAM,CAAA,OAAA,CAAQ,GAAG,CAAG,EAAA;AACjE,MAAO,OAAA,GAAA;AAAA;AAGT,IAAA,MAAM,SAAkC,EAAC;AAEzC,IAAA,KAAA,MAAW,CAAC,GAAK,EAAA,KAAK,KAAK,MAAO,CAAA,OAAA,CAAQ,GAAG,CAAG,EAAA;AAC9C,MAAI,IAAA,SAAA,CAAU,QAAS,CAAA,KAAK,CAAG,EAAA;AAE/B,MAAM,MAAA,cAAA,GAAiB,aAAc,CAAA,KAAA,EAAO,SAAS,CAAA;AAErD,MAAA,IACE,mBAAmB,MACnB,IAAA,EACE,OAAO,cAAmB,KAAA,QAAA,IAC1B,mBAAmB,IACnB,IAAA,CAAC,KAAM,CAAA,OAAA,CAAQ,cAAc,CAC7B,IAAA,MAAA,CAAO,KAAK,cAAc,CAAA,CAAE,WAAW,CAEzC,CAAA,EAAA;AACA,QAAA,MAAA,CAAO,GAAG,CAAI,GAAA,cAAA;AAAA;AAChB;AAGF,IAAO,OAAA,MAAA;AAAA,GACT;AAEA,EAAO,OAAAe,kBAAA,CAAS,aAAe,EAAA,OAAA,EAAS,UAAU,CAAA;AACpD;;ACnCgB,SAAA,IAAA,CAAQ,SAAyB,QAAuB,EAAA;AACtE,EAAO,OAAAd,iBAAA,CAAW,SAAS,QAAA,CAAS,CAAG,EAAA;AACrC,IAAM,MAAA,UAAA,GAAaC,oBAAU,OAAO,CAAA;AACpC,IAAA,UAAA,CAAW,SAAU,EAAA;AACrB,IAAA,QAAA,CAAS,KAAK,MAAM;AAClB,MAAM,MAAA,KAAA,GAAQ,WAAW,SAAU,EAAA;AACnC,MAAI,IAAAK,kBAAA,CAAS,KAAK,CAAG,EAAA;AACnB,QAAA,CAAA,CAAE,KAAK,CAAA;AAAA;AACT,KACD,CAAA;AAAA,GACF,CAAA;AACH;;ACLgB,SAAA,IAAA,CAAQ,OAA0B,EAAA,KAAA,GAAgB,CAAG,EAAA;AACnE,EAAM,MAAA,KAAA,GAAQP,wBAAc,OAAO,CAAA;AACnC,EAAO,OAAAC,iBAAA,CAAW,SAAS,QAAA,CAAS,CAAG,EAAA;AACrC,IAAA,IAAI,SAA4B,GAAA,IAAA;AAChC,IAAgBe,yBAAA,CAAA,KAAA,EAAO,CAAC,EAAO,KAAA;AAC7B,MAAA,OAAO,CAAC,CAAM,KAAA;AACZ,QAAA,IAAI,SAAW,EAAA;AACb,UAAA,YAAA,CAAa,SAAmB,CAAA;AAAA;AAElC,QAAA,SAAA,GAAY,WAAW,MAAM;AAC3B,UAAA,EAAA,CAAG,CAAC,CAAA;AAAA,WACH,KAAK,CAAA;AAAA,OACV;AAAA,KACD,CAAE,CAAA,IAAA,CAAK,CAAC,CAAA;AAAA,GACV,CAAA;AACH;;ACrBO,SAAS,KAAQ,KAAuB,EAAA;AAC7C,EAAO,OAAAf,iBAAA,CAAW,SAAS,QAAA,CAAS,CAAG,EAAA;AACrC,IAAA,IAAI,kBAAqB,GAAA,KAAA;AACzB,IAAA,IAAI,SAAsB,GAAA,IAAA;AAE1B,IAAA,MAAM,oBAAoB,MAAM;AAC9B,MAAqB,kBAAA,GAAA,IAAA;AACrB,MAAA,cAAA,CAAe,MAAM;AACnB,QAAqB,kBAAA,GAAA,KAAA;AACrB,QAAA,IAAI,cAAc,IAAM,EAAA;AACtB,UAAA,CAAA,CAAE,SAAS,CAAA;AACX,UAAY,SAAA,GAAA,IAAA;AAAA;AACd,OACD,CAAA;AAAA,KACH;AAEA,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AAChB,MAAY,SAAA,GAAA,CAAA;AACZ,MAAA,IAAI,CAAC,kBAAoB,EAAA;AACvB,QAAkB,iBAAA,EAAA;AAAA;AACpB,KACD,CAAA;AAAA,GACF,CAAA;AACH;;ACtBO,SAAS,UAAa,KAAuC,EAAA;AAClE,EAAO,OAAAA,iBAAA,CAAW,SAAS,aAAA,CAAc,CAAG,EAAA;AAC1C,IAAA,MAAM,SAAkC,EAAC;AAEzC,IAAA,KAAA,CAAM,IAAK,CAAA,CAAC,CAAC,GAAA,EAAK,KAAK,CAAM,KAAA;AAC3B,MAAA,MAAA,CAAO,GAAG,CAAI,GAAA,KAAA;AACd,MAAA,CAAA,CAAE,MAAW,CAAA;AAAA,KACd,CAAA;AAAA,GACF,CAAA;AACH;;ACRO,SAAS,OAAU,MAA2B,EAAA;AACnD,EAAO,OAAAA,iBAAA,CAAmC,SAAS,UAAA,CAAW,CAAG,EAAA;AAC/D,IAAM,MAAA,IAAA,GAAO,MAAO,CAAA,IAAA,CAAK,MAAM,CAAA;AAC/B,IAAK,IAAA,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AACpB,MAAA,MAAA,CAAO,GAAG,CAAA,GAAID,uBAAc,CAAA,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,KACxC,CAAA;AACD,IAAIW,aAAA,CAAA,GAAI,OAAO,MAAO,CAAA,MAAM,CAAS,CAAE,CAAA,IAAA,CAAK,CAAC,OAAY,KAAA;AACvD,MAAA,MAAMM,UAA8B,EAAC;AACrC,MAAQ,OAAA,CAAA,OAAA,CAAQ,CAAC,KAAA,EAAO,KAAU,KAAA;AAChC,QAAAA,OAAO,CAAA,IAAA,CAAK,KAAK,CAAC,CAAI,GAAA,KAAA;AAAA,OACvB,CAAA;AACD,MAAA,CAAA,CAAEA,OAAM,CAAA;AAAA,KACT,CAAA;AAAA,GACF,CAAA;AACH;;ACNgB,SAAA,WAAA,CACd,OACA,cACA,EAAA;AACA,EAAM,MAAA,KAAA,GAAQjB,wBAAc,KAAK,CAAA;AACjC,EAAO,OAAAC,iBAAA,CAAQ,CAAC,OAAY,KAAA;AAC1B,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AAChB,MAAA,MAAM,iBAAyC,EAAC;AAChD,MAAA,MAAM,eAAe,MAAO,CAAA,WAAA;AAAA,QAC1B,OAAO,OAAQ,CAAA,CAAC,CAAE,CAAA,GAAA,CAAI,CAAC,KAAU,KAAA;AAC/B,UAAA,IAAI,cAAe,CAAA,KAAA,CAAM,CAAC,CAAC,CAAG,EAAA;AAC5B,YAAe,cAAA,CAAA,KAAA,CAAM,CAAC,CAAC,CAAI,GAAA,CAAA;AAC3B,YAAO,OAAA,CAAC,KAAM,CAAA,CAAC,CAAG,EAAA,cAAA,CAAe,MAAM,CAAC,CAAC,CAAE,CAAA,CAAC,CAAC,CAAA;AAAA;AAG/C,UAAO,OAAA,CAAC,MAAM,CAAC,CAAA,EAAGiB,aAAG,KAAM,CAAA,CAAC,CAAC,CAAC,CAAA;AAAA,SAC/B;AAAA,OACH;AAEA,MAAA,MAAA,CAAO,IAAK,CAAA,cAAc,CAAE,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AAC3C,QAAI,IAAA,CAAC,cAAe,CAAA,GAAG,CAAG,EAAA;AACxB,UAAA,YAAA,CAAa,GAAG,CAAA,GAAI,cAAe,CAAA,GAAG,EAAE,CAAC,CAAA;AAAA;AAC3C,OACD,CAAA;AACD,MAAA,MAAM,MAAS,GAAAC,cAAA,CAAK,MAAO,CAAA,YAAY,CAAC,CAAA;AACxC,MAAA,MAAA,CAAO,KAAK,OAAO,CAAA;AAAA,KACpB,CAAA;AAAA,GACF,CAAA;AACH;;ACxCgB,SAAA,eAAA,CACd,OACA,cACA,EAAA;AACA,EAAO,OAAAC,aAAA,CAAIpB,wBAAc,KAAK,CAAA,EAAG,CAAC,CAAM,KAAA,WAAA,CAAY,CAAG,EAAA,cAAc,CAAC,CAAA;AACxE;;ACHgB,SAAA,GAAA,CAAI,MAA4B,IAA4B,EAAA;AAC1E,EAAO,OAAAC,iBAAA,CAAiB,SAAS,OAAA,CAAQ,CAAG,EAAA;AAC1C,IAAIU,aAAA,CAAA,IAAA,EAAM,IAAI,CAAE,CAAA,IAAA,CAAK,CAAC,CAAC,GAAA,EAAK,GAAG,CAAM,KAAA;AACnC,MAAE,CAAA,CAAA,CAAC,EAAE,GAAA,IAAO,GAAI,CAAA,CAAA;AAAA,KACjB,CAAA;AAAA,GACF,CAAA;AACH;;ACNO,SAAS,KAAK,KAAoB,EAAA;AACvC,EAAO,OAAAV,iBAAA,CAAiB,SAAS,QAAA,CAAS,CAAG,EAAA;AAC3C,IAAAS,iBAAA,CAAQ,KAAO,EAAA,OAAO,CAAE,CAAA,IAAA,CAAK,CAAC,CAAA;AAAA,GAC/B,CAAA;AACH;;ACJO,SAAS,IAAI,KAA6B,EAAA;AAC/C,EAAO,OAAAT,iBAAA,CAAiB,SAAS,OAAA,CAAQ,CAAG,EAAA;AAC1C,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AAChB,MAAA,CAAA,CAAE,CAAC,CAAC,CAAA;AAAA,KACL,CAAA;AAAA,GACF,CAAA;AACH;;ACNgB,SAAA,EAAA,CAAG,MAA4B,IAA4B,EAAA;AACzE,EAAO,OAAAA,iBAAA,CAAiB,SAAS,MAAA,CAAO,CAAG,EAAA;AACzC,IAAIU,aAAA,CAAA,IAAA,EAAM,IAAI,CAAE,CAAA,IAAA,CAAK,CAAC,CAAC,GAAA,EAAK,GAAG,CAAM,KAAA;AACnC,MAAE,CAAA,CAAA,CAAC,EAAE,GAAA,IAAO,GAAI,CAAA,CAAA;AAAA,KACjB,CAAA;AAAA,GACF,CAAA;AACH;;ACPO,SAAS,SACd,KACA,EAAA;AACA,EAAA,OAAOV,iBAAW,CAAA,SAAS,YAAa,CAAA,OAAA,EAAS,MAAQ,EAAA;AACvD,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,IAAS,KAAA;AACnB,MAAI,IAAA;AACF,QAAQ,OAAA,CAAA,IAAA,CAAK,KAAM,CAAA,IAAI,CAAC,CAAA;AAAA,eACjB,CAAG,EAAA;AACV,QAAA,MAAA,CAAO,IAAI,KAAA,CAAM,CAAyB,sBAAA,EAAA,CAAC,EAAE,CAAC,CAAA;AAAA;AAChD,KACD,CAAA;AAAA,GACF,CAAA;AACH;;ACZO,SAAS,OAAO,KAAoB,EAAA;AACzC,EAAA,OAAOA,iBAAgB,CAAA,SAAS,UAAW,CAAA,OAAA,EAAS,MAAQ,EAAA;AAC1D,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,IAAkB,KAAA;AAC5B,MAAI,IAAA;AACF,QAAQ,OAAA,CAAA,IAAA,CAAK,SAAU,CAAA,IAAI,CAAC,CAAA;AAAA,OACtB,CAAA,MAAA;AACN,QAAO,MAAA,CAAA,IAAI,KAAM,CAAA,2BAA2B,CAAC,CAAA;AAAA;AAC/C,KACD,CAAA;AAAA,GACF,CAAA;AACH;;ACVO,SAAS,MAAgC,KAAuB,EAAA;AACrE,EAAO,OAAAA,iBAAA,CAAc,SAAS,SAAA,CAAU,CAAG,EAAA;AACzC,IAAQS,iBAAA,CAAA,KAAA,EAAO,CAAC,CAAM,KAAA,CAAA,CAAE,CAAC,CAAC,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,GACnC,CAAA;AACH;;ACHO,SAAS,YACd,UACA,EAAA,QAAA,EACA,QAAiC,GAAAQ,YAAA,CAAG,EAAE,CACtC,EAAA;AACA,EAAM,MAAA,QAAA,GAAWlB,wBAAc,UAAU,CAAA;AACzC,EAAM,MAAA,MAAA,GAASA,wBAAc,QAAQ,CAAA;AACrC,EAAM,MAAA,MAAA,GAASA,wBAAc,QAAQ,CAAA;AACrC,EAAO,OAAAC,iBAAA,CAAkB,SAAS,eAAA,CAAgB,CAAG,EAAA;AACnD,IAAIU,aAAA,CAAA,QAAA,EAAU,MAAQ,EAAA,MAAM,CAAE,CAAA,IAAA,CAAK,CAAC,CAAC,OAAA,EAAS,KAAO,EAAA,KAAK,CAAM,KAAA;AAC9D,MAAA,MAAM,SAAS,IAAI,MAAA,CAAO,SAAS,KAAK,CAAA,CAAE,KAAK,KAAK,CAAA;AACpD,MAAE,CAAA,CAAA,MAAA,IAAU,EAAE,CAAA;AAAA,KACf,CAAA;AAAA,GACF,CAAA;AACH;;ACdO,SAAS,cACd,UACA,EAAA,QAAA,EACA,QAAiC,GAAAO,YAAA,CAAG,EAAE,CACtC,EAAA;AACA,EAAM,MAAA,QAAA,GAAWlB,wBAAc,UAAU,CAAA;AACzC,EAAM,MAAA,MAAA,GAASA,wBAAc,QAAQ,CAAA;AACrC,EAAM,MAAA,MAAA,GAASA,wBAAc,QAAQ,CAAA;AACrC,EAAO,OAAAC,iBAAA,CAAiB,SAAS,iBAAA,CAAkB,CAAG,EAAA;AACpD,IAAIU,aAAA,CAAA,QAAA,EAAU,MAAQ,EAAA,MAAM,CAAE,CAAA,IAAA,CAAK,CAAC,CAAC,OAAA,EAAS,KAAO,EAAA,KAAK,CAAM,KAAA;AAC9D,MAAA,CAAA,CAAE,IAAI,MAAO,CAAA,OAAA,EAAS,KAAK,CAAE,CAAA,IAAA,CAAK,KAAK,CAAC,CAAA;AAAA,KACzC,CAAA;AAAA,GACF,CAAA;AACH;;ACbO,SAAS,cACd,CAAA,QAAA,EACA,UACA,EAAA,eAAA,EACA,WAAiC,EACjC,EAAA;AACA,EAAM,MAAA,MAAA,GAASX,wBAAc,QAAQ,CAAA;AACrC,EAAM,MAAA,QAAA,GAAWA,wBAAc,UAAU,CAAA;AACzC,EAAM,MAAA,aAAA,GAAgBA,wBAAc,eAAe,CAAA;AACnD,EAAM,MAAA,MAAA,GAASA,wBAAc,QAAQ,CAAA;AACrC,EAAO,OAAAU,iBAAA;AAAA,IACLC,aAAI,CAAA,QAAA,EAAU,MAAQ,EAAA,aAAA,EAAe,MAAM,CAAA;AAAA,IAC3C,CAAC,CAAC,OAAA,EAAS,KAAO,EAAA,YAAA,EAAc,KAAK,CAAM,KAAA;AACzC,MAAO,OAAA,MAAA,CAAO,KAAK,CAAE,CAAA,OAAA,CAAQ,IAAI,MAAO,CAAA,OAAA,EAAS,KAAK,CAAA,EAAG,YAAY,CAAA;AAAA;AACvE,GACF;AACF;;AChBgB,SAAA,GAAA,CACd,OACA,EAAA,MAAA,EACA,QACA,EAAA;AACA,EAAM,MAAA,KAAA,GAAQX,wBAAc,OAAO,CAAA;AACnC,EAAM,MAAA,IAAA,GAAOA,wBAAc,MAAM,CAAA;AACjC,EAAM,MAAA,MAAA,GAASA,wBAAc,QAAQ,CAAA;AACrC,EAAO,OAAAC,iBAAA,CAAW,SAAS,OAAA,CAAQ,CAAG,EAAA;AACpC,IAAIU,aAAA,CAAA,KAAA,EAAO,IAAM,EAAA,MAAM,CAAE,CAAA,IAAA,CAAK,CAAC,CAAC,IAAA,EAAM,GAAK,EAAA,KAAK,CAAM,KAAA;AACpD,MAAC,IAAA,CAAiC,GAAG,CAAI,GAAA,KAAA;AACzC,MAAA,CAAA,CAAE,IAAI,CAAA;AAAA,KACP,CAAA;AAAA,GACF,CAAA;AACH;;ACIgB,SAAA,MAAA,CACd,IACA,EAAA,MAAA,EACA,QACkC,EAAA;AAClC,EAAM,MAAA,OAAA,GAAUX,wBAAc,MAAM,CAAA;AACpC,EAAO,OAAAC,iBAAA,CAAW,SAAS,UAAA,CAAW,CAAG,EAAA;AACvC,IAAA,MAAM,KAAKE,0BAAiB,EAAA;AAC5B,IAAA,MAAM,aAAa,MAAM;AACvB,MAAA,EAAA,CAAG,OAAQ,EAAA;AAAA,KACb;AACA,IAAIQ,aAAA,CAAA,OAAA,EAAS,IAAI,CAAE,CAAA,IAAA,CAAK,CAAC,CAACU,OAAAA,EAAQ,GAAG,CAAM,KAAA;AACzC,MAAW,UAAA,EAAA;AACX,MAAA,MAAM,QAAW,GAAAV,aAAA;AAAA,QACf,GAAGU,OAAO,CAAA,GAAA;AAAA,UAAI,CAACC,EACb,KAAA,aAAA;AAAA,YACEJ,YAAA,CAAGI,GAAE,OAAO,CAAA;AAAA,YACZJ,aAAG,GAAG,CAAA;AAAA,YACNI,EAAE,CAAA,YAAA,GAAeJ,YAAGI,CAAAA,EAAAA,CAAE,YAAY,CAAI,GAAA;AAAA;AACxC;AACF,OACF;AACA,MAAS,QAAA,CAAA,IAAA,CAAK,CAAC,OAAY,KAAA;AACzB,QAAA,MAAM,QAAQ,OAAQ,CAAA,SAAA,CAAU,CAAC,CAAA,KAAM,MAAM,IAAI,CAAA;AAEjD,QAAA,IAAI,UAAU,EAAI,EAAA;AAChB,UAAA,MAAM,WAAW,QAAS,EAAA;AAC1B,UAAA,EAAA,CAAG,IAAI,QAAQ,CAAA;AACf,UAAA,QAAA,CAAS,KAAK,CAAC,CAAA;AAAA;AAGjB,QAAA,IAAI,QAAQ,EAAI,EAAA;AACd,UAAA,MAAM,QAAWD,GAAAA,OAAAA,CAAO,KAAK,CAAA,CAAE,OAAQ,EAAA;AACvC,UAAA,EAAA,CAAG,IAAI,QAAQ,CAAA;AACf,UAAA,QAAA,CAAS,KAAK,CAAC,CAAA;AAAA;AACjB,OACD,CAAA;AAAA,KACF,CAAA;AAED,IAAO,OAAA,UAAA;AAAA,GACR,CAAA;AACH;;AC3DO,SAAS,YACd,CAAA,OAAA,EACA,WAAmC,GAAAH,YAAA,CAAG,EAAE,CACxC,EAAA;AACA,EAAO,OAAAjB,iBAAA,CAAgB,SAAS,gBAAA,CAAiB,CAAG,EAAA;AAClD,IAAIU,aAAA,CAAA,WAAA,EAAa,GAAG,OAAO,CAAA,CAAE,KAAK,CAAC,CAAC,QAAa,EAAA,GAAA,OAAO,CAAM,KAAA;AAC5D,MAAE,CAAA,CAAA,OAAA,CAAQ,IAAK,CAAA,QAAQ,CAAC,CAAA;AAAA,KACzB,CAAA;AAAA,GACF,CAAA;AACH;;;;;ACSO,SAAS,SACd,GAA4D,GAAA,EAAA,EAC5D,UAAiDO,YAAG,CAAA,EAAE,CACtD,EAAA;AACA,EAAA,MAAM,OAAOV,cAAa,EAAA;AAC1B,EAAA,IAAI,OAAO,GAAA,KAAQ,QAAY,IAAAe,mBAAA,CAAU,GAAG,CAAG,EAAA;AAC7C,IAAK,IAAA,CAAA,KAAA,CAAMvB,uBAAc,CAAA,GAAG,CAAC,CAAA;AAAA;AAG/B,EAAA,MAAM,IAAI,IAAI,YAAA;AAAA,IACZ,IAAA;AAAA,IACA,OAAA,GAAUA,uBAAc,CAAA,OAAO,CAAI,GAAA;AAAA,GACrC;AAEA,EAAI,IAAA,OAAO,QAAQ,UAAY,EAAA;AAC7B,IAAK,IAAA,CAAA,KAAA;AAAA,MACHC,iBAAA,CAAQ,CAAC,CAAM,KAAA;AACb,QAAE,CAAA,CAAA,GAAA,CAAI,CAAC,CAAC,CAAA;AAAA,OACT;AAAA,KACH;AAAA;AAGF,EAAO,OAAA,CAAA;AACT;AAEA,MAAM,YAA6D,CAAA;AAAA,EAO1D,WAAA,CACG,OAA4BiB,YAAG,CAAA,EAAE,GACjC,OAAgD,GAAAA,YAAA,CAAG,EAAE,CAC7D,EAAA;AAFQ,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AARV,IAAA,aAAA,CAAA,IAAA,EAAQ,MAAKf,0BAAiB,EAAA,CAAA;AAC9B,IAAQ,aAAA,CAAA,IAAA,EAAA,YAAA,EAAa,IAAIqB,oBAAW,EAAA,CAAA;AACpC,IAAA,aAAA,CAAA,IAAA,EAAQ,MAAoC,EAAA;AAAA,MAC1C,IAAA,EAAMN,aAAG,MAAM;AAAA,KACjB,CAAA;AAAA;AAKG,EAEI,KAAK,SAA4C,EAAA;AACtD,IAAM,MAAA,KAAA,GAAQ,MAAO,CAAA,IAAA,CAAK,IAAI,CAAA;AAC9B,IAAAR,iBAAA,CAAQC,aAAI,CAAA,IAAA,CAAK,IAAM,EAAA,IAAA,CAAK,OAAS,EAAA,KAAK,CAAG,EAAA,CAAC,CAAC,IAAA,EAAM,KAAO,EAAA,IAAI,CAAM,KAAA;AACpE,MAAI,IAAA;AACF,QAAO,MAAA,CAAA,OAAA,CAAQ,KAAK,CAAE,CAAA,OAAA,CAAQ,CAAC,CAAC,EAAA,EAAI,GAAG,CAAM,KAAA;AAC3C,UAAA,IAAA,GAAO,IAAK,CAAA,UAAA,CAAW,EAAI,EAAA,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,SACvC,CAAA;AACD,QAAO,MAAA,CAAA,OAAA,CAAQ,IAAI,CAAE,CAAA,OAAA,CAAQ,CAAC,CAAC,EAAA,EAAI,GAAG,CAAM,KAAA;AAC1C,UAAA,IAAA,GAAO,IAAK,CAAA,UAAA,CAAW,EAAI,EAAA,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,SACvC,CAAA;AAAA,eACM,CAAG,EAAA;AACV,QAAK,IAAA,CAAA,UAAA,CAAW,OAAO,CAAC,CAAA;AAAA;AAG1B,MAAO,OAAA,IAAA;AAAA,KACR,CAAE,CAAA,IAAA,CAAK,SAAS,CAAA;AACjB,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,SAAS,KAAe,EAAA;AAC7B,IAAK,IAAA,CAAA,IAAA,GAAOO,aAAG,KAAK,CAAA;AAAA;AACtB;AAAA;AAAA;AAAA;AAAA,EAMO,IAAI,GAA2B,EAAA;AACpC,IAAA,MAAM,IACJ,GAAA,IAAA,CAAK,GAAI,EAAA,CAAE,SAAS,EAAE,CAAA,GAAI,IAAK,CAAA,MAAA,EAAS,CAAA,QAAA,CAAS,EAAE,CAAA,CAAE,UAAU,CAAC,CAAA;AAClE,IAAM,MAAA,OAAA,GAAU,OAAO,IAAI,CAAA,CAAA;AAC3B,IAAI,IAAAO,uBAAA,CAAc,GAAG,CAAG,EAAA;AACtB,MAAK,IAAA,CAAA,EAAA,CAAG,IAAI,GAAG,CAAA;AAAA;AAEjB,IAAK,IAAA,CAAA,IAAA,CAAK,OAAO,CAAI,GAAA,GAAA;AACrB,IAAO,OAAA,OAAA;AAAA;AACT,EAEO,MAAM,QAA4C,EAAA;AACvD,IAAK,IAAA,CAAA,UAAA,CAAW,MAAM,QAAQ,CAAA;AAC9B,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,OAAgB,GAAA;AACrB,IAAA,IAAA,CAAK,GAAG,OAAQ,EAAA;AAChB,IAAO,OAAA,IAAA;AAAA;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -5,7 +5,7 @@ import { MaybeMessage, MessageType, ConstructorType, DestroyableType, MessageSou
5
5
  * Allows switching between left and right messages depending on condition
6
6
  * https://silentium-lab.github.io/silentium-components/#/behaviors/branch
7
7
  */
8
- declare function Branch<Then, Else>(_condition: MaybeMessage<boolean>, _left: MaybeMessage<Then>, _right?: MaybeMessage<Else>): silentium.MessageRx<Then | Else>;
8
+ declare function Branch<Then, Else>(_condition: MaybeMessage<boolean>, _left: MaybeMessage<Then>, _right?: MaybeMessage<Else>): silentium.MessageImpl<Then | Else>;
9
9
 
10
10
  /**
11
11
  * Depending on the $condition message,
@@ -27,13 +27,13 @@ declare function Constant<T>(permanent: T, $trigger: MessageType): MessageType<T
27
27
  * time runs out from $timeout; if $base manages to
28
28
  * respond before $timeout then the value from base will be returned
29
29
  */
30
- declare function Deadline<T>($base: MessageType<T>, _timeout: MaybeMessage<number>): silentium.MessageRx<T>;
30
+ declare function Deadline<T>($base: MessageType<T>, _timeout: MaybeMessage<number>): silentium.MessageImpl<T>;
31
31
 
32
32
  /**
33
33
  * Defer one source after another, gives values Of baseSrc only when triggerSrc responds
34
34
  * https://silentium-lab.github.io/silentium-components/#/behaviors/deferred
35
35
  */
36
- declare function Deferred<T>($base: MessageType<T>, $trigger: MessageType<unknown>): silentium.MessageRx<T>;
36
+ declare function Deferred<T>($base: MessageType<T>, $trigger: MessageType<unknown>): silentium.MessageImpl<T>;
37
37
 
38
38
  /**
39
39
  * Message separate from the base
@@ -55,20 +55,20 @@ declare function Dirty<T extends Record<string, unknown>>($base: MessageType<T>,
55
55
  * second message stops loading
56
56
  * https://silentium-lab.github.io/silentium-components/#/behaviors/loading
57
57
  */
58
- declare function Loading($start: MessageType<unknown>, $finish: MessageType<unknown>): silentium.MessageRx<boolean>;
58
+ declare function Loading($start: MessageType<unknown>, $finish: MessageType<unknown>): silentium.MessageImpl<boolean>;
59
59
 
60
60
  /**
61
61
  * Allows locking messages
62
62
  * if a $lock message arrives
63
63
  * https://silentium-lab.github.io/silentium-components/#/behaviors/lock
64
64
  */
65
- declare function Lock<T>($base: MessageType<T>, $lock: MessageType<boolean>): silentium.MessageRx<T>;
65
+ declare function Lock<T>($base: MessageType<T>, $lock: MessageType<boolean>): silentium.MessageImpl<T>;
66
66
 
67
67
  /**
68
68
  * Didn't respond if new value Of baseSrc equals to old value
69
69
  * https://silentium-lab.github.io/silentium-components/#/behaviors/memo
70
70
  */
71
- declare function Memo<T>($base: MessageType<T>): silentium.MessageRx<T>;
71
+ declare function Memo<T>($base: MessageType<T>): silentium.MessageImpl<T>;
72
72
 
73
73
  /**
74
74
  * Есть объект и каждое новое его значение нужно мержить с прошлым
@@ -80,7 +80,7 @@ declare function MergeAccumulation<T extends object>($base: MessageType<T>, $res
80
80
  * Represents source what was changed at least once
81
81
  * https://silentium-lab.github.io/silentium-components/#/behaviors/only-changed
82
82
  */
83
- declare function OnlyChanged<T>($base: MessageType<T>): silentium.MessageRx<T>;
83
+ declare function OnlyChanged<T>($base: MessageType<T>): silentium.MessageImpl<T>;
84
84
 
85
85
  /**
86
86
  * Return source Of record path
@@ -103,80 +103,80 @@ declare function PathExisted<R, T extends object | Array<any> = any, K extends s
103
103
  * Active polling of $base message
104
104
  * synchronized with $trigger message
105
105
  */
106
- declare function Polling<T>($base: MessageType<T>, $trigger: MessageType<unknown>): silentium.MessageRx<T>;
106
+ declare function Polling<T>($base: MessageType<T>, $trigger: MessageType<unknown>): silentium.MessageImpl<T>;
107
107
 
108
108
  /**
109
109
  * Helps eliminate unwanted values
110
110
  * that shouldn't exist in object fields
111
111
  */
112
- declare function RecordTruncated(_record: MaybeMessage<Record<string, unknown>>, _badValues: MaybeMessage<unknown[]>): silentium.MessageRx<any>;
112
+ declare function RecordTruncated(_record: MaybeMessage<Record<string, unknown>>, _badValues: MaybeMessage<unknown[]>): silentium.MessageImpl<any>;
113
113
 
114
114
  /**
115
115
  * Helps to represent only last fresh value Of some source, refreshing controls by shotSrc
116
116
  * https://silentium-lab.github.io/silentium-components/#/behaviors/shot
117
117
  */
118
- declare function Shot<T>($target: MessageType<T>, $trigger: MessageType): silentium.MessageRx<T>;
118
+ declare function Shot<T>($target: MessageType<T>, $trigger: MessageType): silentium.MessageImpl<T>;
119
119
 
120
120
  /**
121
121
  * Defer a message to the event loop
122
122
  * so that it executes once within
123
123
  * a certain timer firing interval
124
124
  */
125
- declare function Task<T>(baseSrc: MaybeMessage<T>, delay?: number): silentium.MessageRx<T>;
125
+ declare function Task<T>(baseSrc: MaybeMessage<T>, delay?: number): silentium.MessageImpl<T>;
126
126
 
127
127
  /**
128
128
  * Accumulates the last value Of the source and returns one result once per tick
129
129
  * https://silentium-lab.github.io/silentium-components/#/behaviors/tick
130
130
  */
131
- declare function Tick<T>($base: MessageType<T>): silentium.MessageRx<T>;
131
+ declare function Tick<T>($base: MessageType<T>): silentium.MessageImpl<T>;
132
132
 
133
133
  /**
134
134
  * Modify the object structure
135
135
  * with the ability to create new fields based on
136
136
  * existing ones in the object
137
137
  */
138
- declare function Transformed<T extends Record<string, any>>(_base: MaybeMessage<T>, transformRules: Record<string, ConstructorType<[MaybeMessage<any>]>>): silentium.MessageRx<unknown>;
138
+ declare function Transformed<T extends Record<string, any>>(_base: MaybeMessage<T>, transformRules: Record<string, ConstructorType<[MaybeMessage<any>]>>): silentium.MessageImpl<unknown>;
139
139
 
140
- declare function TransformedList<T extends any[]>(_base: MaybeMessage<T>, transformRules: Record<string, ConstructorType<[MaybeMessage<any>]>>): silentium.MessageRx<unknown[]>;
140
+ declare function TransformedList<T extends any[]>(_base: MaybeMessage<T>, transformRules: Record<string, ConstructorType<[MaybeMessage<any>]>>): silentium.MessageImpl<unknown[]>;
141
141
 
142
142
  /**
143
143
  * Logical AND over two messages
144
144
  * https://silentium-lab.github.io/silentium-components/#/boolean/and
145
145
  */
146
- declare function And($one: MessageType<boolean>, $two: MessageType<boolean>): silentium.MessageRx<boolean>;
146
+ declare function And($one: MessageType<boolean>, $two: MessageType<boolean>): silentium.MessageImpl<boolean>;
147
147
 
148
148
  /**
149
149
  * Convert Any source to boolean source
150
150
  * https://silentium-lab.github.io/silentium-components/#/boolean/bool
151
151
  */
152
- declare function Bool($base: MessageType): silentium.MessageRx<boolean>;
152
+ declare function Bool($base: MessageType): silentium.MessageImpl<boolean>;
153
153
 
154
154
  /**
155
155
  * Logical negation of message
156
156
  * https://silentium-lab.github.io/silentium-components/#/boolean/not
157
157
  */
158
- declare function Not($base: MessageType<boolean>): silentium.MessageRx<boolean>;
158
+ declare function Not($base: MessageType<boolean>): silentium.MessageImpl<boolean>;
159
159
 
160
160
  /**
161
161
  * Logical OR over two messages
162
162
  * https://silentium-lab.github.io/silentium-components/#/boolean/or
163
163
  */
164
- declare function Or($one: MessageType<boolean>, $two: MessageType<boolean>): silentium.MessageRx<boolean>;
164
+ declare function Or($one: MessageType<boolean>, $two: MessageType<boolean>): silentium.MessageImpl<boolean>;
165
165
 
166
166
  /**
167
167
  * Represents object from json
168
168
  */
169
- declare function FromJson<T = Record<string, unknown>>($json: MessageType<string>): silentium.MessageRx<T>;
169
+ declare function FromJson<T = Record<string, unknown>>($json: MessageType<string>): silentium.MessageImpl<T>;
170
170
 
171
171
  /**
172
172
  * Represents json from object
173
173
  */
174
- declare function ToJson($data: MessageType): silentium.MessageRx<string>;
174
+ declare function ToJson($data: MessageType): silentium.MessageImpl<string>;
175
175
 
176
176
  /**
177
177
  * Represents the first element Of an array.
178
178
  */
179
- declare function First<T extends Array<unknown>>($base: MessageType<T>): silentium.MessageRx<T[0]>;
179
+ declare function First<T extends Array<unknown>>($base: MessageType<T>): silentium.MessageImpl<T[0]>;
180
180
 
181
181
  interface Route<T> {
182
182
  pattern: string;
@@ -193,7 +193,7 @@ declare function Router<T = string>($url: MessageType<string>, routes: MaybeMess
193
193
  * Join sources Of strings to one source
194
194
  * https://silentium-lab.github.io/silentium-components/#/string/concatenated
195
195
  */
196
- declare function Concatenated(sources: MessageType<string>[], joinPartSrc?: MessageType<string>): silentium.MessageRx<string>;
196
+ declare function Concatenated(sources: MessageType<string>[], joinPartSrc?: MessageType<string>): silentium.MessageImpl<string>;
197
197
 
198
198
  /**
199
199
  * Allows creating a string template with
@@ -214,7 +214,7 @@ declare class TemplateImpl implements MessageType<string>, DestroyableType {
214
214
  * Ability to register variable
215
215
  * in concrete place Of template
216
216
  */
217
- var(src: MessageType<string>): string;
217
+ var(src: MessageType<unknown>): string;
218
218
  catch(rejected: ConstructorType<[unknown]>): this;
219
219
  destroy(): this;
220
220
  }
@@ -224,38 +224,38 @@ declare class TemplateImpl implements MessageType<string>, DestroyableType {
224
224
  * of all previously received messages in the form of a structure
225
225
  * https://silentium-lab.github.io/silentium-components/#/structures/hash-table
226
226
  */
227
- declare function HashTable<T>($base: MessageType<[string, unknown]>): silentium.MessageRx<T>;
227
+ declare function HashTable<T>($base: MessageType<[string, unknown]>): silentium.MessageImpl<T>;
228
228
 
229
229
  type UnWrap<T> = T extends MessageType<infer U> ? U : T;
230
230
  /**
231
231
  * Returns record Of data from record Of sources
232
232
  * https://silentium-lab.github.io/silentium-components/#/structures/record
233
233
  */
234
- declare function Record$1<T>(record: Record$1<string, T>): silentium.MessageRx<Record$1<string, UnWrap<T>>>;
234
+ declare function Record$1<T>(record: Record$1<string, T>): silentium.MessageImpl<Record$1<string, UnWrap<T>>>;
235
235
 
236
236
  /**
237
237
  * First match Of regexp
238
238
  * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched
239
239
  */
240
- declare function RegexpMatch(patternSrc: MaybeMessage<string>, valueSrc: MaybeMessage<string>, flagsSrc?: MaybeMessage<string>): silentium.MessageRx<string[]>;
240
+ declare function RegexpMatch(patternSrc: MaybeMessage<string>, valueSrc: MaybeMessage<string>, flagsSrc?: MaybeMessage<string>): silentium.MessageImpl<string[]>;
241
241
 
242
242
  /**
243
243
  * Boolean source what checks what string matches pattern
244
244
  * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched
245
245
  */
246
- declare function RegexpMatched(patternSrc: MaybeMessage<string>, valueSrc: MaybeMessage<string>, flagsSrc?: MaybeMessage<string>): silentium.MessageRx<boolean>;
246
+ declare function RegexpMatched(patternSrc: MaybeMessage<string>, valueSrc: MaybeMessage<string>, flagsSrc?: MaybeMessage<string>): silentium.MessageImpl<boolean>;
247
247
 
248
248
  /**
249
249
  * Returns string replaced by regular expression pattern
250
250
  * https://silentium-lab.github.io/silentium-components/#/system/regexp-replaced
251
251
  */
252
- declare function RegexpReplaced(valueSrc: MaybeMessage<string>, patternSrc: MaybeMessage<string>, replaceValueSrc: MaybeMessage<string>, flagsSrc?: MaybeMessage<string>): silentium.MessageRx<string>;
252
+ declare function RegexpReplaced(valueSrc: MaybeMessage<string>, patternSrc: MaybeMessage<string>, replaceValueSrc: MaybeMessage<string>, flagsSrc?: MaybeMessage<string>): silentium.MessageImpl<string>;
253
253
 
254
254
  /**
255
255
  * Ability to mutate some object, helpful when integrate to procedure systems
256
256
  * https://silentium-lab.github.io/silentium-components/#/system/set
257
257
  */
258
- declare function Set<T extends Record<string, unknown>>(baseSrc: MessageType<T>, keySrc: MessageType<string>, valueSrc: MessageType<unknown>): silentium.MessageRx<T>;
258
+ declare function Set<T extends Record<string, unknown>>(baseSrc: MessageType<T>, keySrc: MessageType<string>, valueSrc: MessageType<unknown>): silentium.MessageImpl<T>;
259
259
 
260
260
  export { And, Bool, Branch, BranchLazy, Concatenated, Constant, Deadline, Deferred, Detached, Dirty, First, FromJson, HashTable, Loading, Lock, Memo, MergeAccumulation, Not, OnlyChanged, Or, Part, Path, PathExisted, Polling, Record$1 as Record, RecordTruncated, RegexpMatch, RegexpMatched, RegexpReplaced, Router, Set, Shot, Task, Template, Tick, ToJson, Transformed, TransformedList };
261
261
  export type { Route };
@@ -3,16 +3,19 @@ import { ActualMessage, Message, Primitive, DestroyContainer, ResetSilenceCache,
3
3
  function Branch(_condition, _left, _right) {
4
4
  const $condition = ActualMessage(_condition);
5
5
  const $left = ActualMessage(_left);
6
- const $right = _right && ActualMessage(_right);
6
+ const $right = ActualMessage(_right);
7
7
  return Message(function BranchImpl(r) {
8
8
  const left = Primitive($left);
9
9
  let right;
10
- if ($right !== void 0) {
10
+ if (_right !== void 0) {
11
11
  right = Primitive($right);
12
12
  }
13
13
  $condition.then((v) => {
14
+ if (typeof v !== "boolean") {
15
+ throw new Error("Branch received not boolean value");
16
+ }
14
17
  let result = null;
15
- if (v) {
18
+ if (v === true) {
16
19
  result = left.primitive();
17
20
  } else if (right) {
18
21
  result = right.primitive();