@bitgo-beta/sdk-coin-ada 2.3.14-beta.9 → 2.3.14-beta.900
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +948 -0
- package/dist/src/ada.d.ts +37 -19
- package/dist/src/ada.d.ts.map +1 -1
- package/dist/src/ada.js +306 -96
- package/dist/src/adaToken.d.ts +1 -1
- package/dist/src/adaToken.d.ts.map +1 -1
- package/dist/src/adaToken.js +3 -3
- package/dist/src/index.js +6 -2
- package/dist/src/lib/index.d.ts +4 -1
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +32 -12
- package/dist/src/lib/keyPair.js +29 -16
- package/dist/src/lib/stakingActivateBuilder.d.ts +1 -1
- package/dist/src/lib/stakingActivateBuilder.d.ts.map +1 -1
- package/dist/src/lib/stakingActivateBuilder.js +30 -10
- package/dist/src/lib/{stakingWithdrawRewardsBuilder.d.ts → stakingBaseClaimBuilder.d.ts} +6 -7
- package/dist/src/lib/stakingBaseClaimBuilder.d.ts.map +1 -0
- package/dist/src/lib/stakingBaseClaimBuilder.js +35 -0
- package/dist/src/lib/stakingClaimRewardsBuilder.d.ts +10 -0
- package/dist/src/lib/stakingClaimRewardsBuilder.d.ts.map +1 -0
- package/dist/src/lib/stakingClaimRewardsBuilder.js +22 -0
- package/dist/src/lib/stakingDeactivateBuilder.js +24 -10
- package/dist/src/lib/stakingPledgeBuilder.d.ts +23 -0
- package/dist/src/lib/stakingPledgeBuilder.d.ts.map +1 -0
- package/dist/src/lib/stakingPledgeBuilder.js +43 -0
- package/dist/src/lib/stakingWithdrawBuilder.d.ts +12 -0
- package/dist/src/lib/stakingWithdrawBuilder.d.ts.map +1 -0
- package/dist/src/lib/stakingWithdrawBuilder.js +22 -0
- package/dist/src/lib/transaction.d.ts +35 -5
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +144 -21
- package/dist/src/lib/transactionBuilder.d.ts +5 -2
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder.js +173 -24
- package/dist/src/lib/transactionBuilderFactory.d.ts +8 -2
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +21 -3
- package/dist/src/lib/utils.d.ts +29 -0
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +170 -17
- package/dist/src/lib/voteDelegationBuilder.d.ts +24 -0
- package/dist/src/lib/voteDelegationBuilder.d.ts.map +1 -0
- package/dist/src/lib/voteDelegationBuilder.js +84 -0
- package/package.json +13 -10
- package/dist/src/lib/stakingWithdrawRewardsBuilder.d.ts.map +0 -1
- package/dist/src/lib/stakingWithdrawRewardsBuilder.js +0 -43
|
@@ -7,7 +7,10 @@ const walletInitializationBuilder_1 = require("./walletInitializationBuilder");
|
|
|
7
7
|
const transaction_1 = require("./transaction");
|
|
8
8
|
const stakingActivateBuilder_1 = require("./stakingActivateBuilder");
|
|
9
9
|
const stakingDeactivateBuilder_1 = require("./stakingDeactivateBuilder");
|
|
10
|
-
const
|
|
10
|
+
const stakingWithdrawBuilder_1 = require("./stakingWithdrawBuilder");
|
|
11
|
+
const stakingPledgeBuilder_1 = require("./stakingPledgeBuilder");
|
|
12
|
+
const stakingClaimRewardsBuilder_1 = require("./stakingClaimRewardsBuilder");
|
|
13
|
+
const voteDelegationBuilder_1 = require("./voteDelegationBuilder");
|
|
11
14
|
class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory {
|
|
12
15
|
constructor(_coinConfig) {
|
|
13
16
|
super(_coinConfig);
|
|
@@ -25,12 +28,18 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
|
|
|
25
28
|
return this.getTransferBuilder(tx);
|
|
26
29
|
case sdk_core_1.TransactionType.StakingActivate:
|
|
27
30
|
return this.getStakingActivateBuilder(tx);
|
|
31
|
+
case sdk_core_1.TransactionType.StakingClaim:
|
|
32
|
+
return this.getStakingClaimRewardsBuilder(tx);
|
|
28
33
|
case sdk_core_1.TransactionType.StakingDeactivate:
|
|
29
34
|
return this.getStakingDeactivateBuilder(tx);
|
|
30
35
|
case sdk_core_1.TransactionType.StakingWithdraw:
|
|
31
36
|
return this.getStakingWithdrawBuilder(tx);
|
|
32
37
|
case sdk_core_1.TransactionType.WalletInitialization:
|
|
33
38
|
return this.getWalletInitializationBuilder(tx);
|
|
39
|
+
case sdk_core_1.TransactionType.StakingPledge:
|
|
40
|
+
return this.getStakingPledgeBuilder(tx);
|
|
41
|
+
case sdk_core_1.TransactionType.VoteDelegation:
|
|
42
|
+
return this.getVoteDelegationBuilder(tx);
|
|
34
43
|
default:
|
|
35
44
|
throw new sdk_core_1.InvalidTransactionError('unsupported transaction');
|
|
36
45
|
}
|
|
@@ -50,11 +59,20 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
|
|
|
50
59
|
getStakingActivateBuilder(tx) {
|
|
51
60
|
return TransactionBuilderFactory.initializeBuilder(tx, new stakingActivateBuilder_1.StakingActivateBuilder(this._coinConfig));
|
|
52
61
|
}
|
|
62
|
+
getVoteDelegationBuilder(tx) {
|
|
63
|
+
return TransactionBuilderFactory.initializeBuilder(tx, new voteDelegationBuilder_1.VoteDelegationBuilder(this._coinConfig));
|
|
64
|
+
}
|
|
65
|
+
getStakingClaimRewardsBuilder(tx) {
|
|
66
|
+
return TransactionBuilderFactory.initializeBuilder(tx, new stakingClaimRewardsBuilder_1.StakingClaimRewardsBuilder(this._coinConfig));
|
|
67
|
+
}
|
|
53
68
|
getStakingDeactivateBuilder(tx) {
|
|
54
69
|
return TransactionBuilderFactory.initializeBuilder(tx, new stakingDeactivateBuilder_1.StakingDeactivateBuilder(this._coinConfig));
|
|
55
70
|
}
|
|
56
71
|
getStakingWithdrawBuilder(tx) {
|
|
57
|
-
return TransactionBuilderFactory.initializeBuilder(tx, new
|
|
72
|
+
return TransactionBuilderFactory.initializeBuilder(tx, new stakingWithdrawBuilder_1.StakingWithdrawBuilder(this._coinConfig));
|
|
73
|
+
}
|
|
74
|
+
getStakingPledgeBuilder(tx) {
|
|
75
|
+
return TransactionBuilderFactory.initializeBuilder(tx, new stakingPledgeBuilder_1.StakingPledgeBuilder(this._coinConfig));
|
|
58
76
|
}
|
|
59
77
|
/**
|
|
60
78
|
* Initialize the builder with the given transaction
|
|
@@ -71,4 +89,4 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
|
|
|
71
89
|
}
|
|
72
90
|
}
|
|
73
91
|
exports.TransactionBuilderFactory = TransactionBuilderFactory;
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxtREFBK0c7QUFDL0csdURBQW9EO0FBQ3BELCtFQUE0RTtBQUU1RSwrQ0FBNEM7QUFDNUMscUVBQWtFO0FBQ2xFLHlFQUFzRTtBQUN0RSxxRUFBa0U7QUFDbEUsaUVBQThEO0FBQzlELDZFQUEwRTtBQUMxRSxtRUFBZ0U7QUFFaEUsTUFBYSx5QkFBMEIsU0FBUSx3Q0FBNkI7SUFDMUUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixJQUFJLENBQUMsR0FBd0I7UUFDM0IsSUFBSSxHQUFHLFlBQVksVUFBVSxFQUFFLENBQUM7WUFDOUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDckQsQ0FBQztRQUNELElBQUksQ0FBQztZQUNILE1BQU0sRUFBRSxHQUFHLElBQUkseUJBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDN0MsRUFBRSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzNCLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNoQixLQUFLLDBCQUFlLENBQUMsSUFBSTtvQkFDdkIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3JDLEtBQUssMEJBQWUsQ0FBQyxlQUFlO29CQUNsQyxPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDNUMsS0FBSywwQkFBZSxDQUFDLFlBQVk7b0JBQy9CLE9BQU8sSUFB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bXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSwgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdHJhbnNmZXJCdWlsZGVyJztcbmltcG9ydCB7IFdhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlciB9IGZyb20gJy4vd2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBTdGFraW5nQWN0aXZhdGVCdWlsZGVyIH0gZnJvbSAnLi9zdGFraW5nQWN0aXZhdGVCdWlsZGVyJztcbmltcG9ydCB7IFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlciB9IGZyb20gJy4vc3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyJztcbmltcG9ydCB7IFN0YWtpbmdXaXRoZHJhd0J1aWxkZXIgfSBmcm9tICcuL3N0YWtpbmdXaXRoZHJhd0J1aWxkZXInO1xuaW1wb3J0IHsgU3Rha2luZ1BsZWRnZUJ1aWxkZXIgfSBmcm9tICcuL3N0YWtpbmdQbGVkZ2VCdWlsZGVyJztcbmltcG9ydCB7IFN0YWtpbmdDbGFpbVJld2FyZHNCdWlsZGVyIH0gZnJvbSAnLi9zdGFraW5nQ2xhaW1SZXdhcmRzQnVpbGRlcic7XG5pbXBvcnQgeyBWb3RlRGVsZWdhdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3ZvdGVEZWxlZ2F0aW9uQnVpbGRlcic7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZnJvbShyYXc6IFVpbnQ4QXJyYXkgfCBzdHJpbmcpOiBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIGlmIChyYXcgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgICByZXR1cm4gdGhpcy5mcm9tKEJ1ZmZlci5mcm9tKHJhdykudG9TdHJpbmcoJ2hleCcpKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcpO1xuICAgICAgdHguZnJvbVJhd1RyYW5zYWN0aW9uKHJhdyk7XG4gICAgICBzd2l0Y2ggKHR4LnR5cGUpIHtcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2VuZDpcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRUcmFuc2ZlckJ1aWxkZXIodHgpO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQWN0aXZhdGU6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3Rha2luZ0FjdGl2YXRlQnVpbGRlcih0eCk7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdDbGFpbTpcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTdGFraW5nQ2xhaW1SZXdhcmRzQnVpbGRlcih0eCk7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdEZWFjdGl2YXRlOlxuICAgICAgICAgIHJldHVybiB0aGlzLmdldFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcih0eCk7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdXaXRoZHJhdzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTdGFraW5nV2l0aGRyYXdCdWlsZGVyKHR4KTtcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb246XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0V2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyKHR4KTtcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1BsZWRnZTpcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTdGFraW5nUGxlZGdlQnVpbGRlcih0eCk7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlZvdGVEZWxlZ2F0aW9uOlxuICAgICAgICAgIHJldHVybiB0aGlzLmdldFZvdGVEZWxlZ2F0aW9uQnVpbGRlcih0eCk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCd1bnN1cHBvcnRlZCB0cmFuc2FjdGlvbicpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldFdhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlcih0eD86IFRyYW5zYWN0aW9uKTogV2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFdhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0VHJhbnNmZXJCdWlsZGVyKHR4PzogVHJhbnNhY3Rpb24pOiBUcmFuc2ZlckJ1aWxkZXIge1xuICAgIHJldHVybiBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgVHJhbnNmZXJCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIGdldFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIodHg/OiBUcmFuc2FjdGlvbik6IFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIge1xuICAgIHJldHVybiBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgU3Rha2luZ0FjdGl2YXRlQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICBnZXRWb3RlRGVsZWdhdGlvbkJ1aWxkZXIodHg/OiBUcmFuc2FjdGlvbik6IFZvdGVEZWxlZ2F0aW9uQnVpbGRlciB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBWb3RlRGVsZWdhdGlvbkJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykpO1xuICB9XG5cbiAgZ2V0U3Rha2luZ0NsYWltUmV3YXJkc0J1aWxkZXIodHg/OiBUcmFuc2FjdGlvbik6IFN0YWtpbmdDbGFpbVJld2FyZHNCdWlsZGVyIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFN0YWtpbmdDbGFpbVJld2FyZHNCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIGdldFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcih0eD86IFRyYW5zYWN0aW9uKTogU3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICBnZXRTdGFraW5nV2l0aGRyYXdCdWlsZGVyKHR4PzogVHJhbnNhY3Rpb24pOiBTdGFraW5nV2l0aGRyYXdCdWlsZGVyIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFN0YWtpbmdXaXRoZHJhd0J1aWxkZXIodGhpcy5fY29pbkNvbmZpZykpO1xuICB9XG5cbiAgZ2V0U3Rha2luZ1BsZWRnZUJ1aWxkZXIodHg/OiBUcmFuc2FjdGlvbik6IFN0YWtpbmdQbGVkZ2VCdWlsZGVyIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFN0YWtpbmdQbGVkZ2VCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBidWlsZGVyIHdpdGggdGhlIGdpdmVuIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb24gfCB1bmRlZmluZWR9IHR4IC0gdGhlIHRyYW5zYWN0aW9uIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgYnVpbGRlclxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uQnVpbGRlcn0gYnVpbGRlciAtIHRoZSBidWlsZGVyIHRvIGJlIGluaXRpYWxpemVkXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IHRoZSBidWlsZGVyIGluaXRpYWxpemVkXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBpbml0aWFsaXplQnVpbGRlcjxUIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyPih0eDogVHJhbnNhY3Rpb24gfCB1bmRlZmluZWQsIGJ1aWxkZXI6IFQpOiBUIHtcbiAgICBpZiAodHgpIHtcbiAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIH1cbiAgICByZXR1cm4gYnVpbGRlcjtcbiAgfVxufVxuIl19
|
package/dist/src/lib/utils.d.ts
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import { AddressFormat, BaseUtils } from '@bitgo-beta/sdk-core';
|
|
2
|
+
import { DRep, Address } from '@emurgo/cardano-serialization-lib-nodejs';
|
|
2
3
|
import { KeyPair } from './keyPair';
|
|
4
|
+
export declare const MIN_ADA_FOR_ONE_ASSET = "1500000";
|
|
5
|
+
export declare const VOTE_ALWAYS_ABSTAIN = "always-abstain";
|
|
6
|
+
export declare const VOTE_ALWAYS_NO_CONFIDENCE = "always-no-confidence";
|
|
3
7
|
export declare class Utils implements BaseUtils {
|
|
4
8
|
createBaseAddressWithStakeAndPaymentKey(stakeKeyPair: KeyPair, paymentKeyPair: KeyPair, network: AddressFormat): string;
|
|
5
9
|
validateBlake2b(hash: string): boolean;
|
|
6
10
|
getRewardAddress(stakingPubKey: string, coinName: string): string;
|
|
11
|
+
isValidDRepId(dRepId: string): boolean;
|
|
12
|
+
getDRepFromDRepId(dRepId: string): DRep;
|
|
13
|
+
getDRepIdFromDRep(dRep: DRep): string;
|
|
7
14
|
/** @inheritdoc */
|
|
8
15
|
isValidAddress(address: string): boolean;
|
|
9
16
|
/** @inheritdoc */
|
|
@@ -17,6 +24,28 @@ export declare class Utils implements BaseUtils {
|
|
|
17
24
|
isValidSignature(signature: string): boolean;
|
|
18
25
|
/** @inheritdoc */
|
|
19
26
|
isValidTransactionId(txId: string): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Get the transaction body from a serialized transaction
|
|
29
|
+
* @param {string} serializedTx - serialized transaction in hex or base64 format
|
|
30
|
+
* @returns {string} transaction body in hex format
|
|
31
|
+
*/
|
|
32
|
+
getTransactionBody(serializedTx: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* Decode wallet address from string.
|
|
35
|
+
* Attempts to decode as Shelley (bech32) first, then Byron (base58).
|
|
36
|
+
* @param {string} address - Valid Byron or Shelley-era address.
|
|
37
|
+
* @returns {Address} - Valid address object.
|
|
38
|
+
* @throws {InvalidAddressError} If the address is neither valid Shelley nor Byron.
|
|
39
|
+
*/
|
|
40
|
+
getWalletAddress(address: string): Address;
|
|
41
|
+
/**
|
|
42
|
+
* Decode address string from Address object.
|
|
43
|
+
* Attempts to decode as Shelley (bech32) first, then Byron (base58).
|
|
44
|
+
* @param {Address} address - Valid Address object
|
|
45
|
+
* @returns {string} - Valid Byron or Shelley-era address string.
|
|
46
|
+
* @throws {InvalidAddressError} If the Address object is neither valid Shelley nor Byron.
|
|
47
|
+
*/
|
|
48
|
+
getAddressString(address: Address): string;
|
|
20
49
|
}
|
|
21
50
|
declare const utils: Utils;
|
|
22
51
|
export default utils;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAuB,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAQL,IAAI,EAIJ,OAAO,EAIR,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,qBAAqB,YAAY,CAAC;AAC/C,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AACpD,eAAO,MAAM,yBAAyB,yBAAyB,CAAC;AAEhE,qBAAa,KAAM,YAAW,SAAS;IACrC,uCAAuC,CACrC,YAAY,EAAE,OAAO,EACrB,cAAc,EAAE,OAAO,EACvB,OAAO,EAAE,aAAa,GACrB,MAAM;IAiCT,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAUtC,gBAAgB,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAcjE,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAStC,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAuCvC,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAWrC,kBAAkB;IAElB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAiDxC,kBAAkB;IAClB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIrC,kBAAkB;IAClB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAKvC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAShC,kBAAkB;IAClB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IASzC,kBAAkB;IAClB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAS5C,kBAAkB;IAClB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI3C;;;;OAIG;IACH,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAQhD;;;;;;OAMG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IA0B1C;;;;;;OAMG;IACH,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;CAuB3C;AAED,QAAA,MAAM,KAAK,OAAc,CAAC;AAE1B,eAAe,KAAK,CAAC"}
|
package/dist/src/lib/utils.js
CHANGED
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Utils = void 0;
|
|
6
|
+
exports.Utils = exports.VOTE_ALWAYS_NO_CONFIDENCE = exports.VOTE_ALWAYS_ABSTAIN = exports.MIN_ADA_FOR_ONE_ASSET = void 0;
|
|
4
7
|
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
5
8
|
const cardano_serialization_lib_nodejs_1 = require("@emurgo/cardano-serialization-lib-nodejs");
|
|
6
9
|
const keyPair_1 = require("./keyPair");
|
|
7
10
|
const bech32_1 = require("bech32");
|
|
11
|
+
const bs58_1 = __importDefault(require("bs58"));
|
|
12
|
+
const cbor_1 = __importDefault(require("cbor"));
|
|
13
|
+
exports.MIN_ADA_FOR_ONE_ASSET = '1500000';
|
|
14
|
+
exports.VOTE_ALWAYS_ABSTAIN = 'always-abstain';
|
|
15
|
+
exports.VOTE_ALWAYS_NO_CONFIDENCE = 'always-no-confidence';
|
|
8
16
|
class Utils {
|
|
9
17
|
createBaseAddressWithStakeAndPaymentKey(stakeKeyPair, paymentKeyPair, network) {
|
|
10
18
|
let baseAddr;
|
|
@@ -15,7 +23,7 @@ class Utils {
|
|
|
15
23
|
// 2. create payment pubKey
|
|
16
24
|
const paymentPub = cardano_serialization_lib_nodejs_1.PublicKey.from_bytes(Buffer.from(paymentKeyPair.getKeys().pub, 'hex'));
|
|
17
25
|
// 3. create full base address for staking
|
|
18
|
-
baseAddr = cardano_serialization_lib_nodejs_1.BaseAddress.new(cardano_serialization_lib_nodejs_1.NetworkInfo.mainnet().network_id(), cardano_serialization_lib_nodejs_1.
|
|
26
|
+
baseAddr = cardano_serialization_lib_nodejs_1.BaseAddress.new(cardano_serialization_lib_nodejs_1.NetworkInfo.mainnet().network_id(), cardano_serialization_lib_nodejs_1.Credential.from_keyhash(paymentPub.hash()), cardano_serialization_lib_nodejs_1.Credential.from_keyhash(stakePub.hash()));
|
|
19
27
|
return baseAddr.to_address().to_bech32();
|
|
20
28
|
}
|
|
21
29
|
else if (network === sdk_core_1.AddressFormat.testnet) {
|
|
@@ -24,7 +32,7 @@ class Utils {
|
|
|
24
32
|
// 2. create payment pubKey
|
|
25
33
|
const paymentPub = cardano_serialization_lib_nodejs_1.PublicKey.from_bytes(Buffer.from(paymentKeyPair.getKeys().pub, 'hex'));
|
|
26
34
|
// 3. create full base address for staking
|
|
27
|
-
const baseAddr = cardano_serialization_lib_nodejs_1.BaseAddress.new(cardano_serialization_lib_nodejs_1.NetworkInfo.
|
|
35
|
+
const baseAddr = cardano_serialization_lib_nodejs_1.BaseAddress.new(cardano_serialization_lib_nodejs_1.NetworkInfo.testnet_preprod().network_id(), cardano_serialization_lib_nodejs_1.Credential.from_keyhash(paymentPub.hash()), cardano_serialization_lib_nodejs_1.Credential.from_keyhash(stakePub.hash()));
|
|
28
36
|
return baseAddr.to_address().to_bech32();
|
|
29
37
|
}
|
|
30
38
|
else {
|
|
@@ -44,13 +52,68 @@ class Utils {
|
|
|
44
52
|
const stakePub = cardano_serialization_lib_nodejs_1.PublicKey.from_bytes(Buffer.from(stakingPubKey, 'hex'));
|
|
45
53
|
let rewardAddress;
|
|
46
54
|
if (coinName === 'ada') {
|
|
47
|
-
rewardAddress = cardano_serialization_lib_nodejs_1.RewardAddress.new(cardano_serialization_lib_nodejs_1.NetworkInfo.mainnet().network_id(), cardano_serialization_lib_nodejs_1.
|
|
55
|
+
rewardAddress = cardano_serialization_lib_nodejs_1.RewardAddress.new(cardano_serialization_lib_nodejs_1.NetworkInfo.mainnet().network_id(), cardano_serialization_lib_nodejs_1.Credential.from_keyhash(stakePub.hash()));
|
|
48
56
|
}
|
|
49
57
|
else {
|
|
50
|
-
rewardAddress = cardano_serialization_lib_nodejs_1.RewardAddress.new(cardano_serialization_lib_nodejs_1.NetworkInfo.
|
|
58
|
+
rewardAddress = cardano_serialization_lib_nodejs_1.RewardAddress.new(cardano_serialization_lib_nodejs_1.NetworkInfo.testnet_preprod().network_id(), cardano_serialization_lib_nodejs_1.Credential.from_keyhash(stakePub.hash()));
|
|
51
59
|
}
|
|
52
60
|
return rewardAddress.to_address().to_bech32();
|
|
53
61
|
}
|
|
62
|
+
isValidDRepId(dRepId) {
|
|
63
|
+
try {
|
|
64
|
+
this.getDRepFromDRepId(dRepId);
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
getDRepFromDRepId(dRepId) {
|
|
72
|
+
switch (dRepId) {
|
|
73
|
+
case 'always-abstain':
|
|
74
|
+
return cardano_serialization_lib_nodejs_1.DRep.new_always_abstain();
|
|
75
|
+
case 'always-no-confidence':
|
|
76
|
+
return cardano_serialization_lib_nodejs_1.DRep.new_always_no_confidence();
|
|
77
|
+
default:
|
|
78
|
+
try {
|
|
79
|
+
// for parsing CIP-105 standard DRep ID
|
|
80
|
+
return cardano_serialization_lib_nodejs_1.DRep.from_bech32(dRepId);
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
// for parsing CIP-129 standard DRep ID
|
|
84
|
+
// https://cips.cardano.org/cip/CIP-0129
|
|
85
|
+
const decodedBech32 = bech32_1.bech32.decode(dRepId);
|
|
86
|
+
const decodedBytes = Buffer.from(bech32_1.bech32.fromWords(decodedBech32.words));
|
|
87
|
+
const header = decodedBytes[0];
|
|
88
|
+
const keyBytes = decodedBytes.subarray(1);
|
|
89
|
+
const keyType = (header & 0xf0) >> 4;
|
|
90
|
+
const credentialType = header & 0x0f;
|
|
91
|
+
if (keyType !== 0x02) {
|
|
92
|
+
throw new Error('Invalid key type for DRep');
|
|
93
|
+
}
|
|
94
|
+
switch (credentialType) {
|
|
95
|
+
case 0x02:
|
|
96
|
+
const ed25519KeyHash = cardano_serialization_lib_nodejs_1.Ed25519KeyHash.from_bytes(keyBytes);
|
|
97
|
+
return cardano_serialization_lib_nodejs_1.DRep.new_key_hash(ed25519KeyHash);
|
|
98
|
+
case 0x03:
|
|
99
|
+
const scriptHash = cardano_serialization_lib_nodejs_1.ScriptHash.from_bytes(keyBytes);
|
|
100
|
+
return cardano_serialization_lib_nodejs_1.DRep.new_script_hash(scriptHash);
|
|
101
|
+
default:
|
|
102
|
+
throw new Error('Invalid credential type for DRep');
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
getDRepIdFromDRep(dRep) {
|
|
108
|
+
switch (dRep.kind()) {
|
|
109
|
+
case cardano_serialization_lib_nodejs_1.DRepKind.AlwaysAbstain:
|
|
110
|
+
return exports.VOTE_ALWAYS_ABSTAIN;
|
|
111
|
+
case cardano_serialization_lib_nodejs_1.DRepKind.AlwaysNoConfidence:
|
|
112
|
+
return exports.VOTE_ALWAYS_NO_CONFIDENCE;
|
|
113
|
+
default:
|
|
114
|
+
return dRep.to_bech32();
|
|
115
|
+
}
|
|
116
|
+
}
|
|
54
117
|
/** @inheritdoc */
|
|
55
118
|
// this will validate both stake and payment addresses
|
|
56
119
|
isValidAddress(address) {
|
|
@@ -58,22 +121,43 @@ class Utils {
|
|
|
58
121
|
const BASE_ADDR_LEN = 92;
|
|
59
122
|
const REWARD_AND_ENTERPRISE_ADDR_LEN = 47;
|
|
60
123
|
const POINTER_ADDR_LEN = 52;
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
124
|
+
const VALIDATOR_ADDR_LEN = 56;
|
|
125
|
+
//Check for Shelley-era (Bech32) addresses
|
|
126
|
+
if (new RegExp(`^(${bech32PrefixList.join('|')})`).test(address)) {
|
|
127
|
+
try {
|
|
128
|
+
const decodedBech = bech32_1.bech32.decode(address, 108);
|
|
129
|
+
const wordLength = decodedBech.words.length;
|
|
130
|
+
if (bech32PrefixList.includes(decodedBech.prefix) &&
|
|
131
|
+
(wordLength === BASE_ADDR_LEN ||
|
|
132
|
+
wordLength === REWARD_AND_ENTERPRISE_ADDR_LEN ||
|
|
133
|
+
wordLength === POINTER_ADDR_LEN)) {
|
|
134
|
+
return true;
|
|
135
|
+
}
|
|
66
136
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
wordLength !== POINTER_ADDR_LEN) {
|
|
70
|
-
return false;
|
|
137
|
+
catch (e) {
|
|
138
|
+
console.log(`Address: ${address} failed Bech32 test with error: ${e}`);
|
|
71
139
|
}
|
|
140
|
+
}
|
|
141
|
+
//Check for Validator addresses
|
|
142
|
+
if (new RegExp(`^(?!pool)[a-z0-9]{${VALIDATOR_ADDR_LEN}}$`).test(address)) {
|
|
72
143
|
return true;
|
|
73
144
|
}
|
|
74
|
-
|
|
75
|
-
|
|
145
|
+
//Check for Byron-era address
|
|
146
|
+
try {
|
|
147
|
+
// Reject Daedalus wallet addresses (Byron-era addresses starting with "DdzFF")
|
|
148
|
+
if (address.startsWith('DdzFF')) {
|
|
149
|
+
console.log(`Rejecting Daedalus wallet address: ${address}`);
|
|
150
|
+
return false;
|
|
151
|
+
}
|
|
152
|
+
const decoded = bs58_1.default.decode(address);
|
|
153
|
+
const cborData = cbor_1.default.decodeFirstSync(decoded);
|
|
154
|
+
return Array.isArray(cborData) && cborData.length >= 2;
|
|
155
|
+
}
|
|
156
|
+
catch (e) {
|
|
157
|
+
console.log(`Address: ${address} failed Byron test with error: ${e}`);
|
|
158
|
+
console.log(e.stack);
|
|
76
159
|
}
|
|
160
|
+
return false;
|
|
77
161
|
}
|
|
78
162
|
/** @inheritdoc */
|
|
79
163
|
isValidBlockId(hash) {
|
|
@@ -117,8 +201,77 @@ class Utils {
|
|
|
117
201
|
isValidTransactionId(txId) {
|
|
118
202
|
return this.validateBlake2b(txId);
|
|
119
203
|
}
|
|
204
|
+
/**
|
|
205
|
+
* Get the transaction body from a serialized transaction
|
|
206
|
+
* @param {string} serializedTx - serialized transaction in hex or base64 format
|
|
207
|
+
* @returns {string} transaction body in hex format
|
|
208
|
+
*/
|
|
209
|
+
getTransactionBody(serializedTx) {
|
|
210
|
+
const HEX_REGEX = /^[0-9a-fA-F]+$/;
|
|
211
|
+
const bufferRawTransaction = HEX_REGEX.test(serializedTx)
|
|
212
|
+
? Buffer.from(serializedTx, 'hex')
|
|
213
|
+
: Buffer.from(serializedTx, 'base64');
|
|
214
|
+
return Buffer.from(cardano_serialization_lib_nodejs_1.Transaction.from_bytes(bufferRawTransaction).body().to_bytes()).toString('hex');
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Decode wallet address from string.
|
|
218
|
+
* Attempts to decode as Shelley (bech32) first, then Byron (base58).
|
|
219
|
+
* @param {string} address - Valid Byron or Shelley-era address.
|
|
220
|
+
* @returns {Address} - Valid address object.
|
|
221
|
+
* @throws {InvalidAddressError} If the address is neither valid Shelley nor Byron.
|
|
222
|
+
*/
|
|
223
|
+
getWalletAddress(address) {
|
|
224
|
+
if (!address || typeof address !== 'string') {
|
|
225
|
+
throw new sdk_core_1.InvalidAddressError('Provided address is not a valid string');
|
|
226
|
+
}
|
|
227
|
+
// Try decoding as a Shelley (bech32) address first
|
|
228
|
+
try {
|
|
229
|
+
return cardano_serialization_lib_nodejs_1.Address.from_bech32(address);
|
|
230
|
+
}
|
|
231
|
+
catch (e) {
|
|
232
|
+
console.error(`Could not decode shelly address from string '${address}'`);
|
|
233
|
+
}
|
|
234
|
+
// Try decoding as a Byron (base58) address later
|
|
235
|
+
try {
|
|
236
|
+
// Reject Daedalus wallet addresses (Byron-era addresses starting with "DdzFF")
|
|
237
|
+
if (address.startsWith('DdzFF')) {
|
|
238
|
+
throw new sdk_core_1.InvalidAddressError('Provided string is a Daedalus address');
|
|
239
|
+
}
|
|
240
|
+
return cardano_serialization_lib_nodejs_1.ByronAddress.from_base58(address).to_address();
|
|
241
|
+
}
|
|
242
|
+
catch (e) {
|
|
243
|
+
console.error(`Could not decode byron address from string '${address}'`);
|
|
244
|
+
}
|
|
245
|
+
throw new sdk_core_1.InvalidAddressError('Provided string is not a valid Shelley or Byron address');
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Decode address string from Address object.
|
|
249
|
+
* Attempts to decode as Shelley (bech32) first, then Byron (base58).
|
|
250
|
+
* @param {Address} address - Valid Address object
|
|
251
|
+
* @returns {string} - Valid Byron or Shelley-era address string.
|
|
252
|
+
* @throws {InvalidAddressError} If the Address object is neither valid Shelley nor Byron.
|
|
253
|
+
*/
|
|
254
|
+
getAddressString(address) {
|
|
255
|
+
// Check all Shelley address types
|
|
256
|
+
if (cardano_serialization_lib_nodejs_1.BaseAddress.from_address(address) ||
|
|
257
|
+
cardano_serialization_lib_nodejs_1.EnterpriseAddress.from_address(address) ||
|
|
258
|
+
cardano_serialization_lib_nodejs_1.RewardAddress.from_address(address) ||
|
|
259
|
+
cardano_serialization_lib_nodejs_1.PointerAddress.from_address(address)) {
|
|
260
|
+
return address.to_bech32();
|
|
261
|
+
}
|
|
262
|
+
const byronAddress = cardano_serialization_lib_nodejs_1.ByronAddress.from_address(address);
|
|
263
|
+
// Reject Daedalus wallet addresses (Byron-era addresses starting with "DdzFF")
|
|
264
|
+
if (byronAddress) {
|
|
265
|
+
if (byronAddress.to_base58().startsWith('DdzFF')) {
|
|
266
|
+
throw new sdk_core_1.InvalidAddressError('Provided address is a Daedalus address');
|
|
267
|
+
}
|
|
268
|
+
return byronAddress.to_base58();
|
|
269
|
+
}
|
|
270
|
+
// If neither, it's invalid
|
|
271
|
+
throw new sdk_core_1.InvalidAddressError('Provided Address is not a valid Shelley or Byron address');
|
|
272
|
+
}
|
|
120
273
|
}
|
|
121
274
|
exports.Utils = Utils;
|
|
122
275
|
const utils = new Utils();
|
|
123
276
|
exports.default = utils;
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUFnRTtBQUNoRSwrRkFPa0Q7QUFDbEQsdUNBQW9DO0FBQ3BDLG1DQUFnQztBQUVoQyxNQUFhLEtBQUs7SUFDaEIsdUNBQXVDLENBQ3JDLFlBQXFCLEVBQ3JCLGNBQXVCLEVBQ3ZCLE9BQXNCO1FBRXRCLElBQUksUUFBUSxDQUFDO1FBQ2IsSUFBSSxPQUFPLEtBQUssd0JBQWEsQ0FBQyxPQUFPLEVBQUU7WUFDckMseUJBQXlCO1lBQ3pCLE1BQU0sR0FBRyxHQUFHLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUM7WUFFdkMsTUFBTSxRQUFRLEdBQUcsNENBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUMvRCwyQkFBMkI7WUFDM0IsTUFBTSxVQUFVLEdBQUcsNENBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDMUYsMENBQTBDO1lBQzFDLFFBQVEsR0FBRyw4Q0FBVyxDQUFDLEdBQUcsQ0FDeEIsOENBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxVQUFVLEVBQUUsRUFDbEMsa0RBQWUsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQy9DLGtEQUFlLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUM5QyxDQUFDO1lBQ0YsT0FBTyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDMUM7YUFBTSxJQUFJLE9BQU8sS0FBSyx3QkFBYSxDQUFDLE9BQU8sRUFBRTtZQUM1Qyx5QkFBeUI7WUFDekIs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Q0FBQztDQUNGO0FBeElELHNCQXdJQztBQUVELE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7QUFFMUIsa0JBQWUsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWRkcmVzc0Zvcm1hdCwgQmFzZVV0aWxzIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHtcbiAgQmFzZUFkZHJlc3MsXG4gIFB1YmxpY0tleSxcbiAgRWQyNTUxOVNpZ25hdHVyZSxcbiAgTmV0d29ya0luZm8sXG4gIFN0YWtlQ3JlZGVudGlhbCxcbiAgUmV3YXJkQWRkcmVzcyxcbn0gZnJvbSAnQGVtdXJnby9jYXJkYW5vLXNlcmlhbGl6YXRpb24tbGliLW5vZGVqcyc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmltcG9ydCB7IGJlY2gzMiB9IGZyb20gJ2JlY2gzMic7XG5cbmV4cG9ydCBjbGFzcyBVdGlscyBpbXBsZW1lbnRzIEJhc2VVdGlscyB7XG4gIGNyZWF0ZUJhc2VBZGRyZXNzV2l0aFN0YWtlQW5kUGF5bWVudEtleShcbiAgICBzdGFrZUtleVBhaXI6IEtleVBhaXIsXG4gICAgcGF5bWVudEtleVBhaXI6IEtleVBhaXIsXG4gICAgbmV0d29yazogQWRkcmVzc0Zvcm1hdFxuICApOiBzdHJpbmcge1xuICAgIGxldCBiYXNlQWRkcjtcbiAgICBpZiAobmV0d29yayA9PT0gQWRkcmVzc0Zvcm1hdC5tYWlubmV0KSB7XG4gICAgICAvLyAxLiBjcmVhdGUgc3Rha2UgcHViS2V5XG4gICAgICBjb25zdCBrZXkgPSBzdGFrZUtleVBhaXIuZ2V0S2V5cygpLnB1YjtcblxuICAgICAgY29uc3Qgc3Rha2VQdWIgPSBQdWJsaWNLZXkuZnJvbV9ieXRlcyhCdWZmZXIuZnJvbShrZXksICdoZXgnKSk7XG4gICAgICAvLyAyLiBjcmVhdGUgcGF5bWVudCBwdWJLZXlcbiAgICAgIGNvbnN0IHBheW1lbnRQdWIgPSBQdWJsaWNLZXkuZnJvbV9ieXRlcyhCdWZmZXIuZnJvbShwYXltZW50S2V5UGFpci5nZXRLZXlzKCkucHViLCAnaGV4JykpO1xuICAgICAgLy8gMy4gY3JlYXRlIGZ1bGwgYmFzZSBhZGRyZXNzIGZvciBzdGFraW5nXG4gICAgICBiYXNlQWRkciA9IEJhc2VBZGRyZXNzLm5ldyhcbiAgICAgICAgTmV0d29ya0luZm8ubWFpbm5ldCgpLm5ldHdvcmtfaWQoKSxcbiAgICAgICAgU3Rha2VDcmVkZW50aWFsLmZyb21fa2V5aGFzaChwYXltZW50UHViLmhhc2goKSksXG4gICAgICAgIFN0YWtlQ3JlZGVudGlhbC5mcm9tX2tleWhhc2goc3Rha2VQdWIuaGFzaCgpKVxuICAgICAgKTtcbiAgICAgIHJldHVybiBiYXNlQWRkci50b19hZGRyZXNzKCkudG9fYmVjaDMyKCk7XG4gICAgfSBlbHNlIGlmIChuZXR3b3JrID09PSBBZGRyZXNzRm9ybWF0LnRlc3RuZXQpIHtcbiAgICAgIC8vIDEuIGNyZWF0ZSBzdGFrZSBwdWJLZXlcbiAgICAgIGNvbnN0IHN0YWtlUHViID0gUHVibGljS2V5LmZyb21fYnl0ZXMoQnVmZmVyLmZyb20oc3Rha2VLZXlQYWlyLmdldEtleXMoKS5wdWIsICdoZXgnKSk7XG4gICAgICAvLyAyLiBjcmVhdGUgcGF5bWVudCBwdWJLZXlcbiAgICAgIGNvbnN0IHBheW1lbnRQdWIgPSBQdWJsaWNLZXkuZnJvbV9ieXRlcyhCdWZmZXIuZnJvbShwYXltZW50S2V5UGFpci5nZXRLZXlzKCkucHViLCAnaGV4JykpO1xuICAgICAgLy8gMy4gY3JlYXRlIGZ1bGwgYmFzZSBhZGRyZXNzIGZvciBzdGFraW5nXG4gICAgICBjb25zdCBiYXNlQWRkciA9IEJhc2VBZGRyZXNzLm5ldyhcbiAgICAgICAgTmV0d29ya0luZm8udGVzdG5ldCgpLm5ldHdvcmtfaWQoKSxcbiAgICAgICAgU3Rha2VDcmVkZW50aWFsLmZyb21fa2V5aGFzaChwYXltZW50UHViLmhhc2goKSksXG4gICAgICAgIFN0YWtlQ3JlZGVudGlhbC5mcm9tX2tleWhhc2goc3Rha2VQdWIuaGFzaCgpKVxuICAgICAgKTtcbiAgICAgIHJldHVybiBiYXNlQWRkci50b19hZGRyZXNzKCkudG9fYmVjaDMyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW1wcm9wZXIgTmV0d29yayBUeXBlIScpO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlQmxha2UyYihoYXNoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIWhhc2gpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGhhc2gubGVuZ3RoICE9PSA2NCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gaGFzaC5tYXRjaCgvXlthLXpBLVowLTldKyQvKSAhPT0gbnVsbDtcbiAgfVxuXG4gIGdldFJld2FyZEFkZHJlc3Moc3Rha2luZ1B1YktleTogc3RyaW5nLCBjb2luTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdGFrZVB1YiA9IFB1YmxpY0tleS5mcm9tX2J5dGVzKEJ1ZmZlci5mcm9tKHN0YWtpbmdQdWJLZXksICdoZXgnKSk7XG4gICAgbGV0IHJld2FyZEFkZHJlc3M7XG4gICAgaWYgKGNvaW5OYW1lID09PSAnYWRhJykge1xuICAgICAgcmV3YXJkQWRkcmVzcyA9IFJld2FyZEFkZHJlc3MubmV3KFxuICAgICAgICBOZXR3b3JrSW5mby5tYWlubmV0KCkubmV0d29ya19pZCgpLFxuICAgICAgICBTdGFrZUNyZWRlbnRpYWwuZnJvbV9rZXloYXNoKHN0YWtlUHViLmhhc2goKSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJld2FyZEFkZHJlc3MgPSBSZXdhcmRBZGRyZXNzLm5ldyhcbiAgICAgICAgTmV0d29ya0luZm8udGVzdG5ldCgpLm5ldHdvcmtfaWQoKSxcbiAgICAgICAgU3Rha2VDcmVkZW50aWFsLmZyb21fa2V5aGFzaChzdGFrZVB1Yi5oYXNoKCkpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gcmV3YXJkQWRkcmVzcy50b19hZGRyZXNzKCkudG9fYmVjaDMyKCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgLy8gdGhpcyB3aWxsIHZhbGlkYXRlIGJvdGggc3Rha2UgYW5kIHBheW1lbnQgYWRkcmVzc2VzXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGJlY2gzMlByZWZpeExpc3QgPSBbJ2FkZHInLCAnYWRkcl90ZXN0JywgJ3N0YWtlJywgJ3N0YWtlX3Rlc3QnXTtcbiAgICBjb25zdCBCQVNFX0FERFJfTEVOID0gOTI7XG4gICAgY29uc3QgUkVXQVJEX0FORF9FTlRFUlBSSVNFX0FERFJfTEVOID0gNDc7XG4gICAgY29uc3QgUE9JTlRFUl9BRERSX0xFTiA9IDUyO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRlY29kZWRCZWNoID0gYmVjaDMyLmRlY29kZShhZGRyZXNzLCAxMDgpO1xuICAgICAgY29uc3Qgd29yZExlbmd0aCA9IGRlY29kZWRCZWNoLndvcmRzLmxlbmd0aDtcbiAgICAgIGlmICghYmVjaDMyUHJlZml4TGlzdC5pbmNsdWRlcyhkZWNvZGVkQmVjaC5wcmVmaXgpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgd29yZExlbmd0aCAhPT0gQkFTRV9BRERSX0xFTiAmJlxuICAgICAgICB3b3JkTGVuZ3RoICE9PSBSRVdBUkRfQU5EX0VOVEVSUFJJU0VfQUREUl9MRU4gJiZcbiAgICAgICAgd29yZExlbmd0aCAhPT0gUE9JTlRFUl9BRERSX0xFTlxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkQmxvY2tJZChoYXNoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52YWxpZGF0ZUJsYWtlMmIoaGFzaCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFByaXZhdGVLZXkoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvLyB0aGlzIHdpbGwgcmV0dXJuIHRydWUgZm9yIGJvdGggZXh0ZW5kZWQgYW5kIG5vbi1leHRlbmRlZCBFRDI1NTE5IGtleXNcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkS2V5KGtleSk7XG4gIH1cblxuICBpc1ZhbGlkS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIG5ldyBLZXlQYWlyKHsgcHJ2OiBrZXkgfSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFB1YmxpY0tleShwdWJLZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBuZXcgS2V5UGFpcih7IHB1YjogcHViS2V5IH0pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRTaWduYXR1cmUoc2lnbmF0dXJlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgRWQyNTUxOVNpZ25hdHVyZS5mcm9tX2hleChzaWduYXR1cmUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRUcmFuc2FjdGlvbklkKHR4SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhbGlkYXRlQmxha2UyYih0eElkKTtcbiAgfVxufVxuXG5jb25zdCB1dGlscyA9IG5ldyBVdGlscygpO1xuXG5leHBvcnQgZGVmYXVsdCB1dGlscztcbiJdfQ==
|
|
277
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQUFxRjtBQUNyRiwrRkFnQmtEO0FBQ2xELHVDQUFvQztBQUNwQyxtQ0FBZ0M7QUFDaEMsZ0RBQXdCO0FBQ3hCLGdEQUF3QjtBQUVYLFFBQUEscUJBQXFCLEdBQUcsU0FBUyxDQUFDO0FBQ2xDLFFBQUEsbUJBQW1CLEdBQUcsZ0JBQWdCLENBQUM7QUFDdkMsUUFBQSx5QkFBeUIsR0FBRyxzQkFBc0IsQ0FBQztBQUVoRSxNQUFhLEtBQUs7SUFDaEIsdUNBQXVDLENBQ3JDLFlBQXFCLEVBQ3JCLGNBQXVCLEVBQ3ZCLE9BQXNCO1FBRXRCLElBQUksUUFBUSxDQUFDO1FBQ2IsSUFBSSxPQUFPLEtBQUssd0JBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN0Qyx5QkFBeUI7WUFDekIsTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQztZQUV2QyxNQUFNLFFBQVEsR0FBRyw0Q0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQy9ELDJCQUEyQjtZQUMzQixNQUFNLFVBQVUsR0FBRyw0Q0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUMxRiwwQ0FBMEM7WUFDMUMsUUFBUSxHQUFHLDhDQUFXLENBQUMsR0FBRyxDQUN4Qiw4Q0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUNsQyw2Q0FBVSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsRUFDMUMsNkNBQVUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUks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QUFDO1lBQ1gsT0FBTyxDQUFDLEtBQUssQ0FBQywrQ0FBK0MsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUMzRSxDQUFDO1FBQ0QsTUFBTSxJQUFJLDhCQUFtQixDQUFDLHlEQUF5RCxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGdCQUFnQixDQUFDLE9BQWdCO1FBQy9CLGtDQUFrQztRQUNsQyxJQUNFLDhDQUFXLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQztZQUNqQyxvREFBaUIsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO1lBQ3ZDLGdEQUFhLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQztZQUNuQyxpREFBYyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsRUFDcEMsQ0FBQztZQUNELE9BQU8sT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzdCLENBQUM7UUFFRCxNQUFNLFlBQVksR0FBRywrQ0FBWSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4RCwrRUFBK0U7UUFDL0UsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNqQixJQUFJLFlBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDakQsTUFBTSxJQUFJLDhCQUFtQixDQUFDLHdDQUF3QyxDQUFDLENBQUM7WUFDMUUsQ0FBQztZQUNELE9BQU8sWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2xDLENBQUM7UUFFRCwyQkFBMkI7UUFDM0IsTUFBTSxJQUFJLDhCQUFtQixDQUFDLDBEQUEwRCxDQUFDLENBQUM7SUFDNUYsQ0FBQztDQUNGO0FBclNELHNCQXFTQztBQUVELE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7QUFFMUIsa0JBQWUsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWRkcmVzc0Zvcm1hdCwgQmFzZVV0aWxzLCBJbnZhbGlkQWRkcmVzc0Vycm9yIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHtcbiAgQmFzZUFkZHJlc3MsXG4gIFB1YmxpY0tleSxcbiAgRWQyNTUxOVNpZ25hdHVyZSxcbiAgTmV0d29ya0luZm8sXG4gIENyZWRlbnRpYWwsXG4gIFJld2FyZEFkZHJlc3MsXG4gIFRyYW5zYWN0aW9uIGFzIENhcmRhbm9UcmFuc2FjdGlvbixcbiAgRFJlcCxcbiAgRWQyNTUxOUtleUhhc2gsXG4gIFNjcmlwdEhhc2gsXG4gIERSZXBLaW5kLFxuICBBZGRyZXNzLFxuICBFbnRlcnByaXNlQWRkcmVzcyxcbiAgUG9pbnRlckFkZHJlc3MsXG4gIEJ5cm9uQWRkcmVzcyxcbn0gZnJvbSAnQGVtdXJnby9jYXJkYW5vLXNlcmlhbGl6YXRpb24tbGliLW5vZGVqcyc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmltcG9ydCB7IGJlY2gzMiB9IGZyb20gJ2JlY2gzMic7XG5pbXBvcnQgYnM1OCBmcm9tICdiczU4JztcbmltcG9ydCBjYm9yIGZyb20gJ2Nib3InO1xuXG5leHBvcnQgY29uc3QgTUlOX0FEQV9GT1JfT05FX0FTU0VUID0gJzE1MDAwMDAnO1xuZXhwb3J0IGNvbnN0IFZPVEVfQUxXQVlTX0FCU1RBSU4gPSAnYWx3YXlzLWFic3RhaW4nO1xuZXhwb3J0IGNvbnN0IFZPVEVfQUxXQVlTX05PX0NPTkZJREVOQ0UgPSAnYWx3YXlzLW5vLWNvbmZpZGVuY2UnO1xuXG5leHBvcnQgY2xhc3MgVXRpbHMgaW1wbGVtZW50cyBCYXNlVXRpbHMge1xuICBjcmVhdGVCYXNlQWRkcmVzc1dpdGhTdGFrZUFuZFBheW1lbnRLZXkoXG4gICAgc3Rha2VLZXlQYWlyOiBLZXlQYWlyLFxuICAgIHBheW1lbnRLZXlQYWlyOiBLZXlQYWlyLFxuICAgIG5ldHdvcms6IEFkZHJlc3NGb3JtYXRcbiAgKTogc3RyaW5nIHtcbiAgICBsZXQgYmFzZUFkZHI7XG4gICAgaWYgKG5ldHdvcmsgPT09IEFkZHJlc3NGb3JtYXQubWFpbm5ldCkge1xuICAgICAgLy8gMS4gY3JlYXRlIHN0YWtlIHB1YktleVxuICAgICAgY29uc3Qga2V5ID0gc3Rha2VLZXlQYWlyLmdldEtleXMoKS5wdWI7XG5cbiAgICAgIGNvbnN0IHN0YWtlUHViID0gUHVibGljS2V5LmZyb21fYnl0ZXMoQnVmZmVyLmZyb20oa2V5LCAnaGV4JykpO1xuICAgICAgLy8gMi4gY3JlYXRlIHBheW1lbnQgcHViS2V5XG4gICAgICBjb25zdCBwYXltZW50UHViID0gUHVibGljS2V5LmZyb21fYnl0ZXMoQnVmZmVyLmZyb20ocGF5bWVudEtleVBhaXIuZ2V0S2V5cygpLnB1YiwgJ2hleCcpKTtcbiAgICAgIC8vIDMuIGNyZWF0ZSBmdWxsIGJhc2UgYWRkcmVzcyBmb3Igc3Rha2luZ1xuICAgICAgYmFzZUFkZHIgPSBCYXNlQWRkcmVzcy5uZXcoXG4gICAgICAgIE5ldHdvcmtJbmZvLm1haW5uZXQoKS5uZXR3b3JrX2lkKCksXG4gICAgICAgIENyZWRlbnRpYWwuZnJvbV9rZXloYXNoKHBheW1lbnRQdWIuaGFzaCgpKSxcbiAgICAgICAgQ3JlZGVudGlhbC5mcm9tX2tleWhhc2goc3Rha2VQdWIuaGFzaCgpKVxuICAgICAgKTtcbiAgICAgIHJldHVybiBiYXNlQWRkci50b19hZGRyZXNzKCkudG9fYmVjaDMyKCk7XG4gICAgfSBlbHNlIGlmIChuZXR3b3JrID09PSBBZGRyZXNzRm9ybWF0LnRlc3RuZXQpIHtcbiAgICAgIC8vIDEuIGNyZWF0ZSBzdGFrZSBwdWJLZXlcbiAgICAgIGNvbnN0IHN0YWtlUHViID0gUHVibGljS2V5LmZyb21fYnl0ZXMoQnVmZmVyLmZyb20oc3Rha2VLZXlQYWlyLmdldEtleXMoKS5wdWIsICdoZXgnKSk7XG4gICAgICAvLyAyLiBjcmVhdGUgcGF5bWVudCBwdWJLZXlcbiAgICAgIGNvbnN0IHBheW1lbnRQdWIgPSBQdWJsaWNLZXkuZnJvbV9ieXRlcyhCdWZmZXIuZnJvbShwYXltZW50S2V5UGFpci5nZXRLZXlzKCkucHViLCAnaGV4JykpO1xuICAgICAgLy8gMy4gY3JlYXRlIGZ1bGwgYmFzZSBhZGRyZXNzIGZvciBzdGFraW5nXG4gICAgICBjb25zdCBiYXNlQWRkciA9IEJhc2VBZGRyZXNzLm5ldyhcbiAgICAgICAgTmV0d29ya0luZm8udGVzdG5ldF9wcmVwcm9kKCkubmV0d29ya19pZCgpLFxuICAgICAgICBDcmVkZW50aWFsLmZyb21fa2V5aGFzaChwYXltZW50UHViLmhhc2goKSksXG4gICAgICAgIENyZWRlbnRpYWwuZnJvbV9rZXloYXNoKHN0YWtlUHViLmhhc2goKSlcbiAgICAgICk7XG4gICAgICByZXR1cm4gYmFzZUFkZHIudG9fYWRkcmVzcygpLnRvX2JlY2gzMigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ltcHJvcGVyIE5ldHdvcmsgVHlwZSEnKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZUJsYWtlMmIoaGFzaDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCFoYXNoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChoYXNoLmxlbmd0aCAhPT0gNjQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGhhc2gubWF0Y2goL15bYS16QS1aMC05XSskLykgIT09IG51bGw7XG4gIH1cblxuICBnZXRSZXdhcmRBZGRyZXNzKHN0YWtpbmdQdWJLZXk6IHN0cmluZywgY29pbk5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3Rha2VQdWIgPSBQdWJsaWNLZXkuZnJvbV9ieXRlcyhCdWZmZXIuZnJvbShzdGFraW5nUHViS2V5LCAnaGV4JykpO1xuICAgIGxldCByZXdhcmRBZGRyZXNzO1xuICAgIGlmIChjb2luTmFtZSA9PT0gJ2FkYScpIHtcbiAgICAgIHJld2FyZEFkZHJlc3MgPSBSZXdhcmRBZGRyZXNzLm5ldyhOZXR3b3JrSW5mby5tYWlubmV0KCkubmV0d29ya19pZCgpLCBDcmVkZW50aWFsLmZyb21fa2V5aGFzaChzdGFrZVB1Yi5oYXNoKCkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV3YXJkQWRkcmVzcyA9IFJld2FyZEFkZHJlc3MubmV3KFxuICAgICAgICBOZXR3b3JrSW5mby50ZXN0bmV0X3ByZXByb2QoKS5uZXR3b3JrX2lkKCksXG4gICAgICAgIENyZWRlbnRpYWwuZnJvbV9rZXloYXNoKHN0YWtlUHViLmhhc2goKSlcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiByZXdhcmRBZGRyZXNzLnRvX2FkZHJlc3MoKS50b19iZWNoMzIoKTtcbiAgfVxuXG4gIGlzVmFsaWREUmVwSWQoZFJlcElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5nZXREUmVwRnJvbURSZXBJZChkUmVwSWQpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZ2V0RFJlcEZyb21EUmVwSWQoZFJlcElkOiBzdHJpbmcpOiBEUmVwIHtcbiAgICBzd2l0Y2ggKGRSZXBJZCkge1xuICAgICAgY2FzZSAnYWx3YXlzLWFic3RhaW4nOlxuICAgICAgICByZXR1cm4gRFJlcC5uZXdfYWx3YXlzX2Fic3RhaW4oKTtcbiAgICAgIGNhc2UgJ2Fsd2F5cy1uby1jb25maWRlbmNlJzpcbiAgICAgICAgcmV0dXJuIERSZXAubmV3X2Fsd2F5c19ub19jb25maWRlbmNlKCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIGZvciBwYXJzaW5nIENJUC0xMDUgc3RhbmRhcmQgRFJlcCBJRFxuICAgICAgICAgIHJldHVybiBEUmVwLmZyb21fYmVjaDMyKGRSZXBJZCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIC8vIGZvciBwYXJzaW5nIENJUC0xMjkgc3RhbmRhcmQgRFJlcCBJRFxuICAgICAgICAgIC8vIGh0dHBzOi8vY2lwcy5jYXJkYW5vLm9yZy9jaXAvQ0lQLTAxMjlcbiAgICAgICAgICBjb25zdCBkZWNvZGVkQmVjaDMyID0gYmVjaDMyLmRlY29kZShkUmVwSWQpO1xuICAgICAgICAgIGNvbnN0IGRlY29kZWRCeXRlcyA9IEJ1ZmZlci5mcm9tKGJlY2gzMi5mcm9tV29yZHMoZGVjb2RlZEJlY2gzMi53b3JkcykpO1xuICAgICAgICAgIGNvbnN0IGhlYWRlciA9IGRlY29kZWRCeXRlc1swXTtcbiAgICAgICAgICBjb25zdCBrZXlCeXRlcyA9IGRlY29kZWRCeXRlcy5zdWJhcnJheSgxKTtcblxuICAgICAgICAgIGNvbnN0IGtleVR5cGUgPSAoaGVhZGVyICYgMHhmMCkgPj4gNDtcbiAgICAgICAgICBjb25zdCBjcmVkZW50aWFsVHlwZSA9IGhlYWRlciAmIDB4MGY7XG5cbiAgICAgICAgICBpZiAoa2V5VHlwZSAhPT0gMHgwMikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGtleSB0eXBlIGZvciBEUmVwJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc3dpdGNoIChjcmVkZW50aWFsVHlwZSkge1xuICAgICAgICAgICAgY2FzZSAweDAyOlxuICAgICAgICAgICAgICBjb25zdCBlZDI1NTE5S2V5SGFzaCA9IEVkMjU1MTlLZXlIYXNoLmZyb21fYnl0ZXMoa2V5Qnl0ZXMpO1xuICAgICAgICAgICAgICByZXR1cm4gRFJlcC5uZXdfa2V5X2hhc2goZWQyNTUxOUtleUhhc2gpO1xuICAgICAgICAgICAgY2FzZSAweDAzOlxuICAgICAgICAgICAgICBjb25zdCBzY3JpcHRIYXNoID0gU2NyaXB0SGFzaC5mcm9tX2J5dGVzKGtleUJ5dGVzKTtcbiAgICAgICAgICAgICAgcmV0dXJuIERSZXAubmV3X3NjcmlwdF9oYXNoKHNjcmlwdEhhc2gpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNyZWRlbnRpYWwgdHlwZSBmb3IgRFJlcCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldERSZXBJZEZyb21EUmVwKGRSZXA6IERSZXApOiBzdHJpbmcge1xuICAgIHN3aXRjaCAoZFJlcC5raW5kKCkpIHtcbiAgICAgIGNhc2UgRFJlcEtpbmQuQWx3YXlzQWJzdGFpbjpcbiAgICAgICAgcmV0dXJuIFZPVEVfQUxXQVlTX0FCU1RBSU47XG4gICAgICBjYXNlIERSZXBLaW5kLkFsd2F5c05vQ29uZmlkZW5jZTpcbiAgICAgICAgcmV0dXJuIFZPVEVfQUxXQVlTX05PX0NPTkZJREVOQ0U7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZFJlcC50b19iZWNoMzIoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgLy8gdGhpcyB3aWxsIHZhbGlkYXRlIGJvdGggc3Rha2UgYW5kIHBheW1lbnQgYWRkcmVzc2VzXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGJlY2gzMlByZWZpeExpc3QgPSBbJ2FkZHInLCAnYWRkcl90ZXN0JywgJ3N0YWtlJywgJ3N0YWtlX3Rlc3QnXTtcbiAgICBjb25zdCBCQVNFX0FERFJfTEVOID0gOTI7XG4gICAgY29uc3QgUkVXQVJEX0FORF9FTlRFUlBSSVNFX0FERFJfTEVOID0gNDc7XG4gICAgY29uc3QgUE9JTlRFUl9BRERSX0xFTiA9IDUyO1xuICAgIGNvbnN0IFZBTElEQVRPUl9BRERSX0xFTiA9IDU2O1xuXG4gICAgLy9DaGVjayBmb3IgU2hlbGxleS1lcmEgKEJlY2gzMikgYWRkcmVzc2VzXG4gICAgaWYgKG5ldyBSZWdFeHAoYF4oJHtiZWNoMzJQcmVmaXhMaXN0LmpvaW4oJ3wnKX0pYCkudGVzdChhZGRyZXNzKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZGVjb2RlZEJlY2ggPSBiZWNoMzIuZGVjb2RlKGFkZHJlc3MsIDEwOCk7XG4gICAgICAgIGNvbnN0IHdvcmRMZW5ndGggPSBkZWNvZGVkQmVjaC53b3Jkcy5sZW5ndGg7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBiZWNoMzJQcmVmaXhMaXN0LmluY2x1ZGVzKGRlY29kZWRCZWNoLnByZWZpeCkgJiZcbiAgICAgICAgICAod29yZExlbmd0aCA9PT0gQkFTRV9BRERSX0xFTiB8fFxuICAgICAgICAgICAgd29yZExlbmd0aCA9PT0gUkVXQVJEX0FORF9FTlRFUlBSSVNFX0FERFJfTEVOIHx8XG4gICAgICAgICAgICB3b3JkTGVuZ3RoID09PSBQT0lOVEVSX0FERFJfTEVOKVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmxvZyhgQWRkcmVzczogJHthZGRyZXNzfSBmYWlsZWQgQmVjaDMyIHRlc3Qgd2l0aCBlcnJvcjogJHtlfWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vQ2hlY2sgZm9yIFZhbGlkYXRvciBhZGRyZXNzZXNcbiAgICBpZiAobmV3IFJlZ0V4cChgXig/IXBvb2wpW2EtejAtOV17JHtWQUxJREFUT1JfQUREUl9MRU59fSRgKS50ZXN0KGFkZHJlc3MpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvL0NoZWNrIGZvciBCeXJvbi1lcmEgYWRkcmVzc1xuICAgIHRyeSB7XG4gICAgICAvLyBSZWplY3QgRGFlZGFsdXMgd2FsbGV0IGFkZHJlc3NlcyAoQnlyb24tZXJhIGFkZHJlc3NlcyBzdGFydGluZyB3aXRoIFwiRGR6RkZcIilcbiAgICAgIGlmIChhZGRyZXNzLnN0YXJ0c1dpdGgoJ0RkekZGJykpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlamVjdGluZyBEYWVkYWx1cyB3YWxsZXQgYWRkcmVzczogJHthZGRyZXNzfWApO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRlY29kZWQgPSBiczU4LmRlY29kZShhZGRyZXNzKTtcbiAgICAgIGNvbnN0IGNib3JEYXRhID0gY2Jvci5kZWNvZGVGaXJzdFN5bmMoZGVjb2RlZCk7XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShjYm9yRGF0YSkgJiYgY2JvckRhdGEubGVuZ3RoID49IDI7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5sb2coYEFkZHJlc3M6ICR7YWRkcmVzc30gZmFpbGVkIEJ5cm9uIHRlc3Qgd2l0aCBlcnJvcjogJHtlfWApO1xuICAgICAgY29uc29sZS5sb2coZS5zdGFjayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRCbG9ja0lkKGhhc2g6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhbGlkYXRlQmxha2UyYihoYXNoKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkUHJpdmF0ZUtleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIC8vIHRoaXMgd2lsbCByZXR1cm4gdHJ1ZSBmb3IgYm90aCBleHRlbmRlZCBhbmQgbm9uLWV4dGVuZGVkIEVEMjU1MTkga2V5c1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWRLZXkoa2V5KTtcbiAgfVxuXG4gIGlzVmFsaWRLZXkoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgbmV3IEtleVBhaXIoeyBwcnY6IGtleSB9KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkUHVibGljS2V5KHB1YktleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIG5ldyBLZXlQYWlyKHsgcHViOiBwdWJLZXkgfSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFNpZ25hdHVyZShzaWduYXR1cmU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBFZDI1NTE5U2lnbmF0dXJlLmZyb21faGV4KHNpZ25hdHVyZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFRyYW5zYWN0aW9uSWQodHhJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsaWRhdGVCbGFrZTJiKHR4SWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgdHJhbnNhY3Rpb24gYm9keSBmcm9tIGEgc2VyaWFsaXplZCB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2VyaWFsaXplZFR4IC0gc2VyaWFsaXplZCB0cmFuc2FjdGlvbiBpbiBoZXggb3IgYmFzZTY0IGZvcm1hdFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSB0cmFuc2FjdGlvbiBib2R5IGluIGhleCBmb3JtYXRcbiAgICovXG4gIGdldFRyYW5zYWN0aW9uQm9keShzZXJpYWxpemVkVHg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgSEVYX1JFR0VYID0gL15bMC05YS1mQS1GXSskLztcbiAgICBjb25zdCBidWZmZXJSYXdUcmFuc2FjdGlvbiA9IEhFWF9SRUdFWC50ZXN0KHNlcmlhbGl6ZWRUeClcbiAgICAgID8gQnVmZmVyLmZyb20oc2VyaWFsaXplZFR4LCAnaGV4JylcbiAgICAgIDogQnVmZmVyLmZyb20oc2VyaWFsaXplZFR4LCAnYmFzZTY0Jyk7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKENhcmRhbm9UcmFuc2FjdGlvbi5mcm9tX2J5dGVzKGJ1ZmZlclJhd1RyYW5zYWN0aW9uKS5ib2R5KCkudG9fYnl0ZXMoKSkudG9TdHJpbmcoJ2hleCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlY29kZSB3YWxsZXQgYWRkcmVzcyBmcm9tIHN0cmluZy5cbiAgICogQXR0ZW1wdHMgdG8gZGVjb2RlIGFzIFNoZWxsZXkgKGJlY2gzMikgZmlyc3QsIHRoZW4gQnlyb24gKGJhc2U1OCkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIC0gVmFsaWQgQnlyb24gb3IgU2hlbGxleS1lcmEgYWRkcmVzcy5cbiAgICogQHJldHVybnMge0FkZHJlc3N9IC0gVmFsaWQgYWRkcmVzcyBvYmplY3QuXG4gICAqIEB0aHJvd3Mge0ludmFsaWRBZGRyZXNzRXJyb3J9IElmIHRoZSBhZGRyZXNzIGlzIG5laXRoZXIgdmFsaWQgU2hlbGxleSBub3IgQnlyb24uXG4gICAqL1xuICBnZXRXYWxsZXRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IEFkZHJlc3Mge1xuICAgIGlmICghYWRkcmVzcyB8fCB0eXBlb2YgYWRkcmVzcyAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQWRkcmVzc0Vycm9yKCdQcm92aWRlZCBhZGRyZXNzIGlzIG5vdCBhIHZhbGlkIHN0cmluZycpO1xuICAgIH1cblxuICAgIC8vIFRyeSBkZWNvZGluZyBhcyBhIFNoZWxsZXkgKGJlY2gzMikgYWRkcmVzcyBmaXJzdFxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gQWRkcmVzcy5mcm9tX2JlY2gzMihhZGRyZXNzKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBDb3VsZCBub3QgZGVjb2RlIHNoZWxseSBhZGRyZXNzIGZyb20gc3RyaW5nICcke2FkZHJlc3N9J2ApO1xuICAgIH1cblxuICAgIC8vIFRyeSBkZWNvZGluZyBhcyBhIEJ5cm9uIChiYXNlNTgpIGFkZHJlc3MgbGF0ZXJcbiAgICB0cnkge1xuICAgICAgLy8gUmVqZWN0IERhZWRhbHVzIHdhbGxldCBhZGRyZXNzZXMgKEJ5cm9uLWVyYSBhZGRyZXNzZXMgc3RhcnRpbmcgd2l0aCBcIkRkekZGXCIpXG4gICAgICBpZiAoYWRkcmVzcy5zdGFydHNXaXRoKCdEZHpGRicpKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkQWRkcmVzc0Vycm9yKCdQcm92aWRlZCBzdHJpbmcgaXMgYSBEYWVkYWx1cyBhZGRyZXNzJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBCeXJvbkFkZHJlc3MuZnJvbV9iYXNlNTgoYWRkcmVzcykudG9fYWRkcmVzcygpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYENvdWxkIG5vdCBkZWNvZGUgYnlyb24gYWRkcmVzcyBmcm9tIHN0cmluZyAnJHthZGRyZXNzfSdgKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEludmFsaWRBZGRyZXNzRXJyb3IoJ1Byb3ZpZGVkIHN0cmluZyBpcyBub3QgYSB2YWxpZCBTaGVsbGV5IG9yIEJ5cm9uIGFkZHJlc3MnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNvZGUgYWRkcmVzcyBzdHJpbmcgZnJvbSBBZGRyZXNzIG9iamVjdC5cbiAgICogQXR0ZW1wdHMgdG8gZGVjb2RlIGFzIFNoZWxsZXkgKGJlY2gzMikgZmlyc3QsIHRoZW4gQnlyb24gKGJhc2U1OCkuXG4gICAqIEBwYXJhbSB7QWRkcmVzc30gYWRkcmVzcyAtIFZhbGlkIEFkZHJlc3Mgb2JqZWN0XG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVmFsaWQgQnlyb24gb3IgU2hlbGxleS1lcmEgYWRkcmVzcyBzdHJpbmcuXG4gICAqIEB0aHJvd3Mge0ludmFsaWRBZGRyZXNzRXJyb3J9IElmIHRoZSBBZGRyZXNzIG9iamVjdCBpcyBuZWl0aGVyIHZhbGlkIFNoZWxsZXkgbm9yIEJ5cm9uLlxuICAgKi9cbiAgZ2V0QWRkcmVzc1N0cmluZyhhZGRyZXNzOiBBZGRyZXNzKTogc3RyaW5nIHtcbiAgICAvLyBDaGVjayBhbGwgU2hlbGxleSBhZGRyZXNzIHR5cGVzXG4gICAgaWYgKFxuICAgICAgQmFzZUFkZHJlc3MuZnJvbV9hZGRyZXNzKGFkZHJlc3MpIHx8XG4gICAgICBFbnRlcnByaXNlQWRkcmVzcy5mcm9tX2FkZHJlc3MoYWRkcmVzcykgfHxcbiAgICAgIFJld2FyZEFkZHJlc3MuZnJvbV9hZGRyZXNzKGFkZHJlc3MpIHx8XG4gICAgICBQb2ludGVyQWRkcmVzcy5mcm9tX2FkZHJlc3MoYWRkcmVzcylcbiAgICApIHtcbiAgICAgIHJldHVybiBhZGRyZXNzLnRvX2JlY2gzMigpO1xuICAgIH1cblxuICAgIGNvbnN0IGJ5cm9uQWRkcmVzcyA9IEJ5cm9uQWRkcmVzcy5mcm9tX2FkZHJlc3MoYWRkcmVzcyk7XG4gICAgLy8gUmVqZWN0IERhZWRhbHVzIHdhbGxldCBhZGRyZXNzZXMgKEJ5cm9uLWVyYSBhZGRyZXNzZXMgc3RhcnRpbmcgd2l0aCBcIkRkekZGXCIpXG4gICAgaWYgKGJ5cm9uQWRkcmVzcykge1xuICAgICAgaWYgKGJ5cm9uQWRkcmVzcy50b19iYXNlNTgoKS5zdGFydHNXaXRoKCdEZHpGRicpKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkQWRkcmVzc0Vycm9yKCdQcm92aWRlZCBhZGRyZXNzIGlzIGEgRGFlZGFsdXMgYWRkcmVzcycpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJ5cm9uQWRkcmVzcy50b19iYXNlNTgoKTtcbiAgICB9XG5cbiAgICAvLyBJZiBuZWl0aGVyLCBpdCdzIGludmFsaWRcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFkZHJlc3NFcnJvcignUHJvdmlkZWQgQWRkcmVzcyBpcyBub3QgYSB2YWxpZCBTaGVsbGV5IG9yIEJ5cm9uIGFkZHJlc3MnKTtcbiAgfVxufVxuXG5jb25zdCB1dGlscyA9IG5ldyBVdGlscygpO1xuXG5leHBvcnQgZGVmYXVsdCB1dGlscztcbiJdfQ==
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { BaseKey, TransactionType } from '@bitgo-beta/sdk-core';
|
|
2
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
3
|
+
import { TransactionBuilder } from './transactionBuilder';
|
|
4
|
+
import { Transaction } from './transaction';
|
|
5
|
+
export declare class VoteDelegationBuilder extends TransactionBuilder {
|
|
6
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
7
|
+
protected get transactionType(): TransactionType;
|
|
8
|
+
/** @inheritdoc */
|
|
9
|
+
initBuilder(tx: Transaction): void;
|
|
10
|
+
/**
|
|
11
|
+
* Creates the proper certificates needed to delegate a user's vote to a given DRep
|
|
12
|
+
*
|
|
13
|
+
* @param stakingPublicKey The user's public stake key
|
|
14
|
+
* @param dRepId The DRep ID of the DRep we will delegate vote to
|
|
15
|
+
*/
|
|
16
|
+
addVoteDelegationCertificate(stakingPublicKey: string, dRepId: string): this;
|
|
17
|
+
/** @inheritdoc */
|
|
18
|
+
protected buildImplementation(): Promise<Transaction>;
|
|
19
|
+
/** @inheritdoc */
|
|
20
|
+
protected fromImplementation(rawTransaction: string): Transaction;
|
|
21
|
+
/** @inheritdoc */
|
|
22
|
+
protected signImplementation(key: BaseKey): Transaction;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=voteDelegationBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voteDelegationBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/voteDelegationBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C,qBAAa,qBAAsB,SAAQ,kBAAkB;gBAC/C,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAIlC;;;;;OAKG;IACH,4BAA4B,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAW5E,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAM3D,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;IAIjE,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW;CAGxD"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.VoteDelegationBuilder = void 0;
|
|
40
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
41
|
+
const transactionBuilder_1 = require("./transactionBuilder");
|
|
42
|
+
const CardanoWasm = __importStar(require("@emurgo/cardano-serialization-lib-nodejs"));
|
|
43
|
+
const utils_1 = __importDefault(require("./utils"));
|
|
44
|
+
class VoteDelegationBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
45
|
+
constructor(_coinConfig) {
|
|
46
|
+
super(_coinConfig);
|
|
47
|
+
this._type = sdk_core_1.TransactionType.VoteDelegation;
|
|
48
|
+
}
|
|
49
|
+
get transactionType() {
|
|
50
|
+
return sdk_core_1.TransactionType.VoteDelegation;
|
|
51
|
+
}
|
|
52
|
+
/** @inheritdoc */
|
|
53
|
+
initBuilder(tx) {
|
|
54
|
+
super.initBuilder(tx);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Creates the proper certificates needed to delegate a user's vote to a given DRep
|
|
58
|
+
*
|
|
59
|
+
* @param stakingPublicKey The user's public stake key
|
|
60
|
+
* @param dRepId The DRep ID of the DRep we will delegate vote to
|
|
61
|
+
*/
|
|
62
|
+
addVoteDelegationCertificate(stakingPublicKey, dRepId) {
|
|
63
|
+
const stakeCredential = CardanoWasm.Credential.from_keyhash(CardanoWasm.PublicKey.from_bytes(Buffer.from(stakingPublicKey, 'hex')).hash());
|
|
64
|
+
const voteDelegationCert = CardanoWasm.Certificate.new_vote_delegation(CardanoWasm.VoteDelegation.new(stakeCredential, utils_1.default.getDRepFromDRepId(dRepId)));
|
|
65
|
+
this._certs.push(voteDelegationCert);
|
|
66
|
+
return this;
|
|
67
|
+
}
|
|
68
|
+
/** @inheritdoc */
|
|
69
|
+
async buildImplementation() {
|
|
70
|
+
const tx = await super.buildImplementation();
|
|
71
|
+
tx.setTransactionType(sdk_core_1.TransactionType.VoteDelegation);
|
|
72
|
+
return tx;
|
|
73
|
+
}
|
|
74
|
+
/** @inheritdoc */
|
|
75
|
+
fromImplementation(rawTransaction) {
|
|
76
|
+
return super.fromImplementation(rawTransaction);
|
|
77
|
+
}
|
|
78
|
+
/** @inheritdoc */
|
|
79
|
+
signImplementation(key) {
|
|
80
|
+
return super.signImplementation(key);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
exports.VoteDelegationBuilder = VoteDelegationBuilder;
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm90ZURlbGVnYXRpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi92b3RlRGVsZWdhdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbURBQWdFO0FBRWhFLDZEQUEwRDtBQUUxRCxzRkFBd0U7QUFDeEUsb0RBQStCO0FBRS9CLE1BQWEscUJBQXNCLFNBQVEsdUNBQWtCO0lBQzNELFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsMEJBQWUsQ0FBQyxjQUFjLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsY0FBYyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsV0FBVyxDQUFDLEVBQWU7UUFDekIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCw0QkFBNEIsQ0FBQyxnQkFBd0IsRUFBRSxNQUFjO1FBQ25FLE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUN6RCxXQUFXLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQzlFLENBQUM7UUFDRixNQUFNLGtCQUFrQixHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQ3BFLFdBQVcsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxlQUFRLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FDcEYsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO0lBQ1IsS0FBSyxDQUFDLG1CQUFtQjtRQUNqQyxNQUFNLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzdDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQywwQkFBZSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELGtCQUFrQjtJQUNSLGtCQUFrQixDQUFDLGNBQXNCO1FBQ2pELE9BQU8sS0FBSyxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxrQkFBa0I7SUFDUixrQkFBa0IsQ0FBQyxHQUFZO1FBQ3ZDLE9BQU8sS0FBSyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7Q0FDRjtBQWhERCxzREFnREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlS2V5LCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0ICogYXMgQ2FyZGFub1dhc20gZnJvbSAnQGVtdXJnby9jYXJkYW5vLXNlcmlhbGl6YXRpb24tbGliLW5vZGVqcyc7XG5pbXBvcnQgYWRhVXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBWb3RlRGVsZWdhdGlvbkJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fdHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5Wb3RlRGVsZWdhdGlvbjtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5Wb3RlRGVsZWdhdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBzdXBlci5pbml0QnVpbGRlcih0eCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgcHJvcGVyIGNlcnRpZmljYXRlcyBuZWVkZWQgdG8gZGVsZWdhdGUgYSB1c2VyJ3Mgdm90ZSB0byBhIGdpdmVuIERSZXBcbiAgICpcbiAgICogQHBhcmFtIHN0YWtpbmdQdWJsaWNLZXkgVGhlIHVzZXIncyBwdWJsaWMgc3Rha2Uga2V5XG4gICAqIEBwYXJhbSBkUmVwSWQgVGhlIERSZXAgSUQgb2YgdGhlIERSZXAgd2Ugd2lsbCBkZWxlZ2F0ZSB2b3RlIHRvXG4gICAqL1xuICBhZGRWb3RlRGVsZWdhdGlvbkNlcnRpZmljYXRlKHN0YWtpbmdQdWJsaWNLZXk6IHN0cmluZywgZFJlcElkOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBjb25zdCBzdGFrZUNyZWRlbnRpYWwgPSBDYXJkYW5vV2FzbS5DcmVkZW50aWFsLmZyb21fa2V5aGFzaChcbiAgICAgIENhcmRhbm9XYXNtLlB1YmxpY0tleS5mcm9tX2J5dGVzKEJ1ZmZlci5mcm9tKHN0YWtpbmdQdWJsaWNLZXksICdoZXgnKSkuaGFzaCgpXG4gICAgKTtcbiAgICBjb25zdCB2b3RlRGVsZWdhdGlvbkNlcnQgPSBDYXJkYW5vV2FzbS5DZXJ0aWZpY2F0ZS5uZXdfdm90ZV9kZWxlZ2F0aW9uKFxuICAgICAgQ2FyZGFub1dhc20uVm90ZURlbGVnYXRpb24ubmV3KHN0YWtlQ3JlZGVudGlhbCwgYWRhVXRpbHMuZ2V0RFJlcEZyb21EUmVwSWQoZFJlcElkKSlcbiAgICApO1xuICAgIHRoaXMuX2NlcnRzLnB1c2godm90ZURlbGVnYXRpb25DZXJ0KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgdHggPSBhd2FpdCBzdXBlci5idWlsZEltcGxlbWVudGF0aW9uKCk7XG4gICAgdHguc2V0VHJhbnNhY3Rpb25UeXBlKFRyYW5zYWN0aW9uVHlwZS5Wb3RlRGVsZWdhdGlvbik7XG4gICAgcmV0dXJuIHR4O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBmcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gc3VwZXIuZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgc2lnbkltcGxlbWVudGF0aW9uKGtleTogQmFzZUtleSk6IFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gc3VwZXIuc2lnbkltcGxlbWVudGF0aW9uKGtleSk7XG4gIH1cbn1cbiJdfQ==
|