@colijnit/sharedcomponents 258.1.10 → 258.1.12
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/bundles/colijnit-sharedcomponents.umd.js +82 -51
- package/bundles/colijnit-sharedcomponents.umd.js.map +1 -1
- package/colijnit-sharedcomponents.metadata.json +1 -1
- package/esm2015/lib/components/custom-pdf/custom-pdf-dialog.component.js +55 -47
- package/esm2015/lib/components/custom-pdf/custom-pdf-dialog.module.js +3 -2
- package/esm2015/lib/components/files-upload/components/base-file-upload.component.js +3 -3
- package/esm2015/lib/components/files-upload/files-upload.component.js +15 -13
- package/esm2015/lib/res/dictionary/dictionaries.js +3 -3
- package/fesm2015/colijnit-sharedcomponents.js +74 -63
- package/fesm2015/colijnit-sharedcomponents.js.map +1 -1
- package/lib/components/custom-pdf/custom-pdf-dialog.component.d.ts +1 -0
- package/lib/components/custom-pdf/style/_layout.scss +12 -0
- package/lib/res/dictionary/dictionaries.d.ts +9 -0
- package/package.json +1 -1
|
@@ -18,6 +18,7 @@ export class CustomPdfDialogComponent {
|
|
|
18
18
|
this.additionalFileChangeEvent = new EventEmitter();
|
|
19
19
|
this.signaturePads = {};
|
|
20
20
|
this.signatureCanvases = {};
|
|
21
|
+
this.showLoader = false;
|
|
21
22
|
}
|
|
22
23
|
showClass() {
|
|
23
24
|
return true;
|
|
@@ -100,6 +101,7 @@ export class CustomPdfDialogComponent {
|
|
|
100
101
|
}
|
|
101
102
|
handleSaveClicked() {
|
|
102
103
|
return __awaiter(this, void 0, void 0, function* () {
|
|
104
|
+
this.showLoader = true;
|
|
103
105
|
const clearButton = document.getElementById('clearButton');
|
|
104
106
|
clearButton.hidden = true;
|
|
105
107
|
const doc = new jsPDF();
|
|
@@ -108,38 +110,39 @@ export class CustomPdfDialogComponent {
|
|
|
108
110
|
const sectionsCount = documentSection.length;
|
|
109
111
|
for (let i = 0; i < sectionsCount; i++) {
|
|
110
112
|
const html = documentSection[i];
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
113
|
+
try {
|
|
114
|
+
const dataUrl = yield toJpeg(html, {
|
|
115
|
+
quality: 1,
|
|
116
|
+
backgroundColor: 'white'
|
|
117
|
+
});
|
|
115
118
|
const img = new Image();
|
|
116
119
|
img.src = dataUrl;
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
fileAsCoDocument.reports = 1;
|
|
131
|
-
this.additionalFileChangeEvent.emit(fileAsCoDocument);
|
|
132
|
-
this.closePDFDialog.emit();
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
else {
|
|
136
|
-
doc.addPage();
|
|
137
|
-
}
|
|
138
|
-
};
|
|
139
|
-
}).catch((error) => {
|
|
120
|
+
yield new Promise((resolve) => {
|
|
121
|
+
img.onload = () => {
|
|
122
|
+
const imgWidth = 218;
|
|
123
|
+
const imgHeight = (img.height * imgWidth) / img.width;
|
|
124
|
+
doc.addImage(dataUrl, 'JPG', -4, 0, imgWidth, imgHeight);
|
|
125
|
+
if (i < sectionsCount - 1) {
|
|
126
|
+
doc.addPage();
|
|
127
|
+
}
|
|
128
|
+
resolve();
|
|
129
|
+
};
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
140
133
|
console.error('Error generating image:', error);
|
|
141
|
-
}
|
|
134
|
+
}
|
|
142
135
|
}
|
|
136
|
+
const tempFile = doc.output('datauristring');
|
|
137
|
+
const file = this.dataURItoBlob(tempFile);
|
|
138
|
+
const fileAsCoDocument = yield FileUtils.ReadFileAsNewCoDocument(file);
|
|
139
|
+
fileAsCoDocument.fileType = FileUtils.IsImageFile(file) ? FileType.Image : FileType.Document;
|
|
140
|
+
fileAsCoDocument.creationDate = new Date();
|
|
141
|
+
fileAsCoDocument.modifiedDate = new Date();
|
|
142
|
+
fileAsCoDocument.reports = 1;
|
|
143
|
+
this.additionalFileChangeEvent.emit(fileAsCoDocument);
|
|
144
|
+
this.showLoader = false;
|
|
145
|
+
this.closePDFDialog.emit();
|
|
143
146
|
clearButton.hidden = false;
|
|
144
147
|
});
|
|
145
148
|
}
|
|
@@ -170,24 +173,29 @@ CustomPdfDialogComponent.decorators = [
|
|
|
170
173
|
{ type: Component, args: [{
|
|
171
174
|
selector: 'co-custom-pdf-dialog',
|
|
172
175
|
template: `
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
176
|
+
<co-dialog
|
|
177
|
+
[footerTemplate]="footerTemplate"
|
|
178
|
+
id="custom-pdf-dialog"
|
|
179
|
+
(closeClick)="closePDFDialog.emit()">
|
|
180
|
+
<!-- create a nice container for loader so it is not random in the corner somewhere -->
|
|
181
|
+
<div *ngIf="showLoader" class="loader-container">
|
|
182
|
+
<co-loader *ngIf="showLoader"></co-loader>
|
|
183
|
+
</div>
|
|
184
|
+
|
|
185
|
+
<div #pdfBody id="pdfBody">
|
|
186
|
+
<section [innerHTML]="fileBody"></section>
|
|
187
|
+
</div>
|
|
188
|
+
<ng-template #footerTemplate>
|
|
189
|
+
<div class="co-dialog-footer-button-wrapper">
|
|
190
|
+
<co-button class="save-button"
|
|
191
|
+
[iconData]="iconCacheService.getIcon(icons.CheckDuotone)"
|
|
192
|
+
(click)="handleSaveClicked()"></co-button>
|
|
193
|
+
<co-button class="close-button"
|
|
194
|
+
[iconData]="iconCacheService.getIcon(icons.CrossSkinny)"
|
|
195
|
+
(click)="closePDFDialog.emit()"></co-button>
|
|
196
|
+
</div>
|
|
197
|
+
</ng-template>
|
|
198
|
+
</co-dialog>
|
|
191
199
|
`,
|
|
192
200
|
encapsulation: ViewEncapsulation.None
|
|
193
201
|
},] }
|
|
@@ -204,4 +212,4 @@ CustomPdfDialogComponent.propDecorators = {
|
|
|
204
212
|
closePDFDialog: [{ type: Output }],
|
|
205
213
|
additionalFileChangeEvent: [{ type: Output }]
|
|
206
214
|
};
|
|
207
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXBkZi1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tLXBkZi9jdXN0b20tcGRmLWRpYWxvZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxPQUFPLENBQUM7QUFDNUIsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDbEUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZELE9BQU8sWUFBWSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXJDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUVuRSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUFDckUsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBMkIxQyxNQUFNLE9BQU8sd0JBQXdCO0lBOEJuQyxZQUNTLGdCQUFrQyxFQUNqQyxVQUF3QjtRQUR6QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2pDLGVBQVUsR0FBVixVQUFVLENBQWM7UUEvQmxCLFVBQUssR0FBZ0IsSUFBSSxDQUFDO1FBY25DLHVCQUFrQixHQUFXLEVBQUUsQ0FBQztRQUdoQyxtQkFBYyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRzVELDhCQUF5QixHQUE2QixJQUFJLFlBQVksRUFBYyxDQUFD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SyxFQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sc0JBQXNCLENBQUMsU0FBdUIsRUFBRSxlQUEyQjtRQUNqRixNQUFNLGlCQUFpQixHQUFXLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN4RCxNQUFNLEtBQUssR0FBVyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEUsZUFBZSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsZUFBZSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3hGLGVBQWUsQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxhQUFhLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUMxRixlQUFlLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ25FLFNBQVMsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMzQyxDQUFDOzs7WUFoTkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxzQkFBc0I7Z0JBQ2hDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CVDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7O1lBbENPLGdCQUFnQjtZQUNoQixZQUFZOzs7d0JBcUNqQixXQUFXLFNBQUMsNEJBQTRCO3NCQUt4QyxTQUFTLFNBQUMsU0FBUztxQ0FHbkIsS0FBSztpQ0FHTCxLQUFLOzZCQUdMLE1BQU07d0NBR04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb25cclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge2pzUERGfSBmcm9tIFwianNwZGZcIjtcclxuaW1wb3J0IHtJY29uQ2FjaGVTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2ljb24tY2FjaGUuc2VydmljZSc7XHJcbmltcG9ydCB7RG9tU2FuaXRpemVyfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xyXG5pbXBvcnQgU2lnbmF0dXJlUGFkIGZyb20gXCJzaWduYXR1cmVfcGFkXCI7XHJcbmltcG9ydCB7dG9KcGVnfSBmcm9tICdodG1sLXRvLWltYWdlJztcclxuaW1wb3J0IHtDb0RvY3VtZW50fSBmcm9tIFwiQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvY28tZG9jdW1lbnRcIjtcclxuaW1wb3J0IHtGaWxlVXRpbHN9IGZyb20gXCJAY29saWpuaXQvbWFpbmFwaS9idWlsZC91dGlscy9maWxlLXV0aWxzXCI7XHJcblxyXG5pbXBvcnQge0ZpbGVUeXBlfSBmcm9tIFwiQGNvbGlqbml0L21haW5hcGkvYnVpbGQvZW51bS9maWxlLXR5cGUuZW51bVwiO1xyXG5pbXBvcnQge0ljb259IGZyb20gJy4uLy4uL2VudW0vaWNvbi5lbnVtJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvLWN1c3RvbS1wZGYtZGlhbG9nJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgICA8Y28tZGlhbG9nXHJcbiAgICAgICAgICAgICAgW2Zvb3RlclRlbXBsYXRlXT1cImZvb3RlclRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICBpZD1cImN1c3RvbS1wZGYtZGlhbG9nXCJcclxuICAgICAgICAgICAgICAoY2xvc2VDbGljayk9XCJjbG9zZVBERkRpYWxvZy5lbWl0KClcIj5cclxuICAgICAgICAgIDxkaXYgI3BkZkJvZHkgaWQ9XCJwZGZCb2R5XCI+XHJcbiAgICAgICAgICAgICAgPHNlY3Rpb24gW2lubmVySFRNTF09XCJmaWxlQm9keVwiPjwvc2VjdGlvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNmb290ZXJUZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY28tZGlhbG9nLWZvb3Rlci1idXR0b24td3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8Y28tYnV0dG9uIGNsYXNzPVwic2F2ZS1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuQ2hlY2tEdW90b25lKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZVNhdmVDbGlja2VkKClcIj48L2NvLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPGNvLWJ1dHRvbiBjbGFzcz1cImNsb3NlLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5Dcm9zc1NraW5ueSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZVBERkRpYWxvZy5lbWl0KClcIj48L2NvLWJ1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvY28tZGlhbG9nPlxyXG4gIGAsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3VzdG9tUGRmRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBJY29uID0gSWNvbjtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby1jdXN0b20tcGRmLWRpYWxvZycpXHJcbiAgcHVibGljIHNob3dDbGFzcygpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZCgncGRmQm9keScpXHJcbiAgcHVibGljIHBkZkJvZHk6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGFkZGl0aW9uYWxGaWxlQ29udGVudHM6IGFueTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgYWRkaXRpb25hbEZpbGVOYW1lOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGNsb3NlUERGRGlhbG9nOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgYWRkaXRpb25hbEZpbGVDaGFuZ2VFdmVudDogRXZlbnRFbWl0dGVyPENvRG9jdW1lbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxDb0RvY3VtZW50PigpO1xyXG5cclxuICBwdWJsaWMgY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudDtcclxuICBwdWJsaWMgY29udGV4dDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEO1xyXG4gIHB1YmxpYyBzaWduYXR1cmVQYWRzOiB7IFtrZXk6IHN0cmluZ106IFNpZ25hdHVyZVBhZCB9ID0ge307XHJcbiAgcHVibGljIHNpZ25hdHVyZUNhbnZhc2VzOiB7IFtrZXk6IHN0cmluZ106IEVsZW1lbnRSZWYgfSA9IHt9O1xyXG4gIHB1YmxpYyBmaWxlQm9keTogYW55O1xyXG4gIHB1YmxpYyBmaWxlU3R5bGU6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgaWNvbkNhY2hlU2VydmljZTogSWNvbkNhY2hlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3Nhbml0aXplcjogRG9tU2FuaXRpemVyXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmFkZGl0aW9uYWxGaWxlQ29udGVudHMpIHtcclxuICAgICAgY29uc3QgaGVhZDogSFRNTEhlYWRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcclxuICAgICAgY29uc3Qgc3R5bGVzOiBzdHJpbmdbXSA9IHRoaXMuZXh0cmFjdFN0eWxlUGFydHModGhpcy5hZGRpdGlvbmFsRmlsZUNvbnRlbnRzKTtcclxuICAgICAgdGhpcy5maWxlU3R5bGUgPSBzdHlsZXNbMF07XHJcbiAgICAgIGNvbnN0IHN0eWxlOiBIVE1MU3R5bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcclxuICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGhpcy5maWxlU3R5bGUpKTtcclxuICAgICAgaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7XHJcbiAgICAgIGNvbnN0IGJvZHk6IHN0cmluZ1tdID0gdGhpcy5leHRyYWN0Qm9keUNvbnRlbnRzKHRoaXMuYWRkaXRpb25hbEZpbGVDb250ZW50cyk7XHJcbiAgICAgIHRoaXMuZmlsZUJvZHkgPSB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoYm9keVswXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBbJ3NpZ25hdHVyZUNhbnZhcycsICdzaWduYXR1cmVDYW52YXMyJ10uZm9yRWFjaChpZCA9PiB7XHJcbiAgICAgIGNvbnN0IGNhbnZhc0VsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XHJcbiAgICAgIGlmIChjYW52YXNFbGVtZW50KSB7XHJcbiAgICAgICAgY29uc3QgY2FudmFzUmVmID0gbmV3IEVsZW1lbnRSZWYoY2FudmFzRWxlbWVudCk7XHJcbiAgICAgICAgY29uc3Qgc2lnbmF0dXJlUGFkID0gbmV3IFNpZ25hdHVyZVBhZCg8SFRNTENhbnZhc0VsZW1lbnQ+Y2FudmFzUmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgIHRoaXMuc2lnbmF0dXJlQ2FudmFzZXNbaWRdID0gY2FudmFzUmVmO1xyXG4gICAgICAgIHRoaXMuc2lnbmF0dXJlUGFkc1tpZF0gPSBzaWduYXR1cmVQYWQ7XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fcmVzaXplU2lnbmF0dXJlQ2FudmFzKHNpZ25hdHVyZVBhZCwgY2FudmFzUmVmKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBjbGVhckJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbGVhckJ1dHRvbicpO1xyXG4gICAgY2xlYXJCdXR0b24/LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gdGhpcy5oYW5kbGVDbGVhcigpKTtcclxuXHJcbiAgICAvLyBEdWUgdG8gYSBidWcgb3Iga25vd24gaXNzdWUgd2l0aCBodG1sLXRvLWltYWdlIHdlIG5lZWQgYSBiaXQgb2YgSlMgdGhlIGZpbGwgaW4gdGhlIGNoZWNrZWQgdmFsdWUgd2hlbiBzZWxlY3RpbmcgYSBjaGVja2JveC5cclxuICAgIC8vIEhhbmRsaW5nIHRoZSBjaGVja2JveGVzIGFuZCByYWRpb2J1dHRvbnNcclxuICAgIGNvbnN0IGNvbnRhaW5lcjogSFRNTEVsZW1lbnQgPSB0aGlzLnBkZkJvZHkubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoZXZlbnQ6IEV2ZW50KSA9PiB7XHJcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgaWYgKHRhcmdldC50YWdOYW1lID09PSAnSU5QVVQnICYmICh0YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudHlwZSA9PT0gJ2NoZWNrYm94Jykge1xyXG4gICAgICAgIGNvbnN0IGNoZWNrYm94OiBIVE1MSW5wdXRFbGVtZW50ID0gdGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICAgICAgaWYgKGNoZWNrYm94LmNoZWNrZWQpIHtcclxuICAgICAgICAgIGNoZWNrYm94LnNldEF0dHJpYnV0ZSgnY2hlY2tlZCcsICd0cnVlJyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNoZWNrYm94LnJlbW92ZUF0dHJpYnV0ZSgnY2hlY2tlZCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0YXJnZXQudGFnTmFtZSA9PT0gJ0lOUFVUJyAmJiAodGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnR5cGUgPT09ICdyYWRpbycpIHtcclxuICAgICAgICBjb25zdCByYWRpbzogSFRNTElucHV0RWxlbWVudCA9IHRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgICAgIGNvbnN0IGdyb3VwTmFtZTogc3RyaW5nID0gcmFkaW8ubmFtZTtcclxuICAgICAgICBjb25zdCByYWRpb3M6IE5vZGVMaXN0T2Y8RWxlbWVudD4gPSBjb250YWluZXIucXVlcnlTZWxlY3RvckFsbChgaW5wdXRbdHlwZT1cInJhZGlvXCJdW25hbWU9XCIke2dyb3VwTmFtZX1cIl1gKTtcclxuICAgICAgICByYWRpb3MuZm9yRWFjaCgocmFkaW8pID0+IHJhZGlvLnJlbW92ZUF0dHJpYnV0ZSgnY2hlY2tlZCcpKTtcclxuICAgICAgICBpZiAocmFkaW8uY2hlY2tlZCkge1xyXG4gICAgICAgICAgcmFkaW8uc2V0QXR0cmlidXRlKCdjaGVja2VkJywgJ3RydWUnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGV4dHJhY3RTdHlsZVBhcnRzKGh0bWw6IHN0cmluZyk6IHN0cmluZ1tdIHtcclxuICAgIGNvbnN0IHN0eWxlUGF0dGVybjogUmVnRXhwID0gLzxzdHlsZVtePl0qPihbXFxzXFxTXSo/KTxcXC9zdHlsZT4vZ2k7XHJcbiAgICBjb25zdCBtYXRjaGVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgbGV0IG1hdGNoOiBSZWdFeHBFeGVjQXJyYXkgfCBudWxsO1xyXG4gICAgd2hpbGUgKChtYXRjaCA9IHN0eWxlUGF0dGVybi5leGVjKGh0bWwpKSAhPT0gbnVsbCkge1xyXG4gICAgICBtYXRjaGVzLnB1c2gobWF0Y2hbMV0udHJpbSgpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBtYXRjaGVzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlbW92ZVN0eWxlQW5kU2NyaXB0VGFncyhodG1sOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgc3R5bGVUYWdQYXR0ZXJuOiBSZWdFeHAgPSAvPHN0eWxlW14+XSo+W1xcc1xcU10qPzxcXC9zdHlsZT4vZ2k7XHJcbiAgICBjb25zdCBzY3JpcHRUYWdQYXR0ZXJuOiBSZWdFeHAgPSAvPHNjcmlwdFtePl0qPltcXHNcXFNdKj88XFwvc2NyaXB0Pi9naTtcclxuICAgIHJldHVybiBodG1sLnJlcGxhY2Uoc3R5bGVUYWdQYXR0ZXJuLCAnJykucmVwbGFjZShzY3JpcHRUYWdQYXR0ZXJuLCAnJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZXh0cmFjdEJvZHlDb250ZW50cyhodG1sOiBzdHJpbmcpOiBzdHJpbmcgW10ge1xyXG4gICAgaHRtbCA9IHRoaXMucmVtb3ZlU3R5bGVBbmRTY3JpcHRUYWdzKGh0bWwpO1xyXG4gICAgY29uc3Qgc3R5bGVQYXR0ZXJuOiBSZWdFeHAgPSAvPGJvZHlbXj5dKj4oW1xcc1xcU10qPyk8XFwvYm9keT4vZ2k7XHJcbiAgICBjb25zdCBtYXRjaGVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgbGV0IG1hdGNoOiBSZWdFeHBFeGVjQXJyYXkgfCBudWxsO1xyXG4gICAgd2hpbGUgKChtYXRjaCA9IHN0eWxlUGF0dGVybi5leGVjKGh0bWwpKSAhPT0gbnVsbCkge1xyXG4gICAgICBtYXRjaGVzLnB1c2gobWF0Y2hbMV0udHJpbSgpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBtYXRjaGVzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGhhbmRsZVNhdmVDbGlja2VkKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QgY2xlYXJCdXR0b246IEhUTUxFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsZWFyQnV0dG9uJyk7XHJcbiAgICBjbGVhckJ1dHRvbi5oaWRkZW4gPSB0cnVlO1xyXG4gICAgY29uc3QgZG9jOiBqc1BERiA9IG5ldyBqc1BERigpO1xyXG4gICAgY29uc3QgaHRtbERvY3VtZW50OiBIVE1MRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjcGRmQm9keVwiKTtcclxuICAgIGNvbnN0IGRvY3VtZW50U2VjdGlvbjogSFRNTENvbGxlY3Rpb25PZjxIVE1MRWxlbWVudD4gPSBodG1sRG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NlY3Rpb24nKTtcclxuICAgIGNvbnN0IHNlY3Rpb25zQ291bnQ6IG51bWJlciA9IGRvY3VtZW50U2VjdGlvbi5sZW5ndGg7XHJcblxyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHNlY3Rpb25zQ291bnQ7IGkrKykge1xyXG4gICAgICBjb25zdCBodG1sOiBIVE1MRWxlbWVudCA9IGRvY3VtZW50U2VjdGlvbltpXTtcclxuICAgICAgdG9KcGVnKGh0bWwsIHtcclxuICAgICAgICBxdWFsaXR5OiAxLFxyXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3doaXRlJ1xyXG4gICAgICB9KS50aGVuKChkYXRhVXJsOiBzdHJpbmcpID0+IHtcclxuICAgICAgICBjb25zdCBpbWc6IEhUTUxJbWFnZUVsZW1lbnQgPSBuZXcgSW1hZ2UoKTtcclxuICAgICAgICBpbWcuc3JjID0gZGF0YVVybDtcclxuICAgICAgICBpbWcub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgaW1nV2lkdGg6IG51bWJlciA9IDIxODtcclxuICAgICAgICAgIGNvbnN0IGltZ0hlaWdodDogbnVtYmVyID0gKGltZy5oZWlnaHQgKiBpbWdXaWR0aCkgLyBpbWcud2lkdGg7XHJcbiAgICAgICAgICBkb2MuYWRkSW1hZ2UoZGF0YVVybCwgJ0pQRycsIC00LCAwLCBpbWdXaWR0aCwgaW1nSGVpZ2h0KTtcclxuICAgICAgICAgIGlmIChpID09PSBzZWN0aW9uc0NvdW50IC0gMSkge1xyXG4gICAgICAgICAgICAvLyBkb2Muc2F2ZSh0aGlzLmFkZGl0aW9uYWxGaWxlTmFtZSArICcucGRmJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IHRlbXBGaWxlOiBzdHJpbmcgPSBkb2Mub3V0cHV0KCdkYXRhdXJpc3RyaW5nJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpbGU6IEZpbGUgPSB0aGlzLmRhdGFVUkl0b0Jsb2IodGVtcEZpbGUpO1xyXG4gICAgICAgICAgICBGaWxlVXRpbHMuUmVhZEZpbGVBc05ld0NvRG9jdW1lbnQoZmlsZSkudGhlbihmaWxlQXNDb0RvY3VtZW50ID0+IHtcclxuICAgICAgICAgICAgICAvLyBzZXQgc29tZSBleHRyYSBrbm93biBmaWVsZHMgZm9yIHRoZSBjb2RvY3VtZW50OlxyXG4gICAgICAgICAgICAgIGZpbGVBc0NvRG9jdW1lbnQuZmlsZVR5cGUgPSBGaWxlVXRpbHMuSXNJbWFnZUZpbGUoZmlsZSkgPyBGaWxlVHlwZS5JbWFnZSA6IEZpbGVUeXBlLkRvY3VtZW50O1xyXG4gICAgICAgICAgICAgIGZpbGVBc0NvRG9jdW1lbnQuY3JlYXRpb25EYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgICAgICAgICBmaWxlQXNDb0RvY3VtZW50Lm1vZGlmaWVkRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgICAgICAgZmlsZUFzQ29Eb2N1bWVudC5yZXBvcnRzID0gMTtcclxuICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxGaWxlQ2hhbmdlRXZlbnQuZW1pdChmaWxlQXNDb0RvY3VtZW50KTtcclxuICAgICAgICAgICAgICB0aGlzLmNsb3NlUERGRGlhbG9nLmVtaXQoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBkb2MuYWRkUGFnZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGdlbmVyYXRpbmcgaW1hZ2U6JywgZXJyb3IpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNsZWFyQnV0dG9uLmhpZGRlbiA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRhdGFVUkl0b0Jsb2IoZGF0YVVSSSk6IEZpbGUge1xyXG4gICAgY29uc3QgYnl0ZVN0cmluZzogc3RyaW5nID0gYXRvYihkYXRhVVJJLnNwbGl0KCcsJylbMV0pO1xyXG4gICAgY29uc3QgYWI6IEFycmF5QnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKGJ5dGVTdHJpbmcubGVuZ3RoKTtcclxuICAgIGNvbnN0IGlhOiBVaW50OEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYWIpO1xyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IGJ5dGVTdHJpbmcubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWFbaV0gPSBieXRlU3RyaW5nLmNoYXJDb2RlQXQoaSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3IEZpbGUoW2FiXSwgdGhpcy5hZGRpdGlvbmFsRmlsZU5hbWUgKyAnLnBkZicpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUNsZWFyKCk6IHZvaWQge1xyXG4gICAgT2JqZWN0LnZhbHVlcyh0aGlzLnNpZ25hdHVyZVBhZHMpLmZvckVhY2goc2lnbmF0dXJlUGFkID0+IHtcclxuICAgICAgc2lnbmF0dXJlUGFkPy5jbGVhcigpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9yZXNpemVTaWduYXR1cmVDYW52YXMoc2lnbmF0dXJlOiBTaWduYXR1cmVQYWQsIHNpZ25hdHVyZUNhbnZhczogRWxlbWVudFJlZik6IHZvaWQge1xyXG4gICAgY29uc3QgaW1hZ2VCZWZvcmVSZXNpemU6IHN0cmluZyA9IHNpZ25hdHVyZS50b0RhdGFVUkwoKTtcclxuICAgIGNvbnN0IHJhdGlvOiBudW1iZXIgPSBNYXRoLm1heCh3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyB8fCAxLCAxKTtcclxuICAgIHNpZ25hdHVyZUNhbnZhcy5uYXRpdmVFbGVtZW50LndpZHRoID0gc2lnbmF0dXJlQ2FudmFzLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggKiByYXRpbztcclxuICAgIHNpZ25hdHVyZUNhbnZhcy5uYXRpdmVFbGVtZW50LmhlaWdodCA9IHNpZ25hdHVyZUNhbnZhcy5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCAqIHJhdGlvO1xyXG4gICAgc2lnbmF0dXJlQ2FudmFzLm5hdGl2ZUVsZW1lbnQuZ2V0Q29udGV4dChcIjJkXCIpLnNjYWxlKHJhdGlvLCByYXRpbyk7XHJcbiAgICBzaWduYXR1cmUuZnJvbURhdGFVUkwoaW1hZ2VCZWZvcmVSZXNpemUpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
|
|
215
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXBkZi1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tLXBkZi9jdXN0b20tcGRmLWRpYWxvZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxPQUFPLENBQUM7QUFDNUIsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDbEUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZELE9BQU8sWUFBWSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXJDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUVuRSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUFDckUsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBZ0MxQyxNQUFNLE9BQU8sd0JBQXdCO0lBZ0NuQyxZQUNTLGdCQUFrQyxFQUNqQyxVQUF3QjtRQUR6QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2pDLGVBQVUsR0FBVixVQUFVLENBQWM7UUFqQ2xCLFVBQUssR0FBZ0IsSUFBSSxDQUFDO1FBY25DLHVCQUFrQixHQUFXLEVBQUUsQ0FBQztRQUdoQyxtQkFBYyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRzVELDhCQUF5QixHQUE2QixJQUFJLFlBQVksRUFBYyxDQUFD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QUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDdkQsWUFBWSxhQUFaLFlBQVksdUJBQVosWUFBWSxDQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLHNCQUFzQixDQUFDLFNBQXVCLEVBQUUsZUFBMkI7UUFDakYsTUFBTSxpQkFBaUIsR0FBVyxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDeEQsTUFBTSxLQUFLLEdBQVcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLGVBQWUsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLGVBQWUsQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN4RixlQUFlLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxlQUFlLENBQUMsYUFBYSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUYsZUFBZSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNuRSxTQUFTLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDM0MsQ0FBQzs7O1lBek5GLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsc0JBQXNCO2dCQUNoQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCVDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7O1lBdkNPLGdCQUFnQjtZQUNoQixZQUFZOzs7d0JBMENqQixXQUFXLFNBQUMsNEJBQTRCO3NCQUt4QyxTQUFTLFNBQUMsU0FBUztxQ0FHbkIsS0FBSztpQ0FHTCxLQUFLOzZCQUdMLE1BQU07d0NBR04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb25cclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge2pzUERGfSBmcm9tIFwianNwZGZcIjtcclxuaW1wb3J0IHtJY29uQ2FjaGVTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2ljb24tY2FjaGUuc2VydmljZSc7XHJcbmltcG9ydCB7RG9tU2FuaXRpemVyfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xyXG5pbXBvcnQgU2lnbmF0dXJlUGFkIGZyb20gXCJzaWduYXR1cmVfcGFkXCI7XHJcbmltcG9ydCB7dG9KcGVnfSBmcm9tICdodG1sLXRvLWltYWdlJztcclxuaW1wb3J0IHtDb0RvY3VtZW50fSBmcm9tIFwiQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvY28tZG9jdW1lbnRcIjtcclxuaW1wb3J0IHtGaWxlVXRpbHN9IGZyb20gXCJAY29saWpuaXQvbWFpbmFwaS9idWlsZC91dGlscy9maWxlLXV0aWxzXCI7XHJcblxyXG5pbXBvcnQge0ZpbGVUeXBlfSBmcm9tIFwiQGNvbGlqbml0L21haW5hcGkvYnVpbGQvZW51bS9maWxlLXR5cGUuZW51bVwiO1xyXG5pbXBvcnQge0ljb259IGZyb20gJy4uLy4uL2VudW0vaWNvbi5lbnVtJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvLWN1c3RvbS1wZGYtZGlhbG9nJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGNvLWRpYWxvZ1xyXG4gICAgICBbZm9vdGVyVGVtcGxhdGVdPVwiZm9vdGVyVGVtcGxhdGVcIlxyXG4gICAgICBpZD1cImN1c3RvbS1wZGYtZGlhbG9nXCJcclxuICAgICAgKGNsb3NlQ2xpY2spPVwiY2xvc2VQREZEaWFsb2cuZW1pdCgpXCI+XHJcbiAgICAgIDwhLS0gY3JlYXRlIGEgbmljZSBjb250YWluZXIgZm9yIGxvYWRlciBzbyBpdCBpcyBub3QgcmFuZG9tIGluIHRoZSBjb3JuZXIgc29tZXdoZXJlIC0tPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwic2hvd0xvYWRlclwiIGNsYXNzPVwibG9hZGVyLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxjby1sb2FkZXIgKm5nSWY9XCJzaG93TG9hZGVyXCI+PC9jby1sb2FkZXI+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiAjcGRmQm9keSBpZD1cInBkZkJvZHlcIj5cclxuICAgICAgICA8c2VjdGlvbiBbaW5uZXJIVE1MXT1cImZpbGVCb2R5XCI+PC9zZWN0aW9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG5nLXRlbXBsYXRlICNmb290ZXJUZW1wbGF0ZT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY28tZGlhbG9nLWZvb3Rlci1idXR0b24td3JhcHBlclwiPlxyXG4gICAgICAgICAgPGNvLWJ1dHRvbiBjbGFzcz1cInNhdmUtYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5DaGVja0R1b3RvbmUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZVNhdmVDbGlja2VkKClcIj48L2NvLWJ1dHRvbj5cclxuICAgICAgICAgIDxjby1idXR0b24gY2xhc3M9XCJjbG9zZS1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkNyb3NzU2tpbm55KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZVBERkRpYWxvZy5lbWl0KClcIj48L2NvLWJ1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvY28tZGlhbG9nPlxyXG4gIGAsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3VzdG9tUGRmRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBJY29uID0gSWNvbjtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby1jdXN0b20tcGRmLWRpYWxvZycpXHJcbiAgcHVibGljIHNob3dDbGFzcygpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZCgncGRmQm9keScpXHJcbiAgcHVibGljIHBkZkJvZHk6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGFkZGl0aW9uYWxGaWxlQ29udGVudHM6IGFueTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgYWRkaXRpb25hbEZpbGVOYW1lOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGNsb3NlUERGRGlhbG9nOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgYWRkaXRpb25hbEZpbGVDaGFuZ2VFdmVudDogRXZlbnRFbWl0dGVyPENvRG9jdW1lbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxDb0RvY3VtZW50PigpO1xyXG5cclxuICBwdWJsaWMgY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudDtcclxuICBwdWJsaWMgY29udGV4dDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEO1xyXG4gIHB1YmxpYyBzaWduYXR1cmVQYWRzOiB7IFtrZXk6IHN0cmluZ106IFNpZ25hdHVyZVBhZCB9ID0ge307XHJcbiAgcHVibGljIHNpZ25hdHVyZUNhbnZhc2VzOiB7IFtrZXk6IHN0cmluZ106IEVsZW1lbnRSZWYgfSA9IHt9O1xyXG4gIHB1YmxpYyBmaWxlQm9keTogYW55O1xyXG4gIHB1YmxpYyBmaWxlU3R5bGU6IHN0cmluZztcclxuXHJcbiAgcHVibGljIHNob3dMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgaWNvbkNhY2hlU2VydmljZTogSWNvbkNhY2hlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3Nhbml0aXplcjogRG9tU2FuaXRpemVyXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmFkZGl0aW9uYWxGaWxlQ29udGVudHMpIHtcclxuICAgICAgY29uc3QgaGVhZDogSFRNTEhlYWRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcclxuICAgICAgY29uc3Qgc3R5bGVzOiBzdHJpbmdbXSA9IHRoaXMuZXh0cmFjdFN0eWxlUGFydHModGhpcy5hZGRpdGlvbmFsRmlsZUNvbnRlbnRzKTtcclxuICAgICAgdGhpcy5maWxlU3R5bGUgPSBzdHlsZXNbMF07XHJcbiAgICAgIGNvbnN0IHN0eWxlOiBIVE1MU3R5bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcclxuICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGhpcy5maWxlU3R5bGUpKTtcclxuICAgICAgaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7XHJcbiAgICAgIGNvbnN0IGJvZHk6IHN0cmluZ1tdID0gdGhpcy5leHRyYWN0Qm9keUNvbnRlbnRzKHRoaXMuYWRkaXRpb25hbEZpbGVDb250ZW50cyk7XHJcbiAgICAgIHRoaXMuZmlsZUJvZHkgPSB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoYm9keVswXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBbJ3NpZ25hdHVyZUNhbnZhcycsICdzaWduYXR1cmVDYW52YXMyJ10uZm9yRWFjaChpZCA9PiB7XHJcbiAgICAgIGNvbnN0IGNhbnZhc0VsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XHJcbiAgICAgIGlmIChjYW52YXNFbGVtZW50KSB7XHJcbiAgICAgICAgY29uc3QgY2FudmFzUmVmID0gbmV3IEVsZW1lbnRSZWYoY2FudmFzRWxlbWVudCk7XHJcbiAgICAgICAgY29uc3Qgc2lnbmF0dXJlUGFkID0gbmV3IFNpZ25hdHVyZVBhZCg8SFRNTENhbnZhc0VsZW1lbnQ+Y2FudmFzUmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgIHRoaXMuc2lnbmF0dXJlQ2FudmFzZXNbaWRdID0gY2FudmFzUmVmO1xyXG4gICAgICAgIHRoaXMuc2lnbmF0dXJlUGFkc1tpZF0gPSBzaWduYXR1cmVQYWQ7XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fcmVzaXplU2lnbmF0dXJlQ2FudmFzKHNpZ25hdHVyZVBhZCwgY2FudmFzUmVmKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBjbGVhckJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbGVhckJ1dHRvbicpO1xyXG4gICAgY2xlYXJCdXR0b24/LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gdGhpcy5oYW5kbGVDbGVhcigpKTtcclxuXHJcbiAgICAvLyBEdWUgdG8gYSBidWcgb3Iga25vd24gaXNzdWUgd2l0aCBodG1sLXRvLWltYWdlIHdlIG5lZWQgYSBiaXQgb2YgSlMgdGhlIGZpbGwgaW4gdGhlIGNoZWNrZWQgdmFsdWUgd2hlbiBzZWxlY3RpbmcgYSBjaGVja2JveC5cclxuICAgIC8vIEhhbmRsaW5nIHRoZSBjaGVja2JveGVzIGFuZCByYWRpb2J1dHRvbnNcclxuICAgIGNvbnN0IGNvbnRhaW5lcjogSFRNTEVsZW1lbnQgPSB0aGlzLnBkZkJvZHkubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoZXZlbnQ6IEV2ZW50KSA9PiB7XHJcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgaWYgKHRhcmdldC50YWdOYW1lID09PSAnSU5QVVQnICYmICh0YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudHlwZSA9PT0gJ2NoZWNrYm94Jykge1xyXG4gICAgICAgIGNvbnN0IGNoZWNrYm94OiBIVE1MSW5wdXRFbGVtZW50ID0gdGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICAgICAgaWYgKGNoZWNrYm94LmNoZWNrZWQpIHtcclxuICAgICAgICAgIGNoZWNrYm94LnNldEF0dHJpYnV0ZSgnY2hlY2tlZCcsICd0cnVlJyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNoZWNrYm94LnJlbW92ZUF0dHJpYnV0ZSgnY2hlY2tlZCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0YXJnZXQudGFnTmFtZSA9PT0gJ0lOUFVUJyAmJiAodGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnR5cGUgPT09ICdyYWRpbycpIHtcclxuICAgICAgICBjb25zdCByYWRpbzogSFRNTElucHV0RWxlbWVudCA9IHRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgICAgIGNvbnN0IGdyb3VwTmFtZTogc3RyaW5nID0gcmFkaW8ubmFtZTtcclxuICAgICAgICBjb25zdCByYWRpb3M6IE5vZGVMaXN0T2Y8RWxlbWVudD4gPSBjb250YWluZXIucXVlcnlTZWxlY3RvckFsbChgaW5wdXRbdHlwZT1cInJhZGlvXCJdW25hbWU9XCIke2dyb3VwTmFtZX1cIl1gKTtcclxuICAgICAgICByYWRpb3MuZm9yRWFjaCgocmFkaW8pID0+IHJhZGlvLnJlbW92ZUF0dHJpYnV0ZSgnY2hlY2tlZCcpKTtcclxuICAgICAgICBpZiAocmFkaW8uY2hlY2tlZCkge1xyXG4gICAgICAgICAgcmFkaW8uc2V0QXR0cmlidXRlKCdjaGVja2VkJywgJ3RydWUnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGV4dHJhY3RTdHlsZVBhcnRzKGh0bWw6IHN0cmluZyk6IHN0cmluZ1tdIHtcclxuICAgIGNvbnN0IHN0eWxlUGF0dGVybjogUmVnRXhwID0gLzxzdHlsZVtePl0qPihbXFxzXFxTXSo/KTxcXC9zdHlsZT4vZ2k7XHJcbiAgICBjb25zdCBtYXRjaGVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgbGV0IG1hdGNoOiBSZWdFeHBFeGVjQXJyYXkgfCBudWxsO1xyXG4gICAgd2hpbGUgKChtYXRjaCA9IHN0eWxlUGF0dGVybi5leGVjKGh0bWwpKSAhPT0gbnVsbCkge1xyXG4gICAgICBtYXRjaGVzLnB1c2gobWF0Y2hbMV0udHJpbSgpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBtYXRjaGVzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlbW92ZVN0eWxlQW5kU2NyaXB0VGFncyhodG1sOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgc3R5bGVUYWdQYXR0ZXJuOiBSZWdFeHAgPSAvPHN0eWxlW14+XSo+W1xcc1xcU10qPzxcXC9zdHlsZT4vZ2k7XHJcbiAgICBjb25zdCBzY3JpcHRUYWdQYXR0ZXJuOiBSZWdFeHAgPSAvPHNjcmlwdFtePl0qPltcXHNcXFNdKj88XFwvc2NyaXB0Pi9naTtcclxuICAgIHJldHVybiBodG1sLnJlcGxhY2Uoc3R5bGVUYWdQYXR0ZXJuLCAnJykucmVwbGFjZShzY3JpcHRUYWdQYXR0ZXJuLCAnJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZXh0cmFjdEJvZHlDb250ZW50cyhodG1sOiBzdHJpbmcpOiBzdHJpbmcgW10ge1xyXG4gICAgaHRtbCA9IHRoaXMucmVtb3ZlU3R5bGVBbmRTY3JpcHRUYWdzKGh0bWwpO1xyXG4gICAgY29uc3Qgc3R5bGVQYXR0ZXJuOiBSZWdFeHAgPSAvPGJvZHlbXj5dKj4oW1xcc1xcU10qPyk8XFwvYm9keT4vZ2k7XHJcbiAgICBjb25zdCBtYXRjaGVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgbGV0IG1hdGNoOiBSZWdFeHBFeGVjQXJyYXkgfCBudWxsO1xyXG4gICAgd2hpbGUgKChtYXRjaCA9IHN0eWxlUGF0dGVybi5leGVjKGh0bWwpKSAhPT0gbnVsbCkge1xyXG4gICAgICBtYXRjaGVzLnB1c2gobWF0Y2hbMV0udHJpbSgpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBtYXRjaGVzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGhhbmRsZVNhdmVDbGlja2VkKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5zaG93TG9hZGVyID0gdHJ1ZTtcclxuICAgIGNvbnN0IGNsZWFyQnV0dG9uOiBIVE1MRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbGVhckJ1dHRvbicpO1xyXG4gICAgY2xlYXJCdXR0b24uaGlkZGVuID0gdHJ1ZTtcclxuICAgIGNvbnN0IGRvYzoganNQREYgPSBuZXcganNQREYoKTtcclxuICAgIGNvbnN0IGh0bWxEb2N1bWVudDogSFRNTEVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI3BkZkJvZHlcIik7XHJcbiAgICBjb25zdCBkb2N1bWVudFNlY3Rpb246IEhUTUxDb2xsZWN0aW9uT2Y8SFRNTEVsZW1lbnQ+ID0gaHRtbERvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzZWN0aW9uJyk7XHJcbiAgICBjb25zdCBzZWN0aW9uc0NvdW50OiBudW1iZXIgPSBkb2N1bWVudFNlY3Rpb24ubGVuZ3RoO1xyXG5cclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBzZWN0aW9uc0NvdW50OyBpKyspIHtcclxuICAgICAgY29uc3QgaHRtbDogSFRNTEVsZW1lbnQgPSBkb2N1bWVudFNlY3Rpb25baV07XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgZGF0YVVybDogc3RyaW5nID0gYXdhaXQgdG9KcGVnKGh0bWwsIHtcclxuICAgICAgICAgIHF1YWxpdHk6IDEsXHJcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd3aGl0ZSdcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb25zdCBpbWc6IEhUTUxJbWFnZUVsZW1lbnQgPSBuZXcgSW1hZ2UoKTtcclxuICAgICAgICBpbWcuc3JjID0gZGF0YVVybDtcclxuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xyXG4gICAgICAgICAgaW1nLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaW1nV2lkdGg6IG51bWJlciA9IDIxODtcclxuICAgICAgICAgICAgY29uc3QgaW1nSGVpZ2h0OiBudW1iZXIgPSAoaW1nLmhlaWdodCAqIGltZ1dpZHRoKSAvIGltZy53aWR0aDtcclxuICAgICAgICAgICAgZG9jLmFkZEltYWdlKGRhdGFVcmwsICdKUEcnLCAtNCwgMCwgaW1nV2lkdGgsIGltZ0hlaWdodCk7XHJcbiAgICAgICAgICAgIGlmIChpIDwgc2VjdGlvbnNDb3VudCAtIDEpIHtcclxuICAgICAgICAgICAgICBkb2MuYWRkUGFnZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZ2VuZXJhdGluZyBpbWFnZTonLCBlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IHRlbXBGaWxlOiBzdHJpbmcgPSBkb2Mub3V0cHV0KCdkYXRhdXJpc3RyaW5nJyk7XHJcbiAgICBjb25zdCBmaWxlOiBGaWxlID0gdGhpcy5kYXRhVVJJdG9CbG9iKHRlbXBGaWxlKTtcclxuICAgIGNvbnN0IGZpbGVBc0NvRG9jdW1lbnQgPSBhd2FpdCBGaWxlVXRpbHMuUmVhZEZpbGVBc05ld0NvRG9jdW1lbnQoZmlsZSk7XHJcbiAgICBmaWxlQXNDb0RvY3VtZW50LmZpbGVUeXBlID0gRmlsZVV0aWxzLklzSW1hZ2VGaWxlKGZpbGUpID8gRmlsZVR5cGUuSW1hZ2UgOiBGaWxlVHlwZS5Eb2N1bWVudDtcclxuICAgIGZpbGVBc0NvRG9jdW1lbnQuY3JlYXRpb25EYXRlID0gbmV3IERhdGUoKTtcclxuICAgIGZpbGVBc0NvRG9jdW1lbnQubW9kaWZpZWREYXRlID0gbmV3IERhdGUoKTtcclxuICAgIGZpbGVBc0NvRG9jdW1lbnQucmVwb3J0cyA9IDE7XHJcbiAgICB0aGlzLmFkZGl0aW9uYWxGaWxlQ2hhbmdlRXZlbnQuZW1pdChmaWxlQXNDb0RvY3VtZW50KTtcclxuICAgIHRoaXMuc2hvd0xvYWRlciA9IGZhbHNlO1xyXG4gICAgdGhpcy5jbG9zZVBERkRpYWxvZy5lbWl0KCk7XHJcbiAgICBjbGVhckJ1dHRvbi5oaWRkZW4gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkYXRhVVJJdG9CbG9iKGRhdGFVUkkpOiBGaWxlIHtcclxuICAgIGNvbnN0IGJ5dGVTdHJpbmc6IHN0cmluZyA9IGF0b2IoZGF0YVVSSS5zcGxpdCgnLCcpWzFdKTtcclxuICAgIGNvbnN0IGFiOiBBcnJheUJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihieXRlU3RyaW5nLmxlbmd0aCk7XHJcbiAgICBjb25zdCBpYTogVWludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KGFiKTtcclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBieXRlU3RyaW5nLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlhW2ldID0gYnl0ZVN0cmluZy5jaGFyQ29kZUF0KGkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBGaWxlKFthYl0sIHRoaXMuYWRkaXRpb25hbEZpbGVOYW1lICsgJy5wZGYnKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVDbGVhcigpOiB2b2lkIHtcclxuICAgIE9iamVjdC52YWx1ZXModGhpcy5zaWduYXR1cmVQYWRzKS5mb3JFYWNoKHNpZ25hdHVyZVBhZCA9PiB7XHJcbiAgICAgIHNpZ25hdHVyZVBhZD8uY2xlYXIoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVzaXplU2lnbmF0dXJlQ2FudmFzKHNpZ25hdHVyZTogU2lnbmF0dXJlUGFkLCBzaWduYXR1cmVDYW52YXM6IEVsZW1lbnRSZWYpOiB2b2lkIHtcclxuICAgIGNvbnN0IGltYWdlQmVmb3JlUmVzaXplOiBzdHJpbmcgPSBzaWduYXR1cmUudG9EYXRhVVJMKCk7XHJcbiAgICBjb25zdCByYXRpbzogbnVtYmVyID0gTWF0aC5tYXgod2luZG93LmRldmljZVBpeGVsUmF0aW8gfHwgMSwgMSk7XHJcbiAgICBzaWduYXR1cmVDYW52YXMubmF0aXZlRWxlbWVudC53aWR0aCA9IHNpZ25hdHVyZUNhbnZhcy5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoICogcmF0aW87XHJcbiAgICBzaWduYXR1cmVDYW52YXMubmF0aXZlRWxlbWVudC5oZWlnaHQgPSBzaWduYXR1cmVDYW52YXMubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgKiByYXRpbztcclxuICAgIHNpZ25hdHVyZUNhbnZhcy5uYXRpdmVFbGVtZW50LmdldENvbnRleHQoXCIyZFwiKS5zY2FsZShyYXRpbywgcmF0aW8pO1xyXG4gICAgc2lnbmF0dXJlLmZyb21EYXRhVVJMKGltYWdlQmVmb3JlUmVzaXplKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { NgModule } from "@angular/core";
|
|
2
|
-
import { ButtonModule, CoDialogModule, IconModule } from
|
|
2
|
+
import { ButtonModule, CoDialogModule, IconModule, LoaderModule } from '@colijnit/corecomponents_v12';
|
|
3
3
|
import { CustomPdfDialogComponent } from "./custom-pdf-dialog.component";
|
|
4
4
|
import { CommonModule } from "@angular/common";
|
|
5
5
|
import { SharedComponentsTranslationModule } from "../../translation/shared-components-translation.module";
|
|
@@ -13,6 +13,7 @@ CustomPdfDialogModule.decorators = [
|
|
|
13
13
|
CommonModule,
|
|
14
14
|
ButtonModule,
|
|
15
15
|
SharedComponentsTranslationModule,
|
|
16
|
+
LoaderModule
|
|
16
17
|
],
|
|
17
18
|
declarations: [
|
|
18
19
|
CustomPdfDialogComponent
|
|
@@ -23,4 +24,4 @@ CustomPdfDialogModule.decorators = [
|
|
|
23
24
|
providers: []
|
|
24
25
|
},] }
|
|
25
26
|
];
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXBkZi1kaWFsb2cubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tLXBkZi9jdXN0b20tcGRmLWRpYWxvZy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsWUFBWSxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDcEcsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDdkUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxpQ0FBaUMsRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBcUJ6RyxNQUFNLE9BQU8scUJBQXFCOzs7WUFsQmpDLFFBQVEsU0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsVUFBVTtvQkFDVixjQUFjO29CQUNkLFlBQVk7b0JBQ1osWUFBWTtvQkFDWixpQ0FBaUM7b0JBQ2pDLFlBQVk7aUJBQ2I7Z0JBQ0QsWUFBWSxFQUFFO29CQUNaLHdCQUF3QjtpQkFDekI7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLHdCQUF3QjtpQkFDekI7Z0JBQ0QsU0FBUyxFQUFFLEVBQ1Y7YUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7QnV0dG9uTW9kdWxlLCBDb0RpYWxvZ01vZHVsZSwgSWNvbk1vZHVsZSwgTG9hZGVyTW9kdWxlfSBmcm9tICdAY29saWpuaXQvY29yZWNvbXBvbmVudHNfdjEyJztcclxuaW1wb3J0IHtDdXN0b21QZGZEaWFsb2dDb21wb25lbnR9IGZyb20gXCIuL2N1c3RvbS1wZGYtZGlhbG9nLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge1NoYXJlZENvbXBvbmVudHNUcmFuc2xhdGlvbk1vZHVsZX0gZnJvbSBcIi4uLy4uL3RyYW5zbGF0aW9uL3NoYXJlZC1jb21wb25lbnRzLXRyYW5zbGF0aW9uLm1vZHVsZVwiO1xyXG5cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW1xyXG4gICAgSWNvbk1vZHVsZSxcclxuICAgIENvRGlhbG9nTW9kdWxlLFxyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgQnV0dG9uTW9kdWxlLFxyXG4gICAgU2hhcmVkQ29tcG9uZW50c1RyYW5zbGF0aW9uTW9kdWxlLFxyXG4gICAgTG9hZGVyTW9kdWxlXHJcbiAgXSxcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIEN1c3RvbVBkZkRpYWxvZ0NvbXBvbmVudFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgQ3VzdG9tUGRmRGlhbG9nQ29tcG9uZW50XHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdXN0b21QZGZEaWFsb2dNb2R1bGUge1xyXG5cclxufVxyXG4iXX0=
|
|
@@ -403,7 +403,7 @@ BaseFileUploadComponent.propDecorators = {
|
|
|
403
403
|
addWithButton: [{ type: Input }],
|
|
404
404
|
canDelete: [{ type: Input }],
|
|
405
405
|
noDragDropOrdering: [{ type: Input }],
|
|
406
|
-
readonly: [{ type: Input }
|
|
406
|
+
readonly: [{ type: Input }],
|
|
407
407
|
askBeforeDelete: [{ type: Input }],
|
|
408
408
|
resizeImages: [{ type: Input }],
|
|
409
409
|
lockOperation: [{ type: Input }],
|
|
@@ -429,7 +429,7 @@ BaseFileUploadComponent.propDecorators = {
|
|
|
429
429
|
sortableListChanged: [{ type: Output }],
|
|
430
430
|
documentChangeEvent: [{ type: Output }],
|
|
431
431
|
popupOpenedStateChange: [{ type: Output }],
|
|
432
|
-
hidden: [{ type: HostBinding, args: ["class.hidden",] }],
|
|
432
|
+
hidden: [{ type: HostBinding, args: ["class.co-shared-hidden",] }],
|
|
433
433
|
onDrop: [{ type: HostListener, args: ["drop", ["$event"],] }],
|
|
434
434
|
onDragEnd: [{ type: HostListener, args: ["dragend", ["$event"],] }],
|
|
435
435
|
onDragOver: [{ type: HostListener, args: ["dragover", ["$event"],] }],
|
|
@@ -466,4 +466,4 @@ __decorate([
|
|
|
466
466
|
__decorate([
|
|
467
467
|
InputBoolean()
|
|
468
468
|
], BaseFileUploadComponent.prototype, "useCustomFileDropEvent", void 0);
|
|
469
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1maWxlLXVwbG9hZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWRjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9maWxlcy11cGxvYWQvY29tcG9uZW50cy9iYXNlLWZpbGUtdXBsb2FkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVILHdCQUF3QixFQUV4QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixnQkFBZ0IsRUFDbkIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ3hELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSw2Q0FBNkMsQ0FBQztBQUNyRSxPQUFPLEVBRUgsa0NBQWtDLEVBQ3JDLE1BQU0sdURBQXVELENBQUM7QUFJL0QsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUV6RixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sdURBQXVELENBQUM7QUFDdEYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLHFEQUFxRCxDQUFDO0FBQzdGLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUNuRSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDckUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBQ2xGLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLHFE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WUFBWSxFQUFFO3VEQVFkO0FBUUQ7SUFEQyxZQUFZLEVBQUU7Z0VBQ3dCO0FBSXZDO0lBREMsWUFBWSxFQUFFOzZEQUNzQjtBQTRCckM7SUFEQyxZQUFZLEVBQUU7b0VBQzZCO0FBSTVDO0lBREMsWUFBWSxFQUFFO3FFQUM4QjtBQWE3QztJQURDLFlBQVksRUFBRTt1RUFDZ0M7QUFPL0M7SUFEQyxZQUFZLEVBQUU7a0VBQzJCO0FBVTFDO0lBREMsWUFBWSxFQUFFO3VFQUN3QjtBQUl2QztJQURVLFlBQVksRUFBRTt1RUFDdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ29tcG9uZW50RmFjdG9yeSxcclxuICAgIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgIENvbXBvbmVudFJlZixcclxuICAgIERpcmVjdGl2ZSxcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIEhvc3RCaW5kaW5nLFxyXG4gICAgSG9zdExpc3RlbmVyLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkRlc3Ryb3ksXHJcbiAgICBPdXRwdXQsXHJcbiAgICBWaWV3Q29udGFpbmVyUmVmXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtTY3JlZW5Db25maWdBZGFwdGVyQ29tcG9uZW50fSBmcm9tIFwiQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMlwiO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtUYWJsZU5hbWV9IGZyb20gXCIuLi8uLi8uLi9lbnVtL3RhYmxlLW5hbWUuZW51bVwiO1xyXG5pbXBvcnQge0ZpbGVUeXBlfSBmcm9tIFwiQGNvbGlqbml0L21haW5hcGkvYnVpbGQvZW51bS9maWxlLXR5cGUuZW51bVwiO1xyXG5pbXBvcnQge1xyXG4gICAgT3BlcmF0aW9uQ2FsbGJhY2tTaW1wbGVGdW5jdGlvbixcclxuICAgIE9wZXJhdGlvbldpdGhBbHdheXNTdWNjZXNzQ2FsbGJhY2tcclxufSBmcm9tIFwiLi4vLi4vLi4vaW50ZXJmYWNlL29wZXJhdGlvbi1jYWxsYmFjay1zaW1wbGUtZnVuY3Rpb25cIjtcclxuaW1wb3J0IHtJbnRlcm5hbFBhcmFtfSBmcm9tIFwiLi4vLi4vLi4vZW51bS9pbnRlcm5hbC1wYXJhbS5lbnVtXCI7XHJcbmltcG9ydCB7RmlsZXNVcGxvYWRDb25maWdPYmplY3RzfSBmcm9tIFwiLi4vLi4vLi4vZW51bS9maWxlcy11cGxvYWQtY29uZmlnLW9iamVjdHNcIjtcclxuaW1wb3J0IHtUYWdDYXRlZ29yeX0gZnJvbSBcIi4uLy4uLy4uL2VudW0vdGFnLWNhdGVnb3J5LmVudW1cIjtcclxuaW1wb3J0IHtBcnJheVV0aWxzfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvYXJyYXktdXRpbHNcIjtcclxuaW1wb3J0IHtSZWZDb2RlVXRpbHN9IGZyb20gXCIuLi8uLi8uLi91dGlscy9yZWYtY29kZS11dGlsc1wiO1xyXG5pbXBvcnQge0NvRG9jdW1lbnRTaGFyZWRGaWVsZExvZ2ljfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvY28tZG9jdW1lbnQtc2hhcmVkLWZpZWxkLWxvZ2ljXCI7XHJcbmltcG9ydCB7Q29Eb2N1bWVudFJpZ2h0fSBmcm9tIFwiLi4vLi4vLi4vYnVzaW5lc3NvYmplY3QvY28tZG9jdW1lbnQtcmlnaHQuYm9cIjtcclxuaW1wb3J0IHtPYmplY3RSaWdodFR5cGV9IGZyb20gXCJAY29saWpuaXQvc2hhcmVkYXBpL2J1aWxkL2VudW0vb2JqZWN0LXJpZ2h0LXR5cGUuZW51bVwiO1xyXG5pbXBvcnQge0lucHV0Qm9vbGVhbn0gZnJvbSBcIi4uLy4uLy4uL2RlY29yYXRvci9pbnB1dC1ib29sZWFuLmRlY29yYXRvclwiO1xyXG5pbXBvcnQge0FwcEZpbGVEcm9wem9uZUNvbXBvbmVudH0gZnJvbSBcIi4uLy4uL2FwcC1maWxlLWRyb3B6b25lL2FwcC1maWxlLWRyb3B6b25lLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0ZpbGVVdGlsc30gZnJvbSBcIkBjb2xpam5pdC9tYWluYXBpL2J1aWxkL3V0aWxzL2ZpbGUtdXRpbHNcIjtcclxuaW1wb3J0IHtDb0RvY3VtZW50fSBmcm9tIFwiQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvY28tZG9jdW1lbnRcIjtcclxuaW1wb3J0IHtDb0RvY3VtZW50VHlwZX0gZnJvbSBcIkBjb2xpam5pdC9tYWluYXBpL2J1aWxkL2VudW0vY28tZG9jdW1lbnQtdHlwZS5lbnVtXCI7XHJcbmltcG9ydCB7RmlsZVVwbG9hZFBvcHVwQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vZmlsZS11cGxvYWQtcG9wdXAvZmlsZS11cGxvYWQtcG9wdXAuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7U2hhcmVkQ29tcG9uZW50c0RpY3Rpb25hcnlTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi90cmFuc2xhdGlvbi9zaGFyZWQtY29tcG9uZW50cy1kaWN0aW9uYXJ5LnNlcnZpY2UnO1xyXG5cclxuXHJcblxyXG4vLyBBIGJhc2UgY29tcG9uZW50IHRoYXQgbGV0cyB0aGUgdXNlciBtYWtlIGEgbGlzdCBvZiBmaWxlcyBmcm9tIGl0cyBkZXZpY2UuIERvZXNuJ3QgYWN0dWFsbHkgdXBsb2FkLCBidXQgb3V0cHV0cyBjaG9zZW4gZmlsZXMgYXMgZmlsZXNDaGFuZ2VkLlxyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VGaWxlVXBsb2FkQ29tcG9uZW50IGltcGxlbWVudHMgU2NyZWVuQ29uZmlnQWRhcHRlckNvbXBvbmVudCwgT25EZXN0cm95IHtcclxuICAgIGRlY2ltYWxzOiBudW1iZXI7XHJcbiAgICBmb3JjZVJlYWRvbmx5OiBib29sZWFuO1xyXG4gICAgbWF4TGVuZ3RoOiBudW1iZXI7XHJcbiAgICBvYmplY3RDb25maWdOYW1lOiBzdHJpbmc7XHJcbiAgICByZWRFcnJvckJhY2tncm91bmQ6IGJvb2xlYW47XHJcbiAgICByZXF1aXJlZDogYm9vbGVhbjtcclxuXHJcbiAgICAvLyBUaGUgZmlsZVR5cGUgdGhhdCB0aGUgZG9jdW1lbnRzIHNob3VsZCBiZSBzYXZlZCBhcywgbGVhdmUgZW1wdHkgdG8gYXV0b21hdGljYWxseSBkZXRlY3QgZmlsZXR5cGUuIEFsc28gZGV0ZXJtaW5lcyBmaWxlIHBpY2tlciBmaWx0ZXJcclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IGZpbGVUeXBlKHZhbHVlOiBGaWxlVHlwZSkge1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLl9maWxlVHlwZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAvL1RPRE8gRG9jdW1lbnRkYXRhbG9hZGVyIGZpeFxyXG4gICAgICAgICAgICAvL3RoaXMuX2NvRG9jdW1lbnREYXRhTG9hZGVyLmxvYWRBbGxvd2VkVHlwZXMoKS50aGVuKCgpID0+IHt0aGlzLmhhbmRsZUFjY2VwdGVkRmlsZVR5cGVzTG9hZGVkKHZhbHVlKX0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGZpbGVUeXBlKCk6IEZpbGVUeXBlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZmlsZVR5cGU7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBkb2N1bWVudHM6IENvRG9jdW1lbnRbXSA9IFtdO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZG9jdW1lbnRUYWJsZTogVGFibGVOYW1lO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IGRvY3VtZW50S2V5KHZhbHVlOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl9kb2N1bWVudEtleSA9IHZhbHVlICsgXCJcIjsgLy8gZm9yY2Ugc3RyaW5nXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBkb2N1bWVudEtleSgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9kb2N1bWVudEtleTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUaGUgYWJpbGl0eSB0byBkcm9wIGZpbGVzIG9uIHRoZSBwYWdlXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGZ1bGxQYWdlRHJvcDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8vIElmIHVzZXIgZ2V0cyB0aGUgYWJpbGl0eSBvZiBhZGRpbmcgZmlsZXMuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGNhbkFkZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBkcm9wTWVzc2FnZTogc3RyaW5nO1xyXG5cclxuICAgIC8vIFNob3cgYWRkIGJ1dHRvblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBhZGRXaXRoQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICAvLyBJZiB1c2VyIGdldHMgdGhlIGFiaWxpdHkgb2YgZGVsZXRpbmcgZmlsZXMuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGNhbkRlbGV0ZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIEBJbnB1dEJvb2xlYW4oKVxyXG4gICAgcHVibGljIG5vRHJhZ0Ryb3BPcmRlcmluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBASW5wdXRCb29sZWFuKClcclxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuY28tc2hhcmVkLWhpZGRlbicpXHJcbiAgICBwdWJsaWMgc2V0IHJlYWRvbmx5KHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5fcmVhZG9ubHkgPSB2YWx1ZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX3BvcHVwICYmIHRoaXMuX3BvcHVwLmluc3RhbmNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3BvcHVwLmluc3RhbmNlLnJlYWRvbmx5ID0gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgcmVhZG9ubHkoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlYWRvbmx5O1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBASW5wdXRCb29sZWFuKClcclxuICAgIHB1YmxpYyBhc2tCZWZvcmVEZWxldGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBASW5wdXRCb29sZWFuKClcclxuICAgIHB1YmxpYyByZXNpemVJbWFnZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGxvY2tPcGVyYXRpb246IE9wZXJhdGlvbkNhbGxiYWNrU2ltcGxlRnVuY3Rpb24gPSBPcGVyYXRpb25XaXRoQWx3YXlzU3VjY2Vzc0NhbGxiYWNrO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgdW5sb2NrT3BlcmF0aW9uOiBPcGVyYXRpb25DYWxsYmFja1NpbXBsZUZ1bmN0aW9uID0gT3BlcmF0aW9uV2l0aEFsd2F5c1N1Y2Nlc3NDYWxsYmFjaztcclxuXHJcblxyXG5cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGJlZm9yZURlbGV0ZU9wZXJhdGlvbjogT3BlcmF0aW9uQ2FsbGJhY2tTaW1wbGVGdW5jdGlvbiA9IE9wZXJhdGlvbldpdGhBbHdheXNTdWNjZXNzQ2FsbGJhY2s7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBhZnRlckRlbGV0ZU9wZXJhdGlvbjogT3BlcmF0aW9uQ2FsbGJhY2tTaW1wbGVGdW5jdGlvbiA9IE9wZXJhdGlvbldpdGhBbHdheXNTdWNjZXNzQ2FsbGJhY2s7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBiZWZvcmVDcmVhdGVPcGVyYXRpb246IE9wZXJhdGlvbkNhbGxiYWNrU2ltcGxlRnVuY3Rpb24gPSBPcGVyYXRpb25XaXRoQWx3YXlzU3VjY2Vzc0NhbGxiYWNrO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYWZ0ZXJDcmVhdGVPcGVyYXRpb246IE9wZXJhdGlvbkNhbGxiYWNrU2ltcGxlRnVuY3Rpb24gPSBPcGVyYXRpb25XaXRoQWx3YXlzU3VjY2Vzc0NhbGxiYWNrO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYmVmb3JlRWRpdE9wZXJhdGlvbjogT3BlcmF0aW9uQ2FsbGJhY2tTaW1wbGVGdW5jdGlvbiA9IE9wZXJhdGlvbldpdGhBbHdheXNTdWNjZXNzQ2FsbGJhY2s7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIEBJbnB1dEJvb2xlYW4oKVxyXG4gICAgcHVibGljIGRvbnRBc2tCZWZvcmVEZWxldGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgQElucHV0Qm9vbGVhbigpXHJcbiAgICBwdWJsaWMgbm9Pd25EZWxldGVPcGVyYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBwcml2YXRlIF9maWxlVHlwZTogRmlsZVR5cGU7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgbWF4VXBsb2FkU2l6ZVBhcmFtKHZhbHVlOiBJbnRlcm5hbFBhcmFtKSB7XHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3NldEludGVybmFsUGFyYW1PYmoodmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgQElucHV0Qm9vbGVhbigpXHJcbiAgICBwdWJsaWMgdXNlV2l0aG91dFNldHRpbmdQcm9wczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZmlsZXNVcGxvYWRDb25maWdPYmplY3RzOiBGaWxlc1VwbG9hZENvbmZpZ09iamVjdHM7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIEBJbnB1dEJvb2xlYW4oKVxyXG4gICAgcHVibGljIG1lZGljYWxVc2VyR3JvdXBzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyB0YWdDYXRlZ29yeTogVGFnQ2F0ZWdvcnk7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyB0YWdSZWZlcmVuY2VUYWJsZTogVGFibGVOYW1lO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBASW5wdXRCb29sZWFuKClcclxuICAgIHB1YmxpYyBkaXNwbGF5UmVhZFdyaXRlQWNjZXNzOiBib29sZWFuO1xyXG5cclxuICAgIC8vIFVzZSB3aXRoIGN1c3RvbUZpbGVEcm9wRXZlbnRcclxuICAgIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKVxyXG4gICAgcHVibGljIHVzZUN1c3RvbUZpbGVEcm9wRXZlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvLyBVc2UgaW4gY29uanVuY3Rpb24gd2l0aCB1c2VDdXN0b21GaWxlRHJvcEV2ZW50XHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBjdXN0b21GaWxlRHJvcEV2ZW50OiBFdmVudEVtaXR0ZXI8RmlsZUxpc3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlTGlzdD4oKTtcclxuXHJcbiAgICAvLyBFbWl0cyBpZiB1c2VyIHdhbnRzIHRvIGFkZCBtdWx0aXBsZSBkb2N1bWVudHMgYXQgb25jZVxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgZG9jdW1lbnRzQWRkZWQ6IEV2ZW50RW1pdHRlcjxDb0RvY3VtZW50W10+ID0gbmV3IEV2ZW50RW1pdHRlcjxDb0RvY3VtZW50W10+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgZG9jdW1lbnREZWxldGVkOiBFdmVudEVtaXR0ZXI8Q29Eb2N1bWVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPENvRG9jdW1lbnQ+KCk7XHJcblxyXG4gICAgLy8gRW1pdHMgZXZlcnkgdGltZSB0aGUgb3JkZXIgb2YgZG9jdW1lbnRzIHdhcyBjaGFuZ2VkXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyByZWFkb25seSBzb3J0YWJsZUxpc3RDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Q29Eb2N1bWVudFtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8Q29Eb2N1bWVudFtdPigpO1xyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGRvY3VtZW50Q2hhbmdlRXZlbnQ6IEV2ZW50RW1pdHRlcjxDb0RvY3VtZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8Q29Eb2N1bWVudD4oKTtcclxuXHJcbiAgICAvLyBVc2UgdGhpcyBpZiBjb25zdW1lciByZXF1aXJlcyB0byBwZXJmb3JtIGV4dHJhIGFjdGlvbnMsIGxpa2UgbG9ja2luZyBhIHBhcmVudCBidXNpbmVzc09iamVjdCBpZiBpdCBjb250YWlucyB0aGUgY29sbGVjdGlvbiBvZiBkb2N1bWVudHMuIEVtaXQgd2l0aCB0cnVlIHdoZW4gcG9wdXAgb3BlbmVkLCBmYWxzZSBmb3IgY2xvc2VcclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHBvcHVwT3BlbmVkU3RhdGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgICBASG9zdEJpbmRpbmcoXCJjbGFzcy5oaWRkZW5cIilcclxuICAgIHB1YmxpYyBoaWRkZW46IGJvb2xlYW47XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcihcImRyb3BcIiwgW1wiJGV2ZW50XCJdKVxyXG4gICAgcHVibGljIG9uRHJvcChldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnVzZUN1c3RvbUZpbGVEcm9wRXZlbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5maWxlc1BpY2tlZChldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tRmlsZURyb3BFdmVudC5lbWl0KGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9jbGVhckRyb3B6b25lKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcihcImRyYWdlbmRcIiwgW1wiJGV2ZW50XCJdKVxyXG4gICAgcHVibGljIG9uRHJhZ0VuZChldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmNsZWFyRGF0YSgpO1xyXG4gICAgICAgIHRoaXMuX2NsZWFyRHJvcHpvbmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKFwiZHJhZ292ZXJcIiwgW1wiJGV2ZW50XCJdKVxyXG4gICAgcHVibGljIG9uRHJhZ092ZXIoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcihcImRyYWdlbnRlclwiLCBbXCIkZXZlbnRcIl0pXHJcbiAgICBwdWJsaWMgb25EcmFnRW50ZXIoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2RyYWdFbnRlclRhcmdldCA9IGV2ZW50LnRhcmdldDtcclxuICAgICAgICB0aGlzLl9zaG93RHJvcHpvbmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKFwiZHJhZ2xlYXZlXCIsIFtcIiRldmVudFwiXSlcclxuICAgIHB1YmxpYyBvbkRyYWdMZWF2ZShldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gdGhpcy5fZHJhZ0VudGVyVGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NsZWFyRHJvcHpvbmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGRvY3VtZW50VW5kZXJFZGl0OiBDb0RvY3VtZW50O1xyXG4gICAgcHVibGljIGFjY2VwdGVkVXBsb2FkRm9ybWF0czogc3RyaW5nO1xyXG5cclxuICAgIHByb3RlY3RlZCBfbWF4VXBsb2FkRmlsZVNpemU6IG51bWJlcjtcclxuXHJcbiAgICBwcml2YXRlIF9kcmFnRW50ZXJUYXJnZXQ6IEV2ZW50VGFyZ2V0O1xyXG4gICAgcHJpdmF0ZSBfZG9jdW1lbnRLZXk6IHN0cmluZyA9IFwiXCI7XHJcbiAgICBwcml2YXRlIF9kcm9wWm9uZTogQ29tcG9uZW50UmVmPEFwcEZpbGVEcm9wem9uZUNvbXBvbmVudD47XHJcbiAgICBwcml2YXRlIF9wb3B1cDogQ29tcG9uZW50UmVmPEZpbGVVcGxvYWRQb3B1cENvbXBvbmVudD47XHJcbiAgICBwcml2YXRlIF9kb2NDaGFuZ2VTdWI6IFN1YnNjcmlwdGlvbjtcclxuICAgIHByaXZhdGUgX3BvcHVwQ2xvc2VTdWI6IFN1YnNjcmlwdGlvbjtcclxuICAgIHByaXZhdGUgX3JlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLy8gcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2R1bW15VHJ1ZUZ1bmN0aW9uOiBPcGVyYXRpb25DYWxsYmFja1NpbXBsZUZ1bmN0aW9uID0gKG9iamVjdDogYW55KSA9PiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcblxyXG4gICAgICAgIC8vcHJvdGVjdGVkIF9wcm9tcHRTZXJ2aWNlOiBQcm9tcHRTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBfZGljdGlvbmFyeVNlcnZpY2U6IFNoYXJlZENvbXBvbmVudHNEaWN0aW9uYXJ5U2VydmljZSxcclxuICAgICAgICAvL3Byb3RlY3RlZCBfdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBfY29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgICAgIHByb3RlY3RlZCBfZmFjdG9yeTogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gICAgICAgIC8vcHJvdGVjdGVkIF9nZW5lcmFsRGFsUmVwb3NpdG9yeTogR2VuZXJhbERhbFJlcG9zaXRvcnksXHJcbiAgICAgICAgLy9wcm90ZWN0ZWQgX2RhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSxcclxuICAgICAgICAvL3Byb3RlY3RlZCBfYmFzZURhdGFEYWxSZXBvc2l0b3J5OiBCYXNlRGF0YURhbFJlcG9zaXRvcnksXHJcbiAgICAgICAgLy9wcm90ZWN0ZWQgX2NvRG9jdW1lbnREYXRhTG9hZGVyOiBDb0RvY3VtZW50RGF0YUxvYWRlclNlcnZpY2VcclxuICAgICkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9jbGVhckRyb3B6b25lKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfc2hvd0Ryb3B6b25lKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5fZHJvcFpvbmUpIHtcclxuICAgICAgICAgICAgY29uc3QgZmFjdDogQ29tcG9uZW50RmFjdG9yeTxBcHBGaWxlRHJvcHpvbmVDb21wb25lbnQ+ID0gdGhpcy5fZmFjdG9yeS5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShBcHBGaWxlRHJvcHpvbmVDb21wb25lbnQpO1xyXG4gICAgICAgICAgICB0aGlzLl9kcm9wWm9uZSA9IHRoaXMuX2NvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoZmFjdCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2Ryb3Bab25lLmluc3RhbmNlLmN1c3RvbURyb3BBY3Rpb25NZXNzYWdlID0gdGhpcy5kcm9wTWVzc2FnZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfY2xlYXJEcm9wem9uZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9jb250YWluZXIuY2xlYXIoKTtcclxuICAgICAgICBpZiAodGhpcy5fZHJvcFpvbmUpIHtcclxuICAgICAgICAgICAgdGhpcy5fZHJvcFpvbmUuZGVzdHJveSgpO1xyXG4gICAgICAgICAgICB0aGlzLl9kcm9wWm9uZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmVtb3ZlIGZpbGUgZnJvbSB1cGxvYWQgYXJyYXkuXHJcbiAgICBwdWJsaWMgYXN5bmMgaGFuZGxlRGVsZXRlKGZpbGU6IENvRG9jdW1lbnQpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgICAgICBsZXQgc3VjY2VzczogYm9vbGVhbiA9IGF3YWl0IHRoaXMuYmVmb3JlRGVsZXRlT3BlcmF0aW9uKGZpbGUpO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChzdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9kZWxldGUoZmlsZSk7XHJcbiAgICAgICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuYWZ0ZXJEZWxldGVPcGVyYXRpb24oZmlsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoc3VjY2Vzcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhc3luYyBfZGVsZXRlKGZpbGU6IENvRG9jdW1lbnQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICBsZXQgZG9EZWxldGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgICAgIGlmICghdGhpcy5kb250QXNrQmVmb3JlRGVsZXRlKSB7XHJcbiAgICAgICAgICAvL1RPRE8gbWFrZSBkaWFsb2dTZXJ2aWNlXHJcbiAgICAgICAgICAgIC8vZG9EZWxldGUgPSBhd2FpdCB0aGlzLl9wcm9tcHRTZXJ2aWNlLnNob3dZZXNObyhcIk1FU1NBR0VfREVMRVRFX1JFQ09SRF9RVUVTVElPTlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRvRGVsZXRlKSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5ub093bkRlbGV0ZU9wZXJhdGlvbikge1xyXG4gICAgICAgICAgICAgICAgQXJyYXlVdGlscy5SZW1vdmVFbGVtZW50KGZpbGUsIHRoaXMuZG9jdW1lbnRzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50RGVsZXRlZC5lbWl0KGZpbGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFuZGxlU29ydGluZ0NoYW5nZShkb2NzOiBDb0RvY3VtZW50W10pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNvcnRhYmxlTGlzdENoYW5nZWQuZW1pdChkb2NzKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgaGFuZGxlRmlsZUNoYW5nZShldmVudDogYW55KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgaWYgKGV2ZW50ICYmIGV2ZW50LnRhcmdldCAmJiBldmVudC50YXJnZXQuZmlsZXMgJiYgZXZlbnQudGFyZ2V0LmZpbGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgLy8gY2hlY2sgZmlsZSBzaXplcyBhbmQgZXh0ZW5zaW9uXHJcbiAgICAgICAgICAgIC8vVG9kbzogZml4IHRoaXNcclxuICAgICAgICAgICAgLy9jb25zdCBhbGxvd2VkRXh0ZW5zaW9ucyA9IGF3YWl0IHRoaXMuX2Jhc2VEYXRhRGFsUmVwb3NpdG9yeS5nZXRBbGxvd2VkRXh0ZW5zaW9ucygpO1xyXG4gICAgICAgICAgICBsZXQgYWxsRmlsZXNBcmVTbWFsbEVub3VnaDogYm9vbGVhbiA9IHRydWU7XHJcbiAgICAgICAgICAgIGxldCBhbGxGaWxlc0hhdmVBbGxvd2VkRXh0ZW5zaW9uczogYm9vbGVhbiA9IHRydWU7XHJcbiAgICAgICAgICAgIGNvbnN0IHNpemVUb0NvbXBhcmU6IG51bWJlciA9IHRoaXMuX21heFVwbG9hZEZpbGVTaXplID8gdGhpcy5fbWF4VXBsb2FkRmlsZVNpemUgOiB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlbjogbnVtYmVyID0gZXZlbnQudGFyZ2V0LmZpbGVzLmxlbmd0aDtcclxuICAgICAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB1cGxvYWRTaXplQWxsb3dlZCA9IEZpbGVVdGlscy5DaGVja01heFVwbG9hZFNpemUoZXZlbnQudGFyZ2V0LmZpbGVzW2ldLCBzaXplVG9Db21wYXJlKTtcclxuICAgICAgICAgICAgICAgIGlmICghdXBsb2FkU2l6ZUFsbG93ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBhbGxGaWxlc0FyZVNtYWxsRW5vdWdoID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCBleHRlbnNpb25BbGxvd2VkID0gdHJ1ZS8vRmlsZVV0aWxzLkNoZWNrRXh0ZW5zaW9uKGV2ZW50LnRhcmdldC5maWxlc1tpXSwgYWxsb3dlZEV4dGVuc2lvbnMpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFleHRlbnNpb25BbGxvd2VkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWxsRmlsZXNIYXZlQWxsb3dlZEV4dGVuc2lvbnMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCFhbGxGaWxlc0FyZVNtYWxsRW5vdWdoKSB7XHJcbiAgICAgICAgICAgICAgLy9UT0RPIG1ha2UgZGlhbG9nU2VydmljZVxyXG4gICAgICAgICAgICAgICAgLy90aGlzLl9wcm9tcHRTZXJ2aWNlLnNob3dXYXJuaW5nKHRoaXMuX2RpY3Rpb25hcnlTZXJ2aWNlLmdldChcIkZJTEVfVE9PX0xBUkdFX1RPX1VQTE9BRFwiLCB0cnVlLCBcIlwiICsgW0ZpbGVVdGlscy5nZXRNYXhVcGxvYWRTaXplSW5NYihzaXplVG9Db21wYXJlKV0pKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICghYWxsRmlsZXNIYXZlQWxsb3dlZEV4dGVuc2lvbnMpIHtcclxuICAgICAgICAgICAgICAgIC8vY29uc3QgZXh0ZW5zaW9uc0xpc3QgPSBhbGxvd2VkRXh0ZW5zaW9ucy5tYXAoYWxsb3dlZEV4dGVuc2lvbiA9PiBhbGxvd2VkRXh0ZW5zaW9uLmV4dGVuc2lvbikuc29ydCgpLmpvaW4oXCIsIFwiKTtcclxuICAgICAgICAgICAgICAgIC8vdGhpcy5fcHJvbXB0U2VydmljZS5zaG93V2FybmluZyh0aGlzLl9kaWN0aW9uYXJ5U2VydmljZS5nZXQoXCJGSUxFX0hBU19ESVNBTExPV0VEX0VYVEVOU0lPTlwiLCBmYWxzZSwgZXh0ZW5zaW9uc0xpc3QpKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVzVG9BZGQ6IENvRG9jdW1lbnRbXSA9IGF3YWl0IHRoaXMuY29udmVydEZpbGVzSW50b0NvRG9jdW1lbnRzKGV2ZW50LnRhcmdldC5maWxlcyk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGZpbGVzVG9BZGQubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRzQWRkZWQuZW1pdChmaWxlc1RvQWRkKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudXNlV2l0aG91dFNldHRpbmdQcm9wcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50c0FkZGVkLm5leHQoZmlsZXNUb0FkZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kb2N1bWVudFVuZGVyRWRpdCA9IGZpbGVzVG9BZGRbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3BlblBvcHVwKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBoYW5kbGVFZGl0RG9jdW1lbnRDbGljayhkb2NUb0VkaXQ6IENvRG9jdW1lbnQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICB0aGlzLmRvY3VtZW50VW5kZXJFZGl0ID0gZG9jVG9FZGl0O1xyXG4gICAgICAgIGNvbnN0IHNob3dQb3B1cDogYm9vbGVhbiA9IGF3YWl0IHRoaXMuYmVmb3JlRWRpdE9wZXJhdGlvbihkb2NUb0VkaXQpO1xyXG4gICAgICAgIGlmIChzaG93UG9wdXApIHtcclxuICAgICAgICAgICAgdGhpcy5vcGVuUG9wdXAoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIG9wZW5Qb3B1cCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICB0aGlzLl9jcmVhdGVBbmRGaWxsUG9wdXBJbnN0YW5jZSgpO1xyXG5cclxuICAgICAgICB0aGlzLl9kb2NDaGFuZ2VTdWIgPSB0aGlzLl9wb3B1cC5pbnN0YW5jZS5kb2N1bWVudENoYW5nZUV2ZW50LnN1YnNjcmliZSgoZG9jOiBDb0RvY3VtZW50KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRDaGFuZ2VFdmVudC5lbWl0KGRvYyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9wZW5Qb3B1cFRvQWRkRG9jdW1lbnRCeVVybCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9jcmVhdGVEb2N1bWVudFRvQWRkQnlVcmwoKTtcclxuICAgICAgICB0aGlzLl9jcmVhdGVBbmRGaWxsUG9wdXBJbnN0YW5jZSh0cnVlKTtcclxuXHJcbiAgICAgICAgdGhpcy5fZG9jQ2hhbmdlU3ViID0gdGhpcy5fcG9wdXAuaW5zdGFuY2UuZG9jdW1lbnRDaGFuZ2VFdmVudC5zdWJzY3JpYmUoKGRvYzogQ29Eb2N1bWVudCkgPT4ge1xyXG4gICAgICAgICAgICBkb2MuZmlsZU5hbWUgPSBkb2MuZmlsZVBhdGg7XHJcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRDaGFuZ2VFdmVudC5lbWl0KGRvYyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfY3JlYXRlRG9jdW1lbnRUb0FkZEJ5VXJsKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZG9jdW1lbnRVbmRlckVkaXQgPSBuZXcgQ29Eb2N1bWVudCgpO1xyXG4gICAgICAgIHRoaXMuZG9jdW1lbnRVbmRlckVkaXQudGFibGUgPSB0aGlzLmRvY3VtZW50VGFibGU7XHJcbiAgICAgICAgdGhpcy5kb2N1bWVudFVuZGVyRWRpdC5rZXkgPSB0aGlzLmRvY3VtZW50S2V5O1xyXG4gICAgICAgIHRoaXMuZG9jdW1lbnRVbmRlckVkaXQuZmlsZVR5cGUgPSB0aGlzLmZpbGVUeXBlO1xyXG4gICAgICAgIHRoaXMuZG9jdW1lbnRVbmRlckVkaXQuZG9jdW1lbnRUeXBlID0gQ29Eb2N1bWVudFR5cGUuU2F2ZUFzTGlua09uUmFuZG9tTG9jYXRpb247XHJcbiAgICAgICAgdGhpcy5kb2N1bWVudFVuZGVyRWRpdC5wYXRoSXNVcmwgPSB0cnVlO1xyXG4gICAgICAgIC8vVE9ETyBGaXggdXNlciBJbnB1dFxyXG4gICAgICAgIC8vdGhpcy5kb2N1bWVudFVuZGVyRWRpdC5jcmVhdGlvblVzZXIgPSB0aGlzLl91c2VyU2VydmljZS51c2VyTmFtZS50b1VwcGVyQ2FzZSgpO1xyXG4gICAgICAgIC8vdGhpcy5kb2N1bWVudFVuZGVyRWRpdC5tb2RpZmllZFVzZXIgPSB0aGlzLl91c2VyU2VydmljZS51c2VyTmFtZS50b1VwcGVyQ2FzZSgpO1xyXG4gICAgICAgIHRoaXMuZG9jdW1lbnRVbmRlckVkaXQuY3JlYXRpb25EYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgICB0aGlzLmRvY3VtZW50VW5kZXJFZGl0Lm1vZGlmaWVkRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfY3JlYXRlQW5kRmlsbFBvcHVwSW5zdGFuY2UoYWRkRG9jdW1lbnRCeVVybDogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5wb3B1cE9wZW5lZFN0YXRlQ2hhbmdlLmVtaXQodHJ1ZSk7XHJcblxyXG4gICAgICAgIGNvbnN0IGZhY3Rvcnk6IENvbXBvbmVudEZhY3Rvcnk8RmlsZVVwbG9hZFBvcHVwQ29tcG9uZW50PiA9IHRoaXMuX2ZhY3RvcnkucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoRmlsZVVwbG9hZFBvcHVwQ29tcG9uZW50KTtcclxuXHJcbiAgICAgICAgdGhpcy5fcG9wdXAgPSB0aGlzLl9jb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGZhY3RvcnkpO1xyXG5cclxuICAgICAgICB0aGlzLl9wb3B1cC5pbnN0YW5jZS5yZWFkb25seSA9IHRoaXMuX3JlYWRvbmx5O1xyXG4gICAgICAgIHRoaXMuX3BvcHVwLmluc3RhbmNlLmFkZERvY3VtZW50QnlVcmwgPSBhZGREb2N1bWVudEJ5VXJsO1xyXG4gICAgICAgIHRoaXMuX3BvcHVwLmluc3RhbmNlLmhhc1B1YmxpY0FjY2Vzc1Zpc2libGUgPSB0aGlzLmRvY3VtZW50VGFibGUgPT09IFRhYmxlTmFtZS5Hb29kcztcclxuICAgICAgICB0aGlzLl9wb3B1cC5pbnN0YW5jZS5zaG93RG9jdW1lbnRSZXBvcnRQaWNrZXIgPSAodGhpcy5kb2N1bWVudFRhYmxlID09PSBUYWJsZU5hbWUuVHJhbnNhY3Rpb25zIHx8IHRoaXMuZG9jdW1lbnRUYWJsZSA9PT0gVGFibGVOYW1lLlRyYW5zYWN0aW9uTGluZXMpO1xyXG4gICAgICAgIHRoaXMuX3BvcHVwLmluc3RhbmNlLmRvY3VtZW50VW5kZXJFZGl0ID0gdGhpcy5kb2N1bWVudFVuZGVyRWRpdDtcclxuICAgICAgICB0aGlzLl9wb3B1cC5pbnN0YW5jZS5maWxlc1VwbG9hZENvbmZpZ09iamVjdHMgPSB0aGlzLmZpbGVzVXBsb2FkQ29uZmlnT2JqZWN0cztcclxuICAgICAgICB0aGlzLl9wb3B1cC5pbnN0YW5jZS5tZWRpY2FsVXNlckdyb3VwcyA9IHRoaXMubWVkaWNhbFVzZXJHcm91cHM7XHJcbiAgICAgICAgdGhpcy5fcG9wdXAuaW5zdGFuY2UudGFnQ2F0ZWdvcnkgPSB0aGlzLnRhZ0NhdGVnb3J5O1xyXG4gICAgICAgIHRoaXMuX3BvcHVwLmluc3RhbmNlLmRpc3BsYXlSZWFkV3JpdGVBY2Nlc3MgPSB0aGlzLmRpc3BsYXlSZWFkV3JpdGVBY2Nlc3M7XHJcbiAgICAgICAgdGhpcy5fcG9wdXAuaW5zdGFuY2UudGFnUmVmZXJlbmNlVGFibGUgPSB0aGlzLnRhZ1JlZmVyZW5jZVRhYmxlO1xyXG4gICAgICAgIHRoaXMuX3BvcHVwLmluc3RhbmNlLnB1YmxpY2F0aW9uSWRzID0gUmVmQ29kZVV0aWxzLkdldE11bHRpUmVmQ29kZUNob2ljZXModGhpcy5kb2N1bWVudFVuZGVyRWRpdC5wdWJsaWNhdGlvbik7XHJcbiAgICAgICAgdGhpcy5fcG9wdXAuaW5zdGFuY2Uuc3RvcmVHcm91cElkcyA9IHRoaXMuZG9jdW1lbnRVbmRlckVkaXQucmV0YWlsRm9ybXVsYXM7XHJcbiAgICAgICAgdGhpcy5fcG9wdXAuaW5zdGFuY2UuZmlsZVR5cGUgPSB0aGlzLmZpbGVUeXBlO1xyXG5cclxuICAgICAgICB0aGlzLl9wcmVwYXJlRmlsZVJpZ2h0cygpO1xyXG5cclxuICAgICAgICB0aGlzLl9wb3B1cENsb3NlU3ViID0gdGhpcy5fcG9wdXAuaW5zdGFuY2UucG9wdXBDbG9zZUV2ZW50LnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuX3VubG9ja0RvY3VtZW50KCk7XHJcbiAgICAgICAgICAgIHRoaXMucG9wdXBPcGVuZWRTdGF0ZUNoYW5nZS5lbWl0KGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5fcG9wdXBDbG9zZVN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICB0aGlzLl9kb2NDaGFuZ2VTdWIudW5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgdGhpcy5fcG9wdXAuZGVzdHJveSgpO1xyXG4gICAgICAgICAgICB0aGlzLl9wb3B1cCA9IHVuZGVmaW5lZDtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgYXN5bmMgY29udmVydEZpbGVzSW50b0NvRG9jdW1lbnRzKGZpbGVzOiBGaWxlTGlzdCk6IFByb21pc2U8Q29Eb2N1bWVudFtdPiB7XHJcbiAgICAgICAgY29uc3QgYW1vdW50T2ZGaWxlczogbnVtYmVyID0gZmlsZXMubGVuZ3RoO1xyXG4gICAgICAgIGNvbnN0IGZpbGVzVG9BZGQ6IENvRG9jdW1lbnRbXSA9IFtdO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgYW1vdW50T2ZGaWxlczsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpbGVBc0RvY3VtZW50OiBDb0RvY3VtZW50ID0gYXdhaXQgdGhpcy5fZ2V0RmlsZUFzRG9jdW1lbnQoZmlsZXNbaV0pO1xyXG4gICAgICAgICAgICBmaWxlQXNEb2N1bWVudC5pbmRleCA9IENvRG9jdW1lbnRTaGFyZWRGaWVsZExvZ2ljLkdlbmVyYXRlQXZhaWxhYmxlSW5kZXhOcih0aGlzLmRvY3VtZW50cyB8fCBbXSkgKyBpO1xyXG4gICAgICAgICAgICBmaWxlc1RvQWRkLnB1c2goZmlsZUFzRG9jdW1lbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmlsZXNUb0FkZDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZmlsZXNQaWNrZWQoZmlsZXM6IEZpbGVMaXN0KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgaWYgKGZpbGVzICYmIGZpbGVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBsZXQgYWxsRmlsZXNBcmVWYWxpZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgICAgICAgICAgIGNvbnN0IGFtb3VudE9mRmlsZXM6IG51bWJlciA9IGZpbGVzLmxlbmd0aDtcclxuICAgICAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IGFtb3VudE9mRmlsZXM7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFGaWxlVXRpbHMuQ2hlY2tNYXhVcGxvYWRTaXplKGZpbGVzW2ldLCB0aGlzLl9tYXhVcGxvYWRGaWxlU2l6ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBhbGxGaWxlc0FyZVZhbGlkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICghYWxsRmlsZXNBcmVWYWxpZCkge1xyXG4gICAgICAgICAgICAgIC8vVE9ETyBtYWtlIGRpYWxvZ1NlcnZpY2VcclxuICAgICAgICAgICAgICAgIC8vdGhpcy5fcHJvbXB0U2VydmljZS5zaG93V2FybmluZyh0aGlzLl9kaWN0aW9uYXJ5U2VydmljZS5nZXQoXCJGSUxFX1RPT19MQVJHRV9UT19VUExPQURcIiwgdHJ1ZSwgXCJcIiArIEZpbGVVdGlscy5nZXRNYXhVcGxvYWRTaXplSW5NYih0aGlzLl9tYXhVcGxvYWRGaWxlU2l6ZSkudG9TdHJpbmcoKSkpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZXNUb0FkZDogQ29Eb2N1bWVudFtdID0gYXdhaXQgdGhpcy5jb252ZXJ0RmlsZXNJbnRvQ29Eb2N1bWVudHMoZmlsZXMpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChmaWxlc1RvQWRkLmxlbmd0aCA+IDEgfHwgdGhpcy51c2VXaXRob3V0U2V0dGluZ1Byb3BzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kb2N1bWVudHNBZGRlZC5lbWl0KGZpbGVzVG9BZGQpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50VW5kZXJFZGl0ID0gZmlsZXNUb0FkZFswXTsgLy8gU2V0dGluZyBkb2NVbmRlckVkaXQgb3BlbnMgdGhlIHBvcHVwIHdpbmRvd1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3BlblBvcHVwKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGhhbmRsZUFjY2VwdGVkRmlsZVR5cGVzTG9hZGVkKHZhbHVlOiBGaWxlVHlwZSk6IHZvaWQge1xyXG4gICAgICAgIC8vVE9ETyBmaXggbG9hZGluZ1xyXG4gICAgICAgIC8vdGhpcy5hY2NlcHRlZFVwbG9hZEZvcm1hdHMgPSB0aGlzLl9jb0RvY3VtZW50RGF0YUxvYWRlci5nZXRBbGxvd2VkRXh0ZW5zaW9uc0ZvclR5cGUodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgX2dldEZpbGVBc0RvY3VtZW50KGZpbGU6IEZpbGUpOiBQcm9taXNlPENvRG9jdW1lbnQ+IHtcclxuICAgICAgICBjb25zdCBmaWxlQXNDb0RvY3VtZW50OiBDb0RvY3VtZW50ID0gYXdhaXQgRmlsZVV0aWxzLlJlYWRGaWxlQXNOZXdDb0RvY3VtZW50KGZpbGUsIHRoaXMucmVzaXplSW1hZ2VzKTtcclxuICAgICAgICAvLyBzZXQgc29tZSBleHRyYSBrbm93biBmaWVsZHMgZm9yIHRoZSBjb2RvY3VtZW50OlxyXG4gICAgICAgIGZpbGVBc0NvRG9jdW1lbnQudGFibGUgPSB0aGlzLmRvY3VtZW50VGFibGU7XHJcbiAgICAgICAgZmlsZUFzQ29Eb2N1bWVudC5rZXkgPSB0aGlzLmRvY3VtZW50S2V5O1xyXG4gICAgICAgIC8vVE9ETyBmaXggYWRkIHVzZXJzXHJcbiAgICAgICAgLy9maWxlQXNDb0RvY3VtZW50LmNyZWF0aW9uVXNlciA9IHRoaXMuX3VzZXJTZXJ2aWNlLnVzZXJOYW1lLnRvVXBwZXJDYXNlKCk7XHJcbiAgICAgICAgLy9maWxlQXNDb0RvY3VtZW50Lm1vZGlmaWVkVXNlciA9IHRoaXMuX3VzZXJTZXJ2aWNlLnVzZXJOYW1lLnRvVXBwZXJDYXNlKCk7XHJcbiAgICAgICAgZmlsZUFzQ29Eb2N1bWVudC5jcmVhdGlvbkRhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIGZpbGVBc0NvRG9jdW1lbnQubW9kaWZpZWREYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgICBmaWxlQXNDb0RvY3VtZW50LmZpbGVUeXBlID0gdGhpcy5maWxlVHlwZSA/IHRoaXMuZmlsZVR5cGUgOiBGaWxlVXRpbHMuSXNJbWFnZUZpbGUoZmlsZSkgPyBGaWxlVHlwZS5JbWFnZSA6IEZpbGVUeXBlLkRvY3VtZW50O1xyXG5cclxuICAgICAgICBpZiAoZmlsZUFzQ29Eb2N1bWVudCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmlsZUFzQ29Eb2N1bWVudDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhc3luYyBfc2V0SW50ZXJuYWxQYXJhbU9iaih2YWx1ZTogSW50ZXJuYWxQYXJhbSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIC8vVE9ETyBmaXggcGFyYW1zXHJcbiAgICAgICAgLy9jb25zdCBwYXJhbTogSW50ZXJuYWxQYXJhbWV0ZXJPYmplY3QgPSBhd2FpdCB0aGlzLl9nZW5lcmFsRGFsUmVwb3NpdG9yeS5nZXRJbnRlcm5hbFBhcmFtT2JqZWN0KHZhbHVlKTtcclxuICAgICAgICAvL3RoaXMuX21heFVwbG9hZEZpbGVTaXplID0gaXNOYU4ocGFyc2VJbnQocGFyYW0udmFsdWUsIDApKSA/IHVuZGVmaW5lZCA6IHBhcnNlSW50KHBhcmFtLnZhbHVlLCAwKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFzeW5jIF9sb2NrRG9jdW1lbnQoKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmRvY3VtZW50VW5kZXJFZGl0LmRvY3VtZW50SWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7IC8vIE5ldyBkb2N1bWVudCBkb2VzIG5vdCBoYXZlIGFuIElEIGFuZCB0aGVyZWZvcmUgZG9lcyBub3QgaGF2ZSB0byBiZSBsb2NrZWRcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGxvY2tPazogYm9vbGVhbiA9IGF3YWl0IHRoaXMubG9ja09wZXJhdGlvbihDb0RvY3VtZW50KTtcclxuICAgICAgICByZXR1cm4gbG9ja09rO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgX3VubG9ja0RvY3VtZW50KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICBpZiAoIXRoaXMuZG9jdW1lbnRVbmRlckVkaXQuZG9jdW1lbnRJZCkge1xyXG4gICAgICAgIHJldHVybiB0cnVlOyAvLyBOZXcgZG9jdW1lbnQgZG9lcyBub3QgaGF2ZSBhbiBJRCBhbmQgdGhlcmVmb3JlIGRvZXMgbm90IGhhdmUgdG8gYmUgbG9ja2VkXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHVubG9ja09rOiBib29sZWFuID0gYXdhaXQgdGhpcy51bmxvY2tPcGVyYXRpb24oQ29Eb2N1bWVudCk7XHJcbiAgICAgIHJldHVybiB1bmxvY2tPaztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9wcmVwYXJlRmlsZVJpZ2h0cygpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBsZW46IG51bWJlciA9IHRoaXMuZG9jdW1lbnRVbmRlckVkaXQucmlnaHRzLmxlbmd0aDtcclxuICAgICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgcmlnaHQ6IENvRG9jdW1lbnRSaWdodCA9IHRoaXMuZG9jdW1lbnRVbmRlckVkaXQucmlnaHRzW2ldO1xyXG4gICAgICAgICAgICBpZiAocmlnaHQucmlnaHRMZXZlbCA9PT0gT2JqZWN0UmlnaHRUeXBlLlJlYWRXcml0ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fcG9wdXAuaW5zdGFuY2UudXNlckdyb3Vwc0ZvcldyaXRlLnB1c2gocmlnaHQudXNlckdyb3VwSWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChyaWdodC5yaWdodExldmVsID09PSBPYmplY3RSaWdodFR5cGUuUmVhZE9ubHkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3BvcHVwLmluc3RhbmNlLnVzZXJHcm91cHNGb3JSZWFkLnB1c2gocmlnaHQudXNlckdyb3VwSWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
469
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1maWxlLXVwbG9hZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWRjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9maWxlcy11cGxvYWQvY29tcG9uZW50cy9iYXNlLWZpbGUtdXBsb2FkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVILHdCQUF3QixFQUV4QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixnQkFBZ0IsRUFDbkIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ3hELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSw2Q0FBNkMsQ0FBQztBQUNyRSxPQUFPLEVBRUgsa0NBQWtDLEVBQ3JDLE1BQU0sdURBQXVELENBQUM7QUFJL0QsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUV6RixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sdURBQXVELENBQUM7QUFDdEYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLHFEQUFxRCxDQUFDO0FBQzdGLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUNuRSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDckUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBQ2xGLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLHFE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SUFEQyxZQUFZLEVBQUU7Z0VBQ3dCO0FBSXZDO0lBREMsWUFBWSxFQUFFOzZEQUNzQjtBQTRCckM7SUFEQyxZQUFZLEVBQUU7b0VBQzZCO0FBSTVDO0lBREMsWUFBWSxFQUFFO3FFQUM4QjtBQWE3QztJQURDLFlBQVksRUFBRTt1RUFDZ0M7QUFPL0M7SUFEQyxZQUFZLEVBQUU7a0VBQzJCO0FBVTFDO0lBREMsWUFBWSxFQUFFO3VFQUN3QjtBQUl2QztJQURVLFlBQVksRUFBRTt1RUFDdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ29tcG9uZW50RmFjdG9yeSxcclxuICAgIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgIENvbXBvbmVudFJlZixcclxuICAgIERpcmVjdGl2ZSxcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIEhvc3RCaW5kaW5nLFxyXG4gICAgSG9zdExpc3RlbmVyLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkRlc3Ryb3ksXHJcbiAgICBPdXRwdXQsXHJcbiAgICBWaWV3Q29udGFpbmVyUmVmXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtTY3JlZW5Db25maWdBZGFwdGVyQ29tcG9uZW50fSBmcm9tIFwiQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMlwiO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtUYWJsZU5hbWV9IGZyb20gXCIuLi8uLi8uLi9lbnVtL3RhYmxlLW5hbWUuZW51bVwiO1xyXG5pbXBvcnQge0ZpbGVUeXBlfSBmcm9tIFwiQGNvbGlqbml0L21haW5hcGkvYnVpbGQvZW51bS9maWxlLXR5cGUuZW51bVwiO1xyXG5pbXBvcnQge1xyXG4gICAgT3BlcmF0aW9uQ2FsbGJhY2tTaW1wbGVGdW5jdGlvbixcclxuICAgIE9wZXJhdGlvbldpdGhBbHdheXNTdWNjZXNzQ2FsbGJhY2tcclxufSBmcm9tIFwiLi4vLi4vLi4vaW50ZXJmYWNlL29wZXJhdGlvbi1jYWxsYmFjay1zaW1wbGUtZnVuY3Rpb25cIjtcclxuaW1wb3J0IHtJbnRlcm5hbFBhcmFtfSBmcm9tIFwiLi4vLi4vLi4vZW51bS9pbnRlcm5hbC1wYXJhbS5lbnVtXCI7XHJcbmltcG9ydCB7RmlsZXNVcGxvYWRDb25maWdPYmplY3RzfSBmcm9tIFwiLi4vLi4vLi4vZW51bS9maWxlcy11cGxvYWQtY29uZmlnLW9iamVjdHNcIjtcclxuaW1wb3J0IHtUYWdDYXRlZ29yeX0gZnJvbSBcIi4uLy4uLy4uL2VudW0vdGFnLWNhdGVnb3J5LmVudW1cIjtcclxuaW1wb3J0IHtBcnJheVV0aWxzfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvYXJyYXktdXRpbHNcIjtcclxuaW1wb3J0IHtSZWZDb2RlVXRpbHN9IGZyb20gXCIuLi8uLi8uLi91dGlscy9yZWYtY29kZS11dGlsc1wiO1xyXG5pbXBvcnQge0NvRG9jdW1lbnRTaGFyZWRGaWVsZExvZ2ljfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvY28tZG9jdW1lbnQtc2hhcmVkLWZpZWxkLWxvZ2ljXCI7XHJcbmltcG9ydCB7Q29Eb2N1bWVudFJpZ2h0fSBmcm9tIFwiLi4vLi4vLi4vYnVzaW5lc3NvYmplY3QvY28tZG9jdW1lbnQtcmlnaHQuYm9cIjtcclxuaW1wb3J0IHtPYmplY3RSaWdodFR5cGV9IGZyb20gXCJAY29saWpuaXQvc2hhcmVkYXBpL2J1aWxkL2VudW0vb2JqZWN0LXJpZ2h0LXR5cGUuZW51bVwiO1xyXG5pbXBvcnQge0lucHV0Qm9vbGVhbn0gZnJvbSBcIi4uLy4uLy4uL2RlY29yYXRvci9pbnB1dC1ib29sZWFuLmRlY29yYXRvclwiO1xyXG5pbXBvcnQge0FwcEZpbGVEcm9wem9uZUNvbXBvbmVudH0gZnJvbSBcIi4uLy4uL2FwcC1maWxlLWRyb3B6b25lL2FwcC1maWxlLWRyb3B6b25lLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0ZpbGVVdGlsc30gZnJvbSBcIkBjb2xpam5pdC9tYWluYXBpL2J1aWxkL3V0aWxzL2ZpbGUtdXRpbHNcIjtcclxuaW1wb3J0IHtDb0RvY3VtZW50fSBmcm9tIFwiQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvY28tZG9jdW1lbnRcIjtcclxuaW1wb3J0IHtDb0RvY3VtZW50VHlwZX0gZnJvbSBcIkBjb2xpam5pdC9tYWluYXBpL2J1aWxkL2VudW0vY28tZG9jdW1lbnQtdHlwZS5lbnVtXCI7XHJcbmltcG9ydCB7RmlsZVVwbG9hZFBvcHVwQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vZmlsZS11cGxvYWQtcG9wdXAvZmlsZS11cGxvYWQtcG9wdXAuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7U2hhcmVkQ29tcG9uZW50c0RpY3Rpb25hcnlTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi90cmFuc2xhdGlvbi9zaGFyZWQtY29tcG9uZW50cy1kaWN0aW9uYXJ5LnNlcnZpY2UnO1xyXG5cclxuXHJcblxyXG4vLyBBIGJhc2UgY29tcG9uZW50IHRoYXQgbGV0cyB0aGUgdXNlciBtYWtlIGEgbGlzdCBvZiBmaWxlcyBmcm9tIGl0cyBkZXZpY2UuIERvZXNuJ3QgYWN0dWFsbHkgdXBsb2FkLCBidXQgb3V0cHV0cyBjaG9zZW4gZmlsZXMgYXMgZmlsZXNDaGFuZ2VkLlxyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VGaWxlVXBsb2FkQ29tcG9uZW50IGltcGxlbWVudHMgU2NyZWVuQ29uZmlnQWRhcHRlckNvbXBvbmVudCwgT25EZXN0cm95IHtcclxuICAgIGRlY2ltYWxzOiBudW1iZXI7XHJcbiAgICBmb3JjZVJlYWRvbmx5OiBib29sZWFuO1xyXG4gICAgbWF4TGVuZ3RoOiBudW1iZXI7XHJcbiAgICBvYmplY3RDb25maWdOYW1lOiBzdHJpbmc7XHJcbiAgICByZWRFcnJvckJhY2tncm91bmQ6IGJvb2xlYW47XHJcbiAgICByZXF1aXJlZDogYm9vbGVhbjtcclxuXHJcbiAgICAvLyBUaGUgZmlsZVR5cGUgdGhhdCB0aGUgZG9jdW1lbnRzIHNob3VsZCBiZSBzYXZlZCBhcywgbGVhdmUgZW1wdHkgdG8gYXV0b21hdGljYWxseSBkZXRlY3QgZmlsZXR5cGUuIEFsc28gZGV0ZXJtaW5lcyBmaWxlIHBpY2tlciBmaWx0ZXJcclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IGZpbGVUeXBlKHZhbHVlOiBGaWxlVHlwZSkge1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLl9maWxlVHlwZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAvL1RPRE8gRG9jdW1lbnRkYXRhbG9hZGVyIGZpeFxyXG4gICAgICAgICAgICAvL3RoaXMuX2NvRG9jdW1lbnREYXRhTG9hZGVyLmxvYWRBbGxvd2VkVHlwZXMoKS50aGVuKCgpID0+IHt0aGlzLmhhbmRsZUFjY2VwdGVkRmlsZVR5cGVzTG9hZGVkKHZhbHVlKX0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGZpbGVUeXBlKCk6IEZpbGVUeXBlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZmlsZVR5cGU7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBkb2N1bWVudHM6IENvRG9jdW1lbnRbXSA9IFtdO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZG9jdW1lbnRUYWJsZTogVGFibGVOYW1lO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IGRvY3VtZW50S2V5KHZhbHVlOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl9kb2N1bWVudEtleSA9IHZhbHVlICsgXCJcIjsgLy8gZm9yY2Ugc3RyaW5nXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBkb2N1bWVudEtleSgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9kb2N1bWVudEtleTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUaGUgYWJpbGl0eSB0byBkcm9wIGZpbGVzIG9uIHRoZSBwYWdlXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGZ1bGxQYWdlRHJvcDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8vIElmIHVzZXIgZ2V0cyB0aGUgYWJpbGl0eSBvZiBhZGRpbmcgZmlsZXMuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGNhbkFkZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBkcm9wTWVzc2FnZTogc3RyaW5nO1xyXG5cclxuICAgIC8vIFNob3cgYWRkIGJ1dHRvblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBhZGRXaXRoQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICAvLyBJZiB1c2VyIGdldHMgdGhlIGFiaWxpdHkgb2YgZGVsZXRpbmcgZmlsZXMuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGNhbkRlbGV0ZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIEBJbnB1dEJvb2xlYW4oKVxyXG4gICAgcHVibGljIG5vRHJhZ0Ryb3BPcmRlcmluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBASW5wdXRCb29sZWFuKClcclxuICAgIHB1YmxpYyBzZXQgcmVhZG9ubHkodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLl9yZWFkb25seSA9IHZhbHVlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fcG9wdXAgJiYgdGhpcy5fcG9wdXAuaW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5fcG9wdXAuaW5zdGFuY2UucmVhZG9ubHkgPSB2YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCByZWFkb25seSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcmVhZG9ubHk7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIEBJbnB1dEJvb2xlYW4oKVxyXG4gICAgcHVibGljIGFza0JlZm9yZURlbGV0ZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIEBJbnB1dEJvb2xlYW4oKVxyXG4gICAgcHVibGljIHJlc2l6ZUltYWdlczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgbG9ja09wZXJhdGlvbjogT3BlcmF0aW9uQ2FsbGJhY2tTaW1wbGVGdW5jdGlvbiA9IE9wZXJhdGlvbldpdGhBbHdheXNTdWNjZXNzQ2FsbGJhY2s7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyB1bmxvY2tPcGVyYXRpb246IE9wZXJhdGlvbkNhbGxiYWNrU2ltcGxlRnVuY3Rpb24gPSBPcGVyYXRpb25XaXRoQWx3YXlzU3VjY2Vzc0NhbGxiYWNrO1xyXG5cclxuXHJcblxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYmVmb3JlRGVsZXRlT3BlcmF0aW9uOiBPcGVyYXRpb25DYWxsYmFja1NpbXBsZUZ1bmN0aW9uID0gT3BlcmF0aW9uV2l0aEFsd2F5c1N1Y2Nlc3NDYWxsYmFjaztcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGFmdGVyRGVsZXRlT3BlcmF0aW9uOiBPcGVyYXRpb25DYWxsYmFja1NpbXBsZUZ1bmN0aW9uID0gT3BlcmF0aW9uV2l0aEFsd2F5c1N1Y2Nlc3NDYWxsYmFjaztcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGJlZm9yZUNyZWF0ZU9wZXJhdGlvbjogT3BlcmF0aW9uQ2FsbGJhY2tTaW1wbGVGdW5jdGlvbiA9IE9wZXJhdGlvbldpdGhBbHdheXNTdWNjZXNzQ2FsbGJhY2s7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBhZnRlckNyZWF0ZU9wZXJhdGlvbjogT3BlcmF0aW9uQ2FsbGJhY2tTaW1wbGVGdW5jdGlvbiA9IE9wZXJhdGlvbldpdGhBbHdheXNTdWNjZXNzQ2FsbGJhY2s7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBiZWZvcmVFZGl0T3BlcmF0aW9uOiBPcGVyYXRpb25DYWxsYmFja1NpbXBsZUZ1bmN0aW9uID0gT3BlcmF0aW9uV2l0aEFsd2F5c1N1Y2Nlc3NDYWxsYmFjaztcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgQElucHV0Qm9vbGVhbigpXHJcbiAgICBwdWJsaWMgZG9udEFza0JlZm9yZURlbGV0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBASW5wdXRCb29sZWFuKClcclxuICAgIHB1YmxpYyBub093bkRlbGV0ZU9wZXJhdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIHByaXZhdGUgX2ZpbGVUeXBlOiBGaWxlVHlwZTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCBtYXhVcGxvYWRTaXplUGFyYW0odmFsdWU6IEludGVybmFsUGFyYW0pIHtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5fc2V0SW50ZXJuYWxQYXJhbU9iaih2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBASW5wdXRCb29sZWFuKClcclxuICAgIHB1YmxpYyB1c2VXaXRob3V0U2V0dGluZ1Byb3BzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBmaWxlc1VwbG9hZENvbmZpZ09iamVjdHM6IEZpbGVzVXBsb2FkQ29uZmlnT2JqZWN0cztcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgQElucHV0Qm9vbGVhbigpXHJcbiAgICBwdWJsaWMgbWVkaWNhbFVzZXJHcm91cHM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHRhZ0NhdGVnb3J5OiBUYWdDYXRlZ29yeTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHRhZ1JlZmVyZW5jZVRhYmxlOiBUYWJsZU5hbWU7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIEBJbnB1dEJvb2xlYW4oKVxyXG4gICAgcHVibGljIGRpc3BsYXlSZWFkV3JpdGVBY2Nlc3M6IGJvb2xlYW47XHJcblxyXG4gICAgLy8gVXNlIHdpdGggY3VzdG9tRmlsZURyb3BFdmVudFxyXG4gICAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpXHJcbiAgICBwdWJsaWMgdXNlQ3VzdG9tRmlsZURyb3BFdmVudDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8vIFVzZSBpbiBjb25qdW5jdGlvbiB3aXRoIHVzZUN1c3RvbUZpbGVEcm9wRXZlbnRcclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGN1c3RvbUZpbGVEcm9wRXZlbnQ6IEV2ZW50RW1pdHRlcjxGaWxlTGlzdD4gPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGVMaXN0PigpO1xyXG5cclxuICAgIC8vIEVtaXRzIGlmIHVzZXIgd2FudHMgdG8gYWRkIG11bHRpcGxlIGRvY3VtZW50cyBhdCBvbmNlXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyByZWFkb25seSBkb2N1bWVudHNBZGRlZDogRXZlbnRFbWl0dGVyPENvRG9jdW1lbnRbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPENvRG9jdW1lbnRbXT4oKTtcclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyByZWFkb25seSBkb2N1bWVudERlbGV0ZWQ6IEV2ZW50RW1pdHRlcjxDb0RvY3VtZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8Q29Eb2N1bWVudD4oKTtcclxuXHJcbiAgICAvLyBFbWl0cyBldmVyeSB0aW1lIHRoZSBvcmRlciBvZiBkb2N1bWVudHMgd2FzIGNoYW5nZWRcclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHJlYWRvbmx5IHNvcnRhYmxlTGlzdENoYW5nZWQ6IEV2ZW50RW1pdHRlcjxDb0RvY3VtZW50W10+ID0gbmV3IEV2ZW50RW1pdHRlcjxDb0RvY3VtZW50W10+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgZG9jdW1lbnRDaGFuZ2VFdmVudDogRXZlbnRFbWl0dGVyPENvRG9jdW1lbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxDb0RvY3VtZW50PigpO1xyXG5cclxuICAgIC8vIFVzZSB0aGlzIGlmIGNvbnN1bWVyIHJlcXVpcmVzIHRvIHBlcmZvcm0gZXh0cmEgYWN0aW9ucywgbGlrZSBsb2NraW5nIGEgcGFyZW50IGJ1c2luZXNzT2JqZWN0IGlmIGl0IGNvbnRhaW5zIHRoZSBjb2xsZWN0aW9uIG9mIGRvY3VtZW50cy4gRW1pdCB3aXRoIHRydWUgd2hlbiBwb3B1cCBvcGVuZWQsIGZhbHNlIGZvciBjbG9zZVxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgcG9wdXBPcGVuZWRTdGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICAgIEBIb3N0QmluZGluZyhcImNsYXNzLmNvLXNoYXJlZC1oaWRkZW5cIilcclxuICAgIHB1YmxpYyBoaWRkZW46IGJvb2xlYW47XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcihcImRyb3BcIiwgW1wiJGV2ZW50XCJdKVxyXG4gICAgcHVibGljIG9uRHJvcChldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnVzZUN1c3RvbUZpbGVEcm9wRXZlbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5maWxlc1BpY2tlZChldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tRmlsZURyb3BFdmVudC5lbWl0KGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9jbGVhckRyb3B6b25lKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcihcImRyYWdlbmRcIiwgW1wiJGV2ZW50XCJdKVxyXG4gICAgcHVibGljIG9uRHJhZ0VuZChldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmNsZWFyRGF0YSgpO1xyXG4gICAgICAgIHRoaXMuX2NsZWFyRHJvcHpvbmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKFwiZHJhZ292ZXJcIiwgW1wiJGV2ZW50XCJdKVxyXG4gICAgcHVibGljIG9uRHJhZ092ZXIoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcihcImRyYWdlbnRlclwiLCBbXCIkZXZlbnRcIl0pXHJcbiAgICBwdWJsaWMgb25EcmFnRW50ZXIoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2RyYWdFbnRlclRhcmdldCA9IGV2ZW50LnRhcmdldDtcclxuICAgICAgICB0aGlzLl9zaG93RHJvcHpvbmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKFwiZHJhZ2xlYXZlXCIsIFtcIiRldmVudFwiXSlcclxuICAgIHB1YmxpYyBvbkRyYWdMZWF2ZShldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gdGhpcy5fZHJhZ0VudGVyVGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NsZWFyRHJvcHpvbmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGRvY3VtZW50VW5kZXJFZGl0OiBDb0RvY3VtZW50O1xyXG4gICAgcHVibGljIGFjY2VwdGVkVXBsb2FkRm9ybWF0czogc3RyaW5nO1xyXG5cclxuICAgIHByb3RlY3RlZCBfbWF4VXBsb2FkRmlsZVNpemU6IG51bWJlcjtcclxuXHJcbiAgICBwcml2YXRlIF9kcmFnRW50ZXJUYXJnZXQ6IEV2ZW50VGFyZ2V0O1xyXG4gICAgcHJpdmF0ZSBfZG9jdW1lbnRLZXk6IHN0cmluZyA9IFwiXCI7XHJcbiAgICBwcml2YXRlIF9kcm9wWm9uZTogQ29tcG9uZW50UmVmPEFwcEZpbGVEcm9wem9uZUNvbXBvbmVudD47XHJcbiAgICBwcml2YXRlIF9wb3B1cDogQ29tcG9uZW50UmVmPEZpbGVVcGxvYWRQb3B1cENvbXBvbmVudD47XHJcbiAgICBwcml2YXRlIF9kb2NDaGFuZ2VTdWI6IFN1YnNjcmlwdGlvbjtcclxuICAgIHByaXZhdGUgX3BvcHVwQ2xvc2VTdWI6IFN1YnNjcmlwdGlvbjtcclxuICAgIHByaXZhdGUgX3JlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLy8gcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2R1bW15VHJ1ZUZ1bmN0aW9uOiBPcGVyYXRpb25DYWxsYmFja1NpbXBsZUZ1bmN0aW9uID0gKG9iamVjdDogYW55KSA9PiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcblxyXG4gICAgICAgIC8vcHJvdGVjdGVkIF9wcm9tcHRTZXJ2aWNlOiBQcm9tcHRTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBfZGljdGlvbmFyeVNlcnZpY2U6IFNoYXJlZENvbXBvbmVudHNEaWN0aW9uYXJ5U2VydmljZSxcclxuICAgICAgICAvL3Byb3RlY3RlZCBfdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBfY29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgICAgIHByb3RlY3RlZCBfZmFjdG9yeTogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gICAgICAgIC8vcHJvdGVjdGVkIF9nZW5lcmFsRGFsUmVwb3NpdG9yeTogR2VuZXJhbERhbFJlcG9zaXRvcnksXHJcbiAgICAgICAgLy9wcm90ZWN0ZWQgX2RhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSxcclxuICAgICAgICAvL3Byb3RlY3RlZCBfYmFzZURhdGFEYWxSZXBvc2l0b3J5OiBCYXNlRGF0YURhbFJlcG9zaXRvcnksXHJcbiAgICAgICAgLy9wcm90ZWN0ZWQgX2NvRG9jdW1lbnREYXRhTG9hZGVyOiBDb0RvY3VtZW50RGF0YUxvYWRlclNlcnZpY2VcclxuICAgICkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9jbGVhckRyb3B6b25lKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfc2hvd0Ryb3B6b25lKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5fZHJvcFpvbmUpIHtcclxuICAgICAgICAgICAgY29uc3QgZmFjdDogQ29tcG9uZW50RmFjdG9yeTxBcHBGaWxlRHJvcHpvbmVDb21wb25lbnQ+ID0gdGhpcy5fZmFjdG9yeS5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShBcHBGaWxlRHJvcHpvbmVDb21wb25lbnQpO1xyXG4gICAgICAgICAgICB0aGlzLl9kcm9wWm9uZSA9IHRoaXMuX2NvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoZmFjdCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2Ryb3Bab25lLmluc3RhbmNlLmN1c3RvbURyb3BBY3Rpb25NZXNzYWdlID0gdGhpcy5kcm9wTWVzc2FnZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfY2xlYXJEcm9wem9uZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9jb250YWluZXIuY2xlYXIoKTtcclxuICAgICAgICBpZiAodGhpcy5fZHJvcFpvbmUpIHtcclxuICAgICAgICAgICAgdGhpcy5fZHJvcFpvbmUuZGVzdHJveSgpO1xyXG4gICAgICAgICAgICB0aGlzLl9kcm9wWm9uZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmVtb3ZlIGZpbGUgZnJvbSB1cGxvYWQgYXJyYXkuXHJcbiAgICBwdWJsaWMgYXN5bmMgaGFuZGxlRGVsZXRlKGZpbGU6IENvRG9jdW1lbnQpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgICAgICBsZXQgc3VjY2VzczogYm9vbGVhbiA9IGF3YWl0IHRoaXMuYmVmb3JlRGVsZXRlT3BlcmF0aW9uKGZpbGUpO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChzdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9kZWxldGUoZmlsZSk7XHJcbiAgICAgICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuYWZ0ZXJEZWxldGVPcGVyYXRpb24oZmlsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoc3VjY2Vzcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhc3luYyBfZGVsZXRlKGZpbGU6IENvRG9jdW1lbnQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICBsZXQgZG9EZWxldGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgICAgIGlmICghdGhpcy5kb250QXNrQmVmb3JlRGVsZXRlKSB7XHJcbiAgICAgICAgICAvL1RPRE8gbWFrZSBkaWFsb2dTZXJ2aWNlXHJcbiAgICAgICAgICAgIC8vZG9EZWxldGUgPSBhd2FpdCB0aGlzLl9wcm9tcHRTZXJ2aWNlLnNob3dZZXNObyhcIk1FU1NBR0VfREVMRVRFX1JFQ09SRF9RVUVTVElPTlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRvRGVsZXRlKSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5ub093bkRlbGV0ZU9wZXJhdGlvbikge1xyXG4gICAgICAgICAgICAgICAgQXJyYXlVdGlscy5SZW1vdmVFbGVtZW50KGZpbGUsIHRoaXMuZG9jdW1lbnRzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50RGVsZXRlZC5lbWl0KGZpbGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFuZGxlU29ydGluZ0NoYW5nZShkb2NzOiBDb0RvY3VtZW50W10pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNvcnRhYmxlTGlzdENoYW5nZWQuZW1pdChkb2NzKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgaGFuZGxlRmlsZUNoYW5nZShldmVudDogYW55KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgaWYgKGV2ZW50ICYmIGV2ZW50LnRhcmdldCAmJiBldmVudC50YXJnZXQuZmlsZXMgJiYgZXZlbnQudGFyZ2V0LmZpbGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgLy8gY2hlY2sgZmlsZSBzaXplcyBhbmQgZXh0ZW5zaW9uXHJcbiAgICAgICAgICAgIC8vVG9kbzogZml4IHRoaXNcclxuICAgICAgICAgICAgLy9jb25zdCBhbGxvd2VkRXh0ZW5zaW9ucyA9IGF3YWl0IHRoaXMuX2Jhc2VEYXRhRGFsUmVwb3NpdG9yeS5nZXRBbGxvd2VkRXh0ZW5zaW9ucygpO1xyXG4gICAgICAgICAgICBsZXQgYWxsRmlsZXNBcmVTbWFsbEVub3VnaDogYm9vbGVhbiA9IHRydWU7XHJcbiAgICAgICAgICAgIGxldCBhbGxGaWxlc0hhdmVBbGxvd2VkRXh0ZW5zaW9uczogYm9vbGVhbiA9IHRydWU7XHJcbiAgICAgICAgICAgIGNvbnN0IHNpemVUb0NvbXBhcmU6IG51bWJlciA9IHRoaXMuX21heFVwbG9hZEZpbGVTaXplID8gdGhpcy5fbWF4VXBsb2FkRmlsZVNpemUgOiB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlbjogbnVtYmVyID0gZXZlbnQudGFyZ2V0LmZpbGVzLmxlbmd0aDtcclxuICAgICAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB1cGxvYWRTaXplQWxsb3dlZCA9IEZpbGVVdGlscy5DaGVja01heFVwbG9hZFNpemUoZXZlbnQudGFyZ2V0LmZpbGVzW2ldLCBzaXplVG9Db21wYXJlKTtcclxuICAgICAgICAgICAgICAgIGlmICghdXBsb2FkU2l6ZUFsbG93ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBhbGxGaWxlc0FyZVNtYWxsRW5vdWdoID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCBleHRlbnNpb25BbGxvd2VkID0gdHJ1ZS8vRmlsZVV0aWxzLkNoZWNrRXh0ZW5zaW9uKGV2ZW50LnRhcmdldC5maWxlc1tpXSwgYWxsb3dlZEV4dGVuc2lvbnMpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFleHRlbnNpb25BbGxvd2VkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWxsRmlsZXNIYXZlQWxsb3dlZEV4dGVuc2lvbnMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCFhbGxGaWxlc0FyZVNtYWxsRW5vdWdoKSB7XHJcbiAgICAgICAgICAgICAgLy9UT0RPIG1ha2UgZGlhbG9nU2VydmljZVxyXG4gICAgICAgICAgICAgICAgLy90aGlzLl9wcm9tcHRTZXJ2aWNlLnNob3dXYXJuaW5nKHRoaXMuX2RpY3Rpb25hcnlTZXJ2aWNlLmdldChcIkZJTEVfVE9PX0xBUkdFX1RPX1VQTE9BRFwiLCB0cnVlLCBcIlwiICsgW0ZpbGVVdGlscy5nZXRNYXhVcGxvYWRTaXplSW5NYihzaXplVG9Db21wYXJlKV0pKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICghYWxsRmlsZXNIYXZlQWxsb3dlZEV4dGVuc2lvbnMpIHtcclxuICAgICAgICAgICAgICAgIC8vY29uc3QgZXh0ZW5zaW9uc0xpc3QgPSBhbGxvd2VkRXh0ZW5zaW9ucy5tYXAoYWxsb3dlZEV4dGVuc2lvbiA9PiBhbGxvd2VkRXh0ZW5zaW9uLmV4dGVuc2lvbikuc29ydCgpLmpvaW4oXCIsIFwiKTtcclxuICAgICAgICAgICAgICAgIC8vdGhpcy5fcHJvbXB0U2VydmljZS5zaG93V2FybmluZyh0aGlzLl9kaWN0aW9uYXJ5U2VydmljZS5nZXQoXCJGSUxFX0hBU19ESVNBTExPV0VEX0VYVEVOU0lPTlwiLCBmYWxzZSwgZXh0ZW5zaW9uc0xpc3QpKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVzVG9BZGQ6IENvRG9jdW1lbnRbXSA9IGF3YWl0IHRoaXMuY29udmVydEZpbGVzSW50b0NvRG9jdW1lbnRzKGV2ZW50LnRhcmdldC5maWxlcyk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGZpbGVzVG9BZGQubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRzQWRkZWQuZW1pdChmaWxlc1RvQWRkKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudXNlV2l0aG91dFNldHRpbmdQcm9wcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50c0FkZGVkLm5leHQoZmlsZXNUb0FkZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kb2N1bWVudFVuZGVyRWRpdCA9IGZpbGVzVG9BZGRbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3BlblBvcHVwKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBoYW5kbGVFZGl0RG9jdW1lbnRDbGljayhkb2NUb0VkaXQ6IENvRG9jdW1lbnQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICB0aGlzLmRvY3VtZW50VW5kZXJFZGl0ID0gZG9jVG9FZGl0O1xyXG4gICAgICAgIGNvbnN0IHNob3dQb3B1cDogYm9vbGVhbiA9IGF3YWl0IHRoaXMuYmVmb3JlRWRpdE9wZXJhdGlvbihkb2NUb0VkaXQpO1xyXG4gICAgICAgIGlmIChzaG93UG9wdXApIHtcclxuICAgICAgICAgICAgdGhpcy5vcGVuUG9wdXAoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIG9wZW5Qb3B1cCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICB0aGlzLl9jcmVhdGVBbmRGaWxsUG9wdXBJbnN0YW5jZSgpO1xyXG5cclxuICAgICAgICB0aGlzLl9kb2NDaGFuZ2VTdWIgPSB0aGlzLl9wb3B1cC5pbnN0YW5jZS5kb2N1bWVudENoYW5nZUV2ZW50LnN1YnNjcmliZSgoZG9jOiBDb0RvY3VtZW50KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRDaGFuZ2VFdmVudC5lbWl0KGRvYyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9wZW5Qb3B1cFRvQWRkRG9jdW1lbnRCeVVybCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9jcmVhdGVEb2N1bWVudFRvQWRkQnlVcmwoKTtcclxuICAgICAgICB0aGlzLl9jcmVhdGVBbmRGaWxsUG9wdXBJbnN0YW5jZSh0cnVlKTtcclxuXHJcbiAgICAgICAgdGhpcy5fZG9jQ2hhbmdlU3ViID0gdGhpcy5fcG9wdXAuaW5zdGFuY2UuZG9jdW1lbnRDaGFuZ2VFdmVudC5zdWJzY3JpYmUoKGRvYzogQ29Eb2N1bWVudCkgPT4ge1xyXG4gICAgICAgICAgICBkb2MuZmlsZU5hbWUgPSBkb2MuZmlsZVBhdGg7XHJcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRDaGFuZ2VFdmVudC5lbWl0KGRvYyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfY3JlYXRlRG9jdW1lbnRUb0FkZEJ5VXJsKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZG9jdW1lbnRVbmRlckVkaXQgPSBuZXcgQ29Eb2N1bWVudCgpO1xyXG4gICAgICAgIHRoaXMuZG9jdW1lbnRVbmRlckVkaXQudGFibGUgPSB0aGlzLmRvY3VtZW50VGFibGU7XHJcbiAgICAgICAgdGhpcy5kb2N1bWVudFVuZGVyRWRpdC5rZXkgPSB0aGlzLmRvY3VtZW50S2V5O1xyXG4gICAgICAgIHRoaXMuZG9jdW1lbnRVbmRlckVkaXQuZmlsZVR5cGUgPSB0aGlzLmZpbGVUeXBlO1xyXG4gICAgICAgIHRoaXMuZG9jdW1lbnRVbmRlckVkaXQuZG9jdW1lbnRUeXBlID0gQ29Eb2N1bWVudFR5cGUuU2F2ZUFzTGlua09uUmFuZG9tTG9jYXRpb247XHJcbiAgICAgICAgdGhpcy5kb2N1bWVudFVuZGVyRWRpdC5wYXRoSXNVcmwgPSB0cnVlO1xyXG4gICAgICAgIC8vVE9ETyBGaXggdXNlciBJbnB1dFxyXG4gICAgICAgIC8vdGhpcy5kb2N1bWVudFVuZGVyRWRpdC5jcmVhdGlvblVzZXIgPSB0aGlzLl91c2VyU2VydmljZS51c2VyTmFtZS50b1VwcGVyQ2FzZSgpO1xyXG4gICAgICAgIC8vdGhpcy5kb2N1bWVudFVuZGVyRWRpdC5tb2RpZmllZFVzZXIgPSB0aGlzLl91c2VyU2VydmljZS51c2VyTmFtZS50b1VwcGVyQ2FzZSgpO1xyXG4gICAgICAgIHRoaXMuZG9jdW1lbnRVbmRlckVkaXQuY3JlYXRpb25EYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgICB0aGlzLmRvY3VtZW50VW5kZXJFZGl0Lm1vZGlmaWVkRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfY3JlYXRlQW5kRmlsbFBvcHVwSW5zdGFuY2UoYWRkRG9jdW1lbnRCeVVybDogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5wb3B1cE9wZW5lZFN0YXRlQ2hhbmdlLmVtaXQodHJ1ZSk7XHJcblxyXG4gICAgICAgIGNvbnN0IGZhY3Rvcnk6IENvbXBvbmVudEZhY3Rvcnk8RmlsZVVwbG9hZFBvcHVwQ29tcG9uZW50PiA9IHRoaXMuX2ZhY3RvcnkucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoRmlsZVVwbG9hZFBvcHVwQ29tcG9uZW50KTtcclxuXHJcbiAgICAgICAgdGhpcy5fcG9wdXAgPSB0aGlzLl9jb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGZhY3RvcnkpO1xyXG5cclxuICAgICAgICB0aGlzLl9wb3B1cC5pbnN0YW5jZS5yZWFkb25seSA9IHRoaXMuX3JlYWRvbmx5O1xyXG4gICAgICAgIHRoaXMuX3BvcHVwLmluc3RhbmNlLmFkZERvY3VtZW50QnlVcmwgPSBhZGREb2N1bWVudEJ5VXJsO1xyXG4gICAgICAgIHRoaXMuX3BvcHVwLmluc3RhbmNlLmhhc1B1YmxpY0FjY2Vzc1Zpc2libGUgPSB0aGlzLmRvY3VtZW50VGFibGUgPT09IFRhYmxlTmFtZS5Hb29kcztcclxuICAgICAgICB0aGlzLl9wb3B1cC5pbnN0YW5jZS5zaG93RG9jdW1lbnRSZXBvcnRQaWNrZXIgPSAodGhpcy5kb2N1bWVudFRhYmxlID09PSBUYWJsZU5hbWUuVHJhbnNhY3Rpb25zIHx8IHRoaXMuZG9jdW1lbnRUYWJsZSA9PT0gVGFibGVOYW1lLlRyYW5zYWN0aW9uTGluZXMpO1xyXG4gICAgICAgIHRoaXMuX3BvcHVwLmluc3RhbmNlLmRvY3VtZW50VW5kZXJFZGl0ID0gdGhpcy5kb2N1bWVudFVuZGVyRWRpdDtcclxuICAgICAgICB0aGlzLl9wb3B1cC5pbnN0YW5jZS5maWxlc1VwbG9hZENvbmZpZ09iamVjdHMgPSB0aGlzLmZpbGVzVXBsb2FkQ29uZmlnT2JqZWN0cztcclxuICAgICAgICB0aGlzLl9wb3B1cC5pbnN0YW5jZS5tZWRpY2FsVXNlckdyb3VwcyA9IHRoaXMubWVkaWNhbFVzZXJHcm91cHM7XHJcbiAgICAgICAgdGhpcy5fcG9wdXAuaW5zdGFuY2UudGFnQ2F0ZWdvcnkgPSB0aGlzLnRhZ0NhdGVnb3J5O1xyXG4gICAgICAgIHRoaXMuX3BvcHVwLmluc3RhbmNlLmRpc3BsYXlSZWFkV3JpdGVBY2Nlc3MgPSB0aGlzLmRpc3BsYXlSZWFkV3JpdGVBY2Nlc3M7XHJcbiAgICAgICAgdGhpcy5fcG9wdXAuaW5zdGFuY2UudGFnUmVmZXJlbmNlVGFibGUgPSB0aGlzLnRhZ1JlZmVyZW5jZVRhYmxlO1xyXG4gICAgICAgIHRoaXMuX3BvcHVwLmluc3RhbmNlLnB1YmxpY2F0aW9uSWRzID0gUmVmQ29kZVV0aWxzLkdldE11bHRpUmVmQ29kZUNob2ljZXModGhpcy5kb2N1bWVudFVuZGVyRWRpdC5wdWJsaWNhdGlvbik7XHJcbiAgICAgICAgdGhpcy5fcG9wdXAuaW5zdGFuY2Uuc3RvcmVHcm91cElkcyA9IHRoaXMuZG9jdW1lbnRVbmRlckVkaXQucmV0YWlsRm9ybXVsYXM7XHJcbiAgICAgICAgdGhpcy5fcG9wdXAuaW5zdGFuY2UuZmlsZVR5cGUgPSB0aGlzLmZpbGVUeXBlO1xyXG5cclxuICAgICAgICB0aGlzLl9wcmVwYXJlRmlsZVJpZ2h0cygpO1xyXG5cclxuICAgICAgICB0aGlzLl9wb3B1cENsb3NlU3ViID0gdGhpcy5fcG9wdXAuaW5zdGFuY2UucG9wdXBDbG9zZUV2ZW50LnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuX3VubG9ja0RvY3VtZW50KCk7XHJcbiAgICAgICAgICAgIHRoaXMucG9wdXBPcGVuZWRTdGF0ZUNoYW5nZS5lbWl0KGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5fcG9wdXBDbG9zZVN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICB0aGlzLl9kb2NDaGFuZ2VTdWIudW5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgdGhpcy5fcG9wdXAuZGVzdHJveSgpO1xyXG4gICAgICAgICAgICB0aGlzLl9wb3B1cCA9IHVuZGVmaW5lZDtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgYXN5bmMgY29udmVydEZpbGVzSW50b0NvRG9jdW1lbnRzKGZpbGVzOiBGaWxlTGlzdCk6IFByb21pc2U8Q29Eb2N1bWVudFtdPiB7XHJcbiAgICAgICAgY29uc3QgYW1vdW50T2ZGaWxlczogbnVtYmVyID0gZmlsZXMubGVuZ3RoO1xyXG4gICAgICAgIGNvbnN0IGZpbGVzVG9BZGQ6IENvRG9jdW1lbnRbXSA9IFtdO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgYW1vdW50T2ZGaWxlczsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpbGVBc0RvY3VtZW50OiBDb0RvY3VtZW50ID0gYXdhaXQgdGhpcy5fZ2V0RmlsZUFzRG9jdW1lbnQoZmlsZXNbaV0pO1xyXG4gICAgICAgICAgICBmaWxlQXNEb2N1bWVudC5pbmRleCA9IENvRG9jdW1lbnRTaGFyZWRGaWVsZExvZ2ljLkdlbmVyYXRlQXZhaWxhYmxlSW5kZXhOcih0aGlzLmRvY3VtZW50cyB8fCBbXSkgKyBpO1xyXG4gICAgICAgICAgICBmaWxlc1RvQWRkLnB1c2goZmlsZUFzRG9jdW1lbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmlsZXNUb0FkZDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZmlsZXNQaWNrZWQoZmlsZXM6IEZpbGVMaXN0KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgaWYgKGZpbGVzICYmIGZpbGVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBsZXQgYWxsRmlsZXNBcmVWYWxpZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgICAgICAgICAgIGNvbnN0IGFtb3VudE9mRmlsZXM6IG51bWJlciA9IGZpbGVzLmxlbmd0aDtcclxuICAgICAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IGFtb3VudE9mRmlsZXM7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFGaWxlVXRpbHMuQ2hlY2tNYXhVcGxvYWRTaXplKGZpbGVzW2ldLCB0aGlzLl9tYXhVcGxvYWRGaWxlU2l6ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBhbGxGaWxlc0FyZVZhbGlkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICghYWxsRmlsZXNBcmVWYWxpZCkge1xyXG4gICAgICAgICAgICAgIC8vVE9ETyBtYWtlIGRpYWxvZ1NlcnZpY2VcclxuICAgICAgICAgICAgICAgIC8vdGhpcy5fcHJvbXB0U2VydmljZS5zaG93V2FybmluZyh0aGlzLl9kaWN0aW9uYXJ5U2VydmljZS5nZXQoXCJGSUxFX1RPT19MQVJHRV9UT19VUExPQURcIiwgdHJ1ZSwgXCJcIiArIEZpbGVVdGlscy5nZXRNYXhVcGxvYWRTaXplSW5NYih0aGlzLl9tYXhVcGxvYWRGaWxlU2l6ZSkudG9TdHJpbmcoKSkpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZXNUb0FkZDogQ29Eb2N1bWVudFtdID0gYXdhaXQgdGhpcy5jb252ZXJ0RmlsZXNJbnRvQ29Eb2N1bWVudHMoZmlsZXMpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChmaWxlc1RvQWRkLmxlbmd0aCA+IDEgfHwgdGhpcy51c2VXaXRob3V0U2V0dGluZ1Byb3BzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kb2N1bWVudHNBZGRlZC5lbWl0KGZpbGVzVG9BZGQpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50VW5kZXJFZGl0ID0gZmlsZXNUb0FkZFswXTsgLy8gU2V0dGluZyBkb2NVbmRlckVkaXQgb3BlbnMgdGhlIHBvcHVwIHdpbmRvd1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3BlblBvcHVwKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGhhbmRsZUFjY2VwdGVkRmlsZVR5cGVzTG9hZGVkKHZhbHVlOiBGaWxlVHlwZSk6IHZvaWQge1xyXG4gICAgICAgIC8vVE9ETyBmaXggbG9hZGluZ1xyXG4gICAgICAgIC8vdGhpcy5hY2NlcHRlZFVwbG9hZEZvcm1hdHMgPSB0aGlzLl9jb0RvY3VtZW50RGF0YUxvYWRlci5nZXRBbGxvd2VkRXh0ZW5zaW9uc0ZvclR5cGUodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgX2dldEZpbGVBc0RvY3VtZW50KGZpbGU6IEZpbGUpOiBQcm9taXNlPENvRG9jdW1lbnQ+IHtcclxuICAgICAgICBjb25zdCBmaWxlQXNDb0RvY3VtZW50OiBDb0RvY3VtZW50ID0gYXdhaXQgRmlsZVV0aWxzLlJlYWRGaWxlQXNOZXdDb0RvY3VtZW50KGZpbGUsIHRoaXMucmVzaXplSW1hZ2VzKTtcclxuICAgICAgICAvLyBzZXQgc29tZSBleHRyYSBrbm93biBmaWVsZHMgZm9yIHRoZSBjb2RvY3VtZW50OlxyXG4gICAgICAgIGZpbGVBc0NvRG9jdW1lbnQudGFibGUgPSB0aGlzLmRvY3VtZW50VGFibGU7XHJcbiAgICAgICAgZmlsZUFzQ29Eb2N1bWVudC5rZXkgPSB0aGlzLmRvY3VtZW50S2V5O1xyXG4gICAgICAgIC8vVE9ETyBmaXggYWRkIHVzZXJzXHJcbiAgICAgICAgLy9maWxlQXNDb0RvY3VtZW50LmNyZWF0aW9uVXNlciA9IHRoaXMuX3VzZXJTZXJ2aWNlLnVzZXJOYW1lLnRvVXBwZXJDYXNlKCk7XHJcbiAgICAgICAgLy9maWxlQXNDb0RvY3VtZW50Lm1vZGlmaWVkVXNlciA9IHRoaXMuX3VzZXJTZXJ2aWNlLnVzZXJOYW1lLnRvVXBwZXJDYXNlKCk7XHJcbiAgICAgICAgZmlsZUFzQ29Eb2N1bWVudC5jcmVhdGlvbkRhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIGZpbGVBc0NvRG9jdW1lbnQubW9kaWZpZWREYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgICBmaWxlQXNDb0RvY3VtZW50LmZpbGVUeXBlID0gdGhpcy5maWxlVHlwZSA/IHRoaXMuZmlsZVR5cGUgOiBGaWxlVXRpbHMuSXNJbWFnZUZpbGUoZmlsZSkgPyBGaWxlVHlwZS5JbWFnZSA6IEZpbGVUeXBlLkRvY3VtZW50O1xyXG5cclxuICAgICAgICBpZiAoZmlsZUFzQ29Eb2N1bWVudCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmlsZUFzQ29Eb2N1bWVudDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhc3luYyBfc2V0SW50ZXJuYWxQYXJhbU9iaih2YWx1ZTogSW50ZXJuYWxQYXJhbSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIC8vVE9ETyBmaXggcGFyYW1zXHJcbiAgICAgICAgLy9jb25zdCBwYXJhbTogSW50ZXJuYWxQYXJhbWV0ZXJPYmplY3QgPSBhd2FpdCB0aGlzLl9nZW5lcmFsRGFsUmVwb3NpdG9yeS5nZXRJbnRlcm5hbFBhcmFtT2JqZWN0KHZhbHVlKTtcclxuICAgICAgICAvL3RoaXMuX21heFVwbG9hZEZpbGVTaXplID0gaXNOYU4ocGFyc2VJbnQocGFyYW0udmFsdWUsIDApKSA/IHVuZGVmaW5lZCA6IHBhcnNlSW50KHBhcmFtLnZhbHVlLCAwKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFzeW5jIF9sb2NrRG9jdW1lbnQoKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmRvY3VtZW50VW5kZXJFZGl0LmRvY3VtZW50SWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7IC8vIE5ldyBkb2N1bWVudCBkb2VzIG5vdCBoYXZlIGFuIElEIGFuZCB0aGVyZWZvcmUgZG9lcyBub3QgaGF2ZSB0byBiZSBsb2NrZWRcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGxvY2tPazogYm9vbGVhbiA9IGF3YWl0IHRoaXMubG9ja09wZXJhdGlvbihDb0RvY3VtZW50KTtcclxuICAgICAgICByZXR1cm4gbG9ja09rO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgX3VubG9ja0RvY3VtZW50KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICBpZiAoIXRoaXMuZG9jdW1lbnRVbmRlckVkaXQuZG9jdW1lbnRJZCkge1xyXG4gICAgICAgIHJldHVybiB0cnVlOyAvLyBOZXcgZG9jdW1lbnQgZG9lcyBub3QgaGF2ZSBhbiBJRCBhbmQgdGhlcmVmb3JlIGRvZXMgbm90IGhhdmUgdG8gYmUgbG9ja2VkXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHVubG9ja09rOiBib29sZWFuID0gYXdhaXQgdGhpcy51bmxvY2tPcGVyYXRpb24oQ29Eb2N1bWVudCk7XHJcbiAgICAgIHJldHVybiB1bmxvY2tPaztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9wcmVwYXJlRmlsZVJpZ2h0cygpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBsZW46IG51bWJlciA9IHRoaXMuZG9jdW1lbnRVbmRlckVkaXQucmlnaHRzLmxlbmd0aDtcclxuICAgICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgcmlnaHQ6IENvRG9jdW1lbnRSaWdodCA9IHRoaXMuZG9jdW1lbnRVbmRlckVkaXQucmlnaHRzW2ldO1xyXG4gICAgICAgICAgICBpZiAocmlnaHQucmlnaHRMZXZlbCA9PT0gT2JqZWN0UmlnaHRUeXBlLlJlYWRXcml0ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fcG9wdXAuaW5zdGFuY2UudXNlckdyb3Vwc0ZvcldyaXRlLnB1c2gocmlnaHQudXNlckdyb3VwSWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChyaWdodC5yaWdodExldmVsID09PSBPYmplY3RSaWdodFR5cGUuUmVhZE9ubHkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3BvcHVwLmluc3RhbmNlLnVzZXJHcm91cHNGb3JSZWFkLnB1c2gocmlnaHQudXNlckdyb3VwSWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -82,18 +82,20 @@ FilesUploadComponent.decorators = [
|
|
|
82
82
|
(mouseout)="mouseOverAdd = false"
|
|
83
83
|
(click)="handleAddClick()"></co-file-upload>
|
|
84
84
|
</div>
|
|
85
|
-
<
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
85
|
+
<div class="uploaded-images-wrapper">
|
|
86
|
+
<co-file-upload *ngFor="let file of documents" class="tile"
|
|
87
|
+
[readonly]="file.readonly || readonly"
|
|
88
|
+
[class.hidden]="hideAvatars ? file.isAvatar : false"
|
|
89
|
+
[file]="file"
|
|
90
|
+
[label]="file.fileName"
|
|
91
|
+
[showTrashCan]="canDelete"
|
|
92
|
+
[fileSavesOnPopupOkClick]="fileSavesOnPopupOkClick"
|
|
93
|
+
[isEditable]="isEditable"
|
|
94
|
+
[customImageClick]="customImageClick"
|
|
95
|
+
(imageClick)="imageClick.emit($event)"
|
|
96
|
+
(deleteClick)="handleDelete(file)"
|
|
97
|
+
(editClick)="handleEditDocumentClick($event)"></co-file-upload>
|
|
98
|
+
</div>
|
|
97
99
|
</drag-drop-container>
|
|
98
100
|
<span class="maxuploadsize" textContent="getMaxFileSizeNotition()" [class.show]="mouseOverAdd"></span>
|
|
99
101
|
<input #inputFile [accept]="acceptedUploadFormats" (change)="handleFileChange($event)" type="file" hidden multiple/>
|
|
@@ -138,4 +140,4 @@ __decorate([
|
|
|
138
140
|
__decorate([
|
|
139
141
|
InputBoolean()
|
|
140
142
|
], FilesUploadComponent.prototype, "hideAvatars", void 0);
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtdXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZGNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpbGVzLXVwbG9hZC9maWxlcy11cGxvYWQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULHdCQUF3QixFQUN4QixZQUFZLEVBRVosWUFBWSxFQUFFLFVBQVUsRUFDeEIsV0FBVyxFQUNYLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxFQUNULGdCQUFnQixFQUNoQixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFDLDhDQUE4QyxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFHNUYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxpQ0FBaUMsRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBdUR6RywwSUFBMEk7QUFDMUksTUFBTSxPQUFPLG9CQUFxQixTQUFRLHVCQUF1QjtJQW1FN0Q7SUFDSSwrQkFBK0I7SUFDL0IsaUJBQW9EO0lBQ3BELDJCQUEyQjtJQUNqQixVQUE0QixFQUM1QixRQUFrQztRQVE1QyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBVHJDLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQzVCLGFBQVEsR0FBUixRQUFRLENBQTBCO1FBekRoRCxxQkFBcUI7UUFFZCxVQUFLLEdBQVcsYUFBYSxDQUFDO1FBTTlCLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUlsQyxlQUFVLEdBQVksS0FBSyxDQUFDO1FBRzVCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBU3BCLHVCQUFrQixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRzNFLG9CQUFlLEdBQWdDLElBQUksWUFBWSxFQUFpQixDQUFDO1FBR2pGLGVBQVUsR0FBNkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQWtCdEUsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFFL0IsZUFBVSxHQUFZLEtBQUssQ0FBQztJQWdCbkMsQ0FBQztJQS9FRCxJQUNXLFFBQVEsQ0FBQyxLQUFjO1FBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUEyQ00sU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQ1csUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFDVyxLQUFLO1FBQ1osT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0lBQzFELENBQUM7SUF1QkQsV0FBVztRQUNQLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7UUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7UUFDdkIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFWSxlQUFlOztZQUN4QixJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUU7Z0JBQ3hDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ3BDO1FBQ0wsQ0FBQztLQUFBO0lBRU0sY0FBYztRQUNqQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7O1lBdkpKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQTBDVDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtnQkFDckMsU0FBUyxFQUFFO29CQUNQO3dCQUNJLE9BQU8sRUFBRSw4Q0FBOEM7d0JBQ3ZELFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUM7cUJBQ3REO2lCQUNKO2FBQ0o7OztZQXRETyxpQ0FBaUM7WUFSdkMsZ0JBQWdCO1lBVmhCLHdCQUF3Qjs7O3VCQTRFckIsS0FBSzsrQkFNTCxZQUFZLFNBQUMsa0JBQWtCLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO29CQUkvQyxTQUFTLFNBQUMsV0FBVyxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztvQkFJckMsS0FBSzt1QkFHTCxLQUFLOytCQUdMLEtBQUs7eUJBR0wsS0FBSzswQkFJTCxLQUFLO3NDQUdMLEtBQUs7dUJBR0wsS0FBSztpQ0FHTCxNQUFNOzhCQUdOLE1BQU07eUJBR04sTUFBTTt3QkFHTixXQUFXLFNBQUMsdUJBQXVCO3VCQUtuQyxXQUFXLFNBQUMsZ0JBQWdCO29CQUs1QixXQUFXLFNBQUMsYUFBYTt5QkFPekIsV0FBVyxTQUFDLGdCQUFnQjs7QUFyQzdCO0lBREMsWUFBWSxFQUFFO3dEQUNvQjtBQUduQztJQURVLFlBQVksRUFBRTt5REFDWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICBDb250ZW50Q2hpbGQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE91dHB1dCxcclxuICBUZW1wbGF0ZVJlZixcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxuICBWaWV3RW5jYXBzdWxhdGlvblxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7QmFzZUZpbGVVcGxvYWRDb21wb25lbnR9IGZyb20gXCIuL2NvbXBvbmVudHMvYmFzZS1maWxlLXVwbG9hZC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtTQ1JFRU5fQ09ORklHX0FEQVBURVJfQ09NUE9ORU5UX0lOVEVSRkFDRV9OQU1FfSBmcm9tIFwiQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMlwiO1xyXG5pbXBvcnQge0NvRG9jdW1lbnR9IGZyb20gXCJAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9jby1kb2N1bWVudFwiO1xyXG5pbXBvcnQge1RhZ1RyZWVJdGVtfSBmcm9tIFwiQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvdGFnLXRyZWUtaXRlbS5ib1wiO1xyXG5pbXBvcnQge0lucHV0Qm9vbGVhbn0gZnJvbSBcIi4uLy4uL2RlY29yYXRvci9pbnB1dC1ib29sZWFuLmRlY29yYXRvclwiO1xyXG5pbXBvcnQge1NoYXJlZENvbXBvbmVudHNEaWN0aW9uYXJ5U2VydmljZX0gZnJvbSAnLi4vLi4vdHJhbnNsYXRpb24vc2hhcmVkLWNvbXBvbmVudHMtZGljdGlvbmFyeS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwiY28tZmlsZXMtdXBsb2FkXCIsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlcy11cGxvYWQtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICA8ZHJhZy1kcm9wLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc29ydGFibGVMaXN0XT1cImRvY3VtZW50c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzb3J0aW5nQ2hhbmdlKT1cImhhbmRsZVNvcnRpbmdDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoYW5kbGVTb3J0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmFnSGFuZGxlPVwidGlsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmFibGVkXT1cIiFub0RyYWdEcm9wT3JkZXJpbmdcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkLWFkZC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8Y28tZmlsZS11cGxvYWQgKm5nSWY9XCJjYW5BZGQgJiYgYWRkV2l0aEJ1dHRvblwiIGNsYXNzPVwiYWRkLWZpbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQWRkaW5nVGlsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJwbHVzX3JvdW5kX29wZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5rXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbCB8IHNoYXJlZExvY2FsaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VvdmVyKT1cIm1vdXNlT3ZlckFkZCA9IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZW91dCk9XCJtb3VzZU92ZXJBZGQgPSBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUFkZENsaWNrKClcIj48L2NvLWZpbGUtdXBsb2FkPiA8IS0tIChjbGljayk9XCJoYW5kbGVBZGRDbGljaygpXCIgLS0+XHJcbiAgICAgICAgICAgICAgICA8Y28tZmlsZS11cGxvYWQgKm5nSWY9XCIhZG9jdW1lbnRzIHx8IGRvY3VtZW50cy5sZW5ndGggPT09IDBcIiBjbGFzcz1cImFkZC1kcm9wem9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBZGRpbmdUaWxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Ryb3B6b25lXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5rXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInRFJPUFpPTkVfVEVYVCcgfCBzaGFyZWRMb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlb3Zlcik9XCJtb3VzZU92ZXJBZGQgPSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VvdXQpPVwibW91c2VPdmVyQWRkID0gZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVBZGRDbGljaygpXCI+PC9jby1maWxlLXVwbG9hZD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8Y28tZmlsZS11cGxvYWQgKm5nRm9yPVwibGV0IGZpbGUgb2YgZG9jdW1lbnRzXCIgY2xhc3M9XCJ0aWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImZpbGUucmVhZG9ubHkgfHwgcmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaGlkZGVuXT1cImhpZGVBdmF0YXJzID8gZmlsZS5pc0F2YXRhciA6IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpbGVdPVwiZmlsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJmaWxlLmZpbGVOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dUcmFzaENhbl09XCJjYW5EZWxldGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbZmlsZVNhdmVzT25Qb3B1cE9rQ2xpY2tdPVwiZmlsZVNhdmVzT25Qb3B1cE9rQ2xpY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNFZGl0YWJsZV09XCJpc0VkaXRhYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbUltYWdlQ2xpY2tdPVwiY3VzdG9tSW1hZ2VDbGlja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbWFnZUNsaWNrKT1cImltYWdlQ2xpY2suZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZUNsaWNrKT1cImhhbmRsZURlbGV0ZShmaWxlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChlZGl0Q2xpY2spPVwiaGFuZGxlRWRpdERvY3VtZW50Q2xpY2soJGV2ZW50KVwiPjwvY28tZmlsZS11cGxvYWQ+XHJcbiAgICAgICAgICAgIDwvZHJhZy1kcm9wLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXh1cGxvYWRzaXplXCIgdGV4dENvbnRlbnQ9XCJnZXRNYXhGaWxlU2l6ZU5vdGl0aW9uKClcIiBbY2xhc3Muc2hvd109XCJtb3VzZU92ZXJBZGRcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDxpbnB1dCAjaW5wdXRGaWxlIFthY2NlcHRdPVwiYWNjZXB0ZWRVcGxvYWRGb3JtYXRzXCIgKGNoYW5nZSk9XCJoYW5kbGVGaWxlQ2hhbmdlKCRldmVudClcIiB0eXBlPVwiZmlsZVwiIGhpZGRlbiBtdWx0aXBsZS8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICBgLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogU0NSRUVOX0NPTkZJR19BREFQVEVSX0NPTVBPTkVOVF9JTlRFUkZBQ0VfTkFNRSxcclxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRmlsZXNVcGxvYWRDb21wb25lbnQpXHJcbiAgICAgICAgfVxyXG4gICAgXVxyXG59KVxyXG4vLyBBIGNvbXBvbmVudCB0aGF0IGxldHMgdGhlIHVzZXIgbWFrZSBhIGxpc3Qgb2YgZmlsZXMgZnJvbSBpdHMgZGV2aWNlLiBEb2Vzbid0IGFjdHVhbGx5IHVwbG9hZCwgYnV0IG91dHB1dHMgY2hvc2VuIGZpbGVzIGFzIGZpbGVzQ2hhbmdlZC5cclxuZXhwb3J0IGNsYXNzIEZpbGVzVXBsb2FkQ29tcG9uZW50IGV4dGVuZHMgQmFzZUZpbGVVcGxvYWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IGRyb3B6b25lKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5pc0Ryb3B6b25lID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLy90b2RvIHNlZSBpZiB0aGlzIGlzIHVzZWQgYW55d2hlcmUgaWYgbm90LCByZW1vdmVcclxuICAgIEBDb250ZW50Q2hpbGQoXCJzbGlkZW91dFRlbXBsYXRlXCIsIHtzdGF0aWM6IHRydWV9KVxyXG4gICAgcHVibGljIHNsaWRlb3V0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gICAgLy8gKEhpZGRlbikgaW5wdXQgZm9yIGZpbGUgdXBsb2FkIGZhY2lsaXRpZXNcclxuICAgIEBWaWV3Q2hpbGQoXCJpbnB1dEZpbGVcIiwge3N0YXRpYzogdHJ1ZX0pXHJcbiAgICBwdWJsaWMgaW5wdXQ6IEVsZW1lbnRSZWY7XHJcblxyXG4gICAgLy8gSW5wdXQgYnV0dG9uIGxhYmVsXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGxhYmVsOiBzdHJpbmcgPSBcIlVQTE9BRF9GSUxFXCI7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBjZmdOYW1lczogYW55O1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgY3VzdG9tSW1hZ2VDbGljazogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBASW5wdXRCb29sZWFuKClcclxuICAgIHB1YmxpYyBpc0VkaXRhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpXHJcbiAgICBwdWJsaWMgaGlkZUF2YXRhcnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGZpbGVTYXZlc09uUG9wdXBPa0NsaWNrOiBzdHJpbmc7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZWxlY3RlZDogc3RyaW5nO1xyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHJlYWRvbmx5IGVkaXRTbGlkZW91dFN1Ym1pdDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHRhZ3NDaGFuZ2VFdmVudDogRXZlbnRFbWl0dGVyPFRhZ1RyZWVJdGVtW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxUYWdUcmVlSXRlbVtdPigpO1xyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGltYWdlQ2xpY2s6IEV2ZW50RW1pdHRlcjxDb0RvY3VtZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8Q29Eb2N1bWVudD4oKTtcclxuXHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvLWZpbGVzLXVwbG9hZCcpXHJcbiAgICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdEJpbmRpbmcoXCJjbGFzcy5lZGl0YWJsZVwiKVxyXG4gICAgcHVibGljIGdldCBlZGl0YWJsZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jYW5BZGQ7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuZW1wdHlcIilcclxuICAgIHB1YmxpYyBnZXQgZW1wdHkoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICF0aGlzLmRvY3VtZW50cyB8fCB0aGlzLmRvY3VtZW50cy5sZW5ndGggPT09IDA7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG1vdXNlT3ZlckFkZDogYm9vbGVhbjtcclxuICAgIHB1YmxpYyBzbGlkZW91dFNob3duOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmRyb3B6b25lJylcclxuICAgIHB1YmxpYyBpc0Ryb3B6b25lOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgLy9wcm9tcHRTZXJ2aWNlOiBQcm9tcHRTZXJ2aWNlLFxyXG4gICAgICAgIGRpY3Rpb25hcnlTZXJ2aWNlOiBTaGFyZWRDb21wb25lbnRzRGljdGlvbmFyeVNlcnZpY2UsXHJcbiAgICAgICAgLy91c2VyU2VydmljZTogVXNlclNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9jb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9mYWN0b3J5OiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXHJcbiAgICAgICAgLy9wcm90ZWN0ZWQgX2RhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSxcclxuICAgICAgICAvL3Byb3RlY3RlZCBfYmFzZURhdGFEYWxSZXBvc2l0b3J5OiBCYXNlRGF0YURhbFJlcG9zaXRvcnksXHJcbiAgICAgICAvLyBwcm90ZWN0ZWQgX2dlbmVyYWxEYWxSZXBvc2l0b3J5OiBHZW5lcmFsRGFsUmVwb3NpdG9yeSxcclxuICAgICAgICAvL3Byb3RlY3RlZCBfY29Eb2N1bWVudERhdGFMb2FkZXI6IENvRG9jdW1lbnREYXRhTG9hZGVyU2VydmljZSxcclxuICAgICAgICAvL3ByaXZhdGUgX3dvcmthYmlsaXR5OiBBcHBXb3JrYWJpbGl0eVNlcnZpY2UsXHJcbiAgICAgICAgLy9wcml2YXRlIF9maWxlVHlwZUltZ1BpcGU6IEZpbGVUeXBlSW1hZ2VQaXBlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihkaWN0aW9uYXJ5U2VydmljZSwgX2NvbnRhaW5lciwgX2ZhY3RvcnkpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2xpZGVvdXRUZW1wbGF0ZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLmlucHV0ID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIG9wZW5GaWxlQnJvd3NlcigpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICBpZiAodGhpcy5pbnB1dCAmJiB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBoYW5kbGVBZGRDbGljaygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9wZW5GaWxlQnJvd3NlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vdG9kbyBjaGVjayBpZiB0aGlzIGNhbiBiZSByZW1vdmVkIGF0IHRoZSBlbmQgb2YgdGhlIHJ1blxyXG4gICAgLypwdWJsaWMgb25DdXN0b21DbG9zZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRvY3VtZW50VW5kZXJFZGl0ID0gdW5kZWZpbmVkO1xyXG4gICAgfSovXHJcbn1cclxuIl19
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtdXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZGNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpbGVzLXVwbG9hZC9maWxlcy11cGxvYWQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULHdCQUF3QixFQUN4QixZQUFZLEVBRVosWUFBWSxFQUFFLFVBQVUsRUFDeEIsV0FBVyxFQUNYLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxFQUNULGdCQUFnQixFQUNoQixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFDLDhDQUE4QyxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFHNUYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxpQ0FBaUMsRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBeUR6RywwSUFBMEk7QUFDMUksTUFBTSxPQUFPLG9CQUFxQixTQUFRLHVCQUF1QjtJQW1FN0Q7SUFDSSwrQkFBK0I7SUFDL0IsaUJBQW9EO0lBQ3BELDJCQUEyQjtJQUNqQixVQUE0QixFQUM1QixRQUFrQztRQVE1QyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBVHJDLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQzVCLGFBQVEsR0FBUixRQUFRLENBQTBCO1FBekRoRCxxQkFBcUI7UUFFZCxVQUFLLEdBQVcsYUFBYSxDQUFDO1FBTTlCLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUlsQyxlQUFVLEdBQVksS0FBSyxDQUFDO1FBRzVCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBU3BCLHVCQUFrQixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRzNFLG9CQUFlLEdBQWdDLElBQUksWUFBWSxFQUFpQixDQUFDO1FBR2pGLGVBQVUsR0FBNkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQWtCdEUsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFFL0IsZUFBVSxHQUFZLEtBQUssQ0FBQztJQWdCbkMsQ0FBQztJQS9FRCxJQUNXLFFBQVEsQ0FBQyxLQUFjO1FBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUEyQ00sU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQ1csUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFDVyxLQUFLO1FBQ1osT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0lBQzFELENBQUM7SUF1QkQsV0FBVztRQUNQLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7UUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7UUFDdkIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFWSxlQUFlOztZQUN4QixJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUU7Z0JBQ3hDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ3BDO1FBQ0wsQ0FBQztLQUFBO0lBRU0sY0FBYztRQUNqQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7O1lBekpKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBNENUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2dCQUNyQyxTQUFTLEVBQUU7b0JBQ1A7d0JBQ0ksT0FBTyxFQUFFLDhDQUE4Qzt3QkFDdkQsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztxQkFDdEQ7aUJBQ0o7YUFDSjs7O1lBeERPLGlDQUFpQztZQVJ2QyxnQkFBZ0I7WUFWaEIsd0JBQXdCOzs7dUJBOEVyQixLQUFLOytCQU1MLFlBQVksU0FBQyxrQkFBa0IsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7b0JBSS9DLFNBQVMsU0FBQyxXQUFXLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO29CQUlyQyxLQUFLO3VCQUdMLEtBQUs7K0JBR0wsS0FBSzt5QkFHTCxLQUFLOzBCQUlMLEtBQUs7c0NBR0wsS0FBSzt1QkFHTCxLQUFLO2lDQUdMLE1BQU07OEJBR04sTUFBTTt5QkFHTixNQUFNO3dCQUdOLFdBQVcsU0FBQyx1QkFBdUI7dUJBS25DLFdBQVcsU0FBQyxnQkFBZ0I7b0JBSzVCLFdBQVcsU0FBQyxhQUFhO3lCQU96QixXQUFXLFNBQUMsZ0JBQWdCOztBQXJDN0I7SUFEQyxZQUFZLEVBQUU7d0RBQ29CO0FBR25DO0lBRFUsWUFBWSxFQUFFO3lEQUNZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gIENvbnRlbnRDaGlsZCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZixcclxuICBIb3N0QmluZGluZyxcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT3V0cHV0LFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3Q29udGFpbmVyUmVmLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtCYXNlRmlsZVVwbG9hZENvbXBvbmVudH0gZnJvbSBcIi4vY29tcG9uZW50cy9iYXNlLWZpbGUtdXBsb2FkLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1NDUkVFTl9DT05GSUdfQURBUFRFUl9DT01QT05FTlRfSU5URVJGQUNFX05BTUV9IGZyb20gXCJAY29saWpuaXQvY29yZWNvbXBvbmVudHNfdjEyXCI7XHJcbmltcG9ydCB7Q29Eb2N1bWVudH0gZnJvbSBcIkBjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL2NvLWRvY3VtZW50XCI7XHJcbmltcG9ydCB7VGFnVHJlZUl0ZW19IGZyb20gXCJAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC90YWctdHJlZS1pdGVtLmJvXCI7XHJcbmltcG9ydCB7SW5wdXRCb29sZWFufSBmcm9tIFwiLi4vLi4vZGVjb3JhdG9yL2lucHV0LWJvb2xlYW4uZGVjb3JhdG9yXCI7XHJcbmltcG9ydCB7U2hhcmVkQ29tcG9uZW50c0RpY3Rpb25hcnlTZXJ2aWNlfSBmcm9tICcuLi8uLi90cmFuc2xhdGlvbi9zaGFyZWQtY29tcG9uZW50cy1kaWN0aW9uYXJ5LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJjby1maWxlcy11cGxvYWRcIixcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpbGVzLXVwbG9hZC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgIDxkcmFnLWRyb3AtY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzb3J0YWJsZUxpc3RdPVwiZG9jdW1lbnRzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNvcnRpbmdDaGFuZ2UpPVwiaGFuZGxlU29ydGluZ0NoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hhbmRsZVNvcnRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdIYW5kbGU9XCJ0aWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuYWJsZWRdPVwiIW5vRHJhZ0Ryb3BPcmRlcmluZ1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtYWRkLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgIDxjby1maWxlLXVwbG9hZCAqbmdJZj1cImNhbkFkZCAmJiBhZGRXaXRoQnV0dG9uXCIgY2xhc3M9XCJhZGQtZmlsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBZGRpbmdUaWxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBsdXNfcm91bmRfb3BlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsIHwgc2hhcmVkTG9jYWxpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZW92ZXIpPVwibW91c2VPdmVyQWRkID0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlb3V0KT1cIm1vdXNlT3ZlckFkZCA9IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlQWRkQ2xpY2soKVwiPjwvY28tZmlsZS11cGxvYWQ+IDwhLS0gKGNsaWNrKT1cImhhbmRsZUFkZENsaWNrKClcIiAtLT5cclxuICAgICAgICAgICAgICAgIDxjby1maWxlLXVwbG9hZCAqbmdJZj1cIiFkb2N1bWVudHMgfHwgZG9jdW1lbnRzLmxlbmd0aCA9PT0gMFwiIGNsYXNzPVwiYWRkLWRyb3B6b25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0FkZGluZ1RpbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZHJvcHpvbmVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidEUk9QWk9ORV9URVhUJyB8IHNoYXJlZExvY2FsaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VvdmVyKT1cIm1vdXNlT3ZlckFkZCA9IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZW91dCk9XCJtb3VzZU92ZXJBZGQgPSBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUFkZENsaWNrKClcIj48L2NvLWZpbGUtdXBsb2FkPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWRlZC1pbWFnZXMtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgPGNvLWZpbGUtdXBsb2FkICpuZ0Zvcj1cImxldCBmaWxlIG9mIGRvY3VtZW50c1wiIGNsYXNzPVwidGlsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImZpbGUucmVhZG9ubHkgfHwgcmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oaWRkZW5dPVwiaGlkZUF2YXRhcnMgPyBmaWxlLmlzQXZhdGFyIDogZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWxlXT1cImZpbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJmaWxlLmZpbGVOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1RyYXNoQ2FuXT1cImNhbkRlbGV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpbGVTYXZlc09uUG9wdXBPa0NsaWNrXT1cImZpbGVTYXZlc09uUG9wdXBPa0NsaWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNFZGl0YWJsZV09XCJpc0VkaXRhYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VzdG9tSW1hZ2VDbGlja109XCJjdXN0b21JbWFnZUNsaWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1hZ2VDbGljayk9XCJpbWFnZUNsaWNrLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZUNsaWNrKT1cImhhbmRsZURlbGV0ZShmaWxlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVkaXRDbGljayk9XCJoYW5kbGVFZGl0RG9jdW1lbnRDbGljaygkZXZlbnQpXCI+PC9jby1maWxlLXVwbG9hZD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kcmFnLWRyb3AtY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1heHVwbG9hZHNpemVcIiB0ZXh0Q29udGVudD1cImdldE1heEZpbGVTaXplTm90aXRpb24oKVwiIFtjbGFzcy5zaG93XT1cIm1vdXNlT3ZlckFkZFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPGlucHV0ICNpbnB1dEZpbGUgW2FjY2VwdF09XCJhY2NlcHRlZFVwbG9hZEZvcm1hdHNcIiAoY2hhbmdlKT1cImhhbmRsZUZpbGVDaGFuZ2UoJGV2ZW50KVwiIHR5cGU9XCJmaWxlXCIgaGlkZGVuIG11bHRpcGxlLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIGAsXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBTQ1JFRU5fQ09ORklHX0FEQVBURVJfQ09NUE9ORU5UX0lOVEVSRkFDRV9OQU1FLFxyXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGaWxlc1VwbG9hZENvbXBvbmVudClcclxuICAgICAgICB9XHJcbiAgICBdXHJcbn0pXHJcbi8vIEEgY29tcG9uZW50IHRoYXQgbGV0cyB0aGUgdXNlciBtYWtlIGEgbGlzdCBvZiBmaWxlcyBmcm9tIGl0cyBkZXZpY2UuIERvZXNuJ3QgYWN0dWFsbHkgdXBsb2FkLCBidXQgb3V0cHV0cyBjaG9zZW4gZmlsZXMgYXMgZmlsZXNDaGFuZ2VkLlxyXG5leHBvcnQgY2xhc3MgRmlsZXNVcGxvYWRDb21wb25lbnQgZXh0ZW5kcyBCYXNlRmlsZVVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgZHJvcHpvbmUodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLmlzRHJvcHpvbmUgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvL3RvZG8gc2VlIGlmIHRoaXMgaXMgdXNlZCBhbnl3aGVyZSBpZiBub3QsIHJlbW92ZVxyXG4gICAgQENvbnRlbnRDaGlsZChcInNsaWRlb3V0VGVtcGxhdGVcIiwge3N0YXRpYzogdHJ1ZX0pXHJcbiAgICBwdWJsaWMgc2xpZGVvdXRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgICAvLyAoSGlkZGVuKSBpbnB1dCBmb3IgZmlsZSB1cGxvYWQgZmFjaWxpdGllc1xyXG4gICAgQFZpZXdDaGlsZChcImlucHV0RmlsZVwiLCB7c3RhdGljOiB0cnVlfSlcclxuICAgIHB1YmxpYyBpbnB1dDogRWxlbWVudFJlZjtcclxuXHJcbiAgICAvLyBJbnB1dCBidXR0b24gbGFiZWxcclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgbGFiZWw6IHN0cmluZyA9IFwiVVBMT0FEX0ZJTEVcIjtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGNmZ05hbWVzOiBhbnk7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBjdXN0b21JbWFnZUNsaWNrOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIEBJbnB1dEJvb2xlYW4oKVxyXG4gICAgcHVibGljIGlzRWRpdGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBASW5wdXQoKSBASW5wdXRCb29sZWFuKClcclxuICAgIHB1YmxpYyBoaWRlQXZhdGFyczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZmlsZVNhdmVzT25Qb3B1cE9rQ2xpY2s6IHN0cmluZztcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNlbGVjdGVkOiBzdHJpbmc7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgZWRpdFNsaWRlb3V0U3VibWl0OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgdGFnc0NoYW5nZUV2ZW50OiBFdmVudEVtaXR0ZXI8VGFnVHJlZUl0ZW1bXT4gPSBuZXcgRXZlbnRFbWl0dGVyPFRhZ1RyZWVJdGVtW10+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgaW1hZ2VDbGljazogRXZlbnRFbWl0dGVyPENvRG9jdW1lbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxDb0RvY3VtZW50PigpO1xyXG5cclxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuY28tZmlsZXMtdXBsb2FkJylcclxuICAgIHB1YmxpYyBzaG93Q2xhc3MoKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0QmluZGluZyhcImNsYXNzLmVkaXRhYmxlXCIpXHJcbiAgICBwdWJsaWMgZ2V0IGVkaXRhYmxlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNhbkFkZDtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdEJpbmRpbmcoXCJjbGFzcy5lbXB0eVwiKVxyXG4gICAgcHVibGljIGdldCBlbXB0eSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIXRoaXMuZG9jdW1lbnRzIHx8IHRoaXMuZG9jdW1lbnRzLmxlbmd0aCA9PT0gMDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbW91c2VPdmVyQWRkOiBib29sZWFuO1xyXG4gICAgcHVibGljIHNsaWRlb3V0U2hvd246IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZHJvcHpvbmUnKVxyXG4gICAgcHVibGljIGlzRHJvcHpvbmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICAvL3Byb21wdFNlcnZpY2U6IFByb21wdFNlcnZpY2UsXHJcbiAgICAgICAgZGljdGlvbmFyeVNlcnZpY2U6IFNoYXJlZENvbXBvbmVudHNEaWN0aW9uYXJ5U2VydmljZSxcclxuICAgICAgICAvL3VzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgX2NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcclxuICAgICAgICBwcm90ZWN0ZWQgX2ZhY3Rvcnk6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgICAgICAvL3Byb3RlY3RlZCBfZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLFxyXG4gICAgICAgIC8vcHJvdGVjdGVkIF9iYXNlRGF0YURhbFJlcG9zaXRvcnk6IEJhc2VEYXRhRGFsUmVwb3NpdG9yeSxcclxuICAgICAgIC8vIHByb3RlY3RlZCBfZ2VuZXJhbERhbFJlcG9zaXRvcnk6IEdlbmVyYWxEYWxSZXBvc2l0b3J5LFxyXG4gICAgICAgIC8vcHJvdGVjdGVkIF9jb0RvY3VtZW50RGF0YUxvYWRlcjogQ29Eb2N1bWVudERhdGFMb2FkZXJTZXJ2aWNlLFxyXG4gICAgICAgIC8vcHJpdmF0ZSBfd29ya2FiaWxpdHk6IEFwcFdvcmthYmlsaXR5U2VydmljZSxcclxuICAgICAgICAvL3ByaXZhdGUgX2ZpbGVUeXBlSW1nUGlwZTogRmlsZVR5cGVJbWFnZVBpcGVcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKGRpY3Rpb25hcnlTZXJ2aWNlLCBfY29udGFpbmVyLCBfZmFjdG9yeSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zbGlkZW91dFRlbXBsYXRlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMuaW5wdXQgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgb3BlbkZpbGVCcm93c2VyKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIGlmICh0aGlzLmlucHV0ICYmIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGhhbmRsZUFkZENsaWNrKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub3BlbkZpbGVCcm93c2VyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy90b2RvIGNoZWNrIGlmIHRoaXMgY2FuIGJlIHJlbW92ZWQgYXQgdGhlIGVuZCBvZiB0aGUgcnVuXHJcbiAgICAvKnB1YmxpYyBvbkN1c3RvbUNsb3NlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZG9jdW1lbnRVbmRlckVkaXQgPSB1bmRlZmluZWQ7XHJcbiAgICB9Ki9cclxufVxyXG4iXX0=
|