PHP WebShell

Текущая директория: /usr/lib/node_modules/bitgo/node_modules/@bitgo/sdk-coin-trx/dist/src/lib

Просмотр файла: resourceManagementTxBuilder.js

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ResourceManagementTxBuilder = void 0;
const sdk_core_1 = require("@bitgo/sdk-core");
const bignumber_js_1 = __importDefault(require("bignumber.js"));
const transactionBuilder_1 = require("./transactionBuilder");
const transaction_1 = require("./transaction");
const utils_1 = require("./utils");
/**
 * Abstract base class for resource management transaction builders (delegate/undelegate)
 */
class ResourceManagementTxBuilder extends transactionBuilder_1.TransactionBuilder {
    constructor(_coinConfig) {
        super(_coinConfig);
        this._signingKeys = [];
        this.transaction = new transaction_1.Transaction(_coinConfig);
    }
    /**
     * Set the balance amount
     *
     * @param amount amount in TRX to delegate/undelegate
     * @returns the builder with the new parameter set
     */
    setBalance(amount) {
        this.validateValue(new bignumber_js_1.default(amount));
        this._balance = amount;
        return this;
    }
    /**
     * Set the receiver address
     *
     * @param address receiver address for the delegate/undelegate operation
     * @returns the builder with the new parameter set
     */
    setReceiverAddress(address) {
        this.validateAddress(address);
        this._receiverAddress = (0, utils_1.getHexAddressFromBase58Address)(address.address);
        return this;
    }
    /**
     * Set the resource type
     *
     * @param resource resource type to delegate/undelegate
     * @returns the builder with the new parameter set
     */
    setResource(resource) {
        this.validateResource(resource);
        this._resource = resource;
        return this;
    }
    /** @inheritdoc */
    extendValidTo(extensionMs) {
        if (this.transaction.signature && this.transaction.signature.length > 0) {
            throw new sdk_core_1.ExtendTransactionError('Cannot extend a signed transaction');
        }
        if (extensionMs <= 0) {
            throw new Error('Value cannot be below zero');
        }
        if (extensionMs > utils_1.TRANSACTION_MAX_EXPIRATION) {
            throw new sdk_core_1.ExtendTransactionError('The expiration cannot be extended more than one year');
        }
        if (this._expiration) {
            this._expiration = this._expiration + extensionMs;
        }
        else {
            throw new Error('There is not expiration to extend');
        }
    }
    /**
     * Validates the transaction
     *
     * @param {Transaction} transaction - The transaction to validate
     * @throws {void}
     */
    validateTransaction(transaction) {
        this.validateResourceManagementTransactionFields();
    }
    /** @inheritdoc */
    async buildImplementation() {
        this.createResourceManagementTransaction();
        if (this._signingKeys.length > 0) {
            this.applySignatures();
        }
        if (!this.transaction.id) {
            throw new sdk_core_1.BuildTransactionError('A valid transaction must have an id');
        }
        return Promise.resolve(this.transaction);
    }
    /** @inheritdoc */
    signImplementation(key) {
        if (this._signingKeys.some((signingKey) => signingKey.key === key.key)) {
            throw new sdk_core_1.SigningError('Duplicated key');
        }
        this._signingKeys.push(key);
        return this.transaction;
    }
    applySignatures() {
        if (!this.transaction.inputs) {
            throw new sdk_core_1.SigningError('Transaction has no inputs');
        }
        this._signingKeys.forEach((key) => this.applySignature(key));
    }
    /**
     * Validates if the transaction is a valid delegate/undelegate transaction
     *
     * @throws {BuildTransactionError} when the transaction is invalid
     */
    validateResourceManagementTransactionFields() {
        if (!this._balance) {
            throw new sdk_core_1.BuildTransactionError('Missing parameter: balance');
        }
        if (!this._ownerAddress) {
            throw new sdk_core_1.BuildTransactionError('Missing parameter: source');
        }
        if (!this._resource) {
            throw new sdk_core_1.BuildTransactionError('Missing parameter: resource');
        }
        if (!this._receiverAddress) {
            throw new sdk_core_1.BuildTransactionError('Missing parameter: receiver address');
        }
        if (!this._refBlockBytes || !this._refBlockHash) {
            throw new sdk_core_1.BuildTransactionError('Missing block reference information');
        }
    }
    /**
     * Initialize the delegate/undelegate contract call specific data
     *
     * @param {ResourceManagementContract} resourceManagementContractCall object with delegate txn data
     */
    initResourceManagementContractCall(resourceManagementContractCall) {
        const { resource, owner_address, balance, receiver_address } = resourceManagementContractCall.parameter.value;
        if (owner_address) {
            this.source({ address: (0, utils_1.getBase58AddressFromHex)(owner_address) });
        }
        if (resource) {
            this.setResource(resource);
        }
        if (balance !== undefined) {
            this.setBalance(balance.toString());
        }
        if (receiver_address) {
            this.setReceiverAddress({ address: (0, utils_1.getBase58AddressFromHex)(receiver_address) });
        }
    }
}
exports.ResourceManagementTxBuilder = ResourceManagementTxBuilder;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VNYW5hZ2VtZW50VHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9yZXNvdXJjZU1hbmFnZW1lbnRUeEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsOENBQXVHO0FBRXZHLGdFQUFxQztBQUVyQyw2REFBMEQ7QUFDMUQsK0NBQTRDO0FBRzVDLG1DQUE4RztBQUU5Rzs7R0FFRztBQUNILE1BQXNCLDJCQUE0QixTQUFRLHVDQUFrQjtJQU0xRSxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUkseUJBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxVQUFVLENBQUMsTUFBYztRQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksc0JBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsa0JBQWtCLENBQUMsT0FBZ0I7UUFDakMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBQSxzQ0FBOEIsRUFBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEUsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxXQUFXLENBQUMsUUFBZ0I7UUFDMUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDO0lBQ2Qs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QUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNoRCxNQUFNLElBQUksZ0NBQXFCLENBQUMscUNBQXFDLENBQUMsQ0FBQztRQUN6RSxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDTyxrQ0FBa0MsQ0FBQyw4QkFBMEQ7UUFDckcsTUFBTSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLEdBQUcsOEJBQThCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztRQUM5RyxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBQSwrQkFBdUIsRUFBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkUsQ0FBQztRQUVELElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdCLENBQUM7UUFFRCxJQUFJLE9BQU8sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFFRCxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUEsK0JBQXVCLEVBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEYsQ0FBQztJQUNILENBQUM7Q0FXRjtBQTNLRCxrRUEyS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlS2V5LCBFeHRlbmRUcmFuc2FjdGlvbkVycm9yLCBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsIFNpZ25pbmdFcnJvciB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuXG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgUmVzb3VyY2VNYW5hZ2VtZW50Q29udHJhY3QgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IEFkZHJlc3MgfSBmcm9tICcuL2FkZHJlc3MnO1xuaW1wb3J0IHsgZ2V0QmFzZTU4QWRkcmVzc0Zyb21IZXgsIFRSQU5TQUNUSU9OX01BWF9FWFBJUkFUSU9OLCBnZXRIZXhBZGRyZXNzRnJvbUJhc2U1OEFkZHJlc3MgfSBmcm9tICcuL3V0aWxzJztcblxuLyoqXG4gKiBBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciByZXNvdXJjZSBtYW5hZ2VtZW50IHRyYW5zYWN0aW9uIGJ1aWxkZXJzIChkZWxlZ2F0ZS91bmRlbGVnYXRlKVxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUmVzb3VyY2VNYW5hZ2VtZW50VHhCdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIF9zaWduaW5nS2V5czogQmFzZUtleVtdO1xuICBwcm90ZWN0ZWQgX2JhbGFuY2U6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9yZXNvdXJjZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3JlY2VpdmVyQWRkcmVzczogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl9zaWduaW5nS2V5cyA9IFtdO1xuICAgIHRoaXMudHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24oX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgYmFsYW5jZSBhbW91bnRcbiAgICpcbiAgICogQHBhcmFtIGFtb3VudCBhbW91bnQgaW4gVFJYIHRvIGRlbGVnYXRlL3VuZGVsZWdhdGVcbiAgICogQHJldHVybnMgdGhlIGJ1aWxkZXIgd2l0aCB0aGUgbmV3IHBhcmFtZXRlciBzZXRcbiAgICovXG4gIHNldEJhbGFuY2UoYW1vdW50OiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlVmFsdWUobmV3IEJpZ051bWJlcihhbW91bnQpKTtcbiAgICB0aGlzLl9iYWxhbmNlID0gYW1vdW50O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgcmVjZWl2ZXIgYWRkcmVzc1xuICAgKlxuICAgKiBAcGFyYW0gYWRkcmVzcyByZWNlaXZlciBhZGRyZXNzIGZvciB0aGUgZGVsZWdhdGUvdW5kZWxlZ2F0ZSBvcGVyYXRpb25cbiAgICogQHJldHVybnMgdGhlIGJ1aWxkZXIgd2l0aCB0aGUgbmV3IHBhcmFtZXRlciBzZXRcbiAgICovXG4gIHNldFJlY2VpdmVyQWRkcmVzcyhhZGRyZXNzOiBBZGRyZXNzKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZUFkZHJlc3MoYWRkcmVzcyk7XG4gICAgdGhpcy5fcmVjZWl2ZXJBZGRyZXNzID0gZ2V0SGV4QWRkcmVzc0Zyb21CYXNlNThBZGRyZXNzKGFkZHJlc3MuYWRkcmVzcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSByZXNvdXJjZSB0eXBlXG4gICAqXG4gICAqIEBwYXJhbSByZXNvdXJjZSByZXNvdXJjZSB0eXBlIHRvIGRlbGVnYXRlL3VuZGVsZWdhdGVcbiAgICogQHJldHVybnMgdGhlIGJ1aWxkZXIgd2l0aCB0aGUgbmV3IHBhcmFtZXRlciBzZXRcbiAgICovXG4gIHNldFJlc291cmNlKHJlc291cmNlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlUmVzb3VyY2UocmVzb3VyY2UpO1xuICAgIHRoaXMuX3Jlc291cmNlID0gcmVzb3VyY2U7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZXh0ZW5kVmFsaWRUbyhleHRlbnNpb25NczogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudHJhbnNhY3Rpb24uc2lnbmF0dXJlICYmIHRoaXMudHJhbnNhY3Rpb24uc2lnbmF0dXJlLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBFeHRlbmRUcmFuc2FjdGlvbkVycm9yKCdDYW5ub3QgZXh0ZW5kIGEgc2lnbmVkIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuXG4gICAgaWYgKGV4dGVuc2lvbk1zIDw9IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVmFsdWUgY2Fubm90IGJlIGJlbG93IHplcm8nKTtcbiAgICB9XG5cbiAgICBpZiAoZXh0ZW5zaW9uTXMgPiBUUkFOU0FDVElPTl9NQVhfRVhQSVJBVElPTikge1xuICAgICAgdGhyb3cgbmV3IEV4dGVuZFRyYW5zYWN0aW9uRXJyb3IoJ1RoZSBleHBpcmF0aW9uIGNhbm5vdCBiZSBleHRlbmRlZCBtb3JlIHRoYW4gb25lIHllYXInKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fZXhwaXJhdGlvbikge1xuICAgICAgdGhpcy5fZXhwaXJhdGlvbiA9IHRoaXMuX2V4cGlyYXRpb24gKyBleHRlbnNpb25NcztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGVyZSBpcyBub3QgZXhwaXJhdGlvbiB0byBleHRlbmQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvbiAtIFRoZSB0cmFuc2FjdGlvbiB0byB2YWxpZGF0ZVxuICAgKiBAdGhyb3dzIHt2b2lkfVxuICAgKi9cbiAgdmFsaWRhdGVUcmFuc2FjdGlvbih0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRlUmVzb3VyY2VNYW5hZ2VtZW50VHJhbnNhY3Rpb25GaWVsZHMoKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgdGhpcy5jcmVhdGVSZXNvdXJjZU1hbmFnZW1lbnRUcmFuc2FjdGlvbigpO1xuXG4gICAgaWYgKHRoaXMuX3NpZ25pbmdLZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuYXBwbHlTaWduYXR1cmVzKCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnRyYW5zYWN0aW9uLmlkKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdBIHZhbGlkIHRyYW5zYWN0aW9uIG11c3QgaGF2ZSBhbiBpZCcpO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMudHJhbnNhY3Rpb24pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBzaWduSW1wbGVtZW50YXRpb24oa2V5OiBCYXNlS2V5KTogVHJhbnNhY3Rpb24ge1xuICAgIGlmICh0aGlzLl9zaWduaW5nS2V5cy5zb21lKChzaWduaW5nS2V5KSA9PiBzaWduaW5nS2V5LmtleSA9PT0ga2V5LmtleSkpIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ0R1cGxpY2F0ZWQga2V5Jyk7XG4gICAgfVxuICAgIHRoaXMuX3NpZ25pbmdLZXlzLnB1c2goa2V5KTtcblxuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFwcGx5U2lnbmF0dXJlcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudHJhbnNhY3Rpb24uaW5wdXRzKSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdUcmFuc2FjdGlvbiBoYXMgbm8gaW5wdXRzJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fc2lnbmluZ0tleXMuZm9yRWFjaCgoa2V5KSA9PiB0aGlzLmFwcGx5U2lnbmF0dXJlKGtleSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBpZiB0aGUgdHJhbnNhY3Rpb24gaXMgYSB2YWxpZCBkZWxlZ2F0ZS91bmRlbGVnYXRlIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEB0aHJvd3Mge0J1aWxkVHJhbnNhY3Rpb25FcnJvcn0gd2hlbiB0aGUgdHJhbnNhY3Rpb24gaXMgaW52YWxpZFxuICAgKi9cbiAgcHJvdGVjdGVkIHZhbGlkYXRlUmVzb3VyY2VNYW5hZ2VtZW50VHJhbnNhY3Rpb25GaWVsZHMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9iYWxhbmNlKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdNaXNzaW5nIHBhcmFtZXRlcjogYmFsYW5jZScpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fb3duZXJBZGRyZXNzKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdNaXNzaW5nIHBhcmFtZXRlcjogc291cmNlJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9yZXNvdXJjZSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignTWlzc2luZyBwYXJhbWV0ZXI6IHJlc291cmNlJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9yZWNlaXZlckFkZHJlc3MpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ01pc3NpbmcgcGFyYW1ldGVyOiByZWNlaXZlciBhZGRyZXNzJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9yZWZCbG9ja0J5dGVzIHx8ICF0aGlzLl9yZWZCbG9ja0hhc2gpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ01pc3NpbmcgYmxvY2sgcmVmZXJlbmNlIGluZm9ybWF0aW9uJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIGRlbGVnYXRlL3VuZGVsZWdhdGUgY29udHJhY3QgY2FsbCBzcGVjaWZpYyBkYXRhXG4gICAqXG4gICAqIEBwYXJhbSB7UmVzb3VyY2VNYW5hZ2VtZW50Q29udHJhY3R9IHJlc291cmNlTWFuYWdlbWVudENvbnRyYWN0Q2FsbCBvYmplY3Qgd2l0aCBkZWxlZ2F0ZSB0eG4gZGF0YVxuICAgKi9cbiAgcHJvdGVjdGVkIGluaXRSZXNvdXJjZU1hbmFnZW1lbnRDb250cmFjdENhbGwocmVzb3VyY2VNYW5hZ2VtZW50Q29udHJhY3RDYWxsOiBSZXNvdXJjZU1hbmFnZW1lbnRDb250cmFjdCk6IHZvaWQge1xuICAgIGNvbnN0IHsgcmVzb3VyY2UsIG93bmVyX2FkZHJlc3MsIGJhbGFuY2UsIHJlY2VpdmVyX2FkZHJlc3MgfSA9IHJlc291cmNlTWFuYWdlbWVudENvbnRyYWN0Q2FsbC5wYXJhbWV0ZXIudmFsdWU7XG4gICAgaWYgKG93bmVyX2FkZHJlc3MpIHtcbiAgICAgIHRoaXMuc291cmNlKHsgYWRkcmVzczogZ2V0QmFzZTU4QWRkcmVzc0Zyb21IZXgob3duZXJfYWRkcmVzcykgfSk7XG4gICAgfVxuXG4gICAgaWYgKHJlc291cmNlKSB7XG4gICAgICB0aGlzLnNldFJlc291cmNlKHJlc291cmNlKTtcbiAgICB9XG5cbiAgICBpZiAoYmFsYW5jZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnNldEJhbGFuY2UoYmFsYW5jZS50b1N0cmluZygpKTtcbiAgICB9XG5cbiAgICBpZiAocmVjZWl2ZXJfYWRkcmVzcykge1xuICAgICAgdGhpcy5zZXRSZWNlaXZlckFkZHJlc3MoeyBhZGRyZXNzOiBnZXRCYXNlNThBZGRyZXNzRnJvbUhleChyZWNlaXZlcl9hZGRyZXNzKSB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSGVscGVyIG1ldGhvZCB0byBjcmVhdGUgdGhlIGRlbGVnYXRlL3VuZGVsZWdhdGUgcmVzb3VyY2UgdHJhbnNhY3Rpb25cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBjcmVhdGVSZXNvdXJjZU1hbmFnZW1lbnRUcmFuc2FjdGlvbigpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIGdldCB0aGUgcmVzb3VyY2UgZGVsZWdhdGUvdW5kZWxlZ2F0ZSB0cmFuc2FjdGlvbiByYXcgZGF0YSBoZXhcbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRSZXNvdXJjZU1hbmFnZW1lbnRUeFJhd0RhdGFIZXgoKTogc3RyaW5nO1xufVxuIl19

Выполнить команду


Для локальной разработки. Не используйте в интернете!