@social-mail/social-mail-web-server 1.4.777 → 1.4.779

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.
@@ -1 +1 @@
1
- {"version":3,"file":"MailboxContactEvents.d.ts","sourceRoot":"","sources":["../../../../src/server/model/events/MailboxContactEvents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iEAAiE,CAAC;AAC/F,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAC3D,OAAO,mBAAmB,MAAM,0BAA0B,CAAC;AAC3D,OAAO,WAAW,MAAM,gEAAgE,CAAC;AAGzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gEAAgE,CAAC;AAIlG,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,mBAAmB,CAAC,cAAc,CAAC;IAGjF,OAAO,CAAC,GAAG,CAAsB;IAEjC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,cAAc,CAAC,GAAG,YAAY,CAAC,cAAc,CAAC;IAazE,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,CAAC,cAAc,CAAC;IAIjE,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,CAAC,cAAc,CAAC;IAS7E,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,CAAC,cAAc,EAAE,GAAG,CAAC;IAM1D,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,CAAC,cAAc,CAAC;CA+C/E"}
1
+ {"version":3,"file":"MailboxContactEvents.d.ts","sourceRoot":"","sources":["../../../../src/server/model/events/MailboxContactEvents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iEAAiE,CAAC;AAC/F,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAC3D,OAAO,mBAAmB,MAAM,0BAA0B,CAAC;AAC3D,OAAO,WAAW,MAAM,gEAAgE,CAAC;AAGzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gEAAgE,CAAC;AAIlG,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,mBAAmB,CAAC,cAAc,CAAC;IAGjF,OAAO,CAAC,GAAG,CAAsB;IAEjC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,cAAc,CAAC,GAAG,YAAY,CAAC,cAAc,CAAC;IAazE,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,CAAC,cAAc,CAAC;IAIjE,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,CAAC,cAAc,CAAC;IAS7E,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,CAAC,cAAc,EAAE,GAAG,CAAC;IAM1D,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,CAAC,cAAc,CAAC;CAoC/E"}
@@ -42,8 +42,7 @@ export default class MailboxContactEvents extends AuthenticatedEvents {
42
42
  }
43
43
  async afterUpdate(entity, entry) {
44
44
  // if blocked was changed
45
- const { mailboxID, blocked, autoClose } = entity;
46
- let { openThreads, totalThreads } = entity;
45
+ const { mailboxID, blocked, autoClose, emailAddressID, openThreads } = entity;
47
46
  const db = ServiceProvider.resolve(this, SocialMailContext);
48
47
  if (entry.isUpdated("autoClose") || entry.isUpdated("blocked")) {
49
48
  if (autoClose || blocked) {
@@ -59,23 +58,15 @@ export default class MailboxContactEvents extends AuthenticatedEvents {
59
58
  }
60
59
  else {
61
60
  // we need to recalculate
62
- const t = await db.emails.where(entity, (p) => (x) => x.threadContacts
63
- .some((tc) => tc.mailboxID === p.mailboxID
64
- && tc.emailAddressID === p.emailAddressID)
65
- && x.threadID === x.emailID)
61
+ const all = await db.emails
62
+ .where(entity, (p) => (x) => x.threadContacts.some((t) => t.mailboxID === p.mailboxID
63
+ && t.emailAddressID === p.emailAddressID)
64
+ && x.threadID === null)
66
65
  .sum(void 0, (p) => (x) => ({
67
- openThreads: x.closed === null ? 1 : 0,
68
- totalThreads: 1
69
- }));
70
- if (t) {
71
- openThreads = t.openThreads;
72
- totalThreads = t.totalThreads;
73
- }
74
- await db.mailboxes.where({ mailboxID }, (p) => (x) => x.mailboxID === p.mailboxID)
75
- .update({ openThreads, totalThreads }, (p) => (x) => ({
76
- openThreads: Sql.math.max(0, x.openThreads + Sql.cast.asInteger(p.openThreads)),
77
- totalThreads: Sql.math.max(0, x.totalThreads + Sql.cast.asInteger(p.totalThreads))
66
+ totalThreads: 1,
67
+ openThreads: x.lastReplyID === null ? 1 : 0
78
68
  }));
69
+ await db.mailboxContacts.statements.update(all, { mailboxID, emailAddressID });
79
70
  }
80
71
  }
81
72
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MailboxContactEvents.js","sourceRoot":"","sources":["../../../../src/server/model/events/MailboxContactEvents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MailboxContactEvents.js","sourceRoot":"","sources":["../../../../src/server/model/events/MailboxContactEvents.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { UIPackageConfig } from "../../services/DBConfig.js";
2
2
  import semver from "semver";
3
3
  export default async function seedUI(config) {
4
- const version = "1.2.305";
4
+ const version = "1.2.308";
5
5
  const existing = await config.get(UIPackageConfig, false);
6
6
  if (existing) {
7
7
  if (semver.gte(existing.version, version)) {
@@ -1,9 +1,9 @@
1
1
  export default class LockFile implements Disposable {
2
2
  private readonly lockFile;
3
- private readonly fd;
4
3
  static lock(someKey: string, timeout?: number): Promise<LockFile>;
5
4
  timer: any;
6
- constructor(lockFile: any, fd: any);
5
+ fd: any;
6
+ constructor(lockFile: any);
7
7
  [Symbol.dispose](): void;
8
8
  }
9
9
  //# sourceMappingURL=LockFile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LockFile.d.ts","sourceRoot":"","sources":["../../../src/server/storage/LockFile.ts"],"names":[],"mappings":"AAyBA,MAAM,CAAC,OAAO,OAAO,QAAS,YAAW,UAAU;IAyCnC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAAE,OAAO,CAAC,QAAQ,CAAC,EAAE;WAvC7C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,SAAY;IAqCtD,KAAK,EAAE,GAAG,CAAC;gBAEkB,QAAQ,KAAA,EAAmB,EAAE,KAAA;IAU1D,CAAC,MAAM,CAAC,OAAO,CAAC;CAWnB"}
1
+ {"version":3,"file":"LockFile.d.ts","sourceRoot":"","sources":["../../../src/server/storage/LockFile.ts"],"names":[],"mappings":"AAyBA,MAAM,CAAC,OAAO,OAAO,QAAS,YAAW,UAAU;IAyCnC,OAAO,CAAC,QAAQ,CAAC,QAAQ;WAvCxB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,SAAY;IAoCtD,KAAK,EAAE,GAAG,CAAC;IACX,EAAE,EAAE,GAAG,CAAC;gBAEqB,QAAQ,KAAA;IAerC,CAAC,MAAM,CAAC,OAAO,CAAC;CAWnB"}
@@ -1,5 +1,5 @@
1
1
  import { join } from "node:path";
2
- import { existsSync, mkdirSync, openSync, constants, writeSync, closeSync, unlinkSync, statSync } from "node:fs";
2
+ import { existsSync, mkdirSync, openSync, constants, writeSync, closeSync, unlinkSync, statSync, fdatasyncSync } from "node:fs";
3
3
  import { createHash } from "node:crypto";
4
4
  import * as os from "node:os";
5
5
  import sleep from "../../common/sleep.js";
@@ -19,38 +19,41 @@ export default class LockFile {
19
19
  const sha256 = createHash("sha256");
20
20
  const hash = sha256.update(someKey).digest("hex");
21
21
  const lockFile = join(lockFolder, hash + ".lock");
22
- const till = Date.now() + timeout;
23
- while (Date.now() < till) {
22
+ let now = Date.now();
23
+ const till = now + timeout;
24
+ do {
24
25
  try {
25
26
  // check if it exists..
26
27
  if (!existsSync(lockFile)) {
27
28
  // create and return..
28
- const fd = openSync(lockFile, "wx", openMode);
29
- writeSync(fd, "1");
30
- return new LockFile(lockFile, fd);
29
+ return new LockFile(lockFile);
31
30
  }
32
31
  const stat = statSync(lockFile);
33
- const diff = Date.now() - stat.mtimeMs;
34
- if (diff > 30000) {
35
- // most likely this is dead...
32
+ const past = now - 15000;
33
+ if (stat.mtimeMs < past) {
34
+ // it is dead...
36
35
  unlinkSync(lockFile);
37
- continue;
38
36
  }
39
37
  }
40
38
  catch (error) {
41
39
  // do nothing
42
- // console.error(error);
40
+ console.error(error);
43
41
  }
44
42
  await sleep(3000);
45
- }
43
+ now = Date.now();
44
+ } while (now < till);
46
45
  throw new Error("Could not acquire lock");
47
46
  }
48
- constructor(lockFile, fd) {
47
+ constructor(lockFile) {
49
48
  this.lockFile = lockFile;
50
- this.fd = fd;
49
+ const fd = this.fd = openSync(lockFile, "wx", openMode);
50
+ let n = 1;
51
+ writeSync(fd, (n++) + "");
52
+ fdatasyncSync(fd);
51
53
  this.timer = setInterval(() => {
52
54
  try {
53
- writeSync(fd, "1");
55
+ writeSync(fd, (n++) + "");
56
+ fdatasyncSync(fd);
54
57
  }
55
58
  catch {
56
59
  // do nothing
@@ -1 +1 @@
1
- {"version":3,"file":"LockFile.js","sourceRoot":"","sources":["../../../src/server/storage/LockFile.ts"],"names":[],"mappings":"AAEA,OAAO,EAAW,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjH,OAAO,EAAE,UAAU,EAAc,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,MAAM,uBAAuB,CAAC;AAE1C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;AAE/D,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEzC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;IAC1B,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB,MAAM,OAAO,GAAG,EAAE,GAAC,OAAO,CAAC;AAC3B,MAAM,KAAK,GAAG,EAAE,GAAC,OAAO,CAAC;AAEzB,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;AAE/C,sCAAsC;AACtC,MAAM,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE5C,MAAM,CAAC,OAAO,OAAO,QAAQ;IAEzB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAe,EAAE,OAAO,GAAG,CAAC,GAAG,KAAK;QAClD,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAElD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC;QAElD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;QAElC,OAAM,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;YAEtB,IAAI,CAAC;gBACD,uBAAuB;gBACvB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACxB,sBAAsB;oBACtB,MAAM,EAAE,GAAG,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;oBAC9C,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;oBACnB,OAAO,IAAI,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBACtC,CAAC;gBAED,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAChC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;gBACvC,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;oBACf,8BAA8B;oBAC9B,UAAU,CAAC,QAAQ,CAAC,CAAC;oBACrB,SAAS;gBACb,CAAC;YAEL,CAAC;YAAC,OAAO,KAAK,EAAC,CAAC;gBACZ,aAAa;gBACb,wBAAwB;YAC5B,CAAC;YACD,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC9C,CAAC;IAID,YAA6B,QAAQ,EAAmB,EAAE;QAA7B,aAAQ,GAAR,QAAQ,CAAA;QAAmB,OAAE,GAAF,EAAE,CAAA;QACtD,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC1B,IAAI,CAAC;gBACD,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YACvB,CAAC;YAAC,MAAM,CAAC;gBACL,aAAa;YACjB,CAAC;QACL,CAAC,EAAE,IAAI,CAAC,CAAC;IACb,CAAC;IAED,CAAC,MAAM,CAAC,OAAO,CAAC;QACZ,IAAI,CAAC;YACD,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnB,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,kBAAkB;YAClB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACL,CAAC;CAEJ"}
1
+ {"version":3,"file":"LockFile.js","sourceRoot":"","sources":["../../../src/server/storage/LockFile.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export default function (): Promise<[void, void]>;
1
+ export default function (): Promise<void>;
2
2
  //# sourceMappingURL=lock-file-test.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lock-file-test.d.ts","sourceRoot":"","sources":["../../../../src/tests/core/lock-file/lock-file-test.ts"],"names":[],"mappings":"AA4BA,MAAM,CAAC,OAAO,oCAKb"}
1
+ {"version":3,"file":"lock-file-test.d.ts","sourceRoot":"","sources":["../../../../src/tests/core/lock-file/lock-file-test.ts"],"names":[],"mappings":"AAqCA,0CAYC"}
@@ -45,9 +45,11 @@ var __disposeResources = (this && this.__disposeResources) || (function (Suppres
45
45
  var e = new Error(message);
46
46
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
47
47
  });
48
+ /* eslint-disable no-console */
48
49
  import assert from "assert";
49
50
  import sleep from "../../../common/sleep.js";
50
51
  import LockFile from "../../../server/storage/LockFile.js";
52
+ import { closeSync } from "fs";
51
53
  Symbol.dispose ??= Symbol("dispose");
52
54
  Symbol.asyncDispose ??= Symbol("asyncDispose");
53
55
  let v = 0;
@@ -69,6 +71,12 @@ const lock1 = async () => {
69
71
  __disposeResources(env_1);
70
72
  }
71
73
  };
74
+ const deadLock = async () => {
75
+ const l = await LockFile.lock("a1");
76
+ closeSync(l.fd);
77
+ l.fd = null;
78
+ clearInterval(l.timer);
79
+ };
72
80
  const lock2 = async () => {
73
81
  const env_2 = { stack: [], error: void 0, hasError: false };
74
82
  try {
@@ -88,10 +96,15 @@ const lock2 = async () => {
88
96
  __disposeResources(env_2);
89
97
  }
90
98
  };
91
- export default function () {
92
- return Promise.all([
99
+ export default async function () {
100
+ await Promise.all([
93
101
  lock1(),
94
102
  lock2()
95
103
  ]);
104
+ console.log(`Trying Dead Lock`);
105
+ await Promise.all([
106
+ deadLock(),
107
+ lock2()
108
+ ]);
96
109
  }
97
110
  //# sourceMappingURL=lock-file-test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lock-file-test.js","sourceRoot":"","sources":["../../../../src/tests/core/lock-file/lock-file-test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,KAAK,MAAM,0BAA0B,CAAC;AAC7C,OAAO,QAAQ,MAAM,qCAAqC,CAAC;AAE1D,MAAc,CAAC,OAAO,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC;AAC7C,MAAc,CAAC,YAAY,KAAK,MAAM,CAAC,cAAc,CAAC,CAAC;AAExD,IAAI,CAAC,GAAG,CAAC,CAAC;AAEV,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;;;QACrB,MAAM,EAAE,kCAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAA,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC/B,CAAC,GAAG,CAAC,CAAC;QACN,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;QAClB,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;;;;;;;;;CACnC,CAAC;AAEF,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;;;QACrB,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC9B,MAAM,EAAE,kCAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAA,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC/B,CAAC,GAAG,CAAC,CAAC;QACN,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;;;;;;;;;CACnC,CAAC;AAEF,MAAM,CAAC,OAAO;IACV,OAAO,OAAO,CAAC,GAAG,CAAC;QACf,KAAK,EAAE;QACP,KAAK,EAAE;KACV,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"lock-file-test.js","sourceRoot":"","sources":["../../../../src/tests/core/lock-file/lock-file-test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAA+B;AAC/B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,KAAK,MAAM,0BAA0B,CAAC;AAC7C,OAAO,QAAQ,MAAM,qCAAqC,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAE9B,MAAc,CAAC,OAAO,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC;AAC7C,MAAc,CAAC,YAAY,KAAK,MAAM,CAAC,cAAc,CAAC,CAAC;AAExD,IAAI,CAAC,GAAG,CAAC,CAAC;AAEV,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;;;QACrB,MAAM,EAAE,kCAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAA,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC/B,CAAC,GAAG,CAAC,CAAC;QACN,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;QAClB,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;;;;;;;;;CACnC,CAAC;AAEF,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;IACxB,MAAM,CAAC,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;IACZ,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC,CAAC;AAEF,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;;;QACrB,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC9B,MAAM,EAAE,kCAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAA,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC/B,CAAC,GAAG,CAAC,CAAC;QACN,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;;;;;;;;;CACnC,CAAC;AAEF,MAAM,CAAC,OAAO,CAAC,KAAK;IAChB,MAAM,OAAO,CAAC,GAAG,CAAC;QACd,KAAK,EAAE;QACP,KAAK,EAAE;KACV,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAEhC,MAAM,OAAO,CAAC,GAAG,CAAC;QACd,QAAQ,EAAE;QACV,KAAK,EAAE;KACV,CAAC,CAAC;AACP,CAAC"}