PHP WebShell
Текущая директория: /usr/lib/node_modules/bitgo/node_modules/avalanche/typings/tests/apis/platformvm
Просмотр файла: createchaintx.test.js
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const bintools_1 = __importDefault(require("../../../src/utils/bintools"));
const buffer_1 = require("buffer/");
const constants_1 = require("../../../src/apis/platformvm/constants");
const index_1 = require("../../../src/index");
const platformvm_1 = require("src/apis/platformvm");
describe("CreateChainTx", () => {
/**
* @ignore
*/
const bintools = bintools_1.default.getInstance();
const createChainTxHex = "0000053900000000000000000000000000000000000000000000000000000000000000000000000117cc8b1578ba383544d163958822d8abd3849bb9dfabe39fcbc3e7ee8811fe2f00000007006a94d6d80d6c00000000000000000000000001000000023cb7d3842e8cee6a0ebd09f1fe884f6861e1b29ca43c1f6ecdcb1fcec86d78446b9cf619c64c604b000000017fe044f9e97347c0a5ffe5a0f5773b42398c0e2b85948616da681585d460e1a80000000017cc8b1578ba383544d163958822d8abd3849bb9dfabe39fcbc3e7ee8811fe2f00000005006a94d713a836000000000100000000000000934d616e75616c6c7920637265617465206120437265617465436861696e54782077686963682063726561746573206120312d6f662d322041564158207574786f20616e6420696e7374616e746961746573206120564d20696e746f206120626c6f636b636861696e20627920636f72726563746c79207369676e696e672074686520322d6f662d33205375626e6574417574687fe044f9e97347c0a5ffe5a0f5773b42398c0e2b85948616da681585d460e1a80008455049432041564d61766d0000000000000000000000000000000000000000000000000000000000000000036e6674667800000000000000000000000000000000000000000000000000000070726f7065727479667800000000000000000000000000000000000000000000736563703235366b3166780000000000000000000000000000000000000000000000013c000000000001000e4173736574416c696173546573740000053900000000000000000000000000000000000000000000000000000000000000000000000000000000000000934d616e75616c6c7920637265617465206120437265617465436861696e54782077686963682063726561746573206120312d6f662d322041564158207574786f20616e6420696e7374616e746961746573206120564d20696e746f206120626c6f636b636861696e20627920636f72726563746c79207369676e696e672074686520322d6f662d33205375626e657441757468000a54657374204173736574000454455354000000000100000000000000010000000700000000000001fb000000000000000000000001000000023cb7d3842e8cee6a0ebd09f1fe884f6861e1b29ca43c1f6ecdcb1fcec86d78446b9cf619c64c604b0000000a000000020000000000000001";
const createChainTxBuf = buffer_1.Buffer.from(createChainTxHex, "hex");
const createChainTx = new platformvm_1.CreateChainTx();
createChainTx.fromBuffer(createChainTxBuf);
test("getTypeName", () => __awaiter(void 0, void 0, void 0, function* () {
const createChainTxTypeName = createChainTx.getTypeName();
expect(createChainTxTypeName).toBe("CreateChainTx");
}));
test("getTypeID", () => __awaiter(void 0, void 0, void 0, function* () {
const createChainTxTypeID = createChainTx.getTypeID();
expect(createChainTxTypeID).toBe(constants_1.PlatformVMConstants.CREATECHAINTX);
}));
test("toBuffer and fromBuffer", () => __awaiter(void 0, void 0, void 0, function* () {
const buf = createChainTx.toBuffer();
const ccTx = new platformvm_1.CreateChainTx();
ccTx.fromBuffer(buf);
const buf2 = ccTx.toBuffer();
expect(buf.toString("hex")).toBe(buf2.toString("hex"));
}));
test("getSubnetID", () => {
const snID = "yKRV4EvGYWj7HHXUxSYzaAQVazEvaFPKPhJie4paqbrML5dub";
const subnetID = createChainTx.getSubnetID();
expect(subnetID).toBe(snID);
});
test("getChainName", () => {
const cn = "EPIC AVM";
const chainName = createChainTx.getChainName();
expect(chainName).toBe(cn);
});
test("getVMID", () => {
const vmIDHex = "61766d0000000000000000000000000000000000000000000000000000000000";
const vmID = createChainTx.getVMID().toString("hex");
expect(vmID).toBe(vmIDHex);
});
test("getFXIDs", () => {
const fxIDsHex = [
"6e66746678000000000000000000000000000000000000000000000000000000",
"70726f7065727479667800000000000000000000000000000000000000000000",
"736563703235366b316678000000000000000000000000000000000000000000"
];
const fxIDs = createChainTx.getFXIDs();
expect(fxIDs.length).toBe(3);
fxIDs.forEach((fxID, index) => {
expect(fxID.toString("hex")).toBe(fxIDsHex[index]);
});
});
test("getGenesisData", () => {
const gd = createChainTx.getGenesisData();
const genesisData = new index_1.GenesisData();
const buf = bintools.cb58Decode(gd);
genesisData.fromBuffer(buf);
const genesisAssets = genesisData.getGenesisAssets();
const genesisAsset = genesisAssets[0];
const n = "Test Asset";
const name = genesisAsset.getName();
expect(name).toBe(n);
const s = "TEST";
const symbol = genesisAsset.getSymbol();
expect(symbol).toBe(s);
const d = 0;
const denomination = genesisAsset.getDenomination();
expect(denomination).toBe(d);
});
describe("SubnetAuth", () => {
const sa = createChainTx.getSubnetAuth();
test("getTypeName", () => __awaiter(void 0, void 0, void 0, function* () {
const subnetAuthTypeName = sa.getTypeName();
expect(subnetAuthTypeName).toBe("SubnetAuth");
}));
test("getTypeID", () => __awaiter(void 0, void 0, void 0, function* () {
const subnetAuthTypeID = sa.getTypeID();
expect(subnetAuthTypeID).toBe(constants_1.PlatformVMConstants.SUBNETAUTH);
}));
test("getNumAddressIndices", () => __awaiter(void 0, void 0, void 0, function* () {
const numAddressIndices = sa.getNumAddressIndices();
const nAI = 2;
expect(numAddressIndices).toBe(nAI);
}));
test("addressIndices", () => __awaiter(void 0, void 0, void 0, function* () {
const ai = [0, 1];
const addressIndices = sa.getAddressIndices();
addressIndices.forEach((addressIndex, index) => {
expect(addressIndex.readInt32BE(0)).toBe(ai[index]);
});
}));
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlY2hhaW50eC50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdHMvYXBpcy9wbGF0Zm9ybXZtL2NyZWF0ZWNoYWludHgudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBLDJFQUFrRDtBQUNsRCxvQ0FBZ0M7QUFDaEMsc0VBQTRFO0FBQzVFLDhDQUE4RDtBQUM5RCxvREFBK0Q7QUFFL0QsUUFBUSxDQUFDLGVBQWUsRUFBRSxHQUFTLEVBQUU7SUFDbkM7O09BRUc7SUFDSCxNQUFNLFFBQVEsR0FBYSxrQkFBUSxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBRWpELE1BQU0sZ0JBQWdCLEdBQ3BCLDR2REFBNHZELENBQUE7SUFDOXZELE1BQU0sZ0JBQWdCLEdBQVcsZUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUNyRSxNQUFNLGFBQWEsR0FBa0IsSUFBSSwwQkFBYSxFQUFFLENBQUE7SUFDeEQsYUFBYSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO0lBRTFDLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBd0IsRUFBRTtRQUM1QyxNQUFNLHFCQUFxQixHQUFXLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUNqRSxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUE7SUFDckQsQ0FBQyxDQUFBLENBQUMsQ0FBQTtJQUVGLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBd0IsRUFBRTtRQUMxQyxNQUFNLG1CQUFtQixHQUFXLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQTtRQUM3RCxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxJQUFJLENBQUMsK0JBQW1CLENBQUMsYUFBYSxDQUFDLENBQUE7SUFDckUsQ0FBQyxDQUFBLENBQUMsQ0FBQTtJQUVGLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxHQUF3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QUksQ0FBQyxnQkFBZ0IsRUFBRSxHQUF3QixFQUFFO1lBQy9DLE1BQU0sRUFBRSxHQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1lBQzNCLE1BQU0sY0FBYyxHQUFhLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFBO1lBQ3ZELGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFvQixFQUFFLEtBQWEsRUFBRSxFQUFFO2dCQUM3RCxNQUFNLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtZQUNyRCxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQSxDQUFDLENBQUE7SUFDSixDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJpblRvb2xzIGZyb20gXCIuLi8uLi8uLi9zcmMvdXRpbHMvYmludG9vbHNcIlxuaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSBcImJ1ZmZlci9cIlxuaW1wb3J0IHsgUGxhdGZvcm1WTUNvbnN0YW50cyB9IGZyb20gXCIuLi8uLi8uLi9zcmMvYXBpcy9wbGF0Zm9ybXZtL2NvbnN0YW50c1wiXG5pbXBvcnQgeyBHZW5lc2lzQXNzZXQsIEdlbmVzaXNEYXRhIH0gZnJvbSBcIi4uLy4uLy4uL3NyYy9pbmRleFwiXG5pbXBvcnQgeyBDcmVhdGVDaGFpblR4LCBTdWJuZXRBdXRoIH0gZnJvbSBcInNyYy9hcGlzL3BsYXRmb3Jtdm1cIlxuXG5kZXNjcmliZShcIkNyZWF0ZUNoYWluVHhcIiwgKCk6IHZvaWQgPT4ge1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY29uc3QgYmludG9vbHM6IEJpblRvb2xzID0gQmluVG9vbHMuZ2V0SW5zdGFuY2UoKVxuXG4gIGNvbnN0IGNyZWF0ZUNoYWluVHhIZXg6IHN0cmluZyA9XG4gICAgXCIwMDAwMDUzOTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTE3Y2M4YjE1NzhiYTM4MzU0NGQxNjM5NTg4MjJkOGFiZDM4NDliYjlkZmFiZTM5ZmNiYzNlN2VlODgxMWZlMmYwMDAwMDAwNzAwNmE5NGQ2ZDgwZDZjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMjNjYjdkMzg0MmU4Y2VlNmEwZWJkMDlmMWZlODg0ZjY4NjFlMWIyOWNhNDNjMWY2ZWNkY2IxZmNlYzg2ZDc4NDQ2YjljZjYxOWM2NGM2MDRiMDAwMDAwMDE3ZmUwNDRmOWU5NzM0N2MwYTVmZmU1YTBmNTc3M2I0MjM5OGMwZTJiODU5NDg2MTZkYTY4MTU4NWQ0NjBlMWE4MDAwMDAwMDAxN2NjOGIxNTc4YmEzODM1NDRkMTYzOTU4ODIyZDhhYmQzODQ5YmI5ZGZhYmUzOWZjYmMzZTdlZTg4MTFmZTJmMDAwMDAwMDUwMDZhOTRkNzEzYTgzNjAwMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDkzNGQ2MTZlNzU2MTZjNmM3OTIwNjM3MjY1NjE3NDY1MjA2MTIwNDM3MjY1NjE3NDY1NDM2ODYxNjk2ZTU0NzgyMDc3Njg2OTYzNjgyMDYzNzI2NTYxNzQ2NTczMjA2MTIwMzEyZDZmNjYyZDMyMjA0MTU2NDE1ODIwNzU3NDc4NmYyMDYxNmU2NDIwNjk2ZTczNzQ2MTZlNzQ2OTYxNzQ2NTczMjA2MTIwNTY0ZDIwNjk2ZTc0NmYyMDYxMjA2MjZjNmY2MzZiNjM2ODYxNjk2ZTIwNjI3OTIwNjM2ZjcyNzI2NTYzNzQ2Yzc5MjA3MzY5Njc2ZTY5NmU2NzIwNzQ2ODY1MjAzMjJkNmY2NjJkMzMyMDUzNzU2MjZlNjU3NDQxNzU3NDY4N2ZlMDQ0ZjllOTczNDdjMGE1ZmZlNWEwZjU3NzNiNDIzOThjMGUyYjg1OTQ4NjE2ZGE2ODE1ODVkNDYwZTFhODAwMDg0NTUwNDk0MzIwNDE1NjRkNjE3NjZkMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzNmU2Njc0NjY3ODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDcwNzI2ZjcwNjU3Mjc0Nzk2Njc4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3MzY1NjM3MDMyMzUzNjZiMzE2Njc4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxM2MwMDAwMDAwMDAwMDEwMDBlNDE3MzczNjU3NDQxNmM2OTYxNzM1NDY1NzM3NDAwMDAwNTM5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA5MzRkNjE2ZTc1NjE2YzZjNzkyMDYzNzI2NTYxNzQ2NTIwNjEyMDQzNzI2NTYxNzQ2NTQzNjg2MTY5NmU1NDc4MjA3NzY4Njk2MzY4MjA2MzcyNjU2MTc0NjU3MzIwNjEyMDMxMmQ2ZjY2MmQzMjIwNDE1NjQxNTgyMDc1NzQ3ODZmMjA2MTZlNjQyMDY5NmU3Mzc0NjE2ZTc0Njk2MTc0NjU3MzIwNjEyMDU2NGQyMDY5NmU3NDZmMjA2MTIwNjI2YzZmNjM2YjYzNjg2MTY5NmUyMDYyNzkyMDYzNmY3MjcyNjU2Mzc0NmM3OTIwNzM2OTY3NmU2OTZlNjcyMDc0Njg2NTIwMzIyZDZmNjYyZDMzMjA1Mzc1NjI2ZTY1NzQ0MTc1NzQ2ODAwMGE1NDY1NzM3NDIwNDE3MzczNjU3NDAwMDQ1NDQ1NTM1NDAwMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDcwMDAwMDAwMDAwMDAwMWZiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDIzY2I3ZDM4NDJlOGNlZTZhMGViZDA5ZjFmZTg4NGY2ODYxZTFiMjljYTQzYzFmNmVjZGNiMWZjZWM4NmQ3ODQ0NmI5Y2Y2MTljNjRjNjA0YjAwMDAwMDBhMDAwMDAwMDIwMDAwMDAwMDAwMDAwMDAxXCJcbiAgY29uc3QgY3JlYXRlQ2hhaW5UeEJ1ZjogQnVmZmVyID0gQnVmZmVyLmZyb20oY3JlYXRlQ2hhaW5UeEhleCwgXCJoZXhcIilcbiAgY29uc3QgY3JlYXRlQ2hhaW5UeDogQ3JlYXRlQ2hhaW5UeCA9IG5ldyBDcmVhdGVDaGFpblR4KClcbiAgY3JlYXRlQ2hhaW5UeC5mcm9tQnVmZmVyKGNyZWF0ZUNoYWluVHhCdWYpXG5cbiAgdGVzdChcImdldFR5cGVOYW1lXCIsIGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCBjcmVhdGVDaGFpblR4VHlwZU5hbWU6IHN0cmluZyA9IGNyZWF0ZUNoYWluVHguZ2V0VHlwZU5hbWUoKVxuICAgIGV4cGVjdChjcmVhdGVDaGFpblR4VHlwZU5hbWUpLnRvQmUoXCJDcmVhdGVDaGFpblR4XCIpXG4gIH0pXG5cbiAgdGVzdChcImdldFR5cGVJRFwiLCBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgY29uc3QgY3JlYXRlQ2hhaW5UeFR5cGVJRDogbnVtYmVyID0gY3JlYXRlQ2hhaW5UeC5nZXRUeXBlSUQoKVxuICAgIGV4cGVjdChjcmVhdGVDaGFpblR4VHlwZUlEKS50b0JlKFBsYXRmb3JtVk1Db25zdGFudHMuQ1JFQVRFQ0hBSU5UWClcbiAgfSlcblxuICB0ZXN0KFwidG9CdWZmZXIgYW5kIGZyb21CdWZmZXJcIiwgYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGNvbnN0IGJ1ZjogQnVmZmVyID0gY3JlYXRlQ2hhaW5UeC50b0J1ZmZlcigpXG4gICAgY29uc3QgY2NUeDogQ3JlYXRlQ2hhaW5UeCA9IG5ldyBDcmVhdGVDaGFpblR4KClcbiAgICBjY1R4LmZyb21CdWZmZXIoYnVmKVxuICAgIGNvbnN0IGJ1ZjI6IEJ1ZmZlciA9IGNjVHgudG9CdWZmZXIoKVxuICAgIGV4cGVjdChidWYudG9TdHJpbmcoXCJoZXhcIikpLnRvQmUoYnVmMi50b1N0cmluZyhcImhleFwiKSlcbiAgfSlcblxuICB0ZXN0KFwiZ2V0U3VibmV0SURcIiwgKCk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IHNuSUQ6IHN0cmluZyA9IFwieUtSVjRFdkdZV2o3SEhYVXhTWXphQVFWYXpFdmFGUEtQaEppZTRwYXFick1MNWR1YlwiXG4gICAgY29uc3Qgc3VibmV0SUQ6IHN0cmluZyA9IGNyZWF0ZUNoYWluVHguZ2V0U3VibmV0SUQoKVxuICAgIGV4cGVjdChzdWJuZXRJRCkudG9CZShzbklEKVxuICB9KVxuXG4gIHRlc3QoXCJnZXRDaGFpbk5hbWVcIiwgKCk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGNuOiBzdHJpbmcgPSBcIkVQSUMgQVZNXCJcbiAgICBjb25zdCBjaGFpbk5hbWU6IHN0cmluZyA9IGNyZWF0ZUNoYWluVHguZ2V0Q2hhaW5OYW1lKClcbiAgICBleHBlY3QoY2hhaW5OYW1lKS50b0JlKGNuKVxuICB9KVxuXG4gIHRlc3QoXCJnZXRWTUlEXCIsICgpOiB2b2lkID0+IHtcbiAgICBjb25zdCB2bUlESGV4OiBzdHJpbmcgPVxuICAgICAgXCI2MTc2NmQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwXCJcbiAgICBjb25zdCB2bUlEOiBzdHJpbmcgPSBjcmVhdGVDaGFpblR4LmdldFZNSUQoKS50b1N0cmluZyhcImhleFwiKVxuICAgIGV4cGVjdCh2bUlEKS50b0JlKHZtSURIZXgpXG4gIH0pXG5cbiAgdGVzdChcImdldEZYSURzXCIsICgpOiB2b2lkID0+IHtcbiAgICBjb25zdCBmeElEc0hleDogc3RyaW5nW10gPSBbXG4gICAgICBcIjZlNjY3NDY2NzgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIixcbiAgICAgIFwiNzA3MjZmNzA2NTcyNzQ3OTY2NzgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFwiLFxuICAgICAgXCI3MzY1NjM3MDMyMzUzNjZiMzE2Njc4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwXCJcbiAgICBdXG4gICAgY29uc3QgZnhJRHM6IEJ1ZmZlcltdID0gY3JlYXRlQ2hhaW5UeC5nZXRGWElEcygpXG4gICAgZXhwZWN0KGZ4SURzLmxlbmd0aCkudG9CZSgzKVxuICAgIGZ4SURzLmZvckVhY2goKGZ4SUQ6IEJ1ZmZlciwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgZXhwZWN0KGZ4SUQudG9TdHJpbmcoXCJoZXhcIikpLnRvQmUoZnhJRHNIZXhbaW5kZXhdKVxuICAgIH0pXG4gIH0pXG5cbiAgdGVzdChcImdldEdlbmVzaXNEYXRhXCIsICgpOiB2b2lkID0+IHtcbiAgICBjb25zdCBnZDogc3RyaW5nID0gY3JlYXRlQ2hhaW5UeC5nZXRHZW5lc2lzRGF0YSgpXG4gICAgY29uc3QgZ2VuZXNpc0RhdGE6IEdlbmVzaXNEYXRhID0gbmV3IEdlbmVzaXNEYXRhKClcbiAgICBjb25zdCBidWY6IEJ1ZmZlciA9IGJpbnRvb2xzLmNiNThEZWNvZGUoZ2QpXG4gICAgZ2VuZXNpc0RhdGEuZnJvbUJ1ZmZlcihidWYpXG4gICAgY29uc3QgZ2VuZXNpc0Fzc2V0czogR2VuZXNpc0Fzc2V0W10gPSBnZW5lc2lzRGF0YS5nZXRHZW5lc2lzQXNzZXRzKClcbiAgICBjb25zdCBnZW5lc2lzQXNzZXQ6IEdlbmVzaXNBc3NldCA9IGdlbmVzaXNBc3NldHNbMF1cblxuICAgIGNvbnN0IG46IHN0cmluZyA9IFwiVGVzdCBBc3NldFwiXG4gICAgY29uc3QgbmFtZTogc3RyaW5nID0gZ2VuZXNpc0Fzc2V0LmdldE5hbWUoKVxuICAgIGV4cGVjdChuYW1lKS50b0JlKG4pXG5cbiAgICBjb25zdCBzOiBzdHJpbmcgPSBcIlRFU1RcIlxuICAgIGNvbnN0IHN5bWJvbDogc3RyaW5nID0gZ2VuZXNpc0Fzc2V0LmdldFN5bWJvbCgpXG4gICAgZXhwZWN0KHN5bWJvbCkudG9CZShzKVxuXG4gICAgY29uc3QgZDogbnVtYmVyID0gMFxuICAgIGNvbnN0IGRlbm9taW5hdGlvbiA9IGdlbmVzaXNBc3NldC5nZXREZW5vbWluYXRpb24oKVxuICAgIGV4cGVjdChkZW5vbWluYXRpb24pLnRvQmUoZClcbiAgfSlcblxuICBkZXNjcmliZShcIlN1Ym5ldEF1dGhcIiwgKCk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IHNhOiBTdWJuZXRBdXRoID0gY3JlYXRlQ2hhaW5UeC5nZXRTdWJuZXRBdXRoKClcblxuICAgIHRlc3QoXCJnZXRUeXBlTmFtZVwiLCBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBjb25zdCBzdWJuZXRBdXRoVHlwZU5hbWU6IHN0cmluZyA9IHNhLmdldFR5cGVOYW1lKClcbiAgICAgIGV4cGVjdChzdWJuZXRBdXRoVHlwZU5hbWUpLnRvQmUoXCJTdWJuZXRBdXRoXCIpXG4gICAgfSlcblxuICAgIHRlc3QoXCJnZXRUeXBlSURcIiwgYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgY29uc3Qgc3VibmV0QXV0aFR5cGVJRDogbnVtYmVyID0gc2EuZ2V0VHlwZUlEKClcbiAgICAgIGV4cGVjdChzdWJuZXRBdXRoVHlwZUlEKS50b0JlKFBsYXRmb3JtVk1Db25zdGFudHMuU1VCTkVUQVVUSClcbiAgICB9KVxuXG4gICAgdGVzdChcImdldE51bUFkZHJlc3NJbmRpY2VzXCIsIGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGNvbnN0IG51bUFkZHJlc3NJbmRpY2VzOiBudW1iZXIgPSBzYS5nZXROdW1BZGRyZXNzSW5kaWNlcygpXG4gICAgICBjb25zdCBuQUk6IG51bWJlciA9IDJcbiAgICAgIGV4cGVjdChudW1BZGRyZXNzSW5kaWNlcykudG9CZShuQUkpXG4gICAgfSlcblxuICAgIHRlc3QoXCJhZGRyZXNzSW5kaWNlc1wiLCBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBjb25zdCBhaTogbnVtYmVyW10gPSBbMCwgMV1cbiAgICAgIGNvbnN0IGFkZHJlc3NJbmRpY2VzOiBCdWZmZXJbXSA9IHNhLmdldEFkZHJlc3NJbmRpY2VzKClcbiAgICAgIGFkZHJlc3NJbmRpY2VzLmZvckVhY2goKGFkZHJlc3NJbmRleDogQnVmZmVyLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIGV4cGVjdChhZGRyZXNzSW5kZXgucmVhZEludDMyQkUoMCkpLnRvQmUoYWlbaW5kZXhdKVxuICAgICAgfSlcbiAgICB9KVxuICB9KVxufSlcbiJdfQ==Выполнить команду
Для локальной разработки. Не используйте в интернете!