@bitgo-beta/sdk-coin-bera 1.0.1-beta.99 → 1.0.1-beta.991

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 (41) hide show
  1. package/.mocharc.yml +2 -2
  2. package/CHANGELOG.md +467 -0
  3. package/dist/src/bera.d.ts +18 -21
  4. package/dist/src/bera.d.ts.map +1 -1
  5. package/dist/src/bera.js +25 -42
  6. package/dist/src/beraToken.d.ts +28 -0
  7. package/dist/src/beraToken.d.ts.map +1 -0
  8. package/dist/src/beraToken.js +51 -0
  9. package/dist/src/index.d.ts +2 -1
  10. package/dist/src/index.d.ts.map +1 -1
  11. package/dist/src/index.js +8 -3
  12. package/dist/src/lib/index.d.ts +4 -5
  13. package/dist/src/lib/index.d.ts.map +1 -1
  14. package/dist/src/lib/index.js +31 -19
  15. package/dist/src/lib/resources.d.ts +4 -0
  16. package/dist/src/lib/resources.d.ts.map +1 -0
  17. package/dist/src/lib/resources.js +27 -0
  18. package/dist/src/lib/transactionBuilder.d.ts +11 -0
  19. package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
  20. package/dist/src/lib/transactionBuilder.js +29 -0
  21. package/dist/src/lib/transferBuilder.d.ts +2 -0
  22. package/dist/src/lib/transferBuilder.d.ts.map +1 -0
  23. package/dist/src/lib/transferBuilder.js +6 -0
  24. package/dist/src/lib/utils.d.ts +7 -12
  25. package/dist/src/lib/utils.d.ts.map +1 -1
  26. package/dist/src/lib/utils.js +17 -48
  27. package/dist/src/register.d.ts.map +1 -1
  28. package/dist/src/register.js +5 -1
  29. package/dist/src/tbera.d.ts +0 -3
  30. package/dist/src/tbera.d.ts.map +1 -1
  31. package/dist/src/tbera.js +1 -5
  32. package/package.json +10 -11
  33. package/dist/src/lib/constants.d.ts +0 -7
  34. package/dist/src/lib/constants.d.ts.map +0 -1
  35. package/dist/src/lib/constants.js +0 -10
  36. package/dist/src/lib/keyPair.d.ts +0 -11
  37. package/dist/src/lib/keyPair.d.ts.map +0 -1
  38. package/dist/src/lib/keyPair.js +0 -24
  39. package/dist/src/lib/transactionBuilderFactory.d.ts +0 -27
  40. package/dist/src/lib/transactionBuilderFactory.d.ts.map +0 -1
  41. package/dist/src/lib/transactionBuilderFactory.js +0 -71
@@ -1,24 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.KeyPair = void 0;
4
- const amino_1 = require("@cosmjs/amino");
5
- const abstract_cosmos_1 = require("@bitgo-beta/abstract-cosmos");
6
- const constants_1 = require("./constants");
7
- /**
8
- * Bera keys and address management.
9
- */
10
- class KeyPair extends abstract_cosmos_1.CosmosKeyPair {
11
- constructor(source) {
12
- super(source);
13
- }
14
- /** @inheritdoc */
15
- getAddress() {
16
- const base64String = Buffer.from(this.getKeys().pub.slice(0, 66), 'hex').toString('base64');
17
- return amino_1.pubkeyToAddress({
18
- type: 'tendermint/PubKeySecp256k1',
19
- value: base64String,
20
- }, constants_1.ADDRESS_PREFIX);
21
- }
22
- }
23
- exports.KeyPair = KeyPair;
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIva2V5UGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx5Q0FBZ0Q7QUFFaEQsaUVBQTREO0FBQzVELDJDQUE2QztBQUU3Qzs7R0FFRztBQUNILE1BQWEsT0FBUSxTQUFRLCtCQUFhO0lBQ3hDLFlBQVksTUFBdUI7UUFDakMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsVUFBVTtRQUNSLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1RixPQUFPLHVCQUFlLENBQ3BCO1lBQ0UsSUFBSSxFQUFFLDRCQUE0QjtZQUNsQyxLQUFLLEVBQUUsWUFBWTtTQUNwQixFQUNELDBCQUFjLENBQ2YsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQWhCRCwwQkFnQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBLZXlQYWlyT3B0aW9ucyB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IHB1YmtleVRvQWRkcmVzcyB9IGZyb20gJ0Bjb3NtanMvYW1pbm8nO1xuXG5pbXBvcnQgeyBDb3Ntb3NLZXlQYWlyIH0gZnJvbSAnQGJpdGdvLWJldGEvYWJzdHJhY3QtY29zbW9zJztcbmltcG9ydCB7IEFERFJFU1NfUFJFRklYIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG4vKipcbiAqIEJlcmEga2V5cyBhbmQgYWRkcmVzcyBtYW5hZ2VtZW50LlxuICovXG5leHBvcnQgY2xhc3MgS2V5UGFpciBleHRlbmRzIENvc21vc0tleVBhaXIge1xuICBjb25zdHJ1Y3Rvcihzb3VyY2U/OiBLZXlQYWlyT3B0aW9ucykge1xuICAgIHN1cGVyKHNvdXJjZSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0QWRkcmVzcygpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJhc2U2NFN0cmluZyA9IEJ1ZmZlci5mcm9tKHRoaXMuZ2V0S2V5cygpLnB1Yi5zbGljZSgwLCA2NiksICdoZXgnKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgcmV0dXJuIHB1YmtleVRvQWRkcmVzcyhcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ3RlbmRlcm1pbnQvUHViS2V5U2VjcDI1NmsxJyxcbiAgICAgICAgdmFsdWU6IGJhc2U2NFN0cmluZyxcbiAgICAgIH0sXG4gICAgICBBRERSRVNTX1BSRUZJWFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -1,27 +0,0 @@
1
- import { CosmosTransaction, CosmosTransactionBuilder, CosmosTransferBuilder, StakingActivateBuilder, StakingDeactivateBuilder, StakingWithdrawRewardsBuilder } from '@bitgo-beta/abstract-cosmos';
2
- import { BaseTransactionBuilderFactory } from '@bitgo-beta/sdk-core';
3
- import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
4
- export declare class TransactionBuilderFactory extends BaseTransactionBuilderFactory {
5
- constructor(_coinConfig: Readonly<CoinConfig>);
6
- /** @inheritdoc */
7
- from(raw: string): CosmosTransactionBuilder;
8
- /** @inheritdoc */
9
- getTransferBuilder(tx?: CosmosTransaction): CosmosTransferBuilder;
10
- /** @inheritdoc */
11
- getStakingActivateBuilder(tx?: CosmosTransaction): StakingActivateBuilder;
12
- /** @inheritdoc */
13
- getStakingDeactivateBuilder(tx?: CosmosTransaction): StakingDeactivateBuilder;
14
- /** @inheritdoc */
15
- getStakingWithdrawRewardsBuilder(tx?: CosmosTransaction): StakingWithdrawRewardsBuilder;
16
- /** @inheritdoc */
17
- getWalletInitializationBuilder(): void;
18
- /**
19
- * Initialize the builder with the given transaction
20
- *
21
- * @param {CosmosTransaction | undefined} tx - the transaction used to initialize the builder
22
- * @param {CosmosTransactionBuilder} builder - the builder to be initialized
23
- * @returns {CosmosTransactionBuilder} the builder initialized
24
- */
25
- protected initializeBuilder<T extends CosmosTransactionBuilder>(tx: CosmosTransaction | undefined, builder: T): T;
26
- }
27
- //# sourceMappingURL=transactionBuilderFactory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACxB,6BAA6B,EAC9B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,6BAA6B,EAA4C,MAAM,sBAAsB,CAAC;AAC/G,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAG7D,qBAAa,yBAA0B,SAAQ,6BAA6B;gBAC9D,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;IAClB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,wBAAwB;IAqB3C,kBAAkB;IAClB,kBAAkB,CAAC,EAAE,CAAC,EAAE,iBAAiB,GAAG,qBAAqB;IAIjE,kBAAkB;IAClB,yBAAyB,CAAC,EAAE,CAAC,EAAE,iBAAiB,GAAG,sBAAsB;IAIzE,kBAAkB;IAClB,2BAA2B,CAAC,EAAE,CAAC,EAAE,iBAAiB,GAAG,wBAAwB;IAI7E,kBAAkB;IAClB,gCAAgC,CAAC,EAAE,CAAC,EAAE,iBAAiB,GAAG,6BAA6B;IAIvF,kBAAkB;IAClB,8BAA8B,IAAI,IAAI;IAItC;;;;;;OAMG;IACH,SAAS,CAAC,iBAAiB,CAAC,CAAC,SAAS,wBAAwB,EAAE,EAAE,EAAE,iBAAiB,GAAG,SAAS,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC;CAMlH"}
@@ -1,71 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.TransactionBuilderFactory = void 0;
7
- const abstract_cosmos_1 = require("@bitgo-beta/abstract-cosmos");
8
- const sdk_core_1 = require("@bitgo-beta/sdk-core");
9
- const utils_1 = __importDefault(require("./utils"));
10
- class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory {
11
- constructor(_coinConfig) {
12
- super(_coinConfig);
13
- }
14
- /** @inheritdoc */
15
- from(raw) {
16
- const tx = new abstract_cosmos_1.CosmosTransaction(this._coinConfig, utils_1.default);
17
- tx.enrichTransactionDetailsFromRawTransaction(raw);
18
- try {
19
- switch (tx.type) {
20
- case sdk_core_1.TransactionType.Send:
21
- return this.getTransferBuilder(tx);
22
- case sdk_core_1.TransactionType.StakingActivate:
23
- return this.getStakingActivateBuilder(tx);
24
- case sdk_core_1.TransactionType.StakingDeactivate:
25
- return this.getStakingDeactivateBuilder(tx);
26
- case sdk_core_1.TransactionType.StakingWithdraw:
27
- return this.getStakingWithdrawRewardsBuilder(tx);
28
- default:
29
- throw new sdk_core_1.InvalidTransactionError('Invalid transaction');
30
- }
31
- }
32
- catch (e) {
33
- throw new sdk_core_1.InvalidTransactionError('Invalid transaction: ' + e.message);
34
- }
35
- }
36
- /** @inheritdoc */
37
- getTransferBuilder(tx) {
38
- return this.initializeBuilder(tx, new abstract_cosmos_1.CosmosTransferBuilder(this._coinConfig, utils_1.default));
39
- }
40
- /** @inheritdoc */
41
- getStakingActivateBuilder(tx) {
42
- return this.initializeBuilder(tx, new abstract_cosmos_1.StakingActivateBuilder(this._coinConfig, utils_1.default));
43
- }
44
- /** @inheritdoc */
45
- getStakingDeactivateBuilder(tx) {
46
- return this.initializeBuilder(tx, new abstract_cosmos_1.StakingDeactivateBuilder(this._coinConfig, utils_1.default));
47
- }
48
- /** @inheritdoc */
49
- getStakingWithdrawRewardsBuilder(tx) {
50
- return this.initializeBuilder(tx, new abstract_cosmos_1.StakingWithdrawRewardsBuilder(this._coinConfig, utils_1.default));
51
- }
52
- /** @inheritdoc */
53
- getWalletInitializationBuilder() {
54
- throw new Error('Method not implemented.');
55
- }
56
- /**
57
- * Initialize the builder with the given transaction
58
- *
59
- * @param {CosmosTransaction | undefined} tx - the transaction used to initialize the builder
60
- * @param {CosmosTransactionBuilder} builder - the builder to be initialized
61
- * @returns {CosmosTransactionBuilder} the builder initialized
62
- */
63
- initializeBuilder(tx, builder) {
64
- if (tx) {
65
- builder.initBuilder(tx);
66
- }
67
- return builder;
68
- }
69
- }
70
- exports.TransactionBuilderFactory = TransactionBuilderFactory;
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxpRUFPcUM7QUFDckMsbURBQStHO0FBRS9HLG9EQUFnQztBQUVoQyxNQUFhLHlCQUEwQixTQUFRLHdDQUE2QjtJQUMxRSxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLElBQUksQ0FBQyxHQUFXO1FBQ2QsTUFBTSxFQUFFLEdBQUcsSUFBSSxtQ0FBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLGVBQVMsQ0FBQyxDQUFDO1FBQzlELEVBQUUsQ0FBQywwQ0FBMEMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuRCxJQUFJO1lBQ0YsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFO2dCQUNmLEtBQUssMEJBQWUsQ0FBQyxJQUFJO29CQUN2QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDckMsS0FBSywwQkFBZSxDQUFDLGVBQWU7b0JBQ2xDLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUM1QyxLQUFLLDBCQUFlLENBQUMsaUJBQWlCO29CQUNwQyxPQUFPLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDOUMsS0FBSywwQkFBZSxDQUFDLGVBQWU7b0JBQ2xDLE9BQU8sSUFBSSxDQUFDLGdDQUFnQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNuRDtvQkFDRSxNQUFNLElBQUksa0NBQXVCLENBQUMscUJBQXFCLENBQUMsQ0FBQzthQUM1RDtTQUNGO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixNQUFNLElBQUksa0NBQXVCLENBQUMsdUJBQXVCLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3hFO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixrQkFBa0IsQ0FBQyxFQUFzQjtRQUN2QyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSx1Q0FBcUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLGVBQVMsQ0FBQyxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUVELGtCQUFrQjtJQUNsQix5QkFBeUIsQ0FBQyxFQUFzQjtRQUM5QyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSx3Q0FBc0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLGVBQVMsQ0FBQyxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVELGtCQUFrQjtJQUNsQiwyQkFBMkIsQ0FBQyxFQUFzQjtRQUNoRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSwwQ0FBd0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLGVBQVMsQ0FBQyxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixnQ0FBZ0MsQ0FBQyxFQUFzQjtRQUNyRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSwrQ0FBNkIsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLGVBQVMsQ0FBQyxDQUFDLENBQUM7SUFDcEcsQ0FBQztJQUVELGtCQUFrQjtJQUNsQiw4QkFBOEI7UUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDTyxpQkFBaUIsQ0FBcUMsRUFBaUMsRUFBRSxPQUFVO1FBQzNHLElBQUksRUFBRSxFQUFFO1lBQ04sT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUN6QjtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQWpFRCw4REFpRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb3Ntb3NUcmFuc2FjdGlvbixcbiAgQ29zbW9zVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBDb3Ntb3NUcmFuc2ZlckJ1aWxkZXIsXG4gIFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIsXG4gIFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcixcbiAgU3Rha2luZ1dpdGhkcmF3UmV3YXJkc0J1aWxkZXIsXG59IGZyb20gJ0BiaXRnby1iZXRhL2Fic3RyYWN0LWNvc21vcyc7XG5pbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSwgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCBiZXJhVXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZnJvbShyYXc6IHN0cmluZyk6IENvc21vc1RyYW5zYWN0aW9uQnVpbGRlciB7XG4gICAgY29uc3QgdHggPSBuZXcgQ29zbW9zVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZywgYmVyYVV0aWxzKTtcbiAgICB0eC5lbnJpY2hUcmFuc2FjdGlvbkRldGFpbHNGcm9tUmF3VHJhbnNhY3Rpb24ocmF3KTtcbiAgICB0cnkge1xuICAgICAgc3dpdGNoICh0eC50eXBlKSB7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNlbmQ6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VHJhbnNmZXJCdWlsZGVyKHR4KTtcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0FjdGl2YXRlOlxuICAgICAgICAgIHJldHVybiB0aGlzLmdldFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIodHgpO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nRGVhY3RpdmF0ZTpcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTdGFraW5nRGVhY3RpdmF0ZUJ1aWxkZXIodHgpO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nV2l0aGRyYXc6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3Rha2luZ1dpdGhkcmF3UmV3YXJkc0J1aWxkZXIodHgpO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbicpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogJyArIGUubWVzc2FnZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldFRyYW5zZmVyQnVpbGRlcih0eD86IENvc21vc1RyYW5zYWN0aW9uKTogQ29zbW9zVHJhbnNmZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IENvc21vc1RyYW5zZmVyQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnLCBiZXJhVXRpbHMpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRTdGFraW5nQWN0aXZhdGVCdWlsZGVyKHR4PzogQ29zbW9zVHJhbnNhY3Rpb24pOiBTdGFraW5nQWN0aXZhdGVCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZywgYmVyYVV0aWxzKSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0U3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyKHR4PzogQ29zbW9zVHJhbnNhY3Rpb24pOiBTdGFraW5nRGVhY3RpdmF0ZUJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgU3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcsIGJlcmFVdGlscykpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldFN0YWtpbmdXaXRoZHJhd1Jld2FyZHNCdWlsZGVyKHR4PzogQ29zbW9zVHJhbnNhY3Rpb24pOiBTdGFraW5nV2l0aGRyYXdSZXdhcmRzQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBTdGFraW5nV2l0aGRyYXdSZXdhcmRzQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnLCBiZXJhVXRpbHMpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIoKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIGJ1aWxkZXIgd2l0aCB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtDb3Ntb3NUcmFuc2FjdGlvbiB8IHVuZGVmaW5lZH0gdHggLSB0aGUgdHJhbnNhY3Rpb24gdXNlZCB0byBpbml0aWFsaXplIHRoZSBidWlsZGVyXG4gICAqIEBwYXJhbSB7Q29zbW9zVHJhbnNhY3Rpb25CdWlsZGVyfSBidWlsZGVyIC0gdGhlIGJ1aWxkZXIgdG8gYmUgaW5pdGlhbGl6ZWRcbiAgICogQHJldHVybnMge0Nvc21vc1RyYW5zYWN0aW9uQnVpbGRlcn0gdGhlIGJ1aWxkZXIgaW5pdGlhbGl6ZWRcbiAgICovXG4gIHByb3RlY3RlZCBpbml0aWFsaXplQnVpbGRlcjxUIGV4dGVuZHMgQ29zbW9zVHJhbnNhY3Rpb25CdWlsZGVyPih0eDogQ29zbW9zVHJhbnNhY3Rpb24gfCB1bmRlZmluZWQsIGJ1aWxkZXI6IFQpOiBUIHtcbiAgICBpZiAodHgpIHtcbiAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIH1cbiAgICByZXR1cm4gYnVpbGRlcjtcbiAgfVxufVxuIl19