@colijnit/configurator 12.0.4 → 12.0.7
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/app/builder.d.ts +3 -0
- package/bundles/colijnit-configurator.umd.js +217 -96
- package/bundles/colijnit-configurator.umd.js.map +1 -1
- package/colijnit-configurator.metadata.json +1 -1
- package/esm2015/app/builder.js +24 -1
- package/esm2015/helper/variation-helper.js +76 -11
- package/esm2015/model/variation.js +1 -1
- package/esm2015/utils/variation-utils.js +29 -26
- package/fesm2015/colijnit-configurator.js +133 -43
- package/fesm2015/colijnit-configurator.js.map +1 -1
- package/helper/variation-helper.d.ts +7 -0
- package/model/variation.d.ts +1 -0
- package/package.json +2 -2
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
2
|
import { DecoNodeType } from "@colijnit/configuratorapi/build/enum/deco-node-type.enum";
|
|
3
|
+
import { VariationSettings } from "../model/variation-settings";
|
|
3
4
|
import { AssetUtils } from "../utils/asset.utils";
|
|
4
5
|
import { Variation } from "../model/variation";
|
|
5
6
|
import * as THREE from "three";
|
|
6
7
|
import { VariationUtils } from "../utils/variation-utils";
|
|
7
8
|
export class VariationHelper {
|
|
8
9
|
constructor() {
|
|
10
|
+
this._variations = [];
|
|
9
11
|
this._lastKnownVariations = new Map();
|
|
10
12
|
}
|
|
11
13
|
clearCache() {
|
|
@@ -78,18 +80,22 @@ export class VariationHelper {
|
|
|
78
80
|
}
|
|
79
81
|
}
|
|
80
82
|
const lastKnownVariations = [];
|
|
83
|
+
const variationPromise = [];
|
|
81
84
|
for (let j = 0; j < variations.length; j++) {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
85
|
+
variationPromise.push(this.loadTheVariation(variations[j].gameObjectName || parts[i].decoId).then((variationSettings) => __awaiter(this, void 0, void 0, function* () {
|
|
86
|
+
const newVariation = new Variation();
|
|
87
|
+
newVariation.decoId = parseFloat(variations[j].id);
|
|
88
|
+
newVariation.brandId = variations[j].brandId;
|
|
89
|
+
newVariation.optionText = variations[j].optionText;
|
|
90
|
+
newVariation.gameObjectName = variations[j].gameObjectName;
|
|
91
|
+
newVariation.supplierArticleNr = variations[j].supplierArticleNr;
|
|
92
|
+
newVariation.materialId = variations[j].materialId;
|
|
93
|
+
newVariation.material = yield AssetUtils.CreateMaterialFromAsset(variationSettings);
|
|
94
|
+
lastKnownVariations.push(newVariation);
|
|
95
|
+
})));
|
|
91
96
|
}
|
|
92
|
-
|
|
97
|
+
yield Promise.all(variationPromise);
|
|
98
|
+
this._setLastKnownVariations(`${parts[i].nodeId}_${parts[i].node}`, lastKnownVariations);
|
|
93
99
|
parts[i].variations = lastKnownVariations;
|
|
94
100
|
this._applyVariations(obj, parts[i], usePbr);
|
|
95
101
|
}
|
|
@@ -99,6 +105,65 @@ export class VariationHelper {
|
|
|
99
105
|
}
|
|
100
106
|
});
|
|
101
107
|
}
|
|
108
|
+
get(id) {
|
|
109
|
+
const len = this._variations.length;
|
|
110
|
+
for (let i = 0; i < len; i++) {
|
|
111
|
+
if (this._variations[i].id && this._variations[i].id === id) {
|
|
112
|
+
return this._variations[i];
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
set(variations) {
|
|
117
|
+
const idx = this._variations.findIndex(v => v.id === variations.id);
|
|
118
|
+
if (idx > -1) {
|
|
119
|
+
this._variations[idx] = variations;
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
this._variations.push(variations);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
preloadVariations(schema, fileNames) {
|
|
126
|
+
fileNames.forEach((fileName) => {
|
|
127
|
+
if (fileName && !this.get(fileName)) {
|
|
128
|
+
const settings = new VariationSettings();
|
|
129
|
+
settings.id = fileName;
|
|
130
|
+
settings.loading = true;
|
|
131
|
+
this._variations.push(settings);
|
|
132
|
+
let assetPath = this.assetPath;
|
|
133
|
+
if (!assetPath.endsWith('/')) {
|
|
134
|
+
assetPath += '/';
|
|
135
|
+
}
|
|
136
|
+
VariationUtils.LoadVariation(assetPath, fileName).then((variationSettings) => {
|
|
137
|
+
settings.loading = false;
|
|
138
|
+
settings.loaded.next(variationSettings);
|
|
139
|
+
if (variationSettings) {
|
|
140
|
+
this.set(variationSettings);
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
loadTheVariation(fileName) {
|
|
147
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
148
|
+
if (!fileName) {
|
|
149
|
+
return null;
|
|
150
|
+
}
|
|
151
|
+
if (this.get(fileName)) {
|
|
152
|
+
const settings = this.get(fileName);
|
|
153
|
+
if (settings.loading) {
|
|
154
|
+
return yield this._waitForVariationToLoad(settings);
|
|
155
|
+
}
|
|
156
|
+
return settings;
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
_waitForVariationToLoad(settings) {
|
|
161
|
+
return new Promise((resolve) => {
|
|
162
|
+
settings.loaded.subscribe((value) => {
|
|
163
|
+
resolve(value);
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
}
|
|
102
167
|
_getChildrenFilterByProp(obj, userDataObjectProp, prop, value) {
|
|
103
168
|
return obj.children.filter((child) => {
|
|
104
169
|
return child.userData &&
|
|
@@ -346,4 +411,4 @@ export class VariationHelper {
|
|
|
346
411
|
return null;
|
|
347
412
|
}
|
|
348
413
|
}
|
|
349
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWF0aW9uLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9oZWxwZXIvdmFyaWF0aW9uLWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDBEQUEwRCxDQUFDO0FBRXRGLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUVoRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDN0MsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRXhELE1BQU0sT0FBTyxlQUFlO0lBQTVCO1FBSVkseUJBQW9CLEdBQTZCLElBQUksR0FBRyxFQUFFLENBQUM7SUF1VnZFLENBQUM7SUFyVlUsVUFBVTtRQUNiLE1BQU0sWUFBWSxHQUFrQixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ25GLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUNoQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JBQzdCLElBQUk7b0JBQ0EsSUFBSSxTQUFTLENBQUMsUUFBUSxFQUFFO3dCQUNwQixJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFOzRCQUM1QixTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQzt5QkFDeEM7d0JBQ0QsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTs0QkFDM0IsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7eUJBQ3ZDO3dCQUNELElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUU7NEJBQzlCLFNB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UUFBUSxDQUFDLElBQUksRUFBRTtnQkFDekIsTUFBTSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQzthQUN6QztZQUVELE1BQU0sV0FBVyxHQUErQixJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN2RixXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLFdBQVcsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBRS9CLE9BQU8sV0FBVyxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQztJQUVPLHVCQUF1QixDQUFDLEVBQVUsRUFBRSxTQUFzQjtRQUM5RCxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU8sdUJBQXVCLENBQUMsRUFBVTtRQUN0QyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDbkMsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQzVDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztDQUVKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEZWNvTm9kZVR5cGV9IGZyb20gXCJAY29saWpuaXQvY29uZmlndXJhdG9yYXBpL2J1aWxkL2VudW0vZGVjby1ub2RlLXR5cGUuZW51bVwiO1xyXG5pbXBvcnQge1ZhcmlhdGlvblNldHRpbmdzfSBmcm9tIFwiLi4vbW9kZWwvdmFyaWF0aW9uLXNldHRpbmdzXCI7XHJcbmltcG9ydCB7QXNzZXRVdGlsc30gZnJvbSBcIi4uL3V0aWxzL2Fzc2V0LnV0aWxzXCI7XHJcbmltcG9ydCB7RGVjb05vZGV9IGZyb20gXCJAY29saWpuaXQvY29uZmlndXJhdG9yYXBpL2J1aWxkL21vZGVsL2RlY28tbm9kZVwiO1xyXG5pbXBvcnQge1ZhcmlhdGlvbn0gZnJvbSBcIi4uL21vZGVsL3ZhcmlhdGlvblwiO1xyXG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tIFwidGhyZWVcIjtcclxuaW1wb3J0IHtWYXJpYXRpb25VdGlsc30gZnJvbSBcIi4uL3V0aWxzL3ZhcmlhdGlvbi11dGlsc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFZhcmlhdGlvbkhlbHBlciB7XHJcblxyXG4gICAgcHVibGljIGFzc2V0UGF0aDogc3RyaW5nO1xyXG5cclxuICAgIHByaXZhdGUgX2xhc3RLbm93blZhcmlhdGlvbnM6IE1hcDxzdHJpbmcsIFZhcmlhdGlvbltdPiA9IG5ldyBNYXAoKTtcclxuXHJcbiAgICBwdWJsaWMgY2xlYXJDYWNoZSgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB2YXJpYXRpb25NYXA6IFZhcmlhdGlvbltdW10gPSBBcnJheS5mcm9tKHRoaXMuX2xhc3RLbm93blZhcmlhdGlvbnMudmFsdWVzKCkpO1xyXG4gICAgICAgIHZhcmlhdGlvbk1hcC5mb3JFYWNoKCh2YXJpYXRpb25zKSA9PiB7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvbnMuZm9yRWFjaCgodmFyaWF0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh2YXJpYXRpb24ubWF0ZXJpYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhdGlvbi5tYXRlcmlhbC50ZXh0dXJlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYXRpb24ubWF0ZXJpYWwudGV4dHVyZS5kaXNwb3NlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhdGlvbi5tYXRlcmlhbC5ub3JtYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhdGlvbi5tYXRlcmlhbC5ub3JtYWwuZGlzcG9zZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YXJpYXRpb24ubWF0ZXJpYWwubWV0YWxuZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYXRpb24ubWF0ZXJpYWwubWV0YWxuZXNzLmRpc3Bvc2UoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFyaWF0aW9uLm1hdGVyaWFsLnJvdWdobmVzcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWF0aW9uLm1hdGVyaWFsLnJvdWdobmVzcy5kaXNwb3NlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhdGlvbi5tYXRlcmlhbC5hbykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWF0aW9uLm1hdGVyaWFsLmFvLmRpc3Bvc2UoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgVmFyaWF0aW9uVXRpbHMuQ2xlYXJDYWNoZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBsb2FkUGFydChvYmo6IFRIUkVFLk9iamVjdDNELCBwYXJ0czogYW55W10sIHVzZVBicjogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgbGVuOiBudW1iZXIgPSBwYXJ0cy5sZW5ndGg7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGlmIChwYXJ0c1tpXS5kZWNvTm9kZSAmJiBwYXJ0c1tpXS5kZWNvTm9kZS5nYW1lT2JqZWN0TmFtZSAmJiBwYXJ0c1tpXS5kZWNvTm9kZS50eXBlID09PSBEZWNvTm9kZVR5cGUuUGFydCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnRTZXR0aW5nczogVmFyaWF0aW9uU2V0dGluZ3MgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBWYXJpYXRpb25VdGlscy5Mb2FkVmFyaWF0aW9uKHRoaXMuYXNzZXRQYXRoLCBwYXJ0c1tpXS5kZWNvTm9kZS5nYW1lT2JqZWN0TmFtZSB8fCBwYXJ0c1tpXS5kZWNvSWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJ0U2V0dGluZ3MpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFydFZhcmlhdGlvbjogVmFyaWF0aW9uID0gbmV3IFZhcmlhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJ0VmFyaWF0aW9uLmRlY29JZCA9IHBhcnNlRmxvYXQocGFydHNbaV0uZGVjb05vZGUuaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJ0VmFyaWF0aW9uLmJyYW5kSWQgPSBwYXJ0c1tpXS5kZWNvTm9kZS5icmFuZElkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJ0VmFyaWF0aW9uLmdhbWVPYmplY3ROYW1lID0gcGFydHNbaV0uZGVjb05vZGUuZ2FtZU9iamVjdE5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRWYXJpYXRpb24ubWF0ZXJpYWwgPSBhd2FpdCBBc3NldFV0aWxzLkNyZWF0ZU1hdGVyaWFsRnJvbUFzc2V0KHBhcnRTZXR0aW5ncyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBhcnRzW2ldLnZhcmlhdGlvbiA9IHBhcnRWYXJpYXRpb247XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2FwcGx5TWF0ZXJpYWxQYXJ0KG9iaiwgcGFydFZhcmlhdGlvbiwgcGFydHNbaV0ubm9kZSwgdXNlUGJyKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBsb2FkVmFyaWF0aW9uKG9iajogVEhSRUUuT2JqZWN0M0QsIHBhcnRzOiBhbnlbXSwgdXNlUGJyOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBsZW46IG51bWJlciA9IHBhcnRzLmxlbmd0aDtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdmFyaWF0aW9uczogRGVjb05vZGVbXSA9IHBhcnRzW2ldLnZhcmlhdGlvbnM7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXZhcmlhdGlvbnMgfHwgdmFyaWF0aW9ucy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fZ2V0TGFzdEtub3duVmFyaWF0aW9ucyhwYXJ0c1tpXS5ub2RlSWQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzW2ldLnZhcmlhdGlvbnMgPSB0aGlzLl9nZXRMYXN0S25vd25WYXJpYXRpb25zKHBhcnRzW2ldLm5vZGVJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2FwcGx5VmFyaWF0aW9ucyhvYmosIHBhcnRzW2ldLCB1c2VQYnIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsYXN0S25vd25WYXJpYXRpb25zOiBWYXJpYXRpb25bXSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB2YXJpYXRpb25zLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFyaWF0aW9uU2V0dGluZ3M6IFZhcmlhdGlvblNldHRpbmdzID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgVmFyaWF0aW9uVXRpbHMuTG9hZFZhcmlhdGlvbih0aGlzLmFzc2V0UGF0aCwgdmFyaWF0aW9uc1tqXS5nYW1lT2JqZWN0TmFtZSB8fCBwYXJ0c1tpXS5kZWNvSWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1ZhcmlhdGlvbjogVmFyaWF0aW9uID0gbmV3IFZhcmlhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld1ZhcmlhdGlvbi5kZWNvSWQgPSBwYXJzZUZsb2F0KHZhcmlhdGlvbnNbal0uaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld1ZhcmlhdGlvbi5icmFuZElkID0gdmFyaWF0aW9uc1tqXS5icmFuZElkO1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld1ZhcmlhdGlvbi5nYW1lT2JqZWN0TmFtZSA9IHZhcmlhdGlvbnNbal0uZ2FtZU9iamVjdE5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV3VmFyaWF0aW9uLnN1cHBsaWVyQXJ0aWNsZU5yID0gKHZhcmlhdGlvbnNbal0gYXMgYW55KS5zdXBwbGllckFydGljbGVOcjtcclxuICAgICAgICAgICAgICAgICAgICBuZXdWYXJpYXRpb24ubWF0ZXJpYWxJZCA9ICh2YXJpYXRpb25zW2pdIGFzIGFueSkubWF0ZXJpYWxJZDtcclxuICAgICAgICAgICAgICAgICAgICBuZXdWYXJpYXRpb24ubWF0ZXJpYWwgPSBhd2FpdCBBc3NldFV0aWxzLkNyZWF0ZU1hdGVyaWFsRnJvbUFzc2V0KHZhcmlhdGlvblNldHRpbmdzKTtcclxuICAgICAgICAgICAgICAgICAgICBsYXN0S25vd25WYXJpYXRpb25zLnB1c2gobmV3VmFyaWF0aW9uKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuX3NldExhc3RLbm93blZhcmlhdGlvbnMocGFydHNbaV0ubm9kZUlkLCBsYXN0S25vd25WYXJpYXRpb25zKTtcclxuICAgICAgICAgICAgICAgIHBhcnRzW2ldLnZhcmlhdGlvbnMgPSBsYXN0S25vd25WYXJpYXRpb25zO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fYXBwbHlWYXJpYXRpb25zKG9iaiwgcGFydHNbaV0sIHVzZVBicik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2dldENoaWxkcmVuRmlsdGVyQnlQcm9wKG9iajogVEhSRUUuT2JqZWN0M0QsIHVzZXJEYXRhT2JqZWN0UHJvcDogc3RyaW5nLCBwcm9wOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBUSFJFRS5PYmplY3QzRFtdIHtcclxuICAgICAgICByZXR1cm4gb2JqLmNoaWxkcmVuLmZpbHRlcigoY2hpbGQpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIGNoaWxkLnVzZXJEYXRhICYmXHJcbiAgICAgICAgICAgICAgICBjaGlsZC51c2VyRGF0YS5oYXNPd25Qcm9wZXJ0eSh1c2VyRGF0YU9iamVjdFByb3ApICYmXHJcbiAgICAgICAgICAgICAgICBjaGlsZC51c2VyRGF0YVt1c2VyRGF0YU9iamVjdFByb3BdLmhhc093blByb3BlcnR5KHByb3ApICYmXHJcbiAgICAgICAgICAgICAgICBjaGlsZC51c2VyRGF0YVt1c2VyRGF0YU9iamVjdFByb3BdW3Byb3BdID09PSB2YWx1ZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9hcHBseU1hdGVyaWFsUGFydChvYmo6IFRIUkVFLk9iamVjdDNELCBwYXJ0TWF0ZXJpYWw6IGFueSwgbm9kZUlkOiBhbnksIHVzZVBicjogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLl9nZXRDaGlsZHJlbkZpbHRlckJ5UHJvcChvYmosICdzZWxlY3Rpb24nLCAnbm9kZScsIG5vZGVJZCk7XHJcbiAgICAgICAgY29uc3QgbGVuOiBudW1iZXIgPSBjaGlsZHJlbi5sZW5ndGg7XHJcbiAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gY2hpbGRyZW5baV07XHJcbiAgICAgICAgICAgIGlmIChjaGlsZCAhPT0gbnVsbCAmJiBjaGlsZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBjaGlsZC50cmF2ZXJzZSgobWVzaCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChtZXNoIGluc3RhbmNlb2YgVEhSRUUuTWVzaCAmJiBwYXJ0TWF0ZXJpYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobWVzaC5tYXRlcmlhbCkpIHsgLy8gbXVsdGltYXRlcmlhbCBzdXBwb3J0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMCwgamxlbjogbnVtYmVyID0gbWVzaC5tYXRlcmlhbC5sZW5ndGg7IGogPCBqbGVuOyBqKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWVzaC5tYXRlcmlhbFtqXS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZignZml4ZWRfZnJhbWUnKSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzaC5tYXRlcmlhbFtqXSA9IHRoaXMuX3NldE1lc2hNYXRlcmlhbEZyb21WYXJpYXRpb24obWVzaC5tYXRlcmlhbFtqXS5uYW1lLCBwYXJ0TWF0ZXJpYWwsIHVzZVBicik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1lc2gubWF0ZXJpYWwubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2ZpeGVkX2ZyYW1lJykgIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzaC5tYXRlcmlhbCA9IHRoaXMuX3NldE1lc2hNYXRlcmlhbEZyb21WYXJpYXRpb24obWVzaC5tYXRlcmlhbC5uYW1lLCBwYXJ0TWF0ZXJpYWwsIHVzZVBicik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9hcHBseVZhcmlhdGlvbnMob2JqOiBUSFJFRS5PYmplY3QzRCwgcGFydDogYW55LCB1c2VQYnI6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5fZ2V0Q2hpbGRyZW5GaWx0ZXJCeVByb3Aob2JqLCAnc2VsZWN0aW9uJywgJ25vZGUnLCBwYXJ0Lm5vZGUpO1xyXG4gICAgICAgIGNvbnN0IGxlbjogbnVtYmVyID0gY2hpbGRyZW4ubGVuZ3RoO1xyXG4gICAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBjaGlsZCA9IGNoaWxkcmVuW2ldO1xyXG4gICAgICAgICAgICBpZiAoY2hpbGQgIT09IG51bGwgJiYgY2hpbGQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgY2hpbGQudHJhdmVyc2UoKG1lc2gpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobWVzaCBpbnN0YW5jZW9mIFRIUkVFLk1lc2ggJiYgcGFydC52YXJpYXRpb25zICYmIHBhcnQudmFyaWF0aW9ucy5sZW5ndGggPiAwICYmIG1lc2gubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2NfJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBwYXJ0LnZhcmlhdGlvbnMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhcmlhdGlvbjogVmFyaWF0aW9uID0gcGFydC52YXJpYXRpb25zW2pdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhdGlvbi5tYXRlcmlhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGVyaWFsVG9TZWFyY2g6IHN0cmluZyA9ICEhdmFyaWF0aW9uLm1hdGVyaWFsSWQgPyB2YXJpYXRpb24ubWF0ZXJpYWxJZC50b0xvd2VyQ2FzZSgpIDogJ2RlZmF1bHQnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG1lc2gubWF0ZXJpYWwpKSB7IC8vIG11bHRpbWF0ZXJpYWwgc3VwcG9ydFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBtID0gMCwgbWxlbjogbnVtYmVyID0gbWVzaC5tYXRlcmlhbC5sZW5ndGg7IG0gPCBtbGVuOyBtKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZXNoLm1hdGVyaWFsW21dLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKG1hdGVyaWFsVG9TZWFyY2gpICE9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc2gubWF0ZXJpYWxbbV0gPSB0aGlzLl9zZXRNZXNoTWF0ZXJpYWxGcm9tVmFyaWF0aW9uKG1lc2gubWF0ZXJpYWxbbV0ubmFtZSwgdmFyaWF0aW9uLCB1c2VQYnIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1lc2gubWF0ZXJpYWwubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YobWF0ZXJpYWxUb1NlYXJjaCkgIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNoLm1hdGVyaWFsID0gdGhpcy5fc2V0TWVzaE1hdGVyaWFsRnJvbVZhcmlhdGlvbihtZXNoLm1hdGVyaWFsLm5hbWUsIHZhcmlhdGlvbiwgdXNlUGJyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3NldE1lc2hNYXRlcmlhbEZyb21WYXJpYXRpb24obmFtZTogc3RyaW5nLCB2YXJpYXRpb246IFZhcmlhdGlvbiwgdXNlUGJyOiBib29sZWFuID0gZmFsc2UpOiBUSFJFRS5NYXRlcmlhbCB7XHJcbiAgICAgICAgaWYgKHZhcmlhdGlvbi5tYXRlcmlhbC50ZXh0dXJlKSB7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvbi5tYXRlcmlhbC50ZXh0dXJlLm5lZWRzVXBkYXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdmFyaWF0aW9uLm1hdGVyaWFsLnRleHR1cmUubWFwcGluZyA9IFRIUkVFLkVxdWlyZWN0YW5ndWxhclJlZmxlY3Rpb25NYXBwaW5nO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXVzZVBicikge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdNYXRlcmlhbDogVEhSRUUuTWVzaFBob25nTWF0ZXJpYWwgPSBuZXcgVEhSRUUuTWVzaFBob25nTWF0ZXJpYWwoe1xyXG4gICAgICAgICAgICAgICAgbmFtZTogbmFtZSxcclxuICAgICAgICAgICAgICAgIHNoaW5pbmVzczogdmFyaWF0aW9uLm1hdGVyaWFsLnNoaW5pbmVzcyxcclxuICAgICAgICAgICAgICAgIHNwZWN1bGFyOiB2YXJpYXRpb24ubWF0ZXJpYWwuc3BlY3VsYXIsXHJcbiAgICAgICAgICAgICAgICBtYXA6IHZhcmlhdGlvbi5tYXRlcmlhbC50ZXh0dXJlLFxyXG4gICAgICAgICAgICAgICAgbm9ybWFsTWFwOiB2YXJpYXRpb24ubWF0ZXJpYWwubm9ybWFsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBuZXdNYXRlcmlhbC5jb2xvci5zZXRSR0IoMC44LCAwLjgsIDAuOCk7XHJcbiAgICAgICAgICAgIG5ld01hdGVyaWFsLm5lZWRzVXBkYXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgcmV0dXJuIG5ld01hdGVyaWFsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodmFyaWF0aW9uLm1hdGVyaWFsLnNoZWVuQ29sb3IgfHwgdmFyaWF0aW9uLm1hdGVyaWFsLnJlZmxlY3Rpdml0eSkge1xyXG4gICAgICAgICAgICBjb25zdCBwYXJhbXM6IFRIUkVFLk1lc2hQaHlzaWNhbE1hdGVyaWFsUGFyYW1ldGVycyA9IHtcclxuICAgICAgICAgICAgICAgIC8vIHNpZGU6IG1hdGVyaWFsLnNpZGUgPyBtYXRlcmlhbC5zaWRlIDogRnJvbnRTaWRlLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogbmFtZSxcclxuICAgICAgICAgICAgICAgIHJvdWdobmVzczogdmFyaWF0aW9uLm1hdGVyaWFsLnJvdWdobmVzc1ZhbHVlID8gdmFyaWF0aW9uLm1hdGVyaWFsLnJvdWdobmVzc1ZhbHVlIDogMSxcclxuICAgICAgICAgICAgICAgIG1ldGFsbmVzczogdmFyaWF0aW9uLm1hdGVyaWFsLm1ldGFsbmVzc1ZhbHVlID8gdmFyaWF0aW9uLm1hdGVyaWFsLm1ldGFsbmVzc1ZhbHVlIDogMCxcclxuICAgICAgICAgICAgICAgIGVudk1hcEludGVuc2l0eTogdmFyaWF0aW9uLm1hdGVyaWFsLmVudk1hcEludGVuc2l0eSA/IHZhcmlhdGlvbi5tYXRlcmlhbC5lbnZNYXBJbnRlbnNpdHkgOiAwLjAxLFxyXG4gICAgICAgICAgICAgICAgY2xlYXJjb2F0TWFwOiB2YXJpYXRpb24ubWF0ZXJpYWwuY2xlYXJjb2F0TWFwID8gdmFyaWF0aW9uLm1hdGVyaWFsLmNsZWFyY29hdE1hcCA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICBjbGVhcmNvYXRSb3VnaG5lc3NNYXA6IHZhcmlhdGlvbi5tYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3NNYXAgPyB2YXJpYXRpb24ubWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzTWFwIDogbnVsbCxcclxuICAgICAgICAgICAgICAgIC8vIHdpcmVmcmFtZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIC8vIG9wYWNpdHk6IDAuMyxcclxuICAgICAgICAgICAgICAgIC8vIHRyYW5zcGFyZW50OiB0cnVlLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBpZiAodmFyaWF0aW9uLm1hdGVyaWFsLmRpc3BsYWNlbWVudFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMuZGlzcGxhY2VtZW50U2NhbGUgPSB2YXJpYXRpb24ubWF0ZXJpYWwuZGlzcGxhY2VtZW50VmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHZhcmlhdGlvbi5tYXRlcmlhbC5zaGVlbkNvbG9yKSB7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMuc2hlZW4gPSB2YXJpYXRpb24ubWF0ZXJpYWwuc2hlZW5Db2xvcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodmFyaWF0aW9uLm1hdGVyaWFsLm9wYWNpdHkpIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcy5vcGFjaXR5ID0gdmFyaWF0aW9uLm1hdGVyaWFsLm9wYWNpdHk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHZhcmlhdGlvbi5tYXRlcmlhbC50cmFuc3BhcmVudCkge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLnRyYW5zcGFyZW50ID0gdmFyaWF0aW9uLm1hdGVyaWFsLnRyYW5zcGFyZW50O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh2YXJpYXRpb24ubWF0ZXJpYWwuZW1pc3NpdmVWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLmVtaXNzaXZlID0gdmFyaWF0aW9uLm1hdGVyaWFsLmVtaXNzaXZlVmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHZhcmlhdGlvbi5tYXRlcmlhbC5lbWlzc2l2ZUludGVuc2l0eVZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMuZW1pc3NpdmVJbnRlbnNpdHkgPSB2YXJpYXRpb24ubWF0ZXJpYWwuZW1pc3NpdmVJbnRlbnNpdHlWYWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodmFyaWF0aW9uLm1hdGVyaWFsLnRleHR1cmUpIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcy5tYXAgPSB2YXJpYXRpb24ubWF0ZXJpYWwudGV4dHVyZTtcclxuICAgICAgICAgICAgICAgIHBhcmFtcy5tYXAubmVlZHNVcGRhdGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh2YXJpYXRpb24ubWF0ZXJpYWwuYW8pIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcy5hb01hcCA9IHZhcmlhdGlvbi5tYXRlcmlhbC5hbztcclxuICAgICAgICAgICAgICAgIHBhcmFtcy5hb01hcC5uZWVkc1VwZGF0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHZhcmlhdGlvbi5tYXRlcmlhbC5yb3VnaG5lc3MpIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcy5yb3VnaG5lc3NNYXAgPSB2YXJpYXRpb24ubWF0ZXJpYWwucm91Z2huZXNzO1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLnJvdWdobmVzc01hcC5uZWVkc1VwZGF0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAvLyB2YXJpYXRpb24ubWF0ZXJpYWwucm91Z2huZXNzLm1hZ0ZpbHRlciA9IE5lYXJlc3RGaWx0ZXI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHZhcmlhdGlvbi5tYXRlcmlhbC5tZXRhbG5lc3MpIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcy5tZXRhbG5lc3NNYXAgPSB2YXJpYXRpb24ubWF0ZXJpYWwubWV0YWxuZXNzO1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLm1ldGFsbmVzc01hcC5uZWVkc1VwZGF0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHZhcmlhdGlvbi5tYXRlcmlhbC5ub3JtYWwpIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcy5ub3JtYWxNYXAgPSB2YXJpYXRpb24ubWF0ZXJpYWwubm9ybWFsO1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLm5vcm1hbE1hcC5uZWVkc1VwZGF0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHZhcmlhdGlvbi5tYXRlcmlhbC5kaXNwbGFjZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcy5kaXNwbGFjZW1lbnRNYXAgPSB2YXJpYXRpb24ubWF0ZXJpYWwuZGlzcGxhY2VtZW50O1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLmRpc3BsYWNlbWVudE1hcC5uZWVkc1VwZGF0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHZhcmlhdGlvbi5tYXRlcmlhbC5lbWlzc2l2ZSkge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLmVtaXNzaXZlTWFwID0gdmFyaWF0aW9uLm1hdGVyaWFsLmVtaXNzaXZlO1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLmVtaXNzaXZlTWFwLm5lZWRzVXBkYXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodmFyaWF0aW9uLm1hdGVyaWFsLmVudk1hcCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHZhcmlhdGlvbi5tYXRlcmlhbC5lbnZNYXBJbnRlbnNpdHkgIT0gbnVsbCB8fCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmVudk1hcCA9IHZhcmlhdGlvbi5tYXRlcmlhbC5lbnZNYXA7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmVudk1hcC5uZWVkc1VwZGF0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyaWF0aW9uLm1hdGVyaWFsLmVudk1hcC5tYXBwaW5nID0gVEhSRUUuRXF1aXJlY3Rhbmd1bGFyUmVmbGVjdGlvbk1hcHBpbmc7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyaWF0aW9uLm1hdGVyaWFsLmVudk1hcC5taW5GaWx0ZXIgPSBUSFJFRS5OZWFyZXN0RmlsdGVyO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhcmlhdGlvbi5tYXRlcmlhbC5lbnZNYXAubWFnRmlsdGVyID0gVEhSRUUuTmVhcmVzdEZpbHRlcjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodmFyaWF0aW9uLm1hdGVyaWFsLnJlZmxlY3Rpdml0eSkge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLnJlZmxlY3Rpdml0eSA9IHZhcmlhdGlvbi5tYXRlcmlhbC5yZWZsZWN0aXZpdHk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHZhcmlhdGlvbi5tYXRlcmlhbC5zaWRlKSB7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMuc2lkZSA9IHZhcmlhdGlvbi5tYXRlcmlhbC5zaWRlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25zdCBuZXdNYXRlcmlhbDogVEhSRUUuTWVzaFBoeXNpY2FsTWF0ZXJpYWwgPSBuZXcgVEhSRUUuTWVzaFBoeXNpY2FsTWF0ZXJpYWwocGFyYW1zKTtcclxuICAgICAgICAgICAgbmV3TWF0ZXJpYWwuY29sb3Iuc2V0UkdCKDEsIDEsIDEpO1xyXG4gICAgICAgICAgICBuZXdNYXRlcmlhbC5uZWVkc1VwZGF0ZSA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICBpZiAodmFyaWF0aW9uLm1hdGVyaWFsLnRyYW5zbWlzc2lvbikge1xyXG4gICAgICAgICAgICAgICAgbmV3TWF0ZXJpYWwudHJhbnNtaXNzaW9uID0gdmFyaWF0aW9uLm1hdGVyaWFsLnRyYW5zbWlzc2lvbjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbmV3TWF0ZXJpYWw7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgcGFyYW1zOiBUSFJFRS5NZXNoU3RhbmRhcmRNYXRlcmlhbFBhcmFtZXRlcnMgPSB7XHJcbiAgICAgICAgICAgICAgICAvLyBzaWRlOiBtYXRlcmlhbC5zaWRlID8gbWF0ZXJpYWwuc2lkZSA6IEZyb250U2lkZSxcclxuICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUsXHJcbiAgICAgICAgICAgICAgICByb3VnaG5lc3M6IHZhcmlhdGlvbi5tYXRlcmlhbC5yb3VnaG5lc3NWYWx1ZSA/IHZhcmlhdGlvbi5tYXRlcmlhbC5yb3VnaG5lc3NWYWx1ZSA6IDEsXHJcbiAgICAgICAgICAgICAgICBtZXRhbG5lc3M6IHZhcmlhdGlvbi5tYXRlcmlhbC5tZXRhbG5lc3NWYWx1ZSA/IHZhcmlhdGlvbi5tYXRlcmlhbC5tZXRhbG5lc3NWYWx1ZSA6IDAsXHJcbiAgICAgICAgICAgICAgICBlbnZNYXBJbnRlbnNpdHk6IHZhcmlhdGlvbi5tYXRlcmlhbC5lbnZNYXBJbnRlbnNpdHkgPyB2YXJpYXRpb24ubWF0ZXJpYWwuZW52TWFwSW50ZW5zaXR5IDogMC4wMVxyXG4gICAgICAgICAgICAgICAgLy8gd2lyZWZyYW1lOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgLy8gb3BhY2l0eTogMC4zLFxyXG4gICAgICAgICAgICAgICAgLy8gdHJhbnNwYXJlbnQ6IHRydWUsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGlmICh2YXJpYXRpb24ubWF0ZXJpYWwuZGlzcGxhY2VtZW50VmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcy5kaXNwbGFjZW1lbnRTY2FsZSA9IHZhcmlhdGlvbi5tYXRlcmlhbC5kaXNwbGFjZW1lbnRWYWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodmFyaWF0aW9uLm1hdGVyaWFsLm9wYWNpdHkpIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcy5vcGFjaXR5ID0gdmFyaWF0aW9uLm1hdGVyaWFsLm9wYWNpdHk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHZhcmlhdGlvbi5tYXRlcmlhbC50cmFuc3BhcmVudCkge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLnRyYW5zcGFyZW50ID0gdmFyaWF0aW9uLm1hdGVyaWFsLnRyYW5zcGFyZW50O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh2YXJpYXRpb24ubWF0ZXJpYWwuZW1pc3NpdmVWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLmVtaXNzaXZlID0gdmFyaWF0aW9uLm1hdGVyaWFsLmVtaXNzaXZlVmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHZhcmlhdGlvbi5tYXRlcmlhbC5lbWlzc2l2ZUludGVuc2l0eVZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMuZW1pc3NpdmVJbnRlbnNpdHkgPSB2YXJpYXRpb24ubWF0ZXJpYWwuZW1pc3NpdmVJbnRlbnNpdHlWYWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodmFyaWF0aW9uLm1hdGVyaWFsLnRleHR1cmUpIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcy5tYXAgPSB2YXJpYXRpb24ubWF0ZXJpYWwudGV4dHVyZTtcclxuICAgICAgICAgICAgICAgIHBhcmFtcy5tYXAubmVlZHNVcGRhdGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh2YXJpYXRpb24ubWF0ZXJpYWwuYW8pIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcy5hb01hcCA9IHZhcmlhdGlvbi5tYXRlcmlhbC5hbztcclxuICAgICAgICAgICAgICAgIHBhcmFtcy5hb01hcC5uZWVkc1VwZGF0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHZhcmlhdGlvbi5tYXRlcmlhbC5yb3VnaG5lc3MpIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcy5yb3VnaG5lc3NNYXAgPSB2YXJpYXRpb24ubWF0ZXJpYWwucm91Z2huZXNzO1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLnJvdWdobmVzc01hcC5uZWVkc1VwZGF0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAvLyB2YXJpYXRpb24ubWF0ZXJpYWwucm91Z2huZXNzLm1hZ0ZpbHRlciA9IE5lYXJlc3RGaWx0ZXI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHZhcmlhdGlvbi5tYXRlcmlhbC5tZXRhbG5lc3MpIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcy5tZXRhbG5lc3NNYXAgPSB2YXJpYXRpb24ubWF0ZXJpYWwubWV0YWxuZXNzO1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLm1ldGFsbmVzc01hcC5uZWVkc1VwZGF0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHZhcmlhdGlvbi5tYXRlcmlhbC5ub3JtYWwpIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcy5ub3JtYWxNYXAgPSB2YXJpYXRpb24ubWF0ZXJpYWwubm9ybWFsO1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLm5vcm1hbE1hcC5uZWVkc1VwZGF0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHZhcmlhdGlvbi5tYXRlcmlhbC5kaXNwbGFjZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcy5kaXNwbGFjZW1lbnRNYXAgPSB2YXJpYXRpb24ubWF0ZXJpYWwuZGlzcGxhY2VtZW50O1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLmRpc3BsYWNlbWVudE1hcC5uZWVkc1VwZGF0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHZhcmlhdGlvbi5tYXRlcmlhbC5lbWlzc2l2ZSkge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLmVtaXNzaXZlTWFwID0gdmFyaWF0aW9uLm1hdGVyaWFsLmVtaXNzaXZlO1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLmVtaXNzaXZlTWFwLm5lZWRzVXBkYXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodmFyaWF0aW9uLm1hdGVyaWFsLmVudk1hcCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHZhcmlhdGlvbi5tYXRlcmlhbC5lbnZNYXBJbnRlbnNpdHkgIT0gbnVsbCB8fCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmVudk1hcCA9IHZhcmlhdGlvbi5tYXRlcmlhbC5lbnZNYXA7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmVudk1hcC5uZWVkc1VwZGF0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyaWF0aW9uLm1hdGVyaWFsLmVudk1hcC5tYXBwaW5nID0gVEhSRUUuRXF1aXJlY3Rhbmd1bGFyUmVmbGVjdGlvbk1hcHBpbmc7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyaWF0aW9uLm1hdGVyaWFsLmVudk1hcC5taW5GaWx0ZXIgPSBUSFJFRS5OZWFyZXN0RmlsdGVyO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhcmlhdGlvbi5tYXRlcmlhbC5lbnZNYXAubWFnRmlsdGVyID0gVEhSRUUuTmVhcmVzdEZpbHRlcjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodmFyaWF0aW9uLm1hdGVyaWFsLnNpZGUpIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcy5zaWRlID0gdmFyaWF0aW9uLm1hdGVyaWFsLnNpZGU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnN0IG5ld01hdGVyaWFsOiBUSFJFRS5NZXNoU3RhbmRhcmRNYXRlcmlhbCA9IG5ldyBUSFJFRS5NZXNoU3RhbmRhcmRNYXRlcmlhbChwYXJhbXMpO1xyXG4gICAgICAgICAgICBuZXdNYXRlcmlhbC5jb2xvci5zZXRSR0IoMSwgMSwgMSk7XHJcbiAgICAgICAgICAgIG5ld01hdGVyaWFsLm5lZWRzVXBkYXRlID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiBuZXdNYXRlcmlhbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfc2V0TGFzdEtub3duVmFyaWF0aW9ucyhpZDogc3RyaW5nLCB2YXJpYXRpb246IFZhcmlhdGlvbltdKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fbGFzdEtub3duVmFyaWF0aW9ucy5zZXQoaWQsIHZhcmlhdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfZ2V0TGFzdEtub3duVmFyaWF0aW9ucyhpZDogc3RyaW5nKTogVmFyaWF0aW9uW10ge1xyXG4gICAgICAgIGlmICh0aGlzLl9sYXN0S25vd25WYXJpYXRpb25zLmhhcyhpZCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2xhc3RLbm93blZhcmlhdGlvbnMuZ2V0KGlkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
414
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWF0aW9uLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9oZWxwZXIvdmFyaWF0aW9uLWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDBEQUEwRCxDQUFDO0FBQ3RGLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUVoRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDN0MsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRXhELE1BQU0sT0FBTyxlQUFlO0lBQTVCO1FBR1ksZ0JBQVcsR0FBd0IsRUFBRSxDQUFDO1FBRXRDLHlCQUFvQixHQUE2QixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBMFp2RSxDQUFDO0lBeFpVLFVBQVU7UUFDYixNQUFNLFlBQVksR0FBa0IsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNuRixZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDaEMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO2dCQUM3QixJQUFJO29CQUNBLElBQUksU0FBUyxDQUFDLFFBQVEsRUFBRTt3QkFDcEIsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRTs0QkFDNUIsU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7eUJBQ3hDO3dCQUNELElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7NEJBQzNCLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFD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QixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUM1QztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7Q0FFSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGVjb05vZGVUeXBlfSBmcm9tIFwiQGNvbGlqbml0L2NvbmZpZ3VyYXRvcmFwaS9idWlsZC9lbnVtL2RlY28tbm9kZS10eXBlLmVudW1cIjtcclxuaW1wb3J0IHtWYXJpYXRpb25TZXR0aW5nc30gZnJvbSBcIi4uL21vZGVsL3ZhcmlhdGlvbi1zZXR0aW5nc1wiO1xyXG5pbXBvcnQge0Fzc2V0VXRpbHN9IGZyb20gXCIuLi91dGlscy9hc3NldC51dGlsc1wiO1xyXG5pbXBvcnQge0RlY29Ob2RlfSBmcm9tIFwiQGNvbGlqbml0L2NvbmZpZ3VyYXRvcmFwaS9idWlsZC9tb2RlbC9kZWNvLW5vZGVcIjtcclxuaW1wb3J0IHtWYXJpYXRpb259IGZyb20gXCIuLi9tb2RlbC92YXJpYXRpb25cIjtcclxuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSBcInRocmVlXCI7XHJcbmltcG9ydCB7VmFyaWF0aW9uVXRpbHN9IGZyb20gXCIuLi91dGlscy92YXJpYXRpb24tdXRpbHNcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBWYXJpYXRpb25IZWxwZXIge1xyXG5cclxuICAgIHB1YmxpYyBhc3NldFBhdGg6IHN0cmluZztcclxuICAgIHByaXZhdGUgX3ZhcmlhdGlvbnM6IFZhcmlhdGlvblNldHRpbmdzW10gPSBbXTtcclxuXHJcbiAgICBwcml2YXRlIF9sYXN0S25vd25WYXJpYXRpb25zOiBNYXA8c3RyaW5nLCBWYXJpYXRpb25bXT4gPSBuZXcgTWFwKCk7XHJcblxyXG4gICAgcHVibGljIGNsZWFyQ2FjaGUoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgdmFyaWF0aW9uTWFwOiBWYXJpYXRpb25bXVtdID0gQXJyYXkuZnJvbSh0aGlzLl9sYXN0S25vd25WYXJpYXRpb25zLnZhbHVlcygpKTtcclxuICAgICAgICB2YXJpYXRpb25NYXAuZm9yRWFjaCgodmFyaWF0aW9ucykgPT4ge1xyXG4gICAgICAgICAgICB2YXJpYXRpb25zLmZvckVhY2goKHZhcmlhdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodmFyaWF0aW9uLm1hdGVyaWFsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YXJpYXRpb24ubWF0ZXJpYWwudGV4dHVyZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWF0aW9uLm1hdGVyaWFsLnRleHR1cmUuZGlzcG9zZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YXJpYXRpb24ubWF0ZXJpYWwubm9ybWFsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYXRpb24ubWF0ZXJpYWwubm9ybWFsLmRpc3Bvc2UoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFyaWF0aW9uLm1hdGVyaWFsLm1ldGFsbmVzcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWF0aW9uLm1hdGVyaWFsLm1ldGFsbmVzcy5kaXNwb3NlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhdGlvbi5tYXRlcmlhbC5yb3VnaG5lc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhdGlvbi5tYXRlcmlhbC5yb3VnaG5lc3MuZGlzcG9zZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YXJpYXRpb24ubWF0ZXJpYWwuYW8pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhdGlvbi5tYXRlcmlhbC5hby5kaXNwb3NlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIFZhcmlhdGlvblV0aWxzLkNsZWFyQ2FjaGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgbG9hZFBhcnQob2JqOiBUSFJFRS5PYmplY3QzRCwgcGFydHM6IGFueVtdLCB1c2VQYnI6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlbjogbnVtYmVyID0gcGFydHMubGVuZ3RoO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocGFydHNbaV0uZGVjb05vZGUgJiYgcGFydHNbaV0uZGVjb05vZGUuZ2FtZU9iamVjdE5hbWUgJiYgcGFydHNbaV0uZGVjb05vZGUudHlwZSA9PT0gRGVjb05vZGVUeXBlLlBhcnQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJ0U2V0dGluZ3M6IFZhcmlhdGlvblNldHRpbmdzID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgVmFyaWF0aW9uVXRpbHMuTG9hZFZhcmlhdGlvbih0aGlzLmFzc2V0UGF0aCwgcGFydHNbaV0uZGVjb05vZGUuZ2FtZU9iamVjdE5hbWUgfHwgcGFydHNbaV0uZGVjb0lkKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocGFydFNldHRpbmdzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnRWYXJpYXRpb246IFZhcmlhdGlvbiA9IG5ldyBWYXJpYXRpb24oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFydFZhcmlhdGlvbi5kZWNvSWQgPSBwYXJzZUZsb2F0KHBhcnRzW2ldLmRlY29Ob2RlLmlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFydFZhcmlhdGlvbi5icmFuZElkID0gcGFydHNbaV0uZGVjb05vZGUuYnJhbmRJZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFydFZhcmlhdGlvbi5nYW1lT2JqZWN0TmFtZSA9IHBhcnRzW2ldLmRlY29Ob2RlLmdhbWVPYmplY3ROYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJ0VmFyaWF0aW9uLm1hdGVyaWFsID0gYXdhaXQgQXNzZXRVdGlscy5DcmVhdGVNYXRlcmlhbEZyb21Bc3NldChwYXJ0U2V0dGluZ3MpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBwYXJ0c1tpXS52YXJpYXRpb24gPSBwYXJ0VmFyaWF0aW9uO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9hcHBseU1hdGVyaWFsUGFydChvYmosIHBhcnRWYXJpYXRpb24sIHBhcnRzW2ldLm5vZGUsIHVzZVBicik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgbG9hZFZhcmlhdGlvbihvYmo6IFRIUkVFLk9iamVjdDNELCBwYXJ0czogYW55W10sIHVzZVBicjogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgbGVuOiBudW1iZXIgPSBwYXJ0cy5sZW5ndGg7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHZhcmlhdGlvbnM6IERlY29Ob2RlW10gPSBwYXJ0c1tpXS52YXJpYXRpb25zO1xyXG4gICAgICAgICAgICAgICAgaWYgKCF2YXJpYXRpb25zIHx8IHZhcmlhdGlvbnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2dldExhc3RLbm93blZhcmlhdGlvbnMocGFydHNbaV0ubm9kZUlkKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJ0c1tpXS52YXJpYXRpb25zID0gdGhpcy5fZ2V0TGFzdEtub3duVmFyaWF0aW9ucyhwYXJ0c1tpXS5ub2RlSWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9hcHBseVZhcmlhdGlvbnMob2JqLCBwYXJ0c1tpXSwgdXNlUGJyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3QgbGFzdEtub3duVmFyaWF0aW9uczogVmFyaWF0aW9uW10gPSBbXTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHZhcmlhdGlvblByb21pc2U6IFByb21pc2U8YW55PltdID0gW107XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHZhcmlhdGlvbnMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXJpYXRpb25Qcm9taXNlLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZFRoZVZhcmlhdGlvbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhdGlvbnNbal0uZ2FtZU9iamVjdE5hbWUgfHwgcGFydHNbaV0uZGVjb0lkKS50aGVuKGFzeW5jICh2YXJpYXRpb25TZXR0aW5nczogVmFyaWF0aW9uU2V0dGluZ3MpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1ZhcmlhdGlvbjogVmFyaWF0aW9uID0gbmV3IFZhcmlhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3VmFyaWF0aW9uLmRlY29JZCA9IHBhcnNlRmxvYXQodmFyaWF0aW9uc1tqXS5pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdWYXJpYXRpb24uYnJhbmRJZCA9IHZhcmlhdGlvbnNbal0uYnJhbmRJZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1ZhcmlhdGlvbi5vcHRpb25UZXh0ID0gKHZhcmlhdGlvbnNbal0gYXMgYW55KS5vcHRpb25UZXh0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3VmFyaWF0aW9uLmdhbWVPYmplY3ROYW1lID0gdmFyaWF0aW9uc1tqXS5nYW1lT2JqZWN0TmFtZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1ZhcmlhdGlvbi5zdXBwbGllckFydGljbGVOciA9ICh2YXJpYXRpb25zW2pdIGFzIGFueSkuc3VwcGxpZXJBcnRpY2xlTnI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdWYXJpYXRpb24ubWF0ZXJpYWxJZCA9ICh2YXJpYXRpb25zW2pdIGFzIGFueSkubWF0ZXJpYWxJZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1ZhcmlhdGlvbi5tYXRlcmlhbCA9IGF3YWl0IEFzc2V0VXRpbHMuQ3JlYXRlTWF0ZXJpYWxGcm9tQXNzZXQodmFyaWF0aW9uU2V0dGluZ3MpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEtub3duVmFyaWF0aW9ucy5wdXNoKG5ld1ZhcmlhdGlvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHZhcmlhdGlvblByb21pc2UpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0TGFzdEtub3duVmFyaWF0aW9ucyhgJHtwYXJ0c1tpXS5ub2RlSWR9XyR7cGFydHNbaV0ubm9kZX1gLCBsYXN0S25vd25WYXJpYXRpb25zKTtcclxuICAgICAgICAgICAgICAgIHBhcnRzW2ldLnZhcmlhdGlvbnMgPSBsYXN0S25vd25WYXJpYXRpb25zO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fYXBwbHlWYXJpYXRpb25zKG9iaiwgcGFydHNbaV0sIHVzZVBicik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQoaWQ6IHN0cmluZyk6IFZhcmlhdGlvblNldHRpbmdzIHtcclxuICAgICAgICBjb25zdCBsZW46IG51bWJlciA9IHRoaXMuX3ZhcmlhdGlvbnMubGVuZ3RoO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX3ZhcmlhdGlvbnNbaV0uaWQgJiYgdGhpcy5fdmFyaWF0aW9uc1tpXS5pZCA9PT0gaWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl92YXJpYXRpb25zW2ldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXQodmFyaWF0aW9uczogVmFyaWF0aW9uU2V0dGluZ3MpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBpZHg6IG51bWJlciA9IHRoaXMuX3ZhcmlhdGlvbnMuZmluZEluZGV4KHYgPT4gdi5pZCA9PT0gdmFyaWF0aW9ucy5pZCk7XHJcbiAgICAgICAgaWYgKGlkeCA+IC0xKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3ZhcmlhdGlvbnNbaWR4XSA9IHZhcmlhdGlvbnM7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fdmFyaWF0aW9ucy5wdXNoKHZhcmlhdGlvbnMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcHJlbG9hZFZhcmlhdGlvbnMoc2NoZW1hOiBzdHJpbmcsIGZpbGVOYW1lczogc3RyaW5nW10pOiB2b2lkIHtcclxuICAgICAgICBmaWxlTmFtZXMuZm9yRWFjaCgoZmlsZU5hbWU6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZmlsZU5hbWUgJiYgIXRoaXMuZ2V0KGZpbGVOYW1lKSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc2V0dGluZ3MgPSBuZXcgVmFyaWF0aW9uU2V0dGluZ3MoKTtcclxuICAgICAgICAgICAgICAgIHNldHRpbmdzLmlkID0gZmlsZU5hbWU7XHJcbiAgICAgICAgICAgICAgICBzZXR0aW5ncy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3ZhcmlhdGlvbnMucHVzaChzZXR0aW5ncyk7XHJcbiAgICAgICAgICAgICAgICBsZXQgYXNzZXRQYXRoOiBzdHJpbmcgPSB0aGlzLmFzc2V0UGF0aDtcclxuICAgICAgICAgICAgICAgIGlmICghYXNzZXRQYXRoLmVuZHNXaXRoKCcvJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBhc3NldFBhdGggKz0gJy8nO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgVmFyaWF0aW9uVXRpbHMuTG9hZFZhcmlhdGlvbihhc3NldFBhdGgsIGZpbGVOYW1lKS50aGVuKCh2YXJpYXRpb25TZXR0aW5nczogVmFyaWF0aW9uU2V0dGluZ3MpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MubG9hZGVkLm5leHQodmFyaWF0aW9uU2V0dGluZ3MpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh2YXJpYXRpb25TZXR0aW5ncykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldCh2YXJpYXRpb25TZXR0aW5ncyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgbG9hZFRoZVZhcmlhdGlvbihmaWxlTmFtZTogc3RyaW5nKTogUHJvbWlzZTxWYXJpYXRpb25TZXR0aW5ncz4ge1xyXG4gICAgICAgIGlmICghZmlsZU5hbWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmdldChmaWxlTmFtZSkpIHtcclxuICAgICAgICAgICAgY29uc3Qgc2V0dGluZ3MgPSB0aGlzLmdldChmaWxlTmFtZSk7XHJcbiAgICAgICAgICAgIGlmIChzZXR0aW5ncy5sb2FkaW5nKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5fd2FpdEZvclZhcmlhdGlvblRvTG9hZChzZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHNldHRpbmdzO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF93YWl0Rm9yVmFyaWF0aW9uVG9Mb2FkKHNldHRpbmdzOiBWYXJpYXRpb25TZXR0aW5ncyk6IFByb21pc2U8VmFyaWF0aW9uU2V0dGluZ3M+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgIHNldHRpbmdzLmxvYWRlZC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKHZhbHVlKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfZ2V0Q2hpbGRyZW5GaWx0ZXJCeVByb3Aob2JqOiBUSFJFRS5PYmplY3QzRCwgdXNlckRhdGFPYmplY3RQcm9wOiBzdHJpbmcsIHByb3A6IHN0cmluZywgdmFsdWU6IGFueSk6IFRIUkVFLk9iamVjdDNEW10ge1xyXG4gICAgICAgIHJldHVybiBvYmouY2hpbGRyZW4uZmlsdGVyKChjaGlsZCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gY2hpbGQudXNlckRhdGEgJiZcclxuICAgICAgICAgICAgICAgIGNoaWxkLnVzZXJEYXRhLmhhc093blByb3BlcnR5KHVzZXJEYXRhT2JqZWN0UHJvcCkgJiZcclxuICAgICAgICAgICAgICAgIGNoaWxkLnVzZXJEYXRhW3VzZXJEYXRhT2JqZWN0UHJvcF0uaGFzT3duUHJvcGVydHkocHJvcCkgJiZcclxuICAgICAgICAgICAgICAgIGNoaWxkLnVzZXJEYXRhW3VzZXJEYXRhT2JqZWN0UHJvcF1bcHJvcF0gPT09IHZhbHVlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2FwcGx5TWF0ZXJpYWxQYXJ0KG9iajogVEhSRUUuT2JqZWN0M0QsIHBhcnRNYXRlcmlhbDogYW55LCBub2RlSWQ6IGFueSwgdXNlUGJyOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuX2dldENoaWxkcmVuRmlsdGVyQnlQcm9wKG9iaiwgJ3NlbGVjdGlvbicsICdub2RlJywgbm9kZUlkKTtcclxuICAgICAgICBjb25zdCBsZW46IG51bWJlciA9IGNoaWxkcmVuLmxlbmd0aDtcclxuICAgICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBjaGlsZHJlbltpXTtcclxuICAgICAgICAgICAgaWYgKGNoaWxkICE9PSBudWxsICYmIGNoaWxkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIGNoaWxkLnRyYXZlcnNlKChtZXNoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1lc2ggaW5zdGFuY2VvZiBUSFJFRS5NZXNoICYmIHBhcnRNYXRlcmlhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShtZXNoLm1hdGVyaWFsKSkgeyAvLyBtdWx0aW1hdGVyaWFsIHN1cHBvcnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwLCBqbGVuOiBudW1iZXIgPSBtZXNoLm1hdGVyaWFsLmxlbmd0aDsgaiA8IGpsZW47IGorKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZXNoLm1hdGVyaWFsW2pdLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdmaXhlZF9mcmFtZScpICE9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNoLm1hdGVyaWFsW2pdID0gdGhpcy5fc2V0TWVzaE1hdGVyaWFsRnJvbVZhcmlhdGlvbihtZXNoLm1hdGVyaWFsW2pdLm5hbWUsIHBhcnRNYXRlcmlhbCwgdXNlUGJyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWVzaC5tYXRlcmlhbC5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZignZml4ZWRfZnJhbWUnKSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNoLm1hdGVyaWFsID0gdGhpcy5fc2V0TWVzaE1hdGVyaWFsRnJvbVZhcmlhdGlvbihtZXNoLm1hdGVyaWFsLm5hbWUsIHBhcnRNYXRlcmlhbCwgdXNlUGJyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2FwcGx5VmFyaWF0aW9ucyhvYmo6IFRIUkVFLk9iamVjdDNELCBwYXJ0OiBhbnksIHVzZVBicjogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLl9nZXRDaGlsZHJlbkZpbHRlckJ5UHJvcChvYmosICdzZWxlY3Rpb24nLCAnbm9kZScsIHBhcnQubm9kZSk7XHJcbiAgICAgICAgY29uc3QgbGVuOiBudW1iZXIgPSBjaGlsZHJlbi5sZW5ndGg7XHJcbiAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gY2hpbGRyZW5baV07XHJcbiAgICAgICAgICAgIGlmIChjaGlsZCAhPT0gbnVsbCAmJiBjaGlsZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBjaGlsZC50cmF2ZXJzZSgobWVzaCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChtZXNoIGluc3RhbmNlb2YgVEhSRUUuTWVzaCAmJiBwYXJ0LnZhcmlhdGlvbnMgJiYgcGFydC52YXJpYXRpb25zLmxlbmd0aCA+IDAgJiYgbWVzaC5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZignY18nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHBhcnQudmFyaWF0aW9ucy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFyaWF0aW9uOiBWYXJpYXRpb24gPSBwYXJ0LnZhcmlhdGlvbnNbal07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFyaWF0aW9uLm1hdGVyaWFsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0ZXJpYWxUb1NlYXJjaDogc3RyaW5nID0gISF2YXJpYXRpb24ubWF0ZXJpYWxJZCA/IHZhcmlhdGlvbi5tYXRlcmlhbElkLnRvTG93ZXJDYXNlKCkgOiAnZGVmYXVsdCc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobWVzaC5tYXRlcmlhbCkpIHsgLy8gbXVsdGltYXRlcmlhbCBzdXBwb3J0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IG0gPSAwLCBtbGVuOiBudW1iZXIgPSBtZXNoLm1hdGVyaWFsLmxlbmd0aDsgbSA8IG1sZW47IG0rKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1lc2gubWF0ZXJpYWxbbV0ubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YobWF0ZXJpYWxUb1NlYXJjaCkgIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzaC5tYXRlcmlhbFttXSA9IHRoaXMuX3NldE1lc2hNYXRlcmlhbEZyb21WYXJpYXRpb24obWVzaC5tYXRlcmlhbFttXS5uYW1lLCB2YXJpYXRpb24sIHVzZVBicik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWVzaC5tYXRlcmlhbC5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihtYXRlcmlhbFRvU2VhcmNoKSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc2gubWF0ZXJpYWwgPSB0aGlzLl9zZXRNZXNoTWF0ZXJpYWxGcm9tVmFyaWF0aW9uKG1lc2gubWF0ZXJpYWwubmFtZSwgdmFyaWF0aW9uLCB1c2VQYnIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfc2V0TWVzaE1hdGVyaWFsRnJvbVZhcmlhdGlvbihuYW1lOiBzdHJpbmcsIHZhcmlhdGlvbjogVmFyaWF0aW9uLCB1c2VQYnI6IGJvb2xlYW4gPSBmYWxzZSk6IFRIUkVFLk1hdGVyaWFsIHtcclxuICAgICAgICBpZiAodmFyaWF0aW9uLm1hdGVyaWFsLnRleHR1cmUpIHtcclxuICAgICAgICAgICAgdmFyaWF0aW9uLm1hdGVyaWFsLnRleHR1cmUubmVlZHNVcGRhdGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB2YXJpYXRpb24ubWF0ZXJpYWwudGV4dHVyZS5tYXBwaW5nID0gVEhSRUUuRXF1aXJlY3Rhbmd1bGFyUmVmbGVjdGlvbk1hcHBpbmc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdXNlUGJyKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld01hdGVyaWFsOiBUSFJFRS5NZXNoUGhvbmdNYXRlcmlhbCA9IG5ldyBUSFJFRS5NZXNoUGhvbmdNYXRlcmlhbCh7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxyXG4gICAgICAgICAgICAgICAgc2hpbmluZXNzOiB2YXJpYXRpb24ubWF0ZXJpYWwuc2hpbmluZXNzLFxyXG4gICAgICAgICAgICAgICAgc3BlY3VsYXI6IHZhcmlhdGlvbi5tYXRlcmlhbC5zcGVjdWxhcixcclxuICAgICAgICAgICAgICAgIG1hcDogdmFyaWF0aW9uLm1hdGVyaWFsLnRleHR1cmUsXHJcbiAgICAgICAgICAgICAgICBub3JtYWxNYXA6IHZhcmlhdGlvbi5tYXRlcmlhbC5ub3JtYWxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIG5ld01hdGVyaWFsLmNvbG9yLnNldFJHQigwLjgsIDAuOCwgMC44KTtcclxuICAgICAgICAgICAgbmV3TWF0ZXJpYWwubmVlZHNVcGRhdGUgPSB0cnVlO1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3TWF0ZXJpYWw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh2YXJpYXRpb24ubWF0ZXJpYWwuc2hlZW5Db2xvciB8fCB2YXJpYXRpb24ubWF0ZXJpYWwucmVmbGVjdGl2aXR5KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtczogVEhSRUUuTWVzaFBoeXNpY2FsTWF0ZXJpYWxQYXJhbWV0ZXJzID0ge1xyXG4gICAgICAgICAgICAgICAgLy8gc2lkZTogbWF0ZXJpYWwuc2lkZSA/IG1hdGVyaWFsLnNpZGUgOiBGcm9udFNpZGUsXHJcbiAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxyXG4gICAgICAgICAgICAgICAgcm91Z2huZXNzOiB2YXJpYXRpb24ubWF0ZXJpYWwucm91Z2huZXNzVmFsdWUgPyB2YXJpYXRpb24ubWF0ZXJpYWwucm91Z2huZXNzVmFsdWUgOiAxLFxyXG4gICAgICAgICAgICAgICAgbWV0YWxuZXNzOiB2YXJpYXRpb24ubWF0ZXJpYWwubWV0YWxuZXNzVmFsdWUgPyB2YXJpYXRpb24ubWF0ZXJpYWwubWV0YWxuZXNzVmFsdWUgOiAwLFxyXG4gICAgICAgICAgICAgICAgZW52TWFwSW50ZW5zaXR5OiB2YXJpYXRpb24ubWF0ZXJpYWwuZW52TWFwSW50ZW5zaXR5ID8gdmFyaWF0aW9uLm1hdGVyaWFsLmVudk1hcEludGVuc2l0eSA6IDAuMDEsXHJcbiAgICAgICAgICAgICAgICBjbGVhcmNvYXRNYXA6IHZhcmlhdGlvbi5tYXRlcmlhbC5jbGVhcmNvYXRNYXAgPyB2YXJpYXRpb24ubWF0ZXJpYWwuY2xlYXJjb2F0TWFwIDogbnVsbCxcclxuICAgICAgICAgICAgICAgIGNsZWFyY29hdFJvdWdobmVzc01hcDogdmFyaWF0aW9uLm1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzc01hcCA/IHZhcmlhdGlvbi5tYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3NNYXAgOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgLy8gd2lyZWZyYW1lOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgLy8gb3BhY2l0eTogMC4zLFxyXG4gICAgICAgICAgICAgICAgLy8gdHJhbnNwYXJlbnQ6IHRydWUsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGlmICh2YXJpYXRpb24ubWF0ZXJpYWwuZGlzcGxhY2VtZW50VmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcy5kaXNwbGFjZW1lbnRTY2FsZSA9IHZhcmlhdGlvbi5tYXRlcmlhbC5kaXNwbGFjZW1lbnRWYWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodmFyaWF0aW9uLm1hdGVyaWFsLnNoZWVuQ29sb3IpIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcy5zaGVlbiA9IHZhcmlhdGlvbi5tYXRlcmlhbC5zaGVlbkNvbG9yO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh2YXJpYXRpb24ubWF0ZXJpYWwub3BhY2l0eSkge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLm9wYWNpdHkgPSB2YXJpYXRpb24ubWF0ZXJpYWwub3BhY2l0eTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodmFyaWF0aW9uLm1hdGVyaWFsLnRyYW5zcGFyZW50KSB7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMudHJhbnNwYXJlbnQgPSB2YXJpYXRpb24ubWF0ZXJpYWwudHJhbnNwYXJlbnQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHZhcmlhdGlvbi5tYXRlcmlhbC5lbWlzc2l2ZVZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMuZW1pc3NpdmUgPSB2YXJpYXRpb24ubWF0ZXJpYWwuZW1pc3NpdmVWYWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodmFyaWF0aW9uLm1hdGVyaWFsLmVtaXNzaXZlSW50ZW5zaXR5VmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcy5lbWlzc2l2ZUludGVuc2l0eSA9IHZhcmlhdGlvbi5tYXRlcmlhbC5lbWlzc2l2ZUludGVuc2l0eVZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh2YXJpYXRpb24ubWF0ZXJpYWwudGV4dHVyZSkge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLm1hcCA9IHZhcmlhdGlvbi5tYXRlcmlhbC50ZXh0dXJlO1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLm1hcC5uZWVkc1VwZGF0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHZhcmlhdGlvbi5tYXRlcmlhbC5hbykge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLmFvTWFwID0gdmFyaWF0aW9uLm1hdGVyaWFsLmFvO1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLmFvTWFwLm5lZWRzVXBkYXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodmFyaWF0aW9uLm1hdGVyaWFsLnJvdWdobmVzcykge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLnJvdWdobmVzc01hcCA9IHZhcmlhdGlvbi5tYXRlcmlhbC5yb3VnaG5lc3M7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMucm91Z2huZXNzTWFwLm5lZWRzVXBkYXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIC8vIHZhcmlhdGlvbi5tYXRlcmlhbC5yb3VnaG5lc3MubWFnRmlsdGVyID0gTmVhcmVzdEZpbHRlcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodmFyaWF0aW9uLm1hdGVyaWFsLm1ldGFsbmVzcykge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLm1ldGFsbmVzc01hcCA9IHZhcmlhdGlvbi5tYXRlcmlhbC5tZXRhbG5lc3M7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMubWV0YWxuZXNzTWFwLm5lZWRzVXBkYXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodmFyaWF0aW9uLm1hdGVyaWFsLm5vcm1hbCkge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLm5vcm1hbE1hcCA9IHZhcmlhdGlvbi5tYXRlcmlhbC5ub3JtYWw7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMubm9ybWFsTWFwLm5lZWRzVXBkYXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodmFyaWF0aW9uLm1hdGVyaWFsLmRpc3BsYWNlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLmRpc3BsYWNlbWVudE1hcCA9IHZhcmlhdGlvbi5tYXRlcmlhbC5kaXNwbGFjZW1lbnQ7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMuZGlzcGxhY2VtZW50TWFwLm5lZWRzVXBkYXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodmFyaWF0aW9uLm1hdGVyaWFsLmVtaXNzaXZlKSB7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMuZW1pc3NpdmVNYXAgPSB2YXJpYXRpb24ubWF0ZXJpYWwuZW1pc3NpdmU7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMuZW1pc3NpdmVNYXAubmVlZHNVcGRhdGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh2YXJpYXRpb24ubWF0ZXJpYWwuZW52TWFwKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFyaWF0aW9uLm1hdGVyaWFsLmVudk1hcEludGVuc2l0eSAhPSBudWxsIHx8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZW52TWFwID0gdmFyaWF0aW9uLm1hdGVyaWFsLmVudk1hcDtcclxuICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZW52TWFwLm5lZWRzVXBkYXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB2YXJpYXRpb24ubWF0ZXJpYWwuZW52TWFwLm1hcHBpbmcgPSBUSFJFRS5FcXVpcmVjdGFuZ3VsYXJSZWZsZWN0aW9uTWFwcGluZztcclxuICAgICAgICAgICAgICAgICAgICB2YXJpYXRpb24ubWF0ZXJpYWwuZW52TWFwLm1pbkZpbHRlciA9IFRIUkVFLk5lYXJlc3RGaWx0ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyaWF0aW9uLm1hdGVyaWFsLmVudk1hcC5tYWdGaWx0ZXIgPSBUSFJFRS5OZWFyZXN0RmlsdGVyO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh2YXJpYXRpb24ubWF0ZXJpYWwucmVmbGVjdGl2aXR5KSB7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMucmVmbGVjdGl2aXR5ID0gdmFyaWF0aW9uLm1hdGVyaWFsLnJlZmxlY3Rpdml0eTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodmFyaWF0aW9uLm1hdGVyaWFsLnNpZGUpIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcy5zaWRlID0gdmFyaWF0aW9uLm1hdGVyaWFsLnNpZGU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnN0IG5ld01hdGVyaWFsOiBUSFJFRS5NZXNoUGh5c2ljYWxNYXRlcmlhbCA9IG5ldyBUSFJFRS5NZXNoUGh5c2ljYWxNYXRlcmlhbChwYXJhbXMpO1xyXG4gICAgICAgICAgICBuZXdNYXRlcmlhbC5jb2xvci5zZXRSR0IoMSwgMSwgMSk7XHJcbiAgICAgICAgICAgIG5ld01hdGVyaWFsLm5lZWRzVXBkYXRlID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIGlmICh2YXJpYXRpb24ubWF0ZXJpYWwudHJhbnNtaXNzaW9uKSB7XHJcbiAgICAgICAgICAgICAgICBuZXdNYXRlcmlhbC50cmFuc21pc3Npb24gPSB2YXJpYXRpb24ubWF0ZXJpYWwudHJhbnNtaXNzaW9uO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBuZXdNYXRlcmlhbDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBwYXJhbXM6IFRIUkVFLk1lc2hTdGFuZGFyZE1hdGVyaWFsUGFyYW1ldGVycyA9IHtcclxuICAgICAgICAgICAgICAgIC8vIHNpZGU6IG1hdGVyaWFsLnNpZGUgPyBtYXRlcmlhbC5zaWRlIDogRnJvbnRTaWRlLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogbmFtZSxcclxuICAgICAgICAgICAgICAgIHJvdWdobmVzczogdmFyaWF0aW9uLm1hdGVyaWFsLnJvdWdobmVzc1ZhbHVlID8gdmFyaWF0aW9uLm1hdGVyaWFsLnJvdWdobmVzc1ZhbHVlIDogMSxcclxuICAgICAgICAgICAgICAgIG1ldGFsbmVzczogdmFyaWF0aW9uLm1hdGVyaWFsLm1ldGFsbmVzc1ZhbHVlID8gdmFyaWF0aW9uLm1hdGVyaWFsLm1ldGFsbmVzc1ZhbHVlIDogMCxcclxuICAgICAgICAgICAgICAgIGVudk1hcEludGVuc2l0eTogdmFyaWF0aW9uLm1hdGVyaWFsLmVudk1hcEludGVuc2l0eSA/IHZhcmlhdGlvbi5tYXRlcmlhbC5lbnZNYXBJbnRlbnNpdHkgOiAwLjAxXHJcbiAgICAgICAgICAgICAgICAvLyB3aXJlZnJhbWU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAvLyBvcGFjaXR5OiAwLjMsXHJcbiAgICAgICAgICAgICAgICAvLyB0cmFuc3BhcmVudDogdHJ1ZSxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgaWYgKHZhcmlhdGlvbi5tYXRlcmlhbC5kaXNwbGFjZW1lbnRWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLmRpc3BsYWNlbWVudFNjYWxlID0gdmFyaWF0aW9uLm1hdGVyaWFsLmRpc3BsYWNlbWVudFZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh2YXJpYXRpb24ubWF0ZXJpYWwub3BhY2l0eSkge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLm9wYWNpdHkgPSB2YXJpYXRpb24ubWF0ZXJpYWwub3BhY2l0eTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodmFyaWF0aW9uLm1hdGVyaWFsLnRyYW5zcGFyZW50KSB7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMudHJhbnNwYXJlbnQgPSB2YXJpYXRpb24ubWF0ZXJpYWwudHJhbnNwYXJlbnQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHZhcmlhdGlvbi5tYXRlcmlhbC5lbWlzc2l2ZVZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMuZW1pc3NpdmUgPSB2YXJpYXRpb24ubWF0ZXJpYWwuZW1pc3NpdmVWYWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodmFyaWF0aW9uLm1hdGVyaWFsLmVtaXNzaXZlSW50ZW5zaXR5VmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcy5lbWlzc2l2ZUludGVuc2l0eSA9IHZhcmlhdGlvbi5tYXRlcmlhbC5lbWlzc2l2ZUludGVuc2l0eVZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh2YXJpYXRpb24ubWF0ZXJpYWwudGV4dHVyZSkge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLm1hcCA9IHZhcmlhdGlvbi5tYXRlcmlhbC50ZXh0dXJlO1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLm1hcC5uZWVkc1VwZGF0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHZhcmlhdGlvbi5tYXRlcmlhbC5hbykge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLmFvTWFwID0gdmFyaWF0aW9uLm1hdGVyaWFsLmFvO1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLmFvTWFwLm5lZWRzVXBkYXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodmFyaWF0aW9uLm1hdGVyaWFsLnJvdWdobmVzcykge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLnJvdWdobmVzc01hcCA9IHZhcmlhdGlvbi5tYXRlcmlhbC5yb3VnaG5lc3M7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMucm91Z2huZXNzTWFwLm5lZWRzVXBkYXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIC8vIHZhcmlhdGlvbi5tYXRlcmlhbC5yb3VnaG5lc3MubWFnRmlsdGVyID0gTmVhcmVzdEZpbHRlcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodmFyaWF0aW9uLm1hdGVyaWFsLm1ldGFsbmVzcykge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLm1ldGFsbmVzc01hcCA9IHZhcmlhdGlvbi5tYXRlcmlhbC5tZXRhbG5lc3M7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMubWV0YWxuZXNzTWFwLm5lZWRzVXBkYXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodmFyaWF0aW9uLm1hdGVyaWFsLm5vcm1hbCkge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLm5vcm1hbE1hcCA9IHZhcmlhdGlvbi5tYXRlcmlhbC5ub3JtYWw7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMubm9ybWFsTWFwLm5lZWRzVXBkYXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodmFyaWF0aW9uLm1hdGVyaWFsLmRpc3BsYWNlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLmRpc3BsYWNlbWVudE1hcCA9IHZhcmlhdGlvbi5tYXRlcmlhbC5kaXNwbGFjZW1lbnQ7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMuZGlzcGxhY2VtZW50TWFwLm5lZWRzVXBkYXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodmFyaWF0aW9uLm1hdGVyaWFsLmVtaXNzaXZlKSB7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMuZW1pc3NpdmVNYXAgPSB2YXJpYXRpb24ubWF0ZXJpYWwuZW1pc3NpdmU7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMuZW1pc3NpdmVNYXAubmVlZHNVcGRhdGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh2YXJpYXRpb24ubWF0ZXJpYWwuZW52TWFwKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFyaWF0aW9uLm1hdGVyaWFsLmVudk1hcEludGVuc2l0eSAhPSBudWxsIHx8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZW52TWFwID0gdmFyaWF0aW9uLm1hdGVyaWFsLmVudk1hcDtcclxuICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZW52TWFwLm5lZWRzVXBkYXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB2YXJpYXRpb24ubWF0ZXJpYWwuZW52TWFwLm1hcHBpbmcgPSBUSFJFRS5FcXVpcmVjdGFuZ3VsYXJSZWZsZWN0aW9uTWFwcGluZztcclxuICAgICAgICAgICAgICAgICAgICB2YXJpYXRpb24ubWF0ZXJpYWwuZW52TWFwLm1pbkZpbHRlciA9IFRIUkVFLk5lYXJlc3RGaWx0ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyaWF0aW9uLm1hdGVyaWFsLmVudk1hcC5tYWdGaWx0ZXIgPSBUSFJFRS5OZWFyZXN0RmlsdGVyO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh2YXJpYXRpb24ubWF0ZXJpYWwuc2lkZSkge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLnNpZGUgPSB2YXJpYXRpb24ubWF0ZXJpYWwuc2lkZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3QgbmV3TWF0ZXJpYWw6IFRIUkVFLk1lc2hTdGFuZGFyZE1hdGVyaWFsID0gbmV3IFRIUkVFLk1lc2hTdGFuZGFyZE1hdGVyaWFsKHBhcmFtcyk7XHJcbiAgICAgICAgICAgIG5ld01hdGVyaWFsLmNvbG9yLnNldFJHQigxLCAxLCAxKTtcclxuICAgICAgICAgICAgbmV3TWF0ZXJpYWwubmVlZHNVcGRhdGUgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIG5ld01hdGVyaWFsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9zZXRMYXN0S25vd25WYXJpYXRpb25zKGlkOiBzdHJpbmcsIHZhcmlhdGlvbjogVmFyaWF0aW9uW10pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9sYXN0S25vd25WYXJpYXRpb25zLnNldChpZCwgdmFyaWF0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9nZXRMYXN0S25vd25WYXJpYXRpb25zKGlkOiBzdHJpbmcpOiBWYXJpYXRpb25bXSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2xhc3RLbm93blZhcmlhdGlvbnMuaGFzKGlkKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbGFzdEtub3duVmFyaWF0aW9ucy5nZXQoaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbn1cclxuIl19
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export class Variation {
|
|
2
2
|
}
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZGVsL3ZhcmlhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sU0FBUztDQVNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TWF0ZXJpYWx9IGZyb20gJy4vbWF0ZXJpYWwnO1xuXG5leHBvcnQgY2xhc3MgVmFyaWF0aW9uIHtcbiAgcHVibGljIGRlY29JZDogbnVtYmVyO1xuICBwdWJsaWMgYnJhbmRJZDogc3RyaW5nO1xuICBwdWJsaWMgZ2FtZU9iamVjdE5hbWU6IHN0cmluZztcbiAgcHVibGljIG5vZGU6IGFueTtcbiAgcHVibGljIG9wdGlvblRleHQ6IHN0cmluZztcbiAgcHVibGljIHN1cHBsaWVyQXJ0aWNsZU5yOiBzdHJpbmc7XG4gIHB1YmxpYyBtYXRlcmlhbElkOiBzdHJpbmc7XG4gIHB1YmxpYyBtYXRlcmlhbDogTWF0ZXJpYWw7XG59XG4iXX0=
|
|
@@ -10,35 +10,38 @@ export class VariationUtils {
|
|
|
10
10
|
}
|
|
11
11
|
static LoadVariation(assetPath, fileName) {
|
|
12
12
|
return __awaiter(this, void 0, void 0, function* () {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
if (fileName.indexOf('ione3d') < 0) {
|
|
17
|
-
fileName = fileName.concat('.ione3d');
|
|
18
|
-
}
|
|
19
|
-
const id = fileName.substr(0, fileName.lastIndexOf('.ione3d'));
|
|
20
|
-
try {
|
|
21
|
-
if (!assetPath.endsWith('/')) {
|
|
22
|
-
assetPath += '/';
|
|
13
|
+
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
14
|
+
if (!fileName) {
|
|
15
|
+
resolve(null);
|
|
23
16
|
}
|
|
24
|
-
if (
|
|
25
|
-
|
|
26
|
-
return null;
|
|
17
|
+
if (fileName.indexOf('ione3d') < 0) {
|
|
18
|
+
fileName = fileName.concat('.ione3d');
|
|
27
19
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
20
|
+
const id = fileName.substr(0, fileName.lastIndexOf('.ione3d'));
|
|
21
|
+
try {
|
|
22
|
+
if (!assetPath.endsWith('/')) {
|
|
23
|
+
assetPath += '/';
|
|
24
|
+
}
|
|
25
|
+
if (!window.hasOwnProperty('downloadVariation')) {
|
|
26
|
+
console.error('downloadVariation not defined in window global');
|
|
27
|
+
reject('downloadVariation not defined in window global');
|
|
28
|
+
}
|
|
29
|
+
let file;
|
|
30
|
+
if (this.MaterialCache.has(id)) {
|
|
31
|
+
resolve(this.MaterialCache.get(id));
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
file = yield window.downloadVariation(`${assetPath.replace('https://cdn1.colijn-it.nl/', '')}variation/${fileName}`);
|
|
35
|
+
const settings = yield VariationUtils.GetVariationSettingsFromFile(id, file);
|
|
36
|
+
this.MaterialCache.set(id, settings);
|
|
37
|
+
resolve(settings);
|
|
38
|
+
}
|
|
31
39
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
40
|
+
catch (err) {
|
|
41
|
+
const mute = err;
|
|
42
|
+
reject(err);
|
|
35
43
|
}
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
catch (err) {
|
|
39
|
-
const mute = err;
|
|
40
|
-
return null;
|
|
41
|
-
}
|
|
44
|
+
}));
|
|
42
45
|
});
|
|
43
46
|
}
|
|
44
47
|
// public static GetMaterialFromName(variationFolder: string, material: any): Promise<MeshStandardMaterial> {
|
|
@@ -291,4 +294,4 @@ export class VariationUtils {
|
|
|
291
294
|
}
|
|
292
295
|
}
|
|
293
296
|
VariationUtils.MaterialCache = new Map();
|
|
294
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWF0aW9uLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL3ZhcmlhdGlvbi11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsYUFBYTtBQUNiLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixXQUFXO0FBQ1gsTUFBTSxPQUFPLGNBQWM7SUFHbEIsTUFBTSxDQUFDLFVBQVU7UUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU0sTUFBTSxDQUFPLGFBQWEsQ0FBQyxTQUFpQixFQUFFLFFBQWdCOztZQUNuRSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNiLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFDRCxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNsQyxRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUN2QztZQUNELE1BQU0sRUFBRSxHQUFXLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUN2RSxJQUFJO2dCQUNGLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUM1QixTQUFTLElBQUksR0FBRyxDQUFDO2lCQUNsQjtnQkFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO29CQUMvQyxPQUFPLENBQUMsS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7b0JBQ2hFLE9BQU8sSUFBSSxDQUFDO2lCQUNiO2dCQUNELElBQUksSUFBSSxDQUFDO2dC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QUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JHLFFBQVEsR0FBRyxFQUFFO1lBQ1gsS0FBSyxLQUFLLENBQUM7WUFDWCxLQUFLLE1BQU0sQ0FBQztZQUNaLEtBQUssS0FBSyxDQUFDO1lBQ1gsS0FBSyxLQUFLO2dCQUNSLE9BQU8sSUFBSSxDQUFDO1lBQ2Q7Z0JBQ0UsT0FBTyxLQUFLLENBQUM7U0FDaEI7SUFDSCxDQUFDO0lBRU8sTUFBTSxDQUFDLGlCQUFpQixDQUFDLFFBQWdCO1FBQy9DLE1BQU0sR0FBRyxHQUFXLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JHLFFBQVEsR0FBRyxFQUFFO1lBQ1gsS0FBSyxLQUFLLENBQUM7WUFDWCxLQUFLLE1BQU07Z0JBQ1QsT0FBTyxNQUFNLENBQUM7WUFDaEIsS0FBSyxLQUFLO2dCQUNSLE9BQU8sS0FBSyxDQUFDO1lBQ2YsS0FBSyxLQUFLO2dCQUNSLE9BQU8sS0FBSyxDQUFDO1lBQ2Y7Z0JBQ0UsT0FBTyxNQUFNLENBQUM7U0FDakI7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ1YsTUFBTSxDQUFPLGFBQWEsQ0FBQyxJQUFJOztZQUNyQyxJQUFJO2dCQUNGLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQzFCLE9BQU8sTUFBTSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3BDO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1YsT0FBTyxJQUFJLENBQUM7YUFDYjtRQUNILENBQUM7S0FBQTs7QUE3UWMsNEJBQWEsR0FBcUIsSUFBSSxHQUFHLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFRIUkVFIGZyb20gXCJ0aHJlZVwiO1xyXG5pbXBvcnQge1ZhcmlhdGlvblNldHRpbmdzfSBmcm9tIFwiLi4vbW9kZWwvdmFyaWF0aW9uLXNldHRpbmdzXCI7XHJcbi8vIEB0cy1pZ25vcmVcclxuaW1wb3J0IEpTWmlwIGZyb20gXCJqc3ppcFwiO1xyXG5cclxuLy8gQGR5bmFtaWNcclxuZXhwb3J0IGNsYXNzIFZhcmlhdGlvblV0aWxzIHtcclxuICBwcml2YXRlIHN0YXRpYyBNYXRlcmlhbENhY2hlOiBNYXA8c3RyaW5nLCBhbnk+ID0gbmV3IE1hcCgpO1xyXG5cclxuICBwdWJsaWMgc3RhdGljIENsZWFyQ2FjaGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLk1hdGVyaWFsQ2FjaGUuY2xlYXIoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgTG9hZFZhcmlhdGlvbihhc3NldFBhdGg6IHN0cmluZywgZmlsZU5hbWU6IHN0cmluZyk6IFByb21pc2U8VmFyaWF0aW9uU2V0dGluZ3M+IHtcclxuICAgIGlmICghZmlsZU5hbWUpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBpZiAoZmlsZU5hbWUuaW5kZXhPZignaW9uZTNkJykgPCAwKSB7XHJcbiAgICAgIGZpbGVOYW1lID0gZmlsZU5hbWUuY29uY2F0KCcuaW9uZTNkJyk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBpZDogc3RyaW5nID0gZmlsZU5hbWUuc3Vic3RyKDAsIGZpbGVOYW1lLmxhc3RJbmRleE9mKCcuaW9uZTNkJykpO1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCFhc3NldFBhdGguZW5kc1dpdGgoJy8nKSkge1xyXG4gICAgICAgIGFzc2V0UGF0aCArPSAnLyc7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF3aW5kb3cuaGFzT3duUHJvcGVydHkoJ2Rvd25sb2FkVmFyaWF0aW9uJykpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdkb3dubG9hZFZhcmlhdGlvbiBub3QgZGVmaW5lZCBpbiB3aW5kb3cgZ2xvYmFsJyk7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGZpbGU7XHJcbiAgICAgIGlmICh0aGlzLk1hdGVyaWFsQ2FjaGUuaGFzKGlkKSkge1xyXG4gICAgICAgIGZpbGUgPSB0aGlzLk1hdGVyaWFsQ2FjaGUuZ2V0KGlkKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBmaWxlID0gYXdhaXQgKHdpbmRvdyBhcyBhbnkpLmRvd25sb2FkVmFyaWF0aW9uKGAke2Fzc2V0UGF0aC5yZXBsYWNlKCdodHRwczovL2NkbjEuY29saWpuLWl0Lm5sLycsICcnKX12YXJpYXRpb24vJHtmaWxlTmFtZX1gKTtcclxuICAgICAgICB0aGlzLk1hdGVyaWFsQ2FjaGUuc2V0KGlkLCBmaWxlKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gYXdhaXQgVmFyaWF0aW9uVXRpbHMuR2V0VmFyaWF0aW9uU2V0dGluZ3NGcm9tRmlsZShpZCwgZmlsZSk7XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgY29uc3QgbXV0ZSA9IGVycjtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBwdWJsaWMgc3RhdGljIEdldE1hdGVyaWFsRnJvbU5hbWUodmFyaWF0aW9uRm9sZGVyOiBzdHJpbmcsIG1hdGVyaWFsOiBhbnkpOiBQcm9taXNlPE1lc2hTdGFuZGFyZE1hdGVyaWFsPiB7XHJcbiAgLy8gICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uKSA9PiB7XHJcbiAgLy8gICAgIGlmICghbWF0ZXJpYWwpIHtcclxuICAvLyAgICAgICByZXNvbHZlKG51bGwpO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIGlmICh0aGlzLk1hdGVyaWFsQ2FjaGUuaGFzKG1hdGVyaWFsLm5hbWUpKSB7XHJcbiAgLy8gICAgICAgcmVzb2x2ZSh0aGlzLk1hdGVyaWFsQ2FjaGUuZ2V0KG1hdGVyaWFsLm5hbWUpLmNsb25lKCkpO1xyXG4gIC8vICAgICB9IGVsc2Uge1xyXG4gIC8vICAgICAgIFZhcmlhdGlvblV0aWxzLkxvYWRWYXJpYXRpb24odmFyaWF0aW9uRm9sZGVyLCBtYXRlcmlhbC5uYW1lLCBmYWxzZSkudGhlbigoc2V0dGluZ3M6IFZhcmlhdGlvblNldHRpbmdzKSA9PiB7XHJcbiAgLy8gICAgICAgICBpZiAoc2V0dGluZ3MpIHtcclxuICAvLyAgICAgICAgICAgQXNzZXRVdGlscy5DcmVhdGVNYXRlcmlhbEZyb21Bc3NldChzZXR0aW5ncykudGhlbigobWF0ZXJpYWxPYmo6IE1hdGVyaWFsKSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgY29uc3QgbWF0ZXJpYWxQYXJhbXM6IE1lc2hTdGFuZGFyZE1hdGVyaWFsUGFyYW1ldGVycyA9IHt9O1xyXG4gIC8vICAgICAgICAgICAgIG1hdGVyaWFsUGFyYW1zLm5hbWUgPSBtYXRlcmlhbC5uYW1lO1xyXG4gIC8vICAgICAgICAgICAgIG1hdGVyaWFsUGFyYW1zLm1hcCA9IG1hdGVyaWFsT2JqLnRleHR1cmU7XHJcbiAgLy8gICAgICAgICAgICAgbWF0ZXJpYWxQYXJhbXMubm9ybWFsTWFwID0gbWF0ZXJpYWxPYmoubm9ybWFsO1xyXG4gIC8vICAgICAgICAgICAgIG1hdGVyaWFsUGFyYW1zLmFvTWFwID0gbWF0ZXJpYWxPYmouYW87XHJcbiAgLy8gICAgICAgICAgICAgbWF0ZXJpYWxQYXJhbXMucm91Z2huZXNzTWFwID0gbWF0ZXJpYWxPYmoucm91Z2huZXNzO1xyXG4gIC8vICAgICAgICAgICAgIG1hdGVyaWFsUGFyYW1zLm1ldGFsbmVzc01hcCA9IG1hdGVyaWFsT2JqLm1ldGFsbmVzcztcclxuICAvLyAgICAgICAgICAgICBtYXRlcmlhbFBhcmFtcy5yb3VnaG5lc3MgPSAxO1xyXG4gIC8vICAgICAgICAgICAgIG1hdGVyaWFsUGFyYW1zLm1ldGFsbmVzcyA9IDE7XHJcbiAgLy8gICAgICAgICAgICAgY29uc3QgcGJyTWF0OiBNZXNoU3RhbmRhcmRNYXRlcmlhbCA9IG5ldyBNZXNoU3RhbmRhcmRNYXRlcmlhbChtYXRlcmlhbFBhcmFtcyk7XHJcbiAgLy8gICAgICAgICAgICAgdGhpcy5NYXRlcmlhbENhY2hlLnNldChtYXRlcmlhbC5uYW1lLCBwYnJNYXQpO1xyXG4gIC8vICAgICAgICAgICAgIHJlc29sdmUocGJyTWF0LmNsb25lKCkpO1xyXG4gIC8vICAgICAgICAgICB9KTtcclxuICAvLyAgICAgICAgIH0gZWxzZSB7XHJcbiAgLy8gICAgICAgICAgIHJlc29sdmUobWF0ZXJpYWwpO1xyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH0pO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGFzeW5jIEdldFZhcmlhdGlvblNldHRpbmdzRnJvbUZpbGUoaWQ6IHN0cmluZywgY29tcHJlc3NlZEZpbGU6IGFueSk6IFByb21pc2U8VmFyaWF0aW9uU2V0dGluZ3M+IHtcclxuICAgIGlmICghY29tcHJlc3NlZEZpbGUpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCB6aXBDb250ZW50ID0gYXdhaXQgVmFyaWF0aW9uVXRpbHMuR2V0WmlwQ29udGVudChjb21wcmVzc2VkRmlsZSk7XHJcbiAgICBjb25zdCB2YXJpYXRpb25TZXR0aW5nczogVmFyaWF0aW9uU2V0dGluZ3MgPSBuZXcgVmFyaWF0aW9uU2V0dGluZ3MoKTtcclxuICAgIGxldCBpbmRleDtcclxuICAgIHZhcmlhdGlvblNldHRpbmdzLmlkID0gaWQ7XHJcblxyXG4gICAgaWYgKHppcENvbnRlbnQpIHtcclxuICAgICAgaWYgKHppcENvbnRlbnQuZmlsZXNbJ2luZGV4Lmpzb24nXSkge1xyXG4gICAgICAgIGNvbnN0IGluZGV4RmlsZTogc3RyaW5nID0gYXdhaXQgemlwQ29udGVudC5maWxlc1snaW5kZXguanNvbiddLmFzeW5jKCdzdHJpbmcnKTtcclxuICAgICAgICBpbmRleCA9IEpTT04ucGFyc2UoaW5kZXhGaWxlKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaW5kZXgpIHtcclxuICAgICAgICBhd2FpdCBWYXJpYXRpb25VdGlscy5DcmVhdGVTZXR0aW5nc0Jhc2VkT25JbmRleChpbmRleCwgdmFyaWF0aW9uU2V0dGluZ3MsIHppcENvbnRlbnQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGF3YWl0IFZhcmlhdGlvblV0aWxzLkNyZWF0ZVNldHRpbmdzQmFzZWRPbkZpbGVOYW1lKHZhcmlhdGlvblNldHRpbmdzLCB6aXBDb250ZW50KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhcmlhdGlvblNldHRpbmdzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgQ3JlYXRlU2V0dGluZ3NCYXNlZE9uSW5kZXgoaW5kZXg6IGFueSwgdmFyaWF0aW9uU2V0dGluZ3M6IFZhcmlhdGlvblNldHRpbmdzLCB6aXBDb250ZW50OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmIChpbmRleC5ub3JtYWxGaWxlKSB7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLm5vcm1hbCA9IGF3YWl0IFZhcmlhdGlvblV0aWxzLkxvYWRGaWxlQ29udGVudEZyb21aaXAoemlwQ29udGVudC5maWxlc1tpbmRleC5ub3JtYWxGaWxlXSwgaW5kZXgubm9ybWFsRmlsZSk7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLm5vcm1hbEZpbGVuYW1lID0gaW5kZXgubm9ybWFsRmlsZTtcclxuICAgIH1cclxuICAgIGlmIChpbmRleC5kaWZmdXNlRmlsZSkge1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy50ZXh0dXJlID0gYXdhaXQgVmFyaWF0aW9uVXRpbHMuTG9hZEZpbGVDb250ZW50RnJvbVppcCh6aXBDb250ZW50LmZpbGVzW2luZGV4LmRpZmZ1c2VGaWxlXSwgaW5kZXguZGlmZnVzZUZpbGUpO1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy50ZXh0dXJlRmlsZW5hbWUgPSBpbmRleC5kaWZmdXNlRmlsZTtcclxuICAgIH1cclxuICAgIGlmIChpbmRleC5vcm1GaWxlKSB7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLm9ybSA9IGF3YWl0IFZhcmlhdGlvblV0aWxzLkxvYWRGaWxlQ29udGVudEZyb21aaXAoemlwQ29udGVudC5maWxlc1tpbmRleC5vcm1GaWxlXSwgaW5kZXgub3JtRmlsZSk7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLm9ybUZpbGVuYW1lID0gaW5kZXgub3JtRmlsZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChpbmRleC5hb0ZpbGUpIHtcclxuICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5hbyA9IGF3YWl0IFZhcmlhdGlvblV0aWxzLkxvYWRGaWxlQ29udGVudEZyb21aaXAoemlwQ29udGVudC5maWxlc1tpbmRleC5hb0ZpbGVdLCBpbmRleC5hb0ZpbGUpO1xyXG4gICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmFvRmlsZW5hbWUgPSBpbmRleC5hb0ZpbGU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGluZGV4Lm1ldGFsbmVzc0ZpbGUpIHtcclxuICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5tZXRhbG5lc3MgPSBhd2FpdCBWYXJpYXRpb25VdGlscy5Mb2FkRmlsZUNvbnRlbnRGcm9tWmlwKHppcENvbnRlbnQuZmlsZXNbaW5kZXgubWV0YWxuZXNzRmlsZV0sIGluZGV4Lm1ldGFsbmVzc0ZpbGUpO1xyXG4gICAgICAgIHZhcmlhdGlvblNldHRpbmdzLm1ldGFsbmVzc0ZpbGVuYW1lID0gaW5kZXgubWV0YWxuZXNzRmlsZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaW5kZXgucm91Z2huZXNzRmlsZSkge1xyXG4gICAgICAgIHZhcmlhdGlvblNldHRpbmdzLnJvdWdobmVzcyA9IGF3YWl0IFZhcmlhdGlvblV0aWxzLkxvYWRGaWxlQ29udGVudEZyb21aaXAoemlwQ29udGVudC5maWxlc1tpbmRleC5yb3VnaG5lc3NGaWxlXSwgaW5kZXgucm91Z2huZXNzRmlsZSk7XHJcbiAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3Mucm91Z2huZXNzRmlsZW5hbWUgPSBpbmRleC5yb3VnaG5lc3NGaWxlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoaW5kZXguZGlzcGxhY2VtZW50RmlsZSkge1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy5kaXNwbGFjZW1lbnQgPSBhd2FpdCBWYXJpYXRpb25VdGlscy5Mb2FkRmlsZUNvbnRlbnRGcm9tWmlwKHppcENvbnRlbnQuZmlsZXNbaW5kZXguZGlzcGxhY2VtZW50RmlsZV0sIGluZGV4LmRpc3BsYWNlbWVudEZpbGUpO1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy5kaXNwbGFjZW1lbnRGaWxlbmFtZSA9IGluZGV4LmRpc3BsYWNlbWVudEZpbGU7XHJcbiAgICB9XHJcbiAgICBpZiAoaW5kZXguZW1pc3NpdmVGaWxlKSB7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLmVtaXNzaXZlID0gYXdhaXQgVmFyaWF0aW9uVXRpbHMuTG9hZEZpbGVDb250ZW50RnJvbVppcCh6aXBDb250ZW50LmZpbGVzW2luZGV4LmVtaXNzaXZlRmlsZV0sIGluZGV4LmVtaXNzaXZlRmlsZSk7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLmVtaXNzaXZlRmlsZW5hbWUgPSBpbmRleC5lbWlzc2l2ZUZpbGU7XHJcbiAgICB9XHJcbiAgICBpZiAoaW5kZXguZW52TWFwRmlsZSkge1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy5lbnZNYXAgPSBhd2FpdCBWYXJpYXRpb25VdGlscy5Mb2FkRmlsZUNvbnRlbnRGcm9tWmlwKHppcENvbnRlbnQuZmlsZXNbaW5kZXguZW52TWFwRmlsZV0sIGluZGV4LmVudk1hcEZpbGUpO1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy5lbnZNYXBGaWxlbmFtZSA9IGluZGV4LmVudk1hcEZpbGU7XHJcbiAgICB9XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy5zZXR0aW5ncyA9XHJcbiAgICAgICAgYXdhaXQgVmFyaWF0aW9uVXRpbHMuTG9hZEZpbGVDb250ZW50RnJvbVppcCh6aXBDb250ZW50LmZpbGVzWydyZXBlYXQuanNvbiddLCAncmVwZWF0Lmpzb24nLCBmYWxzZSkgfHwge307XHJcbiAgICBPYmplY3QuYXNzaWduKHZhcmlhdGlvblNldHRpbmdzLnNldHRpbmdzLCBpbmRleC5yZXBlYXQpO1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3Muc2V0dGluZ3MubWV0YWxuZXNzID0gaW5kZXgubWV0YWxuZXNzO1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3Muc2V0dGluZ3Mucm91Z2huZXNzID0gaW5kZXgucm91Z2huZXNzO1xyXG4gICAgaWYgKGluZGV4LnNoZWVuQ29sb3IpIHtcclxuICAgICAgdmFyaWF0aW9uU2V0dGluZ3Muc2V0dGluZ3Muc2hlZW5Db2xvciA9IG5ldyBUSFJFRS5Db2xvcihpbmRleC5zaGVlbkNvbG9yLnIsIGluZGV4LnNoZWVuQ29sb3IuZywgaW5kZXguc2hlZW5Db2xvci5iKTtcclxuICAgIH1cclxuICAgIHZhcmlhdGlvblNldHRpbmdzLnNldHRpbmdzLmVudk1hcCA9IGluZGV4LmVudk1hcDtcclxuICAgIHZhcmlhdGlvblNldHRpbmdzLnNldHRpbmdzLmVudk1hcEludGVuc2l0eSA9IGluZGV4LmVudk1hcEludGVuc2l0eTtcclxuICAgIHZhcmlhdGlvblNldHRpbmdzLnNldHRpbmdzLnRyYW5zcGFyZW50ID0gaW5kZXgudHJhbnNwYXJlbnQ7XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy5zZXR0aW5ncy5vcGFjaXR5ID0gaW5kZXgub3BhY2l0eTtcclxuICAgIGlmIChpbmRleC5lbWlzc2l2ZVZhbHVlKSB7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLnNldHRpbmdzLmVtaXNzaXZlVmFsdWUgPSBuZXcgVEhSRUUuQ29sb3IoaW5kZXguZW1pc3NpdmVWYWx1ZS5yLCBpbmRleC5lbWlzc2l2ZVZhbHVlLmcsIGluZGV4LmVtaXNzaXZlVmFsdWUuYik7XHJcbiAgICB9XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy5zZXR0aW5ncy5lbWlzc2l2ZUludGVuc2l0eSA9IGluZGV4LmVtaXNzaXZlSW50ZW5zaXR5O1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3Muc2V0dGluZ3MucmVmbGVjdGl2aXR5ID0gaW5kZXgucmVmbGVjdGl2aXR5O1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3Muc2V0dGluZ3MuZGlzcGxhY2VtZW50VmFsdWUgPSBpbmRleC5kaXNwbGFjZW1lbnRWYWx1ZTtcclxuICAgIHZhcmlhdGlvblNldHRpbmdzLnNldHRpbmdzLnNpZGUgPSBpbmRleC5zaWRlO1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3Muc2V0dGluZ3MudHJhbnNwYXJlbmN5ID0gaW5kZXgudHJhbnNwYXJlbmN5O1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3Muc2V0dGluZ3MudHJhbnNtaXNzaW9uID0gaW5kZXgudHJhbnNtaXNzaW9uO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgQ3JlYXRlU2V0dGluZ3NCYXNlZE9uRmlsZU5hbWUodmFyaWF0aW9uU2V0dGluZ3M6IFZhcmlhdGlvblNldHRpbmdzLCB6aXBDb250ZW50OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IGFsbExvYWRlZDogUHJvbWlzZTxWYXJpYXRpb25TZXR0aW5ncz5bXSA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBmaWxlTmFtZSBpbiB6aXBDb250ZW50LmZpbGVzKSB7XHJcbiAgICAgIGlmICh6aXBDb250ZW50LmZpbGVzLmhhc093blByb3BlcnR5KGZpbGVOYW1lKSkge1xyXG4gICAgICAgIGNvbnN0IGZpbGU6IGFueSA9IGF3YWl0IHppcENvbnRlbnQuZmlsZXNbZmlsZU5hbWVdO1xyXG4gICAgICAgIGlmIChmaWxlLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdub3JtYWwnKSA+IC0xICYmIHRoaXMuRmlsZUlzSW1hZ2UoZmlsZS5uYW1lKSkge1xyXG4gICAgICAgICAgYWxsTG9hZGVkLnB1c2goemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV0uYXN5bmMoJ2Jhc2U2NCcpLnRoZW4oKG5vcm1hbEZpbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5ub3JtYWwgPSBgZGF0YTppbWFnZS8ke3RoaXMuR2V0QmFzZTY0RmlsZVR5cGUoZmlsZS5uYW1lKX07YmFzZTY0LCR7bm9ybWFsRmlsZX1gO1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5ub3JtYWxGaWxlbmFtZSA9IGZpbGVOYW1lO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZignYW8nKSA+IC0xICYmIHRoaXMuRmlsZUlzSW1hZ2UoZmlsZS5uYW1lKSkge1xyXG4gICAgICAgICAgYWxsTG9hZGVkLnB1c2goemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV0uYXN5bmMoJ2Jhc2U2NCcpLnRoZW4oKGFvRmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmFvID0gYGRhdGE6aW1hZ2UvJHt0aGlzLkdldEJhc2U2NEZpbGVUeXBlKGZpbGUubmFtZSl9O2Jhc2U2NCwke2FvRmlsZX1gO1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5hb0ZpbGVuYW1lID0gZmlsZU5hbWU7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWxlLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdtZXRhbG5lc3MnKSA+IC0xICYmIHRoaXMuRmlsZUlzSW1hZ2UoZmlsZS5uYW1lKSkge1xyXG4gICAgICAgICAgYWxsTG9hZGVkLnB1c2goemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV0uYXN5bmMoJ2Jhc2U2NCcpLnRoZW4oKG1ldGFsbmVzc0ZpbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5tZXRhbG5lc3MgPSBgZGF0YTppbWFnZS8ke3RoaXMuR2V0QmFzZTY0RmlsZVR5cGUoZmlsZS5uYW1lKX07YmFzZTY0LCR7bWV0YWxuZXNzRmlsZX1gO1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5tZXRhbG5lc3NGaWxlbmFtZSA9IGZpbGVOYW1lO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZigncm91Z2huZXNzJykgPiAtMSAmJiB0aGlzLkZpbGVJc0ltYWdlKGZpbGUubmFtZSkpIHtcclxuICAgICAgICAgIGFsbExvYWRlZC5wdXNoKHppcENvbnRlbnQuZmlsZXNbZmlsZU5hbWVdLmFzeW5jKCdiYXNlNjQnKS50aGVuKChyb3VnaG5lc3NGaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3Mucm91Z2huZXNzID0gYGRhdGE6aW1hZ2UvJHt0aGlzLkdldEJhc2U2NEZpbGVUeXBlKGZpbGUubmFtZSl9O2Jhc2U2NCwke3JvdWdobmVzc0ZpbGV9YDtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3Mucm91Z2huZXNzRmlsZW5hbWUgPSBmaWxlTmFtZTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2RpZmZ1c2UnKSA+IC0xICYmIHRoaXMuRmlsZUlzSW1hZ2UoZmlsZS5uYW1lKSkge1xyXG4gICAgICAgICAgYWxsTG9hZGVkLnB1c2goemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV0uYXN5bmMoJ2Jhc2U2NCcpLnRoZW4oKGRpZmZ1c2VGaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MudGV4dHVyZSA9IGBkYXRhOmltYWdlLyR7dGhpcy5HZXRCYXNlNjRGaWxlVHlwZShmaWxlLm5hbWUpfTtiYXNlNjQsJHtkaWZmdXNlRmlsZX1gO1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy50ZXh0dXJlRmlsZW5hbWUgPSBmaWxlTmFtZTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2Rpc3BsYWNlbWVudCcpID4gLTEgJiYgdGhpcy5GaWxlSXNJbWFnZShmaWxlLm5hbWUpKSB7XHJcbiAgICAgICAgICBhbGxMb2FkZWQucHVzaCh6aXBDb250ZW50LmZpbGVzW2ZpbGVOYW1lXS5hc3luYygnYmFzZTY0JykudGhlbigoZGlzcGxhY2VtZW50RmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmRpc3BsYWNlbWVudCA9IGBkYXRhOmltYWdlLyR7dGhpcy5HZXRCYXNlNjRGaWxlVHlwZShmaWxlLm5hbWUpfTtiYXNlNjQsJHtkaXNwbGFjZW1lbnRGaWxlfWA7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmRpc3BsYWNlbWVudEZpbGVuYW1lID0gZmlsZU5hbWU7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWxlLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdlbWlzc2l2ZScpID4gLTEgJiYgdGhpcy5GaWxlSXNJbWFnZShmaWxlLm5hbWUpKSB7XHJcbiAgICAgICAgICBhbGxMb2FkZWQucHVzaCh6aXBDb250ZW50LmZpbGVzW2ZpbGVOYW1lXS5hc3luYygnYmFzZTY0JykudGhlbigoZW1pc3NpdmVGaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MuZW1pc3NpdmUgPSBgZGF0YTppbWFnZS8ke3RoaXMuR2V0QmFzZTY0RmlsZVR5cGUoZmlsZS5uYW1lKX07YmFzZTY0LCR7ZW1pc3NpdmVGaWxlfWA7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmVtaXNzaXZlRmlsZW5hbWUgPSBmaWxlTmFtZTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2Vudk1hcCcpID4gLTEgJiYgdGhpcy5GaWxlSXNJbWFnZShmaWxlLm5hbWUpKSB7XHJcbiAgICAgICAgICBhbGxMb2FkZWQucHVzaCh6aXBDb250ZW50LmZpbGVzW2ZpbGVOYW1lXS5hc3luYygnYmFzZTY0JykudGhlbigoZW52TWFwRmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmVudk1hcCA9IGBkYXRhOmltYWdlLyR7dGhpcy5HZXRCYXNlNjRGaWxlVHlwZShmaWxlLm5hbWUpfTtiYXNlNjQsJHtlbnZNYXBGaWxlfWA7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmVudk1hcEZpbGVuYW1lID0gZmlsZU5hbWU7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWxlLm5hbWUuaW5kZXhPZignLmpwJykgPiAtMSkge1xyXG4gICAgICAgICAgYWxsTG9hZGVkLnB1c2goemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV0uYXN5bmMoJ2Jhc2U2NCcpLnRoZW4oKHRleHR1cmVGaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MudGV4dHVyZSA9ICdkYXRhOmltYWdlL2pwZWc7YmFzZTY0LCcgKyB0ZXh0dXJlRmlsZTtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MudGV4dHVyZUZpbGVuYW1lID0gZmlsZU5hbWU7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWxlLm5hbWUuaW5kZXhPZignLmpzb24nKSA+IC0xKSB7XHJcbiAgICAgICAgICBhbGxMb2FkZWQucHVzaCh6aXBDb250ZW50LmZpbGVzW2ZpbGVOYW1lXS5hc3luYygnc3RyaW5nJykudGhlbigoc2V0dGluZ3NGaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc2V0dGluZ3NGaWxlT2JqID0gSlNPTi5wYXJzZShzZXR0aW5nc0ZpbGUpO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBzZXR0aW5nc0ZpbGVPYmopIHtcclxuICAgICAgICAgICAgICBpZiAoc2V0dGluZ3NGaWxlT2JqLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLnNldHRpbmdzW2tleV0gPSBzZXR0aW5nc0ZpbGVPYmpba2V5XTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGF3YWl0IFByb21pc2UuYWxsKGFsbExvYWRlZCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBMb2FkRmlsZUNvbnRlbnRGcm9tWmlwKHppcDogYW55LCBmaWxlTmFtZTogc3RyaW5nLCBiYXNlNjQ6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24pID0+IHtcclxuICAgICAgaWYgKHppcCAmJiBmaWxlTmFtZSkge1xyXG4gICAgICAgIHppcC5hc3luYyhiYXNlNjQgPyAnYmFzZTY0JyA6ICdzdHJpbmcnKS50aGVuKChmaWxlQ29udGVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoYmFzZTY0KSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUoYGRhdGE6aW1hZ2UvJHt0aGlzLkdldEJhc2U2NEZpbGVUeXBlKGZpbGVOYW1lKX07YmFzZTY0LCR7ZmlsZUNvbnRlbnR9YCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXNvbHZlKGZpbGVDb250ZW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXNvbHZlKHVuZGVmaW5lZCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgRmlsZUlzSW1hZ2UoZmlsZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZXh0OiBzdHJpbmcgPSBmaWxlTmFtZS5zdWJzdHJpbmcoZmlsZU5hbWUubGFzdEluZGV4T2YoJy4nKSArIDEsIGZpbGVOYW1lLmxlbmd0aCkudG9Mb3dlckNhc2UoKTtcclxuICAgIHN3aXRjaCAoZXh0KSB7XHJcbiAgICAgIGNhc2UgJ2pwZyc6XHJcbiAgICAgIGNhc2UgJ2pwZWcnOlxyXG4gICAgICBjYXNlICdwbmcnOlxyXG4gICAgICBjYXNlICdibXAnOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIEdldEJhc2U2NEZpbGVUeXBlKGZpbGVOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZXh0OiBzdHJpbmcgPSBmaWxlTmFtZS5zdWJzdHJpbmcoZmlsZU5hbWUubGFzdEluZGV4T2YoJy4nKSArIDEsIGZpbGVOYW1lLmxlbmd0aCkudG9Mb3dlckNhc2UoKTtcclxuICAgIHN3aXRjaCAoZXh0KSB7XHJcbiAgICAgIGNhc2UgJ2pwZyc6XHJcbiAgICAgIGNhc2UgJ2pwZWcnOlxyXG4gICAgICAgIHJldHVybiAnanBlZyc7XHJcbiAgICAgIGNhc2UgJ3BuZyc6XHJcbiAgICAgICAgcmV0dXJuICdwbmcnO1xyXG4gICAgICBjYXNlICdibXAnOlxyXG4gICAgICAgIHJldHVybiAnYm1wJztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gJ2pwZWcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gR2V0IHRoZSBjb250ZW50XHJcbiAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgR2V0WmlwQ29udGVudChmaWxlKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGpzemlwID0gbmV3IEpTWmlwKCk7XHJcbiAgICAgIHJldHVybiBhd2FpdCBqc3ppcC5sb2FkQXN5bmMoZmlsZSk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
297
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWF0aW9uLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL3ZhcmlhdGlvbi11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsYUFBYTtBQUNiLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixXQUFXO0FBQ1gsTUFBTSxPQUFPLGNBQWM7SUFHbEIsTUFBTSxDQUFDLFVBQVU7UUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU0sTUFBTSxDQUFPLGFBQWEsQ0FBQyxTQUFpQixFQUFFLFFBQWdCOztZQUNuRSxPQUFPLElBQUksT0FBTyxDQUFDLENBQU8sT0FBaUIsRUFBRSxNQUFnQixFQUFFLEVBQUU7Z0JBQy9ELElBQUksQ0FBQyxRQUFRLEVBQUU7b0JBQ2IsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNmO2dCQUNELElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ2xDLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUN2QztnQkFDRCxNQUFNLEVBQUUsR0FBVyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZFLElBQUk7b0JBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7d0JBQzVCLFNBQVMsSUFBSSxHQUFHLENBQUM7cUJBQ2xCO29CQUNELElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLEVBQUU7d0JBQy9DLE9BQU8sQ0FBQyxLQUFL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O1FBQ0gsQ0FBQztLQUFBOztBQWhSYyw0QkFBYSxHQUFxQixJQUFJLEdBQUcsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgVEhSRUUgZnJvbSBcInRocmVlXCI7XHJcbmltcG9ydCB7VmFyaWF0aW9uU2V0dGluZ3N9IGZyb20gXCIuLi9tb2RlbC92YXJpYXRpb24tc2V0dGluZ3NcIjtcclxuLy8gQHRzLWlnbm9yZVxyXG5pbXBvcnQgSlNaaXAgZnJvbSBcImpzemlwXCI7XHJcblxyXG4vLyBAZHluYW1pY1xyXG5leHBvcnQgY2xhc3MgVmFyaWF0aW9uVXRpbHMge1xyXG4gIHByaXZhdGUgc3RhdGljIE1hdGVyaWFsQ2FjaGU6IE1hcDxzdHJpbmcsIGFueT4gPSBuZXcgTWFwKCk7XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgQ2xlYXJDYWNoZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuTWF0ZXJpYWxDYWNoZS5jbGVhcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBhc3luYyBMb2FkVmFyaWF0aW9uKGFzc2V0UGF0aDogc3RyaW5nLCBmaWxlTmFtZTogc3RyaW5nKTogUHJvbWlzZTxWYXJpYXRpb25TZXR0aW5ncz4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlOiBGdW5jdGlvbiwgcmVqZWN0OiBGdW5jdGlvbikgPT4ge1xyXG4gICAgICBpZiAoIWZpbGVOYW1lKSB7XHJcbiAgICAgICAgcmVzb2x2ZShudWxsKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZmlsZU5hbWUuaW5kZXhPZignaW9uZTNkJykgPCAwKSB7XHJcbiAgICAgICAgZmlsZU5hbWUgPSBmaWxlTmFtZS5jb25jYXQoJy5pb25lM2QnKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBpZDogc3RyaW5nID0gZmlsZU5hbWUuc3Vic3RyKDAsIGZpbGVOYW1lLmxhc3RJbmRleE9mKCcuaW9uZTNkJykpO1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGlmICghYXNzZXRQYXRoLmVuZHNXaXRoKCcvJykpIHtcclxuICAgICAgICAgIGFzc2V0UGF0aCArPSAnLyc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghd2luZG93Lmhhc093blByb3BlcnR5KCdkb3dubG9hZFZhcmlhdGlvbicpKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdkb3dubG9hZFZhcmlhdGlvbiBub3QgZGVmaW5lZCBpbiB3aW5kb3cgZ2xvYmFsJyk7XHJcbiAgICAgICAgICByZWplY3QoJ2Rvd25sb2FkVmFyaWF0aW9uIG5vdCBkZWZpbmVkIGluIHdpbmRvdyBnbG9iYWwnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGZpbGU7XHJcbiAgICAgICAgaWYgKHRoaXMuTWF0ZXJpYWxDYWNoZS5oYXMoaWQpKSB7XHJcbiAgICAgICAgICByZXNvbHZlKHRoaXMuTWF0ZXJpYWxDYWNoZS5nZXQoaWQpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZmlsZSA9IGF3YWl0ICh3aW5kb3cgYXMgYW55KS5kb3dubG9hZFZhcmlhdGlvbihgJHthc3NldFBhdGgucmVwbGFjZSgnaHR0cHM6Ly9jZG4xLmNvbGlqbi1pdC5ubC8nLCAnJyl9dmFyaWF0aW9uLyR7ZmlsZU5hbWV9YCk7XHJcbiAgICAgICAgICBjb25zdCBzZXR0aW5nczogVmFyaWF0aW9uU2V0dGluZ3MgPSBhd2FpdCBWYXJpYXRpb25VdGlscy5HZXRWYXJpYXRpb25TZXR0aW5nc0Zyb21GaWxlKGlkLCBmaWxlKTtcclxuICAgICAgICAgIHRoaXMuTWF0ZXJpYWxDYWNoZS5zZXQoaWQsIHNldHRpbmdzKTtcclxuICAgICAgICAgIHJlc29sdmUoc2V0dGluZ3MpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgY29uc3QgbXV0ZSA9IGVycjtcclxuICAgICAgICByZWplY3QoZXJyKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyBwdWJsaWMgc3RhdGljIEdldE1hdGVyaWFsRnJvbU5hbWUodmFyaWF0aW9uRm9sZGVyOiBzdHJpbmcsIG1hdGVyaWFsOiBhbnkpOiBQcm9taXNlPE1lc2hTdGFuZGFyZE1hdGVyaWFsPiB7XHJcbiAgLy8gICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uKSA9PiB7XHJcbiAgLy8gICAgIGlmICghbWF0ZXJpYWwpIHtcclxuICAvLyAgICAgICByZXNvbHZlKG51bGwpO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIGlmICh0aGlzLk1hdGVyaWFsQ2FjaGUuaGFzKG1hdGVyaWFsLm5hbWUpKSB7XHJcbiAgLy8gICAgICAgcmVzb2x2ZSh0aGlzLk1hdGVyaWFsQ2FjaGUuZ2V0KG1hdGVyaWFsLm5hbWUpLmNsb25lKCkpO1xyXG4gIC8vICAgICB9IGVsc2Uge1xyXG4gIC8vICAgICAgIFZhcmlhdGlvblV0aWxzLkxvYWRWYXJpYXRpb24odmFyaWF0aW9uRm9sZGVyLCBtYXRlcmlhbC5uYW1lLCBmYWxzZSkudGhlbigoc2V0dGluZ3M6IFZhcmlhdGlvblNldHRpbmdzKSA9PiB7XHJcbiAgLy8gICAgICAgICBpZiAoc2V0dGluZ3MpIHtcclxuICAvLyAgICAgICAgICAgQXNzZXRVdGlscy5DcmVhdGVNYXRlcmlhbEZyb21Bc3NldChzZXR0aW5ncykudGhlbigobWF0ZXJpYWxPYmo6IE1hdGVyaWFsKSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgY29uc3QgbWF0ZXJpYWxQYXJhbXM6IE1lc2hTdGFuZGFyZE1hdGVyaWFsUGFyYW1ldGVycyA9IHt9O1xyXG4gIC8vICAgICAgICAgICAgIG1hdGVyaWFsUGFyYW1zLm5hbWUgPSBtYXRlcmlhbC5uYW1lO1xyXG4gIC8vICAgICAgICAgICAgIG1hdGVyaWFsUGFyYW1zLm1hcCA9IG1hdGVyaWFsT2JqLnRleHR1cmU7XHJcbiAgLy8gICAgICAgICAgICAgbWF0ZXJpYWxQYXJhbXMubm9ybWFsTWFwID0gbWF0ZXJpYWxPYmoubm9ybWFsO1xyXG4gIC8vICAgICAgICAgICAgIG1hdGVyaWFsUGFyYW1zLmFvTWFwID0gbWF0ZXJpYWxPYmouYW87XHJcbiAgLy8gICAgICAgICAgICAgbWF0ZXJpYWxQYXJhbXMucm91Z2huZXNzTWFwID0gbWF0ZXJpYWxPYmoucm91Z2huZXNzO1xyXG4gIC8vICAgICAgICAgICAgIG1hdGVyaWFsUGFyYW1zLm1ldGFsbmVzc01hcCA9IG1hdGVyaWFsT2JqLm1ldGFsbmVzcztcclxuICAvLyAgICAgICAgICAgICBtYXRlcmlhbFBhcmFtcy5yb3VnaG5lc3MgPSAxO1xyXG4gIC8vICAgICAgICAgICAgIG1hdGVyaWFsUGFyYW1zLm1ldGFsbmVzcyA9IDE7XHJcbiAgLy8gICAgICAgICAgICAgY29uc3QgcGJyTWF0OiBNZXNoU3RhbmRhcmRNYXRlcmlhbCA9IG5ldyBNZXNoU3RhbmRhcmRNYXRlcmlhbChtYXRlcmlhbFBhcmFtcyk7XHJcbiAgLy8gICAgICAgICAgICAgdGhpcy5NYXRlcmlhbENhY2hlLnNldChtYXRlcmlhbC5uYW1lLCBwYnJNYXQpO1xyXG4gIC8vICAgICAgICAgICAgIHJlc29sdmUocGJyTWF0LmNsb25lKCkpO1xyXG4gIC8vICAgICAgICAgICB9KTtcclxuICAvLyAgICAgICAgIH0gZWxzZSB7XHJcbiAgLy8gICAgICAgICAgIHJlc29sdmUobWF0ZXJpYWwpO1xyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH0pO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGFzeW5jIEdldFZhcmlhdGlvblNldHRpbmdzRnJvbUZpbGUoaWQ6IHN0cmluZywgY29tcHJlc3NlZEZpbGU6IGFueSk6IFByb21pc2U8VmFyaWF0aW9uU2V0dGluZ3M+IHtcclxuICAgIGlmICghY29tcHJlc3NlZEZpbGUpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCB6aXBDb250ZW50ID0gYXdhaXQgVmFyaWF0aW9uVXRpbHMuR2V0WmlwQ29udGVudChjb21wcmVzc2VkRmlsZSk7XHJcbiAgICBjb25zdCB2YXJpYXRpb25TZXR0aW5nczogVmFyaWF0aW9uU2V0dGluZ3MgPSBuZXcgVmFyaWF0aW9uU2V0dGluZ3MoKTtcclxuICAgIGxldCBpbmRleDtcclxuICAgIHZhcmlhdGlvblNldHRpbmdzLmlkID0gaWQ7XHJcblxyXG4gICAgaWYgKHppcENvbnRlbnQpIHtcclxuICAgICAgaWYgKHppcENvbnRlbnQuZmlsZXNbJ2luZGV4Lmpzb24nXSkge1xyXG4gICAgICAgIGNvbnN0IGluZGV4RmlsZTogc3RyaW5nID0gYXdhaXQgemlwQ29udGVudC5maWxlc1snaW5kZXguanNvbiddLmFzeW5jKCdzdHJpbmcnKTtcclxuICAgICAgICBpbmRleCA9IEpTT04ucGFyc2UoaW5kZXhGaWxlKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaW5kZXgpIHtcclxuICAgICAgICBhd2FpdCBWYXJpYXRpb25VdGlscy5DcmVhdGVTZXR0aW5nc0Jhc2VkT25JbmRleChpbmRleCwgdmFyaWF0aW9uU2V0dGluZ3MsIHppcENvbnRlbnQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGF3YWl0IFZhcmlhdGlvblV0aWxzLkNyZWF0ZVNldHRpbmdzQmFzZWRPbkZpbGVOYW1lKHZhcmlhdGlvblNldHRpbmdzLCB6aXBDb250ZW50KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhcmlhdGlvblNldHRpbmdzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgQ3JlYXRlU2V0dGluZ3NCYXNlZE9uSW5kZXgoaW5kZXg6IGFueSwgdmFyaWF0aW9uU2V0dGluZ3M6IFZhcmlhdGlvblNldHRpbmdzLCB6aXBDb250ZW50OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmIChpbmRleC5ub3JtYWxGaWxlKSB7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLm5vcm1hbCA9IGF3YWl0IFZhcmlhdGlvblV0aWxzLkxvYWRGaWxlQ29udGVudEZyb21aaXAoemlwQ29udGVudC5maWxlc1tpbmRleC5ub3JtYWxGaWxlXSwgaW5kZXgubm9ybWFsRmlsZSk7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLm5vcm1hbEZpbGVuYW1lID0gaW5kZXgubm9ybWFsRmlsZTtcclxuICAgIH1cclxuICAgIGlmIChpbmRleC5kaWZmdXNlRmlsZSkge1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy50ZXh0dXJlID0gYXdhaXQgVmFyaWF0aW9uVXRpbHMuTG9hZEZpbGVDb250ZW50RnJvbVppcCh6aXBDb250ZW50LmZpbGVzW2luZGV4LmRpZmZ1c2VGaWxlXSwgaW5kZXguZGlmZnVzZUZpbGUpO1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy50ZXh0dXJlRmlsZW5hbWUgPSBpbmRleC5kaWZmdXNlRmlsZTtcclxuICAgIH1cclxuICAgIGlmIChpbmRleC5vcm1GaWxlKSB7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLm9ybSA9IGF3YWl0IFZhcmlhdGlvblV0aWxzLkxvYWRGaWxlQ29udGVudEZyb21aaXAoemlwQ29udGVudC5maWxlc1tpbmRleC5vcm1GaWxlXSwgaW5kZXgub3JtRmlsZSk7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLm9ybUZpbGVuYW1lID0gaW5kZXgub3JtRmlsZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChpbmRleC5hb0ZpbGUpIHtcclxuICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5hbyA9IGF3YWl0IFZhcmlhdGlvblV0aWxzLkxvYWRGaWxlQ29udGVudEZyb21aaXAoemlwQ29udGVudC5maWxlc1tpbmRleC5hb0ZpbGVdLCBpbmRleC5hb0ZpbGUpO1xyXG4gICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmFvRmlsZW5hbWUgPSBpbmRleC5hb0ZpbGU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGluZGV4Lm1ldGFsbmVzc0ZpbGUpIHtcclxuICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5tZXRhbG5lc3MgPSBhd2FpdCBWYXJpYXRpb25VdGlscy5Mb2FkRmlsZUNvbnRlbnRGcm9tWmlwKHppcENvbnRlbnQuZmlsZXNbaW5kZXgubWV0YWxuZXNzRmlsZV0sIGluZGV4Lm1ldGFsbmVzc0ZpbGUpO1xyXG4gICAgICAgIHZhcmlhdGlvblNldHRpbmdzLm1ldGFsbmVzc0ZpbGVuYW1lID0gaW5kZXgubWV0YWxuZXNzRmlsZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaW5kZXgucm91Z2huZXNzRmlsZSkge1xyXG4gICAgICAgIHZhcmlhdGlvblNldHRpbmdzLnJvdWdobmVzcyA9IGF3YWl0IFZhcmlhdGlvblV0aWxzLkxvYWRGaWxlQ29udGVudEZyb21aaXAoemlwQ29udGVudC5maWxlc1tpbmRleC5yb3VnaG5lc3NGaWxlXSwgaW5kZXgucm91Z2huZXNzRmlsZSk7XHJcbiAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3Mucm91Z2huZXNzRmlsZW5hbWUgPSBpbmRleC5yb3VnaG5lc3NGaWxlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoaW5kZXguZGlzcGxhY2VtZW50RmlsZSkge1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy5kaXNwbGFjZW1lbnQgPSBhd2FpdCBWYXJpYXRpb25VdGlscy5Mb2FkRmlsZUNvbnRlbnRGcm9tWmlwKHppcENvbnRlbnQuZmlsZXNbaW5kZXguZGlzcGxhY2VtZW50RmlsZV0sIGluZGV4LmRpc3BsYWNlbWVudEZpbGUpO1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy5kaXNwbGFjZW1lbnRGaWxlbmFtZSA9IGluZGV4LmRpc3BsYWNlbWVudEZpbGU7XHJcbiAgICB9XHJcbiAgICBpZiAoaW5kZXguZW1pc3NpdmVGaWxlKSB7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLmVtaXNzaXZlID0gYXdhaXQgVmFyaWF0aW9uVXRpbHMuTG9hZEZpbGVDb250ZW50RnJvbVppcCh6aXBDb250ZW50LmZpbGVzW2luZGV4LmVtaXNzaXZlRmlsZV0sIGluZGV4LmVtaXNzaXZlRmlsZSk7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLmVtaXNzaXZlRmlsZW5hbWUgPSBpbmRleC5lbWlzc2l2ZUZpbGU7XHJcbiAgICB9XHJcbiAgICBpZiAoaW5kZXguZW52TWFwRmlsZSkge1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy5lbnZNYXAgPSBhd2FpdCBWYXJpYXRpb25VdGlscy5Mb2FkRmlsZUNvbnRlbnRGcm9tWmlwKHppcENvbnRlbnQuZmlsZXNbaW5kZXguZW52TWFwRmlsZV0sIGluZGV4LmVudk1hcEZpbGUpO1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy5lbnZNYXBGaWxlbmFtZSA9IGluZGV4LmVudk1hcEZpbGU7XHJcbiAgICB9XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy5zZXR0aW5ncyA9XHJcbiAgICAgICAgYXdhaXQgVmFyaWF0aW9uVXRpbHMuTG9hZEZpbGVDb250ZW50RnJvbVppcCh6aXBDb250ZW50LmZpbGVzWydyZXBlYXQuanNvbiddLCAncmVwZWF0Lmpzb24nLCBmYWxzZSkgfHwge307XHJcbiAgICBPYmplY3QuYXNzaWduKHZhcmlhdGlvblNldHRpbmdzLnNldHRpbmdzLCBpbmRleC5yZXBlYXQpO1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3Muc2V0dGluZ3MubWV0YWxuZXNzID0gaW5kZXgubWV0YWxuZXNzO1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3Muc2V0dGluZ3Mucm91Z2huZXNzID0gaW5kZXgucm91Z2huZXNzO1xyXG4gICAgaWYgKGluZGV4LnNoZWVuQ29sb3IpIHtcclxuICAgICAgdmFyaWF0aW9uU2V0dGluZ3Muc2V0dGluZ3Muc2hlZW5Db2xvciA9IG5ldyBUSFJFRS5Db2xvcihpbmRleC5zaGVlbkNvbG9yLnIsIGluZGV4LnNoZWVuQ29sb3IuZywgaW5kZXguc2hlZW5Db2xvci5iKTtcclxuICAgIH1cclxuICAgIHZhcmlhdGlvblNldHRpbmdzLnNldHRpbmdzLmVudk1hcCA9IGluZGV4LmVudk1hcDtcclxuICAgIHZhcmlhdGlvblNldHRpbmdzLnNldHRpbmdzLmVudk1hcEludGVuc2l0eSA9IGluZGV4LmVudk1hcEludGVuc2l0eTtcclxuICAgIHZhcmlhdGlvblNldHRpbmdzLnNldHRpbmdzLnRyYW5zcGFyZW50ID0gaW5kZXgudHJhbnNwYXJlbnQ7XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy5zZXR0aW5ncy5vcGFjaXR5ID0gaW5kZXgub3BhY2l0eTtcclxuICAgIGlmIChpbmRleC5lbWlzc2l2ZVZhbHVlKSB7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLnNldHRpbmdzLmVtaXNzaXZlVmFsdWUgPSBuZXcgVEhSRUUuQ29sb3IoaW5kZXguZW1pc3NpdmVWYWx1ZS5yLCBpbmRleC5lbWlzc2l2ZVZhbHVlLmcsIGluZGV4LmVtaXNzaXZlVmFsdWUuYik7XHJcbiAgICB9XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy5zZXR0aW5ncy5lbWlzc2l2ZUludGVuc2l0eSA9IGluZGV4LmVtaXNzaXZlSW50ZW5zaXR5O1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3Muc2V0dGluZ3MucmVmbGVjdGl2aXR5ID0gaW5kZXgucmVmbGVjdGl2aXR5O1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3Muc2V0dGluZ3MuZGlzcGxhY2VtZW50VmFsdWUgPSBpbmRleC5kaXNwbGFjZW1lbnRWYWx1ZTtcclxuICAgIHZhcmlhdGlvblNldHRpbmdzLnNldHRpbmdzLnNpZGUgPSBpbmRleC5zaWRlO1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3Muc2V0dGluZ3MudHJhbnNwYXJlbmN5ID0gaW5kZXgudHJhbnNwYXJlbmN5O1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3Muc2V0dGluZ3MudHJhbnNtaXNzaW9uID0gaW5kZXgudHJhbnNtaXNzaW9uO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgQ3JlYXRlU2V0dGluZ3NCYXNlZE9uRmlsZU5hbWUodmFyaWF0aW9uU2V0dGluZ3M6IFZhcmlhdGlvblNldHRpbmdzLCB6aXBDb250ZW50OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IGFsbExvYWRlZDogUHJvbWlzZTxWYXJpYXRpb25TZXR0aW5ncz5bXSA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBmaWxlTmFtZSBpbiB6aXBDb250ZW50LmZpbGVzKSB7XHJcbiAgICAgIGlmICh6aXBDb250ZW50LmZpbGVzLmhhc093blByb3BlcnR5KGZpbGVOYW1lKSkge1xyXG4gICAgICAgIGNvbnN0IGZpbGU6IGFueSA9IGF3YWl0IHppcENvbnRlbnQuZmlsZXNbZmlsZU5hbWVdO1xyXG4gICAgICAgIGlmIChmaWxlLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdub3JtYWwnKSA+IC0xICYmIHRoaXMuRmlsZUlzSW1hZ2UoZmlsZS5uYW1lKSkge1xyXG4gICAgICAgICAgYWxsTG9hZGVkLnB1c2goemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV0uYXN5bmMoJ2Jhc2U2NCcpLnRoZW4oKG5vcm1hbEZpbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5ub3JtYWwgPSBgZGF0YTppbWFnZS8ke3RoaXMuR2V0QmFzZTY0RmlsZVR5cGUoZmlsZS5uYW1lKX07YmFzZTY0LCR7bm9ybWFsRmlsZX1gO1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5ub3JtYWxGaWxlbmFtZSA9IGZpbGVOYW1lO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZignYW8nKSA+IC0xICYmIHRoaXMuRmlsZUlzSW1hZ2UoZmlsZS5uYW1lKSkge1xyXG4gICAgICAgICAgYWxsTG9hZGVkLnB1c2goemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV0uYXN5bmMoJ2Jhc2U2NCcpLnRoZW4oKGFvRmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmFvID0gYGRhdGE6aW1hZ2UvJHt0aGlzLkdldEJhc2U2NEZpbGVUeXBlKGZpbGUubmFtZSl9O2Jhc2U2NCwke2FvRmlsZX1gO1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5hb0ZpbGVuYW1lID0gZmlsZU5hbWU7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWxlLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdtZXRhbG5lc3MnKSA+IC0xICYmIHRoaXMuRmlsZUlzSW1hZ2UoZmlsZS5uYW1lKSkge1xyXG4gICAgICAgICAgYWxsTG9hZGVkLnB1c2goemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV0uYXN5bmMoJ2Jhc2U2NCcpLnRoZW4oKG1ldGFsbmVzc0ZpbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5tZXRhbG5lc3MgPSBgZGF0YTppbWFnZS8ke3RoaXMuR2V0QmFzZTY0RmlsZVR5cGUoZmlsZS5uYW1lKX07YmFzZTY0LCR7bWV0YWxuZXNzRmlsZX1gO1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5tZXRhbG5lc3NGaWxlbmFtZSA9IGZpbGVOYW1lO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZigncm91Z2huZXNzJykgPiAtMSAmJiB0aGlzLkZpbGVJc0ltYWdlKGZpbGUubmFtZSkpIHtcclxuICAgICAgICAgIGFsbExvYWRlZC5wdXNoKHppcENvbnRlbnQuZmlsZXNbZmlsZU5hbWVdLmFzeW5jKCdiYXNlNjQnKS50aGVuKChyb3VnaG5lc3NGaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3Mucm91Z2huZXNzID0gYGRhdGE6aW1hZ2UvJHt0aGlzLkdldEJhc2U2NEZpbGVUeXBlKGZpbGUubmFtZSl9O2Jhc2U2NCwke3JvdWdobmVzc0ZpbGV9YDtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3Mucm91Z2huZXNzRmlsZW5hbWUgPSBmaWxlTmFtZTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2RpZmZ1c2UnKSA+IC0xICYmIHRoaXMuRmlsZUlzSW1hZ2UoZmlsZS5uYW1lKSkge1xyXG4gICAgICAgICAgYWxsTG9hZGVkLnB1c2goemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV0uYXN5bmMoJ2Jhc2U2NCcpLnRoZW4oKGRpZmZ1c2VGaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MudGV4dHVyZSA9IGBkYXRhOmltYWdlLyR7dGhpcy5HZXRCYXNlNjRGaWxlVHlwZShmaWxlLm5hbWUpfTtiYXNlNjQsJHtkaWZmdXNlRmlsZX1gO1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy50ZXh0dXJlRmlsZW5hbWUgPSBmaWxlTmFtZTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2Rpc3BsYWNlbWVudCcpID4gLTEgJiYgdGhpcy5GaWxlSXNJbWFnZShmaWxlLm5hbWUpKSB7XHJcbiAgICAgICAgICBhbGxMb2FkZWQucHVzaCh6aXBDb250ZW50LmZpbGVzW2ZpbGVOYW1lXS5hc3luYygnYmFzZTY0JykudGhlbigoZGlzcGxhY2VtZW50RmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmRpc3BsYWNlbWVudCA9IGBkYXRhOmltYWdlLyR7dGhpcy5HZXRCYXNlNjRGaWxlVHlwZShmaWxlLm5hbWUpfTtiYXNlNjQsJHtkaXNwbGFjZW1lbnRGaWxlfWA7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmRpc3BsYWNlbWVudEZpbGVuYW1lID0gZmlsZU5hbWU7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWxlLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdlbWlzc2l2ZScpID4gLTEgJiYgdGhpcy5GaWxlSXNJbWFnZShmaWxlLm5hbWUpKSB7XHJcbiAgICAgICAgICBhbGxMb2FkZWQucHVzaCh6aXBDb250ZW50LmZpbGVzW2ZpbGVOYW1lXS5hc3luYygnYmFzZTY0JykudGhlbigoZW1pc3NpdmVGaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MuZW1pc3NpdmUgPSBgZGF0YTppbWFnZS8ke3RoaXMuR2V0QmFzZTY0RmlsZVR5cGUoZmlsZS5uYW1lKX07YmFzZTY0LCR7ZW1pc3NpdmVGaWxlfWA7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmVtaXNzaXZlRmlsZW5hbWUgPSBmaWxlTmFtZTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2Vudk1hcCcpID4gLTEgJiYgdGhpcy5GaWxlSXNJbWFnZShmaWxlLm5hbWUpKSB7XHJcbiAgICAgICAgICBhbGxMb2FkZWQucHVzaCh6aXBDb250ZW50LmZpbGVzW2ZpbGVOYW1lXS5hc3luYygnYmFzZTY0JykudGhlbigoZW52TWFwRmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmVudk1hcCA9IGBkYXRhOmltYWdlLyR7dGhpcy5HZXRCYXNlNjRGaWxlVHlwZShmaWxlLm5hbWUpfTtiYXNlNjQsJHtlbnZNYXBGaWxlfWA7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmVudk1hcEZpbGVuYW1lID0gZmlsZU5hbWU7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWxlLm5hbWUuaW5kZXhPZignLmpwJykgPiAtMSkge1xyXG4gICAgICAgICAgYWxsTG9hZGVkLnB1c2goemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV0uYXN5bmMoJ2Jhc2U2NCcpLnRoZW4oKHRleHR1cmVGaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MudGV4dHVyZSA9ICdkYXRhOmltYWdlL2pwZWc7YmFzZTY0LCcgKyB0ZXh0dXJlRmlsZTtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MudGV4dHVyZUZpbGVuYW1lID0gZmlsZU5hbWU7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWxlLm5hbWUuaW5kZXhPZignLmpzb24nKSA+IC0xKSB7XHJcbiAgICAgICAgICBhbGxMb2FkZWQucHVzaCh6aXBDb250ZW50LmZpbGVzW2ZpbGVOYW1lXS5hc3luYygnc3RyaW5nJykudGhlbigoc2V0dGluZ3NGaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc2V0dGluZ3NGaWxlT2JqID0gSlNPTi5wYXJzZShzZXR0aW5nc0ZpbGUpO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBzZXR0aW5nc0ZpbGVPYmopIHtcclxuICAgICAgICAgICAgICBpZiAoc2V0dGluZ3NGaWxlT2JqLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLnNldHRpbmdzW2tleV0gPSBzZXR0aW5nc0ZpbGVPYmpba2V5XTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGF3YWl0IFByb21pc2UuYWxsKGFsbExvYWRlZCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBMb2FkRmlsZUNvbnRlbnRGcm9tWmlwKHppcDogYW55LCBmaWxlTmFtZTogc3RyaW5nLCBiYXNlNjQ6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24pID0+IHtcclxuICAgICAgaWYgKHppcCAmJiBmaWxlTmFtZSkge1xyXG4gICAgICAgIHppcC5hc3luYyhiYXNlNjQgPyAnYmFzZTY0JyA6ICdzdHJpbmcnKS50aGVuKChmaWxlQ29udGVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoYmFzZTY0KSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUoYGRhdGE6aW1hZ2UvJHt0aGlzLkdldEJhc2U2NEZpbGVUeXBlKGZpbGVOYW1lKX07YmFzZTY0LCR7ZmlsZUNvbnRlbnR9YCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXNvbHZlKGZpbGVDb250ZW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXNvbHZlKHVuZGVmaW5lZCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgRmlsZUlzSW1hZ2UoZmlsZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZXh0OiBzdHJpbmcgPSBmaWxlTmFtZS5zdWJzdHJpbmcoZmlsZU5hbWUubGFzdEluZGV4T2YoJy4nKSArIDEsIGZpbGVOYW1lLmxlbmd0aCkudG9Mb3dlckNhc2UoKTtcclxuICAgIHN3aXRjaCAoZXh0KSB7XHJcbiAgICAgIGNhc2UgJ2pwZyc6XHJcbiAgICAgIGNhc2UgJ2pwZWcnOlxyXG4gICAgICBjYXNlICdwbmcnOlxyXG4gICAgICBjYXNlICdibXAnOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIEdldEJhc2U2NEZpbGVUeXBlKGZpbGVOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZXh0OiBzdHJpbmcgPSBmaWxlTmFtZS5zdWJzdHJpbmcoZmlsZU5hbWUubGFzdEluZGV4T2YoJy4nKSArIDEsIGZpbGVOYW1lLmxlbmd0aCkudG9Mb3dlckNhc2UoKTtcclxuICAgIHN3aXRjaCAoZXh0KSB7XHJcbiAgICAgIGNhc2UgJ2pwZyc6XHJcbiAgICAgIGNhc2UgJ2pwZWcnOlxyXG4gICAgICAgIHJldHVybiAnanBlZyc7XHJcbiAgICAgIGNhc2UgJ3BuZyc6XHJcbiAgICAgICAgcmV0dXJuICdwbmcnO1xyXG4gICAgICBjYXNlICdibXAnOlxyXG4gICAgICAgIHJldHVybiAnYm1wJztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gJ2pwZWcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gR2V0IHRoZSBjb250ZW50XHJcbiAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgR2V0WmlwQ29udGVudChmaWxlKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGpzemlwID0gbmV3IEpTWmlwKCk7XHJcbiAgICAgIHJldHVybiBhd2FpdCBqc3ppcC5sb2FkQXN5bmMoZmlsZSk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|