@kontur.candy/tools 2.195.0 → 2.196.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -4
- package/distr/Tools/src/BuildTasks/Form/CompileForm.js +3 -3
- package/distr/Tools/src/BuildTasks/Form/CompileForm.js.map +1 -1
- package/distr/Tools/src/CLICommands/BuildForms/BuildFormsOptions.js +1 -10
- package/distr/Tools/src/CLICommands/BuildForms/BuildFormsOptions.js.map +1 -1
- package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js +3 -3
- package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js.map +1 -1
- package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js +2 -2
- package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js.map +1 -1
- package/distr/Tools/src/CandyCLI.js +1 -5
- package/distr/Tools/src/CandyCLI.js.map +1 -1
- package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js +2 -2
- package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js.map +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.LICENSE.txt +1 -0
- package/package.json +1 -1
- package/distr/Tools/src/CLICommands/BuildForms/ClearSourceMapForProduction.js +0 -24
- package/distr/Tools/src/CLICommands/BuildForms/ClearSourceMapForProduction.js.map +0 -1
package/README.md
CHANGED
|
@@ -40,10 +40,6 @@ candy [имя-команды] [...опции]
|
|
|
40
40
|
|
|
41
41
|
Полностью очищает целевой каталог ресурсов. Используется при полной сборке форм для продакшена
|
|
42
42
|
|
|
43
|
-
* `--mode`
|
|
44
|
-
|
|
45
|
-
Разделение сборок на продовую (mode=production) и не продовую (mode=development). По умолчанию development
|
|
46
|
-
|
|
47
43
|
* `--upgrade-form-json`
|
|
48
44
|
|
|
49
45
|
Форсирует изменение формата файла form.json на новый
|
|
@@ -25,7 +25,7 @@ function tempMKDir(affixes) {
|
|
|
25
25
|
});
|
|
26
26
|
});
|
|
27
27
|
}
|
|
28
|
-
async function compileForm(gfv, formPath, resourcesDirectory, resourcesHash, buildDebugOnly, parentLogger = (0, _StaticLogger.getLogger)(),
|
|
28
|
+
async function compileForm(gfv, themes, farmDirectory, formPath, resourcesDirectory, resourcesHash, buildDebugOnly, parentLogger = (0, _StaticLogger.getLogger)(), buildCacheOptions) {
|
|
29
29
|
const logger = parentLogger.withPrefix(`COMPILE:${gfv}`);
|
|
30
30
|
const pathToWebpackConfigFactory = require.resolve("../../FormWebpackConfiguration/createFormWebpackConfiguration");
|
|
31
31
|
const options = {
|
|
@@ -33,7 +33,7 @@ async function compileForm(gfv, formPath, resourcesDirectory, resourcesHash, bui
|
|
|
33
33
|
resourcesHash: resourcesHash,
|
|
34
34
|
formPath: formPath,
|
|
35
35
|
resourcesDirectoryPath: resourcesDirectory,
|
|
36
|
-
modes: buildDebugOnly ? ["development"] :
|
|
36
|
+
modes: buildDebugOnly ? ["development"] : ["production", "development"],
|
|
37
37
|
buildCacheOptions: buildCacheOptions
|
|
38
38
|
};
|
|
39
39
|
const action = (0, _ILogger.buildActionBegin)(logger, "Compile");
|
|
@@ -49,4 +49,4 @@ module.exports = createConfig(${JSON.stringify(options)})`, "utf8");
|
|
|
49
49
|
});
|
|
50
50
|
action.complete();
|
|
51
51
|
}
|
|
52
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwidGVtcCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX0V4ZWNVdGlscyIsIl9Gc1V0aWxzIiwiX0lMb2dnZXIiLCJfU3RhdGljTG9nZ2VyIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwidHJhY2siLCJ0ZW1wTUtEaXIiLCJhZmZpeGVzIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJta2RpciIsImVyciIsInJlc3VsdCIsImNvbXBpbGVGb3JtIiwiZ2Z2IiwidGhlbWVzIiwiZmFybURpcmVjdG9yeSIsImZvcm1QYXRoIiwicmVzb3VyY2VzRGlyZWN0b3J5IiwicmVzb3VyY2VzSGFzaCIsImJ1aWxkRGVidWdPbmx5IiwicGFyZW50TG9nZ2VyIiwiZ2V0TG9nZ2VyIiwiYnVpbGRDYWNoZU9wdGlvbnMiLCJsb2dnZXIiLCJ3aXRoUHJlZml4IiwicGF0aFRvV2VicGFja0NvbmZpZ0ZhY3RvcnkiLCJvcHRpb25zIiwicmVzb3VyY2VzRGlyZWN0b3J5UGF0aCIsIm1vZGVzIiwiYWN0aW9uIiwiYnVpbGRBY3Rpb25CZWdpbiIsImZvcm1CdWlsZFRlbXBEaXIiLCJmb3JtQnVpbGRXZWJwYWNrQ29uZmlnIiwicGF0aCIsImpvaW4iLCJ3cml0ZUZpbGVBc3luYyIsIkpTT04iLCJzdHJpbmdpZnkiLCJwYXRoVG9XZWJQYWNrRXhlY3V0YWJsZSIsImV4ZWNDb21tYW5kIiwiZXhlY0NvbW1hbmRBc3luYyIsImNhcHRpb24iLCJjb21wbGV0ZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9CdWlsZFRhc2tzL0Zvcm0vQ29tcGlsZUZvcm0udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0ICogYXMgdGVtcCBmcm9tIFwidGVtcFwiO1xuXG5pbXBvcnQgeyBleGVjQ29tbWFuZEFzeW5jIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvRXhlY1V0aWxzXCI7XG5pbXBvcnQgeyB3cml0ZUZpbGVBc3luYyB9IGZyb20gXCIuLi8uLi9Db21tb25zL0ZzVXRpbHNcIjtcbmltcG9ydCB7IGJ1aWxkQWN0aW9uQmVnaW4sIElMb2dnZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Mb2dnaW5nL0lMb2dnZXJcIjtcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL0xvZ2dpbmcvU3RhdGljTG9nZ2VyXCI7XG5pbXBvcnQgeyBDcmVhdGVXZWJwYWNrQ29uZmlndXJhdGlvbk9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vRm9ybVdlYnBhY2tDb25maWd1cmF0aW9uL2NyZWF0ZUZvcm1XZWJwYWNrQ29uZmlndXJhdGlvblwiO1xuaW1wb3J0IHsgRm9ybUJ1aWxkQ2FjaGVPcHRpb25zIH0gZnJvbSBcIi4uLy4uL0Zvcm1XZWJwYWNrQ29uZmlndXJhdGlvbi9DYWNoZUFzc2V0c1BsdWdpblwiO1xuXG50ZW1wLnRyYWNrKCk7XG5cbmZ1bmN0aW9uIHRlbXBNS0RpcihhZmZpeGVzPzogc3RyaW5nIHwgdGVtcC5BZmZpeE9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgdGVtcC5ta2RpcihhZmZpeGVzLCAoZXJyLCByZXN1bHQpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvbXBpbGVGb3JtKFxuICAgIGdmdjogc3RyaW5nLFxuICAgIHRoZW1lczogdW5kZWZpbmVkIHwgc3RyaW5nW10sXG4gICAgZmFybURpcmVjdG9yeTogc3RyaW5nLFxuICAgIGZvcm1QYXRoOiBzdHJpbmcsXG4gICAgcmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgcmVzb3VyY2VzSGFzaDogc3RyaW5nLFxuICAgIGJ1aWxkRGVidWdPbmx5OiBib29sZWFuLFxuICAgIHBhcmVudExvZ2dlcjogSUxvZ2dlciA9IGdldExvZ2dlcigpLFxuICAgIGJ1aWxkQ2FjaGVPcHRpb25zPzogRm9ybUJ1aWxkQ2FjaGVPcHRpb25zXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBsb2dnZXIgPSBwYXJlbnRMb2dnZXIud2l0aFByZWZpeChgQ09NUElMRToke2dmdn1gKTtcbiAgICBjb25zdCBwYXRoVG9XZWJwYWNrQ29uZmlnRmFjdG9yeSA9IHJlcXVpcmUucmVzb2x2ZShcIi4uLy4uL0Zvcm1XZWJwYWNrQ29uZmlndXJhdGlvbi9jcmVhdGVGb3JtV2VicGFja0NvbmZpZ3VyYXRpb25cIik7XG5cbiAgICBjb25zdCBvcHRpb25zOiBDcmVhdGVXZWJwYWNrQ29uZmlndXJhdGlvbk9wdGlvbnMgPSB7XG4gICAgICAgIGdmdjogZ2Z2LFxuICAgICAgICByZXNvdXJjZXNIYXNoOiByZXNvdXJjZXNIYXNoLFxuICAgICAgICBmb3JtUGF0aDogZm9ybVBhdGgsXG4gICAgICAgIHJlc291cmNlc0RpcmVjdG9yeVBhdGg6IHJlc291cmNlc0RpcmVjdG9yeSxcbiAgICAgICAgbW9kZXM6IGJ1aWxkRGVidWdPbmx5ID8gW1wiZGV2ZWxvcG1lbnRcIl0gOiBbXCJwcm9kdWN0aW9uXCIsIFwiZGV2ZWxvcG1lbnRcIl0sXG4gICAgICAgIGJ1aWxkQ2FjaGVPcHRpb25zOiBidWlsZENhY2hlT3B0aW9ucyxcbiAgICB9O1xuXG4gICAgY29uc3QgYWN0aW9uID0gYnVpbGRBY3Rpb25CZWdpbihsb2dnZXIsIFwiQ29tcGlsZVwiKTtcblxuICAgIGNvbnN0IGZvcm1CdWlsZFRlbXBEaXIgPSBhd2FpdCB0ZW1wTUtEaXIoYGNhbmR5LWZvcm1zLSR7Z2Z2fS1idWlsZGApO1xuICAgIGNvbnN0IGZvcm1CdWlsZFdlYnBhY2tDb25maWcgPSBwYXRoLmpvaW4oZm9ybUJ1aWxkVGVtcERpciwgXCJ3ZWJwYWNrLmNvbmZpZy5qc1wiKTtcbiAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyhcbiAgICAgICAgZm9ybUJ1aWxkV2VicGFja0NvbmZpZyxcbiAgICAgICAgYFxuY29uc3QgY3JlYXRlQ29uZmlnID0gcmVxdWlyZSgke0pTT04uc3RyaW5naWZ5KHBhdGhUb1dlYnBhY2tDb25maWdGYWN0b3J5KX0pLmNyZWF0ZUNvbmZpZztcbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlQ29uZmlnKCR7SlNPTi5zdHJpbmdpZnkob3B0aW9ucyl9KWAsXG4gICAgICAgIFwidXRmOFwiXG4gICAgKTtcbiAgICBjb25zdCBwYXRoVG9XZWJQYWNrRXhlY3V0YWJsZSA9IHBhdGguam9pbihyZXF1aXJlLnJlc29sdmUoXCJ3ZWJwYWNrXCIpLCBcIi4uXCIsIFwiLi5cIiwgXCIuLlwiLCBcIi5iaW5cIiwgXCJ3ZWJwYWNrXCIpO1xuICAgIGNvbnN0IGV4ZWNDb21tYW5kID0gYCR7cGF0aFRvV2ViUGFja0V4ZWN1dGFibGV9IC0tY29uZmlnICR7Zm9ybUJ1aWxkV2VicGFja0NvbmZpZ31gO1xuICAgIGF3YWl0IGV4ZWNDb21tYW5kQXN5bmMobG9nZ2VyLCBleGVjQ29tbWFuZCwge1xuICAgICAgICBjYXB0aW9uOiBcIkNvbXBpbGluZyBmb3JtXCIsXG4gICAgfSk7XG5cbiAgICBhY3Rpb24uY29tcGxldGUoKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMs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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompileForm.js","names":["_path","_interopRequireDefault","require","temp","_interopRequireWildcard","_ExecUtils","_FsUtils","_ILogger","_StaticLogger","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","track","tempMKDir","affixes","Promise","resolve","reject","mkdir","err","result","compileForm","gfv","formPath","resourcesDirectory","resourcesHash","buildDebugOnly","parentLogger","getLogger","
|
|
1
|
+
{"version":3,"file":"CompileForm.js","names":["_path","_interopRequireDefault","require","temp","_interopRequireWildcard","_ExecUtils","_FsUtils","_ILogger","_StaticLogger","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","track","tempMKDir","affixes","Promise","resolve","reject","mkdir","err","result","compileForm","gfv","themes","farmDirectory","formPath","resourcesDirectory","resourcesHash","buildDebugOnly","parentLogger","getLogger","buildCacheOptions","logger","withPrefix","pathToWebpackConfigFactory","options","resourcesDirectoryPath","modes","action","buildActionBegin","formBuildTempDir","formBuildWebpackConfig","path","join","writeFileAsync","JSON","stringify","pathToWebPackExecutable","execCommand","execCommandAsync","caption","complete"],"sources":["../../../../../src/BuildTasks/Form/CompileForm.ts"],"sourcesContent":["import path from \"path\";\n\nimport * as temp from \"temp\";\n\nimport { execCommandAsync } from \"../../Commons/ExecUtils\";\nimport { writeFileAsync } from \"../../Commons/FsUtils\";\nimport { buildActionBegin, ILogger } from \"../../Commons/Logging/ILogger\";\nimport { getLogger } from \"../../Commons/Logging/StaticLogger\";\nimport { CreateWebpackConfigurationOptions } from \"../../FormWebpackConfiguration/createFormWebpackConfiguration\";\nimport { FormBuildCacheOptions } from \"../../FormWebpackConfiguration/CacheAssetsPlugin\";\n\ntemp.track();\n\nfunction tempMKDir(affixes?: string | temp.AffixOptions): Promise<string> {\n return new Promise<string>((resolve, reject) => {\n temp.mkdir(affixes, (err, result) => {\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n });\n });\n}\n\nexport async function compileForm(\n gfv: string,\n themes: undefined | string[],\n farmDirectory: string,\n formPath: string,\n resourcesDirectory: string,\n resourcesHash: string,\n buildDebugOnly: boolean,\n parentLogger: ILogger = getLogger(),\n buildCacheOptions?: FormBuildCacheOptions\n): Promise<void> {\n const logger = parentLogger.withPrefix(`COMPILE:${gfv}`);\n const pathToWebpackConfigFactory = require.resolve(\"../../FormWebpackConfiguration/createFormWebpackConfiguration\");\n\n const options: CreateWebpackConfigurationOptions = {\n gfv: gfv,\n resourcesHash: resourcesHash,\n formPath: formPath,\n resourcesDirectoryPath: resourcesDirectory,\n modes: buildDebugOnly ? [\"development\"] : [\"production\", \"development\"],\n buildCacheOptions: buildCacheOptions,\n };\n\n const action = buildActionBegin(logger, \"Compile\");\n\n const formBuildTempDir = await tempMKDir(`candy-forms-${gfv}-build`);\n const formBuildWebpackConfig = path.join(formBuildTempDir, \"webpack.config.js\");\n await writeFileAsync(\n formBuildWebpackConfig,\n `\nconst createConfig = require(${JSON.stringify(pathToWebpackConfigFactory)}).createConfig;\nmodule.exports = createConfig(${JSON.stringify(options)})`,\n \"utf8\"\n );\n const pathToWebPackExecutable = path.join(require.resolve(\"webpack\"), \"..\", \"..\", \"..\", \".bin\", \"webpack\");\n const execCommand = `${pathToWebPackExecutable} --config ${formBuildWebpackConfig}`;\n await execCommandAsync(logger, execCommand, {\n caption: \"Compiling form\",\n });\n\n action.complete();\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -28,15 +28,6 @@ const buildFormsOptionsDefinition = exports.buildFormsOptionsDefinition = (0, _C
|
|
|
28
28
|
}),
|
|
29
29
|
doesNotRequireValue: true,
|
|
30
30
|
description: "Полностью очищает целевой каталог ресурсов. Используется при полной сборке форм для продакшена"
|
|
31
|
-
}, {
|
|
32
|
-
name: "mode",
|
|
33
|
-
defaultValue: {
|
|
34
|
-
mode: "development"
|
|
35
|
-
},
|
|
36
|
-
parse: input => ({
|
|
37
|
-
mode: input
|
|
38
|
-
}),
|
|
39
|
-
description: "Разделение сборок на продовую (mode=production) и не продовую (mode=development). По умолчанию development"
|
|
40
31
|
}, {
|
|
41
32
|
name: "upgrade-form-json",
|
|
42
33
|
defaultValue: {
|
|
@@ -166,4 +157,4 @@ candy build 104816 --use-prerelease-version bso
|
|
|
166
157
|
Версия с префиксом pre используются для движков, которые не являются стабильными и используются для предварительных сборок форм.
|
|
167
158
|
`.trim()
|
|
168
159
|
});
|
|
169
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfQ29tbWFuZEJhc2VkT3B0aW9uc1BhcnNlciIsInJlcXVpcmUiLCJfQ29tbW9uT3B0aW9uRGVmaW50aW9ucyIsIl9CdWlsZENhY2hlTW9kZSIsImJ1aWxkRm9ybXNPcHRpb25zRGVmaW5pdGlvbiIsImV4cG9ydHMiLCJjb21tYW5kRGVmaW5pdGlvbiIsIm9wdGlvbnNEZWZpbml0aW9uIiwiYWxpYXMiLCJuYW1lIiwiZGVmYXVsdFZhbHVlIiwid2F0Y2giLCJwYXJzZSIsImlucHV0IiwiZG9lc05vdFJlcXVpcmVWYWx1ZSIsImRlc2NyaXB0aW9uIiwiY2xlYW4iLCJtb2RlIiwidXBncmFkZUZvcm1Kc29uIiwiYnVpbGRDYWNoZU1vZGUiLCJCdWlsZENhY2hlTW9kZSIsIlJlYWRPbmx5IiwicGFyc2VCdWlsZENhY2hlTW9kZSIsInVzZUxhc3RTdGFibGVWZXJzaW9uIiwidXNlUHJlcmVsZWFzZVZlcnNpb24iLCJ1bmRlZmluZWQiLCJza2lwR2VuZXJhdGVkQ29kZVJlZm9ybWF0dGluZyIsImZvcm1HbG9icyIsImRlZmF1bHRPcHRpb24iLCJtdWx0aXBsZSIsInVzZVZlcnNpb25Gcm9tQ2FjaGUiLCJkZXZNb2RlT3B0aW9uIiwibG9nVmVyYm9zaXR5T3B0aW9uIiwiZGV0YWlsZWREZXNjcmlwdGlvbiIsInRyaW0iLCJleGFtcGxlcyIsImV4dGVuZGVkRGV0YWlscyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZEZvcm1zL0J1aWxkRm9ybXNPcHRpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbW1hbmREZWZpbml0aW9uLCBvcHRpb25zRGVmaW5pdGlvbiB9IGZyb20gXCIuLi8uLi9Db21tb25zL09wdGlvbnMvQ29tbWFuZEJhc2VkT3B0aW9uc1BhcnNlclwiO1xuaW1wb3J0IHsgQ29tbW9uT3B0aW9ucyB9IGZyb20gXCIuLi9Db21tb25PcHRpb25zL0NvbW1vbk9wdGlvbnNcIjtcbmltcG9ydCB7IGRldk1vZGVPcHRpb24sIGxvZ1ZlcmJvc2l0eU9wdGlvbiB9IGZyb20gXCIuLi9Db21tb25PcHRpb25zL0NvbW1vbk9wdGlvbkRlZmludGlvbnNcIjtcblxuaW1wb3J0IHsgQnVpbGRDYWNoZU1vZGUsIHBhcnNlQnVpbGRDYWNoZU1vZGUgfSBmcm9tIFwiLi9CdWlsZENhY2hlTW9kZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkRm9ybXNPcHRpb25zIGV4dGVuZHMgQ29tbW9uT3B0aW9ucyB7XG4gICAgd2F0Y2g6IGJvb2xlYW47XG4gICAgY2xlYW46IGJvb2xlYW47XG4gICAgZm9ybUdsb2JzOiBzdHJpbmdbXTtcbiAgICB1cGdyYWRlRm9ybUpzb246IGJvb2xlYW47XG4gICAgdXNlTGFzdFN0YWJsZVZlcnNpb246IGJvb2xlYW47XG4gICAgdXNlUHJlcmVsZWFzZVZlcnNpb24/OiBzdHJpbmc7XG4gICAgc2tpcEdlbmVyYXRlZENvZGVSZWZvcm1hdHRpbmc6IGJvb2xlYW47XG4gICAgdXNlVmVyc2lvbkZyb21DYWNoZTogYm9vbGVhbjtcbiAgICBtb2RlOiBcImRldmVsb3BtZW50XCIgfCBcInByb2R1Y3Rpb25cIjtcbiAgICBidWlsZENhY2hlTW9kZTogQnVpbGRDYWNoZU1vZGU7XG59XG5cbmV4cG9ydCBjb25zdCBidWlsZEZvcm1zT3B0aW9uc0RlZmluaXRpb24gPSBjb21tYW5kRGVmaW5pdGlvbjxcImJ1aWxkXCIsIEJ1aWxkRm9ybXNPcHRpb25zPihcbiAgICBcImJ1aWxkXCIsXG4gICAgXCJidWlsZFwiLFxuICAgIG9wdGlvbnNEZWZpbml0aW9uKFxuICAgICAgICB7XG4gICAgICAgICAgICBhbGlhczogXCJ3XCIsXG4gICAgICAgICAgICBuYW1lOiBcIndhdGNoXCIsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHsgd2F0Y2g6IGZhbHNlIH0sXG4gICAgICAgICAgICBwYXJzZTogaW5wdXQgPT4gKHsgd2F0Y2g6IGlucHV0IH0pLFxuICAgICAgICAgICAgZG9lc05vdFJlcXVpcmVWYWx1ZTogdHJ1ZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIFwiV2F0Y2gt0YDQtdC20LjQvC4g0JLRi9C/0L7Qu9C90Y/QtdGCINGB0LHQvtGA0LrRgyDRhNC+0YDQvCwg0LAg0LfQsNGC0LXQvCDQv9C10YDQtdGB0L7QsdC40YDQsNC10YIg0L/RgNC4INC40LfQvNC10L3QtdC90LjRj9GFLiDQkiDRgtC+0Lwg0YfQuNGB0LvQtSDQtNCy0LjQttC60LAsINCz0LXQvdC10YDQsNGC0L7RgNCwINC4INGB0YLQsNGC0LjRh9C10YHQutC40YUg0YDQtdGB0YPRgNGB0L7Qsi5cIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJjbGVhblwiLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiB7IGNsZWFuOiBmYWxzZSB9LFxuICAgICAgICAgICAgcGFyc2U6IGlucHV0ID0+ICh7IGNsZWFuOiBpbnB1dCB9KSxcbiAgICAgICAgICAgIGRvZXNOb3RSZXF1aXJlVmFsdWU6IHRydWUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICBcItCf0L7Qu9C90L7RgdGC0YzRjiDQvtGH0LjRidCw0LXRgiDRhtC10LvQtdCy0L7QuSDQutCw0YLQsNC70L7QsyDRgNC10YHRg9GA0YHQvtCyLiDQmNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8g0L/RgNC4INC/0L7Qu9C90L7QuSDRgdCx0L7RgNC60LUg0YTQvtGA0Lwg0LTQu9GPINC/0YDQvtC00LDQutGI0LXQvdCwXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwibW9kZVwiLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiB7IG1vZGU6IFwiZGV2ZWxvcG1lbnRcIiB9LFxuICAgICAgICAgICAgcGFyc2U6IChpbnB1dDogc3RyaW5nKSA9PiAoeyBtb2RlOiBpbnB1dCB9KSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIFwi0KDQsNC30LTQtdC70LXQvdC40LUg0YHQsdC+0YDQvtC6INC90LAg0L/RgNC+0LTQvtCy0YPRjiAobW9kZT1wcm9kdWN0aW9uKSDQuCDQvdC1INC/0YDQvtC00L7QstGD0Y4gKG1vZGU9ZGV2ZWxvcG1lbnQpLiDQn9C+INGD0LzQvtC70YfQsNC90LjRjiBkZXZlbG9wbWVudFwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcInVwZ3JhZGUtZm9ybS1qc29uXCIsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHsgdXBncmFkZUZvcm1Kc29uOiBmYWxzZSB9LFxuICAgICAgICAgICAgcGFyc2U6IGlucHV0ID0+ICh7IHVwZ3JhZGVGb3JtSnNvbjogaW5wdXQgfSksXG4gICAgICAgICAgICBkb2VzTm90UmVxdWlyZVZhbHVlOiB0cnVlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwi0KTQvtGA0YHQuNGA0YPQtdGCINC40LfQvNC10L3QtdC90LjQtSDRhNC+0YDQvNCw0YLQsCDRhNCw0LnQu9CwIGZvcm0uanNvbiDQvdCwINC90L7QstGL0LlcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJidWlsZC1jYWNoZVwiLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiB7IGJ1aWxkQ2FjaGVNb2RlOiBCdWlsZENhY2hlTW9kZS5SZWFkT25seSB9LFxuICAgICAgICAgICAgcGFyc2U6IChpbnB1dDogc3RyaW5nKSA9PiAoeyBidWlsZENhY2hlTW9kZTogcGFyc2VCdWlsZENhY2hlTW9kZShpbnB1dCkgfSksXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICBcItCX0LDQtNCw0ZHRgiDRgNC10LbQuNC8INC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPINC60Y3RiNCwINGB0LHQvtGA0LrQuC4g0JLQvtC30LzQvtC20L3Ri9C1INC30L3QsNGH0LXQvdC40Y86XFxuXCIgK1xuICAgICAgICAgICAgICAgIFwiICBkaXNhYmxlZCAtINC90LUg0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMINC60Y3RiFxcblwiICtcbiAgICAgICAgICAgICAgICBcIiAgcmVhZG9ubHkgLSDQuNGB0L/QvtC70YzQt9C+0LLQsNGC0Ywg0LrRjdGIINC00LvRjyDRgdCx0L7RgNC60LgsINC90L4g0L3QtSDQvtCx0L3QvtCy0LvRj9C10YIg0LXQs9C+ICjQt9C90LDRh9C10L3QuNC1INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOKVxcblwiICtcbiAgICAgICAgICAgICAgICBcIiAgdXBkYXRlIC0g0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMINC60Y3RiCDQtNC70Y8g0YHQsdC+0YDQutC4INC4INC/0YDQtdC30LDQv9C40YHRi9Cy0LDRgtGMLCDQtdGB0LvQuCDQvdC1INGB0L7QstC/0LDQtNCw0LXRglxcblwiICtcbiAgICAgICAgICAgICAgICBcIiAgZm9yY2UtdXBkYXRlIC0g0LLRgdC10LPQtNCwINCy0YvQv9C+0LvQvdGP0YLRjCDRgdCx0L7RgNC60YMg0Lgg0L7QsdC90L7QstC40YLRjCDQt9C90LDRh9C10L3QuNGPINCyINC60Y3RiNC1XFxuXCIgK1xuICAgICAgICAgICAgICAgIFwi0J7RgtC60LvRjtGH0LDQtdGC0YHRjyDQv9GA0Lgg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Lggd2F0Y2gt0YDQtdC20LjQvNCwXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwidXNlLWxhc3Qtc3RhYmxlLXZlcnNpb25cIixcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogeyB1c2VMYXN0U3RhYmxlVmVyc2lvbjogZmFsc2UgfSxcbiAgICAgICAgICAgIHBhcnNlOiBpbnB1dCA9PiAoeyB1c2VMYXN0U3RhYmxlVmVyc2lvbjogaW5wdXQgfSksXG4gICAgICAgICAgICBkb2VzTm90UmVxdWlyZVZhbHVlOiB0cnVlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgXCLQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiDQstC10YDRgdC40Y4g0LTQstC40LbQutCwINCyINGE0LDQudC70LAgYGZvcm0uanNvbmAg0LIg0L/QvtGB0LvQtdC00L3RjtGOINGB0YLQsNCx0LjQu9GM0L3Rg9GOINCy0LXRgNGB0LjRji4g0JDQvdCw0LvQvtCz0LjRh9C10L0g0LfQsNC/0YPRgdC60YMgY2FuZHktYnVpbGQg0YEg0L/QsNGA0LDQvNC10YLRgNC+0LwgLWdlIG1hc3RlclwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcInVzZS1wcmVyZWxlYXNlLXZlcnNpb25cIixcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogeyB1c2VQcmVyZWxlYXNlVmVyc2lvbjogdW5kZWZpbmVkIGFzIHVuZGVmaW5lZCB8IHN0cmluZyB9LFxuICAgICAgICAgICAgcGFyc2U6IChpbnB1dDogc3RyaW5nKSA9PiAoeyB1c2VQcmVyZWxlYXNlVmVyc2lvbjogaW5wdXQgfSksXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICBcItCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINCy0LXRgNGB0LjRjiDQtNCy0LjQttC60LAg0LIg0YTQsNC50LvQsCBmb3JtLmpzb24g0LIg0L/QvtGB0LvQtdC00L3RjtGOINC/0YDQtdGA0LXQu9C40LfQvdGD0Y4g0LLQtdGA0YHQuNGOINCyINC30LDQtNCw0L3QvdGL0LwgcHJlaWQuINCSINGE0LDQudC70LUg0LLQtdGA0YHQuNC4INCz0LXQvdC10YDQsNGC0L7RgNCwINC4INC00LLQuNC20LrQsCDQsdGD0LTRg9GCINGD0YHRgtCw0L3QvtCy0LvQtdC90Ysg0LIgcHJlOnNvbWUtcHJlaWQuXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwibm8tcmVmb3JtYXRcIixcbiAgICAgICAgICAgIGRvZXNOb3RSZXF1aXJlVmFsdWU6IHRydWUsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHsgc2tpcEdlbmVyYXRlZENvZGVSZWZvcm1hdHRpbmc6IHRydWUgfSxcbiAgICAgICAgICAgIHBhcnNlOiAoaW5wdXQ6IGJvb2xlYW4pID0+ICh7IHNraXBHZW5lcmF0ZWRDb2RlUmVmb3JtYXR0aW5nOiBpbnB1dCB9KSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIFwi0J7RgtC70Y7Rh9Cw0LXRgiDRhNC+0YDQvNCw0YLQuNGA0L7QstCw0L3QuNC1INCz0LXQvdC10YDQuNGA0YPQtdC80L7Qs9C+INC60L7QtNCwLiDQoNCw0LHQvtGC0LDQtdGCLCDRgtC+0LvRjNC60L4g0LXRgdC70Lgg0LLQtdGA0YHQuNGPINCz0LXQvdC10YDQsNGC0L7RgNCwINC/0L7QtNC00LXRgNC20LjQstCw0LXRgiDRjdGC0YMg0L7Qv9GG0LjRji4g0JjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINC00LvRjyDRg9GB0LrQvtGA0LXQvdC40Y8g0YHQsdC+0YDQutC4INGE0L7RgNC8LiAoZGVmYXVsdDogdHJ1ZSlcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgYWxpYXM6IFwiZ1wiLFxuICAgICAgICAgICAgbmFtZTogXCJnZnZzXCIsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHsgZm9ybUdsb2JzOiBbXSB9LFxuICAgICAgICAgICAgcGFyc2U6IChpbnB1dDogc3RyaW5nW10pID0+ICh7IGZvcm1HbG9iczogaW5wdXQgfSksXG4gICAgICAgICAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCLQntC00L3QsCDQuNC70Lgg0L3QtdGB0LrQvtC70YzQutC+IEdGViDQuNC70LggR0ZWLdC80LDRgdC+0Log0LTQu9GPINC/0LXRgNC10YHQsdC+0YDQutC4LiDQnNC+0LbQtdGCINGB0L7QtNC10YDQttCw0YLRjCDQt9C90LDRh9C60LggYD9gINC4IGAqYC5cIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJ1c2UtdmVyc2lvbi1mcm9tLWNhY2hlXCIsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHsgdXNlVmVyc2lvbkZyb21DYWNoZTogZmFsc2UgfSxcbiAgICAgICAgICAgIHBhcnNlOiAoaW5wdXQ6IGJvb2xlYW4pID0+ICh7IHVzZVZlcnNpb25Gcm9tQ2FjaGU6IGlucHV0IH0pLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwi0JjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMINCy0LXRgNGB0LjRjiDQtNCy0LjQttC60LAg0Lgg0LPQtdC90LXRgNCw0YLQvtGA0LAg0LjQtyDRhNCw0LnQu9C+0LLQvtC5INGB0LjRgdGC0LXQvNGLXCIsXG4gICAgICAgICAgICBkb2VzTm90UmVxdWlyZVZhbHVlOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZXZNb2RlT3B0aW9uLFxuICAgICAgICBsb2dWZXJib3NpdHlPcHRpb25cbiAgICApLFxuICAgIHtcbiAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICBcItCS0YvQv9C+0LvQvdGP0LXRgiDRgdCx0L7RgNC60YMg0L7QtNC90L7QuSDQuNC70Lgg0L3QtdGB0LrQvtC70YzQutC40YUg0YTQvtGA0LwuXFxuXCIgK1xuICAgICAgICAgICAgXCLQn9C+0LTRgNC+0LHQvdC10LU6IGh0dHBzOi8vZ2l0LnNrYmtvbnR1ci5ydS9rZS9jYW5keS11dGlscy9ibG9iL25ldy1jYW5keS10b29sLWNsaS9SRUFETUUubWRcIixcblxuICAgICAgICBkZXRhaWxlZERlc2NyaXB0aW9uOiBgXG7QntGB0L3QvtCy0L3QvtC5INGB0YbQtdC90LDRgNC40Lk6INCy0YvQv9C+0LvQvdGP0LXRgiDRgdCx0L7RgNC60YMg0YTQvtGA0Lwg0LIg0LrQsNGC0LDQu9C+0LMg0YEg0YDQtdGB0YPRgNGB0LDQvNC4LiDQlNC10LnRgdGC0LLQuNGPLCDQutC+0YLQvtGA0YvQtSDQstGL0L/QvtC70L3Rj9C10YIg0LrQvtC80LDQvdC00LA6XG5cbiog0J/QvtC70YPRh9C10L3QuNC1INC00LLQuNC20LrQsCDRhNC+0YDQvCDQstC10YDRgdC40Lgg0YPQutCw0LfQsNC90L3QvtC5INCyIFxcYGZvcm0uanNvblxcYCxcbiog0L/QvtC70YPRh9C10L3QuNC1INCz0LXQvdC10YDQsNGC0L7RgNCwINGE0L7RgNC8INCy0LXRgNGB0LjQuCDRg9C60LDQt9Cw0L3QvdC+0Lkg0LIgXFxgZm9ybS5qc29uXFxgLFxuKiDQs9C10L3QtdGA0LDRhtC40Y8g0Lgg0LrQvtC80L/QuNC70Y/RhtC40Y8g0YTQvtGA0LzRiyDQsiDQutCw0YLQsNC70L7QsyDRgNC10YHRg9GA0YHQvtCyLFxuKiDRgdC+0LfQtNCw0L3QuNC1INGE0LDQudC70L7QsiBcXGB7Z2Z2fS5tZXRhcy5qc29uXFxgINCyINC60LDRgtCw0LvQvtCz0LUg0YDQtdGB0YPRgNGB0L7QslxuKiDQutC+0L/QuNGA0L7QstCw0L3QuNC1INC60L7QvdCy0LXRgNGC0LXRgNC+0LIg0LIg0LrQsNGC0LDQu9C+0LMg0YDQtdGB0YPRgNGB0L7Qsixcbiog0LrQvtC/0LjRgNC+0LLQsNC90LjQtSDRgdGF0LXQvNGLINCyINC60LDRgtCw0LvQvtCzINGA0LXRgdGD0YDRgdC+0LIuXG5gLnRyaW0oKSxcblxuICAgICAgICBleGFtcGxlczogYFxuXFxgXFxgXFxgXG4jINCh0LHQvtGA0LrQsCDRhNC+0YDQvNGLIDEwNDgxNlxuY2FuZHkgYnVpbGQgMTA0ODE2XG5cXGBcXGBcXGBcblxuXFxgXFxgXFxgXG4jINCh0LHQvtGA0LrQsCDQstGB0LUg0YTQvtGA0LzRiyDQs9GA0YPQv9C/0YsgMVxuY2FuZHkgYnVpbGQgMT8/Pz8/XG5cXGBcXGBcXGBcblxuXFxgXFxgXFxgXG4jINCh0L7QsdGA0LDRgtGMINGE0L7RgNC80YMgMTA0ODE2INC4INGB0LvQtdC00LjRgtGMINC30LAg0LjQt9C80LXQvdC10L3QuNGP0LzQuFxuY2FuZHkgYnVpbGQgMTA0ODE2IC13XG5cXGBcXGBcXGBcblxuXFxgXFxgXFxgXG4jINCY0YHQv9C+0LvRjNC30L7QstCw0YLRjCDQv9C+0YHQu9C10LTQvdGO0Y4g0L/RgNC10YDQtdC70LjQt9C90YPRjiDQstC10YDRgdC40Y4g0LTQstC40LbQutCwINGBIHByZWlkPWJzb1xuY2FuZHkgYnVpbGQgMTA0ODE2IC0tdXNlLXByZXJlbGVhc2UtdmVyc2lvbiBic29cblxcYFxcYFxcYFxuYC50cmltKCksXG5cbiAgICAgICAgZXh0ZW5kZWREZXRhaWxzOiBgXG4jIyMg0JLQtdGA0YHQuNC+0L3QuNGA0L7QstCw0L3QuNC1XG5cbtCf0YDQuCDRgdCx0L7RgNC60LUg0YTQvtGA0LwsINGD0YfQuNGC0YvQstCw0LXRgtGB0Y8g0LLQtdGA0YHQuNGPINC00LLQuNC20LrQsCDQuCDQs9C10L3QtdGA0LDRgtC+0YDQsCDRg9C60LDQt9Cw0L3QvdGL0LUg0YTQsNC50LvQtSBmb3JtLmpzb24uINCS0LXRgNGB0LjQuCDQvNC+0LPRg9GCINGD0LrQsNC30YvQstCw0YLRjCDQvdC1INC90LAg0LrQvtC90LrRgNC10YLQvdGD0Y4g0LLQtdGA0YHQuNGOLCDQsCDQsNC00YDQtdGB0L7QstCw0YLRjCDQtNC40LDQv9Cw0LfQvtC9INCyINGB0L7QvtGC0LLQtdGC0YHRgtCy0LjQuCDRgSBbc2VtdmVyXShodHRwczovL3NlbXZlci5vcmcvbGFuZy9ydS8pLlxu0JIg0Y3RgtC+0Lwg0YHQu9GD0YfQsNC1INCx0YPQtNC10YIg0LLRi9Cx0YDQsNC90LAg0L/QvtGB0LvQtdC00L3Rj9GPINC/0L7QtNGF0L7QtNGP0YnQsNGPINCy0LXRgNGB0LjRjy5cblxu0KTQsNC50LsgZm9ybS5qc29uINC00L7Qu9C20LXQvSDQstGL0LPQu9GP0LTQtdGC0Ywg0YHQu9C10LTRg9GO0YnQuNC8INC+0LHRgNCw0LfQvtC8OlxuXFxgXFxgXFxgXG57XG4gICAgLy8g0J7Qv9GG0LjQvtC90LDQu9GM0L3QvlxuICAgIFwidGhlbWVzXCI6IFtcItC40LzRjy3RgtC10LzRi1wiLCAuLi5dLFxuICAgIFwiZGVwZW5kZW5jaWVzXCI6IHtcbiAgICAgICAgXCJlbmdpbmVcIjogXCJb0LLQtdGA0YHQuNGPLdC00LLQuNC20LrQsF1cIixcbiAgICAgICAgXCJnZW5lcmF0b3JcIjogXCJb0LLQtdGA0YHQuNGPLdCz0LXQvdC10YDQsNGC0L7RgNCwXVwiXG4gICAgfVxufVxuXFxgXFxgXFxgXG5cblxcYNCy0LXRgNGB0LjRjy3QtNCy0LjQttC60LBcXGAsIFxcYNCy0LXRgNGB0LjRjy3Qs9C10L3QtdGA0LDRgtC+0YDQsFxcYCAtINCh0L7QvtGC0LLQtdGC0YHRgtCy0LXQvdC90L4sINC00LjQsNC/0LDQt9C+0L3RiyDQstC10YDRgdC40LkuINCd0LAg0LTQsNC90L3Ri9C5INC80L7QvNC10L3RgiDQstGB0LXQs9C00LAg0YHQvtCy0L/QsNC00LDRjtGCLlxuXG7QlNC+0L/Rg9GB0YLQuNC80YvQtSDQstCw0YDQuNCw0L3RgtGLINCy0LXRgNGB0LjQuTpcbiog0JLQtdGA0YHQuNGPINCyINGE0L7RgNC80LDRgtC1IFtzZW12ZXJdKGh0dHBzOi8vc2VtdmVyLm9yZy9sYW5nL3J1LykuXG4qINCS0LXRgNGB0LjRjyDRgSDQv9GA0LXRhNC40LrRgdC+0LwgcHJlLiDQndCw0L/RgNC40LzQtdGALCBcXGBwcmU6bXktc3RhbmdlLWJyYW5jaC1uYW1lXFxgLCDQs9C00LUgXFxgbXktc3RhbmdlLWJyYW5jaC1uYW1lXFxgIC0g0L3QsNC30LLQsNC90LjQtSDQv9GA0LXQtNGA0LXQu9C40LfQvdC+0Lkg0LLQtdGA0YHQuNC4LCDQstGL0L/Rg9GB0LrQsNC10LzQvtC5INGA0LDQt9GA0LDQsdC+0YLRh9C40LrQsNC80LggQ2FuZHksINC00LvRjyDQv9GA0LXQtNCy0LDRgNC40YLQtdC70YzQvdC+0LPQviDQstGL0L/Rg9GB0LrQsCDRhNC+0YDQvC5cbtCS0LXRgNGB0LjRjyDRgSDQv9GA0LXRhNC40LrRgdC+0LwgcHJlINC40YHQv9C+0LvRjNC30YPRjtGC0YHRjyDQtNC70Y8g0LTQstC40LbQutC+0LIsINC60L7RgtC+0YDRi9C1INC90LUg0Y/QstC70Y/RjtGC0YHRjyDRgdGC0LDQsdC40LvRjNC90YvQvNC4INC4INC40YHQv9C+0LvRjNC30YPRjtGC0YHRjyDQtNC70Y8g0L/RgNC10LTQstCw0YDQuNGC0LXQu9GM0L3Ri9GFINGB0LHQvtGA0L7QuiDRhNC+0YDQvC5cbmAudHJpbSgpLFxuICAgIH1cbik7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLDBCQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFBQyx1QkFBQSxHQUFBRCxPQUFBO0FBRUEsSUFBQUUsZUFBQSxHQUFBRixPQUFBO0FBZU8sTUFBTUcsMkJBQTJCLEdBQUFDLE9BQUEsQ0FBQUQsMkJBQUEsR0FBRyxJQUFBRSw0Q0FBaUIsRUFDeEQsT0FBTyxFQUNQLE9BQU8sRUFDUCxJQUFBQyw0Q0FBaUIsRUFDYjtFQUNJQyxLQUFLLEVBQUUsR0FBRztFQUNWQyxJQUFJLEVBQUUsT0FBTztFQUNiQyxZQUFZLEVBQUU7SUFBRUMsS0FBSyxFQUFFO0VBQU0sQ0FBQztFQUM5QkMsS0FBSyxFQUFFQyxLQUFLLEtBQUs7SUFBRUYsS0FBSyxFQUFFRTtFQUFNLENBQUMsQ0FBQztFQUNsQ0MsbUJBQW1CLEVBQUUsSUFBSTtFQUN6QkMsV0FBVyxFQUNQO0FBQ1IsQ0FBQyxFQUNEO0VBQ0lOLElBQUksRUFBRSxPQUFPO0VBQ2JDLFlBQVksRUFBRTtJQUFFTSxLQUFLLEVBQUU7RUFBTSxDQUFDO0VBQzlCSixLQUFLLEVBQUVDLEtBQUssS0FBSztJQUFFRyxLQUFLLEVBQUVIO0VBQU0sQ0FBQyxDQUFDO0VBQ2xDQyxtQkFBbUIsRUFBRSxJQUFJO0VBQ3pCQyxXQUFXLEVBQ1A7QUFDUixDQUFDLEVBQ0Q7RUFDSU4sSUFBSSxFQUFFLE1BQU07RUFDWkMsWUFBWSxFQUFFO0lBQUVPLElBQUksRUFBRTtFQUFjLENBQUM7RUFDckNMLEtBQUssRUFBR0MsS0FBYSxLQUFNO0lBQUVJLElBQUksRUFBRUo7RUFBTSxDQUFDLENBQUM7RUFDM0NFLFdBQVcsRUFDUDtBQUNSLENBQUMs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
|
|
160
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfQ29tbWFuZEJhc2VkT3B0aW9uc1BhcnNlciIsInJlcXVpcmUiLCJfQ29tbW9uT3B0aW9uRGVmaW50aW9ucyIsIl9CdWlsZENhY2hlTW9kZSIsImJ1aWxkRm9ybXNPcHRpb25zRGVmaW5pdGlvbiIsImV4cG9ydHMiLCJjb21tYW5kRGVmaW5pdGlvbiIsIm9wdGlvbnNEZWZpbml0aW9uIiwiYWxpYXMiLCJuYW1lIiwiZGVmYXVsdFZhbHVlIiwid2F0Y2giLCJwYXJzZSIsImlucHV0IiwiZG9lc05vdFJlcXVpcmVWYWx1ZSIsImRlc2NyaXB0aW9uIiwiY2xlYW4iLCJ1cGdyYWRlRm9ybUpzb24iLCJidWlsZENhY2hlTW9kZSIsIkJ1aWxkQ2FjaGVNb2RlIiwiUmVhZE9ubHkiLCJwYXJzZUJ1aWxkQ2FjaGVNb2RlIiwidXNlTGFzdFN0YWJsZVZlcnNpb24iLCJ1c2VQcmVyZWxlYXNlVmVyc2lvbiIsInVuZGVmaW5lZCIsInNraXBHZW5lcmF0ZWRDb2RlUmVmb3JtYXR0aW5nIiwiZm9ybUdsb2JzIiwiZGVmYXVsdE9wdGlvbiIsIm11bHRpcGxlIiwidXNlVmVyc2lvbkZyb21DYWNoZSIsImRldk1vZGVPcHRpb24iLCJsb2dWZXJib3NpdHlPcHRpb24iLCJkZXRhaWxlZERlc2NyaXB0aW9uIiwidHJpbSIsImV4YW1wbGVzIiwiZXh0ZW5kZWREZXRhaWxzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL0NMSUNvbW1hbmRzL0J1aWxkRm9ybXMvQnVpbGRGb3Jtc09wdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tbWFuZERlZmluaXRpb24sIG9wdGlvbnNEZWZpbml0aW9uIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvT3B0aW9ucy9Db21tYW5kQmFzZWRPcHRpb25zUGFyc2VyXCI7XG5pbXBvcnQgeyBDb21tb25PcHRpb25zIH0gZnJvbSBcIi4uL0NvbW1vbk9wdGlvbnMvQ29tbW9uT3B0aW9uc1wiO1xuaW1wb3J0IHsgZGV2TW9kZU9wdGlvbiwgbG9nVmVyYm9zaXR5T3B0aW9uIH0gZnJvbSBcIi4uL0NvbW1vbk9wdGlvbnMvQ29tbW9uT3B0aW9uRGVmaW50aW9uc1wiO1xuXG5pbXBvcnQgeyBCdWlsZENhY2hlTW9kZSwgcGFyc2VCdWlsZENhY2hlTW9kZSB9IGZyb20gXCIuL0J1aWxkQ2FjaGVNb2RlXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRGb3Jtc09wdGlvbnMgZXh0ZW5kcyBDb21tb25PcHRpb25zIHtcbiAgICB3YXRjaDogYm9vbGVhbjtcbiAgICBjbGVhbjogYm9vbGVhbjtcbiAgICBmb3JtR2xvYnM6IHN0cmluZ1tdO1xuICAgIHVwZ3JhZGVGb3JtSnNvbjogYm9vbGVhbjtcbiAgICB1c2VMYXN0U3RhYmxlVmVyc2lvbjogYm9vbGVhbjtcbiAgICB1c2VQcmVyZWxlYXNlVmVyc2lvbj86IHN0cmluZztcbiAgICBza2lwR2VuZXJhdGVkQ29kZVJlZm9ybWF0dGluZzogYm9vbGVhbjtcbiAgICB1c2VWZXJzaW9uRnJvbUNhY2hlOiBib29sZWFuO1xuICAgIGJ1aWxkQ2FjaGVNb2RlOiBCdWlsZENhY2hlTW9kZTtcbn1cblxuZXhwb3J0IGNvbnN0IGJ1aWxkRm9ybXNPcHRpb25zRGVmaW5pdGlvbiA9IGNvbW1hbmREZWZpbml0aW9uPFwiYnVpbGRcIiwgQnVpbGRGb3Jtc09wdGlvbnM+KFxuICAgIFwiYnVpbGRcIixcbiAgICBcImJ1aWxkXCIsXG4gICAgb3B0aW9uc0RlZmluaXRpb24oXG4gICAgICAgIHtcbiAgICAgICAgICAgIGFsaWFzOiBcIndcIixcbiAgICAgICAgICAgIG5hbWU6IFwid2F0Y2hcIixcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogeyB3YXRjaDogZmFsc2UgfSxcbiAgICAgICAgICAgIHBhcnNlOiBpbnB1dCA9PiAoeyB3YXRjaDogaW5wdXQgfSksXG4gICAgICAgICAgICBkb2VzTm90UmVxdWlyZVZhbHVlOiB0cnVlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgXCJXYXRjaC3RgNC10LbQuNC8LiDQktGL0L/QvtC70L3Rj9C10YIg0YHQsdC+0YDQutGDINGE0L7RgNC8LCDQsCDQt9Cw0YLQtdC8INC/0LXRgNC10YHQvtCx0LjRgNCw0LXRgiDQv9GA0Lgg0LjQt9C80LXQvdC10L3QuNGP0YUuINCSINGC0L7QvCDRh9C40YHQu9C1INC00LLQuNC20LrQsCwg0LPQtdC90LXRgNCw0YLQvtGA0LAg0Lgg0YHRgtCw0YLQuNGH0LXRgdC60LjRhSDRgNC10YHRg9GA0YHQvtCyLlwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImNsZWFuXCIsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHsgY2xlYW46IGZhbHNlIH0sXG4gICAgICAgICAgICBwYXJzZTogaW5wdXQgPT4gKHsgY2xlYW46IGlucHV0IH0pLFxuICAgICAgICAgICAgZG9lc05vdFJlcXVpcmVWYWx1ZTogdHJ1ZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIFwi0J/QvtC70L3QvtGB0YLRjNGOINC+0YfQuNGJ0LDQtdGCINGG0LXQu9C10LLQvtC5INC60LDRgtCw0LvQvtCzINGA0LXRgdGD0YDRgdC+0LIuINCY0YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQv9GA0Lgg0L/QvtC70L3QvtC5INGB0LHQvtGA0LrQtSDRhNC+0YDQvCDQtNC70Y8g0L/RgNC+0LTQsNC60YjQtdC90LBcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJ1cGdyYWRlLWZvcm0tanNvblwiLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiB7IHVwZ3JhZGVGb3JtSnNvbjogZmFsc2UgfSxcbiAgICAgICAgICAgIHBhcnNlOiBpbnB1dCA9PiAoeyB1cGdyYWRlRm9ybUpzb246IGlucHV0IH0pLFxuICAgICAgICAgICAgZG9lc05vdFJlcXVpcmVWYWx1ZTogdHJ1ZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcItCk0L7RgNGB0LjRgNGD0LXRgiDQuNC30LzQtdC90LXQvdC40LUg0YTQvtGA0LzQsNGC0LAg0YTQsNC50LvQsCBmb3JtLmpzb24g0L3QsCDQvdC+0LLRi9C5XCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiYnVpbGQtY2FjaGVcIixcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogeyBidWlsZENhY2hlTW9kZTogQnVpbGRDYWNoZU1vZGUuUmVhZE9ubHkgfSxcbiAgICAgICAgICAgIHBhcnNlOiAoaW5wdXQ6IHN0cmluZykgPT4gKHsgYnVpbGRDYWNoZU1vZGU6IHBhcnNlQnVpbGRDYWNoZU1vZGUoaW5wdXQpIH0pLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgXCLQl9Cw0LTQsNGR0YIg0YDQtdC20LjQvCDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyDQutGN0YjQsCDRgdCx0L7RgNC60LguINCS0L7Qt9C80L7QttC90YvQtSDQt9C90LDRh9C10L3QuNGPOlxcblwiICtcbiAgICAgICAgICAgICAgICBcIiAgZGlzYWJsZWQgLSDQvdC1INC40YHQv9C+0LvRjNC30L7QstCw0YLRjCDQutGN0YhcXG5cIiArXG4gICAgICAgICAgICAgICAgXCIgIHJlYWRvbmx5IC0g0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMINC60Y3RiCDQtNC70Y8g0YHQsdC+0YDQutC4LCDQvdC+INC90LUg0L7QsdC90L7QstC70Y/QtdGCINC10LPQviAo0LfQvdCw0YfQtdC90LjQtSDQv9C+INGD0LzQvtC70YfQsNC90LjRjilcXG5cIiArXG4gICAgICAgICAgICAgICAgXCIgIHVwZGF0ZSAtINC40YHQv9C+0LvRjNC30L7QstCw0YLRjCDQutGN0Ygg0LTQu9GPINGB0LHQvtGA0LrQuCDQuCDQv9GA0LXQt9Cw0L/QuNGB0YvQstCw0YLRjCwg0LXRgdC70Lgg0L3QtSDRgdC+0LLQv9Cw0LTQsNC10YJcXG5cIiArXG4gICAgICAgICAgICAgICAgXCIgIGZvcmNlLXVwZGF0ZSAtINCy0YHQtdCz0LTQsCDQstGL0L/QvtC70L3Rj9GC0Ywg0YHQsdC+0YDQutGDINC4INC+0LHQvdC+0LLQuNGC0Ywg0LfQvdCw0YfQtdC90LjRjyDQsiDQutGN0YjQtVxcblwiICtcbiAgICAgICAgICAgICAgICBcItCe0YLQutC70Y7Rh9Cw0LXRgtGB0Y8g0L/RgNC4INC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC4IHdhdGNoLdGA0LXQttC40LzQsFwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcInVzZS1sYXN0LXN0YWJsZS12ZXJzaW9uXCIsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHsgdXNlTGFzdFN0YWJsZVZlcnNpb246IGZhbHNlIH0sXG4gICAgICAgICAgICBwYXJzZTogaW5wdXQgPT4gKHsgdXNlTGFzdFN0YWJsZVZlcnNpb246IGlucHV0IH0pLFxuICAgICAgICAgICAgZG9lc05vdFJlcXVpcmVWYWx1ZTogdHJ1ZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIFwi0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIg0LLQtdGA0YHQuNGOINC00LLQuNC20LrQsCDQsiDRhNCw0LnQu9CwIGBmb3JtLmpzb25gINCyINC/0L7RgdC70LXQtNC90Y7RjiDRgdGC0LDQsdC40LvRjNC90YPRjiDQstC10YDRgdC40Y4uINCQ0L3QsNC70L7Qs9C40YfQtdC9INC30LDQv9GD0YHQutGDIGNhbmR5LWJ1aWxkINGBINC/0LDRgNCw0LzQtdGC0YDQvtC8IC1nZSBtYXN0ZXJcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJ1c2UtcHJlcmVsZWFzZS12ZXJzaW9uXCIsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHsgdXNlUHJlcmVsZWFzZVZlcnNpb246IHVuZGVmaW5lZCBhcyB1bmRlZmluZWQgfCBzdHJpbmcgfSxcbiAgICAgICAgICAgIHBhcnNlOiAoaW5wdXQ6IHN0cmluZykgPT4gKHsgdXNlUHJlcmVsZWFzZVZlcnNpb246IGlucHV0IH0pLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgXCLQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiDQstC10YDRgdC40Y4g0LTQstC40LbQutCwINCyINGE0LDQudC70LAgZm9ybS5qc29uINCyINC/0L7RgdC70LXQtNC90Y7RjiDQv9GA0LXRgNC10LvQuNC30L3Rg9GOINCy0LXRgNGB0LjRjiDQsiDQt9Cw0LTQsNC90L3Ri9C8IHByZWlkLiDQkiDRhNCw0LnQu9C1INCy0LXRgNGB0LjQuCDQs9C10L3QtdGA0LDRgtC+0YDQsCDQuCDQtNCy0LjQttC60LAg0LHRg9C00YPRgiDRg9GB0YLQsNC90L7QstC70LXQvdGLINCyIHByZTpzb21lLXByZWlkLlwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIm5vLXJlZm9ybWF0XCIsXG4gICAgICAgICAgICBkb2VzTm90UmVxdWlyZVZhbHVlOiB0cnVlLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiB7IHNraXBHZW5lcmF0ZWRDb2RlUmVmb3JtYXR0aW5nOiB0cnVlIH0sXG4gICAgICAgICAgICBwYXJzZTogKGlucHV0OiBib29sZWFuKSA9PiAoeyBza2lwR2VuZXJhdGVkQ29kZVJlZm9ybWF0dGluZzogaW5wdXQgfSksXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICBcItCe0YLQu9GO0YfQsNC10YIg0YTQvtGA0LzQsNGC0LjRgNC+0LLQsNC90LjQtSDQs9C10L3QtdGA0LjRgNGD0LXQvNC+0LPQviDQutC+0LTQsC4g0KDQsNCx0L7RgtCw0LXRgiwg0YLQvtC70YzQutC+INC10YHQu9C4INCy0LXRgNGB0LjRjyDQs9C10L3QtdGA0LDRgtC+0YDQsCDQv9C+0LTQtNC10YDQttC40LLQsNC10YIg0Y3RgtGDINC+0L/RhtC40Y4uINCY0YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQtNC70Y8g0YPRgdC60L7RgNC10L3QuNGPINGB0LHQvtGA0LrQuCDRhNC+0YDQvC4gKGRlZmF1bHQ6IHRydWUpXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGFsaWFzOiBcImdcIixcbiAgICAgICAgICAgIG5hbWU6IFwiZ2Z2c1wiLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiB7IGZvcm1HbG9iczogW10gfSxcbiAgICAgICAgICAgIHBhcnNlOiAoaW5wdXQ6IHN0cmluZ1tdKSA9PiAoeyBmb3JtR2xvYnM6IGlucHV0IH0pLFxuICAgICAgICAgICAgZGVmYXVsdE9wdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwi0J7QtNC90LAg0LjQu9C4INC90LXRgdC60L7Qu9GM0LrQviBHRlYg0LjQu9C4IEdGVi3QvNCw0YHQvtC6INC00LvRjyDQv9C10YDQtdGB0LHQvtGA0LrQuC4g0JzQvtC20LXRgiDRgdC+0LTQtdGA0LbQsNGC0Ywg0LfQvdCw0YfQutC4IGA/YCDQuCBgKmAuXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwidXNlLXZlcnNpb24tZnJvbS1jYWNoZVwiLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiB7IHVzZVZlcnNpb25Gcm9tQ2FjaGU6IGZhbHNlIH0sXG4gICAgICAgICAgICBwYXJzZTogKGlucHV0OiBib29sZWFuKSA9PiAoeyB1c2VWZXJzaW9uRnJvbUNhY2hlOiBpbnB1dCB9KSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcItCY0YHQv9C+0LvRjNC30L7QstCw0YLRjCDQstC10YDRgdC40Y4g0LTQstC40LbQutCwINC4INCz0LXQvdC10YDQsNGC0L7RgNCwINC40Lcg0YTQsNC50LvQvtCy0L7QuSDRgdC40YHRgtC10LzRi1wiLFxuICAgICAgICAgICAgZG9lc05vdFJlcXVpcmVWYWx1ZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGV2TW9kZU9wdGlvbixcbiAgICAgICAgbG9nVmVyYm9zaXR5T3B0aW9uXG4gICAgKSxcbiAgICB7XG4gICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgXCLQktGL0L/QvtC70L3Rj9C10YIg0YHQsdC+0YDQutGDINC+0LTQvdC+0Lkg0LjQu9C4INC90LXRgdC60L7Qu9GM0LrQuNGFINGE0L7RgNC8LlxcblwiICtcbiAgICAgICAgICAgIFwi0J/QvtC00YDQvtCx0L3QtdC1OiBodHRwczovL2dpdC5za2Jrb250dXIucnUva2UvY2FuZHktdXRpbHMvYmxvYi9uZXctY2FuZHktdG9vbC1jbGkvUkVBRE1FLm1kXCIsXG5cbiAgICAgICAgZGV0YWlsZWREZXNjcmlwdGlvbjogYFxu0J7RgdC90L7QstC90L7QuSDRgdGG0LXQvdCw0YDQuNC5OiDQstGL0L/QvtC70L3Rj9C10YIg0YHQsdC+0YDQutGDINGE0L7RgNC8INCyINC60LDRgtCw0LvQvtCzINGBINGA0LXRgdGD0YDRgdCw0LzQuC4g0JTQtdC50YHRgtCy0LjRjywg0LrQvtGC0L7RgNGL0LUg0LLRi9C/0L7Qu9C90Y/QtdGCINC60L7QvNCw0L3QtNCwOlxuXG4qINCf0L7Qu9GD0YfQtdC90LjQtSDQtNCy0LjQttC60LAg0YTQvtGA0Lwg0LLQtdGA0YHQuNC4INGD0LrQsNC30LDQvdC90L7QuSDQsiBcXGBmb3JtLmpzb25cXGAsXG4qINC/0L7Qu9GD0YfQtdC90LjQtSDQs9C10L3QtdGA0LDRgtC+0YDQsCDRhNC+0YDQvCDQstC10YDRgdC40Lgg0YPQutCw0LfQsNC90L3QvtC5INCyIFxcYGZvcm0uanNvblxcYCxcbiog0LPQtdC90LXRgNCw0YbQuNGPINC4INC60L7QvNC/0LjQu9GP0YbQuNGPINGE0L7RgNC80Ysg0LIg0LrQsNGC0LDQu9C+0LMg0YDQtdGB0YPRgNGB0L7Qsixcbiog0YHQvtC30LTQsNC90LjQtSDRhNCw0LnQu9C+0LIgXFxge2dmdn0ubWV0YXMuanNvblxcYCDQsiDQutCw0YLQsNC70L7Qs9C1INGA0LXRgdGD0YDRgdC+0LJcbiog0LrQvtC/0LjRgNC+0LLQsNC90LjQtSDQutC+0L3QstC10YDRgtC10YDQvtCyINCyINC60LDRgtCw0LvQvtCzINGA0LXRgdGD0YDRgdC+0LIsXG4qINC60L7Qv9C40YDQvtCy0LDQvdC40LUg0YHRhdC10LzRiyDQsiDQutCw0YLQsNC70L7QsyDRgNC10YHRg9GA0YHQvtCyLlxuYC50cmltKCksXG5cbiAgICAgICAgZXhhbXBsZXM6IGBcblxcYFxcYFxcYFxuIyDQodCx0L7RgNC60LAg0YTQvtGA0LzRiyAxMDQ4MTZcbmNhbmR5IGJ1aWxkIDEwNDgxNlxuXFxgXFxgXFxgXG5cblxcYFxcYFxcYFxuIyDQodCx0L7RgNC60LAg0LLRgdC1INGE0L7RgNC80Ysg0LPRgNGD0L/Qv9GLIDFcbmNhbmR5IGJ1aWxkIDE/Pz8/P1xuXFxgXFxgXFxgXG5cblxcYFxcYFxcYFxuIyDQodC+0LHRgNCw0YLRjCDRhNC+0YDQvNGDIDEwNDgxNiDQuCDRgdC70LXQtNC40YLRjCDQt9CwINC40LfQvNC10L3QtdC90LjRj9C80LhcbmNhbmR5IGJ1aWxkIDEwNDgxNiAtd1xuXFxgXFxgXFxgXG5cblxcYFxcYFxcYFxuIyDQmNGB0L/QvtC70YzQt9C+0LLQsNGC0Ywg0L/QvtGB0LvQtdC00L3RjtGOINC/0YDQtdGA0LXQu9C40LfQvdGD0Y4g0LLQtdGA0YHQuNGOINC00LLQuNC20LrQsCDRgSBwcmVpZD1ic29cbmNhbmR5IGJ1aWxkIDEwNDgxNiAtLXVzZS1wcmVyZWxlYXNlLXZlcnNpb24gYnNvXG5cXGBcXGBcXGBcbmAudHJpbSgpLFxuXG4gICAgICAgIGV4dGVuZGVkRGV0YWlsczogYFxuIyMjINCS0LXRgNGB0LjQvtC90LjRgNC+0LLQsNC90LjQtVxuXG7Qn9GA0Lgg0YHQsdC+0YDQutC1INGE0L7RgNC8LCDRg9GH0LjRgtGL0LLQsNC10YLRgdGPINCy0LXRgNGB0LjRjyDQtNCy0LjQttC60LAg0Lgg0LPQtdC90LXRgNCw0YLQvtGA0LAg0YPQutCw0LfQsNC90L3Ri9C1INGE0LDQudC70LUgZm9ybS5qc29uLiDQktC10YDRgdC40Lgg0LzQvtCz0YPRgiDRg9C60LDQt9GL0LLQsNGC0Ywg0L3QtSDQvdCwINC60L7QvdC60YDQtdGC0L3Rg9GOINCy0LXRgNGB0LjRjiwg0LAg0LDQtNGA0LXRgdC+0LLQsNGC0Ywg0LTQuNCw0L/QsNC30L7QvSDQsiDRgdC+0L7RgtCy0LXRgtGB0YLQstC40Lgg0YEgW3NlbXZlcl0oaHR0cHM6Ly9zZW12ZXIub3JnL2xhbmcvcnUvKS5cbtCSINGN0YLQvtC8INGB0LvRg9GH0LDQtSDQsdGD0LTQtdGCINCy0YvQsdGA0LDQvdCwINC/0L7RgdC70LXQtNC90Y/RjyDQv9C+0LTRhdC+0LTRj9GJ0LDRjyDQstC10YDRgdC40Y8uXG5cbtCk0LDQudC7IGZvcm0uanNvbiDQtNC+0LvQttC10L0g0LLRi9Cz0LvRj9C00LXRgtGMINGB0LvQtdC00YPRjtGJ0LjQvCDQvtCx0YDQsNC30L7QvDpcblxcYFxcYFxcYFxue1xuICAgIC8vINCe0L/RhtC40L7QvdCw0LvRjNC90L5cbiAgICBcInRoZW1lc1wiOiBbXCLQuNC80Y8t0YLQtdC80YtcIiwgLi4uXSxcbiAgICBcImRlcGVuZGVuY2llc1wiOiB7XG4gICAgICAgIFwiZW5naW5lXCI6IFwiW9Cy0LXRgNGB0LjRjy3QtNCy0LjQttC60LBdXCIsXG4gICAgICAgIFwiZ2VuZXJhdG9yXCI6IFwiW9Cy0LXRgNGB0LjRjy3Qs9C10L3QtdGA0LDRgtC+0YDQsF1cIlxuICAgIH1cbn1cblxcYFxcYFxcYFxuXG5cXGDQstC10YDRgdC40Y8t0LTQstC40LbQutCwXFxgLCBcXGDQstC10YDRgdC40Y8t0LPQtdC90LXRgNCw0YLQvtGA0LBcXGAgLSDQodC+0L7RgtCy0LXRgtGB0YLQstC10L3QvdC+LCDQtNC40LDQv9Cw0LfQvtC90Ysg0LLQtdGA0YHQuNC5LiDQndCwINC00LDQvdC90YvQuSDQvNC+0LzQtdC90YIg0LLRgdC10LPQtNCwINGB0L7QstC/0LDQtNCw0Y7Rgi5cblxu0JTQvtC/0YPRgdGC0LjQvNGL0LUg0LLQsNGA0LjQsNC90YLRiyDQstC10YDRgdC40Lk6XG4qINCS0LXRgNGB0LjRjyDQsiDRhNC+0YDQvNCw0YLQtSBbc2VtdmVyXShodHRwczovL3NlbXZlci5vcmcvbGFuZy9ydS8pLlxuKiDQktC10YDRgdC40Y8g0YEg0L/RgNC10YTQuNC60YHQvtC8IHByZS4g0J3QsNC/0YDQuNC80LXRgCwgXFxgcHJlOm15LXN0YW5nZS1icmFuY2gtbmFtZVxcYCwg0LPQtNC1IFxcYG15LXN0YW5nZS1icmFuY2gtbmFtZVxcYCAtINC90LDQt9Cy0LDQvdC40LUg0L/RgNC10LTRgNC10LvQuNC30L3QvtC5INCy0LXRgNGB0LjQuCwg0LLRi9C/0YPRgdC60LDQtdC80L7QuSDRgNCw0LfRgNCw0LHQvtGC0YfQuNC60LDQvNC4IENhbmR5LCDQtNC70Y8g0L/RgNC10LTQstCw0YDQuNGC0LXQu9GM0L3QvtCz0L4g0LLRi9C/0YPRgdC60LAg0YTQvtGA0LwuXG7QktC10YDRgdC40Y8g0YEg0L/RgNC10YTQuNC60YHQvtC8IHByZSDQuNGB0L/QvtC70YzQt9GD0Y7RgtGB0Y8g0LTQu9GPINC00LLQuNC20LrQvtCyLCDQutC+0YLQvtGA0YvQtSDQvdC1INGP0LLQu9GP0Y7RgtGB0Y8g0YHRgtCw0LHQuNC70YzQvdGL0LzQuCDQuCDQuNGB0L/QvtC70YzQt9GD0Y7RgtGB0Y8g0LTQu9GPINC/0YDQtdC00LLQsNGA0LjRgtC10LvRjNC90YvRhSDRgdCx0L7RgNC+0Log0YTQvtGA0LwuXG5gLnRyaW0oKSxcbiAgICB9XG4pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSwwQkFBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsdUJBQUEsR0FBQUQsT0FBQTtBQUVBLElBQUFFLGVBQUEsR0FBQUYsT0FBQTtBQWNPLE1BQU1HLDJCQUEyQixHQUFBQyxPQUFBLENBQUFELDJCQUFBLEdBQUcsSUFBQUUsNENBQWlCLEVBQ3hELE9BQU8sRUFDUCxPQUFPLEVBQ1AsSUFBQUMsNENBQWlCLEVBQ2I7RUFDSUMsS0FBSyxFQUFFLEdBQUc7RUFDVkMsSUFBSSxFQUFFLE9BQU87RUFDYkMsWUFBWSxFQUFFO0lBQUVDLEtBQUssRUFBRTtFQUFNLENBQUM7RUFDOUJDLEtBQUssRUFBRUMsS0FBSyxLQUFLO0lBQUVGLEtBQUssRUFBRUU7RUFBTSxDQUFDLENBQUM7RUFDbENDLG1CQUFtQixFQUFFLElBQUk7RUFDekJDLFdBQVcsRUFDUDtBQUNSLENBQUMsRUFDRDtFQUNJTixJQUFJLEVBQUUsT0FBTztFQUNiQyxZQUFZLEVBQUU7SUFBRU0sS0FBSyxFQUFFO0VBQU0sQ0FBQztFQUM5QkosS0FBSyxFQUFFQyxLQUFLLEtBQUs7SUFBRUcsS0FBSyxFQUFFSDtFQUFNLENBQUMsQ0FBQztFQUNsQ0MsbUJBQW1CLEVBQUUsSUFBSTtFQUN6QkMsV0FBVyxFQUNQO0FBQ1IsQ0FBQyxFQUNEO0VBQ0lOLElBQUksRUFBRSxtQkFBbUI7RUFDekJDLFlBQVksRUFBRTtJQUFFTyxlQUFlLEVBQUU7RUFBTSxDQUFDO0VBQ3hDTCxLQUFLLEVBQUVDLEtBQUssS0FBSztJQUFFSSxlQUFlLEVBQUVKO0VBQU0sQ0FBQyxDQUFDO0VBQzVDQyxtQkFBbUIsRUFBRSxJQUFJO0VBQ3pCQyxXQUFXLEVBQUU7QUFDakIsQ0FBQyxFQUNEO0VBQ0lOLElBQUksRUFBRSxhQUFhO0VBQ25CQyxZQUFZLEVBQUU7SUFBRVEsY0FBYyxFQUFFQyw4QkFBYyxDQUFDQztFQUFTLENBQUM7RUFDekRSLEtBQUssRUFBR0MsS0FBYSxLQUFNO0lBQUVLLGNBQWMsRUFBRSxJQUFBRyxtQ0FBbUIsRUFBQ1IsS0FBSztFQUFFLENBQUMsQ0FBQztFQUMxRUUsV0FBVyxFQUNQLCtEQUErRCxHQUMvRCxvQ0FBb0MsR0FDcEMseUZBQXlGLEdBQ3pGLDZFQUE2RSxHQUM3RSx1RUFBdUUsR0FDdkU7QUFDUixDQUFDLEVBQ0Q7RUFDSU4sSUFBSSxFQUFFLHlCQUF5QjtFQUMvQkMsWUFBWSxFQUFFO0lBQUVZLG9CQUFvQixFQUFFO0VBQU0sQ0FBQztFQUM3Q1YsS0FBSyxFQUFFQyxLQUFLLEtBQUs7SUFBRVMsb0JBQW9CLEVBQUVUO0VBQU0sQ0FBQyxDQUFDO0VBQ2pEQyxtQkFBbUIsRUFBRSxJQUFJO0VBQ3pCQyxXQUFXLEVBQ1A7QUFDUixDQUFDLEVBQ0Q7RUFDSU4sSUFBSSxFQUFFLHdCQUF3QjtFQUM5QkMsWUFBWSxFQUFFO0lBQUVhLG9CQUFvQixFQUFFQztFQUFnQyxDQUFDO0VBQ3ZFWixLQUFLLEVBQUdDLEtBQWEsS0FBTTtJQUFFVSxvQkFBb0IsRUFBRVY7RUFBTSxDQUFDLENBQUM7RUFDM0RFLFdBQVcsRUFDUDtBQUNSLENBQUMsRUFDRDtFQUNJTixJQUFJLEVBQUUsYUFBYTtFQUNuQkssbUJBQW1CLEVBQUUsSUFBSTtFQUN6QkosWUFBWSxFQUFFO0lBQUVlLDZCQUE2QixFQUFFO0VBQUssQ0FBQztFQUNyRGIsS0FBSyxFQUFHQyxLQUFjLEtBQU07SUFBRVksNkJBQTZCLEVBQUVaO0VBQU0sQ0FBQyxDQUFDO0VBQ3JFRSxXQUFXLEVBQ1A7QUFDUixDQUFDLEVBQ0Q7RUFDSVAsS0FBSyxFQUFFLEdBQUc7RUFDVkMsSUFBSSxFQUFFLE1BQU07RUFDWkMsWUFBWSxFQUFFO0lBQUVnQixTQUFTLEVBQUU7RUFBRyxDQUFDO0VBQy9CZCxLQUFLLEVBQUdDLEtBQWUsS0FBTTtJQUFFYSxTQUFTLEVBQUViO0VBQU0sQ0FBQyxDQUFDO0VBQ2xEYyxhQUFhLEVBQUUsSUFBSTtFQUNuQkMsUUFBUSxFQUFFLElBQUk7RUFDZGIsV0FBVyxFQUFFO0FBQ2pCLENBQUMsRUFDRDtFQUNJTixJQUFJLEVBQUUsd0JBQXdCO0VBQzlCQyxZQUFZLEVBQUU7SUFBRW1CLG1CQUFtQixFQUFFO0VBQU0sQ0FBQztFQUM1Q2pCLEtBQUssRUFBR0MsS0FBYyxLQUFNO0lBQUVnQixtQkFBbUIsRUFBRWhCO0VBQU0sQ0FBQyxDQUFDO0VBQzNERSxXQUFXLEVBQUUsNkRBQTZEO0VBQzFFRCxtQkFBbUIsRUFBRTtBQUN6QixDQUFDLEVBQ0RnQixxQ0FBYSxFQUNiQywwQ0FDSixDQUFDLEVBQ0Q7RUFDSWhCLFdBQVcsRUFDUCwrQ0FBK0MsR0FDL0Msc0ZBQXNGO0VBRTFGaUIsbUJBQW1CLEVBQUU7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLENBQUM7RUFFQUMsUUFBUSxFQUFFO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDRCxJQUFJLENBQUMsQ0FBQztFQUVBRSxlQUFlLEVBQUU7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQ0YsSUFBSSxDQUFDO0FBQ0gsQ0FDSixDQUFDIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuildFormsOptions.js","names":["_CommandBasedOptionsParser","require","_CommonOptionDefintions","_BuildCacheMode","buildFormsOptionsDefinition","exports","commandDefinition","optionsDefinition","alias","name","defaultValue","watch","parse","input","doesNotRequireValue","description","clean","mode","upgradeFormJson","buildCacheMode","BuildCacheMode","ReadOnly","parseBuildCacheMode","useLastStableVersion","usePrereleaseVersion","undefined","skipGeneratedCodeReformatting","formGlobs","defaultOption","multiple","useVersionFromCache","devModeOption","logVerbosityOption","detailedDescription","trim","examples","extendedDetails"],"sources":["../../../../../src/CLICommands/BuildForms/BuildFormsOptions.ts"],"sourcesContent":["import { commandDefinition, optionsDefinition } from \"../../Commons/Options/CommandBasedOptionsParser\";\nimport { CommonOptions } from \"../CommonOptions/CommonOptions\";\nimport { devModeOption, logVerbosityOption } from \"../CommonOptions/CommonOptionDefintions\";\n\nimport { BuildCacheMode, parseBuildCacheMode } from \"./BuildCacheMode\";\n\nexport interface BuildFormsOptions extends CommonOptions {\n watch: boolean;\n clean: boolean;\n formGlobs: string[];\n upgradeFormJson: boolean;\n useLastStableVersion: boolean;\n usePrereleaseVersion?: string;\n skipGeneratedCodeReformatting: boolean;\n useVersionFromCache: boolean;\n mode: \"development\" | \"production\";\n buildCacheMode: BuildCacheMode;\n}\n\nexport const buildFormsOptionsDefinition = commandDefinition<\"build\", BuildFormsOptions>(\n \"build\",\n \"build\",\n optionsDefinition(\n {\n alias: \"w\",\n name: \"watch\",\n defaultValue: { watch: false },\n parse: input => ({ watch: input }),\n doesNotRequireValue: true,\n description:\n \"Watch-режим. Выполняет сборку форм, а затем пересобирает при изменениях. В том числе движка, генератора и статических ресурсов.\",\n },\n {\n name: \"clean\",\n defaultValue: { clean: false },\n parse: input => ({ clean: input }),\n doesNotRequireValue: true,\n description:\n \"Полностью очищает целевой каталог ресурсов. Используется при полной сборке форм для продакшена\",\n },\n {\n name: \"mode\",\n defaultValue: { mode: \"development\" },\n parse: (input: string) => ({ mode: input }),\n description:\n \"Разделение сборок на продовую (mode=production) и не продовую (mode=development). По умолчанию development\",\n },\n {\n name: \"upgrade-form-json\",\n defaultValue: { upgradeFormJson: false },\n parse: input => ({ upgradeFormJson: input }),\n doesNotRequireValue: true,\n description: \"Форсирует изменение формата файла form.json на новый\",\n },\n {\n name: \"build-cache\",\n defaultValue: { buildCacheMode: BuildCacheMode.ReadOnly },\n parse: (input: string) => ({ buildCacheMode: parseBuildCacheMode(input) }),\n description:\n \"Задаёт режим использования кэша сборки. Возможные значения:\\n\" +\n \" disabled - не использовать кэш\\n\" +\n \" readonly - использовать кэш для сборки, но не обновляет его (значение по умолчанию)\\n\" +\n \" update - использовать кэш для сборки и презаписывать, если не совпадает\\n\" +\n \" force-update - всегда выполнять сборку и обновить значения в кэше\\n\" +\n \"Отключается при использовании watch-режима\",\n },\n {\n name: \"use-last-stable-version\",\n defaultValue: { useLastStableVersion: false },\n parse: input => ({ useLastStableVersion: input }),\n doesNotRequireValue: true,\n description:\n \"Устанавливает версию движка в файла `form.json` в последнюю стабильную версию. Аналогичен запуску candy-build с параметром -ge master\",\n },\n {\n name: \"use-prerelease-version\",\n defaultValue: { usePrereleaseVersion: undefined as undefined | string },\n parse: (input: string) => ({ usePrereleaseVersion: input }),\n description:\n \"Устанавливает версию движка в файла form.json в последнюю пререлизную версию в заданным preid. В файле версии генератора и движка будут установлены в pre:some-preid.\",\n },\n {\n name: \"no-reformat\",\n doesNotRequireValue: true,\n defaultValue: { skipGeneratedCodeReformatting: true },\n parse: (input: boolean) => ({ skipGeneratedCodeReformatting: input }),\n description:\n \"Отлючает форматирование генерируемого кода. Работает, только если версия генератора поддерживает эту опцию. Используется для ускорения сборки форм. (default: true)\",\n },\n {\n alias: \"g\",\n name: \"gfvs\",\n defaultValue: { formGlobs: [] },\n parse: (input: string[]) => ({ formGlobs: input }),\n defaultOption: true,\n multiple: true,\n description: \"Одна или несколько GFV или GFV-масок для пересборки. Может содержать значки `?` и `*`.\",\n },\n {\n name: \"use-version-from-cache\",\n defaultValue: { useVersionFromCache: false },\n parse: (input: boolean) => ({ useVersionFromCache: input }),\n description: \"Использовать версию движка и генератора из файловой системы\",\n doesNotRequireValue: true,\n },\n devModeOption,\n logVerbosityOption\n ),\n {\n description:\n \"Выполняет сборку одной или нескольких форм.\\n\" +\n \"Подробнее: https://git.skbkontur.ru/ke/candy-utils/blob/new-candy-tool-cli/README.md\",\n\n detailedDescription: `\nОсновной сценарий: выполняет сборку форм в каталог с ресурсами. Действия, которые выполняет команда:\n\n* Получение движка форм версии указанной в \\`form.json\\`,\n* получение генератора форм версии указанной в \\`form.json\\`,\n* генерация и компиляция формы в каталог ресурсов,\n* создание файлов \\`{gfv}.metas.json\\` в каталоге ресурсов\n* копирование конвертеров в каталог ресурсов,\n* копирование схемы в каталог ресурсов.\n`.trim(),\n\n examples: `\n\\`\\`\\`\n# Сборка формы 104816\ncandy build 104816\n\\`\\`\\`\n\n\\`\\`\\`\n# Сборка все формы группы 1\ncandy build 1?????\n\\`\\`\\`\n\n\\`\\`\\`\n# Собрать форму 104816 и следить за изменениями\ncandy build 104816 -w\n\\`\\`\\`\n\n\\`\\`\\`\n# Использовать последнюю пререлизную версию движка с preid=bso\ncandy build 104816 --use-prerelease-version bso\n\\`\\`\\`\n`.trim(),\n\n extendedDetails: `\n### Версионирование\n\nПри сборке форм, учитывается версия движка и генератора указанные файле form.json. Версии могут указывать не на конкретную версию, а адресовать диапазон в соответствии с [semver](https://semver.org/lang/ru/).\nВ этом случае будет выбрана последняя подходящая версия.\n\nФайл form.json должен выглядеть следующим образом:\n\\`\\`\\`\n{\n // Опционально\n \"themes\": [\"имя-темы\", ...],\n \"dependencies\": {\n \"engine\": \"[версия-движка]\",\n \"generator\": \"[версия-генератора]\"\n }\n}\n\\`\\`\\`\n\n\\`версия-движка\\`, \\`версия-генератора\\` - Соответственно, диапазоны версий. На данный момент всегда совпадают.\n\nДопустимые варианты версий:\n* Версия в формате [semver](https://semver.org/lang/ru/).\n* Версия с префиксом pre. Например, \\`pre:my-stange-branch-name\\`, где \\`my-stange-branch-name\\` - название предрелизной версии, выпускаемой разработчиками Candy, для предварительного выпуска форм.\nВерсия с префиксом pre используются для движков, которые не являются стабильными и используются для предварительных сборок форм.\n`.trim(),\n }\n);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"BuildFormsOptions.js","names":["_CommandBasedOptionsParser","require","_CommonOptionDefintions","_BuildCacheMode","buildFormsOptionsDefinition","exports","commandDefinition","optionsDefinition","alias","name","defaultValue","watch","parse","input","doesNotRequireValue","description","clean","upgradeFormJson","buildCacheMode","BuildCacheMode","ReadOnly","parseBuildCacheMode","useLastStableVersion","usePrereleaseVersion","undefined","skipGeneratedCodeReformatting","formGlobs","defaultOption","multiple","useVersionFromCache","devModeOption","logVerbosityOption","detailedDescription","trim","examples","extendedDetails"],"sources":["../../../../../src/CLICommands/BuildForms/BuildFormsOptions.ts"],"sourcesContent":["import { commandDefinition, optionsDefinition } from \"../../Commons/Options/CommandBasedOptionsParser\";\nimport { CommonOptions } from \"../CommonOptions/CommonOptions\";\nimport { devModeOption, logVerbosityOption } from \"../CommonOptions/CommonOptionDefintions\";\n\nimport { BuildCacheMode, parseBuildCacheMode } from \"./BuildCacheMode\";\n\nexport interface BuildFormsOptions extends CommonOptions {\n watch: boolean;\n clean: boolean;\n formGlobs: string[];\n upgradeFormJson: boolean;\n useLastStableVersion: boolean;\n usePrereleaseVersion?: string;\n skipGeneratedCodeReformatting: boolean;\n useVersionFromCache: boolean;\n buildCacheMode: BuildCacheMode;\n}\n\nexport const buildFormsOptionsDefinition = commandDefinition<\"build\", BuildFormsOptions>(\n \"build\",\n \"build\",\n optionsDefinition(\n {\n alias: \"w\",\n name: \"watch\",\n defaultValue: { watch: false },\n parse: input => ({ watch: input }),\n doesNotRequireValue: true,\n description:\n \"Watch-режим. Выполняет сборку форм, а затем пересобирает при изменениях. В том числе движка, генератора и статических ресурсов.\",\n },\n {\n name: \"clean\",\n defaultValue: { clean: false },\n parse: input => ({ clean: input }),\n doesNotRequireValue: true,\n description:\n \"Полностью очищает целевой каталог ресурсов. Используется при полной сборке форм для продакшена\",\n },\n {\n name: \"upgrade-form-json\",\n defaultValue: { upgradeFormJson: false },\n parse: input => ({ upgradeFormJson: input }),\n doesNotRequireValue: true,\n description: \"Форсирует изменение формата файла form.json на новый\",\n },\n {\n name: \"build-cache\",\n defaultValue: { buildCacheMode: BuildCacheMode.ReadOnly },\n parse: (input: string) => ({ buildCacheMode: parseBuildCacheMode(input) }),\n description:\n \"Задаёт режим использования кэша сборки. Возможные значения:\\n\" +\n \" disabled - не использовать кэш\\n\" +\n \" readonly - использовать кэш для сборки, но не обновляет его (значение по умолчанию)\\n\" +\n \" update - использовать кэш для сборки и презаписывать, если не совпадает\\n\" +\n \" force-update - всегда выполнять сборку и обновить значения в кэше\\n\" +\n \"Отключается при использовании watch-режима\",\n },\n {\n name: \"use-last-stable-version\",\n defaultValue: { useLastStableVersion: false },\n parse: input => ({ useLastStableVersion: input }),\n doesNotRequireValue: true,\n description:\n \"Устанавливает версию движка в файла `form.json` в последнюю стабильную версию. Аналогичен запуску candy-build с параметром -ge master\",\n },\n {\n name: \"use-prerelease-version\",\n defaultValue: { usePrereleaseVersion: undefined as undefined | string },\n parse: (input: string) => ({ usePrereleaseVersion: input }),\n description:\n \"Устанавливает версию движка в файла form.json в последнюю пререлизную версию в заданным preid. В файле версии генератора и движка будут установлены в pre:some-preid.\",\n },\n {\n name: \"no-reformat\",\n doesNotRequireValue: true,\n defaultValue: { skipGeneratedCodeReformatting: true },\n parse: (input: boolean) => ({ skipGeneratedCodeReformatting: input }),\n description:\n \"Отлючает форматирование генерируемого кода. Работает, только если версия генератора поддерживает эту опцию. Используется для ускорения сборки форм. (default: true)\",\n },\n {\n alias: \"g\",\n name: \"gfvs\",\n defaultValue: { formGlobs: [] },\n parse: (input: string[]) => ({ formGlobs: input }),\n defaultOption: true,\n multiple: true,\n description: \"Одна или несколько GFV или GFV-масок для пересборки. Может содержать значки `?` и `*`.\",\n },\n {\n name: \"use-version-from-cache\",\n defaultValue: { useVersionFromCache: false },\n parse: (input: boolean) => ({ useVersionFromCache: input }),\n description: \"Использовать версию движка и генератора из файловой системы\",\n doesNotRequireValue: true,\n },\n devModeOption,\n logVerbosityOption\n ),\n {\n description:\n \"Выполняет сборку одной или нескольких форм.\\n\" +\n \"Подробнее: https://git.skbkontur.ru/ke/candy-utils/blob/new-candy-tool-cli/README.md\",\n\n detailedDescription: `\nОсновной сценарий: выполняет сборку форм в каталог с ресурсами. Действия, которые выполняет команда:\n\n* Получение движка форм версии указанной в \\`form.json\\`,\n* получение генератора форм версии указанной в \\`form.json\\`,\n* генерация и компиляция формы в каталог ресурсов,\n* создание файлов \\`{gfv}.metas.json\\` в каталоге ресурсов\n* копирование конвертеров в каталог ресурсов,\n* копирование схемы в каталог ресурсов.\n`.trim(),\n\n examples: `\n\\`\\`\\`\n# Сборка формы 104816\ncandy build 104816\n\\`\\`\\`\n\n\\`\\`\\`\n# Сборка все формы группы 1\ncandy build 1?????\n\\`\\`\\`\n\n\\`\\`\\`\n# Собрать форму 104816 и следить за изменениями\ncandy build 104816 -w\n\\`\\`\\`\n\n\\`\\`\\`\n# Использовать последнюю пререлизную версию движка с preid=bso\ncandy build 104816 --use-prerelease-version bso\n\\`\\`\\`\n`.trim(),\n\n extendedDetails: `\n### Версионирование\n\nПри сборке форм, учитывается версия движка и генератора указанные файле form.json. Версии могут указывать не на конкретную версию, а адресовать диапазон в соответствии с [semver](https://semver.org/lang/ru/).\nВ этом случае будет выбрана последняя подходящая версия.\n\nФайл form.json должен выглядеть следующим образом:\n\\`\\`\\`\n{\n // Опционально\n \"themes\": [\"имя-темы\", ...],\n \"dependencies\": {\n \"engine\": \"[версия-движка]\",\n \"generator\": \"[версия-генератора]\"\n }\n}\n\\`\\`\\`\n\n\\`версия-движка\\`, \\`версия-генератора\\` - Соответственно, диапазоны версий. На данный момент всегда совпадают.\n\nДопустимые варианты версий:\n* Версия в формате [semver](https://semver.org/lang/ru/).\n* Версия с префиксом pre. Например, \\`pre:my-stange-branch-name\\`, где \\`my-stange-branch-name\\` - название предрелизной версии, выпускаемой разработчиками Candy, для предварительного выпуска форм.\nВерсия с префиксом pre используются для движков, которые не являются стабильными и используются для предварительных сборок форм.\n`.trim(),\n }\n);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -157,7 +157,7 @@ async function runBuildForms(context, options, farmDirectory, resourcesDirectory
|
|
|
157
157
|
mode: options.buildCacheMode,
|
|
158
158
|
farmDirectory: farmDirectory
|
|
159
159
|
} : undefined;
|
|
160
|
-
await (0, _CompileForm.compileForm)(fi.formName, formDirPath, resourcesDirectory, (_fi$dependenciesHash2 = fi.dependenciesHash) !== null && _fi$dependenciesHash2 !== void 0 ? _fi$dependenciesHash2 : (0, _TypingUtils.reject)("This version of generator is not supported due to dependencies extraction is not supported"), false, undefined,
|
|
160
|
+
await (0, _CompileForm.compileForm)(fi.formName, fi.themes, farmDirectory, formDirPath, resourcesDirectory, (_fi$dependenciesHash2 = fi.dependenciesHash) !== null && _fi$dependenciesHash2 !== void 0 ? _fi$dependenciesHash2 : (0, _TypingUtils.reject)("This version of generator is not supported due to dependencies extraction is not supported"), false, undefined, buildCacheOptions);
|
|
161
161
|
await (0, _WriteFormMeta.writeFormMeta)(resourcesDirectory, gfv, fi.engineSource, (_fi$dependenciesHash3 = fi.dependenciesHash) !== null && _fi$dependenciesHash3 !== void 0 ? _fi$dependenciesHash3 : (0, _TypingUtils.reject)("This version of generator is not supported due to dependencies extraction is not supported"), fi.themes, buildCache, buildCacheOptions);
|
|
162
162
|
}).do(async fi => {
|
|
163
163
|
if (fi.generatorSource == undefined) {
|
|
@@ -214,9 +214,9 @@ async function runBuildForms(context, options, farmDirectory, resourcesDirectory
|
|
|
214
214
|
await cleanTargetDirectory(resourcesDirectory, context.logger);
|
|
215
215
|
}
|
|
216
216
|
await pickListsChain.currentValue;
|
|
217
|
+
await staticResourcesForProductionChain.currentValue;
|
|
217
218
|
await resourcesExternalConvertersChain.currentValue;
|
|
218
219
|
await buildFormsChain.currentValue;
|
|
219
|
-
await staticResourcesForProductionChain.currentValue;
|
|
220
220
|
// eslint-disable-next-line no-console
|
|
221
221
|
console.log(_chalk.default.greenBright("Build success"));
|
|
222
222
|
} finally {
|
|
@@ -231,4 +231,4 @@ async function cleanTargetDirectory(resourcesDirectory, logger) {
|
|
|
231
231
|
await (0, _fsExtra.emptyDir)(resourcesDirectory);
|
|
232
232
|
logger.log("Resource directory clean");
|
|
233
233
|
}
|
|
234
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2NoYWxrIiwiX2ZzRXh0cmEiLCJfbm9kZU5vdGlmaWVyIiwiX0FjcXVpcmVGb3JtRW5naW5lIiwiX0VuZ2luZVNvdXJjZSIsIl9Db21waWxlRm9ybSIsIl9HZW5lcmF0ZUZvcm0iLCJfTnVsbEZvcm1HZW5lcmF0b3IiLCJfV3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyIsIl9GU1Rhc2siLCJfQWNxdWlyZUZvcm1HZW5lcmF0b3IiLCJfUHVibGlzaGVkVmVyc2lvblV0aWxzIiwiX1Jlc29sdmVGb3JtSW5mbyIsIl9Xcml0ZUZvcm1NZXRhIiwiX0Zvcm1HbG9ic1V0aWxzIiwiX1N0YXRpY0xvZ2dlciIsIl9PYnNlcnZlIiwiX1NpbmdsZVZhbHVlUHJvZHVjZXIiLCJfVGltaW5nVXRpbHMiLCJfQ2FjaGVBc3NldHNQbHVnaW4iLCJfVHlwaW5nVXRpbHMiLCJfV3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIiwiX2dldFJuZ1NjaGVtYUZpbGVuYW1lIiwiX0Zvcm1QYXRoVXRpbHMiLCJfV2VsbEtub3duRGlyZWN0b3JpZXMiLCJnZXRHZW5lcmF0b3JWZXJzaW9uIiwiZ2VuZXJhdG9yU291cmNlIiwidHlwZSIsInZlcnNpb24iLCJFcnJvciIsInJ1bkJ1aWxkRm9ybXMiLCJjb250ZXh0Iiwib3B0aW9ucyIsImZhcm1EaXJlY3RvcnkiLCJyZXNvdXJjZXNEaXJlY3RvcnkiLCJlbmdpbmVEaXJlY3RvcnkiLCJjYW5keU1vZHVsZXNEaXJlY3RvcnkiLCJobEZhcm1EaXJlY3RvcnlQYXRoIiwiYnVpbGRPcHRpb25zIiwicGlja0xpc3RzQ2hhaW4iLCJPYnNlcnZlIiwiZmlsZXMiLCJwYXRoIiwiam9pbiIsImRvIiwieCIsIkZTVGFzayIsImNvcHlSZWN1cnNpdmVseSIsImxvZ2dlciIsIndpdGhQcmVmaXgiLCJGb3JtR2xvYnMiLCJlbnN1cmVFYWNoR2xvYlJlc29sdmVzSW50b0V4aXN0aW5nRm9ybSIsImZvcm1HbG9icyIsImZvcm1JbmZvcyIsInJlc29sdmVHZnZHbG9icyIsInN0YXRpY1Jlc291cmNlc0ZvclByb2R1Y3Rpb25DaGFpbiIsIl9fZGlybmFtZSIsImdldExvZ2dlciIsInJlc291cmNlc0V4dGVybmFsQ29udmVydGVyc0NoYWluIiwiZW1wdHkiLCJjb3BpZWRFbmdpbmVzIiwiU2V0IiwicmVwb3NpdG9yeVJvb3QiLCJidWlsZENhY2hlIiwiQnVpbGRDYWNoZSIsImJ1aWxkQ2FjaGVNb2RlIiwiYnVpbGRGb3Jtc0NoYWluIiwiZml4ZWRGb3JtRGlyZWN0b3JpZXMiLCJtYXAiLCJyZWxhdGl2ZSIsImZvcm1QYXRoIiwic3BsaXRUb1BhcmFsbGVsQ2hhaW5zIiwiZm9ybVJlbGF0aXZlUGF0aCIsImdmdiIsImV4dHJhY3RHZnZGcm9tRm9ybVBhdGgiLCJmb3JtRGlyUGF0aCIsInBhdGhFeGlzdHMiLCJXZWxsS25vd25EaXJlY3RvcmllcyIsIkZvcm1Kc29uRmlsZU5hbWUiLCJ3YXJuaW5nIiwidmFsdWUiLCJmb3JtU2NoZW1hc0RpclBhdGgiLCJybmdTY2hlbWFNYXNrIiwiZ2V0Um5nU2NoZW1hRmlsZW5hbWUiLCJmaWxlIiwidHJhbnNmb3JtIiwiZm9ybUpzb25GaWxlIiwicmVzb2x2ZUZvcm1JbmZvIiwidXBncmFkZUZvcm1Kc29uIiwidXNlTGFzdFN0YWJsZVZlcnNpb24iLCJ1c2VQcmVyZWxlYXNlVmVyc2lvbiIsImZpIiwibW9kZSIsIkZvcm1CdWlsZE1vZGUiLCJOb3JtYWxCdWlsZCIsImdlbmVyYXRvclZlcnNpb24iLCJ1bmRlZmluZWQiLCJlbmdpbmVWZXJzaW9uIiwicmVzb2x2ZUdlbmVyYXRvclZlcnNpb24iLCJlbmdpbmVTb3VyY2UiLCJyZXNvbHZlRW5naW5lVmVyc2lvbiIsImF0dGFjaCIsIlNpbmdsZVZhbHVlUHJvZHVjZXIiLCJOdWxsRm9ybUdlbmVyYXRvciIsImdlbmVyYXRvckZhY3RvcnkiLCJ1c2VWZXJzaW9uRnJvbUNhY2hlIiwieSIsImdlbmVyYXRvciIsImdldEdlbmVyYXRvclNvdXJjZUtleSIsImVuZ2luZUZhY3RvcnkiLCJoYXMiLCJnZXRFbmdpbmVTb3VyY2VLZXkiLCJhZGQiLCJmb3JtU291cmNlc1BhdGgiLCJkZXBlbmRlbmNpZXNIYXNoIiwic3VwcG9ydHNEZXBlbmRlbmNpZXNFeHRyYWN0aW9uIiwiZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaCIsImJ1aWxkQ2FjaGVFeGlzdCIsImV4aXN0cyIsIl9maSRkZXBlbmRlbmNpZXNIYXNoIiwibG9nIiwiZ2VuZXJhdGVGb3JtIiwic2tpcENvZGVSZWZvcm1hdHRpbmciLCJza2lwR2VuZXJhdGVkQ29kZVJlZm9ybWF0dGluZyIsInJlc291cmNlc0hhc2giLCJfZmkkZGVwZW5kZW5jaWVzSGFzaDIiLCJfZmkkZGVwZW5kZW5jaWVzSGFzaDMiLCJleHRyYWN0IiwiYnVpbGRDYWNoZU9wdGlvbnMiLCJkZXBzSGFzaCIsImNvbXBpbGVGb3JtIiwiZm9ybU5hbWUiLCJyZWplY3QiLCJ3cml0ZUZvcm1NZXRhIiwidGhlbWVzIiwid3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyIsIndyaXRlQXR0YWNobWVudFBhdGhGaWxlcyIsIkNvcHlMZWdhY3lQcmVidWlsdFJlc291cmNlcyIsIm1vZGlmaWVyIiwiY29udGVudCIsInJlcGxhY2UiLCJtb2RpZnlGaWxlc0NvbnRlbnQiLCJ3YXRjaCIsIm5vdGlmaWVyIiwibm90aWZ5IiwidGl0bGUiLCJtZXNzYWdlIiwiY2xlYW4iLCJjbGVhblRhcmdldERpcmVjdG9yeSIsInN0b3BPYnNlcnZlMSIsIm9ic2VydmUiLCJzdG9wT2JzZXJ2ZTIiLCJzdG9wT2JzZXJ2ZTMiLCJzdG9wT2JzZXJ2ZTUiLCJ3YWl0Rm9yRXhpdCIsInN0YXJ0RGF0ZSIsIkRhdGUiLCJub3ciLCJjdXJyZW50VmFsdWUiLCJjb25zb2xlIiwiY2hhbGsiLCJncmVlbkJyaWdodCIsInRvdGFsVGltZSIsInByaW50VGltZSIsImVtcHR5RGlyIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL0NMSUNvbW1hbmRzL0J1aWxkRm9ybXMvUnVuQnVpbGRGb3Jtcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5pbXBvcnQgeyBlbXB0eURpciwgcGF0aEV4aXN0cyB9IGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0IG5vdGlmaWVyIGZyb20gXCJub2RlLW5vdGlmaWVyXCI7XG5cbmltcG9ydCB7IGVuZ2luZUZhY3RvcnkgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9FbmdpbmUvQWNxdWlyZUZvcm1FbmdpbmVcIjtcbmltcG9ydCB7IGdldEVuZ2luZVNvdXJjZUtleSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0VuZ2luZS9FbmdpbmVTb3VyY2VcIjtcbmltcG9ydCB7IGNvbXBpbGVGb3JtIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9Db21waWxlRm9ybVwiO1xuaW1wb3J0IHsgZ2VuZXJhdGVGb3JtIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9HZW5lcmF0ZUZvcm1cIjtcbmltcG9ydCB7IE51bGxGb3JtR2VuZXJhdG9yIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9OdWxsRm9ybUdlbmVyYXRvclwiO1xuaW1wb3J0IHsgd3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vV3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlc1wiO1xuaW1wb3J0IHsgRlNUYXNrIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRlNUYXNrXCI7XG5pbXBvcnQge1xuICAgIGdlbmVyYXRvckZhY3RvcnksXG4gICAgR2VuZXJhdG9yU291cmNlLFxuICAgIGdldEdlbmVyYXRvclNvdXJjZUtleSxcbn0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvR2VuZXJhdG9yL0FjcXVpcmVGb3JtR2VuZXJhdG9yXCI7XG5pbXBvcnQgeyByZXNvbHZlRW5naW5lVmVyc2lvbiwgcmVzb2x2ZUdlbmVyYXRvclZlcnNpb24gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9QdWJsaXNoZWRWZXJzaW9uVXRpbHNcIjtcbmltcG9ydCB7IEZvcm1CdWlsZE1vZGUsIHJlc29sdmVGb3JtSW5mbyB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1Jlc29sdmVGb3JtSW5mb1wiO1xuaW1wb3J0IHsgd3JpdGVGb3JtTWV0YSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1dyaXRlRm9ybU1ldGFcIjtcbmltcG9ydCB7IENvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHQgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Db25zb2xlQXBwbGljYXRpb24vQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dFwiO1xuaW1wb3J0IHsgRm9ybUdsb2JzIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvRm9ybUdsb2JzVXRpbHNcIjtcbmltcG9ydCB7IElMb2dnZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Mb2dnaW5nL0lMb2dnZXJcIjtcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL0xvZ2dpbmcvU3RhdGljTG9nZ2VyXCI7XG5pbXBvcnQgeyBPYnNlcnZlIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvVGFza3NDb3JlL09ic2VydmVcIjtcbmltcG9ydCB7IFNpbmdsZVZhbHVlUHJvZHVjZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvU2luZ2xlVmFsdWVQcm9kdWNlclwiO1xuaW1wb3J0IHsgcHJpbnRUaW1lIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvVGltaW5nVXRpbHNcIjtcbmltcG9ydCB7IEJ1aWxkQ2FjaGUgfSBmcm9tIFwiLi4vLi4vRm9ybVdlYnBhY2tDb25maWd1cmF0aW9uL0NhY2hlQXNzZXRzUGx1Z2luXCI7XG5pbXBvcnQgeyByZWplY3QgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL1R5cGluZ1V0aWxzXCI7XG5pbXBvcnQgeyB3cml0ZUF0dGFjaG1lbnRQYXRoRmlsZXMgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL1dyaXRlQXR0YWNobWVudFBhdGhGaWxlc1wiO1xuaW1wb3J0IHsgQ2hhaW5hYmxlVmFsdWVQcm9kdWNlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL1Rhc2tzQ29yZS9DaGFpbmFibGVWYWx1ZVByb2R1Y2VyXCI7XG5pbXBvcnQgeyBFbXB0eVByb2R1Y2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvVGFza3NDb3JlL0VtcHR5UHJvZHVjZXJcIjtcbmltcG9ydCB7IGdldFJuZ1NjaGVtYUZpbGVuYW1lIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9nZXRSbmdTY2hlbWFGaWxlbmFtZVwiO1xuaW1wb3J0IHsgZXh0cmFjdEdmdkZyb21Gb3JtUGF0aCB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vRm9ybVBhdGhVdGlsc1wiO1xuaW1wb3J0IHsgV2VsbEtub3duRGlyZWN0b3JpZXMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL1dlbGxLbm93bkRpcmVjdG9yaWVzXCI7XG5cbmltcG9ydCB7IEJ1aWxkRm9ybXNPcHRpb25zIH0gZnJvbSBcIi4vQnVpbGRGb3Jtc09wdGlvbnNcIjtcblxuZnVuY3Rpb24gZ2V0R2VuZXJhdG9yVmVyc2lvbihnZW5lcmF0b3JTb3VyY2U6IEdlbmVyYXRvclNvdXJjZSk6IHN0cmluZyB7XG4gICAgaWYgKGdlbmVyYXRvclNvdXJjZS50eXBlID09PSBcIlB1Ymxpc2hlZEdlbmVyYXRvclwiKSB7XG4gICAgICAgIHJldHVybiBnZW5lcmF0b3JTb3VyY2UudmVyc2lvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkUHJvZ3JhbVN0YXRlXCIpO1xuICAgIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bkJ1aWxkRm9ybXMoXG4gICAgY29udGV4dDogQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCxcbiAgICBvcHRpb25zOiBCdWlsZEZvcm1zT3B0aW9ucyxcbiAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgcmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgZW5naW5lRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgY2FuZHlNb2R1bGVzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgaGxGYXJtRGlyZWN0b3J5UGF0aDogc3RyaW5nXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBidWlsZE9wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgY29uc3QgcGlja0xpc3RzQ2hhaW4gPSBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmYXJtRGlyZWN0b3J5LCBcInBpY2tsaXN0c1wiKSwgXCIqLmpzb25cIikuZG8oeCA9PlxuICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoXCJQSUNLTElTVFNcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicGlja2xpc3RzXCIpKVxuICAgICk7XG5cbiAgICBhd2FpdCBGb3JtR2xvYnMuZW5zdXJlRWFjaEdsb2JSZXNvbHZlc0ludG9FeGlzdGluZ0Zvcm0ob3B0aW9ucy5mb3JtR2xvYnMsIGZhcm1EaXJlY3RvcnkpO1xuICAgIGNvbnN0IGZvcm1JbmZvcyA9IGF3YWl0IEZvcm1HbG9icy5yZXNvbHZlR2Z2R2xvYnMob3B0aW9ucy5mb3JtR2xvYnMsIGZhcm1EaXJlY3RvcnkpO1xuXG4gICAgY29uc3Qgc3RhdGljUmVzb3VyY2VzRm9yUHJvZHVjdGlvbkNoYWluID0gT2JzZXJ2ZS5maWxlcyhcbiAgICAgICAgcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLlwiLCBcIi4uXCIsIFwiU3RhdGljRmlsZXNGb3JQcm9kdWN0aW9uUmVzb3VyY2VzRGlyXCIpLFxuICAgICAgICBcIiouanNcIixcbiAgICAgICAgXCIqLmpzLm1hcFwiXG4gICAgKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlNUQVRJQ1NcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicHVibGljXCIsIFwic2NyaXB0c1wiKSlcbiAgICApO1xuXG4gICAgLyoqINCa0L7QvdCy0LXRgNGC0LXRgNGLINC+0L/QuNGB0Lgg0LTQu9GPINGE0L7RgNC8LCDQutC+0YLQvtGA0YvQtSDQv9C+0LrQsCDQvdC1INGA0LXQsNC70LjQt9C+0LLQsNC90Ysg0L3QsCDQutC10L3QtNC4LCDRgdCw0LzQsCDQvNC10YXQsNC90LjQutCwINC+0L/QuNGB0Lgg0L/QtdGA0LXQvdC10YHQtdC90LAg0LIg0YTQvtGA0LzRiyDQsiDQutC10L3QtNC4INCw0L/QuCwg0L/QvtGN0YLQvtC80YMg0L7QvdC4INC00L7Qu9C20L3RiyDQsdGL0YLRjCDQsiBjYW5keS5yZXNvdXJjZXNcbiAgICAgKiAg0KDQtdCw0LvQuNC30YPQtdGC0YHRjyDRgtC+0LvRjNC60L4g0L/RgNC4INC+0LHRidC10Lwg0LHQuNC70LTQtSDRhNC+0YDQvDogY2FuZHkgYnVpbGQgKlxuICAgICAqICovXG4gICAgbGV0IHJlc291cmNlc0V4dGVybmFsQ29udmVydGVyc0NoYWluOiBDaGFpbmFibGVWYWx1ZVByb2R1Y2VyPHN0cmluZz4gfCBFbXB0eVByb2R1Y2VyID0gT2JzZXJ2ZS5lbXB0eSgpO1xuICAgIGlmIChvcHRpb25zLmZvcm1HbG9ic1swXSA9PT0gXCIqXCIpIHtcbiAgICAgICAgcmVzb3VyY2VzRXh0ZXJuYWxDb252ZXJ0ZXJzQ2hhaW4gPSBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmYXJtRGlyZWN0b3J5LCBcImV4dGVybmFsQ29udmVydGVyc1wiKSwgXCIqLnhzbHRcIikuZG8oXG4gICAgICAgICAgICB4ID0+XG4gICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkVYVEVSTkFMLUNPTlZFUlRFUlNcIiksXG4gICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwiY29udmVydGVyc1wiKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb3BpZWRFbmdpbmVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICBjb25zdCByZXBvc2l0b3J5Um9vdCA9IHBhdGguam9pbihmYXJtRGlyZWN0b3J5LCBcIi4uXCIpO1xuICAgIGNvbnN0IGJ1aWxkQ2FjaGUgPSBuZXcgQnVpbGRDYWNoZShmYXJtRGlyZWN0b3J5LCBvcHRpb25zLmJ1aWxkQ2FjaGVNb2RlKTtcbiAgICBjb25zdCBidWlsZEZvcm1zQ2hhaW4gPSBPYnNlcnZlLmZpeGVkRm9ybURpcmVjdG9yaWVzKFxuICAgICAgICBmb3JtSW5mb3MubWFwKHggPT4gcGF0aC5yZWxhdGl2ZShyZXBvc2l0b3J5Um9vdCwgeC5mb3JtUGF0aCkpXG4gICAgKS5zcGxpdFRvUGFyYWxsZWxDaGFpbnMoXG4gICAgICAgIHggPT4geCxcbiAgICAgICAgeCA9PiB4LFxuICAgICAgICBhc3luYyBmb3JtUmVsYXRpdmVQYXRoID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdmdiA9IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGgoZm9ybVJlbGF0aXZlUGF0aCk7XG4gICAgICAgICAgICBjb25zdCBmb3JtRGlyUGF0aCA9IHBhdGguam9pbihyZXBvc2l0b3J5Um9vdCwgZm9ybVJlbGF0aXZlUGF0aCk7XG5cbiAgICAgICAgICAgIGlmICghKGF3YWl0IHBhdGhFeGlzdHMocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lKSkpKSB7XG4gICAgICAgICAgICAgICAgY29udGV4dC5sb2dnZXIud2FybmluZyhcbiAgICAgICAgICAgICAgICAgICAgYEZvcm0gJHtnZnZ9IGRvZXMgbm90IGhhdmUgZm9ybS5qc29uIGZpbGUuIFRvIGluY2x1ZGUgdGhpcyBmb3JtIHRvIGJ1aWxkIHByb2Nlc3MgcmVzdGFydCBidWlsZGBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJldHVybiBPYnNlcnZlLnZhbHVlKHt9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGZvcm1TY2hlbWFzRGlyUGF0aCA9IHBhdGguam9pbihmb3JtRGlyUGF0aCwgXCJzY2hlbWFzXCIpO1xuICAgICAgICAgICAgY29uc3Qgcm5nU2NoZW1hTWFzayA9IGAqJHtnZXRSbmdTY2hlbWFGaWxlbmFtZShmb3JtU2NoZW1hc0RpclBhdGgsIGdmdil9YDtcblxuICAgICAgICAgICAgcmV0dXJuIE9ic2VydmUuZmlsZShwYXRoLmpvaW4oZm9ybURpclBhdGgsIFdlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1Kc29uRmlsZU5hbWUpKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oZm9ybUpzb25GaWxlID0+XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmVGb3JtSW5mbyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Kc29uRmlsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChgRk9STToke2dmdn1gKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudXBncmFkZUZvcm1Kc29uLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51c2VMYXN0U3RhYmxlVmVyc2lvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudXNlUHJlcmVsZWFzZVZlcnNpb25cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLm1vZGUgPT09IEZvcm1CdWlsZE1vZGUuTm9ybWFsQnVpbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaS5nZW5lcmF0b3JWZXJzaW9uID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImdlbmVyYXRvclZlcnNpb24gaXMgbm90IGRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZW5naW5lVmVyc2lvbiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJlbmdpbmVWZXJzaW9uIGlzIG5vdCBkZWZpbmVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5maSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JTb3VyY2U6IGF3YWl0IHJlc29sdmVHZW5lcmF0b3JWZXJzaW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaS5nZW5lcmF0b3JWZXJzaW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGdmdilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZ2luZVNvdXJjZTogYXdhaXQgcmVzb2x2ZUVuZ2luZVZlcnNpb24oZmkuZW5naW5lVmVyc2lvbiwgY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChnZnYpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvclNvdXJjZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZ2luZVNvdXJjZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmF0dGFjaChcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmdlbmVyYXRvclNvdXJjZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNpbmdsZVZhbHVlUHJvZHVjZXIobmV3IE51bGxGb3JtR2VuZXJhdG9yKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yRmFjdG9yeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmkuZ2VuZXJhdG9yU291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5keU1vZHVsZXNEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudXNlVmVyc2lvbkZyb21DYWNoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIChmaSwgeSkgPT4gKHsgLi4uZmksIGdlbmVyYXRvcjogeSB9KSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmdlbmVyYXRvclNvdXJjZSAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGdldEdlbmVyYXRvclNvdXJjZUtleShmaS5nZW5lcmF0b3JTb3VyY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIk51bGxGb3JtR2VuZXJhdG9yXCJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmVuZ2luZVNvdXJjZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTaW5nbGVWYWx1ZVByb2R1Y2VyKFwiTnVsbEVuZ2luZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbmdpbmVGYWN0b3J5KGZpLmVuZ2luZVNvdXJjZSwgY2FuZHlNb2R1bGVzRGlyZWN0b3J5LCBvcHRpb25zLnVzZVZlcnNpb25Gcm9tQ2FjaGUpLmRvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jIHggPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvcGllZEVuZ2luZXMuaGFzKGdldEVuZ2luZVNvdXJjZUtleShmaS5lbmdpbmVTb3VyY2UpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiRU5HSU5FXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJwdWJsaWNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3BpZWRFbmdpbmVzLmFkZChnZXRFbmdpbmVTb3VyY2VLZXkoZmkuZW5naW5lU291cmNlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiBmaSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgZmkgPT4gKGZpLmVuZ2luZVNvdXJjZSAhPSB1bmRlZmluZWQgPyBnZXRFbmdpbmVTb3VyY2VLZXkoZmkuZW5naW5lU291cmNlKSA6IFwiTnVsbEVuZ2luZVwiKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtU291cmNlc1BhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIi4uLy4uL2NvbnRyb2xzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiLi4vLi4veHNsdFRlbXBsYXRlcy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIi4uLy4uL2pzSGVscGVycy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInNjaGVtYXMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzdWdhci8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImNvbnRyb2xzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYXV0b2NhbGMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJoZWxwZXJzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidmFsaWRhdGlvbnMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJsb2NhbGl6YXRpb24vKiovKlwiXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnRyYW5zZm9ybShhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkZXBlbmRlbmNpZXNIYXNoOiB1bmRlZmluZWQgfCBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5tb2RlICE9PSBGb3JtQnVpbGRNb2RlLk5vcm1hbEJ1aWxkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llc0hhc2g6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGF3YWl0IGZpLmdlbmVyYXRvci5zdXBwb3J0c0RlcGVuZGVuY2llc0V4dHJhY3Rpb24oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzSGFzaCA9IGF3YWl0IGZpLmdlbmVyYXRvci5nZXRBbGxEZXBlbmRlbmNpZXNIYXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGxGYXJtRGlyZWN0b3J5UGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uZmksXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXNIYXNoOiBkZXBlbmRlbmNpZXNIYXNoLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnRyYW5zZm9ybShhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBidWlsZENhY2hlRXhpc3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmRlcGVuZGVuY2llc0hhc2ggIT0gdW5kZWZpbmVkICYmIGZpLmdlbmVyYXRvclNvdXJjZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVFeGlzdCA9IGF3YWl0IGJ1aWxkQ2FjaGUuZXhpc3RzKGZpLmdlbmVyYXRvclNvdXJjZSwgZ2Z2LCBmaS5kZXBlbmRlbmNpZXNIYXNoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uZmksXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlRXhpc3Q6IGJ1aWxkQ2FjaGVFeGlzdCxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5nZW5lcmF0b3JTb3VyY2UgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5idWlsZENhY2hlRXhpc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoYEdFTkVSQVRFOiR7Z2Z2fWApLmxvZyhcIlNraXBwZWQgZHVlIGJ1aWxkIGNhY2hlIGV4aXRzXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZUZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtU291cmNlc1BhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgaGxGYXJtRGlyZWN0b3J5UGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmdlbmVyYXRvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwQ29kZVJlZm9ybWF0dGluZzogb3B0aW9ucy5za2lwR2VuZXJhdGVkQ29kZVJlZm9ybWF0dGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXNIYXNoOiBmaS5kZXBlbmRlbmNpZXNIYXNoID8/IFwiVW5kZWZpbmVkUmVzb3VyY2VzSGFzaFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PiBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmb3JtRGlyUGF0aCwgXCJmb3JtXCIpLCBcIioqLypcIikpXG4gICAgICAgICAgICAgICAgLmRvKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmdlbmVyYXRvclNvdXJjZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZGVwZW5kZW5jaWVzSGFzaCAhPSB1bmRlZmluZWQgJiYgZmkuYnVpbGRDYWNoZUV4aXN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGBDT01QSUxFOiR7Z2Z2fWApLmxvZyhcIlNraXBwZWQgZHVlIGJ1aWxkIGNhY2hlIGV4aXN0c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGJ1aWxkQ2FjaGUuZXh0cmFjdChmaS5nZW5lcmF0b3JTb3VyY2UsIGdmdiwgZmkuZGVwZW5kZW5jaWVzSGFzaCwgcmVzb3VyY2VzRGlyZWN0b3J5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBidWlsZENhY2hlT3B0aW9ucyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5kZXBlbmRlbmNpZXNIYXNoICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHNIYXNoOiBmaS5kZXBlbmRlbmNpZXNIYXNoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvclZlcnNpb246IGdldEdlbmVyYXRvclZlcnNpb24oZmkuZ2VuZXJhdG9yU291cmNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZnY6IGdmdixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlOiBvcHRpb25zLmJ1aWxkQ2FjaGVNb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3Rvcnk6IGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgY29tcGlsZUZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZGVwZW5kZW5jaWVzSGFzaCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaGlzIHZlcnNpb24gb2YgZ2VuZXJhdG9yIGlzIG5vdCBzdXBwb3J0ZWQgZHVlIHRvIGRlcGVuZGVuY2llcyBleHRyYWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMubW9kZSA9PT0gXCJwcm9kdWN0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlT3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlRm9ybU1ldGEoXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXNEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBnZnYsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5lbmdpbmVTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5kZXBlbmRlbmNpZXNIYXNoID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRoaXMgdmVyc2lvbiBvZiBnZW5lcmF0b3IgaXMgbm90IHN1cHBvcnRlZCBkdWUgdG8gZGVwZW5kZW5jaWVzIGV4dHJhY3Rpb24gaXMgbm90IHN1cHBvcnRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLnRoZW1lcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlT3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmRvKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmdlbmVyYXRvclNvdXJjZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBidWlsZENhY2hlT3B0aW9ucyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5kZXBlbmRlbmNpZXNIYXNoICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHNIYXNoOiBmaS5kZXBlbmRlbmNpZXNIYXNoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvclZlcnNpb246IGdldEdlbmVyYXRvclZlcnNpb24oZmkuZ2VuZXJhdG9yU291cmNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZnY6IGdmdixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlOiBvcHRpb25zLmJ1aWxkQ2FjaGVNb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3Rvcnk6IGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlRkxhbmdOb3JtYWxpemF0aW9uRmlsZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmJ1aWxkQ2FjaGVFeGlzdFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB3cml0ZUF0dGFjaG1lbnRQYXRoRmlsZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlT3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5tb2RlID09PSBGb3JtQnVpbGRNb2RlLkNvcHlMZWdhY3lQcmVidWlsdFJlc291cmNlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJsZWdhY3ktcHJlYnVpbHRcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkxFR0FDWS1QUkVCVUlMVFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTaW5nbGVWYWx1ZVByb2R1Y2VyKFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJzY2hlbWFzXCIpLCBybmdTY2hlbWFNYXNrKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJTQ0hFTUFTXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJzY2hlbWFzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwiY29udmVydGVyc1wiKSwgXCIqXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkNPTlZFUlRFUlNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcImNvbnZlcnRlcnNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJtZXJnZXJzXCIpLCBcIipcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTUVSR0VSU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwibWVyZ2Vyc1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RpZmllciA9IChjb250ZW50OiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQucmVwbGFjZSgvPHg6aW5jbHVkZSBocmVmPVwiWy4vXSsvZywgJzx4OmluY2x1ZGUgaHJlZj1cIicpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcImNvbnZlcnRlcnNcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2subW9kaWZ5RmlsZXNDb250ZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJGSVgtWFNMVC1JTkNMVURFXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJjb252ZXJ0ZXJzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiKiovKi54c2x0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcIi4uXCIsIFwiLi5cIiwgXCJ4c2x0VGVtcGxhdGVzXCIpLCBcIipcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiWFNMVC1URU1QTEFURVNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcImNvbnZlcnRlcnNcIiwgXCJ4c2x0VGVtcGxhdGVzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwibm9ybWFsaXplXCIpLCBcIioueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIk5PUk1BTElaRVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwibm9ybWFsaXplXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwicGF0Y2hcIiksIFwiKi54c2x0XCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlBBVENIXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJwYXRjaFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcIm1hcFwiKSwgXCIqLnhtbFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJNQVBcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwibWFwXCIpKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInVubWFwXCIpLCBcIioueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlVOTUFQXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJ1bm1hcFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChidWlsZE9wdGlvbnMud2F0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGlmaWVyLm5vdGlmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGAke2ZpLmZvcm1OYW1lfTog0YHQsdC+0YDQutCwINC30LDQstC10YDRiNC10L3QsGAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogYEVuZ2luZTogJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmkuZW5naW5lU291cmNlID09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcIltOb0VuZ2luZV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBmaS5lbmdpbmVTb3VyY2UudHlwZSA9PT0gXCJMb2NhbEVuZ2luZVNvdXJjZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcImxvY2FsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZmkuZW5naW5lU291cmNlLnZlcnNpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgaWYgKGJ1aWxkT3B0aW9ucy53YXRjaCkge1xuICAgICAgICBpZiAob3B0aW9ucy5jbGVhbikge1xuICAgICAgICAgICAgYXdhaXQgY2xlYW5UYXJnZXREaXJlY3RvcnkocmVzb3VyY2VzRGlyZWN0b3J5LCBjb250ZXh0LmxvZ2dlcik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmUxID0gYXdhaXQgcGlja0xpc3RzQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTIgPSBhd2FpdCBidWlsZEZvcm1zQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTMgPSBhd2FpdCBzdGF0aWNSZXNvdXJjZXNGb3JQcm9kdWN0aW9uQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTUgPSBhd2FpdCByZXNvdXJjZXNFeHRlcm5hbENvbnZlcnRlcnNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGF3YWl0IGNvbnRleHQud2FpdEZvckV4aXQoKTtcbiAgICAgICAgaWYgKHN0b3BPYnNlcnZlMyAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlMygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdG9wT2JzZXJ2ZTUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTUoKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTIoKTtcbiAgICAgICAgYXdhaXQgc3RvcE9ic2VydmUxKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc3RhcnREYXRlID0gRGF0ZS5ub3coKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmNsZWFuKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgY2xlYW5UYXJnZXREaXJlY3RvcnkocmVzb3VyY2VzRGlyZWN0b3J5LCBjb250ZXh0LmxvZ2dlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCBwaWNrTGlzdHNDaGFpbi5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBhd2FpdCByZXNvdXJjZXNFeHRlcm5hbENvbnZlcnRlcnNDaGFpbi5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBhd2FpdCBidWlsZEZvcm1zQ2hhaW4uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgYXdhaXQgc3RhdGljUmVzb3VyY2VzRm9yUHJvZHVjdGlvbkNoYWluLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbkJyaWdodChcIkJ1aWxkIHN1Y2Nlc3NcIikpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgY29uc3QgdG90YWxUaW1lID0gRGF0ZS5ub3coKSAtIHN0YXJ0RGF0ZTtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgVG90YWwgdGltZTogJHtwcmludFRpbWUodG90YWxUaW1lKX1gKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gY2xlYW5UYXJnZXREaXJlY3RvcnkocmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmcsIGxvZ2dlcjogSUxvZ2dlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGxvZ2dlci5sb2coXCJDbGVhbmluZyByZXNvdXJjZSBkaXJlY3RvcnkuIFwiICsgcmVzb3VyY2VzRGlyZWN0b3J5KTtcbiAgICBhd2FpdCBlbXB0eURpcihyZXNvdXJjZXNEaXJlY3RvcnkpO1xuICAgIGxvZ2dlci5sb2coXCJSZXNvdXJjZSBkaXJlY3RvcnkgY2xlYW5cIik7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxNQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJ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TUFBTUUsWUFBWSxHQUFHLE1BQU1qRyxpQ0FBaUMsQ0FBQytGLE9BQU8sQ0FBQyxDQUFDO0lBQ3RFLE1BQU1HLFlBQVksR0FBRyxNQUFNL0YsZ0NBQWdDLENBQUM0RixPQUFPLENBQUMsQ0FBQztJQUNyRSxNQUFNdkgsT0FBTyxDQUFDMkgsV0FBVyxDQUFDLENBQUM7SUFDM0IsSUFBSUYsWUFBWSxJQUFJeEQsU0FBUyxFQUFFO01BQzNCLE1BQU13RCxZQUFZLENBQUMsQ0FBQztJQUN4QjtJQUNBLElBQUlDLFlBQVksSUFBSXpELFNBQVMsRUFBRTtNQUMzQixNQUFNeUQsWUFBWSxDQUFDLENBQUM7SUFDeEI7SUFDQSxNQUFNRixZQUFZLENBQUMsQ0FBQztJQUNwQixNQUFNRixZQUFZLENBQUMsQ0FBQztFQUN4QixDQUFDLE1BQU07SUFDSCxNQUFNTSxTQUFTLEdBQUdDLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUM7SUFDNUIsSUFBSTtNQUNBLElBQUk3SCxPQUFPLENBQUNtSCxLQUFLLEVBQUU7UUFDZixNQUFNQyxvQkFBb0IsQ0FBQ2xILGtCQUFrQixFQUFFSCxPQUFPLENBQUNpQixNQUFNLENBQUM7TUFDbEU7TUFDQSxNQUFNVCxjQUFjLENBQUN1SCxZQUFZO01BQ2pDLE1BQU1wRyxnQ0FBZ0MsQ0FBQ29HLFlBQVk7TUFDbkQsTUFBTTVGLGVBQWUsQ0FBQzRGLFlBQVk7TUFDbEMsTUFBTXZHLGlDQUFpQyxDQUFDdUcsWUFBWTtNQUNwRDtNQUNBQyxPQUFPLENBQUN2QyxHQUFHLENBQUN3QyxjQUFLLENBQUNDLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNuRCxDQUFDLFNBQVM7TUFDTixNQUFNQyxTQUFTLEdBQUdOLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUMsR0FBR0YsU0FBUztNQUN4QztNQUNBSSxPQUFPLENBQUN2QyxHQUFHLENBQUMsZUFBZSxJQUFBMkMsc0JBQVMsRUFBQ0QsU0FBUyxDQUFDLEVBQUUsQ0FBQztJQUN0RDtFQUNKO0FBQ0o7QUFFQSxlQUFlZCxvQkFBb0JBLENBQUNsSCxrQkFBMEIsRUFBRWMsTUFBZSxFQUFpQjtFQUM1RkEsTUFBTSxDQUFDd0UsR0FBRyxDQUFDLCtCQUErQixHQUFHdEYsa0JBQWtCLENBQUM7RUFDaEUsTUFBTSxJQUFBa0ksaUJBQVEsRUFBQ2xJLGtCQUFrQixDQUFDO0VBQ2xDYyxNQUFNLENBQUN3RSxHQUFHLENBQUMsMEJBQTBCLENBQUM7QUFDMUMiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
234
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2NoYWxrIiwiX2ZzRXh0cmEiLCJfbm9kZU5vdGlmaWVyIiwiX0FjcXVpcmVGb3JtRW5naW5lIiwiX0VuZ2luZVNvdXJjZSIsIl9Db21waWxlRm9ybSIsIl9HZW5lcmF0ZUZvcm0iLCJfTnVsbEZvcm1HZW5lcmF0b3IiLCJfV3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyIsIl9GU1Rhc2siLCJfQWNxdWlyZUZvcm1HZW5lcmF0b3IiLCJfUHVibGlzaGVkVmVyc2lvblV0aWxzIiwiX1Jlc29sdmVGb3JtSW5mbyIsIl9Xcml0ZUZvcm1NZXRhIiwiX0Zvcm1HbG9ic1V0aWxzIiwiX1N0YXRpY0xvZ2dlciIsIl9PYnNlcnZlIiwiX1NpbmdsZVZhbHVlUHJvZHVjZXIiLCJfVGltaW5nVXRpbHMiLCJfQ2FjaGVBc3NldHNQbHVnaW4iLCJfVHlwaW5nVXRpbHMiLCJfV3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIiwiX2dldFJuZ1NjaGVtYUZpbGVuYW1lIiwiX0Zvcm1QYXRoVXRpbHMiLCJfV2VsbEtub3duRGlyZWN0b3JpZXMiLCJnZXRHZW5lcmF0b3JWZXJzaW9uIiwiZ2VuZXJhdG9yU291cmNlIiwidHlwZSIsInZlcnNpb24iLCJFcnJvciIsInJ1bkJ1aWxkRm9ybXMiLCJjb250ZXh0Iiwib3B0aW9ucyIsImZhcm1EaXJlY3RvcnkiLCJyZXNvdXJjZXNEaXJlY3RvcnkiLCJlbmdpbmVEaXJlY3RvcnkiLCJjYW5keU1vZHVsZXNEaXJlY3RvcnkiLCJobEZhcm1EaXJlY3RvcnlQYXRoIiwiYnVpbGRPcHRpb25zIiwicGlja0xpc3RzQ2hhaW4iLCJPYnNlcnZlIiwiZmlsZXMiLCJwYXRoIiwiam9pbiIsImRvIiwieCIsIkZTVGFzayIsImNvcHlSZWN1cnNpdmVseSIsImxvZ2dlciIsIndpdGhQcmVmaXgiLCJGb3JtR2xvYnMiLCJlbnN1cmVFYWNoR2xvYlJlc29sdmVzSW50b0V4aXN0aW5nRm9ybSIsImZvcm1HbG9icyIsImZvcm1JbmZvcyIsInJlc29sdmVHZnZHbG9icyIsInN0YXRpY1Jlc291cmNlc0ZvclByb2R1Y3Rpb25DaGFpbiIsIl9fZGlybmFtZSIsImdldExvZ2dlciIsInJlc291cmNlc0V4dGVybmFsQ29udmVydGVyc0NoYWluIiwiZW1wdHkiLCJjb3BpZWRFbmdpbmVzIiwiU2V0IiwicmVwb3NpdG9yeVJvb3QiLCJidWlsZENhY2hlIiwiQnVpbGRDYWNoZSIsImJ1aWxkQ2FjaGVNb2RlIiwiYnVpbGRGb3Jtc0NoYWluIiwiZml4ZWRGb3JtRGlyZWN0b3JpZXMiLCJtYXAiLCJyZWxhdGl2ZSIsImZvcm1QYXRoIiwic3BsaXRUb1BhcmFsbGVsQ2hhaW5zIiwiZm9ybVJlbGF0aXZlUGF0aCIsImdmdiIsImV4dHJhY3RHZnZGcm9tRm9ybVBhdGgiLCJmb3JtRGlyUGF0aCIsInBhdGhFeGlzdHMiLCJXZWxsS25vd25EaXJlY3RvcmllcyIsIkZvcm1Kc29uRmlsZU5hbWUiLCJ3YXJuaW5nIiwidmFsdWUiLCJmb3JtU2NoZW1hc0RpclBhdGgiLCJybmdTY2hlbWFNYXNrIiwiZ2V0Um5nU2NoZW1hRmlsZW5hbWUiLCJmaWxlIiwidHJhbnNmb3JtIiwiZm9ybUpzb25GaWxlIiwicmVzb2x2ZUZvcm1JbmZvIiwidXBncmFkZUZvcm1Kc29uIiwidXNlTGFzdFN0YWJsZVZlcnNpb24iLCJ1c2VQcmVyZWxlYXNlVmVyc2lvbiIsImZpIiwibW9kZSIsIkZvcm1CdWlsZE1vZGUiLCJOb3JtYWxCdWlsZCIsImdlbmVyYXRvclZlcnNpb24iLCJ1bmRlZmluZWQiLCJlbmdpbmVWZXJzaW9uIiwicmVzb2x2ZUdlbmVyYXRvclZlcnNpb24iLCJlbmdpbmVTb3VyY2UiLCJyZXNvbHZlRW5naW5lVmVyc2lvbiIsImF0dGFjaCIsIlNpbmdsZVZhbHVlUHJvZHVjZXIiLCJOdWxsRm9ybUdlbmVyYXRvciIsImdlbmVyYXRvckZhY3RvcnkiLCJ1c2VWZXJzaW9uRnJvbUNhY2hlIiwieSIsImdlbmVyYXRvciIsImdldEdlbmVyYXRvclNvdXJjZUtleSIsImVuZ2luZUZhY3RvcnkiLCJoYXMiLCJnZXRFbmdpbmVTb3VyY2VLZXkiLCJhZGQiLCJmb3JtU291cmNlc1BhdGgiLCJkZXBlbmRlbmNpZXNIYXNoIiwic3VwcG9ydHNEZXBlbmRlbmNpZXNFeHRyYWN0aW9uIiwiZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaCIsImJ1aWxkQ2FjaGVFeGlzdCIsImV4aXN0cyIsIl9maSRkZXBlbmRlbmNpZXNIYXNoIiwibG9nIiwiZ2VuZXJhdGVGb3JtIiwic2tpcENvZGVSZWZvcm1hdHRpbmciLCJza2lwR2VuZXJhdGVkQ29kZVJlZm9ybWF0dGluZyIsInJlc291cmNlc0hhc2giLCJfZmkkZGVwZW5kZW5jaWVzSGFzaDIiLCJfZmkkZGVwZW5kZW5jaWVzSGFzaDMiLCJleHRyYWN0IiwiYnVpbGRDYWNoZU9wdGlvbnMiLCJkZXBzSGFzaCIsImNvbXBpbGVGb3JtIiwiZm9ybU5hbWUiLCJ0aGVtZXMiLCJyZWplY3QiLCJ3cml0ZUZvcm1NZXRhIiwid3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyIsIndyaXRlQXR0YWNobWVudFBhdGhGaWxlcyIsIkNvcHlMZWdhY3lQcmVidWlsdFJlc291cmNlcyIsIm1vZGlmaWVyIiwiY29udGVudCIsInJlcGxhY2UiLCJtb2RpZnlGaWxlc0NvbnRlbnQiLCJ3YXRjaCIsIm5vdGlmaWVyIiwibm90aWZ5IiwidGl0bGUiLCJtZXNzYWdlIiwiY2xlYW4iLCJjbGVhblRhcmdldERpcmVjdG9yeSIsInN0b3BPYnNlcnZlMSIsIm9ic2VydmUiLCJzdG9wT2JzZXJ2ZTIiLCJzdG9wT2JzZXJ2ZTMiLCJzdG9wT2JzZXJ2ZTUiLCJ3YWl0Rm9yRXhpdCIsInN0YXJ0RGF0ZSIsIkRhdGUiLCJub3ciLCJjdXJyZW50VmFsdWUiLCJjb25zb2xlIiwiY2hhbGsiLCJncmVlbkJyaWdodCIsInRvdGFsVGltZSIsInByaW50VGltZSIsImVtcHR5RGlyIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL0NMSUNvbW1hbmRzL0J1aWxkRm9ybXMvUnVuQnVpbGRGb3Jtcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5pbXBvcnQgeyBlbXB0eURpciwgcGF0aEV4aXN0cyB9IGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0IG5vdGlmaWVyIGZyb20gXCJub2RlLW5vdGlmaWVyXCI7XG5cbmltcG9ydCB7IGVuZ2luZUZhY3RvcnkgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9FbmdpbmUvQWNxdWlyZUZvcm1FbmdpbmVcIjtcbmltcG9ydCB7IGdldEVuZ2luZVNvdXJjZUtleSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0VuZ2luZS9FbmdpbmVTb3VyY2VcIjtcbmltcG9ydCB7IGNvbXBpbGVGb3JtIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9Db21waWxlRm9ybVwiO1xuaW1wb3J0IHsgZ2VuZXJhdGVGb3JtIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9HZW5lcmF0ZUZvcm1cIjtcbmltcG9ydCB7IE51bGxGb3JtR2VuZXJhdG9yIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9OdWxsRm9ybUdlbmVyYXRvclwiO1xuaW1wb3J0IHsgd3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vV3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlc1wiO1xuaW1wb3J0IHsgRlNUYXNrIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRlNUYXNrXCI7XG5pbXBvcnQge1xuICAgIGdlbmVyYXRvckZhY3RvcnksXG4gICAgR2VuZXJhdG9yU291cmNlLFxuICAgIGdldEdlbmVyYXRvclNvdXJjZUtleSxcbn0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvR2VuZXJhdG9yL0FjcXVpcmVGb3JtR2VuZXJhdG9yXCI7XG5pbXBvcnQgeyByZXNvbHZlRW5naW5lVmVyc2lvbiwgcmVzb2x2ZUdlbmVyYXRvclZlcnNpb24gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9QdWJsaXNoZWRWZXJzaW9uVXRpbHNcIjtcbmltcG9ydCB7IEZvcm1CdWlsZE1vZGUsIHJlc29sdmVGb3JtSW5mbyB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1Jlc29sdmVGb3JtSW5mb1wiO1xuaW1wb3J0IHsgd3JpdGVGb3JtTWV0YSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1dyaXRlRm9ybU1ldGFcIjtcbmltcG9ydCB7IENvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHQgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Db25zb2xlQXBwbGljYXRpb24vQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dFwiO1xuaW1wb3J0IHsgRm9ybUdsb2JzIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvRm9ybUdsb2JzVXRpbHNcIjtcbmltcG9ydCB7IElMb2dnZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Mb2dnaW5nL0lMb2dnZXJcIjtcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL0xvZ2dpbmcvU3RhdGljTG9nZ2VyXCI7XG5pbXBvcnQgeyBPYnNlcnZlIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvVGFza3NDb3JlL09ic2VydmVcIjtcbmltcG9ydCB7IFNpbmdsZVZhbHVlUHJvZHVjZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvU2luZ2xlVmFsdWVQcm9kdWNlclwiO1xuaW1wb3J0IHsgcHJpbnRUaW1lIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvVGltaW5nVXRpbHNcIjtcbmltcG9ydCB7IEJ1aWxkQ2FjaGUgfSBmcm9tIFwiLi4vLi4vRm9ybVdlYnBhY2tDb25maWd1cmF0aW9uL0NhY2hlQXNzZXRzUGx1Z2luXCI7XG5pbXBvcnQgeyByZWplY3QgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL1R5cGluZ1V0aWxzXCI7XG5pbXBvcnQgeyB3cml0ZUF0dGFjaG1lbnRQYXRoRmlsZXMgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL1dyaXRlQXR0YWNobWVudFBhdGhGaWxlc1wiO1xuaW1wb3J0IHsgQ2hhaW5hYmxlVmFsdWVQcm9kdWNlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL1Rhc2tzQ29yZS9DaGFpbmFibGVWYWx1ZVByb2R1Y2VyXCI7XG5pbXBvcnQgeyBFbXB0eVByb2R1Y2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvVGFza3NDb3JlL0VtcHR5UHJvZHVjZXJcIjtcbmltcG9ydCB7IGdldFJuZ1NjaGVtYUZpbGVuYW1lIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9nZXRSbmdTY2hlbWFGaWxlbmFtZVwiO1xuaW1wb3J0IHsgZXh0cmFjdEdmdkZyb21Gb3JtUGF0aCB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vRm9ybVBhdGhVdGlsc1wiO1xuaW1wb3J0IHsgV2VsbEtub3duRGlyZWN0b3JpZXMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL1dlbGxLbm93bkRpcmVjdG9yaWVzXCI7XG5cbmltcG9ydCB7IEJ1aWxkRm9ybXNPcHRpb25zIH0gZnJvbSBcIi4vQnVpbGRGb3Jtc09wdGlvbnNcIjtcblxuZnVuY3Rpb24gZ2V0R2VuZXJhdG9yVmVyc2lvbihnZW5lcmF0b3JTb3VyY2U6IEdlbmVyYXRvclNvdXJjZSk6IHN0cmluZyB7XG4gICAgaWYgKGdlbmVyYXRvclNvdXJjZS50eXBlID09PSBcIlB1Ymxpc2hlZEdlbmVyYXRvclwiKSB7XG4gICAgICAgIHJldHVybiBnZW5lcmF0b3JTb3VyY2UudmVyc2lvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkUHJvZ3JhbVN0YXRlXCIpO1xuICAgIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bkJ1aWxkRm9ybXMoXG4gICAgY29udGV4dDogQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCxcbiAgICBvcHRpb25zOiBCdWlsZEZvcm1zT3B0aW9ucyxcbiAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgcmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgZW5naW5lRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgY2FuZHlNb2R1bGVzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgaGxGYXJtRGlyZWN0b3J5UGF0aDogc3RyaW5nXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBidWlsZE9wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgY29uc3QgcGlja0xpc3RzQ2hhaW4gPSBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmYXJtRGlyZWN0b3J5LCBcInBpY2tsaXN0c1wiKSwgXCIqLmpzb25cIikuZG8oeCA9PlxuICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoXCJQSUNLTElTVFNcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicGlja2xpc3RzXCIpKVxuICAgICk7XG5cbiAgICBhd2FpdCBGb3JtR2xvYnMuZW5zdXJlRWFjaEdsb2JSZXNvbHZlc0ludG9FeGlzdGluZ0Zvcm0ob3B0aW9ucy5mb3JtR2xvYnMsIGZhcm1EaXJlY3RvcnkpO1xuICAgIGNvbnN0IGZvcm1JbmZvcyA9IGF3YWl0IEZvcm1HbG9icy5yZXNvbHZlR2Z2R2xvYnMob3B0aW9ucy5mb3JtR2xvYnMsIGZhcm1EaXJlY3RvcnkpO1xuXG4gICAgY29uc3Qgc3RhdGljUmVzb3VyY2VzRm9yUHJvZHVjdGlvbkNoYWluID0gT2JzZXJ2ZS5maWxlcyhcbiAgICAgICAgcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLlwiLCBcIi4uXCIsIFwiU3RhdGljRmlsZXNGb3JQcm9kdWN0aW9uUmVzb3VyY2VzRGlyXCIpLFxuICAgICAgICBcIiouanNcIixcbiAgICAgICAgXCIqLmpzLm1hcFwiXG4gICAgKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlNUQVRJQ1NcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicHVibGljXCIsIFwic2NyaXB0c1wiKSlcbiAgICApO1xuXG4gICAgLyoqINCa0L7QvdCy0LXRgNGC0LXRgNGLINC+0L/QuNGB0Lgg0LTQu9GPINGE0L7RgNC8LCDQutC+0YLQvtGA0YvQtSDQv9C+0LrQsCDQvdC1INGA0LXQsNC70LjQt9C+0LLQsNC90Ysg0L3QsCDQutC10L3QtNC4LCDRgdCw0LzQsCDQvNC10YXQsNC90LjQutCwINC+0L/QuNGB0Lgg0L/QtdGA0LXQvdC10YHQtdC90LAg0LIg0YTQvtGA0LzRiyDQsiDQutC10L3QtNC4INCw0L/QuCwg0L/QvtGN0YLQvtC80YMg0L7QvdC4INC00L7Qu9C20L3RiyDQsdGL0YLRjCDQsiBjYW5keS5yZXNvdXJjZXNcbiAgICAgKiAg0KDQtdCw0LvQuNC30YPQtdGC0YHRjyDRgtC+0LvRjNC60L4g0L/RgNC4INC+0LHRidC10Lwg0LHQuNC70LTQtSDRhNC+0YDQvDogY2FuZHkgYnVpbGQgKlxuICAgICAqICovXG4gICAgbGV0IHJlc291cmNlc0V4dGVybmFsQ29udmVydGVyc0NoYWluOiBDaGFpbmFibGVWYWx1ZVByb2R1Y2VyPHN0cmluZz4gfCBFbXB0eVByb2R1Y2VyID0gT2JzZXJ2ZS5lbXB0eSgpO1xuICAgIGlmIChvcHRpb25zLmZvcm1HbG9ic1swXSA9PT0gXCIqXCIpIHtcbiAgICAgICAgcmVzb3VyY2VzRXh0ZXJuYWxDb252ZXJ0ZXJzQ2hhaW4gPSBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmYXJtRGlyZWN0b3J5LCBcImV4dGVybmFsQ29udmVydGVyc1wiKSwgXCIqLnhzbHRcIikuZG8oXG4gICAgICAgICAgICB4ID0+XG4gICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkVYVEVSTkFMLUNPTlZFUlRFUlNcIiksXG4gICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwiY29udmVydGVyc1wiKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb3BpZWRFbmdpbmVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICBjb25zdCByZXBvc2l0b3J5Um9vdCA9IHBhdGguam9pbihmYXJtRGlyZWN0b3J5LCBcIi4uXCIpO1xuICAgIGNvbnN0IGJ1aWxkQ2FjaGUgPSBuZXcgQnVpbGRDYWNoZShmYXJtRGlyZWN0b3J5LCBvcHRpb25zLmJ1aWxkQ2FjaGVNb2RlKTtcbiAgICBjb25zdCBidWlsZEZvcm1zQ2hhaW4gPSBPYnNlcnZlLmZpeGVkRm9ybURpcmVjdG9yaWVzKFxuICAgICAgICBmb3JtSW5mb3MubWFwKHggPT4gcGF0aC5yZWxhdGl2ZShyZXBvc2l0b3J5Um9vdCwgeC5mb3JtUGF0aCkpXG4gICAgKS5zcGxpdFRvUGFyYWxsZWxDaGFpbnMoXG4gICAgICAgIHggPT4geCxcbiAgICAgICAgeCA9PiB4LFxuICAgICAgICBhc3luYyBmb3JtUmVsYXRpdmVQYXRoID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdmdiA9IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGgoZm9ybVJlbGF0aXZlUGF0aCk7XG4gICAgICAgICAgICBjb25zdCBmb3JtRGlyUGF0aCA9IHBhdGguam9pbihyZXBvc2l0b3J5Um9vdCwgZm9ybVJlbGF0aXZlUGF0aCk7XG5cbiAgICAgICAgICAgIGlmICghKGF3YWl0IHBhdGhFeGlzdHMocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lKSkpKSB7XG4gICAgICAgICAgICAgICAgY29udGV4dC5sb2dnZXIud2FybmluZyhcbiAgICAgICAgICAgICAgICAgICAgYEZvcm0gJHtnZnZ9IGRvZXMgbm90IGhhdmUgZm9ybS5qc29uIGZpbGUuIFRvIGluY2x1ZGUgdGhpcyBmb3JtIHRvIGJ1aWxkIHByb2Nlc3MgcmVzdGFydCBidWlsZGBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJldHVybiBPYnNlcnZlLnZhbHVlKHt9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGZvcm1TY2hlbWFzRGlyUGF0aCA9IHBhdGguam9pbihmb3JtRGlyUGF0aCwgXCJzY2hlbWFzXCIpO1xuICAgICAgICAgICAgY29uc3Qgcm5nU2NoZW1hTWFzayA9IGAqJHtnZXRSbmdTY2hlbWFGaWxlbmFtZShmb3JtU2NoZW1hc0RpclBhdGgsIGdmdil9YDtcblxuICAgICAgICAgICAgcmV0dXJuIE9ic2VydmUuZmlsZShwYXRoLmpvaW4oZm9ybURpclBhdGgsIFdlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1Kc29uRmlsZU5hbWUpKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oZm9ybUpzb25GaWxlID0+XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmVGb3JtSW5mbyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Kc29uRmlsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChgRk9STToke2dmdn1gKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudXBncmFkZUZvcm1Kc29uLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51c2VMYXN0U3RhYmxlVmVyc2lvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudXNlUHJlcmVsZWFzZVZlcnNpb25cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLm1vZGUgPT09IEZvcm1CdWlsZE1vZGUuTm9ybWFsQnVpbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaS5nZW5lcmF0b3JWZXJzaW9uID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImdlbmVyYXRvclZlcnNpb24gaXMgbm90IGRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZW5naW5lVmVyc2lvbiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJlbmdpbmVWZXJzaW9uIGlzIG5vdCBkZWZpbmVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5maSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JTb3VyY2U6IGF3YWl0IHJlc29sdmVHZW5lcmF0b3JWZXJzaW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaS5nZW5lcmF0b3JWZXJzaW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGdmdilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZ2luZVNvdXJjZTogYXdhaXQgcmVzb2x2ZUVuZ2luZVZlcnNpb24oZmkuZW5naW5lVmVyc2lvbiwgY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChnZnYpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvclNvdXJjZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZ2luZVNvdXJjZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmF0dGFjaChcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmdlbmVyYXRvclNvdXJjZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNpbmdsZVZhbHVlUHJvZHVjZXIobmV3IE51bGxGb3JtR2VuZXJhdG9yKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yRmFjdG9yeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmkuZ2VuZXJhdG9yU291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5keU1vZHVsZXNEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudXNlVmVyc2lvbkZyb21DYWNoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIChmaSwgeSkgPT4gKHsgLi4uZmksIGdlbmVyYXRvcjogeSB9KSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmdlbmVyYXRvclNvdXJjZSAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGdldEdlbmVyYXRvclNvdXJjZUtleShmaS5nZW5lcmF0b3JTb3VyY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIk51bGxGb3JtR2VuZXJhdG9yXCJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmVuZ2luZVNvdXJjZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTaW5nbGVWYWx1ZVByb2R1Y2VyKFwiTnVsbEVuZ2luZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbmdpbmVGYWN0b3J5KGZpLmVuZ2luZVNvdXJjZSwgY2FuZHlNb2R1bGVzRGlyZWN0b3J5LCBvcHRpb25zLnVzZVZlcnNpb25Gcm9tQ2FjaGUpLmRvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jIHggPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvcGllZEVuZ2luZXMuaGFzKGdldEVuZ2luZVNvdXJjZUtleShmaS5lbmdpbmVTb3VyY2UpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiRU5HSU5FXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJwdWJsaWNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3BpZWRFbmdpbmVzLmFkZChnZXRFbmdpbmVTb3VyY2VLZXkoZmkuZW5naW5lU291cmNlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiBmaSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgZmkgPT4gKGZpLmVuZ2luZVNvdXJjZSAhPSB1bmRlZmluZWQgPyBnZXRFbmdpbmVTb3VyY2VLZXkoZmkuZW5naW5lU291cmNlKSA6IFwiTnVsbEVuZ2luZVwiKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtU291cmNlc1BhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIi4uLy4uL2NvbnRyb2xzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiLi4vLi4veHNsdFRlbXBsYXRlcy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIi4uLy4uL2pzSGVscGVycy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInNjaGVtYXMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzdWdhci8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImNvbnRyb2xzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYXV0b2NhbGMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJoZWxwZXJzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidmFsaWRhdGlvbnMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJsb2NhbGl6YXRpb24vKiovKlwiXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnRyYW5zZm9ybShhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkZXBlbmRlbmNpZXNIYXNoOiB1bmRlZmluZWQgfCBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5tb2RlICE9PSBGb3JtQnVpbGRNb2RlLk5vcm1hbEJ1aWxkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llc0hhc2g6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGF3YWl0IGZpLmdlbmVyYXRvci5zdXBwb3J0c0RlcGVuZGVuY2llc0V4dHJhY3Rpb24oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzSGFzaCA9IGF3YWl0IGZpLmdlbmVyYXRvci5nZXRBbGxEZXBlbmRlbmNpZXNIYXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGxGYXJtRGlyZWN0b3J5UGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uZmksXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXNIYXNoOiBkZXBlbmRlbmNpZXNIYXNoLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnRyYW5zZm9ybShhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBidWlsZENhY2hlRXhpc3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmRlcGVuZGVuY2llc0hhc2ggIT0gdW5kZWZpbmVkICYmIGZpLmdlbmVyYXRvclNvdXJjZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVFeGlzdCA9IGF3YWl0IGJ1aWxkQ2FjaGUuZXhpc3RzKGZpLmdlbmVyYXRvclNvdXJjZSwgZ2Z2LCBmaS5kZXBlbmRlbmNpZXNIYXNoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uZmksXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlRXhpc3Q6IGJ1aWxkQ2FjaGVFeGlzdCxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5nZW5lcmF0b3JTb3VyY2UgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5idWlsZENhY2hlRXhpc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoYEdFTkVSQVRFOiR7Z2Z2fWApLmxvZyhcIlNraXBwZWQgZHVlIGJ1aWxkIGNhY2hlIGV4aXRzXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZUZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtU291cmNlc1BhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgaGxGYXJtRGlyZWN0b3J5UGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmdlbmVyYXRvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwQ29kZVJlZm9ybWF0dGluZzogb3B0aW9ucy5za2lwR2VuZXJhdGVkQ29kZVJlZm9ybWF0dGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXNIYXNoOiBmaS5kZXBlbmRlbmNpZXNIYXNoID8/IFwiVW5kZWZpbmVkUmVzb3VyY2VzSGFzaFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PiBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmb3JtRGlyUGF0aCwgXCJmb3JtXCIpLCBcIioqLypcIikpXG4gICAgICAgICAgICAgICAgLmRvKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmdlbmVyYXRvclNvdXJjZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZGVwZW5kZW5jaWVzSGFzaCAhPSB1bmRlZmluZWQgJiYgZmkuYnVpbGRDYWNoZUV4aXN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGBDT01QSUxFOiR7Z2Z2fWApLmxvZyhcIlNraXBwZWQgZHVlIGJ1aWxkIGNhY2hlIGV4aXN0c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGJ1aWxkQ2FjaGUuZXh0cmFjdChmaS5nZW5lcmF0b3JTb3VyY2UsIGdmdiwgZmkuZGVwZW5kZW5jaWVzSGFzaCwgcmVzb3VyY2VzRGlyZWN0b3J5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBidWlsZENhY2hlT3B0aW9ucyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5kZXBlbmRlbmNpZXNIYXNoICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHNIYXNoOiBmaS5kZXBlbmRlbmNpZXNIYXNoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvclZlcnNpb246IGdldEdlbmVyYXRvclZlcnNpb24oZmkuZ2VuZXJhdG9yU291cmNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZnY6IGdmdixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlOiBvcHRpb25zLmJ1aWxkQ2FjaGVNb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3Rvcnk6IGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgY29tcGlsZUZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLnRoZW1lcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmRlcGVuZGVuY2llc0hhc2ggPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhpcyB2ZXJzaW9uIG9mIGdlbmVyYXRvciBpcyBub3Qgc3VwcG9ydGVkIGR1ZSB0byBkZXBlbmRlbmNpZXMgZXh0cmFjdGlvbiBpcyBub3Qgc3VwcG9ydGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlT3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlRm9ybU1ldGEoXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXNEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBnZnYsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5lbmdpbmVTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5kZXBlbmRlbmNpZXNIYXNoID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRoaXMgdmVyc2lvbiBvZiBnZW5lcmF0b3IgaXMgbm90IHN1cHBvcnRlZCBkdWUgdG8gZGVwZW5kZW5jaWVzIGV4dHJhY3Rpb24gaXMgbm90IHN1cHBvcnRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLnRoZW1lcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlT3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmRvKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmdlbmVyYXRvclNvdXJjZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBidWlsZENhY2hlT3B0aW9ucyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5kZXBlbmRlbmNpZXNIYXNoICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHNIYXNoOiBmaS5kZXBlbmRlbmNpZXNIYXNoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvclZlcnNpb246IGdldEdlbmVyYXRvclZlcnNpb24oZmkuZ2VuZXJhdG9yU291cmNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZnY6IGdmdixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlOiBvcHRpb25zLmJ1aWxkQ2FjaGVNb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3Rvcnk6IGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlRkxhbmdOb3JtYWxpemF0aW9uRmlsZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmJ1aWxkQ2FjaGVFeGlzdFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB3cml0ZUF0dGFjaG1lbnRQYXRoRmlsZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlT3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5tb2RlID09PSBGb3JtQnVpbGRNb2RlLkNvcHlMZWdhY3lQcmVidWlsdFJlc291cmNlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJsZWdhY3ktcHJlYnVpbHRcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkxFR0FDWS1QUkVCVUlMVFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTaW5nbGVWYWx1ZVByb2R1Y2VyKFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJzY2hlbWFzXCIpLCBybmdTY2hlbWFNYXNrKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJTQ0hFTUFTXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJzY2hlbWFzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwiY29udmVydGVyc1wiKSwgXCIqXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkNPTlZFUlRFUlNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcImNvbnZlcnRlcnNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJtZXJnZXJzXCIpLCBcIipcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTUVSR0VSU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwibWVyZ2Vyc1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RpZmllciA9IChjb250ZW50OiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQucmVwbGFjZSgvPHg6aW5jbHVkZSBocmVmPVwiWy4vXSsvZywgJzx4OmluY2x1ZGUgaHJlZj1cIicpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcImNvbnZlcnRlcnNcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2subW9kaWZ5RmlsZXNDb250ZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJGSVgtWFNMVC1JTkNMVURFXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJjb252ZXJ0ZXJzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiKiovKi54c2x0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcIi4uXCIsIFwiLi5cIiwgXCJ4c2x0VGVtcGxhdGVzXCIpLCBcIipcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiWFNMVC1URU1QTEFURVNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcImNvbnZlcnRlcnNcIiwgXCJ4c2x0VGVtcGxhdGVzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwibm9ybWFsaXplXCIpLCBcIioueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIk5PUk1BTElaRVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwibm9ybWFsaXplXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwicGF0Y2hcIiksIFwiKi54c2x0XCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlBBVENIXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJwYXRjaFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcIm1hcFwiKSwgXCIqLnhtbFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJNQVBcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwibWFwXCIpKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInVubWFwXCIpLCBcIioueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlVOTUFQXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJ1bm1hcFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChidWlsZE9wdGlvbnMud2F0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGlmaWVyLm5vdGlmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGAke2ZpLmZvcm1OYW1lfTog0YHQsdC+0YDQutCwINC30LDQstC10YDRiNC10L3QsGAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogYEVuZ2luZTogJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmkuZW5naW5lU291cmNlID09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcIltOb0VuZ2luZV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBmaS5lbmdpbmVTb3VyY2UudHlwZSA9PT0gXCJMb2NhbEVuZ2luZVNvdXJjZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcImxvY2FsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZmkuZW5naW5lU291cmNlLnZlcnNpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgaWYgKGJ1aWxkT3B0aW9ucy53YXRjaCkge1xuICAgICAgICBpZiAob3B0aW9ucy5jbGVhbikge1xuICAgICAgICAgICAgYXdhaXQgY2xlYW5UYXJnZXREaXJlY3RvcnkocmVzb3VyY2VzRGlyZWN0b3J5LCBjb250ZXh0LmxvZ2dlcik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmUxID0gYXdhaXQgcGlja0xpc3RzQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTIgPSBhd2FpdCBidWlsZEZvcm1zQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTMgPSBhd2FpdCBzdGF0aWNSZXNvdXJjZXNGb3JQcm9kdWN0aW9uQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTUgPSBhd2FpdCByZXNvdXJjZXNFeHRlcm5hbENvbnZlcnRlcnNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGF3YWl0IGNvbnRleHQud2FpdEZvckV4aXQoKTtcbiAgICAgICAgaWYgKHN0b3BPYnNlcnZlMyAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlMygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdG9wT2JzZXJ2ZTUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTUoKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTIoKTtcbiAgICAgICAgYXdhaXQgc3RvcE9ic2VydmUxKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc3RhcnREYXRlID0gRGF0ZS5ub3coKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmNsZWFuKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgY2xlYW5UYXJnZXREaXJlY3RvcnkocmVzb3VyY2VzRGlyZWN0b3J5LCBjb250ZXh0LmxvZ2dlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCBwaWNrTGlzdHNDaGFpbi5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBhd2FpdCBzdGF0aWNSZXNvdXJjZXNGb3JQcm9kdWN0aW9uQ2hhaW4uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgYXdhaXQgcmVzb3VyY2VzRXh0ZXJuYWxDb252ZXJ0ZXJzQ2hhaW4uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgYXdhaXQgYnVpbGRGb3Jtc0NoYWluLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbkJyaWdodChcIkJ1aWxkIHN1Y2Nlc3NcIikpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgY29uc3QgdG90YWxUaW1lID0gRGF0ZS5ub3coKSAtIHN0YXJ0RGF0ZTtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgVG90YWwgdGltZTogJHtwcmludFRpbWUodG90YWxUaW1lKX1gKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gY2xlYW5UYXJnZXREaXJlY3RvcnkocmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmcsIGxvZ2dlcjogSUxvZ2dlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGxvZ2dlci5sb2coXCJDbGVhbmluZyByZXNvdXJjZSBkaXJlY3RvcnkuIFwiICsgcmVzb3VyY2VzRGlyZWN0b3J5KTtcbiAgICBhd2FpdCBlbXB0eURpcihyZXNvdXJjZXNEaXJlY3RvcnkpO1xuICAgIGxvZ2dlci5sb2coXCJSZXNvdXJjZSBkaXJlY3RvcnkgY2xlYW5cIik7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxNQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxRQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxhQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBSSxrQkFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssYUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sWUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sYUFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsa0JBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLDZCQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxPQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxxQkFBQSxHQUFBWCxPQUFBO0FBS0EsSUFBQVksc0JBQUEsR0FBQVosT0FBQTtBQUNBLElBQUFhLGdCQUFBLEdBQUFiLE9BQUE7QUFDQSxJQUFBYyxjQUFBLEdBQUFkLE9BQUE7QUFFQSxJQUFBZSxlQUFBLEdBQUFmLE9BQUE7QUFFQSxJQUFBZ0IsYUFBQSxHQUFBaEIsT0FBQTtBQUNBLElBQUFpQixRQUFBLEdBQUFqQixPQUFBO0FBQ0EsSUFBQWtCLG9CQUFBLEdBQUFsQixPQUFBO0FBQ0EsSUFBQW1CLFlBQUEsR0FBQW5CLE9BQUE7QUFDQSxJQUFBb0Isa0JBQUEsR0FBQXBCLE9BQUE7QUFDQSxJQUFBcUIsWUFBQSxHQUFBckIsT0FBQTtBQUNBLElBQUFzQix5QkFBQSxHQUFBdEIsT0FBQTtBQUdBLElBQUF1QixxQkFBQSxHQUFBdkIsT0FBQTtBQUNBLElBQUF3QixjQUFBLEdBQUF4QixPQUFBO0FBQ0EsSUFBQXlCLHFCQUFBLEdBQUF6QixPQUFBO0FBSUEsU0FBUzBCLG1CQUFtQkEsQ0FBQ0MsZUFBZ0MsRUFBVTtFQUNuRSxJQUFJQSxlQUFlLENBQUNDLElBQUksS0FBSyxvQkFBb0IsRUFBRTtJQUMvQyxPQUFPRCxlQUFlLENBQUNFLE9BQU87RUFDbEMsQ0FBQyxNQUFNO0lBQ0gsTUFBTSxJQUFJQyxLQUFLLENBQUMscUJBQXFCLENBQUM7RUFDMUM7QUFDSjtBQUVPLGVBQWVDLGFBQWFBLENBQy9CQyxPQUFrQyxFQUNsQ0MsT0FBMEIsRUFDMUJDLGFBQXFCLEVBQ3JCQyxrQkFBMEIsRUFDMUJDLGVBQXVCLEVBQ3ZCQyxxQkFBNkIsRUFDN0JDLG1CQUEyQixFQUNkO0VBQ2IsTUFBTUMsWUFBWSxHQUFHTixPQUFPO0VBRTVCLE1BQU1PLGNBQWMsR0FBR0MsZ0JBQU8sQ0FBQ0MsS0FBSyxDQUFDQyxhQUFJLENBQUNDLElBQUksQ0FBQ1YsYUFBYSxFQUFFLFdBQVcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDVyxFQUFFLENBQUNDLENBQUMsSUFDdEZDLGNBQU0sQ0FBQ0MsZUFBZSxDQUFDaEIsT0FBTyxDQUFDaUIsTUFBTSxDQUFDQyxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQUVKLENBQUMsRUFBRUgsYUFBSSxDQUFDQyxJQUFJLENBQUNULGtCQUFrQixFQUFFLFdBQVcsQ0FBQyxDQUNoSCxDQUFDO0VBRUQsTUFBTWdCLHlCQUFTLENBQUNDLHNDQUFzQyxDQUFDbkIsT0FBTyxDQUFDb0IsU0FBUyxFQUFFbkIsYUFBYSxDQUFDO0VBQ3hGLE1BQU1vQixTQUFTLEdBQUcsTUFBTUgseUJBQVMsQ0FBQ0ksZUFBZSxDQUFDdEIsT0FBTyxDQUFDb0IsU0FBUyxFQUFFbkIsYUFBYSxDQUFDO0VBRW5GLE1BQU1zQixpQ0FBaUMsR0FBR2YsZ0JBQU8sQ0FBQ0MsS0FBSyxDQUNuREMsYUFBSSxDQUFDQyxJQUFJLENBQUNhLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLHNDQUFzQyxDQUFDLEVBQ3hFLE1BQU0sRUFDTixVQUNKLENBQUMsQ0FBQ1osRUFBRSxDQUFDQyxDQUFDLElBQ0ZDLGNBQU0sQ0FBQ0MsZUFBZSxDQUFDLElBQUFVLHVCQUFTLEVBQUMsQ0FBQyxDQUFDUixVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUVKLENBQUMsRUFBRUgsYUFBSSxDQUFDQyxJQUFJLENBQUNULGtCQUFrQixFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FDbkgsQ0FBQzs7RUFFRDtBQUNKO0FBQ0E7RUFDSSxJQUFJd0IsZ0NBQWdGLEdBQUdsQixnQkFBTyxDQUFDbUIsS0FBSyxDQUFDLENBQUM7RUFDdEcsSUFBSTNCLE9BQU8sQ0FBQ29CLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUU7SUFDOUJNLGdDQUFnQyxHQUFHbEIsZ0JBQU8sQ0FBQ0MsS0FBSyxDQUFDQyxhQUFJLENBQUNDLElBQUksQ0FBQ1YsYUFBYSxFQUFFLG9CQUFvQixDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUNXLEVBQUUsQ0FDekdDLENBQUMsSUFDR0MsY0FBTSxDQUFDQyxlQUFlLENBQ2xCLElBQUFVLHVCQUFTLEVBQUMsQ0FBQyxDQUFDUixVQUFVLENBQUMscUJBQXFCLENBQUMsRUFDN0NKLENBQUMsRUFDREgsYUFBSSxDQUFDQyxJQUFJLENBQUNULGtCQUFrQixFQUFFLFlBQVksQ0FDOUMsQ0FDUixDQUFDO0VBQ0w7RUFFQSxNQUFNMEIsYUFBYSxHQUFHLElBQUlDLEdBQUcsQ0FBUyxDQUFDO0VBRXZDLE1BQU1DLGNBQWMsR0FBR3BCLGFBQUksQ0FBQ0MsSUFBSSxDQUFDVixhQUFhLEVBQUUsSUFBSSxDQUFDO0VBQ3JELE1BQU04QixVQUFVLEdBQUcsSUFBSUMsNkJBQVUsQ0FBQy9CLGFBQWEsRUFBRUQsT0FBTyxDQUFDaUMsY0FBYyxDQUFDO0VBQ3hFLE1BQU1DLGVBQWUsR0FBRzFCLGdCQUFPLENBQUMyQixvQkFBb0IsQ0FDaERkLFNBQVMsQ0FBQ2UsR0FBRyxDQUFDdkIsQ0FBQyxJQUFJSCxhQUFJLENBQUMyQixRQUFRLENBQUNQLGNBQWMsRUFBRWpCLENBQUMsQ0FBQ3lCLFFBQVEsQ0FBQyxDQUNoRSxDQUFDLENBQUNDLHFCQUFxQixDQUNuQjFCLENBQUMsSUFBSUEsQ0FBQyxFQUNOQSxDQUFDLElBQUlBLENBQUMsRUFDTixNQUFNMkIsZ0JBQWdCLElBQUk7SUFDdEIsTUFBTUMsR0FBRyxHQUFHLElBQUFDLHFDQUFzQixFQUFDRixnQkFBZ0IsQ0FBQztJQUNwRCxNQUFNRyxXQUFXLEdBQUdqQyxhQUFJLENBQUNDLElBQUksQ0FBQ21CLGNBQWMsRUFBRVUsZ0JBQWdCLENBQUM7SUFFL0QsSUFBSSxFQUFFLE1BQU0sSUFBQUksbUJBQVUsRUFBQ2xDLGFBQUksQ0FBQ0MsSUFBSSxDQUFDZ0MsV0FBVyxFQUFFRSwwQ0FBb0IsQ0FBQ0MsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUU7TUFDcEYvQyxPQUFPLENBQUNpQixNQUFNLENBQUMrQixPQUFPLENBQ2xCLFFBQVFOLEdBQUcsb0ZBQ2YsQ0FBQztNQUNELE9BQU9qQyxnQkFBTyxDQUFDd0MsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVCO0lBQ0EsTUFBTUMsa0JBQWtCLEdBQUd2QyxhQUFJLENBQUNDLElBQUksQ0FBQ2dDLFdBQVcsRUFBRSxTQUFTLENBQUM7SUFDNUQsTUFBTU8sYUFBYSxHQUFHLElBQUksSUFBQUMsMENBQW9CLEVBQUNGLGtCQUFrQixFQUFFUixHQUFHLENBQUMsRUFBRTtJQUV6RSxPQUFPakMsZ0JBQU8sQ0FBQzRDLElBQUksQ0FBQzFDLGFBQUksQ0FBQ0MsSUFBSSxDQUFDZ0MsV0FBVyxFQUFFRSwwQ0FBb0IsQ0FBQ0MsZ0JBQWdCLENBQUMsQ0FBQyxDQUM3RU8sU0FBUyxDQUFDQyxZQUFZLElBQ25CLElBQUFDLGdDQUFlLEVBQ1hELFlBQVksRUFDWlgsV0FBVyxFQUNYeEMsZUFBZSxFQUNmSixPQUFPLENBQUNpQixNQUFNLENBQUNDLFVBQVUsQ0FBQyxRQUFRd0IsR0FBRyxFQUFFLENBQUMsRUFDeEN6QyxPQUFPLENBQUN3RCxlQUFlLEVBQ3ZCeEQsT0FBTyxDQUFDeUQsb0JBQW9CLEVBQzVCekQsT0FBTyxDQUFDMEQsb0JBQ1osQ0FDSixDQUFDLENBQ0FMLFNBQVMsQ0FBQyxNQUFNTSxFQUFFLElBQUk7TUFDbkIsSUFBSUEsRUFBRSxDQUFDQyxJQUFJLEtBQUtDLDhCQUFhLENBQUNDLFdBQVcsRUFBRTtRQUN2QyxJQUFJSCxFQUFFLENBQUNJLGdCQUFnQixJQUFJQyxTQUFTLEVBQUU7VUFDbEMsTUFBTSxJQUFJbkUsS0FBSyxDQUFDLGlDQUFpQyxDQUFDO1FBQ3REO1FBQ0EsSUFBSThELEVBQUUsQ0FBQ00sYUFBYSxJQUFJRCxTQUFTLEVBQUU7VUFDL0IsTUFBTSxJQUFJbkUsS0FBSyxDQUFDLDhCQUE4QixDQUFDO1FBQ25EO1FBQ0EsT0FBTztVQUNILEdBQUc4RCxFQUFFO1VBQ0xqRSxlQUFlLEVBQUUsTUFBTSxJQUFBd0UsOENBQXVCLEVBQzFDUCxFQUFFLENBQUNJLGdCQUFnQixFQUNuQmhFLE9BQU8sQ0FBQ2lCLE1BQU0sQ0FBQ0MsVUFBVSxDQUFDd0IsR0FBRyxDQUNqQyxDQUFDO1VBQ0QwQixZQUFZLEVBQUUsTUFBTSxJQUFBQywyQ0FBb0IsRUFBQ1QsRUFBRSxDQUFDTSxhQUFhLEVBQUVsRSxPQUFPLENBQUNpQixNQUFNLENBQUNDLFVBQVUsQ0FBQ3dCLEdBQUcsQ0FBQztRQUM3RixDQUFDO01BQ0wsQ0FBQyxNQUFNO1FBQ0gsT0FBTztVQUNILEdBQUdrQixFQUFFO1VBQ0xqRSxlQUFlLEVBQUVzRSxTQUFTO1VBQzFCRyxZQUFZLEVBQUVIO1FBQ2xCLENBQUM7TUFDTDtJQUNKLENBQUMsQ0FBQyxDQUNESyxNQUFNLENBQ0gsTUFBTVYsRUFBRSxJQUFJO01BQ1IsSUFBSUEsRUFBRSxDQUFDakUsZUFBZSxJQUFJc0UsU0FBUyxFQUFFO1FBQ2pDLE9BQU8sSUFBSU0sd0NBQW1CLENBQUMsSUFBSUMsb0NBQWlCLENBQUMsQ0FBQyxDQUFDO01BQzNELENBQUMsTUFBTTtRQUNILE9BQU8sSUFBQUMsc0NBQWdCLEVBQ25CYixFQUFFLENBQUNqRSxlQUFlLEVBQ2xCVSxxQkFBcUIsRUFDckJKLE9BQU8sQ0FBQ3lFLG1CQUNaLENBQUM7TUFDTDtJQUNKLENBQUMsRUFDRCxPQUFPZCxFQUFFLEVBQUVlLENBQUMsTUFBTTtNQUFFLEdBQUdmLEVBQUU7TUFBRWdCLFNBQVMsRUFBRUQ7SUFBRSxDQUFDLENBQUMsRUFDMUMsTUFBTWYsRUFBRSxJQUNKQSxFQUFFLENBQUNqRSxlQUFlLElBQUlzRSxTQUFTLEdBQ3pCLElBQUFZLDJDQUFxQixFQUFDakIsRUFBRSxDQUFDakUsZUFBZSxDQUFDLEdBQ3pDLG1CQUNkLENBQUMsQ0FDQTJFLE1BQU0sQ0FDSCxNQUFNVixFQUFFLElBQUk7TUFDUixJQUFJQSxFQUFFLENBQUNRLFlBQVksS0FBS0gsU0FBUyxFQUFFO1FBQy9CLE9BQU8sSUFBSU0sd0NBQW1CLENBQUMsWUFBWSxDQUFDO01BQ2hEO01BQ0EsT0FBTyxJQUFBTyxnQ0FBYSxFQUFDbEIsRUFBRSxDQUFDUSxZQUFZLEVBQUUvRCxxQkFBcUIsRUFBRUosT0FBTyxDQUFDeUUsbUJBQW1CLENBQUMsQ0FBQzdELEVBQUUsQ0FDeEYsTUFBTUMsQ0FBQyxJQUFJO1FBQ1AsSUFBSSxDQUFDZSxhQUFhLENBQUNrRCxHQUFHLENBQUMsSUFBQUMsZ0NBQWtCLEVBQUNwQixFQUFFLENBQUNRLFlBQVksQ0FBQyxDQUFDLEVBQUU7VUFDekQsTUFBTXJELGNBQU0sQ0FBQ0MsZUFBZSxDQUN4QixJQUFBVSx1QkFBUyxFQUFDLENBQUMsQ0FBQ1IsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUNoQ0osQ0FBQyxFQUNESCxhQUFJLENBQUNDLElBQUksQ0FBQ1Qsa0JBQWtCLEVBQUUsUUFBUSxDQUMxQyxDQUFDO1VBQ0QwQixhQUFhLENBQUNvRCxHQUFHLENBQUMsSUFBQUQsZ0NBQWtCLEVBQUNwQixFQUFFLENBQUNRLFlBQVksQ0FBQyxDQUFDO1FBQzFEO01BQ0osQ0FDSixDQUFDO0lBQ0wsQ0FBQyxFQUNELE1BQU1SLEVBQUUsSUFBSUEsRUFBRSxFQUNkLE1BQU1BLEVBQUUsSUFBS0EsRUFBRSxDQUFDUSxZQUFZLElBQUlILFNBQVMsR0FBRyxJQUFBZSxnQ0FBa0IsRUFBQ3BCLEVBQUUsQ0FBQ1EsWUFBWSxDQUFDLEdBQUcsWUFDdEYsQ0FBQyxDQUNBRSxNQUFNLENBQUMsTUFBTVYsRUFBRSxJQUNabkQsZ0JBQU8sQ0FBQ0MsS0FBSyxDQUNUa0QsRUFBRSxDQUFDc0IsZUFBZSxFQUNsQixxQkFBcUIsRUFDckIsMEJBQTBCLEVBQzFCLHNCQUFzQixFQUN0QixjQUFjLEVBQ2QsWUFBWSxFQUNaLGVBQWUsRUFDZixlQUFlLEVBQ2YsY0FBYyxFQUNkLGtCQUFrQixFQUNsQixtQkFDSixDQUNKLENBQUMsQ0FDQTVCLFNBQVMsQ0FBQyxNQUFNTSxFQUFFLElBQUk7TUFDbkIsSUFBSXVCLGdCQUFvQztNQUN4QyxJQUFJdkIsRUFBRSxDQUFDQyxJQUFJLEtBQUtDLDhCQUFhLENBQUNDLFdBQVcsRUFBRTtRQUN2QyxPQUFPO1VBQ0gsR0FBR0gsRUFBRTtVQUNMdUIsZ0JBQWdCLEVBQUVsQjtRQUN0QixDQUFDO01BQ0w7TUFDQSxJQUFJLE1BQU1MLEVBQUUsQ0FBQ2dCLFNBQVMsQ0FBQ1EsOEJBQThCLENBQUMsQ0FBQyxFQUFFO1FBQ3JERCxnQkFBZ0IsR0FBRyxNQUFNdkIsRUFBRSxDQUFDZ0IsU0FBUyxDQUFDUyxzQkFBc0IsQ0FDeER6QyxXQUFXLEVBQ1gxQyxhQUFhLEVBQ2JJLG1CQUNKLENBQUM7TUFDTDtNQUNBLE9BQU87UUFDSCxHQUFHc0QsRUFBRTtRQUNMdUIsZ0JBQWdCLEVBQUVBO01BQ3RCLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FDRDdCLFNBQVMsQ0FBQyxNQUFNTSxFQUFFLElBQUk7TUFDbkIsSUFBSTBCLGVBQXdCLEdBQUcsS0FBSztNQUNwQyxJQUFJMUIsRUFBRSxDQUFDdUIsZ0JBQWdCLElBQUlsQixTQUFTLElBQUlMLEVBQUUsQ0FBQ2pFLGVBQWUsSUFBSXNFLFNBQVMsRUFBRTtRQUNyRXFCLGVBQWUsR0FBRyxNQUFNdEQsVUFBVSxDQUFDdUQsTUFBTSxDQUFDM0IsRUFBRSxDQUFDakUsZUFBZSxFQUFFK0MsR0FBRyxFQUFFa0IsRUFBRSxDQUFDdUIsZ0JBQWdCLENBQUM7TUFDM0Y7TUFDQSxPQUFPO1FBQ0gsR0FBR3ZCLEVBQUU7UUFDTDBCLGVBQWUsRUFBRUE7TUFDckIsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUNEekUsRUFBRSxDQUFDLE1BQU0rQyxFQUFFLElBQUk7TUFBQSxJQUFBNEIsb0JBQUE7TUFDWixJQUFJNUIsRUFBRSxDQUFDakUsZUFBZSxJQUFJc0UsU0FBUyxFQUFFO1FBQ2pDLE9BQU9BLFNBQVM7TUFDcEI7TUFDQSxJQUFJTCxFQUFFLENBQUMwQixlQUFlLEVBQUU7UUFDcEJ0RixPQUFPLENBQUNpQixNQUFNLENBQUNDLFVBQVUsQ0FBQyxZQUFZd0IsR0FBRyxFQUFFLENBQUMsQ0FBQytDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQztRQUNqRixPQUFPeEIsU0FBUztNQUNwQjtNQUVBLE9BQU8sSUFBQXlCLDBCQUFZLEVBQ2Y5QixFQUFFLENBQUNzQixlQUFlLEVBQ2xCaEYsYUFBYSxFQUNiSSxtQkFBbUIsRUFDbkJzRCxFQUFFLENBQUNnQixTQUFTLEVBQ1pYLFNBQVMsRUFDVDtRQUNJMEIsb0JBQW9CLEVBQUUxRixPQUFPLENBQUMyRiw2QkFBNkI7UUFDM0RDLGFBQWEsR0FBQUwsb0JBQUEsR0FBRTVCLEVBQUUsQ0FBQ3VCLGdCQUFnQixjQUFBSyxvQkFBQSxjQUFBQSxvQkFBQSxHQUFJO01BQzFDLENBQ0osQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUNEbEIsTUFBTSxDQUFDLE1BQU1WLEVBQUUsSUFBSW5ELGdCQUFPLENBQUNDLEtBQUssQ0FBQ0MsYUFBSSxDQUFDQyxJQUFJLENBQUNnQyxXQUFXLEVBQUUsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FDekUvQixFQUFFLENBQUMsTUFBTStDLEVBQUUsSUFBSTtNQUFBLElBQUFrQyxxQkFBQSxFQUFBQyxxQkFBQTtNQUNaLElBQUluQyxFQUFFLENBQUNqRSxlQUFlLElBQUlzRSxTQUFTLEVBQUU7UUFDakM7TUFDSjtNQUNBLElBQUlMLEVBQUUsQ0FBQ3VCLGdCQUFnQixJQUFJbEIsU0FBUyxJQUFJTCxFQUFFLENBQUMwQixlQUFlLEVBQUU7UUFDeER0RixPQUFPLENBQUNpQixNQUFNLENBQUNDLFVBQVUsQ0FBQyxXQUFXd0IsR0FBRyxFQUFFLENBQUMsQ0FBQytDLEdBQUcsQ0FBQyxnQ0FBZ0MsQ0FBQztRQUNqRixNQUFNekQsVUFBVSxDQUFDZ0UsT0FBTyxDQUFDcEMsRUFBRSxDQUFDakUsZUFBZSxFQUFFK0MsR0FBRyxFQUFFa0IsRUFBRSxDQUFDdUIsZ0JBQWdCLEVBQUVoRixrQkFBa0IsQ0FBQztRQUMxRjtNQUNKO01BQ0EsTUFBTThGLGlCQUFpQixHQUNuQnJDLEVBQUUsQ0FBQ3VCLGdCQUFnQixJQUFJbEIsU0FBUyxHQUMxQjtRQUNJaUMsUUFBUSxFQUFFdEMsRUFBRSxDQUFDdUIsZ0JBQWdCO1FBQzdCbkIsZ0JBQWdCLEVBQUV0RSxtQkFBbUIsQ0FBQ2tFLEVBQUUsQ0FBQ2pFLGVBQWUsQ0FBQztRQUN6RCtDLEdBQUcsRUFBRUEsR0FBRztRQUNSbUIsSUFBSSxFQUFFNUQsT0FBTyxDQUFDaUMsY0FBYztRQUM1QmhDLGFBQWEsRUFBRUE7TUFDbkIsQ0FBQyxHQUNEK0QsU0FBUztNQUVuQixNQUFNLElBQUFrQyx3QkFBVyxFQUNidkMsRUFBRSxDQUFDd0MsUUFBUSxFQUNYeEMsRUFBRSxDQUFDeUMsTUFBTSxFQUNUbkcsYUFBYSxFQUNiMEMsV0FBVyxFQUNYekMsa0JBQWtCLEdBQUEyRixxQkFBQSxHQUNsQmxDLEVBQUUsQ0FBQ3VCLGdCQUFnQixjQUFBVyxxQkFBQSxjQUFBQSxxQkFBQSxHQUNmLElBQUFRLG1CQUFNLEVBQ0YsNEZBQ0osQ0FBQyxFQUNMLEtBQUssRUFDTHJDLFNBQVMsRUFDVGdDLGlCQUNKLENBQUM7TUFFRCxNQUFNLElBQUFNLDRCQUFhLEVBQ2ZwRyxrQkFBa0IsRUFDbEJ1QyxHQUFHLEVBQ0hrQixFQUFFLENBQUNRLFlBQVksR0FBQTJCLHFCQUFBLEdBQ2ZuQyxFQUFFLENBQUN1QixnQkFBZ0IsY0FBQVkscUJBQUEsY0FBQUEscUJBQUEsR0FDZixJQUFBTyxtQkFBTSxFQUNGLDRGQUNKLENBQUMsRUFDTDFDLEVBQUUsQ0FBQ3lDLE1BQU0sRUFDVHJFLFVBQVUsRUFDVmlFLGlCQUNKLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FDRHBGLEVBQUUsQ0FBQyxNQUFNK0MsRUFBRSxJQUFJO01BQ1osSUFBSUEsRUFBRSxDQUFDakUsZUFBZSxJQUFJc0UsU0FBUyxFQUFFO1FBQ2pDO01BQ0o7TUFDQSxNQUFNZ0MsaUJBQWlCLEdBQ25CckMsRUFBRSxDQUFDdUIsZ0JBQWdCLElBQUlsQixTQUFTLEdBQzFCO1FBQ0lpQyxRQUFRLEVBQUV0QyxFQUFFLENBQUN1QixnQkFBZ0I7UUFDN0JuQixnQkFBZ0IsRUFBRXRFLG1CQUFtQixDQUFDa0UsRUFBRSxDQUFDakUsZUFBZSxDQUFDO1FBQ3pEK0MsR0FBRyxFQUFFQSxHQUFHO1FBQ1JtQixJQUFJLEVBQUU1RCxPQUFPLENBQUNpQyxjQUFjO1FBQzVCaEMsYUFBYSxFQUFFQTtNQUNuQixDQUFDLEdBQ0QrRCxTQUFTO01BQ25CLE1BQU0sSUFBQXVDLDBEQUE0QixFQUM5QjVDLEVBQUUsQ0FBQ3dDLFFBQVEsRUFDWGxHLGFBQWEsRUFDYjBDLFdBQVcsRUFDWHpDLGtCQUFrQixFQUNsQjhELFNBQVMsRUFDVGpDLFVBQVUsRUFDVmlFLGlCQUFpQixFQUNqQnJDLEVBQUUsQ0FBQzBCLGVBQ1AsQ0FBQztNQUNELE1BQU0sSUFBQW1CLGtEQUF3QixFQUMxQjdDLEVBQUUsQ0FBQ3dDLFFBQVEsRUFDWGxHLGFBQWEsRUFDYjBDLFdBQVcsRUFDWHpDLGtCQUFrQixFQUNsQjhELFNBQVMsRUFDVGpDLFVBQVUsRUFDVmlFLGlCQUNKLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FDRDNCLE1BQU0sQ0FBQyxNQUFNVixFQUFFLElBQUk7TUFDaEIsSUFBSUEsRUFBRSxDQUFDQyxJQUFJLEtBQUtDLDhCQUFhLENBQUM0QywyQkFBMkIsRUFBRTtRQUN2RCxPQUFPakcsZ0JBQU8sQ0FBQ0MsS0FBSyxDQUFDQyxhQUFJLENBQUNDLElBQUksQ0FBQ2dELEVBQUUsQ0FBQ3NCLGVBQWUsRUFBRSxpQkFBaUIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDckUsRUFBRSxDQUFDQyxDQUFDLElBQzVFQyxjQUFNLENBQUNDLGVBQWUsQ0FDbEIsSUFBQVUsdUJBQVMsRUFBQyxDQUFDLENBQUNSLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUN6Q0osQ0FBQyxFQUNESCxhQUFJLENBQUNDLElBQUksQ0FBQ1Qsa0JBQWtCLENBQ2hDLENBQ0osQ0FBQztNQUNMLENBQUMsTUFBTTtRQUNILE9BQU8sSUFBSW9FLHdDQUFtQixDQUFDLEVBQUUsQ0FBQztNQUN0QztJQUNKLENBQUMsQ0FBQyxDQUNERCxNQUFNLENBQUMsTUFBTVYsRUFBRSxJQUNabkQsZ0JBQU8sQ0FBQ0MsS0FBSyxDQUFDQyxhQUFJLENBQUNDLElBQUksQ0FBQ2dELEVBQUUsQ0FBQ3NCLGVBQWUsRUFBRSxTQUFTLENBQUMsRUFBRS9CLGFBQWEsQ0FBQyxDQUFDdEMsRUFBRSxDQUFDQyxDQUFDLElBQ3ZFQyxjQUFNLENBQUNDLGVBQWUsQ0FDbEIsSUFBQVUsdUJBQVMsRUFBQyxDQUFDLENBQUNSLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFDakNKLENBQUMsRUFDREgsYUFBSSxDQUFDQyxJQUFJLENBQUNULGtCQUFrQixFQUFFLFNBQVMsQ0FDM0MsQ0FDSixDQUNKLENBQUMsQ0FDQW1FLE1BQU0sQ0FBQyxNQUFNVixFQUFFLElBQ1puRCxnQkFBTyxDQUFDQyxLQUFLLENBQUNDLGFBQUksQ0FBQ0MsSUFBSSxDQUFDZ0QsRUFBRSxDQUFDc0IsZUFBZSxFQUFFLFlBQVksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDckUsRUFBRSxDQUFDQyxDQUFDLElBQ2hFQyxjQUFNLENBQUNDLGVBQWUsQ0FDbEIsSUFBQVUsdUJBQVMsRUFBQyxDQUFDLENBQUNSLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFDcENKLENBQUMsRUFDREgsYUFBSSxDQUFDQyxJQUFJLENBQUNULGtCQUFrQixFQUFFLFlBQVksQ0FDOUMsQ0FDSixDQUNKLENBQUMsQ0FDQW1FLE1BQU0sQ0FBQyxNQUFNVixFQUFFLElBQ1puRCxnQkFBTyxDQUFDQyxLQUFLLENBQUNDLGFBQUksQ0FBQ0MsSUFBSSxDQUFDZ0QsRUFBRSxDQUFDc0IsZUFBZSxFQUFFLFNBQVMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDckUsRUFBRSxDQUFDQyxDQUFDLElBQzdEQyxjQUFNLENBQUNDLGVBQWUsQ0FDbEIsSUFBQVUsdUJBQVMsRUFBQyxDQUFDLENBQUNSLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFDakNKLENBQUMsRUFDREgsYUFBSSxDQUFDQyxJQUFJLENBQUNULGtCQUFrQixFQUFFLFNBQVMsQ0FDM0MsQ0FDSixDQUNKLENBQUMsQ0FDQW1FLE1BQU0sQ0FBQyxNQUFNVixFQUFFLElBQUk7TUFDaEIsTUFBTStDLFFBQVEsR0FBSUMsT0FBZSxJQUM3QkEsT0FBTyxDQUFDQyxPQUFPLENBQUMseUJBQXlCLEVBQUUsbUJBQW1CLENBQUM7TUFDbkUsT0FBT3BHLGdCQUFPLENBQUNDLEtBQUssQ0FBQ0MsYUFBSSxDQUFDQyxJQUFJLENBQUNnRCxFQUFFLENBQUNzQixlQUFlLEVBQUUsWUFBWSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUNyRSxFQUFFLENBQUNDLENBQUMsSUFDdkVDLGNBQU0sQ0FBQytGLGtCQUFrQixDQUNyQixJQUFBcEYsdUJBQVMsRUFBQyxDQUFDLENBQUNSLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUMxQ0osQ0FBQyxFQUNESCxhQUFJLENBQUNDLElBQUksQ0FBQ1Qsa0JBQWtCLEVBQUUsWUFBWSxDQUFDLEVBQzNDLFdBQVcsRUFDWHdHLFFBQ0osQ0FDSixDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQ0RyQyxNQUFNLENBQUMsTUFBTVYsRUFBRSxJQUNabkQsZ0JBQU8sQ0FBQ0MsS0FBSyxDQUFDQyxhQUFJLENBQUNDLElBQUksQ0FBQ2dELEVBQUUsQ0FBQ3NCLGVBQWUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGVBQWUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDckUsRUFBRSxDQUFDQyxDQUFDLElBQy9FQyxjQUFNLENBQUNDLGVBQWUsQ0FDbEIsSUFBQVUsdUJBQVMsRUFBQyxDQUFDLENBQUNSLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUN4Q0osQ0FBQyxFQUNESCxhQUFJLENBQUNDLElBQUksQ0FBQ1Qsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLGVBQWUsQ0FDL0QsQ0FDSixDQUNKLENBQUMsQ0FDQW1FLE1BQU0sQ0FBQyxNQUFNVixFQUFFLElBQ1puRCxnQkFBTyxDQUFDQyxLQUFLLENBQUNDLGFBQUksQ0FBQ0MsSUFBSSxDQUFDZ0QsRUFBRSxDQUFDc0IsZUFBZSxFQUFFLFdBQVcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDckUsRUFBRSxDQUFDQyxDQUFDLElBQ25FQyxjQUFNLENBQUNDLGVBQWUsQ0FDbEIsSUFBQVUsdUJBQVMsRUFBQyxDQUFDLENBQUNSLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFDbkNKLENBQUMsRUFDREgsYUFBSSxDQUFDQyxJQUFJLENBQUNULGtCQUFrQixFQUFFLFdBQVcsQ0FDN0MsQ0FDSixDQUNKLENBQUMsQ0FDQW1FLE1BQU0sQ0FBQyxNQUFNVixFQUFFLElBQ1puRCxnQkFBTyxDQUFDQyxLQUFLLENBQUNDLGFBQUksQ0FBQ0MsSUFBSSxDQUFDZ0QsRUFBRSxDQUFDc0IsZUFBZSxFQUFFLE9BQU8sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDckUsRUFBRSxDQUFDQyxDQUFDLElBQ2hFQyxjQUFNLENBQUNDLGVBQWUsQ0FDbEIsSUFBQVUsdUJBQVMsRUFBQyxDQUFDLENBQUNSLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFDL0JKLENBQUMsRUFDREgsYUFBSSxDQUFDQyxJQUFJLENBQUNULGtCQUFrQixFQUFFLE9BQU8sQ0FDekMsQ0FDSixDQUNKLENBQUMsQ0FDQW1FLE1BQU0sQ0FBQyxNQUFNVixFQUFFLElBQ1puRCxnQkFBTyxDQUFDQyxLQUFLLENBQUNDLGFBQUksQ0FBQ0MsSUFBSSxDQUFDZ0QsRUFBRSxDQUFDc0IsZUFBZSxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDckUsRUFBRSxDQUFDQyxDQUFDLElBQzdEQyxjQUFNLENBQUNDLGVBQWUsQ0FBQyxJQUFBVSx1QkFBUyxFQUFDLENBQUMsQ0FBQ1IsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFSixDQUFDLEVBQUVILGFBQUksQ0FBQ0MsSUFBSSxDQUFDVCxrQkFBa0IsRUFBRSxLQUFLLENBQUMsQ0FDakcsQ0FDSixDQUFDLENBQ0FtRSxNQUFNLENBQUMsTUFBTVYsRUFBRSxJQUNabkQsZ0JBQU8sQ0FBQ0MsS0FBSyxDQUFDQyxhQUFJLENBQUNDLElBQUksQ0FBQ2dELEVBQUUsQ0FBQ3NCLGVBQWUsRUFBRSxPQUFPLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQ3JFLEVBQUUsQ0FBQ0MsQ0FBQyxJQUMvREMsY0FBTSxDQUFDQyxlQUFlLENBQ2xCLElBQUFVLHVCQUFTLEVBQUMsQ0FBQyxDQUFDUixVQUFVLENBQUMsT0FBTyxDQUFDLEVBQy9CSixDQUFDLEVBQ0RILGFBQUksQ0FBQ0MsSUFBSSxDQUFDVCxrQkFBa0IsRUFBRSxPQUFPLENBQ3pDLENBQ0osQ0FDSixDQUFDLENBQ0FVLEVBQUUsQ0FBQyxNQUFNK0MsRUFBRSxJQUFJO01BQ1osSUFBSXJELFlBQVksQ0FBQ3dHLEtBQUssRUFBRTtRQUNwQkMscUJBQVEsQ0FBQ0MsTUFBTSxDQUFDO1VBQ1pDLEtBQUssRUFBRSxHQUFHdEQsRUFBRSxDQUFDd0MsUUFBUSxvQkFBb0I7VUFDekNlLE9BQU8sRUFBRSxXQUNMdkQsRUFBRSxDQUFDUSxZQUFZLElBQUlILFNBQVMsR0FDdEIsWUFBWSxHQUNaTCxFQUFFLENBQUNRLFlBQVksQ0FBQ3hFLElBQUksS0FBSyxvQkFBb0IsR0FDN0MsT0FBTyxHQUNQZ0UsRUFBRSxDQUFDUSxZQUFZLENBQUN2RSxPQUFPO1FBRXJDLENBQUMsQ0FBQztNQUNOO0lBQ0osQ0FBQyxDQUFDO0VBQ1YsQ0FDSixDQUFDO0VBRUQsSUFBSVUsWUFBWSxDQUFDd0csS0FBSyxFQUFFO0lBQ3BCLElBQUk5RyxPQUFPLENBQUNtSCxLQUFLLEVBQUU7TUFDZixNQUFNQyxvQkFBb0IsQ0FBQ2xILGtCQUFrQixFQUFFSCxPQUFPLENBQUNpQixNQUFNLENBQUM7SUFDbEU7SUFDQSxNQUFNcUcsWUFBWSxHQUFHLE1BQU05RyxjQUFjLENBQUMrRyxPQUFPLENBQUMsQ0FBQztJQUNuRCxNQUFNQyxZQUFZLEdBQUcsTUFBTXJGLGVBQWUsQ0FBQ29GLE9BQU8sQ0FBQyxDQUFDO0lBQ3BELE1BQU1FLFlBQVksR0FBRyxNQUFNakcsaUNBQWlDLENBQUMrRixPQUFPLENBQUMsQ0FBQztJQUN0RSxNQUFNRyxZQUFZLEdBQUcsTUFBTS9GLGdDQUFnQyxDQUFDNEYsT0FBTyxDQUFDLENBQUM7SUFDckUsTUFBTXZILE9BQU8sQ0FBQzJILFdBQVcsQ0FBQyxDQUFDO0lBQzNCLElBQUlGLFlBQVksSUFBSXhELFNBQVMsRUFBRTtNQUMzQixNQUFNd0QsWUFBWSxDQUFDLENBQUM7SUFDeEI7SUFDQSxJQUFJQyxZQUFZLElBQUl6RCxTQUFTLEVBQUU7TUFDM0IsTUFBTXlELFlBQVksQ0FBQyxDQUFDO0lBQ3hCO0lBQ0EsTUFBTUYsWUFBWSxDQUFDLENBQUM7SUFDcEIsTUFBTUYsWUFBWSxDQUFDLENBQUM7RUFDeEIsQ0FBQyxNQUFNO0lBQ0gsTUFBTU0sU0FBUyxHQUFHQyxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLElBQUk7TUFDQSxJQUFJN0gsT0FBTyxDQUFDbUgsS0FBSyxFQUFFO1FBQ2YsTUFBTUMsb0JBQW9CLENBQUNsSCxrQkFBa0IsRUFBRUgsT0FBTyxDQUFDaUIsTUFBTSxDQUFDO01BQ2xFO01BQ0EsTUFBTVQsY0FBYyxDQUFDdUgsWUFBWTtNQUNqQyxNQUFNdkcsaUNBQWlDLENBQUN1RyxZQUFZO01BQ3BELE1BQU1wRyxnQ0FBZ0MsQ0FBQ29HLFlBQVk7TUFDbkQsTUFBTTVGLGVBQWUsQ0FBQzRGLFlBQVk7TUFDbEM7TUFDQUMsT0FBTyxDQUFDdkMsR0FBRyxDQUFDd0MsY0FBSyxDQUFDQyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDbkQsQ0FBQyxTQUFTO01BQ04sTUFBTUMsU0FBUyxHQUFHTixJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDLEdBQUdGLFNBQVM7TUFDeEM7TUFDQUksT0FBTyxDQUFDdkMsR0FBRyxDQUFDLGVBQWUsSUFBQTJDLHNCQUFTLEVBQUNELFNBQVMsQ0FBQyxFQUFFLENBQUM7SUFDdEQ7RUFDSjtBQUNKO0FBRUEsZUFBZWQsb0JBQW9CQSxDQUFDbEgsa0JBQTBCLEVBQUVjLE1BQWUsRUFBaUI7RUFDNUZBLE1BQU0sQ0FBQ3dFLEdBQUcsQ0FBQywrQkFBK0IsR0FBR3RGLGtCQUFrQixDQUFDO0VBQ2hFLE1BQU0sSUFBQWtJLGlCQUFRLEVBQUNsSSxrQkFBa0IsQ0FBQztFQUNsQ2MsTUFBTSxDQUFDd0UsR0FBRyxDQUFDLDBCQUEwQixDQUFDO0FBQzFDIiwiaWdub3JlTGlzdCI6W119
|