@milaboratories/pl-client 2.16.26 → 2.16.28

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 (212) hide show
  1. package/README.md +2 -1
  2. package/dist/core/PromiseTracker.cjs +1 -3
  3. package/dist/core/PromiseTracker.cjs.map +1 -1
  4. package/dist/core/PromiseTracker.d.ts.map +1 -1
  5. package/dist/core/PromiseTracker.js +1 -3
  6. package/dist/core/PromiseTracker.js.map +1 -1
  7. package/dist/core/StatefulPromise.cjs +4 -4
  8. package/dist/core/StatefulPromise.cjs.map +1 -1
  9. package/dist/core/StatefulPromise.d.ts +1 -1
  10. package/dist/core/StatefulPromise.d.ts.map +1 -1
  11. package/dist/core/StatefulPromise.js +4 -4
  12. package/dist/core/StatefulPromise.js.map +1 -1
  13. package/dist/core/advisory_locks.cjs +1 -1
  14. package/dist/core/advisory_locks.cjs.map +1 -1
  15. package/dist/core/advisory_locks.js +1 -1
  16. package/dist/core/advisory_locks.js.map +1 -1
  17. package/dist/core/auth.cjs.map +1 -1
  18. package/dist/core/auth.d.ts +1 -1
  19. package/dist/core/auth.js.map +1 -1
  20. package/dist/core/cache.d.ts +1 -1
  21. package/dist/core/client.cjs +14 -14
  22. package/dist/core/client.cjs.map +1 -1
  23. package/dist/core/client.d.ts +11 -11
  24. package/dist/core/client.d.ts.map +1 -1
  25. package/dist/core/client.js +14 -14
  26. package/dist/core/client.js.map +1 -1
  27. package/dist/core/config.cjs +39 -39
  28. package/dist/core/config.cjs.map +1 -1
  29. package/dist/core/config.d.ts +5 -5
  30. package/dist/core/config.js +39 -39
  31. package/dist/core/config.js.map +1 -1
  32. package/dist/core/default_client.cjs +23 -23
  33. package/dist/core/default_client.cjs.map +1 -1
  34. package/dist/core/default_client.d.ts +3 -3
  35. package/dist/core/default_client.js +23 -23
  36. package/dist/core/default_client.js.map +1 -1
  37. package/dist/core/driver.cjs +1 -1
  38. package/dist/core/driver.cjs.map +1 -1
  39. package/dist/core/driver.d.ts +5 -5
  40. package/dist/core/driver.js +1 -1
  41. package/dist/core/driver.js.map +1 -1
  42. package/dist/core/error_resource.cjs +2 -2
  43. package/dist/core/error_resource.cjs.map +1 -1
  44. package/dist/core/error_resource.d.ts +1 -1
  45. package/dist/core/error_resource.js +2 -2
  46. package/dist/core/error_resource.js.map +1 -1
  47. package/dist/core/errors.cjs +24 -24
  48. package/dist/core/errors.cjs.map +1 -1
  49. package/dist/core/errors.d.ts +1 -1
  50. package/dist/core/errors.d.ts.map +1 -1
  51. package/dist/core/errors.js +24 -24
  52. package/dist/core/errors.js.map +1 -1
  53. package/dist/core/final.cjs +43 -43
  54. package/dist/core/final.cjs.map +1 -1
  55. package/dist/core/final.d.ts +3 -3
  56. package/dist/core/final.d.ts.map +1 -1
  57. package/dist/core/final.js +43 -43
  58. package/dist/core/final.js.map +1 -1
  59. package/dist/core/ll_client.cjs +50 -43
  60. package/dist/core/ll_client.cjs.map +1 -1
  61. package/dist/core/ll_client.d.ts +9 -9
  62. package/dist/core/ll_client.d.ts.map +1 -1
  63. package/dist/core/ll_client.js +50 -43
  64. package/dist/core/ll_client.js.map +1 -1
  65. package/dist/core/ll_transaction.cjs +9 -9
  66. package/dist/core/ll_transaction.cjs.map +1 -1
  67. package/dist/core/ll_transaction.d.ts +7 -7
  68. package/dist/core/ll_transaction.d.ts.map +1 -1
  69. package/dist/core/ll_transaction.js +9 -9
  70. package/dist/core/ll_transaction.js.map +1 -1
  71. package/dist/core/stat.cjs.map +1 -1
  72. package/dist/core/stat.d.ts +1 -1
  73. package/dist/core/stat.js.map +1 -1
  74. package/dist/core/transaction.cjs +46 -46
  75. package/dist/core/transaction.cjs.map +1 -1
  76. package/dist/core/transaction.d.ts +7 -7
  77. package/dist/core/transaction.d.ts.map +1 -1
  78. package/dist/core/transaction.js +46 -46
  79. package/dist/core/transaction.js.map +1 -1
  80. package/dist/core/type_conversion.cjs +22 -22
  81. package/dist/core/type_conversion.cjs.map +1 -1
  82. package/dist/core/type_conversion.d.ts +3 -3
  83. package/dist/core/type_conversion.d.ts.map +1 -1
  84. package/dist/core/type_conversion.js +22 -22
  85. package/dist/core/type_conversion.js.map +1 -1
  86. package/dist/core/types.cjs +25 -25
  87. package/dist/core/types.cjs.map +1 -1
  88. package/dist/core/types.d.ts +7 -7
  89. package/dist/core/types.js +25 -25
  90. package/dist/core/types.js.map +1 -1
  91. package/dist/core/unauth_client.cjs +6 -4
  92. package/dist/core/unauth_client.cjs.map +1 -1
  93. package/dist/core/unauth_client.d.ts +4 -4
  94. package/dist/core/unauth_client.d.ts.map +1 -1
  95. package/dist/core/unauth_client.js +6 -4
  96. package/dist/core/unauth_client.js.map +1 -1
  97. package/dist/core/websocket_stream.cjs +22 -20
  98. package/dist/core/websocket_stream.cjs.map +1 -1
  99. package/dist/core/websocket_stream.d.ts +3 -3
  100. package/dist/core/websocket_stream.d.ts.map +1 -1
  101. package/dist/core/websocket_stream.js +22 -20
  102. package/dist/core/websocket_stream.js.map +1 -1
  103. package/dist/core/wire.d.ts +6 -6
  104. package/dist/core/wire.d.ts.map +1 -1
  105. package/dist/helpers/pl.cjs +19 -19
  106. package/dist/helpers/pl.cjs.map +1 -1
  107. package/dist/helpers/pl.d.ts +2 -2
  108. package/dist/helpers/pl.js +19 -19
  109. package/dist/helpers/pl.js.map +1 -1
  110. package/dist/helpers/poll.cjs +6 -6
  111. package/dist/helpers/poll.cjs.map +1 -1
  112. package/dist/helpers/poll.d.ts +4 -4
  113. package/dist/helpers/poll.d.ts.map +1 -1
  114. package/dist/helpers/poll.js +6 -6
  115. package/dist/helpers/poll.js.map +1 -1
  116. package/dist/helpers/retry_strategy.cjs +1 -1
  117. package/dist/helpers/retry_strategy.cjs.map +1 -1
  118. package/dist/helpers/retry_strategy.d.ts.map +1 -1
  119. package/dist/helpers/retry_strategy.js +1 -1
  120. package/dist/helpers/retry_strategy.js.map +1 -1
  121. package/dist/helpers/state_helpers.d.ts +2 -2
  122. package/dist/helpers/tx_helpers.cjs +2 -2
  123. package/dist/helpers/tx_helpers.cjs.map +1 -1
  124. package/dist/helpers/tx_helpers.d.ts +2 -2
  125. package/dist/helpers/tx_helpers.d.ts.map +1 -1
  126. package/dist/helpers/tx_helpers.js +2 -2
  127. package/dist/helpers/tx_helpers.js.map +1 -1
  128. package/dist/index.d.ts +16 -16
  129. package/dist/proto-grpc/google/protobuf/struct.d.ts +1 -1
  130. package/dist/proto-grpc/google/protobuf/struct.d.ts.map +1 -1
  131. package/dist/proto-rest/index.cjs +4 -5
  132. package/dist/proto-rest/index.cjs.map +1 -1
  133. package/dist/proto-rest/index.d.ts +4 -4
  134. package/dist/proto-rest/index.d.ts.map +1 -1
  135. package/dist/proto-rest/index.js +4 -5
  136. package/dist/proto-rest/index.js.map +1 -1
  137. package/dist/proto-rest/plapi.d.ts.map +1 -1
  138. package/dist/test/tcp-proxy.cjs +11 -10
  139. package/dist/test/tcp-proxy.cjs.map +1 -1
  140. package/dist/test/tcp-proxy.d.ts +1 -1
  141. package/dist/test/tcp-proxy.d.ts.map +1 -1
  142. package/dist/test/tcp-proxy.js +11 -10
  143. package/dist/test/tcp-proxy.js.map +1 -1
  144. package/dist/test/test_config.cjs +21 -17
  145. package/dist/test/test_config.cjs.map +1 -1
  146. package/dist/test/test_config.d.ts +6 -6
  147. package/dist/test/test_config.d.ts.map +1 -1
  148. package/dist/test/test_config.js +21 -17
  149. package/dist/test/test_config.js.map +1 -1
  150. package/dist/util/pl.cjs +1 -1
  151. package/dist/util/pl.cjs.map +1 -1
  152. package/dist/util/pl.js +1 -1
  153. package/dist/util/pl.js.map +1 -1
  154. package/dist/util/util.cjs +1 -1
  155. package/dist/util/util.cjs.map +1 -1
  156. package/dist/util/util.js +1 -1
  157. package/dist/util/util.js.map +1 -1
  158. package/package.json +23 -23
  159. package/src/core/PromiseTracker.ts +3 -4
  160. package/src/core/StatefulPromise.ts +17 -8
  161. package/src/core/abstract_stream.ts +3 -4
  162. package/src/core/advisory_locks.ts +1 -1
  163. package/src/core/auth.ts +2 -2
  164. package/src/core/cache.ts +1 -1
  165. package/src/core/client.test.ts +25 -21
  166. package/src/core/client.ts +54 -45
  167. package/src/core/config.test.ts +44 -44
  168. package/src/core/config.ts +49 -49
  169. package/src/core/connectivity.test.ts +69 -63
  170. package/src/core/default_client.ts +46 -46
  171. package/src/core/driver.ts +6 -6
  172. package/src/core/error.test.ts +5 -5
  173. package/src/core/error_resource.ts +3 -3
  174. package/src/core/errors.ts +39 -31
  175. package/src/core/final.ts +48 -55
  176. package/src/core/ll_client.test.ts +53 -36
  177. package/src/core/ll_client.ts +125 -81
  178. package/src/core/ll_transaction.test.ts +75 -49
  179. package/src/core/ll_transaction.ts +37 -35
  180. package/src/core/stat.ts +1 -1
  181. package/src/core/transaction.test.ts +65 -65
  182. package/src/core/transaction.ts +91 -84
  183. package/src/core/type_conversion.ts +30 -31
  184. package/src/core/types.test.ts +6 -6
  185. package/src/core/types.ts +35 -35
  186. package/src/core/unauth_client.test.ts +18 -14
  187. package/src/core/unauth_client.ts +14 -12
  188. package/src/core/websocket_stream.test.ts +52 -52
  189. package/src/core/websocket_stream.ts +41 -37
  190. package/src/core/wire.ts +10 -8
  191. package/src/helpers/pl.ts +22 -22
  192. package/src/helpers/poll.ts +13 -27
  193. package/src/helpers/retry_strategy.ts +2 -4
  194. package/src/helpers/rich_resource_types.test.ts +2 -2
  195. package/src/helpers/state_helpers.ts +3 -3
  196. package/src/helpers/tx_helpers.ts +9 -7
  197. package/src/index.ts +16 -16
  198. package/src/proto-grpc/google/protobuf/struct.ts +1 -1
  199. package/src/proto-rest/index.ts +17 -18
  200. package/src/proto-rest/plapi.ts +1472 -1472
  201. package/src/test/tcp-proxy.ts +55 -54
  202. package/src/test/test_config.test.ts +3 -3
  203. package/src/test/test_config.ts +51 -46
  204. package/src/util/pl.ts +1 -1
  205. package/src/util/util.test.ts +5 -5
  206. package/src/util/util.ts +1 -1
  207. package/dist/helpers/rich_resource_types.d.ts +0 -2
  208. package/dist/helpers/rich_resource_types.d.ts.map +0 -1
  209. package/dist/helpers/smart_accessors.d.ts +0 -2
  210. package/dist/helpers/smart_accessors.d.ts.map +0 -1
  211. package/src/helpers/rich_resource_types.ts +0 -84
  212. package/src/helpers/smart_accessors.ts +0 -146
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../src/core/transaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../src/core/transaction.ts"],"names":[],"mappings":"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"}
@@ -11,19 +11,19 @@ import { JsonObject, JsonGzObject } from '../helpers/pl.js';
11
11
  import { PromiseTracker } from './PromiseTracker.js';
12
12
 
13
13
  function isField(ref) {
14
- return ref.hasOwnProperty('resourceId') && ref.hasOwnProperty('fieldName');
14
+ return ref.hasOwnProperty("resourceId") && ref.hasOwnProperty("fieldName");
15
15
  }
16
16
  function isResource(ref) {
17
- return (typeof ref === 'bigint' || (ref.hasOwnProperty('globalId') && ref.hasOwnProperty('localId')));
17
+ return (typeof ref === "bigint" || (ref.hasOwnProperty("globalId") && ref.hasOwnProperty("localId")));
18
18
  }
19
19
  function isResourceId(ref) {
20
- return typeof ref === 'bigint' && !isLocalResourceId(ref) && !isNullResourceId(ref);
20
+ return typeof ref === "bigint" && !isLocalResourceId(ref) && !isNullResourceId(ref);
21
21
  }
22
22
  function isFieldRef(ref) {
23
23
  return isResourceRef(ref.resourceId);
24
24
  }
25
25
  function isResourceRef(ref) {
26
- return ref.hasOwnProperty('globalId') && ref.hasOwnProperty('localId');
26
+ return ref.hasOwnProperty("globalId") && ref.hasOwnProperty("localId");
27
27
  }
28
28
  function toFieldId(ref) {
29
29
  if (isFieldRef(ref))
@@ -54,7 +54,7 @@ function field(resourceId, fieldName) {
54
54
  }
55
55
  /** If transaction commit failed due to write conflicts */
56
56
  class TxCommitConflict extends Error {
57
- name = 'TxCommitConflict';
57
+ name = "TxCommitConflict";
58
58
  }
59
59
  async function notFoundToUndefined(cb) {
60
60
  try {
@@ -165,7 +165,7 @@ let PlTransaction = (() => {
165
165
  this.enableFormattedErrors = enableFormattedErrors;
166
166
  // initiating transaction
167
167
  this.globalTxId = this.sendSingleAndParse({
168
- oneofKind: 'txOpen',
168
+ oneofKind: "txOpen",
169
169
  txOpen: {
170
170
  name,
171
171
  enableFormattedErrors,
@@ -221,7 +221,7 @@ let PlTransaction = (() => {
221
221
  }
222
222
  checkTxOpen() {
223
223
  if (this._completed)
224
- throw new Error('Transaction already closed');
224
+ throw new Error("Transaction already closed");
225
225
  }
226
226
  get completed() {
227
227
  return this._completed;
@@ -240,7 +240,7 @@ let PlTransaction = (() => {
240
240
  await this.ll.await();
241
241
  }
242
242
  else {
243
- const commitResponse = this.track(this.sendSingleAndParse({ oneofKind: 'txCommit', txCommit: {} }, (r) => r.txCommit.success));
243
+ const commitResponse = this.track(this.sendSingleAndParse({ oneofKind: "txCommit", txCommit: {} }, (r) => r.txCommit.success));
244
244
  // send closing frame right after commit to save some time on round-trips
245
245
  const completeResult = this.track(this.ll.complete());
246
246
  // now when we pushed all packets into the stream, we should wait for any
@@ -257,7 +257,7 @@ let PlTransaction = (() => {
257
257
  this.checkTxOpen();
258
258
  // tx will accept no requests after this one
259
259
  this._completed = true;
260
- const discardResponse = this.sendVoidSync({ oneofKind: 'txDiscard', txDiscard: {} });
260
+ const discardResponse = this.sendVoidSync({ oneofKind: "txDiscard", txDiscard: {} });
261
261
  void this.track(discardResponse);
262
262
  // send closing frame right after commit to save some time on round-trips
263
263
  const completeResult = this.track(this.ll.complete());
@@ -280,7 +280,7 @@ let PlTransaction = (() => {
280
280
  createSingleton(name, type, errorIfExists = false) {
281
281
  const localId = this.nextLocalResourceId(false);
282
282
  const globalId = this.sendSingleAndParse({
283
- oneofKind: 'resourceCreateSingleton',
283
+ oneofKind: "resourceCreateSingleton",
284
284
  resourceCreateSingleton: {
285
285
  type,
286
286
  id: localId,
@@ -293,7 +293,7 @@ let PlTransaction = (() => {
293
293
  }
294
294
  getSingleton(name, loadFields = true) {
295
295
  return this.sendSingleAndParse({
296
- oneofKind: 'resourceGetSingleton',
296
+ oneofKind: "resourceGetSingleton",
297
297
  resourceGetSingleton: {
298
298
  data: Buffer.from(name),
299
299
  loadFields,
@@ -308,17 +308,17 @@ let PlTransaction = (() => {
308
308
  }
309
309
  createRoot(type) {
310
310
  this._stat.rootsCreated++;
311
- return this.createResource(true, (localId) => ({ oneofKind: 'resourceCreateRoot', resourceCreateRoot: { type, id: localId } }), (r) => r.resourceCreateRoot.resourceId);
311
+ return this.createResource(true, (localId) => ({ oneofKind: "resourceCreateRoot", resourceCreateRoot: { type, id: localId } }), (r) => r.resourceCreateRoot.resourceId);
312
312
  }
313
313
  createStruct(type, data) {
314
314
  this._stat.structsCreated++;
315
315
  this._stat.structsCreatedDataBytes += data?.length ?? 0;
316
316
  return this.createResource(false, (localId) => ({
317
- oneofKind: 'resourceCreateStruct',
317
+ oneofKind: "resourceCreateStruct",
318
318
  resourceCreateStruct: {
319
319
  type,
320
320
  id: localId,
321
- data: data === undefined ? undefined : typeof data === 'string' ? Buffer.from(data) : data,
321
+ data: data === undefined ? undefined : typeof data === "string" ? Buffer.from(data) : data,
322
322
  },
323
323
  }), (r) => r.resourceCreateStruct.resourceId);
324
324
  }
@@ -326,11 +326,11 @@ let PlTransaction = (() => {
326
326
  this._stat.ephemeralsCreated++;
327
327
  this._stat.ephemeralsCreatedDataBytes += data?.length ?? 0;
328
328
  return this.createResource(false, (localId) => ({
329
- oneofKind: 'resourceCreateEphemeral',
329
+ oneofKind: "resourceCreateEphemeral",
330
330
  resourceCreateEphemeral: {
331
331
  type,
332
332
  id: localId,
333
- data: data === undefined ? undefined : typeof data === 'string' ? Buffer.from(data) : data,
333
+ data: data === undefined ? undefined : typeof data === "string" ? Buffer.from(data) : data,
334
334
  },
335
335
  }), (r) => r.resourceCreateEphemeral.resourceId);
336
336
  }
@@ -338,11 +338,11 @@ let PlTransaction = (() => {
338
338
  this._stat.valuesCreated++;
339
339
  this._stat.valuesCreatedDataBytes += data?.length ?? 0;
340
340
  return this.createResource(false, (localId) => ({
341
- oneofKind: 'resourceCreateValue',
341
+ oneofKind: "resourceCreateValue",
342
342
  resourceCreateValue: {
343
343
  type,
344
344
  id: localId,
345
- data: typeof data === 'string' ? Buffer.from(data) : data,
345
+ data: typeof data === "string" ? Buffer.from(data) : data,
346
346
  errorIfExists,
347
347
  },
348
348
  }), (r) => r.resourceCreateValue.resourceId);
@@ -360,24 +360,24 @@ let PlTransaction = (() => {
360
360
  }
361
361
  setResourceName(name, rId) {
362
362
  this.sendVoidAsync({
363
- oneofKind: 'resourceNameSet',
363
+ oneofKind: "resourceNameSet",
364
364
  resourceNameSet: { resourceId: toResourceId(rId), name },
365
365
  });
366
366
  }
367
367
  deleteResourceName(name) {
368
- this.sendVoidAsync({ oneofKind: 'resourceNameDelete', resourceNameDelete: { name } });
368
+ this.sendVoidAsync({ oneofKind: "resourceNameDelete", resourceNameDelete: { name } });
369
369
  }
370
370
  getResourceByName(name) {
371
- return this.sendSingleAndParse({ oneofKind: 'resourceNameGet', resourceNameGet: { name } }, (r) => ensureResourceIdNotNull(r.resourceNameGet.resourceId));
371
+ return this.sendSingleAndParse({ oneofKind: "resourceNameGet", resourceNameGet: { name } }, (r) => ensureResourceIdNotNull(r.resourceNameGet.resourceId));
372
372
  }
373
373
  checkResourceNameExists(name) {
374
- return this.sendSingleAndParse({ oneofKind: 'resourceNameExists', resourceNameExists: { name } }, (r) => r.resourceNameExists.exists);
374
+ return this.sendSingleAndParse({ oneofKind: "resourceNameExists", resourceNameExists: { name } }, (r) => r.resourceNameExists.exists);
375
375
  }
376
376
  removeResource(rId) {
377
- this.sendVoidAsync({ oneofKind: 'resourceRemove', resourceRemove: { id: rId } });
377
+ this.sendVoidAsync({ oneofKind: "resourceRemove", resourceRemove: { id: rId } });
378
378
  }
379
379
  resourceExists(rId) {
380
- return this.sendSingleAndParse({ oneofKind: 'resourceExists', resourceExists: { resourceId: rId } }, (r) => r.resourceExists.exists);
380
+ return this.sendSingleAndParse({ oneofKind: "resourceExists", resourceExists: { resourceId: rId } }, (r) => r.resourceExists.exists);
381
381
  }
382
382
  async getResourceData(rId, loadFields = true, ignoreCache = false) {
383
383
  if (!ignoreCache && !isResourceRef(rId) && !isLocalResourceId(rId)) {
@@ -398,7 +398,7 @@ let PlTransaction = (() => {
398
398
  }
399
399
  }
400
400
  const result = await this.sendSingleAndParse({
401
- oneofKind: 'resourceGet',
401
+ oneofKind: "resourceGet",
402
402
  resourceGet: { resourceId: toResourceId(rId), loadFields: loadFields },
403
403
  }, (r) => protoToResource(notEmpty(r.resourceGet.resource)));
404
404
  this._stat.rGetDataNetRequests++;
@@ -454,7 +454,7 @@ let PlTransaction = (() => {
454
454
  lockInputs(rId) {
455
455
  this._stat.inputsLocked++;
456
456
  this.sendVoidAsync({
457
- oneofKind: 'resourceLockInputs',
457
+ oneofKind: "resourceLockInputs",
458
458
  resourceLockInputs: { resourceId: toResourceId(rId) },
459
459
  });
460
460
  }
@@ -465,7 +465,7 @@ let PlTransaction = (() => {
465
465
  lockOutputs(rId) {
466
466
  this._stat.outputsLocked++;
467
467
  this.sendVoidAsync({
468
- oneofKind: 'resourceLockOutputs',
468
+ oneofKind: "resourceLockOutputs",
469
469
  resourceLockOutputs: { resourceId: toResourceId(rId) },
470
470
  });
471
471
  }
@@ -475,7 +475,7 @@ let PlTransaction = (() => {
475
475
  }
476
476
  setResourceError(rId, ref) {
477
477
  this.sendVoidAsync({
478
- oneofKind: 'resourceSetError',
478
+ oneofKind: "resourceSetError",
479
479
  resourceSetError: { resourceId: toResourceId(rId), errorResourceId: toResourceId(ref) },
480
480
  });
481
481
  }
@@ -485,7 +485,7 @@ let PlTransaction = (() => {
485
485
  createField(fId, fieldType, value) {
486
486
  this._stat.fieldsCreated++;
487
487
  this.sendVoidAsync({
488
- oneofKind: 'fieldCreate',
488
+ oneofKind: "fieldCreate",
489
489
  fieldCreate: { type: fieldTypeToProto(fieldType), id: toFieldId(fId) },
490
490
  });
491
491
  if (value !== undefined)
@@ -493,7 +493,7 @@ let PlTransaction = (() => {
493
493
  }
494
494
  fieldExists(fId) {
495
495
  return this.sendSingleAndParse({
496
- oneofKind: 'fieldExists',
496
+ oneofKind: "fieldExists",
497
497
  fieldExists: { field: toFieldId(fId) },
498
498
  }, (r) => r.fieldExists.exists);
499
499
  }
@@ -501,18 +501,18 @@ let PlTransaction = (() => {
501
501
  this._stat.fieldsSet++;
502
502
  if (isResource(ref))
503
503
  this.sendVoidAsync({
504
- oneofKind: 'fieldSet',
504
+ oneofKind: "fieldSet",
505
505
  fieldSet: {
506
506
  field: toFieldId(fId),
507
507
  value: {
508
508
  resourceId: toResourceId(ref),
509
- fieldName: '', // default value, read as undefined
509
+ fieldName: "", // default value, read as undefined
510
510
  },
511
511
  },
512
512
  });
513
513
  else
514
514
  this.sendVoidAsync({
515
- oneofKind: 'fieldSet',
515
+ oneofKind: "fieldSet",
516
516
  fieldSet: {
517
517
  field: toFieldId(fId),
518
518
  value: toFieldId(ref),
@@ -522,30 +522,30 @@ let PlTransaction = (() => {
522
522
  setFieldError(fId, ref) {
523
523
  this._stat.fieldsSet++;
524
524
  this.sendVoidAsync({
525
- oneofKind: 'fieldSetError',
525
+ oneofKind: "fieldSetError",
526
526
  fieldSetError: { field: toFieldId(fId), errResourceId: toResourceId(ref) },
527
527
  });
528
528
  }
529
529
  getField(fId) {
530
530
  this._stat.fieldsGet++;
531
- return this.sendSingleAndParse({ oneofKind: 'fieldGet', fieldGet: { field: toFieldId(fId) } }, (r) => protoToField(notEmpty(r.fieldGet.field)));
531
+ return this.sendSingleAndParse({ oneofKind: "fieldGet", fieldGet: { field: toFieldId(fId) } }, (r) => protoToField(notEmpty(r.fieldGet.field)));
532
532
  }
533
533
  async getFieldIfExists(fId) {
534
534
  return notFoundToUndefined(async () => await this.getField(fId));
535
535
  }
536
536
  resetField(fId) {
537
- this.sendVoidAsync({ oneofKind: 'fieldReset', fieldReset: { field: toFieldId(fId) } });
537
+ this.sendVoidAsync({ oneofKind: "fieldReset", fieldReset: { field: toFieldId(fId) } });
538
538
  }
539
539
  removeField(fId) {
540
- this.sendVoidAsync({ oneofKind: 'fieldRemove', fieldRemove: { field: toFieldId(fId) } });
540
+ this.sendVoidAsync({ oneofKind: "fieldRemove", fieldRemove: { field: toFieldId(fId) } });
541
541
  }
542
542
  //
543
543
  // KV
544
544
  //
545
545
  async listKeyValues(rId) {
546
546
  const result = await this.sendMultiAndParse({
547
- oneofKind: 'resourceKeyValueList',
548
- resourceKeyValueList: { resourceId: toResourceId(rId), startFrom: '', limit: 0 },
547
+ oneofKind: "resourceKeyValueList",
548
+ resourceKeyValueList: { resourceId: toResourceId(rId), startFrom: "", limit: 0 },
549
549
  }, (r) => r.map((e) => e.resourceKeyValueList.record));
550
550
  this._stat.kvListRequests++;
551
551
  this._stat.kvListEntries += result.length;
@@ -569,7 +569,7 @@ let PlTransaction = (() => {
569
569
  this._stat.kvSetRequests++;
570
570
  this._stat.kvSetBytes++;
571
571
  this.sendVoidAsync({
572
- oneofKind: 'resourceKeyValueSet',
572
+ oneofKind: "resourceKeyValueSet",
573
573
  resourceKeyValueSet: {
574
574
  resourceId: toResourceId(rId),
575
575
  key,
@@ -579,7 +579,7 @@ let PlTransaction = (() => {
579
579
  }
580
580
  deleteKValue(rId, key) {
581
581
  this.sendVoidAsync({
582
- oneofKind: 'resourceKeyValueDelete',
582
+ oneofKind: "resourceKeyValueDelete",
583
583
  resourceKeyValueDelete: {
584
584
  resourceId: toResourceId(rId),
585
585
  key,
@@ -588,7 +588,7 @@ let PlTransaction = (() => {
588
588
  }
589
589
  async getKValue(rId, key) {
590
590
  const result = await this.sendSingleAndParse({
591
- oneofKind: 'resourceKeyValueGet',
591
+ oneofKind: "resourceKeyValueGet",
592
592
  resourceKeyValueGet: { resourceId: toResourceId(rId), key },
593
593
  }, (r) => r.resourceKeyValueGet.value);
594
594
  this._stat.kvGetRequests++;
@@ -603,7 +603,7 @@ let PlTransaction = (() => {
603
603
  }
604
604
  async getKValueIfExists(rId, key) {
605
605
  const result = await this.sendSingleAndParse({
606
- oneofKind: 'resourceKeyValueGetIfExists',
606
+ oneofKind: "resourceKeyValueGetIfExists",
607
607
  resourceKeyValueGetIfExists: { resourceId: toResourceId(rId), key },
608
608
  }, (r) => r.resourceKeyValueGetIfExists.exists ? r.resourceKeyValueGetIfExists.value : undefined);
609
609
  this._stat.kvGetRequests++;
@@ -630,9 +630,9 @@ let PlTransaction = (() => {
630
630
  /** Resolves existing or create first level resource from */
631
631
  getFutureFieldValue(rId, fieldName, fieldType) {
632
632
  const data = Buffer.from(JSON.stringify({ fieldName, fieldType }));
633
- const getFieldResource = this.createEphemeral({ name: 'json/getField', version: '1' }, data);
634
- this.setField({ resourceId: getFieldResource, fieldName: 'resource' }, rId);
635
- return { resourceId: getFieldResource, fieldName: 'result' };
633
+ const getFieldResource = this.createEphemeral({ name: "json/getField", version: "1" }, data);
634
+ this.setField({ resourceId: getFieldResource, fieldName: "resource" }, rId);
635
+ return { resourceId: getFieldResource, fieldName: "result" };
636
636
  }
637
637
  //
638
638
  // Technical
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.js","sources":["../../src/core/transaction.ts"],"sourcesContent":["// TODO: fix this\n/* eslint-disable no-prototype-builtins */\nimport type {\n AnyResourceId,\n LocalResourceId,\n OptionalResourceId,\n BasicResourceData,\n FieldData,\n FieldType,\n ResourceData,\n ResourceId,\n ResourceType,\n FutureFieldType } from './types';\nimport {\n createLocalResourceId,\n ensureResourceIdNotNull,\n MaxTxId,\n isLocalResourceId,\n extractBasicResourceData,\n isNullResourceId,\n} from './types';\nimport type {\n ClientMessageRequest,\n LLPlTransaction,\n OneOfKind,\n ServerMessageResponse,\n} from './ll_transaction';\nimport { TxAPI_Open_Request_WritableTx } from '../proto-grpc/github.com/milaboratory/pl/plapi/plapiproto/api';\nimport type { NonUndefined } from 'utility-types';\nimport { toBytes } from '../util/util';\nimport { fieldTypeToProto, protoToField, protoToResource } from './type_conversion';\nimport { canonicalJsonBytes, canonicalJsonGzBytes, deepFreeze, notEmpty } from '@milaboratories/ts-helpers';\nimport { isNotFoundError } from './errors';\nimport type { FinalResourceDataPredicate } from './final';\nimport type { LRUCache } from 'lru-cache';\nimport type { ResourceDataCacheRecord } from './cache';\nimport type { TxStat } from './stat';\nimport { initialTxStatWithoutTime } from './stat';\nimport type { ErrorResourceData } from './error_resource';\nimport { ErrorResourceType } from './error_resource';\nimport { JsonGzObject, JsonObject } from '../helpers/pl';\nimport { PromiseTracker } from './PromiseTracker';\n\n/** Reference to resource, used only within transaction */\nexport interface ResourceRef {\n /** Global resource id of newly created resources, become available only\n * after response for the corresponding creation request is received. */\n readonly globalId: Promise<ResourceId>;\n\n /** Transaction-local resource id is assigned right after resource creation\n * request is sent, and can be used right away */\n readonly localId: LocalResourceId;\n}\n\n/** Key-Value pair from resource-attached KV storage */\nexport interface KeyValue {\n key: string;\n value: Uint8Array;\n}\n\n/** Key-Value pair from resource-attached KV storage */\nexport interface KeyValueString {\n key: string;\n value: string;\n}\n\ninterface _FieldId<RId> {\n /** Parent resource id */\n resourceId: RId;\n /** Field name */\n fieldName: string;\n}\n\nexport type FieldId = _FieldId<ResourceId>;\nexport type FieldRef = _FieldId<ResourceRef>;\nexport type LocalFieldId = _FieldId<LocalResourceId>;\nexport type AnyFieldId = FieldId | LocalFieldId;\n\nexport type AnyResourceRef = ResourceRef | ResourceId;\nexport type AnyFieldRef = _FieldId<AnyResourceRef>; // FieldRef | FieldId\nexport type AnyRef = AnyResourceRef | AnyFieldRef;\n\nexport function isField(ref: AnyRef): ref is AnyFieldRef {\n return ref.hasOwnProperty('resourceId') && ref.hasOwnProperty('fieldName');\n}\n\nexport function isResource(ref: AnyRef): ref is AnyResourceRef {\n return (\n typeof ref === 'bigint' || (ref.hasOwnProperty('globalId') && ref.hasOwnProperty('localId'))\n );\n}\n\nexport function isResourceId(ref: AnyRef): ref is ResourceId {\n return typeof ref === 'bigint' && !isLocalResourceId(ref) && !isNullResourceId(ref);\n}\n\nexport function isFieldRef(ref: AnyFieldRef): ref is FieldRef {\n return isResourceRef(ref.resourceId);\n}\n\nexport function isResourceRef(ref: AnyResourceRef): ref is ResourceRef {\n return ref.hasOwnProperty('globalId') && ref.hasOwnProperty('localId');\n}\n\nexport function toFieldId(ref: AnyFieldRef): AnyFieldId {\n if (isFieldRef(ref)) return { resourceId: ref.resourceId.localId, fieldName: ref.fieldName };\n else return ref as FieldId;\n}\n\nexport async function toGlobalFieldId(ref: AnyFieldRef): Promise<FieldId> {\n if (isFieldRef(ref))\n return { resourceId: await ref.resourceId.globalId, fieldName: ref.fieldName };\n else return ref as FieldId;\n}\n\nexport function toResourceId(ref: AnyResourceRef): AnyResourceId {\n if (isResourceRef(ref)) return ref.localId;\n else return ref;\n}\n\nexport async function toGlobalResourceId(ref: AnyResourceRef): Promise<ResourceId> {\n if (isResourceRef(ref)) return await ref.globalId;\n else return ref;\n}\n\nexport function field(resourceId: AnyResourceRef, fieldName: string): AnyFieldRef {\n return { resourceId, fieldName };\n}\n\n/** If transaction commit failed due to write conflicts */\nexport class TxCommitConflict extends Error {\n name = 'TxCommitConflict';\n}\n\nasync function notFoundToUndefined<T>(cb: () => Promise<T>): Promise<T | undefined> {\n try {\n return await cb();\n } catch (e) {\n if (isNotFoundError(e)) return undefined;\n throw e;\n }\n}\n\n/**\n * Decorator that wraps the method's returned promise with this.track()\n * This ensures that the promise will be awaited before the transaction is completed.\n */\nfunction tracked<T extends (this: PlTransaction, ...a: any[]) => Promise<any>>(\n value: T,\n _context: ClassMethodDecoratorContext,\n) {\n return function (\n this: PlTransaction,\n ...args: Parameters<T>\n ): ReturnType<T> {\n return this.track(value.apply(this, args)) as ReturnType<T>;\n } as unknown as T;\n}\n\n/**\n * Each platform transaction has 3 stages:\n * - initialization (txOpen message -> txInfo response)\n * - communication (create resources, fields, references and so on)\n * - finalization (txCommit or txDiscard message)\n *\n * This class encapsulates finalization stage and provides ready-to-communication transaction object.\n * */\nexport class PlTransaction {\n private readonly globalTxId: Promise<bigint>;\n private readonly localTxId: number = PlTransaction.nextLocalTxId();\n\n /** Used in caching */\n private readonly txOpenTimestamp = Date.now();\n\n private localResourceIdCounter = 0;\n\n /** Store logical tx open / closed state to prevent invalid sequence of requests.\n * True means output stream was completed.\n * Contract: there must be no async operations between setting this field to true and sending complete signal to stream. */\n private _completed = false;\n\n private globalTxIdWasAwaited: boolean = false;\n\n public readonly pending = new PromiseTracker();\n\n private readonly _startTime = Date.now();\n private readonly _stat = initialTxStatWithoutTime();\n public get stat(): TxStat {\n return {\n ...this._stat,\n timeMs: Date.now() - this._startTime,\n };\n }\n\n constructor(\n private readonly ll: LLPlTransaction,\n public readonly name: string,\n public readonly writable: boolean,\n private readonly _clientRoot: OptionalResourceId,\n private readonly finalPredicate: FinalResourceDataPredicate,\n private readonly sharedResourceDataCache: LRUCache<ResourceId, ResourceDataCacheRecord>,\n private readonly enableFormattedErrors: boolean = false,\n ) {\n // initiating transaction\n this.globalTxId = this.sendSingleAndParse(\n {\n oneofKind: 'txOpen',\n txOpen: {\n name,\n enableFormattedErrors,\n writable: writable\n ? TxAPI_Open_Request_WritableTx.WRITABLE\n : TxAPI_Open_Request_WritableTx.NOT_WRITABLE,\n },\n },\n (r) => notEmpty(r.txOpen.tx?.id),\n );\n\n void this.track(this.globalTxId);\n\n // To avoid floating promise\n this.globalTxId.catch((err) => {\n if (!this.globalTxIdWasAwaited) {\n console.warn(err);\n }\n });\n\n // Adding stats\n this._stat.txCount++;\n }\n\n /**\n * Collect all pending promises for the transaction finalization.\n */\n public track<T>(promiseOrCallback: Promise<T> | (() => Promise<T>)): Promise<T> {\n return this.pending.track(promiseOrCallback);\n }\n\n private async drainAndAwaitPendingOps(): Promise<void> {\n // awaiting these pending operations first, to catch any errors\n await this.pending.awaitAll();\n }\n\n private sendSingleAndParse<Kind extends NonUndefined<ClientMessageRequest['oneofKind']>, T>(\n r: OneOfKind<ClientMessageRequest, Kind>,\n parser: (resp: OneOfKind<ServerMessageResponse, Kind>) => T,\n ): Promise<T> {\n return this.pending.track(async () => {\n const rawResponsePromise = this.ll.send(r, false);\n\n void this.pending.track(rawResponsePromise);\n\n await this.drainAndAwaitPendingOps();\n\n // awaiting our result, and parsing the response\n return parser(await rawResponsePromise);\n });\n }\n\n private sendMultiAndParse<Kind extends NonUndefined<ClientMessageRequest['oneofKind']>, T>(\n r: OneOfKind<ClientMessageRequest, Kind>,\n parser: (resp: OneOfKind<ServerMessageResponse, Kind>[]) => T,\n ): Promise<T> {\n return this.pending.track(async () => {\n const rawResponsePromise = this.ll.send(r, true);\n\n void this.pending.track(rawResponsePromise);\n\n await this.drainAndAwaitPendingOps();\n\n // awaiting our result, and parsing the response\n return parser(await rawResponsePromise);\n });\n }\n\n private async sendVoidSync<Kind extends NonUndefined<ClientMessageRequest['oneofKind']>>(\n r: OneOfKind<ClientMessageRequest, Kind>,\n ): Promise<void> {\n await this.ll.send(r, false);\n }\n\n /** Requests sent with this method should never produce recoverable errors */\n private sendVoidAsync<Kind extends NonUndefined<ClientMessageRequest['oneofKind']>>(\n r: OneOfKind<ClientMessageRequest, Kind>,\n ): void {\n void this.track(this.sendVoidSync(r));\n }\n\n private checkTxOpen() {\n if (this._completed) throw new Error('Transaction already closed');\n }\n\n public get completed() {\n return this._completed;\n }\n\n /** Commit & closes transaction. {@link TxCommitConflict} is thrown on\n * commit conflicts. */\n public async commit() {\n this.checkTxOpen();\n\n // tx will accept no requests after this one\n this._completed = true;\n\n if (!this.writable) {\n // no need to explicitly commit or reject read-only tx\n const completeResult = this.track(this.ll.complete());\n await this.drainAndAwaitPendingOps();\n await completeResult;\n await this.ll.await();\n } else {\n const commitResponse = this.track(this.sendSingleAndParse(\n { oneofKind: 'txCommit', txCommit: {} },\n (r) => r.txCommit.success,\n ));\n\n // send closing frame right after commit to save some time on round-trips\n const completeResult = this.track(this.ll.complete());\n\n // now when we pushed all packets into the stream, we should wait for any\n // pending void operations from before, to catch any errors\n await this.drainAndAwaitPendingOps();\n\n if (!(await commitResponse)) throw new TxCommitConflict();\n\n await completeResult;\n\n // await event-loop completion\n await this.ll.await();\n }\n }\n\n public async discard() {\n this.checkTxOpen();\n\n // tx will accept no requests after this one\n this._completed = true;\n\n const discardResponse = this.sendVoidSync({ oneofKind: 'txDiscard', txDiscard: {} });\n void this.track(discardResponse);\n // send closing frame right after commit to save some time on round-trips\n const completeResult = this.track(this.ll.complete());\n\n // now when we pushed all packets into the stream, we should wait for any\n // pending void operations from before, to catch any errors\n await this.drainAndAwaitPendingOps();\n\n await discardResponse;\n await completeResult;\n await this.ll.await();\n }\n\n //\n // Main tx methods\n //\n\n public get clientRoot(): ResourceId {\n return ensureResourceIdNotNull(this._clientRoot);\n }\n\n //\n // Resources\n //\n\n public createSingleton(\n name: string,\n type: ResourceType,\n errorIfExists: boolean = false,\n ): ResourceRef {\n const localId = this.nextLocalResourceId(false);\n\n const globalId = this.sendSingleAndParse(\n {\n oneofKind: 'resourceCreateSingleton',\n resourceCreateSingleton: {\n type,\n id: localId,\n data: Buffer.from(name),\n errorIfExists,\n },\n },\n (r) => r.resourceCreateSingleton.resourceId as ResourceId,\n );\n\n void this.track(globalId);\n\n return { globalId, localId };\n }\n\n public getSingleton(name: string, loadFields: true): Promise<ResourceData>;\n public getSingleton(name: string, loadFields: false): Promise<BasicResourceData>;\n public getSingleton(\n name: string,\n loadFields: boolean = true,\n ): Promise<BasicResourceData | ResourceData> {\n return this.sendSingleAndParse(\n {\n oneofKind: 'resourceGetSingleton',\n resourceGetSingleton: {\n data: Buffer.from(name),\n loadFields,\n },\n },\n (r) => protoToResource(notEmpty(r.resourceGetSingleton.resource)),\n );\n }\n\n private createResource<Kind extends NonUndefined<ClientMessageRequest['oneofKind']>>(\n root: boolean,\n req: (localId: LocalResourceId) => OneOfKind<ClientMessageRequest, Kind>,\n parser: (resp: OneOfKind<ServerMessageResponse, Kind>) => bigint,\n ): ResourceRef {\n const localId = this.nextLocalResourceId(root);\n\n const globalId = this.sendSingleAndParse(req(localId), (r) => parser(r) as ResourceId);\n\n void this.track(globalId);\n\n return { globalId, localId };\n }\n\n public createRoot(type: ResourceType): ResourceRef {\n this._stat.rootsCreated++;\n return this.createResource(\n true,\n (localId) => ({ oneofKind: 'resourceCreateRoot', resourceCreateRoot: { type, id: localId } }),\n (r) => r.resourceCreateRoot.resourceId,\n );\n }\n\n public createStruct(type: ResourceType, data?: Uint8Array | string): ResourceRef {\n this._stat.structsCreated++;\n this._stat.structsCreatedDataBytes += data?.length ?? 0;\n return this.createResource(\n false,\n (localId) => ({\n oneofKind: 'resourceCreateStruct',\n resourceCreateStruct: {\n type,\n id: localId,\n data: data === undefined ? undefined : typeof data === 'string' ? Buffer.from(data) : data,\n },\n }),\n (r) => r.resourceCreateStruct.resourceId,\n );\n }\n\n public createEphemeral(type: ResourceType, data?: Uint8Array | string): ResourceRef {\n this._stat.ephemeralsCreated++;\n this._stat.ephemeralsCreatedDataBytes += data?.length ?? 0;\n return this.createResource(\n false,\n (localId) => ({\n oneofKind: 'resourceCreateEphemeral',\n resourceCreateEphemeral: {\n type,\n id: localId,\n data: data === undefined ? undefined : typeof data === 'string' ? Buffer.from(data) : data,\n },\n }),\n (r) => r.resourceCreateEphemeral.resourceId,\n );\n }\n\n public createValue(\n type: ResourceType,\n data: Uint8Array | string,\n errorIfExists: boolean = false,\n ): ResourceRef {\n this._stat.valuesCreated++;\n this._stat.valuesCreatedDataBytes += data?.length ?? 0;\n return this.createResource(\n false,\n (localId) => ({\n oneofKind: 'resourceCreateValue',\n resourceCreateValue: {\n type,\n id: localId,\n data: typeof data === 'string' ? Buffer.from(data) : data,\n errorIfExists,\n },\n }),\n (r) => r.resourceCreateValue.resourceId,\n );\n }\n\n public createJsonValue(data: unknown): ResourceRef {\n const jsonData = canonicalJsonBytes(data);\n return this.createValue(JsonObject, jsonData, false);\n }\n\n public createJsonGzValue(data: unknown, minSizeToGzip: number | undefined = 16_384): ResourceRef {\n const { data: jsonData, isGzipped } = canonicalJsonGzBytes(data, minSizeToGzip);\n return this.createValue(isGzipped ? JsonGzObject : JsonObject, jsonData, false);\n }\n\n public createError(message: string): ResourceRef {\n return this.createValue(ErrorResourceType, JSON.stringify({ message } satisfies ErrorResourceData));\n }\n\n public setResourceName(name: string, rId: AnyResourceRef): void {\n this.sendVoidAsync({\n oneofKind: 'resourceNameSet',\n resourceNameSet: { resourceId: toResourceId(rId), name },\n });\n }\n\n public deleteResourceName(name: string): void {\n this.sendVoidAsync({ oneofKind: 'resourceNameDelete', resourceNameDelete: { name } });\n }\n\n public getResourceByName(name: string): Promise<ResourceId> {\n return this.sendSingleAndParse(\n { oneofKind: 'resourceNameGet', resourceNameGet: { name } },\n (r) => ensureResourceIdNotNull(r.resourceNameGet.resourceId as OptionalResourceId),\n );\n }\n\n public checkResourceNameExists(name: string): Promise<boolean> {\n return this.sendSingleAndParse(\n { oneofKind: 'resourceNameExists', resourceNameExists: { name } },\n (r) => r.resourceNameExists.exists,\n );\n }\n\n public removeResource(rId: ResourceId): void {\n this.sendVoidAsync({ oneofKind: 'resourceRemove', resourceRemove: { id: rId } });\n }\n\n public resourceExists(rId: ResourceId): Promise<boolean> {\n return this.sendSingleAndParse(\n { oneofKind: 'resourceExists', resourceExists: { resourceId: rId } },\n (r) => r.resourceExists.exists,\n );\n }\n\n /** This method may return stale resource state from cache if resource was removed */\n public async getResourceData(rId: AnyResourceRef, loadFields: true): Promise<ResourceData>;\n /** This method may return stale resource state from cache if resource was removed */\n public async getResourceData(rId: AnyResourceRef, loadFields: false): Promise<BasicResourceData>;\n /** This method may return stale resource state from cache if resource was removed */\n public async getResourceData(\n rId: AnyResourceRef,\n loadFields: boolean\n ): Promise<BasicResourceData | ResourceData>;\n /** This method may return stale resource state from cache if ignoreCache == false if resource was removed */\n public async getResourceData(\n rId: AnyResourceRef,\n loadFields: true,\n ignoreCache: boolean\n ): Promise<ResourceData>;\n /** This method may return stale resource state from cache if ignoreCache == false if resource was removed */\n public async getResourceData(\n rId: AnyResourceRef,\n loadFields: false,\n ignoreCache: boolean\n ): Promise<BasicResourceData>;\n /** This method may return stale resource state from cache if ignoreCache == false if resource was removed */\n public async getResourceData(\n rId: AnyResourceRef,\n loadFields: boolean,\n ignoreCache: boolean\n ): Promise<BasicResourceData | ResourceData>;\n @tracked\n public async getResourceData(\n rId: AnyResourceRef,\n loadFields: boolean = true,\n ignoreCache: boolean = false,\n ): Promise<BasicResourceData | ResourceData> {\n if (!ignoreCache && !isResourceRef(rId) && !isLocalResourceId(rId)) {\n // checking if we can return result from cache\n const fromCache = this.sharedResourceDataCache.get(rId);\n if (fromCache && fromCache.cacheTxOpenTimestamp < this.txOpenTimestamp) {\n if (!loadFields) {\n this._stat.rGetDataCacheHits++;\n this._stat.rGetDataCacheBytes += fromCache.basicData.data?.length ?? 0;\n return fromCache.basicData;\n } else if (fromCache.data) {\n this._stat.rGetDataCacheHits++;\n this._stat.rGetDataCacheBytes += fromCache.basicData.data?.length ?? 0;\n this._stat.rGetDataCacheFields += fromCache.data.fields.length;\n return fromCache.data;\n }\n }\n }\n\n const result = await this.sendSingleAndParse(\n {\n oneofKind: 'resourceGet',\n resourceGet: { resourceId: toResourceId(rId), loadFields: loadFields },\n },\n (r) => protoToResource(notEmpty(r.resourceGet.resource)),\n );\n\n this._stat.rGetDataNetRequests++;\n this._stat.rGetDataNetBytes += result.data?.length ?? 0;\n this._stat.rGetDataNetFields += result.fields.length;\n\n // we will cache only final resource data states\n // caching result even if we were ignore the cache\n if (!isResourceRef(rId) && !isLocalResourceId(rId) && this.finalPredicate(result)) {\n deepFreeze(result);\n const fromCache = this.sharedResourceDataCache.get(rId);\n if (fromCache) {\n if (loadFields && !fromCache.data) {\n fromCache.data = result;\n // updating timestamp because we updated the record\n fromCache.cacheTxOpenTimestamp = this.txOpenTimestamp;\n }\n } else {\n const basicData = extractBasicResourceData(result);\n deepFreeze(basicData);\n if (loadFields)\n this.sharedResourceDataCache.set(rId, {\n basicData,\n data: result,\n cacheTxOpenTimestamp: this.txOpenTimestamp,\n });\n else\n this.sharedResourceDataCache.set(rId, {\n basicData,\n data: undefined,\n cacheTxOpenTimestamp: this.txOpenTimestamp,\n });\n }\n }\n\n return result;\n }\n\n public async getResourceDataIfExists(\n rId: AnyResourceRef,\n loadFields: true\n ): Promise<ResourceData | undefined>;\n public async getResourceDataIfExists(\n rId: AnyResourceRef,\n loadFields: false\n ): Promise<BasicResourceData | undefined>;\n public async getResourceDataIfExists(\n rId: AnyResourceRef,\n loadFields: boolean\n ): Promise<BasicResourceData | ResourceData | undefined>;\n @tracked\n public async getResourceDataIfExists(\n rId: AnyResourceRef,\n loadFields: boolean = true,\n ): Promise<BasicResourceData | ResourceData | undefined> {\n // calling this method will ignore cache, because user intention is to detect resource absence\n // which cache will prevent\n const result = await notFoundToUndefined(\n async () => await this.getResourceData(rId, loadFields, true),\n );\n\n // cleaning cache record if resource was removed from the db\n if (result === undefined && !isResourceRef(rId) && !isLocalResourceId(rId))\n this.sharedResourceDataCache.delete(rId);\n\n return result;\n }\n\n /**\n * Inform platform that resource will not get any new input fields.\n * This is required, when client creates resource without schema and wants\n * controller to start calculations.\n * Most controllers will not start calculations even when all inputs\n * have their values, if inputs list is not locked.\n */\n public lockInputs(rId: AnyResourceRef): void {\n this._stat.inputsLocked++;\n this.sendVoidAsync({\n oneofKind: 'resourceLockInputs',\n resourceLockInputs: { resourceId: toResourceId(rId) },\n });\n }\n\n /**\n * Inform platform that resource will not get any new output fields.\n * This is required for resource to pass deduplication.\n */\n public lockOutputs(rId: AnyResourceRef): void {\n this._stat.outputsLocked++;\n this.sendVoidAsync({\n oneofKind: 'resourceLockOutputs',\n resourceLockOutputs: { resourceId: toResourceId(rId) },\n });\n }\n\n public lock(rID: AnyResourceRef): void {\n this.lockInputs(rID);\n this.lockOutputs(rID);\n }\n\n public setResourceError(rId: AnyResourceRef, ref: AnyResourceRef): void {\n this.sendVoidAsync({\n oneofKind: 'resourceSetError',\n resourceSetError: { resourceId: toResourceId(rId), errorResourceId: toResourceId(ref) },\n });\n }\n\n //\n // Fields\n //\n\n public createField(fId: AnyFieldRef, fieldType: FieldType, value?: AnyRef): void {\n this._stat.fieldsCreated++;\n this.sendVoidAsync({\n oneofKind: 'fieldCreate',\n fieldCreate: { type: fieldTypeToProto(fieldType), id: toFieldId(fId) },\n });\n if (value !== undefined) this.setField(fId, value);\n }\n\n public fieldExists(fId: AnyFieldRef): Promise<boolean> {\n return this.sendSingleAndParse(\n {\n oneofKind: 'fieldExists',\n fieldExists: { field: toFieldId(fId) },\n },\n (r) => r.fieldExists.exists,\n );\n }\n\n public setField(fId: AnyFieldRef, ref: AnyRef): void {\n this._stat.fieldsSet++;\n if (isResource(ref))\n this.sendVoidAsync({\n oneofKind: 'fieldSet',\n fieldSet: {\n field: toFieldId(fId),\n value: {\n resourceId: toResourceId(ref),\n fieldName: '', // default value, read as undefined\n },\n },\n });\n else\n this.sendVoidAsync({\n oneofKind: 'fieldSet',\n fieldSet: {\n field: toFieldId(fId),\n value: toFieldId(ref),\n },\n });\n }\n\n public setFieldError(fId: AnyFieldRef, ref: AnyResourceRef): void {\n this._stat.fieldsSet++;\n this.sendVoidAsync({\n oneofKind: 'fieldSetError',\n fieldSetError: { field: toFieldId(fId), errResourceId: toResourceId(ref) },\n });\n }\n\n public getField(fId: AnyFieldRef): Promise<FieldData> {\n this._stat.fieldsGet++;\n return this.sendSingleAndParse(\n { oneofKind: 'fieldGet', fieldGet: { field: toFieldId(fId) } },\n (r) => protoToField(notEmpty(r.fieldGet.field)),\n );\n }\n\n @tracked\n public async getFieldIfExists(fId: AnyFieldRef): Promise<FieldData | undefined> {\n return notFoundToUndefined(async () => await this.getField(fId));\n }\n\n public resetField(fId: AnyFieldRef): void {\n this.sendVoidAsync({ oneofKind: 'fieldReset', fieldReset: { field: toFieldId(fId) } });\n }\n\n public removeField(fId: AnyFieldRef): void {\n this.sendVoidAsync({ oneofKind: 'fieldRemove', fieldRemove: { field: toFieldId(fId) } });\n }\n\n //\n // KV\n //\n\n @tracked\n public async listKeyValues(rId: AnyResourceRef): Promise<KeyValue[]> {\n const result = await this.sendMultiAndParse(\n {\n oneofKind: 'resourceKeyValueList',\n resourceKeyValueList: { resourceId: toResourceId(rId), startFrom: '', limit: 0 },\n },\n (r) => r.map((e) => e.resourceKeyValueList.record!),\n );\n\n this._stat.kvListRequests++;\n this._stat.kvListEntries += result.length;\n for (const kv of result) this._stat.kvListBytes += kv.key.length + kv.value.length;\n\n return result;\n }\n\n @tracked\n public async listKeyValuesString(rId: AnyResourceRef): Promise<KeyValueString[]> {\n return (await this.listKeyValues(rId)).map(({ key, value }) => ({\n key,\n value: Buffer.from(value).toString(),\n }));\n }\n\n @tracked\n public async listKeyValuesIfResourceExists(rId: AnyResourceRef): Promise<KeyValue[] | undefined> {\n return notFoundToUndefined(async () => await this.listKeyValues(rId));\n }\n\n @tracked\n public async listKeyValuesStringIfResourceExists(\n rId: AnyResourceRef,\n ): Promise<KeyValueString[] | undefined> {\n return notFoundToUndefined(async () => await this.listKeyValuesString(rId));\n }\n\n public setKValue(rId: AnyResourceRef, key: string, value: Uint8Array | string): void {\n this._stat.kvSetRequests++;\n this._stat.kvSetBytes++;\n this.sendVoidAsync({\n oneofKind: 'resourceKeyValueSet',\n resourceKeyValueSet: {\n resourceId: toResourceId(rId),\n key,\n value: toBytes(value),\n },\n });\n }\n\n public deleteKValue(rId: AnyResourceRef, key: string): void {\n this.sendVoidAsync({\n oneofKind: 'resourceKeyValueDelete',\n resourceKeyValueDelete: {\n resourceId: toResourceId(rId),\n key,\n },\n });\n }\n\n @tracked\n public async getKValue(rId: AnyResourceRef, key: string): Promise<Uint8Array> {\n const result = await this.sendSingleAndParse(\n {\n oneofKind: 'resourceKeyValueGet',\n resourceKeyValueGet: { resourceId: toResourceId(rId), key },\n },\n (r) => r.resourceKeyValueGet.value,\n );\n\n this._stat.kvGetRequests++;\n this._stat.kvGetBytes += result.length;\n\n return result;\n }\n\n @tracked\n public async getKValueString(rId: AnyResourceRef, key: string): Promise<string> {\n return Buffer.from(await this.getKValue(rId, key)).toString();\n }\n\n @tracked\n public async getKValueJson<T>(rId: AnyResourceRef, key: string): Promise<T> {\n return JSON.parse(await this.getKValueString(rId, key)) as T;\n }\n\n @tracked\n public async getKValueIfExists(\n rId: AnyResourceRef,\n key: string,\n ): Promise<Uint8Array | undefined> {\n const result = await this.sendSingleAndParse(\n {\n oneofKind: 'resourceKeyValueGetIfExists',\n resourceKeyValueGetIfExists: { resourceId: toResourceId(rId), key },\n },\n (r) =>\n r.resourceKeyValueGetIfExists.exists ? r.resourceKeyValueGetIfExists.value : undefined,\n );\n\n this._stat.kvGetRequests++;\n this._stat.kvGetBytes += result?.length ?? 0;\n\n return result;\n }\n\n @tracked\n public async getKValueStringIfExists(\n rId: AnyResourceRef,\n key: string,\n ): Promise<string | undefined> {\n const data = await this.getKValueIfExists(rId, key);\n return data === undefined ? undefined : Buffer.from(data).toString();\n }\n\n @tracked\n public async getKValueJsonIfExists<T>(rId: AnyResourceRef, key: string): Promise<T | undefined> {\n const str = await this.getKValueString(rId, key);\n if (str === undefined) return undefined;\n return JSON.parse(str) as T;\n }\n\n //\n // Cache\n //\n // TODO\n\n //\n // High level ops\n //\n\n /** Resolves existing or create first level resource from */\n public getFutureFieldValue(rId: AnyRef, fieldName: string, fieldType: FutureFieldType): FieldRef {\n const data = Buffer.from(JSON.stringify({ fieldName, fieldType }));\n const getFieldResource = this.createEphemeral({ name: 'json/getField', version: '1' }, data);\n this.setField({ resourceId: getFieldResource, fieldName: 'resource' }, rId);\n return { resourceId: getFieldResource, fieldName: 'result' };\n }\n\n //\n // Technical\n //\n\n public async getGlobalTxId() {\n this.globalTxIdWasAwaited = true;\n return await this.globalTxId;\n }\n\n /** Closes output event stream */\n public async complete() {\n if (this._completed) return;\n this._completed = true;\n const completeResult = this.track(this.ll.complete());\n await this.drainAndAwaitPendingOps();\n await completeResult;\n }\n\n /** Await incoming message loop termination and throw\n * any leftover errors if it was unsuccessful */\n public async await() {\n await this.ll.await();\n }\n\n //\n // Helpers\n //\n\n private nextLocalResourceId(root: boolean): LocalResourceId {\n return createLocalResourceId(root, ++this.localResourceIdCounter, this.localTxId);\n }\n\n private static localTxIdCounter = 0;\n\n private static nextLocalTxId() {\n PlTransaction.localTxIdCounter++;\n if (PlTransaction.localTxIdCounter === MaxTxId) PlTransaction.localTxIdCounter = 1;\n return PlTransaction.localTxIdCounter;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transaction.js","sources":["../../src/core/transaction.ts"],"sourcesContent":["// TODO: fix this\n/* eslint-disable no-prototype-builtins */\nimport type {\n AnyResourceId,\n LocalResourceId,\n OptionalResourceId,\n BasicResourceData,\n FieldData,\n FieldType,\n ResourceData,\n ResourceId,\n ResourceType,\n FutureFieldType,\n} from \"./types\";\nimport {\n createLocalResourceId,\n ensureResourceIdNotNull,\n MaxTxId,\n isLocalResourceId,\n extractBasicResourceData,\n isNullResourceId,\n} from \"./types\";\nimport type {\n ClientMessageRequest,\n LLPlTransaction,\n OneOfKind,\n ServerMessageResponse,\n} from \"./ll_transaction\";\nimport { TxAPI_Open_Request_WritableTx } from \"../proto-grpc/github.com/milaboratory/pl/plapi/plapiproto/api\";\nimport type { NonUndefined } from \"utility-types\";\nimport { toBytes } from \"../util/util\";\nimport { fieldTypeToProto, protoToField, protoToResource } from \"./type_conversion\";\nimport {\n canonicalJsonBytes,\n canonicalJsonGzBytes,\n deepFreeze,\n notEmpty,\n} from \"@milaboratories/ts-helpers\";\nimport { isNotFoundError } from \"./errors\";\nimport type { FinalResourceDataPredicate } from \"./final\";\nimport type { LRUCache } from \"lru-cache\";\nimport type { ResourceDataCacheRecord } from \"./cache\";\nimport type { TxStat } from \"./stat\";\nimport { initialTxStatWithoutTime } from \"./stat\";\nimport type { ErrorResourceData } from \"./error_resource\";\nimport { ErrorResourceType } from \"./error_resource\";\nimport { JsonGzObject, JsonObject } from \"../helpers/pl\";\nimport { PromiseTracker } from \"./PromiseTracker\";\n\n/** Reference to resource, used only within transaction */\nexport interface ResourceRef {\n /** Global resource id of newly created resources, become available only\n * after response for the corresponding creation request is received. */\n readonly globalId: Promise<ResourceId>;\n\n /** Transaction-local resource id is assigned right after resource creation\n * request is sent, and can be used right away */\n readonly localId: LocalResourceId;\n}\n\n/** Key-Value pair from resource-attached KV storage */\nexport interface KeyValue {\n key: string;\n value: Uint8Array;\n}\n\n/** Key-Value pair from resource-attached KV storage */\nexport interface KeyValueString {\n key: string;\n value: string;\n}\n\ninterface _FieldId<RId> {\n /** Parent resource id */\n resourceId: RId;\n /** Field name */\n fieldName: string;\n}\n\nexport type FieldId = _FieldId<ResourceId>;\nexport type FieldRef = _FieldId<ResourceRef>;\nexport type LocalFieldId = _FieldId<LocalResourceId>;\nexport type AnyFieldId = FieldId | LocalFieldId;\n\nexport type AnyResourceRef = ResourceRef | ResourceId;\nexport type AnyFieldRef = _FieldId<AnyResourceRef>; // FieldRef | FieldId\nexport type AnyRef = AnyResourceRef | AnyFieldRef;\n\nexport function isField(ref: AnyRef): ref is AnyFieldRef {\n return ref.hasOwnProperty(\"resourceId\") && ref.hasOwnProperty(\"fieldName\");\n}\n\nexport function isResource(ref: AnyRef): ref is AnyResourceRef {\n return (\n typeof ref === \"bigint\" || (ref.hasOwnProperty(\"globalId\") && ref.hasOwnProperty(\"localId\"))\n );\n}\n\nexport function isResourceId(ref: AnyRef): ref is ResourceId {\n return typeof ref === \"bigint\" && !isLocalResourceId(ref) && !isNullResourceId(ref);\n}\n\nexport function isFieldRef(ref: AnyFieldRef): ref is FieldRef {\n return isResourceRef(ref.resourceId);\n}\n\nexport function isResourceRef(ref: AnyResourceRef): ref is ResourceRef {\n return ref.hasOwnProperty(\"globalId\") && ref.hasOwnProperty(\"localId\");\n}\n\nexport function toFieldId(ref: AnyFieldRef): AnyFieldId {\n if (isFieldRef(ref)) return { resourceId: ref.resourceId.localId, fieldName: ref.fieldName };\n else return ref as FieldId;\n}\n\nexport async function toGlobalFieldId(ref: AnyFieldRef): Promise<FieldId> {\n if (isFieldRef(ref))\n return { resourceId: await ref.resourceId.globalId, fieldName: ref.fieldName };\n else return ref as FieldId;\n}\n\nexport function toResourceId(ref: AnyResourceRef): AnyResourceId {\n if (isResourceRef(ref)) return ref.localId;\n else return ref;\n}\n\nexport async function toGlobalResourceId(ref: AnyResourceRef): Promise<ResourceId> {\n if (isResourceRef(ref)) return await ref.globalId;\n else return ref;\n}\n\nexport function field(resourceId: AnyResourceRef, fieldName: string): AnyFieldRef {\n return { resourceId, fieldName };\n}\n\n/** If transaction commit failed due to write conflicts */\nexport class TxCommitConflict extends Error {\n name = \"TxCommitConflict\";\n}\n\nasync function notFoundToUndefined<T>(cb: () => Promise<T>): Promise<T | undefined> {\n try {\n return await cb();\n } catch (e) {\n if (isNotFoundError(e)) return undefined;\n throw e;\n }\n}\n\n/**\n * Decorator that wraps the method's returned promise with this.track()\n * This ensures that the promise will be awaited before the transaction is completed.\n */\nfunction tracked<T extends (this: PlTransaction, ...a: any[]) => Promise<any>>(\n value: T,\n _context: ClassMethodDecoratorContext,\n) {\n return function (this: PlTransaction, ...args: Parameters<T>): ReturnType<T> {\n return this.track(value.apply(this, args)) as ReturnType<T>;\n } as unknown as T;\n}\n\n/**\n * Each platform transaction has 3 stages:\n * - initialization (txOpen message -> txInfo response)\n * - communication (create resources, fields, references and so on)\n * - finalization (txCommit or txDiscard message)\n *\n * This class encapsulates finalization stage and provides ready-to-communication transaction object.\n * */\nexport class PlTransaction {\n private readonly globalTxId: Promise<bigint>;\n private readonly localTxId: number = PlTransaction.nextLocalTxId();\n\n /** Used in caching */\n private readonly txOpenTimestamp = Date.now();\n\n private localResourceIdCounter = 0;\n\n /** Store logical tx open / closed state to prevent invalid sequence of requests.\n * True means output stream was completed.\n * Contract: there must be no async operations between setting this field to true and sending complete signal to stream. */\n private _completed = false;\n\n private globalTxIdWasAwaited: boolean = false;\n\n public readonly pending = new PromiseTracker();\n\n private readonly _startTime = Date.now();\n private readonly _stat = initialTxStatWithoutTime();\n public get stat(): TxStat {\n return {\n ...this._stat,\n timeMs: Date.now() - this._startTime,\n };\n }\n\n constructor(\n private readonly ll: LLPlTransaction,\n public readonly name: string,\n public readonly writable: boolean,\n private readonly _clientRoot: OptionalResourceId,\n private readonly finalPredicate: FinalResourceDataPredicate,\n private readonly sharedResourceDataCache: LRUCache<ResourceId, ResourceDataCacheRecord>,\n private readonly enableFormattedErrors: boolean = false,\n ) {\n // initiating transaction\n this.globalTxId = this.sendSingleAndParse(\n {\n oneofKind: \"txOpen\",\n txOpen: {\n name,\n enableFormattedErrors,\n writable: writable\n ? TxAPI_Open_Request_WritableTx.WRITABLE\n : TxAPI_Open_Request_WritableTx.NOT_WRITABLE,\n },\n },\n (r) => notEmpty(r.txOpen.tx?.id),\n );\n\n void this.track(this.globalTxId);\n\n // To avoid floating promise\n this.globalTxId.catch((err) => {\n if (!this.globalTxIdWasAwaited) {\n console.warn(err);\n }\n });\n\n // Adding stats\n this._stat.txCount++;\n }\n\n /**\n * Collect all pending promises for the transaction finalization.\n */\n public track<T>(promiseOrCallback: Promise<T> | (() => Promise<T>)): Promise<T> {\n return this.pending.track(promiseOrCallback);\n }\n\n private async drainAndAwaitPendingOps(): Promise<void> {\n // awaiting these pending operations first, to catch any errors\n await this.pending.awaitAll();\n }\n\n private sendSingleAndParse<Kind extends NonUndefined<ClientMessageRequest[\"oneofKind\"]>, T>(\n r: OneOfKind<ClientMessageRequest, Kind>,\n parser: (resp: OneOfKind<ServerMessageResponse, Kind>) => T,\n ): Promise<T> {\n return this.pending.track(async () => {\n const rawResponsePromise = this.ll.send(r, false);\n\n void this.pending.track(rawResponsePromise);\n\n await this.drainAndAwaitPendingOps();\n\n // awaiting our result, and parsing the response\n return parser(await rawResponsePromise);\n });\n }\n\n private sendMultiAndParse<Kind extends NonUndefined<ClientMessageRequest[\"oneofKind\"]>, T>(\n r: OneOfKind<ClientMessageRequest, Kind>,\n parser: (resp: OneOfKind<ServerMessageResponse, Kind>[]) => T,\n ): Promise<T> {\n return this.pending.track(async () => {\n const rawResponsePromise = this.ll.send(r, true);\n\n void this.pending.track(rawResponsePromise);\n\n await this.drainAndAwaitPendingOps();\n\n // awaiting our result, and parsing the response\n return parser(await rawResponsePromise);\n });\n }\n\n private async sendVoidSync<Kind extends NonUndefined<ClientMessageRequest[\"oneofKind\"]>>(\n r: OneOfKind<ClientMessageRequest, Kind>,\n ): Promise<void> {\n await this.ll.send(r, false);\n }\n\n /** Requests sent with this method should never produce recoverable errors */\n private sendVoidAsync<Kind extends NonUndefined<ClientMessageRequest[\"oneofKind\"]>>(\n r: OneOfKind<ClientMessageRequest, Kind>,\n ): void {\n void this.track(this.sendVoidSync(r));\n }\n\n private checkTxOpen() {\n if (this._completed) throw new Error(\"Transaction already closed\");\n }\n\n public get completed() {\n return this._completed;\n }\n\n /** Commit & closes transaction. {@link TxCommitConflict} is thrown on\n * commit conflicts. */\n public async commit() {\n this.checkTxOpen();\n\n // tx will accept no requests after this one\n this._completed = true;\n\n if (!this.writable) {\n // no need to explicitly commit or reject read-only tx\n const completeResult = this.track(this.ll.complete());\n await this.drainAndAwaitPendingOps();\n await completeResult;\n await this.ll.await();\n } else {\n const commitResponse = this.track(\n this.sendSingleAndParse({ oneofKind: \"txCommit\", txCommit: {} }, (r) => r.txCommit.success),\n );\n\n // send closing frame right after commit to save some time on round-trips\n const completeResult = this.track(this.ll.complete());\n\n // now when we pushed all packets into the stream, we should wait for any\n // pending void operations from before, to catch any errors\n await this.drainAndAwaitPendingOps();\n\n if (!(await commitResponse)) throw new TxCommitConflict();\n\n await completeResult;\n\n // await event-loop completion\n await this.ll.await();\n }\n }\n\n public async discard() {\n this.checkTxOpen();\n\n // tx will accept no requests after this one\n this._completed = true;\n\n const discardResponse = this.sendVoidSync({ oneofKind: \"txDiscard\", txDiscard: {} });\n void this.track(discardResponse);\n // send closing frame right after commit to save some time on round-trips\n const completeResult = this.track(this.ll.complete());\n\n // now when we pushed all packets into the stream, we should wait for any\n // pending void operations from before, to catch any errors\n await this.drainAndAwaitPendingOps();\n\n await discardResponse;\n await completeResult;\n await this.ll.await();\n }\n\n //\n // Main tx methods\n //\n\n public get clientRoot(): ResourceId {\n return ensureResourceIdNotNull(this._clientRoot);\n }\n\n //\n // Resources\n //\n\n public createSingleton(\n name: string,\n type: ResourceType,\n errorIfExists: boolean = false,\n ): ResourceRef {\n const localId = this.nextLocalResourceId(false);\n\n const globalId = this.sendSingleAndParse(\n {\n oneofKind: \"resourceCreateSingleton\",\n resourceCreateSingleton: {\n type,\n id: localId,\n data: Buffer.from(name),\n errorIfExists,\n },\n },\n (r) => r.resourceCreateSingleton.resourceId as ResourceId,\n );\n\n void this.track(globalId);\n\n return { globalId, localId };\n }\n\n public getSingleton(name: string, loadFields: true): Promise<ResourceData>;\n public getSingleton(name: string, loadFields: false): Promise<BasicResourceData>;\n public getSingleton(\n name: string,\n loadFields: boolean = true,\n ): Promise<BasicResourceData | ResourceData> {\n return this.sendSingleAndParse(\n {\n oneofKind: \"resourceGetSingleton\",\n resourceGetSingleton: {\n data: Buffer.from(name),\n loadFields,\n },\n },\n (r) => protoToResource(notEmpty(r.resourceGetSingleton.resource)),\n );\n }\n\n private createResource<Kind extends NonUndefined<ClientMessageRequest[\"oneofKind\"]>>(\n root: boolean,\n req: (localId: LocalResourceId) => OneOfKind<ClientMessageRequest, Kind>,\n parser: (resp: OneOfKind<ServerMessageResponse, Kind>) => bigint,\n ): ResourceRef {\n const localId = this.nextLocalResourceId(root);\n\n const globalId = this.sendSingleAndParse(req(localId), (r) => parser(r) as ResourceId);\n\n void this.track(globalId);\n\n return { globalId, localId };\n }\n\n public createRoot(type: ResourceType): ResourceRef {\n this._stat.rootsCreated++;\n return this.createResource(\n true,\n (localId) => ({ oneofKind: \"resourceCreateRoot\", resourceCreateRoot: { type, id: localId } }),\n (r) => r.resourceCreateRoot.resourceId,\n );\n }\n\n public createStruct(type: ResourceType, data?: Uint8Array | string): ResourceRef {\n this._stat.structsCreated++;\n this._stat.structsCreatedDataBytes += data?.length ?? 0;\n return this.createResource(\n false,\n (localId) => ({\n oneofKind: \"resourceCreateStruct\",\n resourceCreateStruct: {\n type,\n id: localId,\n data:\n data === undefined ? undefined : typeof data === \"string\" ? Buffer.from(data) : data,\n },\n }),\n (r) => r.resourceCreateStruct.resourceId,\n );\n }\n\n public createEphemeral(type: ResourceType, data?: Uint8Array | string): ResourceRef {\n this._stat.ephemeralsCreated++;\n this._stat.ephemeralsCreatedDataBytes += data?.length ?? 0;\n return this.createResource(\n false,\n (localId) => ({\n oneofKind: \"resourceCreateEphemeral\",\n resourceCreateEphemeral: {\n type,\n id: localId,\n data:\n data === undefined ? undefined : typeof data === \"string\" ? Buffer.from(data) : data,\n },\n }),\n (r) => r.resourceCreateEphemeral.resourceId,\n );\n }\n\n public createValue(\n type: ResourceType,\n data: Uint8Array | string,\n errorIfExists: boolean = false,\n ): ResourceRef {\n this._stat.valuesCreated++;\n this._stat.valuesCreatedDataBytes += data?.length ?? 0;\n return this.createResource(\n false,\n (localId) => ({\n oneofKind: \"resourceCreateValue\",\n resourceCreateValue: {\n type,\n id: localId,\n data: typeof data === \"string\" ? Buffer.from(data) : data,\n errorIfExists,\n },\n }),\n (r) => r.resourceCreateValue.resourceId,\n );\n }\n\n public createJsonValue(data: unknown): ResourceRef {\n const jsonData = canonicalJsonBytes(data);\n return this.createValue(JsonObject, jsonData, false);\n }\n\n public createJsonGzValue(data: unknown, minSizeToGzip: number | undefined = 16_384): ResourceRef {\n const { data: jsonData, isGzipped } = canonicalJsonGzBytes(data, minSizeToGzip);\n return this.createValue(isGzipped ? JsonGzObject : JsonObject, jsonData, false);\n }\n\n public createError(message: string): ResourceRef {\n return this.createValue(\n ErrorResourceType,\n JSON.stringify({ message } satisfies ErrorResourceData),\n );\n }\n\n public setResourceName(name: string, rId: AnyResourceRef): void {\n this.sendVoidAsync({\n oneofKind: \"resourceNameSet\",\n resourceNameSet: { resourceId: toResourceId(rId), name },\n });\n }\n\n public deleteResourceName(name: string): void {\n this.sendVoidAsync({ oneofKind: \"resourceNameDelete\", resourceNameDelete: { name } });\n }\n\n public getResourceByName(name: string): Promise<ResourceId> {\n return this.sendSingleAndParse(\n { oneofKind: \"resourceNameGet\", resourceNameGet: { name } },\n (r) => ensureResourceIdNotNull(r.resourceNameGet.resourceId as OptionalResourceId),\n );\n }\n\n public checkResourceNameExists(name: string): Promise<boolean> {\n return this.sendSingleAndParse(\n { oneofKind: \"resourceNameExists\", resourceNameExists: { name } },\n (r) => r.resourceNameExists.exists,\n );\n }\n\n public removeResource(rId: ResourceId): void {\n this.sendVoidAsync({ oneofKind: \"resourceRemove\", resourceRemove: { id: rId } });\n }\n\n public resourceExists(rId: ResourceId): Promise<boolean> {\n return this.sendSingleAndParse(\n { oneofKind: \"resourceExists\", resourceExists: { resourceId: rId } },\n (r) => r.resourceExists.exists,\n );\n }\n\n /** This method may return stale resource state from cache if resource was removed */\n public async getResourceData(rId: AnyResourceRef, loadFields: true): Promise<ResourceData>;\n /** This method may return stale resource state from cache if resource was removed */\n public async getResourceData(rId: AnyResourceRef, loadFields: false): Promise<BasicResourceData>;\n /** This method may return stale resource state from cache if resource was removed */\n public async getResourceData(\n rId: AnyResourceRef,\n loadFields: boolean,\n ): Promise<BasicResourceData | ResourceData>;\n /** This method may return stale resource state from cache if ignoreCache == false if resource was removed */\n public async getResourceData(\n rId: AnyResourceRef,\n loadFields: true,\n ignoreCache: boolean,\n ): Promise<ResourceData>;\n /** This method may return stale resource state from cache if ignoreCache == false if resource was removed */\n public async getResourceData(\n rId: AnyResourceRef,\n loadFields: false,\n ignoreCache: boolean,\n ): Promise<BasicResourceData>;\n /** This method may return stale resource state from cache if ignoreCache == false if resource was removed */\n public async getResourceData(\n rId: AnyResourceRef,\n loadFields: boolean,\n ignoreCache: boolean,\n ): Promise<BasicResourceData | ResourceData>;\n @tracked\n public async getResourceData(\n rId: AnyResourceRef,\n loadFields: boolean = true,\n ignoreCache: boolean = false,\n ): Promise<BasicResourceData | ResourceData> {\n if (!ignoreCache && !isResourceRef(rId) && !isLocalResourceId(rId)) {\n // checking if we can return result from cache\n const fromCache = this.sharedResourceDataCache.get(rId);\n if (fromCache && fromCache.cacheTxOpenTimestamp < this.txOpenTimestamp) {\n if (!loadFields) {\n this._stat.rGetDataCacheHits++;\n this._stat.rGetDataCacheBytes += fromCache.basicData.data?.length ?? 0;\n return fromCache.basicData;\n } else if (fromCache.data) {\n this._stat.rGetDataCacheHits++;\n this._stat.rGetDataCacheBytes += fromCache.basicData.data?.length ?? 0;\n this._stat.rGetDataCacheFields += fromCache.data.fields.length;\n return fromCache.data;\n }\n }\n }\n\n const result = await this.sendSingleAndParse(\n {\n oneofKind: \"resourceGet\",\n resourceGet: { resourceId: toResourceId(rId), loadFields: loadFields },\n },\n (r) => protoToResource(notEmpty(r.resourceGet.resource)),\n );\n\n this._stat.rGetDataNetRequests++;\n this._stat.rGetDataNetBytes += result.data?.length ?? 0;\n this._stat.rGetDataNetFields += result.fields.length;\n\n // we will cache only final resource data states\n // caching result even if we were ignore the cache\n if (!isResourceRef(rId) && !isLocalResourceId(rId) && this.finalPredicate(result)) {\n deepFreeze(result);\n const fromCache = this.sharedResourceDataCache.get(rId);\n if (fromCache) {\n if (loadFields && !fromCache.data) {\n fromCache.data = result;\n // updating timestamp because we updated the record\n fromCache.cacheTxOpenTimestamp = this.txOpenTimestamp;\n }\n } else {\n const basicData = extractBasicResourceData(result);\n deepFreeze(basicData);\n if (loadFields)\n this.sharedResourceDataCache.set(rId, {\n basicData,\n data: result,\n cacheTxOpenTimestamp: this.txOpenTimestamp,\n });\n else\n this.sharedResourceDataCache.set(rId, {\n basicData,\n data: undefined,\n cacheTxOpenTimestamp: this.txOpenTimestamp,\n });\n }\n }\n\n return result;\n }\n\n public async getResourceDataIfExists(\n rId: AnyResourceRef,\n loadFields: true,\n ): Promise<ResourceData | undefined>;\n public async getResourceDataIfExists(\n rId: AnyResourceRef,\n loadFields: false,\n ): Promise<BasicResourceData | undefined>;\n public async getResourceDataIfExists(\n rId: AnyResourceRef,\n loadFields: boolean,\n ): Promise<BasicResourceData | ResourceData | undefined>;\n @tracked\n public async getResourceDataIfExists(\n rId: AnyResourceRef,\n loadFields: boolean = true,\n ): Promise<BasicResourceData | ResourceData | undefined> {\n // calling this method will ignore cache, because user intention is to detect resource absence\n // which cache will prevent\n const result = await notFoundToUndefined(\n async () => await this.getResourceData(rId, loadFields, true),\n );\n\n // cleaning cache record if resource was removed from the db\n if (result === undefined && !isResourceRef(rId) && !isLocalResourceId(rId))\n this.sharedResourceDataCache.delete(rId);\n\n return result;\n }\n\n /**\n * Inform platform that resource will not get any new input fields.\n * This is required, when client creates resource without schema and wants\n * controller to start calculations.\n * Most controllers will not start calculations even when all inputs\n * have their values, if inputs list is not locked.\n */\n public lockInputs(rId: AnyResourceRef): void {\n this._stat.inputsLocked++;\n this.sendVoidAsync({\n oneofKind: \"resourceLockInputs\",\n resourceLockInputs: { resourceId: toResourceId(rId) },\n });\n }\n\n /**\n * Inform platform that resource will not get any new output fields.\n * This is required for resource to pass deduplication.\n */\n public lockOutputs(rId: AnyResourceRef): void {\n this._stat.outputsLocked++;\n this.sendVoidAsync({\n oneofKind: \"resourceLockOutputs\",\n resourceLockOutputs: { resourceId: toResourceId(rId) },\n });\n }\n\n public lock(rID: AnyResourceRef): void {\n this.lockInputs(rID);\n this.lockOutputs(rID);\n }\n\n public setResourceError(rId: AnyResourceRef, ref: AnyResourceRef): void {\n this.sendVoidAsync({\n oneofKind: \"resourceSetError\",\n resourceSetError: { resourceId: toResourceId(rId), errorResourceId: toResourceId(ref) },\n });\n }\n\n //\n // Fields\n //\n\n public createField(fId: AnyFieldRef, fieldType: FieldType, value?: AnyRef): void {\n this._stat.fieldsCreated++;\n this.sendVoidAsync({\n oneofKind: \"fieldCreate\",\n fieldCreate: { type: fieldTypeToProto(fieldType), id: toFieldId(fId) },\n });\n if (value !== undefined) this.setField(fId, value);\n }\n\n public fieldExists(fId: AnyFieldRef): Promise<boolean> {\n return this.sendSingleAndParse(\n {\n oneofKind: \"fieldExists\",\n fieldExists: { field: toFieldId(fId) },\n },\n (r) => r.fieldExists.exists,\n );\n }\n\n public setField(fId: AnyFieldRef, ref: AnyRef): void {\n this._stat.fieldsSet++;\n if (isResource(ref))\n this.sendVoidAsync({\n oneofKind: \"fieldSet\",\n fieldSet: {\n field: toFieldId(fId),\n value: {\n resourceId: toResourceId(ref),\n fieldName: \"\", // default value, read as undefined\n },\n },\n });\n else\n this.sendVoidAsync({\n oneofKind: \"fieldSet\",\n fieldSet: {\n field: toFieldId(fId),\n value: toFieldId(ref),\n },\n });\n }\n\n public setFieldError(fId: AnyFieldRef, ref: AnyResourceRef): void {\n this._stat.fieldsSet++;\n this.sendVoidAsync({\n oneofKind: \"fieldSetError\",\n fieldSetError: { field: toFieldId(fId), errResourceId: toResourceId(ref) },\n });\n }\n\n public getField(fId: AnyFieldRef): Promise<FieldData> {\n this._stat.fieldsGet++;\n return this.sendSingleAndParse(\n { oneofKind: \"fieldGet\", fieldGet: { field: toFieldId(fId) } },\n (r) => protoToField(notEmpty(r.fieldGet.field)),\n );\n }\n\n @tracked\n public async getFieldIfExists(fId: AnyFieldRef): Promise<FieldData | undefined> {\n return notFoundToUndefined(async () => await this.getField(fId));\n }\n\n public resetField(fId: AnyFieldRef): void {\n this.sendVoidAsync({ oneofKind: \"fieldReset\", fieldReset: { field: toFieldId(fId) } });\n }\n\n public removeField(fId: AnyFieldRef): void {\n this.sendVoidAsync({ oneofKind: \"fieldRemove\", fieldRemove: { field: toFieldId(fId) } });\n }\n\n //\n // KV\n //\n\n @tracked\n public async listKeyValues(rId: AnyResourceRef): Promise<KeyValue[]> {\n const result = await this.sendMultiAndParse(\n {\n oneofKind: \"resourceKeyValueList\",\n resourceKeyValueList: { resourceId: toResourceId(rId), startFrom: \"\", limit: 0 },\n },\n (r) => r.map((e) => e.resourceKeyValueList.record!),\n );\n\n this._stat.kvListRequests++;\n this._stat.kvListEntries += result.length;\n for (const kv of result) this._stat.kvListBytes += kv.key.length + kv.value.length;\n\n return result;\n }\n\n @tracked\n public async listKeyValuesString(rId: AnyResourceRef): Promise<KeyValueString[]> {\n return (await this.listKeyValues(rId)).map(({ key, value }) => ({\n key,\n value: Buffer.from(value).toString(),\n }));\n }\n\n @tracked\n public async listKeyValuesIfResourceExists(rId: AnyResourceRef): Promise<KeyValue[] | undefined> {\n return notFoundToUndefined(async () => await this.listKeyValues(rId));\n }\n\n @tracked\n public async listKeyValuesStringIfResourceExists(\n rId: AnyResourceRef,\n ): Promise<KeyValueString[] | undefined> {\n return notFoundToUndefined(async () => await this.listKeyValuesString(rId));\n }\n\n public setKValue(rId: AnyResourceRef, key: string, value: Uint8Array | string): void {\n this._stat.kvSetRequests++;\n this._stat.kvSetBytes++;\n this.sendVoidAsync({\n oneofKind: \"resourceKeyValueSet\",\n resourceKeyValueSet: {\n resourceId: toResourceId(rId),\n key,\n value: toBytes(value),\n },\n });\n }\n\n public deleteKValue(rId: AnyResourceRef, key: string): void {\n this.sendVoidAsync({\n oneofKind: \"resourceKeyValueDelete\",\n resourceKeyValueDelete: {\n resourceId: toResourceId(rId),\n key,\n },\n });\n }\n\n @tracked\n public async getKValue(rId: AnyResourceRef, key: string): Promise<Uint8Array> {\n const result = await this.sendSingleAndParse(\n {\n oneofKind: \"resourceKeyValueGet\",\n resourceKeyValueGet: { resourceId: toResourceId(rId), key },\n },\n (r) => r.resourceKeyValueGet.value,\n );\n\n this._stat.kvGetRequests++;\n this._stat.kvGetBytes += result.length;\n\n return result;\n }\n\n @tracked\n public async getKValueString(rId: AnyResourceRef, key: string): Promise<string> {\n return Buffer.from(await this.getKValue(rId, key)).toString();\n }\n\n @tracked\n public async getKValueJson<T>(rId: AnyResourceRef, key: string): Promise<T> {\n return JSON.parse(await this.getKValueString(rId, key)) as T;\n }\n\n @tracked\n public async getKValueIfExists(\n rId: AnyResourceRef,\n key: string,\n ): Promise<Uint8Array | undefined> {\n const result = await this.sendSingleAndParse(\n {\n oneofKind: \"resourceKeyValueGetIfExists\",\n resourceKeyValueGetIfExists: { resourceId: toResourceId(rId), key },\n },\n (r) =>\n r.resourceKeyValueGetIfExists.exists ? r.resourceKeyValueGetIfExists.value : undefined,\n );\n\n this._stat.kvGetRequests++;\n this._stat.kvGetBytes += result?.length ?? 0;\n\n return result;\n }\n\n @tracked\n public async getKValueStringIfExists(\n rId: AnyResourceRef,\n key: string,\n ): Promise<string | undefined> {\n const data = await this.getKValueIfExists(rId, key);\n return data === undefined ? undefined : Buffer.from(data).toString();\n }\n\n @tracked\n public async getKValueJsonIfExists<T>(rId: AnyResourceRef, key: string): Promise<T | undefined> {\n const str = await this.getKValueString(rId, key);\n if (str === undefined) return undefined;\n return JSON.parse(str) as T;\n }\n\n //\n // Cache\n //\n // TODO\n\n //\n // High level ops\n //\n\n /** Resolves existing or create first level resource from */\n public getFutureFieldValue(rId: AnyRef, fieldName: string, fieldType: FutureFieldType): FieldRef {\n const data = Buffer.from(JSON.stringify({ fieldName, fieldType }));\n const getFieldResource = this.createEphemeral({ name: \"json/getField\", version: \"1\" }, data);\n this.setField({ resourceId: getFieldResource, fieldName: \"resource\" }, rId);\n return { resourceId: getFieldResource, fieldName: \"result\" };\n }\n\n //\n // Technical\n //\n\n public async getGlobalTxId() {\n this.globalTxIdWasAwaited = true;\n return await this.globalTxId;\n }\n\n /** Closes output event stream */\n public async complete() {\n if (this._completed) return;\n this._completed = true;\n const completeResult = this.track(this.ll.complete());\n await this.drainAndAwaitPendingOps();\n await completeResult;\n }\n\n /** Await incoming message loop termination and throw\n * any leftover errors if it was unsuccessful */\n public async await() {\n await this.ll.await();\n }\n\n //\n // Helpers\n //\n\n private nextLocalResourceId(root: boolean): LocalResourceId {\n return createLocalResourceId(root, ++this.localResourceIdCounter, this.localTxId);\n }\n\n private static localTxIdCounter = 0;\n\n private static nextLocalTxId() {\n PlTransaction.localTxIdCounter++;\n if (PlTransaction.localTxIdCounter === MaxTxId) PlTransaction.localTxIdCounter = 1;\n return PlTransaction.localTxIdCounter;\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;AAwFM,SAAU,OAAO,CAAC,GAAW,EAAA;AACjC,IAAA,OAAO,GAAG,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,cAAc,CAAC,WAAW,CAAC;AAC5E;AAEM,SAAU,UAAU,CAAC,GAAW,EAAA;IACpC,QACE,OAAO,GAAG,KAAK,QAAQ,KAAK,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AAEhG;AAEM,SAAU,YAAY,CAAC,GAAW,EAAA;AACtC,IAAA,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;AACrF;AAEM,SAAU,UAAU,CAAC,GAAgB,EAAA;AACzC,IAAA,OAAO,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;AACtC;AAEM,SAAU,aAAa,CAAC,GAAmB,EAAA;AAC/C,IAAA,OAAO,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC;AACxE;AAEM,SAAU,SAAS,CAAC,GAAgB,EAAA;IACxC,IAAI,UAAU,CAAC,GAAG,CAAC;AAAE,QAAA,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE;;AACvF,QAAA,OAAO,GAAc;AAC5B;AAEO,eAAe,eAAe,CAAC,GAAgB,EAAA;IACpD,IAAI,UAAU,CAAC,GAAG,CAAC;AACjB,QAAA,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE;;AAC3E,QAAA,OAAO,GAAc;AAC5B;AAEM,SAAU,YAAY,CAAC,GAAmB,EAAA;IAC9C,IAAI,aAAa,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,OAAO;;AACrC,QAAA,OAAO,GAAG;AACjB;AAEO,eAAe,kBAAkB,CAAC,GAAmB,EAAA;IAC1D,IAAI,aAAa,CAAC,GAAG,CAAC;AAAE,QAAA,OAAO,MAAM,GAAG,CAAC,QAAQ;;AAC5C,QAAA,OAAO,GAAG;AACjB;AAEM,SAAU,KAAK,CAAC,UAA0B,EAAE,SAAiB,EAAA;AACjE,IAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE;AAClC;AAEA;AACM,MAAO,gBAAiB,SAAQ,KAAK,CAAA;IACzC,IAAI,GAAG,kBAAkB;AAC1B;AAED,eAAe,mBAAmB,CAAI,EAAoB,EAAA;AACxD,IAAA,IAAI;QACF,OAAO,MAAM,EAAE,EAAE;IACnB;IAAE,OAAO,CAAC,EAAE;QACV,IAAI,eAAe,CAAC,CAAC,CAAC;AAAE,YAAA,OAAO,SAAS;AACxC,QAAA,MAAM,CAAC;IACT;AACF;AAEA;;;AAGG;AACH,SAAS,OAAO,CACd,KAAQ,EACR,QAAqC,EAAA;IAErC,OAAO,UAA+B,GAAG,IAAmB,EAAA;AAC1D,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAkB;AAC7D,IAAA,CAAiB;AACnB;AAEA;;;;;;;AAOK;IACQ,aAAa,GAAA,CAAA,MAAA;;;;;;;;;;;;;;;iBAAb,aAAa,CAAA;;;2CAgZvB,OAAO,CAAA;mDA+EP,OAAO,CAAA;4CAuHP,OAAO,CAAA;yCAiBP,OAAO,CAAA;+CAiBP,OAAO,CAAA;yDAQP,OAAO,CAAA;+DAKP,OAAO,CAAA;qCA8BP,OAAO,CAAA;2CAgBP,OAAO,CAAA;yCAKP,OAAO,CAAA;6CAKP,OAAO,CAAA;mDAoBP,OAAO,CAAA;iDASP,OAAO,CAAA;AAzUR,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,2BAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,iBAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAa,eAAe,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;AA+E5B,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,mCAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,yBAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAa,uBAAuB,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;AAuHpC,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,4BAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,kBAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAa,gBAAgB,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;AAiB7B,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,yBAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,eAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAa,aAAa,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;AAiB1B,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,+BAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,qBAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAa,mBAAmB,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;AAQhC,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,yCAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,+BAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAa,6BAA6B,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;AAK1C,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,+CAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,qCAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAa,mCAAmC,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;AA8BhD,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,WAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAa,SAAS,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;AAgBtB,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,2BAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,iBAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAa,eAAe,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;AAK5B,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,yBAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,eAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAa,aAAa,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;AAK1B,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,6BAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,mBAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAa,iBAAiB,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;AAoB9B,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,mCAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,yBAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAa,uBAAuB,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;AASpC,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,iCAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,uBAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAa,qBAAqB,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;;;AA/rBf,QAAA,EAAE,GA5BV,iBAAA,CAAA,IAAA,EAAA,0BAAA,CAAa;QA6BN,IAAI;QACJ,QAAQ;QACP,WAAW;QACX,cAAc;QACd,uBAAuB;QACvB,qBAAqB;AAjCvB,QAAA,UAAU;AACV,QAAA,SAAS,GAAW,aAAa,CAAC,aAAa,EAAE;;AAGjD,QAAA,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE;QAErC,sBAAsB,GAAG,CAAC;AAElC;;AAE2H;QACnH,UAAU,GAAG,KAAK;QAElB,oBAAoB,GAAY,KAAK;AAE7B,QAAA,OAAO,GAAG,IAAI,cAAc,EAAE;AAE7B,QAAA,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE;QACvB,KAAK,GAAG,wBAAwB,EAAE;AACnD,QAAA,IAAW,IAAI,GAAA;YACb,OAAO;gBACL,GAAG,IAAI,CAAC,KAAK;gBACb,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU;aACrC;QACH;AAEA,QAAA,WAAA,CACmB,EAAmB,EACpB,IAAY,EACZ,QAAiB,EAChB,WAA+B,EAC/B,cAA0C,EAC1C,uBAAsE,EACtE,qBAAqB,GAAY,KAAK,EAAA;YANtC,IAAA,CAAA,EAAE,GAAF,EAAE;YACH,IAAA,CAAA,IAAI,GAAJ,IAAI;YACJ,IAAA,CAAA,QAAQ,GAAR,QAAQ;YACP,IAAA,CAAA,WAAW,GAAX,WAAW;YACX,IAAA,CAAA,cAAc,GAAd,cAAc;YACd,IAAA,CAAA,uBAAuB,GAAvB,uBAAuB;YACvB,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;;AAGtC,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,CACvC;AACE,gBAAA,SAAS,EAAE,QAAQ;AACnB,gBAAA,MAAM,EAAE;oBACN,IAAI;oBACJ,qBAAqB;AACrB,oBAAA,QAAQ,EAAE;0BACN,6BAA6B,CAAC;0BAC9B,6BAA6B,CAAC,YAAY;AAC/C,iBAAA;AACF,aAAA,EACD,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CACjC;YAED,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;;YAGhC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,KAAI;AAC5B,gBAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AAC9B,oBAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;gBACnB;AACF,YAAA,CAAC,CAAC;;AAGF,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;QACtB;AAEA;;AAEG;AACI,QAAA,KAAK,CAAI,iBAAkD,EAAA;YAChE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC;QAC9C;AAEQ,QAAA,MAAM,uBAAuB,GAAA;;AAEnC,YAAA,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;QAC/B;QAEQ,kBAAkB,CACxB,CAAwC,EACxC,MAA2D,EAAA;YAE3D,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAW;AACnC,gBAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC;gBAEjD,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC;AAE3C,gBAAA,MAAM,IAAI,CAAC,uBAAuB,EAAE;;AAGpC,gBAAA,OAAO,MAAM,CAAC,MAAM,kBAAkB,CAAC;AACzC,YAAA,CAAC,CAAC;QACJ;QAEQ,iBAAiB,CACvB,CAAwC,EACxC,MAA6D,EAAA;YAE7D,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAW;AACnC,gBAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;gBAEhD,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC;AAE3C,gBAAA,MAAM,IAAI,CAAC,uBAAuB,EAAE;;AAGpC,gBAAA,OAAO,MAAM,CAAC,MAAM,kBAAkB,CAAC;AACzC,YAAA,CAAC,CAAC;QACJ;QAEQ,MAAM,YAAY,CACxB,CAAwC,EAAA;YAExC,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC;QAC9B;;AAGQ,QAAA,aAAa,CACnB,CAAwC,EAAA;YAExC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACvC;QAEQ,WAAW,GAAA;YACjB,IAAI,IAAI,CAAC,UAAU;AAAE,gBAAA,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC;QACpE;AAEA,QAAA,IAAW,SAAS,GAAA;YAClB,OAAO,IAAI,CAAC,UAAU;QACxB;AAEA;AACuB;AAChB,QAAA,MAAM,MAAM,GAAA;YACjB,IAAI,CAAC,WAAW,EAAE;;AAGlB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AAEtB,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;;AAElB,gBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;AACrD,gBAAA,MAAM,IAAI,CAAC,uBAAuB,EAAE;AACpC,gBAAA,MAAM,cAAc;AACpB,gBAAA,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;YACvB;iBAAO;AACL,gBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAC/B,IAAI,CAAC,kBAAkB,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAC5F;;AAGD,gBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;;;AAIrD,gBAAA,MAAM,IAAI,CAAC,uBAAuB,EAAE;AAEpC,gBAAA,IAAI,EAAE,MAAM,cAAc,CAAC;oBAAE,MAAM,IAAI,gBAAgB,EAAE;AAEzD,gBAAA,MAAM,cAAc;;AAGpB,gBAAA,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;YACvB;QACF;AAEO,QAAA,MAAM,OAAO,GAAA;YAClB,IAAI,CAAC,WAAW,EAAE;;AAGlB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AAEtB,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;AACpF,YAAA,KAAK,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;;AAEhC,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;;;AAIrD,YAAA,MAAM,IAAI,CAAC,uBAAuB,EAAE;AAEpC,YAAA,MAAM,eAAe;AACrB,YAAA,MAAM,cAAc;AACpB,YAAA,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;QACvB;;;;AAMA,QAAA,IAAW,UAAU,GAAA;AACnB,YAAA,OAAO,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC;QAClD;;;;AAMO,QAAA,eAAe,CACpB,IAAY,EACZ,IAAkB,EAClB,gBAAyB,KAAK,EAAA;YAE9B,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;AAE/C,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CACtC;AACE,gBAAA,SAAS,EAAE,yBAAyB;AACpC,gBAAA,uBAAuB,EAAE;oBACvB,IAAI;AACJ,oBAAA,EAAE,EAAE,OAAO;AACX,oBAAA,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;oBACvB,aAAa;AACd,iBAAA;aACF,EACD,CAAC,CAAC,KAAK,CAAC,CAAC,uBAAuB,CAAC,UAAwB,CAC1D;AAED,YAAA,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;AAEzB,YAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE;QAC9B;AAIO,QAAA,YAAY,CACjB,IAAY,EACZ,UAAA,GAAsB,IAAI,EAAA;YAE1B,OAAO,IAAI,CAAC,kBAAkB,CAC5B;AACE,gBAAA,SAAS,EAAE,sBAAsB;AACjC,gBAAA,oBAAoB,EAAE;AACpB,oBAAA,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;oBACvB,UAAU;AACX,iBAAA;AACF,aAAA,EACD,CAAC,CAAC,KAAK,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAClE;QACH;AAEQ,QAAA,cAAc,CACpB,IAAa,EACb,GAAwE,EACxE,MAAgE,EAAA;YAEhE,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAE9C,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAe,CAAC;AAEtF,YAAA,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;AAEzB,YAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE;QAC9B;AAEO,QAAA,UAAU,CAAC,IAAkB,EAAA;AAClC,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;AACzB,YAAA,OAAO,IAAI,CAAC,cAAc,CACxB,IAAI,EACJ,CAAC,OAAO,MAAM,EAAE,SAAS,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,EAC7F,CAAC,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC,UAAU,CACvC;QACH;QAEO,YAAY,CAAC,IAAkB,EAAE,IAA0B,EAAA;AAChE,YAAA,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;YAC3B,IAAI,CAAC,KAAK,CAAC,uBAAuB,IAAI,IAAI,EAAE,MAAM,IAAI,CAAC;YACvD,OAAO,IAAI,CAAC,cAAc,CACxB,KAAK,EACL,CAAC,OAAO,MAAM;AACZ,gBAAA,SAAS,EAAE,sBAAsB;AACjC,gBAAA,oBAAoB,EAAE;oBACpB,IAAI;AACJ,oBAAA,EAAE,EAAE,OAAO;oBACX,IAAI,EACF,IAAI,KAAK,SAAS,GAAG,SAAS,GAAG,OAAO,IAAI,KAAK,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI;AACvF,iBAAA;AACF,aAAA,CAAC,EACF,CAAC,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,UAAU,CACzC;QACH;QAEO,eAAe,CAAC,IAAkB,EAAE,IAA0B,EAAA;AACnE,YAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE;YAC9B,IAAI,CAAC,KAAK,CAAC,0BAA0B,IAAI,IAAI,EAAE,MAAM,IAAI,CAAC;YAC1D,OAAO,IAAI,CAAC,cAAc,CACxB,KAAK,EACL,CAAC,OAAO,MAAM;AACZ,gBAAA,SAAS,EAAE,yBAAyB;AACpC,gBAAA,uBAAuB,EAAE;oBACvB,IAAI;AACJ,oBAAA,EAAE,EAAE,OAAO;oBACX,IAAI,EACF,IAAI,KAAK,SAAS,GAAG,SAAS,GAAG,OAAO,IAAI,KAAK,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI;AACvF,iBAAA;AACF,aAAA,CAAC,EACF,CAAC,CAAC,KAAK,CAAC,CAAC,uBAAuB,CAAC,UAAU,CAC5C;QACH;AAEO,QAAA,WAAW,CAChB,IAAkB,EAClB,IAAyB,EACzB,gBAAyB,KAAK,EAAA;AAE9B,YAAA,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;YAC1B,IAAI,CAAC,KAAK,CAAC,sBAAsB,IAAI,IAAI,EAAE,MAAM,IAAI,CAAC;YACtD,OAAO,IAAI,CAAC,cAAc,CACxB,KAAK,EACL,CAAC,OAAO,MAAM;AACZ,gBAAA,SAAS,EAAE,qBAAqB;AAChC,gBAAA,mBAAmB,EAAE;oBACnB,IAAI;AACJ,oBAAA,EAAE,EAAE,OAAO;AACX,oBAAA,IAAI,EAAE,OAAO,IAAI,KAAK,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI;oBACzD,aAAa;AACd,iBAAA;AACF,aAAA,CAAC,EACF,CAAC,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,UAAU,CACxC;QACH;AAEO,QAAA,eAAe,CAAC,IAAa,EAAA;AAClC,YAAA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC;YACzC,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC;QACtD;AAEO,QAAA,iBAAiB,CAAC,IAAa,EAAE,aAAA,GAAoC,MAAM,EAAA;AAChF,YAAA,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,oBAAoB,CAAC,IAAI,EAAE,aAAa,CAAC;AAC/E,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,YAAY,GAAG,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC;QACjF;AAEO,QAAA,WAAW,CAAC,OAAe,EAAA;AAChC,YAAA,OAAO,IAAI,CAAC,WAAW,CACrB,iBAAiB,EACjB,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAA8B,CAAC,CACxD;QACH;QAEO,eAAe,CAAC,IAAY,EAAE,GAAmB,EAAA;YACtD,IAAI,CAAC,aAAa,CAAC;AACjB,gBAAA,SAAS,EAAE,iBAAiB;gBAC5B,eAAe,EAAE,EAAE,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;AACzD,aAAA,CAAC;QACJ;AAEO,QAAA,kBAAkB,CAAC,IAAY,EAAA;AACpC,YAAA,IAAI,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;QACvF;AAEO,QAAA,iBAAiB,CAAC,IAAY,EAAA;AACnC,YAAA,OAAO,IAAI,CAAC,kBAAkB,CAC5B,EAAE,SAAS,EAAE,iBAAiB,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,EAAE,EAC3D,CAAC,CAAC,KAAK,uBAAuB,CAAC,CAAC,CAAC,eAAe,CAAC,UAAgC,CAAC,CACnF;QACH;AAEO,QAAA,uBAAuB,CAAC,IAAY,EAAA;YACzC,OAAO,IAAI,CAAC,kBAAkB,CAC5B,EAAE,SAAS,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,EAAE,IAAI,EAAE,EAAE,EACjE,CAAC,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC,MAAM,CACnC;QACH;AAEO,QAAA,cAAc,CAAC,GAAe,EAAA;AACnC,YAAA,IAAI,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,cAAc,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;QAClF;AAEO,QAAA,cAAc,CAAC,GAAe,EAAA;AACnC,YAAA,OAAO,IAAI,CAAC,kBAAkB,CAC5B,EAAE,SAAS,EAAE,gBAAgB,EAAE,cAAc,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,EACpE,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,MAAM,CAC/B;QACH;QA8BO,MAAM,eAAe,CAC1B,GAAmB,EACnB,UAAA,GAAsB,IAAI,EAC1B,WAAA,GAAuB,KAAK,EAAA;AAE5B,YAAA,IAAI,CAAC,WAAW,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE;;gBAElE,MAAM,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,GAAG,CAAC;gBACvD,IAAI,SAAS,IAAI,SAAS,CAAC,oBAAoB,GAAG,IAAI,CAAC,eAAe,EAAE;oBACtE,IAAI,CAAC,UAAU,EAAE;AACf,wBAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE;AAC9B,wBAAA,IAAI,CAAC,KAAK,CAAC,kBAAkB,IAAI,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC;wBACtE,OAAO,SAAS,CAAC,SAAS;oBAC5B;AAAO,yBAAA,IAAI,SAAS,CAAC,IAAI,EAAE;AACzB,wBAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE;AAC9B,wBAAA,IAAI,CAAC,KAAK,CAAC,kBAAkB,IAAI,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC;AACtE,wBAAA,IAAI,CAAC,KAAK,CAAC,mBAAmB,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;wBAC9D,OAAO,SAAS,CAAC,IAAI;oBACvB;gBACF;YACF;AAEA,YAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAC1C;AACE,gBAAA,SAAS,EAAE,aAAa;AACxB,gBAAA,WAAW,EAAE,EAAE,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE;AACvE,aAAA,EACD,CAAC,CAAC,KAAK,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CACzD;AAED,YAAA,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE;AAChC,YAAA,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC;YACvD,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM;;;AAIpD,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;gBACjF,UAAU,CAAC,MAAM,CAAC;gBAClB,MAAM,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,GAAG,CAAC;gBACvD,IAAI,SAAS,EAAE;AACb,oBAAA,IAAI,UAAU,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AACjC,wBAAA,SAAS,CAAC,IAAI,GAAG,MAAM;;AAEvB,wBAAA,SAAS,CAAC,oBAAoB,GAAG,IAAI,CAAC,eAAe;oBACvD;gBACF;qBAAO;AACL,oBAAA,MAAM,SAAS,GAAG,wBAAwB,CAAC,MAAM,CAAC;oBAClD,UAAU,CAAC,SAAS,CAAC;AACrB,oBAAA,IAAI,UAAU;AACZ,wBAAA,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,GAAG,EAAE;4BACpC,SAAS;AACT,4BAAA,IAAI,EAAE,MAAM;4BACZ,oBAAoB,EAAE,IAAI,CAAC,eAAe;AAC3C,yBAAA,CAAC;;AAEF,wBAAA,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,GAAG,EAAE;4BACpC,SAAS;AACT,4BAAA,IAAI,EAAE,SAAS;4BACf,oBAAoB,EAAE,IAAI,CAAC,eAAe;AAC3C,yBAAA,CAAC;gBACN;YACF;AAEA,YAAA,OAAO,MAAM;QACf;AAeO,QAAA,MAAM,uBAAuB,CAClC,GAAmB,EACnB,aAAsB,IAAI,EAAA;;;YAI1B,MAAM,MAAM,GAAG,MAAM,mBAAmB,CACtC,YAAY,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,CAC9D;;AAGD,YAAA,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;AACxE,gBAAA,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC;AAE1C,YAAA,OAAO,MAAM;QACf;AAEA;;;;;;AAMG;AACI,QAAA,UAAU,CAAC,GAAmB,EAAA;AACnC,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;YACzB,IAAI,CAAC,aAAa,CAAC;AACjB,gBAAA,SAAS,EAAE,oBAAoB;gBAC/B,kBAAkB,EAAE,EAAE,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE;AACtD,aAAA,CAAC;QACJ;AAEA;;;AAGG;AACI,QAAA,WAAW,CAAC,GAAmB,EAAA;AACpC,YAAA,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;YAC1B,IAAI,CAAC,aAAa,CAAC;AACjB,gBAAA,SAAS,EAAE,qBAAqB;gBAChC,mBAAmB,EAAE,EAAE,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE;AACvD,aAAA,CAAC;QACJ;AAEO,QAAA,IAAI,CAAC,GAAmB,EAAA;AAC7B,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;QACvB;QAEO,gBAAgB,CAAC,GAAmB,EAAE,GAAmB,EAAA;YAC9D,IAAI,CAAC,aAAa,CAAC;AACjB,gBAAA,SAAS,EAAE,kBAAkB;AAC7B,gBAAA,gBAAgB,EAAE,EAAE,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,eAAe,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE;AACxF,aAAA,CAAC;QACJ;;;;AAMO,QAAA,WAAW,CAAC,GAAgB,EAAE,SAAoB,EAAE,KAAc,EAAA;AACvE,YAAA,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;YAC1B,IAAI,CAAC,aAAa,CAAC;AACjB,gBAAA,SAAS,EAAE,aAAa;AACxB,gBAAA,WAAW,EAAE,EAAE,IAAI,EAAE,gBAAgB,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE;AACvE,aAAA,CAAC;YACF,IAAI,KAAK,KAAK,SAAS;AAAE,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC;QACpD;AAEO,QAAA,WAAW,CAAC,GAAgB,EAAA;YACjC,OAAO,IAAI,CAAC,kBAAkB,CAC5B;AACE,gBAAA,SAAS,EAAE,aAAa;gBACxB,WAAW,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE;aACvC,EACD,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,MAAM,CAC5B;QACH;QAEO,QAAQ,CAAC,GAAgB,EAAE,GAAW,EAAA;AAC3C,YAAA,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;YACtB,IAAI,UAAU,CAAC,GAAG,CAAC;gBACjB,IAAI,CAAC,aAAa,CAAC;AACjB,oBAAA,SAAS,EAAE,UAAU;AACrB,oBAAA,QAAQ,EAAE;AACR,wBAAA,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC;AACrB,wBAAA,KAAK,EAAE;AACL,4BAAA,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC;4BAC7B,SAAS,EAAE,EAAE;AACd,yBAAA;AACF,qBAAA;AACF,iBAAA,CAAC;;gBAEF,IAAI,CAAC,aAAa,CAAC;AACjB,oBAAA,SAAS,EAAE,UAAU;AACrB,oBAAA,QAAQ,EAAE;AACR,wBAAA,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC;AACrB,wBAAA,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC;AACtB,qBAAA;AACF,iBAAA,CAAC;QACN;QAEO,aAAa,CAAC,GAAgB,EAAE,GAAmB,EAAA;AACxD,YAAA,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;YACtB,IAAI,CAAC,aAAa,CAAC;AACjB,gBAAA,SAAS,EAAE,eAAe;AAC1B,gBAAA,aAAa,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE;AAC3E,aAAA,CAAC;QACJ;AAEO,QAAA,QAAQ,CAAC,GAAgB,EAAA;AAC9B,YAAA,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AACtB,YAAA,OAAO,IAAI,CAAC,kBAAkB,CAC5B,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,EAC9D,CAAC,CAAC,KAAK,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAChD;QACH;QAGO,MAAM,gBAAgB,CAAC,GAAgB,EAAA;AAC5C,YAAA,OAAO,mBAAmB,CAAC,YAAY,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAClE;AAEO,QAAA,UAAU,CAAC,GAAgB,EAAA;YAChC,IAAI,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACxF;AAEO,QAAA,WAAW,CAAC,GAAgB,EAAA;YACjC,IAAI,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QAC1F;;;;QAOO,MAAM,aAAa,CAAC,GAAmB,EAAA;AAC5C,YAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CACzC;AACE,gBAAA,SAAS,EAAE,sBAAsB;AACjC,gBAAA,oBAAoB,EAAE,EAAE,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;aACjF,EACD,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,MAAO,CAAC,CACpD;AAED,YAAA,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;YAC3B,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,MAAM,CAAC,MAAM;YACzC,KAAK,MAAM,EAAE,IAAI,MAAM;AAAE,gBAAA,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM;AAElF,YAAA,OAAO,MAAM;QACf;QAGO,MAAM,mBAAmB,CAAC,GAAmB,EAAA;YAClD,OAAO,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM;gBAC9D,GAAG;gBACH,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;AACrC,aAAA,CAAC,CAAC;QACL;QAGO,MAAM,6BAA6B,CAAC,GAAmB,EAAA;AAC5D,YAAA,OAAO,mBAAmB,CAAC,YAAY,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACvE;QAGO,MAAM,mCAAmC,CAC9C,GAAmB,EAAA;AAEnB,YAAA,OAAO,mBAAmB,CAAC,YAAY,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC7E;AAEO,QAAA,SAAS,CAAC,GAAmB,EAAE,GAAW,EAAE,KAA0B,EAAA;AAC3E,YAAA,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;AAC1B,YAAA,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;YACvB,IAAI,CAAC,aAAa,CAAC;AACjB,gBAAA,SAAS,EAAE,qBAAqB;AAChC,gBAAA,mBAAmB,EAAE;AACnB,oBAAA,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC;oBAC7B,GAAG;AACH,oBAAA,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC;AACtB,iBAAA;AACF,aAAA,CAAC;QACJ;QAEO,YAAY,CAAC,GAAmB,EAAE,GAAW,EAAA;YAClD,IAAI,CAAC,aAAa,CAAC;AACjB,gBAAA,SAAS,EAAE,wBAAwB;AACnC,gBAAA,sBAAsB,EAAE;AACtB,oBAAA,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC;oBAC7B,GAAG;AACJ,iBAAA;AACF,aAAA,CAAC;QACJ;AAGO,QAAA,MAAM,SAAS,CAAC,GAAmB,EAAE,GAAW,EAAA;AACrD,YAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAC1C;AACE,gBAAA,SAAS,EAAE,qBAAqB;gBAChC,mBAAmB,EAAE,EAAE,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE;aAC5D,EACD,CAAC,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,KAAK,CACnC;AAED,YAAA,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;YAC1B,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM;AAEtC,YAAA,OAAO,MAAM;QACf;AAGO,QAAA,MAAM,eAAe,CAAC,GAAmB,EAAE,GAAW,EAAA;AAC3D,YAAA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC/D;AAGO,QAAA,MAAM,aAAa,CAAI,GAAmB,EAAE,GAAW,EAAA;AAC5D,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,CAAM;QAC9D;AAGO,QAAA,MAAM,iBAAiB,CAC5B,GAAmB,EACnB,GAAW,EAAA;AAEX,YAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAC1C;AACE,gBAAA,SAAS,EAAE,6BAA6B;gBACxC,2BAA2B,EAAE,EAAE,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE;aACpE,EACD,CAAC,CAAC,KACA,CAAC,CAAC,2BAA2B,CAAC,MAAM,GAAG,CAAC,CAAC,2BAA2B,CAAC,KAAK,GAAG,SAAS,CACzF;AAED,YAAA,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;YAC1B,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,MAAM,EAAE,MAAM,IAAI,CAAC;AAE5C,YAAA,OAAO,MAAM;QACf;AAGO,QAAA,MAAM,uBAAuB,CAClC,GAAmB,EACnB,GAAW,EAAA;YAEX,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC;AACnD,YAAA,OAAO,IAAI,KAAK,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;QACtE;AAGO,QAAA,MAAM,qBAAqB,CAAI,GAAmB,EAAE,GAAW,EAAA;YACpE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC;YAChD,IAAI,GAAG,KAAK,SAAS;AAAE,gBAAA,OAAO,SAAS;AACvC,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAM;QAC7B;;;;;;;;;AAYO,QAAA,mBAAmB,CAAC,GAAW,EAAE,SAAiB,EAAE,SAA0B,EAAA;AACnF,YAAA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;AAClE,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC;AAC5F,YAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,gBAAgB,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,GAAG,CAAC;YAC3E,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE;QAC9D;;;;AAMO,QAAA,MAAM,aAAa,GAAA;AACxB,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;AAChC,YAAA,OAAO,MAAM,IAAI,CAAC,UAAU;QAC9B;;AAGO,QAAA,MAAM,QAAQ,GAAA;YACnB,IAAI,IAAI,CAAC,UAAU;gBAAE;AACrB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;AACrD,YAAA,MAAM,IAAI,CAAC,uBAAuB,EAAE;AACpC,YAAA,MAAM,cAAc;QACtB;AAEA;AACgD;AACzC,QAAA,MAAM,KAAK,GAAA;AAChB,YAAA,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;QACvB;;;;AAMQ,QAAA,mBAAmB,CAAC,IAAa,EAAA;AACvC,YAAA,OAAO,qBAAqB,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,SAAS,CAAC;QACnF;AAEQ,QAAA,OAAO,gBAAgB,GAAG,CAAC;AAE3B,QAAA,OAAO,aAAa,GAAA;YAC1B,aAAa,CAAC,gBAAgB,EAAE;AAChC,YAAA,IAAI,aAAa,CAAC,gBAAgB,KAAK,OAAO;AAAE,gBAAA,aAAa,CAAC,gBAAgB,GAAG,CAAC;YAClF,OAAO,aAAa,CAAC,gBAAgB;QACvC;;;;;;"}