@bitgo-beta/sdk-coin-baby 1.0.1-beta.81 → 1.0.1-beta.810

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.
Files changed (77) hide show
  1. package/dist/src/baby.d.ts +2 -1
  2. package/dist/src/baby.d.ts.map +1 -1
  3. package/dist/src/baby.js +3 -2
  4. package/dist/src/lib/BabylonTransaction.d.ts +9 -0
  5. package/dist/src/lib/BabylonTransaction.d.ts.map +1 -0
  6. package/dist/src/lib/BabylonTransaction.js +87 -0
  7. package/dist/src/lib/CustomTransactionBuilder.d.ts +14 -0
  8. package/dist/src/lib/CustomTransactionBuilder.d.ts.map +1 -0
  9. package/dist/src/lib/CustomTransactionBuilder.js +37 -0
  10. package/dist/src/lib/EpochedStakingActivateBuilder.d.ts +7 -0
  11. package/dist/src/lib/EpochedStakingActivateBuilder.d.ts.map +1 -0
  12. package/dist/src/lib/EpochedStakingActivateBuilder.js +48 -0
  13. package/dist/src/lib/EpochedStakingDeactivateBuilder.d.ts +7 -0
  14. package/dist/src/lib/EpochedStakingDeactivateBuilder.d.ts.map +1 -0
  15. package/dist/src/lib/EpochedStakingDeactivateBuilder.js +48 -0
  16. package/dist/src/lib/EpochedStakingRedelegateBuilder.d.ts +7 -0
  17. package/dist/src/lib/EpochedStakingRedelegateBuilder.d.ts.map +1 -0
  18. package/dist/src/lib/EpochedStakingRedelegateBuilder.js +48 -0
  19. package/dist/src/lib/constants.d.ts +6 -0
  20. package/dist/src/lib/constants.d.ts.map +1 -1
  21. package/dist/src/lib/constants.js +11 -3
  22. package/dist/src/lib/iface.d.ts +10 -0
  23. package/dist/src/lib/iface.d.ts.map +1 -0
  24. package/dist/src/lib/iface.js +3 -0
  25. package/dist/src/lib/index.d.ts +4 -1
  26. package/dist/src/lib/index.d.ts.map +1 -1
  27. package/dist/src/lib/index.js +10 -3
  28. package/dist/src/lib/transactionBuilderFactory.d.ts +10 -8
  29. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  30. package/dist/src/lib/transactionBuilderFactory.js +15 -5
  31. package/dist/src/lib/utils.d.ts +25 -2
  32. package/dist/src/lib/utils.d.ts.map +1 -1
  33. package/dist/src/lib/utils.js +155 -2
  34. package/dist/test/resources/baby.d.ts +397 -0
  35. package/dist/test/resources/baby.d.ts.map +1 -0
  36. package/dist/test/resources/baby.js +413 -0
  37. package/dist/test/unit/baby.d.ts +2 -0
  38. package/dist/test/unit/baby.d.ts.map +1 -0
  39. package/dist/test/unit/baby.js +259 -0
  40. package/dist/test/unit/getBuilderFactory.d.ts +3 -0
  41. package/dist/test/unit/getBuilderFactory.d.ts.map +1 -0
  42. package/dist/test/unit/getBuilderFactory.js +10 -0
  43. package/dist/test/unit/keyPair.d.ts +2 -0
  44. package/dist/test/unit/keyPair.d.ts.map +1 -0
  45. package/dist/test/unit/keyPair.js +93 -0
  46. package/dist/test/unit/transaction.d.ts +2 -0
  47. package/dist/test/unit/transaction.d.ts.map +1 -0
  48. package/dist/test/unit/transaction.js +143 -0
  49. package/dist/test/unit/transactionBuilder/CustomTransactionBuilder.d.ts +2 -0
  50. package/dist/test/unit/transactionBuilder/CustomTransactionBuilder.d.ts.map +1 -0
  51. package/dist/test/unit/transactionBuilder/CustomTransactionBuilder.js +124 -0
  52. package/dist/test/unit/transactionBuilder/StakingActivateBuilder.d.ts +2 -0
  53. package/dist/test/unit/transactionBuilder/StakingActivateBuilder.d.ts.map +1 -0
  54. package/dist/test/unit/transactionBuilder/StakingActivateBuilder.js +154 -0
  55. package/dist/test/unit/transactionBuilder/StakingDeactivateBuilder.d.ts +2 -0
  56. package/dist/test/unit/transactionBuilder/StakingDeactivateBuilder.d.ts.map +1 -0
  57. package/dist/test/unit/transactionBuilder/StakingDeactivateBuilder.js +153 -0
  58. package/dist/test/unit/transactionBuilder/StakingRedelegateBuilder.d.ts +2 -0
  59. package/dist/test/unit/transactionBuilder/StakingRedelegateBuilder.d.ts.map +1 -0
  60. package/dist/test/unit/transactionBuilder/StakingRedelegateBuilder.js +93 -0
  61. package/dist/test/unit/transactionBuilder/StakingWithdrawRewardsBuilder.d.ts +2 -0
  62. package/dist/test/unit/transactionBuilder/StakingWithdrawRewardsBuilder.d.ts.map +1 -0
  63. package/dist/test/unit/transactionBuilder/StakingWithdrawRewardsBuilder.js +154 -0
  64. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts +2 -0
  65. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
  66. package/dist/test/unit/transactionBuilder/transactionBuilder.js +124 -0
  67. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
  68. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  69. package/dist/test/unit/transactionBuilder/transferBuilder.js +212 -0
  70. package/dist/test/unit/utils.d.ts +2 -0
  71. package/dist/test/unit/utils.d.ts.map +1 -0
  72. package/dist/test/unit/utils.js +84 -0
  73. package/dist/tsconfig.tsbuildinfo +1 -0
  74. package/package.json +16 -10
  75. package/.eslintignore +0 -5
  76. package/.mocharc.yml +0 -8
  77. package/CHANGELOG.md +0 -42
@@ -6,14 +6,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.TransactionBuilderFactory = void 0;
7
7
  const abstract_cosmos_1 = require("@bitgo-beta/abstract-cosmos");
8
8
  const sdk_core_1 = require("@bitgo-beta/sdk-core");
9
+ const EpochedStakingActivateBuilder_1 = require("./EpochedStakingActivateBuilder");
10
+ const EpochedStakingDeactivateBuilder_1 = require("./EpochedStakingDeactivateBuilder");
11
+ const EpochedStakingRedelegateBuilder_1 = require("./EpochedStakingRedelegateBuilder");
12
+ const CustomTransactionBuilder_1 = require("./CustomTransactionBuilder");
9
13
  const utils_1 = __importDefault(require("./utils"));
14
+ const BabylonTransaction_1 = require("./BabylonTransaction");
10
15
  class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory {
11
16
  constructor(_coinConfig) {
12
17
  super(_coinConfig);
13
18
  }
14
19
  /** @inheritdoc */
15
20
  from(raw) {
16
- const tx = new abstract_cosmos_1.CosmosTransaction(this._coinConfig, utils_1.default);
21
+ const tx = new BabylonTransaction_1.BabylonTransaction(this._coinConfig, utils_1.default);
17
22
  tx.enrichTransactionDetailsFromRawTransaction(raw);
18
23
  try {
19
24
  switch (tx.type) {
@@ -29,6 +34,8 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
29
34
  return this.getContractCallBuilder(tx);
30
35
  case sdk_core_1.TransactionType.StakingRedelegate:
31
36
  return this.getStakingRedelegateBuilder(tx);
37
+ case sdk_core_1.TransactionType.CustomTx:
38
+ return this.getCustomTransactionBuilder(tx);
32
39
  default:
33
40
  throw new sdk_core_1.InvalidTransactionError('Invalid transaction');
34
41
  }
@@ -43,11 +50,11 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
43
50
  }
44
51
  /** @inheritdoc */
45
52
  getStakingActivateBuilder(tx) {
46
- return this.initializeBuilder(tx, new abstract_cosmos_1.StakingActivateBuilder(this._coinConfig, utils_1.default));
53
+ return this.initializeBuilder(tx, new EpochedStakingActivateBuilder_1.EpochedStakingActivateBuilder(this._coinConfig, utils_1.default));
47
54
  }
48
55
  /** @inheritdoc */
49
56
  getStakingDeactivateBuilder(tx) {
50
- return this.initializeBuilder(tx, new abstract_cosmos_1.StakingDeactivateBuilder(this._coinConfig, utils_1.default));
57
+ return this.initializeBuilder(tx, new EpochedStakingDeactivateBuilder_1.EpochedStakingDeactivateBuilder(this._coinConfig, utils_1.default));
51
58
  }
52
59
  /** @inheritdoc */
53
60
  getStakingWithdrawRewardsBuilder(tx) {
@@ -57,7 +64,10 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
57
64
  return this.initializeBuilder(tx, new abstract_cosmos_1.ContractCallBuilder(this._coinConfig, utils_1.default));
58
65
  }
59
66
  getStakingRedelegateBuilder(tx) {
60
- return this.initializeBuilder(tx, new abstract_cosmos_1.StakingRedelegateBuilder(this._coinConfig, utils_1.default));
67
+ return this.initializeBuilder(tx, new EpochedStakingRedelegateBuilder_1.EpochedStakingRedelegateBuilder(this._coinConfig, utils_1.default));
68
+ }
69
+ getCustomTransactionBuilder(tx) {
70
+ return this.initializeBuilder(tx, new CustomTransactionBuilder_1.CustomTransactionBuilder(this._coinConfig, utils_1.default));
61
71
  }
62
72
  /** @inheritdoc */
63
73
  getWalletInitializationBuilder() {
@@ -78,4 +88,4 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
78
88
  }
79
89
  }
80
90
  exports.TransactionBuilderFactory = TransactionBuilderFactory;
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxpRUFTcUM7QUFDckMsbURBQStHO0FBRS9HLG9EQUE0QjtBQUU1QixNQUFhLHlCQUEwQixTQUFRLHdDQUE2QjtJQUMxRSxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLElBQUksQ0FBQyxHQUFXO1FBQ2QsTUFBTSxFQUFFLEdBQUcsSUFBSSxtQ0FBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLGVBQUssQ0FBQyxDQUFDO1FBQzFELEVBQUUsQ0FBQywwQ0FBMEMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUM7WUFDSCxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDaEIsS0FBSywwQkFBZSxDQUFDLElBQUk7b0JBQ3ZCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNyQyxLQUFLLDBCQUFlLENBQUMsZUFBZTtvQkFDbEMsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzVDLEtBQUssMEJBQWUsQ0FBQyxpQkFBaUI7b0JBQ3BDLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUM5QyxLQUFLLDBCQUFlLENBQUMsZUFBZTtvQkFDbEMsT0FBTyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ25ELEtBQUssMEJBQWUsQ0FBQyxZQUFZO29CQUMvQixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDekMsS0FBSywwQkFBZSxDQUFDLGlCQUFpQjtvQkFDcEMsT0FBTyxJQUFJLENBQUMsMkJBQTJCLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzlDO29CQUNFLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQzdELENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyx1QkFBdUIsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekUsQ0FBQztJQUNILENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsa0JBQWtCLENBQUMsRUFBc0I7UUFDdkMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksdUNBQXFCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxlQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3hGLENBQUM7SUFDRCxrQkFBa0I7SUFDbEIseUJBQXlCLENBQUMsRUFBc0I7UUFDOUMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksd0NBQXNCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxlQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFDRCxrQkFBa0I7SUFDbEIsMkJBQTJCLENBQUMsRUFBc0I7UUFDaEQsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksMENBQXdCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxlQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFDRCxrQkFBa0I7SUFDbEIsZ0NBQWdDLENBQUMsRUFBc0I7UUFDckQsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksK0NBQTZCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxlQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxFQUFzQjtRQUMzQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxxQ0FBbUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLGVBQUssQ0FBQyxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUVELDJCQUEyQixDQUFDLEVBQXNCO1FBQ2hELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLDBDQUF3QixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsZUFBSyxDQUFDLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLDhCQUE4QjtRQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLGlCQUFpQixDQUFxQyxFQUFpQyxFQUFFLE9BQVU7UUFDekcsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNQLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUIsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQTFFRCw4REEwRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb3Ntb3NUcmFuc2FjdGlvbixcbiAgQ29zbW9zVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBDb3Ntb3NUcmFuc2ZlckJ1aWxkZXIsXG4gIFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIsXG4gIFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcixcbiAgU3Rha2luZ1dpdGhkcmF3UmV3YXJkc0J1aWxkZXIsXG4gIENvbnRyYWN0Q2FsbEJ1aWxkZXIsXG4gIFN0YWtpbmdSZWRlbGVnYXRlQnVpbGRlcixcbn0gZnJvbSAnQGJpdGdvLWJldGEvYWJzdHJhY3QtY29zbW9zJztcbmltcG9ydCB7IEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LCBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IHtcbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGZyb20ocmF3OiBzdHJpbmcpOiBDb3Ntb3NUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIGNvbnN0IHR4ID0gbmV3IENvc21vc1RyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcsIHV0aWxzKTtcbiAgICB0eC5lbnJpY2hUcmFuc2FjdGlvbkRldGFpbHNGcm9tUmF3VHJhbnNhY3Rpb24ocmF3KTtcbiAgICB0cnkge1xuICAgICAgc3dpdGNoICh0eC50eXBlKSB7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNlbmQ6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VHJhbnNmZXJCdWlsZGVyKHR4KTtcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0FjdGl2YXRlOlxuICAgICAgICAgIHJldHVybiB0aGlzLmdldFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIodHgpO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nRGVhY3RpdmF0ZTpcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTdGFraW5nRGVhY3RpdmF0ZUJ1aWxkZXIodHgpO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nV2l0aGRyYXc6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3Rha2luZ1dpdGhkcmF3UmV3YXJkc0J1aWxkZXIodHgpO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5Db250cmFjdENhbGw6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q29udHJhY3RDYWxsQnVpbGRlcih0eCk7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdSZWRlbGVnYXRlOlxuICAgICAgICAgIHJldHVybiB0aGlzLmdldFN0YWtpbmdSZWRlbGVnYXRlQnVpbGRlcih0eCk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uJyk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiAnICsgZS5tZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0VHJhbnNmZXJCdWlsZGVyKHR4PzogQ29zbW9zVHJhbnNhY3Rpb24pOiBDb3Ntb3NUcmFuc2ZlckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgQ29zbW9zVHJhbnNmZXJCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcsIHV0aWxzKSk7XG4gIH1cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIodHg/OiBDb3Ntb3NUcmFuc2FjdGlvbik6IFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgU3Rha2luZ0FjdGl2YXRlQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnLCB1dGlscykpO1xuICB9XG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRTdGFraW5nRGVhY3RpdmF0ZUJ1aWxkZXIodHg/OiBDb3Ntb3NUcmFuc2FjdGlvbik6IFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBTdGFraW5nRGVhY3RpdmF0ZUJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZywgdXRpbHMpKTtcbiAgfVxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0U3Rha2luZ1dpdGhkcmF3UmV3YXJkc0J1aWxkZXIodHg/OiBDb3Ntb3NUcmFuc2FjdGlvbik6IFN0YWtpbmdXaXRoZHJhd1Jld2FyZHNCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFN0YWtpbmdXaXRoZHJhd1Jld2FyZHNCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcsIHV0aWxzKSk7XG4gIH1cblxuICBnZXRDb250cmFjdENhbGxCdWlsZGVyKHR4PzogQ29zbW9zVHJhbnNhY3Rpb24pOiBDb250cmFjdENhbGxCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IENvbnRyYWN0Q2FsbEJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZywgdXRpbHMpKTtcbiAgfVxuXG4gIGdldFN0YWtpbmdSZWRlbGVnYXRlQnVpbGRlcih0eD86IENvc21vc1RyYW5zYWN0aW9uKTogU3Rha2luZ1JlZGVsZWdhdGVCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFN0YWtpbmdSZWRlbGVnYXRlQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnLCB1dGlscykpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldFdhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlcigpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgYnVpbGRlciB3aXRoIHRoZSBnaXZlbiB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uIHwgdW5kZWZpbmVkfSB0eCAtIHRoZSB0cmFuc2FjdGlvbiB1c2VkIHRvIGluaXRpYWxpemUgdGhlIGJ1aWxkZXJcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IGJ1aWxkZXIgLSB0aGUgYnVpbGRlciB0byBiZSBpbml0aWFsaXplZFxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSB0aGUgYnVpbGRlciBpbml0aWFsaXplZFxuICAgKi9cbiAgcHJpdmF0ZSBpbml0aWFsaXplQnVpbGRlcjxUIGV4dGVuZHMgQ29zbW9zVHJhbnNhY3Rpb25CdWlsZGVyPih0eDogQ29zbW9zVHJhbnNhY3Rpb24gfCB1bmRlZmluZWQsIGJ1aWxkZXI6IFQpOiBUIHtcbiAgICBpZiAodHgpIHtcbiAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIH1cbiAgICByZXR1cm4gYnVpbGRlcjtcbiAgfVxufVxuIl19
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxpRUFTcUM7QUFDckMsbURBQStHO0FBRS9HLG1GQUFnRjtBQUNoRix1RkFBb0Y7QUFDcEYsdUZBQW9GO0FBQ3BGLHlFQUFzRTtBQUV0RSxvREFBNEI7QUFDNUIsNkRBQTBEO0FBRTFELE1BQWEseUJBQTBCLFNBQVEsd0NBQTZCO0lBQzFFLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsSUFBSSxDQUFDLEdBQVc7UUFDZCxNQUFNLEVBQUUsR0FBRyxJQUFJLHVDQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsZUFBSyxDQUFDLENBQUM7UUFDM0QsRUFBRSxDQUFDLDBDQUEwQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQztZQUNILFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNoQixLQUFLLDBCQUFlLENBQUMsSUFBSTtvQkFDdkIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3JDLEtBQUssMEJBQWUsQ0FBQyxlQUFlO29CQUNsQyxPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDNUMsS0FBSywwQkFBZSxDQUFDLGlCQUFpQjtvQkFDcEMsT0FBTyxJQUFJLENBQUMsMkJBQTJCLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzlDLEtBQUssMEJBQWUsQ0FBQyxlQUFlO29CQUNsQyxPQUFPLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDbkQsS0FBSywwQkFBZSxDQUFDLFlBQVk7b0JBQy9CLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN6QyxLQUFLLDBCQUFlLENBQUMsaUJBQWlCO29CQUNwQyxPQUFPLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDOUMsS0FBSywwQkFBZSxDQUFDLFFBQVE7b0JBQzNCLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUM5QztvQkFDRSxNQUFNLElBQUksa0NBQXVCLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUM3RCxDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxNQUFNLElBQUksa0NBQXVCLENBQUMsdUJBQXVCLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pFLENBQUM7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGtCQUFrQixDQUFDLEVBQStDO1FBQ2hFLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLHVDQUFxQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsZUFBSyxDQUFDLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBQ0Qsa0JBQWtCO0lBQ2xCLHlCQUF5QixDQUN2QixFQUErQztRQUUvQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSw2REFBNkIsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLGVBQUssQ0FBQyxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUNELGtCQUFrQjtJQUNsQiwyQkFBMkIsQ0FDekIsRUFBK0M7UUFFL0MsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksaUVBQStCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxlQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xHLENBQUM7SUFDRCxrQkFBa0I7SUFDbEIsZ0NBQWdDLENBQzlCLEVBQStDO1FBRS9DLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLCtDQUE2QixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsZUFBSyxDQUFDLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBRUQsc0JBQXNCLENBQ3BCLEVBQStDO1FBRS9DLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLHFDQUFtQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsZUFBSyxDQUFDLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsMkJBQTJCLENBQ3pCLEVBQStDO1FBRS9DLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLGlFQUErQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsZUFBSyxDQUFDLENBQUMsQ0FBQztJQUNsRyxDQUFDO0lBRUQsMkJBQTJCLENBQ3pCLEVBQStDO1FBRS9DLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLG1EQUF3QixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsZUFBSyxDQUFDLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLDhCQUE4QjtRQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLGlCQUFpQixDQUN2QixFQUEwRCxFQUMxRCxPQUFVO1FBRVYsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNQLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUIsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQS9GRCw4REErRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb250cmFjdENhbGxCdWlsZGVyLFxuICBDb3Ntb3NUcmFuc2FjdGlvbixcbiAgQ29zbW9zVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBDb3Ntb3NUcmFuc2ZlckJ1aWxkZXIsXG4gIFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIsXG4gIFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcixcbiAgU3Rha2luZ1JlZGVsZWdhdGVCdWlsZGVyLFxuICBTdGFraW5nV2l0aGRyYXdSZXdhcmRzQnVpbGRlcixcbn0gZnJvbSAnQGJpdGdvLWJldGEvYWJzdHJhY3QtY29zbW9zJztcbmltcG9ydCB7IEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LCBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgRXBvY2hlZFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIgfSBmcm9tICcuL0Vwb2NoZWRTdGFraW5nQWN0aXZhdGVCdWlsZGVyJztcbmltcG9ydCB7IEVwb2NoZWRTdGFraW5nRGVhY3RpdmF0ZUJ1aWxkZXIgfSBmcm9tICcuL0Vwb2NoZWRTdGFraW5nRGVhY3RpdmF0ZUJ1aWxkZXInO1xuaW1wb3J0IHsgRXBvY2hlZFN0YWtpbmdSZWRlbGVnYXRlQnVpbGRlciB9IGZyb20gJy4vRXBvY2hlZFN0YWtpbmdSZWRlbGVnYXRlQnVpbGRlcic7XG5pbXBvcnQgeyBDdXN0b21UcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL0N1c3RvbVRyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBCYWJ5bG9uU3BlY2lmaWNNZXNzYWdlcyB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgQmFieWxvblRyYW5zYWN0aW9uIH0gZnJvbSAnLi9CYWJ5bG9uVHJhbnNhY3Rpb24nO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IHtcbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGZyb20ocmF3OiBzdHJpbmcpOiBDb3Ntb3NUcmFuc2FjdGlvbkJ1aWxkZXI8QmFieWxvblNwZWNpZmljTWVzc2FnZXM+IHtcbiAgICBjb25zdCB0eCA9IG5ldyBCYWJ5bG9uVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZywgdXRpbHMpO1xuICAgIHR4LmVucmljaFRyYW5zYWN0aW9uRGV0YWlsc0Zyb21SYXdUcmFuc2FjdGlvbihyYXcpO1xuICAgIHRyeSB7XG4gICAgICBzd2l0Y2ggKHR4LnR5cGUpIHtcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2VuZDpcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRUcmFuc2ZlckJ1aWxkZXIodHgpO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQWN0aXZhdGU6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3Rha2luZ0FjdGl2YXRlQnVpbGRlcih0eCk7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdEZWFjdGl2YXRlOlxuICAgICAgICAgIHJldHVybiB0aGlzLmdldFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcih0eCk7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdXaXRoZHJhdzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTdGFraW5nV2l0aGRyYXdSZXdhcmRzQnVpbGRlcih0eCk7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkNvbnRyYWN0Q2FsbDpcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRDb250cmFjdENhbGxCdWlsZGVyKHR4KTtcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1JlZGVsZWdhdGU6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3Rha2luZ1JlZGVsZWdhdGVCdWlsZGVyKHR4KTtcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQ3VzdG9tVHg6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q3VzdG9tVHJhbnNhY3Rpb25CdWlsZGVyKHR4KTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb24nKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246ICcgKyBlLm1lc3NhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRUcmFuc2ZlckJ1aWxkZXIodHg/OiBDb3Ntb3NUcmFuc2FjdGlvbjxCYWJ5bG9uU3BlY2lmaWNNZXNzYWdlcz4pOiBDb3Ntb3NUcmFuc2ZlckJ1aWxkZXI8QmFieWxvblNwZWNpZmljTWVzc2FnZXM+IHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IENvc21vc1RyYW5zZmVyQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnLCB1dGlscykpO1xuICB9XG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRTdGFraW5nQWN0aXZhdGVCdWlsZGVyKFxuICAgIHR4PzogQ29zbW9zVHJhbnNhY3Rpb248QmFieWxvblNwZWNpZmljTWVzc2FnZXM+XG4gICk6IFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXI8QmFieWxvblNwZWNpZmljTWVzc2FnZXM+IHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IEVwb2NoZWRTdGFraW5nQWN0aXZhdGVCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcsIHV0aWxzKSk7XG4gIH1cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcihcbiAgICB0eD86IENvc21vc1RyYW5zYWN0aW9uPEJhYnlsb25TcGVjaWZpY01lc3NhZ2VzPlxuICApOiBTdGFraW5nRGVhY3RpdmF0ZUJ1aWxkZXI8QmFieWxvblNwZWNpZmljTWVzc2FnZXM+IHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IEVwb2NoZWRTdGFraW5nRGVhY3RpdmF0ZUJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZywgdXRpbHMpKTtcbiAgfVxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0U3Rha2luZ1dpdGhkcmF3UmV3YXJkc0J1aWxkZXIoXG4gICAgdHg/OiBDb3Ntb3NUcmFuc2FjdGlvbjxCYWJ5bG9uU3BlY2lmaWNNZXNzYWdlcz5cbiAgKTogU3Rha2luZ1dpdGhkcmF3UmV3YXJkc0J1aWxkZXI8QmFieWxvblNwZWNpZmljTWVzc2FnZXM+IHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFN0YWtpbmdXaXRoZHJhd1Jld2FyZHNCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcsIHV0aWxzKSk7XG4gIH1cblxuICBnZXRDb250cmFjdENhbGxCdWlsZGVyKFxuICAgIHR4PzogQ29zbW9zVHJhbnNhY3Rpb248QmFieWxvblNwZWNpZmljTWVzc2FnZXM+XG4gICk6IENvbnRyYWN0Q2FsbEJ1aWxkZXI8QmFieWxvblNwZWNpZmljTWVzc2FnZXM+IHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IENvbnRyYWN0Q2FsbEJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZywgdXRpbHMpKTtcbiAgfVxuXG4gIGdldFN0YWtpbmdSZWRlbGVnYXRlQnVpbGRlcihcbiAgICB0eD86IENvc21vc1RyYW5zYWN0aW9uPEJhYnlsb25TcGVjaWZpY01lc3NhZ2VzPlxuICApOiBTdGFraW5nUmVkZWxlZ2F0ZUJ1aWxkZXI8QmFieWxvblNwZWNpZmljTWVzc2FnZXM+IHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IEVwb2NoZWRTdGFraW5nUmVkZWxlZ2F0ZUJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZywgdXRpbHMpKTtcbiAgfVxuXG4gIGdldEN1c3RvbVRyYW5zYWN0aW9uQnVpbGRlcihcbiAgICB0eD86IENvc21vc1RyYW5zYWN0aW9uPEJhYnlsb25TcGVjaWZpY01lc3NhZ2VzPlxuICApOiBDb3Ntb3NUcmFuc2FjdGlvbkJ1aWxkZXI8QmFieWxvblNwZWNpZmljTWVzc2FnZXM+IHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IEN1c3RvbVRyYW5zYWN0aW9uQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnLCB1dGlscykpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldFdhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlcigpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgYnVpbGRlciB3aXRoIHRoZSBnaXZlbiB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uIHwgdW5kZWZpbmVkfSB0eCAtIHRoZSB0cmFuc2FjdGlvbiB1c2VkIHRvIGluaXRpYWxpemUgdGhlIGJ1aWxkZXJcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IGJ1aWxkZXIgLSB0aGUgYnVpbGRlciB0byBiZSBpbml0aWFsaXplZFxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSB0aGUgYnVpbGRlciBpbml0aWFsaXplZFxuICAgKi9cbiAgcHJpdmF0ZSBpbml0aWFsaXplQnVpbGRlcjxUIGV4dGVuZHMgQ29zbW9zVHJhbnNhY3Rpb25CdWlsZGVyPEJhYnlsb25TcGVjaWZpY01lc3NhZ2VzPj4oXG4gICAgdHg6IENvc21vc1RyYW5zYWN0aW9uPEJhYnlsb25TcGVjaWZpY01lc3NhZ2VzPiB8IHVuZGVmaW5lZCxcbiAgICBidWlsZGVyOiBUXG4gICk6IFQge1xuICAgIGlmICh0eCkge1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgfVxuICAgIHJldHVybiBidWlsZGVyO1xuICB9XG59XG4iXX0=
@@ -1,6 +1,29 @@
1
- import { CosmosUtils } from '@bitgo-beta/abstract-cosmos';
1
+ import { DecodedTxRaw } from '@cosmjs/proto-signing';
2
2
  import { Coin } from '@cosmjs/stargate';
3
- export declare class Utils extends CosmosUtils {
3
+ import { Any } from 'cosmjs-types/google/protobuf/any';
4
+ import { BabylonSpecificMessageKind, BabylonSpecificMessages, CreateBtcDelegationMessage, WithdrawRewardMessage } from './iface';
5
+ import { CosmosUtils, MessageData } from '@bitgo-beta/abstract-cosmos';
6
+ import { TransactionType } from '@bitgo-beta/sdk-core';
7
+ export declare class Utils extends CosmosUtils<BabylonSpecificMessages> {
8
+ babylonMessageKindToTypeUrl: Record<BabylonSpecificMessageKind, string>;
9
+ babylonMessageTypeUrlToKind: Record<string, BabylonSpecificMessageKind>;
10
+ protected wrappedMsgTypeUrls: Set<string>;
11
+ protected customMsgTypeUrls: Set<string>;
12
+ constructor();
13
+ /** @inheritdoc */
14
+ getDelegateOrUndelegateMessageDataFromDecodedTx(decodedTx: DecodedTxRaw): MessageData<BabylonSpecificMessages>[];
15
+ /** @inheritdoc */
16
+ getRedelegateMessageDataFromDecodedTx(decodedTx: DecodedTxRaw): MessageData<BabylonSpecificMessages>[];
17
+ /** @inheritdoc */
18
+ getCustomMessageDataFromDecodedTx(decodedTx: DecodedTxRaw): MessageData<BabylonSpecificMessages>[];
19
+ /** @inheritdoc */
20
+ getTransactionTypeFromTypeUrl(typeUrl: string): TransactionType | undefined;
21
+ /** @inheritdoc */
22
+ getSendMessagesForEncodingTx(cosmosLikeTransaction: Parameters<CosmosUtils<BabylonSpecificMessages>['getSendMessagesForEncodingTx']>[0]): Any[];
23
+ /** @inheritdoc */
24
+ validateCustomMessage(customMessage: BabylonSpecificMessages): void;
25
+ validateCreateBtcDelegationMessage(createBtcDelegationMessage: CreateBtcDelegationMessage): void;
26
+ validateWithdrawRewardMessage(withdrawRewardMessage: WithdrawRewardMessage): void;
4
27
  /** @inheritdoc */
5
28
  isValidAddress(address: string): boolean;
6
29
  /** @inheritdoc */
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAIxC,qBAAa,KAAM,SAAQ,WAAW;IACpC,kBAAkB;IAClB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIxC,kBAAkB;IAClB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIjD,kBAAkB;IAClB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIhD,kBAAkB;IAClB,cAAc,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI;CASnC;AAED,QAAA,MAAM,KAAK,OAAc,CAAC;AAE1B,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,OAAO,EAAE,GAAG,EAAE,MAAM,kCAAkC,CAAC;AACvD,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,0BAA0B,EAC1B,qBAAqB,EACtB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAA2B,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGhF,qBAAa,KAAM,SAAQ,WAAW,CAAC,uBAAuB,CAAC;IACtD,2BAA2B,EAAE,MAAM,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAG5E;IACK,2BAA2B,EAE7B,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IAEhD,SAAS,CAAC,kBAAkB,cAIzB;IACH,SAAS,CAAC,iBAAiB,cAA8D;;IAWzF,kBAAkB;IAClB,+CAA+C,CAAC,SAAS,EAAE,YAAY,GAAG,WAAW,CAAC,uBAAuB,CAAC,EAAE;IAchH,kBAAkB;IAClB,qCAAqC,CAAC,SAAS,EAAE,YAAY,GAAG,WAAW,CAAC,uBAAuB,CAAC,EAAE;IAetG,kBAAkB;IAClB,iCAAiC,CAAC,SAAS,EAAE,YAAY,GAAG,WAAW,CAAC,uBAAuB,CAAC,EAAE;IAalG,kBAAkB;IAClB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAgB3E,kBAAkB;IAClB,4BAA4B,CAC1B,qBAAqB,EAAE,UAAU,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,GACzG,GAAG,EAAE;IAcR,kBAAkB;IAClB,qBAAqB,CAAC,aAAa,EAAE,uBAAuB,GAAG,IAAI;IAanE,kCAAkC,CAAC,0BAA0B,EAAE,0BAA0B,GAAG,IAAI;IA2ChG,6BAA6B,CAAC,qBAAqB,EAAE,qBAAqB,GAAG,IAAI;IAgBjF,kBAAkB;IAClB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIxC,kBAAkB;IAClB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIjD,kBAAkB;IAClB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIhD,kBAAkB;IAClB,cAAc,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI;CASnC;AAED,QAAA,MAAM,KAAK,OAAc,CAAC;AAE1B,eAAe,KAAK,CAAC"}
@@ -37,11 +37,164 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.Utils = void 0;
40
+ const babylon_proto_ts_1 = require("@babylonlabs-io/babylon-proto-ts");
41
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
40
42
  const abstract_cosmos_1 = require("@bitgo-beta/abstract-cosmos");
41
43
  const sdk_core_1 = require("@bitgo-beta/sdk-core");
42
- const bignumber_js_1 = __importDefault(require("bignumber.js"));
43
44
  const constants = __importStar(require("./constants"));
44
45
  class Utils extends abstract_cosmos_1.CosmosUtils {
46
+ constructor() {
47
+ super();
48
+ this.babylonMessageKindToTypeUrl = {
49
+ CreateBtcDelegation: constants.createBTCDelegationMsgTypeUrl,
50
+ WithdrawReward: constants.withdrawRewardMsgTypeUrl,
51
+ };
52
+ this.babylonMessageTypeUrlToKind = Object.fromEntries(Object.entries(this.babylonMessageKindToTypeUrl).map(([key, value]) => [value, key]));
53
+ this.wrappedMsgTypeUrls = new Set([
54
+ constants.wrappedDelegateMsgTypeUrl,
55
+ constants.wrappedUndelegateMsgTypeUrl,
56
+ constants.wrappedBeginRedelegateTypeUrl,
57
+ ]);
58
+ this.customMsgTypeUrls = new Set([constants.createBTCDelegationMsgTypeUrl]);
59
+ this.registry.register(constants.wrappedDelegateMsgTypeUrl, babylon_proto_ts_1.epochingtx.MsgWrappedDelegate);
60
+ this.registry.register(constants.wrappedUndelegateMsgTypeUrl, babylon_proto_ts_1.epochingtx.MsgWrappedUndelegate);
61
+ this.registry.register(constants.wrappedBeginRedelegateTypeUrl, babylon_proto_ts_1.epochingtx.MsgWrappedBeginRedelegate);
62
+ this.registry.register(constants.createBTCDelegationMsgTypeUrl, babylon_proto_ts_1.btcstakingtx.MsgCreateBTCDelegation);
63
+ this.registry.register(constants.withdrawRewardMsgTypeUrl, babylon_proto_ts_1.incentivetx.MsgWithdrawReward);
64
+ }
65
+ /** @inheritdoc */
66
+ getDelegateOrUndelegateMessageDataFromDecodedTx(decodedTx) {
67
+ return decodedTx.body.messages.map((message) => {
68
+ const value = this.registry.decode(message).msg;
69
+ return {
70
+ typeUrl: message.typeUrl,
71
+ value: {
72
+ delegatorAddress: value.delegatorAddress,
73
+ validatorAddress: value.validatorAddress,
74
+ amount: value.amount,
75
+ },
76
+ };
77
+ });
78
+ }
79
+ /** @inheritdoc */
80
+ getRedelegateMessageDataFromDecodedTx(decodedTx) {
81
+ return decodedTx.body.messages.map((message) => {
82
+ const value = this.registry.decode(message).msg;
83
+ return {
84
+ typeUrl: message.typeUrl,
85
+ value: {
86
+ delegatorAddress: value.delegatorAddress,
87
+ validatorSrcAddress: value.validatorSrcAddress,
88
+ validatorDstAddress: value.validatorDstAddress,
89
+ amount: value.amount,
90
+ },
91
+ };
92
+ });
93
+ }
94
+ /** @inheritdoc */
95
+ getCustomMessageDataFromDecodedTx(decodedTx) {
96
+ return decodedTx.body.messages.map((message) => {
97
+ const value = this.registry.decode(message);
98
+ return {
99
+ typeUrl: message.typeUrl,
100
+ value: {
101
+ _kind: this.babylonMessageTypeUrlToKind[message.typeUrl],
102
+ ...value,
103
+ },
104
+ };
105
+ });
106
+ }
107
+ /** @inheritdoc */
108
+ getTransactionTypeFromTypeUrl(typeUrl) {
109
+ switch (typeUrl) {
110
+ case constants.wrappedDelegateMsgTypeUrl:
111
+ return sdk_core_1.TransactionType.StakingActivate;
112
+ case constants.wrappedUndelegateMsgTypeUrl:
113
+ return sdk_core_1.TransactionType.StakingDeactivate;
114
+ case constants.wrappedBeginRedelegateTypeUrl:
115
+ return sdk_core_1.TransactionType.StakingRedelegate;
116
+ case constants.createBTCDelegationMsgTypeUrl:
117
+ case constants.withdrawRewardMsgTypeUrl:
118
+ return sdk_core_1.TransactionType.CustomTx;
119
+ default:
120
+ return super.getTransactionTypeFromTypeUrl(typeUrl);
121
+ }
122
+ }
123
+ /** @inheritdoc */
124
+ getSendMessagesForEncodingTx(cosmosLikeTransaction) {
125
+ return cosmosLikeTransaction.sendMessages.map(({ typeUrl, value }) => {
126
+ let valueToEncode = value;
127
+ if (this.wrappedMsgTypeUrls.has(typeUrl)) {
128
+ valueToEncode = { msg: value };
129
+ }
130
+ else if (this.customMsgTypeUrls.has(typeUrl)) {
131
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
132
+ const { _kind, ...rest } = value;
133
+ valueToEncode = rest;
134
+ }
135
+ return { typeUrl, value: valueToEncode };
136
+ });
137
+ }
138
+ /** @inheritdoc */
139
+ validateCustomMessage(customMessage) {
140
+ switch (customMessage._kind) {
141
+ case 'CreateBtcDelegation':
142
+ this.validateCreateBtcDelegationMessage(customMessage);
143
+ break;
144
+ case 'WithdrawReward':
145
+ this.validateWithdrawRewardMessage(customMessage);
146
+ break;
147
+ default:
148
+ throw new sdk_core_1.InvalidTransactionError(`Unsupported BabylonSpecificMessages message`);
149
+ }
150
+ }
151
+ validateCreateBtcDelegationMessage(createBtcDelegationMessage) {
152
+ if (createBtcDelegationMessage._kind !== 'CreateBtcDelegation') {
153
+ throw new sdk_core_1.InvalidTransactionError(`Invalid CreateBtcDelegationMessage kind: ${createBtcDelegationMessage._kind}`);
154
+ }
155
+ // TODO: check the other fields more thoroughly
156
+ this.isObjPropertyNull(createBtcDelegationMessage, [
157
+ 'stakerAddr',
158
+ // 'pop',
159
+ 'btcPk',
160
+ 'fpBtcPkList',
161
+ 'stakingTime',
162
+ 'stakingValue',
163
+ 'stakingTx',
164
+ // 'stakingTxInclusionProof',
165
+ 'slashingTx',
166
+ 'delegatorSlashingSig',
167
+ 'unbondingTime',
168
+ 'unbondingTx',
169
+ 'unbondingValue',
170
+ 'unbondingSlashingTx',
171
+ 'delegatorUnbondingSlashingSig',
172
+ ]);
173
+ if (createBtcDelegationMessage.pop) {
174
+ this.isObjPropertyNull(createBtcDelegationMessage.pop, ['btcSigType', 'btcSig']);
175
+ }
176
+ if (createBtcDelegationMessage.stakingTxInclusionProof) {
177
+ this.isObjPropertyNull(createBtcDelegationMessage.stakingTxInclusionProof, ['key', 'proof']);
178
+ if (createBtcDelegationMessage.stakingTxInclusionProof.key) {
179
+ this.isObjPropertyNull(createBtcDelegationMessage.stakingTxInclusionProof.key, ['index', 'hash']);
180
+ }
181
+ }
182
+ if (!this.isValidAddress(createBtcDelegationMessage.stakerAddr)) {
183
+ throw new sdk_core_1.InvalidTransactionError(`Invalid CreateBtcDelegationMessage stakerAddr: ${createBtcDelegationMessage.stakerAddr}`);
184
+ }
185
+ }
186
+ validateWithdrawRewardMessage(withdrawRewardMessage) {
187
+ if (withdrawRewardMessage._kind !== 'WithdrawReward') {
188
+ throw new sdk_core_1.InvalidTransactionError(`Invalid WithdrawRewardMessage kind: ${withdrawRewardMessage._kind}`);
189
+ }
190
+ this.isObjPropertyNull(withdrawRewardMessage, ['type', 'address']);
191
+ if (!['finality_provider', 'btc_staker'].includes(withdrawRewardMessage.type)) {
192
+ throw new sdk_core_1.InvalidTransactionError(`Invalid WithdrawRewardMessage type: ${withdrawRewardMessage.type}`);
193
+ }
194
+ if (!this.isValidAddress(withdrawRewardMessage.address)) {
195
+ throw new sdk_core_1.InvalidTransactionError(`Invalid WithdrawRewardMessage address: ${withdrawRewardMessage.address}`);
196
+ }
197
+ }
45
198
  /** @inheritdoc */
46
199
  isValidAddress(address) {
47
200
  return this.isValidCosmosLikeAddressWithMemoId(address, constants.accountAddressRegex);
@@ -68,4 +221,4 @@ class Utils extends abstract_cosmos_1.CosmosUtils {
68
221
  exports.Utils = Utils;
69
222
  const utils = new Utils();
70
223
  exports.default = utils;
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlFQUEwRDtBQUMxRCxtREFBK0Q7QUFFL0QsZ0VBQXFDO0FBQ3JDLHVEQUF5QztBQUV6QyxNQUFhLEtBQU0sU0FBUSw2QkFBVztJQUNwQyxrQkFBa0I7SUFDbEIsY0FBYyxDQUFDLE9BQWU7UUFDNUIsT0FBTyxJQUFJLENBQUMsa0NBQWtDLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsdUJBQXVCLENBQUMsT0FBZTtRQUNyQyxPQUFPLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixzQkFBc0IsQ0FBQyxPQUFlO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLGlDQUFpQyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGNBQWMsQ0FBQyxNQUFZO1FBQ3pCLE1BQU0sU0FBUyxHQUFHLElBQUEsc0JBQVMsRUFBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0MsSUFBSSxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksa0NBQXVCLENBQUMsc0RBQXNELEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVHLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNuRSxNQUFNLElBQUksa0NBQXVCLENBQUMscURBQXFELEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFHLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUExQkQsc0JBMEJDO0FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztBQUUxQixrQkFBZSxLQUFLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb3Ntb3NVdGlscyB9IGZyb20gJ0BiaXRnby1iZXRhL2Fic3RyYWN0LWNvc21vcyc7XG5pbXBvcnQgeyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IENvaW4gfSBmcm9tICdAY29zbWpzL3N0YXJnYXRlJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCAqIGFzIGNvbnN0YW50cyBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjbGFzcyBVdGlscyBleHRlbmRzIENvc21vc1V0aWxzIHtcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWRDb3Ntb3NMaWtlQWRkcmVzc1dpdGhNZW1vSWQoYWRkcmVzcywgY29uc3RhbnRzLmFjY291bnRBZGRyZXNzUmVnZXgpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRWYWxpZGF0b3JBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWRCZWNoMzJBZGRyZXNzTWF0Y2hpbmdSZWdleChhZGRyZXNzLCBjb25zdGFudHMudmFsaWRhdG9yQWRkcmVzc1JlZ2V4KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkQ29udHJhY3RBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWRCZWNoMzJBZGRyZXNzTWF0Y2hpbmdSZWdleChhZGRyZXNzLCBjb25zdGFudHMuY29udHJhY3RBZGRyZXNzUmVnZXgpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlQW1vdW50KGFtb3VudDogQ29pbik6IHZvaWQge1xuICAgIGNvbnN0IGFtb3VudEJpZyA9IEJpZ051bWJlcihhbW91bnQuYW1vdW50KTtcbiAgICBpZiAoYW1vdW50QmlnLmlzTGVzc1RoYW5PckVxdWFsVG8oMCkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcigndHJhbnNhY3Rpb25CdWlsZGVyOiB2YWxpZGF0ZUFtb3VudDogSW52YWxpZCBhbW91bnQ6ICcgKyBhbW91bnQuYW1vdW50KTtcbiAgICB9XG4gICAgaWYgKCFjb25zdGFudHMudmFsaWREZW5vbXMuZmluZCgoZGVub20pID0+IGRlbm9tID09PSBhbW91bnQuZGVub20pKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ3RyYW5zYWN0aW9uQnVpbGRlcjogdmFsaWRhdGVBbW91bnQ6IEludmFsaWQgZGVub206ICcgKyBhbW91bnQuZGVub20pO1xuICAgIH1cbiAgfVxufVxuXG5jb25zdCB1dGlscyA9IG5ldyBVdGlscygpO1xuXG5leHBvcnQgZGVmYXVsdCB1dGlscztcbiJdfQ==
224
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVFQUF5RjtBQUd6RixnRUFBcUM7QUFRckMsaUVBQXVFO0FBQ3ZFLG1EQUFnRjtBQUNoRix1REFBeUM7QUFFekMsTUFBYSxLQUFNLFNBQVEsNkJBQW9DO0lBZ0I3RDtRQUNFLEtBQUssRUFBRSxDQUFDO1FBaEJILGdDQUEyQixHQUErQztZQUMvRSxtQkFBbUIsRUFBRSxTQUFTLENBQUMsNkJBQTZCO1lBQzVELGNBQWMsRUFBRSxTQUFTLENBQUMsd0JBQXdCO1NBQ25ELENBQUM7UUFDSyxnQ0FBMkIsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUNyRCxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUN2QyxDQUFDO1FBRXRDLHVCQUFrQixHQUFHLElBQUksR0FBRyxDQUFTO1lBQzdDLFNBQVMsQ0FBQyx5QkFBeUI7WUFDbkMsU0FBUyxDQUFDLDJCQUEyQjtZQUNyQyxTQUFTLENBQUMsNkJBQTZCO1NBQ3hDLENBQUMsQ0FBQztRQUNPLHNCQUFpQixHQUFHLElBQUksR0FBRyxDQUFTLENBQUMsU0FBUyxDQUFDLDZCQUE2QixDQUFDLENBQUMsQ0FBQztRQUl2RixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMseUJBQXlCLEVBQUUsNkJBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzNGLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQywyQkFBMkIsRUFBRSw2QkFBVSxDQUFDLG9CQUFvQixDQUFD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T0FBTyxFQUFFLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsY0FBYyxDQUFDLE1BQVk7UUFDekIsTUFBTSxTQUFTLEdBQUcsSUFBQSxzQkFBUyxFQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQyxJQUFJLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyxzREFBc0QsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUcsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ25FLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyxxREFBcUQsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUcsQ0FBQztJQUNILENBQUM7Q0FDRjtBQTFNRCxzQkEwTUM7QUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO0FBRTFCLGtCQUFlLEtBQUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVwb2NoaW5ndHgsIGJ0Y3N0YWtpbmd0eCwgaW5jZW50aXZldHggfSBmcm9tICdAYmFieWxvbmxhYnMtaW8vYmFieWxvbi1wcm90by10cyc7XG5pbXBvcnQgeyBEZWNvZGVkVHhSYXcgfSBmcm9tICdAY29zbWpzL3Byb3RvLXNpZ25pbmcnO1xuaW1wb3J0IHsgQ29pbiB9IGZyb20gJ0Bjb3NtanMvc3RhcmdhdGUnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgQW55IH0gZnJvbSAnY29zbWpzLXR5cGVzL2dvb2dsZS9wcm90b2J1Zi9hbnknO1xuaW1wb3J0IHtcbiAgQmFieWxvblNwZWNpZmljTWVzc2FnZUtpbmQsXG4gIEJhYnlsb25TcGVjaWZpY01lc3NhZ2VzLFxuICBDcmVhdGVCdGNEZWxlZ2F0aW9uTWVzc2FnZSxcbiAgV2l0aGRyYXdSZXdhcmRNZXNzYWdlLFxufSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IENvc21vc1V0aWxzLCBNZXNzYWdlRGF0YSB9IGZyb20gJ0BiaXRnby1iZXRhL2Fic3RyYWN0LWNvc21vcyc7XG5pbXBvcnQgeyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0ICogYXMgY29uc3RhbnRzIGZyb20gJy4vY29uc3RhbnRzJztcblxuZXhwb3J0IGNsYXNzIFV0aWxzIGV4dGVuZHMgQ29zbW9zVXRpbHM8QmFieWxvblNwZWNpZmljTWVzc2FnZXM+IHtcbiAgcHVibGljIGJhYnlsb25NZXNzYWdlS2luZFRvVHlwZVVybDogUmVjb3JkPEJhYnlsb25TcGVjaWZpY01lc3NhZ2VLaW5kLCBzdHJpbmc+ID0ge1xuICAgIENyZWF0ZUJ0Y0RlbGVnYXRpb246IGNvbnN0YW50cy5jcmVhdGVCVENEZWxlZ2F0aW9uTXNnVHlwZVVybCxcbiAgICBXaXRoZHJhd1Jld2FyZDogY29uc3RhbnRzLndpdGhkcmF3UmV3YXJkTXNnVHlwZVVybCxcbiAgfTtcbiAgcHVibGljIGJhYnlsb25NZXNzYWdlVHlwZVVybFRvS2luZCA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBPYmplY3QuZW50cmllcyh0aGlzLmJhYnlsb25NZXNzYWdlS2luZFRvVHlwZVVybCkubWFwKChba2V5LCB2YWx1ZV0pID0+IFt2YWx1ZSwga2V5XSlcbiAgKSBhcyBSZWNvcmQ8c3RyaW5nLCBCYWJ5bG9uU3BlY2lmaWNNZXNzYWdlS2luZD47XG5cbiAgcHJvdGVjdGVkIHdyYXBwZWRNc2dUeXBlVXJscyA9IG5ldyBTZXQ8c3RyaW5nPihbXG4gICAgY29uc3RhbnRzLndyYXBwZWREZWxlZ2F0ZU1zZ1R5cGVVcmwsXG4gICAgY29uc3RhbnRzLndyYXBwZWRVbmRlbGVnYXRlTXNnVHlwZVVybCxcbiAgICBjb25zdGFudHMud3JhcHBlZEJlZ2luUmVkZWxlZ2F0ZVR5cGVVcmwsXG4gIF0pO1xuICBwcm90ZWN0ZWQgY3VzdG9tTXNnVHlwZVVybHMgPSBuZXcgU2V0PHN0cmluZz4oW2NvbnN0YW50cy5jcmVhdGVCVENEZWxlZ2F0aW9uTXNnVHlwZVVybF0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5yZWdpc3RyeS5yZWdpc3Rlcihjb25zdGFudHMud3JhcHBlZERlbGVnYXRlTXNnVHlwZVVybCwgZXBvY2hpbmd0eC5Nc2dXcmFwcGVkRGVsZWdhdGUpO1xuICAgIHRoaXMucmVnaXN0cnkucmVnaXN0ZXIoY29uc3RhbnRzLndyYXBwZWRVbmRlbGVnYXRlTXNnVHlwZVVybCwgZXBvY2hpbmd0eC5Nc2dXcmFwcGVkVW5kZWxlZ2F0ZSk7XG4gICAgdGhpcy5yZWdpc3RyeS5yZWdpc3Rlcihjb25zdGFudHMud3JhcHBlZEJlZ2luUmVkZWxlZ2F0ZVR5cGVVcmwsIGVwb2NoaW5ndHguTXNnV3JhcHBlZEJlZ2luUmVkZWxlZ2F0ZSk7XG4gICAgdGhpcy5yZWdpc3RyeS5yZWdpc3Rlcihjb25zdGFudHMuY3JlYXRlQlRDRGVsZWdhdGlvbk1zZ1R5cGVVcmwsIGJ0Y3N0YWtpbmd0eC5Nc2dDcmVhdGVCVENEZWxlZ2F0aW9uKTtcbiAgICB0aGlzLnJlZ2lzdHJ5LnJlZ2lzdGVyKGNvbnN0YW50cy53aXRoZHJhd1Jld2FyZE1zZ1R5cGVVcmwsIGluY2VudGl2ZXR4Lk1zZ1dpdGhkcmF3UmV3YXJkKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXREZWxlZ2F0ZU9yVW5kZWxlZ2F0ZU1lc3NhZ2VEYXRhRnJvbURlY29kZWRUeChkZWNvZGVkVHg6IERlY29kZWRUeFJhdyk6IE1lc3NhZ2VEYXRhPEJhYnlsb25TcGVjaWZpY01lc3NhZ2VzPltdIHtcbiAgICByZXR1cm4gZGVjb2RlZFR4LmJvZHkubWVzc2FnZXMubWFwKChtZXNzYWdlKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMucmVnaXN0cnkuZGVjb2RlKG1lc3NhZ2UpLm1zZztcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGVVcmw6IG1lc3NhZ2UudHlwZVVybCxcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICBkZWxlZ2F0b3JBZGRyZXNzOiB2YWx1ZS5kZWxlZ2F0b3JBZGRyZXNzLFxuICAgICAgICAgIHZhbGlkYXRvckFkZHJlc3M6IHZhbHVlLnZhbGlkYXRvckFkZHJlc3MsXG4gICAgICAgICAgYW1vdW50OiB2YWx1ZS5hbW91bnQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldFJlZGVsZWdhdGVNZXNzYWdlRGF0YUZyb21EZWNvZGVkVHgoZGVjb2RlZFR4OiBEZWNvZGVkVHhSYXcpOiBNZXNzYWdlRGF0YTxCYWJ5bG9uU3BlY2lmaWNNZXNzYWdlcz5bXSB7XG4gICAgcmV0dXJuIGRlY29kZWRUeC5ib2R5Lm1lc3NhZ2VzLm1hcCgobWVzc2FnZSkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnJlZ2lzdHJ5LmRlY29kZShtZXNzYWdlKS5tc2c7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlVXJsOiBtZXNzYWdlLnR5cGVVcmwsXG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgZGVsZWdhdG9yQWRkcmVzczogdmFsdWUuZGVsZWdhdG9yQWRkcmVzcyxcbiAgICAgICAgICB2YWxpZGF0b3JTcmNBZGRyZXNzOiB2YWx1ZS52YWxpZGF0b3JTcmNBZGRyZXNzLFxuICAgICAgICAgIHZhbGlkYXRvckRzdEFkZHJlc3M6IHZhbHVlLnZhbGlkYXRvckRzdEFkZHJlc3MsXG4gICAgICAgICAgYW1vdW50OiB2YWx1ZS5hbW91bnQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldEN1c3RvbU1lc3NhZ2VEYXRhRnJvbURlY29kZWRUeChkZWNvZGVkVHg6IERlY29kZWRUeFJhdyk6IE1lc3NhZ2VEYXRhPEJhYnlsb25TcGVjaWZpY01lc3NhZ2VzPltdIHtcbiAgICByZXR1cm4gZGVjb2RlZFR4LmJvZHkubWVzc2FnZXMubWFwKChtZXNzYWdlKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMucmVnaXN0cnkuZGVjb2RlKG1lc3NhZ2UpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZVVybDogbWVzc2FnZS50eXBlVXJsLFxuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIF9raW5kOiB0aGlzLmJhYnlsb25NZXNzYWdlVHlwZVVybFRvS2luZFttZXNzYWdlLnR5cGVVcmxdLFxuICAgICAgICAgIC4uLnZhbHVlLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRUcmFuc2FjdGlvblR5cGVGcm9tVHlwZVVybCh0eXBlVXJsOiBzdHJpbmcpOiBUcmFuc2FjdGlvblR5cGUgfCB1bmRlZmluZWQge1xuICAgIHN3aXRjaCAodHlwZVVybCkge1xuICAgICAgY2FzZSBjb25zdGFudHMud3JhcHBlZERlbGVnYXRlTXNnVHlwZVVybDpcbiAgICAgICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQWN0aXZhdGU7XG4gICAgICBjYXNlIGNvbnN0YW50cy53cmFwcGVkVW5kZWxlZ2F0ZU1zZ1R5cGVVcmw6XG4gICAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0RlYWN0aXZhdGU7XG4gICAgICBjYXNlIGNvbnN0YW50cy53cmFwcGVkQmVnaW5SZWRlbGVnYXRlVHlwZVVybDpcbiAgICAgICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nUmVkZWxlZ2F0ZTtcbiAgICAgIGNhc2UgY29uc3RhbnRzLmNyZWF0ZUJUQ0RlbGVnYXRpb25Nc2dUeXBlVXJsOlxuICAgICAgY2FzZSBjb25zdGFudHMud2l0aGRyYXdSZXdhcmRNc2dUeXBlVXJsOlxuICAgICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLkN1c3RvbVR4O1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHN1cGVyLmdldFRyYW5zYWN0aW9uVHlwZUZyb21UeXBlVXJsKHR5cGVVcmwpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRTZW5kTWVzc2FnZXNGb3JFbmNvZGluZ1R4KFxuICAgIGNvc21vc0xpa2VUcmFuc2FjdGlvbjogUGFyYW1ldGVyczxDb3Ntb3NVdGlsczxCYWJ5bG9uU3BlY2lmaWNNZXNzYWdlcz5bJ2dldFNlbmRNZXNzYWdlc0ZvckVuY29kaW5nVHgnXT5bMF1cbiAgKTogQW55W10ge1xuICAgIHJldHVybiBjb3Ntb3NMaWtlVHJhbnNhY3Rpb24uc2VuZE1lc3NhZ2VzLm1hcCgoeyB0eXBlVXJsLCB2YWx1ZSB9KSA9PiB7XG4gICAgICBsZXQgdmFsdWVUb0VuY29kZTogdW5rbm93biA9IHZhbHVlO1xuICAgICAgaWYgKHRoaXMud3JhcHBlZE1zZ1R5cGVVcmxzLmhhcyh0eXBlVXJsKSkge1xuICAgICAgICB2YWx1ZVRvRW5jb2RlID0geyBtc2c6IHZhbHVlIH07XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuY3VzdG9tTXNnVHlwZVVybHMuaGFzKHR5cGVVcmwpKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgY29uc3QgeyBfa2luZCwgLi4ucmVzdCB9ID0gdmFsdWUgYXMgQmFieWxvblNwZWNpZmljTWVzc2FnZXM7XG4gICAgICAgIHZhbHVlVG9FbmNvZGUgPSByZXN0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgdHlwZVVybCwgdmFsdWU6IHZhbHVlVG9FbmNvZGUgfTtcbiAgICB9KSBhcyB1bmtub3duIGFzIEFueVtdO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlQ3VzdG9tTWVzc2FnZShjdXN0b21NZXNzYWdlOiBCYWJ5bG9uU3BlY2lmaWNNZXNzYWdlcyk6IHZvaWQge1xuICAgIHN3aXRjaCAoY3VzdG9tTWVzc2FnZS5fa2luZCkge1xuICAgICAgY2FzZSAnQ3JlYXRlQnRjRGVsZWdhdGlvbic6XG4gICAgICAgIHRoaXMudmFsaWRhdGVDcmVhdGVCdGNEZWxlZ2F0aW9uTWVzc2FnZShjdXN0b21NZXNzYWdlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdXaXRoZHJhd1Jld2FyZCc6XG4gICAgICAgIHRoaXMudmFsaWRhdGVXaXRoZHJhd1Jld2FyZE1lc3NhZ2UoY3VzdG9tTWVzc2FnZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKGBVbnN1cHBvcnRlZCBCYWJ5bG9uU3BlY2lmaWNNZXNzYWdlcyBtZXNzYWdlYCk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVDcmVhdGVCdGNEZWxlZ2F0aW9uTWVzc2FnZShjcmVhdGVCdGNEZWxlZ2F0aW9uTWVzc2FnZTogQ3JlYXRlQnRjRGVsZWdhdGlvbk1lc3NhZ2UpOiB2b2lkIHtcbiAgICBpZiAoY3JlYXRlQnRjRGVsZWdhdGlvbk1lc3NhZ2UuX2tpbmQgIT09ICdDcmVhdGVCdGNEZWxlZ2F0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkIENyZWF0ZUJ0Y0RlbGVnYXRpb25NZXNzYWdlIGtpbmQ6ICR7Y3JlYXRlQnRjRGVsZWdhdGlvbk1lc3NhZ2UuX2tpbmR9YCk7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogY2hlY2sgdGhlIG90aGVyIGZpZWxkcyBtb3JlIHRob3JvdWdobHlcbiAgICB0aGlzLmlzT2JqUHJvcGVydHlOdWxsKGNyZWF0ZUJ0Y0RlbGVnYXRpb25NZXNzYWdlLCBbXG4gICAgICAnc3Rha2VyQWRkcicsXG4gICAgICAvLyAncG9wJyxcbiAgICAgICdidGNQaycsXG4gICAgICAnZnBCdGNQa0xpc3QnLFxuICAgICAgJ3N0YWtpbmdUaW1lJyxcbiAgICAgICdzdGFraW5nVmFsdWUnLFxuICAgICAgJ3N0YWtpbmdUeCcsXG4gICAgICAvLyAnc3Rha2luZ1R4SW5jbHVzaW9uUHJvb2YnLFxuICAgICAgJ3NsYXNoaW5nVHgnLFxuICAgICAgJ2RlbGVnYXRvclNsYXNoaW5nU2lnJyxcbiAgICAgICd1bmJvbmRpbmdUaW1lJyxcbiAgICAgICd1bmJvbmRpbmdUeCcsXG4gICAgICAndW5ib25kaW5nVmFsdWUnLFxuICAgICAgJ3VuYm9uZGluZ1NsYXNoaW5nVHgnLFxuICAgICAgJ2RlbGVnYXRvclVuYm9uZGluZ1NsYXNoaW5nU2lnJyxcbiAgICBdKTtcblxuICAgIGlmIChjcmVhdGVCdGNEZWxlZ2F0aW9uTWVzc2FnZS5wb3ApIHtcbiAgICAgIHRoaXMuaXNPYmpQcm9wZXJ0eU51bGwoY3JlYXRlQnRjRGVsZWdhdGlvbk1lc3NhZ2UucG9wLCBbJ2J0Y1NpZ1R5cGUnLCAnYnRjU2lnJ10pO1xuICAgIH1cblxuICAgIGlmIChjcmVhdGVCdGNEZWxlZ2F0aW9uTWVzc2FnZS5zdGFraW5nVHhJbmNsdXNpb25Qcm9vZikge1xuICAgICAgdGhpcy5pc09ialByb3BlcnR5TnVsbChjcmVhdGVCdGNEZWxlZ2F0aW9uTWVzc2FnZS5zdGFraW5nVHhJbmNsdXNpb25Qcm9vZiwgWydrZXknLCAncHJvb2YnXSk7XG5cbiAgICAgIGlmIChjcmVhdGVCdGNEZWxlZ2F0aW9uTWVzc2FnZS5zdGFraW5nVHhJbmNsdXNpb25Qcm9vZi5rZXkpIHtcbiAgICAgICAgdGhpcy5pc09ialByb3BlcnR5TnVsbChjcmVhdGVCdGNEZWxlZ2F0aW9uTWVzc2FnZS5zdGFraW5nVHhJbmNsdXNpb25Qcm9vZi5rZXksIFsnaW5kZXgnLCAnaGFzaCddKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaXNWYWxpZEFkZHJlc3MoY3JlYXRlQnRjRGVsZWdhdGlvbk1lc3NhZ2Uuc3Rha2VyQWRkcikpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgYEludmFsaWQgQ3JlYXRlQnRjRGVsZWdhdGlvbk1lc3NhZ2Ugc3Rha2VyQWRkcjogJHtjcmVhdGVCdGNEZWxlZ2F0aW9uTWVzc2FnZS5zdGFrZXJBZGRyfWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVXaXRoZHJhd1Jld2FyZE1lc3NhZ2Uod2l0aGRyYXdSZXdhcmRNZXNzYWdlOiBXaXRoZHJhd1Jld2FyZE1lc3NhZ2UpOiB2b2lkIHtcbiAgICBpZiAod2l0aGRyYXdSZXdhcmRNZXNzYWdlLl9raW5kICE9PSAnV2l0aGRyYXdSZXdhcmQnKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgV2l0aGRyYXdSZXdhcmRNZXNzYWdlIGtpbmQ6ICR7d2l0aGRyYXdSZXdhcmRNZXNzYWdlLl9raW5kfWApO1xuICAgIH1cblxuICAgIHRoaXMuaXNPYmpQcm9wZXJ0eU51bGwod2l0aGRyYXdSZXdhcmRNZXNzYWdlLCBbJ3R5cGUnLCAnYWRkcmVzcyddKTtcblxuICAgIGlmICghWydmaW5hbGl0eV9wcm92aWRlcicsICdidGNfc3Rha2VyJ10uaW5jbHVkZXMod2l0aGRyYXdSZXdhcmRNZXNzYWdlLnR5cGUpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgV2l0aGRyYXdSZXdhcmRNZXNzYWdlIHR5cGU6ICR7d2l0aGRyYXdSZXdhcmRNZXNzYWdlLnR5cGV9YCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmlzVmFsaWRBZGRyZXNzKHdpdGhkcmF3UmV3YXJkTWVzc2FnZS5hZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkIFdpdGhkcmF3UmV3YXJkTWVzc2FnZSBhZGRyZXNzOiAke3dpdGhkcmF3UmV3YXJkTWVzc2FnZS5hZGRyZXNzfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkQ29zbW9zTGlrZUFkZHJlc3NXaXRoTWVtb0lkKGFkZHJlc3MsIGNvbnN0YW50cy5hY2NvdW50QWRkcmVzc1JlZ2V4KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkVmFsaWRhdG9yQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkQmVjaDMyQWRkcmVzc01hdGNoaW5nUmVnZXgoYWRkcmVzcywgY29uc3RhbnRzLnZhbGlkYXRvckFkZHJlc3NSZWdleCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZENvbnRyYWN0QWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkQmVjaDMyQWRkcmVzc01hdGNoaW5nUmVnZXgoYWRkcmVzcywgY29uc3RhbnRzLmNvbnRyYWN0QWRkcmVzc1JlZ2V4KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZUFtb3VudChhbW91bnQ6IENvaW4pOiB2b2lkIHtcbiAgICBjb25zdCBhbW91bnRCaWcgPSBCaWdOdW1iZXIoYW1vdW50LmFtb3VudCk7XG4gICAgaWYgKGFtb3VudEJpZy5pc0xlc3NUaGFuT3JFcXVhbFRvKDApKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ3RyYW5zYWN0aW9uQnVpbGRlcjogdmFsaWRhdGVBbW91bnQ6IEludmFsaWQgYW1vdW50OiAnICsgYW1vdW50LmFtb3VudCk7XG4gICAgfVxuICAgIGlmICghY29uc3RhbnRzLnZhbGlkRGVub21zLmZpbmQoKGRlbm9tKSA9PiBkZW5vbSA9PT0gYW1vdW50LmRlbm9tKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCd0cmFuc2FjdGlvbkJ1aWxkZXI6IHZhbGlkYXRlQW1vdW50OiBJbnZhbGlkIGRlbm9tOiAnICsgYW1vdW50LmRlbm9tKTtcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgdXRpbHMgPSBuZXcgVXRpbHMoKTtcblxuZXhwb3J0IGRlZmF1bHQgdXRpbHM7XG4iXX0=