@tatumio/ltc 2.0.1-alpha.221 → 2.0.1-alpha.227
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/package.json +7 -7
- package/src/index.js +1 -4
- package/src/index.js.map +1 -1
- package/src/lib/ltc.sdk.errors.js +4 -8
- package/src/lib/ltc.sdk.errors.js.map +1 -1
- package/src/lib/ltc.sdk.js +17 -21
- package/src/lib/ltc.sdk.js.map +1 -1
- package/src/lib/transaction/ltc.tx.js +29 -33
- package/src/lib/transaction/ltc.tx.js.map +1 -1
package/package.json
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tatumio/ltc",
|
|
3
|
-
"version": "2.0.1-alpha.
|
|
3
|
+
"version": "2.0.1-alpha.227",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "./src/index.js",
|
|
6
6
|
"typings": "./src/index.d.ts",
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"@tatumio/shared-abstract-sdk": "2.0.1-alpha.
|
|
9
|
-
"@tatumio/api-client": "2.0.1-alpha.
|
|
8
|
+
"@tatumio/shared-abstract-sdk": "2.0.1-alpha.224",
|
|
9
|
+
"@tatumio/api-client": "2.0.1-alpha.224",
|
|
10
10
|
"axios": "^0.24.0",
|
|
11
11
|
"cross-blob": "^3.0.0",
|
|
12
12
|
"form-data": "^4.0.0",
|
|
13
13
|
"bignumber.js": "^9.0.2",
|
|
14
|
-
"@tatumio/shared-testing": "2.0.1-alpha.
|
|
15
|
-
"@tatumio/shared-blockchain-btc-based": "2.0.1-alpha.
|
|
16
|
-
"@tatumio/shared-core": "2.0.1-alpha.
|
|
17
|
-
"@tatumio/shared-blockchain-abstract": "2.0.1-alpha.
|
|
14
|
+
"@tatumio/shared-testing": "2.0.1-alpha.224",
|
|
15
|
+
"@tatumio/shared-blockchain-btc-based": "2.0.1-alpha.224",
|
|
16
|
+
"@tatumio/shared-core": "2.0.1-alpha.224",
|
|
17
|
+
"@tatumio/shared-blockchain-abstract": "2.0.1-alpha.224",
|
|
18
18
|
"bip32": "^2.0.5",
|
|
19
19
|
"bip39": "^3.0.2",
|
|
20
20
|
"bitcoinjs-lib": "^5.2.0",
|
package/src/index.js
CHANGED
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/blockchain/ltc/src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/blockchain/ltc/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA"}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const shared_abstract_sdk_1 = require("@tatumio/shared-abstract-sdk");
|
|
5
|
-
exports.LTC_ERRORS_MAPPING = {};
|
|
6
|
-
class LtcSdkError extends shared_abstract_sdk_1.SdkError {
|
|
1
|
+
import { SdkError } from '@tatumio/shared-abstract-sdk';
|
|
2
|
+
export const LTC_ERRORS_MAPPING = {};
|
|
3
|
+
export class LtcSdkError extends SdkError {
|
|
7
4
|
constructor(error) {
|
|
8
5
|
if (typeof error === 'string') {
|
|
9
6
|
super({
|
|
@@ -13,10 +10,9 @@ class LtcSdkError extends shared_abstract_sdk_1.SdkError {
|
|
|
13
10
|
else {
|
|
14
11
|
super({
|
|
15
12
|
originalError: error,
|
|
16
|
-
errorSubstringMapping:
|
|
13
|
+
errorSubstringMapping: LTC_ERRORS_MAPPING,
|
|
17
14
|
});
|
|
18
15
|
}
|
|
19
16
|
}
|
|
20
17
|
}
|
|
21
|
-
exports.LtcSdkError = LtcSdkError;
|
|
22
18
|
//# sourceMappingURL=ltc.sdk.errors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ltc.sdk.errors.js","sourceRoot":"","sources":["../../../../../../packages/blockchain/ltc/src/lib/ltc.sdk.errors.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ltc.sdk.errors.js","sourceRoot":"","sources":["../../../../../../packages/blockchain/ltc/src/lib/ltc.sdk.errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAgB,MAAM,8BAA8B,CAAA;AAErE,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAA;AAQpC,MAAM,OAAO,WAAY,SAAQ,QAAQ;IACvC,YAAY,KAA8B;QACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,KAAK,CAAC;gBACJ,IAAI,EAAE,KAAK;aACZ,CAAC,CAAA;SACH;aAAM;YACL,KAAK,CAAC;gBACJ,aAAa,EAAE,KAAK;gBACpB,qBAAqB,EAAE,kBAAkB;aAC1C,CAAC,CAAA;SACH;IACH,CAAC;CACF"}
|
package/src/lib/ltc.sdk.js
CHANGED
|
@@ -1,24 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
getTxForAccount: api_client_1.BlockchainLitecoinService.ltcGetTxByAddress,
|
|
19
|
-
getTransaction: api_client_1.BlockchainLitecoinService.ltcGetRawTransaction,
|
|
20
|
-
send: api_client_1.BlockchainLitecoinService.ltcTransferBlockchain,
|
|
1
|
+
import { Blockchain } from '@tatumio/shared-core';
|
|
2
|
+
import { btcBasedSdk } from '@tatumio/shared-blockchain-btc-based';
|
|
3
|
+
import { BlockchainLitecoinService } from '@tatumio/api-client';
|
|
4
|
+
import { ltcTransactions } from './transaction/ltc.tx';
|
|
5
|
+
const blockchain = Blockchain.LTC;
|
|
6
|
+
export const TatumLtcSDK = (args) => {
|
|
7
|
+
return Object.assign(Object.assign({}, btcBasedSdk(Object.assign(Object.assign({}, args), { blockchain }))), { transaction: ltcTransactions(), blockchain: {
|
|
8
|
+
info: BlockchainLitecoinService.ltcGetBlockChainInfo,
|
|
9
|
+
mempool: BlockchainLitecoinService.ltcGetMempool,
|
|
10
|
+
broadcast: BlockchainLitecoinService.ltcBroadcast,
|
|
11
|
+
getBlockHash: BlockchainLitecoinService.ltcGetBlockHash,
|
|
12
|
+
getBlock: BlockchainLitecoinService.ltcGetBlock,
|
|
13
|
+
getUTXO: BlockchainLitecoinService.ltcGetUtxo,
|
|
14
|
+
getBlockchainAccountBalance: BlockchainLitecoinService.ltcGetBalanceOfAddress,
|
|
15
|
+
getTxForAccount: BlockchainLitecoinService.ltcGetTxByAddress,
|
|
16
|
+
getTransaction: BlockchainLitecoinService.ltcGetRawTransaction,
|
|
17
|
+
send: BlockchainLitecoinService.ltcTransferBlockchain,
|
|
21
18
|
} });
|
|
22
19
|
};
|
|
23
|
-
exports.TatumLtcSDK = TatumLtcSDK;
|
|
24
20
|
//# sourceMappingURL=ltc.sdk.js.map
|
package/src/lib/ltc.sdk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ltc.sdk.js","sourceRoot":"","sources":["../../../../../../packages/blockchain/ltc/src/lib/ltc.sdk.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ltc.sdk.js","sourceRoot":"","sources":["../../../../../../packages/blockchain/ltc/src/lib/ltc.sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAA;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAGtD,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAA;AAEjC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAkB,EAAE,EAAE;IAChD,uCACK,WAAW,iCAAM,IAAI,KAAE,UAAU,IAAG,KACvC,WAAW,EAAE,eAAe,EAAE,EAC9B,UAAU,EAAE;YACV,IAAI,EAAE,yBAAyB,CAAC,oBAAoB;YACpD,OAAO,EAAE,yBAAyB,CAAC,aAAa;YAChD,SAAS,EAAE,yBAAyB,CAAC,YAAY;YACjD,YAAY,EAAE,yBAAyB,CAAC,eAAe;YACvD,QAAQ,EAAE,yBAAyB,CAAC,WAAW;YAC/C,OAAO,EAAE,yBAAyB,CAAC,UAAU;YAC7C,2BAA2B,EAAE,yBAAyB,CAAC,sBAAsB;YAC7E,eAAe,EAAE,yBAAyB,CAAC,iBAAiB;YAC5D,cAAc,EAAE,yBAAyB,CAAC,oBAAoB;YAC9D,IAAI,EAAE,yBAAyB,CAAC,qBAAqB;SACtD,IACF;AACH,CAAC,CAAA"}
|
|
@@ -1,24 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ltcTransactions = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
5
2
|
// @ts-ignore
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const sendTransaction = (body) =>
|
|
12
|
-
return
|
|
3
|
+
import { PrivateKey, Script, Transaction } from 'bitcore-lib-ltc';
|
|
4
|
+
import { ApiServices, } from '@tatumio/api-client';
|
|
5
|
+
import { amountUtils, SdkErrorCode } from '@tatumio/shared-abstract-sdk';
|
|
6
|
+
import BigNumber from 'bignumber.js';
|
|
7
|
+
import { LtcSdkError } from '../ltc.sdk.errors';
|
|
8
|
+
const sendTransaction = (body) => __awaiter(void 0, void 0, void 0, function* () {
|
|
9
|
+
return ApiServices.blockchain.ltc.ltcBroadcast({
|
|
13
10
|
txData: yield prepareSignedTransaction(body),
|
|
14
11
|
});
|
|
15
12
|
});
|
|
16
|
-
const prepareSignedTransaction = (body) =>
|
|
13
|
+
const prepareSignedTransaction = (body) => __awaiter(void 0, void 0, void 0, function* () {
|
|
17
14
|
try {
|
|
18
|
-
const tx = new
|
|
15
|
+
const tx = new Transaction();
|
|
19
16
|
let privateKeysToSign = [];
|
|
20
17
|
body.to.forEach((to) => {
|
|
21
|
-
tx.to(to.address,
|
|
18
|
+
tx.to(to.address, amountUtils.toSatoshis(to.value));
|
|
22
19
|
});
|
|
23
20
|
if ('fromAddress' in body) {
|
|
24
21
|
privateKeysToSign = yield privateKeysFromAddress(tx, body);
|
|
@@ -36,33 +33,33 @@ const prepareSignedTransaction = (body) => (0, tslib_1.__awaiter)(void 0, void 0
|
|
|
36
33
|
}
|
|
37
34
|
verifyAmounts(tx, body);
|
|
38
35
|
privateKeysToSign.forEach((key) => {
|
|
39
|
-
tx.sign(
|
|
36
|
+
tx.sign(PrivateKey.fromWIF(key));
|
|
40
37
|
});
|
|
41
38
|
// @TODO unchecked serialize
|
|
42
39
|
return tx.serialize(true);
|
|
43
40
|
}
|
|
44
41
|
catch (e) {
|
|
45
|
-
throw new
|
|
42
|
+
throw new LtcSdkError(e);
|
|
46
43
|
}
|
|
47
44
|
});
|
|
48
45
|
function verifyAmounts(tx, body) {
|
|
49
46
|
const outputsSum = body.to
|
|
50
|
-
.map((to) =>
|
|
51
|
-
.reduce((e, acc) => e.plus(acc), new
|
|
47
|
+
.map((to) => amountUtils.toSatoshis(to.value))
|
|
48
|
+
.reduce((e, acc) => e.plus(acc), new BigNumber(0));
|
|
52
49
|
const inputsSum = tx.inputs
|
|
53
|
-
.map((i) => new
|
|
54
|
-
.reduce((v, acc) => v.plus(acc), new
|
|
50
|
+
.map((i) => new BigNumber(i.output.satoshis))
|
|
51
|
+
.reduce((v, acc) => v.plus(acc), new BigNumber(0));
|
|
55
52
|
if (outputsSum.eq(inputsSum)) {
|
|
56
|
-
throw new
|
|
53
|
+
throw new LtcSdkError(SdkErrorCode.BTC_FEE_TOO_SMALL);
|
|
57
54
|
}
|
|
58
55
|
if (outputsSum.gt(inputsSum)) {
|
|
59
|
-
throw new
|
|
56
|
+
throw new LtcSdkError(SdkErrorCode.BTC_NOT_ENOUGH_BALANCE);
|
|
60
57
|
}
|
|
61
58
|
}
|
|
62
|
-
const privateKeysFromAddress = (transaction, body) =>
|
|
59
|
+
const privateKeysFromAddress = (transaction, body) => __awaiter(void 0, void 0, void 0, function* () {
|
|
63
60
|
const privateKeysToSign = [];
|
|
64
61
|
for (const item of body.fromAddress) {
|
|
65
|
-
const txs = yield
|
|
62
|
+
const txs = yield ApiServices.blockchain.ltc.ltcGetTxByAddress(item.address, 50); // @TODO OPENAPI remove pageSize
|
|
66
63
|
for (const tx of txs) {
|
|
67
64
|
for (const [i, o] of tx.outputs.entries()) {
|
|
68
65
|
if (o.address !== item.address) {
|
|
@@ -72,8 +69,8 @@ const privateKeysFromAddress = (transaction, body) => (0, tslib_1.__awaiter)(voi
|
|
|
72
69
|
transaction.from({
|
|
73
70
|
txId: tx.hash,
|
|
74
71
|
outputIndex: i,
|
|
75
|
-
script:
|
|
76
|
-
satoshis:
|
|
72
|
+
script: Script.fromAddress(item.address).toString(),
|
|
73
|
+
satoshis: amountUtils.toSatoshis(o.value), // @TODO null check
|
|
77
74
|
});
|
|
78
75
|
if ('signatureId' in item)
|
|
79
76
|
privateKeysToSign.push(item.signatureId);
|
|
@@ -88,19 +85,19 @@ const privateKeysFromAddress = (transaction, body) => (0, tslib_1.__awaiter)(voi
|
|
|
88
85
|
}
|
|
89
86
|
return privateKeysToSign;
|
|
90
87
|
});
|
|
91
|
-
const privateKeysFromUTXO = (transaction, body) =>
|
|
88
|
+
const privateKeysFromUTXO = (transaction, body) => __awaiter(void 0, void 0, void 0, function* () {
|
|
92
89
|
var _a;
|
|
93
90
|
const privateKeysToSign = [];
|
|
94
91
|
for (const item of body.fromUTXO) {
|
|
95
|
-
const tx = yield
|
|
92
|
+
const tx = yield ApiServices.blockchain.ltc.ltcGetRawTransaction(item.txHash);
|
|
96
93
|
const output = ((_a = tx.outputs) !== null && _a !== void 0 ? _a : [])[item.index];
|
|
97
94
|
if (!output || !output.address || !output.value)
|
|
98
|
-
throw new
|
|
95
|
+
throw new LtcSdkError(SdkErrorCode.BTC_UTXO_NOT_FOUND);
|
|
99
96
|
transaction.from({
|
|
100
97
|
txId: item.txHash,
|
|
101
98
|
outputIndex: item.index,
|
|
102
|
-
script:
|
|
103
|
-
satoshis:
|
|
99
|
+
script: Script.fromAddress(output.address).toString(),
|
|
100
|
+
satoshis: amountUtils.toSatoshis(output.value),
|
|
104
101
|
});
|
|
105
102
|
if ('signatureId' in item)
|
|
106
103
|
privateKeysToSign.push(item.signatureId);
|
|
@@ -109,9 +106,8 @@ const privateKeysFromUTXO = (transaction, body) => (0, tslib_1.__awaiter)(void 0
|
|
|
109
106
|
}
|
|
110
107
|
return privateKeysToSign;
|
|
111
108
|
});
|
|
112
|
-
const ltcTransactions = () => ({
|
|
109
|
+
export const ltcTransactions = () => ({
|
|
113
110
|
sendTransaction,
|
|
114
111
|
prepareSignedTransaction,
|
|
115
112
|
});
|
|
116
|
-
exports.ltcTransactions = ltcTransactions;
|
|
117
113
|
//# sourceMappingURL=ltc.tx.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ltc.tx.js","sourceRoot":"","sources":["../../../../../../../packages/blockchain/ltc/src/lib/transaction/ltc.tx.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ltc.tx.js","sourceRoot":"","sources":["../../../../../../../packages/blockchain/ltc/src/lib/transaction/ltc.tx.ts"],"names":[],"mappings":";AAAA,aAAa;AACb,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AACjE,OAAO,EACL,WAAW,GAMZ,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AACxE,OAAO,SAAS,MAAM,cAAc,CAAA;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAS/C,MAAM,eAAe,GAAG,CAAO,IAAoB,EAA+B,EAAE;IAClF,OAAO,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC;QAC7C,MAAM,EAAE,MAAM,wBAAwB,CAAC,IAAI,CAAC;KAC7C,CAAC,CAAA;AACJ,CAAC,CAAA,CAAA;AAED,MAAM,wBAAwB,GAAG,CAAO,IAAoB,EAAmB,EAAE;IAC/E,IAAI;QACF,MAAM,EAAE,GAAG,IAAI,WAAW,EAAE,CAAA;QAC5B,IAAI,iBAAiB,GAAa,EAAE,CAAA;QAEpC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YACrB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;QACrD,CAAC,CAAC,CAAA;QAEF,IAAI,aAAa,IAAI,IAAI,EAAE;YACzB,iBAAiB,GAAG,MAAM,sBAAsB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;YAE1D,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;YACpC,IAAI,WAAW,IAAI,aAAa,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;gBAChF,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAA;aACzE;SACF;aAAM,IAAI,UAAU,IAAI,IAAI,EAAE;YAC7B,iBAAiB,GAAG,MAAM,mBAAmB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;YAEvD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;YAC9B,IAAI,QAAQ,IAAI,aAAa,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;gBACvE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAA;aACzE;SACF;QAED,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QAEvB,iBAAiB,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAChC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;QAClC,CAAC,CAAC,CAAA;QAEF,4BAA4B;QAC5B,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;KAC1B;IAAC,OAAO,CAAM,EAAE;QACf,MAAM,IAAI,WAAW,CAAC,CAAC,CAAC,CAAA;KACzB;AACH,CAAC,CAAA,CAAA;AAED,SAAS,aAAa,CAAC,EAAe,EAAE,IAAoB;IAC1D,MAAM,UAAU,GAAc,IAAI,CAAC,EAAE;SAClC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;SAC7C,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;IAEpD,MAAM,SAAS,GAAc,EAAE,CAAC,MAAM;SACnC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;SACjD,MAAM,CAAC,CAAC,CAAY,EAAE,GAAc,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;IAE1E,IAAI,UAAU,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE;QAC5B,MAAM,IAAI,WAAW,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAA;KACtD;IAED,IAAI,UAAU,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE;QAC5B,MAAM,IAAI,WAAW,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAA;KAC3D;AACH,CAAC;AAED,MAAM,sBAAsB,GAAG,CAC7B,WAAwB,EACxB,IAAsD,EAC9B,EAAE;IAC1B,MAAM,iBAAiB,GAAG,EAAE,CAAA;IAC5B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;QACnC,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA,CAAC,gCAAgC;QAEjH,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE;YACpB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,OAAQ,CAAC,OAAO,EAAE,EAAE;gBAC1C,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE;oBAC9B,SAAQ;iBACT;gBAED,IAAI;oBACF,WAAW,CAAC,IAAI,CAAC;wBACf,IAAI,EAAE,EAAE,CAAC,IAAI;wBACb,WAAW,EAAE,CAAC;wBACd,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE;wBACnD,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,KAAM,CAAC,EAAE,mBAAmB;qBAChE,CAAC,CAAA;oBAEF,IAAI,aAAa,IAAI,IAAI;wBAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;yBAC9D,IAAI,YAAY,IAAI,IAAI;wBAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;iBACvE;gBAAC,OAAO,CAAM,EAAE;oBACf,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;iBAC5B;aACF;SACF;KACF;IACD,OAAO,iBAAiB,CAAA;AAC1B,CAAC,CAAA,CAAA;AAED,MAAM,mBAAmB,GAAG,CAC1B,WAAwB,EACxB,IAAgD,EACxB,EAAE;;IAC1B,MAAM,iBAAiB,GAAG,EAAE,CAAA;IAE5B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;QAChC,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAE7E,MAAM,MAAM,GAAG,CAAC,MAAA,EAAE,CAAC,OAAO,mCAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC7C,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK;YAAE,MAAM,IAAI,WAAW,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAA;QAEvG,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,IAAI,CAAC,MAAM;YACjB,WAAW,EAAE,IAAI,CAAC,KAAK;YACvB,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE;YACrD,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;SAC/C,CAAC,CAAA;QAEF,IAAI,aAAa,IAAI,IAAI;YAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;aAC9D,IAAI,YAAY,IAAI,IAAI;YAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;KACvE;IAED,OAAO,iBAAiB,CAAA;AAC1B,CAAC,CAAA,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,GAA+B,EAAE,CAAC,CAAC;IAChE,eAAe;IACf,wBAAwB;CACzB,CAAC,CAAA"}
|