@fluidframework/map 2.51.0 → 2.53.0-350190

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
@@ -1,5 +1,9 @@
1
1
  # @fluidframework/map
2
2
 
3
+ ## 2.52.0
4
+
5
+ Dependency updates only.
6
+
3
7
  ## 2.51.0
4
8
 
5
9
  Dependency updates only.
@@ -2,7 +2,6 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import type { ILocalValue } from "./localValues.js";
6
5
  /**
7
6
  * Operation indicating a value should be set for a key.
8
7
  */
@@ -42,61 +41,6 @@ export interface IMapDeleteOperation {
42
41
  */
43
42
  key: string;
44
43
  }
45
- /**
46
- * Metadata for an local `edit` operation.
47
- */
48
- export interface IMapKeyEditLocalOpMetadata {
49
- /**
50
- * String identifier of the operation type.
51
- */
52
- type: "edit";
53
- /**
54
- * Unique identifier for the local operation.
55
- */
56
- pendingMessageId: number;
57
- /**
58
- * Local value prior to the edit.
59
- */
60
- previousValue: ILocalValue;
61
- }
62
- /**
63
- * Metadata for an local `add` operation.
64
- */
65
- export interface IMapKeyAddLocalOpMetadata {
66
- /**
67
- * String identifier of the operation type.
68
- */
69
- type: "add";
70
- /**
71
- * Unique identifier for the local operation.
72
- */
73
- pendingMessageId: number;
74
- }
75
- /**
76
- * Metadata for an local `clear` operation.
77
- */
78
- export interface IMapClearLocalOpMetadata {
79
- /**
80
- * String identifier of the operation type.
81
- */
82
- type: "clear";
83
- /**
84
- * Unique identifier for the local operation.
85
- */
86
- pendingMessageId: number;
87
- /**
88
- * Local map contents prior to clearing it.
89
- */
90
- previousMap?: Map<string, ILocalValue>;
91
- }
92
- /**
93
- * Metadata for a local operation associated with a specific key entry in the map.
94
- */
95
- export type MapKeyLocalOpMetadata = IMapKeyEditLocalOpMetadata | IMapKeyAddLocalOpMetadata;
96
- /**
97
- * Metadata for a local operation.
98
- */
99
- export type MapLocalOpMetadata = IMapClearLocalOpMetadata | MapKeyLocalOpMetadata;
100
44
  /**
101
45
  * The _ready-for-serialization_ format of values contained in DDS contents. This allows us to use
102
46
  * {@link ISerializableValue."type"} to understand whether they're storing a Plain JavaScript object,
@@ -1 +1 @@
1
- {"version":3,"file":"internalInterfaces.d.ts","sourceRoot":"","sources":["../src/internalInterfaces.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC;;OAEG;IACH,IAAI,EAAE,KAAK,CAAC;IAEZ;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,KAAK,EAAE,kBAAkB,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC;;OAEG;IACH,IAAI,EAAE,OAAO,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC;;OAEG;IACH,IAAI,EAAE,QAAQ,CAAC;IAEf;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IAC1C;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,aAAa,EAAE,WAAW,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACzC;;OAEG;IACH,IAAI,EAAE,KAAK,CAAC;IAEZ;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACxC;;OAEG;IACH,IAAI,EAAE,OAAO,CAAC;IAEd;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,0BAA0B,GAAG,yBAAyB,CAAC;AAE3F;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,wBAAwB,GAAG,qBAAqB,CAAC;AAElF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,kBAAkB;IAClC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IAEH,KAAK,EAAE,GAAG,CAAC;CACX;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;;OAIG;IACH,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B"}
1
+ {"version":3,"file":"internalInterfaces.d.ts","sourceRoot":"","sources":["../src/internalInterfaces.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC;;OAEG;IACH,IAAI,EAAE,KAAK,CAAC;IAEZ;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,KAAK,EAAE,kBAAkB,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC;;OAEG;IACH,IAAI,EAAE,OAAO,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC;;OAEG;IACH,IAAI,EAAE,QAAQ,CAAC;IAEf;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;CACZ;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,kBAAkB;IAClC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IAEH,KAAK,EAAE,GAAG,CAAC;CACX;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;;OAIG;IACH,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"internalInterfaces.js","sourceRoot":"","sources":["../src/internalInterfaces.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { ILocalValue } from \"./localValues.js\";\n\n/**\n * Operation indicating a value should be set for a key.\n */\nexport interface IMapSetOperation {\n\t/**\n\t * String identifier of the operation type.\n\t */\n\ttype: \"set\";\n\n\t/**\n\t * Map key being modified.\n\t */\n\tkey: string;\n\n\t/**\n\t * Value to be set on the key.\n\t */\n\tvalue: ISerializableValue;\n}\n\n/**\n * Operation indicating the map should be cleared.\n */\nexport interface IMapClearOperation {\n\t/**\n\t * String identifier of the operation type.\n\t */\n\ttype: \"clear\";\n}\n\n/**\n * Operation indicating a key should be deleted from the map.\n */\nexport interface IMapDeleteOperation {\n\t/**\n\t * String identifier of the operation type.\n\t */\n\ttype: \"delete\";\n\n\t/**\n\t * Map key being modified.\n\t */\n\tkey: string;\n}\n\n/**\n * Metadata for an local `edit` operation.\n */\nexport interface IMapKeyEditLocalOpMetadata {\n\t/**\n\t * String identifier of the operation type.\n\t */\n\ttype: \"edit\";\n\n\t/**\n\t * Unique identifier for the local operation.\n\t */\n\tpendingMessageId: number;\n\n\t/**\n\t * Local value prior to the edit.\n\t */\n\tpreviousValue: ILocalValue;\n}\n\n/**\n * Metadata for an local `add` operation.\n */\nexport interface IMapKeyAddLocalOpMetadata {\n\t/**\n\t * String identifier of the operation type.\n\t */\n\ttype: \"add\";\n\n\t/**\n\t * Unique identifier for the local operation.\n\t */\n\tpendingMessageId: number;\n}\n\n/**\n * Metadata for an local `clear` operation.\n */\nexport interface IMapClearLocalOpMetadata {\n\t/**\n\t * String identifier of the operation type.\n\t */\n\ttype: \"clear\";\n\n\t/**\n\t * Unique identifier for the local operation.\n\t */\n\tpendingMessageId: number;\n\n\t/**\n\t * Local map contents prior to clearing it.\n\t */\n\tpreviousMap?: Map<string, ILocalValue>;\n}\n\n/**\n * Metadata for a local operation associated with a specific key entry in the map.\n */\nexport type MapKeyLocalOpMetadata = IMapKeyEditLocalOpMetadata | IMapKeyAddLocalOpMetadata;\n\n/**\n * Metadata for a local operation.\n */\nexport type MapLocalOpMetadata = IMapClearLocalOpMetadata | MapKeyLocalOpMetadata;\n\n/**\n * The _ready-for-serialization_ format of values contained in DDS contents. This allows us to use\n * {@link ISerializableValue.\"type\"} to understand whether they're storing a Plain JavaScript object,\n * a {@link @fluidframework/shared-object-base#SharedObject}, or a value type.\n *\n * @remarks\n *\n * Note that the in-memory equivalent of ISerializableValue is ILocalValue (similarly holding a type, but with\n * the _in-memory representation_ of the value instead). An ISerializableValue is what gets passed to\n * JSON.stringify and comes out of JSON.parse. This format is used both for snapshots (loadCore/populate)\n * and ops (set).\n *\n * If type is Plain, it must be a plain JS object that can survive a JSON.stringify/parse. E.g. a URL object will\n * just get stringified to a URL string and not rehydrate as a URL object on the other side. It may contain members\n * that are ISerializedHandle (the serialized form of a handle).\n *\n * If type is a value type then it must be amongst the types registered via registerValueType or we won't know how\n * to serialize/deserialize it (we rely on its factory via .load() and .store()). Its value will be type-dependent.\n * If type is Shared, then the in-memory value will just be a reference to the SharedObject. Its value will be a\n * channel ID.\n *\n * @deprecated This type is legacy and deprecated(AB#8004).\n * @legacy\n * @alpha\n */\nexport interface ISerializableValue {\n\t/**\n\t * A type annotation to help indicate how the value serializes.\n\t */\n\ttype: string;\n\n\t/**\n\t * The JSONable representation of the value.\n\t */\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tvalue: any;\n}\n\n/**\n * Serialized {@link ISerializableValue} counterpart.\n */\nexport interface ISerializedValue {\n\t/**\n\t * A type annotation to help indicate how the value serializes.\n\t */\n\ttype: string;\n\n\t/**\n\t * String representation of the value.\n\t *\n\t * @remarks Will be undefined if the original value was undefined.\n\t */\n\tvalue: string | undefined;\n}\n"]}
1
+ {"version":3,"file":"internalInterfaces.js","sourceRoot":"","sources":["../src/internalInterfaces.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Operation indicating a value should be set for a key.\n */\nexport interface IMapSetOperation {\n\t/**\n\t * String identifier of the operation type.\n\t */\n\ttype: \"set\";\n\n\t/**\n\t * Map key being modified.\n\t */\n\tkey: string;\n\n\t/**\n\t * Value to be set on the key.\n\t */\n\tvalue: ISerializableValue;\n}\n\n/**\n * Operation indicating the map should be cleared.\n */\nexport interface IMapClearOperation {\n\t/**\n\t * String identifier of the operation type.\n\t */\n\ttype: \"clear\";\n}\n\n/**\n * Operation indicating a key should be deleted from the map.\n */\nexport interface IMapDeleteOperation {\n\t/**\n\t * String identifier of the operation type.\n\t */\n\ttype: \"delete\";\n\n\t/**\n\t * Map key being modified.\n\t */\n\tkey: string;\n}\n\n/**\n * The _ready-for-serialization_ format of values contained in DDS contents. This allows us to use\n * {@link ISerializableValue.\"type\"} to understand whether they're storing a Plain JavaScript object,\n * a {@link @fluidframework/shared-object-base#SharedObject}, or a value type.\n *\n * @remarks\n *\n * Note that the in-memory equivalent of ISerializableValue is ILocalValue (similarly holding a type, but with\n * the _in-memory representation_ of the value instead). An ISerializableValue is what gets passed to\n * JSON.stringify and comes out of JSON.parse. This format is used both for snapshots (loadCore/populate)\n * and ops (set).\n *\n * If type is Plain, it must be a plain JS object that can survive a JSON.stringify/parse. E.g. a URL object will\n * just get stringified to a URL string and not rehydrate as a URL object on the other side. It may contain members\n * that are ISerializedHandle (the serialized form of a handle).\n *\n * If type is a value type then it must be amongst the types registered via registerValueType or we won't know how\n * to serialize/deserialize it (we rely on its factory via .load() and .store()). Its value will be type-dependent.\n * If type is Shared, then the in-memory value will just be a reference to the SharedObject. Its value will be a\n * channel ID.\n *\n * @deprecated This type is legacy and deprecated(AB#8004).\n * @legacy\n * @alpha\n */\nexport interface ISerializableValue {\n\t/**\n\t * A type annotation to help indicate how the value serializes.\n\t */\n\ttype: string;\n\n\t/**\n\t * The JSONable representation of the value.\n\t */\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tvalue: any;\n}\n\n/**\n * Serialized {@link ISerializableValue} counterpart.\n */\nexport interface ISerializedValue {\n\t/**\n\t * A type annotation to help indicate how the value serializes.\n\t */\n\ttype: string;\n\n\t/**\n\t * String representation of the value.\n\t *\n\t * @remarks Will be undefined if the original value was undefined.\n\t */\n\tvalue: string | undefined;\n}\n"]}
@@ -8,13 +8,9 @@ import type { IFluidSerializer } from "@fluidframework/shared-object-base/intern
8
8
  import type { ISharedMapEvents } from "./interfaces.js";
9
9
  import type { IMapClearOperation, IMapDeleteOperation, IMapSetOperation, ISerializableValue, ISerializedValue } from "./internalInterfaces.js";
10
10
  /**
11
- * Map key operations are one of several types.
11
+ * Union of all possible map operations.
12
12
  */
13
- export type IMapKeyOperation = IMapSetOperation | IMapDeleteOperation;
14
- /**
15
- * Description of a map delta operation
16
- */
17
- export type IMapOperation = IMapKeyOperation | IMapClearOperation;
13
+ export type IMapOperation = IMapSetOperation | IMapDeleteOperation | IMapClearOperation;
18
14
  /**
19
15
  * Defines the in-memory object structure to be used for the conversion to/from serialized.
20
16
  *
@@ -46,25 +42,18 @@ export declare class MapKernel {
46
42
  */
47
43
  private readonly messageHandlers;
48
44
  /**
49
- * The in-memory data the map is storing.
50
- */
51
- private readonly data;
52
- /**
53
- * Keys that have been modified locally but not yet ack'd from the server.
54
- */
55
- private readonly pendingKeys;
56
- /**
57
- * This is used to assign a unique id to every outgoing operation and helps in tracking unack'd ops.
45
+ * The data the map is storing, but only including sequenced values (no local pending
46
+ * modifications are included).
58
47
  */
59
- private nextPendingMessageId;
48
+ private readonly sequencedData;
60
49
  /**
61
- * The pending metadata for any local operations that have not yet been ack'd from the server, in order.
62
- */
63
- private readonly pendingMapLocalOpMetadata;
64
- /**
65
- * The pending ids of any clears that have been performed locally but not yet ack'd from the server
50
+ * A data structure containing all local pending modifications, which is used in combination
51
+ * with the sequencedData to compute optimistic values.
52
+ *
53
+ * Pending sets are aggregated into "lifetimes", which permit correct relative iteration order
54
+ * even across remote operations and rollbacks.
66
55
  */
67
- private readonly pendingClearMessageIds;
56
+ private readonly pendingData;
68
57
  /**
69
58
  * Create a new shared map kernel.
70
59
  * @param serializer - The serializer to serialize / parse handles
@@ -76,15 +65,32 @@ export declare class MapKernel {
76
65
  */
77
66
  constructor(serializer: IFluidSerializer, handle: IFluidHandle, submitMessage: (op: unknown, localOpMetadata: unknown) => void, isAttached: () => boolean, eventEmitter: TypedEventEmitter<ISharedMapEvents>);
78
67
  /**
79
- * Get an iterator over the keys in this map.
80
- * @returns The iterator
68
+ * Get an iterator over the optimistically observable ILocalValue entries in the map. For example, excluding
69
+ * sequenced entries that have pending deletes/clears.
70
+ *
71
+ * @remarks
72
+ * There is no perfect solution here, particularly when the iterator is retained over time and the map is
73
+ * modified or new ack's are received. The pendingData portion of the iteration is the most susceptible to
74
+ * this problem. The implementation prioritizes (in roughly this order):
75
+ * 1. Correct immediate iteration (i.e. when the map is not modified before iteration completes)
76
+ * 2. Consistent iteration order before/after sequencing of pending ops; acks don't change order
77
+ * 3. Consistent iteration order between synchronized clients, even if they each modified the map concurrently
78
+ * 4. Remaining as close as possible to the native Map iterator behavior, e.g. live-ish view rather than snapshot
79
+ *
80
+ * For this reason, it's important not to internally snapshot the output of the iterator for any purpose that
81
+ * does not immediately (synchronously) consume that output and dispose of it.
81
82
  */
82
- keys(): IterableIterator<string>;
83
+ private readonly internalIterator;
83
84
  /**
84
85
  * Get an iterator over the entries in this map.
85
86
  * @returns The iterator
86
87
  */
87
88
  entries(): IterableIterator<[string, unknown]>;
89
+ /**
90
+ * Get an iterator over the keys in this map.
91
+ * @returns The iterator
92
+ */
93
+ keys(): IterableIterator<string>;
88
94
  /**
89
95
  * Get an iterator over the values in this map.
90
96
  * @returns The iterator
@@ -100,6 +106,11 @@ export declare class MapKernel {
100
106
  * @param callbackFn - Callback function
101
107
  */
102
108
  forEach(callbackFn: (value: unknown, key: string, map: Map<string, unknown>) => void): void;
109
+ /**
110
+ * Compute the optimistic local value for a given key. This combines the sequenced data with
111
+ * any pending changes that have not yet been sequenced.
112
+ */
113
+ private readonly getOptimisticLocalValue;
103
114
  /**
104
115
  * {@inheritDoc ISharedMap.get}
105
116
  */
@@ -167,63 +178,10 @@ export declare class MapKernel {
167
178
  * @param localOpMetadata - The local metadata associated with the op.
168
179
  */
169
180
  rollback(op: unknown, localOpMetadata: unknown): void;
170
- /**
171
- * Set implementation used for both locally sourced sets as well as incoming remote sets.
172
- * @param key - The key being set
173
- * @param value - The value being set
174
- * @param local - Whether the message originated from the local client
175
- * @returns Previous local value of the key, if any
176
- */
177
- private setCore;
178
- /**
179
- * Clear implementation used for both locally sourced clears as well as incoming remote clears.
180
- * @param local - Whether the message originated from the local client
181
- */
182
- private clearCore;
183
- /**
184
- * Delete implementation used for both locally sourced deletes as well as incoming remote deletes.
185
- * @param key - The key being deleted
186
- * @param local - Whether the message originated from the local client
187
- * @returns Previous local value of the key if it existed, undefined if it did not exist
188
- */
189
- private deleteCore;
190
- /**
191
- * Clear all keys in memory in response to a remote clear, but retain keys we have modified but not yet been ack'd.
192
- */
193
- private clearExceptPendingKeys;
194
- /**
195
- * If our local operations that have not yet been ack'd will eventually overwrite an incoming operation, we should
196
- * not process the incoming operation.
197
- * @param op - Operation to check
198
- * @param local - Whether the message originated from the local client
199
- * @param localOpMetadata - For local client messages, this is the metadata that was submitted with the message.
200
- * For messages from a remote client, this will be undefined.
201
- * @returns True if the operation should be processed, false otherwise
202
- */
203
- private needProcessKeyOperation;
204
181
  /**
205
182
  * Get the message handlers for the map.
206
183
  * @returns A map of string op names to IMapMessageHandlers for those ops
207
184
  */
208
185
  private getMessageHandlers;
209
- private getMapClearMessageId;
210
- /**
211
- * Submit a clear message to remote clients.
212
- * @param op - The clear message
213
- */
214
- private submitMapClearMessage;
215
- private getMapKeyMessageId;
216
- /**
217
- * Submit a map key message to remote clients.
218
- * @param op - The map key message
219
- * @param previousValue - The value of the key before this op
220
- */
221
- private submitMapKeyMessage;
222
- /**
223
- * Submit a map key message to remote clients based on a previous submit.
224
- * @param op - The map key message
225
- * @param localOpMetadata - Metadata from the previous submit
226
- */
227
- private resubmitMapKeyMessage;
228
186
  }
229
187
  //# sourceMappingURL=mapKernel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mapKernel.d.ts","sourceRoot":"","sources":["../src/mapKernel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mapKernel.d.ts","sourceRoot":"","sources":["../src/mapKernel.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAEpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAGpF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EACX,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAEhB,kBAAkB,EAClB,gBAAgB,EAChB,MAAM,yBAAyB,CAAC;AAgCjC;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAAG,mBAAmB,GAAG,kBAAkB,CAAC;AAExF;;;;;;;GAOG;AAEH,MAAM,MAAM,0BAA0B,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AAE5E;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAyDxE;;GAEG;AACH,qBAAa,SAAS;IAsCpB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAzC9B;;OAEG;IACH,IAAW,IAAI,IAAI,MAAM,CAGxB;IAED;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsD;IAEtF;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkC;IAChE;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA0B;IAEtD;;;;;;;;OAQG;gBAEe,UAAU,EAAE,gBAAgB,EAC5B,MAAM,EAAE,YAAY,EACpB,aAAa,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,KAAK,IAAI,EAC9D,UAAU,EAAE,MAAM,OAAO,EACzB,YAAY,EAAE,iBAAiB,CAAC,gBAAgB,CAAC;IAKnE;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAuE/B;IAEF;;;OAGG;IACI,OAAO,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAqBrD;;;OAGG;IACI,IAAI,IAAI,gBAAgB,CAAC,MAAM,CAAC;IAmBvC;;;OAGG;IACI,MAAM,IAAI,gBAAgB,CAAC,OAAO,CAAC;IAmB1C;;;OAGG;IACI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAI/D;;;OAGG;IACI,OAAO,CACb,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAC1E,IAAI;IAWP;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAiBtC;IAEF;;OAEG;IACI,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAKnD;;;;OAIG;IACI,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIhC;;OAEG;IACI,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAyD7C;;;;OAIG;IACI,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IA2CnC;;OAEG;IACI,KAAK,IAAI,IAAI;IAmBpB;;;;OAIG;IACI,oBAAoB,CAAC,UAAU,EAAE,gBAAgB,GAAG,wBAAwB;IAQnF;;;OAGG;IACI,wBAAwB,CAAC,IAAI,EAAE,0BAA0B,GAAG,IAAI;IASvE;;;;;;;OAOG;IACI,kBAAkB,CAAC,EAAE,EAAE,aAAa,EAAE,eAAe,EAAE,OAAO,GAAG,OAAO;IASxE,iBAAiB,CAAC,EAAE,EAAE,aAAa,GAAG,IAAI;IAqBjD;;;;;;;;;;;;;;OAcG;IACI,iBAAiB,CACvB,EAAE,EAAE,aAAa,EACjB,KAAK,EAAE,OAAO,EACd,eAAe,EAAE,OAAO,GACtB,OAAO;IASV;;;;OAIG;IACI,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,GAAG,IAAI;IAgE5D;;;OAGG;IACH,OAAO,CAAC,kBAAkB;CAwH1B"}