@hashgraphonline/standards-sdk 0.1.179 → 0.1.181

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 (167) hide show
  1. package/dist/browser/services/registry-broker/client/base-client.d.ts +18 -1
  2. package/dist/browser/services/registry-broker/client/base-client.d.ts.map +1 -1
  3. package/dist/browser/services/registry-broker/client/guard.d.ts +15 -1
  4. package/dist/browser/services/registry-broker/client/guard.d.ts.map +1 -1
  5. package/dist/browser/services/registry-broker/schemas.d.ts +1705 -173
  6. package/dist/browser/services/registry-broker/schemas.d.ts.map +1 -1
  7. package/dist/browser/services/registry-broker/types.d.ts +32 -1
  8. package/dist/browser/services/registry-broker/types.d.ts.map +1 -1
  9. package/dist/browser/standards-sdk.browser.js +178 -9
  10. package/dist/browser/standards-sdk.browser.js.map +1 -1
  11. package/dist/browser-root/services/registry-broker/client/base-client.d.ts +18 -1
  12. package/dist/browser-root/services/registry-broker/client/base-client.d.ts.map +1 -1
  13. package/dist/browser-root/services/registry-broker/client/guard.d.ts +15 -1
  14. package/dist/browser-root/services/registry-broker/client/guard.d.ts.map +1 -1
  15. package/dist/browser-root/services/registry-broker/schemas.d.ts +1705 -173
  16. package/dist/browser-root/services/registry-broker/schemas.d.ts.map +1 -1
  17. package/dist/browser-root/services/registry-broker/types.d.ts +32 -1
  18. package/dist/browser-root/services/registry-broker/types.d.ts.map +1 -1
  19. package/dist/browser-root/standards-sdk.root-browser.js +682 -71
  20. package/dist/browser-root/standards-sdk.root-browser.js.map +1 -1
  21. package/dist/cjs/services/registry-broker/client/base-client.d.ts +18 -1
  22. package/dist/cjs/services/registry-broker/client/base-client.d.ts.map +1 -1
  23. package/dist/cjs/services/registry-broker/client/guard.d.ts +15 -1
  24. package/dist/cjs/services/registry-broker/client/guard.d.ts.map +1 -1
  25. package/dist/cjs/services/registry-broker/schemas.d.ts +1705 -173
  26. package/dist/cjs/services/registry-broker/schemas.d.ts.map +1 -1
  27. package/dist/cjs/services/registry-broker/types.d.ts +32 -1
  28. package/dist/cjs/services/registry-broker/types.d.ts.map +1 -1
  29. package/dist/cjs/standards-sdk.cjs +1 -1
  30. package/dist/cjs/standards-sdk.cjs.map +1 -1
  31. package/dist/es/services/registry-broker/client/base-client.d.ts +18 -1
  32. package/dist/es/services/registry-broker/client/base-client.d.ts.map +1 -1
  33. package/dist/es/services/registry-broker/client/guard.d.ts +15 -1
  34. package/dist/es/services/registry-broker/client/guard.d.ts.map +1 -1
  35. package/dist/es/services/registry-broker/schemas.d.ts +1705 -173
  36. package/dist/es/services/registry-broker/schemas.d.ts.map +1 -1
  37. package/dist/es/services/registry-broker/types.d.ts +32 -1
  38. package/dist/es/services/registry-broker/types.d.ts.map +1 -1
  39. package/dist/es/standards-sdk.es.js +10 -7
  40. package/dist/es/standards-sdk.es.js.map +1 -1
  41. package/dist/es/standards-sdk.es104.js +1 -1
  42. package/dist/es/standards-sdk.es106.js +1 -1
  43. package/dist/es/standards-sdk.es108.js +1 -1
  44. package/dist/es/standards-sdk.es11.js +1 -1
  45. package/dist/es/standards-sdk.es110.js +1 -1
  46. package/dist/es/standards-sdk.es116.js +1 -1
  47. package/dist/es/standards-sdk.es12.js +1 -1
  48. package/dist/es/standards-sdk.es121.js +1 -1
  49. package/dist/es/standards-sdk.es127.js +2 -2
  50. package/dist/es/standards-sdk.es128.js +5 -5
  51. package/dist/es/standards-sdk.es138.js +1 -1
  52. package/dist/es/standards-sdk.es139.js +1 -1
  53. package/dist/es/standards-sdk.es140.js +5 -5
  54. package/dist/es/standards-sdk.es142.js +2 -2
  55. package/dist/es/standards-sdk.es145.js +86 -15
  56. package/dist/es/standards-sdk.es145.js.map +1 -1
  57. package/dist/es/standards-sdk.es147.js +3 -3
  58. package/dist/es/standards-sdk.es148.js +4 -81
  59. package/dist/es/standards-sdk.es148.js.map +1 -1
  60. package/dist/es/standards-sdk.es149.js +71 -77
  61. package/dist/es/standards-sdk.es149.js.map +1 -1
  62. package/dist/es/standards-sdk.es150.js +80 -53
  63. package/dist/es/standards-sdk.es150.js.map +1 -1
  64. package/dist/es/standards-sdk.es151.js +53 -152
  65. package/dist/es/standards-sdk.es151.js.map +1 -1
  66. package/dist/es/standards-sdk.es152.js +159 -7
  67. package/dist/es/standards-sdk.es152.js.map +1 -1
  68. package/dist/es/standards-sdk.es153.js +7 -86
  69. package/dist/es/standards-sdk.es153.js.map +1 -1
  70. package/dist/es/standards-sdk.es154.js +64 -43
  71. package/dist/es/standards-sdk.es154.js.map +1 -1
  72. package/dist/es/standards-sdk.es155.js +65 -30
  73. package/dist/es/standards-sdk.es155.js.map +1 -1
  74. package/dist/es/standards-sdk.es156.js +30 -34
  75. package/dist/es/standards-sdk.es156.js.map +1 -1
  76. package/dist/es/standards-sdk.es157.js +34 -48
  77. package/dist/es/standards-sdk.es157.js.map +1 -1
  78. package/dist/es/standards-sdk.es158.js +48 -138
  79. package/dist/es/standards-sdk.es158.js.map +1 -1
  80. package/dist/es/standards-sdk.es159.js +133 -37
  81. package/dist/es/standards-sdk.es159.js.map +1 -1
  82. package/dist/es/standards-sdk.es16.js +2 -2
  83. package/dist/es/standards-sdk.es160.js +42 -2168
  84. package/dist/es/standards-sdk.es160.js.map +1 -1
  85. package/dist/es/standards-sdk.es162.js +2352 -672
  86. package/dist/es/standards-sdk.es162.js.map +1 -1
  87. package/dist/es/standards-sdk.es163.js +15 -109
  88. package/dist/es/standards-sdk.es163.js.map +1 -1
  89. package/dist/es/standards-sdk.es164.js +96 -58
  90. package/dist/es/standards-sdk.es164.js.map +1 -1
  91. package/dist/es/standards-sdk.es165.js +66 -165
  92. package/dist/es/standards-sdk.es165.js.map +1 -1
  93. package/dist/es/standards-sdk.es166.js +55 -321
  94. package/dist/es/standards-sdk.es166.js.map +1 -1
  95. package/dist/es/standards-sdk.es167.js +71 -336
  96. package/dist/es/standards-sdk.es167.js.map +1 -1
  97. package/dist/es/standards-sdk.es168.js +186 -439
  98. package/dist/es/standards-sdk.es168.js.map +1 -1
  99. package/dist/es/standards-sdk.es169.js +142 -301
  100. package/dist/es/standards-sdk.es169.js.map +1 -1
  101. package/dist/es/standards-sdk.es170.js +310 -64
  102. package/dist/es/standards-sdk.es170.js.map +1 -1
  103. package/dist/es/standards-sdk.es171.js +345 -55
  104. package/dist/es/standards-sdk.es171.js.map +1 -1
  105. package/dist/es/standards-sdk.es172.js +443 -71
  106. package/dist/es/standards-sdk.es172.js.map +1 -1
  107. package/dist/es/standards-sdk.es173.js +315 -184
  108. package/dist/es/standards-sdk.es173.js.map +1 -1
  109. package/dist/es/standards-sdk.es174.js +74 -15
  110. package/dist/es/standards-sdk.es174.js.map +1 -1
  111. package/dist/es/standards-sdk.es175.js +653 -120
  112. package/dist/es/standards-sdk.es175.js.map +1 -1
  113. package/dist/es/standards-sdk.es176.js +111 -303
  114. package/dist/es/standards-sdk.es176.js.map +1 -1
  115. package/dist/es/standards-sdk.es177.js +297 -225
  116. package/dist/es/standards-sdk.es177.js.map +1 -1
  117. package/dist/es/standards-sdk.es178.js +239 -176
  118. package/dist/es/standards-sdk.es178.js.map +1 -1
  119. package/dist/es/standards-sdk.es179.js +178 -101
  120. package/dist/es/standards-sdk.es179.js.map +1 -1
  121. package/dist/es/standards-sdk.es18.js +4 -4
  122. package/dist/es/standards-sdk.es180.js +75 -108
  123. package/dist/es/standards-sdk.es180.js.map +1 -1
  124. package/dist/es/standards-sdk.es181.js +116 -148
  125. package/dist/es/standards-sdk.es181.js.map +1 -1
  126. package/dist/es/standards-sdk.es182.js +146 -264
  127. package/dist/es/standards-sdk.es182.js.map +1 -1
  128. package/dist/es/standards-sdk.es183.js +661 -162
  129. package/dist/es/standards-sdk.es183.js.map +1 -1
  130. package/dist/es/standards-sdk.es184.js +156 -206
  131. package/dist/es/standards-sdk.es184.js.map +1 -1
  132. package/dist/es/standards-sdk.es185.js +219 -223
  133. package/dist/es/standards-sdk.es185.js.map +1 -1
  134. package/dist/es/standards-sdk.es186.js +242 -0
  135. package/dist/es/standards-sdk.es186.js.map +1 -0
  136. package/dist/es/standards-sdk.es19.js +2 -2
  137. package/dist/es/standards-sdk.es22.js +1 -1
  138. package/dist/es/standards-sdk.es27.js +4 -4
  139. package/dist/es/standards-sdk.es35.js +2 -2
  140. package/dist/es/standards-sdk.es36.js +2 -2
  141. package/dist/es/standards-sdk.es4.js +1 -1
  142. package/dist/es/standards-sdk.es53.js +1 -1
  143. package/dist/es/standards-sdk.es56.js +1 -1
  144. package/dist/es/standards-sdk.es59.js +1 -1
  145. package/dist/es/standards-sdk.es60.js +1 -1
  146. package/dist/es/standards-sdk.es62.js +1 -1
  147. package/dist/es/standards-sdk.es63.js +2 -2
  148. package/dist/es/standards-sdk.es64.js +1 -1
  149. package/dist/es/standards-sdk.es65.js +1 -1
  150. package/dist/es/standards-sdk.es66.js +1 -1
  151. package/dist/es/standards-sdk.es67.js +3 -3
  152. package/dist/es/standards-sdk.es69.js +1 -1
  153. package/dist/es/standards-sdk.es7.js +1 -1
  154. package/dist/es/standards-sdk.es71.js +1 -1
  155. package/dist/es/standards-sdk.es72.js +2 -2
  156. package/dist/es/standards-sdk.es75.js +2 -2
  157. package/dist/es/standards-sdk.es76.js +1 -1
  158. package/dist/es/standards-sdk.es78.js +1 -1
  159. package/dist/es/standards-sdk.es83.js +1 -1
  160. package/dist/es/standards-sdk.es84.js +2 -2
  161. package/dist/es/standards-sdk.es85.js +1 -1
  162. package/dist/es/standards-sdk.es88.js +1 -1
  163. package/dist/es/standards-sdk.es90.js +1 -1
  164. package/dist/es/standards-sdk.es94.js +3 -3
  165. package/dist/es/standards-sdk.es98.js +1 -1
  166. package/dist/es/standards-sdk.es99.js +1 -1
  167. package/package.json +1 -1
@@ -1,20 +1,79 @@
1
- import { Logger } from "./standards-sdk.es123.js";
2
- import { HederaMirrorNode } from "./standards-sdk.es144.js";
3
- class HCS5BaseClient {
4
- /**
5
- * Create a new HCS-5 base client
6
- */
7
- constructor(config) {
8
- this.network = config.network;
9
- this.logger = config.logger || Logger.getInstance({
10
- level: config.logLevel || "info",
11
- module: "HCS5Client",
12
- silent: config.silent
13
- });
14
- this.mirrorNode = new HederaMirrorNode(this.network, this.logger);
1
+ import { proto } from "@hashgraph/proto";
2
+ import { ContractId } from "@hashgraph/sdk";
3
+ import { Buffer } from "buffer";
4
+ function parseKey(key) {
5
+ if (!key) {
6
+ return void 0;
15
7
  }
8
+ if (key.contractID) {
9
+ return `ContractID: ${new ContractId(
10
+ key.contractID.shardNum ?? 0,
11
+ key.contractID.realmNum ?? 0,
12
+ key.contractID.contractNum ?? 0
13
+ ).toString()}`;
14
+ }
15
+ if (key.ed25519) {
16
+ return `ED25519: ${Buffer.from(key.ed25519).toString("hex")}`;
17
+ }
18
+ if (key.ECDSASecp256k1) {
19
+ return `ECDSA_secp256k1: ${Buffer.from(key.ECDSASecp256k1).toString(
20
+ "hex"
21
+ )}`;
22
+ }
23
+ if (key?.keyList?.keys?.length > 0) {
24
+ const keys = key.keyList.keys.map((k) => parseKey(k)).filter(Boolean);
25
+ return `KeyList (${keys.length} keys): [${keys.join(", ")}]`;
26
+ }
27
+ if (key?.thresholdKey?.keys?.keys?.length > 0) {
28
+ const keys = key.thresholdKey.keys.keys.map((k) => parseKey(k)).filter(Boolean);
29
+ return `ThresholdKey (${key.thresholdKey.threshold} of ${keys.length}): [${keys.join(", ")}]`;
30
+ }
31
+ if (key.delegatableContractId) {
32
+ return `DelegatableContractID: ${new ContractId(
33
+ key.delegatableContractId.shardNum ?? 0,
34
+ key.delegatableContractId.realmNum ?? 0,
35
+ key.delegatableContractId.contractNum ?? 0
36
+ ).toString()}`;
37
+ }
38
+ if (Object.keys(key).length === 0) {
39
+ return "Empty Key Structure";
40
+ }
41
+ return "Unknown or Unset Key Type";
42
+ }
43
+ function extractTransactionBody(transaction) {
44
+ try {
45
+ const bytes = transaction.toBytes ? transaction.toBytes() : void 0;
46
+ if (!bytes) {
47
+ return null;
48
+ }
49
+ const decoded = proto.TransactionList.decode(bytes);
50
+ if (!decoded.transactionList || decoded.transactionList.length === 0) {
51
+ return null;
52
+ }
53
+ const tx = decoded.transactionList[0];
54
+ if (tx.bodyBytes && tx.bodyBytes.length > 0) {
55
+ return proto.TransactionBody.decode(tx.bodyBytes);
56
+ }
57
+ if (tx.signedTransactionBytes && tx.signedTransactionBytes.length > 0) {
58
+ const signedTx = proto.SignedTransaction.decode(
59
+ tx.signedTransactionBytes
60
+ );
61
+ if (signedTx.bodyBytes) {
62
+ return proto.TransactionBody.decode(signedTx.bodyBytes);
63
+ }
64
+ }
65
+ return null;
66
+ } catch (error) {
67
+ return null;
68
+ }
69
+ }
70
+ function hasTransactionType(transaction, transactionField) {
71
+ const txBody = extractTransactionBody(transaction);
72
+ return !!(txBody && txBody[transactionField]);
16
73
  }
17
74
  export {
18
- HCS5BaseClient
75
+ extractTransactionBody,
76
+ hasTransactionType,
77
+ parseKey
19
78
  };
20
79
  //# sourceMappingURL=standards-sdk.es174.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es174.js","sources":["../../src/hcs-5/base-client.ts"],"sourcesContent":["import { Logger, ILogger } from '../utils/logger';\nimport { HederaMirrorNode } from '../services/mirror-node';\nimport { HCS5ClientConfig } from './types';\nimport { NetworkType } from '../utils/types';\n\n/**\n * Base client for HCS-5 operations\n */\nexport abstract class HCS5BaseClient {\n protected logger: ILogger;\n protected mirrorNode: HederaMirrorNode;\n protected network: NetworkType;\n\n /**\n * Create a new HCS-5 base client\n */\n constructor(config: HCS5ClientConfig) {\n this.network = config.network;\n this.logger =\n config.logger ||\n Logger.getInstance({\n level: config.logLevel || 'info',\n module: 'HCS5Client',\n silent: config.silent,\n });\n\n this.mirrorNode = new HederaMirrorNode(this.network, this.logger);\n }\n}\n"],"names":[],"mappings":";;AAQO,MAAe,eAAe;AAAA;AAAA;AAAA;AAAA,EAQnC,YAAY,QAA0B;AACpC,SAAK,UAAU,OAAO;AACtB,SAAK,SACH,OAAO,UACP,OAAO,YAAY;AAAA,MACjB,OAAO,OAAO,YAAY;AAAA,MAC1B,QAAQ;AAAA,MACR,QAAQ,OAAO;AAAA,IAAA,CAChB;AAEH,SAAK,aAAa,IAAI,iBAAiB,KAAK,SAAS,KAAK,MAAM;AAAA,EAClE;AACF;"}
1
+ {"version":3,"file":"standards-sdk.es174.js","sources":["../../src/utils/parsers/parser-utils.ts"],"sourcesContent":["import { proto } from '@hashgraph/proto';\nimport { ContractId, Transaction } from '@hashgraph/sdk';\nimport { Buffer } from 'buffer';\n\nexport function parseKey(\n key: proto.IKey | null | undefined,\n): string | undefined {\n if (!key) {\n return undefined;\n }\n\n if (key.contractID) {\n return `ContractID: ${new ContractId(\n key.contractID.shardNum ?? 0,\n key.contractID.realmNum ?? 0,\n key.contractID.contractNum ?? 0,\n ).toString()}`;\n }\n if (key.ed25519) {\n return `ED25519: ${Buffer.from(key.ed25519).toString('hex')}`;\n }\n if (key.ECDSASecp256k1) {\n return `ECDSA_secp256k1: ${Buffer.from(key.ECDSASecp256k1).toString(\n 'hex',\n )}`;\n }\n if (key?.keyList?.keys?.length > 0) {\n const keys = key.keyList.keys.map(k => parseKey(k)).filter(Boolean);\n return `KeyList (${keys.length} keys): [${keys.join(', ')}]`;\n }\n if (key?.thresholdKey?.keys?.keys?.length > 0) {\n const keys = key.thresholdKey.keys.keys\n .map(k => parseKey(k))\n .filter(Boolean);\n return `ThresholdKey (${key.thresholdKey.threshold} of ${\n keys.length\n }): [${keys.join(', ')}]`;\n }\n if (key.delegatableContractId) {\n return `DelegatableContractID: ${new ContractId(\n key.delegatableContractId.shardNum ?? 0,\n key.delegatableContractId.realmNum ?? 0,\n key.delegatableContractId.contractNum ?? 0,\n ).toString()}`;\n }\n if (Object.keys(key).length === 0) {\n return 'Empty Key Structure';\n }\n\n return 'Unknown or Unset Key Type';\n}\n\n/**\n * Extract TransactionBody from Transaction object using protobuf parsing\n * This replaces fragile constructor name checking with reliable protobuf data\n */\nexport function extractTransactionBody(\n transaction: Transaction,\n): proto.ITransactionBody | null {\n try {\n const bytes = transaction.toBytes ? transaction.toBytes() : undefined;\n if (!bytes) {\n return null;\n }\n\n const decoded = proto.TransactionList.decode(bytes);\n if (!decoded.transactionList || decoded.transactionList.length === 0) {\n return null;\n }\n\n const tx = decoded.transactionList[0];\n\n if (tx.bodyBytes && tx.bodyBytes.length > 0) {\n return proto.TransactionBody.decode(tx.bodyBytes);\n }\n\n if (tx.signedTransactionBytes && tx.signedTransactionBytes.length > 0) {\n const signedTx = proto.SignedTransaction.decode(\n tx.signedTransactionBytes,\n );\n if (signedTx.bodyBytes) {\n return proto.TransactionBody.decode(signedTx.bodyBytes);\n }\n }\n\n return null;\n } catch (error) {\n return null;\n }\n}\n\n/**\n * Check if transaction has specific transaction type using protobuf data\n * This replaces constructor name checking with reliable protobuf field detection\n */\nexport function hasTransactionType(\n transaction: Transaction,\n transactionField: keyof proto.ITransactionBody,\n): boolean {\n const txBody = extractTransactionBody(transaction);\n return !!(txBody && txBody[transactionField]);\n}\n"],"names":[],"mappings":";;;AAIO,SAAS,SACd,KACoB;AACpB,MAAI,CAAC,KAAK;AACR,WAAO;AAAA,EACT;AAEA,MAAI,IAAI,YAAY;AAClB,WAAO,eAAe,IAAI;AAAA,MACxB,IAAI,WAAW,YAAY;AAAA,MAC3B,IAAI,WAAW,YAAY;AAAA,MAC3B,IAAI,WAAW,eAAe;AAAA,IAAA,EAC9B,UAAU;AAAA,EACd;AACA,MAAI,IAAI,SAAS;AACf,WAAO,YAAY,OAAO,KAAK,IAAI,OAAO,EAAE,SAAS,KAAK,CAAC;AAAA,EAC7D;AACA,MAAI,IAAI,gBAAgB;AACtB,WAAO,oBAAoB,OAAO,KAAK,IAAI,cAAc,EAAE;AAAA,MACzD;AAAA,IAAA,CACD;AAAA,EACH;AACA,MAAI,KAAK,SAAS,MAAM,SAAS,GAAG;AAClC,UAAM,OAAO,IAAI,QAAQ,KAAK,IAAI,CAAA,MAAK,SAAS,CAAC,CAAC,EAAE,OAAO,OAAO;AAClE,WAAO,YAAY,KAAK,MAAM,YAAY,KAAK,KAAK,IAAI,CAAC;AAAA,EAC3D;AACA,MAAI,KAAK,cAAc,MAAM,MAAM,SAAS,GAAG;AAC7C,UAAM,OAAO,IAAI,aAAa,KAAK,KAChC,IAAI,CAAA,MAAK,SAAS,CAAC,CAAC,EACpB,OAAO,OAAO;AACjB,WAAO,iBAAiB,IAAI,aAAa,SAAS,OAChD,KAAK,MACP,OAAO,KAAK,KAAK,IAAI,CAAC;AAAA,EACxB;AACA,MAAI,IAAI,uBAAuB;AAC7B,WAAO,0BAA0B,IAAI;AAAA,MACnC,IAAI,sBAAsB,YAAY;AAAA,MACtC,IAAI,sBAAsB,YAAY;AAAA,MACtC,IAAI,sBAAsB,eAAe;AAAA,IAAA,EACzC,UAAU;AAAA,EACd;AACA,MAAI,OAAO,KAAK,GAAG,EAAE,WAAW,GAAG;AACjC,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAMO,SAAS,uBACd,aAC+B;AAC/B,MAAI;AACF,UAAM,QAAQ,YAAY,UAAU,YAAY,YAAY;AAC5D,QAAI,CAAC,OAAO;AACV,aAAO;AAAA,IACT;AAEA,UAAM,UAAU,MAAM,gBAAgB,OAAO,KAAK;AAClD,QAAI,CAAC,QAAQ,mBAAmB,QAAQ,gBAAgB,WAAW,GAAG;AACpE,aAAO;AAAA,IACT;AAEA,UAAM,KAAK,QAAQ,gBAAgB,CAAC;AAEpC,QAAI,GAAG,aAAa,GAAG,UAAU,SAAS,GAAG;AAC3C,aAAO,MAAM,gBAAgB,OAAO,GAAG,SAAS;AAAA,IAClD;AAEA,QAAI,GAAG,0BAA0B,GAAG,uBAAuB,SAAS,GAAG;AACrE,YAAM,WAAW,MAAM,kBAAkB;AAAA,QACvC,GAAG;AAAA,MAAA;AAEL,UAAI,SAAS,WAAW;AACtB,eAAO,MAAM,gBAAgB,OAAO,SAAS,SAAS;AAAA,MACxD;AAAA,IACF;AAEA,WAAO;AAAA,EACT,SAAS,OAAO;AACd,WAAO;AAAA,EACT;AACF;AAMO,SAAS,mBACd,aACA,kBACS;AACT,QAAM,SAAS,uBAAuB,WAAW;AACjD,SAAO,CAAC,EAAE,UAAU,OAAO,gBAAgB;AAC7C;"}