@algorandfoundation/algokit-utils 6.2.1 → 6.3.0-beta.1

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 (159) hide show
  1. package/account/account.d.ts +13 -5
  2. package/account/account.d.ts.map +1 -1
  3. package/account/account.js +26 -6
  4. package/account/account.js.map +1 -1
  5. package/account/account.mjs +26 -6
  6. package/account/account.mjs.map +1 -1
  7. package/account/get-account.d.ts +4 -4
  8. package/account/get-account.js +2 -2
  9. package/account/get-account.mjs +2 -2
  10. package/amount.d.ts +28 -6
  11. package/amount.d.ts.map +1 -1
  12. package/amount.js +31 -11
  13. package/amount.js.map +1 -1
  14. package/amount.mjs +30 -12
  15. package/amount.mjs.map +1 -1
  16. package/asset.d.ts +10 -0
  17. package/asset.d.ts.map +1 -1
  18. package/asset.js +71 -198
  19. package/asset.js.map +1 -1
  20. package/asset.mjs +72 -199
  21. package/asset.mjs.map +1 -1
  22. package/dispenser-client.d.ts +1 -1
  23. package/dispenser-client.js +2 -2
  24. package/dispenser-client.js.map +1 -1
  25. package/dispenser-client.mjs +2 -2
  26. package/dispenser-client.mjs.map +1 -1
  27. package/index.d.ts +4 -3
  28. package/index.d.ts.map +1 -1
  29. package/index.js +11 -8
  30. package/index.js.map +1 -1
  31. package/index.mjs +6 -4
  32. package/index.mjs.map +1 -1
  33. package/localnet/get-or-create-kmd-wallet-account.d.ts +1 -1
  34. package/localnet/get-or-create-kmd-wallet-account.js +1 -1
  35. package/localnet/get-or-create-kmd-wallet-account.mjs +1 -1
  36. package/package.json +3 -2
  37. package/testing/_asset.d.ts +2 -4
  38. package/testing/_asset.d.ts.map +1 -1
  39. package/testing/account.js +8 -2
  40. package/testing/account.js.map +1 -1
  41. package/testing/account.mjs +8 -2
  42. package/testing/account.mjs.map +1 -1
  43. package/testing/fixtures/algorand-fixture.d.ts +1 -1
  44. package/testing/fixtures/algorand-fixture.js +7 -2
  45. package/testing/fixtures/algorand-fixture.js.map +1 -1
  46. package/testing/fixtures/algorand-fixture.mjs +7 -2
  47. package/testing/fixtures/algorand-fixture.mjs.map +1 -1
  48. package/transaction/legacy-bridge.d.ts +10 -0
  49. package/transaction/legacy-bridge.d.ts.map +1 -0
  50. package/transaction/legacy-bridge.js +35 -0
  51. package/transaction/legacy-bridge.js.map +1 -0
  52. package/transaction/legacy-bridge.mjs +33 -0
  53. package/transaction/legacy-bridge.mjs.map +1 -0
  54. package/transaction/transaction.d.ts +1 -1
  55. package/transaction/transaction.js +5 -5
  56. package/transaction/transaction.js.map +1 -1
  57. package/transaction/transaction.mjs +5 -5
  58. package/transaction/transaction.mjs.map +1 -1
  59. package/transfer/transfer-algos.d.ts +4 -2
  60. package/transfer/transfer-algos.d.ts.map +1 -1
  61. package/transfer/transfer-algos.js +13 -22
  62. package/transfer/transfer-algos.js.map +1 -1
  63. package/transfer/transfer-algos.mjs +14 -23
  64. package/transfer/transfer-algos.mjs.map +1 -1
  65. package/transfer/transfer.d.ts +8 -1
  66. package/transfer/transfer.d.ts.map +1 -1
  67. package/transfer/transfer.js +57 -94
  68. package/transfer/transfer.js.map +1 -1
  69. package/transfer/transfer.mjs +58 -95
  70. package/transfer/transfer.mjs.map +1 -1
  71. package/types/account-manager.d.ts +141 -24
  72. package/types/account-manager.d.ts.map +1 -1
  73. package/types/account-manager.js +217 -44
  74. package/types/account-manager.js.map +1 -1
  75. package/types/account-manager.mjs +216 -43
  76. package/types/account-manager.mjs.map +1 -1
  77. package/types/account.d.ts +122 -7
  78. package/types/account.d.ts.map +1 -1
  79. package/types/account.js.map +1 -1
  80. package/types/account.mjs.map +1 -1
  81. package/types/algorand-client-transaction-creator.d.ts +289 -0
  82. package/types/algorand-client-transaction-creator.d.ts.map +1 -0
  83. package/types/algorand-client-transaction-creator.js +299 -0
  84. package/types/algorand-client-transaction-creator.js.map +1 -0
  85. package/types/algorand-client-transaction-creator.mjs +297 -0
  86. package/types/algorand-client-transaction-creator.mjs.map +1 -0
  87. package/types/algorand-client-transaction-sender.d.ts +433 -0
  88. package/types/algorand-client-transaction-sender.d.ts.map +1 -0
  89. package/types/algorand-client-transaction-sender.js +422 -0
  90. package/types/algorand-client-transaction-sender.js.map +1 -0
  91. package/types/algorand-client-transaction-sender.mjs +420 -0
  92. package/types/algorand-client-transaction-sender.mjs.map +1 -0
  93. package/types/algorand-client.d.ts +28 -78
  94. package/types/algorand-client.d.ts.map +1 -1
  95. package/types/algorand-client.js +33 -122
  96. package/types/algorand-client.js.map +1 -1
  97. package/types/algorand-client.mjs +34 -123
  98. package/types/algorand-client.mjs.map +1 -1
  99. package/types/amount.d.ts +18 -6
  100. package/types/amount.d.ts.map +1 -1
  101. package/types/amount.js +33 -10
  102. package/types/amount.js.map +1 -1
  103. package/types/amount.mjs +33 -10
  104. package/types/amount.mjs.map +1 -1
  105. package/types/app-client.d.ts +3 -3
  106. package/types/app-client.d.ts.map +1 -1
  107. package/types/app-client.js +7 -10
  108. package/types/app-client.js.map +1 -1
  109. package/types/app-client.mjs +8 -11
  110. package/types/app-client.mjs.map +1 -1
  111. package/types/asset-manager.d.ts +205 -0
  112. package/types/asset-manager.d.ts.map +1 -0
  113. package/types/asset-manager.js +180 -0
  114. package/types/asset-manager.js.map +1 -0
  115. package/types/asset-manager.mjs +178 -0
  116. package/types/asset-manager.mjs.map +1 -0
  117. package/types/asset.d.ts +4 -4
  118. package/types/asset.d.ts.map +1 -1
  119. package/types/client-manager.d.ts +40 -2
  120. package/types/client-manager.d.ts.map +1 -1
  121. package/types/client-manager.js +44 -3
  122. package/types/client-manager.js.map +1 -1
  123. package/types/client-manager.mjs +44 -3
  124. package/types/client-manager.mjs.map +1 -1
  125. package/types/composer.d.ts +226 -68
  126. package/types/composer.d.ts.map +1 -1
  127. package/types/composer.js +78 -64
  128. package/types/composer.js.map +1 -1
  129. package/types/composer.mjs +75 -64
  130. package/types/composer.mjs.map +1 -1
  131. package/types/dispenser-client.d.ts +12 -4
  132. package/types/dispenser-client.d.ts.map +1 -1
  133. package/types/dispenser-client.js +9 -9
  134. package/types/dispenser-client.js.map +1 -1
  135. package/types/dispenser-client.mjs +9 -9
  136. package/types/dispenser-client.mjs.map +1 -1
  137. package/types/indexer.d.ts +7 -7
  138. package/types/indexer.d.ts.map +1 -1
  139. package/types/kmd-account-manager.d.ts +3 -3
  140. package/types/kmd-account-manager.js +6 -6
  141. package/types/kmd-account-manager.js.map +1 -1
  142. package/types/kmd-account-manager.mjs +7 -7
  143. package/types/kmd-account-manager.mjs.map +1 -1
  144. package/types/network-client.d.ts +7 -1
  145. package/types/network-client.d.ts.map +1 -1
  146. package/types/network-client.js +10 -0
  147. package/types/network-client.js.map +1 -1
  148. package/types/network-client.mjs +9 -0
  149. package/types/network-client.mjs.map +1 -1
  150. package/types/testing.d.ts +1 -1
  151. package/types/testing.d.ts.map +1 -1
  152. package/types/transfer.d.ts +8 -7
  153. package/types/transfer.d.ts.map +1 -1
  154. package/util.d.ts +13 -0
  155. package/util.d.ts.map +1 -1
  156. package/util.js +25 -0
  157. package/util.js.map +1 -1
  158. package/util.mjs +24 -1
  159. package/util.mjs.map +1 -1
@@ -0,0 +1,297 @@
1
+ /** Orchestrates creating transactions for `AlgorandClient`. */
2
+ class AlgorandClientTransactionCreator {
3
+ /**
4
+ * Creates a new `AlgorandClientTransactionCreator`
5
+ * @param newGroup A lambda that starts a new `AlgoKitComposer` transaction group
6
+ */
7
+ constructor(newGroup) {
8
+ /**
9
+ * Create a payment transaction to transfer Algo between accounts.
10
+ * @param params The parameters for the payment transaction
11
+ * @example Basic example
12
+ * ```typescript
13
+ * const result = await algorandClient.send.payment({
14
+ * sender: 'SENDERADDRESS',
15
+ * receiver: 'RECEIVERADDRESS',
16
+ * amount: (4).algo(),
17
+ * })
18
+ * ```
19
+ * @example Advanced example
20
+ * ```typescript
21
+ * const result = await algorandClient.send.payment({
22
+ * amount: (4).algo(),
23
+ * receiver: 'RECEIVERADDRESS',
24
+ * sender: 'SENDERADDRESS',
25
+ * closeRemainderTo: 'CLOSEREMAINDERTOADDRESS',
26
+ * lease: 'lease',
27
+ * note: 'note',
28
+ * // Use this with caution, it's generally better to use algorand.account.rekeyAccount
29
+ * rekeyTo: 'REKEYTOADDRESS',
30
+ * // You wouldn't normally set this field
31
+ * firstValidRound: 1000n,
32
+ * validityWindow: 10,
33
+ * extraFee: (1000).microAlgo(),
34
+ * staticFee: (1000).microAlgo(),
35
+ * // Max fee doesn't make sense with extraFee AND staticFee
36
+ * // already specified, but here for completeness
37
+ * maxFee: (3000).microAlgo(),
38
+ * })
39
+ * ```
40
+ *
41
+ * @returns The payment transaction
42
+ */
43
+ this.payment = this._transaction((c) => c.addPayment);
44
+ /** Create a create Algorand Standard Asset transaction.
45
+ *
46
+ * The account that sends this transaction will automatically be
47
+ * opted in to the asset and will hold all units after creation.
48
+ *
49
+ * @param params The parameters for the asset creation transaction
50
+ *
51
+ * @example Basic example
52
+ * ```typescript
53
+ * await algorand.transaction.assetCreate({sender: "CREATORADDRESS", total: 100n})
54
+ * ```
55
+ * @example Advanced example
56
+ * ```typescript
57
+ * await algorand.transaction.assetCreate({
58
+ * sender: 'CREATORADDRESS',
59
+ * total: 100n,
60
+ * decimals: 2,
61
+ * assetName: 'asset',
62
+ * unitName: 'unit',
63
+ * url: 'url',
64
+ * metadataHash: 'metadataHash',
65
+ * defaultFrozen: false,
66
+ * manager: 'MANAGERADDRESS',
67
+ * reserve: 'RESERVEADDRESS',
68
+ * freeze: 'FREEZEADDRESS',
69
+ * clawback: 'CLAWBACKADDRESS',
70
+ * lease: 'lease',
71
+ * note: 'note',
72
+ * // You wouldn't normally set this field
73
+ * firstValidRound: 1000n,
74
+ * validityWindow: 10,
75
+ * extraFee: (1000).microAlgo(),
76
+ * staticFee: (1000).microAlgo(),
77
+ * // Max fee doesn't make sense with extraFee AND staticFee
78
+ * // already specified, but here for completeness
79
+ * maxFee: (3000).microAlgo(),
80
+ * })
81
+ * ```
82
+ * @returns The asset create transaction
83
+ */
84
+ this.assetCreate = this._transaction((c) => c.addAssetCreate);
85
+ /** Create an asset config transaction to reconfigure an existing Algorand Standard Asset.
86
+ *
87
+ * **Note:** The manager, reserve, freeze, and clawback addresses
88
+ * are immutably empty if they are not set. If manager is not set then
89
+ * all fields are immutable from that point forward.
90
+ *
91
+ * @param params The parameters for the asset config transaction
92
+ *
93
+ * @example Basic example
94
+ * ```typescript
95
+ * await algorand.transaction.assetConfig({sender: "MANAGERADDRESS", assetId: 123456n, manager: "MANAGERADDRESS" })
96
+ * ```
97
+ * @example Advanced example
98
+ * ```typescript
99
+ * await algorand.transaction.assetConfig({
100
+ * sender: 'MANAGERADDRESS',
101
+ * assetId: 123456n,
102
+ * manager: 'MANAGERADDRESS',
103
+ * reserve: 'RESERVEADDRESS',
104
+ * freeze: 'FREEZEADDRESS',
105
+ * clawback: 'CLAWBACKADDRESS',
106
+ * lease: 'lease',
107
+ * note: 'note',
108
+ * // You wouldn't normally set this field
109
+ * firstValidRound: 1000n,
110
+ * validityWindow: 10,
111
+ * extraFee: (1000).microAlgo(),
112
+ * staticFee: (1000).microAlgo(),
113
+ * // Max fee doesn't make sense with extraFee AND staticFee
114
+ * // already specified, but here for completeness
115
+ * maxFee: (3000).microAlgo(),
116
+ * })
117
+ * ```
118
+ * @returns The asset config transaction
119
+ */
120
+ this.assetConfig = this._transaction((c) => c.addAssetConfig);
121
+ /** Create an Algorand Standard Asset freeze transaction.
122
+ *
123
+ * @param params The parameters for the asset freeze transaction
124
+ *
125
+ * @example Basic example
126
+ * ```typescript
127
+ * await algorand.transaction.assetFreeze({sender: "MANAGERADDRESS", assetId: 123456n, account: "ACCOUNTADDRESS", frozen: true })
128
+ * ```
129
+ * @example Advanced example
130
+ * ```typescript
131
+ * await algorand.transaction.assetFreeze({
132
+ * sender: 'MANAGERADDRESS',
133
+ * assetId: 123456n,
134
+ * account: 'ACCOUNTADDRESS',
135
+ * frozen: true,
136
+ * lease: 'lease',
137
+ * note: 'note',
138
+ * // You wouldn't normally set this field
139
+ * firstValidRound: 1000n,
140
+ * validityWindow: 10,
141
+ * extraFee: (1000).microAlgo(),
142
+ * staticFee: (1000).microAlgo(),
143
+ * // Max fee doesn't make sense with extraFee AND staticFee
144
+ * // already specified, but here for completeness
145
+ * maxFee: (3000).microAlgo(),
146
+ * })
147
+ * ```
148
+ * @returns The asset freeze transaction
149
+ */
150
+ this.assetFreeze = this._transaction((c) => c.addAssetFreeze);
151
+ /** Create an Algorand Standard Asset destroy transaction.
152
+ *
153
+ * Created assets can be destroyed only by the asset manager account.
154
+ * All of the assets must be owned by the creator of the asset before
155
+ * the asset can be deleted.
156
+ *
157
+ * @param params The parameters for the asset destroy transaction
158
+ *
159
+ * @example Basic example
160
+ * ```typescript
161
+ * await algorand.transaction.assetDestroy({sender: "MANAGERADDRESS", assetId: 123456n })
162
+ * ```
163
+ * @example Advanced example
164
+ * ```typescript
165
+ * await algorand.transaction.assetDestroy({
166
+ * sender: 'MANAGERADDRESS',
167
+ * assetId: 123456n,
168
+ * lease: 'lease',
169
+ * note: 'note',
170
+ * // You wouldn't normally set this field
171
+ * firstValidRound: 1000n,
172
+ * validityWindow: 10,
173
+ * extraFee: (1000).microAlgo(),
174
+ * staticFee: (1000).microAlgo(),
175
+ * // Max fee doesn't make sense with extraFee AND staticFee
176
+ * // already specified, but here for completeness
177
+ * maxFee: (3000).microAlgo(),
178
+ * })
179
+ * ```
180
+ * @returns The asset destroy transaction
181
+ */
182
+ this.assetDestroy = this._transaction((c) => c.addAssetDestroy);
183
+ /** Create an Algorand Standard Asset transfer transaction.
184
+ *
185
+ * @param params The parameters for the asset transfer transaction
186
+ *
187
+ * @example Basic example
188
+ * ```typescript
189
+ * await algorand.transaction.assetTransfer({sender: "HOLDERADDRESS", assetId: 123456n, amount: 1n, receiver: "RECEIVERADDRESS" })
190
+ * ```
191
+ * @example Advanced example (with clawback)
192
+ * ```typescript
193
+ * await algorand.transaction.assetTransfer({
194
+ * sender: 'CLAWBACKADDRESS',
195
+ * assetId: 123456n,
196
+ * amount: 1n,
197
+ * receiver: 'RECEIVERADDRESS',
198
+ * clawbackTarget: 'HOLDERADDRESS',
199
+ * // This field needs to be used with caution
200
+ * closeAssetTo: 'ADDRESSTOCLOSETO'
201
+ * lease: 'lease',
202
+ * note: 'note',
203
+ * // You wouldn't normally set this field
204
+ * firstValidRound: 1000n,
205
+ * validityWindow: 10,
206
+ * extraFee: (1000).microAlgo(),
207
+ * staticFee: (1000).microAlgo(),
208
+ * // Max fee doesn't make sense with extraFee AND staticFee
209
+ * // already specified, but here for completeness
210
+ * maxFee: (3000).microAlgo(),
211
+ * })
212
+ * ```
213
+ * @returns The result of the asset transfer transaction
214
+ */
215
+ this.assetTransfer = this._transaction((c) => c.addAssetTransfer);
216
+ /** Create an Algorand Standard Asset opt-in transaction.
217
+ *
218
+ * @param params The parameters for the asset opt-in transaction
219
+ *
220
+ * @example Basic example
221
+ * ```typescript
222
+ * await algorand.transaction.assetOptIn({sender: "SENDERADDRESS", assetId: 123456n })
223
+ * ```
224
+ * @example Advanced example
225
+ * ```typescript
226
+ * await algorand.transaction.assetOptIn({
227
+ * sender: 'SENDERADDRESS',
228
+ * assetId: 123456n,
229
+ * lease: 'lease',
230
+ * note: 'note',
231
+ * // You wouldn't normally set this field
232
+ * firstValidRound: 1000n,
233
+ * validityWindow: 10,
234
+ * extraFee: (1000).microAlgo(),
235
+ * staticFee: (1000).microAlgo(),
236
+ * // Max fee doesn't make sense with extraFee AND staticFee
237
+ * // already specified, but here for completeness
238
+ * maxFee: (3000).microAlgo(),
239
+ * })
240
+ * ```
241
+ * @returns The asset opt-in transaction
242
+ */
243
+ this.assetOptIn = this._transaction((c) => c.addAssetOptIn);
244
+ /** Create an asset opt-out transaction.
245
+ *
246
+ * *Note:* If the account has a balance of the asset,
247
+ * it will lose those assets
248
+ *
249
+ * @param params The parameters for the asset opt-out transaction
250
+ *
251
+ * @example Basic example
252
+ * ```typescript
253
+ * await algorand.transaction.assetOptOut({sender: "SENDERADDRESS", creator: "CREATORADDRESS", assetId: 123456n })
254
+ * ```
255
+ * @example Advanced example
256
+ * ```typescript
257
+ * await algorand.transaction.assetOptIn({
258
+ * sender: 'SENDERADDRESS',
259
+ * assetId: 123456n,
260
+ * creator: 'CREATORADDRESS',
261
+ * ensureZeroBalance: true,
262
+ * lease: 'lease',
263
+ * note: 'note',
264
+ * // You wouldn't normally set this field
265
+ * firstValidRound: 1000n,
266
+ * validityWindow: 10,
267
+ * extraFee: (1000).microAlgo(),
268
+ * staticFee: (1000).microAlgo(),
269
+ * // Max fee doesn't make sense with extraFee AND staticFee
270
+ * // already specified, but here for completeness
271
+ * maxFee: (3000).microAlgo(),
272
+ * })
273
+ * ```
274
+ * @returns The asset opt-out transaction
275
+ */
276
+ this.assetOptOut = this._transaction((c) => c.addAssetOptOut);
277
+ /** Create an application call transaction. */
278
+ this.appCall = this._transaction((c) => c.addAppCall);
279
+ /** Create an application call with ABI method call transaction. */
280
+ this.methodCall = async (params) => {
281
+ return await this._newGroup().addMethodCall(params).buildTransactions();
282
+ };
283
+ /** Create an online key registration transaction. */
284
+ this.onlineKeyRegistration = this._transaction((c) => c.addOnlineKeyRegistration);
285
+ this._newGroup = newGroup;
286
+ }
287
+ _transaction(c) {
288
+ return async (params) => {
289
+ const composer = this._newGroup();
290
+ const result = await c(composer).apply(composer, [params]).buildTransactions();
291
+ return result[result.length - 1];
292
+ };
293
+ }
294
+ }
295
+
296
+ export { AlgorandClientTransactionCreator };
297
+ //# sourceMappingURL=algorand-client-transaction-creator.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"algorand-client-transaction-creator.mjs","sources":["../../src/types/algorand-client-transaction-creator.ts"],"sourcesContent":[null],"names":[],"mappings":"AAKA;MACa,gCAAgC,CAAA;AAG3C;;;AAGG;AACH,IAAA,WAAA,CAAY,QAA+B,EAAA;AAY3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAA;AAChD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCG;AACH,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,CAAA;AACxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCG;AACH,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,CAAA;AACxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BG;AACH,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,CAAA;AACxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BG;AACH,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,CAAA;AAC1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BG;AACH,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAA;AAC5D;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BG;AACH,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,CAAA;AACtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BG;AACH,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,CAAA;;AAExD,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAA;;AAEhD,QAAA,IAAA,CAAA,UAAU,GAAG,OAAO,MAAwB,KAAI;AAC9C,YAAA,OAAO,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,iBAAiB,EAAE,CAAA;AACzE,SAAC,CAAA;;AAED,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,wBAAwB,CAAC,CAAA;AA/R1E,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;KAC1B;AAEO,IAAA,YAAY,CAAI,CAAyD,EAAA;AAC/E,QAAA,OAAO,OAAO,MAAS,KAAI;AACzB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;AACjC,YAAA,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAA;YAC9E,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AAClC,SAAC,CAAA;KACF;AAuRF;;;;"}