@bsv/sdk 1.4.17 → 1.4.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/cjs/package.json +1 -1
  2. package/dist/cjs/src/kvstore/LocalKVStore.js +152 -141
  3. package/dist/cjs/src/kvstore/LocalKVStore.js.map +1 -1
  4. package/dist/cjs/src/wallet/WERR_REVIEW_ACTIONS.js +29 -0
  5. package/dist/cjs/src/wallet/WERR_REVIEW_ACTIONS.js.map +1 -0
  6. package/dist/cjs/src/wallet/WalletError.js +4 -3
  7. package/dist/cjs/src/wallet/WalletError.js.map +1 -1
  8. package/dist/cjs/src/wallet/index.js +4 -1
  9. package/dist/cjs/src/wallet/index.js.map +1 -1
  10. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js +13 -6
  11. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  12. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  13. package/dist/esm/src/kvstore/LocalKVStore.js +151 -141
  14. package/dist/esm/src/kvstore/LocalKVStore.js.map +1 -1
  15. package/dist/esm/src/wallet/WERR_REVIEW_ACTIONS.js +31 -0
  16. package/dist/esm/src/wallet/WERR_REVIEW_ACTIONS.js.map +1 -0
  17. package/dist/esm/src/wallet/WalletError.js +3 -2
  18. package/dist/esm/src/wallet/WalletError.js.map +1 -1
  19. package/dist/esm/src/wallet/index.js +2 -0
  20. package/dist/esm/src/wallet/index.js.map +1 -1
  21. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js +13 -6
  22. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  23. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  24. package/dist/types/src/kvstore/LocalKVStore.d.ts +10 -4
  25. package/dist/types/src/kvstore/LocalKVStore.d.ts.map +1 -1
  26. package/dist/types/src/wallet/WERR_REVIEW_ACTIONS.d.ts +23 -0
  27. package/dist/types/src/wallet/WERR_REVIEW_ACTIONS.d.ts.map +1 -0
  28. package/dist/types/src/wallet/Wallet.interfaces.d.ts +22 -0
  29. package/dist/types/src/wallet/Wallet.interfaces.d.ts.map +1 -1
  30. package/dist/types/src/wallet/WalletError.d.ts +4 -3
  31. package/dist/types/src/wallet/WalletError.d.ts.map +1 -1
  32. package/dist/types/src/wallet/index.d.ts +1 -0
  33. package/dist/types/src/wallet/index.d.ts.map +1 -1
  34. package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts.map +1 -1
  35. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  36. package/dist/umd/bundle.js +1 -1
  37. package/docs/kvstore.md +8 -7
  38. package/docs/wallet.md +146 -38
  39. package/package.json +1 -1
  40. package/src/kvstore/LocalKVStore.ts +156 -151
  41. package/src/kvstore/__tests/LocalKVStore.test.ts +104 -193
  42. package/src/wallet/WERR_REVIEW_ACTIONS.ts +30 -0
  43. package/src/wallet/Wallet.interfaces.ts +24 -0
  44. package/src/wallet/WalletError.ts +4 -2
  45. package/src/wallet/index.ts +2 -0
  46. package/src/wallet/substrates/HTTPWalletJSON.ts +12 -6
@@ -1,8 +1,8 @@
1
- import LockingScript from '../script/LockingScript.js';
2
1
  import PushDrop from '../script/templates/PushDrop.js';
3
2
  import * as Utils from '../primitives/utils.js';
4
3
  import WalletClient from '../wallet/WalletClient.js';
5
4
  import Transaction from '../transaction/Transaction.js';
5
+ import { Beef } from '../transaction/Beef.js';
6
6
  /**
7
7
  * Implements a key-value storage system backed by transaction outputs managed by a wallet.
8
8
  * Each key-value pair is represented by a PushDrop token output in a specific context (basket).
@@ -37,12 +37,12 @@ export default class LocalKVStore {
37
37
  * Creates an instance of the localKVStore.
38
38
  *
39
39
  * @param {WalletInterface} [wallet=new WalletClient()] - The wallet interface to use. Defaults to a new WalletClient instance.
40
- * @param {string} [context='kvstore-default'] - The context (basket) for namespacing keys. Defaults to 'kvstore-default'.
40
+ * @param {string} [context='kvstoredefault'] - The context (basket) for namespacing keys. Defaults to 'kvstore default'.
41
41
  * @param {boolean} [encrypt=true] - Whether to encrypt values. Defaults to true.
42
42
  * @param {string} [originator] — An originator to use with PushDrop and the wallet, if provided.
43
43
  * @throws {Error} If the context is missing or empty.
44
44
  */
45
- constructor(wallet = new WalletClient(), context = 'kvstore-default', encrypt = true, originator) {
45
+ constructor(wallet = new WalletClient(), context = 'kvstore default', encrypt = true, originator) {
46
46
  if (typeof context !== 'string' || context.length < 1) {
47
47
  throw new Error('A context in which to operate is required.');
48
48
  }
@@ -51,6 +51,19 @@ export default class LocalKVStore {
51
51
  this.encrypt = encrypt;
52
52
  this.originator = originator;
53
53
  }
54
+ getProtocol(key) {
55
+ return { protocolID: [2, this.context], keyID: key };
56
+ }
57
+ async getOutputs(key, limit) {
58
+ const results = await this.wallet.listOutputs({
59
+ basket: this.context,
60
+ tags: [key],
61
+ tagQueryMode: 'all',
62
+ include: 'entire transactions',
63
+ limit
64
+ });
65
+ return results;
66
+ }
54
67
  /**
55
68
  * Retrieves the value associated with a given key.
56
69
  *
@@ -58,46 +71,81 @@ export default class LocalKVStore {
58
71
  * @param {string | undefined} [defaultValue=undefined] - The value to return if the key is not found.
59
72
  * @returns {Promise<string | undefined>} A promise that resolves to the value as a string,
60
73
  * the defaultValue if the key is not found, or undefined if no defaultValue is provided.
61
- * @throws {Error} If multiple outputs are found for the key (ambiguous state).
74
+ * @throws {Error} If too many outputs are found for the key (ambiguous state).
62
75
  * @throws {Error} If the found output's locking script cannot be decoded or represents an invalid token format.
63
76
  */
64
77
  async get(key, defaultValue = undefined) {
65
- const results = await this.wallet.listOutputs({
66
- basket: this.context,
67
- tags: [key],
68
- include: 'locking scripts'
69
- });
70
- if (results.outputs.length === 0) {
71
- return defaultValue;
78
+ const r = await this.lookupValue(key, defaultValue, 5);
79
+ return r.value;
80
+ }
81
+ getLockingScript(output, beef) {
82
+ const [txid, vout] = output.outpoint.split('.');
83
+ const tx = beef.findTxid(txid)?.tx;
84
+ if (tx == null) {
85
+ throw new Error(`beef must contain txid ${txid}`);
72
86
  }
73
- else if (results.outputs.length > 1) {
74
- throw new Error('Multiple tokens found for this key. You need to call set to collapse this ambiguous state before you can get this value again.');
87
+ const lockingScript = tx.outputs[Number(vout)].lockingScript;
88
+ return lockingScript;
89
+ }
90
+ async lookupValue(key, defaultValue, limit) {
91
+ const lor = await this.getOutputs(key, limit);
92
+ const r = { value: defaultValue, outpoint: undefined, lor };
93
+ const { outputs } = lor;
94
+ if (outputs.length === 0) {
95
+ return r;
75
96
  }
76
- let fields;
97
+ const output = outputs.slice(-1)[0];
98
+ r.outpoint = output.outpoint;
99
+ let field;
77
100
  try {
78
- if (typeof results.outputs[0].lockingScript !== 'string') {
79
- throw new Error('No locking script');
101
+ if (lor.BEEF === undefined) {
102
+ throw new Error('entire transactions listOutputs option must return valid BEEF');
80
103
  }
81
- const decoded = PushDrop.decode(LockingScript.fromHex(results.outputs[0].lockingScript));
82
- if (decoded.fields.length !== 1) {
104
+ const lockingScript = this.getLockingScript(output, Beef.fromBinary(lor.BEEF));
105
+ const decoded = PushDrop.decode(lockingScript);
106
+ if (decoded.fields.length < 1 || decoded.fields.length > 2) {
83
107
  throw new Error('Invalid token.');
84
108
  }
85
- fields = decoded.fields;
109
+ field = decoded.fields[0];
86
110
  }
87
111
  catch (_) {
88
- throw new Error(`Invalid value found. You need to call set to collapse the corrupted state (or relinquish the corrupted ${results.outputs[0].outpoint} output from the ${this.context} basket) before you can get this value again.`);
112
+ throw new Error(`Invalid value found. You need to call set to collapse the corrupted state (or relinquish the corrupted ${outputs[0].outpoint} output from the ${this.context} basket) before you can get this value again.`);
89
113
  }
90
114
  if (!this.encrypt) {
91
- return Utils.toUTF8(fields[0]);
115
+ r.value = Utils.toUTF8(field);
92
116
  }
93
117
  else {
94
118
  const { plaintext } = await this.wallet.decrypt({
95
- protocolID: [2, this.context],
96
- keyID: key,
97
- ciphertext: fields[0]
119
+ ...this.getProtocol(key),
120
+ ciphertext: field
121
+ });
122
+ r.value = Utils.toUTF8(plaintext);
123
+ }
124
+ return r;
125
+ }
126
+ getInputs(outputs) {
127
+ const inputs = [];
128
+ for (let i = 0; i < outputs.length; i++) {
129
+ inputs.push({
130
+ outpoint: outputs[i].outpoint,
131
+ unlockingScriptLength: 74,
132
+ inputDescription: 'Previous key-value token'
98
133
  });
99
- return Utils.toUTF8(plaintext);
100
134
  }
135
+ return inputs;
136
+ }
137
+ async getSpends(key, outputs, pushdrop, atomicBEEF) {
138
+ const p = this.getProtocol(key);
139
+ const tx = Transaction.fromAtomicBEEF(atomicBEEF);
140
+ const spends = {};
141
+ for (let i = 0; i < outputs.length; i++) {
142
+ const unlocker = pushdrop.unlock(p.protocolID, p.keyID, 'self');
143
+ const unlockingScript = await unlocker.sign(tx, i);
144
+ spends[i] = {
145
+ unlockingScript: unlockingScript.toHex()
146
+ };
147
+ }
148
+ return spends;
101
149
  }
102
150
  /**
103
151
  * Sets or updates the value associated with a given key.
@@ -113,87 +161,64 @@ export default class LocalKVStore {
113
161
  * @returns {Promise<OutpointString>} A promise that resolves to the outpoint string (txid.vout) of the new or updated token output.
114
162
  */
115
163
  async set(key, value) {
164
+ const current = await this.lookupValue(key, undefined, 10);
165
+ if (current.value === value) {
166
+ if (current.outpoint === undefined) {
167
+ throw new Error('outpoint must be valid when value is valid and unchanged');
168
+ }
169
+ // Don't create a new transaction if the value doesn't need to change...
170
+ return current.outpoint;
171
+ }
172
+ const protocol = this.getProtocol(key);
116
173
  let valueAsArray = Utils.toArray(value, 'utf8');
117
174
  if (this.encrypt) {
118
175
  const { ciphertext } = await this.wallet.encrypt({
119
- plaintext: valueAsArray,
120
- protocolID: [2, this.context],
121
- keyID: key
176
+ ...protocol,
177
+ plaintext: valueAsArray
122
178
  });
123
179
  valueAsArray = ciphertext;
124
180
  }
125
181
  const pushdrop = new PushDrop(this.wallet, this.originator);
126
- const lockingScript = await pushdrop.lock([valueAsArray], [2, this.context], key, 'self');
127
- const results = await this.wallet.listOutputs({
128
- basket: this.context,
129
- tags: [key],
130
- include: 'entire transactions'
131
- });
132
- if (results.totalOutputs !== 0) {
133
- try {
134
- const inputs = [];
135
- for (let i = 0; i < results.outputs.length; i++) {
136
- inputs.push({
137
- outpoint: results.outputs[i].outpoint,
138
- unlockingScriptLength: 74,
139
- inputDescription: 'Previous key-value token'
140
- });
141
- }
142
- const { signableTransaction } = await this.wallet.createAction({
143
- description: `Update ${key} in ${this.context}`,
144
- inputBEEF: results.BEEF,
145
- inputs,
146
- outputs: [{
147
- lockingScript: lockingScript.toHex(),
148
- satoshis: 1,
149
- outputDescription: 'Key-value token'
150
- }],
151
- options: {
152
- acceptDelayedBroadcast: false,
153
- randomizeOutputs: false
154
- }
155
- });
156
- if (typeof signableTransaction !== 'object') {
157
- throw new Error('Wallet did not return a signable transaction when expected.');
158
- }
159
- const tx = Transaction.fromAtomicBEEF(signableTransaction.tx);
160
- const spends = {};
161
- for (let i = 0; i < results.outputs.length; i++) {
162
- const unlocker = pushdrop.unlock([2, this.context], key, 'self');
163
- const unlockingScript = await unlocker.sign(tx, i);
164
- spends[i] = {
165
- unlockingScript: unlockingScript.toHex()
166
- };
182
+ const lockingScript = await pushdrop.lock([valueAsArray], protocol.protocolID, protocol.keyID, 'self');
183
+ const { outputs, BEEF: inputBEEF } = current.lor;
184
+ let outpoint;
185
+ try {
186
+ const inputs = this.getInputs(outputs);
187
+ const { txid, signableTransaction } = await this.wallet.createAction({
188
+ description: `Update ${key} in ${this.context}`,
189
+ inputBEEF,
190
+ inputs,
191
+ outputs: [{
192
+ basket: this.context,
193
+ tags: [key],
194
+ lockingScript: lockingScript.toHex(),
195
+ satoshis: 1,
196
+ outputDescription: 'Key-value token'
197
+ }],
198
+ options: {
199
+ acceptDelayedBroadcast: false,
200
+ randomizeOutputs: false
167
201
  }
202
+ });
203
+ if (outputs.length > 0 && typeof signableTransaction !== 'object') {
204
+ throw new Error('Wallet did not return a signable transaction when expected.');
205
+ }
206
+ if (signableTransaction == null) {
207
+ outpoint = `${txid}.0`;
208
+ }
209
+ else {
210
+ const spends = await this.getSpends(key, outputs, pushdrop, signableTransaction.tx);
168
211
  const { txid } = await this.wallet.signAction({
169
212
  reference: signableTransaction.reference,
170
213
  spends
171
214
  });
172
- return `${txid}.0`;
173
- }
174
- catch (_) {
175
- // Signing failed, relinquish original outputs
176
- for (let i = 0; i < results.outputs.length; i++) {
177
- await this.wallet.relinquishOutput({
178
- output: results.outputs[i].outpoint,
179
- basket: this.context
180
- });
181
- }
215
+ outpoint = `${txid}.0`;
182
216
  }
183
217
  }
184
- const { txid } = await this.wallet.createAction({
185
- description: `Set ${key} in ${this.context}`,
186
- outputs: [{
187
- lockingScript: lockingScript.toHex(),
188
- satoshis: 1,
189
- outputDescription: 'Key-value token'
190
- }],
191
- options: {
192
- acceptDelayedBroadcast: false,
193
- randomizeOutputs: false
194
- }
195
- });
196
- return `${txid}.0`;
218
+ catch (_) {
219
+ throw new Error(`There are ${outputs.length} outputs with tag ${key} that cannot be unlocked.`);
220
+ }
221
+ return outpoint;
197
222
  }
198
223
  /**
199
224
  * Removes the key-value pair associated with the given key.
@@ -203,61 +228,46 @@ export default class LocalKVStore {
203
228
  * If signing the removal transaction fails, it relinquishes the original outputs instead of spending.
204
229
  *
205
230
  * @param {string} key - The key to remove.
206
- * @returns {Promise<string | void>} A promise that resolves to the txid of the removal transaction if successful.
231
+ * @returns {Promise<string[]>} A promise that resolves to the txids of the removal transactions if successful.
207
232
  */
208
233
  async remove(key) {
209
- const results = await this.wallet.listOutputs({
210
- basket: this.context,
211
- tags: [key],
212
- include: 'entire transactions'
213
- });
214
- if (results.totalOutputs === 0) {
215
- return; // Key not found, do nothing
216
- }
217
- const pushdrop = new PushDrop(this.wallet, this.originator);
218
- try {
219
- const inputs = [];
220
- for (let i = 0; i < results.outputs.length; i++) {
221
- inputs.push({
222
- outpoint: results.outputs[i].outpoint,
223
- unlockingScriptLength: 74,
224
- inputDescription: 'Previous key-value token'
225
- });
226
- }
227
- const { signableTransaction } = await this.wallet.createAction({
228
- description: `Remove ${key} in ${this.context}`,
229
- inputBEEF: results.BEEF,
230
- inputs,
231
- options: {
232
- acceptDelayedBroadcast: false
234
+ const txids = [];
235
+ for (;;) {
236
+ const { outputs, BEEF: inputBEEF, totalOutputs } = await this.getOutputs(key);
237
+ if (outputs.length > 0) {
238
+ const pushdrop = new PushDrop(this.wallet, this.originator);
239
+ try {
240
+ const inputs = this.getInputs(outputs);
241
+ const { signableTransaction } = await this.wallet.createAction({
242
+ description: `Remove ${key} in ${this.context}`,
243
+ inputBEEF,
244
+ inputs,
245
+ options: {
246
+ acceptDelayedBroadcast: false
247
+ }
248
+ });
249
+ if (typeof signableTransaction !== 'object') {
250
+ throw new Error('Wallet did not return a signable transaction when expected.');
251
+ }
252
+ const spends = await this.getSpends(key, outputs, pushdrop, signableTransaction.tx);
253
+ const { txid } = await this.wallet.signAction({
254
+ reference: signableTransaction.reference,
255
+ spends
256
+ });
257
+ if (txid === undefined) {
258
+ throw new Error('signAction must return a valid txid');
259
+ }
260
+ txids.push(txid);
261
+ }
262
+ catch (_) {
263
+ throw new Error(`There are ${totalOutputs} outputs with tag ${key} that cannot be unlocked.`);
233
264
  }
234
- });
235
- if (typeof signableTransaction !== 'object') {
236
- throw new Error('Wallet did not return a signable transaction when expected.');
237
- }
238
- const tx = Transaction.fromAtomicBEEF(signableTransaction.tx);
239
- const spends = {};
240
- for (let i = 0; i < results.outputs.length; i++) {
241
- const unlocker = pushdrop.unlock([2, this.context], key, 'self');
242
- const unlockingScript = await unlocker.sign(tx, i);
243
- spends[i] = {
244
- unlockingScript: unlockingScript.toHex()
245
- };
246
265
  }
247
- const { txid } = await this.wallet.signAction({
248
- reference: signableTransaction.reference,
249
- spends
250
- });
251
- return txid;
252
- }
253
- catch (_) {
254
- for (let i = 0; i < results.outputs.length; i++) {
255
- await this.wallet.relinquishOutput({
256
- output: results.outputs[i].outpoint,
257
- basket: this.context
258
- });
266
+ if (outputs.length === totalOutputs) {
267
+ break;
259
268
  }
260
269
  }
270
+ return txids;
261
271
  }
262
272
  }
263
273
  //# sourceMappingURL=LocalKVStore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LocalKVStore.js","sourceRoot":"","sources":["../../../../src/kvstore/LocalKVStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LocalKVStore.js","sourceRoot":"","sources":["../../../../src/kvstore/LocalKVStore.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,iCAAiC,CAAA;AACtD,OAAO,KAAK,KAAK,MAAM,wBAAwB,CAAA;AAE/C,OAAO,YAAY,MAAM,2BAA2B,CAAA;AACpD,OAAO,WAAW,MAAM,+BAA+B,CAAA;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAA;AAE7C;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,YAAY;IAC/B;;;;OAIG;IACc,MAAM,CAAiB;IACxC;;;;OAIG;IACc,OAAO,CAAQ;IAChC;;;;OAIG;IACc,OAAO,CAAS;IAEjC;;;;OAIG;IACc,UAAU,CAAS;IAEpC;;;;;;;;OAQG;IACH,YACE,SAA0B,IAAI,YAAY,EAAE,EAC5C,OAAO,GAAG,iBAAiB,EAC3B,OAAO,GAAG,IAAI,EACd,UAAmB;QAEnB,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACrD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;SAC9D;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;IAEO,WAAW,CAAE,GAAW;QAC9B,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;IACtD,CAAC;IAEO,KAAK,CAAC,UAAU,CAAE,GAAW,EAAE,KAAc;QACnD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;YAC5C,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,IAAI,EAAE,CAAC,GAAG,CAAC;YACX,YAAY,EAAE,KAAK;YACnB,OAAO,EAAE,qBAAqB;YAC9B,KAAK;SACN,CAAC,CAAA;QACF,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,GAAG,CAAE,GAAW,EAAE,eAAmC,SAAS;QAClE,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC,CAAA;QACtD,OAAO,CAAC,CAAC,KAAK,CAAA;IAChB,CAAC;IAEO,gBAAgB,CAAE,MAAoB,EAAE,IAAU;QACxD,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC/C,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,CAAA;QAClC,IAAI,EAAE,IAAI,IAAI,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAA;SAAE;QACrE,MAAM,aAAa,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAA;QAC5D,OAAO,aAAa,CAAA;IACtB,CAAC;IAEO,KAAK,CAAC,WAAW,CAAE,GAAW,EAAE,YAAgC,EAAE,KAAc;QACtF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QAC7C,MAAM,CAAC,GAAsB,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,CAAA;QAC9E,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAA;QACvB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACxB,OAAO,CAAC,CAAA;SACT;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACnC,CAAC,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAA;QAC5B,IAAI,KAAe,CAAA;QACnB,IAAI;YACF,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAA;aAAE;YAChH,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;YAC9E,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;YAC9C,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC1D,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAA;aAClC;YACD,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;SAC1B;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,IAAI,KAAK,CAAC,0GAA0G,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,oBAAoB,IAAI,CAAC,OAAO,+CAA+C,CAAC,CAAA;SAC9N;QACD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;SAC9B;aAAM;YACL,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;gBAC9C,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;gBACxB,UAAU,EAAE,KAAK;aAClB,CAAC,CAAA;YACF,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;SAClC;QACD,OAAO,CAAC,CAAA;IACV,CAAC;IAEO,SAAS,CAAE,OAAuB;QACxC,MAAM,MAAM,GAAwB,EAAE,CAAA;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACvC,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ;gBAC7B,qBAAqB,EAAE,EAAE;gBACzB,gBAAgB,EAAE,0BAA0B;aAC7C,CAAC,CAAA;SACH;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAEO,KAAK,CAAC,SAAS,CAAE,GAAW,EAAE,OAAuB,EAAE,QAAkB,EAAE,UAAsB;QACvG,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QAC/B,MAAM,EAAE,GAAG,WAAW,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;QACjD,MAAM,MAAM,GAAoC,EAAE,CAAA;QAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACvC,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;YAC/D,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;YAClD,MAAM,CAAC,CAAC,CAAC,GAAG;gBACV,eAAe,EAAE,eAAe,CAAC,KAAK,EAAE;aACzC,CAAA;SACF;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,GAAG,CAAE,GAAW,EAAE,KAAa;QACnC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;QAC1D,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE;YAC3B,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAA;aAAE;YACnH,wEAAwE;YACxE,OAAO,OAAO,CAAC,QAAQ,CAAA;SACxB;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QACtC,IAAI,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAC/C,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;gBAC/C,GAAG,QAAQ;gBACX,SAAS,EAAE,YAAY;aACxB,CAAC,CAAA;YACF,YAAY,GAAG,UAAU,CAAA;SAC1B;QACD,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;QAC3D,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,IAAI,CACvC,CAAC,YAAY,CAAC,EACd,QAAQ,CAAC,UAAU,EACnB,QAAQ,CAAC,KAAK,EACd,MAAM,CACP,CAAA;QACD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,GAAG,CAAA;QAChD,IAAI,QAAwB,CAAA;QAC5B,IAAI;YACF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;YACtC,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;gBACnE,WAAW,EAAE,UAAU,GAAG,OAAO,IAAI,CAAC,OAAO,EAAE;gBAC/C,SAAS;gBACT,MAAM;gBACN,OAAO,EAAE,CAAC;wBACR,MAAM,EAAE,IAAI,CAAC,OAAO;wBACpB,IAAI,EAAE,CAAC,GAAG,CAAC;wBACX,aAAa,EAAE,aAAa,CAAC,KAAK,EAAE;wBACpC,QAAQ,EAAE,CAAC;wBACX,iBAAiB,EAAE,iBAAiB;qBACrC,CAAC;gBACF,OAAO,EAAE;oBACP,sBAAsB,EAAE,KAAK;oBAC7B,gBAAgB,EAAE,KAAK;iBACxB;aACF,CAAC,CAAA;YACF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,mBAAmB,KAAK,QAAQ,EAAE;gBACjE,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAA;aAC/E;YACD,IAAI,mBAAmB,IAAI,IAAI,EAAE;gBAC/B,QAAQ,GAAG,GAAG,IAAc,IAAI,CAAA;aACjC;iBAAM;gBACL,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,mBAAmB,CAAC,EAAE,CAAC,CAAA;gBACnF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;oBAC5C,SAAS,EAAE,mBAAmB,CAAC,SAAS;oBACxC,MAAM;iBACP,CAAC,CAAA;gBACF,QAAQ,GAAG,GAAG,IAAc,IAAI,CAAA;aACjC;SACF;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,IAAI,KAAK,CAAC,aAAa,OAAO,CAAC,MAAM,qBAAqB,GAAG,2BAA2B,CAAC,CAAA;SAChG;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,MAAM,CAAE,GAAW;QACvB,MAAM,KAAK,GAAa,EAAE,CAAA;QAC1B,SAAU;YACR,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;YAC7E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBACtB,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;gBAC3D,IAAI;oBACF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;oBACtC,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;wBAC7D,WAAW,EAAE,UAAU,GAAG,OAAO,IAAI,CAAC,OAAO,EAAE;wBAC/C,SAAS;wBACT,MAAM;wBACN,OAAO,EAAE;4BACP,sBAAsB,EAAE,KAAK;yBAC9B;qBACF,CAAC,CAAA;oBACF,IAAI,OAAO,mBAAmB,KAAK,QAAQ,EAAE;wBAC3C,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAA;qBAC/E;oBACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,mBAAmB,CAAC,EAAE,CAAC,CAAA;oBACnF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;wBAC5C,SAAS,EAAE,mBAAmB,CAAC,SAAS;wBACxC,MAAM;qBACP,CAAC,CAAA;oBACF,IAAI,IAAI,KAAK,SAAS,EAAE;wBAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;qBAAE;oBAClF,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;iBACjB;gBAAC,OAAO,CAAC,EAAE;oBACV,MAAM,IAAI,KAAK,CAAC,aAAa,YAAY,qBAAqB,GAAG,2BAA2B,CAAC,CAAA;iBAC9F;aACF;YACD,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY,EAAE;gBAAE,MAAK;aAAE;SAC/C;QACD,OAAO,KAAK,CAAA;IACd,CAAC;CACF"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * When a `createAction` or `signAction` is completed in undelayed mode (`acceptDelayedBroadcast`: false),
3
+ * any unsucccessful result will return the results by way of this exception to ensure attention is
4
+ * paid to processing errors.
5
+ */
6
+ export class WERR_REVIEW_ACTIONS extends Error {
7
+ reviewActionResults;
8
+ sendWithResults;
9
+ txid;
10
+ tx;
11
+ noSendChange;
12
+ code;
13
+ isError = true;
14
+ /**
15
+ * All parameters correspond to their comparable `createAction` or `signSction` results
16
+ * with the exception of `reviewActionResults`;
17
+ * which contains more details, particularly for double spend results.
18
+ */
19
+ constructor(reviewActionResults, sendWithResults, txid, tx, noSendChange) {
20
+ super('Undelayed createAction or signAction results require review.');
21
+ this.reviewActionResults = reviewActionResults;
22
+ this.sendWithResults = sendWithResults;
23
+ this.txid = txid;
24
+ this.tx = tx;
25
+ this.noSendChange = noSendChange;
26
+ this.code = 5;
27
+ this.name = this.constructor.name;
28
+ }
29
+ }
30
+ export default WERR_REVIEW_ACTIONS;
31
+ //# sourceMappingURL=WERR_REVIEW_ACTIONS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WERR_REVIEW_ACTIONS.js","sourceRoot":"","sources":["../../../../src/wallet/WERR_REVIEW_ACTIONS.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAUnC;IACA;IACA;IACA;IACA;IAbT,IAAI,CAAQ;IACZ,OAAO,GAAY,IAAI,CAAA;IAEvB;;;;OAIG;IACH,YACS,mBAAyC,EACzC,eAAiC,EACjC,IAAoB,EACpB,EAAe,EACf,YAA+B;QAEtC,KAAK,CAAC,8DAA8D,CAAC,CAAA;QAN9D,wBAAmB,GAAnB,mBAAmB,CAAsB;QACzC,oBAAe,GAAf,eAAe,CAAkB;QACjC,SAAI,GAAJ,IAAI,CAAgB;QACpB,OAAE,GAAF,EAAE,CAAa;QACf,iBAAY,GAAZ,YAAY,CAAmB;QAGtC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;QACb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IACnC,CAAC;CACF;AAED,eAAe,mBAAmB,CAAA"}
@@ -14,12 +14,13 @@ export class WalletError extends Error {
14
14
  }
15
15
  }
16
16
  // NOTE: Enum values must not exceed the UInt8 range (0–255)
17
- var walletErrors;
17
+ export var walletErrors;
18
18
  (function (walletErrors) {
19
19
  walletErrors[walletErrors["unknownError"] = 1] = "unknownError";
20
20
  walletErrors[walletErrors["unsupportedAction"] = 2] = "unsupportedAction";
21
21
  walletErrors[walletErrors["invalidHmac"] = 3] = "invalidHmac";
22
22
  walletErrors[walletErrors["invalidSignature"] = 4] = "invalidSignature";
23
+ walletErrors[walletErrors["reviewActions"] = 5] = "reviewActions";
23
24
  })(walletErrors || (walletErrors = {}));
24
- export default walletErrors;
25
+ export default WalletError;
25
26
  //# sourceMappingURL=WalletError.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WalletError.js","sourceRoot":"","sources":["../../../../src/wallet/WalletError.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,WAAY,SAAQ,KAAK;IACpC,IAAI,CAAQ;IACZ,OAAO,GAAY,IAAI,CAAA;IAEvB,YAAa,OAAe,EAAE,IAAI,GAAG,CAAC,EAAE,KAAc;QACpD,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;QAEjC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;YACzD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;SACnB;aAAM;YACL,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;SAChD;IACH,CAAC;CACF;AAED,4DAA4D;AAC5D,IAAK,YAKJ;AALD,WAAK,YAAY;IACf,+DAAgB,CAAA;IAChB,yEAAqB,CAAA;IACrB,6DAAe,CAAA;IACf,uEAAoB,CAAA;AACtB,CAAC,EALI,YAAY,KAAZ,YAAY,QAKhB;AAED,eAAe,YAAY,CAAA"}
1
+ {"version":3,"file":"WalletError.js","sourceRoot":"","sources":["../../../../src/wallet/WalletError.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,WAAY,SAAQ,KAAK;IACpC,IAAI,CAAQ;IACZ,OAAO,GAAY,IAAI,CAAA;IAEvB,YAAa,OAAe,EAAE,IAAI,GAAG,CAAC,EAAE,KAAc;QACpD,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;QAEjC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;YACzD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;SACnB;aAAM;YACL,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;SAChD;IACH,CAAC;CACF;AAED,4DAA4D;AAC5D,MAAM,CAAN,IAAY,YAMX;AAND,WAAY,YAAY;IACtB,+DAAgB,CAAA;IAChB,yEAAqB,CAAA;IACrB,6DAAe,CAAA;IACf,uEAAoB,CAAA;IACpB,iEAAiB,CAAA;AACnB,CAAC,EANW,YAAY,KAAZ,YAAY,QAMvB;AAID,eAAe,WAAW,CAAA"}
@@ -3,7 +3,9 @@ export * from './KeyDeriver.js';
3
3
  export { default as CachedKeyDeriver } from './CachedKeyDeriver.js';
4
4
  export { default as ProtoWallet } from './ProtoWallet.js';
5
5
  export { default as WalletClient } from './WalletClient.js';
6
+ // Is this an error? should it be 'walletErrors', the enum not the class?
6
7
  export { default as WalletErrors } from './WalletError.js';
8
+ export { default as WERR_REVIEW_ACTIONS } from './WERR_REVIEW_ACTIONS.js';
7
9
  export * from './WalletError.js';
8
10
  export * from './substrates/index.js';
9
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/wallet/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACnE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC1D,cAAc,kBAAkB,CAAA;AAChC,cAAc,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/wallet/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACnE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC3D,yEAAyE;AACzE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AACzE,cAAc,kBAAkB,CAAA;AAChC,cAAc,uBAAuB,CAAA"}
@@ -1,3 +1,4 @@
1
+ import { WERR_REVIEW_ACTIONS } from '../WERR_REVIEW_ACTIONS.js';
1
2
  export default class HTTPWalletJSON {
2
3
  baseUrl;
3
4
  httpClient;
@@ -20,12 +21,18 @@ export default class HTTPWalletJSON {
20
21
  const data = await res.json();
21
22
  // Check the HTTP status on the original response
22
23
  if (!res.ok) {
23
- const err = {
24
- call,
25
- args,
26
- message: data.message ?? `HTTP Client error ${res.status}`
27
- };
28
- throw new Error(JSON.stringify(err));
24
+ if (res.status === 400 && data.isError && data.code === 5) {
25
+ const err = new WERR_REVIEW_ACTIONS(data.reviewActionResults, data.sendWithResults, data.txid, data.tx, data.noSendChange);
26
+ throw err;
27
+ }
28
+ else {
29
+ const err = {
30
+ call,
31
+ args,
32
+ message: data.message ?? `HTTP Client error ${res.status}`
33
+ };
34
+ throw new Error(JSON.stringify(err));
35
+ }
29
36
  }
30
37
  return data;
31
38
  };
@@ -1 +1 @@
1
- {"version":3,"file":"HTTPWalletJSON.js","sourceRoot":"","sources":["../../../../../src/wallet/substrates/HTTPWalletJSON.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HTTPWalletJSON.js","sourceRoot":"","sources":["../../../../../src/wallet/substrates/HTTPWalletJSON.ts"],"names":[],"mappings":"AAqCA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAE/D,MAAM,CAAC,OAAO,OAAO,cAAc;IACjC,OAAO,CAAQ;IACf,UAAU,CAAc;IACxB,UAAU,CAAqD;IAC/D,GAAG,CAAkD,CAAC,oBAAoB;IAE1E,YACE,UAA+D,EAC/D,UAAkB,uBAAuB,EACzC,UAAU,GAAG,KAAK;QAElB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAE5B,IAAI,CAAC,GAAG,GAAG,KAAK,EAAE,IAAY,EAAE,IAAY,EAAE,EAAE;YAC9C,MAAM,GAAG,GAAG,MAAM,CAChB,MAAM,UAAU,CAAC,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE,EAAE;gBAC1C,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,MAAM,EAAE,kBAAkB;oBAC1B,cAAc,EAAE,kBAAkB;oBAClC,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,EAAE;iBAClC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;aAC3B,CAAC,CACH,CAAA;YAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;YAE7B,iDAAiD;YACjD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE;gBACX,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE;oBACzD,MAAM,GAAG,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;oBAC1H,MAAM,GAAG,CAAA;iBACV;qBAAM;oBACL,MAAM,GAAG,GAAG;wBACV,IAAI;wBACJ,IAAI;wBACJ,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,qBAAqB,GAAG,CAAC,MAAM,EAAE;qBAC3D,CAAA;oBACD,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;iBACrC;aACF;YACD,OAAO,IAAI,CAAA;QACb,CAAC,CAAA;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAsB;QACvC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAuB,CAAA;IACnE,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAoB;QACnC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAqB,CAAA;IAC/D,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAEjB;QACC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAsB,CAAA;IACjE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAqB;QACrC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAsB,CAAA;IACjE,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,IAA2B;QAE3B,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAuB,CAAA;IACxE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAqB;QACrC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAsB,CAAA;IACjE,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,IAGtB;QACC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAA2B,CAAA;IAC3E,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IASlB;QACC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAA6B,CAAA;IACzE,CAAC;IAED,KAAK,CAAC,4BAA4B,CAAC,IAKlC;QAQC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,8BAA8B,EAAE,IAAI,CAOzD,CAAA;IACH,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,IAO9B;QAUC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,0BAA0B,EAAE,IAAI,CASrD,CAAA;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAQb;QACC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAA2B,CAAA;IAClE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAQb;QACC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAA0B,CAAA;IACjE,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAQhB;QACC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAqB,CAAA;IAC/D,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAShB;QACC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAoB,CAAA;IAC9D,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,IASrB;QACC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAA0B,CAAA;IACzE,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,IAWrB;QACC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAoB,CAAA;IACnE,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,IAA4B;QAE5B,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAA6B,CAAA;IAC/E,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,IAOtB;QACC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAA2B,CAAA;IAC3E,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,IAA0B;QAE1B,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAA2B,CAAA;IAC3E,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,IAI3B;QACC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAA2B,CAAA;IAChF,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,IAK3B;QACC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAA+B,CAAA;IACpF,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,IAK1B;QACC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,CAA+B,CAAA;IACnF,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,IAAY;QAChC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAA4B,CAAA;IAC3E,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,IAAY;QACtC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAA4B,CAAA;IACjF,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY;QAC1B,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAgC,CAAA;IACzE,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,IAExB;QACC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAA0B,CAAA;IAC5E,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAY;QAC3B,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAuC,CAAA;IACjF,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAY;QAC3B,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAyC,CAAA;IACnF,CAAC;CACF"}