projen
Version:
CDK for software projects
158 lines • 35.5 kB
JavaScript
;
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Yarnrc = exports.YarnWorkerPoolMode = exports.YarnWinLinkType = exports.YarnCacheMigrationMode = exports.YarnProgressBarStyle = exports.YarnPnpMode = exports.YarnPnpFallbackMode = exports.YarnNpmPublishAccess = exports.YarnNodeLinker = exports.YarnNmMode = exports.YarnNmHoistingLimit = exports.YarnLogFilterLevel = exports.YarnDefaultSemverRangePrefix = exports.YarnChecksumBehavior = void 0;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
const semver = require("semver");
const component_1 = require("../component");
const yaml_1 = require("../yaml");
/** https://yarnpkg.com/configuration/yarnrc#checksumBehavior */
var YarnChecksumBehavior;
(function (YarnChecksumBehavior) {
YarnChecksumBehavior["THROW"] = "throw";
YarnChecksumBehavior["UPDATE"] = "update";
YarnChecksumBehavior["RESET"] = "reset";
YarnChecksumBehavior["IGNORE"] = "ignore";
})(YarnChecksumBehavior || (exports.YarnChecksumBehavior = YarnChecksumBehavior = {}));
/** https://yarnpkg.com/configuration/yarnrc#defaultSemverRangePrefix */
var YarnDefaultSemverRangePrefix;
(function (YarnDefaultSemverRangePrefix) {
YarnDefaultSemverRangePrefix["CARET"] = "^";
YarnDefaultSemverRangePrefix["TILDE"] = "~";
YarnDefaultSemverRangePrefix["EMPTY_STRING"] = "";
})(YarnDefaultSemverRangePrefix || (exports.YarnDefaultSemverRangePrefix = YarnDefaultSemverRangePrefix = {}));
/** https://v3.yarnpkg.com/configuration/yarnrc#logFilters.0.level */
var YarnLogFilterLevel;
(function (YarnLogFilterLevel) {
YarnLogFilterLevel["INFO"] = "info";
YarnLogFilterLevel["WARNING"] = "warning";
YarnLogFilterLevel["ERROR"] = "error";
YarnLogFilterLevel["DISCARD"] = "discard";
})(YarnLogFilterLevel || (exports.YarnLogFilterLevel = YarnLogFilterLevel = {}));
/** https://yarnpkg.com/configuration/yarnrc#nmHoistingLimits */
var YarnNmHoistingLimit;
(function (YarnNmHoistingLimit) {
YarnNmHoistingLimit["DEPENDENCIES"] = "dependencies";
YarnNmHoistingLimit["NONE"] = "none";
YarnNmHoistingLimit["WORKSPACES"] = "workspaces";
})(YarnNmHoistingLimit || (exports.YarnNmHoistingLimit = YarnNmHoistingLimit = {}));
/** https://yarnpkg.com/configuration/yarnrc#nmMode */
var YarnNmMode;
(function (YarnNmMode) {
YarnNmMode["CLASSIC"] = "classic";
YarnNmMode["HARDLINKS_LOCAL"] = "hardlinks-local";
YarnNmMode["HARDLINKS_GLOBAL"] = "hardlinks-global";
})(YarnNmMode || (exports.YarnNmMode = YarnNmMode = {}));
/** https://yarnpkg.com/configuration/yarnrc#nodeLinker */
var YarnNodeLinker;
(function (YarnNodeLinker) {
YarnNodeLinker["PNP"] = "pnp";
YarnNodeLinker["PNPM"] = "pnpm";
YarnNodeLinker["NODE_MODULES"] = "node-modules";
})(YarnNodeLinker || (exports.YarnNodeLinker = YarnNodeLinker = {}));
/** https://yarnpkg.com/configuration/yarnrc#npmPublishAccess */
var YarnNpmPublishAccess;
(function (YarnNpmPublishAccess) {
YarnNpmPublishAccess["PUBLIC"] = "public";
YarnNpmPublishAccess["RESTRICTED"] = "restricted";
})(YarnNpmPublishAccess || (exports.YarnNpmPublishAccess = YarnNpmPublishAccess = {}));
/** https://yarnpkg.com/configuration/yarnrc#pnpFallbackMode */
var YarnPnpFallbackMode;
(function (YarnPnpFallbackMode) {
YarnPnpFallbackMode["NONE"] = "none";
YarnPnpFallbackMode["DEPENDENCIES_ONLY"] = "dependencies-only";
YarnPnpFallbackMode["ALL"] = "all";
})(YarnPnpFallbackMode || (exports.YarnPnpFallbackMode = YarnPnpFallbackMode = {}));
/** https://yarnpkg.com/configuration/yarnrc#pnpMode */
var YarnPnpMode;
(function (YarnPnpMode) {
YarnPnpMode["STRICT"] = "strict";
YarnPnpMode["LOOSE"] = "loose";
})(YarnPnpMode || (exports.YarnPnpMode = YarnPnpMode = {}));
/** https://yarnpkg.com/configuration/yarnrc#progressBarStyle */
var YarnProgressBarStyle;
(function (YarnProgressBarStyle) {
YarnProgressBarStyle["PATRICK"] = "patrick";
YarnProgressBarStyle["SIMBA"] = "simba";
YarnProgressBarStyle["JACK"] = "jack";
YarnProgressBarStyle["HOGSFATHER"] = "hogsfather";
YarnProgressBarStyle["DEFAULT"] = "default";
})(YarnProgressBarStyle || (exports.YarnProgressBarStyle = YarnProgressBarStyle = {}));
/** https://yarnpkg.com/configuration/yarnrc#cacheMigrationMode */
var YarnCacheMigrationMode;
(function (YarnCacheMigrationMode) {
YarnCacheMigrationMode["REQUIRED_ONLY"] = "requied-only";
YarnCacheMigrationMode["MATCH_SPEC"] = "match-spec";
YarnCacheMigrationMode["ALWAYS"] = "always";
})(YarnCacheMigrationMode || (exports.YarnCacheMigrationMode = YarnCacheMigrationMode = {}));
/** https://yarnpkg.com/configuration/yarnrc#winLinkType */
var YarnWinLinkType;
(function (YarnWinLinkType) {
YarnWinLinkType["JUNCTIONS"] = "junctions";
YarnWinLinkType["SYMLINKS"] = "symlinks";
})(YarnWinLinkType || (exports.YarnWinLinkType = YarnWinLinkType = {}));
var YarnWorkerPoolMode;
(function (YarnWorkerPoolMode) {
YarnWorkerPoolMode["ASYNC"] = "async";
YarnWorkerPoolMode["WORKERS"] = "workers";
})(YarnWorkerPoolMode || (exports.YarnWorkerPoolMode = YarnWorkerPoolMode = {}));
class Yarnrc extends component_1.Component {
constructor(project, version, options = {}) {
super(project);
this.validateOptionsForVersion(semver.major(version), options);
this.updateGitAttributes();
new yaml_1.YamlFile(project, ".yarnrc.yml", {
obj: options,
readonly: false,
});
}
updateGitAttributes() {
const { project } = this;
project.gitattributes.addAttributes("/.yarn/**", "linguist-vendored");
project.gitattributes.addAttributes("/.yarn/releases/*", "binary");
project.gitattributes.addAttributes("/.yarn/plugins/**/*", "binary");
project.gitattributes.addAttributes("/.pnp.*", "binary", "linguist-vendored");
}
validateOptionsForVersion(majorVersion, options) {
const removedInV4 = [
"ignoreCwd",
"lockfileFilename",
"pnpDataPath",
"preferAggregateCacheInfo",
];
const newInV4 = [
"cacheMigrationMode",
"httpsCaFilePath",
"enableConstraintsCheck",
"enableHardenedMode",
"enableInlineHunks",
"enableOfflineMode",
"injectEnvironmentFiles",
"winLinkType",
"preferReuse",
"taskPoolConcurrency",
"workerPoolMode",
"tsEnableAutoTypes",
];
if (majorVersion >= 4) {
const invalidOptions = Object.keys(options).filter((option) => removedInV4.includes(option));
if (invalidOptions.length > 0) {
throw new Error(`The following options are not available in Yarn >= 4: ${invalidOptions.join(", ")}`);
}
}
else {
const invalidOptions = Object.keys(options).filter((option) => newInV4.includes(option));
if (invalidOptions.length > 0) {
throw new Error(`The following options are only available in Yarn v4 and newer: ${invalidOptions.join(", ")}`);
}
if (options.checksumBehavior &&
options.checksumBehavior === YarnChecksumBehavior.RESET) {
throw new Error("The YarnChecksumBehavior.RESET is only available in Yarn v4 and newer.");
}
}
}
}
exports.Yarnrc = Yarnrc;
_a = JSII_RTTI_SYMBOL_1;
Yarnrc[_a] = { fqn: "projen.javascript.Yarnrc", version: "0.99.51" };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWFybnJjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2phdmFzY3JpcHQveWFybnJjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsaUNBQWlDO0FBQ2pDLDRDQUF5QztBQUV6QyxrQ0FBbUM7QUFFbkMsZ0VBQWdFO0FBQ2hFLElBQVksb0JBS1g7QUFMRCxXQUFZLG9CQUFvQjtJQUM5Qix1Q0FBZSxDQUFBO0lBQ2YseUNBQWlCLENBQUE7SUFDakIsdUNBQWUsQ0FBQTtJQUNmLHlDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFMVyxvQkFBb0Isb0NBQXBCLG9CQUFvQixRQUsvQjtBQUVELHdFQUF3RTtBQUN4RSxJQUFZLDRCQUlYO0FBSkQsV0FBWSw0QkFBNEI7SUFDdEMsMkNBQVcsQ0FBQTtJQUNYLDJDQUFXLENBQUE7SUFDWCxpREFBaUIsQ0FBQTtBQUNuQixDQUFDLEVBSlcsNEJBQTRCLDRDQUE1Qiw0QkFBNEIsUUFJdkM7QUFFRCxxRUFBcUU7QUFDckUsSUFBWSxrQkFLWDtBQUxELFdBQVksa0JBQWtCO0lBQzVCLG1DQUFhLENBQUE7SUFDYix5Q0FBbUIsQ0FBQTtJQUNuQixxQ0FBZSxDQUFBO0lBQ2YseUNBQW1CLENBQUE7QUFDckIsQ0FBQyxFQUxXLGtCQUFrQixrQ0FBbEIsa0JBQWtCLFFBSzdCO0FBc0JELGdFQUFnRTtBQUNoRSxJQUFZLG1CQUlYO0FBSkQsV0FBWSxtQkFBbUI7SUFDN0Isb0RBQTZCLENBQUE7SUFDN0Isb0NBQWEsQ0FBQTtJQUNiLGdEQUF5QixDQUFBO0FBQzNCLENBQUMsRUFKVyxtQkFBbUIsbUNBQW5CLG1CQUFtQixRQUk5QjtBQUVELHNEQUFzRDtBQUN0RCxJQUFZLFVBSVg7QUFKRCxXQUFZLFVBQVU7SUFDcEIsaUNBQW1CLENBQUE7SUFDbkIsaURBQW1DLENBQUE7SUFDbkMsbURBQXFDLENBQUE7QUFDdkMsQ0FBQyxFQUpXLFVBQVUsMEJBQVYsVUFBVSxRQUlyQjtBQUVELDBEQUEw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QUN6RSxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDOztBQXJGSCx3QkFzRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBzZW12ZXIgZnJvbSBcInNlbXZlclwiO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9qZWN0IH0gZnJvbSBcIi4uL3Byb2plY3RcIjtcbmltcG9ydCB7IFlhbWxGaWxlIH0gZnJvbSBcIi4uL3lhbWxcIjtcblxuLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjY2hlY2tzdW1CZWhhdmlvciAqL1xuZXhwb3J0IGVudW0gWWFybkNoZWNrc3VtQmVoYXZpb3Ige1xuICBUSFJPVyA9IFwidGhyb3dcIixcbiAgVVBEQVRFID0gXCJ1cGRhdGVcIixcbiAgUkVTRVQgPSBcInJlc2V0XCIsXG4gIElHTk9SRSA9IFwiaWdub3JlXCIsXG59XG5cbi8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2RlZmF1bHRTZW12ZXJSYW5nZVByZWZpeCAqL1xuZXhwb3J0IGVudW0gWWFybkRlZmF1bHRTZW12ZXJSYW5nZVByZWZpeCB7XG4gIENBUkVUID0gXCJeXCIsXG4gIFRJTERFID0gXCJ+XCIsXG4gIEVNUFRZX1NUUklORyA9IFwiXCIsXG59XG5cbi8qKiBodHRwczovL3YzLnlhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2xvZ0ZpbHRlcnMuMC5sZXZlbCAqL1xuZXhwb3J0IGVudW0gWWFybkxvZ0ZpbHRlckxldmVsIHtcbiAgSU5GTyA9IFwiaW5mb1wiLFxuICBXQVJOSU5HID0gXCJ3YXJuaW5nXCIsXG4gIEVSUk9SID0gXCJlcnJvclwiLFxuICBESVNDQVJEID0gXCJkaXNjYXJkXCIsXG59XG5cbi8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2xvZ0ZpbHRlcnMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgWWFybkxvZ0ZpbHRlciB7XG4gIHJlYWRvbmx5IGNvZGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRleHQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGxldmVsPzogWWFybkxvZ0ZpbHRlckxldmVsO1xuICByZWFkb25seSBwYXR0ZXJuPzogc3RyaW5nO1xufVxuXG4vKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNuZXR3b3JrU2V0dGluZ3MgKi9cbmV4cG9ydCBpbnRlcmZhY2UgWWFybk5ldHdvcmtTZXR0aW5nIHtcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIGh0dHBzQ2FGaWxlUGF0aCBpbiBZYXJuIHY0IGFuZCBuZXdlciAqL1xuICByZWFkb25seSBjYUZpbGVQYXRoPzogc3RyaW5nO1xuICByZWFkb25seSBodHRwc0NhRmlsZVBhdGg/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGVuYWJsZU5ldHdvcms/OiBib29sZWFuO1xuICByZWFkb25seSBodHRwUHJveHk/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGh0dHBzUHJveHk/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGh0dHBzS2V5RmlsZVBhdGg/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGh0dHBzQ2VydEZpbGVQYXRoPzogc3RyaW5nO1xufVxuXG4vKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNubUhvaXN0aW5nTGltaXRzICovXG5leHBvcnQgZW51bSBZYXJuTm1Ib2lzdGluZ0xpbWl0IHtcbiAgREVQRU5ERU5DSUVTID0gXCJkZXBlbmRlbmNpZXNcIixcbiAgTk9ORSA9IFwibm9uZVwiLFxuICBXT1JLU1BBQ0VTID0gXCJ3b3Jrc3BhY2VzXCIsXG59XG5cbi8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI25tTW9kZSAqL1xuZXhwb3J0IGVudW0gWWFybk5tTW9kZSB7XG4gIENMQVNTSUMgPSBcImNsYXNzaWNcIixcbiAgSEFSRExJTktTX0xPQ0FMID0gXCJoYXJkbGlua3MtbG9jYWxcIixcbiAgSEFSRExJTktTX0dMT0JBTCA9IFwiaGFyZGxpbmtzLWdsb2JhbFwiLFxufVxuXG4vKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNub2RlTGlua2VyICovXG5leHBvcnQgZW51bSBZYXJuTm9kZUxpbmtlciB7XG4gIFBOUCA9IFwicG5wXCIsXG4gIFBOUE0gPSBcInBucG1cIixcbiAgTk9ERV9NT0RVTEVTID0gXCJub2RlLW1vZHVsZXNcIixcbn1cblxuLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjbnBtUHVibGlzaEFjY2VzcyAqL1xuZXhwb3J0IGVudW0gWWFybk5wbVB1Ymxpc2hBY2Nlc3Mge1xuICBQVUJMSUMgPSBcInB1YmxpY1wiLFxuICBSRVNUUklDVEVEID0gXCJyZXN0cmljdGVkXCIsXG59XG5cbi8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI25wbVJlZ2lzdHJpZXMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgWWFybk5wbVJlZ2lzdHJ5IHtcbiAgcmVhZG9ubHkgbnBtQWx3YXlzQXV0aD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IG5wbUF1dGhJZGVudD86IHN0cmluZztcbiAgcmVhZG9ubHkgbnBtQXV0aFRva2VuPzogc3RyaW5nO1xufVxuXG4vKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNucG1TY29wZXMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgWWFybk5wbVNjb3BlIHtcbiAgcmVhZG9ubHkgbnBtUHVibGlzaFJlZ2lzdHJ5Pzogc3RyaW5nO1xuICByZWFkb25seSBucG1SZWdpc3RyeVNlcnZlcj86IHN0cmluZztcbiAgcmVhZG9ubHkgbnBtQWx3YXlzQXV0aD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IG5wbUF1dGhJZGVudD86IHN0cmluZztcbiAgcmVhZG9ubHkgbnBtQXV0aFRva2VuPzogc3RyaW5nO1xufVxuXG4vKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNwYWNrYWdlRXh0ZW5zaW9ucyAqL1xuZXhwb3J0IGludGVyZmFjZSBZYXJuUGVlckRlcGVuZGVuY3lNZXRhIHtcbiAgcmVhZG9ubHkgb3B0aW9uYWw/OiBib29sZWFuO1xufVxuXG4vKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNwYWNrYWdlRXh0ZW5zaW9ucyAqL1xuZXhwb3J0IGludGVyZmFjZSBZYXJuUGFja2FnZUV4dGVuc2lvbiB7XG4gIHJlYWRvbmx5IGRlcGVuZGVuY2llcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHJlYWRvbmx5IHBlZXJEZXBlbmRlbmNpZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICByZWFkb25seSBwZWVyRGVwZW5kZW5jaWVzTWV0YT86IFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAgUmVjb3JkPHN0cmluZywgWWFyblBlZXJEZXBlbmRlbmN5TWV0YT5cbiAgPjtcbn1cblxuLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjcG5wRmFsbGJhY2tNb2RlICovXG5leHBvcnQgZW51bSBZYXJuUG5wRmFsbGJhY2tNb2RlIHtcbiAgTk9ORSA9IFwibm9uZVwiLFxuICBERVBFTkRFTkNJRVNfT05MWSA9IFwiZGVwZW5kZW5jaWVzLW9ubHlcIixcbiAgQUxMID0gXCJhbGxcIixcbn1cblxuLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjcG5wTW9kZSAqL1xuZXhwb3J0IGVudW0gWWFyblBucE1vZGUge1xuICBTVFJJQ1QgPSBcInN0cmljdFwiLFxuICBMT09TRSA9IFwibG9vc2VcIixcbn1cblxuLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjcHJvZ3Jlc3NCYXJTdHlsZSAqL1xuZXhwb3J0IGVudW0gWWFyblByb2dyZXNzQmFyU3R5bGUge1xuICBQQVRSSUNLID0gXCJwYXRyaWNrXCIsXG4gIFNJTUJBID0gXCJzaW1iYVwiLFxuICBKQUNLID0gXCJqYWNrXCIsXG4gIEhPR1NGQVRIRVIgPSBcImhvZ3NmYXRoZXJcIixcbiAgREVGQVVMVCA9IFwiZGVmYXVsdFwiLFxufVxuXG4vKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNzdXBwb3J0ZWRBcmNoaXRlY3R1cmVzICovXG5leHBvcnQgaW50ZXJmYWNlIFlhcm5TdXBwb3J0ZWRBcmNoaXRlY3R1cmVzIHtcbiAgcmVhZG9ubHkgb3M/OiBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgY3B1Pzogc3RyaW5nW107XG4gIHJlYWRvbmx5IGxpYmM/OiBzdHJpbmdbXTtcbn1cblxuLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjY2FjaGVNaWdyYXRpb25Nb2RlICovXG5leHBvcnQgZW51bSBZYXJuQ2FjaGVNaWdyYXRpb25Nb2RlIHtcbiAgUkVRVUlSRURfT05MWSA9IFwicmVxdWllZC1vbmx5XCIsXG4gIE1BVENIX1NQRUMgPSBcIm1hdGNoLXNwZWNcIixcbiAgQUxXQVlTID0gXCJhbHdheXNcIixcbn1cblxuLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjd2luTGlua1R5cGUgKi9cbmV4cG9ydCBlbnVtIFlhcm5XaW5MaW5rVHlwZSB7XG4gIEpVTkNUSU9OUyA9IFwianVuY3Rpb25zXCIsXG4gIFNZTUxJTktTID0gXCJzeW1saW5rc1wiLFxufVxuXG5leHBvcnQgZW51bSBZYXJuV29ya2VyUG9vbE1vZGUge1xuICBBU1lOQyA9IFwiYXN5bmNcIixcbiAgV09SS0VSUyA9IFwid29ya2Vyc1wiLFxufVxuXG4vKiogQ29uZmlndXJhdGlvbiBmb3IgLnlhcm5yYy55bWwgaW4gWWFybiBCZXJyeSB2NCAqL1xuZXhwb3J0IGludGVyZmFjZSBZYXJucmNPcHRpb25zIHtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjY2FjaGVGb2xkZXIgKi9cbiAgcmVhZG9ubHkgY2FjaGVGb2xkZXI/OiBzdHJpbmc7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2NhY2hlTWlncmF0aW9uTW9kZSAqL1xuICByZWFkb25seSBjYWNoZU1pZ3JhdGlvbk1vZGU/OiBZYXJuQ2FjaGVNaWdyYXRpb25Nb2RlO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNodHRwc0NhRmlsZVBhdGggKi9cbiAgcmVhZG9ubHkgaHR0cHNDYUZpbGVQYXRoPzogc3RyaW5nO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNjaGFuZ2VzZXRCYXNlUmVmcyAqL1xuICByZWFkb25seSBjaGFuZ2VzZXRCYXNlUmVmcz86IHN0cmluZ1tdO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNjaGFuZ2VzZXRJZ25vcmVQYXR0ZXJucyAqL1xuICByZWFkb25seSBjaGFuZ2VzZXRJZ25vcmVQYXR0ZXJucz86IHN0cmluZ1tdO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNjaGVja3N1bUJlaGF2aW9yICovXG4gIHJlYWRvbmx5IGNoZWNrc3VtQmVoYXZpb3I/OiBZYXJuQ2hlY2tzdW1CZWhhdmlvcjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjY2xvbmVDb25jdXJyZW5jeSAqL1xuICByZWFkb25seSBjbG9uZUNvbmN1cnJlbmN5PzogbnVtYmVyO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNjb21wcmVzc2lvbkxldmVsICovXG4gIHJlYWRvbmx5IGNvbXByZXNzaW9uTGV2ZWw/OiBudW1iZXIgfCBzdHJpbmc7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2NvbnN0cmFpbnRzUGF0aCAqL1xuICByZWFkb25seSBjb25zdHJhaW50c1BhdGg/OiBzdHJpbmc7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2RlZmF1bHRMYW5ndWFnZU5hbWUgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdExhbmd1YWdlTmFtZT86IHN0cmluZztcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjZGVmYXVsdFByb3RvY29sICovXG4gIHJlYWRvbmx5IGRlZmF1bHRQcm90b2NvbD86IHN0cmluZztcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjZGVmYXVsdFNlbXZlclJhbmdlUHJlZml4ICovXG4gIHJlYWRvbmx5IGRlZmF1bHRTZW12ZXJSYW5nZVByZWZpeD86IFlhcm5EZWZhdWx0U2VtdmVyUmFuZ2VQcmVmaXg7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2RlZmVycmVkVmVyc2lvbkZvbGRlciAqL1xuICByZWFkb25seSBkZWZlcnJlZFZlcnNpb25Gb2xkZXI/OiBzdHJpbmc7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2VuYWJsZUNvbG9ycyAqL1xuICByZWFkb25seSBlbmFibGVDb2xvcnM/OiBib29sZWFuO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNlbmFibGVDb25zdHJhaW50c0NoZWNrICovXG4gIHJlYWRvbmx5IGVuYWJsZUNvbnN0cmFpbnRzQ2hlY2s/OiBib29sZWFuO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNlbmFibGVHbG9iYWxDYWNoZSAqL1xuICByZWFkb25seSBlbmFibGVHbG9iYWxDYWNoZT86IGJvb2xlYW47XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2VuYWJsZUhhcmRlbmVkTW9kZSAqL1xuICByZWFkb25seSBlbmFibGVIYXJkZW5lZE1vZGU/OiBib29sZWFuO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNlbmFibGVIeXBlcmxpbmtzICovXG4gIHJlYWRvbmx5IGVuYWJsZUh5cGVybGlua3M/OiBib29sZWFuO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNlbmFibGVJbW11dGFibGVDYWNoZSAqL1xuICByZWFkb25seSBlbmFibGVJbW11dGFibGVDYWNoZT86IGJvb2xlYW47XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2VuYWJsZUltbXV0YWJsZUluc3RhbGxzICovXG4gIHJlYWRvbmx5IGVuYWJsZUltbXV0YWJsZUluc3RhbGxzPzogYm9vbGVhbjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjZW5hYmxlSW5saW5lQnVpbGRzICovXG4gIHJlYWRvbmx5IGVuYWJsZUlubGluZUJ1aWxkcz86IGJvb2xlYW47XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2VuYWJsZUlubGluZUh1bmtzICovXG4gIHJlYWRvbmx5IGVuYWJsZUlubGluZUh1bmtzPzogYm9vbGVhbjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjZW5hYmxlTWVzc2FnZU5hbWVzICovXG4gIHJlYWRvbmx5IGVuYWJsZU1lc3NhZ2VOYW1lcz86IGJvb2xlYW47XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2VuYWJsZU1pcnJvciAqL1xuICByZWFkb25seSBlbmFibGVNaXJyb3I/OiBib29sZWFuO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNlbmFibGVOZXR3b3JrICovXG4gIHJlYWRvbmx5IGVuYWJsZU5ldHdvcms/OiBib29sZWFuO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNlbmFibGVPZmZsaW5lTW9kZSAqL1xuICByZWFkb25seSBlbmFibGVPZmZsaW5lTW9kZT86IGJvb2xlYW47XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2VuYWJsZVByb2dyZXNzQmFycyAqL1xuICByZWFkb25seSBlbmFibGVQcm9ncmVzc0JhcnM/OiBib29sZWFuO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNlbmFibGVTY3JpcHRzICovXG4gIHJlYWRvbmx5IGVuYWJsZVNjcmlwdHM/OiBib29sZWFuO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNlbmFibGVTdHJpY3RTc2wgKi9cbiAgcmVhZG9ubHkgZW5hYmxlU3RyaWN0U3NsPzogYm9vbGVhbjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjZW5hYmxlVGVsZW1ldHJ5ICovXG4gIHJlYWRvbmx5IGVuYWJsZVRlbGVtZXRyeT86IGJvb2xlYW47XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2VuYWJsZVRpbWVycyAqL1xuICByZWFkb25seSBlbmFibGVUaW1lcnM/OiBib29sZWFuO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNlbmFibGVUcmFuc3BhcmVudFdvcmtzcGFjZXMgKi9cbiAgcmVhZG9ubHkgZW5hYmxlVHJhbnNwYXJlbnRXb3Jrc3BhY2VzPzogYm9vbGVhbjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjZ2xvYmFsRm9sZGVyICovXG4gIHJlYWRvbmx5IGdsb2JhbEZvbGRlcj86IHN0cmluZztcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjaHR0cFByb3h5ICovXG4gIHJlYWRvbmx5IGh0dHBQcm94eT86IHN0cmluZztcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjaHR0cFJldHJ5ICovXG4gIHJlYWRvbmx5IGh0dHBSZXRyeT86IG51bWJlcjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjaHR0cFRpbWVvdXQgKi9cbiAgcmVhZG9ubHkgaHR0cFRpbWVvdXQ/OiBudW1iZXI7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2h0dHBzQ2VydEZpbGVQYXRoICovXG4gIHJlYWRvbmx5IGh0dHBzQ2VydEZpbGVQYXRoPzogc3RyaW5nO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNodHRwc0tleUZpbGVQYXRoICovXG4gIHJlYWRvbmx5IGh0dHBzS2V5RmlsZVBhdGg/OiBzdHJpbmc7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2h0dHBzUHJveHkgKi9cbiAgcmVhZG9ubHkgaHR0cHNQcm94eT86IHN0cmluZztcbiAgLyoqXG4gICAqIGh0dHBzOi8vdjMueWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjaWdub3JlQ3dkXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIC0gcmVtb3ZlZCBpbiBZYXJuIHY0IGFuZCBuZXdlclxuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlQ3dkPzogYm9vbGVhbjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjaWdub3JlUGF0aCAqL1xuICByZWFkb25seSBpZ25vcmVQYXRoPzogYm9vbGVhbjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjaW1tdXRhYmxlUGF0dGVybnMgKi9cbiAgcmVhZG9ubHkgaW1tdXRhYmxlUGF0dGVybnM/OiBzdHJpbmdbXTtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjaW5pdFNjb3BlICovXG4gIHJlYWRvbmx5IGluaXRTY29wZT86IHN0cmluZztcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjaW5pdEZpZWxkcyAqL1xuICByZWFkb25seSBpbml0RmllbGRzPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjaW5qZWN0RW52aXJvbm1lbnRGaWxlcyAqL1xuICByZWFkb25seSBpbmplY3RFbnZpcm9ubWVudEZpbGVzPzogc3RyaW5nW107XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2luc3RhbGxTdGF0ZVBhdGggKi9cbiAgcmVhZG9ubHkgaW5zdGFsbFN0YXRlUGF0aD86IHN0cmluZztcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjbG9nRmlsdGVycyAqL1xuICByZWFkb25seSBsb2dGaWx0ZXJzPzogWWFybkxvZ0ZpbHRlcltdO1xuICAvKipcbiAgICogaHR0cHM6Ly92My55YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNsb2NrZmlsZUZpbGVuYW1lXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIC0gcmVtb3ZlZCBpbiBZYXJuIHY0IGFuZCBuZXdlclxuICAgKi9cbiAgcmVhZG9ubHkgbG9ja2ZpbGVGaWxlbmFtZT86IHN0cmluZztcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjbmV0d29ya0NvbmN1cnJlbmN5ICovXG4gIHJlYWRvbmx5IG5ldHdvcmtDb25jdXJyZW5jeT86IG51bWJlcjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjbmV0d29ya1NldHRpbmdzICovXG4gIHJlYWRvbmx5IG5ldHdvcmtTZXR0aW5ncz86IFJlY29yZDxzdHJpbmcsIFlhcm5OZXR3b3JrU2V0dGluZz47XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI25tSG9pc3RpbmdMaW1pdHMgKi9cbiAgcmVhZG9ubHkgbm1Ib2lzdGluZ0xpbWl0cz86IFlhcm5ObUhvaXN0aW5nTGltaXQ7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI25tU2VsZlJlZmVyZW5jZXMgKi9cbiAgcmVhZG9ubHkgbm1TZWxmUmVmZXJlbmNlcz86IGJvb2xlYW47XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI25tTW9kZSAqL1xuICByZWFkb25seSBubU1vZGU/OiBZYXJuTm1Nb2RlO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNub2RlTGlua2VyICovXG4gIHJlYWRvbmx5IG5vZGVMaW5rZXI/OiBZYXJuTm9kZUxpbmtlcjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjd2luTGlua1R5cGUgKi9cbiAgcmVhZG9ubHkgd2luTGlua1R5cGU/OiBZYXJuV2luTGlua1R5cGU7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI25wbUFsd2F5c0F1dGggKi9cbiAgcmVhZG9ubHkgbnBtQWx3YXlzQXV0aD86IGJvb2xlYW47XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI25wbUF1ZGl0UmVnaXN0cnkgKi9cbiAgcmVhZG9ubHkgbnBtQXVkaXRSZWdpc3RyeT86IHN0cmluZztcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjbnBtQXV0aElkZW50ICovXG4gIHJlYWRvbmx5IG5wbUF1dGhJZGVudD86IHN0cmluZztcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjbnBtQXV0aFRva2VuICovXG4gIHJlYWRvbmx5IG5wbUF1dGhUb2tlbj86IHN0cmluZztcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjbnBtUHVibGlzaEFjY2VzcyAqL1xuICByZWFkb25seSBucG1QdWJsaXNoQWNjZXNzPzogWWFybk5wbVB1Ymxpc2hBY2Nlc3M7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI25wbUF1ZGl0RXhjbHVkZVBhY2thZ2VzICovXG4gIHJlYWRvbmx5IG5wbUF1ZGl0RXhjbHVkZVBhY2thZ2VzPzogc3RyaW5nW107XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI25wbUF1ZGl0SWdub3JlQWR2aXNvcmllcyAqL1xuICByZWFkb25seSBucG1BdWRpdElnbm9yZUFkdmlzb3JpZXM/OiBzdHJpbmdbXTtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjbnBtUHVibGlzaFJlZ2lzdHJ5ICovXG4gIHJlYWRvbmx5IG5wbVB1Ymxpc2hSZWdpc3RyeT86IHN0cmluZztcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjbnBtUmVnaXN0cmllcyAqL1xuICByZWFkb25seSBucG1SZWdpc3RyaWVzPzogUmVjb3JkPHN0cmluZywgWWFybk5wbVJlZ2lzdHJ5PjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjbnBtUmVnaXN0cnlTZXJ2ZXIgKi9cbiAgcmVhZG9ubHkgbnBtUmVnaXN0cnlTZXJ2ZXI/OiBzdHJpbmc7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI25wbVNjb3BlcyAqL1xuICByZWFkb25seSBucG1TY29wZXM/OiBSZWNvcmQ8c3RyaW5nLCBZYXJuTnBtU2NvcGU+O1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNwYWNrYWdlRXh0ZW5zaW9ucyAqL1xuICByZWFkb25seSBwYWNrYWdlRXh0ZW5zaW9ucz86IFJlY29yZDxzdHJpbmcsIFlhcm5QYWNrYWdlRXh0ZW5zaW9uPjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjcGF0Y2hGb2xkZXIgKi9cbiAgcmVhZG9ubHkgcGF0Y2hGb2xkZXI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBodHRwczovL3YzLnlhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI3BucERhdGFQYXRoXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIC0gcmVtb3ZlZCBpbiBZYXJuIHY0IGFuZCBuZXdlclxuICAgKi9cbiAgcmVhZG9ubHkgcG5wRGF0YVBhdGg/OiBzdHJpbmc7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI3BucEVuYWJsZUVzbUxvYWRlciAqL1xuICByZWFkb25seSBwbnBFbmFibGVFc21Mb2FkZXI/OiBib29sZWFuO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNwbnBFbmFibGVJbmxpbmluZyAqL1xuICByZWFkb25seSBwbnBFbmFibGVJbmxpbmluZz86IGJvb2xlYW47XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI3BucEZhbGxiYWNrTW9kZSAqL1xuICByZWFkb25seSBwbnBGYWxsYmFja01vZGU/OiBZYXJuUG5wRmFsbGJhY2tNb2RlO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNwbnBJZ25vcmVQYXR0ZXJucyAqL1xuICByZWFkb25seSBwbnBJZ25vcmVQYXR0ZXJucz86IHN0cmluZ1tdO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNwbnBNb2RlICovXG4gIHJlYWRvbmx5IHBucE1vZGU/OiBZYXJuUG5wTW9kZTtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjcG5wU2hlYmFuZyAqL1xuICByZWFkb25seSBwbnBTaGViYW5nPzogc3RyaW5nO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNwbnBVbnBsdWdnZWRGb2xkZXIgKi9cbiAgcmVhZG9ubHkgcG5wVW5wbHVnZ2VkRm9sZGVyPzogc3RyaW5nO1xuICAvKipcbiAgICogaHR0cHM6Ly92My55YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNwcmVmZXJBZ2dyZWdhdGVDYWNoZUluZm9cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgLSByZW1vdmVkIGluIFlhcm4gdjQgYW5kIG5ld2VyXG4gICAqL1xuICByZWFkb25seSBwcmVmZXJBZ2dyZWdhdGVDYWNoZUluZm8/OiBib29sZWFuO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNwcmVmZXJEZWZlcnJlZFZlcnNpb25zICovXG4gIHJlYWRvbmx5IHByZWZlckRlZmVycmVkVmVyc2lvbnM/OiBib29sZWFuO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNwcmVmZXJJbnRlcmFjdGl2ZSAqL1xuICByZWFkb25seSBwcmVmZXJJbnRlcmFjdGl2ZT86IGJvb2xlYW47XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI3ByZWZlclJldXNlICovXG4gIHJlYWRvbmx5IHByZWZlclJldXNlPzogYm9vbGVhbjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjcHJlZmVyVHJ1bmNhdGVkTGluZXMgKi9cbiAgcmVhZG9ubHkgcHJlZmVyVHJ1bmNhdGVkTGluZXM/OiBib29sZWFuO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNwcm9ncmVzc0JhclN0eWxlICovXG4gIHJlYWRvbmx5IHByb2dyZXNzQmFyU3R5bGU/OiBZYXJuUHJvZ3Jlc3NCYXJTdHlsZTtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjcmNGaWxlbmFtZSAqL1xuICByZWFkb25seSByY0ZpbGVuYW1lPzogc3RyaW5nO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNzdXBwb3J0ZWRBcmNoaXRlY3R1cmVzICovXG4gIHJlYWRvbmx5IHN1cHBvcnRlZEFyY2hpdGVjdHVyZXM/OiBZYXJuU3VwcG9ydGVkQXJjaGl0ZWN0dXJlcztcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjdGFza1Bvb2xDb25jdXJyZW5jeSAqL1xuICByZWFkb25seSB0YXNrUG9vbENvbmN1cnJlbmN5Pzogc3RyaW5nO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyN3b3JrZXJQb29sTW9kZSAqL1xuICByZWFkb25seSB3b3JrZXJQb29sTW9kZT86IFlhcm5Xb3JrZXJQb29sTW9kZTtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjdGVsZW1ldHJ5SW50ZXJ2YWwgKi9cbiAgcmVhZG9ubHkgdGVsZW1ldHJ5SW50ZXJ2YWw/OiBudW1iZXI7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI3RlbGVtZXRyeVVzZXJJZCAqL1xuICByZWFkb25seSB0ZWxlbWV0cnlVc2VySWQ/OiBzdHJpbmc7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI3RzRW5hYmxlQXV0b1R5cGVzICovXG4gIHJlYWRvbmx5IHRzRW5hYmxlQXV0b1R5cGVzPzogYm9vbGVhbjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjdW5zYWZlSHR0cFdoaXRlbGlzdCAqL1xuICByZWFkb25seSB1bnNhZmVIdHRwV2hpdGVsaXN0Pzogc3RyaW5nW107XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI3ZpcnR1YWxGb2xkZXIgKi9cbiAgcmVhZG9ubHkgdmlydHVhbEZvbGRlcj86IHN0cmluZztcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjeWFyblBhdGggKi9cbiAgcmVhZG9ubHkgeWFyblBhdGg/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBZYXJucmMgZXh0ZW5kcyBDb21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCB2ZXJzaW9uOiBzdHJpbmcsIG9wdGlvbnM6IFlhcm5yY09wdGlvbnMgPSB7fSkge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgdGhpcy52YWxpZGF0ZU9wdGlvbnNGb3JWZXJzaW9uKHNlbXZlci5tYWpvcih2ZXJzaW9uKSwgb3B0aW9ucyk7XG4gICAgdGhpcy51cGRhdGVHaXRBdHRyaWJ1dGVzKCk7XG5cbiAgICBuZXcgWWFtbEZpbGUocHJvamVjdCwgXCIueWFybnJjLnltbFwiLCB7XG4gICAgICBvYmo6IG9wdGlvbnMsXG4gICAgICByZWFkb25seTogZmFsc2UsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUdpdEF0dHJpYnV0ZXMoKSB7XG4gICAgY29uc3QgeyBwcm9qZWN0IH0gPSB0aGlzO1xuXG4gICAgcHJvamVjdC5naXRhdHRyaWJ1dGVzLmFkZEF0dHJpYnV0ZXMoXCIvLnlhcm4vKipcIiwgXCJsaW5ndWlzdC12ZW5kb3JlZFwiKTtcbiAgICBwcm9qZWN0LmdpdGF0dHJpYnV0ZXMuYWRkQXR0cmlidXRlcyhcIi8ueWFybi9yZWxlYXNlcy8qXCIsIFwiYmluYXJ5XCIpO1xuICAgIHByb2plY3QuZ2l0YXR0cmlidXRlcy5hZGRBdHRyaWJ1dGVzKFwiLy55YXJuL3BsdWdpbnMvKiovKlwiLCBcImJpbmFyeVwiKTtcbiAgICBwcm9qZWN0LmdpdGF0dHJpYnV0ZXMuYWRkQXR0cmlidXRlcyhcbiAgICAgIFwiLy5wbnAuKlwiLFxuICAgICAgXCJiaW5hcnlcIixcbiAgICAgIFwibGluZ3Vpc3QtdmVuZG9yZWRcIixcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZU9wdGlvbnNGb3JWZXJzaW9uKFxuICAgIG1ham9yVmVyc2lvbjogbnVtYmVyLFxuICAgIG9wdGlvbnM6IFlhcm5yY09wdGlvbnMsXG4gICkge1xuICAgIGNvbnN0IHJlbW92ZWRJblY0OiBBcnJheTxrZXlvZiBZYXJucmNPcHRpb25zPiA9IFtcbiAgICAgIFwiaWdub3JlQ3dkXCIsXG4gICAgICBcImxvY2tmaWxlRmlsZW5hbWVcIixcbiAgICAgIFwicG5wRGF0YVBhdGhcIixcbiAgICAgIFwicHJlZmVyQWdncmVnYXRlQ2FjaGVJbmZvXCIsXG4gICAgXTtcbiAgICBjb25zdCBuZXdJblY0OiBBcnJheTxrZXlvZiBZYXJucmNPcHRpb25zPiA9IFtcbiAgICAgIFwiY2FjaGVNaWdyYXRpb25Nb2RlXCIsXG4gICAgICBcImh0dHBzQ2FGaWxlUGF0aFwiLFxuICAgICAgXCJlbmFibGVDb25zdHJhaW50c0NoZWNrXCIsXG4gICAgICBcImVuYWJsZUhhcmRlbmVkTW9kZVwiLFxuICAgICAgXCJlbmFibGVJbmxpbmVIdW5rc1wiLFxuICAgICAgXCJlbmFibGVPZmZsaW5lTW9kZVwiLFxuICAgICAgXCJpbmplY3RFbnZpcm9ubWVudEZpbGVzXCIsXG4gICAgICBcIndpbkxpbmtUeXBlXCIsXG4gICAgICBcInByZWZlclJldXNlXCIsXG4gICAgICBcInRhc2tQb29sQ29uY3VycmVuY3lcIixcbiAgICAgIFwid29ya2VyUG9vbE1vZGVcIixcbiAgICAgIFwidHNFbmFibGVBdXRvVHlwZXNcIixcbiAgICBdO1xuXG4gICAgaWYgKG1ham9yVmVyc2lvbiA+PSA0KSB7XG4gICAgICBjb25zdCBpbnZhbGlkT3B0aW9ucyA9IE9iamVjdC5rZXlzKG9wdGlvbnMpLmZpbHRlcigob3B0aW9uKSA9PlxuICAgICAgICAocmVtb3ZlZEluVjQgYXMgc3RyaW5nW10pLmluY2x1ZGVzKG9wdGlvbiksXG4gICAgICApO1xuXG4gICAgICBpZiAoaW52YWxpZE9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFRoZSBmb2xsb3dpbmcgb3B0aW9ucyBhcmUgbm90IGF2YWlsYWJsZSBpbiBZYXJuID49IDQ6ICR7aW52YWxpZE9wdGlvbnMuam9pbihcbiAgICAgICAgICAgIFwiLCBcIixcbiAgICAgICAgICApfWAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGludmFsaWRPcHRpb25zID0gT2JqZWN0LmtleXMob3B0aW9ucykuZmlsdGVyKChvcHRpb24pID0+XG4gICAgICAgIChuZXdJblY0IGFzIHN0cmluZ1tdKS5pbmNsdWRlcyhvcHRpb24pLFxuICAgICAgKTtcblxuICAgICAgaWYgKGludmFsaWRPcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBUaGUgZm9sbG93aW5nIG9wdGlvbnMgYXJlIG9ubHkgYXZhaWxhYmxlIGluIFlhcm4gdjQgYW5kIG5ld2VyOiAke2ludmFsaWRPcHRpb25zLmpvaW4oXG4gICAgICAgICAgICBcIiwgXCIsXG4gICAgICAgICAgKX1gLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIG9wdGlvbnMuY2hlY2tzdW1CZWhhdmlvciAmJlxuICAgICAgICBvcHRpb25zLmNoZWNrc3VtQmVoYXZpb3IgPT09IFlhcm5DaGVja3N1bUJlaGF2aW9yLlJFU0VUXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIFwiVGhlIFlhcm5DaGVja3N1bUJlaGF2aW9yLlJFU0VUIGlzIG9ubHkgYXZhaWxhYmxlIGluIFlhcm4gdjQgYW5kIG5ld2VyLlwiLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19