PHP WebShell

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

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

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    var desc = Object.getOwnPropertyDescriptor(m, k);
    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
      desc = { enumerable: true, get: function() { return m[k]; } };
    }
    Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
    o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
    var ownKeys = function(o) {
        ownKeys = Object.getOwnPropertyNames || function (o) {
            var ar = [];
            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
            return ar;
        };
        return ownKeys(o);
    };
    return function (mod) {
        if (mod && mod.__esModule) return mod;
        var result = {};
        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
        __setModuleDefault(result, mod);
        return result;
    };
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.Coredao = exports.Oas = exports.zkEth = exports.XRP = exports.Ton = exports.Sui = exports.Opeth = exports.Polyx = exports.Polygon = exports.Bsc = exports.Near = exports.Dot = exports.Ada = exports.Sol = exports.Asi = exports.Initia = exports.Cronos = exports.Mantra = exports.Mon = exports.Baby = exports.Rune = exports.Coreum = exports.Zeta = exports.Islm = exports.Injective = exports.Sei = exports.Hash = exports.Bld = exports.Bera = exports.Tia = exports.AvaxP = exports.Osmo = exports.Atom = exports.Arbeth = exports.Algo = exports.Stx = exports.Cspr = exports.Hbar = exports.Celo = exports.Rbtc = exports.AvaxC = exports.Etc = exports.Eth = exports.Xtz = exports.Trx = exports.BaseCoin = exports.Ed25519KeyDeriver = exports.crypto = exports.Eddsa = exports.Ed25519BIP32 = void 0;
exports.supportedCoins = exports.MIDNIGHT_TNC_HASH = exports.CosmosSharedCoin = exports.Vet = exports.Soneium = exports.Stt = exports.World = exports.Wemix = exports.Xdc = exports.Sgb = exports.EvmCoin = exports.Flr = exports.Icp = exports.Tao = exports.Apechain = exports.Apt = void 0;
exports.getBuilder = getBuilder;
exports.getMessageBuilderFactory = getMessageBuilderFactory;
exports.register = register;
exports.registerMessageBuilderFactory = registerMessageBuilderFactory;
exports.verifyMessage = verifyMessage;
const sdk_core_1 = require("@bitgo/sdk-core");
Object.defineProperty(exports, "Ed25519KeyDeriver", { enumerable: true, get: function () { return sdk_core_1.Ed25519KeyDeriver; } });
Object.defineProperty(exports, "Ed25519BIP32", { enumerable: true, get: function () { return sdk_core_1.Ed25519BIP32; } });
Object.defineProperty(exports, "Eddsa", { enumerable: true, get: function () { return sdk_core_1.Eddsa; } });
const statics_1 = require("@bitgo/statics");
/**
 * Deprecated after version 2.19.0
 * Retained for short term backwards compatibility - migrate to: @bitgo/sdk-api and @bitgo/sdk-core
 */
exports.crypto = sdk_core_1.acountLibCrypto;
/**
 * Deprecated after version 2.19.0
 * Retained for short term backwards compatibility - migrate to: @bitgo/sdk-api and @bitgo/sdk-core
 */
exports.BaseCoin = sdk_core_1.accountLibBaseCoin;
// coins
const Trx = __importStar(require("@bitgo/sdk-coin-trx"));
exports.Trx = Trx;
const sdk_coin_xtz_1 = require("@bitgo/sdk-coin-xtz");
Object.defineProperty(exports, "Xtz", { enumerable: true, get: function () { return sdk_coin_xtz_1.XtzLib; } });
const Eth = __importStar(require("@bitgo/sdk-coin-eth"));
exports.Eth = Eth;
const Etc = __importStar(require("@bitgo/sdk-coin-etc"));
exports.Etc = Etc;
const AvaxC = __importStar(require("@bitgo/sdk-coin-avaxc"));
exports.AvaxC = AvaxC;
const Rbtc = __importStar(require("@bitgo/sdk-coin-rbtc"));
exports.Rbtc = Rbtc;
const Celo = __importStar(require("@bitgo/sdk-coin-celo"));
exports.Celo = Celo;
const Hbar = __importStar(require("@bitgo/sdk-coin-hbar"));
exports.Hbar = Hbar;
const sdk_coin_cspr_1 = require("@bitgo/sdk-coin-cspr");
Object.defineProperty(exports, "Cspr", { enumerable: true, get: function () { return sdk_coin_cspr_1.CsprLib; } });
const sdk_coin_stx_1 = require("@bitgo/sdk-coin-stx");
Object.defineProperty(exports, "Stx", { enumerable: true, get: function () { return sdk_coin_stx_1.StxLib; } });
const sdk_coin_algo_1 = require("@bitgo/sdk-coin-algo");
Object.defineProperty(exports, "Algo", { enumerable: true, get: function () { return sdk_coin_algo_1.AlgoLib; } });
const Arbeth = __importStar(require("@bitgo/sdk-coin-arbeth"));
exports.Arbeth = Arbeth;
const Atom = __importStar(require("@bitgo/sdk-coin-atom"));
exports.Atom = Atom;
const Osmo = __importStar(require("@bitgo/sdk-coin-osmo"));
exports.Osmo = Osmo;
const sdk_coin_avaxp_1 = require("@bitgo/sdk-coin-avaxp");
Object.defineProperty(exports, "AvaxP", { enumerable: true, get: function () { return sdk_coin_avaxp_1.AvaxpLib; } });
const Tia = __importStar(require("@bitgo/sdk-coin-tia"));
exports.Tia = Tia;
const Bera = __importStar(require("@bitgo/sdk-coin-bera"));
exports.Bera = Bera;
const Bld = __importStar(require("@bitgo/sdk-coin-bld"));
exports.Bld = Bld;
const Hash = __importStar(require("@bitgo/sdk-coin-hash"));
exports.Hash = Hash;
const Sei = __importStar(require("@bitgo/sdk-coin-sei"));
exports.Sei = Sei;
const Injective = __importStar(require("@bitgo/sdk-coin-injective"));
exports.Injective = Injective;
const Islm = __importStar(require("@bitgo/sdk-coin-islm"));
exports.Islm = Islm;
const Zeta = __importStar(require("@bitgo/sdk-coin-zeta"));
exports.Zeta = Zeta;
const Coreum = __importStar(require("@bitgo/sdk-coin-coreum"));
exports.Coreum = Coreum;
const Rune = __importStar(require("@bitgo/sdk-coin-rune"));
exports.Rune = Rune;
const Baby = __importStar(require("@bitgo/sdk-coin-baby"));
exports.Baby = Baby;
const Mon = __importStar(require("@bitgo/sdk-coin-mon"));
exports.Mon = Mon;
const Mantra = __importStar(require("@bitgo/sdk-coin-mantra"));
exports.Mantra = Mantra;
const Cronos = __importStar(require("@bitgo/sdk-coin-cronos"));
exports.Cronos = Cronos;
const Initia = __importStar(require("@bitgo/sdk-coin-initia"));
exports.Initia = Initia;
const Asi = __importStar(require("@bitgo/sdk-coin-asi"));
exports.Asi = Asi;
const Sol = __importStar(require("@bitgo/sdk-coin-sol"));
exports.Sol = Sol;
const Ada = __importStar(require("@bitgo/sdk-coin-ada"));
exports.Ada = Ada;
const Dot = __importStar(require("@bitgo/sdk-coin-dot"));
exports.Dot = Dot;
const Near = __importStar(require("@bitgo/sdk-coin-near"));
exports.Near = Near;
const Bsc = __importStar(require("@bitgo/sdk-coin-bsc"));
exports.Bsc = Bsc;
const Polygon = __importStar(require("@bitgo/sdk-coin-polygon"));
exports.Polygon = Polygon;
const Polyx = __importStar(require("@bitgo/sdk-coin-polyx"));
exports.Polyx = Polyx;
const Opeth = __importStar(require("@bitgo/sdk-coin-opeth"));
exports.Opeth = Opeth;
const Sui = __importStar(require("@bitgo/sdk-coin-sui"));
exports.Sui = Sui;
const Ton = __importStar(require("@bitgo/sdk-coin-ton"));
exports.Ton = Ton;
const XRP = __importStar(require("@bitgo/sdk-coin-xrp"));
exports.XRP = XRP;
const zkEth = __importStar(require("@bitgo/sdk-coin-zketh"));
exports.zkEth = zkEth;
const Oas = __importStar(require("@bitgo/sdk-coin-oas"));
exports.Oas = Oas;
const Coredao = __importStar(require("@bitgo/sdk-coin-coredao"));
exports.Coredao = Coredao;
const Apt = __importStar(require("@bitgo/sdk-coin-apt"));
exports.Apt = Apt;
const Apechain = __importStar(require("@bitgo/sdk-coin-apechain"));
exports.Apechain = Apechain;
const Tao = __importStar(require("@bitgo/sdk-coin-tao"));
exports.Tao = Tao;
const Icp = __importStar(require("@bitgo/sdk-coin-icp"));
exports.Icp = Icp;
const Flr = __importStar(require("@bitgo/sdk-coin-flr"));
exports.Flr = Flr;
const EvmCoin = __importStar(require("@bitgo/sdk-coin-evm"));
exports.EvmCoin = EvmCoin;
const Sgb = __importStar(require("@bitgo/sdk-coin-sgb"));
exports.Sgb = Sgb;
const Xdc = __importStar(require("@bitgo/sdk-coin-xdc"));
exports.Xdc = Xdc;
const Wemix = __importStar(require("@bitgo/sdk-coin-wemix"));
exports.Wemix = Wemix;
const World = __importStar(require("@bitgo/sdk-coin-world"));
exports.World = World;
const Stt = __importStar(require("@bitgo/sdk-coin-stt"));
exports.Stt = Stt;
const Soneium = __importStar(require("@bitgo/sdk-coin-soneium"));
exports.Soneium = Soneium;
const Vet = __importStar(require("@bitgo/sdk-coin-vet"));
exports.Vet = Vet;
const CosmosSharedCoin = __importStar(require("@bitgo/sdk-coin-cosmos"));
exports.CosmosSharedCoin = CosmosSharedCoin;
const utils_1 = require("./utils");
Object.defineProperty(exports, "MIDNIGHT_TNC_HASH", { enumerable: true, get: function () { return utils_1.MIDNIGHT_TNC_HASH; } });
const coinBuilderMap = {
    trx: Trx.WrappedBuilder,
    ttrx: Trx.WrappedBuilder,
    xtz: sdk_coin_xtz_1.XtzLib.TransactionBuilder,
    txtz: sdk_coin_xtz_1.XtzLib.TransactionBuilder,
    etc: Etc.TransactionBuilder,
    tetc: Etc.TransactionBuilder,
    eth: Eth.TransactionBuilder,
    teth: Eth.TransactionBuilder,
    gteth: Eth.TransactionBuilder,
    hteth: Eth.TransactionBuilder,
    rbtc: Rbtc.TransactionBuilder,
    trbtc: Rbtc.TransactionBuilder,
    celo: Celo.TransactionBuilder,
    tcelo: Celo.TestnetTransactionBuilder,
    avaxc: AvaxC.TransactionBuilder,
    tavaxc: AvaxC.TransactionBuilder,
    bsc: Bsc.TransactionBuilder,
    tbsc: Bsc.TransactionBuilder,
    avaxp: sdk_coin_avaxp_1.AvaxpLib.TransactionBuilderFactory,
    tavaxp: sdk_coin_avaxp_1.AvaxpLib.TransactionBuilderFactory,
    hbar: Hbar.TransactionBuilderFactory,
    thbar: Hbar.TransactionBuilderFactory,
    cspr: sdk_coin_cspr_1.CsprLib.TransactionBuilderFactory,
    tcspr: sdk_coin_cspr_1.CsprLib.TransactionBuilderFactory,
    stx: sdk_coin_stx_1.StxLib.TransactionBuilderFactory,
    tstx: sdk_coin_stx_1.StxLib.TransactionBuilderFactory,
    algo: sdk_coin_algo_1.AlgoLib.TransactionBuilderFactory,
    talgo: sdk_coin_algo_1.AlgoLib.TransactionBuilderFactory,
    sol: Sol.TransactionBuilderFactory,
    tsol: Sol.TransactionBuilderFactory,
    dot: Dot.TransactionBuilderFactory,
    tdot: Dot.TransactionBuilderFactory,
    near: Near.TransactionBuilderFactory,
    polygon: Polygon.TransactionBuilder,
    tpolygon: Polygon.TransactionBuilder,
    sui: Sui.TransactionBuilderFactory,
    tsui: Sui.TransactionBuilderFactory,
    tia: Tia.TransactionBuilderFactory,
    ttia: Tia.TransactionBuilderFactory,
    atom: Atom.TransactionBuilderFactory,
    tatom: Atom.TransactionBuilderFactory,
    osmo: Osmo.TransactionBuilderFactory,
    tosmo: Osmo.TransactionBuilderFactory,
    bld: Bld.TransactionBuilderFactory,
    tbld: Bld.TransactionBuilderFactory,
    hash: Hash.TransactionBuilderFactory,
    thash: Hash.TransactionBuilderFactory,
    sei: Sei.TransactionBuilderFactory,
    tsei: Sei.TransactionBuilderFactory,
    injective: Injective.TransactionBuilderFactory,
    tinjective: Injective.TransactionBuilderFactory,
    zeta: Zeta.TransactionBuilderFactory,
    tzeta: Zeta.TransactionBuilderFactory,
    islm: Islm.TransactionBuilderFactory,
    tislm: Islm.TransactionBuilderFactory,
    coreum: Coreum.TransactionBuilderFactory,
    tcoreum: Coreum.TransactionBuilderFactory,
    arbeth: Arbeth.TransactionBuilder,
    tarbeth: Arbeth.TransactionBuilder,
    opeth: Opeth.TransactionBuilder,
    topeth: Opeth.TransactionBuilder,
    ton: Ton.TransactionBuilder,
    tton: Ton.TransactionBuilder,
    zketh: zkEth.TransactionBuilder,
    tzketh: zkEth.TransactionBuilder,
    bera: Bera.TransactionBuilder,
    tbera: Bera.TransactionBuilder,
    rune: Rune.TransactionBuilderFactory,
    trune: Rune.TransactionBuilderFactory,
    oas: Oas.TransactionBuilder,
    toas: Oas.TransactionBuilder,
    coredao: Coredao.TransactionBuilder,
    tcoredao: Coredao.TransactionBuilder,
    apechain: Apechain.TransactionBuilder,
    tapechain: Apechain.TransactionBuilder,
    apt: Apt.TransactionBuilder,
    tapt: Apt.TransactionBuilder,
    tao: Tao.TransactionBuilderFactory,
    ttao: Tao.TransactionBuilderFactory,
    icp: Icp.TransactionBuilder,
    ticp: Icp.TransactionBuilder,
    baby: Baby.TransactionBuilder,
    tbaby: Baby.TransactionBuilder,
    cronos: Cronos.TransactionBuilder,
    tcronos: Cronos.TransactionBuilder,
    initia: Initia.TransactionBuilder,
    tinitia: Initia.TransactionBuilder,
    asi: Asi.TransactionBuilder,
    tasi: Asi.TransactionBuilder,
    flr: Flr.TransactionBuilder,
    tflr: Flr.TransactionBuilder,
    sgb: Sgb.TransactionBuilder,
    tsgb: Sgb.TransactionBuilder,
    xdc: Xdc.TransactionBuilder,
    txdc: Xdc.TransactionBuilder,
    wemix: Wemix.TransactionBuilder,
    twemix: Wemix.TransactionBuilder,
    mantra: Mantra.TransactionBuilder,
    tmantra: Mantra.TransactionBuilder,
    mon: Mon.TransactionBuilder,
    tmon: Mon.TransactionBuilder,
    world: World.TransactionBuilder,
    tworld: World.TransactionBuilder,
    soneium: Soneium.TransactionBuilder,
    tsoneium: Soneium.TransactionBuilder,
    tstt: Stt.TransactionBuilder,
    polyx: Polyx.TransactionBuilderFactory,
    tpolyx: Polyx.TransactionBuilderFactory,
    vet: Vet.TransactionBuilderFactory,
    tvet: Vet.TransactionBuilderFactory,
};
const coinMessageBuilderFactoryMap = {
    eth: Eth.MessageBuilderFactory,
    hteth: Eth.MessageBuilderFactory,
    bsc: Bsc.MessageBuilderFactory,
    tbsc: Bsc.MessageBuilderFactory,
    ada: Ada.MessageBuilderFactory,
    tada: Ada.MessageBuilderFactory,
    sol: Sol.MessageBuilderFactory,
    tsol: Sol.MessageBuilderFactory,
};
statics_1.coins
    .filter((coin) => coin.features.includes(statics_1.CoinFeature.SHARED_EVM_SDK))
    .forEach((coin) => {
    coinBuilderMap[coin.name] = EvmCoin.TransactionBuilder;
});
statics_1.coins
    .filter((coin) => coin.features.includes(statics_1.CoinFeature.SHARED_COSMOS_SDK))
    .forEach((coin) => {
    coinBuilderMap[coin.name] = CosmosSharedCoin.TransactionBuilder;
});
/**
 * Get the list of coin tickers supported by this library.
 */
exports.supportedCoins = Object.keys(coinBuilderMap);
/**
 * Get a transaction builder for the given coin.
 *
 * @param {string} coinName One of the {@code supportedCoins}
 * @returns {any} An instance of a {@code TransactionBuilder}
 */
function getBuilder(coinName) {
    const builderClass = coinBuilderMap[coinName];
    if (!builderClass) {
        throw new sdk_core_1.BuildTransactionError(`Coin ${coinName} not supported`);
    }
    return new builderClass(statics_1.coins.get(coinName));
}
function getMessageBuilderFactory(coinName) {
    const messageBuilderFactoryClass = coinMessageBuilderFactoryMap[coinName];
    if (!messageBuilderFactoryClass) {
        throw new sdk_core_1.BuildMessageError(`Message builder factory for coin ${coinName} not supported`);
    }
    return new messageBuilderFactoryClass(statics_1.coins.get(coinName));
}
/**
 * Register a new coin instance with its builder factory
 *
 * @param {string} coinName coin name as it was registered in @bitgo/statics
 * @param {any} builderFactory the builder factory class for that coin
 * @returns {any} the factory instance for the registered coin
 */
function register(coinName, builderFactory) {
    const coinConfig = statics_1.coins.get(coinName);
    const factory = new builderFactory(coinConfig);
    // coinBuilderMap[coinName] = factory;
    coinBuilderMap[coinName] = builderFactory; // For now register the constructor function until reimplement getBuilder method
    return factory;
}
/**
 * Register a new coin instance with its message builder factory constructor.
 *
 * @param {string} coinName coin name as it was registered in @bitgo/statics
 * @param {any} messageBuilderFactory the message builder factory class for that coin
 * @returns {any} the message builder factory instance for the registered coin
 */
function registerMessageBuilderFactory(coinName, messageBuilderFactory) {
    const coinConfig = statics_1.coins.get(coinName);
    const factory = new messageBuilderFactory(coinConfig);
    coinMessageBuilderFactoryMap[coinName] = messageBuilderFactory;
    return factory;
}
/**
 * Verify a message against the given encoded payload.
 *
 * @param {string} coinName - The name of the coin.
 * @param {string} messageRaw - The raw message to verify.
 * @param {string} messageEncoded - The encoded message to verify against.
 * @param {MessageStandardType} messageStandardType - The type of message standard.
 * @param {Record<string, unknown>} [metadata] - Optional metadata for verification.
 * @returns {Promise<boolean>} - Returns true if the verification is successful, false otherwise.
 */
async function verifyMessage(coinName, messageRaw, messageEncoded, messageStandardType, metadata) {
    try {
        const messageBuilderFactory = getMessageBuilderFactory(coinName);
        const messageBuilder = messageBuilderFactory.getMessageBuilder(messageStandardType);
        messageBuilder.setPayload(messageRaw);
        const message = await messageBuilder.build();
        const isValidMessageEncoded = await message.verifyEncodedPayload(messageEncoded, metadata);
        if (!isValidMessageEncoded) {
            return false;
        }
        return (0, utils_1.validateAgainstMessageTemplates)(messageRaw);
    }
    catch (e) {
        console.error(`Error verifying message for coin ${coinName}:`, e);
        return false;
    }
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNXQSxnQ0FPQztBQUVELDREQU1DO0FBU0QsNEJBU0M7QUFTRCxzRUFRQztBQVlELHNDQXFCQztBQXpiRCw4Q0FZeUI7QUFVaEIsa0dBbEJQLDRCQUFpQixPQWtCTztBQVJqQiw2RkFUUCx1QkFBWSxPQVNPO0FBQUUsc0ZBUnJCLGdCQUFLLE9BUXFCO0FBRDVCLDRDQUE0RTtBQUc1RTs7O0dBR0c7QUFDVSxRQUFBLE1BQU0sR0FBRywwQkFBZSxDQUFDO0FBSXRDOzs7R0FHRztBQUNVLFFBQUEsUUFBUSxHQUFHLDZCQUFrQixDQUFDO0FBRTNDLFFBQVE7QUFDUix5REFBMkM7QUFDbEMsa0JBQUc7QUFFWixzREFBb0Q7QUFDM0Msb0ZBRFUscUJBQUcsT0FDVjtBQUVaLHlEQUEyQztBQUNsQyxrQkFBRztBQUVaLHlEQUEyQztBQUNsQyxrQkFBRztBQUVaLDZEQUErQztBQUN0QyxzQkFBSztBQUVkLDJEQUE2QztBQUNwQyxvQkFBSTtBQUViLDJEQUE2QztBQUNwQyxvQkFBSTtBQUViLDJEQUE2QztBQUNwQyxvQkFBSTtBQUViLHdEQUF1RDtBQUM5QyxxRkFEVyx1QkFBSSxPQUNYO0FBRWIsc0RBQW9EO0FBQzNDLG9GQURVLHFCQUFHLE9BQ1Y7QUFFWix3REFBdUQ7QUFDOUMscUZBRFcsdUJBQUksT0FDWDtBQUViLCtEQUFpRDtBQUN4Qyx3QkFBTTtBQUVmLDJEQUE2QztBQUNwQyxvQkFBSTtBQUViLDJEQUE2QztBQUNwQyxvQkFBSTtBQUViLDBEQUEwRDtBQUNqRCxzRkFEWSx5QkFBSyxPQUNaO0FBRWQseURBQTJDO0FBQ2xDLGtCQUFHO0FBRVosMkRBQTZDO0FBQ3BDLG9CQUFJO0FBRWIseURBQTJDO0FBQ2xDLGtCQUFHO0FBRVosMkRBQTZDO0FBQ3BD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LEVBQUUsU0FBUyxDQUFDLHlCQUF5QjtJQUMvQyxJQUFJLEVBQUUsSUFBSSxDQUFDLHlCQUF5QjtJQUNwQyxLQUFLLEVBQUUsSUFBSSxDQUFDLHlCQUF5QjtJQUNyQyxJQUFJLEVBQUUsSUFBSSxDQUFDLHlCQUF5QjtJQUNwQyxLQUFLLEVBQUUsSUFBSSxDQUFDLHlCQUF5QjtJQUNyQyxNQUFNLEVBQUUsTUFBTSxDQUFDLHlCQUF5QjtJQUN4QyxPQUFPLEVBQUUsTUFBTSxDQUFDLHlCQUF5QjtJQUN6QyxNQUFNLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtJQUNqQyxPQUFPLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtJQUNsQyxLQUFLLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtJQUMvQixNQUFNLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtJQUNoQyxHQUFHLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUMzQixJQUFJLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUM1QixLQUFLLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtJQUMvQixNQUFNLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtJQUNoQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtJQUM3QixLQUFLLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtJQUM5QixJQUFJLEVBQUUsSUFBSSxDQUFDLHlCQUF5QjtJQUNwQyxLQUFLLEVBQUUsSUFBSSxDQUFDLHlCQUF5QjtJQUNyQyxHQUFHLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUMzQixJQUFJLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUM1QixPQUFPLEVBQUUsT0FBTyxDQUFDLGtCQUFrQjtJQUNuQyxRQUFRLEVBQUUsT0FBTyxDQUFDLGtCQUFrQjtJQUNwQyxRQUFRLEVBQUUsUUFBUSxDQUFDLGtCQUFrQjtJQUNyQyxTQUFTLEVBQUUsUUFBUSxDQUFDLGtCQUFrQjtJQUN0QyxHQUFHLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUMzQixJQUFJLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUM1QixHQUFHLEVBQUUsR0FBRyxDQUFDLHlCQUF5QjtJQUNsQyxJQUFJLEVBQUUsR0FBRyxDQUFDLHlCQUF5QjtJQUNuQyxHQUFHLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUMzQixJQUFJLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUM1QixJQUFJLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtJQUM3QixLQUFLLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtJQUM5QixNQUFNLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtJQUNqQyxPQUFPLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtJQUNsQyxNQUFNLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtJQUNqQyxPQUFPLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtJQUNsQyxHQUFHLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUMzQixJQUFJLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUM1QixHQUFHLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUMzQixJQUFJLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUM1QixHQUFHLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUMzQixJQUFJLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUM1QixHQUFHLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUMzQixJQUFJLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUM1QixLQUFLLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtJQUMvQixNQUFNLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtJQUNoQyxNQUFNLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtJQUNqQyxPQUFPLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtJQUNsQyxHQUFHLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUMzQixJQUFJLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUM1QixLQUFLLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtJQUMvQixNQUFNLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtJQUNoQyxPQUFPLEVBQUUsT0FBTyxDQUFDLGtCQUFrQjtJQUNuQyxRQUFRLEVBQUUsT0FBTyxDQUFDLGtC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bGRlcixcbiAgQmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIEJ1aWxkVHJhbnNhY3Rpb25FcnJvcixcbiAgRWQyNTUxOUtleURlcml2ZXIsXG4gIEVkMjU1MTlCSVAzMixcbiAgRWRkc2EsXG4gIGFjY291bnRMaWJCYXNlQ29pbixcbiAgYWNvdW50TGliQ3J5cHRvLFxuICBCYXNlTWVzc2FnZUJ1aWxkZXJGYWN0b3J5LFxuICBCdWlsZE1lc3NhZ2VFcnJvcixcbiAgTWVzc2FnZVN0YW5kYXJkVHlwZSxcbn0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcsIENvaW5GZWF0dXJlLCBjb2lucyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmV4cG9ydCB7IEVkMjU1MTlCSVAzMiwgRWRkc2EgfTtcblxuLyoqXG4gKiBEZXByZWNhdGVkIGFmdGVyIHZlcnNpb24gMi4xOS4wXG4gKiBSZXRhaW5lZCBmb3Igc2hvcnQgdGVybSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAtIG1pZ3JhdGUgdG86IEBiaXRnby9zZGstYXBpIGFuZCBAYml0Z28vc2RrLWNvcmVcbiAqL1xuZXhwb3J0IGNvbnN0IGNyeXB0byA9IGFjb3VudExpYkNyeXB0bztcblxuZXhwb3J0IHsgRWQyNTUxOUtleURlcml2ZXIgfTtcblxuLyoqXG4gKiBEZXByZWNhdGVkIGFmdGVyIHZlcnNpb24gMi4xOS4wXG4gKiBSZXRhaW5lZCBmb3Igc2hvcnQgdGVybSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAtIG1pZ3JhdGUgdG86IEBiaXRnby9zZGstYXBpIGFuZCBAYml0Z28vc2RrLWNvcmVcbiAqL1xuZXhwb3J0IGNvbnN0IEJhc2VDb2luID0gYWNjb3VudExpYkJhc2VDb2luO1xuXG4vLyBjb2luc1xuaW1wb3J0ICogYXMgVHJ4IGZyb20gJ0BiaXRnby9zZGstY29pbi10cngnO1xuZXhwb3J0IHsgVHJ4IH07XG5cbmltcG9ydCB7IFh0ekxpYiBhcyBYdHogfSBmcm9tICdAYml0Z28vc2RrLWNvaW4teHR6JztcbmV4cG9ydCB7IFh0eiB9O1xuXG5pbXBvcnQgKiBhcyBFdGggZnJvbSAnQGJpdGdvL3Nkay1jb2luLWV0aCc7XG5leHBvcnQgeyBFdGggfTtcblxuaW1wb3J0ICogYXMgRXRjIGZyb20gJ0BiaXRnby9zZGstY29pbi1ldGMnO1xuZXhwb3J0IHsgRXRjIH07XG5cbmltcG9ydCAqIGFzIEF2YXhDIGZyb20gJ0BiaXRnby9zZGstY29pbi1hdmF4Yyc7XG5leHBvcnQgeyBBdmF4QyB9O1xuXG5pbXBvcnQgKiBhcyBSYnRjIGZyb20gJ0BiaXRnby9zZGstY29pbi1yYnRjJztcbmV4cG9ydCB7IFJidGMgfTtcblxuaW1wb3J0ICogYXMgQ2VsbyBmcm9tICdAYml0Z28vc2RrLWNvaW4tY2Vsbyc7XG5leHBvcnQgeyBDZWxvIH07XG5cbmltcG9ydCAqIGFzIEhiYXIgZnJvbSAnQGJpdGdvL3Nkay1jb2luLWhiYXInO1xuZXhwb3J0IHsgSGJhciB9O1xuXG5pbXBvcnQgeyBDc3ByTGliIGFzIENzcHIgfSBmcm9tICdAYml0Z28vc2RrLWNvaW4tY3Nwcic7XG5leHBvcnQgeyBDc3ByIH07XG5cbmltcG9ydCB7IFN0eExpYiBhcyBTdHggfSBmcm9tICdAYml0Z28vc2RrLWNvaW4tc3R4JztcbmV4cG9ydCB7IFN0eCB9O1xuXG5pbXBvcnQgeyBBbGdvTGliIGFzIEFsZ28gfSBmcm9tICdAYml0Z28vc2RrLWNvaW4tYWxnbyc7XG5leHBvcnQgeyBBbGdvIH07XG5cbmltcG9ydCAqIGFzIEFyYmV0aCBmcm9tICdAYml0Z28vc2RrLWNvaW4tYXJiZXRoJztcbmV4cG9ydCB7IEFyYmV0aCB9O1xuXG5pbXBvcnQgKiBhcyBBdG9tIGZyb20gJ0BiaXRnby9zZGstY29pbi1hdG9tJztcbmV4cG9ydCB7IEF0b20gfTtcblxuaW1wb3J0ICogYXMgT3NtbyBmcm9tICdAYml0Z28vc2RrLWNvaW4tb3Ntbyc7XG5leHBvcnQgeyBPc21vIH07XG5cbmltcG9ydCB7IEF2YXhwTGliIGFzIEF2YXhQIH0gZnJvbSAnQGJpdGdvL3Nkay1jb2luLWF2YXhwJztcbmV4cG9ydCB7IEF2YXhQIH07XG5cbmltcG9ydCAqIGFzIFRpYSBmcm9tICdAYml0Z28vc2RrLWNvaW4tdGlhJztcbmV4cG9ydCB7IFRpYSB9O1xuXG5pbXBvcnQgKiBhcyBCZXJhIGZyb20gJ0BiaXRnby9zZGstY29pbi1iZXJhJztcbmV4cG9ydCB7IEJlcmEgfTtcblxuaW1wb3J0ICogYXMgQmxkIGZyb20gJ0BiaXRnby9zZGstY29pbi1ibGQnO1xuZXhwb3J0IHsgQmxkIH07XG5cbmltcG9ydCAqIGFzIEhhc2ggZnJvbSAnQGJpdGdvL3Nkay1jb2luLWhhc2gnO1xuZXhwb3J0IHsgSGFzaCB9O1xuXG5pbXBvcnQgKiBhcyBTZWkgZnJvbSAnQGJpdGdvL3Nkay1jb2luLXNlaSc7XG5leHBvcnQgeyBTZWkgfTtcblxuaW1wb3J0ICogYXMgSW5qZWN0aXZlIGZyb20gJ0BiaXRnby9zZGstY29pbi1pbmplY3RpdmUnO1xuZXhwb3J0IHsgSW5qZWN0aXZlIH07XG5cbmltcG9ydCAqIGFzIElzbG0gZnJvbSAnQGJpdGdvL3Nkay1jb2luLWlzbG0nO1xuZXhwb3J0IHsgSXNsbSB9O1xuXG5pbXBvcnQgKiBhcyBaZXRhIGZyb20gJ0BiaXRnby9zZGstY29pbi16ZXRhJztcbmV4cG9ydCB7IFpldGEgfTtcblxuaW1wb3J0ICogYXMgQ29yZXVtIGZyb20gJ0BiaXRnby9zZGstY29pbi1jb3JldW0nO1xuZXhwb3J0IHsgQ29yZXVtIH07XG5cbmltcG9ydCAqIGFzIFJ1bmUgZnJvbSAnQGJpdGdvL3Nkay1jb2luLXJ1bmUnO1xuZXhwb3J0IHsgUnVuZSB9O1xuXG5pbXBvcnQgKiBhcyBCYWJ5IGZyb20gJ0BiaXRnby9zZGstY29pbi1iYWJ5JztcbmV4cG9ydCB7IEJhYnkgfTtcblxuaW1wb3J0ICogYXMgTW9uIGZyb20gJ0BiaXRnby9zZGstY29pbi1tb24nO1xuZXhwb3J0IHsgTW9uIH07XG5cbmltcG9ydCAqIGFzIE1hbnRyYSBmcm9tICdAYml0Z28vc2RrLWNvaW4tbWFudHJhJztcbmV4cG9ydCB7IE1hbnRyYSB9O1xuXG5pbXBvcnQgKiBhcyBDcm9ub3MgZnJvbSAnQGJpdGdvL3Nkay1jb2luLWNyb25vcyc7XG5leHBvcnQgeyBDcm9ub3MgfTtcblxuaW1wb3J0ICogYXMgSW5pdGlhIGZyb20gJ0BiaXRnby9zZGstY29pbi1pbml0aWEnO1xuZXhwb3J0IHsgSW5pdGlhIH07XG5cbmltcG9ydCAqIGFzIEFzaSBmcm9tICdAYml0Z28vc2RrLWNvaW4tYXNpJztcbmV4cG9ydCB7IEFzaSB9O1xuXG5pbXBvcnQgKiBhcyBTb2wgZnJvbSAnQGJpdGdvL3Nkay1jb2luLXNvbCc7XG5leHBvcnQgeyBTb2wgfTtcblxuaW1wb3J0ICogYXMgQWRhIGZyb20gJ0BiaXRnby9zZGstY29pbi1hZGEnO1xuZXhwb3J0IHsgQWRhIH07XG5cbmltcG9ydCAqIGFzIERvdCBmcm9tICdAYml0Z28vc2RrLWNvaW4tZG90JztcbmV4cG9ydCB7IERvdCB9O1xuXG5pbXBvcnQgKiBhcyBOZWFyIGZyb20gJ0BiaXRnby9zZGstY29pbi1uZWFyJztcbmV4cG9ydCB7IE5lYXIgfTtcblxuaW1wb3J0ICogYXMgQnNjIGZyb20gJ0BiaXRnby9zZGstY29pbi1ic2MnO1xuZXhwb3J0IHsgQnNjIH07XG5cbmltcG9ydCAqIGFzIFBvbHlnb24gZnJvbSAnQGJpdGdvL3Nkay1jb2luLXBvbHlnb24nO1xuZXhwb3J0IHsgUG9seWdvbiB9O1xuXG5pbXBvcnQgKiBhcyBQb2x5eCBmcm9tICdAYml0Z28vc2RrLWNvaW4tcG9seXgnO1xuZXhwb3J0IHsgUG9seXggfTtcblxuaW1wb3J0ICogYXMgT3BldGggZnJvbSAnQGJpdGdvL3Nkay1jb2luLW9wZXRoJztcbmV4cG9ydCB7IE9wZXRoIH07XG5cbmltcG9ydCAqIGFzIFN1aSBmcm9tICdAYml0Z28vc2RrLWNvaW4tc3VpJztcbmV4cG9ydCB7IFN1aSB9O1xuXG5pbXBvcnQgKiBhcyBUb24gZnJvbSAnQGJpdGdvL3Nkay1jb2luLXRvbic7XG5leHBvcnQgeyBUb24gfTtcblxuaW1wb3J0ICogYXMgWFJQIGZyb20gJ0BiaXRnby9zZGstY29pbi14cnAnO1xuZXhwb3J0IHsgWFJQIH07XG5cbmltcG9ydCAqIGFzIHprRXRoIGZyb20gJ0BiaXRnby9zZGstY29pbi16a2V0aCc7XG5leHBvcnQgeyB6a0V0aCB9O1xuXG5pbXBvcnQgKiBhcyBPYXMgZnJvbSAnQGJpdGdvL3Nkay1jb2luLW9hcyc7XG5leHBvcnQgeyBPYXMgfTtcblxuaW1wb3J0ICogYXMgQ29yZWRhbyBmcm9tICdAYml0Z28vc2RrLWNvaW4tY29yZWRhbyc7XG5leHBvcnQgeyBDb3JlZGFvIH07XG5cbmltcG9ydCAqIGFzIEFwdCBmcm9tICdAYml0Z28vc2RrLWNvaW4tYXB0JztcbmV4cG9ydCB7IEFwdCB9O1xuXG5pbXBvcnQgKiBhcyBBcGVjaGFpbiBmcm9tICdAYml0Z28vc2RrLWNvaW4tYXBlY2hhaW4nO1xuZXhwb3J0IHsgQXBlY2hhaW4gfTtcblxuaW1wb3J0ICogYXMgVGFvIGZyb20gJ0BiaXRnby9zZGstY29pbi10YW8nO1xuZXhwb3J0IHsgVGFvIH07XG5cbmltcG9ydCAqIGFzIEljcCBmcm9tICdAYml0Z28vc2RrLWNvaW4taWNwJztcbmV4cG9ydCB7IEljcCB9O1xuXG5pbXBvcnQgKiBhcyBGbHIgZnJvbSAnQGJpdGdvL3Nkay1jb2luLWZscic7XG5leHBvcnQgeyBGbHIgfTtcblxuaW1wb3J0ICogYXMgRXZtQ29pbiBmcm9tICdAYml0Z28vc2RrLWNvaW4tZXZtJztcbmV4cG9ydCB7IEV2bUNvaW4gfTtcblxuaW1wb3J0ICogYXMgU2diIGZyb20gJ0BiaXRnby9zZGstY29pbi1zZ2InO1xuZXhwb3J0IHsgU2diIH07XG5cbmltcG9ydCAqIGFzIFhkYyBmcm9tICdAYml0Z28vc2RrLWNvaW4teGRjJztcbmV4cG9ydCB7IFhkYyB9O1xuXG5pbXBvcnQgKiBhcyBXZW1peCBmcm9tICdAYml0Z28vc2RrLWNvaW4td2VtaXgnO1xuZXhwb3J0IHsgV2VtaXggfTtcblxuaW1wb3J0ICogYXMgV29ybGQgZnJvbSAnQGJpdGdvL3Nkay1jb2luLXdvcmxkJztcbmV4cG9ydCB7IFdvcmxkIH07XG5cbmltcG9ydCAqIGFzIFN0dCBmcm9tICdAYml0Z28vc2RrLWNvaW4tc3R0JztcbmV4cG9ydCB7IFN0dCB9O1xuXG5pbXBvcnQgKiBhcyBTb25laXVtIGZyb20gJ0BiaXRnby9zZGstY29pbi1zb25laXVtJztcbmV4cG9ydCB7IFNvbmVpdW0gfTtcblxuaW1wb3J0ICogYXMgVmV0IGZyb20gJ0BiaXRnby9zZGstY29pbi12ZXQnO1xuZXhwb3J0IHsgVmV0IH07XG5cbmltcG9ydCAqIGFzIENvc21vc1NoYXJlZENvaW4gZnJvbSAnQGJpdGdvL3Nkay1jb2luLWNvc21vcyc7XG5leHBvcnQgeyBDb3Ntb3NTaGFyZWRDb2luIH07XG5cbmltcG9ydCB7IHZhbGlkYXRlQWdhaW5zdE1lc3NhZ2VUZW1wbGF0ZXMsIE1JRE5JR0hUX1ROQ19IQVNIIH0gZnJvbSAnLi91dGlscyc7XG5leHBvcnQgeyBNSUROSUdIVF9UTkNfSEFTSCB9O1xuXG5jb25zdCBjb2luQnVpbGRlck1hcCA9IHtcbiAgdHJ4OiBUcnguV3JhcHBlZEJ1aWxkZXIsXG4gIHR0cng6IFRyeC5XcmFwcGVkQnVpbGRlcixcbiAgeHR6OiBYdHouVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0eHR6OiBYdHouVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBldGM6IEV0Yy5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRldGM6IEV0Yy5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIGV0aDogRXRoLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdGV0aDogRXRoLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgZ3RldGg6IEV0aC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIGh0ZXRoOiBFdGguVHJhbnNhY3Rpb25CdWlsZGVyLFxuICByYnRjOiBSYnRjLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdHJidGM6IFJidGMuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBjZWxvOiBDZWxvLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdGNlbG86IENlbG8uVGVzdG5ldFRyYW5zYWN0aW9uQnVpbGRlcixcbiAgYXZheGM6IEF2YXhDLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdGF2YXhjOiBBdmF4Qy5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIGJzYzogQnNjLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdGJzYzogQnNjLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgYXZheHA6IEF2YXhQLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHRhdmF4cDogQXZheFAuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgaGJhcjogSGJhci5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0aGJhcjogSGJhci5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBjc3ByOiBDc3ByLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHRjc3ByOiBDc3ByLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHN0eDogU3R4LlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHRzdHg6IFN0eC5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBhbGdvOiBBbGdvLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHRhbGdvOiBBbGdvLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHNvbDogU29sLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHRzb2w6IFNvbC5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBkb3Q6IERvdC5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0ZG90OiBEb3QuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgbmVhcjogTmVhci5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBwb2x5Z29uOiBQb2x5Z29uLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdHBvbHlnb246IFBvbHlnb24uVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBzdWk6IFN1aS5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0c3VpOiBTdWkuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdGlhOiBUaWEuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdHRpYTogVGlhLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIGF0b206IEF0b20uVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdGF0b206IEF0b20uVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgb3NtbzogT3Ntby5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0b3NtbzogT3Ntby5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBibGQ6IEJsZC5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0YmxkOiBCbGQuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgaGFzaDogSGFzaC5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0aGFzaDogSGFzaC5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBzZWk6IFNlaS5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0c2VpOiBTZWkuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgaW5qZWN0aXZlOiBJbmplY3RpdmUuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdGluamVjdGl2ZTogSW5qZWN0aXZlLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHpldGE6IFpldGEuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdHpldGE6IFpldGEuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgaXNsbTogSXNsbS5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0aXNsbTogSXNsbS5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBjb3JldW06IENvcmV1bS5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0Y29yZXVtOiBDb3JldW0uVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgYXJiZXRoOiBBcmJldGguVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0YXJiZXRoOiBBcmJldGguVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBvcGV0aDogT3BldGguVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0b3BldGg6IE9wZXRoLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdG9uOiBUb24uVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0dG9uOiBUb24uVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB6a2V0aDogemtFdGguVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0emtldGg6IHprRXRoLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgYmVyYTogQmVyYS5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRiZXJhOiBCZXJhLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgcnVuZTogUnVuZS5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0cnVuZTogUnVuZS5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBvYXM6IE9hcy5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRvYXM6IE9hcy5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIGNvcmVkYW86IENvcmVkYW8uVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0Y29yZWRhbzogQ29yZWRhby5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIGFwZWNoYWluOiBBcGVjaGFpbi5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRhcGVjaGFpbjogQXBlY2hhaW4uVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBhcHQ6IEFwdC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRhcHQ6IEFwdC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRhbzogVGFvLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHR0YW86IFRhby5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBpY3A6IEljcC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRpY3A6IEljcC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIGJhYnk6IEJhYnkuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0YmFieTogQmFieS5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIGNyb25vczogQ3Jvbm9zLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdGNyb25vczogQ3Jvbm9zLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgaW5pdGlhOiBJbml0aWEuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0aW5pdGlhOiBJbml0aWEuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBhc2k6IEFzaS5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRhc2k6IEFzaS5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIGZscjogRmxyLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdGZscjogRmxyLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgc2diOiBTZ2IuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0c2diOiBTZ2IuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB4ZGM6IFhkYy5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHR4ZGM6IFhkYy5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHdlbWl4OiBXZW1peC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHR3ZW1peDogV2VtaXguVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBtYW50cmE6IE1hbnRyYS5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRtYW50cmE6IE1hbnRyYS5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIG1vbjogTW9uLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdG1vbjogTW9uLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgd29ybGQ6IFdvcmxkLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdHdvcmxkOiBXb3JsZC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHNvbmVpdW06IFNvbmVpdW0uVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0c29uZWl1bTogU29uZWl1bS5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRzdHQ6IFN0dC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHBvbHl4OiBQb2x5eC5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0cG9seXg6IFBvbHl4LlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHZldDogVmV0LlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHR2ZXQ6IFZldC5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxufTtcblxuY29uc3QgY29pbk1lc3NhZ2VCdWlsZGVyRmFjdG9yeU1hcCA9IHtcbiAgZXRoOiBFdGguTWVzc2FnZUJ1aWxkZXJGYWN0b3J5LFxuICBodGV0aDogRXRoLk1lc3NhZ2VCdWlsZGVyRmFjdG9yeSxcbiAgYnNjOiBCc2MuTWVzc2FnZUJ1aWxkZXJGYWN0b3J5LFxuICB0YnNjOiBCc2MuTWVzc2FnZUJ1aWxkZXJGYWN0b3J5LFxuICBhZGE6IEFkYS5NZXNzYWdlQnVpbGRlckZhY3RvcnksXG4gIHRhZGE6IEFkYS5NZXNzYWdlQnVpbGRlckZhY3RvcnksXG4gIHNvbDogU29sLk1lc3NhZ2VCdWlsZGVyRmFjdG9yeSxcbiAgdHNvbDogU29sLk1lc3NhZ2VCdWlsZGVyRmFjdG9yeSxcbn07XG5cbmNvaW5zXG4gIC5maWx0ZXIoKGNvaW4pID0+IGNvaW4uZmVhdHVyZXMuaW5jbHVkZXMoQ29pbkZlYXR1cmUuU0hBUkVEX0VWTV9TREspKVxuICAuZm9yRWFjaCgoY29pbikgPT4ge1xuICAgIGNvaW5CdWlsZGVyTWFwW2NvaW4ubmFtZV0gPSBFdm1Db2luLlRyYW5zYWN0aW9uQnVpbGRlcjtcbiAgfSk7XG5cbmNvaW5zXG4gIC5maWx0ZXIoKGNvaW4pID0+IGNvaW4uZmVhdHVyZXMuaW5jbHVkZXMoQ29pbkZlYXR1cmUuU0hBUkVEX0NPU01PU19TREspKVxuICAuZm9yRWFjaCgoY29pbikgPT4ge1xuICAgIGNvaW5CdWlsZGVyTWFwW2NvaW4ubmFtZV0gPSBDb3Ntb3NTaGFyZWRDb2luLlRyYW5zYWN0aW9uQnVpbGRlcjtcbiAgfSk7XG5cbi8qKlxuICogR2V0IHRoZSBsaXN0IG9mIGNvaW4gdGlja2VycyBzdXBwb3J0ZWQgYnkgdGhpcyBsaWJyYXJ5LlxuICovXG5leHBvcnQgY29uc3Qgc3VwcG9ydGVkQ29pbnMgPSBPYmplY3Qua2V5cyhjb2luQnVpbGRlck1hcCk7XG5cbi8qKlxuICogR2V0IGEgdHJhbnNhY3Rpb24gYnVpbGRlciBmb3IgdGhlIGdpdmVuIGNvaW4uXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGNvaW5OYW1lIE9uZSBvZiB0aGUge0Bjb2RlIHN1cHBvcnRlZENvaW5zfVxuICogQHJldHVybnMge2FueX0gQW4gaW5zdGFuY2Ugb2YgYSB7QGNvZGUgVHJhbnNhY3Rpb25CdWlsZGVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QnVpbGRlcihjb2luTmFtZTogc3RyaW5nKTogQmFzZUJ1aWxkZXIge1xuICBjb25zdCBidWlsZGVyQ2xhc3MgPSBjb2luQnVpbGRlck1hcFtjb2luTmFtZV07XG4gIGlmICghYnVpbGRlckNsYXNzKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgQ29pbiAke2NvaW5OYW1lfSBub3Qgc3VwcG9ydGVkYCk7XG4gIH1cblxuICByZXR1cm4gbmV3IGJ1aWxkZXJDbGFzcyhjb2lucy5nZXQoY29pbk5hbWUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1lc3NhZ2VCdWlsZGVyRmFjdG9yeShjb2luTmFtZTogc3RyaW5nKTogQmFzZU1lc3NhZ2VCdWlsZGVyRmFjdG9yeSB7XG4gIGNvbnN0IG1lc3NhZ2VCdWlsZGVyRmFjdG9yeUNsYXNzID0gY29pbk1lc3NhZ2VCdWlsZGVyRmFjdG9yeU1hcFtjb2luTmFtZV07XG4gIGlmICghbWVzc2FnZUJ1aWxkZXJGYWN0b3J5Q2xhc3MpIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRNZXNzYWdlRXJyb3IoYE1lc3NhZ2UgYnVpbGRlciBmYWN0b3J5IGZvciBjb2luICR7Y29pbk5hbWV9IG5vdCBzdXBwb3J0ZWRgKTtcbiAgfVxuICByZXR1cm4gbmV3IG1lc3NhZ2VCdWlsZGVyRmFjdG9yeUNsYXNzKGNvaW5zLmdldChjb2luTmFtZSkpO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVyIGEgbmV3IGNvaW4gaW5zdGFuY2Ugd2l0aCBpdHMgYnVpbGRlciBmYWN0b3J5XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGNvaW5OYW1lIGNvaW4gbmFtZSBhcyBpdCB3YXMgcmVnaXN0ZXJlZCBpbiBAYml0Z28vc3RhdGljc1xuICogQHBhcmFtIHthbnl9IGJ1aWxkZXJGYWN0b3J5IHRoZSBidWlsZGVyIGZhY3RvcnkgY2xhc3MgZm9yIHRoYXQgY29pblxuICogQHJldHVybnMge2FueX0gdGhlIGZhY3RvcnkgaW5zdGFuY2UgZm9yIHRoZSByZWdpc3RlcmVkIGNvaW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyPFQgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeT4oXG4gIGNvaW5OYW1lOiBzdHJpbmcsXG4gIGJ1aWxkZXJGYWN0b3J5OiB7IG5ldyAoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KTogVCB9LFxuKTogVCB7XG4gIGNvbnN0IGNvaW5Db25maWcgPSBjb2lucy5nZXQoY29pbk5hbWUpO1xuICBjb25zdCBmYWN0b3J5ID0gbmV3IGJ1aWxkZXJGYWN0b3J5KGNvaW5Db25maWcpO1xuICAvLyBjb2luQnVpbGRlck1hcFtjb2luTmFtZV0gPSBmYWN0b3J5O1xuICBjb2luQnVpbGRlck1hcFtjb2luTmFtZV0gPSBidWlsZGVyRmFjdG9yeTsgLy8gRm9yIG5vdyByZWdpc3RlciB0aGUgY29uc3RydWN0b3IgZnVuY3Rpb24gdW50aWwgcmVpbXBsZW1lbnQgZ2V0QnVpbGRlciBtZXRob2RcbiAgcmV0dXJuIGZhY3Rvcnk7XG59XG5cbi8qKlxuICogUmVnaXN0ZXIgYSBuZXcgY29pbiBpbnN0YW5jZSB3aXRoIGl0cyBtZXNzYWdlIGJ1aWxkZXIgZmFjdG9yeSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gY29pbk5hbWUgY29pbiBuYW1lIGFzIGl0IHdhcyByZWdpc3RlcmVkIGluIEBiaXRnby9zdGF0aWNzXG4gKiBAcGFyYW0ge2FueX0gbWVzc2FnZUJ1aWxkZXJGYWN0b3J5IHRoZSBtZXNzYWdlIGJ1aWxkZXIgZmFjdG9yeSBjbGFzcyBmb3IgdGhhdCBjb2luXG4gKiBAcmV0dXJucyB7YW55fSB0aGUgbWVzc2FnZSBidWlsZGVyIGZhY3RvcnkgaW5zdGFuY2UgZm9yIHRoZSByZWdpc3RlcmVkIGNvaW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyTWVzc2FnZUJ1aWxkZXJGYWN0b3J5PFQgZXh0ZW5kcyBCYXNlTWVzc2FnZUJ1aWxkZXJGYWN0b3J5PihcbiAgY29pbk5hbWU6IHN0cmluZyxcbiAgbWVzc2FnZUJ1aWxkZXJGYWN0b3J5OiB7IG5ldyAoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KTogVCB9LFxuKTogVCB7XG4gIGNvbnN0IGNvaW5Db25maWcgPSBjb2lucy5nZXQoY29pbk5hbWUpO1xuICBjb25zdCBmYWN0b3J5ID0gbmV3IG1lc3NhZ2VCdWlsZGVyRmFjdG9yeShjb2luQ29uZmlnKTtcbiAgY29pbk1lc3NhZ2VCdWlsZGVyRmFjdG9yeU1hcFtjb2luTmFtZV0gPSBtZXNzYWdlQnVpbGRlckZhY3Rvcnk7XG4gIHJldHVybiBmYWN0b3J5O1xufVxuXG4vKipcbiAqIFZlcmlmeSBhIG1lc3NhZ2UgYWdhaW5zdCB0aGUgZ2l2ZW4gZW5jb2RlZCBwYXlsb2FkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb2luTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBjb2luLlxuICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2VSYXcgLSBUaGUgcmF3IG1lc3NhZ2UgdG8gdmVyaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2VFbmNvZGVkIC0gVGhlIGVuY29kZWQgbWVzc2FnZSB0byB2ZXJpZnkgYWdhaW5zdC5cbiAqIEBwYXJhbSB7TWVzc2FnZVN0YW5kYXJkVHlwZX0gbWVzc2FnZVN0YW5kYXJkVHlwZSAtIFRoZSB0eXBlIG9mIG1lc3NhZ2Ugc3RhbmRhcmQuXG4gKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIHVua25vd24+fSBbbWV0YWRhdGFdIC0gT3B0aW9uYWwgbWV0YWRhdGEgZm9yIHZlcmlmaWNhdGlvbi5cbiAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgdmVyaWZpY2F0aW9uIGlzIHN1Y2Nlc3NmdWwsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHZlcmlmeU1lc3NhZ2UoXG4gIGNvaW5OYW1lOiBzdHJpbmcsXG4gIG1lc3NhZ2VSYXc6IHN0cmluZyxcbiAgbWVzc2FnZUVuY29kZWQ6IHN0cmluZyxcbiAgbWVzc2FnZVN0YW5kYXJkVHlwZTogTWVzc2FnZVN0YW5kYXJkVHlwZSxcbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICB0cnkge1xuICAgIGNvbnN0IG1lc3NhZ2VCdWlsZGVyRmFjdG9yeSA9IGdldE1lc3NhZ2VCdWlsZGVyRmFjdG9yeShjb2luTmFtZSk7XG4gICAgY29uc3QgbWVzc2FnZUJ1aWxkZXIgPSBtZXNzYWdlQnVpbGRlckZhY3RvcnkuZ2V0TWVzc2FnZUJ1aWxkZXIobWVzc2FnZVN0YW5kYXJkVHlwZSk7XG4gICAgbWVzc2FnZUJ1aWxkZXIuc2V0UGF5bG9hZChtZXNzYWdlUmF3KTtcbiAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgbWVzc2FnZUJ1aWxkZXIuYnVpbGQoKTtcbiAgICBjb25zdCBpc1ZhbGlkTWVzc2FnZUVuY29kZWQgPSBhd2FpdCBtZXNzYWdlLnZlcmlmeUVuY29kZWRQYXlsb2FkKG1lc3NhZ2VFbmNvZGVkLCBtZXRhZGF0YSk7XG4gICAgaWYgKCFpc1ZhbGlkTWVzc2FnZUVuY29kZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbGlkYXRlQWdhaW5zdE1lc3NhZ2VUZW1wbGF0ZXMobWVzc2FnZVJhdyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmVycm9yKGBFcnJvciB2ZXJpZnlpbmcgbWVzc2FnZSBmb3IgY29pbiAke2NvaW5OYW1lfTpgLCBlKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdfQ==

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


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