Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

slopes

Package Overview
Dependencies
Maintainers
1
Versions
62
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

slopes - npm Package Compare versions

Comparing version 1.3.17 to 1.3.18

2

package.json
{
"name": "slopes",
"version": "1.3.17",
"version": "1.3.18",
"description": "AVA Platform JS Library",

@@ -5,0 +5,0 @@ "main": "typings/src/index.js",

@@ -490,12 +490,8 @@ /**

let n49_avm = Object.assign({}, n2_avm);
n49_avm["blockchainID"] = "tHLiSpCwUQQVZ6W4GMjVzx5JiFRgZBrniTBqaxFLdqBJKk8YN";
let n49_platform = Object.assign({}, n2_avm);
let n49_contracts = Object.assign({}, n2_avm);
let n12345_avm:object = Object.assign({}, n2_avm);
n12345_avm["blockchainID"] = "ddV3GvdmdeQkaxLRo9LH5AbDNyU9bDu6SqWak7x9UXMbupksK";
let n12345_platform = Object.assign({}, n2_avm);
let n12345_contracts = Object.assign({}, n2_avm);
n12345_avm["blockchainID"] = "i8KtK2KwLi1o7WaVBbEKpRLPtAEYayfoptqAFYxfQgrus1g6m";
let n12345_platform = Object.assign({}, n2_platform);
n12345_platform["blockchainID"] = "11111111111111111111111111111111LpoYY";
let n12345_contracts = Object.assign({}, n2_contracts);
n12345_platform["blockchainID"] = "MTHoZAP3gGHB4cAUpFB1CuYnh3uDoMkte6FjLb9Sn5Hx8Bkvb";

@@ -522,11 +518,11 @@ export class Defaults {

"X": n12345_avm,
"ddV3GvdmdeQkaxLRo9LH5AbDNyU9bDu6SqWak7x9UXMbupksK": n12345_avm,
"i8KtK2KwLi1o7WaVBbEKpRLPtAEYayfoptqAFYxfQgrus1g6m": n12345_avm,
"platform": n12345_platform,
"P": n12345_platform,
"BCID1": n12345_platform,
"11111111111111111111111111111111LpoYY": n12345_platform,
"contracts": n12345_contracts,
"C": n12345_contracts,
"BCID2": n12345_contracts
"MTHoZAP3gGHB4cAUpFB1CuYnh3uDoMkte6FjLb9Sn5Hx8Bkvb": n12345_contracts
}
};
}

@@ -23,3 +23,3 @@ import mockAxios from 'jest-mock-axios';

const networkid:number = 12345;
const blockchainid:string = "ddV3GvdmdeQkaxLRo9LH5AbDNyU9bDu6SqWak7x9UXMbupksK";
const blockchainid:string = "i8KtK2KwLi1o7WaVBbEKpRLPtAEYayfoptqAFYxfQgrus1g6m";
const ip:string = '127.0.0.1';

@@ -26,0 +26,0 @@ const port:number = 9650;

@@ -297,9 +297,9 @@ /// <reference types="node" />

"X": object;
"ddV3GvdmdeQkaxLRo9LH5AbDNyU9bDu6SqWak7x9UXMbupksK": object;
"i8KtK2KwLi1o7WaVBbEKpRLPtAEYayfoptqAFYxfQgrus1g6m": object;
"platform": {} & object;
"P": {} & object;
"BCID1": {} & object;
"11111111111111111111111111111111LpoYY": {} & object;
"contracts": {} & object;
"C": {} & object;
"BCID2": {} & object;
"MTHoZAP3gGHB4cAUpFB1CuYnh3uDoMkte6FjLb9Sn5Hx8Bkvb": {} & object;
};

@@ -306,0 +306,0 @@ };

@@ -365,10 +365,8 @@ "use strict";

};
let n49_avm = Object.assign({}, n2_avm);
n49_avm["blockchainID"] = "tHLiSpCwUQQVZ6W4GMjVzx5JiFRgZBrniTBqaxFLdqBJKk8YN";
let n49_platform = Object.assign({}, n2_avm);
let n49_contracts = Object.assign({}, n2_avm);
let n12345_avm = Object.assign({}, n2_avm);
n12345_avm["blockchainID"] = "ddV3GvdmdeQkaxLRo9LH5AbDNyU9bDu6SqWak7x9UXMbupksK";
let n12345_platform = Object.assign({}, n2_avm);
let n12345_contracts = Object.assign({}, n2_avm);
n12345_avm["blockchainID"] = "i8KtK2KwLi1o7WaVBbEKpRLPtAEYayfoptqAFYxfQgrus1g6m";
let n12345_platform = Object.assign({}, n2_platform);
n12345_platform["blockchainID"] = "11111111111111111111111111111111LpoYY";
let n12345_contracts = Object.assign({}, n2_contracts);
n12345_platform["blockchainID"] = "MTHoZAP3gGHB4cAUpFB1CuYnh3uDoMkte6FjLb9Sn5Hx8Bkvb";
class Defaults {

@@ -396,11 +394,11 @@ }

"X": n12345_avm,
"ddV3GvdmdeQkaxLRo9LH5AbDNyU9bDu6SqWak7x9UXMbupksK": n12345_avm,
"i8KtK2KwLi1o7WaVBbEKpRLPtAEYayfoptqAFYxfQgrus1g6m": n12345_avm,
"platform": n12345_platform,
"P": n12345_platform,
"BCID1": n12345_platform,
"11111111111111111111111111111111LpoYY": n12345_platform,
"contracts": n12345_contracts,
"C": n12345_contracts,
"BCID2": n12345_contracts
"MTHoZAP3gGHB4cAUpFB1CuYnh3uDoMkte6FjLb9Sn5Hx8Bkvb": n12345_contracts
}
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFJQSxvQ0FBaUM7QUFDakMsOENBQXNCO0FBRXRCLDBEQUFtQztBQUluQzs7R0FFRztBQUNILE1BQU0sUUFBUSxHQUFHLGtCQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7QUFFeEM7O0dBRUc7QUFDSCxNQUFhLG1CQUFtQjtDQU0vQjtBQU5ELGtEQU1DO0FBRUQ7O0dBRUc7QUFDSCxNQUFzQixPQUFPO0lBcUN6Qjs7OztPQUlHO0lBQ0gsWUFBWSxJQUFlLEVBQUUsT0FBYztRQXJDM0M7Ozs7V0FJRztRQUNILGVBQVUsR0FBRyxDQUFDLE9BQWMsRUFBRSxFQUFFO1lBQzVCLElBQUcsSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLE9BQU8sRUFBQztnQkFDbkMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxFQUFFLEdBQUcsWUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ2hDO2lCQUFNO2dCQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO2dCQUN2QixJQUFJLENBQUMsRUFBRSxHQUFHLFlBQUUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDdEM7UUFDTCxDQUFDLENBQUE7UUFFRDs7V0FFRztRQUNILGVBQVUsR0FBRyxHQUFZLEVBQUU7WUFDdkIsT0FBTyxJQUFJLENBQUMsT0FBTyxD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Y2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgVXRpbHNcbiAqL1xuaW1wb3J0IFNsb3Blc0NvcmUgZnJvbSAnLi4vc2xvcGVzJztcbmltcG9ydCB7IEJ1ZmZlciB9IGZyb20gXCJidWZmZXIvXCI7XG5pbXBvcnQgREIgZnJvbSBcIi4vZGJcIjtcbmltcG9ydCB7IFN0b3JlQVBJIH0gZnJvbSAnc3RvcmUyJztcbmltcG9ydCBCaW5Ub29scyAgZnJvbSAnLi9iaW50b29scyc7XG5pbXBvcnQgeyBDbGllbnRSZXF1ZXN0IH0gZnJvbSBcImh0dHBcIjtcbmltcG9ydCB7IEF4aW9zUmVxdWVzdENvbmZpZyB9IGZyb20gJ2F4aW9zJztcblxuLyoqXG4gKiBAaWdub3JlXG4gKi9cbmNvbnN0IGJpbnRvb2xzID0gQmluVG9vbHMuZ2V0SW5zdGFuY2UoKTtcblxuLyoqXG4gKiBSZXNwb25zZSBkYXRhIGZvciBIVFRQIHJlcXVlc3RzLlxuICovXG5leHBvcnQgY2xhc3MgUmVxdWVzdFJlc3BvbnNlRGF0YSB7XG4gICAgZGF0YTogc3RyaW5nIHwgb2JqZWN0IHwgQXJyYXk8b2JqZWN0PjtcbiAgICBoZWFkZXJzOm9iamVjdDtcbiAgICBzdGF0dXM6IG51bWJlcjtcbiAgICBzdGF0dXNUZXh0OiBzdHJpbmc7XG4gICAgcmVxdWVzdDpDbGllbnRSZXF1ZXN0IHwgWE1MSHR0cFJlcXVlc3Q7XG59XG5cbi8qKlxuICogQWJzdHJhY3QgY2xhc3MgZGVmaW5pbmcgYSBnZW5lcmljIGVuZHBvaW50IHRoYXQgYWxsIGVuZHBvaW50cyBtdXN0IGltcGxlbWVudCAoZXh0ZW5kKS5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFQSUJhc2Uge1xuICAgIHByb3RlY3RlZCBjb3JlOlNsb3Blc0NvcmU7XG4gICAgcHJvdGVjdGVkIGJhc2V1cmw6c3RyaW5nO1xuICAgIHByb3RlY3RlZCBkYjpTdG9yZUFQSTtcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHBhdGggb2YgdGhlIEFQSXMgYmFzZXVybC5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gYmFzZXVybCBQYXRoIG9mIHRoZSBBUElzIGJhc2V1cmwgLSBleDogXCIvZXh0L2JjL2F2bVwiXG4gICAgICovXG4gICAgc2V0QmFzZVVSTCA9IChiYXNldXJsOnN0cmluZykgPT4ge1xuICAgICAgICBpZih0aGlzLmRiICYmIHRoaXMuYmFzZXVybCAhPT0gYmFzZXVybCl7XG4gICAgICAgICAgICBsZXQgYmFja3VwID0gdGhpcy5kYi5nZXRBbGwoKTtcbiAgICAgICAgICAgIHRoaXMuZGIuY2xlYXJBbGwoKTtcbiAgICAgICAgICAgIHRoaXMuYmFzZXVybCA9IGJhc2V1cmw7XG4gICAgICAgICAgICB0aGlzLmRiID0gREIuZ2V0TmFtZXNwYWNlKGJhc2V1cmwpO1xuICAgICAgICAgICAgdGhpcy5kYi5zZXRBbGwoYmFja3VwLCB0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYmFzZXVybCA9IGJhc2V1cmw7XG4gICAgICAgICAgICB0aGlzLmRiID0gREIuZ2V0TmFtZXNwYWNlKGJhc2V1cmwpO1xuICAgICAgICB9XG4gICAgfSBcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGJhc2V1cmwncyBwYXRoLiBcbiAgICAgKi9cbiAgICBnZXRCYXNlVVJMID0gKCkgOiBzdHJpbmcgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNldXJsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGJhc2V1cmwncyBkYXRhYmFzZS5cbiAgICAgKi9cbiAgICBnZXREQiA9ICgpOlN0b3JlQVBJID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogXG4gICAgICogQHBhcmFtIGNvcmUgUmVmZXJlbmNlIHRvIHRoZSBTbG9wZXMgaW5zdGFuY2UgdXNpbmcgdGhpcyBiYXNldXJsXG4gICAgICogQHBhcmFtIGJhc2V1cmwgUGF0aCB0byB0aGUgYmFzZXVybCAtIGV4OiBcIi9leHQvYmMvYXZtXCJcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihjb3JlOlNsb3Blc0NvcmUsIGJhc2V1cmw6c3RyaW5nKSB7XG4gICAgICAgIHRoaXMuY29yZSA9IGNvcmU7XG4gICAgICAgIHRoaXMuc2V0QmFzZVVSTChiYXNldXJsKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBKUlBDQVBJIGV4dGVuZHMgQVBJQmFzZSB7XG4gICAgcHJvdGVjdGVkIGpycGNWZXJzaW9uOnN0cmluZyA9IFwiMi4wXCI7XG4gICAgcHJvdGVjdGVkIHJwY2lkID0gMTtcbiAgICBjYWxsTWV0aG9kID0gYXN5bmMgKG1ldGhvZDpzdHJpbmcsIHBhcmFtcz86QXJyYXk8b2JqZWN0PiB8IG9iamVjdCwgYmFzZXVybD86c3RyaW5nKTpQcm9taXNlPFJlcXVlc3RSZXNwb25zZURhdGE+ID0+IHtcbiAgICAgICAgbGV0IGVwID0gYmFzZXVybCA/IGJhc2V1cmwgOiB0aGlzLmJhc2V1cmw7XG4gICAgICAgIGxldCBycGM6b2JqZWN0ID0ge307XG4gICAgICAgIHJwY1tcImlkXCJdID0gdGhpcy5ycGNpZDtcbiAgICAgICAgcnBjW1wibWV0aG9kXCJdID0gbWV0aG9kO1xuXG4gICAgICAgIC8vIFNldCBwYXJhbWV0ZXJzIGlmIGV4aXN0c1xuICAgICAgICBpZihwYXJhbXMpe1xuICAgICAgICAgICAgcnBjWydwYXJhbXMnXSA9IHBhcmFtcztcbiAgICAgICAgfSBlbHNlIGlmKHRoaXMuanJwY1ZlcnNpb24gPT0gXCIxLjBcIil7XG4gICAgICAgICAgICBycGNbXCJwYXJhbXNcIl0gPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHRoaXMuanJwY1ZlcnNpb24gIT0gXCIxLjBcIikge1xuICAgICAgICAgICAgcnBjW1wianNvbnJwY1wiXSA9IHRoaXMuanJwY1ZlcnNpb247XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaGVhZGVyczpvYmplY3QgPSB7XCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9VVRGLThcIn07XG5cbiAgICAgICAgbGV0IGF4Q29uZjpBeGlvc1JlcXVlc3RDb25maWcgPSB7XG4gICAgICAgICAgICBiYXNlVVJMOnRoaXMuY29yZS5nZXRQcm90b2NvbCgpK1wiOi8vXCIrdGhpcy5jb3JlLmdldElQKCkrXCI6XCIrdGhpcy5jb3JlLmdldFBvcnQoKSxcbiAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY29yZS5wb3N0KGVwLCB7fSwgSlNPTi5zdHJpbmdpZnkocnBjKSwgaGVhZGVycywgYXhDb25mKS50aGVuKCAocmVzcDpSZXF1ZXN0UmVzcG9uc2VEYXRhKSA9PiB7XG4gICAgICAgICAgICBpZihyZXNwLnN0YXR1cyA+PSAyMDAgJiYgcmVzcC5zdGF0dXMgPCAzMDApe1xuICAgICAgICAgICAgICAgIHRoaXMucnBjaWQgKz0gMTtcbiAgICAgICAgICAgICAgICBpZih0eXBlb2YgcmVzcC5kYXRhID09PSBcInN0cmluZ1wiKXtcbiAgICAgICAgICAgICAgICAgICAgcmVzcC5kYXRhID0gSlNPTi5wYXJzZShyZXNwLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYodHlwZW9mIHJlc3AuZGF0YSA9PT0gJ29iamVjdCcgJiYgJ2Vycm9yJyBpbiByZXNwLmRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXJyb3IgcmV0dXJuZWQ6IFwiICsgSlNPTi5zdHJpbmdpZnkocmVzcC5kYXRhKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXNwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9ICAgXG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBycGNpZCwgYSBzdHJpY3RseS1pbmNyZWFzaW5nIG51bWJlciwgc3RhcnRpbmcgZnJvbSAxLCBpbmRpY2F0aW5nIHRoZSBuZXh0IHJlcXVlc3QgSUQgdGhhdCB3aWxsIGJlIHNlbnQuXG4gICAgICovXG4gICAgZ2V0UlBDSUQgPSAoKTpudW1iZXIgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ycGNpZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gY29yZSBSZWZlcmVuY2UgdG8gdGhlIFNsb3BlcyBpbnN0YW5jZSB1c2luZyB0aGlzIGVuZHBvaW50XG4gICAgICogQHBhcmFtIGJhc2V1cmwgUGF0aCBvZiB0aGUgQVBJcyBiYXNldXJsIC0gZXg6IFwiL2V4dC9iYy9hdm1cIlxuICAgICAqIEBwYXJhbSBqcnBjVmVyc2lvbiBUaGUganJwYyB2ZXJzaW9uIHRvIHVzZSwgZGVmYXVsdCBcIjIuMFwiLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGNvcmU6U2xvcGVzQ29yZSwgYmFzZXVybDpzdHJpbmcsIGpycGNWZXJzaW9uOnN0cmluZyA9IFwiMi4wXCIpIHtcbiAgICAgICAgc3VwZXIoY29yZSwgYmFzZXVybCk7XG4gICAgICAgIHRoaXMuanJwY1ZlcnNpb24gPSBqcnBjVmVyc2lvbjtcbiAgICAgICAgdGhpcy5ycGNpZCA9IDE7XG4gICAgfVxufVxuXG4vKipcbiAqIENsYXNzIGZvciByZXByZXNlbnRpbmcgYSBwcml2YXRlIGFuZCBwdWJsaWMga2V5cGFpciBpbiBTbG9wZXMuIFxuICogQWxsIEFQSXMgdGhhdCBuZWVkIGtleSBwYWlycyBzaG91bGQgZXh0ZW5kIG9uIHRoaXMgY2xhc3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBLZXlQYWlyIHtcbiAgICBwcm90ZWN0ZWQgcHViazpCdWZmZXI7XG4gICAgcHJvdGVjdGVkIHByaXZrOkJ1ZmZlcjtcbiAgICBwcm90ZWN0ZWQgY2hhaW5pZDpzdHJpbmcgPSBcIlwiO1xuXG4gICAgLyoqXG4gICAgICogR2VuZXJhdGVzIGEgbmV3IGtleXBhaXIuXG4gICAgICogXG4gICAgICogQHBhcmFtIGVudHJvcHkgT3B0aW9uYWwgcGFyYW1ldGVyIHRoYXQgbWF5IGJlIG5lY2Vzc2FyeSB0byBwcm9kdWNlIHNlY3VyZSBrZXlzXG4gICAgICovXG4gICAgZ2VuZXJhdGVLZXk6KGVudHJvcHk/OkJ1ZmZlcikgPT4gdm9pZDtcbiAgICAvKipcbiAgICAgKiBJbXBvcnRzIGEgcHJpdmF0ZSBrZXkgYW5kIGdlbmVyYXRlcyB0aGUgYXBwcm9wcmlhdGUgcHVibGljIGtleS5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gcHJpdmsgQSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfSByZXByZXNlbnRpbmcgdGhlIHByaXZhdGUga2V5IFxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZmFpbHVyZVxuICAgICAqL1xuICAgIGltcG9ydEtleToocHJpdms6QnVmZmVyKSA9PiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogVGFrZXMgYSBtZXNzYWdlLCBzaWducyBpdCwgYW5kIHJldHVybnMgdGhlIHNpZ25hdHVyZS5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gbXNnIFRoZSBtZXNzYWdlIHRvIHNpZ25cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9IGNvbnRhaW5pbmcgdGhlIHNpZ25hdHVyZVxuICAgICAqL1xuICAgIHNpZ246KG1zZzpCdWZmZXIpID0+IEJ1ZmZlcjtcblxuICAgIC8qKlxuICAgICAqIFJlY292ZXJzIHRoZSBwdWJsaWMga2V5IG9mIGEgbWVzc2FnZSBzaWduZXIgZnJvbSBhIG1lc3NhZ2UgYW5kIGl0cyBhc3NvY2lhdGVkIHNpZ25hdHVyZS5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gbXNnIFRoZSBtZXNzYWdlIHRoYXQncyBzaWduZWRcbiAgICAgKiBAcGFyYW0gc2lnIFRoZSBzaWduYXR1cmUgdGhhdCdzIHNpZ25lZCBvbiB0aGUgbWVzc2FnZVxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0gY29udGFpbmluZyB0aGUgcHVibGljIGtleSBvZiB0aGUgc2lnbmVyXG4gICAgICovXG4gICAgcmVjb3ZlcjoobXNnOkJ1ZmZlciwgc2lnOkJ1ZmZlcikgPT4gQnVmZmVyO1xuXG4gICAgLyoqXG4gICAgICogVmVyaWZpZXMgdGhhdCB0aGUgcHJpdmF0ZSBrZXkgYXNzb2NpYXRlZCB3aXRoIHRoZSBwcm92aWRlZCBwdWJsaWMga2V5IHByb2R1Y2VzIHRoZSBzaWduYXR1cmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBtZXNzYWdlLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBtc2cgVGhlIG1lc3NhZ2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBzaWduYXR1cmVcbiAgICAgKiBAcGFyYW0gc2lnIFRoZSBzaWduYXR1cmUgb2YgdGhlIHNpZ25lZCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHB1YmsgVGhlIHB1YmxpYyBrZXkgYXNzb2NpYXRlZCB3aXRoIHRoZSBtZXNzYWdlIHNpZ25hdHVyZVxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIFRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZmFpbHVyZVxuICAgICAqL1xuICAgIHZlcmlmeToobXNnOkJ1ZmZlciwgc2lnOkJ1ZmZlciwgcHViazpCdWZmZXIpID0+IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBwcml2YXRlIGtleS5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9IGNvbnRhaW5pbmcgdGhlIHByaXZhdGUga2V5XG4gICAgICovXG4gICAgZ2V0UHJpdmF0ZUtleSA9ICgpOkJ1ZmZlciA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnByaXZrO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIHB1YmxpYyBrZXkuXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfSBjb250YWluaW5nIHRoZSBwdWJsaWMga2V5XG4gICAgICovXG4gICAgZ2V0UHVibGljS2V5ID0gKCk6QnVmZmVyID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHViaztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwcml2YXRlIGtleS5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgcHVibGljIGtleVxuICAgICAqL1xuICAgIGdldFByaXZhdGVLZXlTdHJpbmc6KCkgPT4gc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgcHVibGljIGtleS5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgcHVibGljIGtleVxuICAgICAqL1xuICAgIGdldFB1YmxpY0tleVN0cmluZzooKSA9PiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBhZGRyZXNzLlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0gIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBhZGRyZXNzXG4gICAgICovXG4gICAgZ2V0QWRkcmVzczooKSA9PiBCdWZmZXI7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBhZGRyZXNzJ3Mgc3RyaW5nIHJlcHJlc2VudGF0aW9uLlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBhZGRyZXNzXG4gICAgICovXG4gICAgZ2V0QWRkcmVzc1N0cmluZzooKSA9PiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBjaGFpbklEIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGtleS5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBUaGUgW1tLZXlQYWlyXV0ncyBjaGFpbklEXG4gICAgICovXG4gICAgZ2V0Q2hhaW5JRCA9ICgpOnN0cmluZyA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNoYWluaWRcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB0aGUgY2hhaW5JRCBhc3NvY2lhdGVkIHdpdGggdGhpcyBrZXkuXG4gICAgICogXG4gICAgICogQHBhcmFtIGNoYWluaWQgU3RyaW5nIGZvciB0aGUgY2hhaW5JRFxuICAgICAqL1xuICAgIHNldENoYWluSUQgPSAoY2hhaW5pZDpzdHJpbmcpOnZvaWQgPT4ge1xuICAgICAgICB0aGlzLmNoYWluaWQgPSBjaGFpbmlkO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGNoYWluaWQ6c3RyaW5nKSB7XG4gICAgICAgIHRoaXMuY2hhaW5pZCA9IGNoYWluaWRcbiAgICB9XG59XG5cbi8qKlxuICogQ2xhc3MgZm9yIHJlcHJlc2VudGluZyBhIGtleSBjaGFpbiBpbiBTbG9wZXMuIFxuICogQWxsIGVuZHBvaW50cyB0aGF0IG5lZWQga2V5IGNoYWlucyBzaG91bGQgZXh0ZW5kIG9uIHRoaXMgY2xhc3MuXG4gKiBcbiAqIEB0eXBlcGFyYW0gS1BDbGFzcyBleHRlbmRpbmcgW1tLZXlQYWlyXV0gd2hpY2ggaXMgdXNlZCBhcyB0aGUga2V5IGluIFtbS2V5Q2hhaW5dXVxuICovXG5leHBvcnQgY2xhc3MgS2V5Q2hhaW48S1BDbGFzcyBleHRlbmRzIEtleVBhaXI+IHtcbiAgICBwcm90ZWN0ZWQga2V5czp7W2FkZHJlc3M6IHN0cmluZ106IEtQQ2xhc3N9ID0ge307XG4gICAgcHJvdGVjdGVkIGNoYWluaWQ6c3RyaW5nID0gXCJcIjtcblxuICAgIC8qKlxuICAgICAqIE1ha2VzIGEgbmV3IFtbS2V5UGFpcl1dLCByZXR1cm5zIHRoZSBhZGRyZXNzLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBlbnRyb3B5IE9wdGlvbmFsIHBhcmFtZXRlciB0aGF0IG1heSBiZSBuZWNlc3NhcnkgdG8gcHJvZHVjZSBzZWN1cmUga2V5c1xuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEFkZHJlc3Mgb2YgdGhlIG5ldyBbW0tleVBhaXJdXVxuICAgICAqL1xuICAgIG1ha2VLZXk6KGVudHJvcHk/OkJ1ZmZlcikgPT4gQnVmZmVyO1xuXG4gICAgLyoqXG4gICAgICogR2l2ZW4gYSBwcml2YXRlIGtleSwgbWFrZXMgYSBuZXcgW1tLZXlQYWlyXV0sIHJldHVybnMgdGhlIGFkZHJlc3MuXG4gICAgICogXG4gICAgICogQHBhcmFtIHByaXZrIEEge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0gcmVwcmVzZW50aW5nIHRoZSBwcml2YXRlIGtleSBcbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBZGRyZXNzIG9mIHRoZSBuZXcgW1tLZXlQYWlyXV1cbiAgICAgKi9cbiAgICBpbXBvcnRLZXk6KHByaXZrOkJ1ZmZlcikgPT4gQnVmZmVyO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyBhbiBhcnJheSBvZiBhZGRyZXNzZXMgc3RvcmVkIGluIHRoZSBbW0tleUNoYWluXV0uXG4gICAgICogXG4gICAgICogQHJldHVybnMgQW4gYXJyYXkgb2Yge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0gIHJlcHJlc2VudGF0aW9ucyBvZiB0aGUgYWRkcmVzc2VzXG4gICAgICovXG4gICAgZ2V0QWRkcmVzc2VzID0gKCk6QXJyYXk8QnVmZmVyPiA9PiB7XG4gICAgICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRoaXMua2V5cykubWFwKGtwID0+IGtwLmdldEFkZHJlc3MoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhbiBhcnJheSBvZiBhZGRyZXNzZXMgc3RvcmVkIGluIHRoZSBbW0tleUNoYWluXV0uXG4gICAgICogXG4gICAgICogQHJldHVybnMgQW4gYXJyYXkgb2Ygc3RyaW5nIHJlcHJlc2VudGF0aW9ucyBvZiB0aGUgYWRkcmVzc2VzXG4gICAgICovXG4gICAgZ2V0QWRkcmVzc1N0cmluZ3MgPSAoKTpBcnJheTxzdHJpbmc+ID0+IHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5rZXlzKS5tYXAoa3AgPT4ga3AuZ2V0QWRkcmVzc1N0cmluZygpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIHRoZSBrZXkgcGFpciB0byB0aGUgbGlzdCBvZiB0aGUga2V5cyBtYW5hZ2VkIGluIHRoZSBbW0tleUNoYWluXV0uXG4gICAgICogXG4gICAgICogQHBhcmFtIG5ld0tleSBBIGtleSBwYWlyIG9mIHRoZSBhcHByb3ByaWF0ZSBjbGFzcyB0byBiZSBhZGRlZCB0byB0aGUgW1tLZXlDaGFpbl1dXG4gICAgICovXG4gICAgYWRkS2V5ID0gKG5ld0tleTpLUENsYXNzKSA9PiB7XG4gICAgICAgIG5ld0tleS5zZXRDaGFpbklEKHRoaXMuY2hhaW5pZCk7XG4gICAgICAgIHRoaXMua2V5c1tuZXdLZXkuZ2V0QWRkcmVzcygpLnRvU3RyaW5nKFwiaGV4XCIpXSA9IG5ld0tleTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIHRoZSBrZXkgcGFpciBmcm9tIHRoZSBsaXN0IG9mIHRoZXkga2V5cyBtYW5hZ2VkIGluIHRoZSBbW0tleUNoYWluXV0uXG4gICAgICogXG4gICAgICogQHBhcmFtIGtleSBBIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9IGZvciB0aGUgYWRkcmVzcyBvciBLUENsYXNzIHRvIHJlbW92ZVxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIFRoZSBib29sZWFuIHRydWUgaWYgYSBrZXkgd2FzIHJlbW92ZWQuXG4gICAgICovXG4gICAgcmVtb3ZlS2V5ID0gKGtleTpLUENsYXNzIHwgQnVmZmVyKSA9PiB7XG4gICAgICAgIGxldCBrYWRkcjpzdHJpbmc7XG4gICAgICAgIGlmKGtleSBpbnN0YW5jZW9mIEJ1ZmZlcil7XG4gICAgICAgICAgICBrYWRkciA9IGtleS50b1N0cmluZyhcImhleFwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGthZGRyID0ga2V5LmdldEFkZHJlc3MoKS50b1N0cmluZyhcImhleFwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZihrYWRkciBpbiB0aGlzLmtleXMpe1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMua2V5c1trYWRkcl07XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGVyZSBpcyBhIGtleSBhc3NvY2lhdGVkIHdpdGggdGhlIHByb3ZpZGVkIGFkZHJlc3MuXG4gICAgICogXG4gICAgICogQHBhcmFtIGFkZHJlc3MgVGhlIGFkZHJlc3MgdG8gY2hlY2sgZm9yIGV4aXN0ZW5jZSBpbiB0aGUga2V5cyBkYXRhYmFzZVxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIFRydWUgb24gc3VjY2VzcywgZmFsc2UgaWYgbm90IGZvdW5kXG4gICAgICovXG4gICAgaGFzS2V5ID0gKGFkZHJlc3M6QnVmZmVyKTpib29sZWFuID0+IHtcbiAgICAgICAgcmV0dXJuIChhZGRyZXNzLnRvU3RyaW5nKFwiaGV4XCIpIGluIHRoaXMua2V5cyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgW1tLZXlQYWlyXV0gbGlzdGVkIHVuZGVyIHRoZSBwcm92aWRlZCBhZGRyZXNzXG4gICAgICogXG4gICAgICogQHBhcmFtIGFkZHJlc3MgVGhlIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9IG9mIHRoZSBhZGRyZXNzIHRvIHJldHJpZXZlIGZyb20gdGhlIGtleXMgZGF0YWJhc2VcbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBIHJlZmVyZW5jZSB0byB0aGUgW1tLZXlQYWlyXV0gaW4gdGhlIGtleXMgZGF0YWJhc2VcbiAgICAgKi9cbiAgICBnZXRLZXkgPSAoYWRkcmVzczpCdWZmZXIpOiBLUENsYXNzID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMua2V5c1thZGRyZXNzLnRvU3RyaW5nKFwiaGV4XCIpXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBjaGFpbklEIGFzc29jaWF0ZWQgd2l0aCB0aGlzIFtbS2V5Q2hhaW5dXS5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBUaGUgW1tLZXlDaGFpbl1dJ3MgY2hhaW5JRFxuICAgICAqL1xuICAgIGdldENoYWluSUQgPSAoKTpzdHJpbmcgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jaGFpbmlkXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgdGhlIGNoYWluSUQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgW1tLZXlDaGFpbl1dIGFuZCBhbGwgYXNzb2NpYXRlZCBrZXlwYWlycy5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gY2hhaW5pZCBTdHJpbmcgZm9yIHRoZSBjaGFpbklEXG4gICAgICovXG4gICAgc2V0Q2hhaW5JRCA9IChjaGFpbmlkOnN0cmluZyk6dm9pZCA9PiB7XG4gICAgICAgIHRoaXMuY2hhaW5pZCA9IGNoYWluaWQ7XG4gICAgICAgIGZvcihsZXQgYWRkcmVzcyBpbiB0aGlzLmtleXMpe1xuICAgICAgICAgICAgdGhpcy5rZXlzW2FkZHJlc3NdLnNldENoYWluSUQoY2hhaW5pZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGluc3RhbmNlIG9mIFtbS2V5Q2hhaW5dXS5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihjaGFpbmlkOnN0cmluZykge1xuICAgICAgICB0aGlzLmNoYWluaWQgPSBjaGFpbmlkO1xuICAgIH1cbn1cblxuLyoqXG4gKiBBYnN0cmFjdCBjbGFzcyB0aGF0IGltcGxlbWVudHMgYmFzaWMgZnVuY3Rpb25hbGl0eSBmb3IgbWFuYWdpbmcgYSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfSBvZiBhbiBleGFjdCBsZW5ndGguXG4gKiBcbiAqIENyZWF0ZSBhIGNsYXNzIHRoYXQgZXh0ZW5kcyB0aGlzIG9uZSBhbmQgb3ZlcnJpZGUgYnNpemUgdG8gbWFrZSBpdCB2YWxpZGF0ZSBmb3IgZXhhY3RseSB0aGUgY29ycmVjdCBsZW5ndGguXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOQnl0ZXMge1xuICAgIHByb3RlY3RlZCBieXRlczpCdWZmZXI7XG4gICAgcHJvdGVjdGVkIGJzaXplOm51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0uXG4gICAgICogXG4gICAgICogQHJldHVybnMgVGhlIGV4YWN0IGxlbmd0aCByZXF1aXJlbWVudCBvZiB0aGlzIGNsYXNzXG4gICAgICovXG4gICAgZ2V0U2l6ZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnNpemU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGFrZXMgYSBiYXNlLTU4IGVuY29kZWQgc3RyaW5nLCB2ZXJpZmllcyBpdHMgbGVuZ3RoLCBhbmQgc3RvcmVzIGl0LlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIFRoZSBzaXplIG9mIHRoZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfVxuICAgICAqL1xuICAgIGZyb21TdHJpbmcoYjU4c3RyOnN0cmluZyk6bnVtYmVyIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuZnJvbUJ1ZmZlcihiaW50b29scy5iNThUb0J1ZmZlcihiNThzdHIpKTtcbiAgICAgICAgfSBjYXRjaChlKXtcbiAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgICBsZXQgZW1zZzpzdHJpbmcgPSBcIkVycm9yIC0gTkJ5dGVzLmZyb21TdHJpbmc6IFwiICsgZTtcbiAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZW1zZyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuYnNpemU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGFrZXMgYSBbW0J1ZmZlcl1dLCB2ZXJpZmllcyBpdHMgbGVuZ3RoLCBhbmQgc3RvcmVzIGl0LiBcbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBUaGUgc2l6ZSBvZiB0aGUge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn1cbiAgICAgKi9cbiAgICBmcm9tQnVmZmVyKGJ1ZmY6QnVmZmVyKTpudW1iZXIge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYoYnVmZi5sZW5ndGggIT0gdGhpcy5ic2l6ZSl7XG4gICAgICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJCdWZmZXIgbGVuZ3RoIG11c3QgYmUgZXhhY3RseSBcIiArIHRoaXMuYnNpemUgKyBcIiBieXRlcy5cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmJ5dGVzID0gQnVmZmVyLmZyb20oYnVmZik7XG4gICAgICAgIH0gY2F0Y2goZSkge1xuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICAgIGxldCBlbXNnOnN0cmluZyA9IFwiRXJyb3IgLSBOQnl0ZXMuZnJvbUJ1ZmZlcjogXCIgKyBlO1xuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlbXNnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5ic2l6ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBzdG9yZWQge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0uXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSByZWZlcmVuY2UgdG8gdGhlIHN0b3JlZCB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfVxuICAgICAqL1xuICAgIHRvQnVmZmVyKCk6QnVmZmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnl0ZXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIGJhc2UtNTggc3RyaW5nIG9mIHRoZSBzdG9yZWQge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0uXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSBiYXNlLTU4IHN0cmluZyBvZiB0aGUgc3RvcmVkIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9XG4gICAgICovXG4gICAgdG9TdHJpbmcoKTpzdHJpbmcge1xuICAgICAgICByZXR1cm4gYmludG9vbHMuYnVmZmVyVG9CNTgodGhpcy50b0J1ZmZlcigpKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBpbnN0YW5jZSBvZiBbW05CeXRlc11dLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKCkge31cbn1cblxubGV0IG4yX2F2bTpvYmplY3QgPSB7XG4gICAgXCJibG9ja2NoYWluSURcIjogXCJtMzgzSnluNHo5a1lteU1hbWpId29FeG9jUlJWN29uZHNjaTg2MmJidjFGU3Jxdkg5XCIsXG4gICAgXCJhbGlhc1wiOiBcIlhcIixcbiAgICBcInZtXCI6IFwiYXZtXCJcbn07XG5cbmxldCBuMl9wbGF0Zm9ybTpvYmplY3QgPSAge1xuICAgIFwiYmxvY2tjaGFpbklEXCI6IFwiXCIsXG4gICAgXCJhbGlhc1wiOiBcIlBcIixcbiAgICBcInZtXCI6IFwicGxhdGZvcm1cIlxufTtcblxubGV0IG4yX2NvbnRyYWN0czpvYmplY3QgPSB7XG4gICAgXCJibG9ja2NoYWluSURcIjogXCJcIixcbiAgICBcImFsaWFzXCI6IFwiQ1wiLFxuICAgIFwidm1cIjogXCJjb250cmFjdHNcIlxufVxuXG5sZXQgbjQ5X2F2bSA9IE9iamVjdC5hc3NpZ24oe30sIG4yX2F2bSk7XG5uNDlfYXZtW1wiYmxvY2tjaGFpbklEXCJdID0gXCJ0SExpU3BDd1VRUVZaNlc0R01qVnp4NUppRlJnWkJybmlUQnFheEZMZHFCSktrOFlOXCI7XG5sZXQgbjQ5X3BsYXRmb3JtID0gT2JqZWN0LmFzc2lnbih7fSwgbjJfYXZtKTtcbmxldCBuNDlfY29udHJhY3RzID0gT2JqZWN0LmFzc2lnbih7fSwgbjJfYXZtKTtcblxuXG5sZXQgbjEyMzQ1X2F2bTpvYmplY3QgPSBPYmplY3QuYXNzaWduKHt9LCBuMl9hdm0pO1xubjEyMzQ1X2F2bVtcImJsb2NrY2hhaW5JRFwiXSA9IFwiZGRWM0d2ZG1kZVFrYXhMUm85TEg1QWJETnlVOWJEdTZTcVdhazd4OVVYTWJ1cGtzS1wiO1xubGV0IG4xMjM0NV9wbGF0Zm9ybSA9IE9iamVjdC5hc3NpZ24oe30sIG4yX2F2bSk7XG5sZXQgbjEyMzQ1X2NvbnRyYWN0cyA9IE9iamVjdC5hc3NpZ24oe30sIG4yX2F2bSk7XG5cbmV4cG9ydCBjbGFzcyBEZWZhdWx0cyB7XG4gICAgc3RhdGljIG5ldHdvcmsgPSB7XG4gICAgICAgIFwiMVwiOiB7fSwgLy91cGRhdGUgYmVmb3JlIG1haW5uZXRcbiAgICAgICAgLyogXG4gICAgICAgIFRoaXMgd2lsbCBiZSBzZXQgb24gdGVzdCBuZXR3b3JrLlxuICAgICAgICBcIjJcIjoge1xuICAgICAgICAgICAgXCJhdm1cIjogbjJfYXZtLFxuICAgICAgICAgICAgXCJYXCI6IG4yX2F2bSxcbiAgICAgICAgICAgIFwibTM4M0p5bjR6OWtZbXlNYW1qSHdvRXhvY1JSVjdvbmRzY2k4NjJiYnYxRlNycXZIOVwiOiBuMl9hdm0sXG4gICAgICAgICAgICBcInBsYXRmb3JtXCI6IG4yX3BsYXRmb3JtLFxuICAgICAgICAgICAgXCJQXCI6IG4yX3BsYXRmb3JtLFxuICAgICAgICAgICAgXCJCQ0lEMVwiOiBuMl9wbGF0Zm9ybSxcbiAgICAgICAgICAgIFwiY29udHJhY3RzXCI6IG4yX2NvbnRyYWN0cyxcbiAgICAgICAgICAgIFwiQ1wiOiBuMl9jb250cmFjdHMsXG4gICAgICAgICAgICBcIkJDSUQyXCI6IG4yX2NvbnRyYWN0c1xuICAgICAgICB9XG4gICAgICAgICovXG4gICAgICAgIFwiMTIzNDVcIjoge1xuICAgICAgICAgICAgXCJhdm1cIjogbjEyMzQ1X2F2bSxcbiAgICAgICAgICAgIFwiWFwiOiBuMTIzNDVfYXZtLFxuICAgICAgICAgICAgXCJkZFYzR3ZkbWRlUWtheExSbzlMSDVBYkROeVU5YkR1NlNxV2FrN3g5VVhNYnVwa3NLXCI6IG4xMjM0NV9hdm0sXG4gICAgICAgICAgICBcInBsYXRmb3JtXCI6IG4xMjM0NV9wbGF0Zm9ybSxcbiAgICAgICAgICAgIFwiUFwiOiBuMTIzNDVfcGxhdGZvcm0sXG4gICAgICAgICAgICBcIkJDSUQxXCI6IG4xMjM0NV9wbGF0Zm9ybSxcbiAgICAgICAgICAgIFwiY29udHJhY3RzXCI6IG4xMjM0NV9jb250cmFjdHMsXG4gICAgICAgICAgICBcIkNcIjogbjEyMzQ1X2NvbnRyYWN0cyxcbiAgICAgICAgICAgIFwiQkNJRDJcIjogbjEyMzQ1X2NvbnRyYWN0c1xuICAgICAgICB9XG4gICAgfTtcbn0iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFJQSxvQ0FBaUM7QUFDakMsOENBQXNCO0FBRXRCLDBEQUFtQztBQUluQzs7R0FFRztBQUNILE1BQU0sUUFBUSxHQUFHLGtCQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7QUFFeEM7O0dBRUc7QUFDSCxNQUFhLG1CQUFtQjtDQU0vQjtBQU5ELGtEQU1DO0FBRUQ7O0dBRUc7QUFDSCxNQUFzQixPQUFPO0lBcUN6Qjs7OztPQUlHO0lBQ0gsWUFBWSxJQUFlLEVBQUUsT0FBYztRQXJDM0M7Ozs7V0FJRztRQUNILGVBQVUsR0FBRyxDQUFDLE9BQWMsRUFBRSxFQUFFO1lBQzVCLElBQUcsSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLE9BQU8sRUFBQztnQkFDbkMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxFQUFFLEdBQUcsWUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ2hDO2lCQUFNO2dCQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO2dCQUN2QixJQUFJLENBQUMsRUFBRSxHQUFHLFlBQUUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDdEM7UUFDTCxDQUFDLENBQUE7UUFFRDs7V0FFRztRQUNILGVBQVUsR0FBRyxHQUFZLEVBQUU7WUFDdkIsT0FBTyxJQUFJLENBQUMsT0FBTyxD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QUM7QUFFRixJQUFJLFlBQVksR0FBVTtJQUN0QixjQUFjLEVBQUUsRUFBRTtJQUNsQixPQUFPLEVBQUUsR0FBRztJQUNaLElBQUksRUFBRSxXQUFXO0NBQ3BCLENBQUE7QUFFRCxJQUFJLFVBQVUsR0FBVSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNsRCxVQUFVLENBQUMsY0FBYyxDQUFDLEdBQUcsbURBQW1ELENBQUM7QUFDakYsSUFBSSxlQUFlLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDckQsZUFBZSxDQUFDLGNBQWMsQ0FBQyxHQUFHLHVDQUF1QyxDQUFDO0FBQzFFLElBQUksZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFDdkQsZUFBZSxDQUFDLGNBQWMsQ0FBQyxHQUFHLG1EQUFtRCxDQUFDO0FBRXRGLE1BQWEsUUFBUTs7QUFBckIsNEJBNkJDO0FBNUJVLGdCQUFPLEdBQUc7SUFDYixHQUFHLEVBQUUsRUFBRTtJQUNQOzs7Ozs7Ozs7Ozs7O01BYUU7SUFDRixPQUFPLEVBQUU7UUFDTCxLQUFLLEVBQUUsVUFBVTtRQUNqQixHQUFHLEVBQUUsVUFBVTtRQUNmLG1EQUFtRCxFQUFFLFVBQVU7UUFDL0QsVUFBVSxFQUFFLGVBQWU7UUFDM0IsR0FBRyxFQUFFLGVBQWU7UUFDcEIsdUNBQXVDLEVBQUUsZUFBZTtRQUN4RCxXQUFXLEVBQUUsZ0JBQWdCO1FBQzdCLEdBQUcsRUFBRSxnQkFBZ0I7UUFDckIsbURBQW1ELEVBQUUsZ0JBQWdCO0tBQ3hFO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBVdGlsc1xuICovXG5pbXBvcnQgU2xvcGVzQ29yZSBmcm9tICcuLi9zbG9wZXMnO1xuaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSBcImJ1ZmZlci9cIjtcbmltcG9ydCBEQiBmcm9tIFwiLi9kYlwiO1xuaW1wb3J0IHsgU3RvcmVBUEkgfSBmcm9tICdzdG9yZTInO1xuaW1wb3J0IEJpblRvb2xzICBmcm9tICcuL2JpbnRvb2xzJztcbmltcG9ydCB7IENsaWVudFJlcXVlc3QgfSBmcm9tIFwiaHR0cFwiO1xuaW1wb3J0IHsgQXhpb3NSZXF1ZXN0Q29uZmlnIH0gZnJvbSAnYXhpb3MnO1xuXG4vKipcbiAqIEBpZ25vcmVcbiAqL1xuY29uc3QgYmludG9vbHMgPSBCaW5Ub29scy5nZXRJbnN0YW5jZSgpO1xuXG4vKipcbiAqIFJlc3BvbnNlIGRhdGEgZm9yIEhUVFAgcmVxdWVzdHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXF1ZXN0UmVzcG9uc2VEYXRhIHtcbiAgICBkYXRhOiBzdHJpbmcgfCBvYmplY3QgfCBBcnJheTxvYmplY3Q+O1xuICAgIGhlYWRlcnM6b2JqZWN0O1xuICAgIHN0YXR1czogbnVtYmVyO1xuICAgIHN0YXR1c1RleHQ6IHN0cmluZztcbiAgICByZXF1ZXN0OkNsaWVudFJlcXVlc3QgfCBYTUxIdHRwUmVxdWVzdDtcbn1cblxuLyoqXG4gKiBBYnN0cmFjdCBjbGFzcyBkZWZpbmluZyBhIGdlbmVyaWMgZW5kcG9pbnQgdGhhdCBhbGwgZW5kcG9pbnRzIG11c3QgaW1wbGVtZW50IChleHRlbmQpLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVBJQmFzZSB7XG4gICAgcHJvdGVjdGVkIGNvcmU6U2xvcGVzQ29yZTtcbiAgICBwcm90ZWN0ZWQgYmFzZXVybDpzdHJpbmc7XG4gICAgcHJvdGVjdGVkIGRiOlN0b3JlQVBJO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgcGF0aCBvZiB0aGUgQVBJcyBiYXNldXJsLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBiYXNldXJsIFBhdGggb2YgdGhlIEFQSXMgYmFzZXVybCAtIGV4OiBcIi9leHQvYmMvYXZtXCJcbiAgICAgKi9cbiAgICBzZXRCYXNlVVJMID0gKGJhc2V1cmw6c3RyaW5nKSA9PiB7XG4gICAgICAgIGlmKHRoaXMuZGIgJiYgdGhpcy5iYXNldXJsICE9PSBiYXNldXJsKXtcbiAgICAgICAgICAgIGxldCBiYWNrdXAgPSB0aGlzLmRiLmdldEFsbCgpO1xuICAgICAgICAgICAgdGhpcy5kYi5jbGVhckFsbCgpO1xuICAgICAgICAgICAgdGhpcy5iYXNldXJsID0gYmFzZXVybDtcbiAgICAgICAgICAgIHRoaXMuZGIgPSBEQi5nZXROYW1lc3BhY2UoYmFzZXVybCk7XG4gICAgICAgICAgICB0aGlzLmRiLnNldEFsbChiYWNrdXAsIHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5iYXNldXJsID0gYmFzZXVybDtcbiAgICAgICAgICAgIHRoaXMuZGIgPSBEQi5nZXROYW1lc3BhY2UoYmFzZXVybCk7XG4gICAgICAgIH1cbiAgICB9IFxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYmFzZXVybCdzIHBhdGguIFxuICAgICAqL1xuICAgIGdldEJhc2VVUkwgPSAoKSA6IHN0cmluZyA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2V1cmw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYmFzZXVybCdzIGRhdGFiYXNlLlxuICAgICAqL1xuICAgIGdldERCID0gKCk6U3RvcmVBUEkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kYjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gY29yZSBSZWZlcmVuY2UgdG8gdGhlIFNsb3BlcyBpbnN0YW5jZSB1c2luZyB0aGlzIGJhc2V1cmxcbiAgICAgKiBAcGFyYW0gYmFzZXVybCBQYXRoIHRvIHRoZSBiYXNldXJsIC0gZXg6IFwiL2V4dC9iYy9hdm1cIlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGNvcmU6U2xvcGVzQ29yZSwgYmFzZXVybDpzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jb3JlID0gY29yZTtcbiAgICAgICAgdGhpcy5zZXRCYXNlVVJMKGJhc2V1cmwpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEpSUENBUEkgZXh0ZW5kcyBBUElCYXNlIHtcbiAgICBwcm90ZWN0ZWQganJwY1ZlcnNpb246c3RyaW5nID0gXCIyLjBcIjtcbiAgICBwcm90ZWN0ZWQgcnBjaWQgPSAxO1xuICAgIGNhbGxNZXRob2QgPSBhc3luYyAobWV0aG9kOnN0cmluZywgcGFyYW1zPzpBcnJheTxvYmplY3Q+IHwgb2JqZWN0LCBiYXNldXJsPzpzdHJpbmcpOlByb21pc2U8UmVxdWVzdFJlc3BvbnNlRGF0YT4gPT4ge1xuICAgICAgICBsZXQgZXAgPSBiYXNldXJsID8gYmFzZXVybCA6IHRoaXMuYmFzZXVybDtcbiAgICAgICAgbGV0IHJwYzpvYmplY3QgPSB7fTtcbiAgICAgICAgcnBjW1wiaWRcIl0gPSB0aGlzLnJwY2lkO1xuICAgICAgICBycGNbXCJtZXRob2RcIl0gPSBtZXRob2Q7XG5cbiAgICAgICAgLy8gU2V0IHBhcmFtZXRlcnMgaWYgZXhpc3RzXG4gICAgICAgIGlmKHBhcmFtcyl7XG4gICAgICAgICAgICBycGNbJ3BhcmFtcyddID0gcGFyYW1zO1xuICAgICAgICB9IGVsc2UgaWYodGhpcy5qcnBjVmVyc2lvbiA9PSBcIjEuMFwiKXtcbiAgICAgICAgICAgIHJwY1tcInBhcmFtc1wiXSA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYodGhpcy5qcnBjVmVyc2lvbiAhPSBcIjEuMFwiKSB7XG4gICAgICAgICAgICBycGNbXCJqc29ucnBjXCJdID0gdGhpcy5qcnBjVmVyc2lvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBoZWFkZXJzOm9iamVjdCA9IHtcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD1VVEYtOFwifTtcblxuICAgICAgICBsZXQgYXhDb25mOkF4aW9zUmVxdWVzdENvbmZpZyA9IHtcbiAgICAgICAgICAgIGJhc2VVUkw6dGhpcy5jb3JlLmdldFByb3RvY29sKCkrXCI6Ly9cIit0aGlzLmNvcmUuZ2V0SVAoKStcIjpcIit0aGlzLmNvcmUuZ2V0UG9ydCgpLFxuICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbidcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gdGhpcy5jb3JlLnBvc3QoZXAsIHt9LCBKU09OLnN0cmluZ2lmeShycGMpLCBoZWFkZXJzLCBheENvbmYpLnRoZW4oIChyZXNwOlJlcXVlc3RSZXNwb25zZURhdGEpID0+IHtcbiAgICAgICAgICAgIGlmKHJlc3Auc3RhdHVzID49IDIwMCAmJiByZXNwLnN0YXR1cyA8IDMwMCl7XG4gICAgICAgICAgICAgICAgdGhpcy5ycGNpZCArPSAxO1xuICAgICAgICAgICAgICAgIGlmKHR5cGVvZiByZXNwLmRhdGEgPT09IFwic3RyaW5nXCIpe1xuICAgICAgICAgICAgICAgICAgICByZXNwLmRhdGEgPSBKU09OLnBhcnNlKHJlc3AuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZih0eXBlb2YgcmVzcC5kYXRhID09PSAnb2JqZWN0JyAmJiAnZXJyb3InIGluIHJlc3AuZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFcnJvciByZXR1cm5lZDogXCIgKyBKU09OLnN0cmluZ2lmeShyZXNwLmRhdGEpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3A7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gICBcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHJwY2lkLCBhIHN0cmljdGx5LWluY3JlYXNpbmcgbnVtYmVyLCBzdGFydGluZyBmcm9tIDEsIGluZGljYXRpbmcgdGhlIG5leHQgcmVxdWVzdCBJRCB0aGF0IHdpbGwgYmUgc2VudC5cbiAgICAgKi9cbiAgICBnZXRSUENJRCA9ICgpOm51bWJlciA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJwY2lkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBjb3JlIFJlZmVyZW5jZSB0byB0aGUgU2xvcGVzIGluc3RhbmNlIHVzaW5nIHRoaXMgZW5kcG9pbnRcbiAgICAgKiBAcGFyYW0gYmFzZXVybCBQYXRoIG9mIHRoZSBBUElzIGJhc2V1cmwgLSBleDogXCIvZXh0L2JjL2F2bVwiXG4gICAgICogQHBhcmFtIGpycGNWZXJzaW9uIFRoZSBqcnBjIHZlcnNpb24gdG8gdXNlLCBkZWZhdWx0IFwiMi4wXCIuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoY29yZTpTbG9wZXNDb3JlLCBiYXNldXJsOnN0cmluZywganJwY1ZlcnNpb246c3RyaW5nID0gXCIyLjBcIikge1xuICAgICAgICBzdXBlcihjb3JlLCBiYXNldXJsKTtcbiAgICAgICAgdGhpcy5qcnBjVmVyc2lvbiA9IGpycGNWZXJzaW9uO1xuICAgICAgICB0aGlzLnJwY2lkID0gMTtcbiAgICB9XG59XG5cbi8qKlxuICogQ2xhc3MgZm9yIHJlcHJlc2VudGluZyBhIHByaXZhdGUgYW5kIHB1YmxpYyBrZXlwYWlyIGluIFNsb3Blcy4gXG4gKiBBbGwgQVBJcyB0aGF0IG5lZWQga2V5IHBhaXJzIHNob3VsZCBleHRlbmQgb24gdGhpcyBjbGFzcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEtleVBhaXIge1xuICAgIHByb3RlY3RlZCBwdWJrOkJ1ZmZlcjtcbiAgICBwcm90ZWN0ZWQgcHJpdms6QnVmZmVyO1xuICAgIHByb3RlY3RlZCBjaGFpbmlkOnN0cmluZyA9IFwiXCI7XG5cbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZXMgYSBuZXcga2V5cGFpci5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gZW50cm9weSBPcHRpb25hbCBwYXJhbWV0ZXIgdGhhdCBtYXkgYmUgbmVjZXNzYXJ5IHRvIHByb2R1Y2Ugc2VjdXJlIGtleXNcbiAgICAgKi9cbiAgICBnZW5lcmF0ZUtleTooZW50cm9weT86QnVmZmVyKSA9PiB2b2lkO1xuICAgIC8qKlxuICAgICAqIEltcG9ydHMgYSBwcml2YXRlIGtleSBhbmQgZ2VuZXJhdGVzIHRoZSBhcHByb3ByaWF0ZSBwdWJsaWMga2V5LlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBwcml2ayBBIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9IHJlcHJlc2VudGluZyB0aGUgcHJpdmF0ZSBrZXkgXG4gICAgICogXG4gICAgICogQHJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBmYWlsdXJlXG4gICAgICovXG4gICAgaW1wb3J0S2V5Oihwcml2azpCdWZmZXIpID0+IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBUYWtlcyBhIG1lc3NhZ2UsIHNpZ25zIGl0LCBhbmQgcmV0dXJucyB0aGUgc2lnbmF0dXJlLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBtc2cgVGhlIG1lc3NhZ2UgdG8gc2lnblxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0gY29udGFpbmluZyB0aGUgc2lnbmF0dXJlXG4gICAgICovXG4gICAgc2lnbjoobXNnOkJ1ZmZlcikgPT4gQnVmZmVyO1xuXG4gICAgLyoqXG4gICAgICogUmVjb3ZlcnMgdGhlIHB1YmxpYyBrZXkgb2YgYSBtZXNzYWdlIHNpZ25lciBmcm9tIGEgbWVzc2FnZSBhbmQgaXRzIGFzc29jaWF0ZWQgc2lnbmF0dXJlLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBtc2cgVGhlIG1lc3NhZ2UgdGhhdCdzIHNpZ25lZFxuICAgICAqIEBwYXJhbSBzaWcgVGhlIHNpZ25hdHVyZSB0aGF0J3Mgc2lnbmVkIG9uIHRoZSBtZXNzYWdlXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfSBjb250YWluaW5nIHRoZSBwdWJsaWMga2V5IG9mIHRoZSBzaWduZXJcbiAgICAgKi9cbiAgICByZWNvdmVyOihtc2c6QnVmZmVyLCBzaWc6QnVmZmVyKSA9PiBCdWZmZXI7XG5cbiAgICAvKipcbiAgICAgKiBWZXJpZmllcyB0aGF0IHRoZSBwcml2YXRlIGtleSBhc3NvY2lhdGVkIHdpdGggdGhlIHByb3ZpZGVkIHB1YmxpYyBrZXkgcHJvZHVjZXMgdGhlIHNpZ25hdHVyZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UuXG4gICAgICogXG4gICAgICogQHBhcmFtIG1zZyBUaGUgbWVzc2FnZSBhc3NvY2lhdGVkIHdpdGggdGhlIHNpZ25hdHVyZVxuICAgICAqIEBwYXJhbSBzaWcgVGhlIHNpZ25hdHVyZSBvZiB0aGUgc2lnbmVkIG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcHViayBUaGUgcHVibGljIGtleSBhc3NvY2lhdGVkIHdpdGggdGhlIG1lc3NhZ2Ugc2lnbmF0dXJlXG4gICAgICogXG4gICAgICogQHJldHVybnMgVHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBmYWlsdXJlXG4gICAgICovXG4gICAgdmVyaWZ5Oihtc2c6QnVmZmVyLCBzaWc6QnVmZmVyLCBwdWJrOkJ1ZmZlcikgPT4gYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIHByaXZhdGUga2V5LlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0gY29udGFpbmluZyB0aGUgcHJpdmF0ZSBrZXlcbiAgICAgKi9cbiAgICBnZXRQcml2YXRlS2V5ID0gKCk6QnVmZmVyID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJpdms7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgcHVibGljIGtleS5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9IGNvbnRhaW5pbmcgdGhlIHB1YmxpYyBrZXlcbiAgICAgKi9cbiAgICBnZXRQdWJsaWNLZXkgPSAoKTpCdWZmZXIgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wdWJrO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHByaXZhdGUga2V5LlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwdWJsaWMga2V5XG4gICAgICovXG4gICAgZ2V0UHJpdmF0ZUtleVN0cmluZzooKSA9PiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBwdWJsaWMga2V5LlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwdWJsaWMga2V5XG4gICAgICovXG4gICAgZ2V0UHVibGljS2V5U3RyaW5nOigpID0+IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGFkZHJlc3MuXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfSAgcmVwcmVzZW50YXRpb24gb2YgdGhlIGFkZHJlc3NcbiAgICAgKi9cbiAgICBnZXRBZGRyZXNzOigpID0+IEJ1ZmZlcjtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGFkZHJlc3MncyBzdHJpbmcgcmVwcmVzZW50YXRpb24uXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGFkZHJlc3NcbiAgICAgKi9cbiAgICBnZXRBZGRyZXNzU3RyaW5nOigpID0+IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGNoYWluSUQgYXNzb2NpYXRlZCB3aXRoIHRoaXMga2V5LlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIFRoZSBbW0tleVBhaXJdXSdzIGNoYWluSURcbiAgICAgKi9cbiAgICBnZXRDaGFpbklEID0gKCk6c3RyaW5nID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hhaW5pZFxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHRoZSBjaGFpbklEIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGtleS5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gY2hhaW5pZCBTdHJpbmcgZm9yIHRoZSBjaGFpbklEXG4gICAgICovXG4gICAgc2V0Q2hhaW5JRCA9IChjaGFpbmlkOnN0cmluZyk6dm9pZCA9PiB7XG4gICAgICAgIHRoaXMuY2hhaW5pZCA9IGNoYWluaWQ7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoY2hhaW5pZDpzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jaGFpbmlkID0gY2hhaW5pZFxuICAgIH1cbn1cblxuLyoqXG4gKiBDbGFzcyBmb3IgcmVwcmVzZW50aW5nIGEga2V5IGNoYWluIGluIFNsb3Blcy4gXG4gKiBBbGwgZW5kcG9pbnRzIHRoYXQgbmVlZCBrZXkgY2hhaW5zIHNob3VsZCBleHRlbmQgb24gdGhpcyBjbGFzcy5cbiAqIFxuICogQHR5cGVwYXJhbSBLUENsYXNzIGV4dGVuZGluZyBbW0tleVBhaXJdXSB3aGljaCBpcyB1c2VkIGFzIHRoZSBrZXkgaW4gW1tLZXlDaGFpbl1dXG4gKi9cbmV4cG9ydCBjbGFzcyBLZXlDaGFpbjxLUENsYXNzIGV4dGVuZHMgS2V5UGFpcj4ge1xuICAgIHByb3RlY3RlZCBrZXlzOntbYWRkcmVzczogc3RyaW5nXTogS1BDbGFzc30gPSB7fTtcbiAgICBwcm90ZWN0ZWQgY2hhaW5pZDpzdHJpbmcgPSBcIlwiO1xuXG4gICAgLyoqXG4gICAgICogTWFrZXMgYSBuZXcgW1tLZXlQYWlyXV0sIHJldHVybnMgdGhlIGFkZHJlc3MuXG4gICAgICogXG4gICAgICogQHBhcmFtIGVudHJvcHkgT3B0aW9uYWwgcGFyYW1ldGVyIHRoYXQgbWF5IGJlIG5lY2Vzc2FyeSB0byBwcm9kdWNlIHNlY3VyZSBrZXlzXG4gICAgICogXG4gICAgICogQHJldHVybnMgQWRkcmVzcyBvZiB0aGUgbmV3IFtbS2V5UGFpcl1dXG4gICAgICovXG4gICAgbWFrZUtleTooZW50cm9weT86QnVmZmVyKSA9PiBCdWZmZXI7XG5cbiAgICAvKipcbiAgICAgKiBHaXZlbiBhIHByaXZhdGUga2V5LCBtYWtlcyBhIG5ldyBbW0tleVBhaXJdXSwgcmV0dXJucyB0aGUgYWRkcmVzcy5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gcHJpdmsgQSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfSByZXByZXNlbnRpbmcgdGhlIHByaXZhdGUga2V5IFxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEFkZHJlc3Mgb2YgdGhlIG5ldyBbW0tleVBhaXJdXVxuICAgICAqL1xuICAgIGltcG9ydEtleToocHJpdms6QnVmZmVyKSA9PiBCdWZmZXI7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFuIGFycmF5IG9mIGFkZHJlc3NlcyBzdG9yZWQgaW4gdGhlIFtbS2V5Q2hhaW5dXS5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfSAgcmVwcmVzZW50YXRpb25zIG9mIHRoZSBhZGRyZXNzZXNcbiAgICAgKi9cbiAgICBnZXRBZGRyZXNzZXMgPSAoKTpBcnJheTxCdWZmZXI+ID0+IHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5rZXlzKS5tYXAoa3AgPT4ga3AuZ2V0QWRkcmVzcygpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFuIGFycmF5IG9mIGFkZHJlc3NlcyBzdG9yZWQgaW4gdGhlIFtbS2V5Q2hhaW5dXS5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBzdHJpbmcgcmVwcmVzZW50YXRpb25zIG9mIHRoZSBhZGRyZXNzZXNcbiAgICAgKi9cbiAgICBnZXRBZGRyZXNzU3RyaW5ncyA9ICgpOkFycmF5PHN0cmluZz4gPT4ge1xuICAgICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLmtleXMpLm1hcChrcCA9PiBrcC5nZXRBZGRyZXNzU3RyaW5nKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgdGhlIGtleSBwYWlyIHRvIHRoZSBsaXN0IG9mIHRoZSBrZXlzIG1hbmFnZWQgaW4gdGhlIFtbS2V5Q2hhaW5dXS5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gbmV3S2V5IEEga2V5IHBhaXIgb2YgdGhlIGFwcHJvcHJpYXRlIGNsYXNzIHRvIGJlIGFkZGVkIHRvIHRoZSBbW0tleUNoYWluXV1cbiAgICAgKi9cbiAgICBhZGRLZXkgPSAobmV3S2V5OktQQ2xhc3MpID0+IHtcbiAgICAgICAgbmV3S2V5LnNldENoYWluSUQodGhpcy5jaGFpbmlkKTtcbiAgICAgICAgdGhpcy5rZXlzW25ld0tleS5nZXRBZGRyZXNzKCkudG9TdHJpbmcoXCJoZXhcIildID0gbmV3S2V5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgdGhlIGtleSBwYWlyIGZyb20gdGhlIGxpc3Qgb2YgdGhleSBrZXlzIG1hbmFnZWQgaW4gdGhlIFtbS2V5Q2hhaW5dXS5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0ga2V5IEEge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0gZm9yIHRoZSBhZGRyZXNzIG9yIEtQQ2xhc3MgdG8gcmVtb3ZlXG4gICAgICogXG4gICAgICogQHJldHVybnMgVGhlIGJvb2xlYW4gdHJ1ZSBpZiBhIGtleSB3YXMgcmVtb3ZlZC5cbiAgICAgKi9cbiAgICByZW1vdmVLZXkgPSAoa2V5OktQQ2xhc3MgfCBCdWZmZXIpID0+IHtcbiAgICAgICAgbGV0IGthZGRyOnN0cmluZztcbiAgICAgICAgaWYoa2V5IGluc3RhbmNlb2YgQnVmZmVyKXtcbiAgICAgICAgICAgIGthZGRyID0ga2V5LnRvU3RyaW5nKFwiaGV4XCIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAga2FkZHIgPSBrZXkuZ2V0QWRkcmVzcygpLnRvU3RyaW5nKFwiaGV4XCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmKGthZGRyIGluIHRoaXMua2V5cyl7XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5rZXlzW2thZGRyXTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZXJlIGlzIGEga2V5IGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJvdmlkZWQgYWRkcmVzcy5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gYWRkcmVzcyBUaGUgYWRkcmVzcyB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIHRoZSBrZXlzIGRhdGFiYXNlXG4gICAgICogXG4gICAgICogQHJldHVybnMgVHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBpZiBub3QgZm91bmRcbiAgICAgKi9cbiAgICBoYXNLZXkgPSAoYWRkcmVzczpCdWZmZXIpOmJvb2xlYW4gPT4ge1xuICAgICAgICByZXR1cm4gKGFkZHJlc3MudG9TdHJpbmcoXCJoZXhcIikgaW4gdGhpcy5rZXlzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBbW0tleVBhaXJdXSBsaXN0ZWQgdW5kZXIgdGhlIHByb3ZpZGVkIGFkZHJlc3NcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gYWRkcmVzcyBUaGUge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0gb2YgdGhlIGFkZHJlc3MgdG8gcmV0cmlldmUgZnJvbSB0aGUga2V5cyBkYXRhYmFzZVxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEgcmVmZXJlbmNlIHRvIHRoZSBbW0tleVBhaXJdXSBpbiB0aGUga2V5cyBkYXRhYmFzZVxuICAgICAqL1xuICAgIGdldEtleSA9IChhZGRyZXNzOkJ1ZmZlcik6IEtQQ2xhc3MgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5rZXlzW2FkZHJlc3MudG9TdHJpbmcoXCJoZXhcIildO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGNoYWluSUQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgW1tLZXlDaGFpbl1dLlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIFRoZSBbW0tleUNoYWluXV0ncyBjaGFpbklEXG4gICAgICovXG4gICAgZ2V0Q2hhaW5JRCA9ICgpOnN0cmluZyA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNoYWluaWRcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB0aGUgY2hhaW5JRCBhc3NvY2lhdGVkIHdpdGggdGhpcyBbW0tleUNoYWluXV0gYW5kIGFsbCBhc3NvY2lhdGVkIGtleXBhaXJzLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBjaGFpbmlkIFN0cmluZyBmb3IgdGhlIGNoYWluSURcbiAgICAgKi9cbiAgICBzZXRDaGFpbklEID0gKGNoYWluaWQ6c3RyaW5nKTp2b2lkID0+IHtcbiAgICAgICAgdGhpcy5jaGFpbmlkID0gY2hhaW5pZDtcbiAgICAgICAgZm9yKGxldCBhZGRyZXNzIGluIHRoaXMua2V5cyl7XG4gICAgICAgICAgICB0aGlzLmtleXNbYWRkcmVzc10uc2V0Q2hhaW5JRChjaGFpbmlkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgaW5zdGFuY2Ugb2YgW1tLZXlDaGFpbl1dLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGNoYWluaWQ6c3RyaW5nKSB7XG4gICAgICAgIHRoaXMuY2hhaW5pZCA9IGNoYWluaWQ7XG4gICAgfVxufVxuXG4vKipcbiAqIEFic3RyYWN0IGNsYXNzIHRoYXQgaW1wbGVtZW50cyBiYXNpYyBmdW5jdGlvbmFsaXR5IGZvciBtYW5hZ2luZyBhIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9IG9mIGFuIGV4YWN0IGxlbmd0aC5cbiAqIFxuICogQ3JlYXRlIGEgY2xhc3MgdGhhdCBleHRlbmRzIHRoaXMgb25lIGFuZCBvdmVycmlkZSBic2l6ZSB0byBtYWtlIGl0IHZhbGlkYXRlIGZvciBleGFjdGx5IHRoZSBjb3JyZWN0IGxlbmd0aC5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5CeXRlcyB7XG4gICAgcHJvdGVjdGVkIGJ5dGVzOkJ1ZmZlcjtcbiAgICBwcm90ZWN0ZWQgYnNpemU6bnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfS5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBUaGUgZXhhY3QgbGVuZ3RoIHJlcXVpcmVtZW50IG9mIHRoaXMgY2xhc3NcbiAgICAgKi9cbiAgICBnZXRTaXplID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ic2l6ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUYWtlcyBhIGJhc2UtNTggZW5jb2RlZCBzdHJpbmcsIHZlcmlmaWVzIGl0cyBsZW5ndGgsIGFuZCBzdG9yZXMgaXQuXG4gICAgICogXG4gICAgICogQHJldHVybnMgVGhlIHNpemUgb2YgdGhlIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9XG4gICAgICovXG4gICAgZnJvbVN0cmluZyhiNThzdHI6c3RyaW5nKTpudW1iZXIge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5mcm9tQnVmZmVyKGJpbnRvb2xzLmI1OFRvQnVmZmVyKGI1OHN0cikpO1xuICAgICAgICB9IGNhdGNoKGUpe1xuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICAgIGxldCBlbXNnOnN0cmluZyA9IFwiRXJyb3IgLSBOQnl0ZXMuZnJvbVN0cmluZzogXCIgKyBlO1xuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlbXNnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5ic2l6ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUYWtlcyBhIFtbQnVmZmVyXV0sIHZlcmlmaWVzIGl0cyBsZW5ndGgsIGFuZCBzdG9yZXMgaXQuIFxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIFRoZSBzaXplIG9mIHRoZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfVxuICAgICAqL1xuICAgIGZyb21CdWZmZXIoYnVmZjpCdWZmZXIpOm51bWJlciB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZihidWZmLmxlbmd0aCAhPSB0aGlzLmJzaXplKXtcbiAgICAgICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkJ1ZmZlciBsZW5ndGggbXVzdCBiZSBleGFjdGx5IFwiICsgdGhpcy5ic2l6ZSArIFwiIGJ5dGVzLlwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuYnl0ZXMgPSBCdWZmZXIuZnJvbShidWZmKTtcbiAgICAgICAgfSBjYXRjaChlKSB7XG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgICAgbGV0IGVtc2c6c3RyaW5nID0gXCJFcnJvciAtIE5CeXRlcy5mcm9tQnVmZmVyOiBcIiArIGU7XG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVtc2cpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmJzaXplO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHN0b3JlZCB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfS5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBIHJlZmVyZW5jZSB0byB0aGUgc3RvcmVkIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9XG4gICAgICovXG4gICAgdG9CdWZmZXIoKTpCdWZmZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5ieXRlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgYmFzZS01OCBzdHJpbmcgb2YgdGhlIHN0b3JlZCB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfS5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBIGJhc2UtNTggc3RyaW5nIG9mIHRoZSBzdG9yZWQge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn1cbiAgICAgKi9cbiAgICB0b1N0cmluZygpOnN0cmluZyB7XG4gICAgICAgIHJldHVybiBiaW50b29scy5idWZmZXJUb0I1OCh0aGlzLnRvQnVmZmVyKCkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGluc3RhbmNlIG9mIFtbTkJ5dGVzXV0uXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoKSB7fVxufVxuXG5sZXQgbjJfYXZtOm9iamVjdCA9IHtcbiAgICBcImJsb2NrY2hhaW5JRFwiOiBcIm0zODNKeW40ejlrWW15TWFtakh3b0V4b2NSUlY3b25kc2NpODYyYmJ2MUZTcnF2SDlcIixcbiAgICBcImFsaWFzXCI6IFwiWFwiLFxuICAgIFwidm1cIjogXCJhdm1cIlxufTtcblxubGV0IG4yX3BsYXRmb3JtOm9iamVjdCA9ICB7XG4gICAgXCJibG9ja2NoYWluSURcIjogXCJcIixcbiAgICBcImFsaWFzXCI6IFwiUFwiLFxuICAgIFwidm1cIjogXCJwbGF0Zm9ybVwiXG59O1xuXG5sZXQgbjJfY29udHJhY3RzOm9iamVjdCA9IHtcbiAgICBcImJsb2NrY2hhaW5JRFwiOiBcIlwiLFxuICAgIFwiYWxpYXNcIjogXCJDXCIsXG4gICAgXCJ2bVwiOiBcImNvbnRyYWN0c1wiXG59XG5cbmxldCBuMTIzNDVfYXZtOm9iamVjdCA9IE9iamVjdC5hc3NpZ24oe30sIG4yX2F2bSk7XG5uMTIzNDVfYXZtW1wiYmxvY2tjaGFpbklEXCJdID0gXCJpOEt0SzJLd0xpMW83V2FWQmJFS3BSTFB0QUVZYXlmb3B0cUFGWXhmUWdydXMxZzZtXCI7XG5sZXQgbjEyMzQ1X3BsYXRmb3JtID0gT2JqZWN0LmFzc2lnbih7fSwgbjJfcGxhdGZvcm0pO1xubjEyMzQ1X3BsYXRmb3JtW1wiYmxvY2tjaGFpbklEXCJdID0gXCIxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMUxwb1lZXCI7XG5sZXQgbjEyMzQ1X2NvbnRyYWN0cyA9IE9iamVjdC5hc3NpZ24oe30sIG4yX2NvbnRyYWN0cyk7XG5uMTIzNDVfcGxhdGZvcm1bXCJibG9ja2NoYWluSURcIl0gPSBcIk1USG9aQVAzZ0dIQjRjQVVwRkIxQ3VZbmgzdURvTWt0ZTZGakxiOVNuNUh4OEJrdmJcIjtcblxuZXhwb3J0IGNsYXNzIERlZmF1bHRzIHtcbiAgICBzdGF0aWMgbmV0d29yayA9IHtcbiAgICAgICAgXCIxXCI6IHt9LCAvL3VwZGF0ZSBiZWZvcmUgbWFpbm5ldFxuICAgICAgICAvKiBcbiAgICAgICAgVGhpcyB3aWxsIGJlIHNldCBvbiB0ZXN0IG5ldHdvcmsuXG4gICAgICAgIFwiMlwiOiB7XG4gICAgICAgICAgICBcImF2bVwiOiBuMl9hdm0sXG4gICAgICAgICAgICBcIlhcIjogbjJfYXZtLFxuICAgICAgICAgICAgXCJtMzgzSnluNHo5a1lteU1hbWpId29FeG9jUlJWN29uZHNjaTg2MmJidjFGU3Jxdkg5XCI6IG4yX2F2bSxcbiAgICAgICAgICAgIFwicGxhdGZvcm1cIjogbjJfcGxhdGZvcm0sXG4gICAgICAgICAgICBcIlBcIjogbjJfcGxhdGZvcm0sXG4gICAgICAgICAgICBcIkJDSUQxXCI6IG4yX3BsYXRmb3JtLFxuICAgICAgICAgICAgXCJjb250cmFjdHNcIjogbjJfY29udHJhY3RzLFxuICAgICAgICAgICAgXCJDXCI6IG4yX2NvbnRyYWN0cyxcbiAgICAgICAgICAgIFwiQkNJRDJcIjogbjJfY29udHJhY3RzXG4gICAgICAgIH1cbiAgICAgICAgKi9cbiAgICAgICAgXCIxMjM0NVwiOiB7XG4gICAgICAgICAgICBcImF2bVwiOiBuMTIzNDVfYXZtLFxuICAgICAgICAgICAgXCJYXCI6IG4xMjM0NV9hdm0sXG4gICAgICAgICAgICBcImk4S3RLMkt3TGkxbzdXYVZCYkVLcFJMUHRBRVlheWZvcHRxQUZZeGZRZ3J1czFnNm1cIjogbjEyMzQ1X2F2bSxcbiAgICAgICAgICAgIFwicGxhdGZvcm1cIjogbjEyMzQ1X3BsYXRmb3JtLFxuICAgICAgICAgICAgXCJQXCI6IG4xMjM0NV9wbGF0Zm9ybSxcbiAgICAgICAgICAgIFwiMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTFMcG9ZWVwiOiBuMTIzNDVfcGxhdGZvcm0sXG4gICAgICAgICAgICBcImNvbnRyYWN0c1wiOiBuMTIzNDVfY29udHJhY3RzLFxuICAgICAgICAgICAgXCJDXCI6IG4xMjM0NV9jb250cmFjdHMsXG4gICAgICAgICAgICBcIk1USG9aQVAzZ0dIQjRjQVVwRkIxQ3VZbmgzdURvTWt0ZTZGakxiOVNuNUh4OEJrdmJcIjogbjEyMzQ1X2NvbnRyYWN0c1xuICAgICAgICB9XG4gICAgfTtcbn0iXX0=

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc