@bitgo/sdk-core 38.21.0 → 38.22.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/bitgo/tss/redpallas/redpallasMPCv2.d.ts +33 -4
- package/dist/src/bitgo/tss/redpallas/redpallasMPCv2.d.ts.map +1 -1
- package/dist/src/bitgo/tss/redpallas/redpallasMPCv2.js +71 -4
- package/dist/src/bitgo/utils/mpcUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/mpcUtils.js +2 -1
- package/dist/src/bitgo/utils/siws.d.ts +5 -2
- package/dist/src/bitgo/utils/siws.d.ts.map +1 -1
- package/dist/src/bitgo/utils/siws.js +8 -18
- package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts +7 -2
- package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/baseTSSUtils.js +13 -2
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts +8 -1
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/baseTypes.js +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts +7 -3
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +9 -18
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.js +3 -2
- package/dist/src/bitgo/utils/tss/index.d.ts +1 -0
- package/dist/src/bitgo/utils/tss/index.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/index.js +2 -1
- package/dist/src/bitgo/utils/tss/keyVerification.d.ts +45 -0
- package/dist/src/bitgo/utils/tss/keyVerification.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/keyVerification.js +192 -0
- package/dist/src/bitgo/utils/tss/recipientUtils.d.ts +1 -14
- package/dist/src/bitgo/utils/tss/recipientUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/recipientUtils.js +1 -62
- package/dist/src/bitgo/wallet/iWallet.d.ts +16 -2
- package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/iWallet.js +1 -1
- package/dist/src/bitgo/wallet/wallet.d.ts +21 -1
- package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallet.js +52 -38
- package/dist/test/unit/bitgo/safe/rootCoin.d.ts +2 -0
- package/dist/test/unit/bitgo/safe/rootCoin.d.ts.map +1 -0
- package/dist/test/unit/bitgo/safe/rootCoin.js +13 -0
- package/dist/test/unit/bitgo/tss/redpallas/redpallasMPCv2.js +69 -1
- package/dist/test/unit/bitgo/utils/siws.js +57 -7
- package/dist/test/unit/bitgo/utils/tss/keyVerification.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/tss/keyVerification.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/tss/keyVerification.js +229 -0
- package/dist/test/unit/bitgo/utils/tss/recipientUtils.js +1 -21
- package/dist/test/unit/bitgo/wallet/walletVerifyKey.d.ts +2 -0
- package/dist/test/unit/bitgo/wallet/walletVerifyKey.d.ts.map +1 -0
- package/dist/test/unit/bitgo/wallet/walletVerifyKey.js +160 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
|
@@ -1,16 +1,22 @@
|
|
|
1
1
|
import * as openpgp from 'openpgp';
|
|
2
2
|
import { RedPallasMPSTypes } from '@bitgo/sdk-lib-mpc';
|
|
3
|
-
import { RedpallasMPCv2SignatureShareRound1Output, RedpallasMPCv2SignatureShareRound2Output, RedpallasMPCv2SignatureShareRound3Output } from '@bitgo/public-types';
|
|
3
|
+
import { RedpallasMPCv2RerandShareRound1Output, RedpallasMPCv2RerandShareRound2Output, RedpallasMPCv2SignatureShareRound1Output, RedpallasMPCv2SignatureShareRound2Output, RedpallasMPCv2SignatureShareRound3Output } from '@bitgo/public-types';
|
|
4
4
|
import { SignatureShareRecord } from '../../utils/tss/baseTypes';
|
|
5
5
|
import { MPCv2PartiesEnum } from '../../utils/tss/ecdsa/typesMPCv2';
|
|
6
6
|
type SignerPartyId = MPCv2PartiesEnum.USER | MPCv2PartiesEnum.BACKUP;
|
|
7
7
|
/**
|
|
8
|
-
* RedPallas MPS DSG signature-share helpers.
|
|
8
|
+
* RedPallas MPS DSG and rerand signature-share helpers.
|
|
9
9
|
*
|
|
10
|
-
* Groundwork for a future custodial/cold (SMC/OVC)
|
|
11
|
-
* caller in this SDK. Mirrors `../eddsa/eddsaMPCv2.ts` (same
|
|
10
|
+
* Groundwork for a future custodial/cold (SMC/OVC) signing flow - not yet wired up to any
|
|
11
|
+
* caller in this SDK. Mirrors `../eddsa/eddsaMPCv2.ts` (same round shape, same PGP-signed-
|
|
12
12
|
* message envelope), but kept as an independent copy - built on `RedPallasMPSComms` - so
|
|
13
13
|
* RedPallas MPS never depends on the EdDSA MPS module, and vice versa.
|
|
14
|
+
*
|
|
15
|
+
* Since `@bitgo/wasm-mps` 1.17.0, key re-randomization is a separate 2-round rerand
|
|
16
|
+
* protocol that must run before every RedPallas DSG, between the same 2 parties that
|
|
17
|
+
* will then sign: `getRerandShareRoundOne/Two` build those share records and
|
|
18
|
+
* `verifyPeerRerandMessageRoundOne/Two` unwrap the peer's rerand messages (see
|
|
19
|
+
* `RedPallasRerand` in `@bitgo/sdk-lib-mpc`).
|
|
14
20
|
*/
|
|
15
21
|
/**
|
|
16
22
|
* Builds the round-1 signature share record.
|
|
@@ -46,5 +52,28 @@ export declare function verifyPeerMessageRoundThree(parsedRound3Output: Redpalla
|
|
|
46
52
|
* signed transaction via `sendTxRequest`.
|
|
47
53
|
*/
|
|
48
54
|
export declare function getSignatureShareRoundThree(userMsg3: RedPallasMPSTypes.DeserializedMessage, userGpgPrivKey: openpgp.PrivateKey, partyId?: SignerPartyId, otherSignerPartyId?: MPCv2PartiesEnum): Promise<SignatureShareRecord>;
|
|
55
|
+
/**
|
|
56
|
+
* Builds the rerand round-1 signature share record.
|
|
57
|
+
*
|
|
58
|
+
* Rerand must run before every RedPallas DSG, with the same counterpart. Round 1
|
|
59
|
+
* carries the PGP-signed WASM commitment broadcast (`RedPallasRerand.getFirstMessage()`).
|
|
60
|
+
*/
|
|
61
|
+
export declare function getRerandShareRoundOne(userMsg1: RedPallasMPSTypes.DeserializedMessage, userGpgPrivKey: openpgp.PrivateKey, partyId?: SignerPartyId, otherSignerPartyId?: MPCv2PartiesEnum): Promise<SignatureShareRecord>;
|
|
62
|
+
/**
|
|
63
|
+
* Verifies the peer's rerand round-1 PGP signature and returns the raw deserialized
|
|
64
|
+
* message ready for `RedPallasRerand.handleIncomingMessages`.
|
|
65
|
+
*/
|
|
66
|
+
export declare function verifyPeerRerandMessageRoundOne(parsedRound1Output: RedpallasMPCv2RerandShareRound1Output, peerGpgKey: openpgp.Key, peerPartyId?: MPCv2PartiesEnum): Promise<RedPallasMPSTypes.DeserializedMessage>;
|
|
67
|
+
/**
|
|
68
|
+
* Builds the rerand round-2 signature share record (opening message).
|
|
69
|
+
*/
|
|
70
|
+
export declare function getRerandShareRoundTwo(userMsg2: RedPallasMPSTypes.DeserializedMessage, userGpgPrivKey: openpgp.PrivateKey, partyId?: SignerPartyId, otherSignerPartyId?: MPCv2PartiesEnum): Promise<SignatureShareRecord>;
|
|
71
|
+
/**
|
|
72
|
+
* Verifies the peer's rerand round-2 PGP signature and returns the raw deserialized
|
|
73
|
+
* message ready for `RedPallasRerand.handleIncomingMessages`. After this exchange
|
|
74
|
+
* both parties read the rerandomized keyshare via `getRerandomizedKeyShare()` and
|
|
75
|
+
* feed it into `RedPallasDSG.initDsg`.
|
|
76
|
+
*/
|
|
77
|
+
export declare function verifyPeerRerandMessageRoundTwo(parsedRound2Output: RedpallasMPCv2RerandShareRound2Output, peerGpgKey: openpgp.Key, peerPartyId?: MPCv2PartiesEnum): Promise<RedPallasMPSTypes.DeserializedMessage>;
|
|
49
78
|
export {};
|
|
50
79
|
//# sourceMappingURL=redpallasMPCv2.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redpallasMPCv2.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/tss/redpallas/redpallasMPCv2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,EAAqB,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAEL,wCAAwC,EAExC,wCAAwC,EAExC,wCAAwC,EACzC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAsB,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEpE,KAAK,aAAa,GAAG,gBAAgB,CAAC,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC;AAarE
|
|
1
|
+
{"version":3,"file":"redpallasMPCv2.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/tss/redpallas/redpallasMPCv2.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,10 @@ exports.getSignatureShareRoundTwo = getSignatureShareRoundTwo;
|
|
|
6
6
|
exports.verifyPeerMessageRoundTwo = verifyPeerMessageRoundTwo;
|
|
7
7
|
exports.verifyPeerMessageRoundThree = verifyPeerMessageRoundThree;
|
|
8
8
|
exports.getSignatureShareRoundThree = getSignatureShareRoundThree;
|
|
9
|
+
exports.getRerandShareRoundOne = getRerandShareRoundOne;
|
|
10
|
+
exports.verifyPeerRerandMessageRoundOne = verifyPeerRerandMessageRoundOne;
|
|
11
|
+
exports.getRerandShareRoundTwo = getRerandShareRoundTwo;
|
|
12
|
+
exports.verifyPeerRerandMessageRoundTwo = verifyPeerRerandMessageRoundTwo;
|
|
9
13
|
const sdk_lib_mpc_1 = require("@bitgo/sdk-lib-mpc");
|
|
10
14
|
const baseTypes_1 = require("../../utils/tss/baseTypes");
|
|
11
15
|
const typesMPCv2_1 = require("../../utils/tss/ecdsa/typesMPCv2");
|
|
@@ -20,12 +24,18 @@ function partyIdToSignatureShareType(partyId) {
|
|
|
20
24
|
}
|
|
21
25
|
}
|
|
22
26
|
/**
|
|
23
|
-
* RedPallas MPS DSG signature-share helpers.
|
|
27
|
+
* RedPallas MPS DSG and rerand signature-share helpers.
|
|
24
28
|
*
|
|
25
|
-
* Groundwork for a future custodial/cold (SMC/OVC)
|
|
26
|
-
* caller in this SDK. Mirrors `../eddsa/eddsaMPCv2.ts` (same
|
|
29
|
+
* Groundwork for a future custodial/cold (SMC/OVC) signing flow - not yet wired up to any
|
|
30
|
+
* caller in this SDK. Mirrors `../eddsa/eddsaMPCv2.ts` (same round shape, same PGP-signed-
|
|
27
31
|
* message envelope), but kept as an independent copy - built on `RedPallasMPSComms` - so
|
|
28
32
|
* RedPallas MPS never depends on the EdDSA MPS module, and vice versa.
|
|
33
|
+
*
|
|
34
|
+
* Since `@bitgo/wasm-mps` 1.17.0, key re-randomization is a separate 2-round rerand
|
|
35
|
+
* protocol that must run before every RedPallas DSG, between the same 2 parties that
|
|
36
|
+
* will then sign: `getRerandShareRoundOne/Two` build those share records and
|
|
37
|
+
* `verifyPeerRerandMessageRoundOne/Two` unwrap the peer's rerand messages (see
|
|
38
|
+
* `RedPallasRerand` in `@bitgo/sdk-lib-mpc`).
|
|
29
39
|
*/
|
|
30
40
|
/**
|
|
31
41
|
* Builds the round-1 signature share record.
|
|
@@ -109,4 +119,61 @@ async function getSignatureShareRoundThree(userMsg3, userGpgPrivKey, partyId = t
|
|
|
109
119
|
share: JSON.stringify(share),
|
|
110
120
|
};
|
|
111
121
|
}
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkcGFsbGFzTVBDdjIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdHNzL3JlZHBhbGxhcy9yZWRwYWxsYXNNUEN2Mi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXlDQSw4REFnQkM7QUFNRCw4REFVQztBQUtELDhEQWdCQztBQU1ELDhEQVVDO0FBTUQsa0VBT0M7QUFTRCxrRUFnQkM7QUFuSkQsb0RBQTBFO0FBUzFFLHlEQUFxRjtBQUNyRixpRUFBb0U7QUFJcEUsU0FBUywyQkFBMkIsQ0FBQyxPQUF5QjtJQUM1RCxRQUFRLE9BQU8sRUFBRSxDQUFDO1FBQ2hCLEtBQUssNkJBQWdCLENBQUMsSUFBSTtZQUN4QixPQUFPLDhCQUFrQixDQUFDLElBQUksQ0FBQztRQUNqQyxLQUFLLDZCQUFnQixDQUFDLE1BQU07WUFDMUIsT0FBTyw4QkFBa0IsQ0FBQyxNQUFNLENBQUM7UUFDbkMsS0FBSyw2QkFBZ0IsQ0FBQyxLQUFLO1lBQ3pCLE9BQU8sOEJBQWtCLENBQUMsS0FBSyxDQUFDO0lBQ3BDLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUVIOzs7OztHQUtHO0FBQ0ksS0FBSyxVQUFVLHlCQUF5QixDQUM3QyxRQUErQyxFQUMvQyxjQUFrQyxFQUNsQyxVQUF5Qiw2QkFBZ0IsQ0FBQyxJQUFJLEVBQzlDLHFCQUF1Qyw2QkFBZ0IsQ0FBQyxLQUFLO0lBRTdELE1BQU0sVUFBVSxHQUFHLE1BQU0sK0JBQWlCLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDL0csTUFBTSxLQUFLLEdBQTRDO1FBQ3JELElBQUksRUFBRSxhQUFhO1FBQ25CLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7S0FDM0IsQ0FBQztJQUNGLE9BQU87UUFDTCxJQUFJLEVBQUUsMkJBQTJCLENBQUMsT0FB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RUFBRSxFQUFFLDJCQUEyQixDQUFDLGtCQUFrQixDQUFDO1FBQ25ELEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztLQUM3QixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIG9wZW5wZ3AgZnJvbSAnb3BlbnBncCc7XG5pbXBvcnQgeyBSZWRQYWxsYXNNUFNDb21tcywgUmVkUGFsbGFzTVBTVHlwZXMgfSBmcm9tICdAYml0Z28vc2RrLWxpYi1tcGMnO1xuaW1wb3J0IHtcbiAgUmVkcGFsbGFzTVBDdjJTaWduYXR1cmVTaGFyZVJvdW5kMUlucHV0LFxuICBSZWRwYWxsYXNNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQxT3V0cHV0LFxuICBSZWRwYWxsYXNNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQySW5wdXQsXG4gIFJlZHBhbGxhc01QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDJPdXRwdXQsXG4gIFJlZHBhbGxhc01QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDNJbnB1dCxcbiAgUmVkcGFsbGFzTVBDdjJTaWduYXR1cmVTaGFyZVJvdW5kM091dHB1dCxcbn0gZnJvbSAnQGJpdGdvL3B1YmxpYy10eXBlcyc7XG5pbXBvcnQgeyBTaWduYXR1cmVTaGFyZVJlY29yZCwgU2lnbmF0dXJlU2hhcmVUeXBlIH0gZnJvbSAnLi4vLi4vdXRpbHMvdHNzL2Jhc2VUeXBlcyc7XG5pbXBvcnQgeyBNUEN2MlBhcnRpZXNFbnVtIH0gZnJvbSAnLi4vLi4vdXRpbHMvdHNzL2VjZHNhL3R5cGVzTVBDdjInO1xuXG50eXBlIFNpZ25lclBhcnR5SWQgPSBNUEN2MlBhcnRpZXNFbnVtLlVTRVIgfCBNUEN2MlBhcnRpZXNFbnVtLkJBQ0tVUDtcblxuZnVuY3Rpb24gcGFydHlJZFRvU2lnbmF0dXJlU2hhcmVUeXBlKHBhcnR5SWQ6IE1QQ3YyUGFydGllc0VudW0pOiBTaWduYXR1cmVTaGFyZVR5cGUge1xuICBzd2l0Y2ggKHBhcnR5SWQpIHtcbiAgICBjYXNlIE1QQ3YyUGFydGllc0VudW0uVVNFUjpcbiAgICAgIHJldHVybiBTaWduYXR1cmVTaGFyZVR5cGUuVVNFUjtcbiAgICBjYXNlIE1QQ3YyUGFydGllc0VudW0uQkFDS1VQOlxuICAgICAgcmV0dXJuIFNpZ25hdHVyZVNoYXJlVHlwZS5CQUNLVVA7XG4gICAgY2FzZSBNUEN2MlBhcnRpZXNFbnVtLkJJVEdPOlxuICAgICAgcmV0dXJuIFNpZ25hdHVyZVNoYXJlVHlwZS5CSVRHTztcbiAgfVxufVxuXG4vKipcbiAqIFJlZFBhbGxhcyBNUFMgRFNHIHNpZ25hdHVyZS1zaGFyZSBoZWxwZXJzLlxuICpcbiAqIEdyb3VuZHdvcmsgZm9yIGEgZnV0dXJlIGN1c3RvZGlhbC9jb2xkIChTTUMvT1ZDKSBEU0cgc2lnbmluZyBmbG93IC0gbm90IHlldCB3aXJlZCB1cCB0byBhbnlcbiAqIGNhbGxlciBpbiB0aGlzIFNESy4gTWlycm9ycyBgLi4vZWRkc2EvZWRkc2FNUEN2Mi50c2AgKHNhbWUgMy1yb3VuZCBzaGFwZSwgc2FtZSBQR1Atc2lnbmVkLVxuICogbWVzc2FnZSBlbnZlbG9wZSksIGJ1dCBrZXB0IGFzIGFuIGluZGVwZW5kZW50IGNvcHkgLSBidWlsdCBvbiBgUmVkUGFsbGFzTVBTQ29tbXNgIC0gc29cbiAqIFJlZFBhbGxhcyBNUFMgbmV2ZXIgZGVwZW5kcyBvbiB0aGUgRWREU0EgTVBTIG1vZHVsZSwgYW5kIHZpY2UgdmVyc2EuXG4gKi9cblxuLyoqXG4gKiBCdWlsZHMgdGhlIHJvdW5kLTEgc2lnbmF0dXJlIHNoYXJlIHJlY29yZC5cbiAqXG4gKiBQR1Atc2lnbnMgdGhlIFdBU00gcm91bmQtMCBicm9hZGNhc3QgbWVzc2FnZSB3aXRoIHRoZSBzaWduZXIncyBlcGhlbWVyYWwga2V5IGFuZFxuICogd3JhcHMgaXQgaW50byBhIFNpZ25hdHVyZVNoYXJlUmVjb3JkIHJlYWR5IGZvciBgc2VuZFNpZ25hdHVyZVNoYXJlVjJgLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U2lnbmF0dXJlU2hhcmVSb3VuZE9uZShcbiAgdXNlck1zZzE6IFJlZFBhbGxhc01QU1R5cGVzLkRlc2VyaWFsaXplZE1lc3NhZ2UsXG4gIHVzZXJHcGdQcml2S2V5OiBvcGVucGdwLlByaXZhdGVLZXksXG4gIHBhcnR5SWQ6IFNpZ25lclBhcnR5SWQgPSBNUEN2MlBhcnRpZXNFbnVtLlVTRVIsXG4gIG90aGVyU2lnbmVyUGFydHlJZDogTVBDdjJQYXJ0aWVzRW51bSA9IE1QQ3YyUGFydGllc0VudW0uQklUR09cbik6IFByb21pc2U8U2lnbmF0dXJlU2hhcmVSZWNvcmQ+IHtcbiAgY29uc3Qgc2lnbmVkTXNnMSA9IGF3YWl0IFJlZFBhbGxhc01QU0NvbW1zLmRldGFjaFNpZ25NcHNNZXNzYWdlKEJ1ZmZlci5mcm9tKHVzZXJNc2cxLnBheWxvYWQpLCB1c2VyR3BnUHJpdktleSk7XG4gIGNvbnN0IHNoYXJlOiBSZWRwYWxsYXNNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQxSW5wdXQgPSB7XG4gICAgdHlwZTogJ3JvdW5kMUlucHV0JyxcbiAgICBkYXRhOiB7IG1zZzE6IHNpZ25lZE1zZzEgfSxcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBmcm9tOiBwYXJ0eUlkVG9TaWduYXR1cmVTaGFyZVR5cGUocGFydHlJZCksXG4gICAgdG86IHBhcnR5SWRUb1NpZ25hdHVyZVNoYXJlVHlwZShvdGhlclNpZ25lclBhcnR5SWQpLFxuICAgIHNoYXJlOiBKU09OLnN0cmluZ2lmeShzaGFyZSksXG4gIH07XG59XG5cbi8qKlxuICogVmVyaWZpZXMgdGhlIHBlZXIncyByb3VuZC0xIFBHUCBzaWduYXR1cmUgYW5kIHJldHVybnMgdGhlIHJhdyBkZXNlcmlhbGl6ZWRcbiAqIG1lc3NhZ2UgcmVhZHkgZm9yIGBSZWRQYWxsYXNEU0cuaGFuZGxlSW5jb21pbmdNZXNzYWdlc2AuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2ZXJpZnlQZWVyTWVzc2FnZVJvdW5kT25lKFxuICBwYXJzZWRSb3VuZDFPdXRwdXQ6IFJlZHBhbGxhc01QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDFPdXRwdXQsXG4gIHBlZXJHcGdLZXk6IG9wZW5wZ3AuS2V5LFxuICBwZWVyUGFydHlJZDogTVBDdjJQYXJ0aWVzRW51bSA9IE1QQ3YyUGFydGllc0VudW0uQklUR09cbik6IFByb21pc2U8UmVkUGFsbGFzTVBTVHlwZXMuRGVzZXJpYWxpemVkTWVzc2FnZT4ge1xuICBjb25zdCByYXdCeXRlcyA9IGF3YWl0IFJlZFBhbGxhc01QU0NvbW1zLnZlcmlmeU1wc01lc3NhZ2UocGFyc2VkUm91bmQxT3V0cHV0LmRhdGEubXNnMSwgcGVlckdwZ0tleSk7XG4gIHJldHVybiB7XG4gICAgZnJvbTogcGVlclBhcnR5SWQsXG4gICAgcGF5bG9hZDogbmV3IFVpbnQ4QXJyYXkocmF3Qnl0ZXMpLFxuICB9O1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgcm91bmQtMiBzaWduYXR1cmUgc2hhcmUgcmVjb3JkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U2lnbmF0dXJlU2hhcmVSb3VuZFR3byhcbiAgdXNlck1zZzI6IFJlZFBhbGxhc01QU1R5cGVzLkRlc2VyaWFsaXplZE1lc3NhZ2UsXG4gIHVzZXJHcGdQcml2S2V5OiBvcGVucGdwLlByaXZhdGVLZXksXG4gIHBhcnR5SWQ6IFNpZ25lclBhcnR5SWQgPSBNUEN2MlBhcnRpZXNFbnVtLlVTRVIsXG4gIG90aGVyU2lnbmVyUGFydHlJZDogTVBDdjJQYXJ0aWVzRW51bSA9IE1QQ3YyUGFydGllc0VudW0uQklUR09cbik6IFByb21pc2U8U2lnbmF0dXJlU2hhcmVSZWNvcmQ+IHtcbiAgY29uc3Qgc2lnbmVkTXNnMiA9IGF3YWl0IFJlZFBhbGxhc01QU0NvbW1zLmRldGFjaFNpZ25NcHNNZXNzYWdlKEJ1ZmZlci5mcm9tKHVzZXJNc2cyLnBheWxvYWQpLCB1c2VyR3BnUHJpdktleSk7XG4gIGNvbnN0IHNoYXJlOiBSZWRwYWxsYXNNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQySW5wdXQgPSB7XG4gICAgdHlwZTogJ3JvdW5kMklucHV0JyxcbiAgICBkYXRhOiB7IG1zZzI6IHNpZ25lZE1zZzIgfSxcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBmcm9tOiBwYXJ0eUlkVG9TaWduYXR1cmVTaGFyZVR5cGUocGFydHlJZCksXG4gICAgdG86IHBhcnR5SWRUb1NpZ25hdHVyZVNoYXJlVHlwZShvdGhlclNpZ25lclBhcnR5SWQpLFxuICAgIHNoYXJlOiBKU09OLnN0cmluZ2lmeShzaGFyZSksXG4gIH07XG59XG5cbi8qKlxuICogVmVyaWZpZXMgdGhlIHBlZXIncyByb3VuZC0yIFBHUCBzaWduYXR1cmUgYW5kIHJldHVybnMgdGhlIHJhdyBkZXNlcmlhbGl6ZWRcbiAqIG1lc3NhZ2UgcmVhZHkgZm9yIGBSZWRQYWxsYXNEU0cuaGFuZGxlSW5jb21pbmdNZXNzYWdlc2AuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2ZXJpZnlQZWVyTWVzc2FnZVJvdW5kVHdvKFxuICBwYXJzZWRSb3VuZDJPdXRwdXQ6IFJlZHBhbGxhc01QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDJPdXRwdXQsXG4gIHBlZXJHcGdLZXk6IG9wZW5wZ3AuS2V5LFxuICBwZWVyUGFydHlJZDogTVBDdjJQYXJ0aWVzRW51bSA9IE1QQ3YyUGFydGllc0VudW0uQklUR09cbik6IFByb21pc2U8UmVkUGFsbGFzTVBTVHlwZXMuRGVzZXJpYWxpemVkTWVzc2FnZT4ge1xuICBjb25zdCByYXdCeXRlcyA9IGF3YWl0IFJlZFBhbGxhc01QU0NvbW1zLnZlcmlmeU1wc01lc3NhZ2UocGFyc2VkUm91bmQyT3V0cHV0LmRhdGEubXNnMiwgcGVlckdwZ0tleSk7XG4gIHJldHVybiB7XG4gICAgZnJvbTogcGVlclBhcnR5SWQsXG4gICAgcGF5bG9hZDogbmV3IFVpbnQ4QXJyYXkocmF3Qnl0ZXMpLFxuICB9O1xufVxuXG4vKipcbiAqIFZlcmlmaWVzIHRoZSBwZWVyJ3Mgcm91bmQtMyBQR1Agc2lnbmF0dXJlIGFuZCByZXR1cm5zIHRoZSByYXcgZGVzZXJpYWxpemVkXG4gKiBtZXNzYWdlIHJlYWR5IGZvciBgUmVkUGFsbGFzRFNHLmhhbmRsZUluY29taW5nTWVzc2FnZXNgLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5UGVlck1lc3NhZ2VSb3VuZFRocmVlKFxuICBwYXJzZWRSb3VuZDNPdXRwdXQ6IFJlZHBhbGxhc01QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDNPdXRwdXQsXG4gIHBlZXJHcGdLZXk6IG9wZW5wZ3AuS2V5LFxuICBwZWVyUGFydHlJZDogTVBDdjJQYXJ0aWVzRW51bSA9IE1QQ3YyUGFydGllc0VudW0uQklUR09cbik6IFByb21pc2U8UmVkUGFsbGFzTVBTVHlwZXMuRGVzZXJpYWxpemVkTWVzc2FnZT4ge1xuICBjb25zdCByYXdCeXRlcyA9IGF3YWl0IFJlZFBhbGxhc01QU0NvbW1zLnZlcmlmeU1wc01lc3NhZ2UocGFyc2VkUm91bmQzT3V0cHV0LmRhdGEubXNnMywgcGVlckdwZ0tleSk7XG4gIHJldHVybiB7IGZyb206IHBlZXJQYXJ0eUlkLCBwYXlsb2FkOiBuZXcgVWludDhBcnJheShyYXdCeXRlcykgfTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIHJvdW5kLTMgc2lnbmF0dXJlIHNoYXJlIHJlY29yZCAoZmluYWwgc2lnbmVyIG1lc3NhZ2UpLlxuICpcbiAqIFRoZXJlIGlzIG5vIGNvcnJlc3BvbmRpbmcgYHZlcmlmeUJpdEdvTWVzc2FnZVJvdW5kVGhyZWVgIGJlY2F1c2UgV2FsbGV0IFBsYXRmb3JtXG4gKiBmaW5hbGlzZXMgdGhlIHNpZ25pbmcgc2VydmVyLXNpZGUgYWZ0ZXIgcmVjZWl2aW5nIHJvdW5kIDM7IHRoZSBjbGllbnQgb2J0YWlucyB0aGVcbiAqIHNpZ25lZCB0cmFuc2FjdGlvbiB2aWEgYHNlbmRUeFJlcXVlc3RgLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U2lnbmF0dXJlU2hhcmVSb3VuZFRocmVlKFxuICB1c2VyTXNnMzogUmVkUGFsbGFzTVBTVHlwZXMuRGVzZXJpYWxpemVkTWVzc2FnZSxcbiAgdXNlckdwZ1ByaXZLZXk6IG9wZW5wZ3AuUHJpdmF0ZUtleSxcbiAgcGFydHlJZDogU2lnbmVyUGFydHlJZCA9IE1QQ3YyUGFydGllc0VudW0uVVNFUixcbiAgb3RoZXJTaWduZXJQYXJ0eUlkOiBNUEN2MlBhcnRpZXNFbnVtID0gTVBDdjJQYXJ0aWVzRW51bS5CSVRHT1xuKTogUHJvbWlzZTxTaWduYXR1cmVTaGFyZVJlY29yZD4ge1xuICBjb25zdCBzaWduZWRNc2czID0gYXdhaXQgUmVkUGFsbGFzTVBTQ29tbXMuZGV0YWNoU2lnbk1wc01lc3NhZ2UoQnVmZmVyLmZyb20odXNlck1zZzMucGF5bG9hZCksIHVzZXJHcGdQcml2S2V5KTtcbiAgY29uc3Qgc2hhcmU6IFJlZHBhbGxhc01QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDNJbnB1dCA9IHtcbiAgICB0eXBlOiAncm91bmQzSW5wdXQnLFxuICAgIGRhdGE6IHsgbXNnMzogc2lnbmVkTXNnMyB9LFxuICB9O1xuICByZXR1cm4ge1xuICAgIGZyb206IHBhcnR5SWRUb1NpZ25hdHVyZVNoYXJlVHlwZShwYXJ0eUlkKSxcbiAgICB0bzogcGFydHlJZFRvU2lnbmF0dXJlU2hhcmVUeXBlKG90aGVyU2lnbmVyUGFydHlJZCksXG4gICAgc2hhcmU6IEpTT04uc3RyaW5naWZ5KHNoYXJlKSxcbiAgfTtcbn1cbiJdfQ==
|
|
122
|
+
/**
|
|
123
|
+
* Builds the rerand round-1 signature share record.
|
|
124
|
+
*
|
|
125
|
+
* Rerand must run before every RedPallas DSG, with the same counterpart. Round 1
|
|
126
|
+
* carries the PGP-signed WASM commitment broadcast (`RedPallasRerand.getFirstMessage()`).
|
|
127
|
+
*/
|
|
128
|
+
async function getRerandShareRoundOne(userMsg1, userGpgPrivKey, partyId = typesMPCv2_1.MPCv2PartiesEnum.USER, otherSignerPartyId = typesMPCv2_1.MPCv2PartiesEnum.BITGO) {
|
|
129
|
+
const signedMsg1 = await sdk_lib_mpc_1.RedPallasMPSComms.detachSignMpsMessage(Buffer.from(userMsg1.payload), userGpgPrivKey);
|
|
130
|
+
const share = {
|
|
131
|
+
type: 'round1Input',
|
|
132
|
+
data: { msg1: signedMsg1 },
|
|
133
|
+
};
|
|
134
|
+
return {
|
|
135
|
+
from: partyIdToSignatureShareType(partyId),
|
|
136
|
+
to: partyIdToSignatureShareType(otherSignerPartyId),
|
|
137
|
+
share: JSON.stringify(share),
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Verifies the peer's rerand round-1 PGP signature and returns the raw deserialized
|
|
142
|
+
* message ready for `RedPallasRerand.handleIncomingMessages`.
|
|
143
|
+
*/
|
|
144
|
+
async function verifyPeerRerandMessageRoundOne(parsedRound1Output, peerGpgKey, peerPartyId = typesMPCv2_1.MPCv2PartiesEnum.BITGO) {
|
|
145
|
+
const rawBytes = await sdk_lib_mpc_1.RedPallasMPSComms.verifyMpsMessage(parsedRound1Output.data.msg1, peerGpgKey);
|
|
146
|
+
return {
|
|
147
|
+
from: peerPartyId,
|
|
148
|
+
payload: new Uint8Array(rawBytes),
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Builds the rerand round-2 signature share record (opening message).
|
|
153
|
+
*/
|
|
154
|
+
async function getRerandShareRoundTwo(userMsg2, userGpgPrivKey, partyId = typesMPCv2_1.MPCv2PartiesEnum.USER, otherSignerPartyId = typesMPCv2_1.MPCv2PartiesEnum.BITGO) {
|
|
155
|
+
const signedMsg2 = await sdk_lib_mpc_1.RedPallasMPSComms.detachSignMpsMessage(Buffer.from(userMsg2.payload), userGpgPrivKey);
|
|
156
|
+
const share = {
|
|
157
|
+
type: 'round2Input',
|
|
158
|
+
data: { msg2: signedMsg2 },
|
|
159
|
+
};
|
|
160
|
+
return {
|
|
161
|
+
from: partyIdToSignatureShareType(partyId),
|
|
162
|
+
to: partyIdToSignatureShareType(otherSignerPartyId),
|
|
163
|
+
share: JSON.stringify(share),
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Verifies the peer's rerand round-2 PGP signature and returns the raw deserialized
|
|
168
|
+
* message ready for `RedPallasRerand.handleIncomingMessages`. After this exchange
|
|
169
|
+
* both parties read the rerandomized keyshare via `getRerandomizedKeyShare()` and
|
|
170
|
+
* feed it into `RedPallasDSG.initDsg`.
|
|
171
|
+
*/
|
|
172
|
+
async function verifyPeerRerandMessageRoundTwo(parsedRound2Output, peerGpgKey, peerPartyId = typesMPCv2_1.MPCv2PartiesEnum.BITGO) {
|
|
173
|
+
const rawBytes = await sdk_lib_mpc_1.RedPallasMPSComms.verifyMpsMessage(parsedRound2Output.data.msg2, peerGpgKey);
|
|
174
|
+
return {
|
|
175
|
+
from: peerPartyId,
|
|
176
|
+
payload: new Uint8Array(rawBytes),
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkcGFsbGFzTVBDdjIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdHNzL3JlZHBhbGxhcy9yZWRwYWxsYXNNUEN2Mi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQW1EQSw4REFnQkM7QUFNRCw4REFVQztBQUtELDhEQWdCQztBQU1ELDhEQVVDO0FBTUQsa0VBT0M7QUFTRCxrRUFnQkM7QUFRRCx3REFnQkM7QUFNRCwwRUFVQztBQUtELHdEQWdCQztBQVFELDBFQVVDO0FBNU9ELG9EQUEwRTtBQWExRSx5REFBcUY7QUFDckYsaUVBQW9FO0FBSXBFLFNBQVMsMkJBQTJCLENBQUMsT0FBeUI7SUFDNUQsUUFBUSxPQUFPLEVBQUUsQ0FBQztRQUNoQixLQUFLLDZCQUFnQixDQUFDLElBQUk7WUFDeEIsT0FBTyw4QkFBa0IsQ0FBQyxJQUFJLENBQUM7UUFDakMsS0FBSyw2QkFBZ0IsQ0FBQyxNQUFNO1lBQzFCLE9BQU8sOEJBQWtCLENBQUMsTUFBTSxDQUFDO1FBQ25DLEtBQUssNkJBQWdCLENBQUMsS0FBSztZQUN6QixPQUFPLDhCQUFrQixDQUFDLEtBQUssQ0FBQztJQUNwQyxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFFSDs7Ozs7R0FLRztBQUNJLEtBQUssVUFBVSx5QkFBeUIsQ0FDN0MsUUFBK0MsRUFDL0MsY0FBa0MsRUFDbEMsVUFBeUIsNkJBQWdCLENBQUMsSUFBSSxFQUM5QyxxQkFBdUMsNkJBQWdCLENBQUMsS0FBSztJQUU3RCxNQUFNLFVBQVUsR0FBRyxNQUFNLCtCQUFpQixDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQy9HLE1BQU0sS0FBSyxHQUE0QztRQUNyRCxJQUFJLEVBQUUsYUFBYTtRQUNuQixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFF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QUNKLENBQUM7QUFFRDs7R0FFRztBQUNJLEtBQUssVUFBVSxzQkFBc0IsQ0FDMUMsUUFBK0MsRUFDL0MsY0FBa0MsRUFDbEMsVUFBeUIsNkJBQWdCLENBQUMsSUFBSSxFQUM5QyxxQkFBdUMsNkJBQWdCLENBQUMsS0FBSztJQUU3RCxNQUFNLFVBQVUsR0FBRyxNQUFNLCtCQUFpQixDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQy9HLE1BQU0sS0FBSyxHQUF5QztRQUNsRCxJQUFJLEVBQUUsYUFBYTtRQUNuQixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO0tBQzNCLENBQUM7SUFDRixPQUFPO1FBQ0wsSUFBSSxFQUFFLDJCQUEyQixDQUFDLE9BQU8sQ0FBQztRQUMxQyxFQUFFLEVBQUUsMkJBQTJCLENBQUMsa0JBQWtCLENBQUM7UUFDbkQsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO0tBQzdCLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSSxLQUFLLFVBQVUsK0JBQStCLENBQ25ELGtCQUF5RCxFQUN6RCxVQUF1QixFQUN2QixjQUFnQyw2QkFBZ0IsQ0FBQyxLQUFLO0lBRXRELE1BQU0sUUFBUSxHQUFHLE1BQU0sK0JBQWlCLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNwRyxPQUFPO1FBQ0wsSUFBSSxFQUFFLFdBQVc7UUFDakIsT0FBTyxFQUFFLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQztLQUNsQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIG9wZW5wZ3AgZnJvbSAnb3BlbnBncCc7XG5pbXBvcnQgeyBSZWRQYWxsYXNNUFNDb21tcywgUmVkUGFsbGFzTVBTVHlwZXMgfSBmcm9tICdAYml0Z28vc2RrLWxpYi1tcGMnO1xuaW1wb3J0IHtcbiAgUmVkcGFsbGFzTVBDdjJSZXJhbmRTaGFyZVJvdW5kMUlucHV0LFxuICBSZWRwYWxsYXNNUEN2MlJlcmFuZFNoYXJlUm91bmQxT3V0cHV0LFxuICBSZWRwYWxsYXNNUEN2MlJlcmFuZFNoYXJlUm91bmQySW5wdXQsXG4gIFJlZHBhbGxhc01QQ3YyUmVyYW5kU2hhcmVSb3VuZDJPdXRwdXQsXG4gIFJlZHBhbGxhc01QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDFJbnB1dCxcbiAgUmVkcGFsbGFzTVBDdjJTaWduYXR1cmVTaGFyZVJvdW5kMU91dHB1dCxcbiAgUmVkcGFsbGFzTVBDdjJTaWduYXR1cmVTaGFyZVJvdW5kMklucHV0LFxuICBSZWRwYWxsYXNNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQyT3V0cHV0LFxuICBSZWRwYWxsYXNNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQzSW5wdXQsXG4gIFJlZHBhbGxhc01QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDNPdXRwdXQsXG59IGZyb20gJ0BiaXRnby9wdWJsaWMtdHlwZXMnO1xuaW1wb3J0IHsgU2lnbmF0dXJlU2hhcmVSZWNvcmQsIFNpZ25hdHVyZVNoYXJlVHlwZSB9IGZyb20gJy4uLy4uL3V0aWxzL3Rzcy9iYXNlVHlwZXMnO1xuaW1wb3J0IHsgTVBDdjJQYXJ0aWVzRW51bSB9IGZyb20gJy4uLy4uL3V0aWxzL3Rzcy9lY2RzYS90eXBlc01QQ3YyJztcblxudHlwZSBTaWduZXJQYXJ0eUlkID0gTVBDdjJQYXJ0aWVzRW51bS5VU0VSIHwgTVBDdjJQYXJ0aWVzRW51bS5CQUNLVVA7XG5cbmZ1bmN0aW9uIHBhcnR5SWRUb1NpZ25hdHVyZVNoYXJlVHlwZShwYXJ0eUlkOiBNUEN2MlBhcnRpZXNFbnVtKTogU2lnbmF0dXJlU2hhcmVUeXBlIHtcbiAgc3dpdGNoIChwYXJ0eUlkKSB7XG4gICAgY2FzZSBNUEN2MlBhcnRpZXNFbnVtLlVTRVI6XG4gICAgICByZXR1cm4gU2lnbmF0dXJlU2hhcmVUeXBlLlVTRVI7XG4gICAgY2FzZSBNUEN2MlBhcnRpZXNFbnVtLkJBQ0tVUDpcbiAgICAgIHJldHVybiBTaWduYXR1cmVTaGFyZVR5cGUuQkFDS1VQO1xuICAgIGNhc2UgTVBDdjJQYXJ0aWVzRW51bS5CSVRHTzpcbiAgICAgIHJldHVybiBTaWduYXR1cmVTaGFyZVR5cGUuQklUR087XG4gIH1cbn1cblxuLyoqXG4gKiBSZWRQYWxsYXMgTVBTIERTRyBhbmQgcmVyYW5kIHNpZ25hdHVyZS1zaGFyZSBoZWxwZXJzLlxuICpcbiAqIEdyb3VuZHdvcmsgZm9yIGEgZnV0dXJlIGN1c3RvZGlhbC9jb2xkIChTTUMvT1ZDKSBzaWduaW5nIGZsb3cgLSBub3QgeWV0IHdpcmVkIHVwIHRvIGFueVxuICogY2FsbGVyIGluIHRoaXMgU0RLLiBNaXJyb3JzIGAuLi9lZGRzYS9lZGRzYU1QQ3YyLnRzYCAoc2FtZSByb3VuZCBzaGFwZSwgc2FtZSBQR1Atc2lnbmVkLVxuICogbWVzc2FnZSBlbnZlbG9wZSksIGJ1dCBrZXB0IGFzIGFuIGluZGVwZW5kZW50IGNvcHkgLSBidWlsdCBvbiBgUmVkUGFsbGFzTVBTQ29tbXNgIC0gc29cbiAqIFJlZFBhbGxhcyBNUFMgbmV2ZXIgZGVwZW5kcyBvbiB0aGUgRWREU0EgTVBTIG1vZHVsZSwgYW5kIHZpY2UgdmVyc2EuXG4gKlxuICogU2luY2UgYEBiaXRnby93YXNtLW1wc2AgMS4xNy4wLCBrZXkgcmUtcmFuZG9taXphdGlvbiBpcyBhIHNlcGFyYXRlIDItcm91bmQgcmVyYW5kXG4gKiBwcm90b2NvbCB0aGF0IG11c3QgcnVuIGJlZm9yZSBldmVyeSBSZWRQYWxsYXMgRFNHLCBiZXR3ZWVuIHRoZSBzYW1lIDIgcGFydGllcyB0aGF0XG4gKiB3aWxsIHRoZW4gc2lnbjogYGdldFJlcmFuZFNoYXJlUm91bmRPbmUvVHdvYCBidWlsZCB0aG9zZSBzaGFyZSByZWNvcmRzIGFuZFxuICogYHZlcmlmeVBlZXJSZXJhbmRNZXNzYWdlUm91bmRPbmUvVHdvYCB1bndyYXAgdGhlIHBlZXIncyByZXJhbmQgbWVzc2FnZXMgKHNlZVxuICogYFJlZFBhbGxhc1JlcmFuZGAgaW4gYEBiaXRnby9zZGstbGliLW1wY2ApLlxuICovXG5cbi8qKlxuICogQnVpbGRzIHRoZSByb3VuZC0xIHNpZ25hdHVyZSBzaGFyZSByZWNvcmQuXG4gKlxuICogUEdQLXNpZ25zIHRoZSBXQVNNIHJvdW5kLTAgYnJvYWRjYXN0IG1lc3NhZ2Ugd2l0aCB0aGUgc2lnbmVyJ3MgZXBoZW1lcmFsIGtleSBhbmRcbiAqIHdyYXBzIGl0IGludG8gYSBTaWduYXR1cmVTaGFyZVJlY29yZCByZWFkeSBmb3IgYHNlbmRTaWduYXR1cmVTaGFyZVYyYC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFNpZ25hdHVyZVNoYXJlUm91bmRPbmUoXG4gIHVzZXJNc2cxOiBSZWRQYWxsYXNNUFNUeXBlcy5EZXNlcmlhbGl6ZWRNZXNzYWdlLFxuICB1c2VyR3BnUHJpdktleTogb3BlbnBncC5Qcml2YXRlS2V5LFxuICBwYXJ0eUlkOiBTaWduZXJQYXJ0eUlkID0gTVBDdjJQYXJ0aWVzRW51bS5VU0VSLFxuICBvdGhlclNpZ25lclBhcnR5SWQ6IE1QQ3YyUGFydGllc0VudW0gPSBNUEN2MlBhcnRpZXNFbnVtLkJJVEdPXG4pOiBQcm9taXNlPFNpZ25hdHVyZVNoYXJlUmVjb3JkPiB7XG4gIGNvbnN0IHNpZ25lZE1zZzEgPSBhd2FpdCBSZWRQYWxsYXNNUFNDb21tcy5kZXRhY2hTaWduTXBzTWVzc2FnZShCdWZmZXIuZnJvbSh1c2VyTXNnMS5wYXlsb2FkKSwgdXNlckdwZ1ByaXZLZXkpO1xuICBjb25zdCBzaGFyZTogUmVkcGFsbGFzTVBDdjJTaWduYXR1cmVTaGFyZVJvdW5kMUlucHV0ID0ge1xuICAgIHR5cGU6ICdyb3VuZDFJbnB1dCcsXG4gICAgZGF0YTogeyBtc2cxOiBzaWduZWRNc2cxIH0sXG4gIH07XG4gIHJldHVybiB7XG4gICAgZnJvbTogcGFydHlJZFRvU2lnbmF0dXJlU2hhcmVUeXBlKHBhcnR5SWQpLFxuICAgIHRvOiBwYXJ0eUlkVG9TaWduYXR1cmVTaGFyZVR5cGUob3RoZXJTaWduZXJQYXJ0eUlkKSxcbiAgICBzaGFyZTogSlNPTi5zdHJpbmdpZnkoc2hhcmUpLFxuICB9O1xufVxuXG4vKipcbiAqIFZlcmlmaWVzIHRoZSBwZWVyJ3Mgcm91bmQtMSBQR1Agc2lnbmF0dXJlIGFuZCByZXR1cm5zIHRoZSByYXcgZGVzZXJpYWxpemVkXG4gKiBtZXNzYWdlIHJlYWR5IGZvciBgUmVkUGFsbGFzRFNHLmhhbmRsZUluY29taW5nTWVzc2FnZXNgLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5UGVlck1lc3NhZ2VSb3VuZE9uZShcbiAgcGFyc2VkUm91bmQxT3V0cHV0OiBSZWRwYWxsYXNNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQxT3V0cHV0LFxuICBwZWVyR3BnS2V5OiBvcGVucGdwLktleSxcbiAgcGVlclBhcnR5SWQ6IE1QQ3YyUGFydGllc0VudW0gPSBNUEN2MlBhcnRpZXNFbnVtLkJJVEdPXG4pOiBQcm9taXNlPFJlZFBhbGxhc01QU1R5cGVzLkRlc2VyaWFsaXplZE1lc3NhZ2U+IHtcbiAgY29uc3QgcmF3Qnl0ZXMgPSBhd2FpdCBSZWRQYWxsYXNNUFNDb21tcy52ZXJpZnlNcHNNZXNzYWdlKHBhcnNlZFJvdW5kMU91dHB1dC5kYXRhLm1zZzEsIHBlZXJHcGdLZXkpO1xuICByZXR1cm4ge1xuICAgIGZyb206IHBlZXJQYXJ0eUlkLFxuICAgIHBheWxvYWQ6IG5ldyBVaW50OEFycmF5KHJhd0J5dGVzKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIHJvdW5kLTIgc2lnbmF0dXJlIHNoYXJlIHJlY29yZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFNpZ25hdHVyZVNoYXJlUm91bmRUd28oXG4gIHVzZXJNc2cyOiBSZWRQYWxsYXNNUFNUeXBlcy5EZXNlcmlhbGl6ZWRNZXNzYWdlLFxuICB1c2VyR3BnUHJpdktleTogb3BlbnBncC5Qcml2YXRlS2V5LFxuICBwYXJ0eUlkOiBTaWduZXJQYXJ0eUlkID0gTVBDdjJQYXJ0aWVzRW51bS5VU0VSLFxuICBvdGhlclNpZ25lclBhcnR5SWQ6IE1QQ3YyUGFydGllc0VudW0gPSBNUEN2MlBhcnRpZXNFbnVtLkJJVEdPXG4pOiBQcm9taXNlPFNpZ25hdHVyZVNoYXJlUmVjb3JkPiB7XG4gIGNvbnN0IHNpZ25lZE1zZzIgPSBhd2FpdCBSZWRQYWxsYXNNUFNDb21tcy5kZXRhY2hTaWduTXBzTWVzc2FnZShCdWZmZXIuZnJvbSh1c2VyTXNnMi5wYXlsb2FkKSwgdXNlckdwZ1ByaXZLZXkpO1xuICBjb25zdCBzaGFyZTogUmVkcGFsbGFzTVBDdjJTaWduYXR1cmVTaGFyZVJvdW5kMklucHV0ID0ge1xuICAgIHR5cGU6ICdyb3VuZDJJbnB1dCcsXG4gICAgZGF0YTogeyBtc2cyOiBzaWduZWRNc2cyIH0sXG4gIH07XG4gIHJldHVybiB7XG4gICAgZnJvbTogcGFydHlJZFRvU2lnbmF0dXJlU2hhcmVUeXBlKHBhcnR5SWQpLFxuICAgIHRvOiBwYXJ0eUlkVG9TaWduYXR1cmVTaGFyZVR5cGUob3RoZXJTaWduZXJQYXJ0eUlkKSxcbiAgICBzaGFyZTogSlNPTi5zdHJpbmdpZnkoc2hhcmUpLFxuICB9O1xufVxuXG4vKipcbiAqIFZlcmlmaWVzIHRoZSBwZWVyJ3Mgcm91bmQtMiBQR1Agc2lnbmF0dXJlIGFuZCByZXR1cm5zIHRoZSByYXcgZGVzZXJpYWxpemVkXG4gKiBtZXNzYWdlIHJlYWR5IGZvciBgUmVkUGFsbGFzRFNHLmhhbmRsZUluY29taW5nTWVzc2FnZXNgLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5UGVlck1lc3NhZ2VSb3VuZFR3byhcbiAgcGFyc2VkUm91bmQyT3V0cHV0OiBSZWRwYWxsYXNNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQyT3V0cHV0LFxuICBwZWVyR3BnS2V5OiBvcGVucGdwLktleSxcbiAgcGVlclBhcnR5SWQ6IE1QQ3YyUGFydGllc0VudW0gPSBNUEN2MlBhcnRpZXNFbnVtLkJJVEdPXG4pOiBQcm9taXNlPFJlZFBhbGxhc01QU1R5cGVzLkRlc2VyaWFsaXplZE1lc3NhZ2U+IHtcbiAgY29uc3QgcmF3Qnl0ZXMgPSBhd2FpdCBSZWRQYWxsYXNNUFNDb21tcy52ZXJpZnlNcHNNZXNzYWdlKHBhcnNlZFJvdW5kMk91dHB1dC5kYXRhLm1zZzIsIHBlZXJHcGdLZXkpO1xuICByZXR1cm4ge1xuICAgIGZyb206IHBlZXJQYXJ0eUlkLFxuICAgIHBheWxvYWQ6IG5ldyBVaW50OEFycmF5KHJhd0J5dGVzKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBWZXJpZmllcyB0aGUgcGVlcidzIHJvdW5kLTMgUEdQIHNpZ25hdHVyZSBhbmQgcmV0dXJucyB0aGUgcmF3IGRlc2VyaWFsaXplZFxuICogbWVzc2FnZSByZWFkeSBmb3IgYFJlZFBhbGxhc0RTRy5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzYC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHZlcmlmeVBlZXJNZXNzYWdlUm91bmRUaHJlZShcbiAgcGFyc2VkUm91bmQzT3V0cHV0OiBSZWRwYWxsYXNNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQzT3V0cHV0LFxuICBwZWVyR3BnS2V5OiBvcGVucGdwLktleSxcbiAgcGVlclBhcnR5SWQ6IE1QQ3YyUGFydGllc0VudW0gPSBNUEN2MlBhcnRpZXNFbnVtLkJJVEdPXG4pOiBQcm9taXNlPFJlZFBhbGxhc01QU1R5cGVzLkRlc2VyaWFsaXplZE1lc3NhZ2U+IHtcbiAgY29uc3QgcmF3Qnl0ZXMgPSBhd2FpdCBSZWRQYWxsYXNNUFNDb21tcy52ZXJpZnlNcHNNZXNzYWdlKHBhcnNlZFJvdW5kM091dHB1dC5kYXRhLm1zZzMsIHBlZXJHcGdLZXkpO1xuICByZXR1cm4geyBmcm9tOiBwZWVyUGFydHlJZCwgcGF5bG9hZDogbmV3IFVpbnQ4QXJyYXkocmF3Qnl0ZXMpIH07XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSByb3VuZC0zIHNpZ25hdHVyZSBzaGFyZSByZWNvcmQgKGZpbmFsIHNpZ25lciBtZXNzYWdlKS5cbiAqXG4gKiBUaGVyZSBpcyBubyBjb3JyZXNwb25kaW5nIGB2ZXJpZnlCaXRHb01lc3NhZ2VSb3VuZFRocmVlYCBiZWNhdXNlIFdhbGxldCBQbGF0Zm9ybVxuICogZmluYWxpc2VzIHRoZSBzaWduaW5nIHNlcnZlci1zaWRlIGFmdGVyIHJlY2VpdmluZyByb3VuZCAzOyB0aGUgY2xpZW50IG9idGFpbnMgdGhlXG4gKiBzaWduZWQgdHJhbnNhY3Rpb24gdmlhIGBzZW5kVHhSZXF1ZXN0YC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFNpZ25hdHVyZVNoYXJlUm91bmRUaHJlZShcbiAgdXNlck1zZzM6IFJlZFBhbGxhc01QU1R5cGVzLkRlc2VyaWFsaXplZE1lc3NhZ2UsXG4gIHVzZXJHcGdQcml2S2V5OiBvcGVucGdwLlByaXZhdGVLZXksXG4gIHBhcnR5SWQ6IFNpZ25lclBhcnR5SWQgPSBNUEN2MlBhcnRpZXNFbnVtLlVTRVIsXG4gIG90aGVyU2lnbmVyUGFydHlJZDogTVBDdjJQYXJ0aWVzRW51bSA9IE1QQ3YyUGFydGllc0VudW0uQklUR09cbik6IFByb21pc2U8U2lnbmF0dXJlU2hhcmVSZWNvcmQ+IHtcbiAgY29uc3Qgc2lnbmVkTXNnMyA9IGF3YWl0IFJlZFBhbGxhc01QU0NvbW1zLmRldGFjaFNpZ25NcHNNZXNzYWdlKEJ1ZmZlci5mcm9tKHVzZXJNc2czLnBheWxvYWQpLCB1c2VyR3BnUHJpdktleSk7XG4gIGNvbnN0IHNoYXJlOiBSZWRwYWxsYXNNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQzSW5wdXQgPSB7XG4gICAgdHlwZTogJ3JvdW5kM0lucHV0JyxcbiAgICBkYXRhOiB7IG1zZzM6IHNpZ25lZE1zZzMgfSxcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBmcm9tOiBwYXJ0eUlkVG9TaWduYXR1cmVTaGFyZVR5cGUocGFydHlJZCksXG4gICAgdG86IHBhcnR5SWRUb1NpZ25hdHVyZVNoYXJlVHlwZShvdGhlclNpZ25lclBhcnR5SWQpLFxuICAgIHNoYXJlOiBKU09OLnN0cmluZ2lmeShzaGFyZSksXG4gIH07XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSByZXJhbmQgcm91bmQtMSBzaWduYXR1cmUgc2hhcmUgcmVjb3JkLlxuICpcbiAqIFJlcmFuZCBtdXN0IHJ1biBiZWZvcmUgZXZlcnkgUmVkUGFsbGFzIERTRywgd2l0aCB0aGUgc2FtZSBjb3VudGVycGFydC4gUm91bmQgMVxuICogY2FycmllcyB0aGUgUEdQLXNpZ25lZCBXQVNNIGNvbW1pdG1lbnQgYnJvYWRjYXN0IChgUmVkUGFsbGFzUmVyYW5kLmdldEZpcnN0TWVzc2FnZSgpYCkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRSZXJhbmRTaGFyZVJvdW5kT25lKFxuICB1c2VyTXNnMTogUmVkUGFsbGFzTVBTVHlwZXMuRGVzZXJpYWxpemVkTWVzc2FnZSxcbiAgdXNlckdwZ1ByaXZLZXk6IG9wZW5wZ3AuUHJpdmF0ZUtleSxcbiAgcGFydHlJZDogU2lnbmVyUGFydHlJZCA9IE1QQ3YyUGFydGllc0VudW0uVVNFUixcbiAgb3RoZXJTaWduZXJQYXJ0eUlkOiBNUEN2MlBhcnRpZXNFbnVtID0gTVBDdjJQYXJ0aWVzRW51bS5CSVRHT1xuKTogUHJvbWlzZTxTaWduYXR1cmVTaGFyZVJlY29yZD4ge1xuICBjb25zdCBzaWduZWRNc2cxID0gYXdhaXQgUmVkUGFsbGFzTVBTQ29tbXMuZGV0YWNoU2lnbk1wc01lc3NhZ2UoQnVmZmVyLmZyb20odXNlck1zZzEucGF5bG9hZCksIHVzZXJHcGdQcml2S2V5KTtcbiAgY29uc3Qgc2hhcmU6IFJlZHBhbGxhc01QQ3YyUmVyYW5kU2hhcmVSb3VuZDFJbnB1dCA9IHtcbiAgICB0eXBlOiAncm91bmQxSW5wdXQnLFxuICAgIGRhdGE6IHsgbXNnMTogc2lnbmVkTXNnMSB9LFxuICB9O1xuICByZXR1cm4ge1xuICAgIGZyb206IHBhcnR5SWRUb1NpZ25hdHVyZVNoYXJlVHlwZShwYXJ0eUlkKSxcbiAgICB0bzogcGFydHlJZFRvU2lnbmF0dXJlU2hhcmVUeXBlKG90aGVyU2lnbmVyUGFydHlJZCksXG4gICAgc2hhcmU6IEpTT04uc3RyaW5naWZ5KHNoYXJlKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBWZXJpZmllcyB0aGUgcGVlcidzIHJlcmFuZCByb3VuZC0xIFBHUCBzaWduYXR1cmUgYW5kIHJldHVybnMgdGhlIHJhdyBkZXNlcmlhbGl6ZWRcbiAqIG1lc3NhZ2UgcmVhZHkgZm9yIGBSZWRQYWxsYXNSZXJhbmQuaGFuZGxlSW5jb21pbmdNZXNzYWdlc2AuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2ZXJpZnlQZWVyUmVyYW5kTWVzc2FnZVJvdW5kT25lKFxuICBwYXJzZWRSb3VuZDFPdXRwdXQ6IFJlZHBhbGxhc01QQ3YyUmVyYW5kU2hhcmVSb3VuZDFPdXRwdXQsXG4gIHBlZXJHcGdLZXk6IG9wZW5wZ3AuS2V5LFxuICBwZWVyUGFydHlJZDogTVBDdjJQYXJ0aWVzRW51bSA9IE1QQ3YyUGFydGllc0VudW0uQklUR09cbik6IFByb21pc2U8UmVkUGFsbGFzTVBTVHlwZXMuRGVzZXJpYWxpemVkTWVzc2FnZT4ge1xuICBjb25zdCByYXdCeXRlcyA9IGF3YWl0IFJlZFBhbGxhc01QU0NvbW1zLnZlcmlmeU1wc01lc3NhZ2UocGFyc2VkUm91bmQxT3V0cHV0LmRhdGEubXNnMSwgcGVlckdwZ0tleSk7XG4gIHJldHVybiB7XG4gICAgZnJvbTogcGVlclBhcnR5SWQsXG4gICAgcGF5bG9hZDogbmV3IFVpbnQ4QXJyYXkocmF3Qnl0ZXMpLFxuICB9O1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgcmVyYW5kIHJvdW5kLTIgc2lnbmF0dXJlIHNoYXJlIHJlY29yZCAob3BlbmluZyBtZXNzYWdlKS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFJlcmFuZFNoYXJlUm91bmRUd28oXG4gIHVzZXJNc2cyOiBSZWRQYWxsYXNNUFNUeXBlcy5EZXNlcmlhbGl6ZWRNZXNzYWdlLFxuICB1c2VyR3BnUHJpdktleTogb3BlbnBncC5Qcml2YXRlS2V5LFxuICBwYXJ0eUlkOiBTaWduZXJQYXJ0eUlkID0gTVBDdjJQYXJ0aWVzRW51bS5VU0VSLFxuICBvdGhlclNpZ25lclBhcnR5SWQ6IE1QQ3YyUGFydGllc0VudW0gPSBNUEN2MlBhcnRpZXNFbnVtLkJJVEdPXG4pOiBQcm9taXNlPFNpZ25hdHVyZVNoYXJlUmVjb3JkPiB7XG4gIGNvbnN0IHNpZ25lZE1zZzIgPSBhd2FpdCBSZWRQYWxsYXNNUFNDb21tcy5kZXRhY2hTaWduTXBzTWVzc2FnZShCdWZmZXIuZnJvbSh1c2VyTXNnMi5wYXlsb2FkKSwgdXNlckdwZ1ByaXZLZXkpO1xuICBjb25zdCBzaGFyZTogUmVkcGFsbGFzTVBDdjJSZXJhbmRTaGFyZVJvdW5kMklucHV0ID0ge1xuICAgIHR5cGU6ICdyb3VuZDJJbnB1dCcsXG4gICAgZGF0YTogeyBtc2cyOiBzaWduZWRNc2cyIH0sXG4gIH07XG4gIHJldHVybiB7XG4gICAgZnJvbTogcGFydHlJZFRvU2lnbmF0dXJlU2hhcmVUeXBlKHBhcnR5SWQpLFxuICAgIHRvOiBwYXJ0eUlkVG9TaWduYXR1cmVTaGFyZVR5cGUob3RoZXJTaWduZXJQYXJ0eUlkKSxcbiAgICBzaGFyZTogSlNPTi5zdHJpbmdpZnkoc2hhcmUpLFxuICB9O1xufVxuXG4vKipcbiAqIFZlcmlmaWVzIHRoZSBwZWVyJ3MgcmVyYW5kIHJvdW5kLTIgUEdQIHNpZ25hdHVyZSBhbmQgcmV0dXJucyB0aGUgcmF3IGRlc2VyaWFsaXplZFxuICogbWVzc2FnZSByZWFkeSBmb3IgYFJlZFBhbGxhc1JlcmFuZC5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzYC4gQWZ0ZXIgdGhpcyBleGNoYW5nZVxuICogYm90aCBwYXJ0aWVzIHJlYWQgdGhlIHJlcmFuZG9taXplZCBrZXlzaGFyZSB2aWEgYGdldFJlcmFuZG9taXplZEtleVNoYXJlKClgIGFuZFxuICogZmVlZCBpdCBpbnRvIGBSZWRQYWxsYXNEU0cuaW5pdERzZ2AuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2ZXJpZnlQZWVyUmVyYW5kTWVzc2FnZVJvdW5kVHdvKFxuICBwYXJzZWRSb3VuZDJPdXRwdXQ6IFJlZHBhbGxhc01QQ3YyUmVyYW5kU2hhcmVSb3VuZDJPdXRwdXQsXG4gIHBlZXJHcGdLZXk6IG9wZW5wZ3AuS2V5LFxuICBwZWVyUGFydHlJZDogTVBDdjJQYXJ0aWVzRW51bSA9IE1QQ3YyUGFydGllc0VudW0uQklUR09cbik6IFByb21pc2U8UmVkUGFsbGFzTVBTVHlwZXMuRGVzZXJpYWxpemVkTWVzc2FnZT4ge1xuICBjb25zdCByYXdCeXRlcyA9IGF3YWl0IFJlZFBhbGxhc01QU0NvbW1zLnZlcmlmeU1wc01lc3NhZ2UocGFyc2VkUm91bmQyT3V0cHV0LmRhdGEubXNnMiwgcGVlckdwZ0tleSk7XG4gIHJldHVybiB7XG4gICAgZnJvbTogcGVlclBhcnR5SWQsXG4gICAgcGF5bG9hZDogbmV3IFVpbnQ4QXJyYXkocmF3Qnl0ZXMpLFxuICB9O1xufVxuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mpcUtils.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/utils/mpcUtils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAwC,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAsB,QAAQ,EAAE,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAE/F,OAAO,EAEL,eAAe,EACf,oCAAoC,EACpC,4BAA4B,EAC7B,MAAM,iBAAiB,CAAC;AAIzB,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,8BAAsB,QAAQ;IAC5B,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC;IAC3B,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC;gBAElB,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS;cAKjC,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;cAiBjG,uBAAuB,CACrC,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,EACrC,YAAY,EAAE,iBAAiB,CAAC,MAAM,CAAC,EACvC,YAAY,EAAE,WAAW,EACzB,cAAc,EAAE,WAAW,EAC3B,OAAO,EAAE,OAAO,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,QAAQ,CAAC;IAsCpB;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE;QAC/B,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,8BAA8B,CAAC,EAAE,MAAM,CAAC;QACxC,YAAY,CAAC,EAAE,yBAAyB,CAAC;KAC1C,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAE7B;;;;;;OAMG;IACH,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,oCAAoC,GAAG,eAAe;
|
|
1
|
+
{"version":3,"file":"mpcUtils.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/utils/mpcUtils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAwC,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAsB,QAAQ,EAAE,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAE/F,OAAO,EAEL,eAAe,EACf,oCAAoC,EACpC,4BAA4B,EAC7B,MAAM,iBAAiB,CAAC;AAIzB,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,8BAAsB,QAAQ;IAC5B,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC;IAC3B,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC;gBAElB,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS;cAKjC,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;cAiBjG,uBAAuB,CACrC,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,EACrC,YAAY,EAAE,iBAAiB,CAAC,MAAM,CAAC,EACvC,YAAY,EAAE,WAAW,EACzB,cAAc,EAAE,WAAW,EAC3B,OAAO,EAAE,OAAO,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,QAAQ,CAAC;IAsCpB;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE;QAC/B,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,8BAA8B,CAAC,EAAE,MAAM,CAAC;QACxC,YAAY,CAAC,EAAE,yBAAyB,CAAC;KAC1C,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAE7B;;;;;;OAMG;IACH,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,oCAAoC,GAAG,eAAe;IAmTlG,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,4BAA4B,GAAG,MAAM,GAAG,SAAS;CAY/F"}
|
|
@@ -203,6 +203,7 @@ class MpcUtils {
|
|
|
203
203
|
nonce: params.nonce,
|
|
204
204
|
custodianTransactionId: params.custodianTransactionId,
|
|
205
205
|
receiveAddress: params.receiveAddress,
|
|
206
|
+
isWalletConnectTx: params.isWalletConnectTx,
|
|
206
207
|
};
|
|
207
208
|
case 'acceleration':
|
|
208
209
|
return {
|
|
@@ -333,4 +334,4 @@ class MpcUtils {
|
|
|
333
334
|
}
|
|
334
335
|
}
|
|
335
336
|
exports.MpcUtils = MpcUtils;
|
|
336
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXBjVXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vdXRpbHMvbXBjVXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0dBRUc7QUFDSCxvREFBNEI7QUFDNUIscUNBQWtGO0FBSWxGLGlEQUFnRTtBQU9oRSxzREFBd0Y7QUFDeEYsNENBQW9EO0FBU3BELE1BQXNCLFFBQVE7SUFJNUIsWUFBWSxLQUFnQixFQUFFLFFBQW1CO1FBQy9DLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFUyxLQUFLLENBQUMsbUJBQW1CLENBQUMsWUFBb0IsRUFBRSxVQUFxQztRQUM3RixNQUFNLG1CQUFtQixHQUFHLE1BQU0sSUFBQSxxQkFBVyxFQUFDO1lBQzVDLGNBQWMsRUFBRSxZQUFZO1NBQzdCLENBQUMsQ0FBQztRQUNILE1BQU0saUJBQWlCLEdBQUcsTUFBTSxJQUFBLHdCQUFjLEVBQUMsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFFdEYsTUFBTSxxQkFBcUIsR0FBRyxDQUM1QixNQUFNLElBQUEsaUJBQU8sRUFBQztZQUNaLE9BQU8sRUFBRSxtQkFBbUI7WUFDNUIsY0FBYyxFQUFFLENBQUMsaUJBQWlCLENBQUM7WUFDbkMsTUFBTSxFQUFFLE1BQU07U0FDZixDQUFDLENBQ0gsQ0FBQyxJQUFJLENBQUM7UUFFUCxPQUFPLHFCQUFxQixDQUFDO0lBQy9CLENBQUM7SUFFUyxLQUFLLENBQUMsdUJBQXVCLENBQ3JDLFVBQXFDLEVBQ3JDLFlBQXVDLEVBQ3ZDLFlBQXlCLEVBQ3pCLGNBQTJCLEVBQzNCLE9BQWdCLEVBQ2hCLFVBQW1CO1FBRW5CLE1BQU0sUUFBUSxHQUFHLENBQUMsTUFBTSxJQUFBLGdDQUFpQixFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMs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UUFDcEcsSUFBSSxlQUFLLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7WUFDL0IsTUFBTSxZQUFZLEdBQUcsZUFBSyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNoRCxTQUFTLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUM7UUFDMUMsQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFDLFNBQVMsQ0FBQztJQUM3QixDQUFDO0NBQ0Y7QUExWkQsNEJBMFpDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgZGVjcnlwdCwgcmVhZE1lc3NhZ2UsIHJlYWRQcml2YXRlS2V5LCBTZXJpYWxpemVkS2V5UGFpciB9IGZyb20gJ29wZW5wZ3AnO1xuaW1wb3J0IHsgSUJhc2VDb2luLCBLZXljaGFpbnNUcmlwbGV0IH0gZnJvbSAnLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnLi4vYml0Z29CYXNlJztcbmltcG9ydCB7IEFkZEtleWNoYWluT3B0aW9ucywgS2V5Y2hhaW4sIEtleVR5cGUsIFdlYmF1dGhuS2V5RW5jcnlwdGlvbkluZm8gfSBmcm9tICcuLi9rZXljaGFpbic7XG5pbXBvcnQgeyBlbmNyeXB0VGV4dCwgZ2V0Qml0Z29HcGdQdWJLZXkgfSBmcm9tICcuL29wZW5ncGdVdGlscyc7XG5pbXBvcnQge1xuICBJbnRlbnRSZWNpcGllbnQsXG4gIFBvcHVsYXRlZEludGVudCxcbiAgUHJlYnVpbGRUcmFuc2FjdGlvbldpdGhJbnRlbnRPcHRpb25zLFxuICBUb2tlblRyYW5zZmVyUmVjaXBpZW50UGFyYW1zLFxufSBmcm9tICcuL3Rzcy9iYXNlVHlwZXMnO1xuaW1wb3J0IHsgZW52UmVxdWlyZXNCaXRnb1B1YkdwZ0tleUNvbmZpZywgaXNCaXRnb01wY1B1YktleSB9IGZyb20gJy4uL3Rzcy9iaXRnb1B1YktleXMnO1xuaW1wb3J0IHsgY29pbnMsIE5ldHdvcmtUeXBlIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1wY0tleVNoYXJlIHtcbiAgcHVibGljU2hhcmU6IHN0cmluZztcbiAgcHJpdmF0ZVNoYXJlOiBzdHJpbmc7XG4gIHByaXZhdGVTaGFyZVByb29mPzogc3RyaW5nO1xuICB2c3NQcm9vZj86IHN0cmluZztcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1wY1V0aWxzIHtcbiAgcHJvdGVjdGVkIGJpdGdvOiBCaXRHb0Jhc2U7XG4gIHByb3RlY3RlZCBiYXNlQ29pbjogSUJhc2VDb2luO1xuXG4gIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIGJhc2VDb2luOiBJQmFzZUNvaW4pIHtcbiAgICB0aGlzLmJpdGdvID0gYml0Z287XG4gICAgdGhpcy5iYXNlQ29pbiA9IGJhc2VDb2luO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGRlY3J5cHRQcml2YXRlU2hhcmUocHJpdmF0ZVNoYXJlOiBzdHJpbmcsIHVzZXJHcGdLZXk6IFNlcmlhbGl6ZWRLZXlQYWlyPHN0cmluZz4pOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHByaXZhdGVTaGFyZU1lc3NhZ2UgPSBhd2FpdCByZWFkTWVzc2FnZSh7XG4gICAgICBhcm1vcmVkTWVzc2FnZTogcHJpdmF0ZVNoYXJlLFxuICAgIH0pO1xuICAgIGNvbnN0IHVzZXJHcGdQcml2YXRlS2V5ID0gYXdhaXQgcmVhZFByaXZhdGVLZXkoeyBhcm1vcmVkS2V5OiB1c2VyR3BnS2V5LnByaXZhdGVLZXkgfSk7XG5cbiAgICBjb25zdCBkZWNyeXB0ZWRQcml2YXRlU2hhcmUgPSAoXG4gICAgICBhd2FpdCBkZWNyeXB0KHtcbiAgICAgICAgbWVzc2FnZTogcHJpdmF0ZVNoYXJlTWVzc2FnZSxcbiAgICAgICAgZGVjcnlwdGlvbktleXM6IFt1c2VyR3BnUHJpdmF0ZUtleV0sXG4gICAgICAgIGZvcm1hdDogJ3V0ZjgnLFxuICAgICAgfSlcbiAgICApLmRhdGE7XG5cbiAgICByZXR1cm4gZGVjcnlwdGVkUHJpdmF0ZVNoYXJlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGNyZWF0ZUJpdGdvS2V5Y2hhaW5JbldQKFxuICAgIHVzZXJHcGdLZXk6IFNlcmlhbGl6ZWRLZXlQYWlyPHN0cmluZz4sXG4gICAgYmFja3VwR3BnS2V5OiBTZXJpYWxpemVkS2V5UGFpcjxzdHJpbmc+LFxuICAgIHVzZXJLZXlTaGFyZTogTXBjS2V5U2hhcmUsXG4gICAgYmFja3VwS2V5U2hhcmU6IE1wY0tleVNoYXJlLFxuICAgIGtleVR5cGU6IEtleVR5cGUsXG4gICAgZW50ZXJwcmlzZT86IHN0cmluZ1xuICApOiBQcm9taXNlPEtleWNoYWluPiB7XG4gICAgY29uc3QgYml0Z29LZXkgPSAoYXdhaXQgZ2V0Qml0Z29HcGdQdWJLZXkodGhpcy5iaXRnbykpLm1wY1YxO1xuICAgIGlmIChlbnZSZXF1aXJlc0JpdGdvUHViR3BnS2V5Q29uZmlnKHRoaXMuYml0Z28uZ2V0RW52KCkpKSB7XG4gICAgICAvLyBFbnN1cmUgdGhlIHB1YmxpYyBrZXkgaXMgb25lIG9mIHRoZSBleHBlY3RlZCBCaXRHbyBwdWJsaWMga2V5cyB3aGVuIGluIHRlc3Qgb3IgcHJvZC5cbiAgICAgIGFzc2VydChpc0JpdGdvTXBjUHViS2V5KGJpdGdvS2V5LmFybW9yKCksICdtcGN2MScpLCAnSW52YWxpZCBCaXRHbyBHUEcgcHVibGljIGtleScpO1xuICAgIH1cbiAgICBjb25zdCBlbmNVc2VyVG9CaXRHb01lc3NhZ2UgPSBhd2FpdCBlbmNyeXB0VGV4dCh1c2VyS2V5U2hhcmUucHJpdmF0ZVNoYXJlLCBiaXRnb0tleSk7XG4gICAgY29uc3QgZW5jQmFja3VwVG9CaXRHb01lc3NhZ2UgPSBhd2FpdCBlbmNyeXB0VGV4dChiYWNrdXBLZXlTaGFyZS5wcml2YXRlU2hhcmUsIGJpdGdvS2V5KTtcblxuICAgIGNvbnN0IGNyZWF0ZUJpdEdvTVBDUGFyYW1zOiBBZGRLZXljaGFpbk9wdGlvbnMgPSB7XG4gICAgICBrZXlUeXBlLFxuICAgICAgc291cmNlOiAnYml0Z28nLFxuICAgICAga2V5U2hhcmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tOiAndXNlcicsXG4gICAgICAgICAgdG86ICdiaXRnbycsXG4gICAgICAgICAgcHVibGljU2hhcmU6IHVzZXJLZXlTaGFyZS5wdWJsaWNTaGFyZSxcbiAgICAgICAgICBwcml2YXRlU2hhcmU6IGVuY1VzZXJUb0JpdEdvTWVzc2FnZSxcbiAgICAgICAgICBwcml2YXRlU2hhcmVQcm9vZjogdXNlcktleVNoYXJlLnByaXZhdGVTaGFyZVByb29mLFxuICAgICAgICAgIHZzc1Byb29mOiB1c2VyS2V5U2hhcmUudnNzUHJvb2YsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tOiAnYmFja3VwJyxcbiAgICAgICAgICB0bzogJ2JpdGdvJyxcbiAgICAgICAgICBwdWJsaWNTaGFyZTogYmFja3VwS2V5U2hhcmUucHVibGljU2hhcmUsXG4gICAgICAgICAgcHJpdmF0ZVNoYXJlOiBlbmNCYWNrdXBUb0JpdEdvTWVzc2FnZSxcbiAgICAgICAgICBwcml2YXRlU2hhcmVQcm9vZjogYmFja3VwS2V5U2hhcmUucHJpdmF0ZVNoYXJlUHJvb2YsXG4gICAgICAgICAgdnNzUHJvb2Y6IGJhY2t1cEtleVNoYXJlLnZzc1Byb29mLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHVzZXJHUEdQdWJsaWNLZXk6IHVzZXJHcGdLZXkucHVibGljS2V5LFxuICAgICAgYmFja3VwR1BHUHVibGljS2V5OiBiYWNrdXBHcGdLZXkucHVibGljS2V5LFxuICAgICAgZW50ZXJwcmlzZTogZW50ZXJwcmlzZSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYmFzZUNvaW4ua2V5Y2hhaW5zKCkuYWRkKGNyZWF0ZUJpdEdvTVBDUGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIFVzZXIsIEJhY2t1cCwgYW5kIEJpdEdvIE1QQyBLZXljaGFpbnMuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMucGFzc3BocmFzZSAtIHBhc3NwaHJhc2UgdXNlZCB0byBlbmNyeXB0IHNpZ25pbmcgbWF0ZXJpYWxzIGNyZWF0ZWQgZm9yIFVzZXIgYW5kIEJhY2t1cFxuICAgKiBAcGFyYW0gcGFyYW1zLmVudGVycHJpc2UgLSBvcHRpb25hbCBlbnRlcnByaXNlIGlkIHRoYXQgd2lsbCBiZSBhdHRhY2hlZCB0byB0aGUgQml0R28gS2V5Y2hhaW5cbiAgICogQHBhcmFtIHBhcmFtcy5vcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGUgLSBvcHRpb25hbCBlbmNyeXB0aW9uIGNvZGUgdXNlZCB0byByZXNldCB0aGUgdXNlcidzIHBhc3N3b3JkLCBpZiBhYnNlbnQsIHBhc3N3b3JkIHJlY292ZXJ5IHdpbGwgbm90IHdvcmtcbiAgICovXG4gIGFic3RyYWN0IGNyZWF0ZUtleWNoYWlucyhwYXJhbXM6IHtcbiAgICBwYXNzcGhyYXNlOiBzdHJpbmc7XG4gICAgZW50ZXJwcmlzZT86IHN0cmluZztcbiAgICBvcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGU/OiBzdHJpbmc7XG4gICAgd2ViYXV0aG5JbmZvPzogV2ViYXV0aG5LZXlFbmNyeXB0aW9uSW5mbztcbiAgfSk6IFByb21pc2U8S2V5Y2hhaW5zVHJpcGxldD47XG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gd291bGQgYmUgcmVzcG9uc2libGUgZm9yIHBvcHVsYXRpbmcgaW50ZW50c1xuICAgKiBiYXNlZCBvbiB0aGUgdHlwZSBvZiBjb2luIC8gc2lnIHNjaGVtZSB0aGUgY29pbiB1c2VzXG4gICAqIEBwYXJhbSB7SUJhc2VDb2lufSBiYXNlQ29pblxuICAgKiBAcGFyYW0ge1ByZWJ1aWxkVHJhbnNhY3Rpb25XaXRoSW50ZW50T3B0aW9uc30gcGFyYW1zXG4gICAqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn1cbiAgICovXG4gIHBvcHVsYXRlSW50ZW50KGJhc2VDb2luOiBJQmFzZUNvaW4sIHBhcmFtczogUHJlYnVpbGRUcmFuc2FjdGlvbldpdGhJbnRlbnRPcHRpb25zKTogUG9wdWxhdGVkSW50ZW50IHtcbiAgICBjb25zdCBjaGFpbiA9IHRoaXMuYmFzZUNvaW4uZ2V0Q2hhaW4oKTtcblxuICAgIGlmIChwYXJhbXMuaW50ZW50VHlwZSA9PT0gJ2N1c3RvbVR4JyAmJiBiYXNlQ29pbi5nZXRGYW1pbHkoKSA9PT0gJ3NvbCcpIHtcbiAgICAgIGNvbnN0IGhhc1NvbEluc3RydWN0aW9ucyA9IHBhcmFtcy5zb2xJbnN0cnVjdGlvbnMgJiYgcGFyYW1zLnNvbEluc3RydWN0aW9ucy5sZW5ndGggPiAwO1xuICAgICAgY29uc3QgaGFzVmVyc2lvbmVkRGF0YSA9XG4gICAgICAgIHBhcmFtcy5zb2xWZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGEgJiZcbiAgICAgICAgcGFyYW1zLnNvbFZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YS52ZXJzaW9uZWRJbnN0cnVjdGlvbnMgJiZcbiAgICAgICAgcGFyYW1zLnNvbFZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YS52ZXJzaW9uZWRJbnN0cnVjdGlvbnMubGVuZ3RoID4gMDtcblxuICAgICAgYXNzZXJ0KFxuICAgICAgICBoYXNTb2xJbnN0cnVjdGlvbnMgfHwgaGFzVmVyc2lvbmVkRGF0YSxcbiAgICAgICAgYCdzb2xJbnN0cnVjdGlvbnMnIG9yICdzb2xWZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGEnIGlzIHJlcXVpcmVkIGZvciBjdXN0b21UeCBpbnRlbnRgXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChwYXJhbXMuaW50ZW50VHlwZSA9PT0gJ2N1c3RvbVR4JyAmJiBiYXNlQ29pbi5nZXRGYW1pbHkoKSA9PT0gJ2FwdCcpIHtcbiAgICAgIGFzc2VydChcbiAgICAgICAgcGFyYW1zLmFwdG9zQ3VzdG9tVHJhbnNhY3Rpb25QYXJhbXMsXG4gICAgICAgIGAnYXB0b3NDdXN0b21UcmFuc2FjdGlvblBhcmFtcycgaXMgYSByZXF1aXJlZCBwYXJhbWV0ZXIgZm9yIGN1c3RvbVR4IGludGVudGBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgW1xuICAgICAgICAndHJhbnNmZXJBY2NlcHQnLFxuICAgICAgICAndHJhbnNmZXJSZWplY3QnLFxuICAgICAgICAnY29zaWduRGVsZWdhdGlvbkFjY2VwdCcsXG4gICAgICAgICdhbGxvY2F0aW9uQWxsb2NhdGUnLFxuICAgICAgICAnY2FudG9uRW5kSW52ZXN0b3JPbmJvYXJkaW5nQWNjZXB0JyxcbiAgICAgICAgJ2NhbnRvbkVuZEludmVzdG9yT25ib2FyZGluZ1JlamVjdCcsXG4gICAgICBdLmluY2x1ZGVzKHBhcmFtcy5pbnRlbnRUeXBlKSAmJlxuICAgICAgYmFzZUNvaW4uZ2V0RmFtaWx5KCkgPT09ICdjYW50b24nXG4gICAgKSB7XG4gICAgICBhc3NlcnQocGFyYW1zLnR4UmVxdWVzdElkLCBgJ3R4UmVxdWVzdElkJyBpcyByZXF1aXJlZCBwYXJhbWV0ZXIgZm9yICR7cGFyYW1zLmludGVudFR5cGV9IGludGVudGApO1xuICAgIH1cblxuICAgIGlmIChwYXJhbXMuaW50ZW50VHlwZSA9PT0gJ2NhbnRvbkVuZEludmVzdG9yT25ib2FyZGluZ09mZmVyJykge1xuICAgICAgYXNzZXJ0KHBhcmFtcy5lbmRJbnZlc3RvclBhcnR5SWQsIGAnZW5kSW52ZXN0b3JQYXJ0eUlkJyBpcyByZXF1aXJlZCBwYXJhbWV0ZXIgZm9yICR7cGFyYW1zLmludGVudFR5cGV9IGludGVudGApO1xuICAgIH1cblxuICAgIGlmIChwYXJhbXMuaW50ZW50VHlwZSA9PT0gJ2NhbnRvbkVuZEludmVzdG9yT25ib2FyZGluZ1JlamVjdCcpIHtcbiAgICAgIGFzc2VydChwYXJhbXMucmVhc29uLCBgJ3JlYXNvbicgaXMgcmVxdWlyZWQgcGFyYW1ldGVyIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLmludGVudFR5cGUgPT09ICdjYW50b25QYXJ0aWNpcGFudE9uYm9hcmRpbmdSZXF1ZXN0Jykge1xuICAgICAgYXNzZXJ0KHBhcmFtcy5vcGVyYXRvciwgYCdvcGVyYXRvcicgaXMgcmVxdWlyZWQgcGFyYW1ldGVyIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgKTtcbiAgICAgIGFzc2VydChwYXJhbXMucHJvdmlkZXIsIGAncHJvdmlkZXInIGlzIHJlcXVpcmVkIHBhcmFtZXRlciBmb3IgJHtwYXJhbXMuaW50ZW50VHlwZX0gaW50ZW50YCk7XG4gICAgICBhc3NlcnQocGFyYW1zLmNvbXBsaWFuY2UsIGAnY29tcGxpYW5jZScgaXMgcmVxdWlyZWQgcGFyYW1ldGVyIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgKTtcbiAgICAgIGFzc2VydChwYXJhbXMucmVnaXN0cmFyLCBgJ3JlZ2lzdHJhcicgaXMgcmVxdWlyZWQgcGFyYW1ldGVyIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgKTtcbiAgICAgIGFzc2VydChwYXJhbXMuY2xpZW50T25ib2FyZGVyLCBgJ2NsaWVudE9uYm9hcmRlcicgaXMgcmVxdWlyZWQgcGFyYW1ldGVyIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBbJ3RyYW5zZmVyT2ZmZXJXaXRoZHJhd24nLCAnYWxsb2NhdGlvbk9mZmVyV2l0aGRyYXduJ10uaW5jbHVkZXMocGFyYW1zLmludGVudFR5cGUpICYmXG4gICAgICBiYXNlQ29pbi5nZXRGYW1pbHkoKSA9PT0gJ2NhbnRvbidcbiAgICApIHtcbiAgICAgIGFzc2VydChwYXJhbXMudHJhbnNmZXJPZmZlcklkLCBgJ3RyYW5zZmVyT2ZmZXJJZCcgaXMgcmVxdWlyZWQgcGFyYW1ldGVyIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLmludGVudFR5cGUgPT09ICdjYW50b25Db21tYW5kJykge1xuICAgICAgYXNzZXJ0KGJhc2VDb2luLmdldEZhbWlseSgpID09PSAnY2FudG9uJywgYCdjYW50b25Db21tYW5kJyBpbnRlbnQgaXMgb25seSBzdXBwb3J0ZWQgZm9yIHRoZSBjYW50b24gY29pbiBmYW1pbHlgKTtcblxuICAgICAgY29uc3QgeyBjYW50b25Db21tYW5kUGFyYW1zIH0gPSBwYXJhbXM7XG4gICAgICBhc3NlcnQoY2FudG9uQ29tbWFuZFBhcmFtcywgYCdjYW50b25Db21tYW5kUGFyYW1zJyBpcyByZXF1aXJlZCBmb3IgJHtwYXJhbXMuaW50ZW50VHlwZX0gaW50ZW50YCk7XG5cbiAgICAgIGNvbnN0IGlzUGxhaW5PYmplY3QgPSAodjogdW5rbm93bik6IGJvb2xlYW4gPT5cbiAgICAgICAgdiAhPT0gbnVsbCAmJiB2ICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIHYgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHYpO1xuXG4gICAgICBjb25zdCB7IGNvbW1hbmQsIGFjdEFzIH0gPSBjYW50b25Db21tYW5kUGFyYW1zO1xuICAgICAgYXNzZXJ0KGlzUGxhaW5PYmplY3QoY29tbWFuZCksIGAnY2FudG9uQ29tbWFuZFBhcmFtcy5jb21tYW5kJyBtdXN0IGJlIGEgbm9uLW51bGwgcGxhaW4gb2JqZWN0YCk7XG5cbiAgICAgIGNvbnN0IGhhc0NyZWF0ZSA9ICdDcmVhdGVDb21tYW5kJyBpbiBjb21tYW5kICYmIGlzUGxhaW5PYmplY3QoY29tbWFuZFsnQ3JlYXRlQ29tbWFuZCddKTtcbiAgICAgIGNvbnN0IGhhc0V4ZXJjaXNlID0gJ0V4ZXJjaXNlQ29tbWFuZCcgaW4gY29tbWFuZCAmJiBpc1BsYWluT2JqZWN0KGNvbW1hbmRbJ0V4ZXJjaXNlQ29tbWFuZCddKTtcbiAgICAgIGFzc2VydChcbiAgICAgICAgaGFzQ3JlYXRlICE9PSBoYXNFeGVyY2lzZSxcbiAgICAgICAgYCdjYW50b25Db21tYW5kUGFyYW1zLmNvbW1hbmQnIG11c3QgY29udGFpbiBleGFjdGx5IG9uZSBvZiBDcmVhdGVDb21tYW5kIG9yIEV4ZXJjaXNlQ29tbWFuZCBhcyBhIG5vbi1udWxsIHBsYWluIG9iamVjdGBcbiAgICAgICk7XG5cbiAgICAgIGFzc2VydChcbiAgICAgICAgQXJyYXkuaXNBcnJheShhY3RBcykgJiYgYWN0QXMubGVuZ3RoID4gMCAmJiBhY3RBcy5ldmVyeSgocCkgPT4gdHlwZW9mIHAgPT09ICdzdHJpbmcnICYmIHAudHJpbSgpICE9PSAnJyksXG4gICAgICAgIGAnY2FudG9uQ29tbWFuZFBhcmFtcy5hY3RBcycgbXVzdCBiZSBhIG5vbi1lbXB0eSBhcnJheSBvZiBub24tZW1wdHkgc3RyaW5ncyBmb3IgJHtwYXJhbXMuaW50ZW50VHlwZX0gaW50ZW50YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLmludGVudFR5cGUgPT09ICdmaW5hbGl6ZVVud3JhcCcpIHtcbiAgICAgIC8vIFdQIGF1dG8tY3JlYXRlcyBmaW5hbGl6ZVVud3JhcCBhdCBSRUFEWV9UT19GSU5BTElaRSAoQ0hBTE8tMTEzOSk7IHRoZSBjbGllbnRcbiAgICAgIC8vIG9ubHkgc2lnbnMgdGhlIFdQLWNyZWF0ZWQgdHhuUmVxdWVzdCDigJQgdGhlcmUgaXMgbm8gY2xpZW50LXNpZGUgY3JlYXRlIHBhdGguXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ZpbmFsaXplVW53cmFwIGludGVudHMgYXJlIGNyZWF0ZWQgYnkgV2FsbGV0IFBsYXRmb3JtOyBzaWduIHRoZSBXUC1jcmVhdGVkIHR4blJlcXVlc3QgaW5zdGVhZCcpO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgICFbXG4gICAgICAgICdhY2NlbGVyYXRpb24nLFxuICAgICAgICAnZmlsbE5vbmNlJyxcbiAgICAgICAgJ3RyYW5zZmVyVG9rZW4nLFxuICAgICAgICAndG9rZW5BcHByb3ZhbCcsXG4gICAgICAgICdjdXN0b21UeCcsXG4gICAgICAgICd0cmFuc2ZlckFjY2VwdCcsXG4gICAgICAgICd0cmFuc2ZlclJlamVjdCcsXG4gICAgICAgICd0cmFuc2Zlck9mZmVyV2l0aGRyYXduJyxcbiAgICAgICAgJ2Nvc2lnbkRlbGVnYXRpb25BY2NlcHQnLFxuICAgICAgICAnYWxsb2NhdGlvbkFsbG9jYXRlJyxcbiAgICAgICAgJ2FsbG9jYXRpb25PZmZlcldpdGhkcmF3bicsXG4gICAgICAgICdicmlkZ2VGdW5kcycsXG4gICAgICAgICdjYW50b25Db21tYW5kJyxcbiAgICAgICAgJ2NhbnRvbkVuZEludmVzdG9yT25ib2FyZGluZ09mZmVyJyxcbiAgICAgICAgJ2NhbnRvbkVuZEludmVzdG9yT25ib2FyZGluZ0FjY2VwdCcsXG4gICAgICAgICdjYW50b25FbmRJbnZlc3Rvck9uYm9hcmRpbmdSZWplY3QnLFxuICAgICAgICAnY2FudG9uUGFydGljaXBhbnRPbmJvYXJkaW5nUmVxdWVzdCcsXG4gICAgICAgICdkZWZpLWFwcHJvdmUnLFxuICAgICAgICAnZGVmaS1kZXBvc2l0JyxcbiAgICAgICAgJ2RlZmktd2l0aGRyYXcnLFxuICAgICAgICAnd3JhcC1uYXRpdmUnLFxuICAgICAgICAndW53cmFwLW5hdGl2ZScsXG4gICAgICAgICd3cmFwQXBwcm92ZScsXG4gICAgICAgICd3cmFwJyxcbiAgICAgICAgJ3Vud3JhcCcsXG4gICAgICBdLmluY2x1ZGVzKHBhcmFtcy5pbnRlbnRUeXBlKVxuICAgICkge1xuICAgICAgYXNzZXJ0KHBhcmFtcy5yZWNpcGllbnRzLCBgJ3JlY2lwaWVudHMnIGlzIGEgcmVxdWlyZWQgcGFyYW1ldGVyIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgKTtcbiAgICB9XG4gICAgY29uc3QgaW50ZW50UmVjaXBpZW50cyA9IHBhcmFtcy5yZWNpcGllbnRzPy5tYXAoKHJlY2lwaWVudCkgPT4ge1xuICAgICAgY29uc3QgZm9ybWF0dGVkUmVjaXBpZW50OiBJbnRlbnRSZWNpcGllbnQgPSB7XG4gICAgICAgIGFkZHJlc3M6IHsgYWRkcmVzczogcmVjaXBpZW50LmFkZHJlc3MgfSxcbiAgICAgICAgYW1vdW50OiB7IHZhbHVlOiBgJHtyZWNpcGllbnQuYW1vdW50fWAsIHN5bWJvbDogcmVjaXBpZW50LnRva2VuTmFtZSA/IHJlY2lwaWVudC50b2tlbk5hbWUgOiBjaGFpbiB9LFxuICAgICAgfTtcblxuICAgICAgaWYgKHJlY2lwaWVudC5kYXRhKSB7XG4gICAgICAgIGZvcm1hdHRlZFJlY2lwaWVudC5kYXRhID0gcmVjaXBpZW50LmRhdGE7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgdG9rZW5EYXRhIH0gPSByZWNpcGllbnQ7XG4gICAgICBpZiAodG9rZW5EYXRhICYmICh0b2tlbkRhdGEudG9rZW5Db250cmFjdEFkZHJlc3MgfHwgdG9rZW5EYXRhLnRva2VuTmFtZSkpIHtcbiAgICAgICAgLy8gdG9rZW4gcmVsYXRlZCByZWNpcGllbnQgZGF0YSBnZXRzIHZhbGlkYXRlZCBpbiBXUFxuICAgICAgICBpZiAoISh0b2tlbkRhdGEudG9rZW5UeXBlICYmIHRva2VuRGF0YS50b2tlblF1YW50aXR5KSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICd0b2tlbiB0eXBlIGFuZCBxdWFudGl0eSBpcyByZXF1aXJlZCB0byByZXF1ZXN0IGEgdHJhbnNhY3Rpb24gd2l0aCBpbnRlbnQgdG8gdHJhbnNmZXIgYSB0b2tlbidcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRva2VuRGF0YS50b2tlbk5hbWUgPSB0aGlzLmdldFRva2VuTmFtZShiYXNlQ29pbiwgdG9rZW5EYXRhKTtcbiAgICAgICAgaWYgKHRva2VuRGF0YS50b2tlbk5hbWUpIHtcbiAgICAgICAgICBmb3JtYXR0ZWRSZWNpcGllbnQuYW1vdW50LnN5bWJvbCA9IHRva2VuRGF0YS50b2tlbk5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgZm9ybWF0dGVkUmVjaXBpZW50LnRva2VuRGF0YSA9IHRva2VuRGF0YTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmb3JtYXR0ZWRSZWNpcGllbnQ7XG4gICAgfSk7XG5cbiAgICBjb25zdCBiYXNlSW50ZW50OiBQb3B1bGF0ZWRJbnRlbnQgPSB7XG4gICAgICBpbnRlbnRUeXBlOiBwYXJhbXMuaW50ZW50VHlwZSxcbiAgICAgIHNlcXVlbmNlSWQ6IHBhcmFtcy5zZXF1ZW5jZUlkLFxuICAgICAgY29tbWVudDogcGFyYW1zLmNvbW1lbnQsXG4gICAgICBub25jZTogcGFyYW1zLm5vbmNlLFxuICAgICAgcmVjaXBpZW50czogaW50ZW50UmVjaXBpZW50cyxcbiAgICAgIHRva2VuTmFtZTogcGFyYW1zLnRva2VuTmFtZSxcbiAgICAgIGlzVGVzdFRyYW5zYWN0aW9uOiBwYXJhbXMuaXNUZXN0VHJhbnNhY3Rpb24sXG4gICAgfTtcblxuICAgIGlmIChiYXNlQ29pbi5pc0VWTSgpICYmIGJhc2VDb2luLnN1cHBvcnRzVHNzKCkpIHtcbiAgICAgIHN3aXRjaCAocGFyYW1zLmludGVudFR5cGUpIHtcbiAgICAgICAgY2FzZSAncGF5bWVudCc6XG4gICAgICAgIGNhc2UgJ3RyYW5zZmVyVG9rZW4nOlxuICAgICAgICBjYXNlICdmaWxsTm9uY2UnOlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5iYXNlSW50ZW50LFxuICAgICAgICAgICAgc2VsZlNlbmQ6IHBhcmFtcy5zZWxmU2VuZCxcbiAgICAgICAgICAgIGZlZU9wdGlvbnM6IHBhcmFtcy5mZWVPcHRpb25zLFxuICAgICAgICAgICAgZmVlVG9rZW46IHBhcmFtcy5mZWVUb2tlbixcbiAgICAgICAgICAgIGhvcFBhcmFtczogcGFyYW1zLmhvcFBhcmFtcyxcbiAgICAgICAgICAgIGlzVHNzOiBwYXJhbXMuaXNUc3MsXG4gICAgICAgICAgICBub25jZTogcGFyYW1zLm5vbmNlLFxuICAgICAgICAgICAgY3VzdG9kaWFuVHJhbnNhY3Rpb25JZDogcGFyYW1zLmN1c3RvZGlhblRyYW5zYWN0aW9uSWQsXG4gICAgICAgICAgICByZWNlaXZlQWRkcmVzczogcGFyYW1zLnJlY2VpdmVBZGRyZXNzLFxuICAgICAgICAgIH07XG4gICAgICAgIGNhc2UgJ2FjY2VsZXJhdGlvbic6XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmJhc2VJbnRlbnQsXG4gICAgICAgICAgICB0eGlkOiBwYXJhbXMubG93RmVlVHhpZCxcbiAgICAgICAgICAgIHJlY2VpdmVBZGRyZXNzOiBwYXJhbXMucmVjZWl2ZUFkZHJlc3MsXG4gICAgICAgICAgICBmZWVPcHRpb25zOiBwYXJhbXMuZmVlT3B0aW9ucyxcbiAgICAgICAgICAgIGZlZVRva2VuOiBwYXJhbXMuZmVlVG9rZW4sXG4gICAgICAgICAgfTtcbiAgICAgICAgY2FzZSAndG9rZW5BcHByb3ZhbCc6XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmJhc2VJbnRlbnQsXG4gICAgICAgICAgICB0b2tlbk5hbWU6IHBhcmFtcy50b2tlbk5hbWUsXG4gICAgICAgICAgICBmZWVPcHRpb25zOiBwYXJhbXMuZmVlT3B0aW9ucyxcbiAgICAgICAgICAgIGZlZVRva2VuOiBwYXJhbXMuZmVlVG9rZW4sXG4gICAgICAgICAgfTtcbiAgICAgICAgY2FzZSAnYnJpZGdlRnVuZHMnOlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5iYXNlSW50ZW50LFxuICAgICAgICAgICAgYW1vdW50OiBwYXJhbXMuYW1vdW50LFxuICAgICAgICAgICAgZmVlT3B0aW9uczogcGFyYW1zLmZlZU9wdGlvbnMsXG4gICAgICAgICAgICBmZWVUb2tlbjogcGFyYW1zLmZlZVRva2VuLFxuICAgICAgICAgIH07XG4gICAgICAgIGNhc2UgJ2V4cG9ydCc6XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmJhc2VJbnRlbnQsXG4gICAgICAgICAgICBmZWVPcHRpb25zOiBwYXJhbXMuZmVlT3B0aW9ucyxcbiAgICAgICAgICAgIGZlZVRva2VuOiBwYXJhbXMuZmVlVG9rZW4sXG4gICAgICAgICAgICBub25jZTogcGFyYW1zLm5vbmNlLFxuICAgICAgICAgIH07XG4gICAgICAgIGNhc2UgJ2VuYWJsZVRva2VuJzpcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYmFzZUludGVudCxcbiAgICAgICAgICAgIGVuYWJsZVRva2VuczogcGFyYW1zLmVuYWJsZVRva2VucyxcbiAgICAgICAgICAgIGZlZU9wdGlvbnM6IHBhcmFtcy5mZWVPcHRpb25zLFxuICAgICAgICAgICAgZmVlVG9rZW46IHBhcmFtcy5mZWVUb2tlbixcbiAgICAgICAgICB9O1xuICAgICAgICBjYXNlICdkZWZpLWFwcHJvdmUnOlxuICAgICAgICBjYXNlICdkZWZpLWRlcG9zaXQnOiB7XG4gICAgICAgICAgYXNzZXJ0KHBhcmFtcy5kZWZpUGFyYW1zLCBgJ2RlZmlQYXJhbXMnIGlzIHJlcXVpcmVkIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYmFzZUludGVudCxcbiAgICAgICAgICAgIHZhdWx0SWQ6IHBhcmFtcy5kZWZpUGFyYW1zLnZhdWx0SWQsXG4gICAgICAgICAgICBhbW91bnQ6IHBhcmFtcy5kZWZpUGFyYW1zLmFtb3VudCxcbiAgICAgICAgICAgIC4uLihwYXJhbXMuZGVmaVBhcmFtcy5vcGVyYXRpb25JZCAmJiB7IG9wZXJhdGlvbklkOiBwYXJhbXMuZGVmaVBhcmFtcy5vcGVyYXRpb25JZCB9KSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ2RlZmktd2l0aGRyYXcnOiB7XG4gICAgICAgICAgYXNzZXJ0KHBhcmFtcy5kZWZpUGFyYW1zLCBgJ2RlZmlQYXJhbXMnIGlzIHJlcXVpcmVkIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYmFzZUludGVudCxcbiAgICAgICAgICAgIHZhdWx0SWQ6IHBhcmFtcy5kZWZpUGFyYW1zLnZhdWx0SWQsXG4gICAgICAgICAgICAvLyBEZWZpV2l0aGRyYXdJbnRlbnQgdXNlcyBzaGFyZVRva2VuQW1vdW50ICh2YXVsdCBzaGFyZXMsIGJhc2UgdW5pdHMpXG4gICAgICAgICAgICBzaGFyZVRva2VuQW1vdW50OiBwYXJhbXMuZGVmaVBhcmFtcy5hbW91bnQsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICd3cmFwLW5hdGl2ZSc6XG4gICAgICAgIGNhc2UgJ3Vud3JhcC1uYXRpdmUnOiB7XG4gICAgICAgICAgYXNzZXJ0KHBhcmFtcy5kZWZpUGFyYW1zLCBgJ2RlZmlQYXJhbXMnIGlzIHJlcXVpcmVkIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgKTtcbiAgICAgICAgICAvLyBXcmFwTmF0aXZlSW50ZW50IC8gVW53cmFwTmF0aXZlSW50ZW50IGNhcnJ5IGEgcGxhaW4gYGFtb3VudGAgKGJhc2UgdW5pdHNcbiAgICAgICAgICAvLyBvZiB0aGUgbmF0aXZlIGNvaW4gd2hlbiB3cmFwcGluZywgb2YgdGhlIHdyYXBwZWQgdG9rZW4gd2hlbiB1bndyYXBwaW5nKSxcbiAgICAgICAgICAvLyBub3QgdGhlIGBzaGFyZVRva2VuQW1vdW50YCB0aGF0IGRlZmktd2l0aGRyYXcgdXNlcyBmb3IgdmF1bHQgc2hhcmVzLlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5iYXNlSW50ZW50LFxuICAgICAgICAgICAgdmF1bHRJZDogcGFyYW1zLmRlZmlQYXJhbXMudmF1bHRJZCxcbiAgICAgICAgICAgIGFtb3VudDogcGFyYW1zLmRlZmlQYXJhbXMuYW1vdW50LFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnd3JhcEFwcHJvdmUnOlxuICAgICAgICBjYXNlICd3cmFwJzoge1xuICAgICAgICAgIGFzc2VydChwYXJhbXMud3JhcFBhcmFtcywgYCd3cmFwUGFyYW1zJyBpcyByZXF1aXJlZCBmb3IgJHtwYXJhbXMuaW50ZW50VHlwZX0gaW50ZW50YCk7XG4gICAgICAgICAgYXNzZXJ0KFxuICAgICAgICAgICAgdHlwZW9mIHBhcmFtcy53cmFwUGFyYW1zLnRva2VuTmFtZSA9PT0gJ3N0cmluZycgJiYgcGFyYW1zLndyYXBQYXJhbXMudG9rZW5OYW1lLmxlbmd0aCA+IDAsXG4gICAgICAgICAgICBgJ3dyYXBQYXJhbXMudG9rZW5OYW1lJyBpcyByZXF1aXJlZCBmb3IgJHtwYXJhbXMuaW50ZW50VHlwZX0gaW50ZW50YFxuICAgICAgICAgICk7XG4gICAgICAgICAgYXNzZXJ0KFxuICAgICAgICAgICAgdHlwZW9mIHBhcmFtcy53cmFwUGFyYW1zLmFtb3VudCA9PT0gJ3N0cmluZycgJiYgL15bMS05XVxcZCokLy50ZXN0KHBhcmFtcy53cmFwUGFyYW1zLmFtb3VudCksXG4gICAgICAgICAgICBgJ3dyYXBQYXJhbXMuYW1vdW50JyBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciBzdHJpbmcgZm9yICR7cGFyYW1zLmludGVudFR5cGV9IGludGVudGBcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5iYXNlSW50ZW50LFxuICAgICAgICAgICAgdG9rZW5OYW1lOiBwYXJhbXMud3JhcFBhcmFtcy50b2tlbk5hbWUsXG4gICAgICAgICAgICBhbW91bnQ6IHBhcmFtcy53cmFwUGFyYW1zLmFtb3VudCxcbiAgICAgICAgICAgIGZlZU9wdGlvbnM6IHBhcmFtcy5mZWVPcHRpb25zLFxuICAgICAgICAgICAgZmVlVG9rZW46IHBhcmFtcy5mZWVUb2tlbixcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3Vud3JhcCc6IHtcbiAgICAgICAgICBhc3NlcnQocGFyYW1zLnVud3JhcFBhcmFtcywgYCd1bndyYXBQYXJhbXMnIGlzIHJlcXVpcmVkIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgKTtcbiAgICAgICAgICBhc3NlcnQoXG4gICAgICAgICAgICB0eXBlb2YgcGFyYW1zLnVud3JhcFBhcmFtcy50b2tlbk5hbWUgPT09ICdzdHJpbmcnICYmIHBhcmFtcy51bndyYXBQYXJhbXMudG9rZW5OYW1lLmxlbmd0aCA+IDAsXG4gICAgICAgICAgICBgJ3Vud3JhcFBhcmFtcy50b2tlbk5hbWUnIGlzIHJlcXVpcmVkIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgXG4gICAgICAgICAgKTtcbiAgICAgICAgICBhc3NlcnQoXG4gICAgICAgICAgICB0eXBlb2YgcGFyYW1zLnVud3JhcFBhcmFtcy5hbW91bnQgPT09ICdzdHJpbmcnICYmIC9eWzEtOV1cXGQqJC8udGVzdChwYXJhbXMudW53cmFwUGFyYW1zLmFtb3VudCksXG4gICAgICAgICAgICBgJ3Vud3JhcFBhcmFtcy5hbW91bnQnIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIHN0cmluZyBmb3IgJHtwYXJhbXMuaW50ZW50VHlwZX0gaW50ZW50YFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmJhc2VJbnRlbnQsXG4gICAgICAgICAgICB0b2tlbk5hbWU6IHBhcmFtcy51bndyYXBQYXJhbXMudG9rZW5OYW1lLFxuICAgICAgICAgICAgYW1vdW50OiBwYXJhbXMudW53cmFwUGFyYW1zLmFtb3VudCxcbiAgICAgICAgICAgIGZlZU9wdGlvbnM6IHBhcmFtcy5mZWVPcHRpb25zLFxuICAgICAgICAgICAgZmVlVG9rZW46IHBhcmFtcy5mZWVUb2tlbixcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBpbnRlbnQgdHlwZSAke3BhcmFtcy5pbnRlbnRUeXBlfWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuYmFzZUNvaW4uc2V0Q29pblNwZWNpZmljRmllbGRzSW5JbnRlbnQoYmFzZUludGVudCwgcGFyYW1zKTtcblxuICAgIGlmIChwYXJhbXMuZmVlT3B0aW9ucyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5iYXNlSW50ZW50LFxuICAgICAgICBtZW1vOiBwYXJhbXMubWVtbz8udmFsdWUsXG4gICAgICAgIHRva2VuOiBwYXJhbXMudG9rZW5OYW1lLFxuICAgICAgICBlbmFibGVUb2tlbnM6IHBhcmFtcy5lbmFibGVUb2tlbnMsXG4gICAgICAgIGZlZU9wdGlvbnM6IHBhcmFtcy5mZWVPcHRpb25zLFxuICAgICAgICBmZWVUb2tlbjogcGFyYW1zLmZlZVRva2VuLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uYmFzZUludGVudCxcbiAgICAgIG1lbW86IHBhcmFtcy5tZW1vPy52YWx1ZSxcbiAgICAgIHRva2VuOiBwYXJhbXMudG9rZW5OYW1lLFxuICAgICAgZW5hYmxlVG9rZW5zOiBwYXJhbXMuZW5hYmxlVG9rZW5zLFxuICAgICAgZmVlVG9rZW46IHBhcmFtcy5mZWVUb2tlbixcbiAgICB9O1xuICB9XG5cbiAgZ2V0VG9rZW5OYW1lKGJhc2VDb2luOiBJQmFzZUNvaW4sIHRva2VuRGF0YTogVG9rZW5UcmFuc2ZlclJlY2lwaWVudFBhcmFtcyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRva2VuRGF0YS50b2tlbk5hbWUpIHtcbiAgICAgIHJldHVybiB0b2tlbkRhdGEudG9rZW5OYW1lO1xuICAgIH1cbiAgICBjb25zdCBuZXR3b3JrUHJlZml4ID0gYmFzZUNvaW4uZ2V0Q29uZmlnKCkubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5URVNUTkVUID8gJ3QnIDogJyc7XG4gICAgY29uc3QgdG9rZW5TdGF0aWNzS2V5ID0gYCR7bmV0d29ya1ByZWZpeH0ke2Jhc2VDb2luLmdldEZhbWlseSgpfToke3Rva2VuRGF0YS50b2tlbkNvbnRyYWN0QWRkcmVzc31gO1xuICAgIGlmIChjb2lucy5oYXModG9rZW5TdGF0aWNzS2V5KSkge1xuICAgICAgY29uc3QgdG9rZW5TdGF0aWNzID0gY29pbnMuZ2V0KHRva2VuU3RhdGljc0tleSk7XG4gICAgICB0b2tlbkRhdGEudG9rZW5OYW1lID0gdG9rZW5TdGF0aWNzLm5hbWU7XG4gICAgfVxuICAgIHJldHVybiB0b2tlbkRhdGEudG9rZW5OYW1lO1xuICB9XG59XG4iXX0=
|
|
337
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXBjVXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vdXRpbHMvbXBjVXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0dBRUc7QUFDSCxvREFBNEI7QUFDNUIscUNBQWtGO0FBSWxGLGlEQUFnRTtBQU9oRSxzREFBd0Y7QUFDeEYsNENBQW9EO0FBU3BELE1BQXNCLFFBQVE7SUFJNUIsWUFBWSxLQUFnQixFQUFFLFFBQW1CO1FBQy9DLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFUyxLQUFLLENBQUMsbUJBQW1CLENBQUMsWUFBb0IsRUFBRSxVQUFxQztRQUM3RixNQUFNLG1CQUFtQixHQUFHLE1BQU0sSUFBQSxxQkFBVyxFQUFDO1lBQzVDLGNBQWMsRUFBRSxZQUFZO1NBQzdCLENBQUMsQ0FBQztRQUNILE1BQU0saUJBQWlCLEdBQUcsTUFBTSxJQUFBLHdCQUFjLEVBQUMsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFFdEYsTUFBTSxxQkFBcUIsR0FBRyxDQUM1QixNQUFNLElBQUEsaUJBQU8sRUFBQztZQUNaLE9BQU8sRUFBRSxtQkFBbUI7WUFDNUIsY0FBYyxFQUFFLENBQUMsaUJBQWlCLENBQUM7WUFDbkMsTUFBTSxFQUFFLE1BQU07U0FDZixDQUFDLENBQ0gsQ0FBQyxJQUFJLENBQUM7UUFFUCxPQUFPLHFCQUFxQixDQUFDO0lBQy9CLENBQUM7SUFFUyxLQUFLLENBQUMsdUJBQXVCLENBQ3JDLFVBQXFDLEVBQ3JDLFlBQXVDLEVBQ3ZDLFlBQXlCLEVBQ3pCLGNBQTJCLEVBQzNCLE9BQWdCLEVBQ2hCLFVBQW1CO1FBRW5CLE1BQU0sUUFBUSxHQUFHLENBQUMsTUFBTSxJQUFBLGdDQUFpQixFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMs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QUFFLElBQUksU0FBUyxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDcEcsSUFBSSxlQUFLLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7WUFDL0IsTUFBTSxZQUFZLEdBQUcsZUFBSyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNoRCxTQUFTLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUM7UUFDMUMsQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFDLFNBQVMsQ0FBQztJQUM3QixDQUFDO0NBQ0Y7QUEzWkQsNEJBMlpDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgZGVjcnlwdCwgcmVhZE1lc3NhZ2UsIHJlYWRQcml2YXRlS2V5LCBTZXJpYWxpemVkS2V5UGFpciB9IGZyb20gJ29wZW5wZ3AnO1xuaW1wb3J0IHsgSUJhc2VDb2luLCBLZXljaGFpbnNUcmlwbGV0IH0gZnJvbSAnLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnLi4vYml0Z29CYXNlJztcbmltcG9ydCB7IEFkZEtleWNoYWluT3B0aW9ucywgS2V5Y2hhaW4sIEtleVR5cGUsIFdlYmF1dGhuS2V5RW5jcnlwdGlvbkluZm8gfSBmcm9tICcuLi9rZXljaGFpbic7XG5pbXBvcnQgeyBlbmNyeXB0VGV4dCwgZ2V0Qml0Z29HcGdQdWJLZXkgfSBmcm9tICcuL29wZW5ncGdVdGlscyc7XG5pbXBvcnQge1xuICBJbnRlbnRSZWNpcGllbnQsXG4gIFBvcHVsYXRlZEludGVudCxcbiAgUHJlYnVpbGRUcmFuc2FjdGlvbldpdGhJbnRlbnRPcHRpb25zLFxuICBUb2tlblRyYW5zZmVyUmVjaXBpZW50UGFyYW1zLFxufSBmcm9tICcuL3Rzcy9iYXNlVHlwZXMnO1xuaW1wb3J0IHsgZW52UmVxdWlyZXNCaXRnb1B1YkdwZ0tleUNvbmZpZywgaXNCaXRnb01wY1B1YktleSB9IGZyb20gJy4uL3Rzcy9iaXRnb1B1YktleXMnO1xuaW1wb3J0IHsgY29pbnMsIE5ldHdvcmtUeXBlIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1wY0tleVNoYXJlIHtcbiAgcHVibGljU2hhcmU6IHN0cmluZztcbiAgcHJpdmF0ZVNoYXJlOiBzdHJpbmc7XG4gIHByaXZhdGVTaGFyZVByb29mPzogc3RyaW5nO1xuICB2c3NQcm9vZj86IHN0cmluZztcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1wY1V0aWxzIHtcbiAgcHJvdGVjdGVkIGJpdGdvOiBCaXRHb0Jhc2U7XG4gIHByb3RlY3RlZCBiYXNlQ29pbjogSUJhc2VDb2luO1xuXG4gIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIGJhc2VDb2luOiBJQmFzZUNvaW4pIHtcbiAgICB0aGlzLmJpdGdvID0gYml0Z287XG4gICAgdGhpcy5iYXNlQ29pbiA9IGJhc2VDb2luO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGRlY3J5cHRQcml2YXRlU2hhcmUocHJpdmF0ZVNoYXJlOiBzdHJpbmcsIHVzZXJHcGdLZXk6IFNlcmlhbGl6ZWRLZXlQYWlyPHN0cmluZz4pOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHByaXZhdGVTaGFyZU1lc3NhZ2UgPSBhd2FpdCByZWFkTWVzc2FnZSh7XG4gICAgICBhcm1vcmVkTWVzc2FnZTogcHJpdmF0ZVNoYXJlLFxuICAgIH0pO1xuICAgIGNvbnN0IHVzZXJHcGdQcml2YXRlS2V5ID0gYXdhaXQgcmVhZFByaXZhdGVLZXkoeyBhcm1vcmVkS2V5OiB1c2VyR3BnS2V5LnByaXZhdGVLZXkgfSk7XG5cbiAgICBjb25zdCBkZWNyeXB0ZWRQcml2YXRlU2hhcmUgPSAoXG4gICAgICBhd2FpdCBkZWNyeXB0KHtcbiAgICAgICAgbWVzc2FnZTogcHJpdmF0ZVNoYXJlTWVzc2FnZSxcbiAgICAgICAgZGVjcnlwdGlvbktleXM6IFt1c2VyR3BnUHJpdmF0ZUtleV0sXG4gICAgICAgIGZvcm1hdDogJ3V0ZjgnLFxuICAgICAgfSlcbiAgICApLmRhdGE7XG5cbiAgICByZXR1cm4gZGVjcnlwdGVkUHJpdmF0ZVNoYXJlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGNyZWF0ZUJpdGdvS2V5Y2hhaW5JbldQKFxuICAgIHVzZXJHcGdLZXk6IFNlcmlhbGl6ZWRLZXlQYWlyPHN0cmluZz4sXG4gICAgYmFja3VwR3BnS2V5OiBTZXJpYWxpemVkS2V5UGFpcjxzdHJpbmc+LFxuICAgIHVzZXJLZXlTaGFyZTogTXBjS2V5U2hhcmUsXG4gICAgYmFja3VwS2V5U2hhcmU6IE1wY0tleVNoYXJlLFxuICAgIGtleVR5cGU6IEtleVR5cGUsXG4gICAgZW50ZXJwcmlzZT86IHN0cmluZ1xuICApOiBQcm9taXNlPEtleWNoYWluPiB7XG4gICAgY29uc3QgYml0Z29LZXkgPSAoYXdhaXQgZ2V0Qml0Z29HcGdQdWJLZXkodGhpcy5iaXRnbykpLm1wY1YxO1xuICAgIGlmIChlbnZSZXF1aXJlc0JpdGdvUHViR3BnS2V5Q29uZmlnKHRoaXMuYml0Z28uZ2V0RW52KCkpKSB7XG4gICAgICAvLyBFbnN1cmUgdGhlIHB1YmxpYyBrZXkgaXMgb25lIG9mIHRoZSBleHBlY3RlZCBCaXRHbyBwdWJsaWMga2V5cyB3aGVuIGluIHRlc3Qgb3IgcHJvZC5cbiAgICAgIGFzc2VydChpc0JpdGdvTXBjUHViS2V5KGJpdGdvS2V5LmFybW9yKCksICdtcGN2MScpLCAnSW52YWxpZCBCaXRHbyBHUEcgcHVibGljIGtleScpO1xuICAgIH1cbiAgICBjb25zdCBlbmNVc2VyVG9CaXRHb01lc3NhZ2UgPSBhd2FpdCBlbmNyeXB0VGV4dCh1c2VyS2V5U2hhcmUucHJpdmF0ZVNoYXJlLCBiaXRnb0tleSk7XG4gICAgY29uc3QgZW5jQmFja3VwVG9CaXRHb01lc3NhZ2UgPSBhd2FpdCBlbmNyeXB0VGV4dChiYWNrdXBLZXlTaGFyZS5wcml2YXRlU2hhcmUsIGJpdGdvS2V5KTtcblxuICAgIGNvbnN0IGNyZWF0ZUJpdEdvTVBDUGFyYW1zOiBBZGRLZXljaGFpbk9wdGlvbnMgPSB7XG4gICAgICBrZXlUeXBlLFxuICAgICAgc291cmNlOiAnYml0Z28nLFxuICAgICAga2V5U2hhcmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tOiAndXNlcicsXG4gICAgICAgICAgdG86ICdiaXRnbycsXG4gICAgICAgICAgcHVibGljU2hhcmU6IHVzZXJLZXlTaGFyZS5wdWJsaWNTaGFyZSxcbiAgICAgICAgICBwcml2YXRlU2hhcmU6IGVuY1VzZXJUb0JpdEdvTWVzc2FnZSxcbiAgICAgICAgICBwcml2YXRlU2hhcmVQcm9vZjogdXNlcktleVNoYXJlLnByaXZhdGVTaGFyZVByb29mLFxuICAgICAgICAgIHZzc1Byb29mOiB1c2VyS2V5U2hhcmUudnNzUHJvb2YsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tOiAnYmFja3VwJyxcbiAgICAgICAgICB0bzogJ2JpdGdvJyxcbiAgICAgICAgICBwdWJsaWNTaGFyZTogYmFja3VwS2V5U2hhcmUucHVibGljU2hhcmUsXG4gICAgICAgICAgcHJpdmF0ZVNoYXJlOiBlbmNCYWNrdXBUb0JpdEdvTWVzc2FnZSxcbiAgICAgICAgICBwcml2YXRlU2hhcmVQcm9vZjogYmFja3VwS2V5U2hhcmUucHJpdmF0ZVNoYXJlUHJvb2YsXG4gICAgICAgICAgdnNzUHJvb2Y6IGJhY2t1cEtleVNoYXJlLnZzc1Byb29mLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHVzZXJHUEdQdWJsaWNLZXk6IHVzZXJHcGdLZXkucHVibGljS2V5LFxuICAgICAgYmFja3VwR1BHUHVibGljS2V5OiBiYWNrdXBHcGdLZXkucHVibGljS2V5LFxuICAgICAgZW50ZXJwcmlzZTogZW50ZXJwcmlzZSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYmFzZUNvaW4ua2V5Y2hhaW5zKCkuYWRkKGNyZWF0ZUJpdEdvTVBDUGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIFVzZXIsIEJhY2t1cCwgYW5kIEJpdEdvIE1QQyBLZXljaGFpbnMuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMucGFzc3BocmFzZSAtIHBhc3NwaHJhc2UgdXNlZCB0byBlbmNyeXB0IHNpZ25pbmcgbWF0ZXJpYWxzIGNyZWF0ZWQgZm9yIFVzZXIgYW5kIEJhY2t1cFxuICAgKiBAcGFyYW0gcGFyYW1zLmVudGVycHJpc2UgLSBvcHRpb25hbCBlbnRlcnByaXNlIGlkIHRoYXQgd2lsbCBiZSBhdHRhY2hlZCB0byB0aGUgQml0R28gS2V5Y2hhaW5cbiAgICogQHBhcmFtIHBhcmFtcy5vcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGUgLSBvcHRpb25hbCBlbmNyeXB0aW9uIGNvZGUgdXNlZCB0byByZXNldCB0aGUgdXNlcidzIHBhc3N3b3JkLCBpZiBhYnNlbnQsIHBhc3N3b3JkIHJlY292ZXJ5IHdpbGwgbm90IHdvcmtcbiAgICovXG4gIGFic3RyYWN0IGNyZWF0ZUtleWNoYWlucyhwYXJhbXM6IHtcbiAgICBwYXNzcGhyYXNlOiBzdHJpbmc7XG4gICAgZW50ZXJwcmlzZT86IHN0cmluZztcbiAgICBvcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGU/OiBzdHJpbmc7XG4gICAgd2ViYXV0aG5JbmZvPzogV2ViYXV0aG5LZXlFbmNyeXB0aW9uSW5mbztcbiAgfSk6IFByb21pc2U8S2V5Y2hhaW5zVHJpcGxldD47XG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gd291bGQgYmUgcmVzcG9uc2libGUgZm9yIHBvcHVsYXRpbmcgaW50ZW50c1xuICAgKiBiYXNlZCBvbiB0aGUgdHlwZSBvZiBjb2luIC8gc2lnIHNjaGVtZSB0aGUgY29pbiB1c2VzXG4gICAqIEBwYXJhbSB7SUJhc2VDb2lufSBiYXNlQ29pblxuICAgKiBAcGFyYW0ge1ByZWJ1aWxkVHJhbnNhY3Rpb25XaXRoSW50ZW50T3B0aW9uc30gcGFyYW1zXG4gICAqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn1cbiAgICovXG4gIHBvcHVsYXRlSW50ZW50KGJhc2VDb2luOiBJQmFzZUNvaW4sIHBhcmFtczogUHJlYnVpbGRUcmFuc2FjdGlvbldpdGhJbnRlbnRPcHRpb25zKTogUG9wdWxhdGVkSW50ZW50IHtcbiAgICBjb25zdCBjaGFpbiA9IHRoaXMuYmFzZUNvaW4uZ2V0Q2hhaW4oKTtcblxuICAgIGlmIChwYXJhbXMuaW50ZW50VHlwZSA9PT0gJ2N1c3RvbVR4JyAmJiBiYXNlQ29pbi5nZXRGYW1pbHkoKSA9PT0gJ3NvbCcpIHtcbiAgICAgIGNvbnN0IGhhc1NvbEluc3RydWN0aW9ucyA9IHBhcmFtcy5zb2xJbnN0cnVjdGlvbnMgJiYgcGFyYW1zLnNvbEluc3RydWN0aW9ucy5sZW5ndGggPiAwO1xuICAgICAgY29uc3QgaGFzVmVyc2lvbmVkRGF0YSA9XG4gICAgICAgIHBhcmFtcy5zb2xWZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGEgJiZcbiAgICAgICAgcGFyYW1zLnNvbFZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YS52ZXJzaW9uZWRJbnN0cnVjdGlvbnMgJiZcbiAgICAgICAgcGFyYW1zLnNvbFZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YS52ZXJzaW9uZWRJbnN0cnVjdGlvbnMubGVuZ3RoID4gMDtcblxuICAgICAgYXNzZXJ0KFxuICAgICAgICBoYXNTb2xJbnN0cnVjdGlvbnMgfHwgaGFzVmVyc2lvbmVkRGF0YSxcbiAgICAgICAgYCdzb2xJbnN0cnVjdGlvbnMnIG9yICdzb2xWZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGEnIGlzIHJlcXVpcmVkIGZvciBjdXN0b21UeCBpbnRlbnRgXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChwYXJhbXMuaW50ZW50VHlwZSA9PT0gJ2N1c3RvbVR4JyAmJiBiYXNlQ29pbi5nZXRGYW1pbHkoKSA9PT0gJ2FwdCcpIHtcbiAgICAgIGFzc2VydChcbiAgICAgICAgcGFyYW1zLmFwdG9zQ3VzdG9tVHJhbnNhY3Rpb25QYXJhbXMsXG4gICAgICAgIGAnYXB0b3NDdXN0b21UcmFuc2FjdGlvblBhcmFtcycgaXMgYSByZXF1aXJlZCBwYXJhbWV0ZXIgZm9yIGN1c3RvbVR4IGludGVudGBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgW1xuICAgICAgICAndHJhbnNmZXJBY2NlcHQnLFxuICAgICAgICAndHJhbnNmZXJSZWplY3QnLFxuICAgICAgICAnY29zaWduRGVsZWdhdGlvbkFjY2VwdCcsXG4gICAgICAgICdhbGxvY2F0aW9uQWxsb2NhdGUnLFxuICAgICAgICAnY2FudG9uRW5kSW52ZXN0b3JPbmJvYXJkaW5nQWNjZXB0JyxcbiAgICAgICAgJ2NhbnRvbkVuZEludmVzdG9yT25ib2FyZGluZ1JlamVjdCcsXG4gICAgICBdLmluY2x1ZGVzKHBhcmFtcy5pbnRlbnRUeXBlKSAmJlxuICAgICAgYmFzZUNvaW4uZ2V0RmFtaWx5KCkgPT09ICdjYW50b24nXG4gICAgKSB7XG4gICAgICBhc3NlcnQocGFyYW1zLnR4UmVxdWVzdElkLCBgJ3R4UmVxdWVzdElkJyBpcyByZXF1aXJlZCBwYXJhbWV0ZXIgZm9yICR7cGFyYW1zLmludGVudFR5cGV9IGludGVudGApO1xuICAgIH1cblxuICAgIGlmIChwYXJhbXMuaW50ZW50VHlwZSA9PT0gJ2NhbnRvbkVuZEludmVzdG9yT25ib2FyZGluZ09mZmVyJykge1xuICAgICAgYXNzZXJ0KHBhcmFtcy5lbmRJbnZlc3RvclBhcnR5SWQsIGAnZW5kSW52ZXN0b3JQYXJ0eUlkJyBpcyByZXF1aXJlZCBwYXJhbWV0ZXIgZm9yICR7cGFyYW1zLmludGVudFR5cGV9IGludGVudGApO1xuICAgIH1cblxuICAgIGlmIChwYXJhbXMuaW50ZW50VHlwZSA9PT0gJ2NhbnRvbkVuZEludmVzdG9yT25ib2FyZGluZ1JlamVjdCcpIHtcbiAgICAgIGFzc2VydChwYXJhbXMucmVhc29uLCBgJ3JlYXNvbicgaXMgcmVxdWlyZWQgcGFyYW1ldGVyIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLmludGVudFR5cGUgPT09ICdjYW50b25QYXJ0aWNpcGFudE9uYm9hcmRpbmdSZXF1ZXN0Jykge1xuICAgICAgYXNzZXJ0KHBhcmFtcy5vcGVyYXRvciwgYCdvcGVyYXRvcicgaXMgcmVxdWlyZWQgcGFyYW1ldGVyIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgKTtcbiAgICAgIGFzc2VydChwYXJhbXMucHJvdmlkZXIsIGAncHJvdmlkZXInIGlzIHJlcXVpcmVkIHBhcmFtZXRlciBmb3IgJHtwYXJhbXMuaW50ZW50VHlwZX0gaW50ZW50YCk7XG4gICAgICBhc3NlcnQocGFyYW1zLmNvbXBsaWFuY2UsIGAnY29tcGxpYW5jZScgaXMgcmVxdWlyZWQgcGFyYW1ldGVyIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgKTtcbiAgICAgIGFzc2VydChwYXJhbXMucmVnaXN0cmFyLCBgJ3JlZ2lzdHJhcicgaXMgcmVxdWlyZWQgcGFyYW1ldGVyIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgKTtcbiAgICAgIGFzc2VydChwYXJhbXMuY2xpZW50T25ib2FyZGVyLCBgJ2NsaWVudE9uYm9hcmRlcicgaXMgcmVxdWlyZWQgcGFyYW1ldGVyIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBbJ3RyYW5zZmVyT2ZmZXJXaXRoZHJhd24nLCAnYWxsb2NhdGlvbk9mZmVyV2l0aGRyYXduJ10uaW5jbHVkZXMocGFyYW1zLmludGVudFR5cGUpICYmXG4gICAgICBiYXNlQ29pbi5nZXRGYW1pbHkoKSA9PT0gJ2NhbnRvbidcbiAgICApIHtcbiAgICAgIGFzc2VydChwYXJhbXMudHJhbnNmZXJPZmZlcklkLCBgJ3RyYW5zZmVyT2ZmZXJJZCcgaXMgcmVxdWlyZWQgcGFyYW1ldGVyIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLmludGVudFR5cGUgPT09ICdjYW50b25Db21tYW5kJykge1xuICAgICAgYXNzZXJ0KGJhc2VDb2luLmdldEZhbWlseSgpID09PSAnY2FudG9uJywgYCdjYW50b25Db21tYW5kJyBpbnRlbnQgaXMgb25seSBzdXBwb3J0ZWQgZm9yIHRoZSBjYW50b24gY29pbiBmYW1pbHlgKTtcblxuICAgICAgY29uc3QgeyBjYW50b25Db21tYW5kUGFyYW1zIH0gPSBwYXJhbXM7XG4gICAgICBhc3NlcnQoY2FudG9uQ29tbWFuZFBhcmFtcywgYCdjYW50b25Db21tYW5kUGFyYW1zJyBpcyByZXF1aXJlZCBmb3IgJHtwYXJhbXMuaW50ZW50VHlwZX0gaW50ZW50YCk7XG5cbiAgICAgIGNvbnN0IGlzUGxhaW5PYmplY3QgPSAodjogdW5rbm93bik6IGJvb2xlYW4gPT5cbiAgICAgICAgdiAhPT0gbnVsbCAmJiB2ICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIHYgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHYpO1xuXG4gICAgICBjb25zdCB7IGNvbW1hbmQsIGFjdEFzIH0gPSBjYW50b25Db21tYW5kUGFyYW1zO1xuICAgICAgYXNzZXJ0KGlzUGxhaW5PYmplY3QoY29tbWFuZCksIGAnY2FudG9uQ29tbWFuZFBhcmFtcy5jb21tYW5kJyBtdXN0IGJlIGEgbm9uLW51bGwgcGxhaW4gb2JqZWN0YCk7XG5cbiAgICAgIGNvbnN0IGhhc0NyZWF0ZSA9ICdDcmVhdGVDb21tYW5kJyBpbiBjb21tYW5kICYmIGlzUGxhaW5PYmplY3QoY29tbWFuZFsnQ3JlYXRlQ29tbWFuZCddKTtcbiAgICAgIGNvbnN0IGhhc0V4ZXJjaXNlID0gJ0V4ZXJjaXNlQ29tbWFuZCcgaW4gY29tbWFuZCAmJiBpc1BsYWluT2JqZWN0KGNvbW1hbmRbJ0V4ZXJjaXNlQ29tbWFuZCddKTtcbiAgICAgIGFzc2VydChcbiAgICAgICAgaGFzQ3JlYXRlICE9PSBoYXNFeGVyY2lzZSxcbiAgICAgICAgYCdjYW50b25Db21tYW5kUGFyYW1zLmNvbW1hbmQnIG11c3QgY29udGFpbiBleGFjdGx5IG9uZSBvZiBDcmVhdGVDb21tYW5kIG9yIEV4ZXJjaXNlQ29tbWFuZCBhcyBhIG5vbi1udWxsIHBsYWluIG9iamVjdGBcbiAgICAgICk7XG5cbiAgICAgIGFzc2VydChcbiAgICAgICAgQXJyYXkuaXNBcnJheShhY3RBcykgJiYgYWN0QXMubGVuZ3RoID4gMCAmJiBhY3RBcy5ldmVyeSgocCkgPT4gdHlwZW9mIHAgPT09ICdzdHJpbmcnICYmIHAudHJpbSgpICE9PSAnJyksXG4gICAgICAgIGAnY2FudG9uQ29tbWFuZFBhcmFtcy5hY3RBcycgbXVzdCBiZSBhIG5vbi1lbXB0eSBhcnJheSBvZiBub24tZW1wdHkgc3RyaW5ncyBmb3IgJHtwYXJhbXMuaW50ZW50VHlwZX0gaW50ZW50YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLmludGVudFR5cGUgPT09ICdmaW5hbGl6ZVVud3JhcCcpIHtcbiAgICAgIC8vIFdQIGF1dG8tY3JlYXRlcyBmaW5hbGl6ZVVud3JhcCBhdCBSRUFEWV9UT19GSU5BTElaRSAoQ0hBTE8tMTEzOSk7IHRoZSBjbGllbnRcbiAgICAgIC8vIG9ubHkgc2lnbnMgdGhlIFdQLWNyZWF0ZWQgdHhuUmVxdWVzdCDigJQgdGhlcmUgaXMgbm8gY2xpZW50LXNpZGUgY3JlYXRlIHBhdGguXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ZpbmFsaXplVW53cmFwIGludGVudHMgYXJlIGNyZWF0ZWQgYnkgV2FsbGV0IFBsYXRmb3JtOyBzaWduIHRoZSBXUC1jcmVhdGVkIHR4blJlcXVlc3QgaW5zdGVhZCcpO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgICFbXG4gICAgICAgICdhY2NlbGVyYXRpb24nLFxuICAgICAgICAnZmlsbE5vbmNlJyxcbiAgICAgICAgJ3RyYW5zZmVyVG9rZW4nLFxuICAgICAgICAndG9rZW5BcHByb3ZhbCcsXG4gICAgICAgICdjdXN0b21UeCcsXG4gICAgICAgICd0cmFuc2ZlckFjY2VwdCcsXG4gICAgICAgICd0cmFuc2ZlclJlamVjdCcsXG4gICAgICAgICd0cmFuc2Zlck9mZmVyV2l0aGRyYXduJyxcbiAgICAgICAgJ2Nvc2lnbkRlbGVnYXRpb25BY2NlcHQnLFxuICAgICAgICAnYWxsb2NhdGlvbkFsbG9jYXRlJyxcbiAgICAgICAgJ2FsbG9jYXRpb25PZmZlcldpdGhkcmF3bicsXG4gICAgICAgICdicmlkZ2VGdW5kcycsXG4gICAgICAgICdjYW50b25Db21tYW5kJyxcbiAgICAgICAgJ2NhbnRvbkVuZEludmVzdG9yT25ib2FyZGluZ09mZmVyJyxcbiAgICAgICAgJ2NhbnRvbkVuZEludmVzdG9yT25ib2FyZGluZ0FjY2VwdCcsXG4gICAgICAgICdjYW50b25FbmRJbnZlc3Rvck9uYm9hcmRpbmdSZWplY3QnLFxuICAgICAgICAnY2FudG9uUGFydGljaXBhbnRPbmJvYXJkaW5nUmVxdWVzdCcsXG4gICAgICAgICdkZWZpLWFwcHJvdmUnLFxuICAgICAgICAnZGVmaS1kZXBvc2l0JyxcbiAgICAgICAgJ2RlZmktd2l0aGRyYXcnLFxuICAgICAgICAnd3JhcC1uYXRpdmUnLFxuICAgICAgICAndW53cmFwLW5hdGl2ZScsXG4gICAgICAgICd3cmFwQXBwcm92ZScsXG4gICAgICAgICd3cmFwJyxcbiAgICAgICAgJ3Vud3JhcCcsXG4gICAgICBdLmluY2x1ZGVzKHBhcmFtcy5pbnRlbnRUeXBlKVxuICAgICkge1xuICAgICAgYXNzZXJ0KHBhcmFtcy5yZWNpcGllbnRzLCBgJ3JlY2lwaWVudHMnIGlzIGEgcmVxdWlyZWQgcGFyYW1ldGVyIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgKTtcbiAgICB9XG4gICAgY29uc3QgaW50ZW50UmVjaXBpZW50cyA9IHBhcmFtcy5yZWNpcGllbnRzPy5tYXAoKHJlY2lwaWVudCkgPT4ge1xuICAgICAgY29uc3QgZm9ybWF0dGVkUmVjaXBpZW50OiBJbnRlbnRSZWNpcGllbnQgPSB7XG4gICAgICAgIGFkZHJlc3M6IHsgYWRkcmVzczogcmVjaXBpZW50LmFkZHJlc3MgfSxcbiAgICAgICAgYW1vdW50OiB7IHZhbHVlOiBgJHtyZWNpcGllbnQuYW1vdW50fWAsIHN5bWJvbDogcmVjaXBpZW50LnRva2VuTmFtZSA/IHJlY2lwaWVudC50b2tlbk5hbWUgOiBjaGFpbiB9LFxuICAgICAgfTtcblxuICAgICAgaWYgKHJlY2lwaWVudC5kYXRhKSB7XG4gICAgICAgIGZvcm1hdHRlZFJlY2lwaWVudC5kYXRhID0gcmVjaXBpZW50LmRhdGE7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgdG9rZW5EYXRhIH0gPSByZWNpcGllbnQ7XG4gICAgICBpZiAodG9rZW5EYXRhICYmICh0b2tlbkRhdGEudG9rZW5Db250cmFjdEFkZHJlc3MgfHwgdG9rZW5EYXRhLnRva2VuTmFtZSkpIHtcbiAgICAgICAgLy8gdG9rZW4gcmVsYXRlZCByZWNpcGllbnQgZGF0YSBnZXRzIHZhbGlkYXRlZCBpbiBXUFxuICAgICAgICBpZiAoISh0b2tlbkRhdGEudG9rZW5UeXBlICYmIHRva2VuRGF0YS50b2tlblF1YW50aXR5KSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICd0b2tlbiB0eXBlIGFuZCBxdWFudGl0eSBpcyByZXF1aXJlZCB0byByZXF1ZXN0IGEgdHJhbnNhY3Rpb24gd2l0aCBpbnRlbnQgdG8gdHJhbnNmZXIgYSB0b2tlbidcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRva2VuRGF0YS50b2tlbk5hbWUgPSB0aGlzLmdldFRva2VuTmFtZShiYXNlQ29pbiwgdG9rZW5EYXRhKTtcbiAgICAgICAgaWYgKHRva2VuRGF0YS50b2tlbk5hbWUpIHtcbiAgICAgICAgICBmb3JtYXR0ZWRSZWNpcGllbnQuYW1vdW50LnN5bWJvbCA9IHRva2VuRGF0YS50b2tlbk5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgZm9ybWF0dGVkUmVjaXBpZW50LnRva2VuRGF0YSA9IHRva2VuRGF0YTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmb3JtYXR0ZWRSZWNpcGllbnQ7XG4gICAgfSk7XG5cbiAgICBjb25zdCBiYXNlSW50ZW50OiBQb3B1bGF0ZWRJbnRlbnQgPSB7XG4gICAgICBpbnRlbnRUeXBlOiBwYXJhbXMuaW50ZW50VHlwZSxcbiAgICAgIHNlcXVlbmNlSWQ6IHBhcmFtcy5zZXF1ZW5jZUlkLFxuICAgICAgY29tbWVudDogcGFyYW1zLmNvbW1lbnQsXG4gICAgICBub25jZTogcGFyYW1zLm5vbmNlLFxuICAgICAgcmVjaXBpZW50czogaW50ZW50UmVjaXBpZW50cyxcbiAgICAgIHRva2VuTmFtZTogcGFyYW1zLnRva2VuTmFtZSxcbiAgICAgIGlzVGVzdFRyYW5zYWN0aW9uOiBwYXJhbXMuaXNUZXN0VHJhbnNhY3Rpb24sXG4gICAgfTtcblxuICAgIGlmIChiYXNlQ29pbi5pc0VWTSgpICYmIGJhc2VDb2luLnN1cHBvcnRzVHNzKCkpIHtcbiAgICAgIHN3aXRjaCAocGFyYW1zLmludGVudFR5cGUpIHtcbiAgICAgICAgY2FzZSAncGF5bWVudCc6XG4gICAgICAgIGNhc2UgJ3RyYW5zZmVyVG9rZW4nOlxuICAgICAgICBjYXNlICdmaWxsTm9uY2UnOlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5iYXNlSW50ZW50LFxuICAgICAgICAgICAgc2VsZlNlbmQ6IHBhcmFtcy5zZWxmU2VuZCxcbiAgICAgICAgICAgIGZlZU9wdGlvbnM6IHBhcmFtcy5mZWVPcHRpb25zLFxuICAgICAgICAgICAgZmVlVG9rZW46IHBhcmFtcy5mZWVUb2tlbixcbiAgICAgICAgICAgIGhvcFBhcmFtczogcGFyYW1zLmhvcFBhcmFtcyxcbiAgICAgICAgICAgIGlzVHNzOiBwYXJhbXMuaXNUc3MsXG4gICAgICAgICAgICBub25jZTogcGFyYW1zLm5vbmNlLFxuICAgICAgICAgICAgY3VzdG9kaWFuVHJhbnNhY3Rpb25JZDogcGFyYW1zLmN1c3RvZGlhblRyYW5zYWN0aW9uSWQsXG4gICAgICAgICAgICByZWNlaXZlQWRkcmVzczogcGFyYW1zLnJlY2VpdmVBZGRyZXNzLFxuICAgICAgICAgICAgaXNXYWxsZXRDb25uZWN0VHg6IHBhcmFtcy5pc1dhbGxldENvbm5lY3RUeCxcbiAgICAgICAgICB9O1xuICAgICAgICBjYXNlICdhY2NlbGVyYXRpb24nOlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5iYXNlSW50ZW50LFxuICAgICAgICAgICAgdHhpZDogcGFyYW1zLmxvd0ZlZVR4aWQsXG4gICAgICAgICAgICByZWNlaXZlQWRkcmVzczogcGFyYW1zLnJlY2VpdmVBZGRyZXNzLFxuICAgICAgICAgICAgZmVlT3B0aW9uczogcGFyYW1zLmZlZU9wdGlvbnMsXG4gICAgICAgICAgICBmZWVUb2tlbjogcGFyYW1zLmZlZVRva2VuLFxuICAgICAgICAgIH07XG4gICAgICAgIGNhc2UgJ3Rva2VuQXBwcm92YWwnOlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5iYXNlSW50ZW50LFxuICAgICAgICAgICAgdG9rZW5OYW1lOiBwYXJhbXMudG9rZW5OYW1lLFxuICAgICAgICAgICAgZmVlT3B0aW9uczogcGFyYW1zLmZlZU9wdGlvbnMsXG4gICAgICAgICAgICBmZWVUb2tlbjogcGFyYW1zLmZlZVRva2VuLFxuICAgICAgICAgIH07XG4gICAgICAgIGNhc2UgJ2JyaWRnZUZ1bmRzJzpcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYmFzZUludGVudCxcbiAgICAgICAgICAgIGFtb3VudDogcGFyYW1zLmFtb3VudCxcbiAgICAgICAgICAgIGZlZU9wdGlvbnM6IHBhcmFtcy5mZWVPcHRpb25zLFxuICAgICAgICAgICAgZmVlVG9rZW46IHBhcmFtcy5mZWVUb2tlbixcbiAgICAgICAgICB9O1xuICAgICAgICBjYXNlICdleHBvcnQnOlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5iYXNlSW50ZW50LFxuICAgICAgICAgICAgZmVlT3B0aW9uczogcGFyYW1zLmZlZU9wdGlvbnMsXG4gICAgICAgICAgICBmZWVUb2tlbjogcGFyYW1zLmZlZVRva2VuLFxuICAgICAgICAgICAgbm9uY2U6IHBhcmFtcy5ub25jZSxcbiAgICAgICAgICB9O1xuICAgICAgICBjYXNlICdlbmFibGVUb2tlbic6XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmJhc2VJbnRlbnQsXG4gICAgICAgICAgICBlbmFibGVUb2tlbnM6IHBhcmFtcy5lbmFibGVUb2tlbnMsXG4gICAgICAgICAgICBmZWVPcHRpb25zOiBwYXJhbXMuZmVlT3B0aW9ucyxcbiAgICAgICAgICAgIGZlZVRva2VuOiBwYXJhbXMuZmVlVG9rZW4sXG4gICAgICAgICAgfTtcbiAgICAgICAgY2FzZSAnZGVmaS1hcHByb3ZlJzpcbiAgICAgICAgY2FzZSAnZGVmaS1kZXBvc2l0Jzoge1xuICAgICAgICAgIGFzc2VydChwYXJhbXMuZGVmaVBhcmFtcywgYCdkZWZpUGFyYW1zJyBpcyByZXF1aXJlZCBmb3IgJHtwYXJhbXMuaW50ZW50VHlwZX0gaW50ZW50YCk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmJhc2VJbnRlbnQsXG4gICAgICAgICAgICB2YXVsdElkOiBwYXJhbXMuZGVmaVBhcmFtcy52YXVsdElkLFxuICAgICAgICAgICAgYW1vdW50OiBwYXJhbXMuZGVmaVBhcmFtcy5hbW91bnQsXG4gICAgICAgICAgICAuLi4ocGFyYW1zLmRlZmlQYXJhbXMub3BlcmF0aW9uSWQgJiYgeyBvcGVyYXRpb25JZDogcGFyYW1zLmRlZmlQYXJhbXMub3BlcmF0aW9uSWQgfSksXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdkZWZpLXdpdGhkcmF3Jzoge1xuICAgICAgICAgIGFzc2VydChwYXJhbXMuZGVmaVBhcmFtcywgYCdkZWZpUGFyYW1zJyBpcyByZXF1aXJlZCBmb3IgJHtwYXJhbXMuaW50ZW50VHlwZX0gaW50ZW50YCk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmJhc2VJbnRlbnQsXG4gICAgICAgICAgICB2YXVsdElkOiBwYXJhbXMuZGVmaVBhcmFtcy52YXVsdElkLFxuICAgICAgICAgICAgLy8gRGVmaVdpdGhkcmF3SW50ZW50IHVzZXMgc2hhcmVUb2tlbkFtb3VudCAodmF1bHQgc2hhcmVzLCBiYXNlIHVuaXRzKVxuICAgICAgICAgICAgc2hhcmVUb2tlbkFtb3VudDogcGFyYW1zLmRlZmlQYXJhbXMuYW1vdW50LFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnd3JhcC1uYXRpdmUnOlxuICAgICAgICBjYXNlICd1bndyYXAtbmF0aXZlJzoge1xuICAgICAgICAgIGFzc2VydChwYXJhbXMuZGVmaVBhcmFtcywgYCdkZWZpUGFyYW1zJyBpcyByZXF1aXJlZCBmb3IgJHtwYXJhbXMuaW50ZW50VHlwZX0gaW50ZW50YCk7XG4gICAgICAgICAgLy8gV3JhcE5hdGl2ZUludGVudCAvIFVud3JhcE5hdGl2ZUludGVudCBjYXJyeSBhIHBsYWluIGBhbW91bnRgIChiYXNlIHVuaXRzXG4gICAgICAgICAgLy8gb2YgdGhlIG5hdGl2ZSBjb2luIHdoZW4gd3JhcHBpbmcsIG9mIHRoZSB3cmFwcGVkIHRva2VuIHdoZW4gdW53cmFwcGluZyksXG4gICAgICAgICAgLy8gbm90IHRoZSBgc2hhcmVUb2tlbkFtb3VudGAgdGhhdCBkZWZpLXdpdGhkcmF3IHVzZXMgZm9yIHZhdWx0IHNoYXJlcy5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYmFzZUludGVudCxcbiAgICAgICAgICAgIHZhdWx0SWQ6IHBhcmFtcy5kZWZpUGFyYW1zLnZhdWx0SWQsXG4gICAgICAgICAgICBhbW91bnQ6IHBhcmFtcy5kZWZpUGFyYW1zLmFtb3VudCxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3dyYXBBcHByb3ZlJzpcbiAgICAgICAgY2FzZSAnd3JhcCc6IHtcbiAgICAgICAgICBhc3NlcnQocGFyYW1zLndyYXBQYXJhbXMsIGAnd3JhcFBhcmFtcycgaXMgcmVxdWlyZWQgZm9yICR7cGFyYW1zLmludGVudFR5cGV9IGludGVudGApO1xuICAgICAgICAgIGFzc2VydChcbiAgICAgICAgICAgIHR5cGVvZiBwYXJhbXMud3JhcFBhcmFtcy50b2tlbk5hbWUgPT09ICdzdHJpbmcnICYmIHBhcmFtcy53cmFwUGFyYW1zLnRva2VuTmFtZS5sZW5ndGggPiAwLFxuICAgICAgICAgICAgYCd3cmFwUGFyYW1zLnRva2VuTmFtZScgaXMgcmVxdWlyZWQgZm9yICR7cGFyYW1zLmludGVudFR5cGV9IGludGVudGBcbiAgICAgICAgICApO1xuICAgICAgICAgIGFzc2VydChcbiAgICAgICAgICAgIHR5cGVvZiBwYXJhbXMud3JhcFBhcmFtcy5hbW91bnQgPT09ICdzdHJpbmcnICYmIC9eWzEtOV1cXGQqJC8udGVzdChwYXJhbXMud3JhcFBhcmFtcy5hbW91bnQpLFxuICAgICAgICAgICAgYCd3cmFwUGFyYW1zLmFtb3VudCcgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIgc3RyaW5nIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYmFzZUludGVudCxcbiAgICAgICAgICAgIHRva2VuTmFtZTogcGFyYW1zLndyYXBQYXJhbXMudG9rZW5OYW1lLFxuICAgICAgICAgICAgYW1vdW50OiBwYXJhbXMud3JhcFBhcmFtcy5hbW91bnQsXG4gICAgICAgICAgICBmZWVPcHRpb25zOiBwYXJhbXMuZmVlT3B0aW9ucyxcbiAgICAgICAgICAgIGZlZVRva2VuOiBwYXJhbXMuZmVlVG9rZW4sXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICd1bndyYXAnOiB7XG4gICAgICAgICAgYXNzZXJ0KHBhcmFtcy51bndyYXBQYXJhbXMsIGAndW53cmFwUGFyYW1zJyBpcyByZXF1aXJlZCBmb3IgJHtwYXJhbXMuaW50ZW50VHlwZX0gaW50ZW50YCk7XG4gICAgICAgICAgYXNzZXJ0KFxuICAgICAgICAgICAgdHlwZW9mIHBhcmFtcy51bndyYXBQYXJhbXMudG9rZW5OYW1lID09PSAnc3RyaW5nJyAmJiBwYXJhbXMudW53cmFwUGFyYW1zLnRva2VuTmFtZS5sZW5ndGggPiAwLFxuICAgICAgICAgICAgYCd1bndyYXBQYXJhbXMudG9rZW5OYW1lJyBpcyByZXF1aXJlZCBmb3IgJHtwYXJhbXMuaW50ZW50VHlwZX0gaW50ZW50YFxuICAgICAgICAgICk7XG4gICAgICAgICAgYXNzZXJ0KFxuICAgICAgICAgICAgdHlwZW9mIHBhcmFtcy51bndyYXBQYXJhbXMuYW1vdW50ID09PSAnc3RyaW5nJyAmJiAvXlsxLTldXFxkKiQvLnRlc3QocGFyYW1zLnVud3JhcFBhcmFtcy5hbW91bnQpLFxuICAgICAgICAgICAgYCd1bndyYXBQYXJhbXMuYW1vdW50JyBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciBzdHJpbmcgZm9yICR7cGFyYW1zLmludGVudFR5cGV9IGludGVudGBcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5iYXNlSW50ZW50LFxuICAgICAgICAgICAgdG9rZW5OYW1lOiBwYXJhbXMudW53cmFwUGFyYW1zLnRva2VuTmFtZSxcbiAgICAgICAgICAgIGFtb3VudDogcGFyYW1zLnVud3JhcFBhcmFtcy5hbW91bnQsXG4gICAgICAgICAgICBmZWVPcHRpb25zOiBwYXJhbXMuZmVlT3B0aW9ucyxcbiAgICAgICAgICAgIGZlZVRva2VuOiBwYXJhbXMuZmVlVG9rZW4sXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgaW50ZW50IHR5cGUgJHtwYXJhbXMuaW50ZW50VHlwZX1gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmJhc2VDb2luLnNldENvaW5TcGVjaWZpY0ZpZWxkc0luSW50ZW50KGJhc2VJbnRlbnQsIHBhcmFtcyk7XG5cbiAgICBpZiAocGFyYW1zLmZlZU9wdGlvbnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uYmFzZUludGVudCxcbiAgICAgICAgbWVtbzogcGFyYW1zLm1lbW8/LnZhbHVlLFxuICAgICAgICB0b2tlbjogcGFyYW1zLnRva2VuTmFtZSxcbiAgICAgICAgZW5hYmxlVG9rZW5zOiBwYXJhbXMuZW5hYmxlVG9rZW5zLFxuICAgICAgICBmZWVPcHRpb25zOiBwYXJhbXMuZmVlT3B0aW9ucyxcbiAgICAgICAgZmVlVG9rZW46IHBhcmFtcy5mZWVUb2tlbixcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmJhc2VJbnRlbnQsXG4gICAgICBtZW1vOiBwYXJhbXMubWVtbz8udmFsdWUsXG4gICAgICB0b2tlbjogcGFyYW1zLnRva2VuTmFtZSxcbiAgICAgIGVuYWJsZVRva2VuczogcGFyYW1zLmVuYWJsZVRva2VucyxcbiAgICAgIGZlZVRva2VuOiBwYXJhbXMuZmVlVG9rZW4sXG4gICAgfTtcbiAgfVxuXG4gIGdldFRva2VuTmFtZShiYXNlQ29pbjogSUJhc2VDb2luLCB0b2tlbkRhdGE6IFRva2VuVHJhbnNmZXJSZWNpcGllbnRQYXJhbXMpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICh0b2tlbkRhdGEudG9rZW5OYW1lKSB7XG4gICAgICByZXR1cm4gdG9rZW5EYXRhLnRva2VuTmFtZTtcbiAgICB9XG4gICAgY29uc3QgbmV0d29ya1ByZWZpeCA9IGJhc2VDb2luLmdldENvbmZpZygpLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuVEVTVE5FVCA/ICd0JyA6ICcnO1xuICAgIGNvbnN0IHRva2VuU3RhdGljc0tleSA9IGAke25ldHdvcmtQcmVmaXh9JHtiYXNlQ29pbi5nZXRGYW1pbHkoKX06JHt0b2tlbkRhdGEudG9rZW5Db250cmFjdEFkZHJlc3N9YDtcbiAgICBpZiAoY29pbnMuaGFzKHRva2VuU3RhdGljc0tleSkpIHtcbiAgICAgIGNvbnN0IHRva2VuU3RhdGljcyA9IGNvaW5zLmdldCh0b2tlblN0YXRpY3NLZXkpO1xuICAgICAgdG9rZW5EYXRhLnRva2VuTmFtZSA9IHRva2VuU3RhdGljcy5uYW1lO1xuICAgIH1cbiAgICByZXR1cm4gdG9rZW5EYXRhLnRva2VuTmFtZTtcbiAgfVxufVxuIl19
|
|
@@ -7,8 +7,11 @@
|
|
|
7
7
|
* Any change here must land identically in all layers, including firmware.
|
|
8
8
|
*/
|
|
9
9
|
/**
|
|
10
|
-
* Validates a SIWS message
|
|
11
|
-
*
|
|
10
|
+
* Validates a SIWS message per the Sign In With Solana ABNF grammar: the domain-bound
|
|
11
|
+
* sign-in template where the statement and every advanced field is optional (any
|
|
12
|
+
* subset, in canonical order, with strict value checks). Throws when the message is
|
|
13
|
+
* not strict UTF-8-representable or not a well-formed SIWS message; returns silently
|
|
14
|
+
* otherwise.
|
|
12
15
|
*/
|
|
13
16
|
export declare function validateSiwsMessage(message: string): void;
|
|
14
17
|
//# sourceMappingURL=siws.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siws.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/utils/siws.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAkEH
|
|
1
|
+
{"version":3,"file":"siws.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/utils/siws.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAkEH;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CA4FzD"}
|
|
@@ -69,8 +69,11 @@ function isSiwsDatetime(value) {
|
|
|
69
69
|
return offsetHour <= 23 && offsetMinute <= 59;
|
|
70
70
|
}
|
|
71
71
|
/**
|
|
72
|
-
* Validates a SIWS message
|
|
73
|
-
*
|
|
72
|
+
* Validates a SIWS message per the Sign In With Solana ABNF grammar: the domain-bound
|
|
73
|
+
* sign-in template where the statement and every advanced field is optional (any
|
|
74
|
+
* subset, in canonical order, with strict value checks). Throws when the message is
|
|
75
|
+
* not strict UTF-8-representable or not a well-formed SIWS message; returns silently
|
|
76
|
+
* otherwise.
|
|
74
77
|
*/
|
|
75
78
|
function validateSiwsMessage(message) {
|
|
76
79
|
const invalid = () => {
|
|
@@ -80,16 +83,12 @@ function validateSiwsMessage(message) {
|
|
|
80
83
|
throw new Error('message is not valid UTF-8');
|
|
81
84
|
}
|
|
82
85
|
const lines = message.replace(/\n+$/, '').split('\n');
|
|
83
|
-
if (lines.length <
|
|
86
|
+
if (lines.length < 2 || !lines[0].endsWith(SIWS_SUFFIX) || lines[0].length === SIWS_SUFFIX.length) {
|
|
84
87
|
invalid();
|
|
85
88
|
}
|
|
86
|
-
if (!isSiwsBase58Address(lines[1]) || lines[2] !== '') {
|
|
89
|
+
if (!isSiwsBase58Address(lines[1]) || (lines.length >= 3 && lines[2] !== '')) {
|
|
87
90
|
invalid();
|
|
88
91
|
}
|
|
89
|
-
let hasVersion = false;
|
|
90
|
-
let hasChainId = false;
|
|
91
|
-
let hasNonce = false;
|
|
92
|
-
let hasIssuedAt = false;
|
|
93
92
|
let hasField = false;
|
|
94
93
|
let inFields = false;
|
|
95
94
|
let inResources = false;
|
|
@@ -136,19 +135,16 @@ function validateSiwsMessage(message) {
|
|
|
136
135
|
if (value !== '1') {
|
|
137
136
|
invalid();
|
|
138
137
|
}
|
|
139
|
-
hasVersion = true;
|
|
140
138
|
break;
|
|
141
139
|
case SIWS_FIELD_CHAIN_ID:
|
|
142
140
|
if (!SIWS_CHAIN_IDS.includes(value)) {
|
|
143
141
|
invalid();
|
|
144
142
|
}
|
|
145
|
-
hasChainId = true;
|
|
146
143
|
break;
|
|
147
144
|
case SIWS_FIELD_NONCE:
|
|
148
145
|
if (!isSiwsAlnum(value)) {
|
|
149
146
|
invalid();
|
|
150
147
|
}
|
|
151
|
-
hasNonce = true;
|
|
152
148
|
break;
|
|
153
149
|
case SIWS_FIELD_ISSUED_AT:
|
|
154
150
|
case SIWS_FIELD_EXPIRATION_TIME:
|
|
@@ -156,9 +152,6 @@ function validateSiwsMessage(message) {
|
|
|
156
152
|
if (!isSiwsDatetime(value)) {
|
|
157
153
|
invalid();
|
|
158
154
|
}
|
|
159
|
-
if (field === SIWS_FIELD_ISSUED_AT) {
|
|
160
|
-
hasIssuedAt = true;
|
|
161
|
-
}
|
|
162
155
|
break;
|
|
163
156
|
case SIWS_FIELD_URI:
|
|
164
157
|
case SIWS_FIELD_REQUEST_ID:
|
|
@@ -174,8 +167,5 @@ function validateSiwsMessage(message) {
|
|
|
174
167
|
break;
|
|
175
168
|
}
|
|
176
169
|
}
|
|
177
|
-
if (!hasVersion || !hasChainId || !hasNonce || !hasIssuedAt) {
|
|
178
|
-
invalid();
|
|
179
|
-
}
|
|
180
170
|
}
|
|
181
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l3cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby91dGlscy9zaXdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7OztHQU9HOztBQXNFSCxrREF5R0M7QUE3S0QsTUFBTSxXQUFXLEdBQUcsaURBQWlELENBQUM7QUFDdEUsTUFBTSxpQkFBaUIsR0FBRztJQUN4QixPQUFPO0lBQ1AsV0FBVztJQUNYLFlBQVk7SUFDWixTQUFTO0lBQ1QsYUFBYTtJQUNiLG1CQUFtQjtJQUNuQixjQUFjO0lBQ2QsY0FBYztJQUNkLFlBQVk7Q0FDYixDQUFDO0FBQ0YsTUFBTSxjQUFjLEdBQUc7SUFDckIsU0FBUztJQUNULFNBQVM7SUFDVCxRQUFRO0lBQ1IsVUFBVTtJQUNWLGdCQUFnQjtJQUNoQixnQkFBZ0I7SUFDaEIsZUFBZTtDQUNoQixDQUFDO0FBQ0YsTUFBTSxjQUFjLEdBQUcsQ0FBQyxDQUFDO0FBQ3pCLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO0FBQzdCLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFDO0FBQzlCLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO0FBQzNCLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxDQUFDO0FBQ3JDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxDQUFDO0FBQ2hDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxDQUFDO0FBQ2hDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO0FBRS9CLHFGQUFxRjtBQUNyRiw0RUFBNEU7QUFDNUUsTUFBTSxzQkFBc0IsR0FBRyxrRkFBa0YsQ0FBQztBQUVsSCxTQUFTLG1CQUFtQixDQUFDLElBQVk7SUFDdkMsT0FBTyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsSUFBSSx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxD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LG9CQUFvQixDQUFDO1lBQzFCLEtBQUssMEJBQTBCLENBQUM7WUFDaEMsS0FBSyxxQkFBcUI7Z0JBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDM0IsT0FBTyxFQUFFLENBQUM7Z0JBQ1osQ0FBQztnQkFDRCxJQUFJLEtBQUssS0FBSyxvQkFBb0IsRUFBRSxDQUFDO29CQUNuQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixDQUFDO2dCQUNELE1BQU07WUFDUixLQUFLLGNBQWMsQ0FBQztZQUNwQixLQUFLLHFCQUFxQjtnQkFDeEIsSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFLENBQUM7b0JBQ2pCLE9BQU8sRUFBRSxDQUFDO2dCQUNaLENBQUM7Z0JBQ0QsTUFBTTtZQUNSLEtBQUssb0JBQW9CO2dCQUN2QixJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUUsQ0FBQztvQkFDakIsT0FBTyxFQUFFLENBQUM7Z0JBQ1osQ0FBQztnQkFDRCxXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUNuQixNQUFNO1FBQ1YsQ0FBQztJQUNILENBQUM7SUFDRCxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDNUQsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2Fub25pY2FsIFNJV1MgKFNpZ24gSW4gV2l0aCBTb2xhbmEpIG1lc3NhZ2UgdmFsaWRhdG9yLlxuICpcbiAqIEV4YWN0IEpTIG1pcnJvciBvZiB0aGUgZmlybXdhcmUncyB2YWxpZGF0ZV9zb2xfbWVzc2FnZSAoaHNtLWZpcm13YXJlIHNyYy9iZy9zb2wuYyxcbiAqIERFRkktOTQ1KSBhcyBhbHNvIG1pcnJvcmVkIGluIGhzbS1hcGkgdmFsaWRhdGVTaXdzTWVzc2FnZSAoREVGSS05NDYpLiBTaGFyZWQgYnlcbiAqIHNkay1jb2luLXNvbCwgV2FsbGV0IFBsYXRmb3JtLCBhbmQgYml0Z28tdWk7IGhzbS1hcGkga2VlcHMgaXRzIG93biBieXRlcy1iYXNlZCBjb3B5LlxuICogQW55IGNoYW5nZSBoZXJlIG11c3QgbGFuZCBpZGVudGljYWxseSBpbiBhbGwgbGF5ZXJzLCBpbmNsdWRpbmcgZmlybXdhcmUuXG4gKi9cblxuY29uc3QgU0lXU19TVUZGSVggPSAnIHdhbnRzIHlvdSB0byBzaWduIGluIHdpdGggeW91ciBTb2xhbmEgYWNjb3VudDonO1xuY29uc3QgU0lXU19GSUVMRF9MQUJFTFMgPSBbXG4gICdVUkk6ICcsXG4gICdWZXJzaW9uOiAnLFxuICAnQ2hhaW4gSUQ6ICcsXG4gICdOb25jZTogJyxcbiAgJ0lzc3VlZCBBdDogJyxcbiAgJ0V4cGlyYXRpb24gVGltZTogJyxcbiAgJ05vdCBCZWZvcmU6ICcsXG4gICdSZXF1ZXN0IElEOiAnLFxuICAnUmVzb3VyY2VzOicsXG5dO1xuY29uc3QgU0lXU19DSEFJTl9JRFMgPSBbXG4gICdtYWlubmV0JyxcbiAgJ3Rlc3RuZXQnLFxuICAnZGV2bmV0JyxcbiAgJ2xvY2FsbmV0JyxcbiAgJ3NvbGFuYTptYWlubmV0JyxcbiAgJ3NvbGFuYTp0ZXN0bmV0JyxcbiAgJ3NvbGFuYTpkZXZuZXQnLFxuXTtcbmNvbnN0IFNJV1NfRklFTERfVVJJID0gMDtcbmNvbnN0IFNJV1NfRklFTERfVkVSU0lPTiA9IDE7XG5jb25zdCBTSVdTX0ZJRUxEX0NIQUlOX0lEID0gMjtcbmNvbnN0IFNJV1NfRklFTERfTk9OQ0UgPSAzO1xuY29uc3QgU0lXU19GSUVMRF9JU1NVRURfQVQgPSA0O1xuY29uc3QgU0lXU19GSUVMRF9FWFBJUkFUSU9OX1RJTUUgPSA1O1xuY29uc3QgU0lXU19GSUVMRF9OT1RfQkVGT1JFID0gNjtcbmNvbnN0IFNJV1NfRklFTERfUkVRVUVTVF9JRCA9IDc7XG5jb25zdCBTSVdTX0ZJRUxEX1JFU09VUkNFUyA9IDg7XG5cbi8vIEEgbG9uZSBzdXJyb2dhdGUgY2Fubm90IGJlIGVuY29kZWQgYXMgVVRGLTg7IEJ1ZmZlci5mcm9tIHdvdWxkIHNpbGVudGx5IHJlcGxhY2UgaXRcbi8vIHdpdGggVStGRkZEIGFuZCB0aGUgc2lnbmVkIGJ5dGVzIHdvdWxkIG5vIGxvbmdlciBtYXRjaCB0aGUgY2FsbGVyJ3MgdGV4dC5cbmNvbnN0IExPTkVfU1VSUk9HQVRFX1BBVFRFUk4gPSAvKD86W1xcdUQ4MDAtXFx1REJGRl0oPyFbXFx1REMwMC1cXHVERkZGXSkpfCg/Oig/Ol58W15cXHVEODAwLVxcdURCRkZdKVtcXHVEQzAwLVxcdURGRkZdKS87XG5cbmZ1bmN0aW9uIGlzU2l3c0Jhc2U1OEFkZHJlc3MobGluZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBsaW5lLmxlbmd0aCA+PSAzMiAmJiBsaW5lLmxlbmd0aCA8PSA0NCAmJiAvXlsxLTlBLUhKLU5QLVphLWttLXpdKyQvLnRlc3QobGluZSk7XG59XG5cbmZ1bmN0aW9uIGlzU2l3c0FsbnVtKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHZhbHVlLmxlbmd0aCA+PSA4ICYmIC9eW2EtekEtWjAtOV0rJC8udGVzdCh2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIGlzU2l3c0RhdGV0aW1lKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgbWF0Y2ggPSAvXihcXGR7NH0pLShcXGR7Mn0pLShcXGR7Mn0pVChcXGR7Mn0pOihcXGR7Mn0pOihcXGR7Mn0pKD86XFwuKFxcZCspKT8oWnxbKy1dXFxkezJ9OlxcZHsyfSkkLy5leGVjKHZhbHVlKTtcbiAgaWYgKCFtYXRjaCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBtb250aCA9IHBhcnNlSW50KG1hdGNoWzJdLCAxMCk7XG4gIGNvbnN0IGRheSA9IHBhcnNlSW50KG1hdGNoWzNdLCAxMCk7XG4gIGNvbnN0IGhvdXIgPSBwYXJzZUludChtYXRjaFs0XSwgMTApO1xuICBjb25zdCBtaW51dGUgPSBwYXJzZUludChtYXRjaFs1XSwgMTApO1xuICBjb25zdCBzZWNvbmQgPSBwYXJzZUludChtYXRjaFs2XSwgMTApO1xuICBpZiAobW9udGggPCAxIHx8IG1vbnRoID4gMTIgfHwgZGF5IDwgMSB8fCBkYXkgPiAzMSB8fCBob3VyID4gMjMgfHwgbWludXRlID4gNTkgfHwgc2Vjb25kID4gNjApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKG1hdGNoWzhdID09PSAnWicpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBjb25zdCBvZmZzZXRIb3VyID0gcGFyc2VJbnQobWF0Y2hbOF0uc3Vic3RyaW5nKDEsIDMpLCAxMCk7XG4gIGNvbnN0IG9mZnNldE1pbnV0ZSA9IHBhcnNlSW50KG1hdGNoWzhdLnN1YnN0cmluZyg0LCA2KSwgMTApO1xuICByZXR1cm4gb2Zmc2V0SG91ciA8PSAyMyAmJiBvZmZzZXRNaW51dGUgPD0gNTk7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgU0lXUyBtZXNzYWdlLiBUaHJvd3Mgd2hlbiB0aGUgbWVzc2FnZSBpcyBub3Qgc3RyaWN0IFVURi04LXJlcHJlc2VudGFibGVcbiAqIG9yIG5vdCBhIHdlbGwtZm9ybWVkIFNJV1MgbWVzc2FnZTsgcmV0dXJucyBzaWxlbnRseSBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVNpd3NNZXNzYWdlKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBpbnZhbGlkID0gKCkgPT4ge1xuICAgIHRocm93IG5ldyBFcnJvcignbWVzc2FnZSBpcyBub3QgYSB2YWxpZCBTSVdTIG1lc3NhZ2UnKTtcbiAgfTtcbiAgaWYgKExPTkVfU1VSUk9HQVRFX1BBVFRFUk4udGVzdChtZXNzYWdlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignbWVzc2FnZSBpcyBub3QgdmFsaWQgVVRGLTgnKTtcbiAgfVxuICBjb25zdCBsaW5lcyA9IG1lc3NhZ2UucmVwbGFjZSgvXFxuKyQvLCAnJykuc3BsaXQoJ1xcbicpO1xuICBpZiAobGluZXMubGVuZ3RoIDwgMyB8fCAhbGluZXNbMF0uZW5kc1dpdGgoU0lXU19TVUZGSVgpIHx8IGxpbmVzWzBdLmxlbmd0aCA9PT0gU0lXU19TVUZGSVgubGVuZ3RoKSB7XG4gICAgaW52YWxpZCgpO1xuICB9XG4gIGlmICghaXNTaXdzQmFzZTU4QWRkcmVzcyhsaW5lc1sxXSkgfHwgbGluZXNbMl0gIT09ICcnKSB7XG4gICAgaW52YWxpZCgpO1xuICB9XG4gIGxldCBoYXNWZXJzaW9uID0gZmFsc2U7XG4gIGxldCBoYXNDaGFpbklkID0gZmFsc2U7XG4gIGxldCBoYXNOb25jZSA9IGZhbHNlO1xuICBsZXQgaGFzSXNzdWVkQXQgPSBmYWxzZTtcbiAgbGV0IGhhc0ZpZWxkID0gZmFsc2U7XG4gIGxldCBpbkZpZWxkcyA9IGZhbHNlO1xuICBsZXQgaW5SZXNvdXJjZXMgPSBmYWxzZTtcbiAgbGV0IHJlcXVpcmVGaWVsZHMgPSBmYWxzZTtcbiAgbGV0IGxhc3RGaWVsZCA9IC0xO1xuICBmb3IgKGxldCBpID0gMzsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgbGluZSA9IGxpbmVzW2ldO1xuICAgIGlmIChsaW5lID09PSAnJykge1xuICAgICAgaWYgKGluRmllbGRzIHx8IGluUmVzb3VyY2VzIHx8IHJlcXVpcmVGaWVsZHMpIHtcbiAgICAgICAgaW52YWxpZCgpO1xuICAgICAgfVxuICAgICAgcmVxdWlyZUZpZWxkcyA9IHRydWU7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKGluUmVzb3VyY2VzKSB7XG4gICAgICBpZiAoIWxpbmUuc3RhcnRzV2l0aCgnLSAnKSkge1xuICAgICAgICBpbnZhbGlkKCk7XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgbGV0IGZpZWxkID0gLTE7XG4gICAgZm9yIChsZXQgZiA9IDA7IGYgPCBTSVdTX0ZJRUxEX0xBQkVMUy5sZW5ndGg7IGYrKykge1xuICAgICAgaWYgKGxpbmUuc3RhcnRzV2l0aChTSVdTX0ZJRUxEX0xBQkVMU1tmXSkpIHtcbiAgICAgICAgZmllbGQgPSBmO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGZpZWxkID09PSAtMSkge1xuICAgICAgaWYgKGluRmllbGRzIHx8IHJlcXVpcmVGaWVsZHMpIHtcbiAgICAgICAgaW52YWxpZCgpO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChoYXNGaWVsZCAmJiBmaWVsZCA8PSBsYXN0RmllbGQpIHtcbiAgICAgIGludmFsaWQoKTtcbiAgICB9XG4gICAgaGFzRmllbGQgPSB0cnVlO1xuICAgIGxhc3RGaWVsZCA9IGZpZWxkO1xuICAgIGluRmllbGRzID0gdHJ1ZTtcbiAgICByZXF1aXJlRmllbGRzID0gZmFsc2U7XG4gICAgY29uc3QgdmFsdWUgPSBsaW5lLnN1YnN0cmluZyhTSVdTX0ZJRUxEX0xBQkVMU1tmaWVsZF0ubGVuZ3RoKTtcbiAgICBzd2l0Y2ggKGZpZWxkKSB7XG4gICAgICBjYXNlIFNJV1NfRklFTERfVkVSU0lPTjpcbiAgICAgICAgaWYgKHZhbHVlICE9PSAnMScpIHtcbiAgICAgICAgICBpbnZhbGlkKCk7XG4gICAgICAgIH1cbiAgICAgICAgaGFzVmVyc2lvbiA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTSVdTX0ZJRUxEX0NIQUlOX0lEOlxuICAgICAgICBpZiAoIVNJV1NfQ0hBSU5fSURTLmluY2x1ZGVzKHZhbHVlKSkge1xuICAgICAgICAgIGludmFsaWQoKTtcbiAgICAgICAgfVxuICAgICAgICBoYXNDaGFpbklkID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNJV1NfRklFTERfTk9OQ0U6XG4gICAgICAgIGlmICghaXNTaXdzQWxudW0odmFsdWUpKSB7XG4gICAgICAgICAgaW52YWxpZCgpO1xuICAgICAgICB9XG4gICAgICAgIGhhc05vbmNlID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNJV1NfRklFTERfSVNTVUVEX0FUOlxuICAgICAgY2FzZSBTSVdTX0ZJRUxEX0VYUElSQVRJT05fVElNRTpcbiAgICAgIGNhc2UgU0lXU19GSUVMRF9OT1RfQkVGT1JFOlxuICAgICAgICBpZiAoIWlzU2l3c0RhdGV0aW1lKHZhbHVlKSkge1xuICAgICAgICAgIGludmFsaWQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmllbGQgPT09IFNJV1NfRklFTERfSVNTVUVEX0FUKSB7XG4gICAgICAgICAgaGFzSXNzdWVkQXQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTSVdTX0ZJRUxEX1VSSTpcbiAgICAgIGNhc2UgU0lXU19GSUVMRF9SRVFVRVNUX0lEOlxuICAgICAgICBpZiAodmFsdWUgPT09ICcnKSB7XG4gICAgICAgICAgaW52YWxpZCgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTSVdTX0ZJRUxEX1JFU09VUkNFUzpcbiAgICAgICAgaWYgKHZhbHVlICE9PSAnJykge1xuICAgICAgICAgIGludmFsaWQoKTtcbiAgICAgICAgfVxuICAgICAgICBpblJlc291cmNlcyA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAoIWhhc1ZlcnNpb24gfHwgIWhhc0NoYWluSWQgfHwgIWhhc05vbmNlIHx8ICFoYXNJc3N1ZWRBdCkge1xuICAgIGludmFsaWQoKTtcbiAgfVxufVxuIl19
|
|
171
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l3cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby91dGlscy9zaXdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7OztHQU9HOztBQXlFSCxrREE0RkM7QUFuS0QsTUFBTSxXQUFXLEdBQUcsaURBQWlELENBQUM7QUFDdEUsTUFBTSxpQkFBaUIsR0FBRztJQUN4QixPQUFPO0lBQ1AsV0FBVztJQUNYLFlBQVk7SUFDWixTQUFTO0lBQ1QsYUFBYTtJQUNiLG1CQUFtQjtJQUNuQixjQUFjO0lBQ2QsY0FBYztJQUNkLFlBQVk7Q0FDYixDQUFDO0FBQ0YsTUFBTSxjQUFjLEdBQUc7SUFDckIsU0FBUztJQUNULFNBQVM7SUFDVCxRQUFRO0lBQ1IsVUFBVTtJQUNWLGdCQUFnQjtJQUNoQixnQkFBZ0I7SUFDaEIsZUFBZTtDQUNoQixDQUFDO0FBQ0YsTUFBTSxjQUFjLEdBQUcsQ0FBQyxDQUFDO0FBQ3pCLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO0FBQzdCLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFDO0FBQzlCLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO0FBQzNCLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxDQUFDO0FBQ3JDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxDQUFDO0FBQ2hDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxDQUFDO0FBQ2hDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO0FBRS9CLHFGQUFxRjtBQUNyRiw0RUFBNEU7QUFDNUUsTUFBTSxzQkFBc0IsR0FBRyxrRkFBa0YsQ0FBQztBQUVsSCxTQUFTLG1CQUFtQixDQUFDLElBQVk7SUFDdkMsT0FBTyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsSUFBSSx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxD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QUM7WUFDcEIsS0FBSyxxQkFBcUI7Z0JBQ3hCLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRSxDQUFDO29CQUNqQixPQUFPLEVBQUUsQ0FBQztnQkFDWixDQUFDO2dCQUNELE1BQU07WUFDUixLQUFLLG9CQUFvQjtnQkFDdkIsSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFLENBQUM7b0JBQ2pCLE9BQU8sRUFBRSxDQUFDO2dCQUNaLENBQUM7Z0JBQ0QsV0FBVyxHQUFHLElBQUksQ0FBQztnQkFDbkIsTUFBTTtRQUNWLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2Fub25pY2FsIFNJV1MgKFNpZ24gSW4gV2l0aCBTb2xhbmEpIG1lc3NhZ2UgdmFsaWRhdG9yLlxuICpcbiAqIEV4YWN0IEpTIG1pcnJvciBvZiB0aGUgZmlybXdhcmUncyB2YWxpZGF0ZV9zb2xfbWVzc2FnZSAoaHNtLWZpcm13YXJlIHNyYy9iZy9zb2wuYyxcbiAqIERFRkktOTQ1KSBhcyBhbHNvIG1pcnJvcmVkIGluIGhzbS1hcGkgdmFsaWRhdGVTaXdzTWVzc2FnZSAoREVGSS05NDYpLiBTaGFyZWQgYnlcbiAqIHNkay1jb2luLXNvbCwgV2FsbGV0IFBsYXRmb3JtLCBhbmQgYml0Z28tdWk7IGhzbS1hcGkga2VlcHMgaXRzIG93biBieXRlcy1iYXNlZCBjb3B5LlxuICogQW55IGNoYW5nZSBoZXJlIG11c3QgbGFuZCBpZGVudGljYWxseSBpbiBhbGwgbGF5ZXJzLCBpbmNsdWRpbmcgZmlybXdhcmUuXG4gKi9cblxuY29uc3QgU0lXU19TVUZGSVggPSAnIHdhbnRzIHlvdSB0byBzaWduIGluIHdpdGggeW91ciBTb2xhbmEgYWNjb3VudDonO1xuY29uc3QgU0lXU19GSUVMRF9MQUJFTFMgPSBbXG4gICdVUkk6ICcsXG4gICdWZXJzaW9uOiAnLFxuICAnQ2hhaW4gSUQ6ICcsXG4gICdOb25jZTogJyxcbiAgJ0lzc3VlZCBBdDogJyxcbiAgJ0V4cGlyYXRpb24gVGltZTogJyxcbiAgJ05vdCBCZWZvcmU6ICcsXG4gICdSZXF1ZXN0IElEOiAnLFxuICAnUmVzb3VyY2VzOicsXG5dO1xuY29uc3QgU0lXU19DSEFJTl9JRFMgPSBbXG4gICdtYWlubmV0JyxcbiAgJ3Rlc3RuZXQnLFxuICAnZGV2bmV0JyxcbiAgJ2xvY2FsbmV0JyxcbiAgJ3NvbGFuYTptYWlubmV0JyxcbiAgJ3NvbGFuYTp0ZXN0bmV0JyxcbiAgJ3NvbGFuYTpkZXZuZXQnLFxuXTtcbmNvbnN0IFNJV1NfRklFTERfVVJJID0gMDtcbmNvbnN0IFNJV1NfRklFTERfVkVSU0lPTiA9IDE7XG5jb25zdCBTSVdTX0ZJRUxEX0NIQUlOX0lEID0gMjtcbmNvbnN0IFNJV1NfRklFTERfTk9OQ0UgPSAzO1xuY29uc3QgU0lXU19GSUVMRF9JU1NVRURfQVQgPSA0O1xuY29uc3QgU0lXU19GSUVMRF9FWFBJUkFUSU9OX1RJTUUgPSA1O1xuY29uc3QgU0lXU19GSUVMRF9OT1RfQkVGT1JFID0gNjtcbmNvbnN0IFNJV1NfRklFTERfUkVRVUVTVF9JRCA9IDc7XG5jb25zdCBTSVdTX0ZJRUxEX1JFU09VUkNFUyA9IDg7XG5cbi8vIEEgbG9uZSBzdXJyb2dhdGUgY2Fubm90IGJlIGVuY29kZWQgYXMgVVRGLTg7IEJ1ZmZlci5mcm9tIHdvdWxkIHNpbGVudGx5IHJlcGxhY2UgaXRcbi8vIHdpdGggVStGRkZEIGFuZCB0aGUgc2lnbmVkIGJ5dGVzIHdvdWxkIG5vIGxvbmdlciBtYXRjaCB0aGUgY2FsbGVyJ3MgdGV4dC5cbmNvbnN0IExPTkVfU1VSUk9HQVRFX1BBVFRFUk4gPSAvKD86W1xcdUQ4MDAtXFx1REJGRl0oPyFbXFx1REMwMC1cXHVERkZGXSkpfCg/Oig/Ol58W15cXHVEODAwLVxcdURCRkZdKVtcXHVEQzAwLVxcdURGRkZdKS87XG5cbmZ1bmN0aW9uIGlzU2l3c0Jhc2U1OEFkZHJlc3MobGluZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBsaW5lLmxlbmd0aCA+PSAzMiAmJiBsaW5lLmxlbmd0aCA8PSA0NCAmJiAvXlsxLTlBLUhKLU5QLVphLWttLXpdKyQvLnRlc3QobGluZSk7XG59XG5cbmZ1bmN0aW9uIGlzU2l3c0FsbnVtKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHZhbHVlLmxlbmd0aCA+PSA4ICYmIC9eW2EtekEtWjAtOV0rJC8udGVzdCh2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIGlzU2l3c0RhdGV0aW1lKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgbWF0Y2ggPSAvXihcXGR7NH0pLShcXGR7Mn0pLShcXGR7Mn0pVChcXGR7Mn0pOihcXGR7Mn0pOihcXGR7Mn0pKD86XFwuKFxcZCspKT8oWnxbKy1dXFxkezJ9OlxcZHsyfSkkLy5leGVjKHZhbHVlKTtcbiAgaWYgKCFtYXRjaCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBtb250aCA9IHBhcnNlSW50KG1hdGNoWzJdLCAxMCk7XG4gIGNvbnN0IGRheSA9IHBhcnNlSW50KG1hdGNoWzNdLCAxMCk7XG4gIGNvbnN0IGhvdXIgPSBwYXJzZUludChtYXRjaFs0XSwgMTApO1xuICBjb25zdCBtaW51dGUgPSBwYXJzZUludChtYXRjaFs1XSwgMTApO1xuICBjb25zdCBzZWNvbmQgPSBwYXJzZUludChtYXRjaFs2XSwgMTApO1xuICBpZiAobW9udGggPCAxIHx8IG1vbnRoID4gMTIgfHwgZGF5IDwgMSB8fCBkYXkgPiAzMSB8fCBob3VyID4gMjMgfHwgbWludXRlID4gNTkgfHwgc2Vjb25kID4gNjApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKG1hdGNoWzhdID09PSAnWicpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBjb25zdCBvZmZzZXRIb3VyID0gcGFyc2VJbnQobWF0Y2hbOF0uc3Vic3RyaW5nKDEsIDMpLCAxMCk7XG4gIGNvbnN0IG9mZnNldE1pbnV0ZSA9IHBhcnNlSW50KG1hdGNoWzhdLnN1YnN0cmluZyg0LCA2KSwgMTApO1xuICByZXR1cm4gb2Zmc2V0SG91ciA8PSAyMyAmJiBvZmZzZXRNaW51dGUgPD0gNTk7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgU0lXUyBtZXNzYWdlIHBlciB0aGUgU2lnbiBJbiBXaXRoIFNvbGFuYSBBQk5GIGdyYW1tYXI6IHRoZSBkb21haW4tYm91bmRcbiAqIHNpZ24taW4gdGVtcGxhdGUgd2hlcmUgdGhlIHN0YXRlbWVudCBhbmQgZXZlcnkgYWR2YW5jZWQgZmllbGQgaXMgb3B0aW9uYWwgKGFueVxuICogc3Vic2V0LCBpbiBjYW5vbmljYWwgb3JkZXIsIHdpdGggc3RyaWN0IHZhbHVlIGNoZWNrcykuIFRocm93cyB3aGVuIHRoZSBtZXNzYWdlIGlzXG4gKiBub3Qgc3RyaWN0IFVURi04LXJlcHJlc2VudGFibGUgb3Igbm90IGEgd2VsbC1mb3JtZWQgU0lXUyBtZXNzYWdlOyByZXR1cm5zIHNpbGVudGx5XG4gKiBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVNpd3NNZXNzYWdlKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBpbnZhbGlkID0gKCkgPT4ge1xuICAgIHRocm93IG5ldyBFcnJvcignbWVzc2FnZSBpcyBub3QgYSB2YWxpZCBTSVdTIG1lc3NhZ2UnKTtcbiAgfTtcbiAgaWYgKExPTkVfU1VSUk9HQVRFX1BBVFRFUk4udGVzdChtZXNzYWdlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignbWVzc2FnZSBpcyBub3QgdmFsaWQgVVRGLTgnKTtcbiAgfVxuICBjb25zdCBsaW5lcyA9IG1lc3NhZ2UucmVwbGFjZSgvXFxuKyQvLCAnJykuc3BsaXQoJ1xcbicpO1xuICBpZiAobGluZXMubGVuZ3RoIDwgMiB8fCAhbGluZXNbMF0uZW5kc1dpdGgoU0lXU19TVUZGSVgpIHx8IGxpbmVzWzBdLmxlbmd0aCA9PT0gU0lXU19TVUZGSVgubGVuZ3RoKSB7XG4gICAgaW52YWxpZCgpO1xuICB9XG4gIGlmICghaXNTaXdzQmFzZTU4QWRkcmVzcyhsaW5lc1sxXSkgfHwgKGxpbmVzLmxlbmd0aCA+PSAzICYmIGxpbmVzWzJdICE9PSAnJykpIHtcbiAgICBpbnZhbGlkKCk7XG4gIH1cbiAgbGV0IGhhc0ZpZWxkID0gZmFsc2U7XG4gIGxldCBpbkZpZWxkcyA9IGZhbHNlO1xuICBsZXQgaW5SZXNvdXJjZXMgPSBmYWxzZTtcbiAgbGV0IHJlcXVpcmVGaWVsZHMgPSBmYWxzZTtcbiAgbGV0IGxhc3RGaWVsZCA9IC0xO1xuICBmb3IgKGxldCBpID0gMzsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgbGluZSA9IGxpbmVzW2ldO1xuICAgIGlmIChsaW5lID09PSAnJykge1xuICAgICAgaWYgKGluRmllbGRzIHx8IGluUmVzb3VyY2VzIHx8IHJlcXVpcmVGaWVsZHMpIHtcbiAgICAgICAgaW52YWxpZCgpO1xuICAgICAgfVxuICAgICAgcmVxdWlyZUZpZWxkcyA9IHRydWU7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKGluUmVzb3VyY2VzKSB7XG4gICAgICBpZiAoIWxpbmUuc3RhcnRzV2l0aCgnLSAnKSkge1xuICAgICAgICBpbnZhbGlkKCk7XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgbGV0IGZpZWxkID0gLTE7XG4gICAgZm9yIChsZXQgZiA9IDA7IGYgPCBTSVdTX0ZJRUxEX0xBQkVMUy5sZW5ndGg7IGYrKykge1xuICAgICAgaWYgKGxpbmUuc3RhcnRzV2l0aChTSVdTX0ZJRUxEX0xBQkVMU1tmXSkpIHtcbiAgICAgICAgZmllbGQgPSBmO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGZpZWxkID09PSAtMSkge1xuICAgICAgaWYgKGluRmllbGRzIHx8IHJlcXVpcmVGaWVsZHMpIHtcbiAgICAgICAgaW52YWxpZCgpO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChoYXNGaWVsZCAmJiBmaWVsZCA8PSBsYXN0RmllbGQpIHtcbiAgICAgIGludmFsaWQoKTtcbiAgICB9XG4gICAgaGFzRmllbGQgPSB0cnVlO1xuICAgIGxhc3RGaWVsZCA9IGZpZWxkO1xuICAgIGluRmllbGRzID0gdHJ1ZTtcbiAgICByZXF1aXJlRmllbGRzID0gZmFsc2U7XG4gICAgY29uc3QgdmFsdWUgPSBsaW5lLnN1YnN0cmluZyhTSVdTX0ZJRUxEX0xBQkVMU1tmaWVsZF0ubGVuZ3RoKTtcbiAgICBzd2l0Y2ggKGZpZWxkKSB7XG4gICAgICBjYXNlIFNJV1NfRklFTERfVkVSU0lPTjpcbiAgICAgICAgaWYgKHZhbHVlICE9PSAnMScpIHtcbiAgICAgICAgICBpbnZhbGlkKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNJV1NfRklFTERfQ0hBSU5fSUQ6XG4gICAgICAgIGlmICghU0lXU19DSEFJTl9JRFMuaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICAgICAgaW52YWxpZCgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTSVdTX0ZJRUxEX05PTkNFOlxuICAgICAgICBpZiAoIWlzU2l3c0FsbnVtKHZhbHVlKSkge1xuICAgICAgICAgIGludmFsaWQoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU0lXU19GSUVMRF9JU1NVRURfQVQ6XG4gICAgICBjYXNlIFNJV1NfRklFTERfRVhQSVJBVElPTl9USU1FOlxuICAgICAgY2FzZSBTSVdTX0ZJRUxEX05PVF9CRUZPUkU6XG4gICAgICAgIGlmICghaXNTaXdzRGF0ZXRpbWUodmFsdWUpKSB7XG4gICAgICAgICAgaW52YWxpZCgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTSVdTX0ZJRUxEX1VSSTpcbiAgICAgIGNhc2UgU0lXU19GSUVMRF9SRVFVRVNUX0lEOlxuICAgICAgICBpZiAodmFsdWUgPT09ICcnKSB7XG4gICAgICAgICAgaW52YWxpZCgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTSVdTX0ZJRUxEX1JFU09VUkNFUzpcbiAgICAgICAgaWYgKHZhbHVlICE9PSAnJykge1xuICAgICAgICAgIGludmFsaWQoKTtcbiAgICAgICAgfVxuICAgICAgICBpblJlc291cmNlcyA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { EncryptionVersion, IRequestTracer } from '../../../api';
|
|
2
2
|
import * as openpgp from 'openpgp';
|
|
3
3
|
import { Key, SerializedKeyPair } from 'openpgp';
|
|
4
|
-
import { IBaseCoin, KeychainsTriplet
|
|
4
|
+
import { IBaseCoin, KeychainsTriplet } from '../../baseCoin';
|
|
5
5
|
import { BitGoBase } from '../../bitgoBase';
|
|
6
6
|
import { Keychain, WebauthnKeyEncryptionInfo } from '../../keychain';
|
|
7
7
|
import { IWallet } from '../../wallet';
|
|
@@ -40,6 +40,11 @@ export default class BaseTssUtils<KeyShare> extends MpcUtils implements ITssUtil
|
|
|
40
40
|
}): Promise<KeychainsTriplet>;
|
|
41
41
|
signTxRequest(params: TssSignTxRequestParamsWithPrv): Promise<TxRequest>;
|
|
42
42
|
signTxRequestForMessage(params: TSSParamsForMessage): Promise<TxRequest>;
|
|
43
|
+
supportsVerifyKey(): boolean;
|
|
44
|
+
verifyKey(params: {
|
|
45
|
+
prv: string;
|
|
46
|
+
commonKeychain: string;
|
|
47
|
+
}): Promise<boolean>;
|
|
43
48
|
/**
|
|
44
49
|
* Signs a transaction using TSS for EdDSA and through utilization of custom share generators
|
|
45
50
|
*
|
|
@@ -48,7 +53,7 @@ export default class BaseTssUtils<KeyShare> extends MpcUtils implements ITssUtil
|
|
|
48
53
|
* @param {CustomGShareGeneratingFunction} externalSignerGShareGenerator a function that creates G shares in the EdDSA TSS flow
|
|
49
54
|
* @returns {Promise<TxRequest>} - a signed tx request
|
|
50
55
|
*/
|
|
51
|
-
signEddsaTssUsingExternalSigner(txRequest: string | TxRequest, externalSignerCommitmentGenerator: CustomCommitmentGeneratingFunction, externalSignerRShareGenerator: CustomRShareGeneratingFunction, externalSignerGShareGenerator: CustomGShareGeneratingFunction
|
|
56
|
+
signEddsaTssUsingExternalSigner(txRequest: string | TxRequest, externalSignerCommitmentGenerator: CustomCommitmentGeneratingFunction, externalSignerRShareGenerator: CustomRShareGeneratingFunction, externalSignerGShareGenerator: CustomGShareGeneratingFunction): Promise<TxRequest>;
|
|
52
57
|
/**
|
|
53
58
|
* Signs a transaction using TSS for ECDSA and through utilization of custom share generators
|
|
54
59
|
*
|