@kontur.candy/tools 2.144.0 → 2.145.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/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
<a name="2.145.0"></a>
|
|
2
|
+
# [2.145.0](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.144.0...release/tools/v2.145.0) (2023-01-27)
|
|
3
|
+
|
|
1
4
|
<a name="2.144.0"></a>
|
|
2
5
|
# [2.144.0](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.143.0...release/tools/v2.144.0) (2023-01-27)
|
|
3
6
|
|
|
@@ -37,13 +37,13 @@ var _PathPattern = require("../../../Commons/PathPattern");
|
|
|
37
37
|
|
|
38
38
|
var _TypingUtils = require("../../../../../Common/TypingUtils");
|
|
39
39
|
|
|
40
|
-
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _dec20, _class;
|
|
40
|
+
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _dec20, _dec21, _dec22, _class;
|
|
41
41
|
|
|
42
42
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
43
43
|
|
|
44
44
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
45
45
|
|
|
46
|
-
let BuildServerBackendResourcesController = (_dec = (0, _Methods.httpGet)("/gfvs", _Results.httpReturn.Json), _dec2 = (0, _Methods.httpGet)("/picklists", _Results.httpReturn.PlainText), _dec3 = (0, _Methods.httpGet)("/picklists/:picklistFilename", _Results.httpReturn.StreamWithMime("application/json"), (0, _Params.httpUrlParam)("picklistFilename", _Params.httpType.String)), _dec4 = (0, _Methods.httpGet)("/converters", _Results.httpReturn.PlainText), _dec5 = (0, _Methods.httpGet)("/converters/:filename", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("filename", _Params.httpType.String)), _dec6 = (0, _Methods.httpGet)("/
|
|
46
|
+
let BuildServerBackendResourcesController = (_dec = (0, _Methods.httpGet)("/gfvs", _Results.httpReturn.Json), _dec2 = (0, _Methods.httpGet)("/picklists", _Results.httpReturn.PlainText), _dec3 = (0, _Methods.httpGet)("/picklists/:picklistFilename", _Results.httpReturn.StreamWithMime("application/json"), (0, _Params.httpUrlParam)("picklistFilename", _Params.httpType.String)), _dec4 = (0, _Methods.httpGet)("/converters", _Results.httpReturn.PlainText), _dec5 = (0, _Methods.httpGet)("/converters/:filename", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("filename", _Params.httpType.String)), _dec6 = (0, _Methods.httpGet)("/mergers", _Results.httpReturn.PlainText), _dec7 = (0, _Methods.httpGet)("/mergers/:filename", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("filename", _Params.httpType.String)), _dec8 = (0, _Methods.httpGet)("/schemas", _Results.httpReturn.PlainText), _dec9 = (0, _Methods.httpGet)("/schemas/:filename", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("filename", _Params.httpType.String)), _dec10 = (0, _Methods.httpGet)("/presentations", _Results.httpReturn.PlainText), _dec11 = (0, _Methods.httpGet)("/presentations/:gfv.presentations.json", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), _dec12 = (0, _Methods.httpGet)("/normalize", _Results.httpReturn.PlainText), _dec13 = (0, _Methods.httpGet)("/normalize/:gfv.xml", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), _dec14 = (0, _Methods.httpGet)("/normalize/:gfv.normalize", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), _dec15 = (0, _Methods.httpGet)("/attachmentpaths", _Results.httpReturn.PlainText), _dec16 = (0, _Methods.httpGet)("/attachmentpaths/:gfv.json", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), _dec17 = (0, _Methods.httpGet)("/unmap", _Results.httpReturn.PlainText), _dec18 = (0, _Methods.httpGet)("/unmap/:gfv.xml", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), _dec19 = (0, _Methods.httpGet)("/map", _Results.httpReturn.PlainText), _dec20 = (0, _Methods.httpGet)("/map/:gfv.xml", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), _dec21 = (0, _Methods.httpGet)("/patch", _Results.httpReturn.PlainText), _dec22 = (0, _Methods.httpGet)("/patch/:gfv.xslt", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), (_class = class BuildServerBackendResourcesController extends _SingletonController.SingletonController {
|
|
47
47
|
constructor(allFarmConfig, flangNormalizationSourcesProvider) {
|
|
48
48
|
super();
|
|
49
49
|
this.allFarmConfig = void 0;
|
|
@@ -107,6 +107,28 @@ let BuildServerBackendResourcesController = (_dec = (0, _Methods.httpGet)("/gfvs
|
|
|
107
107
|
throw new _NotFoundWebError.NotFoundWebError("File not found", false);
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
+
async getAllMergersFiles() {
|
|
111
|
+
const promises = this.allFarmConfig.map(i => (0, _FsUtils.globAsync)("forms/*/mergers/*", {
|
|
112
|
+
cwd: path.join(i.farmDirectory)
|
|
113
|
+
}));
|
|
114
|
+
const files = (await Promise.all(promises)).flat();
|
|
115
|
+
return files.map(x => path.basename(x)).join("\n");
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
async getMergerFile(filename) {
|
|
119
|
+
const allFarmDirectories = this.allFarmConfig.map(i => i.farmDirectory).flat();
|
|
120
|
+
const formDirPath = allFarmDirectories.map(pth => path.join(pth));
|
|
121
|
+
const possibleFilePaths = formDirPath.map(i => (0, _ExtractGfvsFromFileName.extractGfvsFromFileName)(filename).map(gfv => path.join(i, `forms/${gfv}/mergers/${filename}`))).flat();
|
|
122
|
+
|
|
123
|
+
for (const filePath of possibleFilePaths) {
|
|
124
|
+
if (await (0, _fsExtra.pathExists)(filePath)) {
|
|
125
|
+
return new _StreamResultHandler.FileStreamResult(filePath);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
throw new _NotFoundWebError.NotFoundWebError("File not found", false);
|
|
130
|
+
}
|
|
131
|
+
|
|
110
132
|
async getAllSchemasFiles() {
|
|
111
133
|
if (this.allSchemasFiles === undefined) {
|
|
112
134
|
const promises = this.allFarmConfig.map(i => (0, _FsUtils.globAsync)("forms/*/schemas/*", {
|
|
@@ -250,6 +272,6 @@ let BuildServerBackendResourcesController = (_dec = (0, _Methods.httpGet)("/gfvs
|
|
|
250
272
|
throw Error(`not found unmap ${gfv}.xml`);
|
|
251
273
|
}
|
|
252
274
|
|
|
253
|
-
}, ((0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllGfvs", [_dec], Object.getOwnPropertyDescriptor(_class.prototype, "getAllGfvs"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllPicklists", [_dec2], Object.getOwnPropertyDescriptor(_class.prototype, "getAllPicklists"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getPicklists", [_dec3], Object.getOwnPropertyDescriptor(_class.prototype, "getPicklists"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllConvertersFiles", [_dec4], Object.getOwnPropertyDescriptor(_class.prototype, "getAllConvertersFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getConverterFile", [_dec5], Object.getOwnPropertyDescriptor(_class.prototype, "getConverterFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "
|
|
275
|
+
}, ((0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllGfvs", [_dec], Object.getOwnPropertyDescriptor(_class.prototype, "getAllGfvs"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllPicklists", [_dec2], Object.getOwnPropertyDescriptor(_class.prototype, "getAllPicklists"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getPicklists", [_dec3], Object.getOwnPropertyDescriptor(_class.prototype, "getPicklists"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllConvertersFiles", [_dec4], Object.getOwnPropertyDescriptor(_class.prototype, "getAllConvertersFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getConverterFile", [_dec5], Object.getOwnPropertyDescriptor(_class.prototype, "getConverterFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllMergersFiles", [_dec6], Object.getOwnPropertyDescriptor(_class.prototype, "getAllMergersFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getMergerFile", [_dec7], Object.getOwnPropertyDescriptor(_class.prototype, "getMergerFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllSchemasFiles", [_dec8], Object.getOwnPropertyDescriptor(_class.prototype, "getAllSchemasFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getFormSchemas", [_dec9], Object.getOwnPropertyDescriptor(_class.prototype, "getFormSchemas"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllFormPresentations", [_dec10], Object.getOwnPropertyDescriptor(_class.prototype, "getAllFormPresentations"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getFormPresentations", [_dec11], Object.getOwnPropertyDescriptor(_class.prototype, "getFormPresentations"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllNormalizeFiles", [_dec12], Object.getOwnPropertyDescriptor(_class.prototype, "getAllNormalizeFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getNormalizeFile", [_dec13], Object.getOwnPropertyDescriptor(_class.prototype, "getNormalizeFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getFLangNormalizeFile", [_dec14], Object.getOwnPropertyDescriptor(_class.prototype, "getFLangNormalizeFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllAttachmentPathsFileNames", [_dec15], Object.getOwnPropertyDescriptor(_class.prototype, "getAllAttachmentPathsFileNames"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAttachmentPathFile", [_dec16], Object.getOwnPropertyDescriptor(_class.prototype, "getAttachmentPathFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllUnmapFiles", [_dec17], Object.getOwnPropertyDescriptor(_class.prototype, "getAllUnmapFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getUnmapFile", [_dec18], Object.getOwnPropertyDescriptor(_class.prototype, "getUnmapFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllMapFiles", [_dec19], Object.getOwnPropertyDescriptor(_class.prototype, "getAllMapFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getMapFile", [_dec20], Object.getOwnPropertyDescriptor(_class.prototype, "getMapFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllPatchFiles", [_dec21], Object.getOwnPropertyDescriptor(_class.prototype, "getAllPatchFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getPatchFile", [_dec22], Object.getOwnPropertyDescriptor(_class.prototype, "getPatchFile"), _class.prototype)), _class));
|
|
254
276
|
exports.BuildServerBackendResourcesController = BuildServerBackendResourcesController;
|
|
255
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZFNlcnZlci9SZXNvdXJjZXNDb250cm9sbGVycy9CdWlsZFNlcnZlckJhY2tlbmRSZXNvdXJjZXNDb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbIkJ1aWxkU2VydmVyQmFja2VuZFJlc291cmNlc0NvbnRyb2xsZXIiLCJodHRwUmV0dXJuIiwiSnNvbiIsIlBsYWluVGV4dCIsIlN0cmVhbVdpdGhNaW1lIiwiaHR0cFR5cGUiLCJTdHJpbmciLCJTdHJlYW0iLCJTaW5nbGV0b25Db250cm9sbGVyIiwiY29uc3RydWN0b3IiLCJhbGxGYXJtQ29uZmlnIiwiZmxhbmdOb3JtYWxpemF0aW9uU291cmNlc1Byb3ZpZGVyIiwiZ2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlciIsImFsbFNjaGVtYXNGaWxlcyIsInJlc2V0QWxsU2NoZW1hRmlsZXNEZWJvdW5jZWQiLCJ1bmRlZmluZWQiLCJnZXRBbGxHZnZzIiwicHJvbWlzZXMiLCJtYXAiLCJpIiwiY3dkIiwicGF0aCIsImpvaW4iLCJmYXJtRGlyZWN0b3J5IiwiZ2Z2cyIsIlByb21pc2UiLCJhbGwiLCJmbGF0IiwieCIsInJlcGxhY2UiLCJnZXRBbGxQaWNrbGlzdHMiLCJmaWxlcyIsImdldFBpY2tsaXN0cyIsInBpY2tsaXN0RmlsZW5hbWUiLCJhbGxGaWxlUGF0aCIsInBhdGhGaWxlIiwiRXJyb3IiLCJnZXRBbGxDb252ZXJ0ZXJzRmlsZXMiLCJiYXNlbmFtZSIsImdldENvbnZlcnRlckZpbGUiLCJmaWxlbmFtZSIsImFsbEZhcm1EaXJlY3RvcmllcyIsImZvcm1EaXJQYXRoIiwicHRoIiwicG9zc2libGVGaWxlUGF0aHMiLCJnZnYiLCJmaWxlUGF0aCIsIkZpbGVTdHJlYW1SZXN1bHQiLCJOb3RGb3VuZFdlYkVycm9yIiwiZ2V0QWxsU2NoZW1hc0ZpbGVzIiwiZ2V0Rm9ybVNjaGVtYXMiLCJmaWxlUGF0dGVybiIsIlBhdGhQYXR0ZXJuIiwiZXhlY1N0cmljdCIsImZpbGUiLCJnZXRBbGxGb3JtUHJlc2VudGF0aW9ucyIsImdldEZvcm1QcmVzZW50YXRpb25zIiwiZ2V0QWxsTm9ybWFsaXplRmlsZXMiLCJmbGFuZ0ZpbGVzIiwiZ2V0QWxsTm9ybWFsaXphdGlvbkZpbGVOYW1lcyIsImdldE5vcm1hbGl6ZUZpbGUiLCJnZXRGTGFuZ05vcm1hbGl6ZUZpbGUiLCJTdHJlYW1SZXN1bHQiLCJnZXROb3JtYWxpemF0aW9uRmlsZUNvbnRlbnQiLCJnZXRBbGxBdHRhY2htZW50UGF0aHNGaWxlTmFtZXMiLCJnZXRBbGxBdHRhY2htZW50UGF0aEZpbGVOYW1lcyIsImdldEF0dGFjaG1lbnRQYXRoRmlsZSIsImdldEF0dGFjaG1lbnRQYXRoc0ZpbGVDb250ZW50IiwiZ2V0QWxsVW5tYXBGaWxlcyIsImdldFVubWFwRmlsZSIsImdldEFsbE1hcEZpbGVzIiwiZ2V0TWFwRmlsZSIsImdldEFsbFBhdGNoRmlsZXMiLCJnZXRQYXRjaEZpbGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBSUE7O0FBQ0E7O0FBQ0E7Ozs7Ozs7O0lBSWFBLHFDLFdBbUJSLHNCQUFRLE9BQVIsRUFBaUJDLG9CQUFXQyxJQUE1QixDLFVBT0Esc0JBQVEsWUFBUixFQUFzQkQsb0JBQVdFLFNBQWpDLEMsVUFPQSxzQkFDRyw4QkFESCxFQUVHRixvQkFBV0csY0FBWCxDQUEwQixrQkFBMUIsQ0FGSCxFQUdHLDBCQUFhLGtCQUFiLEVBQWlDQyxpQkFBU0MsTUFBMUMsQ0FISCxDLFVBZUEsc0JBQVEsYUFBUixFQUF1Qkwsb0JBQVdFLFNBQWxDLEMsVUFTQSxzQkFBUSx1QkFBUixFQUFpQ0Ysb0JBQVdNLE1BQTVDLEVBQW9ELDBCQUFhLFVBQWIsRUFBeUJGLGlCQUFTQyxNQUFsQyxDQUFwRCxDLFVBZ0JBLHNCQUFRLFVBQVIsRUFBb0JMLG9CQUFXRSxTQUEvQixD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QUNyQyx3QkFBVSxzQkFBVixFQUFrQztBQUFFQyxNQUFBQSxHQUFHLEVBQUVDLElBQUksQ0FBQ0MsSUFBTCxDQUFVSCxDQUFDLENBQUNJLGFBQVo7QUFBUCxLQUFsQyxDQURhLENBQWpCO0FBR0EsVUFBTVEsS0FBSyxHQUFHLENBQUMsTUFBTU4sT0FBTyxDQUFDQyxHQUFSLENBQVlULFFBQVosQ0FBUCxFQUE4QlUsSUFBOUIsRUFBZDtBQUNBLFdBQU9JLEtBQUssQ0FBQ2IsR0FBTixDQUFVVSxDQUFDLElBQUlQLElBQUksQ0FBQ2lCLFFBQUwsQ0FBY1YsQ0FBZCxDQUFmLEVBQWlDTixJQUFqQyxDQUFzQyxJQUF0QyxDQUFQO0FBQ0g7O0FBR3dCLFFBQVptRCxZQUFZLENBQUM1QixHQUFELEVBQXlDO0FBQzlELFVBQU1YLFdBQVcsR0FBRyxLQUFLeEIsYUFBTCxDQUFtQlEsR0FBbkIsQ0FBdUJDLENBQUMsSUFDeENFLElBQUksQ0FBQ0MsSUFBTCxDQUFVSCxDQUFDLENBQUNJLGFBQVosRUFBMkIsT0FBM0IsRUFBb0NzQixHQUFwQyxFQUF5QyxPQUF6QyxFQUFtRCxHQUFFQSxHQUFJLE9BQXpELENBRGdCLENBQXBCOztBQUdBLFNBQUssTUFBTVYsUUFBWCxJQUF1QkQsV0FBdkIsRUFBb0M7QUFDaEMsVUFBSSxNQUFNLHlCQUFXQyxRQUFYLENBQVYsRUFBZ0M7QUFDNUIsZUFBTyxJQUFJWSxxQ0FBSixDQUFxQlosUUFBckIsQ0FBUDtBQUNIO0FBQ0o7O0FBQ0QsVUFBTUMsS0FBSyxDQUFFLG1CQUFrQlMsR0FBSSxNQUF4QixDQUFYO0FBQ0g7O0FBOU4wRSxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlUmVhZFN0cmVhbSwgUmVhZFN0cmVhbSB9IGZyb20gXCJmc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgeyBwYXRoRXhpc3RzIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgXywgeyBkZWJvdW5jZSB9IGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCB7IEZhcm1Db25maWcgfSBmcm9tIFwiVG9vbHMvc3JjL0NhbmR5Q0xJXCI7XG5cbmltcG9ydCB7IGV4dHJhY3RHZnZzRnJvbUZpbGVOYW1lIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvRXh0cmFjdEdmdnNGcm9tRmlsZU5hbWVcIjtcbmltcG9ydCB7IGdsb2JBc3luYyB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0ZzVXRpbHNcIjtcbmltcG9ydCB7IGh0dHBHZXQgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvTWV0aG9kc1wiO1xuaW1wb3J0IHsgTm90Rm91bmRXZWJFcnJvciB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9Ob3RGb3VuZFdlYkVycm9yXCI7XG5pbXBvcnQgeyBodHRwVHlwZSwgaHR0cFVybFBhcmFtIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL1BhcmFtc1wiO1xuaW1wb3J0IHsgaHR0cFJldHVybiB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9SZXN1bHRzXCI7XG5pbXBvcnQge1xuICAgIEZpbGVTdHJlYW1SZXN1bHQsXG4gICAgU3RyZWFtUmVzdWx0LFxufSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvUmVzdWx0cy9TdHJlYW1SZXN1bHRIYW5kbGVyXCI7XG5pbXBvcnQgeyBTaW5nbGV0b25Db250cm9sbGVyIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9FeHByZXNzV3JhcHBlci9TaW5nbGV0b25Db250cm9sbGVyXCI7XG5pbXBvcnQgeyBQYXRoUGF0dGVybiB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL1BhdGhQYXR0ZXJuXCI7XG5pbXBvcnQgeyByZWplY3QgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL1R5cGluZ1V0aWxzXCI7XG5cbmltcG9ydCB7IElHZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyIH0gZnJvbSBcIi4vSUdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXJcIjtcblxuZXhwb3J0IGNsYXNzIEJ1aWxkU2VydmVyQmFja2VuZFJlc291cmNlc0NvbnRyb2xsZXIgZXh0ZW5kcyBTaW5nbGV0b25Db250cm9sbGVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFsbEZhcm1Db25maWc6IEZhcm1Db25maWdbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXI6IElHZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyO1xuXG4gICAgcHJpdmF0ZSBhbGxTY2hlbWFzRmlsZXM6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlc2V0QWxsU2NoZW1hRmlsZXNEZWJvdW5jZWQ6ICgpID0+IHZvaWQ7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIGFsbEZhcm1Db25maWc6IEZhcm1Db25maWdbXSxcbiAgICAgICAgZmxhbmdOb3JtYWxpemF0aW9uU291cmNlc1Byb3ZpZGVyOiBJR2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlclxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIgPSBmbGFuZ05vcm1hbGl6YXRpb25Tb3VyY2VzUHJvdmlkZXI7XG4gICAgICAgIHRoaXMuYWxsRmFybUNvbmZpZyA9IGFsbEZhcm1Db25maWc7XG4gICAgICAgIHRoaXMucmVzZXRBbGxTY2hlbWFGaWxlc0RlYm91bmNlZCA9IGRlYm91bmNlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWxsU2NoZW1hc0ZpbGVzID0gdW5kZWZpbmVkO1xuICAgICAgICB9LCA1MDAwKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9nZnZzXCIsIGh0dHBSZXR1cm4uSnNvbilcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsR2Z2cygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+IGdsb2JBc3luYyhcImZvcm1zLypcIiwgeyBjd2Q6IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnkpIH0pKTtcbiAgICAgICAgY29uc3QgZ2Z2cyA9IChhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcykpLmZsYXQoKTtcbiAgICAgICAgcmV0dXJuIGdmdnMubWFwKHggPT4geC5yZXBsYWNlKFwiZm9ybXMvXCIsIFwiXCIpKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9waWNrbGlzdHNcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbFBpY2tsaXN0cygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PiBnbG9iQXN5bmMoXCJwaWNrbGlzdHMvKlwiLCB7IGN3ZDogcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSkgfSkpO1xuICAgICAgICBjb25zdCBmaWxlcyA9IChhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcykpLmZsYXQoKTtcbiAgICAgICAgcmV0dXJuIGZpbGVzLm1hcCh4ID0+IHgucmVwbGFjZShcInBpY2tsaXN0cy9cIiwgXCJcIikpLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXG4gICAgICAgIFwiL3BpY2tsaXN0cy86cGlja2xpc3RGaWxlbmFtZVwiLFxuICAgICAgICBodHRwUmV0dXJuLlN0cmVhbVdpdGhNaW1lKFwiYXBwbGljYXRpb24vanNvblwiKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwicGlja2xpc3RGaWxlbmFtZVwiLCBodHRwVHlwZS5TdHJpbmcpXG4gICAgKVxuICAgIHB1YmxpYyBhc3luYyBnZXRQaWNrbGlzdHMocGlja2xpc3RGaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxSZWFkU3RyZWFtPiB7XG4gICAgICAgIGNvbnN0IGFsbEZpbGVQYXRoID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnksIFwicGlja2xpc3RzXCIsIHBpY2tsaXN0RmlsZW5hbWUpKTtcbiAgICAgICAgZm9yIChjb25zdCBwYXRoRmlsZSBvZiBhbGxGaWxlUGF0aCkge1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMocGF0aEZpbGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlYWRTdHJlYW0ocGF0aEZpbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IEVycm9yKGBub3QgZm91bmQgcGlja2xpc3RGaWxlbmFtZSAke3BpY2tsaXN0RmlsZW5hbWV9YCk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvY29udmVydGVyc1wiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsQ29udmVydGVyc0ZpbGVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+XG4gICAgICAgICAgICBnbG9iQXN5bmMoXCJmb3Jtcy8qL2NvbnZlcnRlcnMvKlwiLCB7IGN3ZDogcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSkgfSlcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSAoYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpKS5mbGF0KCk7XG4gICAgICAgIHJldHVybiBmaWxlcy5tYXAoeCA9PiBwYXRoLmJhc2VuYW1lKHgpKS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL2NvbnZlcnRlcnMvOmZpbGVuYW1lXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJmaWxlbmFtZVwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRDb252ZXJ0ZXJGaWxlKGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgYWxsRmFybURpcmVjdG9yaWVzID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+IGkuZmFybURpcmVjdG9yeSkuZmxhdCgpO1xuICAgICAgICBjb25zdCBmb3JtRGlyUGF0aCA9IGFsbEZhcm1EaXJlY3Rvcmllcy5tYXAocHRoID0+IHBhdGguam9pbihwdGgpKTtcblxuICAgICAgICBjb25zdCBwb3NzaWJsZUZpbGVQYXRocyA9IGZvcm1EaXJQYXRoXG4gICAgICAgICAgICAubWFwKGkgPT4gZXh0cmFjdEdmdnNGcm9tRmlsZU5hbWUoZmlsZW5hbWUpLm1hcChnZnYgPT4gcGF0aC5qb2luKGksIGBmb3Jtcy8ke2dmdn0vY29udmVydGVycy8ke2ZpbGVuYW1lfWApKSlcbiAgICAgICAgICAgIC5mbGF0KCk7XG4gICAgICAgIGZvciAoY29uc3QgZmlsZVBhdGggb2YgcG9zc2libGVGaWxlUGF0aHMpIHtcbiAgICAgICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKGZpbGVQYXRoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZVN0cmVhbVJlc3VsdChmaWxlUGF0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kV2ViRXJyb3IoXCJGaWxlIG5vdCBmb3VuZFwiLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvc2NoZW1hc1wiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsU2NoZW1hc0ZpbGVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGlmICh0aGlzLmFsbFNjaGVtYXNGaWxlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBwcm9taXNlcyA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PlxuICAgICAgICAgICAgICAgIGdsb2JBc3luYyhcImZvcm1zLyovc2NoZW1hcy8qXCIsIHsgY3dkOiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5KSB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVzID0gKGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKSkuZmxhdCgpO1xuICAgICAgICAgICAgdGhpcy5hbGxTY2hlbWFzRmlsZXMgPSBmaWxlcy5tYXAoeCA9PiBwYXRoLmJhc2VuYW1lKHgpKS5qb2luKFwiXFxuXCIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVzZXRBbGxTY2hlbWFGaWxlc0RlYm91bmNlZCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5hbGxTY2hlbWFzRmlsZXM7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvc2NoZW1hcy86ZmlsZW5hbWVcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImZpbGVuYW1lXCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldEZvcm1TY2hlbWFzKGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgZmlsZVBhdHRlcm4gPSBuZXcgUGF0aFBhdHRlcm4oXCJ7Z2Z2fS4qLnhtbFwiKTtcbiAgICAgICAgY29uc3QgZ2Z2OiBzdHJpbmcgPSBmaWxlUGF0dGVybi5leGVjU3RyaWN0KGZpbGVuYW1lKS5nZnYgPz8gcmVqZWN0KCk7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5hbGxGYXJtQ29uZmlnXG4gICAgICAgICAgICAubWFwKGkgPT4gcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYsIFwic2NoZW1hc1wiLCBmaWxlbmFtZSkpXG4gICAgICAgICAgICAuZmxhdCgpO1xuICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZVBhdGgpIHtcbiAgICAgICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKGZpbGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KGZpbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZFdlYkVycm9yKFwiRmlsZSBub3QgZm91bmRcIiwgZmFsc2UpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3ByZXNlbnRhdGlvbnNcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbEZvcm1QcmVzZW50YXRpb25zKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+XG4gICAgICAgICAgICBnbG9iQXN5bmMoXCJmb3Jtcy8qL3ByZXNlbnRhdGlvbnMuanNvblwiLCB7IGN3ZDogcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSkgfSlcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSAoYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpKS5mbGF0KCk7XG4gICAgICAgIHJldHVybiBmaWxlcy5tYXAoeCA9PiB4LnJlcGxhY2UoXCJmb3Jtcy9cIiwgXCJcIikucmVwbGFjZShcIi9cIiwgXCIuXCIpKS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3ByZXNlbnRhdGlvbnMvOmdmdi5wcmVzZW50YXRpb25zLmpzb25cIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImdmdlwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRGb3JtUHJlc2VudGF0aW9ucyhnZnY6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBhbGxGaWxlUGF0aCA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5LCBcImZvcm1zXCIsIGdmdiwgXCJwcmVzZW50YXRpb25zLmpzb25cIikpO1xuICAgICAgICBmb3IgKGNvbnN0IHBhdGhGaWxlIG9mIGFsbEZpbGVQYXRoKSB7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhwYXRoRmlsZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQocGF0aEZpbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IEVycm9yKGBub3QgZm91bmQgdW5tYXAgJHtnZnZ9LnhtbGApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL25vcm1hbGl6ZVwiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsTm9ybWFsaXplRmlsZXMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT5cbiAgICAgICAgICAgIGdsb2JBc3luYyhcImZvcm1zLyovbm9ybWFsaXplLyoueG1sXCIsIHsgY3dkOiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5KSB9KVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBmaWxlcyA9IChhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcykpLmZsYXQoKTtcbiAgICAgICAgY29uc3QgZmxhbmdGaWxlcyA9IGF3YWl0IHRoaXMuZ2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlci5nZXRBbGxOb3JtYWxpemF0aW9uRmlsZU5hbWVzKCk7XG4gICAgICAgIHJldHVybiBbLi4uZmlsZXMubWFwKHggPT4gcGF0aC5iYXNlbmFtZSh4KSksIC4uLmZsYW5nRmlsZXNdLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvbm9ybWFsaXplLzpnZnYueG1sXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJnZnZcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0Tm9ybWFsaXplRmlsZShnZnY6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBhbGxGaWxlUGF0aCA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PlxuICAgICAgICAgICAgcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYsIFwibm9ybWFsaXplXCIsIGAke2dmdn0ueG1sYClcbiAgICAgICAgKTtcbiAgICAgICAgZm9yIChjb25zdCBwYXRoRmlsZSBvZiBhbGxGaWxlUGF0aCkge1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMocGF0aEZpbGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KHBhdGhGaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBFcnJvcihgbm90IGZvdW5kIHVubWFwICR7Z2Z2fS54bWxgKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9ub3JtYWxpemUvOmdmdi5ub3JtYWxpemVcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImdmdlwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRGTGFuZ05vcm1hbGl6ZUZpbGUoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPFN0cmVhbVJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gbmV3IFN0cmVhbVJlc3VsdChhd2FpdCB0aGlzLmdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIuZ2V0Tm9ybWFsaXphdGlvbkZpbGVDb250ZW50KGdmdikpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL2F0dGFjaG1lbnRwYXRoc1wiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsQXR0YWNobWVudFBhdGhzRmlsZU5hbWVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IGZsYW5nRmlsZXMgPSBhd2FpdCB0aGlzLmdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIuZ2V0QWxsQXR0YWNobWVudFBhdGhGaWxlTmFtZXMoKTtcbiAgICAgICAgcmV0dXJuIGZsYW5nRmlsZXMuam9pbihcIlxcblwiKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9hdHRhY2htZW50cGF0aHMvOmdmdi5qc29uXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJnZnZcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QXR0YWNobWVudFBhdGhGaWxlKGdmdjogc3RyaW5nKTogUHJvbWlzZTxTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdHJlYW1SZXN1bHQoYXdhaXQgdGhpcy5nZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyLmdldEF0dGFjaG1lbnRQYXRoc0ZpbGVDb250ZW50KGdmdikpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3VubWFwXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxVbm1hcEZpbGVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+XG4gICAgICAgICAgICBnbG9iQXN5bmMoXCJmb3Jtcy8qL3VubWFwLyoueG1sXCIsIHsgY3dkOiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5KSB9KVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBmaWxlcyA9IChhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcykpLmZsYXQoKTtcbiAgICAgICAgcmV0dXJuIGZpbGVzLm1hcCh4ID0+IHBhdGguYmFzZW5hbWUoeCkpLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvdW5tYXAvOmdmdi54bWxcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImdmdlwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRVbm1hcEZpbGUoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgYWxsRmlsZVBhdGggPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT5cbiAgICAgICAgICAgIHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZ2Z2LCBcInVubWFwXCIsIGAke2dmdn0ueG1sYClcbiAgICAgICAgKTtcbiAgICAgICAgZm9yIChjb25zdCBwYXRoRmlsZSBvZiBhbGxGaWxlUGF0aCkge1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMocGF0aEZpbGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KHBhdGhGaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBFcnJvcihgbm90IGZvdW5kIHVubWFwICR7Z2Z2fS54bWxgKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9tYXBcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbE1hcEZpbGVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+XG4gICAgICAgICAgICBnbG9iQXN5bmMoXCJmb3Jtcy8qL21hcC8qLnhtbFwiLCB7IGN3ZDogcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSkgfSlcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSAoYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpKS5mbGF0KCk7XG4gICAgICAgIHJldHVybiBmaWxlcy5tYXAoeCA9PiBwYXRoLmJhc2VuYW1lKHgpKS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL21hcC86Z2Z2LnhtbFwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZ2Z2XCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldE1hcEZpbGUoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgYWxsRmlsZVBhdGggPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT4gcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYsIFwibWFwXCIsIGAke2dmdn0ueG1sYCkpO1xuICAgICAgICBmb3IgKGNvbnN0IHBhdGhGaWxlIG9mIGFsbEZpbGVQYXRoKSB7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhwYXRoRmlsZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQocGF0aEZpbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IEVycm9yKGBub3QgZm91bmQgdW5tYXAgJHtnZnZ9LnhtbGApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3BhdGNoXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxQYXRjaEZpbGVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+XG4gICAgICAgICAgICBnbG9iQXN5bmMoXCJmb3Jtcy8qL3BhdGNoLyoueHNsdFwiLCB7IGN3ZDogcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSkgfSlcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSAoYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpKS5mbGF0KCk7XG4gICAgICAgIHJldHVybiBmaWxlcy5tYXAoeCA9PiBwYXRoLmJhc2VuYW1lKHgpKS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3BhdGNoLzpnZnYueHNsdFwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZ2Z2XCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldFBhdGNoRmlsZShnZnY6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBhbGxGaWxlUGF0aCA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PlxuICAgICAgICAgICAgcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYsIFwicGF0Y2hcIiwgYCR7Z2Z2fS54c2x0YClcbiAgICAgICAgKTtcbiAgICAgICAgZm9yIChjb25zdCBwYXRoRmlsZSBvZiBhbGxGaWxlUGF0aCkge1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMocGF0aEZpbGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KHBhdGhGaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBFcnJvcihgbm90IGZvdW5kIHVubWFwICR7Z2Z2fS54bWxgKTtcbiAgICB9XG59XG4iXX0=
|
|
277
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZFNlcnZlci9SZXNvdXJjZXNDb250cm9sbGVycy9CdWlsZFNlcnZlckJhY2tlbmRSZXNvdXJjZXNDb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbIkJ1aWxkU2VydmVyQmFja2VuZFJlc291cmNlc0NvbnRyb2xsZXIiLCJodHRwUmV0dXJuIiwiSnNvbiIsIlBsYWluVGV4dCIsIlN0cmVhbVdpdGhNaW1lIiwiaHR0cFR5cGUiLCJTdHJpbmciLCJTdHJlYW0iLCJTaW5nbGV0b25Db250cm9sbGVyIiwiY29uc3RydWN0b3IiLCJhbGxGYXJtQ29uZmlnIiwiZmxhbmdOb3JtYWxpemF0aW9uU291cmNlc1Byb3ZpZGVyIiwiZ2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlciIsImFsbFNjaGVtYXNGaWxlcyIsInJlc2V0QWxsU2NoZW1hRmlsZXNEZWJvdW5jZWQiLCJ1bmRlZmluZWQiLCJnZXRBbGxHZnZzIiwicHJvbWlzZXMiLCJtYXAiLCJpIiwiY3dkIiwicGF0aCIsImpvaW4iLCJmYXJtRGlyZWN0b3J5IiwiZ2Z2cyIsIlByb21pc2UiLCJhbGwiLCJmbGF0IiwieCIsInJlcGxhY2UiLCJnZXRBbGxQaWNrbGlzdHMiLCJmaWxlcyIsImdldFBpY2tsaXN0cyIsInBpY2tsaXN0RmlsZW5hbWUiLCJhbGxGaWxlUGF0aCIsInBhdGhGaWxlIiwiRXJyb3IiLCJnZXRBbGxDb252ZXJ0ZXJzRmlsZXMiLCJiYXNlbmFtZSIsImdldENvbnZlcnRlckZpbGUiLCJmaWxlbmFtZSIsImFsbEZhcm1EaXJlY3RvcmllcyIsImZvcm1EaXJQYXRoIiwicHRoIiwicG9zc2libGVGaWxlUGF0aHMiLCJnZnYiLCJmaWxlUGF0aCIsIkZpbGVTdHJlYW1SZXN1bHQiLCJOb3RGb3VuZFdlYkVycm9yIiwiZ2V0QWxsTWVyZ2Vyc0ZpbGVzIiwiZ2V0TWVyZ2VyRmlsZSIsImdldEFsbFNjaGVtYXNGaWxlcyIsImdldEZvcm1TY2hlbWFzIiwiZmlsZVBhdHRlcm4iLCJQYXRoUGF0dGVybiIsImV4ZWNTdHJpY3QiLCJmaWxlIiwiZ2V0QWxsRm9ybVByZXNlbnRhdGlvbnMiLCJnZXRGb3JtUHJlc2VudGF0aW9ucyIsImdldEFsbE5vcm1hbGl6ZUZpbGVzIiwiZmxhbmdGaWxlcyIsImdldEFsbE5vcm1hbGl6YXRpb25GaWxlTmFtZXMiLCJnZXROb3JtYWxpemVGaWxlIiwiZ2V0RkxhbmdOb3JtYWxpemVGaWxlIiwiU3RyZWFtUmVzdWx0IiwiZ2V0Tm9ybWFsaXphdGlvbkZpbGVDb250ZW50IiwiZ2V0QWxsQXR0YWNobWVudFBhdGhzRmlsZU5hbWVzIiwiZ2V0QWxsQXR0YWNobWVudFBhdGhGaWxlTmFtZXMiLCJnZXRBdHRhY2htZW50UGF0aEZpbGUiLCJnZXRBdHRhY2htZW50UGF0aHNGaWxlQ29udGVudCIsImdldEFsbFVubWFwRmlsZXMiLCJnZXRVbm1hcEZpbGUiLCJnZXRBbGxNYXBGaWxlcyIsImdldE1hcEZpbGUiLCJnZXRBbGxQYXRjaEZpbGVzIiwiZ2V0UGF0Y2hGaWxlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUVBOztBQUNBOztBQUdBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUlBOztBQUNBOztBQUNBOzs7Ozs7OztJQUlhQSxxQyxXQW1CUixzQkFBUSxPQUFSLEVBQWlCQyxvQkFBV0MsSUFBNUIsQyxVQU9BLHNCQUFRLFlBQVIsRUFBc0JELG9CQUFXRSxTQUFqQyxDLFVBT0Esc0JBQ0csOEJBREgsRUFFR0Ysb0JBQVdHLGNBQVgsQ0FBMEIsa0JBQTFCLENBRkgsRUFHRywwQkFBYSxrQkFBYixFQUFpQ0MsaUJBQVNDLE1BQTFDLENBSEgsQyxVQWVBLHNCQUFRLGFBQVIsRUFBdUJMLG9CQUFXRSxTQUFsQyxDLFVBU0Esc0JBQVEsdUJBQVIsRUFBaUNGLG9CQUFXTSxNQUE1QyxFQUFvRCwwQkFBYSxVQUFiLEVBQXlCRixpQkFBU0MsTUFBbEMsQ0FBcEQsQyxV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WixRQUFyQixDQUFQO0FBQ0g7QUFDSjs7QUFDRCxVQUFNQyxLQUFLLENBQUUsbUJBQWtCUyxHQUFJLE1BQXhCLENBQVg7QUFDSDs7QUF2UDBFLEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVSZWFkU3RyZWFtLCBSZWFkU3RyZWFtIH0gZnJvbSBcImZzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCB7IHBhdGhFeGlzdHMgfSBmcm9tIFwiZnMtZXh0cmFcIjtcbmltcG9ydCBfLCB7IGRlYm91bmNlIH0gZnJvbSBcImxvZGFzaFwiO1xuaW1wb3J0IHsgRmFybUNvbmZpZyB9IGZyb20gXCJUb29scy9zcmMvQ2FuZHlDTElcIjtcblxuaW1wb3J0IHsgZXh0cmFjdEdmdnNGcm9tRmlsZU5hbWUgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9FeHRyYWN0R2Z2c0Zyb21GaWxlTmFtZVwiO1xuaW1wb3J0IHsgZ2xvYkFzeW5jIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvRnNVdGlsc1wiO1xuaW1wb3J0IHsgaHR0cEdldCB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9NZXRob2RzXCI7XG5pbXBvcnQgeyBOb3RGb3VuZFdlYkVycm9yIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL05vdEZvdW5kV2ViRXJyb3JcIjtcbmltcG9ydCB7IGh0dHBUeXBlLCBodHRwVXJsUGFyYW0gfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvUGFyYW1zXCI7XG5pbXBvcnQgeyBodHRwUmV0dXJuIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL1Jlc3VsdHNcIjtcbmltcG9ydCB7XG4gICAgRmlsZVN0cmVhbVJlc3VsdCxcbiAgICBTdHJlYW1SZXN1bHQsXG59IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9SZXN1bHRzL1N0cmVhbVJlc3VsdEhhbmRsZXJcIjtcbmltcG9ydCB7IFNpbmdsZXRvbkNvbnRyb2xsZXIgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0V4cHJlc3NXcmFwcGVyL1NpbmdsZXRvbkNvbnRyb2xsZXJcIjtcbmltcG9ydCB7IFBhdGhQYXR0ZXJuIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvUGF0aFBhdHRlcm5cIjtcbmltcG9ydCB7IHJlamVjdCB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vVHlwaW5nVXRpbHNcIjtcblxuaW1wb3J0IHsgSUdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIgfSBmcm9tIFwiLi9JR2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlclwiO1xuXG5leHBvcnQgY2xhc3MgQnVpbGRTZXJ2ZXJCYWNrZW5kUmVzb3VyY2VzQ29udHJvbGxlciBleHRlbmRzIFNpbmdsZXRvbkNvbnRyb2xsZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxsRmFybUNvbmZpZzogRmFybUNvbmZpZ1tdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZ2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlcjogSUdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXI7XG5cbiAgICBwcml2YXRlIGFsbFNjaGVtYXNGaWxlczogdW5kZWZpbmVkIHwgc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzZXRBbGxTY2hlbWFGaWxlc0RlYm91bmNlZDogKCkgPT4gdm9pZDtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgYWxsRmFybUNvbmZpZzogRmFybUNvbmZpZ1tdLFxuICAgICAgICBmbGFuZ05vcm1hbGl6YXRpb25Tb3VyY2VzUHJvdmlkZXI6IElHZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlciA9IGZsYW5nTm9ybWFsaXphdGlvblNvdXJjZXNQcm92aWRlcjtcbiAgICAgICAgdGhpcy5hbGxGYXJtQ29uZmlnID0gYWxsRmFybUNvbmZpZztcbiAgICAgICAgdGhpcy5yZXNldEFsbFNjaGVtYUZpbGVzRGVib3VuY2VkID0gZGVib3VuY2UoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hbGxTY2hlbWFzRmlsZXMgPSB1bmRlZmluZWQ7XG4gICAgICAgIH0sIDUwMDApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL2dmdnNcIiwgaHR0cFJldHVybi5Kc29uKVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxHZnZzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT4gZ2xvYkFzeW5jKFwiZm9ybXMvKlwiLCB7IGN3ZDogcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSkgfSkpO1xuICAgICAgICBjb25zdCBnZnZzID0gKGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKSkuZmxhdCgpO1xuICAgICAgICByZXR1cm4gZ2Z2cy5tYXAoeCA9PiB4LnJlcGxhY2UoXCJmb3Jtcy9cIiwgXCJcIikpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3BpY2tsaXN0c1wiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsUGlja2xpc3RzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+IGdsb2JBc3luYyhcInBpY2tsaXN0cy8qXCIsIHsgY3dkOiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5KSB9KSk7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gKGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKSkuZmxhdCgpO1xuICAgICAgICByZXR1cm4gZmlsZXMubWFwKHggPT4geC5yZXBsYWNlKFwicGlja2xpc3RzL1wiLCBcIlwiKSkuam9pbihcIlxcblwiKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcbiAgICAgICAgXCIvcGlja2xpc3RzLzpwaWNrbGlzdEZpbGVuYW1lXCIsXG4gICAgICAgIGh0dHBSZXR1cm4uU3RyZWFtV2l0aE1pbWUoXCJhcHBsaWNhdGlvbi9qc29uXCIpLFxuICAgICAgICBodHRwVXJsUGFyYW0oXCJwaWNrbGlzdEZpbGVuYW1lXCIsIGh0dHBUeXBlLlN0cmluZylcbiAgICApXG4gICAgcHVibGljIGFzeW5jIGdldFBpY2tsaXN0cyhwaWNrbGlzdEZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPFJlYWRTdHJlYW0+IHtcbiAgICAgICAgY29uc3QgYWxsRmlsZVBhdGggPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT4gcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSwgXCJwaWNrbGlzdHNcIiwgcGlja2xpc3RGaWxlbmFtZSkpO1xuICAgICAgICBmb3IgKGNvbnN0IHBhdGhGaWxlIG9mIGFsbEZpbGVQYXRoKSB7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhwYXRoRmlsZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUmVhZFN0cmVhbShwYXRoRmlsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgRXJyb3IoYG5vdCBmb3VuZCBwaWNrbGlzdEZpbGVuYW1lICR7cGlja2xpc3RGaWxlbmFtZX1gKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9jb252ZXJ0ZXJzXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxDb252ZXJ0ZXJzRmlsZXMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT5cbiAgICAgICAgICAgIGdsb2JBc3luYyhcImZvcm1zLyovY29udmVydGVycy8qXCIsIHsgY3dkOiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5KSB9KVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBmaWxlcyA9IChhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcykpLmZsYXQoKTtcbiAgICAgICAgcmV0dXJuIGZpbGVzLm1hcCh4ID0+IHBhdGguYmFzZW5hbWUoeCkpLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvY29udmVydGVycy86ZmlsZW5hbWVcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImZpbGVuYW1lXCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldENvbnZlcnRlckZpbGUoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBhbGxGYXJtRGlyZWN0b3JpZXMgPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT4gaS5mYXJtRGlyZWN0b3J5KS5mbGF0KCk7XG4gICAgICAgIGNvbnN0IGZvcm1EaXJQYXRoID0gYWxsRmFybURpcmVjdG9yaWVzLm1hcChwdGggPT4gcGF0aC5qb2luKHB0aCkpO1xuXG4gICAgICAgIGNvbnN0IHBvc3NpYmxlRmlsZVBhdGhzID0gZm9ybURpclBhdGhcbiAgICAgICAgICAgIC5tYXAoaSA9PiBleHRyYWN0R2Z2c0Zyb21GaWxlTmFtZShmaWxlbmFtZSkubWFwKGdmdiA9PiBwYXRoLmpvaW4oaSwgYGZvcm1zLyR7Z2Z2fS9jb252ZXJ0ZXJzLyR7ZmlsZW5hbWV9YCkpKVxuICAgICAgICAgICAgLmZsYXQoKTtcbiAgICAgICAgZm9yIChjb25zdCBmaWxlUGF0aCBvZiBwb3NzaWJsZUZpbGVQYXRocykge1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMoZmlsZVBhdGgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KGZpbGVQYXRoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRXZWJFcnJvcihcIkZpbGUgbm90IGZvdW5kXCIsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9tZXJnZXJzXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxNZXJnZXJzRmlsZXMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT5cbiAgICAgICAgICAgIGdsb2JBc3luYyhcImZvcm1zLyovbWVyZ2Vycy8qXCIsIHsgY3dkOiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5KSB9KVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBmaWxlcyA9IChhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcykpLmZsYXQoKTtcbiAgICAgICAgcmV0dXJuIGZpbGVzLm1hcCh4ID0+IHBhdGguYmFzZW5hbWUoeCkpLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvbWVyZ2Vycy86ZmlsZW5hbWVcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImZpbGVuYW1lXCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldE1lcmdlckZpbGUoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBhbGxGYXJtRGlyZWN0b3JpZXMgPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT4gaS5mYXJtRGlyZWN0b3J5KS5mbGF0KCk7XG4gICAgICAgIGNvbnN0IGZvcm1EaXJQYXRoID0gYWxsRmFybURpcmVjdG9yaWVzLm1hcChwdGggPT4gcGF0aC5qb2luKHB0aCkpO1xuXG4gICAgICAgIGNvbnN0IHBvc3NpYmxlRmlsZVBhdGhzID0gZm9ybURpclBhdGhcbiAgICAgICAgICAgIC5tYXAoaSA9PiBleHRyYWN0R2Z2c0Zyb21GaWxlTmFtZShmaWxlbmFtZSkubWFwKGdmdiA9PiBwYXRoLmpvaW4oaSwgYGZvcm1zLyR7Z2Z2fS9tZXJnZXJzLyR7ZmlsZW5hbWV9YCkpKVxuICAgICAgICAgICAgLmZsYXQoKTtcbiAgICAgICAgZm9yIChjb25zdCBmaWxlUGF0aCBvZiBwb3NzaWJsZUZpbGVQYXRocykge1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMoZmlsZVBhdGgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KGZpbGVQYXRoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRXZWJFcnJvcihcIkZpbGUgbm90IGZvdW5kXCIsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9zY2hlbWFzXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxTY2hlbWFzRmlsZXMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgaWYgKHRoaXMuYWxsU2NoZW1hc0ZpbGVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHByb21pc2VzID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+XG4gICAgICAgICAgICAgICAgZ2xvYkFzeW5jKFwiZm9ybXMvKi9zY2hlbWFzLypcIiwgeyBjd2Q6IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnkpIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgZmlsZXMgPSAoYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpKS5mbGF0KCk7XG4gICAgICAgICAgICB0aGlzLmFsbFNjaGVtYXNGaWxlcyA9IGZpbGVzLm1hcCh4ID0+IHBhdGguYmFzZW5hbWUoeCkpLmpvaW4oXCJcXG5cIik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXNldEFsbFNjaGVtYUZpbGVzRGVib3VuY2VkKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmFsbFNjaGVtYXNGaWxlcztcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9zY2hlbWFzLzpmaWxlbmFtZVwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZmlsZW5hbWVcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0Rm9ybVNjaGVtYXMoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBmaWxlUGF0dGVybiA9IG5ldyBQYXRoUGF0dGVybihcIntnZnZ9LioueG1sXCIpO1xuICAgICAgICBjb25zdCBnZnY6IHN0cmluZyA9IGZpbGVQYXR0ZXJuLmV4ZWNTdHJpY3QoZmlsZW5hbWUpLmdmdiA/PyByZWplY3QoKTtcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmFsbEZhcm1Db25maWdcbiAgICAgICAgICAgIC5tYXAoaSA9PiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5LCBcImZvcm1zXCIsIGdmdiwgXCJzY2hlbWFzXCIsIGZpbGVuYW1lKSlcbiAgICAgICAgICAgIC5mbGF0KCk7XG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlUGF0aCkge1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMoZmlsZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQoZmlsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kV2ViRXJyb3IoXCJGaWxlIG5vdCBmb3VuZFwiLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvcHJlc2VudGF0aW9uc1wiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsRm9ybVByZXNlbnRhdGlvbnMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT5cbiAgICAgICAgICAgIGdsb2JBc3luYyhcImZvcm1zLyovcHJlc2VudGF0aW9ucy5qc29uXCIsIHsgY3dkOiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5KSB9KVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBmaWxlcyA9IChhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcykpLmZsYXQoKTtcbiAgICAgICAgcmV0dXJuIGZpbGVzLm1hcCh4ID0+IHgucmVwbGFjZShcImZvcm1zL1wiLCBcIlwiKS5yZXBsYWNlKFwiL1wiLCBcIi5cIikpLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvcHJlc2VudGF0aW9ucy86Z2Z2LnByZXNlbnRhdGlvbnMuanNvblwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZ2Z2XCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldEZvcm1QcmVzZW50YXRpb25zKGdmdjogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGFsbEZpbGVQYXRoID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZ2Z2LCBcInByZXNlbnRhdGlvbnMuanNvblwiKSk7XG4gICAgICAgIGZvciAoY29uc3QgcGF0aEZpbGUgb2YgYWxsRmlsZVBhdGgpIHtcbiAgICAgICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKHBhdGhGaWxlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZVN0cmVhbVJlc3VsdChwYXRoRmlsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgRXJyb3IoYG5vdCBmb3VuZCB1bm1hcCAke2dmdn0ueG1sYCk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvbm9ybWFsaXplXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxOb3JtYWxpemVGaWxlcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PlxuICAgICAgICAgICAgZ2xvYkFzeW5jKFwiZm9ybXMvKi9ub3JtYWxpemUvKi54bWxcIiwgeyBjd2Q6IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnkpIH0pXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gKGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKSkuZmxhdCgpO1xuICAgICAgICBjb25zdCBmbGFuZ0ZpbGVzID0gYXdhaXQgdGhpcy5nZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyLmdldEFsbE5vcm1hbGl6YXRpb25GaWxlTmFtZXMoKTtcbiAgICAgICAgcmV0dXJuIFsuLi5maWxlcy5tYXAoeCA9PiBwYXRoLmJhc2VuYW1lKHgpKSwgLi4uZmxhbmdGaWxlc10uam9pbihcIlxcblwiKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9ub3JtYWxpemUvOmdmdi54bWxcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImdmdlwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXROb3JtYWxpemVGaWxlKGdmdjogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGFsbEZpbGVQYXRoID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+XG4gICAgICAgICAgICBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5LCBcImZvcm1zXCIsIGdmdiwgXCJub3JtYWxpemVcIiwgYCR7Z2Z2fS54bWxgKVxuICAgICAgICApO1xuICAgICAgICBmb3IgKGNvbnN0IHBhdGhGaWxlIG9mIGFsbEZpbGVQYXRoKSB7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhwYXRoRmlsZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQocGF0aEZpbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IEVycm9yKGBub3QgZm91bmQgdW5tYXAgJHtnZnZ9LnhtbGApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL25vcm1hbGl6ZS86Z2Z2Lm5vcm1hbGl6ZVwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZ2Z2XCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldEZMYW5nTm9ybWFsaXplRmlsZShnZnY6IHN0cmluZyk6IFByb21pc2U8U3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiBuZXcgU3RyZWFtUmVzdWx0KGF3YWl0IHRoaXMuZ2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlci5nZXROb3JtYWxpemF0aW9uRmlsZUNvbnRlbnQoZ2Z2KSk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvYXR0YWNobWVudHBhdGhzXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxBdHRhY2htZW50UGF0aHNGaWxlTmFtZXMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgZmxhbmdGaWxlcyA9IGF3YWl0IHRoaXMuZ2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlci5nZXRBbGxBdHRhY2htZW50UGF0aEZpbGVOYW1lcygpO1xuICAgICAgICByZXR1cm4gZmxhbmdGaWxlcy5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL2F0dGFjaG1lbnRwYXRocy86Z2Z2Lmpzb25cIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImdmdlwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRBdHRhY2htZW50UGF0aEZpbGUoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPFN0cmVhbVJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gbmV3IFN0cmVhbVJlc3VsdChhd2FpdCB0aGlzLmdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIuZ2V0QXR0YWNobWVudFBhdGhzRmlsZUNvbnRlbnQoZ2Z2KSk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvdW5tYXBcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbFVubWFwRmlsZXMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT5cbiAgICAgICAgICAgIGdsb2JBc3luYyhcImZvcm1zLyovdW5tYXAvKi54bWxcIiwgeyBjd2Q6IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnkpIH0pXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gKGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKSkuZmxhdCgpO1xuICAgICAgICByZXR1cm4gZmlsZXMubWFwKHggPT4gcGF0aC5iYXNlbmFtZSh4KSkuam9pbihcIlxcblwiKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi91bm1hcC86Z2Z2LnhtbFwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZ2Z2XCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldFVubWFwRmlsZShnZnY6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBhbGxGaWxlUGF0aCA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PlxuICAgICAgICAgICAgcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYsIFwidW5tYXBcIiwgYCR7Z2Z2fS54bWxgKVxuICAgICAgICApO1xuICAgICAgICBmb3IgKGNvbnN0IHBhdGhGaWxlIG9mIGFsbEZpbGVQYXRoKSB7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhwYXRoRmlsZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQocGF0aEZpbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IEVycm9yKGBub3QgZm91bmQgdW5tYXAgJHtnZnZ9LnhtbGApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL21hcFwiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsTWFwRmlsZXMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT5cbiAgICAgICAgICAgIGdsb2JBc3luYyhcImZvcm1zLyovbWFwLyoueG1sXCIsIHsgY3dkOiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5KSB9KVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBmaWxlcyA9IChhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcykpLmZsYXQoKTtcbiAgICAgICAgcmV0dXJuIGZpbGVzLm1hcCh4ID0+IHBhdGguYmFzZW5hbWUoeCkpLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvbWFwLzpnZnYueG1sXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJnZnZcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0TWFwRmlsZShnZnY6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBhbGxGaWxlUGF0aCA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5LCBcImZvcm1zXCIsIGdmdiwgXCJtYXBcIiwgYCR7Z2Z2fS54bWxgKSk7XG4gICAgICAgIGZvciAoY29uc3QgcGF0aEZpbGUgb2YgYWxsRmlsZVBhdGgpIHtcbiAgICAgICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKHBhdGhGaWxlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZVN0cmVhbVJlc3VsdChwYXRoRmlsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgRXJyb3IoYG5vdCBmb3VuZCB1bm1hcCAke2dmdn0ueG1sYCk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvcGF0Y2hcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbFBhdGNoRmlsZXMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT5cbiAgICAgICAgICAgIGdsb2JBc3luYyhcImZvcm1zLyovcGF0Y2gvKi54c2x0XCIsIHsgY3dkOiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5KSB9KVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBmaWxlcyA9IChhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcykpLmZsYXQoKTtcbiAgICAgICAgcmV0dXJuIGZpbGVzLm1hcCh4ID0+IHBhdGguYmFzZW5hbWUoeCkpLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvcGF0Y2gvOmdmdi54c2x0XCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJnZnZcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0UGF0Y2hGaWxlKGdmdjogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGFsbEZpbGVQYXRoID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+XG4gICAgICAgICAgICBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5LCBcImZvcm1zXCIsIGdmdiwgXCJwYXRjaFwiLCBgJHtnZnZ9LnhzbHRgKVxuICAgICAgICApO1xuICAgICAgICBmb3IgKGNvbnN0IHBhdGhGaWxlIG9mIGFsbEZpbGVQYXRoKSB7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhwYXRoRmlsZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQocGF0aEZpbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IEVycm9yKGBub3QgZm91bmQgdW5tYXAgJHtnZnZ9LnhtbGApO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -35,7 +35,7 @@ let BuildServerBackendResourcesUpdatesController = (_dec = (0, _Methods.httpGet)
|
|
|
35
35
|
this.farmWatchers = void 0;
|
|
36
36
|
this.resourcesWatcher = void 0;
|
|
37
37
|
this.allFarmConfig = void 0;
|
|
38
|
-
this.farmWatchingRegexps = ["forms/*/schemas/*.rng.xml", "forms/*/converters/*", // NOTE Тут такое дело: почему-то иногда (иногда, то есть не всегда!), когда нам приходит запрос на
|
|
38
|
+
this.farmWatchingRegexps = ["forms/*/schemas/*.rng.xml", "forms/*/converters/*", "forms/*/mergers/*", // NOTE Тут такое дело: почему-то иногда (иногда, то есть не всегда!), когда нам приходит запрос на
|
|
39
39
|
// forms/*/presentations.json в этом классе возникает событие об измении этого файла и мы генерим очень много
|
|
40
40
|
// лишних событий об измении ресурсов и CandyApi зависает. Я пока не смог разобраться почему это так.
|
|
41
41
|
// "forms/*/presentations.json",
|
|
@@ -100,4 +100,4 @@ class Monitor {
|
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
}
|
|
103
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
103
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZFNlcnZlci9SZXNvdXJjZXNDb250cm9sbGVycy9CdWlsZFNlcnZlckJhY2tlbmRSZXNvdXJjZXNVcGRhdGVzQ29udHJvbGxlci50cyJdLCJuYW1lcyI6WyJCdWlsZFNlcnZlckJhY2tlbmRSZXNvdXJjZXNVcGRhdGVzQ29udHJvbGxlciIsImh0dHBSZXR1cm4iLCJQbGFpblRleHQiLCJodHRwVHlwZSIsIk51bWJlciIsIlNpbmdsZXRvbkNvbnRyb2xsZXIiLCJjb25zdHJ1Y3RvciIsImFsbEZhcm1Db25maWciLCJsYXN0VXBkYXRlVGltZSIsInVwZGF0ZU1vbml0b3IiLCJNb25pdG9yIiwiZmFybVdhdGNoZXJzIiwicmVzb3VyY2VzV2F0Y2hlciIsImZhcm1XYXRjaGluZ1JlZ2V4cHMiLCJtYXAiLCJnbG9iVG9SZWdleHAiLCJoYW5kbGVGYXJtRlNVcGRhdGUiLCJldmVudFR5cGUiLCJmaWxlUGF0aCIsInNvbWUiLCJ4IiwidGVzdCIsIkRhdGUiLCJub3ciLCJwdWxzZUFsbCIsImJlZm9yZVN0YXJ0IiwiY29uZmlnIiwiZmFybURpcmVjdG9yeSIsInJlY3Vyc2l2ZSIsIl8iLCJkZWJvdW5jZSIsImdldExhc3RVcGRhdGVUaW1lIiwicHJldkxhc3RVcGRhdGVUaW1lIiwidW5kZWZpbmVkIiwidG9TdHJpbmciLCJQcm9taXNlIiwicmFjZSIsIndhaXQiLCJhZnRlclN0b3AiLCJpIiwiY2xvc2UiLCJhd2FpdGVycyIsIndhaXRQcm9taXNlSGFuZGxlciIsInJlc29sdmUiLCJwdXNoIiwiYXdhaXRlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7OztJQUVhQSw0QyxXQW1DUixzQkFDRywrQ0FESCxFQUVHQyxvQkFBV0MsU0FGZCxFQUdHLDRCQUFlLGdCQUFmLEVBQWlDQyxpQkFBU0MsTUFBMUMsQ0FISCxD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RUFBZ0M7QUFDNUJJLE1BQUFBLE9BQU87QUFDVjtBQUNKOztBQWJTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRlNXYXRjaGVyLCB3YXRjaCB9IGZyb20gXCJmc1wiO1xuXG5pbXBvcnQgXyBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQgeyBGYXJtQ29uZmlnIH0gZnJvbSBcIlRvb2xzL3NyYy9DYW5keUNMSVwiO1xuXG5pbXBvcnQgeyBkZWxheSB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vQXN5bmNVdGlsc1wiO1xuaW1wb3J0IHsgaHR0cEdldCB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9NZXRob2RzXCI7XG5pbXBvcnQgeyBodHRwUXVlcnlQYXJhbSwgaHR0cFR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvUGFyYW1zXCI7XG5pbXBvcnQgeyBodHRwUmV0dXJuIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL1Jlc3VsdHNcIjtcbmltcG9ydCB7IFNpbmdsZXRvbkNvbnRyb2xsZXIgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0V4cHJlc3NXcmFwcGVyL1NpbmdsZXRvbkNvbnRyb2xsZXJcIjtcblxuaW1wb3J0IHsgZ2xvYlRvUmVnZXhwIH0gZnJvbSBcIi4vR2xvYlRvUmVnZXhwXCI7XG5cbmV4cG9ydCBjbGFzcyBCdWlsZFNlcnZlckJhY2tlbmRSZXNvdXJjZXNVcGRhdGVzQ29udHJvbGxlciBleHRlbmRzIFNpbmdsZXRvbkNvbnRyb2xsZXIge1xuICAgIHByaXZhdGUgbGFzdFVwZGF0ZVRpbWUgPSAwO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXBkYXRlTW9uaXRvcjogTW9uaXRvciA9IG5ldyBNb25pdG9yKCk7XG4gICAgcHJpdmF0ZSBmYXJtV2F0Y2hlcnM/OiBGU1dhdGNoZXJbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlc291cmNlc1dhdGNoZXI/OiBGU1dhdGNoZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGxGYXJtQ29uZmlnOiBGYXJtQ29uZmlnW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBmYXJtV2F0Y2hpbmdSZWdleHBzID0gW1xuICAgICAgICBcImZvcm1zLyovc2NoZW1hcy8qLnJuZy54bWxcIixcbiAgICAgICAgXCJmb3Jtcy8qL2NvbnZlcnRlcnMvKlwiLFxuICAgICAgICBcImZvcm1zLyovbWVyZ2Vycy8qXCIsXG4gICAgICAgIC8vIE5PVEUg0KLRg9GCINGC0LDQutC+0LUg0LTQtdC70L46INC/0L7Rh9C10LzRgy3RgtC+INC40L3QvtCz0LTQsCAo0LjQvdC+0LPQtNCwLCDRgtC+INC10YHRgtGMINC90LUg0LLRgdC10LPQtNCwISksINC60L7Qs9C00LAg0L3QsNC8INC/0YDQuNGF0L7QtNC40YIg0LfQsNC/0YDQvtGBINC90LBcbiAgICAgICAgLy8gZm9ybXMvKi9wcmVzZW50YXRpb25zLmpzb24g0LIg0Y3RgtC+0Lwg0LrQu9Cw0YHRgdC1INCy0L7Qt9C90LjQutCw0LXRgiDRgdC+0LHRi9GC0LjQtSDQvtCxINC40LfQvNC10L3QuNC4INGN0YLQvtCz0L4g0YTQsNC50LvQsCDQuCDQvNGLINCz0LXQvdC10YDQuNC8INC+0YfQtdC90Ywg0LzQvdC+0LPQvlxuICAgICAgICAvLyDQu9C40YjQvdC40YUg0YHQvtCx0YvRgtC40Lkg0L7QsSDQuNC30LzQtdC90LjQuCDRgNC10YHRg9GA0YHQvtCyINC4IENhbmR5QXBpINC30LDQstC40YHQsNC10YIuINCvINC/0L7QutCwINC90LUg0YHQvNC+0LMg0YDQsNC30L7QsdGA0LDRgtGM0YHRjyDQv9C+0YfQtdC80YMg0Y3RgtC+INGC0LDQui5cbiAgICAgICAgLy8gXCJmb3Jtcy8qL3ByZXNlbnRhdGlvbnMuanNvblwiLFxuICAgICAgICBcImZvcm1zLyovZm9ybS5qc29uXCIsXG4gICAgICAgIFwiZm9ybXMvKi9zdWdhci8qLnhtbFwiLFxuICAgICAgICBcImZvcm1zLyovbm9ybWFsaXplLyoueG1sXCIsXG4gICAgICAgIFwiZm9ybXMvKi91bm1hcC8qLnhtbFwiLFxuICAgICAgICBcImZvcm1zLyovbWFwLyoueG1sXCIsXG4gICAgICAgIFwiZm9ybXMvKi9wYXRjaC8qLnhzbHRcIixcbiAgICAgICAgXCJwaWNrbGlzdHMvKlwiLFxuICAgIF0ubWFwKGdsb2JUb1JlZ2V4cCk7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoYWxsRmFybUNvbmZpZzogRmFybUNvbmZpZ1tdKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuYWxsRmFybUNvbmZpZyA9IGFsbEZhcm1Db25maWc7XG4gICAgICAgIHRoaXMubGFzdFVwZGF0ZVRpbWUgPSBEYXRlLm5vdygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBiZWZvcmVTdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5mYXJtV2F0Y2hlcnMgPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGNvbmZpZyA9PlxuICAgICAgICAgICAgd2F0Y2goY29uZmlnLmZhcm1EaXJlY3RvcnksIHsgcmVjdXJzaXZlOiB0cnVlIH0sIF8uZGVib3VuY2UodGhpcy5oYW5kbGVGYXJtRlNVcGRhdGUsIDIwMCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXG4gICAgICAgIFwiL3VwZGF0ZXMtb2JzZXJ2ZXIvY2hlY2stbGFzdC11cGRhdGUtbG9uZy1wb2xsXCIsXG4gICAgICAgIGh0dHBSZXR1cm4uUGxhaW5UZXh0LFxuICAgICAgICBodHRwUXVlcnlQYXJhbShcInByZXZMYXN0VXBkYXRlXCIsIGh0dHBUeXBlLk51bWJlcilcbiAgICApXG4gICAgcHVibGljIGFzeW5jIGdldExhc3RVcGRhdGVUaW1lKHByZXZMYXN0VXBkYXRlVGltZT86IG51bWJlcik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGlmIChwcmV2TGFzdFVwZGF0ZVRpbWUgPT0gdW5kZWZpbmVkIHx8IHByZXZMYXN0VXBkYXRlVGltZSA8IHRoaXMubGFzdFVwZGF0ZVRpbWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxhc3RVcGRhdGVUaW1lLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgUHJvbWlzZS5yYWNlKFt0aGlzLnVwZGF0ZU1vbml0b3Iud2FpdCgpLCBkZWxheSg2MDAwMCldKTtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFzdFVwZGF0ZVRpbWUudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgYWZ0ZXJTdG9wKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLmZhcm1XYXRjaGVycz8ubWFwKGkgPT4gaS5jbG9zZSgpKTtcbiAgICAgICAgdGhpcy5yZXNvdXJjZXNXYXRjaGVyPy5jbG9zZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVhZG9ubHkgaGFuZGxlRmFybUZTVXBkYXRlID0gKGV2ZW50VHlwZTogc3RyaW5nLCBmaWxlUGF0aDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmZhcm1XYXRjaGluZ1JlZ2V4cHMuc29tZSh4ID0+IHgudGVzdChmaWxlUGF0aCkpKSB7XG4gICAgICAgICAgICB0aGlzLmxhc3RVcGRhdGVUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTW9uaXRvci5wdWxzZUFsbCgpO1xuICAgICAgICB9XG4gICAgfTtcbn1cblxuY2xhc3MgTW9uaXRvciB7XG4gICAgcHJpdmF0ZSBhd2FpdGVyczogQXJyYXk8KCkgPT4gdm9pZD4gPSBbXTtcblxuICAgIHB1YmxpYyB3YWl0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UodGhpcy53YWl0UHJvbWlzZUhhbmRsZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwdWxzZUFsbCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYXdhaXRlcnMgPSBbLi4udGhpcy5hd2FpdGVyc107XG4gICAgICAgIHRoaXMuYXdhaXRlcnMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBhd2FpdGVyIG9mIGF3YWl0ZXJzKSB7XG4gICAgICAgICAgICBhd2FpdGVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHdhaXRQcm9taXNlSGFuZGxlciA9IChyZXNvbHZlOiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgICAgIHRoaXMuYXdhaXRlcnMucHVzaChyZXNvbHZlKTtcbiAgICB9O1xufVxuIl19
|