cojson 0.8.34 → 0.8.36

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 (46) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/native/coValueCore.js +73 -37
  3. package/dist/native/coValueCore.js.map +1 -1
  4. package/dist/native/coValues/coMap.js +82 -33
  5. package/dist/native/coValues/coMap.js.map +1 -1
  6. package/dist/native/coValues/group.js +132 -5
  7. package/dist/native/coValues/group.js.map +1 -1
  8. package/dist/native/exports.js +5 -2
  9. package/dist/native/exports.js.map +1 -1
  10. package/dist/native/ids.js +33 -0
  11. package/dist/native/ids.js.map +1 -1
  12. package/dist/native/permissions.js +216 -154
  13. package/dist/native/permissions.js.map +1 -1
  14. package/dist/native/storage/index.js +8 -4
  15. package/dist/native/storage/index.js.map +1 -1
  16. package/dist/native/sync.js +41 -25
  17. package/dist/native/sync.js.map +1 -1
  18. package/dist/web/coValueCore.js +73 -37
  19. package/dist/web/coValueCore.js.map +1 -1
  20. package/dist/web/coValues/coMap.js +82 -33
  21. package/dist/web/coValues/coMap.js.map +1 -1
  22. package/dist/web/coValues/group.js +132 -5
  23. package/dist/web/coValues/group.js.map +1 -1
  24. package/dist/web/exports.js +5 -2
  25. package/dist/web/exports.js.map +1 -1
  26. package/dist/web/ids.js +33 -0
  27. package/dist/web/ids.js.map +1 -1
  28. package/dist/web/permissions.js +216 -154
  29. package/dist/web/permissions.js.map +1 -1
  30. package/dist/web/storage/index.js +8 -4
  31. package/dist/web/storage/index.js.map +1 -1
  32. package/dist/web/sync.js +41 -25
  33. package/dist/web/sync.js.map +1 -1
  34. package/package.json +1 -1
  35. package/src/coValueCore.ts +120 -47
  36. package/src/coValues/coMap.ts +116 -43
  37. package/src/coValues/group.ts +219 -6
  38. package/src/exports.ts +18 -3
  39. package/src/ids.ts +48 -0
  40. package/src/permissions.ts +314 -220
  41. package/src/storage/index.ts +12 -4
  42. package/src/sync.ts +43 -26
  43. package/src/tests/group.test.ts +152 -1
  44. package/src/tests/permissions.test.ts +785 -2
  45. package/src/tests/sync.test.ts +29 -0
  46. package/src/tests/testUtils.ts +102 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # cojson
2
2
 
3
+ ## 0.8.36
4
+
5
+ ### Patch Changes
6
+
7
+ - 441fe27: Optimise large record-like CoMaps for access of latest value
8
+
9
+ ## 0.8.35
10
+
11
+ ### Patch Changes
12
+
13
+ - 3f15a23: Resolve deadlock in cluster setup with multiple layers of sync & storage servers
14
+ - 46f2ab8: Add emptyKnownState and SessionNewContent to the package exports
15
+ - 8b87117: Implement Group Inheritance
16
+ - a6b6ccf: Upload new coValues when a peer is added
17
+
3
18
  ## 0.8.34
4
19
 
5
20
  ### Patch Changes
@@ -1,6 +1,7 @@
1
1
  import { err, ok } from "neverthrow";
2
2
  import { coreToCoValue } from "./coreToCoValue.js";
3
3
  import { StreamingHash, } from "./crypto/crypto.js";
4
+ import { getGroupDependentKeyList, getParentGroupId, isParentGroupReference, } from "./ids.js";
4
5
  import { parseJSON, stableStringify } from "./jsonStringify.js";
5
6
  import { determineValidTransactions, isKeyForKeyField, } from "./permissions.js";
6
7
  import { getPriorityFromHeader } from "./priority.js";
@@ -408,46 +409,42 @@ export class CoValueCore {
408
409
  }
409
410
  getValidSortedTransactions(options) {
410
411
  const validTransactions = determineValidTransactions(this);
411
- const allTransactions = validTransactions
412
- .flatMap(({ txID, tx }) => {
412
+ const allTransactions = [];
413
+ for (const { txID, tx } of validTransactions) {
413
414
  if (tx.privacy === "trusting") {
414
- return {
415
+ allTransactions.push({
415
416
  txID,
416
417
  madeAt: tx.madeAt,
417
418
  changes: parseJSON(tx.changes),
418
- };
419
+ });
420
+ continue;
419
421
  }
420
- else {
421
- if (options?.ignorePrivateTransactions) {
422
- return undefined;
423
- }
424
- const readKey = this.getReadKey(tx.keyUsed);
425
- if (!readKey) {
426
- return undefined;
427
- }
428
- else {
429
- let decrytedChanges = this._decryptionCache[tx.encryptedChanges];
430
- if (!decrytedChanges) {
431
- const decryptedString = this.crypto.decryptRawForTransaction(tx.encryptedChanges, readKey, {
432
- in: this.id,
433
- tx: txID,
434
- });
435
- decrytedChanges = decryptedString && parseJSON(decryptedString);
436
- this._decryptionCache[tx.encryptedChanges] = decrytedChanges;
437
- }
438
- if (!decrytedChanges) {
439
- console.error("Failed to decrypt transaction despite having key");
440
- return undefined;
441
- }
442
- return {
443
- txID,
444
- madeAt: tx.madeAt,
445
- changes: decrytedChanges,
446
- };
447
- }
422
+ if (options?.ignorePrivateTransactions) {
423
+ continue;
424
+ }
425
+ const readKey = this.getReadKey(tx.keyUsed);
426
+ if (!readKey) {
427
+ continue;
448
428
  }
449
- })
450
- .filter((x) => !!x);
429
+ let decryptedChanges = this._decryptionCache[tx.encryptedChanges];
430
+ if (!decryptedChanges) {
431
+ const decryptedString = this.crypto.decryptRawForTransaction(tx.encryptedChanges, readKey, {
432
+ in: this.id,
433
+ tx: txID,
434
+ });
435
+ decryptedChanges = decryptedString && parseJSON(decryptedString);
436
+ this._decryptionCache[tx.encryptedChanges] = decryptedChanges;
437
+ }
438
+ if (!decryptedChanges) {
439
+ console.error("Failed to decrypt transaction despite having key");
440
+ continue;
441
+ }
442
+ allTransactions.push({
443
+ txID,
444
+ madeAt: tx.madeAt,
445
+ changes: decryptedChanges,
446
+ });
447
+ }
451
448
  allTransactions.sort((a, b) => a.madeAt - b.madeAt ||
452
449
  (a.txID.sessionID < b.txID.sessionID ? -1 : 1) ||
453
450
  a.txID.txIndex - b.txID.txIndex);
@@ -538,6 +535,30 @@ export class CoValueCore {
538
535
  }
539
536
  }
540
537
  }
538
+ // try to find revelation to parent group read keys
539
+ for (const co of content.keys()) {
540
+ if (isParentGroupReference(co)) {
541
+ const parentGroupID = getParentGroupId(co);
542
+ const parentGroup = this.node.expectCoValueLoaded(parentGroupID, "Expected parent group to be loaded");
543
+ const parentKeys = this.findValidParentKeys(keyID, content, parentGroup);
544
+ for (const parentKey of parentKeys) {
545
+ const revelationForParentKey = content.get(`${keyID}_for_${parentKey.id}`);
546
+ if (revelationForParentKey) {
547
+ const secret = parentGroup.crypto.decryptKeySecret({
548
+ encryptedID: keyID,
549
+ encryptingID: parentKey.id,
550
+ encrypted: revelationForParentKey,
551
+ }, parentKey.secret);
552
+ if (secret) {
553
+ return secret;
554
+ }
555
+ else {
556
+ console.error(`Encrypting parent ${parentKey.id} key didn't decrypt ${keyID}`);
557
+ }
558
+ }
559
+ }
560
+ }
561
+ }
541
562
  return undefined;
542
563
  }
543
564
  else if (this.header.ruleset.type === "ownedByGroup") {
@@ -549,6 +570,23 @@ export class CoValueCore {
549
570
  throw new Error("Only groups or values owned by groups have read secrets");
550
571
  }
551
572
  }
573
+ findValidParentKeys(keyID, group, parentGroup) {
574
+ const validParentKeys = [];
575
+ for (const co of group.keys()) {
576
+ if (isKeyForKeyField(co) && co.startsWith(keyID)) {
577
+ const encryptingKeyID = co.split("_for_")[1];
578
+ const encryptingKeySecret = parentGroup.getReadKey(encryptingKeyID);
579
+ if (!encryptingKeySecret) {
580
+ continue;
581
+ }
582
+ validParentKeys.push({
583
+ id: encryptingKeyID,
584
+ secret: encryptingKeySecret,
585
+ });
586
+ }
587
+ }
588
+ return validParentKeys;
589
+ }
552
590
  getGroup() {
553
591
  if (this.header.ruleset.type !== "ownedByGroup") {
554
592
  throw new Error("Only values owned by groups have groups");
@@ -664,9 +702,7 @@ export class CoValueCore {
664
702
  /** @internal */
665
703
  getDependedOnCoValuesUncached() {
666
704
  return this.header.ruleset.type === "group"
667
- ? expectGroup(this.getCurrentContent())
668
- .keys()
669
- .filter((k) => k.startsWith("co_"))
705
+ ? getGroupDependentKeyList(expectGroup(this.getCurrentContent()).keys())
670
706
  : this.header.ruleset.type === "ownedByGroup"
671
707
  ? [
672
708
  this.header.ruleset.group,
@@ -1 +1 @@
1
- {"version":3,"file":"coValueCore.js","sourceRoot":"","sources":["../../src/coValueCore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,GAAG,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAI7C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAQL,aAAa,GACd,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAe,SAAS,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG7E,OAAO,EAEL,0BAA0B,EAC1B,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,OAAO,EAAE,6BAA6B,EAAE,MAAM,8CAA8C,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,GAAG,IAAI,CAAC;AAalD,MAAM,UAAU,WAAW,CACzB,MAAqB,EACrB,MAAsB;IAEtB,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACtC,OAAO,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;AACnD,CAAC;AA+BD,MAAM,YAAY,GAAG,IAAI,OAAO,EAA2C,CAAC;AAE5E,MAAM,OAAO,WAAW;IAgBtB,YACE,MAAqB,EACrB,IAAe,EACf,uBAAmD,IAAI,GAAG,EAAE;QAZ9D,cAAS,GAAwC,IAAI,GAAG,EAAE,CAAC;QAC3D,qBAAgB,GAEZ,EAAE,CAAC;QAiXP,oBAAe,GAAG,CAAC,CAAC;QAtWlB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,oBAAoB,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,cAAc,EAAE,CAAC;YAC1C,IAAI,CAAC,IAAI;iBACN,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;iBACzC,SAAS,CAAC,CAAC,YAAY,EAAE,EAAE;gBAC1B,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;gBAChC,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC5C,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACtC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC,CAAC,CAAC;QACP,CAAC;IACH,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,wBAAwB,CACtB,OAAiC,EACjC,gBAA2B;QAE3B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAChD,OAAO,EACP,gBAAgB,CACjB,CAAC;QAEF,OAAO,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,UAAU;QACR,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC7C,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC;YACpC,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,kBAAkB;QAChB,MAAM,QAAQ,GAAkC,EAAE,CAAC;QAEnD,KAAK,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;YACjE,QAAQ,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC;QACvD,CAAC;QAED,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,MAAM,EAAE,IAAI;YACZ,QAAQ;SACT,CAAC;IACJ,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,IAAI,CAAC;IACnC,CAAC;IAED,iBAAiB;QACf,6FAA6F;QAC7F,MAAM,SAAS,GACb,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS;YAClC,CAAC,CAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACjC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EACpB,IAAI,CAAC,IAAI,CAAC,OAAO;iBACd,cAAc,EAAE;iBAChB,aAAa,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAC7B;YACjB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAEjC,OAAO;YACL,SAAS;YACT,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC,MAAM,IAAI,CAAC;SACnE,CAAC;IACJ,CAAC;IAED,kBAAkB,CAChB,SAAoB,EACpB,eAA8B,EAC9B,oBAAsC,EACtC,YAAuB;QAEvB,OAAO,IAAI,CAAC,IAAI;aACb,mBAAmB,CAClB,6BAA6B,CAAC,SAAS,CAAC,EACxC,wCAAwC,CACzC;aACA,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAErD,wCAAwC;YACxC,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,oBAAoB,CACrE,SAAS,EACT,eAAe,CAChB,CAAC;YACF,uCAAuC;YACvC,eAAe;YACf,sBAAsB;YACtB,6BAA6B;YAC7B,KAAK;YAEL,IAAI,oBAAoB,IAAI,oBAAoB,KAAK,eAAe,EAAE,CAAC;gBACrE,OAAO,GAAG,CAAC;oBACT,IAAI,EAAE,aAAa;oBACnB,EAAE,EAAE,IAAI,CAAC,EAAE;oBACX,eAAe;oBACf,oBAAoB;iBACM,CAAC,CAAC;YAChC,CAAC;YAED,0CAA0C;YAC1C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,eAAe,EAAE,QAAQ,CAAC,EAAE,CAAC;gBACjE,OAAO,GAAG,CAAC;oBACT,IAAI,EAAE,kBAAkB;oBACxB,EAAE,EAAE,IAAI,CAAC,EAAE;oBACX,YAAY;oBACZ,SAAS;oBACT,QAAQ;iBACuB,CAAC,CAAC;YACrC,CAAC;YACD,yCAAyC;YACzC,eAAe;YACf,qBAAqB;YACrB,iCAAiC;YACjC,KAAK;YAEL,IAAI,CAAC,iBAAiB,CACpB,SAAS,EACT,eAAe,EACf,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,WAAW,CACZ,CAAC;YAEF,OAAO,EAAE,CAAC,IAAa,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAkIK;IAEG,iBAAiB,CACvB,SAAoB,EACpB,eAA8B,EAC9B,YAAuB,EACvB,eAAqB,EACrB,gBAA+B,EAC/B,UAAoC;QAEpC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,YAAY,IAAI,EAAE,CAAC;QACzE,YAAY,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC;QAEtC,MAAM,cAAc,GAClB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,cAAc,IAAI,EAAE,CAAC;QAExD,MAAM,yBAAyB,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAClE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EACzD,CAAC,CAAC,CACH,CAAC;QAEF,MAAM,oCAAoC,GAAG,YAAY;aACtD,KAAK,CAAC,yBAAyB,GAAG,CAAC,CAAC;aACpC,MAAM,CACL,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CACV,GAAG;YACH,CAAC,EAAE,CAAC,OAAO,KAAK,SAAS;gBACvB,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM;gBAC5B,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EACxB,CAAC,CACF,CAAC;QAEJ,IAAI,oCAAoC,GAAG,uBAAuB,EAAE,CAAC;YACnE,eAAe;YACf,4CAA4C;YAC5C,iBAAiB;YACjB,+BAA+B;YAC/B,2CAA2C;YAC3C,KAAK;YACL,cAAc,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC;QACzD,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE;YAC/B,YAAY;YACZ,QAAQ,EAAE,eAAe;YACzB,aAAa,EAAE,gBAAgB;YAC/B,aAAa,EAAE,YAAY;YAC3B,cAAc,EAAE,cAAc;SAC/B,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAChC,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACnC,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;QACpC,IAAI,CAAC,2BAA2B,GAAG,SAAS,CAAC;QAE7C,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC5B,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;gBAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACtC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;oBAC7B,IAAI,CAAC,kBAAkB,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;wBAChD,UAAU,CAAC,GAAG,EAAE;4BACd,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;4BACpC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;4BACzB,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;4BACzC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gCACtC,QAAQ,CAAC,OAAO,CAAC,CAAC;4BACpB,CAAC;4BACD,OAAO,EAAE,CAAC;wBACZ,CAAC,EAAE,CAAC,CAAC,CAAC;oBACR,CAAC,CAAC,CAAC;gBACL,CAAC;gBACD,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IAKD,SAAS,CAAC,QAAwC;QAChD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAEnC,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC;IACJ,CAAC;IAED,oBAAoB,CAClB,SAAoB,EACpB,eAA8B;QAE9B,MAAM,aAAa,GACjB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC,KAAK,EAAE;YACtD,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,KAAK,MAAM,WAAW,IAAI,eAAe,EAAE,CAAC;YAC1C,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,gBAAgB,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC;QAE/C,OAAO;YACL,eAAe,EAAE,aAAa,CAAC,MAAM,EAAE;YACvC,gBAAgB;SACjB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,yBAAyB,CAC7B,SAAoB,EACpB,eAA8B;QAE9B,MAAM,aAAa,GACjB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC,KAAK,EAAE;YACtD,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAC/B,KAAK,MAAM,WAAW,IAAI,eAAe,EAAE,CAAC;YAC1C,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAClC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAChC,IAAI,KAAK,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,sDAAsD;gBACtD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;gBACvD,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,MAAM,gBAAgB,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC;QAE/C,OAAO;YACL,eAAe,EAAE,aAAa,CAAC,MAAM,EAAE;YACvC,gBAAgB;SACjB,CAAC;IACJ,CAAC;IAED,eAAe,CACb,OAAoB,EACpB,OAA+B;QAE/B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE1B,IAAI,WAAwB,CAAC;QAE7B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAElE,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;YACpE,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,OAAO,EAAE,SAAS,EAAE;gBACtE,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,EAAE,EAAE,IAAI,CAAC,iBAAiB,EAAE;aAC7B,CAAC,CAAC;YAEH,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;YAE3C,WAAW,GAAG;gBACZ,OAAO,EAAE,SAAS;gBAClB,MAAM;gBACN,OAAO,EAAE,KAAK;gBACd,gBAAgB,EAAE,SAAS;aAC5B,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,WAAW,GAAG;gBACZ,OAAO,EAAE,UAAU;gBACnB,MAAM;gBACN,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC;aAClC,CAAC;QACJ,CAAC;QAED,6FAA6F;QAC7F,MAAM,SAAS,GACb,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS;YAClC,CAAC,CAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACjC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EACpB,IAAI,CAAC,IAAI,CAAC,OAAO;iBACd,cAAc,EAAE;iBAChB,aAAa,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAC7B;YACjB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAEjC,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE;YAC/D,WAAW;SACZ,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAChC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,EACvC,eAAe,CAChB,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CACrC,SAAS,EACT,CAAC,WAAW,CAAC,EACb,eAAe,EACf,SAAS,CACV,CAAC,aAAa,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;QAE1C,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,iBAAiB,CAAC,OAEjB;QACC,IAAI,CAAC,OAAO,EAAE,yBAAyB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC/D,OAAO,IAAI,CAAC,cAAc,CAAC;QAC7B,CAAC;QAED,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAEhD,IAAI,CAAC,OAAO,EAAE,yBAAyB,EAAE,CAAC;YACxC,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC;QACnC,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,0BAA0B,CAAC,OAE1B;QACC,MAAM,iBAAiB,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;QAE3D,MAAM,eAAe,GAA2B,iBAAiB;aAC9D,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;YACxB,IAAI,EAAE,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;gBAC9B,OAAO;oBACL,IAAI;oBACJ,MAAM,EAAE,EAAE,CAAC,MAAM;oBACjB,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC;iBAC/B,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,IAAI,OAAO,EAAE,yBAAyB,EAAE,CAAC;oBACvC,OAAO,SAAS,CAAC;gBACnB,CAAC;gBACD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;gBAE5C,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,OAAO,SAAS,CAAC;gBACnB,CAAC;qBAAM,CAAC;oBACN,IAAI,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC;oBAEjE,IAAI,CAAC,eAAe,EAAE,CAAC;wBACrB,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAC1D,EAAE,CAAC,gBAAgB,EACnB,OAAO,EACP;4BACE,EAAE,EAAE,IAAI,CAAC,EAAE;4BACX,EAAE,EAAE,IAAI;yBACT,CACF,CAAC;wBACF,eAAe,GAAG,eAAe,IAAI,SAAS,CAAC,eAAe,CAAC,CAAC;wBAChE,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,gBAAgB,CAAC,GAAG,eAAe,CAAC;oBAC/D,CAAC;oBAED,IAAI,CAAC,eAAe,EAAE,CAAC;wBACrB,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;wBAClE,OAAO,SAAS,CAAC;oBACnB,CAAC;oBACD,OAAO;wBACL,IAAI;wBACJ,MAAM,EAAE,EAAE,CAAC,MAAM;wBACjB,OAAO,EAAE,eAAe;qBACzB,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,EAAqC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,eAAe,CAAC,IAAI,CAClB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM;YACnB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAClC,CAAC;QAEF,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,iBAAiB;QACf,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;YAEtD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAE5C,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;YACpC,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;YAE7C,OAAO;gBACL,MAAM,EAAE,MAAM;gBACd,EAAE,EAAE,YAAY;aACjB,CAAC;QACJ,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACvD,OAAO,IAAI,CAAC,IAAI;iBACb,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;iBAC9C,iBAAiB,EAAE,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CACb,yDAAyD,CAC1D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,UAAU,CAAC,KAAY;QACrB,IAAI,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,GAAG,EAAE,CAAC;gBACR,IAAI,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACnC,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,KAAK,GAAG,EAAE,CAAC;oBACX,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAChC,CAAC;gBACD,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;YACrB,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,kBAAkB,CAAC,KAAY;QAC7B,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,WAAW,CACzB,IAAI,CAAC,iBAAiB,CAAC,EAAE,yBAAyB,EAAE,IAAI,EAAE,CAAC,CAC5D,CAAC;YAEF,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,eAAe,CAAC,CAAC;YAC5D,IAAI,cAAc;gBAAE,OAAO,cAAc,CAAC;YAE1C,oCAAoC;YACpC,MAAM,sBAAsB,GAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS;gBAClC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO;qBACd,cAAc,EAAE;qBAChB,aAAa,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;gBAC5C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAE3B,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,CACzC,GAAG,KAAK,QAAQ,sBAAsB,EAAE,CACzC,CAAC;YAEF,IAAI,gBAAgB,EAAE,KAAK,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,EAAE,CAAC;gBACrC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI;qBAC5B,mBAAmB,CAAC,QAAQ,EAAE,2BAA2B,CAAC;qBAC1D,aAAa,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;gBAE3C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAC/B,gBAAgB,CAAC,KAAK,EACtB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,EACvC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAC3C;oBACE,EAAE,EAAE,IAAI,CAAC,EAAE;oBACX,EAAE,EAAE,gBAAgB,CAAC,EAAE;iBACxB,CACF,CAAC;gBAEF,IAAI,MAAM,EAAE,CAAC;oBACX,OAAO,MAAmB,CAAC;gBAC7B,CAAC;YACH,CAAC;YAED,uDAAuD;YAEvD,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;gBAChC,IAAI,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;oBACjD,MAAM,eAAe,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAU,CAAC;oBACtD,MAAM,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;oBAE7D,IAAI,CAAC,mBAAmB,EAAE,CAAC;wBACzB,SAAS;oBACX,CAAC;oBAED,MAAM,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC;oBAE9C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CACzC;wBACE,WAAW,EAAE,KAAK;wBAClB,YAAY,EAAE,eAAe;wBAC7B,SAAS,EAAE,oBAAoB;qBAChC,EACD,mBAAmB,CACpB,CAAC;oBAEF,IAAI,MAAM,EAAE,CAAC;wBACX,OAAO,MAAmB,CAAC;oBAC7B,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,KAAK,CACX,cAAc,eAAe,uBAAuB,KAAK,EAAE,CAC5D,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,SAAS,CAAC;QACnB,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACvD,OAAO,IAAI,CAAC,IAAI;iBACb,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;iBAC9C,UAAU,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CACb,yDAAyD,CAC1D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,QAAQ;QACN,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;QAED,OAAO,WAAW,CAChB,IAAI,CAAC,IAAI;aACN,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;aAC9C,iBAAiB,EAAE,CACvB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAmB;QACvB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1E,CAAC;IAED,eAAe,CACb,UAAyC;QAEzC,MAAM,iBAAiB,GAAG,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC;QAEvE,IAAI,iBAAiB,IAAI,IAAI,CAAC,2BAA2B,EAAE,CAAC;YAC1D,OAAO,IAAI,CAAC,2BAA2B,CAAC;QAC1C,CAAC;QAED,IAAI,YAAY,GAAsB;YACpC,MAAM,EAAE,SAAS;YACjB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM;YACpD,QAAQ,EAAE,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC;YAC5C,GAAG,EAAE,EAAE;SACR,CAAC;QAEF,MAAM,MAAM,GAAG,CAAC,YAAY,CAAC,CAAC;QAE9B,MAAM,SAAS,GAAkC,EAAE,CAAC;QAEpD,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,IAAI,iBAAiB,GAAyC,OAAO,CAAC;QAEtE,OAAO,iBAAiB,KAAK,OAAO,IAAI,iBAAiB,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACzE,IAAI,iBAAiB,KAAK,OAAO,EAAE,CAAC;gBAClC,iBAAiB,GAAG,SAAS,CAAC;YAChC,CAAC;YACD,MAAM,YAAY,GAAG,iBAAiB,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAElE,KAAK,MAAM,YAAY,IAAI,YAAY,EAAE,CAAC;gBACxC,MAAM,SAAS,GAAG,YAAyB,CAAC;gBAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;gBAC7C,MAAM,sBAAsB,GAAG,UAAU,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;gBAC/D,MAAM,qBAAqB,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;gBACnD,MAAM,qBAAqB,GAAG,wBAAwB,CACpD,GAAG,EACH,sBAAsB,EACtB,qBAAqB,CACtB,CAAC;gBAEF,MAAM,aAAa,GACjB,qBAAqB,IAAI,sBAAsB,IAAI,CAAC,CAAC;gBACvD,MAAM,iBAAiB,GACrB,qBAAqB,KAAK,SAAS;oBACjC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM;oBACzB,CAAC,CAAC,qBAAqB,GAAG,CAAC,CAAC;gBAEhC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,iBAAiB,GAAG,aAAa,CAAC,CAAC;gBAE9D,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;oBACjB,iBAAiB,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;oBACrC,SAAS;gBACX,CAAC;gBAED,IAAI,iBAAiB,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;oBAChD,IAAI,CAAC,iBAAiB,EAAE,CAAC;wBACvB,iBAAiB,GAAG,IAAI,GAAG,EAAE,CAAC;oBAChC,CAAC;oBACD,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACnC,CAAC;gBAED,MAAM,YAAY,GAAG,SAAS,CAAC;gBAC/B,KAAK,IAAI,KAAK,GAAG,aAAa,EAAE,KAAK,GAAG,iBAAiB,EAAE,KAAK,EAAE,EAAE,CAAC;oBACnE,MAAM,EAAE,GAAG,GAAG,CAAC,YAAY,CAAC,KAAK,CAAE,CAAC;oBACpC,SAAS;wBACP,EAAE,CAAC,OAAO,KAAK,SAAS;4BACtB,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM;4BAC5B,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;gBAC1B,CAAC;gBAED,IAAI,SAAS,IAAI,uBAAuB,EAAE,CAAC;oBACzC,YAAY,GAAG;wBACb,MAAM,EAAE,SAAS;wBACjB,EAAE,EAAE,IAAI,CAAC,EAAE;wBACX,MAAM,EAAE,SAAS;wBACjB,GAAG,EAAE,EAAE;wBACP,QAAQ,EAAE,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC;qBAC7C,CAAC;oBACF,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBAC1B,SAAS,GAAG,SAAS,GAAG,YAAY,CAAC;gBACvC,CAAC;gBAED,IAAI,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC/C,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,YAAY,GAAG;wBACb,KAAK,EAAE,qBAAqB,IAAI,sBAAsB,IAAI,CAAC;wBAC3D,eAAe,EAAE,EAAE;wBACnB,aAAa,EAAE,kBAA+B;qBAC/C,CAAC;oBACF,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,YAAY,CAAC;gBAC7C,CAAC;gBAED,KAAK,IAAI,KAAK,GAAG,aAAa,EAAE,KAAK,GAAG,iBAAiB,EAAE,KAAK,EAAE,EAAE,CAAC;oBACnE,MAAM,EAAE,GAAG,GAAG,CAAC,YAAY,CAAC,KAAK,CAAE,CAAC;oBACpC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACxC,CAAC;gBAED,YAAY,CAAC,aAAa;oBACxB,qBAAqB,KAAK,SAAS;wBACjC,CAAC,CAAC,GAAG,CAAC,aAAc;wBACpB,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,qBAAqB,CAAE,CAAC;gBAEjD,SAAS,CAAC,SAAS,CAAC;oBAClB,CAAC,qBAAqB,IAAI,sBAAsB,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC;YACpE,CAAC;QACH,CAAC;QAED,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CACrC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,CAC7D,CAAC;QAEF,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,iBAAiB,EAAE,CAAC;YACtB,IAAI,CAAC,2BAA2B,GAAG,iBAAiB,CAAC;QACvD,CAAC;QAED,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,qBAAqB;QACnB,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,kBAAkB,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,MAAM,WAAW,GAAG,IAAI,CAAC,6BAA6B,EAAE,CAAC;YACzD,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC;YACtC,OAAO,WAAW,CAAC;QACrB,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,6BAA6B;QAC3B,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO;YACzC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;iBAClC,IAAI,EAAE;iBACN,MAAM,CAAC,CAAC,CAAC,EAAqB,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC1D,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,cAAc;gBAC3C,CAAC,CAAC;oBACE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK;oBACzB,GAAG,IAAI,GAAG,CACR,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;yBACzB,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CACjB,6BAA6B,CAAC,SAAsB,CAAC,CACtD;yBACA,MAAM,CACL,CAAC,OAAO,EAA2B,EAAE,CACnC,WAAW,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,IAAI,CAAC,EAAE,CAC9C,CACJ;iBACF;gBACH,CAAC,CAAC,EAAE,CAAC;IACX,CAAC;CACF;AAED,SAAS,wBAAwB,CAC/B,GAAe,EACf,sBAA+B,EAC/B,qBAA8B;IAE9B,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC;SACnC,GAAG,CAAC,MAAM,CAAC;SACX,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;SACrB,IAAI,CACH,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,IAAI,sBAAsB,IAAI,CAAC,CAAC,CAAC,CACxE,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"coValueCore.js","sourceRoot":"","sources":["../../src/coValueCore.ts"],"names":[],"mappings":"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"}
@@ -9,23 +9,68 @@ export class RawCoMapView {
9
9
  this.atTimeFilter = undefined;
10
10
  this.id = core.id;
11
11
  this.core = core;
12
- this.ops = {};
13
- for (const { txID, changes, madeAt } of core.getValidSortedTransactions(options)) {
14
- for (const [changeIdx, changeUntyped] of changes.entries()) {
15
- const change = changeUntyped;
16
- let entries = this.ops[change.key];
12
+ this.latest = {};
13
+ this.latestTxMadeAt = 0;
14
+ this.options = options;
15
+ this.processLatestTransactions();
16
+ }
17
+ processLatestTransactions() {
18
+ this.latest = {};
19
+ this.latestTxMadeAt = 0;
20
+ const { core, options, latest } = this;
21
+ for (const { txID, changes, madeAt } of core.getValidSortedTransactions({
22
+ ignorePrivateTransactions: options?.ignorePrivateTransactions ?? false,
23
+ })) {
24
+ if (options?.atTime && madeAt > options.atTime) {
25
+ continue;
26
+ }
27
+ if (madeAt > this.latestTxMadeAt) {
28
+ this.latestTxMadeAt = madeAt;
29
+ }
30
+ for (let changeIdx = 0; changeIdx < changes.length; changeIdx++) {
31
+ const change = changes[changeIdx];
32
+ let entry = latest[change.key];
33
+ if (!entry) {
34
+ entry = {
35
+ txID,
36
+ madeAt,
37
+ changeIdx,
38
+ change,
39
+ };
40
+ latest[change.key] = entry;
41
+ }
42
+ else if (madeAt >= entry.madeAt) {
43
+ entry.txID = txID;
44
+ entry.madeAt = madeAt;
45
+ entry.changeIdx = changeIdx;
46
+ entry.change = change;
47
+ }
48
+ }
49
+ }
50
+ }
51
+ getOps() {
52
+ if (this.cachedOps) {
53
+ return this.cachedOps;
54
+ }
55
+ const ops = {};
56
+ for (const { txID, changes, madeAt, } of this.core.getValidSortedTransactions(this.options)) {
57
+ for (let changeIdx = 0; changeIdx < changes.length; changeIdx++) {
58
+ const change = changes[changeIdx];
59
+ let entries = ops[change.key];
17
60
  if (!entries) {
18
61
  entries = [];
19
- this.ops[change.key] = entries;
62
+ ops[change.key] = entries;
20
63
  }
21
64
  entries.push({
22
65
  txID,
23
66
  madeAt,
24
67
  changeIdx,
25
- ...change,
68
+ change,
26
69
  });
27
70
  }
28
71
  }
72
+ this.cachedOps = ops;
73
+ return ops;
29
74
  }
30
75
  /** @category 6. Meta */
31
76
  get headerMeta() {
@@ -37,13 +82,17 @@ export class RawCoMapView {
37
82
  }
38
83
  /** @category 4. Time travel */
39
84
  atTime(time) {
40
- const clone = Object.create(this);
41
- clone.id = this.id;
42
- clone.type = this.type;
43
- clone.core = this.core;
44
- clone.ops = this.ops;
45
- clone.atTimeFilter = time;
46
- return clone;
85
+ if (time >= this.latestTxMadeAt) {
86
+ return this;
87
+ }
88
+ else {
89
+ const clone = new RawCoMapView(this.core, {
90
+ ignorePrivateTransactions: this.options?.ignorePrivateTransactions ?? false,
91
+ atTime: time,
92
+ });
93
+ Object.setPrototypeOf(clone, this);
94
+ return clone;
95
+ }
47
96
  }
48
97
  /** @internal */
49
98
  timeFilteredOps(key) {
@@ -51,10 +100,10 @@ export class RawCoMapView {
51
100
  return undefined;
52
101
  }
53
102
  if (this.atTimeFilter) {
54
- return this.ops[key]?.filter((op) => op.madeAt <= this.atTimeFilter);
103
+ return this.getOps()[key]?.filter((op) => op.madeAt <= this.atTimeFilter);
55
104
  }
56
105
  else {
57
- return this.ops[key];
106
+ return this.getOps()[key];
58
107
  }
59
108
  }
60
109
  /**
@@ -62,16 +111,16 @@ export class RawCoMapView {
62
111
  *
63
112
  * @category 1. Reading */
64
113
  keys() {
65
- return Object.keys(this.ops).filter((key) => {
66
- const ops = this.ops[key];
67
- if (!ops) {
114
+ return Object.keys(this.latest).filter((key) => {
115
+ const latest = this.latest[key];
116
+ if (!latest) {
68
117
  return undefined;
69
118
  }
70
119
  const includeUntil = this.atTimeFilter;
71
120
  const lastEntry = includeUntil
72
- ? ops.findLast((entry) => entry.madeAt <= includeUntil)
73
- : ops[ops.length - 1];
74
- if (lastEntry?.op === "del") {
121
+ ? this.getOps()[key]?.findLast((entry) => entry.madeAt <= includeUntil)
122
+ : latest;
123
+ if (lastEntry?.change.op === "del") {
75
124
  return false;
76
125
  }
77
126
  else {
@@ -85,19 +134,19 @@ export class RawCoMapView {
85
134
  * @category 1. Reading
86
135
  **/
87
136
  get(key) {
88
- const ops = this.ops[key];
89
- if (!ops) {
137
+ const latest = this.latest[key];
138
+ if (!latest) {
90
139
  return undefined;
91
140
  }
92
141
  const includeUntil = this.atTimeFilter;
93
142
  const lastEntry = includeUntil
94
- ? ops.findLast((entry) => entry.madeAt <= includeUntil)
95
- : ops[ops.length - 1];
96
- if (lastEntry?.op === "del") {
143
+ ? this.timeFilteredOps(key)?.findLast((entry) => entry.madeAt <= includeUntil)
144
+ : latest;
145
+ if (lastEntry?.change.op === "del") {
97
146
  return undefined;
98
147
  }
99
148
  else {
100
- return lastEntry?.value;
149
+ return lastEntry?.change.value;
101
150
  }
102
151
  }
103
152
  /** @category 1. Reading */
@@ -129,7 +178,7 @@ export class RawCoMapView {
129
178
  by: accountOrAgentIDfromSessionID(entry.txID.sessionID),
130
179
  tx: entry.txID,
131
180
  at: new Date(entry.madeAt),
132
- value: entry.op === "del" ? undefined : entry.value,
181
+ value: entry.change.op === "del" ? undefined : entry.change.value,
133
182
  };
134
183
  }
135
184
  /** @category 5. Edit history */
@@ -175,8 +224,8 @@ export class RawCoMap extends RawCoMapView {
175
224
  value: isCoValue(value) ? value.id : value,
176
225
  },
177
226
  ], privacy);
178
- const after = new RawCoMap(this.core);
179
- this.ops = after.ops;
227
+ this.processLatestTransactions();
228
+ this.cachedOps = undefined;
180
229
  }
181
230
  /** Delete the given key (setting it to undefined).
182
231
  *
@@ -193,8 +242,8 @@ export class RawCoMap extends RawCoMapView {
193
242
  key,
194
243
  },
195
244
  ], privacy);
196
- const after = new RawCoMap(this.core);
197
- this.ops = after.ops;
245
+ this.processLatestTransactions();
246
+ this.cachedOps = undefined;
198
247
  }
199
248
  }
200
249
  //# sourceMappingURL=coMap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"coMap.js","sourceRoot":"","sources":["../../../src/coValues/coMap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coMap.js","sourceRoot":"","sources":["../../../src/coValues/coMap.ts"],"names":[],"mappings":"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"}