@lidofinance/browser-service 1.3.0 → 1.4.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/src/browser.constants.d.ts +2 -1
- package/dist/src/browser.constants.d.ts.map +1 -1
- package/dist/src/browser.constants.js +1 -0
- package/dist/src/browser.constants.js.map +1 -1
- package/dist/src/browser.service.d.ts +23 -3
- package/dist/src/browser.service.d.ts.map +1 -1
- package/dist/src/browser.service.js +56 -21
- package/dist/src/browser.service.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BitgetPage, Coin98, CoinbasePage, CtrlPage, ExodusPage, MetamaskPage, OkxPage, SafeWcPage, TrustWalletPage } from '@lidofinance/wallets-testing-wallets';
|
|
1
|
+
import { BitgetPage, Coin98, CoinbasePage, CtrlPage, ExodusPage, MetamaskPage, OkxPage, SafeIframePage, SafeWcPage, TrustWalletPage } from '@lidofinance/wallets-testing-wallets';
|
|
2
2
|
export declare const WALLET_PAGES: {
|
|
3
3
|
metamask: typeof MetamaskPage;
|
|
4
4
|
okx: typeof OkxPage;
|
|
@@ -9,6 +9,7 @@ export declare const WALLET_PAGES: {
|
|
|
9
9
|
ctrl: typeof CtrlPage;
|
|
10
10
|
bitget: typeof BitgetPage;
|
|
11
11
|
safeWc: typeof SafeWcPage;
|
|
12
|
+
safeIframe: typeof SafeIframePage;
|
|
12
13
|
};
|
|
13
14
|
export declare const DEFAULT_BROWSER_CONTEXT_DIR_NAME = ".browser_context";
|
|
14
15
|
//# sourceMappingURL=browser.constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.constants.d.ts","sourceRoot":"","sources":["../../src/browser.constants.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,OAAO,EACP,UAAU,EACV,eAAe,EAChB,MAAM,sCAAsC,CAAC;AAE9C,eAAO,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"browser.constants.d.ts","sourceRoot":"","sources":["../../src/browser.constants.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,OAAO,EACP,cAAc,EACd,UAAU,EACV,eAAe,EAChB,MAAM,sCAAsC,CAAC;AAE9C,eAAO,MAAM,YAAY;;;;;;;;;;;CAWxB,CAAC;AAEF,eAAO,MAAM,gCAAgC,qBAAqB,CAAC"}
|
|
@@ -12,6 +12,7 @@ exports.WALLET_PAGES = {
|
|
|
12
12
|
ctrl: wallets_testing_wallets_1.CtrlPage,
|
|
13
13
|
bitget: wallets_testing_wallets_1.BitgetPage,
|
|
14
14
|
safeWc: wallets_testing_wallets_1.SafeWcPage,
|
|
15
|
+
safeIframe: wallets_testing_wallets_1.SafeIframePage,
|
|
15
16
|
};
|
|
16
17
|
exports.DEFAULT_BROWSER_CONTEXT_DIR_NAME = '.browser_context';
|
|
17
18
|
//# sourceMappingURL=browser.constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.constants.js","sourceRoot":"","sources":["../../src/browser.constants.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"browser.constants.js","sourceRoot":"","sources":["../../src/browser.constants.ts"],"names":[],"mappings":";;;AAAA,kFAW8C;AAEjC,QAAA,YAAY,GAAG;IAC1B,QAAQ,EAAE,sCAAY;IACtB,GAAG,EAAE,iCAAO;IACZ,MAAM,EAAE,gCAAM;IACd,MAAM,EAAE,oCAAU;IAClB,KAAK,EAAE,yCAAe;IACtB,QAAQ,EAAE,sCAAY;IACtB,IAAI,EAAE,kCAAQ;IACd,MAAM,EAAE,oCAAU;IAClB,MAAM,EAAE,oCAAU;IAClB,UAAU,EAAE,wCAAc;CAC3B,CAAC;AAEW,QAAA,gCAAgC,GAAG,kBAAkB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AccountConfig, CommonWalletConfig, NetworkConfig, WalletPage,
|
|
1
|
+
import { AccountConfig, CommonWalletConfig, NetworkConfig, WalletPage, WalletConnectTypes } from '@lidofinance/wallets-testing-wallets';
|
|
2
2
|
import { EthereumNodeService } from '@lidofinance/wallets-testing-nodes';
|
|
3
3
|
import { BrowserOptions } from './browser.context.service';
|
|
4
4
|
type NodeConfig = {
|
|
@@ -9,23 +9,43 @@ type BrowserServiceOptions = {
|
|
|
9
9
|
accountConfig: AccountConfig;
|
|
10
10
|
walletConfig: CommonWalletConfig;
|
|
11
11
|
nodeConfig: NodeConfig;
|
|
12
|
+
standUrl?: string;
|
|
12
13
|
browserOptions?: BrowserOptions;
|
|
13
14
|
};
|
|
15
|
+
/**
|
|
16
|
+
* Required options depends on `WalletConnectTypes`:
|
|
17
|
+
* - `WalletConnectType.EOA` and `WalletConnectType.WC`:
|
|
18
|
+
* - networkConfig
|
|
19
|
+
* - accountConfig
|
|
20
|
+
* - walletConfig
|
|
21
|
+
* - nodeConfig
|
|
22
|
+
* - browserOptions?
|
|
23
|
+
* - `WalletConnectType.IFRAME`:
|
|
24
|
+
* - networkConfig
|
|
25
|
+
* - accountConfig
|
|
26
|
+
* - walletConfig
|
|
27
|
+
* - nodeConfig
|
|
28
|
+
* - standUrl
|
|
29
|
+
* - browserOptions?
|
|
30
|
+
*/
|
|
14
31
|
export declare class BrowserService {
|
|
15
32
|
private options;
|
|
16
33
|
private logger;
|
|
17
34
|
private walletPage;
|
|
18
35
|
private browserContextService;
|
|
19
36
|
ethereumNodeService: EthereumNodeService;
|
|
37
|
+
readonly networkConfig: NetworkConfig;
|
|
38
|
+
readonly walletConfig: CommonWalletConfig;
|
|
20
39
|
isFork: boolean;
|
|
21
40
|
constructor(options: BrowserServiceOptions);
|
|
22
|
-
getWalletPage(): WalletPage<
|
|
23
|
-
getBrowserContext(): import("playwright-core").BrowserContext;
|
|
41
|
+
getWalletPage(): WalletPage<WalletConnectTypes>;
|
|
24
42
|
getBrowserContextPage(): import("playwright-core").Page;
|
|
25
43
|
initWalletSetup(useFork?: boolean): Promise<void>;
|
|
26
44
|
setupWithNode(): Promise<void>;
|
|
27
45
|
setup(): Promise<void>;
|
|
28
46
|
teardown(): Promise<void>;
|
|
47
|
+
private setWalletPage;
|
|
48
|
+
private annotateExtensionWalletVersion;
|
|
29
49
|
}
|
|
30
50
|
export {};
|
|
31
51
|
//# sourceMappingURL=browser.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.service.d.ts","sourceRoot":"","sources":["../../src/browser.service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,UAAU,EACV,
|
|
1
|
+
{"version":3,"file":"browser.service.d.ts","sourceRoot":"","sources":["../../src/browser.service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,UAAU,EACV,kBAAkB,EACnB,MAAM,sCAAsC,CAAC;AAK9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAKzE,OAAO,EAEL,cAAc,EACf,MAAM,2BAA2B,CAAC;AAKnC,KAAK,UAAU,GAAG;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,KAAK,qBAAqB,GAAG;IAC3B,aAAa,EAAE,aAAa,CAAC;IAC7B,aAAa,EAAE,aAAa,CAAC;IAC7B,YAAY,EAAE,kBAAkB,CAAC;IACjC,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,cAAc;IAYb,OAAO,CAAC,OAAO;IAX3B,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,UAAU,CAEhB;IACF,OAAO,CAAC,qBAAqB,CAAwB;IAC9C,mBAAmB,EAAE,mBAAmB,CAAC;IAEhD,SAAgB,aAAa,EAAE,aAAa,CAAC;IAC7C,SAAgB,YAAY,EAAE,kBAAkB,CAAC;IAC1C,MAAM,EAAE,OAAO,CAAC;gBAEH,OAAO,EAAE,qBAAqB;IAKlD,aAAa;IAQb,qBAAqB;IAIf,eAAe,CAAC,OAAO,CAAC,EAAE,OAAO;IAWjC,aAAa;IA8Bb,KAAK;IAwBL,QAAQ;IAQd,OAAO,CAAC,aAAa;YAkCP,8BAA8B;CAW7C"}
|
|
@@ -9,24 +9,38 @@ const browser_context_service_1 = require("./browser.context.service");
|
|
|
9
9
|
const accounts_1 = require("viem/accounts");
|
|
10
10
|
const test_1 = require("@playwright/test");
|
|
11
11
|
const common_1 = require("@nestjs/common");
|
|
12
|
+
/**
|
|
13
|
+
* Required options depends on `WalletConnectTypes`:
|
|
14
|
+
* - `WalletConnectType.EOA` and `WalletConnectType.WC`:
|
|
15
|
+
* - networkConfig
|
|
16
|
+
* - accountConfig
|
|
17
|
+
* - walletConfig
|
|
18
|
+
* - nodeConfig
|
|
19
|
+
* - browserOptions?
|
|
20
|
+
* - `WalletConnectType.IFRAME`:
|
|
21
|
+
* - networkConfig
|
|
22
|
+
* - accountConfig
|
|
23
|
+
* - walletConfig
|
|
24
|
+
* - nodeConfig
|
|
25
|
+
* - standUrl
|
|
26
|
+
* - browserOptions?
|
|
27
|
+
*/
|
|
12
28
|
class BrowserService {
|
|
13
29
|
constructor(options) {
|
|
14
30
|
this.options = options;
|
|
15
31
|
this.logger = new common_1.ConsoleLogger(BrowserService.name);
|
|
32
|
+
this.networkConfig = options.networkConfig;
|
|
33
|
+
this.walletConfig = options.walletConfig;
|
|
16
34
|
}
|
|
17
35
|
getWalletPage() {
|
|
18
36
|
if (!this.walletPage)
|
|
19
37
|
this.logger.error('"walletPage" is not initialized. Use initWalletSetup() function');
|
|
20
38
|
return this.walletPage;
|
|
21
39
|
}
|
|
22
|
-
getBrowserContext() {
|
|
23
|
-
return this.browserContextService.browserContext;
|
|
24
|
-
}
|
|
25
40
|
getBrowserContextPage() {
|
|
26
41
|
return this.browserContextService.browserContext.pages()[0];
|
|
27
42
|
}
|
|
28
43
|
async initWalletSetup(useFork) {
|
|
29
|
-
this.isFork = useFork;
|
|
30
44
|
if (useFork) {
|
|
31
45
|
await this.setupWithNode();
|
|
32
46
|
}
|
|
@@ -38,6 +52,7 @@ class BrowserService {
|
|
|
38
52
|
}
|
|
39
53
|
}
|
|
40
54
|
async setupWithNode() {
|
|
55
|
+
this.isFork = true;
|
|
41
56
|
this.ethereumNodeService = new wallets_testing_nodes_1.EthereumNodeService({
|
|
42
57
|
chainId: this.options.networkConfig.chainId,
|
|
43
58
|
rpcUrl: this.options.networkConfig.rpcUrl,
|
|
@@ -70,23 +85,9 @@ class BrowserService {
|
|
|
70
85
|
browserOptions: this.options.browserOptions,
|
|
71
86
|
});
|
|
72
87
|
await this.browserContextService.initBrowserContext();
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
test_1.test.info().annotations.push({
|
|
77
|
-
type: 'wallet version',
|
|
78
|
-
description: manifestContent.version,
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
const extension = new wallets_testing_extensions_1.Extension(this.browserContextService.extensionId);
|
|
82
|
-
const extensionWalletPage = new browser_constants_1.WALLET_PAGES[this.options.walletConfig.EXTENSION_WALLET_NAME](this.browserContextService.browserContext, extension.url, this.options.accountConfig, this.options.walletConfig);
|
|
83
|
-
await extensionWalletPage.setup();
|
|
84
|
-
if (this.options.walletConfig.WALLET_TYPE === wallets_testing_wallets_1.WalletTypes.WC) {
|
|
85
|
-
this.walletPage = new browser_constants_1.WALLET_PAGES[this.options.walletConfig.WALLET_NAME](this.browserContextService.browserContext, extensionWalletPage, this.options.networkConfig.chainId, this.options.accountConfig, this.options.walletConfig);
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
this.walletPage = extensionWalletPage;
|
|
89
|
-
}
|
|
88
|
+
await this.annotateExtensionWalletVersion(extensionService);
|
|
89
|
+
this.setWalletPage();
|
|
90
|
+
await this.walletPage.setup();
|
|
90
91
|
}
|
|
91
92
|
async teardown() {
|
|
92
93
|
if (this.browserContextService.browserContext !== null)
|
|
@@ -95,6 +96,40 @@ class BrowserService {
|
|
|
95
96
|
await this.ethereumNodeService.stopNode();
|
|
96
97
|
}
|
|
97
98
|
}
|
|
99
|
+
setWalletPage() {
|
|
100
|
+
const extension = new wallets_testing_extensions_1.Extension(this.browserContextService.extensionId);
|
|
101
|
+
const extensionWalletPage = new browser_constants_1.WALLET_PAGES[this.options.walletConfig.EXTENSION_WALLET_NAME]({
|
|
102
|
+
browserContext: this.browserContextService.browserContext,
|
|
103
|
+
extensionUrl: extension.url,
|
|
104
|
+
accountConfig: this.options.accountConfig,
|
|
105
|
+
walletConfig: this.options.walletConfig,
|
|
106
|
+
});
|
|
107
|
+
switch (this.options.walletConfig.WALLET_TYPE) {
|
|
108
|
+
case wallets_testing_wallets_1.WalletConnectTypes.WC:
|
|
109
|
+
case wallets_testing_wallets_1.WalletConnectTypes.IFRAME:
|
|
110
|
+
this.walletPage = new browser_constants_1.WALLET_PAGES[this.options.walletConfig.WALLET_NAME]({
|
|
111
|
+
browserContext: this.browserContextService.browserContext,
|
|
112
|
+
extensionPage: extensionWalletPage,
|
|
113
|
+
walletConfig: this.options.walletConfig,
|
|
114
|
+
standConfig: {
|
|
115
|
+
chainId: this.options.networkConfig.chainId,
|
|
116
|
+
standUrl: this.options.standUrl,
|
|
117
|
+
rpcUrl: this.ethereumNodeService?.state.nodeUrl ||
|
|
118
|
+
this.options.networkConfig.rpcUrl,
|
|
119
|
+
},
|
|
120
|
+
});
|
|
121
|
+
break;
|
|
122
|
+
default:
|
|
123
|
+
this.walletPage = extensionWalletPage;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
async annotateExtensionWalletVersion(extensionService) {
|
|
127
|
+
const manifestContent = await extensionService.getManifestContent(this.options.walletConfig.STORE_EXTENSION_ID);
|
|
128
|
+
test_1.test.info().annotations.push({
|
|
129
|
+
type: `${this.options.walletConfig.EXTENSION_WALLET_NAME} wallet version`,
|
|
130
|
+
description: manifestContent.version,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
98
133
|
}
|
|
99
134
|
exports.BrowserService = BrowserService;
|
|
100
135
|
//# sourceMappingURL=browser.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.service.js","sourceRoot":"","sources":["../../src/browser.service.ts"],"names":[],"mappings":";;;AAAA,kFAM8C;AAC9C,wFAGiD;AACjD,8EAAyE;AACzE,2DAG6B;AAC7B,uEAGmC;AACnC,4CAAkD;AAClD,2CAAwC;AACxC,2CAA+C;
|
|
1
|
+
{"version":3,"file":"browser.service.js","sourceRoot":"","sources":["../../src/browser.service.ts"],"names":[],"mappings":";;;AAAA,kFAM8C;AAC9C,wFAGiD;AACjD,8EAAyE;AACzE,2DAG6B;AAC7B,uEAGmC;AACnC,4CAAkD;AAClD,2CAAwC;AACxC,2CAA+C;AAe/C;;;;;;;;;;;;;;;GAeG;AACH,MAAa,cAAc;IAYzB,YAAoB,OAA8B;QAA9B,YAAO,GAAP,OAAO,CAAuB;QAX1C,WAAM,GAAG,IAAI,sBAAa,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAYtD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAC3C,CAAC;IAED,aAAa;QACX,IAAI,CAAC,IAAI,CAAC,UAAU;YAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,iEAAiE,CAClE,CAAC;QACJ,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,qBAAqB;QACnB,OAAO,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAAiB;QACrC,IAAI,OAAO,EAAE;YACX,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;SAC5B;aAAM;YACL,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAC/D,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YAC1E,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,CAAC;SAC/C;IACH,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,mBAAmB,GAAG,IAAI,2CAAmB,CAAC;YACjD,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO;YAC3C,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM;YACzC,cAAc,EAAE,GAAG;SACpB,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,CAAC;QACtD,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QAEnB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE;YAClE,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;SACpD;aAAM;YACL,MAAM,IAAI,CAAC,UAAU,CAAC,4BAA4B,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;SACrE;QAED,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;YACjC,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;YAC7B,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS;YAC/C,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO;SAC/C,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,mBAAmB,CAAC,SAAS,CACtC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,EACpC,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAC1C,CAAC;QACF,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,gBAAgB,GAAG,IAAI,6CAAgB,EAAE,CAAC;QAEhD,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,qBAAqB,CAChE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,kBAAkB,EAC5C,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,2BAA2B,CACtD,CAAC;QAEF,MAAM,cAAc,GAClB,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK;YAChC,GAAG,oDAAgC,IACjC,IAAA,4BAAiB,EAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,OAC9D,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QAC9C,IAAI,CAAC,qBAAqB,GAAG,IAAI,+CAAqB,CAAC,aAAa,EAAE;YACpE,cAAc;YACd,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;SAC5C,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,EAAE,CAAC;QACtD,MAAM,IAAI,CAAC,8BAA8B,CAAC,gBAAgB,CAAC,CAAC;QAC5D,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,IAAI,CAAC,qBAAqB,CAAC,cAAc,KAAK,IAAI;YACpD,MAAM,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC1D,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,MAAM,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC;SAC3C;IACH,CAAC;IAEO,aAAa;QACnB,MAAM,SAAS,GAAG,IAAI,sCAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;QACxE,MAAM,mBAAmB,GAAG,IAAI,gCAAY,CAC1C,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,qBAAqB,CAChD,CAAC;YACA,cAAc,EAAE,IAAI,CAAC,qBAAqB,CAAC,cAAc;YACzD,YAAY,EAAE,SAAS,CAAC,GAAG;YAC3B,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;YACzC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;SACxC,CAAC,CAAC;QAEH,QAAQ,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE;YAC7C,KAAK,4CAAkB,CAAC,EAAE,CAAC;YAC3B,KAAK,4CAAkB,CAAC,MAAM;gBAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,gCAAY,CAChC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CACtC,CAAC;oBACA,cAAc,EAAE,IAAI,CAAC,qBAAqB,CAAC,cAAc;oBACzD,aAAa,EAAE,mBAAmB;oBAClC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;oBACvC,WAAW,EAAE;wBACX,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO;wBAC3C,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;wBAC/B,MAAM,EACJ,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,OAAO;4BACvC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM;qBACpC;iBACF,CAAC,CAAC;gBACH,MAAM;YACR;gBACE,IAAI,CAAC,UAAU,GAAG,mBAAmB,CAAC;SACzC;IACH,CAAC;IAEO,KAAK,CAAC,8BAA8B,CAC1C,gBAAkC;QAElC,MAAM,eAAe,GAAG,MAAM,gBAAgB,CAAC,kBAAkB,CAC/D,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,kBAAkB,CAC7C,CAAC;QACF,WAAI,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;YAC3B,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,qBAAqB,iBAAiB;YACzE,WAAW,EAAE,eAAe,CAAC,OAAO;SACrC,CAAC,CAAC;IACL,CAAC;CACF;AAnJD,wCAmJC"}
|