ox 1.8.5 → 1.8.7
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.
- package/CHANGELOG.md +37 -0
- package/dist/tempo/{MultisigConfig.d.ts → AccountConfig.d.ts} +116 -63
- package/dist/tempo/AccountConfig.d.ts.map +1 -0
- package/dist/tempo/{MultisigConfig.js → AccountConfig.js} +109 -55
- package/dist/tempo/AccountConfig.js.map +1 -0
- package/dist/tempo/{MultisigOperation.d.ts → AccountOperation.d.ts} +62 -62
- package/dist/tempo/AccountOperation.d.ts.map +1 -0
- package/dist/tempo/{MultisigOperation.js → AccountOperation.js} +64 -64
- package/dist/tempo/AccountOperation.js.map +1 -0
- package/dist/tempo/{MultisigSimulation.d.ts → AccountSimulation.d.ts} +21 -21
- package/dist/tempo/AccountSimulation.d.ts.map +1 -0
- package/dist/tempo/{MultisigSimulation.js → AccountSimulation.js} +20 -20
- package/dist/tempo/AccountSimulation.js.map +1 -0
- package/dist/tempo/KeyAuthorization.d.ts +37 -27
- package/dist/tempo/KeyAuthorization.d.ts.map +1 -1
- package/dist/tempo/KeyAuthorization.js +17 -19
- package/dist/tempo/KeyAuthorization.js.map +1 -1
- package/dist/tempo/RpcSchemaTempo.d.ts +13 -13
- package/dist/tempo/RpcSchemaTempo.d.ts.map +1 -1
- package/dist/tempo/SignatureEnvelope.d.ts +36 -33
- package/dist/tempo/SignatureEnvelope.d.ts.map +1 -1
- package/dist/tempo/SignatureEnvelope.js +77 -77
- package/dist/tempo/SignatureEnvelope.js.map +1 -1
- package/dist/tempo/TokenRole.d.ts +4 -2
- package/dist/tempo/TokenRole.d.ts.map +1 -1
- package/dist/tempo/TokenRole.js +4 -1
- package/dist/tempo/TokenRole.js.map +1 -1
- package/dist/tempo/TransactionRequest.d.ts +11 -9
- package/dist/tempo/TransactionRequest.d.ts.map +1 -1
- package/dist/tempo/TransactionRequest.js +14 -10
- package/dist/tempo/TransactionRequest.js.map +1 -1
- package/dist/tempo/index.d.ts +56 -54
- package/dist/tempo/index.d.ts.map +1 -1
- package/dist/tempo/index.js +56 -54
- package/dist/tempo/index.js.map +1 -1
- package/dist/zod/tempo/{MultisigConfig.d.ts → AccountConfig.d.ts} +6 -6
- package/dist/zod/tempo/AccountConfig.d.ts.map +1 -0
- package/dist/zod/tempo/{MultisigConfig.js → AccountConfig.js} +12 -12
- package/dist/zod/tempo/AccountConfig.js.map +1 -0
- package/dist/zod/tempo/{MultisigOperation.d.ts → AccountOperation.d.ts} +5 -5
- package/dist/zod/tempo/AccountOperation.d.ts.map +1 -0
- package/dist/zod/tempo/{MultisigOperation.js → AccountOperation.js} +10 -10
- package/dist/zod/tempo/AccountOperation.js.map +1 -0
- package/dist/zod/tempo/{MultisigSimulation.d.ts → AccountSimulation.d.ts} +5 -5
- package/dist/zod/tempo/AccountSimulation.d.ts.map +1 -0
- package/dist/zod/tempo/AccountSimulation.js +44 -0
- package/dist/zod/tempo/AccountSimulation.js.map +1 -0
- package/dist/zod/tempo/AuthorizationTempo.d.ts +10 -10
- package/dist/zod/tempo/KeyAuthorization.d.ts +12 -12
- package/dist/zod/tempo/KeyAuthorization.js +6 -6
- package/dist/zod/tempo/KeyAuthorization.js.map +1 -1
- package/dist/zod/tempo/RpcSchemaTempo.d.ts +59 -59
- package/dist/zod/tempo/RpcSchemaTempo.d.ts.map +1 -1
- package/dist/zod/tempo/RpcSchemaTempo.js +28 -28
- package/dist/zod/tempo/RpcSchemaTempo.js.map +1 -1
- package/dist/zod/tempo/SignatureEnvelope.d.ts +7 -7
- package/dist/zod/tempo/SignatureEnvelope.d.ts.map +1 -1
- package/dist/zod/tempo/SignatureEnvelope.js +22 -16
- package/dist/zod/tempo/SignatureEnvelope.js.map +1 -1
- package/dist/zod/tempo/TokenRole.d.ts +1 -1
- package/dist/zod/tempo/TokenRole.d.ts.map +1 -1
- package/dist/zod/tempo/Transaction.d.ts +24 -24
- package/dist/zod/tempo/TransactionRequest.d.ts +84 -84
- package/dist/zod/tempo/TransactionRequest.d.ts.map +1 -1
- package/dist/zod/tempo/TransactionRequest.js +26 -17
- package/dist/zod/tempo/TransactionRequest.js.map +1 -1
- package/dist/zod/tempo/TxEnvelopeTempo.d.ts +12 -12
- package/dist/zod/tempo/ZoneRpcAuthentication.d.ts +3 -3
- package/dist/zod/tempo/z.d.ts +3 -3
- package/dist/zod/tempo/z.d.ts.map +1 -1
- package/dist/zod/tempo/z.js +3 -3
- package/dist/zod/tempo/z.js.map +1 -1
- package/package.json +31 -31
- package/src/tempo/{MultisigConfig.test-d.ts → AccountConfig.test-d.ts} +22 -12
- package/src/tempo/{MultisigConfig.test.ts → AccountConfig.test.ts} +155 -37
- package/src/tempo/{MultisigConfig.ts → AccountConfig.ts} +138 -66
- package/src/tempo/AccountOperation.test-d.ts +79 -0
- package/src/tempo/{MultisigOperation.test.ts → AccountOperation.test.ts} +97 -97
- package/src/tempo/{MultisigOperation.ts → AccountOperation.ts} +95 -97
- package/src/tempo/{MultisigSimulation.test-d.ts → AccountSimulation.test-d.ts} +7 -9
- package/src/tempo/{MultisigSimulation.test.ts → AccountSimulation.test.ts} +28 -28
- package/src/tempo/{MultisigSimulation.ts → AccountSimulation.ts} +28 -30
- package/src/tempo/KeyAuthorization.test-d.ts +15 -6
- package/src/tempo/KeyAuthorization.test.ts +117 -37
- package/src/tempo/KeyAuthorization.ts +68 -59
- package/src/tempo/RpcSchemaTempo.test-d.ts +19 -19
- package/src/tempo/RpcSchemaTempo.ts +13 -13
- package/src/tempo/SignatureEnvelope.test-d.ts +7 -7
- package/src/tempo/SignatureEnvelope.test.ts +34 -34
- package/src/tempo/SignatureEnvelope.ts +112 -108
- package/src/tempo/TokenRole.ts +4 -1
- package/src/tempo/Transaction.test.ts +4 -4
- package/src/tempo/TransactionRequest.test-d.ts +17 -6
- package/src/tempo/TransactionRequest.test.ts +32 -17
- package/src/tempo/TransactionRequest.ts +27 -19
- package/src/tempo/{multisig.e2e.test.ts → configurableAccounts.e2e.test.ts} +16 -16
- package/src/tempo/e2e.test.ts +32 -20
- package/src/tempo/index.ts +56 -54
- package/src/version.ts +1 -1
- package/src/zod/tempo/{MultisigConfig.ts → AccountConfig.ts} +12 -12
- package/src/zod/tempo/{MultisigOperation.ts → AccountOperation.ts} +9 -9
- package/src/zod/tempo/AccountSimulation.ts +53 -0
- package/src/zod/tempo/KeyAuthorization.ts +8 -8
- package/src/zod/tempo/RpcSchemaTempo.ts +28 -28
- package/src/zod/tempo/SignatureEnvelope.ts +23 -17
- package/src/zod/tempo/TransactionRequest.ts +29 -18
- package/src/zod/tempo/_test/AccountConfig.test-d.ts +13 -0
- package/src/zod/tempo/_test/{MultisigConfig.test.ts → AccountConfig.test.ts} +7 -7
- package/src/zod/tempo/_test/AccountOperation.test-d.ts +27 -0
- package/src/zod/tempo/_test/{MultisigOperation.test.ts → AccountOperation.test.ts} +9 -9
- package/src/zod/tempo/_test/AccountSimulation.test-d.ts +13 -0
- package/src/zod/tempo/_test/{MultisigSimulation.test.ts → AccountSimulation.test.ts} +13 -13
- package/src/zod/tempo/_test/KeyAuthorization.test.ts +9 -9
- package/src/zod/tempo/_test/RpcSchemaTempo.test-d.ts +27 -27
- package/src/zod/tempo/_test/RpcSchemaTempo.test.ts +16 -18
- package/src/zod/tempo/_test/SignatureEnvelope.test-d.ts +5 -5
- package/src/zod/tempo/_test/SignatureEnvelope.test.ts +12 -9
- package/src/zod/tempo/_test/TransactionRequest.test.ts +28 -8
- package/src/zod/tempo/z.ts +3 -3
- package/dist/tempo/MultisigConfig.d.ts.map +0 -1
- package/dist/tempo/MultisigConfig.js.map +0 -1
- package/dist/tempo/MultisigOperation.d.ts.map +0 -1
- package/dist/tempo/MultisigOperation.js.map +0 -1
- package/dist/tempo/MultisigSimulation.d.ts.map +0 -1
- package/dist/tempo/MultisigSimulation.js.map +0 -1
- package/dist/zod/tempo/MultisigConfig.d.ts.map +0 -1
- package/dist/zod/tempo/MultisigConfig.js.map +0 -1
- package/dist/zod/tempo/MultisigOperation.d.ts.map +0 -1
- package/dist/zod/tempo/MultisigOperation.js.map +0 -1
- package/dist/zod/tempo/MultisigSimulation.d.ts.map +0 -1
- package/dist/zod/tempo/MultisigSimulation.js +0 -44
- package/dist/zod/tempo/MultisigSimulation.js.map +0 -1
- package/src/tempo/MultisigOperation.test-d.ts +0 -79
- package/src/zod/tempo/MultisigSimulation.ts +0 -53
- package/src/zod/tempo/_test/MultisigConfig.test-d.ts +0 -13
- package/src/zod/tempo/_test/MultisigOperation.test-d.ts +0 -27
- package/src/zod/tempo/_test/MultisigSimulation.test-d.ts +0 -13
|
@@ -5,28 +5,33 @@ import * as Hash from '../core/Hash.js';
|
|
|
5
5
|
import * as Hex from '../core/Hex.js';
|
|
6
6
|
/** Maximum encoded byte length for one primitive owner approval. */
|
|
7
7
|
export const maxOwnerSignatureBytes = 2049;
|
|
8
|
-
/** Maximum number of owners allowed in
|
|
8
|
+
/** Maximum number of owners allowed in an account config. */
|
|
9
9
|
export const maxOwners = 48;
|
|
10
|
-
/** Maximum number of owner approvals in a
|
|
10
|
+
/** Maximum number of owner approvals in a configurable account signature. */
|
|
11
11
|
export const maxSignatures = 8;
|
|
12
|
-
/**
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
/**
|
|
13
|
+
* Maximum threshold accepted by an account config.
|
|
14
|
+
*
|
|
15
|
+
* The threshold must also be reachable by at most {@link ox#AccountConfig.maxSignatures}
|
|
16
|
+
* owner approvals.
|
|
17
|
+
*/
|
|
18
|
+
export const maxThreshold = 0xff;
|
|
19
|
+
/** Maximum version accepted by an account config. */
|
|
15
20
|
export const maxVersion = 2n ** 64n - 1n;
|
|
16
|
-
/** Tempo signature type byte for
|
|
21
|
+
/** Tempo signature type byte for configurable account signatures. */
|
|
17
22
|
export const signatureTypeByte = '0x05';
|
|
18
23
|
/** Zero 32-byte salt (the default when no salt is provided). */
|
|
19
24
|
export const zeroSalt = `0x${'00'.repeat(32)}`;
|
|
20
|
-
/** Domain prefix for the
|
|
25
|
+
/** Domain prefix for the configurable account address derivation. */
|
|
21
26
|
const accountDomain = 'tempo:multisig:account';
|
|
22
|
-
/** Domain prefix for
|
|
27
|
+
/** Domain prefix for account configuration commitments. */
|
|
23
28
|
const configDomain = 'tempo:multisig:config';
|
|
24
29
|
/** Keccak-256 of the canonical recovery wallet creation code. */
|
|
25
30
|
const recoveryWalletInitCodeHash = '0x583cc63a2e37f645b43eac911b1a6d6de08b83abdc308c61364edda8cfc3bd37';
|
|
26
|
-
/** Domain prefix for
|
|
31
|
+
/** Domain prefix for configurable account owner approvals. */
|
|
27
32
|
const signatureDomain = 'tempo:multisig:signature';
|
|
28
33
|
/**
|
|
29
|
-
* Asserts that
|
|
34
|
+
* Asserts that an {@link ox#AccountConfig.Config} is valid.
|
|
30
35
|
*
|
|
31
36
|
* Mirrors the Tempo configuration rules: owners non-empty and
|
|
32
37
|
* `<= maxOwners`, strictly ascending unique nonzero owner addresses, nonzero
|
|
@@ -36,9 +41,9 @@ const signatureDomain = 'tempo:multisig:signature';
|
|
|
36
41
|
*
|
|
37
42
|
* @example
|
|
38
43
|
* ```ts twoslash
|
|
39
|
-
* import {
|
|
44
|
+
* import { AccountConfig } from 'ox/tempo'
|
|
40
45
|
*
|
|
41
|
-
*
|
|
46
|
+
* AccountConfig.assert({
|
|
42
47
|
* threshold: 1,
|
|
43
48
|
* owners: [
|
|
44
49
|
* {
|
|
@@ -49,7 +54,7 @@ const signatureDomain = 'tempo:multisig:signature';
|
|
|
49
54
|
* })
|
|
50
55
|
* ```
|
|
51
56
|
*
|
|
52
|
-
* @param config - The
|
|
57
|
+
* @param config - The account config.
|
|
53
58
|
*/
|
|
54
59
|
export function assert(config) {
|
|
55
60
|
const { owners, salt, threshold, version = 0n } = config;
|
|
@@ -120,13 +125,13 @@ export function from(config) {
|
|
|
120
125
|
return normalized;
|
|
121
126
|
}
|
|
122
127
|
/**
|
|
123
|
-
* Converts a JSON-RPC
|
|
128
|
+
* Converts a JSON-RPC account configuration to its domain representation.
|
|
124
129
|
*
|
|
125
130
|
* @example
|
|
126
131
|
* ```ts twoslash
|
|
127
|
-
* import {
|
|
132
|
+
* import { AccountConfig } from 'ox/tempo'
|
|
128
133
|
*
|
|
129
|
-
* const config =
|
|
134
|
+
* const config = AccountConfig.fromRpc({
|
|
130
135
|
* owners: [
|
|
131
136
|
* {
|
|
132
137
|
* owner: '0x1111111111111111111111111111111111111111',
|
|
@@ -139,8 +144,8 @@ export function from(config) {
|
|
|
139
144
|
* })
|
|
140
145
|
* ```
|
|
141
146
|
*
|
|
142
|
-
* @param config - The JSON-RPC
|
|
143
|
-
* @returns The normalized
|
|
147
|
+
* @param config - The JSON-RPC account configuration.
|
|
148
|
+
* @returns The normalized account configuration.
|
|
144
149
|
*/
|
|
145
150
|
export function fromRpc(config) {
|
|
146
151
|
return from({
|
|
@@ -149,14 +154,14 @@ export function fromRpc(config) {
|
|
|
149
154
|
});
|
|
150
155
|
}
|
|
151
156
|
/**
|
|
152
|
-
* Converts an RLP {@link ox#
|
|
153
|
-
* {@link ox#
|
|
157
|
+
* Converts an RLP {@link ox#AccountConfig.Tuple} back to a
|
|
158
|
+
* {@link ox#AccountConfig.Config}.
|
|
154
159
|
*
|
|
155
160
|
* @example
|
|
156
161
|
* ```ts twoslash
|
|
157
|
-
* import {
|
|
162
|
+
* import { AccountConfig } from 'ox/tempo'
|
|
158
163
|
*
|
|
159
|
-
* const config =
|
|
164
|
+
* const config = AccountConfig.fromTuple([
|
|
160
165
|
* `0x${'00'.repeat(32)}`,
|
|
161
166
|
* '0x',
|
|
162
167
|
* '0x01',
|
|
@@ -165,7 +170,7 @@ export function fromRpc(config) {
|
|
|
165
170
|
* ```
|
|
166
171
|
*
|
|
167
172
|
* @param tuple - The RLP tuple.
|
|
168
|
-
* @returns The
|
|
173
|
+
* @returns The account config.
|
|
169
174
|
*/
|
|
170
175
|
export function fromTuple(tuple) {
|
|
171
176
|
const [salt, version, threshold, owners] = tuple;
|
|
@@ -203,7 +208,7 @@ export function fromTuple(tuple) {
|
|
|
203
208
|
return config;
|
|
204
209
|
}
|
|
205
210
|
/**
|
|
206
|
-
* Derives the stable
|
|
211
|
+
* Derives the stable configurable account address.
|
|
207
212
|
*
|
|
208
213
|
* The initial config is hashed into a CREATE2 salt using fixed-width
|
|
209
214
|
* big-endian fields, not RLP. The account uses the chain-configured recovery
|
|
@@ -214,9 +219,9 @@ export function fromTuple(tuple) {
|
|
|
214
219
|
*
|
|
215
220
|
* @example
|
|
216
221
|
* ```ts twoslash
|
|
217
|
-
* import {
|
|
222
|
+
* import { AccountConfig } from 'ox/tempo'
|
|
218
223
|
*
|
|
219
|
-
* const initialConfig =
|
|
224
|
+
* const initialConfig = AccountConfig.from({
|
|
220
225
|
* owners: [
|
|
221
226
|
* {
|
|
222
227
|
* owner: '0x1111111111111111111111111111111111111111',
|
|
@@ -226,14 +231,14 @@ export function fromTuple(tuple) {
|
|
|
226
231
|
* threshold: 1
|
|
227
232
|
* })
|
|
228
233
|
*
|
|
229
|
-
* const address =
|
|
234
|
+
* const address = AccountConfig.getAddress(initialConfig, {
|
|
230
235
|
* factory: '0x7171717171717171717171717171717171717171'
|
|
231
236
|
* })
|
|
232
237
|
* ```
|
|
233
238
|
*
|
|
234
|
-
* @param config - The initial
|
|
239
|
+
* @param config - The initial account config.
|
|
235
240
|
* @param options - The recovery factory configured by the chain.
|
|
236
|
-
* @returns The
|
|
241
|
+
* @returns The configurable account address.
|
|
237
242
|
*/
|
|
238
243
|
export function getAddress(config, options) {
|
|
239
244
|
Address.assert(options.factory);
|
|
@@ -260,16 +265,16 @@ export function getAddress(config, options) {
|
|
|
260
265
|
return account;
|
|
261
266
|
}
|
|
262
267
|
/**
|
|
263
|
-
* Computes the commitment for
|
|
268
|
+
* Computes the commitment for an account configuration.
|
|
264
269
|
*
|
|
265
270
|
* The commitment uses raw fixed-width fields, not RLP or ABI encoding:
|
|
266
271
|
* `keccak256("tempo:multisig:config" || salt || uint64be(version) || uint8(threshold) || uint8(owners.length) || owners)`.
|
|
267
272
|
*
|
|
268
273
|
* @example
|
|
269
274
|
* ```ts twoslash
|
|
270
|
-
* import {
|
|
275
|
+
* import { AccountConfig } from 'ox/tempo'
|
|
271
276
|
*
|
|
272
|
-
* const commitment =
|
|
277
|
+
* const commitment = AccountConfig.getCommitment({
|
|
273
278
|
* owners: [
|
|
274
279
|
* {
|
|
275
280
|
* owner: '0x1111111111111111111111111111111111111111',
|
|
@@ -281,7 +286,7 @@ export function getAddress(config, options) {
|
|
|
281
286
|
* })
|
|
282
287
|
* ```
|
|
283
288
|
*
|
|
284
|
-
* @param config - The complete
|
|
289
|
+
* @param config - The complete account configuration.
|
|
285
290
|
* @returns The configuration commitment.
|
|
286
291
|
*/
|
|
287
292
|
export function getCommitment(config) {
|
|
@@ -292,7 +297,7 @@ export function getCommitment(config) {
|
|
|
292
297
|
])));
|
|
293
298
|
}
|
|
294
299
|
/**
|
|
295
|
-
* Computes the digest a
|
|
300
|
+
* Computes the digest a configurable account owner approves (signs).
|
|
296
301
|
*
|
|
297
302
|
* `keccak256("tempo:multisig:signature" || inner_digest || account || uint64be(version))`,
|
|
298
303
|
* where `inner_digest` is the transaction sign payload
|
|
@@ -304,9 +309,9 @@ export function getCommitment(config) {
|
|
|
304
309
|
*
|
|
305
310
|
* @example
|
|
306
311
|
* ```ts twoslash
|
|
307
|
-
* import {
|
|
312
|
+
* import { AccountConfig, TxEnvelopeTempo } from 'ox/tempo'
|
|
308
313
|
*
|
|
309
|
-
* const config =
|
|
314
|
+
* const config = AccountConfig.from({
|
|
310
315
|
* owners: [
|
|
311
316
|
* {
|
|
312
317
|
* owner: '0x1111111111111111111111111111111111111111',
|
|
@@ -321,8 +326,8 @@ export function getCommitment(config) {
|
|
|
321
326
|
* calls: []
|
|
322
327
|
* })
|
|
323
328
|
*
|
|
324
|
-
* const digest =
|
|
325
|
-
* account:
|
|
329
|
+
* const digest = AccountConfig.getSignPayload({
|
|
330
|
+
* account: AccountConfig.getAddress(config, {
|
|
326
331
|
* factory: '0x7171717171717171717171717171717171717171'
|
|
327
332
|
* }),
|
|
328
333
|
* config,
|
|
@@ -342,13 +347,13 @@ export function getSignPayload(value) {
|
|
|
342
347
|
return Hash.keccak256(Hex.concat(Hex.fromString(signatureDomain), Hex.from(payload), account, Hex.fromNumber(config.version ?? 0n, { size: 8 })));
|
|
343
348
|
}
|
|
344
349
|
/**
|
|
345
|
-
* Converts
|
|
350
|
+
* Converts an account configuration to its JSON-RPC representation.
|
|
346
351
|
*
|
|
347
352
|
* @example
|
|
348
353
|
* ```ts twoslash
|
|
349
|
-
* import {
|
|
354
|
+
* import { AccountConfig } from 'ox/tempo'
|
|
350
355
|
*
|
|
351
|
-
* const config =
|
|
356
|
+
* const config = AccountConfig.toRpc({
|
|
352
357
|
* owners: [
|
|
353
358
|
* {
|
|
354
359
|
* owner: '0x1111111111111111111111111111111111111111',
|
|
@@ -359,8 +364,8 @@ export function getSignPayload(value) {
|
|
|
359
364
|
* })
|
|
360
365
|
* ```
|
|
361
366
|
*
|
|
362
|
-
* @param config - The
|
|
363
|
-
* @returns The JSON-RPC
|
|
367
|
+
* @param config - The account configuration.
|
|
368
|
+
* @returns The JSON-RPC account configuration.
|
|
364
369
|
*/
|
|
365
370
|
export function toRpc(config) {
|
|
366
371
|
const value = from(config);
|
|
@@ -375,7 +380,7 @@ export function toRpc(config) {
|
|
|
375
380
|
};
|
|
376
381
|
}
|
|
377
382
|
/**
|
|
378
|
-
* Converts a {@link ox#
|
|
383
|
+
* Converts a {@link ox#AccountConfig.Config} to its RLP tuple form.
|
|
379
384
|
*
|
|
380
385
|
* Tuple shape: `[salt, version, threshold, [[owner, weight], ...]]`. The
|
|
381
386
|
* 32-byte `salt` encodes as a full fixed-width string; other integers use
|
|
@@ -383,9 +388,9 @@ export function toRpc(config) {
|
|
|
383
388
|
*
|
|
384
389
|
* @example
|
|
385
390
|
* ```ts twoslash
|
|
386
|
-
* import {
|
|
391
|
+
* import { AccountConfig } from 'ox/tempo'
|
|
387
392
|
*
|
|
388
|
-
* const tuple =
|
|
393
|
+
* const tuple = AccountConfig.toTuple({
|
|
389
394
|
* owners: [
|
|
390
395
|
* {
|
|
391
396
|
* owner: '0x1111111111111111111111111111111111111111',
|
|
@@ -396,7 +401,7 @@ export function toRpc(config) {
|
|
|
396
401
|
* })
|
|
397
402
|
* ```
|
|
398
403
|
*
|
|
399
|
-
* @param config - The
|
|
404
|
+
* @param config - The account config.
|
|
400
405
|
* @returns The RLP tuple.
|
|
401
406
|
*/
|
|
402
407
|
export function toTuple(config) {
|
|
@@ -414,14 +419,63 @@ export function toTuple(config) {
|
|
|
414
419
|
];
|
|
415
420
|
}
|
|
416
421
|
/**
|
|
417
|
-
*
|
|
422
|
+
* Derives the configuration that replaces the current one in an owner update.
|
|
423
|
+
*
|
|
424
|
+
* Mirrors the `updateConfig` precompile ([TIP-1109](https://tips.sh/1109)):
|
|
425
|
+
* keeps the current salt, increments the version by one, and replaces the
|
|
426
|
+
* owners and threshold. Owners are sorted into canonical order and the next
|
|
427
|
+
* configuration is validated. The account address does not change.
|
|
428
|
+
*
|
|
429
|
+
* @example
|
|
430
|
+
* ```ts twoslash
|
|
431
|
+
* import { AccountConfig } from 'ox/tempo'
|
|
432
|
+
*
|
|
433
|
+
* const initialConfig = AccountConfig.from({
|
|
434
|
+
* owners: [
|
|
435
|
+
* {
|
|
436
|
+
* owner: '0x1111111111111111111111111111111111111111',
|
|
437
|
+
* weight: 1
|
|
438
|
+
* }
|
|
439
|
+
* ],
|
|
440
|
+
* threshold: 1
|
|
441
|
+
* })
|
|
442
|
+
*
|
|
443
|
+
* const config = AccountConfig.update(initialConfig, {
|
|
444
|
+
* owners: [
|
|
445
|
+
* {
|
|
446
|
+
* owner: '0x2222222222222222222222222222222222222222',
|
|
447
|
+
* weight: 1
|
|
448
|
+
* }
|
|
449
|
+
* ],
|
|
450
|
+
* threshold: 1
|
|
451
|
+
* })
|
|
452
|
+
* // config.version === 1n, with the initial salt
|
|
453
|
+
* ```
|
|
454
|
+
*
|
|
455
|
+
* @param config - The current account config.
|
|
456
|
+
* @param options - The replacement owners and threshold.
|
|
457
|
+
* @returns The next account config.
|
|
458
|
+
*/
|
|
459
|
+
export function update(config, options) {
|
|
460
|
+
const current = from(config);
|
|
461
|
+
if (current.version === maxVersion)
|
|
462
|
+
throw new InvalidConfigError({ reason: 'version overflow' });
|
|
463
|
+
return from({
|
|
464
|
+
owners: options.owners,
|
|
465
|
+
salt: current.salt,
|
|
466
|
+
threshold: options.threshold,
|
|
467
|
+
version: current.version + 1n,
|
|
468
|
+
});
|
|
469
|
+
}
|
|
470
|
+
/**
|
|
471
|
+
* Validates an {@link ox#AccountConfig.Config}. Returns `true`
|
|
418
472
|
* if valid, `false` otherwise.
|
|
419
473
|
*
|
|
420
474
|
* @example
|
|
421
475
|
* ```ts twoslash
|
|
422
|
-
* import {
|
|
476
|
+
* import { AccountConfig } from 'ox/tempo'
|
|
423
477
|
*
|
|
424
|
-
* const valid =
|
|
478
|
+
* const valid = AccountConfig.validate({
|
|
425
479
|
* owners: [
|
|
426
480
|
* {
|
|
427
481
|
* owner: '0x1111111111111111111111111111111111111111',
|
|
@@ -433,7 +487,7 @@ export function toTuple(config) {
|
|
|
433
487
|
* // @log: true
|
|
434
488
|
* ```
|
|
435
489
|
*
|
|
436
|
-
* @param config - The
|
|
490
|
+
* @param config - The account config.
|
|
437
491
|
* @returns Whether the config is valid.
|
|
438
492
|
*/
|
|
439
493
|
export function validate(config) {
|
|
@@ -445,11 +499,11 @@ export function validate(config) {
|
|
|
445
499
|
return false;
|
|
446
500
|
}
|
|
447
501
|
}
|
|
448
|
-
/** Thrown when
|
|
502
|
+
/** Thrown when an account config is invalid. */
|
|
449
503
|
export class InvalidConfigError extends Errors.BaseError {
|
|
450
|
-
name = '
|
|
504
|
+
name = 'AccountConfig.InvalidConfigError';
|
|
451
505
|
constructor({ reason }) {
|
|
452
|
-
super(`Invalid
|
|
506
|
+
super(`Invalid account config: ${reason}.`);
|
|
453
507
|
}
|
|
454
508
|
}
|
|
455
509
|
/** @internal */
|
|
@@ -462,4 +516,4 @@ function assertVersion(version) {
|
|
|
462
516
|
reason: 'version must be an unsigned 64-bit integer',
|
|
463
517
|
});
|
|
464
518
|
}
|
|
465
|
-
//# sourceMappingURL=
|
|
519
|
+
//# sourceMappingURL=AccountConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccountConfig.js","sourceRoot":"","sources":["../../src/tempo/AccountConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAE7C,OAAO,KAAK,eAAe,MAAM,4BAA4B,CAAA;AAC7D,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAA;AACvC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AAGrC,oEAAoE;AACpE,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAA;AAE1C,6DAA6D;AAC7D,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,CAAA;AAE3B,6EAA6E;AAC7E,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAA;AAE9B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAA;AAEhC,qDAAqD;AACrD,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,IAAI,GAAG,GAAG,EAAE,CAAA;AAExC,qEAAqE;AACrE,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAe,CAAA;AAEhD,gEAAgE;AAChE,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAW,CAAA;AAEvD,qEAAqE;AACrE,MAAM,aAAa,GAAG,wBAAwB,CAAA;AAE9C,2DAA2D;AAC3D,MAAM,YAAY,GAAG,uBAAuB,CAAA;AAE5C,iEAAiE;AACjE,MAAM,0BAA0B,GAC9B,oEAAoE,CAAA;AAEtE,8DAA8D;AAC9D,MAAM,eAAe,GAAG,0BAA0B,CAAA;AAqDlD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,MAAM,CAGpB,MAAsC;IACtC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,MAAM,CAAA;IAExD,IAAI,OAAO,IAAI,KAAK,WAAW,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;QACtD,MAAM,IAAI,kBAAkB,CAAC,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC,CAAA;IACnE,aAAa,CAAC,OAAO,CAAC,CAAA;IACtB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QACrB,MAAM,IAAI,kBAAkB,CAAC,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC,CAAA;IACpE,IAAI,MAAM,CAAC,MAAM,GAAG,SAAS;QAC3B,MAAM,IAAI,kBAAkB,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAA;IAC7D,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACtC,MAAM,IAAI,kBAAkB,CAAC,EAAE,MAAM,EAAE,8BAA8B,EAAE,CAAC,CAAA;IAC1E,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC;QACvB,MAAM,IAAI,kBAAkB,CAAC,EAAE,MAAM,EAAE,0BAA0B,EAAE,CAAC,CAAA;IACtE,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,YAAY;QAClC,MAAM,IAAI,kBAAkB,CAAC,EAAE,MAAM,EAAE,iCAAiC,EAAE,CAAC,CAAA;IAE7E,IAAI,WAAW,GAAG,CAAC,CAAA;IACnB,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,IAAI,QAA4B,CAAA;IAChC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;YACpE,MAAM,IAAI,kBAAkB,CAAC,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC,CAAA;QAClE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzC,MAAM,IAAI,kBAAkB,CAAC;gBAC3B,MAAM,EAAE,iCAAiC;aAC1C,CAAC,CAAA;QACJ,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;YAC1B,MAAM,IAAI,kBAAkB,CAAC,EAAE,MAAM,EAAE,6BAA6B,EAAE,CAAC,CAAA;QAEzE,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACzC,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,QAAQ,IAAI,OAAO;YACxD,MAAM,IAAI,kBAAkB,CAAC;gBAC3B,MAAM,EAAE,mCAAmC;aAC5C,CAAC,CAAA;QACJ,QAAQ,GAAG,OAAO,CAAA;QAElB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACnC,WAAW,IAAI,MAAM,CAAA;QACrB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACtB,CAAC;IAED,IAAI,WAAW,GAAG,IAAI;QACpB,MAAM,IAAI,kBAAkB,CAAC;YAC3B,MAAM,EAAE,mCAAmC;SAC5C,CAAC,CAAA;IACJ,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,WAAW;QACjC,MAAM,IAAI,kBAAkB,CAAC;YAC3B,MAAM,EAAE,sCAAsC;SAC/C,CAAC,CAAA;IAEJ,MAAM,eAAe,GAAG,OAAO;SAC5B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;SACrB,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC;SACvB,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,EAAE,CAAC,CAAC,CAAA;IAC3C,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,eAAe;QACrC,MAAM,IAAI,kBAAkB,CAAC;YAC3B,MAAM,EAAE,yCAAyC,aAAa,mBAAmB;SAClF,CAAC,CAAA;AACN,CAAC;AA+CD,kDAAkD;AAClD,MAAM,UAAU,IAAI,CAClB,MAA0C;IAE1C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAA;IACpC,aAAa,CAAC,OAAO,CAAC,CAAA;IACtB,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC9C,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACvD,CAAA;IACD,MAAM,UAAU,GAAG;QACjB,MAAM;QACN,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ;QAC3D,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC;KACK,CAAA;IAC/B,MAAM,CAAC,UAAU,CAAC,CAAA;IAClB,OAAO,UAAU,CAAA;AACnB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,OAAO,CAAC,MAAW;IACjC,OAAO,IAAI,CAAC;QACV,GAAG,MAAM;QACT,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;KACtC,CAAC,CAAA;AACJ,CAAC;AASD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,SAAS,CAAC,KAAY;IACpC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,GAAG,KAAK,CAAA;IAChD,IACE,KAAK,CAAC,MAAM,KAAK,CAAC;QAClB,OAAO,IAAI,KAAK,QAAQ;QACxB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;QACrB,OAAO,OAAO,KAAK,QAAQ;QAC3B,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;QACrB,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC;QAC1B,OAAO,SAAS,KAAK,QAAQ;QAC7B,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;QACvB,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC;QAC5B,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QACtB,MAAM,CAAC,IAAI,CACT,CAAC,KAAK,EAAE,EAAE,CACR,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACrB,KAAK,CAAC,MAAM,KAAK,CAAC;YAClB,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ;YAC5B,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3B,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ;YAC5B,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAY,CAAC,GAAG,CAAC;YACjC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAC9B;QAED,MAAM,IAAI,kBAAkB,CAAC,EAAE,MAAM,EAAE,0BAA0B,EAAE,CAAC,CAAA;IACtE,MAAM,MAAM,GAAG;QACb,IAAI,EAAE,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ;QAC9D,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;QACtD,SAAS,EAAE,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC3D,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YAC3B,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,GAAG,KAA2B,CAAA;YAC1D,OAAO;gBACL,KAAK,EAAE,YAA+B;gBACtC,MAAM,EAAE,CAAC,MAAM,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;aAC9D,CAAA;QACH,CAAC,CAAC;KACH,CAAA;IACD,MAAM,CAAC,MAAM,CAAC,CAAA;IACd,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,UAAU,UAAU,CACxB,MAAa,EACb,OAA2B;IAE3B,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAC/B,MAAM,CAAC,MAAM,CAAC,CAAA;IACd,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,EAAE;QACpC,MAAM,IAAI,kBAAkB,CAAC;YAC3B,MAAM,EAAE,uCAAuC;SAChD,CAAC,CAAA;IACJ,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAChC,GAAG,CAAC,MAAM,CACR,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAC7B,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAE,EAAE,CAAC,EACxC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAC7C,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EACjD,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;QAClC,KAAK,CAAC,KAAK;QACX,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;KAC1C,CAAC,CACH,CACF,CAAA;IACD,MAAM,OAAO,GAAG,eAAe,CAAC,WAAW,CAAC;QAC1C,YAAY,EAAE,0BAA0B;QACxC,IAAI,EAAE,OAAO,CAAC,OAAO;QACrB,IAAI,EAAE,WAAW;KAClB,CAAC,CAAA;IACF,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE;QAC9B,MAAM,IAAI,kBAAkB,CAAC,EAAE,MAAM,EAAE,gCAAgC,EAAE,CAAC,CAAA;IAC5E,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACtE,MAAM,IAAI,kBAAkB,CAAC;YAC3B,MAAM,EAAE,oCAAoC;SAC7C,CAAC,CAAA;IACJ,OAAO,OAAO,CAAA;AAChB,CAAC;AAkBD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,aAAa,CAAC,MAAa;IACzC,MAAM,CAAC,MAAM,CAAC,CAAA;IACd,OAAO,IAAI,CAAC,SAAS,CACnB,GAAG,CAAC,MAAM,CACR,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,EAC5B,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAE,EAAE,CAAC,EACxC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EACjD,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAC7C,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EACjD,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;QAClC,KAAK,CAAC,KAAK;QACX,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;KAC1C,CAAC,CACH,CACF,CAAA;AACH,CAAC;AAYD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,MAAM,UAAU,cAAc,CAAC,KAA2B;IACxD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAA;IAC1C,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAC7B,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACvB,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE;QACpC,MAAM,IAAI,kBAAkB,CAAC,EAAE,MAAM,EAAE,0BAA0B,EAAE,CAAC,CAAA;IACtE,OAAO,IAAI,CAAC,SAAS,CACnB,GAAG,CAAC,MAAM,CACR,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,EAC/B,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EACjB,OAAO,EACP,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAClD,CACF,CAAA;AACH,CAAC;AAqBD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,KAAK,CAAC,MAAa;IACjC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;IAC1B,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACnC,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;SAC7B,CAAC,CAAC;QACH,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;QAClC,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;KACvC,CAAA;AACH,CAAC;AASD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,OAAO,CAAC,MAAa;IACnC,MAAM,CAAC,MAAM,CAAC,CAAA;IACd,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAC9B,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAc,CACpE,CAAA;IACD,2EAA2E;IAC3E,4DAA4D;IAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;IAClE,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,CAAA;IAC3C,OAAO;QACL,IAAI;QACJ,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;QAC/C,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC;QAChC,MAAM;KACE,CAAA;AACZ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,UAAU,MAAM,CACpB,MAA0C,EAC1C,OAAmC;IAEnC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;IAC5B,IAAI,OAAO,CAAC,OAAO,KAAK,UAAU;QAChC,MAAM,IAAI,kBAAkB,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAA;IAC9D,OAAO,IAAI,CAAC;QACV,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,EAAE;KAC9B,CAAC,CAAA;AACJ,CAAC;AAgBD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,QAAQ,CAAC,MAAa;IACpC,IAAI,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,CAAA;QACd,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,gDAAgD;AAChD,MAAM,OAAO,kBAAmB,SAAQ,MAAM,CAAC,SAAS;IACpC,IAAI,GAAG,kCAAkC,CAAA;IAC3D,YAAY,EAAE,MAAM,EAAsB;QACxC,KAAK,CAAC,2BAA2B,MAAM,GAAG,CAAC,CAAA;IAC7C,CAAC;CACF;AAED,gBAAgB;AAChB,SAAS,aAAa,CAAC,OAAgB;IACrC,IACE,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,KAAK,QAAQ,CAAC;QAC5D,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC/D,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;QACpB,MAAM,CAAC,OAAO,CAAC,GAAG,UAAU;QAE5B,MAAM,IAAI,kBAAkB,CAAC;YAC3B,MAAM,EAAE,4CAA4C;SACrD,CAAC,CAAA;AACN,CAAC"}
|