@bitgo-beta/sdk-coin-bera 1.0.1-beta.97 → 1.0.1-beta.970
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/.mocharc.yml +1 -1
- package/CHANGELOG.md +457 -0
- package/dist/src/bera.d.ts +18 -21
- package/dist/src/bera.d.ts.map +1 -1
- package/dist/src/bera.js +25 -42
- package/dist/src/beraToken.d.ts +28 -0
- package/dist/src/beraToken.d.ts.map +1 -0
- package/dist/src/beraToken.js +51 -0
- package/dist/src/index.d.ts +2 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +8 -3
- package/dist/src/lib/index.d.ts +4 -5
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +31 -19
- package/dist/src/lib/resources.d.ts +4 -0
- package/dist/src/lib/resources.d.ts.map +1 -0
- package/dist/src/lib/resources.js +27 -0
- package/dist/src/lib/transactionBuilder.d.ts +11 -0
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder.js +29 -0
- package/dist/src/lib/transferBuilder.d.ts +2 -0
- package/dist/src/lib/transferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transferBuilder.js +6 -0
- package/dist/src/lib/utils.d.ts +7 -12
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +17 -48
- package/dist/src/register.d.ts.map +1 -1
- package/dist/src/register.js +5 -1
- package/dist/src/tbera.d.ts +0 -3
- package/dist/src/tbera.d.ts.map +1 -1
- package/dist/src/tbera.js +1 -5
- package/package.json +10 -11
- package/dist/src/lib/constants.d.ts +0 -7
- package/dist/src/lib/constants.d.ts.map +0 -1
- package/dist/src/lib/constants.js +0 -10
- package/dist/src/lib/keyPair.d.ts +0 -11
- package/dist/src/lib/keyPair.d.ts.map +0 -1
- package/dist/src/lib/keyPair.js +0 -24
- package/dist/src/lib/transactionBuilderFactory.d.ts +0 -27
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +0 -1
- package/dist/src/lib/transactionBuilderFactory.js +0 -71
|
@@ -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
|