@t402/wdk 2.4.0 → 2.6.0
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/dist/cjs/adapters/index.d.ts +198 -1
- package/dist/cjs/adapters/index.js +255 -0
- package/dist/cjs/adapters/index.js.map +1 -1
- package/dist/cjs/adapters/svm-adapter.d.ts +146 -2
- package/dist/cjs/adapters/svm-adapter.js +255 -2
- package/dist/cjs/adapters/svm-adapter.js.map +1 -1
- package/dist/cjs/adapters/ton-adapter.d.ts +57 -2
- package/dist/cjs/adapters/ton-adapter.js +75 -2
- package/dist/cjs/adapters/ton-adapter.js.map +1 -1
- package/dist/cjs/adapters/tron-adapter.d.ts +57 -2
- package/dist/cjs/adapters/tron-adapter.js +101 -0
- package/dist/cjs/adapters/tron-adapter.js.map +1 -1
- package/dist/cjs/index-DnEI5M6d.d.ts +1798 -0
- package/dist/cjs/index.d.ts +702 -1118
- package/dist/cjs/index.js +3905 -246
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/integrations/index.d.ts +9 -0
- package/dist/cjs/integrations/index.js +249 -0
- package/dist/cjs/integrations/index.js.map +1 -0
- package/dist/cjs/testing/index.d.ts +62 -0
- package/dist/cjs/testing/index.js +129 -0
- package/dist/cjs/testing/index.js.map +1 -0
- package/dist/cjs/types-BwK8Xgvg.d.ts +967 -0
- package/dist/esm/adapters/index.d.mts +198 -1
- package/dist/esm/adapters/index.mjs +14 -3
- package/dist/esm/adapters/svm-adapter.d.mts +146 -2
- package/dist/esm/adapters/svm-adapter.mjs +18 -3
- package/dist/esm/adapters/ton-adapter.d.mts +57 -2
- package/dist/esm/adapters/ton-adapter.mjs +8 -3
- package/dist/esm/adapters/tron-adapter.d.mts +57 -2
- package/dist/esm/adapters/tron-adapter.mjs +2 -1
- package/dist/esm/chunk-2KWVW77U.mjs +353 -0
- package/dist/esm/chunk-2KWVW77U.mjs.map +1 -0
- package/dist/esm/chunk-7CG77QAN.mjs +153 -0
- package/dist/esm/chunk-7CG77QAN.mjs.map +1 -0
- package/dist/esm/chunk-BJTO5JO5.mjs +11 -0
- package/dist/esm/chunk-BJTO5JO5.mjs.map +1 -0
- package/dist/esm/{chunk-YWBJJV5M.mjs → chunk-KWX6CJIH.mjs} +72 -1
- package/dist/esm/chunk-KWX6CJIH.mjs.map +1 -0
- package/dist/esm/{chunk-HB2DGKQ3.mjs → chunk-QZKUU2O6.mjs} +102 -1
- package/dist/esm/chunk-QZKUU2O6.mjs.map +1 -0
- package/dist/esm/chunk-TVSNUSFZ.mjs +219 -0
- package/dist/esm/chunk-TVSNUSFZ.mjs.map +1 -0
- package/dist/esm/index-D5kvtDfm.d.mts +1798 -0
- package/dist/esm/index.d.mts +702 -1118
- package/dist/esm/index.mjs +2934 -70
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/integrations/index.d.mts +9 -0
- package/dist/esm/integrations/index.mjs +16 -0
- package/dist/esm/integrations/index.mjs.map +1 -0
- package/dist/esm/testing/index.d.mts +62 -0
- package/dist/esm/testing/index.mjs +101 -0
- package/dist/esm/testing/index.mjs.map +1 -0
- package/dist/esm/types-BwK8Xgvg.d.mts +967 -0
- package/package.json +69 -20
- package/dist/cjs/types-V7c-qhn6.d.ts +0 -489
- package/dist/esm/chunk-HB2DGKQ3.mjs.map +0 -1
- package/dist/esm/chunk-MCFHZSF7.mjs +0 -107
- package/dist/esm/chunk-MCFHZSF7.mjs.map +0 -1
- package/dist/esm/chunk-YWBJJV5M.mjs.map +0 -1
- package/dist/esm/types-V7c-qhn6.d.mts +0 -489
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { A as A2APaymentPayload, a as A2APaymentRequired, F as FacilitatorWdkSigner, h as FacilitatorWdkSignerOptions, S as SIWxSigner, r as WdkA2AOptions, s as WdkA2APaymentClient, v as createFacilitatorSigners, w as createSIWxSigners, y as createWdkA2APaymentClient, Z as toFacilitatorWdkSigner, _ as toSIWxSigner } from '../index-D5kvtDfm.mjs';
|
|
2
|
+
import 'viem';
|
|
3
|
+
import '../types-BwK8Xgvg.mjs';
|
|
4
|
+
import '../adapters/ton-adapter.mjs';
|
|
5
|
+
import '../adapters/svm-adapter.mjs';
|
|
6
|
+
import '../adapters/tron-adapter.mjs';
|
|
7
|
+
import '../adapters/index.mjs';
|
|
8
|
+
import '@t402/evm';
|
|
9
|
+
import '@t402/core/types';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createFacilitatorSigners,
|
|
3
|
+
createSIWxSigners,
|
|
4
|
+
createWdkA2APaymentClient,
|
|
5
|
+
toFacilitatorWdkSigner,
|
|
6
|
+
toSIWxSigner
|
|
7
|
+
} from "../chunk-TVSNUSFZ.mjs";
|
|
8
|
+
import "../chunk-BJTO5JO5.mjs";
|
|
9
|
+
export {
|
|
10
|
+
createFacilitatorSigners,
|
|
11
|
+
createSIWxSigners,
|
|
12
|
+
createWdkA2APaymentClient,
|
|
13
|
+
toFacilitatorWdkSigner,
|
|
14
|
+
toSIWxSigner
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { c as WDKAccount, a as WDKTonAccount, W as WDKSolanaAccount, b as WDKTronAccount, d as WDKInstance } from '../types-BwK8Xgvg.mjs';
|
|
2
|
+
import 'viem';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Shared test harness for @t402/wdk
|
|
6
|
+
*
|
|
7
|
+
* Provides mock factories for WDK accounts, instances, and T402WDK
|
|
8
|
+
* to simplify testing across the T402 ecosystem.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Create a mock WDK EVM account with sensible defaults.
|
|
13
|
+
*/
|
|
14
|
+
declare function createMockWDKAccount(overrides?: Partial<WDKAccount>): WDKAccount;
|
|
15
|
+
/**
|
|
16
|
+
* Create a mock WDK instance that returns the given accounts.
|
|
17
|
+
*/
|
|
18
|
+
declare function createMockWDKInstance(accounts?: Record<string, WDKAccount>): WDKInstance;
|
|
19
|
+
/**
|
|
20
|
+
* Create a mock TON account.
|
|
21
|
+
*/
|
|
22
|
+
declare function createMockTonAccount(overrides?: Partial<WDKTonAccount>): WDKTonAccount;
|
|
23
|
+
/**
|
|
24
|
+
* Create a mock Solana account.
|
|
25
|
+
*/
|
|
26
|
+
declare function createMockSolanaAccount(overrides?: Partial<WDKSolanaAccount>): WDKSolanaAccount;
|
|
27
|
+
/**
|
|
28
|
+
* Create a mock TRON account.
|
|
29
|
+
*/
|
|
30
|
+
declare function createMockTronAccount(overrides?: Partial<WDKTronAccount>): WDKTronAccount;
|
|
31
|
+
/**
|
|
32
|
+
* Configuration for createMockT402WDK.
|
|
33
|
+
*/
|
|
34
|
+
interface MockT402WDKConfig {
|
|
35
|
+
/** Chains to configure (default: ['arbitrum']) */
|
|
36
|
+
chains?: string[];
|
|
37
|
+
/** Custom EVM account overrides */
|
|
38
|
+
evmAccount?: Partial<WDKAccount>;
|
|
39
|
+
/** Custom TON account overrides */
|
|
40
|
+
tonAccount?: Partial<WDKTonAccount>;
|
|
41
|
+
/** Custom Solana account overrides */
|
|
42
|
+
solanaAccount?: Partial<WDKSolanaAccount>;
|
|
43
|
+
/** Custom TRON account overrides */
|
|
44
|
+
tronAccount?: Partial<WDKTronAccount>;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Create a mock T402WDK-like object for testing, returning
|
|
48
|
+
* the underlying WDK instance and chain configuration.
|
|
49
|
+
*
|
|
50
|
+
* This is useful when you need to test code that depends on
|
|
51
|
+
* T402WDK without importing the full class.
|
|
52
|
+
*/
|
|
53
|
+
declare function createMockT402WDK(config?: MockT402WDKConfig): {
|
|
54
|
+
wdkInstance: WDKInstance;
|
|
55
|
+
chainConfig: Record<string, string>;
|
|
56
|
+
evmAccount: WDKAccount;
|
|
57
|
+
tonAccount: WDKTonAccount;
|
|
58
|
+
solanaAccount: WDKSolanaAccount;
|
|
59
|
+
tronAccount: WDKTronAccount;
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
export { type MockT402WDKConfig, createMockSolanaAccount, createMockT402WDK, createMockTonAccount, createMockTronAccount, createMockWDKAccount, createMockWDKInstance };
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import "../chunk-BJTO5JO5.mjs";
|
|
2
|
+
|
|
3
|
+
// src/testing/index.ts
|
|
4
|
+
function createMockWDKAccount(overrides) {
|
|
5
|
+
return {
|
|
6
|
+
getAddress: async () => "0x1234567890123456789012345678901234567890",
|
|
7
|
+
getBalance: async () => 1000000000000000000n,
|
|
8
|
+
getTokenBalance: async () => 1000000n,
|
|
9
|
+
signMessage: async () => "0xmocksignature",
|
|
10
|
+
signTypedData: async () => "0xmocktypedsignature",
|
|
11
|
+
sendTransaction: async () => "0xmocktxhash",
|
|
12
|
+
estimateGas: async () => 21000n,
|
|
13
|
+
...overrides
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
function createMockWDKInstance(accounts) {
|
|
17
|
+
const defaultAccount = createMockWDKAccount();
|
|
18
|
+
return {
|
|
19
|
+
registerWallet: function() {
|
|
20
|
+
return this;
|
|
21
|
+
},
|
|
22
|
+
registerProtocol: function() {
|
|
23
|
+
return this;
|
|
24
|
+
},
|
|
25
|
+
getAccount: async (chain, _index) => {
|
|
26
|
+
return accounts?.[chain] ?? defaultAccount;
|
|
27
|
+
},
|
|
28
|
+
executeProtocol: async () => ({ txHash: "0xmockprotocoltxhash" })
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
function createMockTonAccount(overrides) {
|
|
32
|
+
return {
|
|
33
|
+
getAddress: async () => "UQBMock_TON_Address_For_Testing_Purposes_Only_12345",
|
|
34
|
+
getBalance: async () => 5000000000n,
|
|
35
|
+
getJettonBalance: async () => 1000000n,
|
|
36
|
+
signMessage: async () => new Uint8Array(64),
|
|
37
|
+
sendTransaction: async () => "mock_ton_tx_hash",
|
|
38
|
+
getSeqno: async () => 1,
|
|
39
|
+
transferJetton: async () => "mock_jetton_tx_hash",
|
|
40
|
+
...overrides
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function createMockSolanaAccount(overrides) {
|
|
44
|
+
return {
|
|
45
|
+
getAddress: async () => "11111111111111111111111111111112",
|
|
46
|
+
getBalance: async () => 2000000000n,
|
|
47
|
+
getTokenBalance: async () => 1000000n,
|
|
48
|
+
sign: async () => new Uint8Array(64),
|
|
49
|
+
signTransaction: async () => new Uint8Array(128),
|
|
50
|
+
sendTransaction: async () => "mock_sol_tx_hash",
|
|
51
|
+
transfer: async () => "mock_spl_tx_hash",
|
|
52
|
+
...overrides
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
function createMockTronAccount(overrides) {
|
|
56
|
+
return {
|
|
57
|
+
getAddress: async () => "TJMockTronAddress1234567890ABCDEF",
|
|
58
|
+
getBalance: async () => 10000000n,
|
|
59
|
+
getTrc20Balance: async () => 1000000n,
|
|
60
|
+
signTransaction: async (tx) => tx,
|
|
61
|
+
sendTransaction: async () => "mock_tron_tx_hash",
|
|
62
|
+
transferTrc20: async () => "mock_trc20_tx_hash",
|
|
63
|
+
...overrides
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
function createMockT402WDK(config) {
|
|
67
|
+
const chains = config?.chains ?? ["arbitrum"];
|
|
68
|
+
const evmAccount = createMockWDKAccount(config?.evmAccount);
|
|
69
|
+
const tonAccount = createMockTonAccount(config?.tonAccount);
|
|
70
|
+
const solanaAccount = createMockSolanaAccount(config?.solanaAccount);
|
|
71
|
+
const tronAccount = createMockTronAccount(config?.tronAccount);
|
|
72
|
+
const accountMap = {};
|
|
73
|
+
for (const chain of chains) {
|
|
74
|
+
accountMap[chain] = evmAccount;
|
|
75
|
+
}
|
|
76
|
+
accountMap["ton"] = tonAccount;
|
|
77
|
+
accountMap["solana"] = solanaAccount;
|
|
78
|
+
accountMap["tron"] = tronAccount;
|
|
79
|
+
const wdkInstance = createMockWDKInstance(accountMap);
|
|
80
|
+
const chainConfig = {};
|
|
81
|
+
for (const chain of chains) {
|
|
82
|
+
chainConfig[chain] = `https://mock-rpc.${chain}.test`;
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
wdkInstance,
|
|
86
|
+
chainConfig,
|
|
87
|
+
evmAccount,
|
|
88
|
+
tonAccount,
|
|
89
|
+
solanaAccount,
|
|
90
|
+
tronAccount
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
export {
|
|
94
|
+
createMockSolanaAccount,
|
|
95
|
+
createMockT402WDK,
|
|
96
|
+
createMockTonAccount,
|
|
97
|
+
createMockTronAccount,
|
|
98
|
+
createMockWDKAccount,
|
|
99
|
+
createMockWDKInstance
|
|
100
|
+
};
|
|
101
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/testing/index.ts"],"sourcesContent":["/**\n * Shared test harness for @t402/wdk\n *\n * Provides mock factories for WDK accounts, instances, and T402WDK\n * to simplify testing across the T402 ecosystem.\n */\n\nimport type {\n WDKAccount,\n WDKInstance,\n WDKTonAccount,\n WDKSolanaAccount,\n WDKTronAccount,\n} from '../types.js'\n\n/**\n * Create a mock WDK EVM account with sensible defaults.\n */\nexport function createMockWDKAccount(overrides?: Partial<WDKAccount>): WDKAccount {\n return {\n getAddress: async () => '0x1234567890123456789012345678901234567890',\n getBalance: async () => 1000000000000000000n,\n getTokenBalance: async () => 1000000n,\n signMessage: async () => '0xmocksignature',\n signTypedData: async () => '0xmocktypedsignature',\n sendTransaction: async () => '0xmocktxhash',\n estimateGas: async () => 21000n,\n ...overrides,\n }\n}\n\n/**\n * Create a mock WDK instance that returns the given accounts.\n */\nexport function createMockWDKInstance(accounts?: Record<string, WDKAccount>): WDKInstance {\n const defaultAccount = createMockWDKAccount()\n return {\n registerWallet: function () {\n return this as WDKInstance\n },\n registerProtocol: function () {\n return this as WDKInstance\n },\n getAccount: async (chain: string, _index: number) => {\n return accounts?.[chain] ?? defaultAccount\n },\n executeProtocol: async () => ({ txHash: '0xmockprotocoltxhash' }),\n }\n}\n\n/**\n * Create a mock TON account.\n */\nexport function createMockTonAccount(overrides?: Partial<WDKTonAccount>): WDKTonAccount {\n return {\n getAddress: async () => 'UQBMock_TON_Address_For_Testing_Purposes_Only_12345',\n getBalance: async () => 5000000000n,\n getJettonBalance: async () => 1000000n,\n signMessage: async () => new Uint8Array(64),\n sendTransaction: async () => 'mock_ton_tx_hash',\n getSeqno: async () => 1,\n transferJetton: async () => 'mock_jetton_tx_hash',\n ...overrides,\n }\n}\n\n/**\n * Create a mock Solana account.\n */\nexport function createMockSolanaAccount(overrides?: Partial<WDKSolanaAccount>): WDKSolanaAccount {\n return {\n getAddress: async () => '11111111111111111111111111111112',\n getBalance: async () => 2000000000n,\n getTokenBalance: async () => 1000000n,\n sign: async () => new Uint8Array(64),\n signTransaction: async () => new Uint8Array(128),\n sendTransaction: async () => 'mock_sol_tx_hash',\n transfer: async () => 'mock_spl_tx_hash',\n ...overrides,\n }\n}\n\n/**\n * Create a mock TRON account.\n */\nexport function createMockTronAccount(overrides?: Partial<WDKTronAccount>): WDKTronAccount {\n return {\n getAddress: async () => 'TJMockTronAddress1234567890ABCDEF',\n getBalance: async () => 10000000n,\n getTrc20Balance: async () => 1000000n,\n signTransaction: async (tx: unknown) => tx,\n sendTransaction: async () => 'mock_tron_tx_hash',\n transferTrc20: async () => 'mock_trc20_tx_hash',\n ...overrides,\n }\n}\n\n/**\n * Configuration for createMockT402WDK.\n */\nexport interface MockT402WDKConfig {\n /** Chains to configure (default: ['arbitrum']) */\n chains?: string[]\n /** Custom EVM account overrides */\n evmAccount?: Partial<WDKAccount>\n /** Custom TON account overrides */\n tonAccount?: Partial<WDKTonAccount>\n /** Custom Solana account overrides */\n solanaAccount?: Partial<WDKSolanaAccount>\n /** Custom TRON account overrides */\n tronAccount?: Partial<WDKTronAccount>\n}\n\n/**\n * Create a mock T402WDK-like object for testing, returning\n * the underlying WDK instance and chain configuration.\n *\n * This is useful when you need to test code that depends on\n * T402WDK without importing the full class.\n */\nexport function createMockT402WDK(config?: MockT402WDKConfig) {\n const chains = config?.chains ?? ['arbitrum']\n const evmAccount = createMockWDKAccount(config?.evmAccount)\n const tonAccount = createMockTonAccount(config?.tonAccount)\n const solanaAccount = createMockSolanaAccount(config?.solanaAccount)\n const tronAccount = createMockTronAccount(config?.tronAccount)\n\n const accountMap: Record<string, WDKAccount> = {}\n for (const chain of chains) {\n accountMap[chain] = evmAccount\n }\n // Non-EVM accounts returned as WDKAccount (runtime cast in T402WDK)\n accountMap['ton'] = tonAccount as unknown as WDKAccount\n accountMap['solana'] = solanaAccount as unknown as WDKAccount\n accountMap['tron'] = tronAccount as unknown as WDKAccount\n\n const wdkInstance = createMockWDKInstance(accountMap)\n\n const chainConfig: Record<string, string> = {}\n for (const chain of chains) {\n chainConfig[chain] = `https://mock-rpc.${chain}.test`\n }\n\n return {\n wdkInstance,\n chainConfig,\n evmAccount,\n tonAccount,\n solanaAccount,\n tronAccount,\n }\n}\n"],"mappings":";;;AAkBO,SAAS,qBAAqB,WAA6C;AAChF,SAAO;AAAA,IACL,YAAY,YAAY;AAAA,IACxB,YAAY,YAAY;AAAA,IACxB,iBAAiB,YAAY;AAAA,IAC7B,aAAa,YAAY;AAAA,IACzB,eAAe,YAAY;AAAA,IAC3B,iBAAiB,YAAY;AAAA,IAC7B,aAAa,YAAY;AAAA,IACzB,GAAG;AAAA,EACL;AACF;AAKO,SAAS,sBAAsB,UAAoD;AACxF,QAAM,iBAAiB,qBAAqB;AAC5C,SAAO;AAAA,IACL,gBAAgB,WAAY;AAC1B,aAAO;AAAA,IACT;AAAA,IACA,kBAAkB,WAAY;AAC5B,aAAO;AAAA,IACT;AAAA,IACA,YAAY,OAAO,OAAe,WAAmB;AACnD,aAAO,WAAW,KAAK,KAAK;AAAA,IAC9B;AAAA,IACA,iBAAiB,aAAa,EAAE,QAAQ,uBAAuB;AAAA,EACjE;AACF;AAKO,SAAS,qBAAqB,WAAmD;AACtF,SAAO;AAAA,IACL,YAAY,YAAY;AAAA,IACxB,YAAY,YAAY;AAAA,IACxB,kBAAkB,YAAY;AAAA,IAC9B,aAAa,YAAY,IAAI,WAAW,EAAE;AAAA,IAC1C,iBAAiB,YAAY;AAAA,IAC7B,UAAU,YAAY;AAAA,IACtB,gBAAgB,YAAY;AAAA,IAC5B,GAAG;AAAA,EACL;AACF;AAKO,SAAS,wBAAwB,WAAyD;AAC/F,SAAO;AAAA,IACL,YAAY,YAAY;AAAA,IACxB,YAAY,YAAY;AAAA,IACxB,iBAAiB,YAAY;AAAA,IAC7B,MAAM,YAAY,IAAI,WAAW,EAAE;AAAA,IACnC,iBAAiB,YAAY,IAAI,WAAW,GAAG;AAAA,IAC/C,iBAAiB,YAAY;AAAA,IAC7B,UAAU,YAAY;AAAA,IACtB,GAAG;AAAA,EACL;AACF;AAKO,SAAS,sBAAsB,WAAqD;AACzF,SAAO;AAAA,IACL,YAAY,YAAY;AAAA,IACxB,YAAY,YAAY;AAAA,IACxB,iBAAiB,YAAY;AAAA,IAC7B,iBAAiB,OAAO,OAAgB;AAAA,IACxC,iBAAiB,YAAY;AAAA,IAC7B,eAAe,YAAY;AAAA,IAC3B,GAAG;AAAA,EACL;AACF;AAyBO,SAAS,kBAAkB,QAA4B;AAC5D,QAAM,SAAS,QAAQ,UAAU,CAAC,UAAU;AAC5C,QAAM,aAAa,qBAAqB,QAAQ,UAAU;AAC1D,QAAM,aAAa,qBAAqB,QAAQ,UAAU;AAC1D,QAAM,gBAAgB,wBAAwB,QAAQ,aAAa;AACnE,QAAM,cAAc,sBAAsB,QAAQ,WAAW;AAE7D,QAAM,aAAyC,CAAC;AAChD,aAAW,SAAS,QAAQ;AAC1B,eAAW,KAAK,IAAI;AAAA,EACtB;AAEA,aAAW,KAAK,IAAI;AACpB,aAAW,QAAQ,IAAI;AACvB,aAAW,MAAM,IAAI;AAErB,QAAM,cAAc,sBAAsB,UAAU;AAEpD,QAAM,cAAsC,CAAC;AAC7C,aAAW,SAAS,QAAQ;AAC1B,gBAAY,KAAK,IAAI,oBAAoB,KAAK;AAAA,EAChD;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
|