@deeksha2309/sunbird-collection-editor 8.0.7 → 8.0.8
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/deeksha2309-sunbird-collection-editor.d.ts.map +1 -0
- package/esm2022/deeksha2309-sunbird-collection-editor.mjs +5 -0
- package/esm2022/lib/collection-editor-library.module.mjs +30 -6
- package/esm2022/lib/components/answer/answer.component.mjs +6 -3
- package/esm2022/lib/components/app-loader/app-loader.component.mjs +30 -0
- package/esm2022/lib/components/asset-browser/asset-browser.component.mjs +30 -12
- package/esm2022/lib/components/assign-page-number/assign-page-number.component.mjs +1 -1
- package/esm2022/lib/components/bulk-upload/bulk-upload.component.mjs +447 -0
- package/esm2022/lib/components/ckeditor-tool/ckeditor-tool.component.mjs +30 -12
- package/esm2022/lib/components/collection-icon/collection-icon.component.mjs +3 -3
- package/esm2022/lib/components/csv-upload/csv-upload.component.mjs +2 -2
- package/esm2022/lib/components/editor/editor.component.mjs +143 -64
- package/esm2022/lib/components/fancy-tree/fancy-tree.component.mjs +91 -9
- package/esm2022/lib/components/header/header.component.mjs +27 -9
- package/esm2022/lib/components/library/library.component.mjs +4 -4
- package/esm2022/lib/components/library-list/library-list.component.mjs +4 -4
- package/esm2022/lib/components/library-player/library-player.component.mjs +4 -4
- package/esm2022/lib/components/meta-form/meta-form.component.mjs +10 -18
- package/esm2022/lib/components/options/options.component.mjs +40 -27
- package/esm2022/lib/components/progress-status/progress-status.component.mjs +1 -1
- package/esm2022/lib/components/publish-checklist/publish-checklist.component.mjs +6 -3
- package/esm2022/lib/components/question/question.component.mjs +185 -77
- package/esm2022/lib/components/question-option-sub-menu/question-option-sub-menu.component.mjs +36 -0
- package/esm2022/lib/components/quml-player/quml-player.component.mjs +2 -2
- package/esm2022/lib/components/qumlplayer-page/qumlplayer-page.component.mjs +3 -3
- package/esm2022/lib/components/relational-metadata/relational-metadata.component.mjs +80 -0
- package/esm2022/lib/components/resource-reorder/resource-reorder.component.mjs +3 -3
- package/esm2022/lib/components/slider/slider.component.mjs +46 -0
- package/esm2022/lib/components/template/template.component.mjs +3 -3
- package/esm2022/lib/components/translations/translations.component.mjs +132 -0
- package/esm2022/lib/directives/date-format/date-format.pipe.mjs +34 -0
- package/esm2022/lib/interfaces/CreationContext.mjs +2 -0
- package/esm2022/lib/interfaces/editor.mjs +1 -1
- package/esm2022/lib/interfaces/loader.mjs +2 -0
- package/esm2022/lib/pipes/interpolate.pipe.mjs +17 -0
- package/esm2022/lib/pipes/sanitize-html.pipe.mjs +6 -8
- package/esm2022/lib/services/bulk-job/bulk-job.service.mjs +67 -0
- package/esm2022/lib/services/config/category.config.json +1 -0
- package/esm2022/lib/services/config/editor.config.json +29 -2
- package/esm2022/lib/services/config/label.config.json +16 -3
- package/esm2022/lib/services/config/player.config.json +3 -0
- package/esm2022/lib/services/config/url.config.json +17 -1
- package/esm2022/lib/services/editor/editor.service.mjs +64 -26
- package/esm2022/lib/services/question/question.service.mjs +27 -35
- package/esm2022/lib/services/tree/tree.service.mjs +20 -5
- package/fesm2022/{project-sunbird-sunbird-collection-editor.mjs → deeksha2309-sunbird-collection-editor.mjs} +1779 -483
- package/fesm2022/deeksha2309-sunbird-collection-editor.mjs.map +1 -0
- package/index.d.ts +2 -2
- package/lib/collection-editor-library.module.d.ts +51 -43
- package/lib/collection-editor-library.module.d.ts.map +1 -1
- package/lib/components/answer/answer.component.d.ts +2 -1
- package/lib/components/answer/answer.component.d.ts.map +1 -1
- package/lib/components/app-loader/app-loader.component.d.ts +18 -0
- package/lib/components/app-loader/app-loader.component.d.ts.map +1 -0
- package/lib/components/asset-browser/asset-browser.component.d.ts.map +1 -1
- package/lib/components/bulk-upload/bulk-upload.component.d.ts +71 -0
- package/lib/components/bulk-upload/bulk-upload.component.d.ts.map +1 -0
- package/lib/components/ckeditor-tool/ckeditor-tool.component.d.ts +1 -1
- package/lib/components/ckeditor-tool/ckeditor-tool.component.d.ts.map +1 -1
- package/lib/components/editor/editor.component.d.ts +11 -7
- package/lib/components/editor/editor.component.d.ts.map +1 -1
- package/lib/components/fancy-tree/fancy-tree.component.d.ts +11 -3
- package/lib/components/fancy-tree/fancy-tree.component.d.ts.map +1 -1
- package/lib/components/header/header.component.d.ts +6 -2
- package/lib/components/header/header.component.d.ts.map +1 -1
- package/lib/components/library/library.component.d.ts +1 -1
- package/lib/components/library/library.component.d.ts.map +1 -1
- package/lib/components/meta-form/meta-form.component.d.ts +3 -4
- package/lib/components/meta-form/meta-form.component.d.ts.map +1 -1
- package/lib/components/options/options.component.d.ts +15 -7
- package/lib/components/options/options.component.d.ts.map +1 -1
- package/lib/components/publish-checklist/publish-checklist.component.d.ts +2 -1
- package/lib/components/publish-checklist/publish-checklist.component.d.ts.map +1 -1
- package/lib/components/question/question.component.d.ts +21 -28
- package/lib/components/question/question.component.d.ts.map +1 -1
- package/lib/components/question-option-sub-menu/question-option-sub-menu.component.d.ts +27 -0
- package/lib/components/question-option-sub-menu/question-option-sub-menu.component.d.ts.map +1 -0
- package/lib/components/relational-metadata/relational-metadata.component.d.ts +25 -0
- package/lib/components/relational-metadata/relational-metadata.component.d.ts.map +1 -0
- package/lib/components/slider/slider.component.d.ts +25 -0
- package/lib/components/slider/slider.component.d.ts.map +1 -0
- package/lib/components/translations/translations.component.d.ts +70 -0
- package/lib/components/translations/translations.component.d.ts.map +1 -0
- package/lib/directives/date-format/date-format.pipe.d.ts +20 -0
- package/lib/directives/date-format/date-format.pipe.d.ts.map +1 -0
- package/lib/interfaces/CreationContext.d.ts +11 -0
- package/lib/interfaces/CreationContext.d.ts.map +1 -0
- package/lib/interfaces/editor.d.ts +10 -5
- package/lib/interfaces/editor.d.ts.map +1 -1
- package/lib/interfaces/loader.d.ts +11 -0
- package/lib/interfaces/loader.d.ts.map +1 -0
- package/lib/pipes/interpolate.pipe.d.ts +8 -0
- package/lib/pipes/interpolate.pipe.d.ts.map +1 -0
- package/lib/pipes/sanitize-html.pipe.d.ts +4 -4
- package/lib/pipes/sanitize-html.pipe.d.ts.map +1 -1
- package/lib/services/bulk-job/bulk-job.service.d.ts +17 -0
- package/lib/services/bulk-job/bulk-job.service.d.ts.map +1 -0
- package/lib/services/editor/editor.service.d.ts +7 -4
- package/lib/services/editor/editor.service.d.ts.map +1 -1
- package/lib/services/question/question.service.d.ts +2 -2
- package/lib/services/question/question.service.d.ts.map +1 -1
- package/lib/services/tree/tree.service.d.ts +3 -1
- package/lib/services/tree/tree.service.d.ts.map +1 -1
- package/package.json +5 -5
- package/esm2022/project-sunbird-sunbird-collection-editor.mjs +0 -5
- package/fesm2022/project-sunbird-sunbird-collection-editor.mjs.map +0 -1
- package/project-sunbird-sunbird-collection-editor.d.ts.map +0 -1
|
@@ -62,6 +62,9 @@ export class TreeService {
|
|
|
62
62
|
if (attributions && _.isString(attributions)) {
|
|
63
63
|
newData.attributions = attributions.split(',');
|
|
64
64
|
}
|
|
65
|
+
else if (attributions && _.isArray(attributions)) {
|
|
66
|
+
newData.attributions = attributions;
|
|
67
|
+
}
|
|
65
68
|
else {
|
|
66
69
|
newData.attributions = [];
|
|
67
70
|
}
|
|
@@ -84,6 +87,9 @@ export class TreeService {
|
|
|
84
87
|
}
|
|
85
88
|
delete newData.maxTime;
|
|
86
89
|
delete newData.warningTime;
|
|
90
|
+
if (primaryCategory) {
|
|
91
|
+
newData.primaryCategory = primaryCategory;
|
|
92
|
+
}
|
|
87
93
|
this.setTreeCache(nodeId, newData, activeNode.data);
|
|
88
94
|
}
|
|
89
95
|
addNode(createType) {
|
|
@@ -144,10 +150,6 @@ export class TreeService {
|
|
|
144
150
|
}
|
|
145
151
|
return activeNode;
|
|
146
152
|
}
|
|
147
|
-
getParent() {
|
|
148
|
-
const activeNode = this.getActiveNode();
|
|
149
|
-
return activeNode?.getParent ? activeNode.getParent() : null;
|
|
150
|
-
}
|
|
151
153
|
setActiveNode(node) {
|
|
152
154
|
const rootFirstChildNode = this.getFirstChild();
|
|
153
155
|
if (node) {
|
|
@@ -157,6 +159,10 @@ export class TreeService {
|
|
|
157
159
|
rootFirstChildNode.setActive(true);
|
|
158
160
|
}
|
|
159
161
|
}
|
|
162
|
+
getParent() {
|
|
163
|
+
const selectedNode = this.getActiveNode();
|
|
164
|
+
return !_.isEmpty(selectedNode) ? selectedNode.getParent() : this.getNodeById(this.previousNode) || this.getFirstChild();
|
|
165
|
+
}
|
|
160
166
|
getFirstChild() {
|
|
161
167
|
let treeData;
|
|
162
168
|
try {
|
|
@@ -198,6 +204,15 @@ export class TreeService {
|
|
|
198
204
|
});
|
|
199
205
|
return nodes;
|
|
200
206
|
}
|
|
207
|
+
getLeafNodes() {
|
|
208
|
+
const nodes = [];
|
|
209
|
+
this.getActiveNode().visit((node) => {
|
|
210
|
+
if (!_.includes(node.icon, 'folder')) {
|
|
211
|
+
nodes.push(node);
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
return nodes;
|
|
215
|
+
}
|
|
201
216
|
highlightNode(nodeId, action) {
|
|
202
217
|
const nodeElem = this.getNodeById(nodeId);
|
|
203
218
|
if (!nodeElem) {
|
|
@@ -281,4 +296,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
281
296
|
providedIn: 'root'
|
|
282
297
|
}]
|
|
283
298
|
}], ctorParameters: function () { return [{ type: i1.ToasterService }, { type: i2.HelperService }, { type: i3.ConfigService }]; } });
|
|
284
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29sbGVjdGlvbi1lZGl0b3ItbGlicmFyeS9zcmMvbGliL3NlcnZpY2VzL3RyZWUvdHJlZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEtBQUssQ0FBQyxNQUFNLFdBQVcsQ0FBQztBQUkvQixPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFLM0MsTUFBTSxPQUFPLFdBQVc7SUFhdEIsWUFBb0IsY0FBOEIsRUFBVSxhQUE0QixFQUFTLGFBQTRCO1FBQXpHLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFYN0gsY0FBUyxHQUFHO1lBQ1YsYUFBYSxFQUFFLEVBQUU7WUFDakIsS0FBSyxFQUFFLEVBQUU7U0FDVixDQUFDO1FBR0YseUNBQXlDO1FBQ2pDLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQU0sU0FBUyxDQUFDLENBQUM7UUFDM0MsZ0JBQVcsR0FBb0IsSUFBSSxDQUFDLFlBQVk7YUFDN0QsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7SUFFNEMsQ0FBQztJQUUzSCxVQUFVLENBQUMsWUFBMkI7UUFDM0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUMs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QUFDLEtBQVU7UUFDbkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLHNFQUFzRSxDQUFDLENBQUM7SUFDbEgsQ0FBQzsrR0F0UlUsV0FBVzttSEFBWCxXQUFXLGNBRlYsTUFBTTs7NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgJ2pxdWVyeS5mYW5jeXRyZWUnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XG5kZWNsYXJlIHZhciAkOiBhbnk7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBJRWRpdG9yQ29uZmlnIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9lZGl0b3InO1xuaW1wb3J0IHsgVG9hc3RlclNlcnZpY2UgfSBmcm9tICcuLi90b2FzdGVyL3RvYXN0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vaGVscGVyL2hlbHBlci5zZXJ2aWNlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc2tpcFdoaWxlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL2NvbmZpZy9jb25maWcuc2VydmljZSc7XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBUcmVlU2VydmljZSB7XG4gIHB1YmxpYyBjb25maWc6IGFueTtcbiAgdHJlZUNhY2hlID0ge1xuICAgIG5vZGVzTW9kaWZpZWQ6IHt9LFxuICAgIG5vZGVzOiBbXVxuICB9O1xuICB0cmVlTmF0aXZlRWxlbWVudDogYW55O1xuICBvbWl0RmFsc2V5UHJvcHM6IGFueTtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgcHJpdmF0ZSBfdHJlZVN0YXR1cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4odW5kZWZpbmVkKTtcbiAgcHVibGljIHJlYWRvbmx5IHRyZWVTdGF0dXMkOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLl90cmVlU3RhdHVzJFxuICAgIC5hc09ic2VydmFibGUoKS5waXBlKHNraXBXaGlsZShzdGF0dXMgPT4gc3RhdHVzID09PSB1bmRlZmluZWQgfHwgc3RhdHVzID09PSBudWxsKSk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0b2FzdGVyU2VydmljZTogVG9hc3RlclNlcnZpY2UsIHByaXZhdGUgaGVscGVyU2VydmljZTogSGVscGVyU2VydmljZSwgcHVibGljIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UpIHsgfVxuXG4gIHB1YmxpYyBpbml0aWFsaXplKGVkaXRvckNvbmZpZzogSUVkaXRvckNvbmZpZykge1xuICAgIHRoaXMuY29uZmlnID0gZWRpdG9yQ29uZmlnLmNvbmZpZztcbiAgICB0aGlzLm9taXRGYWxzZXlQcm9wcyA9IF8uZ2V0KHRoaXMuY29uZmlnU2VydmljZS5lZGl0b3JDb25maWcsICdvbWl0RmFsc2V5UHJvcGVydGllcycpO1xuICB9XG5cbiAgbmV4dFRyZWVTdGF0dXMoc3RhdHVzKSB7XG4gICAgdGhpcy5fdHJlZVN0YXR1cyQubmV4dChzdGF0dXMpO1xuICB9XG5cbiAgc2V0VHJlZUVsZW1lbnQoZWwpIHtcbiAgICB0aGlzLnRyZWVOYXRpdmVFbGVtZW50ID0gZWw7XG4gIH1cblxuICB1cGRhdGVOb2RlKG1ldGFkYXRhLCBub2RlVG9CZVVwZGF0ZWQ/LCBwcmltYXJ5Q2F0ZWdvcnk/KSB7XG4gICAgdGhpcy5zZXROb2RlVGl0bGUobWV0YWRhdGEubmFtZSk7XG4gICAgdGhpcy51cGRhdGVUcmVlTm9kZU1ldGFkYXRhKG1ldGFkYXRhLCBub2RlVG9CZVVwZGF0ZWQsIHByaW1hcnlDYXRlZ29yeSk7XG4gIH1cblxuICB1cGRhdGVBcHBJY29uKGFwcEljb25VcmwpIHtcbiAgICBjb25zdCBhY3RpdmVOb2RlID0gdGhpcy5nZXRBY3RpdmVOb2RlKCk7XG4gICAgY29uc3Qgbm9kZUlkID0gYWN0aXZlTm9kZS5kYXRhLmlkO1xuICAgIGFjdGl2ZU5vZGUuZGF0YS5tZXRhZGF0YSA9IHsgLi4uYWN0aXZlTm9kZS5kYXRhLm1ldGFkYXRhLCBhcHBJY29uOiBhcHBJY29uVXJsIH07XG4gICAgdGhpcy5zZXRUcmVlQ2FjaGUobm9kZUlkLCB7IGFwcEljb246IGFwcEljb25VcmwgfSwgYWN0aXZlTm9kZS5kYXRhKTtcbiAgfVxuXG4gIHVwZGF0ZU1ldGFEYXRhUHJvcGVydHkoa2V5LCB2YWx1ZSkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldEZpcnN0Q2hpbGQoKTtcbiAgICBjb25zdCBub2RlSWQgPSBub2RlLmRhdGEuaWQ7XG4gICAgbm9kZS5kYXRhLm1ldGFkYXRhID0geyAuLi5ub2RlLmRhdGEubWV0YWRhdGEsIFtrZXldOiB2YWx1ZSB9O1xuICAgIHRoaXMuc2V0VHJlZUNhY2hlKG5vZGVJZCwgXy5tZXJnZSh7fSwgeyBba2V5XTogdmFsdWUgfSwgXy5waWNrKG5vZGUuZGF0YS5tZXRhZGF0YSwgWydvYmplY3RUeXBlJ10pKSk7XG4gIH1cblxuICB1cGRhdGVUcmVlTm9kZU1ldGFkYXRhKG5ld0RhdGE6IGFueSwgbm9kZVRvQmVVcGRhdGVkPzogYW55LCBwcmltYXJ5Q2F0ZWdvcnk/OiBhbnksIG9iamVjdFR5cGU/OiBhbnkpIHtcbiAgICBjb25zdCBhY3RpdmVOb2RlID0gIV8uaXNVbmRlZmluZWQobm9kZVRvQmVVcGRhdGVkKSA/IHRoaXMuZ2V0Tm9kZUJ5SWQobm9kZVRvQmVVcGRhdGVkKSA6IHRoaXMuZ2V0QWN0aXZlTm9kZSgpO1xuICAgIGNvbnN0IG5vZGVJZCA9IG5vZGVUb0JlVXBkYXRlZCB8fCBhY3RpdmVOb2RlLmRhdGEuaWQ7XG4gICAgaWYgKG5ld0RhdGEuaW5zdHJ1Y3Rpb25zKSB7XG4gICAgICBuZXdEYXRhLmluc3RydWN0aW9ucyA9IHsgZGVmYXVsdDogbmV3RGF0YS5pbnN0cnVjdGlvbnMgfTtcbiAgICB9XG4gICAgYWN0aXZlTm9kZS5kYXRhLm1ldGFkYXRhID0geyAuLi5hY3RpdmVOb2RlLmRhdGEubWV0YWRhdGEsIC4uLm5ld0RhdGEgfTtcbiAgICBhY3RpdmVOb2RlLnRpdGxlID0gbmV3RGF0YS5uYW1lO1xuICAgIG5ld0RhdGEgPSBfLm9taXRCeShuZXdEYXRhLCAodiwga2V5KSA9PiBfLmlzVW5kZWZpbmVkKHYpIHx8IF8uaXNOdWxsKHYpIHx8ICh2ID09PSAnJyAmJiBfLmluY2x1ZGVzKHRoaXMub21pdEZhbHNleVByb3BzLCBrZXkpKSk7XG4gICAgbmV3RGF0YSA9IF8ubWVyZ2Uoe30sIG5ld0RhdGEsIF8ucGljayhhY3RpdmVOb2RlLmRhdGEubWV0YWRhdGEsIFsnb2JqZWN0VHlwZScsICdjb250ZW50VHlwZScsICdwcmltYXJ5Q2F0ZWdvcnknXSkpO1xuICAgIGNvbnN0IGF0dHJpYnV0aW9ucyA9IG5ld0RhdGEuYXR0cmlidXRpb25zO1xuICAgIGlmIChhdHRyaWJ1dGlvbnMgJiYgXy5pc1N0cmluZyhhdHRyaWJ1dGlvbnMpKSB7XG4gICAgICBuZXdEYXRhLmF0dHJpYnV0aW9ucyA9IGF0dHJpYnV0aW9ucy5zcGxpdCgnLCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXdEYXRhLmF0dHJpYnV0aW9ucyA9IFtdO1xuICAgIH1cbiAgICBjb25zdCB7IG1heFRpbWUsIHdhcm5pbmdUaW1lLCBjb3B5cmlnaHRZZWFyIH0gPSBuZXdEYXRhO1xuXG4gICAgaWYgKGNvcHlyaWdodFllYXIpIHtcbiAgICAgIG5ld0RhdGEuY29weXJpZ2h0WWVhciA9IF8udG9OdW1iZXIoY29weXJpZ2h0WWVhcik7XG4gICAgfVxuICAgIGlmIChvYmplY3RUeXBlKSB7XG4gICAgICBuZXdEYXRhLm9iamVjdFR5cGUgPSBvYmplY3RUeXBlO1xuICAgIH1cbiAgICBjb25zdCB0aW1lTGltaXRzOiBhbnkgPSB7fTtcbiAgICBpZiAobWF4VGltZSkge1xuICAgICAgdGltZUxpbWl0cy5tYXhUaW1lID0gdGhpcy5oZWxwZXJTZXJ2aWNlLmhtc1RvU2Vjb25kcyhtYXhUaW1lKTtcbiAgICB9XG4gICAgaWYgKHdhcm5pbmdUaW1lKSB7XG4gICAgICB0aW1lTGltaXRzLndhcm5pbmdUaW1lID0gdGhpcy5oZWxwZXJTZXJ2aWNlLmhtc1RvU2Vjb25kcyh3YXJuaW5nVGltZSk7XG4gICAgfVxuICAgIGlmICghXy5pc0VtcHR5KHRpbWVMaW1pdHMpKSB7XG4gICAgICBuZXdEYXRhLnRpbWVMaW1pdHMgPSB0aW1lTGltaXRzO1xuICAgIH1cbiAgICBkZWxldGUgbmV3RGF0YS5tYXhUaW1lO1xuICAgIGRlbGV0ZSBuZXdEYXRhLndhcm5pbmdUaW1lO1xuICAgIHRoaXMuc2V0VHJlZUNhY2hlKG5vZGVJZCwgbmV3RGF0YSwgYWN0aXZlTm9kZS5kYXRhKTtcbiAgfVxuXG4gIGFkZE5vZGUoY3JlYXRlVHlwZSkge1xuICAgIGxldCBuZXdOb2RlO1xuICAgIGNvbnN0IHNlbGVjdGVkTm9kZSA9IHRoaXMuZ2V0QWN0aXZlTm9kZSgpO1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcbiAgICBjb25zdCBub2RlQ29uZmlnID0gKGNyZWF0ZVR5cGUgPT09ICdzaWJsaW5nJykgPyB0aGlzLmNvbmZpZy5oaWVyYXJjaHlbYGxldmVsJHtzZWxlY3RlZE5vZGUuZ2V0TGV2ZWwoKSAtIDF9YF0gOiB0aGlzLmNvbmZpZy5oaWVyYXJjaHlbYGxldmVsJHtzZWxlY3RlZE5vZGUuZ2V0TGV2ZWwoKX1gXTtcbiAgICBjb25zdCB1bmlxdWVJZCA9IHV1aWR2NCgpO1xuICAgIGNvbnN0IG5vZGVUaXRsZSA9IF8uZ2V0KG5vZGVDb25maWcsICduYW1lJyk7XG4gICAgY29uc3Qgbm9kZTogYW55ID0ge1xuICAgICAgaWQ6IHVuaXF1ZUlkLFxuICAgICAgdGl0bGU6IG5vZGVUaXRsZSxcbiAgICAgIHRvb2x0aXA6IG5vZGVUaXRsZSxcbiAgICAgIC4uLihub2RlQ29uZmlnLmNvbnRlbnRUeXBlICYmIHsgY29udGVudFR5cGU6IG5vZGVDb25maWcuY29udGVudFR5cGUgfSksXG4gICAgICBwcmltYXJ5Q2F0ZWdvcnk6IF8uZ2V0KG5vZGVDb25maWcsICdwcmltYXJ5Q2F0ZWdvcnknKSxcbiAgICAgIG9iamVjdFR5cGU6IF8uZ2V0KHRoaXMuY29uZmlnLCAnb2JqZWN0VHlwZScpLFxuICAgICAgcm9vdDogZmFsc2UsXG4gICAgICBmb2xkZXI6IHRydWUsXG4gICAgICBpY29uOiBfLmdldChub2RlQ29uZmlnLCAnaWNvbkNsYXNzJyksXG4gICAgICBtZXRhZGF0YToge1xuICAgICAgICBtaW1lVHlwZTogXy5nZXQobm9kZUNvbmZpZywgJ21pbWVUeXBlJyksXG4gICAgICAgIGNvZGU6IHVuaXF1ZUlkLFxuICAgICAgICBuYW1lOiBub2RlVGl0bGUsXG4gICAgICAgIHZpc2liaWxpdHk6ICdQYXJlbnQnXG4gICAgICB9XG4gICAgfTtcbiAgICBub2RlLm1ldGFkYXRhID0gXy5tZXJnZSh7fSwgbm9kZS5tZXRhZGF0YSwgXy5waWNrKG5vZGUsIFsnY29udGVudFR5cGUnLCAnb2JqZWN0VHlwZScsICdwcmltYXJ5Q2F0ZWdvcnknXSkpO1xuICAgIG5ld05vZGUgPSAoY3JlYXRlVHlwZSA9PT0gJ3NpYmxpbmcnKSA/IHNlbGVjdGVkTm9kZS5hcHBlbmRTaWJsaW5nKG5vZGUpIDogc2VsZWN0ZWROb2RlLmFkZENoaWxkcmVuKG5vZGUpO1xuICAgIHRoaXMuc2V0VHJlZUNhY2hlKG5vZGUuaWQsIG5vZGUubWV0YWRhdGEpO1xuICAgIG5ld05vZGUuc2V0QWN0aXZlKCk7XG4gICAgc2VsZWN0ZWROb2RlLnNldEV4cGFuZGVkKCk7XG4gICAgJCgnc3Bhbi5mYW5jeXRyZWUtdGl0bGUnKS5hdHRyKCdzdHlsZScsICd3aWR0aDoxMWVtO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbicpO1xuICAgICQodGhpcy50cmVlTmF0aXZlRWxlbWVudCkuc2Nyb2xsTGVmdCgkKCcuZmFuY3l0cmVlLWxhc3RzaWInKS53aWR0aCgpKTtcbiAgICAkKHRoaXMudHJlZU5hdGl2ZUVsZW1lbnQpLnNjcm9sbFRvcCgkKCcuZmFuY3l0cmVlLWxhc3RzaWInKS5oZWlnaHQoKSk7XG4gICAgdGhpcy5uZXh0VHJlZVN0YXR1cygnYWRkZWQnKTtcbiAgfVxuXG4gIHJlbW92ZU5vZGUoKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWROb2RlID0gdGhpcy5nZXRBY3RpdmVOb2RlKCk7XG4gICAgY29uc3QgYWZ0ZXJEZWxldGVOb2RlID0gc2VsZWN0ZWROb2RlLmdldFByZXZTaWJsaW5nKCkgPyBzZWxlY3RlZE5vZGUuZ2V0UHJldlNpYmxpbmcoKSA6IHNlbGVjdGVkTm9kZS5nZXRQYXJlbnQoKTtcbiAgICB0aGlzLnNldEFjdGl2ZU5vZGUoYWZ0ZXJEZWxldGVOb2RlKTtcbiAgICBzZWxlY3RlZE5vZGUucmVtb3ZlKCk7XG4gICAgdGhpcy5jbGVhclRyZWVDYWNoZShzZWxlY3RlZE5vZGUuZGF0YSk7XG4gICAgJCgnc3Bhbi5mYW5jeXRyZWUtdGl0bGUnKS5hdHRyKCdzdHlsZScsICd3aWR0aDoxMWVtO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbicpO1xuICAgICQodGhpcy50cmVlTmF0aXZlRWxlbWVudCkuc2Nyb2xsTGVmdCgkKCcuZmFuY3l0cmVlLWxhc3RzaWInKS53aWR0aCgpKTtcbiAgICAkKHRoaXMudHJlZU5hdGl2ZUVsZW1lbnQpLnNjcm9sbFRvcCgkKCcuZmFuY3l0cmVlLWxhc3RzaWInKS5oZWlnaHQoKSk7XG4gICAgdGhpcy5uZXh0VHJlZVN0YXR1cygncmVtb3ZlZCcpO1xuICB9XG5cbiAgZ2V0VHJlZU9iamVjdCgpIHtcbiAgICByZXR1cm4gJCh0aGlzLnRyZWVOYXRpdmVFbGVtZW50KS5mYW5jeXRyZWUoJ2dldFRyZWUnKTtcbiAgfVxuXG4gIGdldEFjdGl2ZU5vZGUoKSB7XG4gICAgbGV0IGFjdGl2ZU5vZGU7XG4gICAgdHJ5IHtcbiAgICAgIGFjdGl2ZU5vZGUgPSB0aGlzLmdldFRyZWVPYmplY3QoKS5nZXRBY3RpdmVOb2RlKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICBhY3RpdmVOb2RlID0ge307XG4gICAgfVxuICAgIHJldHVybiBhY3RpdmVOb2RlO1xuICB9XG5cbiAgZ2V0UGFyZW50KCkge1xuICAgIGNvbnN0IGFjdGl2ZU5vZGUgPSB0aGlzLmdldEFjdGl2ZU5vZGUoKTtcbiAgICByZXR1cm4gYWN0aXZlTm9kZT8uZ2V0UGFyZW50ID8gYWN0aXZlTm9kZS5nZXRQYXJlbnQoKSA6IG51bGw7XG4gIH1cblxuICBzZXRBY3RpdmVOb2RlKG5vZGU/KSB7XG4gICAgY29uc3Qgcm9vdEZpcnN0Q2hpbGROb2RlID0gdGhpcy5nZXRGaXJzdENoaWxkKCk7XG4gICAgaWYgKG5vZGUpIHtcbiAgICAgIG5vZGUuc2V0QWN0aXZlKHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByb290Rmlyc3RDaGlsZE5vZGUuc2V0QWN0aXZlKHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIGdldEZpcnN0Q2hpbGQoKSB7XG4gICAgbGV0IHRyZWVEYXRhO1xuICAgIHRyeSB7XG4gICAgICB0cmVlRGF0YSA9ICQodGhpcy50cmVlTmF0aXZlRWxlbWVudCkuZmFuY3l0cmVlKCdnZXRSb290Tm9kZScpLmdldEZpcnN0Q2hpbGQoKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRyZWVEYXRhID0ge307XG4gICAgfVxuICAgIHJldHVybiB0cmVlRGF0YTtcbiAgfVxuXG4gIGZpbmROb2RlKG5vZGVJZCkge1xuICAgIHJldHVybiB0aGlzLmdldFRyZWVPYmplY3QoKS5maW5kRmlyc3QoKG5vZGUpID0+IG5vZGUuZGF0YS5pZCA9PT0gbm9kZUlkKTtcbiAgfVxuXG4gIGV4cGFuZE5vZGUobm9kZUlkKSB7XG4gICAgdGhpcy5maW5kTm9kZShub2RlSWQpLnNldEV4cGFuZGVkKHRydWUpO1xuICB9XG5cbiAgcmVwbGFjZU5vZGVJZChpZGVudGlmaWVycykge1xuICAgIHRoaXMuZ2V0VHJlZU9iamVjdCgpLnZpc2l0KChub2RlKSA9PiB7XG4gICAgICBpZiAoaWRlbnRpZmllcnNbbm9kZS5kYXRhLmlkXSkge1xuICAgICAgICBub2RlLmRhdGEuaWQgPSBpZGVudGlmaWVyc1tub2RlLmRhdGEuaWRdO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0Tm9kZUJ5SWQoaWQpIHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICAgIGxldCBfbm9kZTogYW55O1xuICAgIHRoaXMuZ2V0VHJlZU9iamVjdCgpLnZpc2l0KChub2RlKSA9PiB7XG4gICAgICBpZiAobm9kZS5kYXRhLmlkID09PSBpZCkgeyBfbm9kZSA9IG5vZGU7IH1cbiAgICB9KTtcbiAgICByZXR1cm4gX25vZGU7XG4gIH1cblxuICAvLyBHZW5lcmF0ZSBhIGZsYXQgbGlzdCBvZiBub2RlIGNoaWxkcmVuIGFuZCBzdWIgY2hpbGRyZW5cbiAgZ2V0Q2hpbGRyZW4oKSB7XG4gICAgY29uc3Qgbm9kZXMgPSBbXTtcbiAgICB0aGlzLmdldEFjdGl2ZU5vZGUoKS52aXNpdCgobm9kZSkgPT4ge1xuICAgICAgbm9kZXMucHVzaChub2RlKTtcbiAgICB9KTtcbiAgICByZXR1cm4gbm9kZXM7XG4gIH1cblxuICBoaWdobGlnaHROb2RlKG5vZGVJZDogc3RyaW5nLCBhY3Rpb246IHN0cmluZykge1xuICAgIGNvbnN0IG5vZGVFbGVtID0gdGhpcy5nZXROb2RlQnlJZChub2RlSWQpO1xuICAgIGlmICghbm9kZUVsZW0pIHsgcmV0dXJuOyB9XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2FkZCcpIHtcbiAgICAgIG5vZGVFbGVtLnNwYW4uY2hpbGROb2Rlc1sxXS5jbGFzc0xpc3QuYWRkKCdoaWdobGlnaHROb2RlJyk7XG4gICAgICBub2RlRWxlbS5zcGFuLmNoaWxkTm9kZXNbMl0uY2xhc3NMaXN0LmFkZCgnaGlnaGxpZ2h0Tm9kZScpO1xuICAgIH0gZWxzZSBpZiAoYWN0aW9uID09PSAncmVtb3ZlJykge1xuICAgICAgbm9kZUVsZW0uc3Bhbi5jaGlsZE5vZGVzWzFdLmNsYXNzTGlzdC5yZW1vdmUoJ2hpZ2hsaWdodE5vZGUnKTtcbiAgICAgIG5vZGVFbGVtLnNwYW4uY2hpbGROb2Rlc1syXS5jbGFzc0xpc3QucmVtb3ZlKCdoaWdobGlnaHROb2RlJyk7XG4gICAgfSBlbHNlIHsgfVxuICB9XG5cbiAgc2V0VHJlZUNhY2hlKG5vZGVJZCwgbWV0YWRhdGEsIGFjdGl2ZU5vZGU/KSB7XG4gICAgaWYgKHRoaXMudHJlZUNhY2hlLm5vZGVzTW9kaWZpZWRbbm9kZUlkXSkge1xuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm1heC1saW5lLWxlbmd0aFxuICAgICAgdGhpcy50cmVlQ2FjaGUubm9kZXNNb2RpZmllZFtub2RlSWRdLm1ldGFkYXRhID0gXy5hc3NpZ24odGhpcy50cmVlQ2FjaGUubm9kZXNNb2RpZmllZFtub2RlSWRdLm1ldGFkYXRhLCBfLm9taXQobWV0YWRhdGEsICdvYmplY3RUeXBlJykpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRyZWVDYWNoZS5ub2Rlc01vZGlmaWVkW25vZGVJZF0gPSB7XG4gICAgICAgIHJvb3Q6IGFjdGl2ZU5vZGUgJiYgYWN0aXZlTm9kZS5yb290ID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICBvYmplY3RUeXBlOiBtZXRhZGF0YS5vYmplY3RUeXBlLFxuICAgICAgICBtZXRhZGF0YTogeyAuLi5fLm9taXQobWV0YWRhdGEsIFsnb2JqZWN0VHlwZSddKSB9LFxuICAgICAgICAuLi4obm9kZUlkLmluY2x1ZGVzKCdkb18nKSA/IHsgaXNOZXc6IGZhbHNlIH0gOiB7IGlzTmV3OiB0cnVlIH0pXG4gICAgICB9O1xuICAgICAgdGhpcy50cmVlQ2FjaGUubm9kZXMucHVzaChub2RlSWQpOyAvLyBUbyB0cmFjayBzZXF1ZW5jZSBvZiBtb2RpZmlhdGlvblxuICAgIH1cbiAgfVxuXG4gIGNsZWFyVHJlZUNhY2hlKG5vZGU/KSB7XG4gICAgaWYgKG5vZGUpIHtcbiAgICAgIGRlbGV0ZSB0aGlzLnRyZWVDYWNoZS5ub2Rlc01vZGlmaWVkW25vZGUuaWRdO1xuICAgICAgXy5yZW1vdmUodGhpcy50cmVlQ2FjaGUubm9kZXMsIHZhbCA9PiB2YWwgPT09IG5vZGUuaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRyZWVDYWNoZS5ub2Rlc01vZGlmaWVkID0ge307XG4gICAgICB0aGlzLnRyZWVDYWNoZS5ub2RlcyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIHNldE5vZGVUaXRsZSh0aXRsZSkge1xuICAgIGlmICghdGl0bGUpIHtcbiAgICAgIHRpdGxlID0gJ1VudGl0bGVkJztcbiAgICB9XG4gICAgdGl0bGUgPSB0aGlzLnJlbW92ZVNwZWNpYWxDaGFycyh0aXRsZSk7XG4gICAgdGhpcy5nZXRBY3RpdmVOb2RlKCkuYXBwbHlQYXRjaCh7IHRpdGxlIH0pLmRvbmUoKGEsIGIpID0+IHsgfSk7XG4gICAgJCgnc3Bhbi5mYW5jeXRyZWUtdGl0bGUnKS5hdHRyKCdzdHlsZScsICd3aWR0aDoxMWVtO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbicpO1xuICB9XG5cbiAgcmVtb3ZlU3BlY2lhbENoYXJzKHRleHQpIHtcbiAgICBpZiAodGV4dCkge1xuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnF1b3RlbWFya1xuICAgICAgY29uc3QgaUNoYXJzID0gXCIhYH5AIyReKis9W11cXFxcXFwne318XFxcIjw+JS9cIjtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoaUNoYXJzLmluZGV4T2YodGV4dC5jaGFyQXQoaSkpICE9PSAtMSkge1xuICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoJ1NwZWNpYWwgY2hhcmFjdGVyIFwiJyArIHRleHQuY2hhckF0KGkpICsgJ1wiIGlzIG5vdCBhbGxvd2VkJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcbiAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoL1teXFx1MDYwMC1cXHUwNkZGXFx1RkI1MC1cXHVGREZGXFx1RkU3MC1cXHVGRUZGXFx1RkI1MC1cXHVGREZGXFx1MDk4MC1cXHUwOUZGXFx1MDkwMC1cXHUwOTdGXFx1MEQwMC1cXHUwRDdGXFx1MEE4MC1cXHUwQUZGXFx1MEM4MC1cXHUwQ0ZGXFx1MEIwMC1cXHUwQjdGXFx1MEEwMC1cXHUwQTdGXFx1MEI4MC1cXHUwQkZGXFx1MEMwMC1cXHUwQzdGXFx3OiZfXFwtLihcXCksXFwvXFxzXXxbL10vZywgJycpO1xuICAgICAgcmV0dXJuIHRleHQ7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VQcmV2T3BlbmVkRHJvcERvd24oKSB7XG4gICAgdGhpcy5nZXRUcmVlT2JqZWN0KCkudmlzaXQoKG5vZGUpID0+IHtcbiAgICAgIGNvbnN0IG5TcGFuID0gJChub2RlLnNwYW4pO1xuICAgICAgY29uc3QgZHJvcERvd25FbGVtZW50ID0gJChuU3BhblswXSkuZmluZChgI2NvbnRleHRNZW51RHJvcERvd25gKTtcbiAgICAgIGRyb3BEb3duRWxlbWVudC5hZGRDbGFzcygnaGlkZGVuJyk7XG4gICAgICBkcm9wRG93bkVsZW1lbnQucmVtb3ZlQ2xhc3MoJ3Zpc2libGUnKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlbG9hZFRyZWUobm9kZXM6IGFueSkge1xuICAgIHRoaXMuZ2V0VHJlZU9iamVjdCgpLnJlbG9hZChub2Rlcyk7XG4gICAgJCgnc3Bhbi5mYW5jeXRyZWUtdGl0bGUnKS5hdHRyKCdzdHlsZScsICd3aWR0aDoxNWVtO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbicpO1xuICB9XG59XG4iXX0=
|
|
299
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29sbGVjdGlvbi1lZGl0b3ItbGlicmFyeS9zcmMvbGliL3NlcnZpY2VzL3RyZWUvdHJlZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEtBQUssQ0FBQyxNQUFNLFdBQVcsQ0FBQztBQUkvQixPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFLM0MsTUFBTSxPQUFPLFdBQVc7SUFjdEIsWUFBb0IsY0FBOEIsRUFBVSxhQUE0QixFQUFTLGFBQTRCO1FBQXpHLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFaN0gsY0FBUyxHQUFHO1lBQ1YsYUFBYSxFQUFFLEVBQUU7WUFDakIsS0FBSyxFQUFFLEVBQUU7U0FDVixDQUFDO1FBR0YseUNBQXlDO1FBQ2pDLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQU0sU0FBUyxDQUFDLENBQUM7UUFDM0MsZ0JBQVcsR0FBb0IsSUFBSSxDQUFDLFlBQVk7YUFDL0QsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7SUFHOEMsQ0FBQztJQUUzSCxVQUFVLENBQUMsWUFBMkI7UUFDM0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUMs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QyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsa0JBQWtCLENBQUMsQ0FBQztpQkFDeEY7YUFDRjtZQUNELDJDQUEyQztZQUMzQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtTUFBbU0sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM3TixPQUFPLElBQUksQ0FBQztTQUNiO0lBQ0gsQ0FBQztJQUVELHVCQUF1QjtRQUNyQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDbEMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQixNQUFNLGVBQWUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7WUFDakUsZUFBZSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNuQyxlQUFlLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFVO1FBQ25CLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxzRUFBc0UsQ0FBQyxDQUFDO0lBQ2xILENBQUM7K0dBcFNVLFdBQVc7bUhBQVgsV0FBVyxjQUZWLE1BQU07OzRGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICdqcXVlcnkuZmFuY3l0cmVlJztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuZGVjbGFyZSB2YXIgJDogYW55O1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgSUVkaXRvckNvbmZpZyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZWRpdG9yJztcbmltcG9ydCB7IFRvYXN0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vdG9hc3Rlci90b2FzdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGVscGVyU2VydmljZSB9IGZyb20gJy4uL2hlbHBlci9oZWxwZXIuc2VydmljZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNraXBXaGlsZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9jb25maWcvY29uZmlnLnNlcnZpY2UnO1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVHJlZVNlcnZpY2Uge1xuICBwdWJsaWMgY29uZmlnOiBhbnk7XG4gIHRyZWVDYWNoZSA9IHtcbiAgICBub2Rlc01vZGlmaWVkOiB7fSxcbiAgICBub2RlczogW11cbiAgfTtcbiAgdHJlZU5hdGl2ZUVsZW1lbnQ6IGFueTtcbiAgb21pdEZhbHNleVByb3BzOiBhbnk7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gIHByaXZhdGUgX3RyZWVTdGF0dXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KHVuZGVmaW5lZCk7XG4gIHB1YmxpYyByZWFkb25seSB0cmVlU3RhdHVzJDogT2JzZXJ2YWJsZTxhbnk+ID0gdGhpcy5fdHJlZVN0YXR1cyRcbiAgLmFzT2JzZXJ2YWJsZSgpLnBpcGUoc2tpcFdoaWxlKHN0YXR1cyA9PiBzdGF0dXMgPT09IHVuZGVmaW5lZCB8fCBzdGF0dXMgPT09IG51bGwpKTtcbiAgcHJldmlvdXNOb2RlOiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0b2FzdGVyU2VydmljZTogVG9hc3RlclNlcnZpY2UsIHByaXZhdGUgaGVscGVyU2VydmljZTogSGVscGVyU2VydmljZSwgcHVibGljIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UpIHsgfVxuXG4gIHB1YmxpYyBpbml0aWFsaXplKGVkaXRvckNvbmZpZzogSUVkaXRvckNvbmZpZykge1xuICAgIHRoaXMuY29uZmlnID0gZWRpdG9yQ29uZmlnLmNvbmZpZztcbiAgICB0aGlzLm9taXRGYWxzZXlQcm9wcyA9IF8uZ2V0KHRoaXMuY29uZmlnU2VydmljZS5lZGl0b3JDb25maWcsICdvbWl0RmFsc2V5UHJvcGVydGllcycpO1xuICB9XG5cbiAgbmV4dFRyZWVTdGF0dXMoc3RhdHVzKSB7XG4gICAgdGhpcy5fdHJlZVN0YXR1cyQubmV4dChzdGF0dXMpO1xuICB9XG5cbiAgc2V0VHJlZUVsZW1lbnQoZWwpIHtcbiAgICB0aGlzLnRyZWVOYXRpdmVFbGVtZW50ID0gZWw7XG4gIH1cblxuICB1cGRhdGVOb2RlKG1ldGFkYXRhLCBub2RlVG9CZVVwZGF0ZWQ/LCBwcmltYXJ5Q2F0ZWdvcnk/OiBhbnkpIHtcbiAgICB0aGlzLnNldE5vZGVUaXRsZShtZXRhZGF0YS5uYW1lKTtcbiAgICB0aGlzLnVwZGF0ZVRyZWVOb2RlTWV0YWRhdGEobWV0YWRhdGEsIG5vZGVUb0JlVXBkYXRlZCwgcHJpbWFyeUNhdGVnb3J5KTtcbiAgfVxuXG4gIHVwZGF0ZUFwcEljb24oYXBwSWNvblVybCkge1xuICAgIGNvbnN0IGFjdGl2ZU5vZGUgPSB0aGlzLmdldEFjdGl2ZU5vZGUoKTtcbiAgICBjb25zdCBub2RlSWQgPSBhY3RpdmVOb2RlLmRhdGEuaWQ7XG4gICAgYWN0aXZlTm9kZS5kYXRhLm1ldGFkYXRhID0gey4uLmFjdGl2ZU5vZGUuZGF0YS5tZXRhZGF0YSwgYXBwSWNvbiA6IGFwcEljb25Vcmx9O1xuICAgIHRoaXMuc2V0VHJlZUNhY2hlKG5vZGVJZCwge2FwcEljb24gOiBhcHBJY29uVXJsfSwgYWN0aXZlTm9kZS5kYXRhKTtcbiAgfVxuXG4gIHVwZGF0ZU1ldGFEYXRhUHJvcGVydHkoa2V5LCB2YWx1ZSkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldEZpcnN0Q2hpbGQoKTtcbiAgICBjb25zdCBub2RlSWQgPSBub2RlLmRhdGEuaWQ7XG4gICAgbm9kZS5kYXRhLm1ldGFkYXRhID0gey4uLm5vZGUuZGF0YS5tZXRhZGF0YSwgW2tleV0gOiB2YWx1ZX07XG4gICAgdGhpcy5zZXRUcmVlQ2FjaGUobm9kZUlkLCBfLm1lcmdlKHt9LCB7W2tleV0gOiB2YWx1ZX0sIF8ucGljayhub2RlLmRhdGEubWV0YWRhdGEsIFsnb2JqZWN0VHlwZSddKSkpO1xuICB9XG5cbiAgdXBkYXRlVHJlZU5vZGVNZXRhZGF0YShuZXdEYXRhOiBhbnksIG5vZGVUb0JlVXBkYXRlZD86IGFueSwgcHJpbWFyeUNhdGVnb3J5PzogYW55LCBvYmplY3RUeXBlPzogYW55KSB7XG4gICAgY29uc3QgYWN0aXZlTm9kZSA9ICFfLmlzVW5kZWZpbmVkKG5vZGVUb0JlVXBkYXRlZCkgPyB0aGlzLmdldE5vZGVCeUlkKG5vZGVUb0JlVXBkYXRlZCkgOiB0aGlzLmdldEFjdGl2ZU5vZGUoKTtcbiAgICBjb25zdCBub2RlSWQgPSBub2RlVG9CZVVwZGF0ZWQgIHx8IGFjdGl2ZU5vZGUuZGF0YS5pZDtcbiAgICBpZiAobmV3RGF0YS5pbnN0cnVjdGlvbnMpIHtcbiAgICAgIG5ld0RhdGEuaW5zdHJ1Y3Rpb25zID0geyBkZWZhdWx0OiBuZXdEYXRhLmluc3RydWN0aW9ucyB9O1xuICAgICB9XG4gICAgYWN0aXZlTm9kZS5kYXRhLm1ldGFkYXRhID0geyAuLi5hY3RpdmVOb2RlLmRhdGEubWV0YWRhdGEsIC4uLm5ld0RhdGEgfTtcbiAgICBhY3RpdmVOb2RlLnRpdGxlID0gbmV3RGF0YS5uYW1lO1xuICAgIG5ld0RhdGEgPSBfLm9taXRCeShuZXdEYXRhLCAodiwga2V5ICkgPT4gXy5pc1VuZGVmaW5lZCh2KSB8fCBfLmlzTnVsbCh2KSB8fCAodiA9PT0gJycgJiYgXy5pbmNsdWRlcyh0aGlzLm9taXRGYWxzZXlQcm9wcywga2V5KSkpO1xuICAgIG5ld0RhdGEgPSBfLm1lcmdlKHt9LCBuZXdEYXRhLCBfLnBpY2soYWN0aXZlTm9kZS5kYXRhLm1ldGFkYXRhLCBbJ29iamVjdFR5cGUnLCAnY29udGVudFR5cGUnLCAncHJpbWFyeUNhdGVnb3J5J10pKTtcbiAgICBjb25zdCBhdHRyaWJ1dGlvbnMgPSBuZXdEYXRhLmF0dHJpYnV0aW9ucztcbiAgICBpZiAoYXR0cmlidXRpb25zICYmIF8uaXNTdHJpbmcoYXR0cmlidXRpb25zKSkge1xuICAgICAgbmV3RGF0YS5hdHRyaWJ1dGlvbnMgPSBhdHRyaWJ1dGlvbnMuc3BsaXQoJywnKTtcbiAgICB9IGVsc2UgaWYgKGF0dHJpYnV0aW9ucyAmJiBfLmlzQXJyYXkoYXR0cmlidXRpb25zKSkge1xuICAgICAgbmV3RGF0YS5hdHRyaWJ1dGlvbnMgPSBhdHRyaWJ1dGlvbnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld0RhdGEuYXR0cmlidXRpb25zID0gW107XG4gICAgfVxuICAgIGNvbnN0IHsgbWF4VGltZSwgd2FybmluZ1RpbWUsIGNvcHlyaWdodFllYXIgfSA9IG5ld0RhdGE7XG5cbiAgICBpZiAoY29weXJpZ2h0WWVhcikge1xuICAgICAgbmV3RGF0YS5jb3B5cmlnaHRZZWFyID0gXy50b051bWJlcihjb3B5cmlnaHRZZWFyKTtcbiAgICB9XG4gICAgaWYgKG9iamVjdFR5cGUpIHtcbiAgICAgIG5ld0RhdGEub2JqZWN0VHlwZSA9IG9iamVjdFR5cGU7XG4gICAgfVxuICAgIGNvbnN0IHRpbWVMaW1pdHM6IGFueSA9IHt9O1xuICAgIGlmIChtYXhUaW1lKSB7XG4gICAgICB0aW1lTGltaXRzLm1heFRpbWUgPSB0aGlzLmhlbHBlclNlcnZpY2UuaG1zVG9TZWNvbmRzKG1heFRpbWUpO1xuICAgIH1cbiAgICBpZiAod2FybmluZ1RpbWUpIHtcbiAgICAgIHRpbWVMaW1pdHMud2FybmluZ1RpbWUgPSB0aGlzLmhlbHBlclNlcnZpY2UuaG1zVG9TZWNvbmRzKHdhcm5pbmdUaW1lKTtcbiAgICB9XG4gICAgaWYgKCFfLmlzRW1wdHkodGltZUxpbWl0cykpIHtcbiAgICAgIG5ld0RhdGEudGltZUxpbWl0cyA9IHRpbWVMaW1pdHM7XG4gICAgfVxuICAgIGRlbGV0ZSBuZXdEYXRhLm1heFRpbWU7XG4gICAgZGVsZXRlIG5ld0RhdGEud2FybmluZ1RpbWU7XG4gICAgaWYgKHByaW1hcnlDYXRlZ29yeSkge1xuICAgICAgbmV3RGF0YS5wcmltYXJ5Q2F0ZWdvcnkgPSBwcmltYXJ5Q2F0ZWdvcnk7XG4gICAgfVxuICAgIHRoaXMuc2V0VHJlZUNhY2hlKG5vZGVJZCwgbmV3RGF0YSwgYWN0aXZlTm9kZS5kYXRhKTtcbiAgfVxuXG4gIGFkZE5vZGUoY3JlYXRlVHlwZSkge1xuICAgIGxldCBuZXdOb2RlO1xuICAgIGNvbnN0IHNlbGVjdGVkTm9kZSA9IHRoaXMuZ2V0QWN0aXZlTm9kZSgpO1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcbiAgICBjb25zdCBub2RlQ29uZmlnID0gKGNyZWF0ZVR5cGUgPT09ICdzaWJsaW5nJykgPyB0aGlzLmNvbmZpZy5oaWVyYXJjaHlbYGxldmVsJHtzZWxlY3RlZE5vZGUuZ2V0TGV2ZWwoKSAtIDF9YF0gOiB0aGlzLmNvbmZpZy5oaWVyYXJjaHlbYGxldmVsJHtzZWxlY3RlZE5vZGUuZ2V0TGV2ZWwoKX1gXTtcbiAgICBjb25zdCB1bmlxdWVJZCA9IHV1aWR2NCgpO1xuICAgIGNvbnN0IG5vZGVUaXRsZSA9IF8uZ2V0KG5vZGVDb25maWcsICduYW1lJyk7XG4gICAgY29uc3Qgbm9kZTogYW55ID0ge1xuICAgICAgaWQ6IHVuaXF1ZUlkLFxuICAgICAgdGl0bGU6IG5vZGVUaXRsZSxcbiAgICAgIHRvb2x0aXA6IG5vZGVUaXRsZSxcbiAgICAgIC4uLihub2RlQ29uZmlnLmNvbnRlbnRUeXBlICYmIHsgY29udGVudFR5cGU6IG5vZGVDb25maWcuY29udGVudFR5cGUgfSksXG4gICAgICBwcmltYXJ5Q2F0ZWdvcnk6IF8uZ2V0KG5vZGVDb25maWcsICdwcmltYXJ5Q2F0ZWdvcnknKSxcbiAgICAgIG9iamVjdFR5cGU6IF8uZ2V0KHRoaXMuY29uZmlnLCAnb2JqZWN0VHlwZScpLFxuICAgICAgcm9vdDogZmFsc2UsXG4gICAgICBmb2xkZXI6IHRydWUsXG4gICAgICBpY29uOiBfLmdldChub2RlQ29uZmlnLCAnaWNvbkNsYXNzJyksXG4gICAgICBtZXRhZGF0YToge1xuICAgICAgICBtaW1lVHlwZTogXy5nZXQobm9kZUNvbmZpZywgJ21pbWVUeXBlJyksXG4gICAgICAgIGNvZGU6IHVuaXF1ZUlkLFxuICAgICAgICBuYW1lOiBub2RlVGl0bGUsXG4gICAgICAgIHZpc2liaWxpdHk6ICdQYXJlbnQnXG4gICAgICB9XG4gICAgfTtcbiAgICBub2RlLm1ldGFkYXRhID0gXy5tZXJnZSh7fSwgbm9kZS5tZXRhZGF0YSwgXy5waWNrKG5vZGUsIFsnY29udGVudFR5cGUnLCAnb2JqZWN0VHlwZScsICdwcmltYXJ5Q2F0ZWdvcnknXSkpO1xuICAgIG5ld05vZGUgPSAoY3JlYXRlVHlwZSA9PT0gJ3NpYmxpbmcnKSA/IHNlbGVjdGVkTm9kZS5hcHBlbmRTaWJsaW5nKG5vZGUpIDogc2VsZWN0ZWROb2RlLmFkZENoaWxkcmVuKG5vZGUpO1xuICAgIHRoaXMuc2V0VHJlZUNhY2hlKG5vZGUuaWQsIG5vZGUubWV0YWRhdGEpO1xuICAgIG5ld05vZGUuc2V0QWN0aXZlKCk7XG4gICAgc2VsZWN0ZWROb2RlLnNldEV4cGFuZGVkKCk7XG4gICAgJCgnc3Bhbi5mYW5jeXRyZWUtdGl0bGUnKS5hdHRyKCdzdHlsZScsICd3aWR0aDoxMWVtO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbicpO1xuICAgICQodGhpcy50cmVlTmF0aXZlRWxlbWVudCkuc2Nyb2xsTGVmdCgkKCcuZmFuY3l0cmVlLWxhc3RzaWInKS53aWR0aCgpKTtcbiAgICAkKHRoaXMudHJlZU5hdGl2ZUVsZW1lbnQpLnNjcm9sbFRvcCgkKCcuZmFuY3l0cmVlLWxhc3RzaWInKS5oZWlnaHQoKSk7XG4gICAgdGhpcy5uZXh0VHJlZVN0YXR1cygnYWRkZWQnKTtcbiAgfVxuXG4gIHJlbW92ZU5vZGUoKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWROb2RlID0gdGhpcy5nZXRBY3RpdmVOb2RlKCk7XG4gICAgY29uc3QgYWZ0ZXJEZWxldGVOb2RlID0gc2VsZWN0ZWROb2RlLmdldFByZXZTaWJsaW5nKCkgPyBzZWxlY3RlZE5vZGUuZ2V0UHJldlNpYmxpbmcoKSA6IHNlbGVjdGVkTm9kZS5nZXRQYXJlbnQoKTtcbiAgICB0aGlzLnNldEFjdGl2ZU5vZGUoYWZ0ZXJEZWxldGVOb2RlKTtcbiAgICBzZWxlY3RlZE5vZGUucmVtb3ZlKCk7XG4gICAgdGhpcy5jbGVhclRyZWVDYWNoZShzZWxlY3RlZE5vZGUuZGF0YSk7XG4gICAgJCgnc3Bhbi5mYW5jeXRyZWUtdGl0bGUnKS5hdHRyKCdzdHlsZScsICd3aWR0aDoxMWVtO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbicpO1xuICAgICQodGhpcy50cmVlTmF0aXZlRWxlbWVudCkuc2Nyb2xsTGVmdCgkKCcuZmFuY3l0cmVlLWxhc3RzaWInKS53aWR0aCgpKTtcbiAgICAkKHRoaXMudHJlZU5hdGl2ZUVsZW1lbnQpLnNjcm9sbFRvcCgkKCcuZmFuY3l0cmVlLWxhc3RzaWInKS5oZWlnaHQoKSk7XG4gICAgdGhpcy5uZXh0VHJlZVN0YXR1cygncmVtb3ZlZCcpO1xuICB9XG5cbiAgZ2V0VHJlZU9iamVjdCgpIHtcbiAgICByZXR1cm4gJCh0aGlzLnRyZWVOYXRpdmVFbGVtZW50KS5mYW5jeXRyZWUoJ2dldFRyZWUnKTtcbiAgfVxuXG4gIGdldEFjdGl2ZU5vZGUoKSB7XG4gICAgbGV0IGFjdGl2ZU5vZGU7XG4gICAgdHJ5IHtcbiAgICAgIGFjdGl2ZU5vZGUgPSB0aGlzLmdldFRyZWVPYmplY3QoKS5nZXRBY3RpdmVOb2RlKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICBhY3RpdmVOb2RlID0ge307XG4gICAgfVxuICAgIHJldHVybiBhY3RpdmVOb2RlO1xuICB9XG5cbiAgc2V0QWN0aXZlTm9kZShub2RlPykge1xuICAgIGNvbnN0IHJvb3RGaXJzdENoaWxkTm9kZSA9IHRoaXMuZ2V0Rmlyc3RDaGlsZCgpO1xuICAgIGlmIChub2RlKSB7XG4gICAgICBub2RlLnNldEFjdGl2ZSh0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcm9vdEZpcnN0Q2hpbGROb2RlLnNldEFjdGl2ZSh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBnZXRQYXJlbnQoKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWROb2RlID0gdGhpcy5nZXRBY3RpdmVOb2RlKCk7XG4gICAgcmV0dXJuICFfLmlzRW1wdHkoc2VsZWN0ZWROb2RlKSA/IHNlbGVjdGVkTm9kZS5nZXRQYXJlbnQoKSA6IHRoaXMuZ2V0Tm9kZUJ5SWQodGhpcy5wcmV2aW91c05vZGUpIHx8IHRoaXMuZ2V0Rmlyc3RDaGlsZCgpO1xuICB9XG5cbiAgZ2V0Rmlyc3RDaGlsZCgpIHtcbiAgICBsZXQgdHJlZURhdGE7XG4gICAgdHJ5IHtcbiAgICAgIHRyZWVEYXRhID0gJCh0aGlzLnRyZWVOYXRpdmVFbGVtZW50KS5mYW5jeXRyZWUoJ2dldFJvb3ROb2RlJykuZ2V0Rmlyc3RDaGlsZCgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdHJlZURhdGEgPSB7fTtcbiAgICB9XG4gICAgcmV0dXJuIHRyZWVEYXRhO1xuICB9XG5cbiAgZmluZE5vZGUobm9kZUlkKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VHJlZU9iamVjdCgpLmZpbmRGaXJzdCgobm9kZSkgPT4gbm9kZS5kYXRhLmlkID09PSBub2RlSWQpO1xuICB9XG5cbiAgZXhwYW5kTm9kZShub2RlSWQpIHtcbiAgICB0aGlzLmZpbmROb2RlKG5vZGVJZCkuc2V0RXhwYW5kZWQodHJ1ZSk7XG4gIH1cblxuICByZXBsYWNlTm9kZUlkKGlkZW50aWZpZXJzKSB7XG4gICAgdGhpcy5nZXRUcmVlT2JqZWN0KCkudmlzaXQoKG5vZGUpID0+IHtcbiAgICAgIGlmIChpZGVudGlmaWVyc1tub2RlLmRhdGEuaWRdKSB7XG4gICAgICAgIG5vZGUuZGF0YS5pZCA9IGlkZW50aWZpZXJzW25vZGUuZGF0YS5pZF07XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZXROb2RlQnlJZChpZCkge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gICAgbGV0IF9ub2RlOiBhbnk7XG4gICAgdGhpcy5nZXRUcmVlT2JqZWN0KCkudmlzaXQoKG5vZGUpID0+IHtcbiAgICAgIGlmIChub2RlLmRhdGEuaWQgPT09IGlkKSB7IF9ub2RlID0gbm9kZTsgfVxuICAgIH0pO1xuICAgIHJldHVybiBfbm9kZTtcbiAgfVxuXG4gIC8vIEdlbmVyYXRlIGEgZmxhdCBsaXN0IG9mIG5vZGUgY2hpbGRyZW4gYW5kIHN1YiBjaGlsZHJlblxuICBnZXRDaGlsZHJlbigpIHtcbiAgICBjb25zdCBub2RlcyA9IFtdO1xuICAgIHRoaXMuZ2V0QWN0aXZlTm9kZSgpLnZpc2l0KChub2RlKSA9PiB7XG4gICAgICBub2Rlcy5wdXNoKG5vZGUpO1xuICAgIH0pO1xuICAgIHJldHVybiBub2RlcztcbiAgfVxuXG4gIGdldExlYWZOb2RlcygpIHtcbiAgICBjb25zdCBub2RlcyA9IFtdO1xuICAgIHRoaXMuZ2V0QWN0aXZlTm9kZSgpLnZpc2l0KChub2RlKSA9PiB7XG4gICAgICBpZiAoIV8uaW5jbHVkZXMobm9kZS5pY29uLCAnZm9sZGVyJykpIHsgbm9kZXMucHVzaChub2RlKTsgfVxuICAgIH0pO1xuICAgIHJldHVybiBub2RlcztcbiAgfVxuXG4gIGhpZ2hsaWdodE5vZGUobm9kZUlkOiBzdHJpbmcsIGFjdGlvbjogc3RyaW5nKSB7XG4gICAgY29uc3Qgbm9kZUVsZW0gPSB0aGlzLmdldE5vZGVCeUlkKG5vZGVJZCk7XG4gICAgaWYgKCFub2RlRWxlbSkgeyByZXR1cm47IH1cbiAgICBpZiAoYWN0aW9uID09PSAnYWRkJykge1xuICAgICAgbm9kZUVsZW0uc3Bhbi5jaGlsZE5vZGVzWzFdLmNsYXNzTGlzdC5hZGQoJ2hpZ2hsaWdodE5vZGUnKTtcbiAgICAgIG5vZGVFbGVtLnNwYW4uY2hpbGROb2Rlc1syXS5jbGFzc0xpc3QuYWRkKCdoaWdobGlnaHROb2RlJyk7XG4gICAgfSBlbHNlIGlmIChhY3Rpb24gPT09ICdyZW1vdmUnKSB7XG4gICAgICBub2RlRWxlbS5zcGFuLmNoaWxkTm9kZXNbMV0uY2xhc3NMaXN0LnJlbW92ZSgnaGlnaGxpZ2h0Tm9kZScpO1xuICAgICAgbm9kZUVsZW0uc3Bhbi5jaGlsZE5vZGVzWzJdLmNsYXNzTGlzdC5yZW1vdmUoJ2hpZ2hsaWdodE5vZGUnKTtcbiAgICB9IGVsc2Uge31cbiAgfVxuXG4gIHNldFRyZWVDYWNoZShub2RlSWQsIG1ldGFkYXRhLCBhY3RpdmVOb2RlPykge1xuICAgIGlmICh0aGlzLnRyZWVDYWNoZS5ub2Rlc01vZGlmaWVkW25vZGVJZF0pIHtcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcbiAgICAgIHRoaXMudHJlZUNhY2hlLm5vZGVzTW9kaWZpZWRbbm9kZUlkXS5tZXRhZGF0YSA9IF8uYXNzaWduKHRoaXMudHJlZUNhY2hlLm5vZGVzTW9kaWZpZWRbbm9kZUlkXS5tZXRhZGF0YSwgXy5vbWl0KG1ldGFkYXRhLCAnb2JqZWN0VHlwZScpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50cmVlQ2FjaGUubm9kZXNNb2RpZmllZFtub2RlSWRdID0ge1xuICAgICAgICByb290OiBhY3RpdmVOb2RlICYmIGFjdGl2ZU5vZGUucm9vdCA/IHRydWUgOiBmYWxzZSxcbiAgICAgICAgb2JqZWN0VHlwZTogbWV0YWRhdGEub2JqZWN0VHlwZSxcbiAgICAgICAgbWV0YWRhdGE6IHsgLi4uXy5vbWl0KG1ldGFkYXRhLCBbJ29iamVjdFR5cGUnXSkgfSxcbiAgICAgICAgLi4uKG5vZGVJZC5pbmNsdWRlcygnZG9fJykgPyB7IGlzTmV3OiBmYWxzZSB9IDogeyBpc05ldzogdHJ1ZSB9KVxuICAgICAgfTtcbiAgICAgIHRoaXMudHJlZUNhY2hlLm5vZGVzLnB1c2gobm9kZUlkKTsgLy8gVG8gdHJhY2sgc2VxdWVuY2Ugb2YgbW9kaWZpYXRpb25cbiAgICB9XG4gIH1cblxuICBjbGVhclRyZWVDYWNoZShub2RlPykge1xuICAgIGlmIChub2RlKSB7XG4gICAgICBkZWxldGUgdGhpcy50cmVlQ2FjaGUubm9kZXNNb2RpZmllZFtub2RlLmlkXTtcbiAgICAgIF8ucmVtb3ZlKHRoaXMudHJlZUNhY2hlLm5vZGVzLCB2YWwgPT4gdmFsID09PSBub2RlLmlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50cmVlQ2FjaGUubm9kZXNNb2RpZmllZCA9IHt9O1xuICAgICAgdGhpcy50cmVlQ2FjaGUubm9kZXMgPSBbXTtcbiAgICB9XG4gIH1cblxuICBzZXROb2RlVGl0bGUodGl0bGUpIHtcbiAgICBpZiAoIXRpdGxlKSB7XG4gICAgICB0aXRsZSA9ICdVbnRpdGxlZCc7XG4gICAgfVxuICAgIHRpdGxlID0gdGhpcy5yZW1vdmVTcGVjaWFsQ2hhcnModGl0bGUpO1xuICAgIHRoaXMuZ2V0QWN0aXZlTm9kZSgpLmFwcGx5UGF0Y2goeyB0aXRsZSB9KS5kb25lKChhLCBiKSA9PiB7IH0pO1xuICAgICQoJ3NwYW4uZmFuY3l0cmVlLXRpdGxlJykuYXR0cignc3R5bGUnLCAnd2lkdGg6MTFlbTt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW4nKTtcbiAgfVxuXG4gIHJlbW92ZVNwZWNpYWxDaGFycyh0ZXh0KSB7XG4gICAgaWYgKHRleHQpIHtcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpxdW90ZW1hcmtcbiAgICAgIGNvbnN0IGlDaGFycyA9IFwiIWB+QCMkXiorPVtdXFxcXFxcJ3t9fFxcXCI8PiUvXCI7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRleHQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGlDaGFycy5pbmRleE9mKHRleHQuY2hhckF0KGkpKSAhPT0gLTEpIHtcbiAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKCdTcGVjaWFsIGNoYXJhY3RlciBcIicgKyB0ZXh0LmNoYXJBdChpKSArICdcIiBpcyBub3QgYWxsb3dlZCcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bWF4LWxpbmUtbGVuZ3RoXG4gICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC9bXlxcdTA2MDAtXFx1MDZGRlxcdUZCNTAtXFx1RkRGRlxcdUZFNzAtXFx1RkVGRlxcdUZCNTAtXFx1RkRGRlxcdTA5ODAtXFx1MDlGRlxcdTA5MDAtXFx1MDk3RlxcdTBEMDAtXFx1MEQ3RlxcdTBBODAtXFx1MEFGRlxcdTBDODAtXFx1MENGRlxcdTBCMDAtXFx1MEI3RlxcdTBBMDAtXFx1MEE3RlxcdTBCODAtXFx1MEJGRlxcdTBDMDAtXFx1MEM3RlxcdzomX1xcLS4oXFwpLFxcL1xcc118Wy9dL2csICcnKTtcbiAgICAgIHJldHVybiB0ZXh0O1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlUHJldk9wZW5lZERyb3BEb3duKCkge1xuICAgIHRoaXMuZ2V0VHJlZU9iamVjdCgpLnZpc2l0KChub2RlKSA9PiB7XG4gICAgICBjb25zdCBuU3BhbiA9ICQobm9kZS5zcGFuKTtcbiAgICAgIGNvbnN0IGRyb3BEb3duRWxlbWVudCA9ICQoblNwYW5bMF0pLmZpbmQoYCNjb250ZXh0TWVudURyb3BEb3duYCk7XG4gICAgICBkcm9wRG93bkVsZW1lbnQuYWRkQ2xhc3MoJ2hpZGRlbicpO1xuICAgICAgZHJvcERvd25FbGVtZW50LnJlbW92ZUNsYXNzKCd2aXNpYmxlJyk7XG4gICAgfSk7XG4gIH1cblxuICByZWxvYWRUcmVlKG5vZGVzOiBhbnkpIHtcbiAgICB0aGlzLmdldFRyZWVPYmplY3QoKS5yZWxvYWQobm9kZXMpO1xuICAgICQoJ3NwYW4uZmFuY3l0cmVlLXRpdGxlJykuYXR0cignc3R5bGUnLCAnd2lkdGg6MTVlbTt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW4nKTtcbiAgfVxufVxuIl19
|