@legendapp/state 0.9.2-alpha.9 → 0.10.0-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/index.cjs +634 -0
  2. package/index.cjs.map +1 -0
  3. package/index.d.ts +10 -6
  4. package/index.esm.mjs +613 -0
  5. package/index.esm.mjs.map +1 -0
  6. package/index.js +633 -42
  7. package/index.js.map +1 -1
  8. package/internal.cjs +26 -0
  9. package/internal.cjs.map +1 -0
  10. package/internal.d.ts +2 -3
  11. package/internal.esm.mjs +3 -0
  12. package/internal.esm.mjs.map +1 -0
  13. package/internal.js +26 -12
  14. package/internal.js.map +1 -1
  15. package/{src/persist/local-storage.js → local-storage.cjs} +6 -4
  16. package/local-storage.cjs.map +1 -0
  17. package/local-storage.esm.mjs +36 -0
  18. package/local-storage.esm.mjs.map +1 -0
  19. package/local-storage.js +39 -17
  20. package/local-storage.js.map +1 -1
  21. package/{src/persist/mmkv.js → mmkv.cjs} +9 -6
  22. package/mmkv.cjs.map +1 -0
  23. package/mmkv.esm.mjs +50 -0
  24. package/mmkv.esm.mjs.map +1 -0
  25. package/mmkv.js +53 -17
  26. package/mmkv.js.map +1 -1
  27. package/package.json +34 -10
  28. package/persist.cjs +195 -0
  29. package/persist.cjs.map +1 -0
  30. package/persist.d.ts +6 -0
  31. package/persist.esm.mjs +188 -0
  32. package/persist.esm.mjs.map +1 -0
  33. package/persist.js +195 -0
  34. package/persist.js.map +1 -0
  35. package/react.cjs +124 -0
  36. package/react.cjs.map +1 -0
  37. package/react.d.ts +1 -3
  38. package/react.esm.mjs +119 -0
  39. package/react.esm.mjs.map +1 -0
  40. package/react.js +123 -20
  41. package/react.js.map +1 -1
  42. package/src/globals.d.ts +12 -7
  43. package/src/helpers.d.ts +5 -0
  44. package/src/is.d.ts +7 -0
  45. package/src/observable.d.ts +6 -8
  46. package/src/observableBatcher.d.ts +11 -2
  47. package/src/observableComputed.d.ts +2 -2
  48. package/src/observableInterfaces.d.ts +156 -49
  49. package/src/on.d.ts +7 -0
  50. package/src/{configureObservable.d.ts → persist/configureObservablePersistence.d.ts} +2 -3
  51. package/src/persist/persistHelpers.d.ts +3 -0
  52. package/src/persist/persistObservable.d.ts +3 -0
  53. package/src/react/useNewObservable.d.ts +2 -3
  54. package/src/react/useObservables.d.ts +2 -2
  55. package/src/state.d.ts +13 -0
  56. package/src/configureObservable.js +0 -13
  57. package/src/configureObservable.js.map +0 -1
  58. package/src/globals.js +0 -71
  59. package/src/globals.js.map +0 -1
  60. package/src/observable.js +0 -347
  61. package/src/observable.js.map +0 -1
  62. package/src/observableBatcher.js +0 -61
  63. package/src/observableBatcher.js.map +0 -1
  64. package/src/observableComputed.js +0 -28
  65. package/src/observableComputed.js.map +0 -1
  66. package/src/observableEvent.js +0 -28
  67. package/src/observableEvent.js.map +0 -1
  68. package/src/observableFns.d.ts +0 -36
  69. package/src/observableFns.js +0 -231
  70. package/src/observableFns.js.map +0 -1
  71. package/src/observableInterfaces.js +0 -3
  72. package/src/observableInterfaces.js.map +0 -1
  73. package/src/observableState.d.ts +0 -29
  74. package/src/observableState.js +0 -32
  75. package/src/observableState.js.map +0 -1
  76. package/src/persist/local-storage.js.map +0 -1
  77. package/src/persist/mmkv.js.map +0 -1
  78. package/src/persistObservable.d.ts +0 -3
  79. package/src/persistObservable.js +0 -120
  80. package/src/persistObservable.js.map +0 -1
  81. package/src/primitivePrototypes.d.ts +0 -1
  82. package/src/primitivePrototypes.js +0 -22
  83. package/src/primitivePrototypes.js.map +0 -1
  84. package/src/react/useComputed.d.ts +0 -2
  85. package/src/react/useComputed.js +0 -16
  86. package/src/react/useComputed.js.map +0 -1
  87. package/src/react/useNewObservable.js +0 -33
  88. package/src/react/useNewObservable.js.map +0 -1
  89. package/src/react/useObservables.js +0 -114
  90. package/src/react/useObservables.js.map +0 -1
  91. package/src/react/usePrimitiveFunctions.d.ts +0 -4
  92. package/src/react/usePrimitiveFunctions.js +0 -21
  93. package/src/react/usePrimitiveFunctions.js.map +0 -1
package/index.cjs ADDED
@@ -0,0 +1,634 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const tracking = {
6
+ is: false,
7
+ shallow: false,
8
+ should: undefined,
9
+ };
10
+ const trackedNodes = [];
11
+ function updateTracking(node, value) {
12
+ trackedNodes.push({
13
+ node,
14
+ shallow: tracking.shallow,
15
+ shouldRender: tracking.should,
16
+ value,
17
+ });
18
+ }
19
+
20
+ function isArray(obj) {
21
+ return Array.isArray(obj);
22
+ }
23
+ function isObject(obj) {
24
+ return typeof obj === 'object' && obj !== null && !isArray(obj);
25
+ }
26
+ function isFunction(obj) {
27
+ return typeof obj === 'function';
28
+ }
29
+ function isPrimitive(arg) {
30
+ var type = typeof arg;
31
+ return arg == null || (type != 'object' && type != 'function');
32
+ }
33
+ function isObjectEmpty(obj) {
34
+ return obj && isObject(obj) && Object.keys(obj).length === 0;
35
+ }
36
+ function isSymbol(obj) {
37
+ return typeof obj === 'symbol';
38
+ }
39
+
40
+ const delim = '\uFEFF';
41
+ const symbolDateModified = Symbol(process.env.NODE_ENV === 'development' && 'dateModified');
42
+ const symbolShallow = Symbol(process.env.NODE_ENV === 'development' && 'shallow');
43
+ const symbolShouldRender = Symbol(process.env.NODE_ENV === 'development' && 'shouldRender');
44
+ const symbolGet = Symbol(process.env.NODE_ENV === 'development' && 'get');
45
+ const symbolIsObservable = Symbol(process.env.NODE_ENV === 'development' && 'isObservable');
46
+ function getNodeValue(node) {
47
+ let child = node.root;
48
+ const arr = node.path.split(delim);
49
+ for (let i = 0; i < arr.length; i++) {
50
+ if (arr[i] !== undefined && child) {
51
+ child = child[arr[i]];
52
+ }
53
+ }
54
+ return child;
55
+ }
56
+ function getParentNode(node) {
57
+ if (node.path === '_')
58
+ return { parent: node, key: undefined };
59
+ const parent = node.root.proxyValues.get(node.pathParent);
60
+ return { parent, key: node.key };
61
+ }
62
+ function getChildNode(node, key) {
63
+ const path = node.path + delim + key;
64
+ let child = node.root.proxyValues.get(path);
65
+ if (!child) {
66
+ // console.log('creating child', node.path, key);
67
+ child = {
68
+ root: node.root,
69
+ path: node.path + delim + key,
70
+ // arr: node.arr.concat(key),
71
+ // arrParent: node.arr,
72
+ pathParent: node.path,
73
+ key,
74
+ };
75
+ node.root.proxyValues.set(path, child);
76
+ }
77
+ return child;
78
+ }
79
+ function getObservableRawValue(obs) {
80
+ if (!obs || isPrimitive(obs))
81
+ return obs;
82
+ const should = obs[symbolShouldRender];
83
+ if (should) {
84
+ tracking.should = should.fn;
85
+ obs = should.obs;
86
+ }
87
+ const shallow = obs[symbolShallow];
88
+ if (shallow) {
89
+ tracking.shallow = true;
90
+ obs = shallow;
91
+ }
92
+ let ret = obs[symbolGet];
93
+ tracking.should = undefined;
94
+ tracking.shallow = false;
95
+ return ret;
96
+ }
97
+
98
+ function shallow(obs) {
99
+ return {
100
+ [symbolShallow]: obs,
101
+ };
102
+ }
103
+ function shouldRender(obs, fn) {
104
+ return {
105
+ [symbolShouldRender]: { obs, fn },
106
+ };
107
+ }
108
+ function mergeIntoObservable(target, ...sources) {
109
+ if (!sources.length)
110
+ return target;
111
+ const source = sources.shift();
112
+ if (isObject(target) && isObject(source)) {
113
+ if (source[symbolDateModified]) {
114
+ target.set(symbolDateModified, source[symbolDateModified]);
115
+ }
116
+ for (const key in source) {
117
+ if (isObject(source[key])) {
118
+ if (!target[key] || !isObject(target[key])) {
119
+ target.set(key, {});
120
+ }
121
+ mergeIntoObservable(target[key], source[key]);
122
+ }
123
+ else {
124
+ target.set(key, source[key]);
125
+ }
126
+ }
127
+ }
128
+ return mergeIntoObservable(target, ...sources);
129
+ }
130
+
131
+ let timeout;
132
+ let numInBatch = 0;
133
+ let _batch = [];
134
+ // Use a WeakMap of callbacks for fast lookups to update the BatchItem
135
+ let _batchMap = new WeakMap();
136
+ function onActionTimeout() {
137
+ if (_batch.length > 0) {
138
+ if (process.env.NODE_ENV === 'development') {
139
+ console.error('Forcibly completing observableBatcher because end() was never called. This may be due to an uncaught error between begin() and end().');
140
+ }
141
+ exports.observableBatcher.end(/*force*/ true);
142
+ }
143
+ }
144
+ function observableBatcherNotify(b) {
145
+ if (numInBatch > 0) {
146
+ const existing = _batchMap.get(b.cb);
147
+ // If this callback already exists, make sure it has the latest value but do not add it
148
+ if (existing) {
149
+ _batchMap.set(b.cb, b);
150
+ }
151
+ else {
152
+ _batch.push(b);
153
+ _batchMap.set(b.cb, b);
154
+ }
155
+ }
156
+ else {
157
+ b.cb(b.value, b.getPrevious, b.path, b.valueAtPath, b.prevAtPath);
158
+ }
159
+ }
160
+ exports.observableBatcher = void 0;
161
+ (function (observableBatcher) {
162
+ function batch(fn) {
163
+ begin();
164
+ fn();
165
+ end();
166
+ }
167
+ observableBatcher.batch = batch;
168
+ function begin() {
169
+ numInBatch++;
170
+ // Set a timeout to call end() in case end() is never called or there's an uncaught error
171
+ timeout = setTimeout(onActionTimeout, 0);
172
+ }
173
+ observableBatcher.begin = begin;
174
+ function end(force) {
175
+ numInBatch--;
176
+ if (numInBatch <= 0 || force) {
177
+ clearTimeout(timeout);
178
+ numInBatch = 0;
179
+ // Save batch locally and reset _batch first because a new batch could begin while looping over callbacks.
180
+ // This can happen with observableComputed for example.
181
+ const batch = _batch;
182
+ _batch = [];
183
+ _batchMap = new WeakMap();
184
+ for (let i = 0; i < batch.length; i++) {
185
+ const { cb, value, getPrevious: prev, path, valueAtPath, prevAtPath } = batch[i];
186
+ cb(value, prev, path, valueAtPath, prevAtPath);
187
+ }
188
+ }
189
+ }
190
+ observableBatcher.end = end;
191
+ })(exports.observableBatcher || (exports.observableBatcher = {}));
192
+
193
+ const symbolHasValue = Symbol('__hasValue');
194
+ function disposeListener(listener) {
195
+ if (listener && !listener.isDisposed) {
196
+ listener.isDisposed = true;
197
+ const listeners = listener.node.root.listenerMap.get(listener.node.path);
198
+ if (listeners) {
199
+ listeners.delete(listener);
200
+ }
201
+ }
202
+ }
203
+ function onEquals(node, value, callback) {
204
+ let listener;
205
+ const promise = new Promise((resolve) => {
206
+ let isDone = false;
207
+ function check(newValue) {
208
+ if (!isDone &&
209
+ (value === symbolHasValue
210
+ ? // If value param is symbolHasValue, then this is from onHasValue so resolve if newValue is anything but undefined or empty object
211
+ newValue !== undefined && newValue !== null && !isObjectEmpty(newValue)
212
+ : newValue === value)) {
213
+ isDone = true;
214
+ callback === null || callback === void 0 ? void 0 : callback(newValue);
215
+ resolve(newValue);
216
+ disposeListener(listener);
217
+ }
218
+ return isDone;
219
+ }
220
+ if (!check(getNodeValue(node))) {
221
+ listener = onChange(node, check, /*shallow*/ true);
222
+ }
223
+ });
224
+ return {
225
+ promise,
226
+ listener,
227
+ };
228
+ }
229
+ function onHasValue(node, callback) {
230
+ return onEquals(node, symbolHasValue, callback);
231
+ }
232
+ function onTrue(node, callback) {
233
+ return onEquals(node, true, callback);
234
+ }
235
+ function onChange(node, callback, shallow) {
236
+ const listener = {
237
+ node,
238
+ callback,
239
+ shallow,
240
+ // function, not () => {} to preserve this
241
+ dispose: function () {
242
+ disposeListener(this);
243
+ },
244
+ };
245
+ const map = node.root.listenerMap;
246
+ let listeners = map.get(node.path);
247
+ if (!listeners) {
248
+ listeners = new Set();
249
+ map.set(node.path, listeners);
250
+ }
251
+ listeners.add(listener);
252
+ return listener;
253
+ }
254
+ function onChangeShallow(node, callback) {
255
+ return onChange(node, callback, /*shallow*/ true);
256
+ }
257
+
258
+ let lastAccessedNode;
259
+ let lastAccessedPrimitive;
260
+ let inSetFn = false;
261
+ const ArrayModifiers = new Set([
262
+ 'copyWithin',
263
+ 'fill',
264
+ 'from',
265
+ 'pop',
266
+ 'push',
267
+ 'reverse',
268
+ 'shift',
269
+ 'sort',
270
+ 'splice',
271
+ 'unshift',
272
+ ]);
273
+ const ArrayLoopers = new Set(['every', 'some', 'filter', 'reduce', 'reduceRight', 'forEach', 'map']);
274
+ const objectFnsProxy = new Map([
275
+ ['get', getNodeValue],
276
+ ['set', set],
277
+ ['onChange', onChange],
278
+ ['onChangeShallow', onChangeShallow],
279
+ ['onEquals', onEquals],
280
+ ['onHasValue', onHasValue],
281
+ ['onTrue', onTrue],
282
+ ['prop', getProxy],
283
+ ['assign', assign],
284
+ ['delete', deleteFn],
285
+ ]);
286
+ // Override primitives
287
+ const wrapFn = (fn) => function (...args) {
288
+ if (lastAccessedNode && lastAccessedPrimitive) {
289
+ const node = getChildNode(lastAccessedNode, lastAccessedPrimitive);
290
+ if (getNodeValue(node) === this) {
291
+ return fn(node, ...args);
292
+ }
293
+ }
294
+ };
295
+ const toOverride = [Number, Boolean, String];
296
+ objectFnsProxy.forEach((fn, key) => {
297
+ for (let i = 0; i < toOverride.length; i++) {
298
+ toOverride[i].prototype[key] = wrapFn(fn);
299
+ }
300
+ });
301
+ function collectionSetter(node, target, prop, ...args) {
302
+ const prevValue = (isArray(target) && target.slice()) || target;
303
+ const ret = target[prop].apply(target, args);
304
+ if (node) {
305
+ const { parent, key } = getParentNode(node);
306
+ if (parent) {
307
+ const parentValue = getNodeValue(parent);
308
+ // Set the object to the previous value first
309
+ parentValue[key] = prevValue;
310
+ // Then set with the new value so it notifies with the correct prevValue
311
+ setProp(parent, key, target);
312
+ }
313
+ }
314
+ // Return the original value
315
+ return ret;
316
+ }
317
+ function updateNodes(parent, obj, prevValue) {
318
+ const isArr = isArray(obj);
319
+ // If array it's faster to just use the array
320
+ const keys = isArr ? obj : Object.keys(obj);
321
+ const length = keys.length;
322
+ let hasADiff = false;
323
+ for (let i = 0; i < length; i++) {
324
+ const key = isArr ? i : keys[i];
325
+ const value = obj[key];
326
+ const prev = prevValue === null || prevValue === void 0 ? void 0 : prevValue[key];
327
+ if (!isArr && prevValue && value !== prev) {
328
+ const isObj = !isPrimitive(value);
329
+ const child = getChildNode(parent, key);
330
+ // If object iterate through its children
331
+ if (isObj) {
332
+ updateNodes(child, value, prev);
333
+ }
334
+ // Notify for this child if this element is different and it has listeners
335
+ // But do not notify child if the parent is an array - the array's listener will cover it
336
+ const doNotify = child.root.listenerMap.has(child.path);
337
+ if (doNotify) {
338
+ hasADiff = true;
339
+ _notify(child, value, [], value, prev, 0);
340
+ }
341
+ }
342
+ }
343
+ return hasADiff;
344
+ }
345
+ function getProxy(node, p) {
346
+ // Create a proxy if not already cached and return it
347
+ if (p !== undefined)
348
+ node = getChildNode(node, p);
349
+ let proxy = node.root.proxies.get(node.path);
350
+ if (!proxy) {
351
+ proxy = new Proxy(node, proxyHandler);
352
+ node.root.proxies.set(node.path, proxy);
353
+ }
354
+ return proxy;
355
+ }
356
+ const proxyHandler = {
357
+ get(target, p) {
358
+ // Return true is called by isObservable()
359
+ if (p === symbolIsObservable) {
360
+ return true;
361
+ }
362
+ const node = target;
363
+ const fn = objectFnsProxy.get(p);
364
+ // If this is an observable function, call it
365
+ if (p !== 'get' && fn) {
366
+ return function (a, b, c) {
367
+ const l = arguments.length;
368
+ return l > 2 ? fn(node, a, b, c) : l > 1 ? fn(node, a, b) : fn(node, a);
369
+ };
370
+ }
371
+ let value = getNodeValue(node);
372
+ const vProp = value === null || value === void 0 ? void 0 : value[p];
373
+ // The get() function as well as the internal obs[symbolGet]
374
+ if (p === symbolGet || p === 'get') {
375
+ // Primitives are { current } so return the current value
376
+ if (node.root.isPrimitive) {
377
+ value = value.current;
378
+ }
379
+ // Update that this node was accessed for useObservables and useComputed
380
+ if (tracking.is) {
381
+ updateTracking(node, value);
382
+ }
383
+ return p === 'get' ? () => value : value;
384
+ }
385
+ // Accessing undefined/null/symbols passes straight through if this value has a property for it
386
+ // If it's never been defined assume it's a proxy to a future object
387
+ if (isSymbol(p) || vProp === null || (vProp === undefined && value && Object.hasOwn(value, p))) {
388
+ return vProp;
389
+ }
390
+ // Handle function calls
391
+ if (isFunction(vProp)) {
392
+ if (isArray(value)) {
393
+ if (ArrayModifiers.has(p)) {
394
+ // Call the wrapped modifier function
395
+ return (...args) => collectionSetter(node, value, p, ...args);
396
+ }
397
+ else if (ArrayLoopers.has(p)) {
398
+ // Bind this looping function to an array of proxies
399
+ const arr = [];
400
+ for (let i = 0; i < value.length; i++) {
401
+ arr.push(getProxy(node, i));
402
+ }
403
+ return vProp.bind(arr);
404
+ }
405
+ }
406
+ // Return the function bound to the value
407
+ return vProp.bind(value);
408
+ }
409
+ // Accessing primitives tracks and returns
410
+ if (vProp !== undefined && isPrimitive(vProp)) {
411
+ // Accessing a primitive saves the last accessed so that the observable functions
412
+ // bound to primitives can know which node was accessed
413
+ lastAccessedNode = node;
414
+ lastAccessedPrimitive = p;
415
+ // Update that this node was accessed for useObservables and useComputed
416
+ if (tracking.is) {
417
+ updateTracking(getChildNode(node, p), value);
418
+ }
419
+ return vProp;
420
+ }
421
+ return getProxy(target, p);
422
+ },
423
+ // Forward all proxy properties to the target's value
424
+ getPrototypeOf(target) {
425
+ const value = getNodeValue(target);
426
+ return Reflect.getPrototypeOf(value);
427
+ },
428
+ ownKeys(target) {
429
+ const value = getNodeValue(target);
430
+ const keys = Reflect.ownKeys(value);
431
+ if (isArray(value)) {
432
+ if (keys[keys.length - 1] === 'length') {
433
+ keys.splice(keys.length - 1, 1);
434
+ }
435
+ }
436
+ return keys;
437
+ },
438
+ getOwnPropertyDescriptor(target, p) {
439
+ const value = getNodeValue(target);
440
+ return Reflect.getOwnPropertyDescriptor(value, p);
441
+ },
442
+ set(target, prop, value) {
443
+ // If this assignment comes from within an observable function it's allowed
444
+ if (inSetFn) {
445
+ Reflect.set(target, prop, value);
446
+ return true;
447
+ }
448
+ else {
449
+ return false;
450
+ }
451
+ },
452
+ deleteProperty(target, prop) {
453
+ // If this delete comes from within an observable function it's allowed
454
+ if (inSetFn) {
455
+ Reflect.deleteProperty(target, prop);
456
+ return true;
457
+ }
458
+ else {
459
+ return false;
460
+ }
461
+ },
462
+ has(target, prop) {
463
+ const value = getNodeValue(target);
464
+ return Reflect.has(value, prop);
465
+ },
466
+ };
467
+ function set(node, keyOrNewValue, newValue) {
468
+ if (arguments.length > 2) {
469
+ return setProp(node, keyOrNewValue, newValue);
470
+ }
471
+ else if (node.root.isPrimitive) {
472
+ return setProp(node, 'current', keyOrNewValue);
473
+ }
474
+ else {
475
+ const { parent, key } = getParentNode(node);
476
+ return setProp(parent, key, keyOrNewValue);
477
+ }
478
+ }
479
+ function setProp(node, key, newValue, level) {
480
+ newValue = (newValue === null || newValue === void 0 ? void 0 : newValue[symbolIsObservable]) ? newValue[symbolGet] : newValue;
481
+ const isPrim = isPrimitive(newValue);
482
+ if (!key && !node.path.includes(delim)) {
483
+ return assign(node, newValue);
484
+ }
485
+ inSetFn = true;
486
+ // Get the child node for updating and notifying
487
+ const childNode = getChildNode(node, key);
488
+ // Get the value of the parent
489
+ let parentValue = getNodeValue(node);
490
+ // Save the previous value first
491
+ const prevValue = parentValue[key];
492
+ // Save the new value
493
+ parentValue[key] = newValue;
494
+ // If new value is an object or array update notify down the tree
495
+ if (!isPrim) {
496
+ updateNodes(childNode, newValue, prevValue);
497
+ }
498
+ // Notify for this element if it's an object or it's changed
499
+ if (!isPrim || newValue !== prevValue) {
500
+ notify(node.root.isPrimitive ? node : childNode, newValue, prevValue, (level !== null && level !== void 0 ? level : prevValue === undefined) ? -1 : 0);
501
+ }
502
+ inSetFn = false;
503
+ return getProxy(node, key);
504
+ }
505
+ function createPreviousHandler(value, path, prevAtPath) {
506
+ // Create a function that clones the current state and injects the previous data at the changed path
507
+ return function () {
508
+ let clone = value ? JSON.parse(JSON.stringify(value)) : path.length > 0 ? {} : value;
509
+ let o = clone;
510
+ if (path.length > 0) {
511
+ let i;
512
+ for (i = 0; i < path.length - 1; i++) {
513
+ o = o[path[i]];
514
+ }
515
+ o[path[i]] = prevAtPath;
516
+ }
517
+ else {
518
+ clone = prevAtPath;
519
+ }
520
+ return clone;
521
+ };
522
+ }
523
+ function _notify(node, value, path, valueAtPath, prevAtPath, level) {
524
+ const listeners = node.root.listenerMap.get(node.path);
525
+ // Notify all listeners
526
+ if (listeners) {
527
+ let getPrevious;
528
+ for (let listener of listeners) {
529
+ // Notify if listener is not shallow or if this is the first level
530
+ if (!listener.shallow || level <= 0) {
531
+ // Create a function to get the previous data. Computing a clone of previous data can be expensive if doing
532
+ // it often, so leave it up to the user.
533
+ if (!getPrevious) {
534
+ getPrevious = createPreviousHandler(value, path, prevAtPath);
535
+ }
536
+ observableBatcherNotify({ cb: listener.callback, value, getPrevious, path, valueAtPath, prevAtPath });
537
+ }
538
+ }
539
+ }
540
+ }
541
+ function _notifyParents(node, value, path, valueAtPath, prevAtPath, level) {
542
+ // Do the notify
543
+ _notify(node, value, path, valueAtPath, prevAtPath, level);
544
+ // If not root notify up through parents
545
+ if (node.path !== '_') {
546
+ const { parent, key } = getParentNode(node);
547
+ if (parent) {
548
+ const parentValue = getNodeValue(parent);
549
+ _notifyParents(parent, parentValue, [key].concat(path), valueAtPath, prevAtPath, level + 1);
550
+ }
551
+ }
552
+ }
553
+ function notify(node, value, prev, level) {
554
+ // Start notifying up through parents with the listenerInfo
555
+ _notifyParents(node, value, [], value, prev, level);
556
+ }
557
+ function assign(node, value) {
558
+ exports.observableBatcher.begin();
559
+ // Assign calls set with all assigned properties
560
+ const keys = Object.keys(value);
561
+ const length = keys.length;
562
+ for (let i = 0; i < length; i++) {
563
+ setProp(node, keys[i], value[keys[i]]);
564
+ }
565
+ const ret = getNodeValue(node);
566
+ exports.observableBatcher.end();
567
+ return ret;
568
+ }
569
+ function deleteFn(node, key) {
570
+ // If called without a key, delete by key from the parent node
571
+ if (key !== undefined) {
572
+ return deleteFnByKey(node, key);
573
+ }
574
+ else {
575
+ const { parent, key } = getParentNode(node);
576
+ return deleteFnByKey(parent, key);
577
+ }
578
+ }
579
+ function deleteFnByKey(node, key) {
580
+ if (!node.root.isPrimitive) {
581
+ // delete sets to undefined first to cleanup children
582
+ setProp(node, key, undefined, /*level*/ -1);
583
+ }
584
+ inSetFn = true;
585
+ // Then delete the key from the object
586
+ let child = getNodeValue(node);
587
+ delete child[key];
588
+ inSetFn = false;
589
+ }
590
+ function observable(obj) {
591
+ const isPrim = isPrimitive(obj);
592
+ // Primitives wrap in current
593
+ if (isPrim) {
594
+ obj = { current: obj };
595
+ }
596
+ const obs = {
597
+ _: obj,
598
+ isPrimitive: isPrim,
599
+ listenerMap: new Map(),
600
+ proxies: new Map(),
601
+ proxyValues: new Map(),
602
+ };
603
+ const node = {
604
+ root: obs,
605
+ path: '_',
606
+ pathParent: '',
607
+ key: '_',
608
+ };
609
+ obs.proxyValues.set(node.path, node);
610
+ updateNodes(node, obs._);
611
+ const proxy = getProxy(node);
612
+ // @ts-ignore
613
+ return proxy;
614
+ }
615
+
616
+ exports.getObservableRawValue = getObservableRawValue;
617
+ exports.isArray = isArray;
618
+ exports.isFunction = isFunction;
619
+ exports.isObject = isObject;
620
+ exports.isPrimitive = isPrimitive;
621
+ exports.mergeIntoObservable = mergeIntoObservable;
622
+ exports.observable = observable;
623
+ exports.onChange = onChange;
624
+ exports.onChangeShallow = onChangeShallow;
625
+ exports.shallow = shallow;
626
+ exports.shouldRender = shouldRender;
627
+ exports.symbolDateModified = symbolDateModified;
628
+ exports.symbolGet = symbolGet;
629
+ exports.symbolIsObservable = symbolIsObservable;
630
+ exports.symbolShallow = symbolShallow;
631
+ exports.symbolShouldRender = symbolShouldRender;
632
+ exports.trackedNodes = trackedNodes;
633
+ exports.tracking = tracking;
634
+ //# sourceMappingURL=index.cjs.map
package/index.cjs.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../src/state.ts","../../src/is.ts","../../src/globals.ts","../../src/helpers.ts","../../src/observableBatcher.ts","../../src/on.ts","../../src/observable.ts"],"sourcesContent":[null,null,null,null,null,null,null],"names":["observableBatcher"],"mappings":";;;;AAEa,MAAA,QAAQ,GAAG;AACpB,IAAA,EAAE,EAAE,KAAK;AACT,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,MAAM,EAAE,SAA4C;EACtD;AACK,MAAM,YAAY,GAAG,GAKxB;AACY,SAAA,cAAc,CAAC,IAAgB,EAAE,KAAU,EAAA;IACvD,YAAY,CAAC,IAAI,CAAC;QACd,IAAI;QACJ,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,YAAY,EAAE,QAAQ,CAAC,MAAM;QAC7B,KAAK;AACR,KAAA,CAAC,CAAC;AACP;;ACpBM,SAAU,OAAO,CAAC,GAAY,EAAA;AAChC,IAAA,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC;AAIK,SAAU,QAAQ,CAAC,GAAY,EAAA;AACjC,IAAA,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACpE,CAAC;AACK,SAAU,UAAU,CAAC,GAAY,EAAA;AACnC,IAAA,OAAO,OAAO,GAAG,KAAK,UAAU,CAAC;AACrC,CAAC;AACK,SAAU,WAAW,CAAC,GAAG,EAAA;AAC3B,IAAA,IAAI,IAAI,GAAG,OAAO,GAAG,CAAC;AACtB,IAAA,OAAO,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,UAAU,CAAC,CAAC;AACnE,CAAC;AACK,SAAU,aAAa,CAAC,GAAW,EAAA;AACrC,IAAA,OAAO,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AACjE,CAAC;AACK,SAAU,QAAQ,CAAC,GAAY,EAAA;AACjC,IAAA,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC;AACnC;;ACjBO,MAAM,KAAK,GAAG,QAAQ,CAAC;AAEjB,MAAA,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,IAAI,cAAc,EAAE;AACtF,MAAA,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,IAAI,SAAS,EAAE;AAC5E,MAAA,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,IAAI,cAAc,EAAE;AACtF,MAAA,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,IAAI,KAAK,EAAE;AACpE,MAAA,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,IAAI,cAAc,EAAE;AAE7F,SAAU,YAAY,CAAC,IAAgB,EAAA;AACzC,IAAA,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;IACtB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACnC,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACjC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,KAAK,EAAE;YAC/B,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,SAAA;AACJ,KAAA;AACD,IAAA,OAAO,KAAK,CAAC;AACjB,CAAC;AAEK,SAAU,aAAa,CAAC,IAAgB,EAAA;AAC1C,IAAA,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG;QAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AAC/D,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1D,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACrC,CAAC;AAEe,SAAA,YAAY,CAAC,IAAgB,EAAE,GAAoB,EAAA;IAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK,GAAG,GAAG,CAAC;AACrC,IAAA,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,CAAC,KAAK,EAAE;;AAER,QAAA,KAAK,GAAG;YACJ,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,KAAK,GAAG,GAAG;;;YAG7B,UAAU,EAAE,IAAI,CAAC,IAAI;YACrB,GAAG;SACN,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC1C,KAAA;AAED,IAAA,OAAO,KAAK,CAAC;AACjB,CAAC;AAEK,SAAU,qBAAqB,CAAI,GAA+B,EAAA;AACpE,IAAA,IAAI,CAAC,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC;AAAE,QAAA,OAAO,GAAQ,CAAC;AAE9C,IAAA,MAAM,MAAM,GAAG,GAAG,CAAC,kBAAkB,CAAC,CAAC;AACvC,IAAA,IAAI,MAAM,EAAE;AACR,QAAA,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;AAC5B,QAAA,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;AACpB,KAAA;AACD,IAAA,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC;AACnC,IAAA,IAAI,OAAO,EAAE;AACT,QAAA,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;QACxB,GAAG,GAAG,OAAO,CAAC;AACjB,KAAA;AACD,IAAA,IAAI,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;AAEzB,IAAA,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC;AAC5B,IAAA,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;AAEzB,IAAA,OAAO,GAAG,CAAC;AACf;;AC/DM,SAAU,OAAO,CAAC,GAAe,EAAA;IACnC,OAAO;QACH,CAAC,aAAa,GAAG,GAAG;KACvB,CAAC;AACN,CAAC;AACe,SAAA,YAAY,CAAI,GAAkB,EAAE,EAA8B,EAAA;IAC9E,OAAO;AACH,QAAA,CAAC,kBAAkB,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE;KACpC,CAAC;AACN,CAAC;SAMe,mBAAmB,CAAC,MAAkB,EAAE,GAAG,OAAc,EAAA;IACrE,IAAI,CAAC,OAAO,CAAC,MAAM;AAAE,QAAA,OAAO,MAAM,CAAC;AACnC,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAE/B,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;AACtC,QAAA,IAAI,MAAM,CAAC,kBAAyB,CAAC,EAAE;YACnC,MAAM,CAAC,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,kBAAyB,CAAC,CAAC,CAAC;AACrE,SAAA;AACD,QAAA,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;AACtB,YAAA,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;AACvB,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;AACxC,oBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACvB,iBAAA;gBACD,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACjD,aAAA;AAAM,iBAAA;gBACH,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAChC,aAAA;AACJ,SAAA;AACJ,KAAA;AACD,IAAA,OAAO,mBAAmB,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC;AACnD;;AC7BA,IAAI,OAAO,CAAC;AACZ,IAAI,UAAU,GAAG,CAAC,CAAC;AACnB,IAAI,MAAM,GAAgB,EAAE,CAAC;AAC7B;AACA,IAAI,SAAS,GAAG,IAAI,OAAO,EAAyB,CAAC;AAErD,SAAS,eAAe,GAAA;AACpB,IAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACnB,QAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE;AACxC,YAAA,OAAO,CAAC,KAAK,CACT,uIAAuI,CAC1I,CAAC;AACL,SAAA;AACD,QAAAA,yBAAiB,CAAC,GAAG,WAAW,IAAI,CAAC,CAAC;AACzC,KAAA;AACL,CAAC;AAEK,SAAU,uBAAuB,CAAC,CAAY,EAAA;IAChD,IAAI,UAAU,GAAG,CAAC,EAAE;QAChB,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;AAErC,QAAA,IAAI,QAAQ,EAAE;YACV,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1B,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACf,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1B,SAAA;AACJ,KAAA;AAAM,SAAA;QACH,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;AACrE,KAAA;AACL,CAAC;AAEgBA,mCA2BhB;AA3BD,CAAA,UAAiB,iBAAiB,EAAA;IAC9B,SAAgB,KAAK,CAAC,EAAc,EAAA;AAChC,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,GAAG,EAAE,CAAC;KACT;AAJe,IAAA,iBAAA,CAAA,KAAK,QAIpB,CAAA;AACD,IAAA,SAAgB,KAAK,GAAA;AACjB,QAAA,UAAU,EAAE,CAAC;;AAEb,QAAA,OAAO,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;KAC5C;AAJe,IAAA,iBAAA,CAAA,KAAK,QAIpB,CAAA;IACD,SAAgB,GAAG,CAAC,KAAe,EAAA;AAC/B,QAAA,UAAU,EAAE,CAAC;AACb,QAAA,IAAI,UAAU,IAAI,CAAC,IAAI,KAAK,EAAE;YAC1B,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,UAAU,GAAG,CAAC,CAAC;;;YAGf,MAAM,KAAK,GAAG,MAAM,CAAC;YACrB,MAAM,GAAG,EAAE,CAAC;AACZ,YAAA,SAAS,GAAG,IAAI,OAAO,EAAE,CAAC;AAC1B,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACnC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACjF,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;AAClD,aAAA;AACJ,SAAA;KACJ;AAfe,IAAA,iBAAA,CAAA,GAAG,MAelB,CAAA;AACL,CAAC,EA3BgBA,yBAAiB,KAAjBA,yBAAiB,GA2BjC,EAAA,CAAA,CAAA;;ACjED,MAAM,cAAc,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAEtC,SAAU,eAAe,CAAC,QAA4B,EAAA;AACxD,IAAA,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;AAClC,QAAA,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3B,QAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzE,QAAA,IAAI,SAAS,EAAE;AACX,YAAA,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC9B,SAAA;AACJ,KAAA;AACL,CAAC;SAEe,QAAQ,CAAI,IAAgB,EAAE,KAAQ,EAAE,QAA4B,EAAA;AAChF,IAAA,IAAI,QAA+B,CAAC;IAEpC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAM,CAAC,OAAO,KAAI;QACzC,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,SAAS,KAAK,CAAC,QAAQ,EAAA;AACnB,YAAA,IACI,CAAC,MAAM;iBACN,KAAK,KAAM,cAAsB;AAC9B;wBACE,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;AACzE,sBAAE,QAAQ,KAAK,KAAK,CAAC,EAC3B;gBACE,MAAM,GAAG,IAAI,CAAC;AACb,gBAAA,QAA+B,aAA/B,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAA0B,QAAQ,CAAC,CAAC;gBAC7C,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAElB,eAAe,CAAC,QAAQ,CAAC,CAAC;AAC7B,aAAA;AACD,YAAA,OAAO,MAAM,CAAC;SACjB;QACD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE;YAC5B,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,cAAc,IAAI,CAAC,CAAC;AACtD,SAAA;AACL,KAAC,CAAC,CAAC;IAEH,OAAO;QACH,OAAO;QACP,QAAQ;KACX,CAAC;AACN,CAAC;AAEe,SAAA,UAAU,CAAI,IAAgB,EAAE,QAA4B,EAAA;IACxE,OAAO,QAAQ,CAAC,IAAI,EAAE,cAAqB,EAAE,QAAQ,CAAC,CAAC;AAC3D,CAAC;AAEe,SAAA,MAAM,CAAoB,IAAgB,EAAE,QAAqB,EAAA;IAC7E,OAAO,QAAQ,CAAC,IAAI,EAAE,IAAS,EAAE,QAAQ,CAAC,CAAC;AAC/C,CAAC;SAEe,QAAQ,CAAC,IAAgB,EAAE,QAAyB,EAAE,OAAiB,EAAA;AACnF,IAAA,MAAM,QAAQ,GAAuB;QACjC,IAAI;QACJ,QAAQ;QACR,OAAO;;AAEP,QAAA,OAAO,EAAE,YAAA;YACL,eAAe,CAAC,IAAI,CAAC,CAAC;SACzB;KACJ,CAAC;AAEF,IAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;IAClC,IAAI,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,SAAS,EAAE;AACZ,QAAA,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACjC,KAAA;AACD,IAAA,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAExB,IAAA,OAAO,QAAQ,CAAC;AACpB,CAAC;AAEe,SAAA,eAAe,CAAC,IAAgB,EAAE,QAAyB,EAAA;IACvE,OAAO,QAAQ,CAAC,IAAI,EAAE,QAAQ,cAAc,IAAI,CAAC,CAAC;AACtD;;ACnEA,IAAI,gBAA4B,CAAC;AACjC,IAAI,qBAA6B,CAAC;AAClC,IAAI,OAAO,GAAG,KAAK,CAAC;AAEpB,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IAC3B,YAAY;IACZ,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,SAAS;IACT,OAAO;IACP,MAAM;IACN,QAAQ;IACR,SAAS;AACZ,CAAA,CAAC,CAAC;AACH,MAAM,YAAY,GAAG,IAAI,GAAG,CAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;AAEvH,MAAM,cAAc,GAAG,IAAI,GAAG,CAAmB;IAC7C,CAAC,KAAK,EAAE,YAAY,CAAC;IACrB,CAAC,KAAK,EAAE,GAAG,CAAC;IACZ,CAAC,UAAU,EAAE,QAAQ,CAAC;IACtB,CAAC,iBAAiB,EAAE,eAAe,CAAC;IACpC,CAAC,UAAU,EAAE,QAAQ,CAAC;IACtB,CAAC,YAAY,EAAE,UAAU,CAAC;IAC1B,CAAC,QAAQ,EAAE,MAAM,CAAC;IAClB,CAAC,MAAM,EAAE,QAAQ,CAAC;IAClB,CAAC,QAAQ,EAAE,MAAM,CAAC;IAClB,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACvB,CAAA,CAAC,CAAC;AAEH;AACA,MAAM,MAAM,GAAG,CAAC,EAAY,KACxB,UAAU,GAAG,IAAS,EAAA;IAClB,IAAI,gBAAgB,IAAI,qBAAqB,EAAE;QAC3C,MAAM,IAAI,GAAe,YAAY,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;AAC/E,QAAA,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;AAC7B,YAAA,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;AAC5B,SAAA;AACJ,KAAA;AACL,CAAC,CAAC;AAEN,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAC7C,cAAc,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,GAAG,KAAI;AAC/B,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxC,QAAA,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;AAC7C,KAAA;AACL,CAAC,CAAC,CAAC;AAEH,SAAS,gBAAgB,CAAC,IAAgB,EAAE,MAAW,EAAE,IAAY,EAAE,GAAG,IAAW,EAAA;AACjF,IAAA,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,KAAK,MAAM,CAAC;AAEhE,IAAA,MAAM,GAAG,GAAI,MAAM,CAAC,IAAI,CAAc,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAE3D,IAAA,IAAI,IAAI,EAAE;QACN,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;AAC5C,QAAA,IAAI,MAAM,EAAE;AACR,YAAA,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;;AAGzC,YAAA,WAAW,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;;AAG7B,YAAA,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AAChC,SAAA;AACJ,KAAA;;AAGD,IAAA,OAAO,GAAG,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAAC,MAAkB,EAAE,GAAkC,EAAE,SAAe,EAAA;AACxF,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;;AAE3B,IAAA,MAAM,IAAI,GAAG,KAAK,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5C,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAE3B,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7B,QAAA,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAChC,QAAA,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,MAAM,IAAI,GAAG,SAAS,KAAT,IAAA,IAAA,SAAS,uBAAT,SAAS,CAAG,GAAG,CAAC,CAAC;QAE9B,IAAI,CAAC,KAAK,IAAI,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;AACvC,YAAA,MAAM,KAAK,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAElC,MAAM,KAAK,GAAe,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;;AAEpD,YAAA,IAAI,KAAK,EAAE;AACP,gBAAA,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACnC,aAAA;;;AAID,YAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACxD,YAAA,IAAI,QAAQ,EAAE;gBACV,QAAQ,GAAG,IAAI,CAAC;AAChB,gBAAA,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC7C,aAAA;AACJ,SAAA;AACJ,KAAA;AAED,IAAA,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,SAAS,QAAQ,CAAC,IAAgB,EAAE,CAAmB,EAAA;;IAEnD,IAAI,CAAC,KAAK,SAAS;AAAE,QAAA,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAClD,IAAA,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,CAAC,KAAK,EAAE;QACR,KAAK,GAAG,IAAI,KAAK,CAAa,IAAI,EAAE,YAAY,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC3C,KAAA;AACD,IAAA,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,MAAM,YAAY,GAAsB;IACpC,GAAG,CAAC,MAAkB,EAAE,CAAM,EAAA;;QAE1B,IAAI,CAAC,KAAK,kBAAkB,EAAE;AAC1B,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QAED,MAAM,IAAI,GAAG,MAAM,CAAC;QACpB,MAAM,EAAE,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;AAEjC,QAAA,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,EAAE;AACnB,YAAA,OAAO,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAA;AACpB,gBAAA,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;AAC3B,gBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC5E,aAAC,CAAC;AACL,SAAA;AAED,QAAA,IAAI,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,KAAK,KAAL,IAAA,IAAA,KAAK,uBAAL,KAAK,CAAG,CAAC,CAAC,CAAC;;AAEzB,QAAA,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,KAAK,EAAE;;AAEhC,YAAA,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACvB,gBAAA,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;AACzB,aAAA;;YAED,IAAI,QAAQ,CAAC,EAAE,EAAE;AACb,gBAAA,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC/B,aAAA;AACD,YAAA,OAAO,CAAC,KAAK,KAAK,GAAG,MAAM,KAAK,GAAG,KAAK,CAAC;AAC5C,SAAA;;;QAGD,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,SAAS,IAAI,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE;AAC5F,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;;AAED,QAAA,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;AACnB,YAAA,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;AAChB,gBAAA,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;;AAEvB,oBAAA,OAAO,CAAC,GAAG,IAAI,KAAK,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;AACjE,iBAAA;AAAM,qBAAA,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;;oBAE5B,MAAM,GAAG,GAAG,EAAE,CAAC;AACf,oBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBACnC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/B,qBAAA;AACD,oBAAA,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,iBAAA;AACJ,aAAA;;AAED,YAAA,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5B,SAAA;;QAED,IAAI,KAAK,KAAK,SAAS,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;;;YAG3C,gBAAgB,GAAG,IAAI,CAAC;YACxB,qBAAqB,GAAG,CAAC,CAAC;;YAE1B,IAAI,QAAQ,CAAC,EAAE,EAAE;gBACb,cAAc,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAChD,aAAA;AACD,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AAED,QAAA,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;KAC9B;;AAED,IAAA,cAAc,CAAC,MAAM,EAAA;AACjB,QAAA,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;AACnC,QAAA,OAAO,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;KACxC;AACD,IAAA,OAAO,CAAC,MAAM,EAAA;AACV,QAAA,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACpC,QAAA,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;YAChB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,QAAQ,EAAE;gBACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACnC,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;IACD,wBAAwB,CAAC,MAAM,EAAE,CAAC,EAAA;AAC9B,QAAA,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACnC,OAAO,OAAO,CAAC,wBAAwB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;KACrD;AACD,IAAA,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAA;;AAEnB,QAAA,IAAI,OAAO,EAAE;YACT,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACjC,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;KACJ;IACD,cAAc,CAAC,MAAM,EAAE,IAAI,EAAA;;AAEvB,QAAA,IAAI,OAAO,EAAE;AACT,YAAA,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACrC,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;KACJ;IACD,GAAG,CAAC,MAAM,EAAE,IAAI,EAAA;AACZ,QAAA,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACnC,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KACnC;CACJ,CAAC;AAEF,SAAS,GAAG,CAAC,IAAgB,EAAE,aAAkB,EAAE,QAAc,EAAA;AAC7D,IAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;QACtB,OAAO,OAAO,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;AACjD,KAAA;AAAM,SAAA,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;QAC9B,OAAO,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;AAClD,KAAA;AAAM,SAAA;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAC5C,OAAO,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;AAC9C,KAAA;AACL,CAAC;AAED,SAAS,OAAO,CAAC,IAAgB,EAAE,GAAoB,EAAE,QAAc,EAAE,KAAc,EAAA;IACnF,QAAQ,GAAG,CAAA,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAG,kBAAkB,CAAC,IAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;AAE3E,IAAA,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;AAErC,IAAA,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACpC,QAAA,OAAO,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjC,KAAA;IAED,OAAO,GAAG,IAAI,CAAC;;IAGf,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;;AAG1C,IAAA,IAAI,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;;AAGrC,IAAA,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;;AAGnC,IAAA,WAAW,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;;IAI5B,IAAI,CAAC,MAAM,EAAE;QACE,WAAW,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC1D,KAAA;;AAGD,IAAA,IAAI,CAAC,MAAM,IAAI,QAAQ,KAAK,SAAS,EAAE;AACnC,QAAA,MAAM,CACF,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,SAAS,EACxC,QAAQ,EACR,SAAS,EACT,CAAA,KAAK,aAAL,KAAK,KAAA,KAAA,CAAA,GAAL,KAAK,GAAI,SAAS,KAAK,SAAS,IAAG,CAAC,CAAC,GAAG,CAAC,CAC5C,CAAC;AACL,KAAA;IAED,OAAO,GAAG,KAAK,CAAC;AAEhB,IAAA,OAAO,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAU,EAAE,IAAyB,EAAE,UAAe,EAAA;;IAEjF,OAAO,YAAA;AACH,QAAA,IAAI,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QACrF,IAAI,CAAC,GAAG,KAAK,CAAC;AACd,QAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACjB,YAAA,IAAI,CAAS,CAAC;AACd,YAAA,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAClC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAClB,aAAA;YACD,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;AAC3B,SAAA;AAAM,aAAA;YACH,KAAK,GAAG,UAAU,CAAC;AACtB,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;AACjB,KAAC,CAAC;AACN,CAAC;AAED,SAAS,OAAO,CACZ,IAAgB,EAChB,KAAU,EACV,IAAyB,EACzB,WAAgB,EAChB,UAAe,EACf,KAAa,EAAA;AAEb,IAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;AAEvD,IAAA,IAAI,SAAS,EAAE;AACX,QAAA,IAAI,WAAW,CAAC;AAChB,QAAA,KAAK,IAAI,QAAQ,IAAI,SAAS,EAAE;;YAE5B,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,KAAK,IAAI,CAAC,EAAE;;;gBAGjC,IAAI,CAAC,WAAW,EAAE;oBACd,WAAW,GAAG,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AAChE,iBAAA;AACD,gBAAA,uBAAuB,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC;AACzG,aAAA;AACJ,SAAA;AACJ,KAAA;AACL,CAAC;AAED,SAAS,cAAc,CACnB,IAAgB,EAChB,KAAU,EACV,IAAyB,EACzB,WAAgB,EAChB,UAAe,EACf,KAAa,EAAA;;AAGb,IAAA,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;;AAE3D,IAAA,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,EAAE;QACnB,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;AAC5C,QAAA,IAAI,MAAM,EAAE;AACR,YAAA,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;YACzC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AAC/F,SAAA;AACJ,KAAA;AACL,CAAC;AACD,SAAS,MAAM,CAAC,IAAgB,EAAE,KAAU,EAAE,IAAS,EAAE,KAAa,EAAA;;AAElE,IAAA,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,MAAM,CAAC,IAAgB,EAAE,KAAU,EAAA;IACxCA,yBAAiB,CAAC,KAAK,EAAE,CAAC;;IAG1B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7B,QAAA,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,KAAA;AAED,IAAA,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAC/BA,yBAAiB,CAAC,GAAG,EAAE,CAAC;AAExB,IAAA,OAAO,GAAG,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,IAAgB,EAAE,GAAqB,EAAA;;IAErD,IAAI,GAAG,KAAK,SAAS,EAAE;AACnB,QAAA,OAAO,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACnC,KAAA;AAAM,SAAA;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;AAC5C,QAAA,OAAO,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACrC,KAAA;AACL,CAAC;AACD,SAAS,aAAa,CAAC,IAAgB,EAAE,GAAoB,EAAA;AACzD,IAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;;AAExB,QAAA,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,YAAY,CAAC,CAAC,CAAC,CAAC;AAC/C,KAAA;IAED,OAAO,GAAG,IAAI,CAAC;;AAEf,IAAA,IAAI,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAA,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;IAElB,OAAO,GAAG,KAAK,CAAC;AACpB,CAAC;AAOK,SAAU,UAAU,CAAI,GAAM,EAAA;AAChC,IAAA,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;;AAEhC,IAAA,IAAI,MAAM,EAAE;AACR,QAAA,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAS,CAAC;AACjC,KAAA;AAED,IAAA,MAAM,GAAG,GAAG;AACR,QAAA,CAAC,EAAE,GAAiB;AACpB,QAAA,WAAW,EAAE,MAAM;QACnB,WAAW,EAAE,IAAI,GAAG,EAAE;QACtB,OAAO,EAAE,IAAI,GAAG,EAAE;QAClB,WAAW,EAAE,IAAI,GAAG,EAAE;KACJ,CAAC;AAEvB,IAAA,MAAM,IAAI,GAAe;AACrB,QAAA,IAAI,EAAE,GAAG;AACT,QAAA,IAAI,EAAE,GAAG;AACT,QAAA,UAAU,EAAE,EAAE;AACd,QAAA,GAAG,EAAE,GAAG;KACX,CAAC;IAEF,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAErC,IAAA,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAEzB,IAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;;AAG7B,IAAA,OAAO,KAAK,CAAC;AACjB;;;;;;;;;;;;;;;;;;;;;"}