tango-app-ui-analyse-trax 3.4.0-eyeTest.2 → 3.4.0-eyeTest.21
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/esm2022/lib/components/checklist/checklist.component.mjs +3 -2
- package/esm2022/lib/components/dashboard-info/dashboard-info.component.mjs +3 -2
- package/esm2022/lib/components/export-gallery/export-gallery.component.mjs +3 -3
- package/esm2022/lib/components/eye-test-audit/eye-test/eye-test.component.mjs +43 -33
- package/esm2022/lib/components/eye-test-audit/eye-test-audit/start-audit/start-audit.component.mjs +107 -40
- package/esm2022/lib/components/eye-test-audit/services/eye-test-audit.service.mjs +2 -1
- package/esm2022/lib/components/gallery/gallery.component.mjs +42 -13
- package/esm2022/lib/services/trax.service.mjs +1 -2
- package/fesm2022/tango-app-ui-analyse-trax-eye-test-audit.module-Cl_dBzWo.mjs +1479 -0
- package/fesm2022/tango-app-ui-analyse-trax-eye-test-audit.module-Cl_dBzWo.mjs.map +1 -0
- package/fesm2022/{tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-CcBuiczt.mjs → tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-U4RSS003.mjs} +91 -61
- package/fesm2022/tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-U4RSS003.mjs.map +1 -0
- package/fesm2022/tango-app-ui-analyse-trax.mjs +1 -1
- package/lib/components/eye-test-audit/eye-test/eye-test.component.d.ts +2 -1
- package/lib/components/eye-test-audit/eye-test-audit/start-audit/start-audit.component.d.ts +14 -4
- package/lib/components/eye-test-audit/services/eye-test-audit.service.d.ts +1 -0
- package/lib/components/gallery/gallery.component.d.ts +1 -0
- package/package.json +1 -1
- package/fesm2022/tango-app-ui-analyse-trax-eye-test-audit.module-Dy5v59Wb.mjs +0 -1402
- package/fesm2022/tango-app-ui-analyse-trax-eye-test-audit.module-Dy5v59Wb.mjs.map +0 -1
- package/fesm2022/tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-CcBuiczt.mjs.map +0 -1
|
@@ -109,7 +109,8 @@ export class GalleryComponent {
|
|
|
109
109
|
category = 'all';
|
|
110
110
|
videoChecklist = ['customerunattended', 'staffleftinthemiddle', 'remoteoptometrist', 'eyetest', 'cleaning', 'scrum', 'suspiciousactivity'];
|
|
111
111
|
imageChecklist = ['mobileusagedetection', 'uniformdetection', 'storehygienemonitoring', 'customertrial'];
|
|
112
|
-
|
|
112
|
+
boximageChecklist = ['queuealert', 'boxalert', 'suspiciousfootfall', 'drinking', 'bagdetection'];
|
|
113
|
+
combinedChecklist = [...this.videoChecklist, ...this.imageChecklist, ...this.boximageChecklist, 'storeopenandclose',];
|
|
113
114
|
queueAlertView;
|
|
114
115
|
viewImage;
|
|
115
116
|
zoneList = [];
|
|
@@ -187,6 +188,15 @@ export class GalleryComponent {
|
|
|
187
188
|
next: (data) => {
|
|
188
189
|
if (data?.client) {
|
|
189
190
|
this.headerFilters = data;
|
|
191
|
+
if (!this.queryParams.ChecklistDate && this.headerFilters.client && this.headerFilters.client === "459") {
|
|
192
|
+
console.log("11111");
|
|
193
|
+
this.selectedDateRange = {
|
|
194
|
+
startDate: this.dayjs().format('DD-MM-YYYY'),
|
|
195
|
+
endDate: this.dayjs().format('DD-MM-YYYY')
|
|
196
|
+
};
|
|
197
|
+
this.galleryForm.get('fromDate')?.setValue(dayjs(this.selectedDateRange.startDate, 'DD-MM-YYYY').format('YYYY-MM-DD'));
|
|
198
|
+
this.galleryForm.get('toDate')?.setValue(dayjs(this.selectedDateRange.endDate, 'DD-MM-YYYY').format('YYYY-MM-DD'));
|
|
199
|
+
}
|
|
190
200
|
this.clientDetails();
|
|
191
201
|
this.getAllGroups();
|
|
192
202
|
this.getAllStores();
|
|
@@ -197,6 +207,15 @@ export class GalleryComponent {
|
|
|
197
207
|
let userinfo = JSON.parse(localStorage.getItem("user-info") || "");
|
|
198
208
|
if (userinfo && userinfo?.clientId) {
|
|
199
209
|
this.headerFilters.client = userinfo?.clientId;
|
|
210
|
+
if (!this.queryParams.ChecklistDate && this.headerFilters.client && this.headerFilters.client === "459") {
|
|
211
|
+
console.log("222222");
|
|
212
|
+
this.selectedDateRange = {
|
|
213
|
+
startDate: this.dayjs().format('DD-MM-YYYY'),
|
|
214
|
+
endDate: this.dayjs().format('DD-MM-YYYY')
|
|
215
|
+
};
|
|
216
|
+
this.galleryForm.get('fromDate')?.setValue(dayjs(this.selectedDateRange.startDate, 'DD-MM-YYYY').format('YYYY-MM-DD'));
|
|
217
|
+
this.galleryForm.get('toDate')?.setValue(dayjs(this.selectedDateRange.endDate, 'DD-MM-YYYY').format('YYYY-MM-DD'));
|
|
218
|
+
}
|
|
200
219
|
this.clientDetails();
|
|
201
220
|
this.getAllGroups();
|
|
202
221
|
this.getAllStores();
|
|
@@ -321,6 +340,7 @@ export class GalleryComponent {
|
|
|
321
340
|
this.galleryForm.get('storeList')?.setValue(change);
|
|
322
341
|
}
|
|
323
342
|
else {
|
|
343
|
+
this.galleryForm.get('zoneList')?.setValue([]);
|
|
324
344
|
this.selectAll = false;
|
|
325
345
|
this.mobileusageDataList.forEach((obj) => (obj.checked = this.selectAll));
|
|
326
346
|
this.galleryForm.get('storeList')?.setValue([]);
|
|
@@ -359,6 +379,7 @@ export class GalleryComponent {
|
|
|
359
379
|
filter: "",
|
|
360
380
|
zoneList: [this.zoneList]
|
|
361
381
|
});
|
|
382
|
+
console.log(this.galleryForm.value);
|
|
362
383
|
}
|
|
363
384
|
datechange(event) {
|
|
364
385
|
if (!event.endDate || !event.startDate) {
|
|
@@ -511,7 +532,7 @@ export class GalleryComponent {
|
|
|
511
532
|
this.select = 'storeopenandclose';
|
|
512
533
|
this.storeOpencloselist(false);
|
|
513
534
|
}
|
|
514
|
-
else if (this.
|
|
535
|
+
else if (this.boximageChecklist.includes(this.queryParams.checklistType)) {
|
|
515
536
|
this.select = this.queryParams.checklistType;
|
|
516
537
|
this.queuealertlist(false);
|
|
517
538
|
}
|
|
@@ -582,7 +603,7 @@ export class GalleryComponent {
|
|
|
582
603
|
this.select = 'storeopenandclose';
|
|
583
604
|
this.storeOpencloselist(false);
|
|
584
605
|
}
|
|
585
|
-
else if (this.
|
|
606
|
+
else if (this.boximageChecklist.includes(this.galleryForm.value.sourceCheckList_id)) {
|
|
586
607
|
this.galleryForm.get('zoneList')?.setValue([]);
|
|
587
608
|
this.select = this.galleryForm.value.sourceCheckList_id;
|
|
588
609
|
this.queuealertlist(false);
|
|
@@ -708,6 +729,7 @@ export class GalleryComponent {
|
|
|
708
729
|
store.checked = false;
|
|
709
730
|
}
|
|
710
731
|
});
|
|
732
|
+
this.selectAll = this.mobileusageDataList.every((obj) => obj.checked);
|
|
711
733
|
if (this.select === 'queuealert') {
|
|
712
734
|
this.getzonetlist();
|
|
713
735
|
}
|
|
@@ -889,7 +911,7 @@ export class GalleryComponent {
|
|
|
889
911
|
this.select = 'storeopenandclose';
|
|
890
912
|
this.storeOpencloselist(false);
|
|
891
913
|
}
|
|
892
|
-
else if (this.
|
|
914
|
+
else if (this.boximageChecklist.includes(this.galleryForm.value.sourceCheckList_id)) {
|
|
893
915
|
this.select = this.galleryForm.value.sourceCheckList_id;
|
|
894
916
|
this.queuealertlist(false);
|
|
895
917
|
}
|
|
@@ -956,6 +978,10 @@ export class GalleryComponent {
|
|
|
956
978
|
next: (res) => {
|
|
957
979
|
if (res && res.code === 200) {
|
|
958
980
|
this.mobileusageDataList = res.data.data;
|
|
981
|
+
this.mobileusageDataList.forEach((store) => {
|
|
982
|
+
store.checked = true;
|
|
983
|
+
});
|
|
984
|
+
this.selectAll = this.mobileusageDataList.every((obj) => obj.checked);
|
|
959
985
|
this.zoneList = res.data.zones;
|
|
960
986
|
this.galleryForm.get('zoneList')?.setValue(res.data.selectedzones);
|
|
961
987
|
}
|
|
@@ -1085,6 +1111,8 @@ export class GalleryComponent {
|
|
|
1085
1111
|
next: (res) => {
|
|
1086
1112
|
if (res && res.code === 200) {
|
|
1087
1113
|
this.queueAlertView = res.data.data;
|
|
1114
|
+
this.zoneList = res.data.zones;
|
|
1115
|
+
this.galleryForm.get('zoneList')?.setValue(res.data.selectedzones);
|
|
1088
1116
|
this.queueAlertView.forEach((element) => {
|
|
1089
1117
|
element.dateString = dayjs(element.dateString).format('DD-MM-YYYY');
|
|
1090
1118
|
});
|
|
@@ -1398,7 +1426,8 @@ export class GalleryComponent {
|
|
|
1398
1426
|
this.select = 'storeopenandclose';
|
|
1399
1427
|
this.storeOpencloselist(false);
|
|
1400
1428
|
}
|
|
1401
|
-
else if (this.
|
|
1429
|
+
else if (this.boximageChecklist.includes(this.galleryForm.value.sourceCheckList_id)) {
|
|
1430
|
+
this.galleryForm.get('zoneList')?.setValue([]);
|
|
1402
1431
|
this.select = this.galleryForm.value.sourceCheckList_id;
|
|
1403
1432
|
this.queuealertlist(false);
|
|
1404
1433
|
}
|
|
@@ -1435,9 +1464,9 @@ export class GalleryComponent {
|
|
|
1435
1464
|
this.select = 'storeopenandclose';
|
|
1436
1465
|
this.storeOpencloseview();
|
|
1437
1466
|
}
|
|
1438
|
-
else if (this.
|
|
1467
|
+
else if (this.boximageChecklist.includes(this.galleryForm.value.sourceCheckList_id)) {
|
|
1439
1468
|
this.select = this.galleryForm.value.sourceCheckList_id;
|
|
1440
|
-
this.
|
|
1469
|
+
this.queuealertview();
|
|
1441
1470
|
}
|
|
1442
1471
|
else if (this.imageChecklist.includes(this.galleryForm.value.sourceCheckList_id)) {
|
|
1443
1472
|
this.select = this.galleryForm.value.sourceCheckList_id;
|
|
@@ -1933,7 +1962,7 @@ export class GalleryComponent {
|
|
|
1933
1962
|
if (this.galleryForm.value.sourceCheckList_id === 'storeopenandclose') {
|
|
1934
1963
|
this.storeOpencloseview();
|
|
1935
1964
|
}
|
|
1936
|
-
if (this.
|
|
1965
|
+
if (this.boximageChecklist.includes(this.galleryForm.value.sourceCheckList_id)) {
|
|
1937
1966
|
this.queuealertview();
|
|
1938
1967
|
}
|
|
1939
1968
|
else if (this.imageChecklist.includes(this.galleryForm.value.sourceCheckList_id)) {
|
|
@@ -1960,8 +1989,8 @@ export class GalleryComponent {
|
|
|
1960
1989
|
if (this.galleryForm.value.sourceCheckList_id === 'storeopenandclose') {
|
|
1961
1990
|
this.storeOpencloseview();
|
|
1962
1991
|
}
|
|
1963
|
-
else if (this.
|
|
1964
|
-
this.
|
|
1992
|
+
else if (this.boximageChecklist.includes(this.galleryForm.value.sourceCheckList_id)) {
|
|
1993
|
+
this.queuealertview();
|
|
1965
1994
|
}
|
|
1966
1995
|
else if (this.imageChecklist.includes(this.galleryForm.value.sourceCheckList_id)) {
|
|
1967
1996
|
this.getmobileUsageDataview();
|
|
@@ -2439,11 +2468,11 @@ export class GalleryComponent {
|
|
|
2439
2468
|
this.viewImage = data;
|
|
2440
2469
|
}
|
|
2441
2470
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GalleryComponent, deps: [{ token: i1.FormBuilder }, { token: i2.GlobalStateService }, { token: i3.TraxService }, { token: i0.ChangeDetectorRef }, { token: i4.NgbModal }, { token: i5.ActivatedRoute }, { token: i5.Router }, { token: i6.ToastService }, { token: i7.Location }, { token: i2.PageInfoService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2442
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: GalleryComponent, selector: "lib-gallery", host: { listeners: { "document:click": "onClick($event)" } }, viewQueries: [{ propertyName: "zoomPopup", first: true, predicate: ["zoomPopup"], descendants: true }], ngImport: i0, template: "<div class=\"gallery-card po\">\r\n <div class=\"header mb-4\">Gallery</div>\r\n\r\n <form [formGroup]=\"galleryForm\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <div class=\"row\">\r\n <div class=\"col-md-3 mb-3\">\r\n <div class=\"position-relative\">\r\n <span style=\"top: 20%;\" class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14 z-2\" style=\"min-width: 260px !important;\"\r\n type=\"text\" matInput ngxDaterangepickerMd [drops]=\"'down'\"\r\n [opens]=\"'right'\" [alwaysShowCalendars]=\"false\" [keepCalendarOpeningWithRange]=\"true\"\r\n [showCancel]=\"false\" autocomplete=\"off\" [(ngModel)]=\"selectedDateRange\"\r\n [ngModelOptions]=\"{standalone: true}\" (datesUpdated)=\"datechange($event)\" (click)=\"resetValidation()\" \r\n (startDateChanged)=\"onStartDateChange($event)\" [isCustomDate]=\"isCustomDate\" [autoApply]=\"true\" \r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n name=\"daterange\" [readonly]=\"true\" />\r\n </div>\r\n </div>\r\n <div class=\"col-md-2 mb-4\">\r\n <lib-reactive-select formControlName=\"type\" [idField]=\"'value'\" [nameField]=\"'label'\"\r\n [data]=\"type\" (itemChange)=\"typeChange($event)\" ></lib-reactive-select>\r\n </div>\r\n <div class=\"col-md-4 mb-4\">\r\n <lib-single-select [items]=\"checklists\" [multi]=\"false\" [searchField]=\"'checkListName'\" [idField]=\"'checkListName'\"\r\n (selected)=\"checklistNamechange($event,false)\" [selectedValues]=\"[{checkListName:galleryForm.get('checklistName')?.value}]\"></lib-single-select>\r\n </div> \r\n <div class=\"col-md-3 mb-4\">\r\n <lib-reactive-select formControlName=\"answerType\" [idField]=\"'value'\" [nameField]=\"'label'\"\r\n [data]=\"answerType\"></lib-reactive-select>\r\n </div>\r\n <div class=\"col-md-2 mb-4\">\r\n\r\n <lib-reactive-select formControlName=\"filtertype\" [idField]=\"'value'\" [nameField]=\"'label'\"\r\n [data]=\"filtertype\" (itemChange)=\"filterChange($event)\" ></lib-reactive-select>\r\n\r\n </div>\r\n <div class=\"col-md-3 mb-4\" *ngIf=\"galleryForm.get('filtertype')?.value ==='Clusters'\">\r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(galleryForm.get('ClusterList')?.value?.length)\">\r\n Select cluster\r\n </div>\r\n <lib-group-select [items]=\"ClusterList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'groupName'\"\r\n [idField]=\"'groupName'\" (selected)=\"ongroupSelect($event)\"\r\n [selectedValues]=\"galleryForm.get('ClusterList')?.value\">\r\n </lib-group-select>\r\n </div>\r\n \r\n </div>\r\n <div class=\"col-md-3 mb-4\" *ngIf=\"galleryForm.get('filtertype')?.value ==='Teams'\">\r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(galleryForm.get('TeamsList')?.value?.length)\">\r\n Select Teams\r\n </div>\r\n <lib-group-select [items]=\"TeamsList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'teamName'\"\r\n [idField]=\"'teamName'\" (selected)=\"onTeamsSelect($event)\"\r\n [selectedValues]=\"galleryForm.get('TeamsList')?.value\">\r\n </lib-group-select>\r\n </div>\r\n \r\n </div>\r\n <div class=\"col-md-3 mb-4\" *ngIf=\"galleryForm.get('filtertype')?.value ==='Clusters'\">\r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(galleryForm.get('storeList')?.value?.length)\">\r\n Select Stores\r\n </div>\r\n <lib-stores-select [items]=\"storeList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'storeName'\"\r\n [idField]=\"'storeId'\" (selected)=\"onStoreSelect($event)\"\r\n [selectedValues]=\"galleryForm.get('storeList')?.value\"></lib-stores-select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-3 mb-4\" *ngIf=\"galleryForm.get('filtertype')?.value ==='Teams'\">\r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(galleryForm.get('userList')?.value?.length)\">\r\n Select users\r\n </div>\r\n <lib-stores-select [items]=\"userList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'userName'\"\r\n [idField]=\"'userName'\" (selected)=\"onUserSelect($event)\"\r\n [selectedValues]=\"galleryForm.get('userList')?.value\"></lib-stores-select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4 text-end\"> \r\n <div class=\"d-flex justify-content-end\"> \r\n <div class=\"me-5 w-100\" *ngIf=\"select == 'eyetest'\">\r\n <select class=\"form-select\" [(ngModel)]=\"category\" [ngModelOptions]=\"{standalone: true}\">\r\n <option value=\"all\">All</option>\r\n <option value=\"adults\">Adults</option>\r\n <option value=\"kids\">Kids</option>\r\n </select>\r\n </div>\r\n <div class=\"me-5 w-100\" *ngIf=\"select == 'cleaning'||select ==='scrum'\">\r\n <select class=\"form-select\" [(ngModel)]=\"category\" [ngModelOptions]=\"{standalone: true}\">\r\n <option value=\"all\">All</option>\r\n <option value=\"rejected\">Breached</option>\r\n <option value=\"approved\">Not-breached</option>\r\n </select>\r\n </div>\r\n <div class=\"me-5 w-100 text-start\" *ngIf=\"select == 'queuealert'\"> \r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(galleryForm.get('zoneList')?.value?.length)\" >\r\n Select Zone\r\n </div> \r\n <lib-stores-select [items]=\"zoneList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'value'\"\r\n [idField]=\"'key'\" (selected)=\"onzoneSelect($event)\"\r\n [selectedValues]=\"galleryForm.get('zoneList')?.value\"></lib-stores-select>\r\n </div>\r\n </div>\r\n <span class=\"me-4 mt-3\" *ngIf=\"showflag\"> \r\n <input formControlName=\"viewRedo\" change type=\"checkbox\" (click)=\"redoChanged($event)\"\r\n class=\"form-check-input cursor-pointer mt-1 me-2\" id=\"viewRedo\">\r\n <label class=\"checkbox-label\" for=\"viewRedo\">View Re-do\u2019s only</label>\r\n </span>\r\n <span class=\"me-3 mt-3\" *ngIf=\"showflag&&galleryForm.value.type=='checklist'\">\r\n \r\n \r\n <input formControlName=\"viewFlag\" change type=\"checkbox\" (click)=\"flagChanged($event)\"\r\n class=\"form-check-input cursor-pointer mt-1 me-2\" id=\"viewFlag\">\r\n <label class=\"checkbox-label\" for=\"viewFlag\">View flagged only</label>\r\n </span>\r\n <a (click)=\"onSubmit()\" type=\"submit\" class=\"btn btn-primary px-4 \"><span>Apply</span></a>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n \r\n\r\n </div>\r\n </form>\r\n</div>\r\n<div class=\"card my-2\">\r\n<div class=\"row main-container my-5 \">\r\n \r\n <div [ngClass]=\"showsidenav ? 'col-md-4 left-sidebar':'d-none'\" class=\"h-650px\">\r\n <div class=\"position-relative h-650px scroll-y\">\r\n <div class=\"card-body p-5\">\r\n <div class=\"checklist-left\">\r\n <div class=\"checklist-title\">{{checklistName}}</div>\r\n <div class=\"checklist-text\">{{checkListDescription}}</div>\r\n </div>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row mt-20\">\r\n <div class=\"col-lg-12 mt-20 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"w-50 h-300px\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title mt-0\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this checklist</div>\r\n </div>\r\n </div>\r\n </div>\r\n <section *ngIf=\"!noData && !loading\">\r\n\r\n <div *ngIf=\"select === 'custom'||select === 'task'\">\r\n <div class=\"text-end mt-10\">\r\n <!-- <button class=\"btn btn-outline w-25 me-3 btn-resize\" (click)=\"viewChecklists()\"> Reset </button> -->\r\n <button class=\"btn btn-outline w-25 me-3 btn-resize\" *ngIf=\"selectedSection.length>0||tempselectedSection.length>0\" (click)=\"onchecklistreset()\"> Reset </button>\r\n <button *ngIf=\"selectedSection.length>0||tempselectedSection.length>0\" class=\"btn btn-primary w-25 btn-resize\" (click)=\"selectsinglequestion()\">Apply</button>\r\n </div>\r\n <div class=\"my-6\" [ngClass]=\"selectedSection.length==0 ? 'view-all':'view-questions'\" style=\"cursor: pointer;\" (click)=\"onchecklistreset()\">\r\n View All Answers\r\n </div>\r\n <div class=\"mx-2\" *ngFor=\"let section of checklistData; let i=index;\">\r\n <div class=\"d-flex align-items-center justify-content-between mt-4\" style=\"cursor: pointer;\"\r\n (click)=\"accordian(i)\">\r\n <div class=\"fs-4 fw-bold section\" *ngIf=\"galleryForm.value.type=='checklist'\" >{{section.sectionName}}</div>\r\n <hr class=\"mx-2\">\r\n <svg class=\"cursor-pointer\" [ngClass]=\"{'rotate' : show !== i}\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"25\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div *ngIf=\"show===i\" class=\"question-left\">\r\n <div cdkDropList [cdkDropListData]=\"section.questions\">\r\n <div *ngFor=\"let question of section.questions;let j=index;\" class=\"d-flex my-2 q-btn\"\r\n cdkDrag>\r\n <input id=\"label\" [(ngModel)]=\"question.checked\" (click)=\"selectedQuestion($event,section,question)\" class=\"form-check-input cursor-pointer mt-2 me-4\" type=\"checkbox\" > \r\n <div class=\"editablecontent\" [ngClass]=\"question?.checked ? 'view-all':''\" style=\"cursor: pointer;\">\r\n {{question.qno}} . {{question.qname}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- </div> -->\r\n <div *ngIf=\"combinedChecklist.includes(select)\">\r\n <div class=\"text-end mt-10\">\r\n <button class=\"btn btn-outline w-25 me-3 btn-resize\" (click)=\"onreset()\"> Reset </button>\r\n <button class=\"btn btn-primary w-25 btn-resize\" (click)=\"onview()\">Apply</button>\r\n </div>\r\n <div class=\"dropdownselect h-900px scroll-y\">\r\n <div class=\"d-flex justify-content-left \" [ngClass]=\"selectAll ? 'backgroundBorder':'withoutbackground'\">\r\n <input\r\n class=\"form-check-input cursor-pointer me-4\" type=\"checkbox\" [(ngModel)]=\"selectAll\"\r\n (click)=\"selectAllStore($event)\"> <span [ngClass]=\"selectAll ? 'usage-detection':'usage-text'\">Select All</span>\r\n </div>\r\n <!-- dropdownbg -->\r\n <div class=\"my-4\" *ngFor=\"let list of mobileusageDataList;let i=index\">\r\n <div (change)=\"updateCheck($event,list)\" [ngClass]=\"list.checked ? 'backgroundBorder':'withoutbackground'\">\r\n <input id=\"label{{i}}\" class=\"form-check-input cursor-pointer me-4\" type=\"checkbox\" [(ngModel)]=\"list.checked\">\r\n <label for=\"label{{i}}\" [ngClass]=\"list.checked ? 'usage-detection':'usage-text'\" >{{list?.storeName}}</label>\r\n <span class=\"badge badge-light-primary detectionright\" *ngIf=\"list.detection\">{{list.detection}} Detections</span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n </section>\r\n \r\n </div>\r\n\r\n\r\n\r\n \r\n\r\n <div *ngIf=\"showsidenav\" (click)=\"sidenav()\" class=\"backButtonright text-center pt-1 cursor-pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M11 17L6 12L11 7M18 17L13 12L18 7\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"showsidenav ? 'col-md-8 border border-bottom-0 border-top-0 border-left border-5 right-sidebar':'col-md-12'\" >\r\n <div class=\"position-relative \">\r\n <div class=\"card-header border-0 px-0 my-0\" *ngIf=\"(select === 'custom' || select === 'task'||select == 'cleaning'||select ==='scrum'||select ==='storeopenandclose') && !viewloading && !viewnoData\" >\r\n <h3></h3>\r\n <!-- Switch toggle -->\r\n <div class=\"card-toolbar\" *ngIf=\"!galleryForm.value.viewRedo\">\r\n <div class=\"position-relative cursor-pointer me-10\">\r\n <div class=\" btn btn-primary form-control no-text-transform\" (click)=\"exportDet($event)\">\r\n {{ exportLabel }} <!-- Bind label text here -->\r\n </div>\r\n <div *ngIf=\"exportShow\"\r\n class=\"card py-2 position-absolute productdrop top-10 w-150px end-0 z-1\">\r\n <ul class=\"list-unstyled mb-2\">\r\n <li class=\"cursor-pointer py-4 checkbox-label mx-2\" *ngIf=\"(select === 'custom' || select === 'task'||select ==='storeopenandclose')\" type=\"button\" (click)=\"setExportAsPPT('Export as PDF','pdf')\">\r\n Export as PDF\r\n </li>\r\n <li class=\" cursor-pointer checkbox-label py-4 mx-2\" *ngIf=\"(select === 'custom' || select === 'task'||select == 'cleaning'||select ==='scrum'||select ==='storeopenandclose')\" type=\"button\" (click)=\"setExportAsPPT('Export as CSV','csv')\">\r\n Export as CSV\r\n </li>\r\n <li *ngIf=\"selectedSection.length>0||select == 'cleaning'||select ==='scrum'||select ==='storeopenandclose'\" class=\" cursor-pointer checkbox-label py-4 mx-2\" type=\"button\" (click)=\"setExportAsPPT('Export as PPT','ppt')\">\r\n Export as PPT\r\n </li>\r\n <li *ngIf=\"selectedSection.length>0||select == 'cleaning'||select ==='scrum'||select ==='storeopenandclose'\" class=\"cursor-pointer checkbox-label py-4 mx-2\" type=\"button\" (click)=\"setExportAsPPT('Export as ZIP','zipfiles')\">\r\n Export as ZIP\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n <div class=\"card-body p-0\">\r\n <div>\r\n <div *ngIf=\"viewloading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"viewnoData\" class=\"row mt-20\">\r\n <div class=\"col-lg-12 mt-20 mb-3\">\r\n <div class=\"card-body mt-20 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src mt-5 w-40\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this checklist</div>\r\n </div>\r\n </div>\r\n </div>\r\n <section *ngIf=\"!viewloading && !viewnoData\">\r\n <div *ngIf=\"select==='custom'||select==='task' \">\r\n <div *ngIf=\"showsingle\" class=\"qa-heading m-3 mx-11\">{{this.selectedSection[0]?.questions[0]}}</div>\r\n <div *ngIf=\"showsingle&&showfilter\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap mx-10\">\r\n <li class=\"nav-item\" *ngFor=\"let item of answerFilter\">\r\n <a (click)=\"taskTab(item)\" [ngClass]=\"galleryForm.value.filter === item.key ? 'active' : ''\" class=\"nav-link cursor-pointer no-border me-3\">\r\n {{item.key}}<span class=\"mx-2 \" [ngClass]=\"galleryForm.value.filter === item.key ? 'badge-num-primary' :'badge-num-muted'\">{{item.count}}</span>\r\n </a>\r\n </li>\r\n \r\n </ul>\r\n \r\n </div>\r\n \r\n <div *ngFor=\"let checklist of viewChecklistsData?.checklistAnswers\">\r\n \r\n <div class=\"text-center\" *ngIf=\"clientData.logo&&clientData.logo!==''&&showmulti\">\r\n <img class=\"mt-5 mb-3 text-center iconsize\" src=\"{{clientData.logo}}\">\r\n </div>\r\n \r\n\r\n <div class=\"row px-10 mt-5\" *ngIf=\"showmulti\">\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Store Name:</h3>\r\n </div>\r\n <div class=\"col-md-9\">\r\n <p class=\"uni-subtitle\">{{checklist?.storeProfile?.storeName}} </p>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\" *ngIf=\"galleryForm.value.type==='checklist'\">Checklist Name:</h3>\r\n <h3 class=\"uni-title\" *ngIf=\"galleryForm.value.type==='task'\">Task Name:</h3>\r\n\r\n </div>\r\n <div class=\"col-md-9\">\r\n <p class=\"uni-subtitle\">{{checklist?.checklistInfo?.checklistName}}</p>\r\n </div>\r\n\r\n <ng-container>\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">State & Country :</h3>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <p class=\"uni-subtitle\">{{checklist?.storeProfile?.state}}\r\n {{checklist?.storeProfile?.Country}}</p>\r\n </div>\r\n <div class=\"col-md-2\">\r\n <h3 class=\"uni-title\">Duration :</h3>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <p class=\"uni-subtitle\"> {{checklist?.checklistInfo?.duration}}</p>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">No. of Questions :</h3>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <p class=\"uni-subtitle\">{{checklist?.checklistInfo?.noofQuestions}}</p>\r\n </div>\r\n <div class=\"col-md-2\">\r\n <h3 class=\"uni-title\">Date :</h3>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <p class=\"uni-subtitle\"> {{checklist?.checklistInfo?.date}}</p>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Submitted By :</h3>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <p class=\"uni-subtitle\">{{checklist?.checklistInfo?.submittedBy}}</p>\r\n </div>\r\n <div class=\"col-md-2\">\r\n <h3 class=\"uni-title\">Time :</h3>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <p class=\"uni-subtitle\"> {{checklist?.checklistInfo?.time}}</p>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n \r\n\r\n <div class=\"row px-10\" >\r\n\r\n <div *ngFor=\"let questionlist of checklist.questionAnswer\">\r\n <div class=\"qa-bodrer my-5\" *ngFor=\"let question of questionlist.questions\">\r\n <div class=\"row\" *ngIf=\"question.redo||question.redo===false\">\r\n <div class=\"view-detail col-12 text-end cursor-pointer\" (click)=\"ViewInDetails(question,checklist?.checklistInfo,checklist?.storeProfile,questionlist)\">\r\n View in detail \r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M15 10.8333V15.8333C15 16.2754 14.8244 16.6993 14.5118 17.0118C14.1993 17.3244 13.7754 17.5 13.3333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V6.66667C2.5 6.22464 2.67559 5.80072 2.98816 5.48816C3.30072 5.17559 3.72464 5 4.16667 5H9.16667M12.5 2.5H17.5M17.5 2.5V7.5M17.5 2.5L8.33333 11.6667\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n \r\n <div class=\"row w-100 m-3\" *ngIf=\"showsingle\">\r\n <div class=\"col-md-4 text-title\">\r\n {{checklist?.storeProfile?.storeName}}\r\n </div>\r\n <div class=\"col-md-8 text-end title-description\">\r\n Submitted by : {{checklist?.checklistInfo?.submittedBy}} On : {{checklist?.checklistInfo?.date}} {{checklist?.checklistInfo?.time}}\r\n </div>\r\n </div>\r\n <ul>\r\n <li *ngIf=\"showmulti\" class=\"qa-heading\">{{question?.qno}}. {{question?.qname}}</li>\r\n <div class=\"Partially my-3 px-5\" *ngIf=\"question?.answerType==='descriptive'\">\r\n <div *ngFor=\"let item of question.userAnswer\">\r\n <div class=\"col-md-6\" *ngIf=\"question.questionReferenceImage!==''&&galleryForm.value.type=='checklist'&&question.questionReferenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div *ngIf=\"question.questionReferenceImage&&question.questionReferenceImage.length>0&&galleryForm.value.type=='task'&&question.questionReferenceImage[0] !== ''\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.questionReferenceImage\">\r\n <div *ngIf=\"item&&item!=''&&item!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n <span class=\"mt-2\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">{{item.answer}}</span>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"Partially my-3 px-5\" *ngIf=\"question?.answerType==='linearscale'\">\r\n <div *ngFor=\"let item of question.userAnswer\">\r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&question.questionReferenceImage!==''&&question.questionReferenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div *ngIf=\"question.questionReferenceImage&&question.questionReferenceImage.length>0&&galleryForm.value.type=='task'&&question.questionReferenceImage[0] !== ''\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.questionReferenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <!-- <br> -->\r\n <span class=\"mt-4\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">{{item.answer}}</span>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n </div>\r\n <div class=\"Partially my-3 px-5\" *ngIf=\"question?.answerType==='time'\">\r\n <div *ngFor=\"let item of question.userAnswer\">\r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&question.questionReferenceImage!==''&&question.questionReferenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div *ngIf=\"question.questionReferenceImage&&question.questionReferenceImage.length>0&&galleryForm.value.type=='task'&&question.questionReferenceImage[0] !== ''\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.questionReferenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <br>\r\n <span class=\"mt-4\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">{{item.answer}}</span>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <div class=\"Partially my-3 px-5\" *ngIf=\"question?.answerType==='date'\">\r\n <div *ngFor=\"let item of question.userAnswer\">\r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&question.questionReferenceImage!==''&&question.questionReferenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div *ngIf=\"question.questionReferenceImage&&question.questionReferenceImage.length>0&&galleryForm.value.type=='task'&&question.questionReferenceImage[0] !== ''\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.questionReferenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <br>\r\n <span class=\"mt-4\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">{{item.answer}}</span>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n <div class=\"Partially my-3 px-5\" *ngIf=\"question?.answerType==='yes/no'\">\r\n <div *ngFor=\"let item of question.userAnswer\">\r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&question.questionReferenceImage!==''&&question.questionReferenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <br *ngIf=\"galleryForm.value.type=='checklist'&&question.questionReferenceImage!==''&&question.questionReferenceImage!=null\">\r\n <div *ngIf=\"question.questionReferenceImage&&question.questionReferenceImage.length>0&&galleryForm.value.type=='task'&&question.questionReferenceImage[0] !== ''\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.questionReferenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <span class=\"mt-4\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">{{item.answer}}</span>\r\n <div class=\"row\" *ngIf=\"item.validation&&item.validationAnswer!=''\">\r\n <div class=\"col-md-6\" *ngIf=\"item.referenceImage!==''\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.referenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"title-ref my-3\" *ngIf=\"item.validationType=='Capture Image'||item.validationType=='Capture Video'\">Validation Answer</div>\r\n <img class=\"img-logo\" *ngIf=\"item.validationType=='Capture Image'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"\r\n alt=\"\">\r\n <video controls class=\"recap-img p-3\" *ngIf=\"item.validationType=='Capture Video'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"></video>\r\n </div>\r\n <span class=\"remarksTxt\" *ngIf=\"item.validationType=='Descriptive Answer'\">Validation Answer :{{item.validationAnswer}}</span>\r\n </div>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n </div> \r\n\r\n\r\n\r\n <div class=\"Partially my-3 px-5\" *ngIf=\"question?.answerType==='multiplechoicesingle'\">\r\n \r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&question.questionReferenceImage!=null&&question.questionReferenceImage!==''&&question.questionReferenceImage!==undefined\">\r\n <div class=\"title-ref my-3\">Reference Image</div> \r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n \r\n <div *ngIf=\"question.questionReferenceImage&&question.questionReferenceImage.length>0&&galleryForm.value.type=='task'&&question.questionReferenceImage[0] !== ''\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.questionReferenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <div *ngFor=\"let item of question.userAnswer\">\r\n <span class=\"mt-2\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">{{item.answer}}</span>\r\n <div class=\"col-md-6\" *ngIf=\"item.referenceImage!=null&&item.referenceImage!==''&&galleryForm.value.type=='checklist'\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.referenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div *ngIf=\"item.referenceImage.length>0&&galleryForm.value.type=='task'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of item.referenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"item.validation&&item.validationAnswer!=''\">\r\n <div class=\"title-ref my-3\" *ngIf=\"item.validationType=='Capture Image'||item.validationType=='Capture Video'\">Validation Answer</div>\r\n <img class=\"img-logo\" *ngIf=\"item.validationType=='Capture Image'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"\r\n alt=\"\">\r\n\r\n <video controls class=\"recap-img p-3\" *ngIf=\"item.validationType=='Capture Video'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"></video>\r\n \r\n <span *ngIf=\"item.validationType=='Descriptive Answer'\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">Validation Answer : {{item.validationAnswer}}</span>\r\n </div>\r\n </div>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n <div class=\"row px-5\" *ngIf=\"question?.answerType==='image'\">\r\n <div *ngFor=\"let answer of question.answers\">\r\n <div class=\"row\" *ngIf=\"answer.referenceImage.length>0&&galleryForm.value.type=='task'\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of answer.referenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&answer.referenceImage!==''&&answer.referenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{answer.referenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngFor=\"let item of question.userAnswer\">\r\n <!-- <div class=\"col-md-6\" *ngIf=\"item.referenceImage!=null&&item.referenceImage!==''&&galleryForm.value.type=='checklist'\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.referenceImage}}\"\r\n alt=\"\">\r\n </div> \r\n <div *ngIf=\"item.referenceImage.length>0&&galleryForm.value.type=='task'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of item.referenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n </div> -->\r\n <div class=\"col-md-6\">\r\n <div class=\"title-ref my-3\">Uploaded Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.answer}}\"\r\n alt=\"\">\r\n </div>\r\n <div class=\"col-md-6 mt-2\" *ngIf=\"item.validation&&item.validationAnswer!=''\">\r\n <div class=\"title-ref my-3\" *ngIf=\"item.validationType=='Capture Image'||item.validationType=='Capture Video'\">Validation Answer</div>\r\n <img class=\"img-logo\" *ngIf=\"item.validationType=='Capture Image'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"\r\n alt=\"\">\r\n <video controls class=\"recap-img p-3\" *ngIf=\"item.validationType=='Capture Video'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"></video>\r\n <span *ngIf=\"item.validationType=='Descriptive Answer'\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">Validation Answer : {{item.validationAnswer}}</span>\r\n </div>\r\n </div>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n\r\n\r\n\r\n <div class=\"row px-5\" *ngIf=\"question?.answerType==='multiplechoicemultiple'\">\r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&question.questionReferenceImage!==''&&question.questionReferenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div class=\"col-md-6\"></div>\r\n <div *ngIf=\"question.questionReferenceImage&&question.questionReferenceImage.length>0&&galleryForm.value.type=='task'&&question.questionReferenceImage[0] !== ''\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.questionReferenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <div class=\"Partially my-3 px-5\" *ngFor=\"let item of question.userAnswer\">\r\n <span class=\"mt-3\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">{{item.answer}}</span>\r\n <div class=\"col-md-6\" *ngIf=\"item.referenceImage!=null&&item.referenceImage!==''&&galleryForm.value.type=='checklist'\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.referenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div *ngIf=\"item.referenceImage.length>0&&galleryForm.value.type=='task'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of item.referenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6 mt-2\" *ngIf=\"item.validation&&item.validationAnswer&&item.validationAnswer!=''\">\r\n <div class=\"title-ref my-3\" *ngIf=\"item.validationType=='Capture Image'||item.validationType=='Capture Video'\">Validation Answer</div>\r\n <img class=\"img-logo\" *ngIf=\"item.validationType=='Capture Image'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"\r\n alt=\"\">\r\n <video controls class=\"recap-img p-3\" *ngIf=\"item.validationType=='Capture Video'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"></video>\r\n <span *ngIf=\"item.validationType=='Descriptive Answer'\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">Validation Answer : {{item.validationAnswer}}</span>\r\n </div>\r\n </div>\r\n \r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n\r\n\r\n\r\n\r\n <div class=\"row px-5\" *ngIf=\"question?.answerType==='descriptiveImage'\">\r\n <div *ngFor=\"let answer of question.answers\">\r\n <div class=\"row\" *ngIf=\"answer.referenceImage.length>0&&galleryForm.value.type=='task'\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of answer.referenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&answer.referenceImage!==''&&answer.referenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{answer.referenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngFor=\"let item of question.userAnswer\">\r\n <!-- <div class=\"col-md-6\" *ngIf=\"item.referenceImage!=null&&item.referenceImage!==''&&galleryForm.value.type=='checklist'\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.referenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div *ngIf=\"item.referenceImage.length>0&&galleryForm.value.type=='task'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of item.referenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n \r\n </div> -->\r\n <div class=\"col-md-6\">\r\n <div class=\"title-ref my-3\">Uploaded Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.answer}}\"\r\n alt=\"\">\r\n </div>\r\n <div class=\"col-md-6 mt-3\" *ngIf=\"item.validation&&item.validationAnswer!=''\">\r\n <div class=\"title-ref my-3\" *ngIf=\"item.validationType=='Capture Image'||item.validationType=='Capture Video'\">Validation Answer</div>\r\n <img class=\"img-logo\" *ngIf=\"item.validationType=='Capture Image'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"\r\n alt=\"\">\r\n <video controls class=\"recap-img p-3\" *ngIf=\"item.validationType=='Capture Video'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"></video>\r\n <span [ngClass]=\"item.sopFlag ? 'flagclour':''\" *ngIf=\"item.validationType=='Descriptive Answer'\">Validation Answer : {{item.validationAnswer}}</span>\r\n </div>\r\n </div>\r\n \r\n <div class=\"Partially my-3 px-5\" *ngIf=\"question.remarks!=''\">{{question.remarks}}</div>\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n <div class=\"row px-5\" *ngIf=\"question?.answerType==='video'\">\r\n <div *ngIf=\"question.questionReferenceImage&&question.questionReferenceImage.length>0&&galleryForm.value.type=='task'&&question.questionReferenceImage[0] !== ''\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.questionReferenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&question.questionReferenceImage!==''&&question.questionReferenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.userAnswer\">\r\n <div class=\"title-ref my-3\">Uploaded Video</div>\r\n\r\n <video controls class=\"recap-img p-3\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.answer}}\">\r\n </video>\r\n </div>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n\r\n\r\n\r\n\r\n <div class=\"row px-5\" *ngIf=\"question?.answerType==='multipleImage'\">\r\n <div *ngFor=\"let answer of question.answers\">\r\n <div class=\"row\" *ngIf=\"answer.referenceImage.length>0&&galleryForm.value.type=='task'\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of answer.referenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&answer.referenceImage!==''&&answer.referenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{answer.referenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.userAnswer\">\r\n <div class=\"title-ref my-3\">Uploaded Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.answer}}\"\r\n alt=\"\">\r\n <div class=\"col-md-6\" *ngIf=\"item.validation&&item.validationAnswer!=''\">\r\n <div class=\"title-ref my-3\" *ngIf=\"item.validationType=='Capture Image'||item.validationType=='Capture Video'\">Validation Answer</div>\r\n <img class=\"img-logo\" *ngIf=\"item.validationType=='Capture Image'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"\r\n alt=\"\">\r\n <video controls class=\"recap-img p-3\" *ngIf=\"item.validationType=='Capture Video'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"></video>\r\n <span *ngIf=\"item.validationType=='Descriptive Answer'\">Validation Answer : {{item.validationAnswer}}</span>\r\n </div>\r\n </div>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n \r\n </ul>\r\n <div class=\"row\">\r\n <div class=\"col-md-6 text-start\"> \r\n <!-- <button class=\"btn btn-secondary rounded-pill m-0 p-2\" *ngIf=\"question?.linkType&&question?.linkquestionenabled\">Linked to Question {{question.parentQuestion}}</button> -->\r\n </div>\r\n <div class=\"col-md-6 text-end\">\r\n <button class=\"btn btn-sm btn-default border-default me-3\" [disabled]=\"question.redo\" *ngIf=\"checktodayDate(checklist?.checklistInfo?.date)&&(gs.userAccess | async)?.userType !== 'tango'&&!checklist?.checklistInfo?.approvalStatus&&(gs.userAccess | async)?.TangoTrax_checklist_isEdit&&this.galleryForm.value.type =='checklist'\" (click)=\"addTask('redo',question,checklist?.checklistInfo,checklist?.storeProfile,questionlist)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_6004_11734)\">\r\n <path d=\"M19.1693 3.33331V8.33332M19.1693 8.33332H14.1693M19.1693 8.33332L15.3026 4.69998C14.407 3.80391 13.299 3.14932 12.0819 2.79729C10.8649 2.44527 9.57853 2.40727 8.34284 2.68686C7.10716 2.96645 5.96244 3.55451 5.01549 4.39616C4.06855 5.23782 3.35024 6.30564 2.9276 7.49998M0.835938 16.6666V11.6666M0.835938 11.6666H5.83594M0.835938 11.6666L4.7026 15.3C5.59823 16.1961 6.70625 16.8506 7.92328 17.2027C9.14031 17.5547 10.4267 17.5927 11.6624 17.3131C12.898 17.0335 14.0428 16.4455 14.9897 15.6038C15.9367 14.7621 16.655 13.6943 17.0776 12.5\" stroke=\"#344054\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_6004_11734\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <span class=\"ms-2 font-defult-task\">Redo</span>\r\n </button>\r\n <button class=\"btn btn-sm btn-default border-default me-3\" [disabled]=\"question.redo\" *ngIf=\"checktodayDate(checklist?.checklistInfo?.date)&&(gs.userAccess | async)?.userType !== 'tango'&&!checklist?.checklistInfo?.approvalStatus&&(gs.userAccess | async)?.TangoTrax_Task_isEdit&&this.galleryForm.value.type=='task'\" (click)=\"addTask('redo',question,checklist?.checklistInfo,checklist?.storeProfile,questionlist)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_6004_11734)\">\r\n <path d=\"M19.1693 3.33331V8.33332M19.1693 8.33332H14.1693M19.1693 8.33332L15.3026 4.69998C14.407 3.80391 13.299 3.14932 12.0819 2.79729C10.8649 2.44527 9.57853 2.40727 8.34284 2.68686C7.10716 2.96645 5.96244 3.55451 5.01549 4.39616C4.06855 5.23782 3.35024 6.30564 2.9276 7.49998M0.835938 16.6666V11.6666M0.835938 11.6666H5.83594M0.835938 11.6666L4.7026 15.3C5.59823 16.1961 6.70625 16.8506 7.92328 17.2027C9.14031 17.5547 10.4267 17.5927 11.6624 17.3131C12.898 17.0335 14.0428 16.4455 14.9897 15.6038C15.9367 14.7621 16.655 13.6943 17.0776 12.5\" stroke=\"#344054\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_6004_11734\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <span class=\"ms-2 font-defult-task\">Redo</span>\r\n </button>\r\n\r\n <button class=\"btn btn-sm border-val1\" *ngIf=\"!question.task&&!question.taskId&&this.galleryForm.value.type=='checklist'&&(gs.userAccess | async)?.userType !== 'tango'&&!checklist?.checklistInfo?.approvalStatus&& (gs.userAccess | async)?.TangoTrax_Task_isEdit\" (click)=\"addTask('createtask',question,checklist?.checklistInfo,checklist?.storeProfile,questionlist)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M11.6693 1.66675H5.0026C4.56058 1.66675 4.13665 1.84234 3.82409 2.1549C3.51153 2.46746 3.33594 2.89139 3.33594 3.33341V16.6667C3.33594 17.1088 3.51153 17.5327 3.82409 17.8453C4.13665 18.1578 4.56058 18.3334 5.0026 18.3334H15.0026C15.4446 18.3334 15.8686 18.1578 16.1811 17.8453C16.4937 17.5327 16.6693 17.1088 16.6693 16.6667V6.66675M11.6693 1.66675L16.6693 6.66675M11.6693 1.66675V6.66675H16.6693M10.0026 15.0001V10.0001M7.5026 12.5001H12.5026\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2 font-task\">Create Task</span>\r\n </button>\r\n <button *ngIf=\"question.task&&question.taskId &&this.galleryForm.value.type!=='task'\" class=\"btn btn-sm border-val1\" (click)=\"taskredirect(question,checklist?.storeProfile,checklist?.checklistInfo)\"><span class=\"font-task\">View Task</span></button>\r\n\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"px-10 my-5\" *ngIf=\"imageChecklist.includes(select)\">\r\n <div class=\"text-center\" *ngIf=\"clientData.logo&&clientData.logo!==''\">\r\n <img class=\"mt-5 mb-3 text-center iconsize\" src=\"{{clientData.logo}}\">\r\n </div>\r\n <div>\r\n <h2>Checklist Name : {{this.checklistName}}</h2>\r\n </div>\r\n <div class=\"qa-bodrer my-3 mt-5\" *ngFor=\"let item of mobileusageData\">\r\n <ul class=\"row w-100\">\r\n <li class=\"qa-heading\">\r\n {{item.storeName}}\r\n </li>\r\n <div class=\"row\">\r\n <div class=\"col-md-12 my-2\" *ngFor=\"let detection of item.imageUrl\">\r\n \r\n <div class=\"\">\r\n <img class=\"w-100 h-500px rounded-top\"\r\n src=\"{{environment.TraxAIchecklistCDN}}{{detection}}\" alt=\"\">\r\n <div class=\"text-center mt-3\" > {{this.checklistName}}</div> \r\n </div>\r\n </div>\r\n </div>\r\n </ul>\r\n </div>\r\n\r\n </div>\r\n <div class=\"px-10 my-5\" *ngIf=\"videoChecklist.includes(select)\">\r\n <div class=\"text-center\" *ngIf=\"clientData.logo&&clientData.logo!==''\">\r\n <img class=\"mt-5 mb-3 text-center iconsize\" src=\"{{clientData.logo}}\">\r\n </div>\r\n \r\n <div class=\"my-3 mt-5\" *ngFor=\"let item of customerunattendedData\">\r\n <div class=\"row px-10 mt-5\">\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Checklist Name:</h3>\r\n </div>\r\n <div class=\"col-md-9\">\r\n <p class=\"uni-subtitle\">: {{this.checklistName}} </p>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Store Name</h3>\r\n </div>\r\n <div class=\"col-md-9\">\r\n <p class=\"uni-subtitle\">: {{item.storeName}}</p>\r\n </div>\r\n </div> \r\n <ul class=\"row w-100 margin-top-side\">\r\n <li class=\"qa-heading\">\r\n \r\n </li>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\" *ngFor=\"let detection of item.imagesData\">\r\n <div class=\"row px-10 mt-5 margin-left-side\" *ngIf=\"select!='suspiciousactivity'\">\r\n <div class=\"col-md-3\" *ngIf=\"detection?.Answer\">\r\n <h3 class=\"uni-title\">Detection Status</h3>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"detection?.Answer\">\r\n <p class=\"uni-subtitle\">:<span class=\"ms-3 badge badge-light-danger\" *ngIf=\"detection?.Answer==='rejected'\">Breached</span>\r\n <span class=\"ms-3 badge badge-light-success\" *ngIf=\"detection?.Answer==='approved'\">Not-breached</span> </p>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Date</h3>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <p class=\"uni-subtitle\">: {{detection.date|date:'dd-MM-yyyy' }}</p>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"detection?.configTime\">\r\n <h3 class=\"uni-title\">Configured Time</h3>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"detection?.configTime\">\r\n <p class=\"uni-subtitle\">: {{detection.configTime }}</p>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"detection?.duration\">\r\n <h3 class=\"uni-title\">Duration</h3>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"detection?.duration\">\r\n <p class=\"uni-subtitle\">: {{detection.duration }} Mins</p>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"detection?.downTime\">\r\n <h3 class=\"uni-title\">Downtime</h3>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"detection?.downTime\">\r\n <p class=\"uni-subtitle\">: {{detection.downTime }} Mins <span ngbTooltip=\"Downtime may result in inaccurate data\" placement=\"top\" container=\"body\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"16\" viewBox=\"0 0 15 16\" fill=\"none\">\r\n <path d=\"M7.66667 5.33203V7.9987M7.66667 10.6654H7.67333M14.3333 7.9987C14.3333 11.6806 11.3486 14.6654 7.66667 14.6654C3.98477 14.6654 1 11.6806 1 7.9987C1 4.3168 3.98477 1.33203 7.66667 1.33203C11.3486 1.33203 14.3333 4.3168 14.3333 7.9987Z\" stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span></p>\r\n </div>\r\n </div> \r\n <div class=\"card-header border-0 min-h-45px px-0 my-0\">\r\n <h3 class=\"card-title\">\r\n <!-- <span class=\"me-3 store-title\">{{item.storeName}}</span> -->\r\n <span class=\"ms-2 badge badge-light-default\" *ngIf=\"detection?.customer_id\">Cust ID : {{detection.customer_id}}</span>\r\n <span class=\"ms-2 badge badge-light-default\" *ngIf=\"detection?.queue_id\">Queue ID : {{detection.queue_id}}</span>\r\n <span class=\"ms-2 badge badge-light-default\" *ngIf=\"detection?.optum_id\">Optum ID : {{detection.optum_id}}</span>\r\n <!-- <span class=\"ms-2 badge badge-light-default\" *ngIf=\"detection?.date\">Date : {{detection.date|date:'dd-MM-yyyy' }}</span> -->\r\n <!-- <span class=\"ms-3 badge badge-light-default\" *ngIf=\"detection?.configTime\">Inspection time : {{detection.configTime}}</span> -->\r\n <span class=\"ms-3 badge badge-light-default\" *ngIf=\"detection?.temp_id\">TempId : {{detection.temp_id}}</span>\r\n <span class=\"ms-3 badge badge-light-default\" *ngIf=\"detection?.time_spend\">Timespend : {{detection.time_spend}}Mins</span> \r\n \r\n </h3>\r\n \r\n <!-- Switch toggle -->\r\n <div class=\"card-toolbar\">\r\n <div class=\"col-md-12 text-end\">\r\n <span class=\"ms-3 badge badge-light-default\" *ngIf=\"detection?.entry_time\">Entry time : {{detection.entry_time}}</span> \r\n <span class=\"ms-3 badge badge-light-default\" *ngIf=\"detection?.exit_time\">Exit time : {{detection.exit_time}}</span> \r\n <span class=\"ms-3 badge badge-light-success\" *ngIf=\"detection?.adherence_rate\">Adherence Rate : {{detection.adherence_rate}}</span>\r\n <span class=\"ms-3 badge badge-light-primary text-capitalize\" *ngIf=\"detection?.category\"> {{detection.category}}</span>\r\n <span class=\"ms-3 badge badge-light-default\" *ngIf=\"detection?.customer_entry_time\">Entry time : {{detection.customer_entry_time}}</span>\r\n <span class=\"ms-3 badge badge-light-default\" *ngIf=\"detection?.customer_exit_time\">Exit time : {{detection.customer_exit_time}}</span> \r\n \r\n \r\n </div>\r\n </div>\r\n </div>\r\n \r\n \r\n <div class=\"my-0\" *ngIf=\"select !='eyetest'\">\r\n <video controls class=\"w-100 h-450px rounded-top\"\r\n src=\"{{environment.TraxAIchecklistCDN}}{{detection.video_path}}\" alt=\"\"> \r\n </video> \r\n </div>\r\n <div class=\"my-0\" *ngIf=\"select ==='eyetest'\">\r\n <video controls class=\"w-100 h-450px rounded-top\"\r\n src=\"{{environment.EyeTestCDN}}{{detection.video_path}}\" alt=\"\"> \r\n </video> \r\n </div>\r\n </div>\r\n </div>\r\n </ul>\r\n </div>\r\n\r\n </div>\r\n <div *ngIf=\"select ==='storeopenandclose'\">\r\n <div class=\"text-center\" *ngIf=\"clientData.logo&&clientData.logo!==''\">\r\n <img class=\"mt-5 mb-3 text-center iconsize\" src=\"{{clientData.logo}}\">\r\n </div>\r\n <div class=\"row px-10 mt-5\">\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Checklist Name:</h3>\r\n </div>\r\n <div class=\"col-md-9\">\r\n <p class=\"uni-subtitle\">: {{this.checklistName}} </p>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 margin-top-side\" *ngFor=\"let store of storeOpencloseView\">\r\n <div class=\" mx-8 my-8\" *ngFor=\"let item of store.imagesData\">\r\n <div class=\"row px-10 mt-5 margin-left-side \">\r\n <div class=\"col-md-3\" *ngIf=\"item?.buffer_open\">\r\n <h3 class=\"uni-title\">Buffer for Open Time :</h3>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"item?.buffer_open\">\r\n <p class=\"uni-subtitle\">: {{item.buffer_open }}</p>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"item?.buffer_close\">\r\n <h3 class=\"uni-title\">Buffer for Close Time :</h3>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"item?.buffer_close\">\r\n <p class=\"uni-subtitle\">: {{item.buffer_close }}</p>\r\n </div>\r\n <div class=\"col-md-3\" >\r\n <h3 class=\"uni-title\">Detection Status</h3>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"item?.Flag\">\r\n <p class=\"uni-subtitle\">:<span class=\"ms-3 badge badge-light-danger\" *ngIf=\"item?.Flag\">Breached</span>\r\n <span class=\"ms-3 badge badge-light-success\" *ngIf=\"!item?.Flag\">Not-breached</span> </p>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Date</h3>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <p class=\"uni-subtitle\">: {{item.date|date:'dd-MM-yyyy' }}</p>\r\n </div>\r\n </div> \r\n <div class=\"snapcard\">\r\n <div class=\"snapheader ms-6\">\r\n {{item.storeName}}\r\n </div>\r\n <div class=\"row m-0 w-100\">\r\n <div class=\"col-6\">\r\n <div class=\"img mt-4 px-3 position-relative\" *ngIf=\"!item.openTime\">\r\n <div class=\"preview align-items-center justify-content-center d-flex flex-column\">\r\n <span>\r\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"Group\">\r\n <path id=\"Vector\"\r\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n stroke=\"#667085\" stroke-width=\"2\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n \\\r\n <path id=\"Vector_2\"\r\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\r\n stroke=\"#667085\" stroke-width=\"2\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n </svg>\r\n \r\n </span>\r\n <span class=\"prvtxt mt-5 textclr\">Preview not\r\n available</span>\r\n <span class=\"refreshtxt mt-2 textclr\">The selected camera\r\n is not available at the moment.</span>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"item.openTime\">\r\n <img class=\"mx-1 img-opc\"\r\n src=\"{{environment.TraxOpenclosechecklistCDN}}{{item.storeId}}/{{item.dateString|date:'dd-MM-yyyy'}}/operation_snaps/open.jpeg\"\r\n alt=\"open close snap\">\r\n <div class=\"col-12\">\r\n <div class=\"d-flex flex-stack mx-1 mt-2\">\r\n <div>\r\n <div class=\"snaptext\">Opening Snap</div>\r\n <div class=\"snaptime\">{{item.openTime}} - {{item.date}}\r\n </div>\r\n </div>\r\n \r\n <span class=\"badge badge-light-primary snapbadge\"\r\n *ngIf=\"!item?.openTimeFlag\">On Time</span>\r\n <span class=\"badge badge-light-danger snapbadge\"\r\n *ngIf=\"item?.openTimeFlag\">Late Open</span>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n <div class=\"col-6\">\r\n <div class=\"img mt-4 px-3 position-relative\" *ngIf=\"!item.closeTime\">\r\n <div class=\"preview align-items-center justify-content-center d-flex flex-column\">\r\n <span>\r\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"Group\">\r\n <path id=\"Vector\"\r\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n stroke=\"#667085\" stroke-width=\"2\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n \\\r\n <path id=\"Vector_2\"\r\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\r\n stroke=\"#667085\" stroke-width=\"2\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n </svg>\r\n \r\n </span>\r\n <span class=\"prvtxt mt-5 textclr\">Preview not\r\n available</span>\r\n <span class=\"refreshtxt mt-2 textclr\">The selected camera\r\n is not available at the moment.</span>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"item.closeTime\">\r\n <img class=\"mx-1 img-opc\"\r\n src=\"{{environment.TraxOpenclosechecklistCDN}}{{item.storeId}}/{{item.dateString|date:'dd-MM-yyyy'}}/operation_snaps/close.jpeg\"\r\n alt=\"Checklist Video Player\">\r\n <div class=\"col-12\">\r\n <div class=\"d-flex flex-stack mx-1 \">\r\n <div>\r\n <div class=\"snaptext\">Closing Snap</div>\r\n <div class=\"snaptime\">{{item.closeTime}} - {{item.date}}\r\n </div>\r\n </div>\r\n <span class=\"badge badge-light-primary snapbadge\"\r\n *ngIf=\"!item?.closeTimeFlag\">On Time</span>\r\n <span class=\"badge badge-light-danger snapbadge\"\r\n *ngIf=\"item?.closeTimeFlag\">Early Close</span>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n \r\n\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n </div>\r\n <div *ngIf=\"select ==='queuealert'||select==='boxalert'||select==='suspiciousfootfall'\">\r\n <div class=\"text-center\" *ngIf=\"clientData.logo&&clientData.logo!==''\">\r\n <img class=\"mt-5 mb-3 text-center iconsize\" src=\"{{clientData.logo}}\">\r\n </div>\r\n <div class=\"col-md-12\" *ngFor=\"let store of queueAlertView\">\r\n <div class=\"row px-10 mt-5\" *ngIf=\"showmulti\">\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Store Name:</h3>\r\n </div>\r\n <div class=\"col-md-9\">\r\n <p class=\"uni-subtitle\">{{store?.storeName}} | {{store?.city}},{{store?.state}},{{store?.country}} </p>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Checklist Name:</h3>\r\n\r\n </div>\r\n <div class=\"col-md-9\">\r\n <p class=\"uni-subtitle\">{{checklistName}}</p>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"select==='boxalert'||select==='suspiciousfootfall'\">\r\n <h3 class=\"uni-title\">Description:</h3>\r\n </div>\r\n <div class=\"col-md-9\" *ngIf=\"select==='boxalert'||select==='suspiciousfootfall'\">\r\n <p class=\"uni-subtitle\">{{checkListDescription}}</p>\r\n </div>\r\n\r\n </div> \r\n <div class=\"row m-0 w-100 \" >\r\n <div class=\"col-4 mt-2\" *ngFor=\"let item of store.imagesData\">\r\n <div class=\"card bordercolor bg-secondary mt-8\">\r\n <div class=\"text-start ms-5 mt-2 mb-5\" >\r\n <div *ngIf=\"item.zone\">\r\n <span class=\"btn btn-secondary rounded-lg p-2\">{{item.zone}}</span>\r\n </div>\r\n \r\n <div class=\"mt-3 fw-semibold\">{{ item.date_timestamp }}</div>\r\n </div>\r\n <img class=\"w-100 h-250px rounded-bottom\" (click)=\"openModel(item)\"\r\n src=\"{{environment.TraxAIchecklistCDN}}{{item.path}}\" alt=\"\"> \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <lib-pagination *ngIf=\"!viewloading && !viewnoData\" [itemsPerPage]=\"limit\" [currentPage]=\"offset\" [totalItems]=\"totalCount\"\r\n [paginationSizes]='paginationSizes' [pageSize]=\"limit\"\r\n (pageChange)=\"onPageChangeview($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </section>\r\n </div>\r\n\r\n\r\n\r\n </div>\r\n <div *ngIf=\"!showsidenav\" (click)=\"sidenav()\" class=\"backButtonleft text-center pt-1 cursor-pointer\">\r\n <svg class=\"mt-2 ms-2\" xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n d=\"M9.72714 12.6365L13.3635 9.00013L9.72714 5.36377M4.63623 12.6365L8.27259 9.00013L4.63623 5.36377\"\r\n stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n</div> \r\n<div class=\"row card mx-0 p-3 \" *ngIf=\"checkAIchecklist()\">\r\n <div class=\"col-md-12 text-end\">\r\n<button class=\"btn btn-sm border-primary1\" [disabled]=\"!approvalStatus\" (click)=\"appoveChecklist()\">Approve\r\n</button>\r\n</div>\r\n</div>\r\n<ng-template #zoomPopup let-model>\r\n <div class=\"p-8\">\r\n <div class=\"modal-header pt-0 ps-1 pe-0\">\r\n <div>\r\n <div class=\"text-start mt-2\">\r\n <div *ngIf=\"viewImage.zone\">\r\n <span class=\"btn btn-secondary rounded-lg p-2\">{{viewImage.zone}}</span>\r\n </div>\r\n <div *ngIf=\"viewImage.emptyBoxCount\">\r\n <span >Empty shelves : {{viewImage.emptyBoxCount}}</span>\r\n </div>\r\n \r\n <div *ngIf=\"viewImage.entry_time\">\r\n <span >Entry Time : {{viewImage.entry_time}}</span>\r\n </div>\r\n <div *ngIf=\"viewImage.exit_time\">\r\n <span >Exit Time : {{viewImage.exit_time}}</span>\r\n </div>\r\n <div *ngIf=\"viewImage.temp_id\">\r\n <span >Temp Id : {{viewImage.temp_id}}</span>\r\n </div>\r\n <div *ngIf=\"viewImage.time_spend\">\r\n <span >Time Spend : {{viewImage.time_spend}} Mins</span>\r\n </div>\r\n \r\n <div class=\"mt-2\" *ngIf=\"viewImage.threshold&&viewImage.Dwelltime\"><p>If the queue exceeds {{viewImage.threshold}} people and wait time surpasses {{viewImage.Dwelltime}} minutes, an alert will be triggered</p></div>\r\n <div class=\"mt-3 fw-semibold\">{{ viewImage.date_timestamp }}</div>\r\n </div>\r\n \r\n </div>\r\n <div data-bs-dismiss=\"modal\">\r\n <!-- <span class=\"stream fw-semibold text-nowrap me-5\" *ngIf=\"camera.height && camera.width\"> Resolution: {{camera.height}} X {{camera.width}}</span> -->\r\n <span class=\"btn btn-sm btn-icon btn-active-color-primary me-0\" (click)=\"model.dismiss()\"><svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M15 5L5 15M5 5L15 15\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"viewImage.path\" class=\"mt-2 overflow-auto\">\r\n <img class=\"rounded-4 mt-5 img-popup-src w-100\" src=\"{{environment.TraxAIchecklistCDN}}{{viewImage.path}}\">\r\n </div>\r\n\r\n \r\n </div>\r\n\r\n</ng-template>", styles: [".gallery-card{padding:24px;border-radius:12px;background:#fff}.gallery-card .header{color:#101828;font-size:18px;font-weight:500;line-height:28px}.img{border-radius:10px;border:1px solid var(--Gray-500, #667085);background:var(--Gray-100, #F2F4F7);width:100%;height:230px}.prvtxt{color:var(--Gray-500, #667085);font-family:Inter;font-size:20px;font-style:normal;font-weight:700;line-height:20px;letter-spacing:-.4px}.refreshtxt{color:var(--Gray-400, #98A2B3);font-family:Inter;font-size:12px;font-style:normal;font-weight:500;line-height:18px}::ng-deep .applyBtn{display:none!important}::ng-deep .custom-height-modal .modal-dialog{max-height:80vh;height:80vh}::ng-deep .custom-height-modal .modal-content{overflow:auto;max-height:100%}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .md-drppicker.shown.drops-down-right{transform-origin:0 0;width:560px!important}:host::ng-deep .daterangepicker-input+.ngx-daterangepicker-material .applyBtn{display:none}:host::ng-deep .md-drppicker.drops-down-right.ltr.show-ranges.shown{top:65px!important}:host::ng-deep .md-drppicker.drops-down-right.ltr.double.show-ranges.shown{top:65px!important;right:-475px!important;left:unset!important;height:400px!important}:host::ng-deep .md-drppicker .btn{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}:host::ng-deep .md-drppicker .ranges ul li button{padding:12px 16px;width:160px;color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:20px;background:none;border:none;text-align:left;cursor:pointer}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important;border-radius:20px!important;color:var(--White, #FFF)!important;text-align:center!important;font-size:14px!important;font-weight:500!important;line-height:20px}:host::ng-deep .md-drppicker.ltr .ranges{float:left;margin-top:10px!important}:host::ng-deep .md-drppicker td.in-range{background:var(--Primary-50, #EAF8FF)}:host::ng-deep .md-drppicker .ranges ul li button.active{background:var(--Primary-50, #EAF8FF)!important;border-radius:8px!important;color:var(--Primary-700, #009BF3);font-size:14px!important;font-weight:500!important;line-height:20px!important}:host::ng-deep table th,:host::ng-deep table td{width:40px!important;height:40px!important;padding:10px 8px!important}:host::ng-deep .md-drppicker td.available.prev,:host::ng-deep .md-drppicker th.available.prev{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker td.available.next,:host::ng-deep .md-drppicker th.available.next{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep table th{border-bottom:0px solid var(--Gray-200, #EAECF0)!important;background:transparent!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:16px!important;font-weight:500!important;line-height:24px}:host::ng-deep .md-drppicker .btn.btn-default{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize;margin-right:10px!important}:host::ng-deep .md-drppicker td.available.invalid-date{text-decoration:line-through;pointer-events:none;color:#a9a9a9}:host::ng-deep .md-drppicker td.available.today:not(.invalid-date){text-decoration:unset;pointer-events:unset;color:unset}.btn-primary{line-height:18px!important}.checkbox-label{color:#344054;font-size:14px;font-weight:500;line-height:20px;cursor:pointer}.checklist-left .checklist-title{overflow:hidden;color:var(--Black, #101828)!important;text-overflow:ellipsis;font-size:18px!important;font-weight:500;line-height:28px}.checklist-left .checklist-text{overflow:hidden;color:var(--Black, #101828)!important;text-overflow:ellipsis;font-size:12px!important;font-weight:400!important;line-height:18px}.section{display:inline-block;width:600px;white-space:nowrap;outline:none!important;border:none!important;box-shadow:none!important;overflow:hidden!important;text-overflow:ellipsis!important;color:var(--Black, #101828)!important;font-size:16px!important;font-weight:500!important}.card hr{width:-webkit-fill-available}.editablecontent{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:400!important;line-height:24px}.rotate{transform:rotate(180deg);transition:1s}.question-left{color:var(--Gray-700, #344054)!important;font-size:16px;font-weight:400;line-height:24px}.view-all{padding:12px!important;border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-500, #33B5FF)!important;font-size:16px!important;font-weight:600!important;line-height:24px;text-decoration-line:underline!important}.view-questions{padding:12px!important;border-radius:6px!important;color:var(--Primary-500, #33B5FF)!important;font-size:16px!important;font-weight:600!important;line-height:24px;text-decoration-line:underline!important}.iconsize{width:110px;height:110px}.margin-left-side{margin-left:-35px}.margin-top-side{margin-top:-15px}input[type=checkbox]{width:16px!important;height:16px!important;margin:0;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-300, #D0D5DD);box-shadow:none;font-size:.8em;text-align:center;line-height:1em;background:#fff}input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF);background-color:var(--primary-50, #EAF8FF)}input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.5em;padding-left:0!important;padding-top:8px;padding-right:5px}.uni-title{color:#000!important;font-size:18px!important;font-weight:600!important;line-height:28px}.uni-subtitle{color:#000!important;font-size:18px!important;font-weight:400!important;line-height:28px}.qa-heading{color:var(--Black, #101828)!important;font-size:18px!important;font-weight:700!important;line-height:28px;list-style:none}.qa-bodrer{padding:16px!important;border-radius:8px!important;border:1px solid var(--Gray-200, #EAECF0)!important;background:var(--text-primary, #FFF)!important;box-shadow:0 1px 3px #1018281a,0 1px 2px #1018280f!important}.title-ref{color:var(--Gray-900, #101828)!important;font-size:16px!important;font-weight:400!important;line-height:24px}.btn-outline-primary{border-radius:8px!important;border:1px solid var(--Primary-500, #33B5FF)!important;background:var(--Primary-50, #EAF8FF)!important;box-shadow:0 1px 2px #1018280d!important;padding:calc(.7rem + 0px) calc(1.5rem + 1px)!important}.Partially{color:#000;font-size:18px!important;font-style:italic!important;font-weight:500;line-height:28px}.task-remarks{color:#000!important;font-size:18px!important;font-weight:400!important;line-height:28px}.backButtonright{border-radius:1000px!important;background:var(--text-primary, #FFF)!important;padding:12px!important;box-shadow:0 12px 16px -4px #10182814,0 4px 6px -2px #10182808!important;box-shadow:0 8.727px 11.636px -2.909px #10182814,0 2.909px 4.364px -1.455px #10182808!important;position:absolute;top:30px;right:-10px;z-index:0}.backButtonleft{border-radius:1000px!important;background:#fff;padding:14px!important;border:var(--Gray-300, #D0D5DD);box-shadow:0 8.727px 11.636px -2.909px #10182814,0 2.909px 4.364px -1.455px #10182808;position:absolute;top:30px;left:-20px;z-index:5}img.img-logo{width:100%;height:400px!important}.recap-img{width:100%;height:400px;object-fit:cover!important}.img-src{width:30%!important;height:20%!important}.dropdownselect{padding:20px 10px}.dropdownbg{width:Fill(372px) px;height:Hug(40px) px;padding:8px 16px;gap:0px;border-radius:6px 0 0;justify-content:space-between;opacity:0px;background:#eaf8ff}.detectionright{color:var(--Primary-700, #009BF3)!important;text-align:center;font-size:14px!important;font-weight:500;line-height:14px;float:right!important;mix-blend-mode:multiply}.backgroundBorder{background:#eaf8ff!important;color:#00a3ff!important;padding:12px;border-radius:8px;font-weight:500;line-height:10px}.withoutbackground{padding:8px;font-weight:500;line-height:10px}.snapcard{display:flex;padding:16px;flex-direction:column;align-items:flex-start;gap:16px;align-self:stretch;border-radius:8px;border:1px solid var(--Gray-200, #EAECF0);background:var(--White, #FFF);box-shadow:0 1px 3px #1018281a,0 1px 2px #1018280f}.snapheader{color:var(--Black, #101828);font-size:16px;font-style:normal;font-weight:600;line-height:24px}.snaptext{color:var(--Gray-900, #101828);font-size:16px!important;font-style:normal;font-weight:600!important;line-height:24px}.snaptime{color:var(--Gray-900, #101828);font-size:12px!important;font-style:normal;font-weight:500!important;line-height:22px}.snapbadge{text-align:center;font-size:14px!important;font-style:normal;font-weight:500!important;line-height:20px}.btn-resize{font-size:13px!important;height:29px!important;line-height:11px!important;padding:1px!important}.preview{position:absolute;top:30%;left:14%}.w-25{width:17%!important}.w-40{width:40%!important}.usage-detection{color:var(--Primary-700, #009BF3);text-overflow:ellipsis!important;font-size:16px!important;font-style:normal;font-weight:400;line-height:16px}.usage-text{color:var(--Gray-700, #344054);text-overflow:ellipsis;font-size:16px;font-style:normal;font-weight:400;line-height:17px}.h-450px{object-fit:contain!important}.store-title{color:var(--Black, #101828)!important;font-size:18px;font-weight:700;line-height:28px}.img-opc{width:100%!important;height:300px!important;border-radius:12px!important}.h-900px{min-height:auto!important;max-height:2800px!important}.select-wrapper{position:relative;display:inline-block;width:100%}.placeholder-overlay{position:absolute;color:var(--Gray-500, #667085);font-family:Inter;font-size:16px!important;font-style:normal;font-weight:400;top:10px;left:15px;pointer-events:none;font-size:1.1rem;z-index:1}.w-50{width:75%!important}.flagclour{color:red}.remarksTxt{margin-top:10px;font-family:Inter;font-size:18px;font-weight:400;line-height:28px;text-align:left}.no-text-transform{text-transform:none!important}.border-val1{padding:8px 14px!important;border-radius:8px!important;border:1px solid var(--Primary-500, #33B5FF)!important;background:var(--Primary-50, #EAF8FF)!important;box-shadow:0 1px 2px #1018280d!important}.font-task{color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}.border-default{padding:8px 14px!important;border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important}.font-defult-task{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}.nav-item .nav-link.active{border:none;border-radius:6px;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.nav-item .nav-link:hover{border:none}.badge-num-primary{border-radius:16px!important;background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;text-align:center;font-size:14px!important;font-style:normal;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.badge-num-muted{border-radius:16px!important;background:var(--Primary-50, #F2F4F7)!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:14px;font-style:normal;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.text-title{font-size:16px!important;font-weight:600!important;color:#101828!important;line-height:24px}.title-description{font-size:14px!important;font-weight:400;color:#101828!important;line-height:24px!important}.border-primary1{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:16px!important;font-weight:600;line-height:24px;text-transform:capitalize}.scroll-y{overflow-x:hidden;overflow-y:auto}.totalsize{width:18%}.view-detail{color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}.left-sidebar{position:sticky;top:0;width:33%;overflow-y:auto}.main-container{display:flex;align-items:flex-start}.right-content{flex-grow:1;width:67%}.bordercolor{border:1px solid var(--Gray-300, #D0D5DD)!important}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i8.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i8.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i9.DaterangepickerDirective, selector: "input[ngxDaterangepickerMd]", inputs: ["minDate", "maxDate", "autoApply", "alwaysShowCalendars", "showCustomRangeLabel", "linkedCalendars", "dateLimit", "singleDatePicker", "showWeekNumbers", "showISOWeekNumbers", "showDropdowns", "isInvalidDate", "isCustomDate", "isTooltipDate", "showClearButton", "customRangeDirection", "ranges", "opens", "drops", "firstMonthDayClass", "lastMonthDayClass", "emptyWeekRowClass", "emptyWeekColumnClass", "firstDayOfNextMonthClass", "lastDayOfPreviousMonthClass", "keepCalendarOpeningWithRange", "showRangeLabelOnInput", "showCancel", "lockStartDate", "timePicker", "timePicker24Hour", "timePickerIncrement", "timePickerSeconds", "closeOnAutoApply", "endKeyHolder", "startKey", "locale", "endKey"], outputs: ["change", "rangeClicked", "datesUpdated", "startDateChanged", "endDateChanged", "clearClicked"] }, { kind: "directive", type: i4.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: i10.ReactiveSelectComponent, selector: "lib-reactive-select", inputs: ["idField", "nameField", "label", "data"], outputs: ["itemChange"] }, { kind: "component", type: i11.CustomSelectComponent, selector: "lib-stores-select", inputs: ["items", "searchField", "multi", "idField", "selectedValues", "disabled", "label"], outputs: ["selected"] }, { kind: "component", type: i12.GroupSelectComponent, selector: "lib-group-select", inputs: ["items", "searchField", "multi", "idField", "selectedValues", "disabled", "label"], outputs: ["selected"] }, { kind: "component", type: i13.CustomsingleSelectComponent, selector: "lib-single-select", inputs: ["items", "searchField", "multi", "idField", "selectedValues", "disabled", "label"], outputs: ["selected"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.DatePipe, name: "date" }] });
|
|
2471
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: GalleryComponent, selector: "lib-gallery", host: { listeners: { "document:click": "onClick($event)" } }, viewQueries: [{ propertyName: "zoomPopup", first: true, predicate: ["zoomPopup"], descendants: true }], ngImport: i0, template: "<div class=\"gallery-card po\">\r\n <div class=\"header mb-4\">Gallery</div>\r\n\r\n <form [formGroup]=\"galleryForm\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <div class=\"row\">\r\n <div class=\"col-md-3 mb-3\">\r\n <div class=\"position-relative\">\r\n <span style=\"top: 20%;\" class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14 z-2\" style=\"min-width: 260px !important;\"\r\n type=\"text\" matInput ngxDaterangepickerMd [drops]=\"'down'\"\r\n [opens]=\"'right'\" [alwaysShowCalendars]=\"false\" [keepCalendarOpeningWithRange]=\"true\"\r\n [showCancel]=\"false\" autocomplete=\"off\" [(ngModel)]=\"selectedDateRange\"\r\n [ngModelOptions]=\"{standalone: true}\" (datesUpdated)=\"datechange($event)\" (click)=\"resetValidation()\" \r\n (startDateChanged)=\"onStartDateChange($event)\" [isCustomDate]=\"isCustomDate\" [autoApply]=\"true\" \r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n name=\"daterange\" [readonly]=\"true\" />\r\n </div>\r\n </div>\r\n <div class=\"col-md-2 mb-4\">\r\n <lib-reactive-select formControlName=\"type\" [idField]=\"'value'\" [nameField]=\"'label'\"\r\n [data]=\"type\" (itemChange)=\"typeChange($event)\" ></lib-reactive-select>\r\n </div>\r\n <div class=\"col-md-4 mb-4\">\r\n <lib-single-select [items]=\"checklists\" [multi]=\"false\" [searchField]=\"'checkListName'\" [idField]=\"'checkListName'\"\r\n (selected)=\"checklistNamechange($event,false)\" [selectedValues]=\"[{checkListName:galleryForm.get('checklistName')?.value}]\"></lib-single-select>\r\n </div> \r\n <div class=\"col-md-3 mb-4\">\r\n <lib-reactive-select formControlName=\"answerType\" [idField]=\"'value'\" [nameField]=\"'label'\"\r\n [data]=\"answerType\"></lib-reactive-select>\r\n </div>\r\n <div class=\"col-md-2 mb-4\">\r\n\r\n <lib-reactive-select formControlName=\"filtertype\" [idField]=\"'value'\" [nameField]=\"'label'\"\r\n [data]=\"filtertype\" (itemChange)=\"filterChange($event)\" ></lib-reactive-select>\r\n\r\n </div>\r\n <div class=\"col-md-3 mb-4\" *ngIf=\"galleryForm.get('filtertype')?.value ==='Clusters'\">\r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(galleryForm.get('ClusterList')?.value?.length)\">\r\n Select cluster\r\n </div>\r\n <lib-group-select [items]=\"ClusterList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'groupName'\"\r\n [idField]=\"'groupName'\" (selected)=\"ongroupSelect($event)\"\r\n [selectedValues]=\"galleryForm.get('ClusterList')?.value\">\r\n </lib-group-select>\r\n </div>\r\n \r\n </div>\r\n <div class=\"col-md-3 mb-4\" *ngIf=\"galleryForm.get('filtertype')?.value ==='Teams'\">\r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(galleryForm.get('TeamsList')?.value?.length)\">\r\n Select Teams\r\n </div>\r\n <lib-group-select [items]=\"TeamsList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'teamName'\"\r\n [idField]=\"'teamName'\" (selected)=\"onTeamsSelect($event)\"\r\n [selectedValues]=\"galleryForm.get('TeamsList')?.value\">\r\n </lib-group-select>\r\n </div>\r\n \r\n </div>\r\n <div class=\"col-md-3 mb-4\" *ngIf=\"galleryForm.get('filtertype')?.value ==='Clusters'\">\r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(galleryForm.get('storeList')?.value?.length)\">\r\n Select Stores\r\n </div>\r\n <lib-stores-select [items]=\"storeList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'storeName'\"\r\n [idField]=\"'storeId'\" (selected)=\"onStoreSelect($event)\"\r\n [selectedValues]=\"galleryForm.get('storeList')?.value\"></lib-stores-select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-3 mb-4\" *ngIf=\"galleryForm.get('filtertype')?.value ==='Teams'\">\r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(galleryForm.get('userList')?.value?.length)\">\r\n Select users\r\n </div>\r\n <lib-stores-select [items]=\"userList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'userName'\"\r\n [idField]=\"'userName'\" (selected)=\"onUserSelect($event)\"\r\n [selectedValues]=\"galleryForm.get('userList')?.value\"></lib-stores-select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4 text-end\"> \r\n <div class=\"d-flex justify-content-end\"> \r\n <div class=\"me-5 w-100\" *ngIf=\"select == 'eyetest'\">\r\n <select class=\"form-select\" [(ngModel)]=\"category\" [ngModelOptions]=\"{standalone: true}\">\r\n <option value=\"all\">All</option>\r\n <option value=\"adults\">Adults</option>\r\n <option value=\"kids\">Kids</option>\r\n </select>\r\n </div>\r\n <div class=\"me-5 w-100\" *ngIf=\"select == 'cleaning'||select ==='scrum'\">\r\n <select class=\"form-select\" [(ngModel)]=\"category\" [ngModelOptions]=\"{standalone: true}\">\r\n <option value=\"all\">All</option>\r\n <option value=\"rejected\">Breached</option>\r\n <option value=\"approved\">Not-breached</option>\r\n </select>\r\n </div>\r\n <div class=\"me-5 w-100 text-start\" *ngIf=\"select == 'queuealert'\"> \r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(galleryForm.get('zoneList')?.value?.length)\" >\r\n Select Zone\r\n </div> \r\n <lib-stores-select [items]=\"zoneList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'value'\"\r\n [idField]=\"'key'\" (selected)=\"onzoneSelect($event)\"\r\n [selectedValues]=\"galleryForm.get('zoneList')?.value\"></lib-stores-select>\r\n </div>\r\n </div>\r\n <span class=\"me-4 mt-3\" *ngIf=\"showflag\"> \r\n <input formControlName=\"viewRedo\" change type=\"checkbox\" (click)=\"redoChanged($event)\"\r\n class=\"form-check-input cursor-pointer mt-1 me-2\" id=\"viewRedo\">\r\n <label class=\"checkbox-label\" for=\"viewRedo\">View Re-do\u2019s only</label>\r\n </span>\r\n <span class=\"me-3 mt-3\" *ngIf=\"showflag&&galleryForm.value.type=='checklist'\">\r\n \r\n \r\n <input formControlName=\"viewFlag\" change type=\"checkbox\" (click)=\"flagChanged($event)\"\r\n class=\"form-check-input cursor-pointer mt-1 me-2\" id=\"viewFlag\">\r\n <label class=\"checkbox-label\" for=\"viewFlag\">View flagged only</label>\r\n </span>\r\n <a (click)=\"onSubmit()\" type=\"submit\" class=\"btn btn-primary px-4 \"><span>Apply</span></a>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n \r\n\r\n </div>\r\n </form>\r\n</div>\r\n<div class=\"card my-2\">\r\n<div class=\"row main-container my-5 \">\r\n \r\n <div [ngClass]=\"showsidenav ? 'col-md-4 left-sidebar':'d-none'\" class=\"h-650px\">\r\n <div class=\"position-relative h-650px scroll-y\">\r\n <div class=\"card-body p-5\">\r\n <div class=\"checklist-left\">\r\n <div class=\"checklist-title\">{{checklistName}}</div>\r\n <div class=\"checklist-text\">{{checkListDescription}}</div>\r\n </div>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row mt-20\">\r\n <div class=\"col-lg-12 mt-20 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"w-50 h-300px\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title mt-0\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this checklist</div>\r\n </div>\r\n </div>\r\n </div>\r\n <section *ngIf=\"!noData && !loading\">\r\n\r\n <div *ngIf=\"select === 'custom'||select === 'task'\">\r\n <div class=\"text-end mt-10\">\r\n <!-- <button class=\"btn btn-outline w-25 me-3 btn-resize\" (click)=\"viewChecklists()\"> Reset </button> -->\r\n <button class=\"btn btn-outline w-25 me-3 btn-resize\" *ngIf=\"selectedSection.length>0||tempselectedSection.length>0\" (click)=\"onchecklistreset()\"> Reset </button>\r\n <button *ngIf=\"selectedSection.length>0||tempselectedSection.length>0\" class=\"btn btn-primary w-25 btn-resize\" (click)=\"selectsinglequestion()\">Apply</button>\r\n </div>\r\n <div class=\"my-6\" [ngClass]=\"selectedSection.length==0 ? 'view-all':'view-questions'\" style=\"cursor: pointer;\" (click)=\"onchecklistreset()\">\r\n View All Answers\r\n </div>\r\n <div class=\"mx-2\" *ngFor=\"let section of checklistData; let i=index;\">\r\n <div class=\"d-flex align-items-center justify-content-between mt-4\" style=\"cursor: pointer;\"\r\n (click)=\"accordian(i)\">\r\n <div class=\"fs-4 fw-bold section\" *ngIf=\"galleryForm.value.type=='checklist'\" >{{section.sectionName}}</div>\r\n <hr class=\"mx-2\">\r\n <svg class=\"cursor-pointer\" [ngClass]=\"{'rotate' : show !== i}\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"25\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div *ngIf=\"show===i\" class=\"question-left\">\r\n <div cdkDropList [cdkDropListData]=\"section.questions\">\r\n <div *ngFor=\"let question of section.questions;let j=index;\" class=\"d-flex my-2 q-btn\"\r\n cdkDrag>\r\n <input id=\"label\" [(ngModel)]=\"question.checked\" (click)=\"selectedQuestion($event,section,question)\" class=\"form-check-input cursor-pointer mt-2 me-4\" type=\"checkbox\" > \r\n <div class=\"editablecontent\" [ngClass]=\"question?.checked ? 'view-all':''\" style=\"cursor: pointer;\">\r\n {{question.qno}} . {{question.qname}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- </div> -->\r\n <div *ngIf=\"combinedChecklist.includes(select)\">\r\n <div class=\"text-end mt-10\">\r\n <button class=\"btn btn-outline w-25 me-3 btn-resize\" (click)=\"onreset()\"> Reset </button>\r\n <button class=\"btn btn-primary w-25 btn-resize\" (click)=\"onview()\">Apply</button>\r\n </div>\r\n <div class=\"dropdownselect h-900px scroll-y\">\r\n <div class=\"d-flex justify-content-left \" [ngClass]=\"selectAll ? 'backgroundBorder':'withoutbackground'\">\r\n <input\r\n class=\"form-check-input cursor-pointer me-4\" type=\"checkbox\" [(ngModel)]=\"selectAll\"\r\n (click)=\"selectAllStore($event)\"> <span [ngClass]=\"selectAll ? 'usage-detection':'usage-text'\">Select All</span>\r\n </div>\r\n <!-- dropdownbg -->\r\n <div class=\"my-4\" *ngFor=\"let list of mobileusageDataList;let i=index\">\r\n <div (change)=\"updateCheck($event,list)\" [ngClass]=\"list.checked ? 'backgroundBorder':'withoutbackground'\">\r\n <input id=\"label{{i}}\" class=\"form-check-input cursor-pointer me-4\" type=\"checkbox\" [(ngModel)]=\"list.checked\">\r\n <label for=\"label{{i}}\" [ngClass]=\"list.checked ? 'usage-detection':'usage-text'\" >{{list?.storeName}}</label>\r\n <span class=\"badge badge-light-primary detectionright\" *ngIf=\"list.detection\">{{list.detection}} Detections</span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n </section>\r\n \r\n </div>\r\n\r\n\r\n\r\n \r\n\r\n <div *ngIf=\"showsidenav\" (click)=\"sidenav()\" class=\"backButtonright text-center pt-1 cursor-pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M11 17L6 12L11 7M18 17L13 12L18 7\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"showsidenav ? 'col-md-8 border border-bottom-0 border-top-0 border-left border-5 right-sidebar':'col-md-12'\" >\r\n <div class=\"position-relative \">\r\n <div class=\"card-header border-0 px-0 my-0\" *ngIf=\"(select === 'custom' || select === 'task'||select == 'cleaning'||select ==='scrum'||select ==='storeopenandclose') && !viewloading && !viewnoData\" >\r\n <h3></h3>\r\n <!-- Switch toggle -->\r\n <div class=\"card-toolbar\" *ngIf=\"!galleryForm.value.viewRedo\">\r\n <div class=\"position-relative cursor-pointer me-10\">\r\n <div class=\" btn btn-primary form-control no-text-transform\" (click)=\"exportDet($event)\">\r\n {{ exportLabel }} <!-- Bind label text here -->\r\n </div>\r\n <div *ngIf=\"exportShow\"\r\n class=\"card py-2 position-absolute productdrop top-10 w-150px end-0 z-1\">\r\n <ul class=\"list-unstyled mb-2\">\r\n <li class=\"cursor-pointer py-4 checkbox-label mx-2\" *ngIf=\"(select === 'custom' || select === 'task'||select ==='storeopenandclose')\" type=\"button\" (click)=\"setExportAsPPT('Export as PDF','pdf')\">\r\n Export as PDF\r\n </li>\r\n <li class=\" cursor-pointer checkbox-label py-4 mx-2\" *ngIf=\"(select === 'custom' || select === 'task'||select == 'cleaning'||select ==='scrum'||select ==='storeopenandclose')\" type=\"button\" (click)=\"setExportAsPPT('Export as CSV','csv')\">\r\n Export as CSV\r\n </li>\r\n <li *ngIf=\"selectedSection.length>0||select == 'cleaning'||select ==='scrum'||select ==='storeopenandclose'\" class=\" cursor-pointer checkbox-label py-4 mx-2\" type=\"button\" (click)=\"setExportAsPPT('Export as PPT','ppt')\">\r\n Export as PPT\r\n </li>\r\n <li *ngIf=\"selectedSection.length>0||select == 'cleaning'||select ==='scrum'||select ==='storeopenandclose'\" class=\"cursor-pointer checkbox-label py-4 mx-2\" type=\"button\" (click)=\"setExportAsPPT('Export as ZIP','zipfiles')\">\r\n Export as ZIP\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n <div class=\"card-body p-0\">\r\n <div>\r\n <div *ngIf=\"viewloading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"viewnoData\" class=\"row mt-20\">\r\n <div class=\"col-lg-12 mt-20 mb-3\">\r\n <div class=\"card-body mt-20 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src mt-5 w-40\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this checklist</div>\r\n </div>\r\n </div>\r\n </div>\r\n <section *ngIf=\"!viewloading && !viewnoData\">\r\n <div *ngIf=\"select==='custom'||select==='task' \">\r\n <div *ngIf=\"showsingle\" class=\"qa-heading m-3 mx-11\">{{this.selectedSection[0]?.questions[0]}}</div>\r\n <div *ngIf=\"showsingle&&showfilter\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap mx-10\">\r\n <li class=\"nav-item\" *ngFor=\"let item of answerFilter\">\r\n <a (click)=\"taskTab(item)\" [ngClass]=\"galleryForm.value.filter === item.key ? 'active' : ''\" class=\"nav-link cursor-pointer no-border me-3\">\r\n {{item.key}}<span class=\"mx-2 \" [ngClass]=\"galleryForm.value.filter === item.key ? 'badge-num-primary' :'badge-num-muted'\">{{item.count}}</span>\r\n </a>\r\n </li>\r\n \r\n </ul>\r\n \r\n </div>\r\n \r\n <div *ngFor=\"let checklist of viewChecklistsData?.checklistAnswers\">\r\n \r\n <div class=\"text-center\" *ngIf=\"clientData.logo&&clientData.logo!==''&&showmulti\">\r\n <img class=\"mt-5 mb-3 text-center iconsize\" src=\"{{clientData.logo}}\">\r\n </div>\r\n \r\n\r\n <div class=\"row px-10 mt-5\" *ngIf=\"showmulti\">\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Store Name:</h3>\r\n </div>\r\n <div class=\"col-md-9\">\r\n <p class=\"uni-subtitle\">{{checklist?.storeProfile?.storeName}} </p>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\" *ngIf=\"galleryForm.value.type==='checklist'\">Checklist Name:</h3>\r\n <h3 class=\"uni-title\" *ngIf=\"galleryForm.value.type==='task'\">Task Name:</h3>\r\n\r\n </div>\r\n <div class=\"col-md-9\">\r\n <p class=\"uni-subtitle\">{{checklist?.checklistInfo?.checklistName}}</p>\r\n </div>\r\n\r\n <ng-container>\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">State & Country :</h3>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <p class=\"uni-subtitle\">{{checklist?.storeProfile?.state}}\r\n {{checklist?.storeProfile?.Country}}</p>\r\n </div>\r\n <div class=\"col-md-2\">\r\n <h3 class=\"uni-title\">Duration :</h3>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <p class=\"uni-subtitle\"> {{checklist?.checklistInfo?.duration}}</p>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">No. of Questions :</h3>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <p class=\"uni-subtitle\">{{checklist?.checklistInfo?.noofQuestions}}</p>\r\n </div>\r\n <div class=\"col-md-2\">\r\n <h3 class=\"uni-title\">Date :</h3>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <p class=\"uni-subtitle\"> {{checklist?.checklistInfo?.date}}</p>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Submitted By :</h3>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <p class=\"uni-subtitle\">{{checklist?.checklistInfo?.submittedBy}}</p>\r\n </div>\r\n <div class=\"col-md-2\">\r\n <h3 class=\"uni-title\">Time :</h3>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <p class=\"uni-subtitle\"> {{checklist?.checklistInfo?.time}}</p>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n \r\n\r\n <div class=\"row px-10\" >\r\n\r\n <div *ngFor=\"let questionlist of checklist.questionAnswer\">\r\n <div class=\"qa-bodrer my-5\" *ngFor=\"let question of questionlist.questions\">\r\n <div class=\"row\" *ngIf=\"question.redo||question.redo===false\">\r\n <div class=\"view-detail col-12 text-end cursor-pointer\" (click)=\"ViewInDetails(question,checklist?.checklistInfo,checklist?.storeProfile,questionlist)\">\r\n View in detail \r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M15 10.8333V15.8333C15 16.2754 14.8244 16.6993 14.5118 17.0118C14.1993 17.3244 13.7754 17.5 13.3333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V6.66667C2.5 6.22464 2.67559 5.80072 2.98816 5.48816C3.30072 5.17559 3.72464 5 4.16667 5H9.16667M12.5 2.5H17.5M17.5 2.5V7.5M17.5 2.5L8.33333 11.6667\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n \r\n <div class=\"row w-100 m-3\" *ngIf=\"showsingle\">\r\n <div class=\"col-md-4 text-title\">\r\n {{checklist?.storeProfile?.storeName}}\r\n </div>\r\n <div class=\"col-md-8 text-end title-description\">\r\n Submitted by : {{checklist?.checklistInfo?.submittedBy}} On : {{checklist?.checklistInfo?.date}} {{checklist?.checklistInfo?.time}}\r\n </div>\r\n </div>\r\n <ul>\r\n <li *ngIf=\"showmulti\" class=\"qa-heading\">{{question?.qno}}. {{question?.qname}}</li>\r\n <div class=\"Partially my-3 px-5\" *ngIf=\"question?.answerType==='descriptive'\">\r\n <div *ngFor=\"let item of question.userAnswer\">\r\n <div class=\"col-md-6\" *ngIf=\"question.questionReferenceImage!==''&&galleryForm.value.type=='checklist'&&question.questionReferenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div *ngIf=\"question.questionReferenceImage&&question.questionReferenceImage.length>0&&galleryForm.value.type=='task'&&question.questionReferenceImage[0] !== ''\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.questionReferenceImage\">\r\n <div *ngIf=\"item&&item!=''&&item!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n <span class=\"mt-2\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">{{item.answer}}</span>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"Partially my-3 px-5\" *ngIf=\"question?.answerType==='linearscale'\">\r\n <div *ngFor=\"let item of question.userAnswer\">\r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&question.questionReferenceImage!==''&&question.questionReferenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div *ngIf=\"question.questionReferenceImage&&question.questionReferenceImage.length>0&&galleryForm.value.type=='task'&&question.questionReferenceImage[0] !== ''\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.questionReferenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <!-- <br> -->\r\n <span class=\"mt-4\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">{{item.answer}}</span>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n </div>\r\n <div class=\"Partially my-3 px-5\" *ngIf=\"question?.answerType==='time'\">\r\n <div *ngFor=\"let item of question.userAnswer\">\r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&question.questionReferenceImage!==''&&question.questionReferenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div *ngIf=\"question.questionReferenceImage&&question.questionReferenceImage.length>0&&galleryForm.value.type=='task'&&question.questionReferenceImage[0] !== ''\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.questionReferenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <br>\r\n <span class=\"mt-4\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">{{item.answer}}</span>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <div class=\"Partially my-3 px-5\" *ngIf=\"question?.answerType==='date'\">\r\n <div *ngFor=\"let item of question.userAnswer\">\r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&question.questionReferenceImage!==''&&question.questionReferenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div *ngIf=\"question.questionReferenceImage&&question.questionReferenceImage.length>0&&galleryForm.value.type=='task'&&question.questionReferenceImage[0] !== ''\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.questionReferenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <br>\r\n <span class=\"mt-4\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">{{item.answer}}</span>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n <div class=\"Partially my-3 px-5\" *ngIf=\"question?.answerType==='yes/no'\">\r\n <div *ngFor=\"let item of question.userAnswer\">\r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&question.questionReferenceImage!==''&&question.questionReferenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <br *ngIf=\"galleryForm.value.type=='checklist'&&question.questionReferenceImage!==''&&question.questionReferenceImage!=null\">\r\n <div *ngIf=\"question.questionReferenceImage&&question.questionReferenceImage.length>0&&galleryForm.value.type=='task'&&question.questionReferenceImage[0] !== ''\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.questionReferenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <span class=\"mt-4\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">{{item.answer}}</span>\r\n <div class=\"row\" *ngIf=\"item.validation&&item.validationAnswer!=''\">\r\n <div class=\"col-md-6\" *ngIf=\"item.referenceImage!==''\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.referenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"title-ref my-3\" *ngIf=\"item.validationType=='Capture Image'||item.validationType=='Capture Video'\">Validation Answer</div>\r\n <img class=\"img-logo\" *ngIf=\"item.validationType=='Capture Image'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"\r\n alt=\"\">\r\n <video controls class=\"recap-img p-3\" *ngIf=\"item.validationType=='Capture Video'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"></video>\r\n </div>\r\n <span class=\"remarksTxt\" *ngIf=\"item.validationType=='Descriptive Answer'\">Validation Answer :{{item.validationAnswer}}</span>\r\n </div>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n </div> \r\n\r\n\r\n\r\n <div class=\"Partially my-3 px-5\" *ngIf=\"question?.answerType==='multiplechoicesingle'\">\r\n \r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&question.questionReferenceImage!=null&&question.questionReferenceImage!==''&&question.questionReferenceImage!==undefined\">\r\n <div class=\"title-ref my-3\">Reference Image</div> \r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n \r\n <div *ngIf=\"question.questionReferenceImage&&question.questionReferenceImage.length>0&&galleryForm.value.type=='task'&&question.questionReferenceImage[0] !== ''\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.questionReferenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <div *ngFor=\"let item of question.userAnswer\">\r\n <span class=\"mt-2\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">{{item.answer}}</span>\r\n <div class=\"col-md-6\" *ngIf=\"item.referenceImage!=null&&item.referenceImage!==''&&galleryForm.value.type=='checklist'\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.referenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div *ngIf=\"item.referenceImage.length>0&&galleryForm.value.type=='task'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of item.referenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"item.validation&&item.validationAnswer!=''\">\r\n <div class=\"title-ref my-3\" *ngIf=\"item.validationType=='Capture Image'||item.validationType=='Capture Video'\">Validation Answer</div>\r\n <img class=\"img-logo\" *ngIf=\"item.validationType=='Capture Image'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"\r\n alt=\"\">\r\n\r\n <video controls class=\"recap-img p-3\" *ngIf=\"item.validationType=='Capture Video'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"></video>\r\n \r\n <span *ngIf=\"item.validationType=='Descriptive Answer'\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">Validation Answer : {{item.validationAnswer}}</span>\r\n </div>\r\n </div>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n <div class=\"row px-5\" *ngIf=\"question?.answerType==='image'\">\r\n <div *ngFor=\"let answer of question.answers\">\r\n <div class=\"row\" *ngIf=\"answer.referenceImage.length>0&&galleryForm.value.type=='task'\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of answer.referenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&answer.referenceImage!==''&&answer.referenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{answer.referenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngFor=\"let item of question.userAnswer\">\r\n <!-- <div class=\"col-md-6\" *ngIf=\"item.referenceImage!=null&&item.referenceImage!==''&&galleryForm.value.type=='checklist'\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.referenceImage}}\"\r\n alt=\"\">\r\n </div> \r\n <div *ngIf=\"item.referenceImage.length>0&&galleryForm.value.type=='task'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of item.referenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n </div> -->\r\n <div class=\"col-md-6\">\r\n <div class=\"title-ref my-3\">Uploaded Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.answer}}\"\r\n alt=\"\">\r\n </div>\r\n <div class=\"col-md-6 mt-2\" *ngIf=\"item.validation&&item.validationAnswer!=''\">\r\n <div class=\"title-ref my-3\" *ngIf=\"item.validationType=='Capture Image'||item.validationType=='Capture Video'\">Validation Answer</div>\r\n <img class=\"img-logo\" *ngIf=\"item.validationType=='Capture Image'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"\r\n alt=\"\">\r\n <video controls class=\"recap-img p-3\" *ngIf=\"item.validationType=='Capture Video'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"></video>\r\n <span *ngIf=\"item.validationType=='Descriptive Answer'\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">Validation Answer : {{item.validationAnswer}}</span>\r\n </div>\r\n </div>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n\r\n\r\n\r\n <div class=\"row px-5\" *ngIf=\"question?.answerType==='multiplechoicemultiple'\">\r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&question.questionReferenceImage!==''&&question.questionReferenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div class=\"col-md-6\"></div>\r\n <div *ngIf=\"question.questionReferenceImage&&question.questionReferenceImage.length>0&&galleryForm.value.type=='task'&&question.questionReferenceImage[0] !== ''\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.questionReferenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <div class=\"Partially my-3 px-5\" *ngFor=\"let item of question.userAnswer\">\r\n <span class=\"mt-3\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">{{item.answer}}</span>\r\n <div class=\"col-md-6\" *ngIf=\"item.referenceImage!=null&&item.referenceImage!==''&&galleryForm.value.type=='checklist'\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.referenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div *ngIf=\"item.referenceImage.length>0&&galleryForm.value.type=='task'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of item.referenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6 mt-2\" *ngIf=\"item.validation&&item.validationAnswer&&item.validationAnswer!=''\">\r\n <div class=\"title-ref my-3\" *ngIf=\"item.validationType=='Capture Image'||item.validationType=='Capture Video'\">Validation Answer</div>\r\n <img class=\"img-logo\" *ngIf=\"item.validationType=='Capture Image'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"\r\n alt=\"\">\r\n <video controls class=\"recap-img p-3\" *ngIf=\"item.validationType=='Capture Video'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"></video>\r\n <span *ngIf=\"item.validationType=='Descriptive Answer'\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">Validation Answer : {{item.validationAnswer}}</span>\r\n </div>\r\n </div>\r\n \r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n\r\n\r\n\r\n\r\n <div class=\"row px-5\" *ngIf=\"question?.answerType==='descriptiveImage'\">\r\n <div *ngFor=\"let answer of question.answers\">\r\n <div class=\"row\" *ngIf=\"answer.referenceImage.length>0&&galleryForm.value.type=='task'\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of answer.referenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&answer.referenceImage!==''&&answer.referenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{answer.referenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngFor=\"let item of question.userAnswer\">\r\n <!-- <div class=\"col-md-6\" *ngIf=\"item.referenceImage!=null&&item.referenceImage!==''&&galleryForm.value.type=='checklist'\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.referenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div *ngIf=\"item.referenceImage.length>0&&galleryForm.value.type=='task'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of item.referenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n \r\n </div> -->\r\n <div class=\"col-md-6\">\r\n <div class=\"title-ref my-3\">Uploaded Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.answer}}\"\r\n alt=\"\">\r\n </div>\r\n <div class=\"col-md-6 mt-3\" *ngIf=\"item.validation&&item.validationAnswer!=''\">\r\n <div class=\"title-ref my-3\" *ngIf=\"item.validationType=='Capture Image'||item.validationType=='Capture Video'\">Validation Answer</div>\r\n <img class=\"img-logo\" *ngIf=\"item.validationType=='Capture Image'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"\r\n alt=\"\">\r\n <video controls class=\"recap-img p-3\" *ngIf=\"item.validationType=='Capture Video'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"></video>\r\n <span [ngClass]=\"item.sopFlag ? 'flagclour':''\" *ngIf=\"item.validationType=='Descriptive Answer'\">Validation Answer : {{item.validationAnswer}}</span>\r\n </div>\r\n </div>\r\n \r\n <div class=\"Partially my-3 px-5\" *ngIf=\"question.remarks!=''\">{{question.remarks}}</div>\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n <div class=\"row px-5\" *ngIf=\"question?.answerType==='video'\">\r\n <div *ngIf=\"question.questionReferenceImage&&question.questionReferenceImage.length>0&&galleryForm.value.type=='task'&&question.questionReferenceImage[0] !== ''\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.questionReferenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&question.questionReferenceImage!==''&&question.questionReferenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.userAnswer\">\r\n <div class=\"title-ref my-3\">Uploaded Video</div>\r\n\r\n <video controls class=\"recap-img p-3\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.answer}}\">\r\n </video>\r\n </div>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n\r\n\r\n\r\n\r\n <div class=\"row px-5\" *ngIf=\"question?.answerType==='multipleImage'\">\r\n <div *ngFor=\"let answer of question.answers\">\r\n <div class=\"row\" *ngIf=\"answer.referenceImage.length>0&&galleryForm.value.type=='task'\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of answer.referenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&answer.referenceImage!==''&&answer.referenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{answer.referenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.userAnswer\">\r\n <div class=\"title-ref my-3\">Uploaded Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.answer}}\"\r\n alt=\"\">\r\n <div class=\"col-md-6\" *ngIf=\"item.validation&&item.validationAnswer!=''\">\r\n <div class=\"title-ref my-3\" *ngIf=\"item.validationType=='Capture Image'||item.validationType=='Capture Video'\">Validation Answer</div>\r\n <img class=\"img-logo\" *ngIf=\"item.validationType=='Capture Image'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"\r\n alt=\"\">\r\n <video controls class=\"recap-img p-3\" *ngIf=\"item.validationType=='Capture Video'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"></video>\r\n <span *ngIf=\"item.validationType=='Descriptive Answer'\">Validation Answer : {{item.validationAnswer}}</span>\r\n </div>\r\n </div>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n \r\n </ul>\r\n <div class=\"row\">\r\n <div class=\"col-md-6 text-start\"> \r\n <!-- <button class=\"btn btn-secondary rounded-pill m-0 p-2\" *ngIf=\"question?.linkType&&question?.linkquestionenabled\">Linked to Question {{question.parentQuestion}}</button> -->\r\n </div>\r\n <div class=\"col-md-6 text-end\">\r\n <button class=\"btn btn-sm btn-default border-default me-3\" [disabled]=\"question.redo\" *ngIf=\"checktodayDate(checklist?.checklistInfo?.date)&&(gs.userAccess | async)?.userType !== 'tango'&&!checklist?.checklistInfo?.approvalStatus&&(gs.userAccess | async)?.TangoTrax_checklist_isEdit&&this.galleryForm.value.type =='checklist'\" (click)=\"addTask('redo',question,checklist?.checklistInfo,checklist?.storeProfile,questionlist)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_6004_11734)\">\r\n <path d=\"M19.1693 3.33331V8.33332M19.1693 8.33332H14.1693M19.1693 8.33332L15.3026 4.69998C14.407 3.80391 13.299 3.14932 12.0819 2.79729C10.8649 2.44527 9.57853 2.40727 8.34284 2.68686C7.10716 2.96645 5.96244 3.55451 5.01549 4.39616C4.06855 5.23782 3.35024 6.30564 2.9276 7.49998M0.835938 16.6666V11.6666M0.835938 11.6666H5.83594M0.835938 11.6666L4.7026 15.3C5.59823 16.1961 6.70625 16.8506 7.92328 17.2027C9.14031 17.5547 10.4267 17.5927 11.6624 17.3131C12.898 17.0335 14.0428 16.4455 14.9897 15.6038C15.9367 14.7621 16.655 13.6943 17.0776 12.5\" stroke=\"#344054\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_6004_11734\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <span class=\"ms-2 font-defult-task\">Redo</span>\r\n </button>\r\n <button class=\"btn btn-sm btn-default border-default me-3\" [disabled]=\"question.redo\" *ngIf=\"checktodayDate(checklist?.checklistInfo?.date)&&(gs.userAccess | async)?.userType !== 'tango'&&!checklist?.checklistInfo?.approvalStatus&&(gs.userAccess | async)?.TangoTrax_Task_isEdit&&this.galleryForm.value.type=='task'\" (click)=\"addTask('redo',question,checklist?.checklistInfo,checklist?.storeProfile,questionlist)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_6004_11734)\">\r\n <path d=\"M19.1693 3.33331V8.33332M19.1693 8.33332H14.1693M19.1693 8.33332L15.3026 4.69998C14.407 3.80391 13.299 3.14932 12.0819 2.79729C10.8649 2.44527 9.57853 2.40727 8.34284 2.68686C7.10716 2.96645 5.96244 3.55451 5.01549 4.39616C4.06855 5.23782 3.35024 6.30564 2.9276 7.49998M0.835938 16.6666V11.6666M0.835938 11.6666H5.83594M0.835938 11.6666L4.7026 15.3C5.59823 16.1961 6.70625 16.8506 7.92328 17.2027C9.14031 17.5547 10.4267 17.5927 11.6624 17.3131C12.898 17.0335 14.0428 16.4455 14.9897 15.6038C15.9367 14.7621 16.655 13.6943 17.0776 12.5\" stroke=\"#344054\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_6004_11734\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <span class=\"ms-2 font-defult-task\">Redo</span>\r\n </button>\r\n\r\n <button class=\"btn btn-sm border-val1\" *ngIf=\"!question.task&&!question.taskId&&this.galleryForm.value.type=='checklist'&&(gs.userAccess | async)?.userType !== 'tango'&&!checklist?.checklistInfo?.approvalStatus&& (gs.userAccess | async)?.TangoTrax_Task_isEdit\" (click)=\"addTask('createtask',question,checklist?.checklistInfo,checklist?.storeProfile,questionlist)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M11.6693 1.66675H5.0026C4.56058 1.66675 4.13665 1.84234 3.82409 2.1549C3.51153 2.46746 3.33594 2.89139 3.33594 3.33341V16.6667C3.33594 17.1088 3.51153 17.5327 3.82409 17.8453C4.13665 18.1578 4.56058 18.3334 5.0026 18.3334H15.0026C15.4446 18.3334 15.8686 18.1578 16.1811 17.8453C16.4937 17.5327 16.6693 17.1088 16.6693 16.6667V6.66675M11.6693 1.66675L16.6693 6.66675M11.6693 1.66675V6.66675H16.6693M10.0026 15.0001V10.0001M7.5026 12.5001H12.5026\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2 font-task\">Create Task</span>\r\n </button>\r\n <button *ngIf=\"question.task&&question.taskId &&this.galleryForm.value.type!=='task'\" class=\"btn btn-sm border-val1\" (click)=\"taskredirect(question,checklist?.storeProfile,checklist?.checklistInfo)\"><span class=\"font-task\">View Task</span></button>\r\n\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"px-10 my-5\" *ngIf=\"imageChecklist.includes(select)\">\r\n <div class=\"text-center\" *ngIf=\"clientData.logo&&clientData.logo!==''\">\r\n <img class=\"mt-5 mb-3 text-center iconsize\" src=\"{{clientData.logo}}\">\r\n </div>\r\n <div>\r\n <h2>Checklist Name : {{this.checklistName}}</h2>\r\n </div>\r\n <div class=\"qa-bodrer my-3 mt-5\" *ngFor=\"let item of mobileusageData\">\r\n <ul class=\"row w-100\">\r\n <li class=\"qa-heading\">\r\n {{item.storeName}}\r\n </li>\r\n <div class=\"row\">\r\n <div class=\"col-md-12 my-2\" *ngFor=\"let detection of item.imageUrl\">\r\n \r\n <div class=\"\">\r\n <img class=\"w-100 h-500px rounded-top\"\r\n src=\"{{environment.TraxAIchecklistCDN}}{{detection}}\" alt=\"\">\r\n <div class=\"text-center mt-3\" > {{this.checklistName}}</div> \r\n </div>\r\n </div>\r\n </div>\r\n </ul>\r\n </div>\r\n\r\n </div>\r\n <div class=\"px-10 my-5\" *ngIf=\"videoChecklist.includes(select)\">\r\n <div class=\"text-center\" *ngIf=\"clientData.logo&&clientData.logo!==''\">\r\n <img class=\"mt-5 mb-3 text-center iconsize\" src=\"{{clientData.logo}}\">\r\n </div>\r\n \r\n <div class=\"my-3 mt-5\" *ngFor=\"let item of customerunattendedData\">\r\n <div class=\"row px-10 mt-5\">\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Checklist Name:</h3>\r\n </div>\r\n <div class=\"col-md-9\">\r\n <p class=\"uni-subtitle\">: {{this.checklistName}} </p>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Store Name</h3>\r\n </div>\r\n <div class=\"col-md-9\">\r\n <p class=\"uni-subtitle\">: {{item.storeName}}</p>\r\n </div>\r\n </div> \r\n <ul class=\"row w-100 margin-top-side\">\r\n <li class=\"qa-heading\">\r\n \r\n </li>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\" *ngFor=\"let detection of item.imagesData\">\r\n <div class=\"row px-10 mt-5 margin-left-side\" *ngIf=\"select!='suspiciousactivity'\">\r\n <div class=\"col-md-3\" *ngIf=\"detection?.Answer\">\r\n <h3 class=\"uni-title\">Detection Status</h3>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"detection?.Answer\">\r\n <p class=\"uni-subtitle\">:<span class=\"ms-3 badge badge-light-danger\" *ngIf=\"detection?.Answer==='rejected'\">Breached</span>\r\n <span class=\"ms-3 badge badge-light-success\" *ngIf=\"detection?.Answer==='approved'\">Not-breached</span> </p>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Date</h3>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <p class=\"uni-subtitle\">: {{detection.date|date:'dd-MM-yyyy' }}</p>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"detection?.configTime\">\r\n <h3 class=\"uni-title\">Configured Time</h3>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"detection?.configTime\">\r\n <p class=\"uni-subtitle\">: {{detection.configTime }}</p>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"detection?.duration\">\r\n <h3 class=\"uni-title\">Duration</h3>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"detection?.duration\">\r\n <p class=\"uni-subtitle\">: {{detection.duration }} Mins</p>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"detection?.downTime\">\r\n <h3 class=\"uni-title\">Downtime</h3>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"detection?.downTime\">\r\n <p class=\"uni-subtitle\">: {{detection.downTime }} Mins <span ngbTooltip=\"Downtime may result in inaccurate data\" placement=\"top\" container=\"body\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"16\" viewBox=\"0 0 15 16\" fill=\"none\">\r\n <path d=\"M7.66667 5.33203V7.9987M7.66667 10.6654H7.67333M14.3333 7.9987C14.3333 11.6806 11.3486 14.6654 7.66667 14.6654C3.98477 14.6654 1 11.6806 1 7.9987C1 4.3168 3.98477 1.33203 7.66667 1.33203C11.3486 1.33203 14.3333 4.3168 14.3333 7.9987Z\" stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span></p>\r\n </div>\r\n </div> \r\n <div class=\"card-header border-0 min-h-45px px-0 my-0\">\r\n <h3 class=\"card-title\">\r\n <!-- <span class=\"me-3 store-title\">{{item.storeName}}</span> -->\r\n <span class=\"ms-2 badge badge-light-default\" *ngIf=\"detection?.customer_id\">Cust ID : {{detection.customer_id}}</span>\r\n <span class=\"ms-2 badge badge-light-default\" *ngIf=\"detection?.queue_id\">Queue ID : {{detection.queue_id}}</span>\r\n <span class=\"ms-2 badge badge-light-default\" *ngIf=\"detection?.optum_id\">Optum ID : {{detection.optum_id}}</span>\r\n <!-- <span class=\"ms-2 badge badge-light-default\" *ngIf=\"detection?.date\">Date : {{detection.date|date:'dd-MM-yyyy' }}</span> -->\r\n <!-- <span class=\"ms-3 badge badge-light-default\" *ngIf=\"detection?.configTime\">Inspection time : {{detection.configTime}}</span> -->\r\n <span class=\"ms-3 badge badge-light-default\" *ngIf=\"detection?.temp_id\">TempId : {{detection.temp_id}}</span>\r\n <span class=\"ms-3 badge badge-light-default\" *ngIf=\"detection?.time_spend\">Timespend : {{detection.time_spend}}Mins</span> \r\n \r\n </h3>\r\n \r\n <!-- Switch toggle -->\r\n <div class=\"card-toolbar\">\r\n <div class=\"col-md-12 text-end\">\r\n <span class=\"ms-3 badge badge-light-default\" *ngIf=\"detection?.entry_time\">Entry time : {{detection.entry_time}}</span> \r\n <span class=\"ms-3 badge badge-light-default\" *ngIf=\"detection?.exit_time\">Exit time : {{detection.exit_time}}</span> \r\n <span class=\"ms-3 badge badge-light-success\" *ngIf=\"detection?.adherence_rate\">Adherence Rate : {{detection.adherence_rate}}</span>\r\n <span class=\"ms-3 badge badge-light-primary text-capitalize\" *ngIf=\"detection?.category\"> {{detection.category}}</span>\r\n <span class=\"ms-3 badge badge-light-default\" *ngIf=\"detection?.customer_entry_time\">Entry time : {{detection.customer_entry_time}}</span>\r\n <span class=\"ms-3 badge badge-light-default\" *ngIf=\"detection?.customer_exit_time\">Exit time : {{detection.customer_exit_time}}</span> \r\n \r\n \r\n </div>\r\n </div>\r\n </div>\r\n \r\n \r\n <div class=\"my-0\" *ngIf=\"select !='eyetest'\">\r\n <video controls class=\"w-100 h-450px rounded-top\"\r\n src=\"{{environment.TraxAIchecklistCDN}}{{detection.video_path}}\" alt=\"\"> \r\n </video> \r\n </div>\r\n <div class=\"my-0\" *ngIf=\"select ==='eyetest'\">\r\n <video controls class=\"w-100 h-450px rounded-top\"\r\n src=\"{{environment.EyeTestCDN}}{{detection.video_path}}\" alt=\"\"> \r\n </video> \r\n </div>\r\n </div>\r\n </div>\r\n </ul>\r\n </div>\r\n\r\n </div>\r\n <div *ngIf=\"select ==='storeopenandclose'\">\r\n <div class=\"text-center\" *ngIf=\"clientData.logo&&clientData.logo!==''\">\r\n <img class=\"mt-5 mb-3 text-center iconsize\" src=\"{{clientData.logo}}\">\r\n </div>\r\n <div class=\"row px-10 mt-5\">\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Checklist Name:</h3>\r\n </div>\r\n <div class=\"col-md-9\">\r\n <p class=\"uni-subtitle\">: {{this.checklistName}} </p>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 margin-top-side\" *ngFor=\"let store of storeOpencloseView\">\r\n <div class=\" mx-8 my-8\" *ngFor=\"let item of store.imagesData\">\r\n <div class=\"row px-10 mt-5 margin-left-side \">\r\n <div class=\"col-md-3\" *ngIf=\"item?.buffer_open\">\r\n <h3 class=\"uni-title\">Buffer for Open Time :</h3>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"item?.buffer_open\">\r\n <p class=\"uni-subtitle\">: {{item.buffer_open }}</p>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"item?.buffer_close\">\r\n <h3 class=\"uni-title\">Buffer for Close Time :</h3>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"item?.buffer_close\">\r\n <p class=\"uni-subtitle\">: {{item.buffer_close }}</p>\r\n </div>\r\n <div class=\"col-md-3\" >\r\n <h3 class=\"uni-title\">Detection Status</h3>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"item?.Flag\">\r\n <p class=\"uni-subtitle\">:<span class=\"ms-3 badge badge-light-danger\" *ngIf=\"item?.Flag\">Breached</span>\r\n <span class=\"ms-3 badge badge-light-success\" *ngIf=\"!item?.Flag\">Not-breached</span> </p>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Date</h3>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <p class=\"uni-subtitle\">: {{item.date|date:'dd-MM-yyyy' }}</p>\r\n </div>\r\n </div> \r\n <div class=\"snapcard\">\r\n <div class=\"snapheader ms-6\">\r\n {{item.storeName}}\r\n </div>\r\n <div class=\"row m-0 w-100\">\r\n <div class=\"col-6\">\r\n <div class=\"img mt-4 px-3 position-relative\" *ngIf=\"!item.openTime\">\r\n <div class=\"preview align-items-center justify-content-center d-flex flex-column\">\r\n <span>\r\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"Group\">\r\n <path id=\"Vector\"\r\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n stroke=\"#667085\" stroke-width=\"2\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n \\\r\n <path id=\"Vector_2\"\r\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\r\n stroke=\"#667085\" stroke-width=\"2\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n </svg>\r\n \r\n </span>\r\n <span class=\"prvtxt mt-5 textclr\">Preview not\r\n available</span>\r\n <span class=\"refreshtxt mt-2 textclr\">The selected camera\r\n is not available at the moment.</span>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"item.openTime\">\r\n <img class=\"mx-1 img-opc\"\r\n src=\"{{environment.TraxOpenclosechecklistCDN}}{{item.storeId}}/{{item.dateString|date:'dd-MM-yyyy'}}/operation_snaps/open.jpeg\"\r\n alt=\"open close snap\">\r\n <div class=\"col-12\">\r\n <div class=\"d-flex flex-stack mx-1 mt-2\">\r\n <div>\r\n <div class=\"snaptext\">Opening Snap</div>\r\n <div class=\"snaptime\">{{item.openTime}} - {{item.date}}\r\n </div>\r\n </div>\r\n \r\n <span class=\"badge badge-light-primary snapbadge\"\r\n *ngIf=\"!item?.openTimeFlag\">On Time</span>\r\n <span class=\"badge badge-light-danger snapbadge\"\r\n *ngIf=\"item?.openTimeFlag\">Late Open</span>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n <div class=\"col-6\">\r\n <div class=\"img mt-4 px-3 position-relative\" *ngIf=\"!item.closeTime\">\r\n <div class=\"preview align-items-center justify-content-center d-flex flex-column\">\r\n <span>\r\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"Group\">\r\n <path id=\"Vector\"\r\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n stroke=\"#667085\" stroke-width=\"2\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n \\\r\n <path id=\"Vector_2\"\r\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\r\n stroke=\"#667085\" stroke-width=\"2\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n </svg>\r\n \r\n </span>\r\n <span class=\"prvtxt mt-5 textclr\">Preview not\r\n available</span>\r\n <span class=\"refreshtxt mt-2 textclr\">The selected camera\r\n is not available at the moment.</span>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"item.closeTime\">\r\n <img class=\"mx-1 img-opc\"\r\n src=\"{{environment.TraxOpenclosechecklistCDN}}{{item.storeId}}/{{item.dateString|date:'dd-MM-yyyy'}}/operation_snaps/close.jpeg\"\r\n alt=\"Checklist Video Player\">\r\n <div class=\"col-12\">\r\n <div class=\"d-flex flex-stack mx-1 \">\r\n <div>\r\n <div class=\"snaptext\">Closing Snap</div>\r\n <div class=\"snaptime\">{{item.closeTime}} - {{item.date}}\r\n </div>\r\n </div>\r\n <span class=\"badge badge-light-primary snapbadge\"\r\n *ngIf=\"!item?.closeTimeFlag\">On Time</span>\r\n <span class=\"badge badge-light-danger snapbadge\"\r\n *ngIf=\"item?.closeTimeFlag\">Early Close</span>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n \r\n\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n </div>\r\n <div *ngIf=\"boximageChecklist.includes(select)\">\r\n <div class=\"text-center\" *ngIf=\"clientData.logo&&clientData.logo!==''\">\r\n <img class=\"mt-5 mb-3 text-center iconsize\" src=\"{{clientData.logo}}\">\r\n </div>\r\n <div class=\"col-md-12\" *ngFor=\"let store of queueAlertView\">\r\n <div class=\"row px-10 mt-5\" *ngIf=\"showmulti\">\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Store Name:</h3>\r\n </div>\r\n <div class=\"col-md-9\">\r\n <p class=\"uni-subtitle\">{{store?.storeName}} | {{store?.city}},{{store?.state}},{{store?.country}} </p>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Checklist Name:</h3>\r\n\r\n </div>\r\n <div class=\"col-md-9\">\r\n <p class=\"uni-subtitle\">{{checklistName}}</p>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"select==='boxalert'||select==='suspiciousfootfall'||select==='drinking'||select==='bagdetection'\">\r\n <h3 class=\"uni-title\">Description:</h3>\r\n </div>\r\n <div class=\"col-md-9\" *ngIf=\"select==='boxalert'||select==='suspiciousfootfall'||select==='drinking'||select==='bagdetection'\">\r\n <p class=\"uni-subtitle\">{{checkListDescription}}</p>\r\n </div>\r\n\r\n </div> \r\n <div class=\"row m-0 w-100 \" >\r\n <div class=\"col-4 mt-2\" *ngFor=\"let item of store.imagesData\">\r\n <div class=\"card bordercolor bg-secondary mt-8\">\r\n <div class=\"text-start ms-5 mt-2 mb-5\" >\r\n <div *ngIf=\"item.zone\">\r\n <span class=\"btn btn-secondary rounded-lg p-2\">{{item.zone}}</span>\r\n </div>\r\n \r\n <div class=\"mt-3 fw-semibold\">{{ item.date_timestamp }}</div>\r\n </div>\r\n <img class=\"w-100 h-250px rounded-bottom\" (click)=\"openModel(item)\"\r\n src=\"{{environment.TraxAIchecklistCDN}}{{item.path}}\" alt=\"\"> \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <lib-pagination *ngIf=\"!viewloading && !viewnoData\" [itemsPerPage]=\"limit\" [currentPage]=\"offset\" [totalItems]=\"totalCount\"\r\n [paginationSizes]='paginationSizes' [pageSize]=\"limit\"\r\n (pageChange)=\"onPageChangeview($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </section>\r\n </div>\r\n\r\n\r\n\r\n </div>\r\n <div *ngIf=\"!showsidenav\" (click)=\"sidenav()\" class=\"backButtonleft text-center pt-1 cursor-pointer\">\r\n <svg class=\"mt-2 ms-2\" xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n d=\"M9.72714 12.6365L13.3635 9.00013L9.72714 5.36377M4.63623 12.6365L8.27259 9.00013L4.63623 5.36377\"\r\n stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n</div> \r\n<div class=\"row card mx-0 p-3 \" *ngIf=\"checkAIchecklist()\">\r\n <div class=\"col-md-12 text-end\">\r\n<button class=\"btn btn-sm border-primary1\" [disabled]=\"!approvalStatus\" (click)=\"appoveChecklist()\">Approve\r\n</button>\r\n</div>\r\n</div>\r\n<ng-template #zoomPopup let-model>\r\n <div class=\"p-8\">\r\n <div class=\"modal-header pt-0 ps-1 pe-0\">\r\n <div>\r\n <div class=\"text-start mt-2\">\r\n <div *ngIf=\"viewImage.zone\">\r\n <span class=\"btn btn-secondary rounded-lg p-2\">{{viewImage.zone}}</span>\r\n </div>\r\n <div *ngIf=\"viewImage.emptyBoxCount\">\r\n <span >Empty shelves : {{viewImage.emptyBoxCount}}</span>\r\n </div>\r\n \r\n <div *ngIf=\"viewImage.entry_time\">\r\n <span >Entry Time : {{viewImage.entry_time}}</span>\r\n </div>\r\n <div *ngIf=\"viewImage.exit_time\">\r\n <span >Exit Time : {{viewImage.exit_time}}</span>\r\n </div>\r\n <div *ngIf=\"viewImage.temp_id\">\r\n <span >Temp Id : {{viewImage.temp_id}}</span>\r\n </div>\r\n <div *ngIf=\"viewImage.time_spend\">\r\n <span >Time Spend : {{viewImage.time_spend}} Mins</span>\r\n </div>\r\n \r\n <div class=\"mt-2\" *ngIf=\"viewImage.threshold&&viewImage.Dwelltime\"><p>If the queue exceeds {{viewImage.threshold}} people and wait time surpasses {{viewImage.Dwelltime}} minutes, an alert will be triggered</p></div>\r\n <div class=\"mt-3 fw-semibold\">{{ viewImage.date_timestamp }}</div>\r\n </div>\r\n \r\n </div>\r\n <div data-bs-dismiss=\"modal\">\r\n <!-- <span class=\"stream fw-semibold text-nowrap me-5\" *ngIf=\"camera.height && camera.width\"> Resolution: {{camera.height}} X {{camera.width}}</span> -->\r\n <span class=\"btn btn-sm btn-icon btn-active-color-primary me-0\" (click)=\"model.dismiss()\"><svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M15 5L5 15M5 5L15 15\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"viewImage.path\" class=\"mt-2 overflow-auto\">\r\n <img class=\"rounded-4 mt-5 img-popup-src w-100\" src=\"{{environment.TraxAIchecklistCDN}}{{viewImage.path}}\">\r\n </div>\r\n\r\n \r\n </div>\r\n\r\n</ng-template>", styles: [".gallery-card{padding:24px;border-radius:12px;background:#fff}.gallery-card .header{color:#101828;font-size:18px;font-weight:500;line-height:28px}.img{border-radius:10px;border:1px solid var(--Gray-500, #667085);background:var(--Gray-100, #F2F4F7);width:100%;height:230px}.prvtxt{color:var(--Gray-500, #667085);font-family:Inter;font-size:20px;font-style:normal;font-weight:700;line-height:20px;letter-spacing:-.4px}.refreshtxt{color:var(--Gray-400, #98A2B3);font-family:Inter;font-size:12px;font-style:normal;font-weight:500;line-height:18px}::ng-deep .applyBtn{display:none!important}::ng-deep .custom-height-modal .modal-dialog{max-height:80vh;height:80vh}::ng-deep .custom-height-modal .modal-content{overflow:auto;max-height:100%}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .md-drppicker.shown.drops-down-right{transform-origin:0 0;width:560px!important}:host::ng-deep .daterangepicker-input+.ngx-daterangepicker-material .applyBtn{display:none}:host::ng-deep .md-drppicker.drops-down-right.ltr.show-ranges.shown{top:65px!important}:host::ng-deep .md-drppicker.drops-down-right.ltr.double.show-ranges.shown{top:65px!important;right:-475px!important;left:unset!important;height:400px!important}:host::ng-deep .md-drppicker .btn{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}:host::ng-deep .md-drppicker .ranges ul li button{padding:12px 16px;width:160px;color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:20px;background:none;border:none;text-align:left;cursor:pointer}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important;border-radius:20px!important;color:var(--White, #FFF)!important;text-align:center!important;font-size:14px!important;font-weight:500!important;line-height:20px}:host::ng-deep .md-drppicker.ltr .ranges{float:left;margin-top:10px!important}:host::ng-deep .md-drppicker td.in-range{background:var(--Primary-50, #EAF8FF)}:host::ng-deep .md-drppicker .ranges ul li button.active{background:var(--Primary-50, #EAF8FF)!important;border-radius:8px!important;color:var(--Primary-700, #009BF3);font-size:14px!important;font-weight:500!important;line-height:20px!important}:host::ng-deep table th,:host::ng-deep table td{width:40px!important;height:40px!important;padding:10px 8px!important}:host::ng-deep .md-drppicker td.available.prev,:host::ng-deep .md-drppicker th.available.prev{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker td.available.next,:host::ng-deep .md-drppicker th.available.next{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep table th{border-bottom:0px solid var(--Gray-200, #EAECF0)!important;background:transparent!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:16px!important;font-weight:500!important;line-height:24px}:host::ng-deep .md-drppicker .btn.btn-default{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize;margin-right:10px!important}:host::ng-deep .md-drppicker td.available.invalid-date{text-decoration:line-through;pointer-events:none;color:#a9a9a9}:host::ng-deep .md-drppicker td.available.today:not(.invalid-date){text-decoration:unset;pointer-events:unset;color:unset}.btn-primary{line-height:18px!important}.checkbox-label{color:#344054;font-size:14px;font-weight:500;line-height:20px;cursor:pointer}.checklist-left .checklist-title{overflow:hidden;color:var(--Black, #101828)!important;text-overflow:ellipsis;font-size:18px!important;font-weight:500;line-height:28px}.checklist-left .checklist-text{overflow:hidden;color:var(--Black, #101828)!important;text-overflow:ellipsis;font-size:12px!important;font-weight:400!important;line-height:18px}.section{display:inline-block;width:600px;white-space:nowrap;outline:none!important;border:none!important;box-shadow:none!important;overflow:hidden!important;text-overflow:ellipsis!important;color:var(--Black, #101828)!important;font-size:16px!important;font-weight:500!important}.card hr{width:-webkit-fill-available}.editablecontent{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:400!important;line-height:24px}.rotate{transform:rotate(180deg);transition:1s}.question-left{color:var(--Gray-700, #344054)!important;font-size:16px;font-weight:400;line-height:24px}.view-all{padding:12px!important;border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-500, #33B5FF)!important;font-size:16px!important;font-weight:600!important;line-height:24px;text-decoration-line:underline!important}.view-questions{padding:12px!important;border-radius:6px!important;color:var(--Primary-500, #33B5FF)!important;font-size:16px!important;font-weight:600!important;line-height:24px;text-decoration-line:underline!important}.iconsize{width:110px;height:110px}.margin-left-side{margin-left:-35px}.margin-top-side{margin-top:-15px}input[type=checkbox]{width:16px!important;height:16px!important;margin:0;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-300, #D0D5DD);box-shadow:none;font-size:.8em;text-align:center;line-height:1em;background:#fff}input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF);background-color:var(--primary-50, #EAF8FF)}input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.5em;padding-left:0!important;padding-top:8px;padding-right:5px}.uni-title{color:#000!important;font-size:18px!important;font-weight:600!important;line-height:28px}.uni-subtitle{color:#000!important;font-size:18px!important;font-weight:400!important;line-height:28px}.qa-heading{color:var(--Black, #101828)!important;font-size:18px!important;font-weight:700!important;line-height:28px;list-style:none}.qa-bodrer{padding:16px!important;border-radius:8px!important;border:1px solid var(--Gray-200, #EAECF0)!important;background:var(--text-primary, #FFF)!important;box-shadow:0 1px 3px #1018281a,0 1px 2px #1018280f!important}.title-ref{color:var(--Gray-900, #101828)!important;font-size:16px!important;font-weight:400!important;line-height:24px}.btn-outline-primary{border-radius:8px!important;border:1px solid var(--Primary-500, #33B5FF)!important;background:var(--Primary-50, #EAF8FF)!important;box-shadow:0 1px 2px #1018280d!important;padding:calc(.7rem + 0px) calc(1.5rem + 1px)!important}.Partially{color:#000;font-size:18px!important;font-style:italic!important;font-weight:500;line-height:28px}.task-remarks{color:#000!important;font-size:18px!important;font-weight:400!important;line-height:28px}.backButtonright{border-radius:1000px!important;background:var(--text-primary, #FFF)!important;padding:12px!important;box-shadow:0 12px 16px -4px #10182814,0 4px 6px -2px #10182808!important;box-shadow:0 8.727px 11.636px -2.909px #10182814,0 2.909px 4.364px -1.455px #10182808!important;position:absolute;top:30px;right:-10px;z-index:0}.backButtonleft{border-radius:1000px!important;background:#fff;padding:14px!important;border:var(--Gray-300, #D0D5DD);box-shadow:0 8.727px 11.636px -2.909px #10182814,0 2.909px 4.364px -1.455px #10182808;position:absolute;top:30px;left:-20px;z-index:5}img.img-logo{width:100%;height:400px!important}.recap-img{width:100%;height:400px;object-fit:cover!important}.img-src{width:30%!important;height:20%!important}.dropdownselect{padding:20px 10px}.dropdownbg{width:Fill(372px) px;height:Hug(40px) px;padding:8px 16px;gap:0px;border-radius:6px 0 0;justify-content:space-between;opacity:0px;background:#eaf8ff}.detectionright{color:var(--Primary-700, #009BF3)!important;text-align:center;font-size:14px!important;font-weight:500;line-height:14px;float:right!important;mix-blend-mode:multiply}.backgroundBorder{background:#eaf8ff!important;color:#00a3ff!important;padding:12px;border-radius:8px;font-weight:500;line-height:10px}.withoutbackground{padding:8px;font-weight:500;line-height:10px}.snapcard{display:flex;padding:16px;flex-direction:column;align-items:flex-start;gap:16px;align-self:stretch;border-radius:8px;border:1px solid var(--Gray-200, #EAECF0);background:var(--White, #FFF);box-shadow:0 1px 3px #1018281a,0 1px 2px #1018280f}.snapheader{color:var(--Black, #101828);font-size:16px;font-style:normal;font-weight:600;line-height:24px}.snaptext{color:var(--Gray-900, #101828);font-size:16px!important;font-style:normal;font-weight:600!important;line-height:24px}.snaptime{color:var(--Gray-900, #101828);font-size:12px!important;font-style:normal;font-weight:500!important;line-height:22px}.snapbadge{text-align:center;font-size:14px!important;font-style:normal;font-weight:500!important;line-height:20px}.btn-resize{font-size:13px!important;height:29px!important;line-height:11px!important;padding:1px!important}.preview{position:absolute;top:30%;left:14%}.w-25{width:17%!important}.w-40{width:40%!important}.usage-detection{color:var(--Primary-700, #009BF3);text-overflow:ellipsis!important;font-size:16px!important;font-style:normal;font-weight:400;line-height:16px}.usage-text{color:var(--Gray-700, #344054);text-overflow:ellipsis;font-size:16px;font-style:normal;font-weight:400;line-height:17px}.h-450px{object-fit:contain!important}.store-title{color:var(--Black, #101828)!important;font-size:18px;font-weight:700;line-height:28px}.img-opc{width:100%!important;height:300px!important;border-radius:12px!important}.h-900px{min-height:auto!important;max-height:2800px!important}.select-wrapper{position:relative;display:inline-block;width:100%}.placeholder-overlay{position:absolute;color:var(--Gray-500, #667085);font-family:Inter;font-size:16px!important;font-style:normal;font-weight:400;top:10px;left:15px;pointer-events:none;font-size:1.1rem;z-index:1}.w-50{width:75%!important}.flagclour{color:red}.remarksTxt{margin-top:10px;font-family:Inter;font-size:18px;font-weight:400;line-height:28px;text-align:left}.no-text-transform{text-transform:none!important}.border-val1{padding:8px 14px!important;border-radius:8px!important;border:1px solid var(--Primary-500, #33B5FF)!important;background:var(--Primary-50, #EAF8FF)!important;box-shadow:0 1px 2px #1018280d!important}.font-task{color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}.border-default{padding:8px 14px!important;border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important}.font-defult-task{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}.nav-item .nav-link.active{border:none;border-radius:6px;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.nav-item .nav-link:hover{border:none}.badge-num-primary{border-radius:16px!important;background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;text-align:center;font-size:14px!important;font-style:normal;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.badge-num-muted{border-radius:16px!important;background:var(--Primary-50, #F2F4F7)!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:14px;font-style:normal;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.text-title{font-size:16px!important;font-weight:600!important;color:#101828!important;line-height:24px}.title-description{font-size:14px!important;font-weight:400;color:#101828!important;line-height:24px!important}.border-primary1{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:16px!important;font-weight:600;line-height:24px;text-transform:capitalize}.scroll-y{overflow-x:hidden;overflow-y:auto}.totalsize{width:18%}.view-detail{color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}.left-sidebar{position:sticky;top:0;width:33%;overflow-y:auto}.main-container{display:flex;align-items:flex-start}.right-content{flex-grow:1;width:67%}.bordercolor{border:1px solid var(--Gray-300, #D0D5DD)!important}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i8.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i8.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i9.DaterangepickerDirective, selector: "input[ngxDaterangepickerMd]", inputs: ["minDate", "maxDate", "autoApply", "alwaysShowCalendars", "showCustomRangeLabel", "linkedCalendars", "dateLimit", "singleDatePicker", "showWeekNumbers", "showISOWeekNumbers", "showDropdowns", "isInvalidDate", "isCustomDate", "isTooltipDate", "showClearButton", "customRangeDirection", "ranges", "opens", "drops", "firstMonthDayClass", "lastMonthDayClass", "emptyWeekRowClass", "emptyWeekColumnClass", "firstDayOfNextMonthClass", "lastDayOfPreviousMonthClass", "keepCalendarOpeningWithRange", "showRangeLabelOnInput", "showCancel", "lockStartDate", "timePicker", "timePicker24Hour", "timePickerIncrement", "timePickerSeconds", "closeOnAutoApply", "endKeyHolder", "startKey", "locale", "endKey"], outputs: ["change", "rangeClicked", "datesUpdated", "startDateChanged", "endDateChanged", "clearClicked"] }, { kind: "directive", type: i4.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: i10.ReactiveSelectComponent, selector: "lib-reactive-select", inputs: ["idField", "nameField", "label", "data"], outputs: ["itemChange"] }, { kind: "component", type: i11.CustomSelectComponent, selector: "lib-stores-select", inputs: ["items", "searchField", "multi", "idField", "selectedValues", "disabled", "label"], outputs: ["selected"] }, { kind: "component", type: i12.GroupSelectComponent, selector: "lib-group-select", inputs: ["items", "searchField", "multi", "idField", "selectedValues", "disabled", "label"], outputs: ["selected"] }, { kind: "component", type: i13.CustomsingleSelectComponent, selector: "lib-single-select", inputs: ["items", "searchField", "multi", "idField", "selectedValues", "disabled", "label"], outputs: ["selected"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.DatePipe, name: "date" }] });
|
|
2443
2472
|
}
|
|
2444
2473
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GalleryComponent, decorators: [{
|
|
2445
2474
|
type: Component,
|
|
2446
|
-
args: [{ selector: 'lib-gallery', template: "<div class=\"gallery-card po\">\r\n <div class=\"header mb-4\">Gallery</div>\r\n\r\n <form [formGroup]=\"galleryForm\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <div class=\"row\">\r\n <div class=\"col-md-3 mb-3\">\r\n <div class=\"position-relative\">\r\n <span style=\"top: 20%;\" class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14 z-2\" style=\"min-width: 260px !important;\"\r\n type=\"text\" matInput ngxDaterangepickerMd [drops]=\"'down'\"\r\n [opens]=\"'right'\" [alwaysShowCalendars]=\"false\" [keepCalendarOpeningWithRange]=\"true\"\r\n [showCancel]=\"false\" autocomplete=\"off\" [(ngModel)]=\"selectedDateRange\"\r\n [ngModelOptions]=\"{standalone: true}\" (datesUpdated)=\"datechange($event)\" (click)=\"resetValidation()\" \r\n (startDateChanged)=\"onStartDateChange($event)\" [isCustomDate]=\"isCustomDate\" [autoApply]=\"true\" \r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n name=\"daterange\" [readonly]=\"true\" />\r\n </div>\r\n </div>\r\n <div class=\"col-md-2 mb-4\">\r\n <lib-reactive-select formControlName=\"type\" [idField]=\"'value'\" [nameField]=\"'label'\"\r\n [data]=\"type\" (itemChange)=\"typeChange($event)\" ></lib-reactive-select>\r\n </div>\r\n <div class=\"col-md-4 mb-4\">\r\n <lib-single-select [items]=\"checklists\" [multi]=\"false\" [searchField]=\"'checkListName'\" [idField]=\"'checkListName'\"\r\n (selected)=\"checklistNamechange($event,false)\" [selectedValues]=\"[{checkListName:galleryForm.get('checklistName')?.value}]\"></lib-single-select>\r\n </div> \r\n <div class=\"col-md-3 mb-4\">\r\n <lib-reactive-select formControlName=\"answerType\" [idField]=\"'value'\" [nameField]=\"'label'\"\r\n [data]=\"answerType\"></lib-reactive-select>\r\n </div>\r\n <div class=\"col-md-2 mb-4\">\r\n\r\n <lib-reactive-select formControlName=\"filtertype\" [idField]=\"'value'\" [nameField]=\"'label'\"\r\n [data]=\"filtertype\" (itemChange)=\"filterChange($event)\" ></lib-reactive-select>\r\n\r\n </div>\r\n <div class=\"col-md-3 mb-4\" *ngIf=\"galleryForm.get('filtertype')?.value ==='Clusters'\">\r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(galleryForm.get('ClusterList')?.value?.length)\">\r\n Select cluster\r\n </div>\r\n <lib-group-select [items]=\"ClusterList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'groupName'\"\r\n [idField]=\"'groupName'\" (selected)=\"ongroupSelect($event)\"\r\n [selectedValues]=\"galleryForm.get('ClusterList')?.value\">\r\n </lib-group-select>\r\n </div>\r\n \r\n </div>\r\n <div class=\"col-md-3 mb-4\" *ngIf=\"galleryForm.get('filtertype')?.value ==='Teams'\">\r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(galleryForm.get('TeamsList')?.value?.length)\">\r\n Select Teams\r\n </div>\r\n <lib-group-select [items]=\"TeamsList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'teamName'\"\r\n [idField]=\"'teamName'\" (selected)=\"onTeamsSelect($event)\"\r\n [selectedValues]=\"galleryForm.get('TeamsList')?.value\">\r\n </lib-group-select>\r\n </div>\r\n \r\n </div>\r\n <div class=\"col-md-3 mb-4\" *ngIf=\"galleryForm.get('filtertype')?.value ==='Clusters'\">\r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(galleryForm.get('storeList')?.value?.length)\">\r\n Select Stores\r\n </div>\r\n <lib-stores-select [items]=\"storeList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'storeName'\"\r\n [idField]=\"'storeId'\" (selected)=\"onStoreSelect($event)\"\r\n [selectedValues]=\"galleryForm.get('storeList')?.value\"></lib-stores-select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-3 mb-4\" *ngIf=\"galleryForm.get('filtertype')?.value ==='Teams'\">\r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(galleryForm.get('userList')?.value?.length)\">\r\n Select users\r\n </div>\r\n <lib-stores-select [items]=\"userList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'userName'\"\r\n [idField]=\"'userName'\" (selected)=\"onUserSelect($event)\"\r\n [selectedValues]=\"galleryForm.get('userList')?.value\"></lib-stores-select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4 text-end\"> \r\n <div class=\"d-flex justify-content-end\"> \r\n <div class=\"me-5 w-100\" *ngIf=\"select == 'eyetest'\">\r\n <select class=\"form-select\" [(ngModel)]=\"category\" [ngModelOptions]=\"{standalone: true}\">\r\n <option value=\"all\">All</option>\r\n <option value=\"adults\">Adults</option>\r\n <option value=\"kids\">Kids</option>\r\n </select>\r\n </div>\r\n <div class=\"me-5 w-100\" *ngIf=\"select == 'cleaning'||select ==='scrum'\">\r\n <select class=\"form-select\" [(ngModel)]=\"category\" [ngModelOptions]=\"{standalone: true}\">\r\n <option value=\"all\">All</option>\r\n <option value=\"rejected\">Breached</option>\r\n <option value=\"approved\">Not-breached</option>\r\n </select>\r\n </div>\r\n <div class=\"me-5 w-100 text-start\" *ngIf=\"select == 'queuealert'\"> \r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(galleryForm.get('zoneList')?.value?.length)\" >\r\n Select Zone\r\n </div> \r\n <lib-stores-select [items]=\"zoneList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'value'\"\r\n [idField]=\"'key'\" (selected)=\"onzoneSelect($event)\"\r\n [selectedValues]=\"galleryForm.get('zoneList')?.value\"></lib-stores-select>\r\n </div>\r\n </div>\r\n <span class=\"me-4 mt-3\" *ngIf=\"showflag\"> \r\n <input formControlName=\"viewRedo\" change type=\"checkbox\" (click)=\"redoChanged($event)\"\r\n class=\"form-check-input cursor-pointer mt-1 me-2\" id=\"viewRedo\">\r\n <label class=\"checkbox-label\" for=\"viewRedo\">View Re-do\u2019s only</label>\r\n </span>\r\n <span class=\"me-3 mt-3\" *ngIf=\"showflag&&galleryForm.value.type=='checklist'\">\r\n \r\n \r\n <input formControlName=\"viewFlag\" change type=\"checkbox\" (click)=\"flagChanged($event)\"\r\n class=\"form-check-input cursor-pointer mt-1 me-2\" id=\"viewFlag\">\r\n <label class=\"checkbox-label\" for=\"viewFlag\">View flagged only</label>\r\n </span>\r\n <a (click)=\"onSubmit()\" type=\"submit\" class=\"btn btn-primary px-4 \"><span>Apply</span></a>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n \r\n\r\n </div>\r\n </form>\r\n</div>\r\n<div class=\"card my-2\">\r\n<div class=\"row main-container my-5 \">\r\n \r\n <div [ngClass]=\"showsidenav ? 'col-md-4 left-sidebar':'d-none'\" class=\"h-650px\">\r\n <div class=\"position-relative h-650px scroll-y\">\r\n <div class=\"card-body p-5\">\r\n <div class=\"checklist-left\">\r\n <div class=\"checklist-title\">{{checklistName}}</div>\r\n <div class=\"checklist-text\">{{checkListDescription}}</div>\r\n </div>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row mt-20\">\r\n <div class=\"col-lg-12 mt-20 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"w-50 h-300px\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title mt-0\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this checklist</div>\r\n </div>\r\n </div>\r\n </div>\r\n <section *ngIf=\"!noData && !loading\">\r\n\r\n <div *ngIf=\"select === 'custom'||select === 'task'\">\r\n <div class=\"text-end mt-10\">\r\n <!-- <button class=\"btn btn-outline w-25 me-3 btn-resize\" (click)=\"viewChecklists()\"> Reset </button> -->\r\n <button class=\"btn btn-outline w-25 me-3 btn-resize\" *ngIf=\"selectedSection.length>0||tempselectedSection.length>0\" (click)=\"onchecklistreset()\"> Reset </button>\r\n <button *ngIf=\"selectedSection.length>0||tempselectedSection.length>0\" class=\"btn btn-primary w-25 btn-resize\" (click)=\"selectsinglequestion()\">Apply</button>\r\n </div>\r\n <div class=\"my-6\" [ngClass]=\"selectedSection.length==0 ? 'view-all':'view-questions'\" style=\"cursor: pointer;\" (click)=\"onchecklistreset()\">\r\n View All Answers\r\n </div>\r\n <div class=\"mx-2\" *ngFor=\"let section of checklistData; let i=index;\">\r\n <div class=\"d-flex align-items-center justify-content-between mt-4\" style=\"cursor: pointer;\"\r\n (click)=\"accordian(i)\">\r\n <div class=\"fs-4 fw-bold section\" *ngIf=\"galleryForm.value.type=='checklist'\" >{{section.sectionName}}</div>\r\n <hr class=\"mx-2\">\r\n <svg class=\"cursor-pointer\" [ngClass]=\"{'rotate' : show !== i}\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"25\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div *ngIf=\"show===i\" class=\"question-left\">\r\n <div cdkDropList [cdkDropListData]=\"section.questions\">\r\n <div *ngFor=\"let question of section.questions;let j=index;\" class=\"d-flex my-2 q-btn\"\r\n cdkDrag>\r\n <input id=\"label\" [(ngModel)]=\"question.checked\" (click)=\"selectedQuestion($event,section,question)\" class=\"form-check-input cursor-pointer mt-2 me-4\" type=\"checkbox\" > \r\n <div class=\"editablecontent\" [ngClass]=\"question?.checked ? 'view-all':''\" style=\"cursor: pointer;\">\r\n {{question.qno}} . {{question.qname}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- </div> -->\r\n <div *ngIf=\"combinedChecklist.includes(select)\">\r\n <div class=\"text-end mt-10\">\r\n <button class=\"btn btn-outline w-25 me-3 btn-resize\" (click)=\"onreset()\"> Reset </button>\r\n <button class=\"btn btn-primary w-25 btn-resize\" (click)=\"onview()\">Apply</button>\r\n </div>\r\n <div class=\"dropdownselect h-900px scroll-y\">\r\n <div class=\"d-flex justify-content-left \" [ngClass]=\"selectAll ? 'backgroundBorder':'withoutbackground'\">\r\n <input\r\n class=\"form-check-input cursor-pointer me-4\" type=\"checkbox\" [(ngModel)]=\"selectAll\"\r\n (click)=\"selectAllStore($event)\"> <span [ngClass]=\"selectAll ? 'usage-detection':'usage-text'\">Select All</span>\r\n </div>\r\n <!-- dropdownbg -->\r\n <div class=\"my-4\" *ngFor=\"let list of mobileusageDataList;let i=index\">\r\n <div (change)=\"updateCheck($event,list)\" [ngClass]=\"list.checked ? 'backgroundBorder':'withoutbackground'\">\r\n <input id=\"label{{i}}\" class=\"form-check-input cursor-pointer me-4\" type=\"checkbox\" [(ngModel)]=\"list.checked\">\r\n <label for=\"label{{i}}\" [ngClass]=\"list.checked ? 'usage-detection':'usage-text'\" >{{list?.storeName}}</label>\r\n <span class=\"badge badge-light-primary detectionright\" *ngIf=\"list.detection\">{{list.detection}} Detections</span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n </section>\r\n \r\n </div>\r\n\r\n\r\n\r\n \r\n\r\n <div *ngIf=\"showsidenav\" (click)=\"sidenav()\" class=\"backButtonright text-center pt-1 cursor-pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M11 17L6 12L11 7M18 17L13 12L18 7\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"showsidenav ? 'col-md-8 border border-bottom-0 border-top-0 border-left border-5 right-sidebar':'col-md-12'\" >\r\n <div class=\"position-relative \">\r\n <div class=\"card-header border-0 px-0 my-0\" *ngIf=\"(select === 'custom' || select === 'task'||select == 'cleaning'||select ==='scrum'||select ==='storeopenandclose') && !viewloading && !viewnoData\" >\r\n <h3></h3>\r\n <!-- Switch toggle -->\r\n <div class=\"card-toolbar\" *ngIf=\"!galleryForm.value.viewRedo\">\r\n <div class=\"position-relative cursor-pointer me-10\">\r\n <div class=\" btn btn-primary form-control no-text-transform\" (click)=\"exportDet($event)\">\r\n {{ exportLabel }} <!-- Bind label text here -->\r\n </div>\r\n <div *ngIf=\"exportShow\"\r\n class=\"card py-2 position-absolute productdrop top-10 w-150px end-0 z-1\">\r\n <ul class=\"list-unstyled mb-2\">\r\n <li class=\"cursor-pointer py-4 checkbox-label mx-2\" *ngIf=\"(select === 'custom' || select === 'task'||select ==='storeopenandclose')\" type=\"button\" (click)=\"setExportAsPPT('Export as PDF','pdf')\">\r\n Export as PDF\r\n </li>\r\n <li class=\" cursor-pointer checkbox-label py-4 mx-2\" *ngIf=\"(select === 'custom' || select === 'task'||select == 'cleaning'||select ==='scrum'||select ==='storeopenandclose')\" type=\"button\" (click)=\"setExportAsPPT('Export as CSV','csv')\">\r\n Export as CSV\r\n </li>\r\n <li *ngIf=\"selectedSection.length>0||select == 'cleaning'||select ==='scrum'||select ==='storeopenandclose'\" class=\" cursor-pointer checkbox-label py-4 mx-2\" type=\"button\" (click)=\"setExportAsPPT('Export as PPT','ppt')\">\r\n Export as PPT\r\n </li>\r\n <li *ngIf=\"selectedSection.length>0||select == 'cleaning'||select ==='scrum'||select ==='storeopenandclose'\" class=\"cursor-pointer checkbox-label py-4 mx-2\" type=\"button\" (click)=\"setExportAsPPT('Export as ZIP','zipfiles')\">\r\n Export as ZIP\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n <div class=\"card-body p-0\">\r\n <div>\r\n <div *ngIf=\"viewloading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"viewnoData\" class=\"row mt-20\">\r\n <div class=\"col-lg-12 mt-20 mb-3\">\r\n <div class=\"card-body mt-20 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src mt-5 w-40\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this checklist</div>\r\n </div>\r\n </div>\r\n </div>\r\n <section *ngIf=\"!viewloading && !viewnoData\">\r\n <div *ngIf=\"select==='custom'||select==='task' \">\r\n <div *ngIf=\"showsingle\" class=\"qa-heading m-3 mx-11\">{{this.selectedSection[0]?.questions[0]}}</div>\r\n <div *ngIf=\"showsingle&&showfilter\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap mx-10\">\r\n <li class=\"nav-item\" *ngFor=\"let item of answerFilter\">\r\n <a (click)=\"taskTab(item)\" [ngClass]=\"galleryForm.value.filter === item.key ? 'active' : ''\" class=\"nav-link cursor-pointer no-border me-3\">\r\n {{item.key}}<span class=\"mx-2 \" [ngClass]=\"galleryForm.value.filter === item.key ? 'badge-num-primary' :'badge-num-muted'\">{{item.count}}</span>\r\n </a>\r\n </li>\r\n \r\n </ul>\r\n \r\n </div>\r\n \r\n <div *ngFor=\"let checklist of viewChecklistsData?.checklistAnswers\">\r\n \r\n <div class=\"text-center\" *ngIf=\"clientData.logo&&clientData.logo!==''&&showmulti\">\r\n <img class=\"mt-5 mb-3 text-center iconsize\" src=\"{{clientData.logo}}\">\r\n </div>\r\n \r\n\r\n <div class=\"row px-10 mt-5\" *ngIf=\"showmulti\">\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Store Name:</h3>\r\n </div>\r\n <div class=\"col-md-9\">\r\n <p class=\"uni-subtitle\">{{checklist?.storeProfile?.storeName}} </p>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\" *ngIf=\"galleryForm.value.type==='checklist'\">Checklist Name:</h3>\r\n <h3 class=\"uni-title\" *ngIf=\"galleryForm.value.type==='task'\">Task Name:</h3>\r\n\r\n </div>\r\n <div class=\"col-md-9\">\r\n <p class=\"uni-subtitle\">{{checklist?.checklistInfo?.checklistName}}</p>\r\n </div>\r\n\r\n <ng-container>\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">State & Country :</h3>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <p class=\"uni-subtitle\">{{checklist?.storeProfile?.state}}\r\n {{checklist?.storeProfile?.Country}}</p>\r\n </div>\r\n <div class=\"col-md-2\">\r\n <h3 class=\"uni-title\">Duration :</h3>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <p class=\"uni-subtitle\"> {{checklist?.checklistInfo?.duration}}</p>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">No. of Questions :</h3>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <p class=\"uni-subtitle\">{{checklist?.checklistInfo?.noofQuestions}}</p>\r\n </div>\r\n <div class=\"col-md-2\">\r\n <h3 class=\"uni-title\">Date :</h3>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <p class=\"uni-subtitle\"> {{checklist?.checklistInfo?.date}}</p>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Submitted By :</h3>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <p class=\"uni-subtitle\">{{checklist?.checklistInfo?.submittedBy}}</p>\r\n </div>\r\n <div class=\"col-md-2\">\r\n <h3 class=\"uni-title\">Time :</h3>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <p class=\"uni-subtitle\"> {{checklist?.checklistInfo?.time}}</p>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n \r\n\r\n <div class=\"row px-10\" >\r\n\r\n <div *ngFor=\"let questionlist of checklist.questionAnswer\">\r\n <div class=\"qa-bodrer my-5\" *ngFor=\"let question of questionlist.questions\">\r\n <div class=\"row\" *ngIf=\"question.redo||question.redo===false\">\r\n <div class=\"view-detail col-12 text-end cursor-pointer\" (click)=\"ViewInDetails(question,checklist?.checklistInfo,checklist?.storeProfile,questionlist)\">\r\n View in detail \r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M15 10.8333V15.8333C15 16.2754 14.8244 16.6993 14.5118 17.0118C14.1993 17.3244 13.7754 17.5 13.3333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V6.66667C2.5 6.22464 2.67559 5.80072 2.98816 5.48816C3.30072 5.17559 3.72464 5 4.16667 5H9.16667M12.5 2.5H17.5M17.5 2.5V7.5M17.5 2.5L8.33333 11.6667\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n \r\n <div class=\"row w-100 m-3\" *ngIf=\"showsingle\">\r\n <div class=\"col-md-4 text-title\">\r\n {{checklist?.storeProfile?.storeName}}\r\n </div>\r\n <div class=\"col-md-8 text-end title-description\">\r\n Submitted by : {{checklist?.checklistInfo?.submittedBy}} On : {{checklist?.checklistInfo?.date}} {{checklist?.checklistInfo?.time}}\r\n </div>\r\n </div>\r\n <ul>\r\n <li *ngIf=\"showmulti\" class=\"qa-heading\">{{question?.qno}}. {{question?.qname}}</li>\r\n <div class=\"Partially my-3 px-5\" *ngIf=\"question?.answerType==='descriptive'\">\r\n <div *ngFor=\"let item of question.userAnswer\">\r\n <div class=\"col-md-6\" *ngIf=\"question.questionReferenceImage!==''&&galleryForm.value.type=='checklist'&&question.questionReferenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div *ngIf=\"question.questionReferenceImage&&question.questionReferenceImage.length>0&&galleryForm.value.type=='task'&&question.questionReferenceImage[0] !== ''\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.questionReferenceImage\">\r\n <div *ngIf=\"item&&item!=''&&item!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n <span class=\"mt-2\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">{{item.answer}}</span>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"Partially my-3 px-5\" *ngIf=\"question?.answerType==='linearscale'\">\r\n <div *ngFor=\"let item of question.userAnswer\">\r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&question.questionReferenceImage!==''&&question.questionReferenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div *ngIf=\"question.questionReferenceImage&&question.questionReferenceImage.length>0&&galleryForm.value.type=='task'&&question.questionReferenceImage[0] !== ''\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.questionReferenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <!-- <br> -->\r\n <span class=\"mt-4\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">{{item.answer}}</span>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n </div>\r\n <div class=\"Partially my-3 px-5\" *ngIf=\"question?.answerType==='time'\">\r\n <div *ngFor=\"let item of question.userAnswer\">\r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&question.questionReferenceImage!==''&&question.questionReferenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div *ngIf=\"question.questionReferenceImage&&question.questionReferenceImage.length>0&&galleryForm.value.type=='task'&&question.questionReferenceImage[0] !== ''\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.questionReferenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <br>\r\n <span class=\"mt-4\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">{{item.answer}}</span>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <div class=\"Partially my-3 px-5\" *ngIf=\"question?.answerType==='date'\">\r\n <div *ngFor=\"let item of question.userAnswer\">\r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&question.questionReferenceImage!==''&&question.questionReferenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div *ngIf=\"question.questionReferenceImage&&question.questionReferenceImage.length>0&&galleryForm.value.type=='task'&&question.questionReferenceImage[0] !== ''\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.questionReferenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <br>\r\n <span class=\"mt-4\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">{{item.answer}}</span>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n <div class=\"Partially my-3 px-5\" *ngIf=\"question?.answerType==='yes/no'\">\r\n <div *ngFor=\"let item of question.userAnswer\">\r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&question.questionReferenceImage!==''&&question.questionReferenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <br *ngIf=\"galleryForm.value.type=='checklist'&&question.questionReferenceImage!==''&&question.questionReferenceImage!=null\">\r\n <div *ngIf=\"question.questionReferenceImage&&question.questionReferenceImage.length>0&&galleryForm.value.type=='task'&&question.questionReferenceImage[0] !== ''\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.questionReferenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <span class=\"mt-4\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">{{item.answer}}</span>\r\n <div class=\"row\" *ngIf=\"item.validation&&item.validationAnswer!=''\">\r\n <div class=\"col-md-6\" *ngIf=\"item.referenceImage!==''\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.referenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"title-ref my-3\" *ngIf=\"item.validationType=='Capture Image'||item.validationType=='Capture Video'\">Validation Answer</div>\r\n <img class=\"img-logo\" *ngIf=\"item.validationType=='Capture Image'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"\r\n alt=\"\">\r\n <video controls class=\"recap-img p-3\" *ngIf=\"item.validationType=='Capture Video'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"></video>\r\n </div>\r\n <span class=\"remarksTxt\" *ngIf=\"item.validationType=='Descriptive Answer'\">Validation Answer :{{item.validationAnswer}}</span>\r\n </div>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n </div> \r\n\r\n\r\n\r\n <div class=\"Partially my-3 px-5\" *ngIf=\"question?.answerType==='multiplechoicesingle'\">\r\n \r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&question.questionReferenceImage!=null&&question.questionReferenceImage!==''&&question.questionReferenceImage!==undefined\">\r\n <div class=\"title-ref my-3\">Reference Image</div> \r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n \r\n <div *ngIf=\"question.questionReferenceImage&&question.questionReferenceImage.length>0&&galleryForm.value.type=='task'&&question.questionReferenceImage[0] !== ''\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.questionReferenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <div *ngFor=\"let item of question.userAnswer\">\r\n <span class=\"mt-2\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">{{item.answer}}</span>\r\n <div class=\"col-md-6\" *ngIf=\"item.referenceImage!=null&&item.referenceImage!==''&&galleryForm.value.type=='checklist'\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.referenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div *ngIf=\"item.referenceImage.length>0&&galleryForm.value.type=='task'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of item.referenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"item.validation&&item.validationAnswer!=''\">\r\n <div class=\"title-ref my-3\" *ngIf=\"item.validationType=='Capture Image'||item.validationType=='Capture Video'\">Validation Answer</div>\r\n <img class=\"img-logo\" *ngIf=\"item.validationType=='Capture Image'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"\r\n alt=\"\">\r\n\r\n <video controls class=\"recap-img p-3\" *ngIf=\"item.validationType=='Capture Video'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"></video>\r\n \r\n <span *ngIf=\"item.validationType=='Descriptive Answer'\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">Validation Answer : {{item.validationAnswer}}</span>\r\n </div>\r\n </div>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n <div class=\"row px-5\" *ngIf=\"question?.answerType==='image'\">\r\n <div *ngFor=\"let answer of question.answers\">\r\n <div class=\"row\" *ngIf=\"answer.referenceImage.length>0&&galleryForm.value.type=='task'\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of answer.referenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&answer.referenceImage!==''&&answer.referenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{answer.referenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngFor=\"let item of question.userAnswer\">\r\n <!-- <div class=\"col-md-6\" *ngIf=\"item.referenceImage!=null&&item.referenceImage!==''&&galleryForm.value.type=='checklist'\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.referenceImage}}\"\r\n alt=\"\">\r\n </div> \r\n <div *ngIf=\"item.referenceImage.length>0&&galleryForm.value.type=='task'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of item.referenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n </div> -->\r\n <div class=\"col-md-6\">\r\n <div class=\"title-ref my-3\">Uploaded Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.answer}}\"\r\n alt=\"\">\r\n </div>\r\n <div class=\"col-md-6 mt-2\" *ngIf=\"item.validation&&item.validationAnswer!=''\">\r\n <div class=\"title-ref my-3\" *ngIf=\"item.validationType=='Capture Image'||item.validationType=='Capture Video'\">Validation Answer</div>\r\n <img class=\"img-logo\" *ngIf=\"item.validationType=='Capture Image'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"\r\n alt=\"\">\r\n <video controls class=\"recap-img p-3\" *ngIf=\"item.validationType=='Capture Video'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"></video>\r\n <span *ngIf=\"item.validationType=='Descriptive Answer'\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">Validation Answer : {{item.validationAnswer}}</span>\r\n </div>\r\n </div>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n\r\n\r\n\r\n <div class=\"row px-5\" *ngIf=\"question?.answerType==='multiplechoicemultiple'\">\r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&question.questionReferenceImage!==''&&question.questionReferenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div class=\"col-md-6\"></div>\r\n <div *ngIf=\"question.questionReferenceImage&&question.questionReferenceImage.length>0&&galleryForm.value.type=='task'&&question.questionReferenceImage[0] !== ''\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.questionReferenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <div class=\"Partially my-3 px-5\" *ngFor=\"let item of question.userAnswer\">\r\n <span class=\"mt-3\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">{{item.answer}}</span>\r\n <div class=\"col-md-6\" *ngIf=\"item.referenceImage!=null&&item.referenceImage!==''&&galleryForm.value.type=='checklist'\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.referenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div *ngIf=\"item.referenceImage.length>0&&galleryForm.value.type=='task'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of item.referenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6 mt-2\" *ngIf=\"item.validation&&item.validationAnswer&&item.validationAnswer!=''\">\r\n <div class=\"title-ref my-3\" *ngIf=\"item.validationType=='Capture Image'||item.validationType=='Capture Video'\">Validation Answer</div>\r\n <img class=\"img-logo\" *ngIf=\"item.validationType=='Capture Image'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"\r\n alt=\"\">\r\n <video controls class=\"recap-img p-3\" *ngIf=\"item.validationType=='Capture Video'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"></video>\r\n <span *ngIf=\"item.validationType=='Descriptive Answer'\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">Validation Answer : {{item.validationAnswer}}</span>\r\n </div>\r\n </div>\r\n \r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n\r\n\r\n\r\n\r\n <div class=\"row px-5\" *ngIf=\"question?.answerType==='descriptiveImage'\">\r\n <div *ngFor=\"let answer of question.answers\">\r\n <div class=\"row\" *ngIf=\"answer.referenceImage.length>0&&galleryForm.value.type=='task'\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of answer.referenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&answer.referenceImage!==''&&answer.referenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{answer.referenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngFor=\"let item of question.userAnswer\">\r\n <!-- <div class=\"col-md-6\" *ngIf=\"item.referenceImage!=null&&item.referenceImage!==''&&galleryForm.value.type=='checklist'\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.referenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div *ngIf=\"item.referenceImage.length>0&&galleryForm.value.type=='task'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of item.referenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n \r\n </div> -->\r\n <div class=\"col-md-6\">\r\n <div class=\"title-ref my-3\">Uploaded Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.answer}}\"\r\n alt=\"\">\r\n </div>\r\n <div class=\"col-md-6 mt-3\" *ngIf=\"item.validation&&item.validationAnswer!=''\">\r\n <div class=\"title-ref my-3\" *ngIf=\"item.validationType=='Capture Image'||item.validationType=='Capture Video'\">Validation Answer</div>\r\n <img class=\"img-logo\" *ngIf=\"item.validationType=='Capture Image'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"\r\n alt=\"\">\r\n <video controls class=\"recap-img p-3\" *ngIf=\"item.validationType=='Capture Video'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"></video>\r\n <span [ngClass]=\"item.sopFlag ? 'flagclour':''\" *ngIf=\"item.validationType=='Descriptive Answer'\">Validation Answer : {{item.validationAnswer}}</span>\r\n </div>\r\n </div>\r\n \r\n <div class=\"Partially my-3 px-5\" *ngIf=\"question.remarks!=''\">{{question.remarks}}</div>\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n <div class=\"row px-5\" *ngIf=\"question?.answerType==='video'\">\r\n <div *ngIf=\"question.questionReferenceImage&&question.questionReferenceImage.length>0&&galleryForm.value.type=='task'&&question.questionReferenceImage[0] !== ''\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.questionReferenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&question.questionReferenceImage!==''&&question.questionReferenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.userAnswer\">\r\n <div class=\"title-ref my-3\">Uploaded Video</div>\r\n\r\n <video controls class=\"recap-img p-3\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.answer}}\">\r\n </video>\r\n </div>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n\r\n\r\n\r\n\r\n <div class=\"row px-5\" *ngIf=\"question?.answerType==='multipleImage'\">\r\n <div *ngFor=\"let answer of question.answers\">\r\n <div class=\"row\" *ngIf=\"answer.referenceImage.length>0&&galleryForm.value.type=='task'\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of answer.referenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&answer.referenceImage!==''&&answer.referenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{answer.referenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.userAnswer\">\r\n <div class=\"title-ref my-3\">Uploaded Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.answer}}\"\r\n alt=\"\">\r\n <div class=\"col-md-6\" *ngIf=\"item.validation&&item.validationAnswer!=''\">\r\n <div class=\"title-ref my-3\" *ngIf=\"item.validationType=='Capture Image'||item.validationType=='Capture Video'\">Validation Answer</div>\r\n <img class=\"img-logo\" *ngIf=\"item.validationType=='Capture Image'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"\r\n alt=\"\">\r\n <video controls class=\"recap-img p-3\" *ngIf=\"item.validationType=='Capture Video'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"></video>\r\n <span *ngIf=\"item.validationType=='Descriptive Answer'\">Validation Answer : {{item.validationAnswer}}</span>\r\n </div>\r\n </div>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n \r\n </ul>\r\n <div class=\"row\">\r\n <div class=\"col-md-6 text-start\"> \r\n <!-- <button class=\"btn btn-secondary rounded-pill m-0 p-2\" *ngIf=\"question?.linkType&&question?.linkquestionenabled\">Linked to Question {{question.parentQuestion}}</button> -->\r\n </div>\r\n <div class=\"col-md-6 text-end\">\r\n <button class=\"btn btn-sm btn-default border-default me-3\" [disabled]=\"question.redo\" *ngIf=\"checktodayDate(checklist?.checklistInfo?.date)&&(gs.userAccess | async)?.userType !== 'tango'&&!checklist?.checklistInfo?.approvalStatus&&(gs.userAccess | async)?.TangoTrax_checklist_isEdit&&this.galleryForm.value.type =='checklist'\" (click)=\"addTask('redo',question,checklist?.checklistInfo,checklist?.storeProfile,questionlist)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_6004_11734)\">\r\n <path d=\"M19.1693 3.33331V8.33332M19.1693 8.33332H14.1693M19.1693 8.33332L15.3026 4.69998C14.407 3.80391 13.299 3.14932 12.0819 2.79729C10.8649 2.44527 9.57853 2.40727 8.34284 2.68686C7.10716 2.96645 5.96244 3.55451 5.01549 4.39616C4.06855 5.23782 3.35024 6.30564 2.9276 7.49998M0.835938 16.6666V11.6666M0.835938 11.6666H5.83594M0.835938 11.6666L4.7026 15.3C5.59823 16.1961 6.70625 16.8506 7.92328 17.2027C9.14031 17.5547 10.4267 17.5927 11.6624 17.3131C12.898 17.0335 14.0428 16.4455 14.9897 15.6038C15.9367 14.7621 16.655 13.6943 17.0776 12.5\" stroke=\"#344054\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_6004_11734\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <span class=\"ms-2 font-defult-task\">Redo</span>\r\n </button>\r\n <button class=\"btn btn-sm btn-default border-default me-3\" [disabled]=\"question.redo\" *ngIf=\"checktodayDate(checklist?.checklistInfo?.date)&&(gs.userAccess | async)?.userType !== 'tango'&&!checklist?.checklistInfo?.approvalStatus&&(gs.userAccess | async)?.TangoTrax_Task_isEdit&&this.galleryForm.value.type=='task'\" (click)=\"addTask('redo',question,checklist?.checklistInfo,checklist?.storeProfile,questionlist)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_6004_11734)\">\r\n <path d=\"M19.1693 3.33331V8.33332M19.1693 8.33332H14.1693M19.1693 8.33332L15.3026 4.69998C14.407 3.80391 13.299 3.14932 12.0819 2.79729C10.8649 2.44527 9.57853 2.40727 8.34284 2.68686C7.10716 2.96645 5.96244 3.55451 5.01549 4.39616C4.06855 5.23782 3.35024 6.30564 2.9276 7.49998M0.835938 16.6666V11.6666M0.835938 11.6666H5.83594M0.835938 11.6666L4.7026 15.3C5.59823 16.1961 6.70625 16.8506 7.92328 17.2027C9.14031 17.5547 10.4267 17.5927 11.6624 17.3131C12.898 17.0335 14.0428 16.4455 14.9897 15.6038C15.9367 14.7621 16.655 13.6943 17.0776 12.5\" stroke=\"#344054\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_6004_11734\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <span class=\"ms-2 font-defult-task\">Redo</span>\r\n </button>\r\n\r\n <button class=\"btn btn-sm border-val1\" *ngIf=\"!question.task&&!question.taskId&&this.galleryForm.value.type=='checklist'&&(gs.userAccess | async)?.userType !== 'tango'&&!checklist?.checklistInfo?.approvalStatus&& (gs.userAccess | async)?.TangoTrax_Task_isEdit\" (click)=\"addTask('createtask',question,checklist?.checklistInfo,checklist?.storeProfile,questionlist)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M11.6693 1.66675H5.0026C4.56058 1.66675 4.13665 1.84234 3.82409 2.1549C3.51153 2.46746 3.33594 2.89139 3.33594 3.33341V16.6667C3.33594 17.1088 3.51153 17.5327 3.82409 17.8453C4.13665 18.1578 4.56058 18.3334 5.0026 18.3334H15.0026C15.4446 18.3334 15.8686 18.1578 16.1811 17.8453C16.4937 17.5327 16.6693 17.1088 16.6693 16.6667V6.66675M11.6693 1.66675L16.6693 6.66675M11.6693 1.66675V6.66675H16.6693M10.0026 15.0001V10.0001M7.5026 12.5001H12.5026\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2 font-task\">Create Task</span>\r\n </button>\r\n <button *ngIf=\"question.task&&question.taskId &&this.galleryForm.value.type!=='task'\" class=\"btn btn-sm border-val1\" (click)=\"taskredirect(question,checklist?.storeProfile,checklist?.checklistInfo)\"><span class=\"font-task\">View Task</span></button>\r\n\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"px-10 my-5\" *ngIf=\"imageChecklist.includes(select)\">\r\n <div class=\"text-center\" *ngIf=\"clientData.logo&&clientData.logo!==''\">\r\n <img class=\"mt-5 mb-3 text-center iconsize\" src=\"{{clientData.logo}}\">\r\n </div>\r\n <div>\r\n <h2>Checklist Name : {{this.checklistName}}</h2>\r\n </div>\r\n <div class=\"qa-bodrer my-3 mt-5\" *ngFor=\"let item of mobileusageData\">\r\n <ul class=\"row w-100\">\r\n <li class=\"qa-heading\">\r\n {{item.storeName}}\r\n </li>\r\n <div class=\"row\">\r\n <div class=\"col-md-12 my-2\" *ngFor=\"let detection of item.imageUrl\">\r\n \r\n <div class=\"\">\r\n <img class=\"w-100 h-500px rounded-top\"\r\n src=\"{{environment.TraxAIchecklistCDN}}{{detection}}\" alt=\"\">\r\n <div class=\"text-center mt-3\" > {{this.checklistName}}</div> \r\n </div>\r\n </div>\r\n </div>\r\n </ul>\r\n </div>\r\n\r\n </div>\r\n <div class=\"px-10 my-5\" *ngIf=\"videoChecklist.includes(select)\">\r\n <div class=\"text-center\" *ngIf=\"clientData.logo&&clientData.logo!==''\">\r\n <img class=\"mt-5 mb-3 text-center iconsize\" src=\"{{clientData.logo}}\">\r\n </div>\r\n \r\n <div class=\"my-3 mt-5\" *ngFor=\"let item of customerunattendedData\">\r\n <div class=\"row px-10 mt-5\">\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Checklist Name:</h3>\r\n </div>\r\n <div class=\"col-md-9\">\r\n <p class=\"uni-subtitle\">: {{this.checklistName}} </p>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Store Name</h3>\r\n </div>\r\n <div class=\"col-md-9\">\r\n <p class=\"uni-subtitle\">: {{item.storeName}}</p>\r\n </div>\r\n </div> \r\n <ul class=\"row w-100 margin-top-side\">\r\n <li class=\"qa-heading\">\r\n \r\n </li>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\" *ngFor=\"let detection of item.imagesData\">\r\n <div class=\"row px-10 mt-5 margin-left-side\" *ngIf=\"select!='suspiciousactivity'\">\r\n <div class=\"col-md-3\" *ngIf=\"detection?.Answer\">\r\n <h3 class=\"uni-title\">Detection Status</h3>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"detection?.Answer\">\r\n <p class=\"uni-subtitle\">:<span class=\"ms-3 badge badge-light-danger\" *ngIf=\"detection?.Answer==='rejected'\">Breached</span>\r\n <span class=\"ms-3 badge badge-light-success\" *ngIf=\"detection?.Answer==='approved'\">Not-breached</span> </p>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Date</h3>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <p class=\"uni-subtitle\">: {{detection.date|date:'dd-MM-yyyy' }}</p>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"detection?.configTime\">\r\n <h3 class=\"uni-title\">Configured Time</h3>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"detection?.configTime\">\r\n <p class=\"uni-subtitle\">: {{detection.configTime }}</p>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"detection?.duration\">\r\n <h3 class=\"uni-title\">Duration</h3>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"detection?.duration\">\r\n <p class=\"uni-subtitle\">: {{detection.duration }} Mins</p>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"detection?.downTime\">\r\n <h3 class=\"uni-title\">Downtime</h3>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"detection?.downTime\">\r\n <p class=\"uni-subtitle\">: {{detection.downTime }} Mins <span ngbTooltip=\"Downtime may result in inaccurate data\" placement=\"top\" container=\"body\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"16\" viewBox=\"0 0 15 16\" fill=\"none\">\r\n <path d=\"M7.66667 5.33203V7.9987M7.66667 10.6654H7.67333M14.3333 7.9987C14.3333 11.6806 11.3486 14.6654 7.66667 14.6654C3.98477 14.6654 1 11.6806 1 7.9987C1 4.3168 3.98477 1.33203 7.66667 1.33203C11.3486 1.33203 14.3333 4.3168 14.3333 7.9987Z\" stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span></p>\r\n </div>\r\n </div> \r\n <div class=\"card-header border-0 min-h-45px px-0 my-0\">\r\n <h3 class=\"card-title\">\r\n <!-- <span class=\"me-3 store-title\">{{item.storeName}}</span> -->\r\n <span class=\"ms-2 badge badge-light-default\" *ngIf=\"detection?.customer_id\">Cust ID : {{detection.customer_id}}</span>\r\n <span class=\"ms-2 badge badge-light-default\" *ngIf=\"detection?.queue_id\">Queue ID : {{detection.queue_id}}</span>\r\n <span class=\"ms-2 badge badge-light-default\" *ngIf=\"detection?.optum_id\">Optum ID : {{detection.optum_id}}</span>\r\n <!-- <span class=\"ms-2 badge badge-light-default\" *ngIf=\"detection?.date\">Date : {{detection.date|date:'dd-MM-yyyy' }}</span> -->\r\n <!-- <span class=\"ms-3 badge badge-light-default\" *ngIf=\"detection?.configTime\">Inspection time : {{detection.configTime}}</span> -->\r\n <span class=\"ms-3 badge badge-light-default\" *ngIf=\"detection?.temp_id\">TempId : {{detection.temp_id}}</span>\r\n <span class=\"ms-3 badge badge-light-default\" *ngIf=\"detection?.time_spend\">Timespend : {{detection.time_spend}}Mins</span> \r\n \r\n </h3>\r\n \r\n <!-- Switch toggle -->\r\n <div class=\"card-toolbar\">\r\n <div class=\"col-md-12 text-end\">\r\n <span class=\"ms-3 badge badge-light-default\" *ngIf=\"detection?.entry_time\">Entry time : {{detection.entry_time}}</span> \r\n <span class=\"ms-3 badge badge-light-default\" *ngIf=\"detection?.exit_time\">Exit time : {{detection.exit_time}}</span> \r\n <span class=\"ms-3 badge badge-light-success\" *ngIf=\"detection?.adherence_rate\">Adherence Rate : {{detection.adherence_rate}}</span>\r\n <span class=\"ms-3 badge badge-light-primary text-capitalize\" *ngIf=\"detection?.category\"> {{detection.category}}</span>\r\n <span class=\"ms-3 badge badge-light-default\" *ngIf=\"detection?.customer_entry_time\">Entry time : {{detection.customer_entry_time}}</span>\r\n <span class=\"ms-3 badge badge-light-default\" *ngIf=\"detection?.customer_exit_time\">Exit time : {{detection.customer_exit_time}}</span> \r\n \r\n \r\n </div>\r\n </div>\r\n </div>\r\n \r\n \r\n <div class=\"my-0\" *ngIf=\"select !='eyetest'\">\r\n <video controls class=\"w-100 h-450px rounded-top\"\r\n src=\"{{environment.TraxAIchecklistCDN}}{{detection.video_path}}\" alt=\"\"> \r\n </video> \r\n </div>\r\n <div class=\"my-0\" *ngIf=\"select ==='eyetest'\">\r\n <video controls class=\"w-100 h-450px rounded-top\"\r\n src=\"{{environment.EyeTestCDN}}{{detection.video_path}}\" alt=\"\"> \r\n </video> \r\n </div>\r\n </div>\r\n </div>\r\n </ul>\r\n </div>\r\n\r\n </div>\r\n <div *ngIf=\"select ==='storeopenandclose'\">\r\n <div class=\"text-center\" *ngIf=\"clientData.logo&&clientData.logo!==''\">\r\n <img class=\"mt-5 mb-3 text-center iconsize\" src=\"{{clientData.logo}}\">\r\n </div>\r\n <div class=\"row px-10 mt-5\">\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Checklist Name:</h3>\r\n </div>\r\n <div class=\"col-md-9\">\r\n <p class=\"uni-subtitle\">: {{this.checklistName}} </p>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 margin-top-side\" *ngFor=\"let store of storeOpencloseView\">\r\n <div class=\" mx-8 my-8\" *ngFor=\"let item of store.imagesData\">\r\n <div class=\"row px-10 mt-5 margin-left-side \">\r\n <div class=\"col-md-3\" *ngIf=\"item?.buffer_open\">\r\n <h3 class=\"uni-title\">Buffer for Open Time :</h3>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"item?.buffer_open\">\r\n <p class=\"uni-subtitle\">: {{item.buffer_open }}</p>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"item?.buffer_close\">\r\n <h3 class=\"uni-title\">Buffer for Close Time :</h3>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"item?.buffer_close\">\r\n <p class=\"uni-subtitle\">: {{item.buffer_close }}</p>\r\n </div>\r\n <div class=\"col-md-3\" >\r\n <h3 class=\"uni-title\">Detection Status</h3>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"item?.Flag\">\r\n <p class=\"uni-subtitle\">:<span class=\"ms-3 badge badge-light-danger\" *ngIf=\"item?.Flag\">Breached</span>\r\n <span class=\"ms-3 badge badge-light-success\" *ngIf=\"!item?.Flag\">Not-breached</span> </p>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Date</h3>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <p class=\"uni-subtitle\">: {{item.date|date:'dd-MM-yyyy' }}</p>\r\n </div>\r\n </div> \r\n <div class=\"snapcard\">\r\n <div class=\"snapheader ms-6\">\r\n {{item.storeName}}\r\n </div>\r\n <div class=\"row m-0 w-100\">\r\n <div class=\"col-6\">\r\n <div class=\"img mt-4 px-3 position-relative\" *ngIf=\"!item.openTime\">\r\n <div class=\"preview align-items-center justify-content-center d-flex flex-column\">\r\n <span>\r\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"Group\">\r\n <path id=\"Vector\"\r\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n stroke=\"#667085\" stroke-width=\"2\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n \\\r\n <path id=\"Vector_2\"\r\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\r\n stroke=\"#667085\" stroke-width=\"2\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n </svg>\r\n \r\n </span>\r\n <span class=\"prvtxt mt-5 textclr\">Preview not\r\n available</span>\r\n <span class=\"refreshtxt mt-2 textclr\">The selected camera\r\n is not available at the moment.</span>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"item.openTime\">\r\n <img class=\"mx-1 img-opc\"\r\n src=\"{{environment.TraxOpenclosechecklistCDN}}{{item.storeId}}/{{item.dateString|date:'dd-MM-yyyy'}}/operation_snaps/open.jpeg\"\r\n alt=\"open close snap\">\r\n <div class=\"col-12\">\r\n <div class=\"d-flex flex-stack mx-1 mt-2\">\r\n <div>\r\n <div class=\"snaptext\">Opening Snap</div>\r\n <div class=\"snaptime\">{{item.openTime}} - {{item.date}}\r\n </div>\r\n </div>\r\n \r\n <span class=\"badge badge-light-primary snapbadge\"\r\n *ngIf=\"!item?.openTimeFlag\">On Time</span>\r\n <span class=\"badge badge-light-danger snapbadge\"\r\n *ngIf=\"item?.openTimeFlag\">Late Open</span>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n <div class=\"col-6\">\r\n <div class=\"img mt-4 px-3 position-relative\" *ngIf=\"!item.closeTime\">\r\n <div class=\"preview align-items-center justify-content-center d-flex flex-column\">\r\n <span>\r\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"Group\">\r\n <path id=\"Vector\"\r\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n stroke=\"#667085\" stroke-width=\"2\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n \\\r\n <path id=\"Vector_2\"\r\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\r\n stroke=\"#667085\" stroke-width=\"2\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n </svg>\r\n \r\n </span>\r\n <span class=\"prvtxt mt-5 textclr\">Preview not\r\n available</span>\r\n <span class=\"refreshtxt mt-2 textclr\">The selected camera\r\n is not available at the moment.</span>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"item.closeTime\">\r\n <img class=\"mx-1 img-opc\"\r\n src=\"{{environment.TraxOpenclosechecklistCDN}}{{item.storeId}}/{{item.dateString|date:'dd-MM-yyyy'}}/operation_snaps/close.jpeg\"\r\n alt=\"Checklist Video Player\">\r\n <div class=\"col-12\">\r\n <div class=\"d-flex flex-stack mx-1 \">\r\n <div>\r\n <div class=\"snaptext\">Closing Snap</div>\r\n <div class=\"snaptime\">{{item.closeTime}} - {{item.date}}\r\n </div>\r\n </div>\r\n <span class=\"badge badge-light-primary snapbadge\"\r\n *ngIf=\"!item?.closeTimeFlag\">On Time</span>\r\n <span class=\"badge badge-light-danger snapbadge\"\r\n *ngIf=\"item?.closeTimeFlag\">Early Close</span>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n \r\n\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n </div>\r\n <div *ngIf=\"select ==='queuealert'||select==='boxalert'||select==='suspiciousfootfall'\">\r\n <div class=\"text-center\" *ngIf=\"clientData.logo&&clientData.logo!==''\">\r\n <img class=\"mt-5 mb-3 text-center iconsize\" src=\"{{clientData.logo}}\">\r\n </div>\r\n <div class=\"col-md-12\" *ngFor=\"let store of queueAlertView\">\r\n <div class=\"row px-10 mt-5\" *ngIf=\"showmulti\">\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Store Name:</h3>\r\n </div>\r\n <div class=\"col-md-9\">\r\n <p class=\"uni-subtitle\">{{store?.storeName}} | {{store?.city}},{{store?.state}},{{store?.country}} </p>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Checklist Name:</h3>\r\n\r\n </div>\r\n <div class=\"col-md-9\">\r\n <p class=\"uni-subtitle\">{{checklistName}}</p>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"select==='boxalert'||select==='suspiciousfootfall'\">\r\n <h3 class=\"uni-title\">Description:</h3>\r\n </div>\r\n <div class=\"col-md-9\" *ngIf=\"select==='boxalert'||select==='suspiciousfootfall'\">\r\n <p class=\"uni-subtitle\">{{checkListDescription}}</p>\r\n </div>\r\n\r\n </div> \r\n <div class=\"row m-0 w-100 \" >\r\n <div class=\"col-4 mt-2\" *ngFor=\"let item of store.imagesData\">\r\n <div class=\"card bordercolor bg-secondary mt-8\">\r\n <div class=\"text-start ms-5 mt-2 mb-5\" >\r\n <div *ngIf=\"item.zone\">\r\n <span class=\"btn btn-secondary rounded-lg p-2\">{{item.zone}}</span>\r\n </div>\r\n \r\n <div class=\"mt-3 fw-semibold\">{{ item.date_timestamp }}</div>\r\n </div>\r\n <img class=\"w-100 h-250px rounded-bottom\" (click)=\"openModel(item)\"\r\n src=\"{{environment.TraxAIchecklistCDN}}{{item.path}}\" alt=\"\"> \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <lib-pagination *ngIf=\"!viewloading && !viewnoData\" [itemsPerPage]=\"limit\" [currentPage]=\"offset\" [totalItems]=\"totalCount\"\r\n [paginationSizes]='paginationSizes' [pageSize]=\"limit\"\r\n (pageChange)=\"onPageChangeview($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </section>\r\n </div>\r\n\r\n\r\n\r\n </div>\r\n <div *ngIf=\"!showsidenav\" (click)=\"sidenav()\" class=\"backButtonleft text-center pt-1 cursor-pointer\">\r\n <svg class=\"mt-2 ms-2\" xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n d=\"M9.72714 12.6365L13.3635 9.00013L9.72714 5.36377M4.63623 12.6365L8.27259 9.00013L4.63623 5.36377\"\r\n stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n</div> \r\n<div class=\"row card mx-0 p-3 \" *ngIf=\"checkAIchecklist()\">\r\n <div class=\"col-md-12 text-end\">\r\n<button class=\"btn btn-sm border-primary1\" [disabled]=\"!approvalStatus\" (click)=\"appoveChecklist()\">Approve\r\n</button>\r\n</div>\r\n</div>\r\n<ng-template #zoomPopup let-model>\r\n <div class=\"p-8\">\r\n <div class=\"modal-header pt-0 ps-1 pe-0\">\r\n <div>\r\n <div class=\"text-start mt-2\">\r\n <div *ngIf=\"viewImage.zone\">\r\n <span class=\"btn btn-secondary rounded-lg p-2\">{{viewImage.zone}}</span>\r\n </div>\r\n <div *ngIf=\"viewImage.emptyBoxCount\">\r\n <span >Empty shelves : {{viewImage.emptyBoxCount}}</span>\r\n </div>\r\n \r\n <div *ngIf=\"viewImage.entry_time\">\r\n <span >Entry Time : {{viewImage.entry_time}}</span>\r\n </div>\r\n <div *ngIf=\"viewImage.exit_time\">\r\n <span >Exit Time : {{viewImage.exit_time}}</span>\r\n </div>\r\n <div *ngIf=\"viewImage.temp_id\">\r\n <span >Temp Id : {{viewImage.temp_id}}</span>\r\n </div>\r\n <div *ngIf=\"viewImage.time_spend\">\r\n <span >Time Spend : {{viewImage.time_spend}} Mins</span>\r\n </div>\r\n \r\n <div class=\"mt-2\" *ngIf=\"viewImage.threshold&&viewImage.Dwelltime\"><p>If the queue exceeds {{viewImage.threshold}} people and wait time surpasses {{viewImage.Dwelltime}} minutes, an alert will be triggered</p></div>\r\n <div class=\"mt-3 fw-semibold\">{{ viewImage.date_timestamp }}</div>\r\n </div>\r\n \r\n </div>\r\n <div data-bs-dismiss=\"modal\">\r\n <!-- <span class=\"stream fw-semibold text-nowrap me-5\" *ngIf=\"camera.height && camera.width\"> Resolution: {{camera.height}} X {{camera.width}}</span> -->\r\n <span class=\"btn btn-sm btn-icon btn-active-color-primary me-0\" (click)=\"model.dismiss()\"><svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M15 5L5 15M5 5L15 15\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"viewImage.path\" class=\"mt-2 overflow-auto\">\r\n <img class=\"rounded-4 mt-5 img-popup-src w-100\" src=\"{{environment.TraxAIchecklistCDN}}{{viewImage.path}}\">\r\n </div>\r\n\r\n \r\n </div>\r\n\r\n</ng-template>", styles: [".gallery-card{padding:24px;border-radius:12px;background:#fff}.gallery-card .header{color:#101828;font-size:18px;font-weight:500;line-height:28px}.img{border-radius:10px;border:1px solid var(--Gray-500, #667085);background:var(--Gray-100, #F2F4F7);width:100%;height:230px}.prvtxt{color:var(--Gray-500, #667085);font-family:Inter;font-size:20px;font-style:normal;font-weight:700;line-height:20px;letter-spacing:-.4px}.refreshtxt{color:var(--Gray-400, #98A2B3);font-family:Inter;font-size:12px;font-style:normal;font-weight:500;line-height:18px}::ng-deep .applyBtn{display:none!important}::ng-deep .custom-height-modal .modal-dialog{max-height:80vh;height:80vh}::ng-deep .custom-height-modal .modal-content{overflow:auto;max-height:100%}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .md-drppicker.shown.drops-down-right{transform-origin:0 0;width:560px!important}:host::ng-deep .daterangepicker-input+.ngx-daterangepicker-material .applyBtn{display:none}:host::ng-deep .md-drppicker.drops-down-right.ltr.show-ranges.shown{top:65px!important}:host::ng-deep .md-drppicker.drops-down-right.ltr.double.show-ranges.shown{top:65px!important;right:-475px!important;left:unset!important;height:400px!important}:host::ng-deep .md-drppicker .btn{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}:host::ng-deep .md-drppicker .ranges ul li button{padding:12px 16px;width:160px;color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:20px;background:none;border:none;text-align:left;cursor:pointer}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important;border-radius:20px!important;color:var(--White, #FFF)!important;text-align:center!important;font-size:14px!important;font-weight:500!important;line-height:20px}:host::ng-deep .md-drppicker.ltr .ranges{float:left;margin-top:10px!important}:host::ng-deep .md-drppicker td.in-range{background:var(--Primary-50, #EAF8FF)}:host::ng-deep .md-drppicker .ranges ul li button.active{background:var(--Primary-50, #EAF8FF)!important;border-radius:8px!important;color:var(--Primary-700, #009BF3);font-size:14px!important;font-weight:500!important;line-height:20px!important}:host::ng-deep table th,:host::ng-deep table td{width:40px!important;height:40px!important;padding:10px 8px!important}:host::ng-deep .md-drppicker td.available.prev,:host::ng-deep .md-drppicker th.available.prev{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker td.available.next,:host::ng-deep .md-drppicker th.available.next{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep table th{border-bottom:0px solid var(--Gray-200, #EAECF0)!important;background:transparent!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:16px!important;font-weight:500!important;line-height:24px}:host::ng-deep .md-drppicker .btn.btn-default{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize;margin-right:10px!important}:host::ng-deep .md-drppicker td.available.invalid-date{text-decoration:line-through;pointer-events:none;color:#a9a9a9}:host::ng-deep .md-drppicker td.available.today:not(.invalid-date){text-decoration:unset;pointer-events:unset;color:unset}.btn-primary{line-height:18px!important}.checkbox-label{color:#344054;font-size:14px;font-weight:500;line-height:20px;cursor:pointer}.checklist-left .checklist-title{overflow:hidden;color:var(--Black, #101828)!important;text-overflow:ellipsis;font-size:18px!important;font-weight:500;line-height:28px}.checklist-left .checklist-text{overflow:hidden;color:var(--Black, #101828)!important;text-overflow:ellipsis;font-size:12px!important;font-weight:400!important;line-height:18px}.section{display:inline-block;width:600px;white-space:nowrap;outline:none!important;border:none!important;box-shadow:none!important;overflow:hidden!important;text-overflow:ellipsis!important;color:var(--Black, #101828)!important;font-size:16px!important;font-weight:500!important}.card hr{width:-webkit-fill-available}.editablecontent{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:400!important;line-height:24px}.rotate{transform:rotate(180deg);transition:1s}.question-left{color:var(--Gray-700, #344054)!important;font-size:16px;font-weight:400;line-height:24px}.view-all{padding:12px!important;border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-500, #33B5FF)!important;font-size:16px!important;font-weight:600!important;line-height:24px;text-decoration-line:underline!important}.view-questions{padding:12px!important;border-radius:6px!important;color:var(--Primary-500, #33B5FF)!important;font-size:16px!important;font-weight:600!important;line-height:24px;text-decoration-line:underline!important}.iconsize{width:110px;height:110px}.margin-left-side{margin-left:-35px}.margin-top-side{margin-top:-15px}input[type=checkbox]{width:16px!important;height:16px!important;margin:0;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-300, #D0D5DD);box-shadow:none;font-size:.8em;text-align:center;line-height:1em;background:#fff}input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF);background-color:var(--primary-50, #EAF8FF)}input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.5em;padding-left:0!important;padding-top:8px;padding-right:5px}.uni-title{color:#000!important;font-size:18px!important;font-weight:600!important;line-height:28px}.uni-subtitle{color:#000!important;font-size:18px!important;font-weight:400!important;line-height:28px}.qa-heading{color:var(--Black, #101828)!important;font-size:18px!important;font-weight:700!important;line-height:28px;list-style:none}.qa-bodrer{padding:16px!important;border-radius:8px!important;border:1px solid var(--Gray-200, #EAECF0)!important;background:var(--text-primary, #FFF)!important;box-shadow:0 1px 3px #1018281a,0 1px 2px #1018280f!important}.title-ref{color:var(--Gray-900, #101828)!important;font-size:16px!important;font-weight:400!important;line-height:24px}.btn-outline-primary{border-radius:8px!important;border:1px solid var(--Primary-500, #33B5FF)!important;background:var(--Primary-50, #EAF8FF)!important;box-shadow:0 1px 2px #1018280d!important;padding:calc(.7rem + 0px) calc(1.5rem + 1px)!important}.Partially{color:#000;font-size:18px!important;font-style:italic!important;font-weight:500;line-height:28px}.task-remarks{color:#000!important;font-size:18px!important;font-weight:400!important;line-height:28px}.backButtonright{border-radius:1000px!important;background:var(--text-primary, #FFF)!important;padding:12px!important;box-shadow:0 12px 16px -4px #10182814,0 4px 6px -2px #10182808!important;box-shadow:0 8.727px 11.636px -2.909px #10182814,0 2.909px 4.364px -1.455px #10182808!important;position:absolute;top:30px;right:-10px;z-index:0}.backButtonleft{border-radius:1000px!important;background:#fff;padding:14px!important;border:var(--Gray-300, #D0D5DD);box-shadow:0 8.727px 11.636px -2.909px #10182814,0 2.909px 4.364px -1.455px #10182808;position:absolute;top:30px;left:-20px;z-index:5}img.img-logo{width:100%;height:400px!important}.recap-img{width:100%;height:400px;object-fit:cover!important}.img-src{width:30%!important;height:20%!important}.dropdownselect{padding:20px 10px}.dropdownbg{width:Fill(372px) px;height:Hug(40px) px;padding:8px 16px;gap:0px;border-radius:6px 0 0;justify-content:space-between;opacity:0px;background:#eaf8ff}.detectionright{color:var(--Primary-700, #009BF3)!important;text-align:center;font-size:14px!important;font-weight:500;line-height:14px;float:right!important;mix-blend-mode:multiply}.backgroundBorder{background:#eaf8ff!important;color:#00a3ff!important;padding:12px;border-radius:8px;font-weight:500;line-height:10px}.withoutbackground{padding:8px;font-weight:500;line-height:10px}.snapcard{display:flex;padding:16px;flex-direction:column;align-items:flex-start;gap:16px;align-self:stretch;border-radius:8px;border:1px solid var(--Gray-200, #EAECF0);background:var(--White, #FFF);box-shadow:0 1px 3px #1018281a,0 1px 2px #1018280f}.snapheader{color:var(--Black, #101828);font-size:16px;font-style:normal;font-weight:600;line-height:24px}.snaptext{color:var(--Gray-900, #101828);font-size:16px!important;font-style:normal;font-weight:600!important;line-height:24px}.snaptime{color:var(--Gray-900, #101828);font-size:12px!important;font-style:normal;font-weight:500!important;line-height:22px}.snapbadge{text-align:center;font-size:14px!important;font-style:normal;font-weight:500!important;line-height:20px}.btn-resize{font-size:13px!important;height:29px!important;line-height:11px!important;padding:1px!important}.preview{position:absolute;top:30%;left:14%}.w-25{width:17%!important}.w-40{width:40%!important}.usage-detection{color:var(--Primary-700, #009BF3);text-overflow:ellipsis!important;font-size:16px!important;font-style:normal;font-weight:400;line-height:16px}.usage-text{color:var(--Gray-700, #344054);text-overflow:ellipsis;font-size:16px;font-style:normal;font-weight:400;line-height:17px}.h-450px{object-fit:contain!important}.store-title{color:var(--Black, #101828)!important;font-size:18px;font-weight:700;line-height:28px}.img-opc{width:100%!important;height:300px!important;border-radius:12px!important}.h-900px{min-height:auto!important;max-height:2800px!important}.select-wrapper{position:relative;display:inline-block;width:100%}.placeholder-overlay{position:absolute;color:var(--Gray-500, #667085);font-family:Inter;font-size:16px!important;font-style:normal;font-weight:400;top:10px;left:15px;pointer-events:none;font-size:1.1rem;z-index:1}.w-50{width:75%!important}.flagclour{color:red}.remarksTxt{margin-top:10px;font-family:Inter;font-size:18px;font-weight:400;line-height:28px;text-align:left}.no-text-transform{text-transform:none!important}.border-val1{padding:8px 14px!important;border-radius:8px!important;border:1px solid var(--Primary-500, #33B5FF)!important;background:var(--Primary-50, #EAF8FF)!important;box-shadow:0 1px 2px #1018280d!important}.font-task{color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}.border-default{padding:8px 14px!important;border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important}.font-defult-task{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}.nav-item .nav-link.active{border:none;border-radius:6px;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.nav-item .nav-link:hover{border:none}.badge-num-primary{border-radius:16px!important;background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;text-align:center;font-size:14px!important;font-style:normal;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.badge-num-muted{border-radius:16px!important;background:var(--Primary-50, #F2F4F7)!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:14px;font-style:normal;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.text-title{font-size:16px!important;font-weight:600!important;color:#101828!important;line-height:24px}.title-description{font-size:14px!important;font-weight:400;color:#101828!important;line-height:24px!important}.border-primary1{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:16px!important;font-weight:600;line-height:24px;text-transform:capitalize}.scroll-y{overflow-x:hidden;overflow-y:auto}.totalsize{width:18%}.view-detail{color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}.left-sidebar{position:sticky;top:0;width:33%;overflow-y:auto}.main-container{display:flex;align-items:flex-start}.right-content{flex-grow:1;width:67%}.bordercolor{border:1px solid var(--Gray-300, #D0D5DD)!important}\n"] }]
|
|
2475
|
+
args: [{ selector: 'lib-gallery', template: "<div class=\"gallery-card po\">\r\n <div class=\"header mb-4\">Gallery</div>\r\n\r\n <form [formGroup]=\"galleryForm\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <div class=\"row\">\r\n <div class=\"col-md-3 mb-3\">\r\n <div class=\"position-relative\">\r\n <span style=\"top: 20%;\" class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14 z-2\" style=\"min-width: 260px !important;\"\r\n type=\"text\" matInput ngxDaterangepickerMd [drops]=\"'down'\"\r\n [opens]=\"'right'\" [alwaysShowCalendars]=\"false\" [keepCalendarOpeningWithRange]=\"true\"\r\n [showCancel]=\"false\" autocomplete=\"off\" [(ngModel)]=\"selectedDateRange\"\r\n [ngModelOptions]=\"{standalone: true}\" (datesUpdated)=\"datechange($event)\" (click)=\"resetValidation()\" \r\n (startDateChanged)=\"onStartDateChange($event)\" [isCustomDate]=\"isCustomDate\" [autoApply]=\"true\" \r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n name=\"daterange\" [readonly]=\"true\" />\r\n </div>\r\n </div>\r\n <div class=\"col-md-2 mb-4\">\r\n <lib-reactive-select formControlName=\"type\" [idField]=\"'value'\" [nameField]=\"'label'\"\r\n [data]=\"type\" (itemChange)=\"typeChange($event)\" ></lib-reactive-select>\r\n </div>\r\n <div class=\"col-md-4 mb-4\">\r\n <lib-single-select [items]=\"checklists\" [multi]=\"false\" [searchField]=\"'checkListName'\" [idField]=\"'checkListName'\"\r\n (selected)=\"checklistNamechange($event,false)\" [selectedValues]=\"[{checkListName:galleryForm.get('checklistName')?.value}]\"></lib-single-select>\r\n </div> \r\n <div class=\"col-md-3 mb-4\">\r\n <lib-reactive-select formControlName=\"answerType\" [idField]=\"'value'\" [nameField]=\"'label'\"\r\n [data]=\"answerType\"></lib-reactive-select>\r\n </div>\r\n <div class=\"col-md-2 mb-4\">\r\n\r\n <lib-reactive-select formControlName=\"filtertype\" [idField]=\"'value'\" [nameField]=\"'label'\"\r\n [data]=\"filtertype\" (itemChange)=\"filterChange($event)\" ></lib-reactive-select>\r\n\r\n </div>\r\n <div class=\"col-md-3 mb-4\" *ngIf=\"galleryForm.get('filtertype')?.value ==='Clusters'\">\r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(galleryForm.get('ClusterList')?.value?.length)\">\r\n Select cluster\r\n </div>\r\n <lib-group-select [items]=\"ClusterList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'groupName'\"\r\n [idField]=\"'groupName'\" (selected)=\"ongroupSelect($event)\"\r\n [selectedValues]=\"galleryForm.get('ClusterList')?.value\">\r\n </lib-group-select>\r\n </div>\r\n \r\n </div>\r\n <div class=\"col-md-3 mb-4\" *ngIf=\"galleryForm.get('filtertype')?.value ==='Teams'\">\r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(galleryForm.get('TeamsList')?.value?.length)\">\r\n Select Teams\r\n </div>\r\n <lib-group-select [items]=\"TeamsList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'teamName'\"\r\n [idField]=\"'teamName'\" (selected)=\"onTeamsSelect($event)\"\r\n [selectedValues]=\"galleryForm.get('TeamsList')?.value\">\r\n </lib-group-select>\r\n </div>\r\n \r\n </div>\r\n <div class=\"col-md-3 mb-4\" *ngIf=\"galleryForm.get('filtertype')?.value ==='Clusters'\">\r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(galleryForm.get('storeList')?.value?.length)\">\r\n Select Stores\r\n </div>\r\n <lib-stores-select [items]=\"storeList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'storeName'\"\r\n [idField]=\"'storeId'\" (selected)=\"onStoreSelect($event)\"\r\n [selectedValues]=\"galleryForm.get('storeList')?.value\"></lib-stores-select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-3 mb-4\" *ngIf=\"galleryForm.get('filtertype')?.value ==='Teams'\">\r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(galleryForm.get('userList')?.value?.length)\">\r\n Select users\r\n </div>\r\n <lib-stores-select [items]=\"userList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'userName'\"\r\n [idField]=\"'userName'\" (selected)=\"onUserSelect($event)\"\r\n [selectedValues]=\"galleryForm.get('userList')?.value\"></lib-stores-select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4 text-end\"> \r\n <div class=\"d-flex justify-content-end\"> \r\n <div class=\"me-5 w-100\" *ngIf=\"select == 'eyetest'\">\r\n <select class=\"form-select\" [(ngModel)]=\"category\" [ngModelOptions]=\"{standalone: true}\">\r\n <option value=\"all\">All</option>\r\n <option value=\"adults\">Adults</option>\r\n <option value=\"kids\">Kids</option>\r\n </select>\r\n </div>\r\n <div class=\"me-5 w-100\" *ngIf=\"select == 'cleaning'||select ==='scrum'\">\r\n <select class=\"form-select\" [(ngModel)]=\"category\" [ngModelOptions]=\"{standalone: true}\">\r\n <option value=\"all\">All</option>\r\n <option value=\"rejected\">Breached</option>\r\n <option value=\"approved\">Not-breached</option>\r\n </select>\r\n </div>\r\n <div class=\"me-5 w-100 text-start\" *ngIf=\"select == 'queuealert'\"> \r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(galleryForm.get('zoneList')?.value?.length)\" >\r\n Select Zone\r\n </div> \r\n <lib-stores-select [items]=\"zoneList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'value'\"\r\n [idField]=\"'key'\" (selected)=\"onzoneSelect($event)\"\r\n [selectedValues]=\"galleryForm.get('zoneList')?.value\"></lib-stores-select>\r\n </div>\r\n </div>\r\n <span class=\"me-4 mt-3\" *ngIf=\"showflag\"> \r\n <input formControlName=\"viewRedo\" change type=\"checkbox\" (click)=\"redoChanged($event)\"\r\n class=\"form-check-input cursor-pointer mt-1 me-2\" id=\"viewRedo\">\r\n <label class=\"checkbox-label\" for=\"viewRedo\">View Re-do\u2019s only</label>\r\n </span>\r\n <span class=\"me-3 mt-3\" *ngIf=\"showflag&&galleryForm.value.type=='checklist'\">\r\n \r\n \r\n <input formControlName=\"viewFlag\" change type=\"checkbox\" (click)=\"flagChanged($event)\"\r\n class=\"form-check-input cursor-pointer mt-1 me-2\" id=\"viewFlag\">\r\n <label class=\"checkbox-label\" for=\"viewFlag\">View flagged only</label>\r\n </span>\r\n <a (click)=\"onSubmit()\" type=\"submit\" class=\"btn btn-primary px-4 \"><span>Apply</span></a>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n \r\n\r\n </div>\r\n </form>\r\n</div>\r\n<div class=\"card my-2\">\r\n<div class=\"row main-container my-5 \">\r\n \r\n <div [ngClass]=\"showsidenav ? 'col-md-4 left-sidebar':'d-none'\" class=\"h-650px\">\r\n <div class=\"position-relative h-650px scroll-y\">\r\n <div class=\"card-body p-5\">\r\n <div class=\"checklist-left\">\r\n <div class=\"checklist-title\">{{checklistName}}</div>\r\n <div class=\"checklist-text\">{{checkListDescription}}</div>\r\n </div>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row mt-20\">\r\n <div class=\"col-lg-12 mt-20 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"w-50 h-300px\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title mt-0\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this checklist</div>\r\n </div>\r\n </div>\r\n </div>\r\n <section *ngIf=\"!noData && !loading\">\r\n\r\n <div *ngIf=\"select === 'custom'||select === 'task'\">\r\n <div class=\"text-end mt-10\">\r\n <!-- <button class=\"btn btn-outline w-25 me-3 btn-resize\" (click)=\"viewChecklists()\"> Reset </button> -->\r\n <button class=\"btn btn-outline w-25 me-3 btn-resize\" *ngIf=\"selectedSection.length>0||tempselectedSection.length>0\" (click)=\"onchecklistreset()\"> Reset </button>\r\n <button *ngIf=\"selectedSection.length>0||tempselectedSection.length>0\" class=\"btn btn-primary w-25 btn-resize\" (click)=\"selectsinglequestion()\">Apply</button>\r\n </div>\r\n <div class=\"my-6\" [ngClass]=\"selectedSection.length==0 ? 'view-all':'view-questions'\" style=\"cursor: pointer;\" (click)=\"onchecklistreset()\">\r\n View All Answers\r\n </div>\r\n <div class=\"mx-2\" *ngFor=\"let section of checklistData; let i=index;\">\r\n <div class=\"d-flex align-items-center justify-content-between mt-4\" style=\"cursor: pointer;\"\r\n (click)=\"accordian(i)\">\r\n <div class=\"fs-4 fw-bold section\" *ngIf=\"galleryForm.value.type=='checklist'\" >{{section.sectionName}}</div>\r\n <hr class=\"mx-2\">\r\n <svg class=\"cursor-pointer\" [ngClass]=\"{'rotate' : show !== i}\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"25\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div *ngIf=\"show===i\" class=\"question-left\">\r\n <div cdkDropList [cdkDropListData]=\"section.questions\">\r\n <div *ngFor=\"let question of section.questions;let j=index;\" class=\"d-flex my-2 q-btn\"\r\n cdkDrag>\r\n <input id=\"label\" [(ngModel)]=\"question.checked\" (click)=\"selectedQuestion($event,section,question)\" class=\"form-check-input cursor-pointer mt-2 me-4\" type=\"checkbox\" > \r\n <div class=\"editablecontent\" [ngClass]=\"question?.checked ? 'view-all':''\" style=\"cursor: pointer;\">\r\n {{question.qno}} . {{question.qname}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- </div> -->\r\n <div *ngIf=\"combinedChecklist.includes(select)\">\r\n <div class=\"text-end mt-10\">\r\n <button class=\"btn btn-outline w-25 me-3 btn-resize\" (click)=\"onreset()\"> Reset </button>\r\n <button class=\"btn btn-primary w-25 btn-resize\" (click)=\"onview()\">Apply</button>\r\n </div>\r\n <div class=\"dropdownselect h-900px scroll-y\">\r\n <div class=\"d-flex justify-content-left \" [ngClass]=\"selectAll ? 'backgroundBorder':'withoutbackground'\">\r\n <input\r\n class=\"form-check-input cursor-pointer me-4\" type=\"checkbox\" [(ngModel)]=\"selectAll\"\r\n (click)=\"selectAllStore($event)\"> <span [ngClass]=\"selectAll ? 'usage-detection':'usage-text'\">Select All</span>\r\n </div>\r\n <!-- dropdownbg -->\r\n <div class=\"my-4\" *ngFor=\"let list of mobileusageDataList;let i=index\">\r\n <div (change)=\"updateCheck($event,list)\" [ngClass]=\"list.checked ? 'backgroundBorder':'withoutbackground'\">\r\n <input id=\"label{{i}}\" class=\"form-check-input cursor-pointer me-4\" type=\"checkbox\" [(ngModel)]=\"list.checked\">\r\n <label for=\"label{{i}}\" [ngClass]=\"list.checked ? 'usage-detection':'usage-text'\" >{{list?.storeName}}</label>\r\n <span class=\"badge badge-light-primary detectionright\" *ngIf=\"list.detection\">{{list.detection}} Detections</span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n </section>\r\n \r\n </div>\r\n\r\n\r\n\r\n \r\n\r\n <div *ngIf=\"showsidenav\" (click)=\"sidenav()\" class=\"backButtonright text-center pt-1 cursor-pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M11 17L6 12L11 7M18 17L13 12L18 7\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"showsidenav ? 'col-md-8 border border-bottom-0 border-top-0 border-left border-5 right-sidebar':'col-md-12'\" >\r\n <div class=\"position-relative \">\r\n <div class=\"card-header border-0 px-0 my-0\" *ngIf=\"(select === 'custom' || select === 'task'||select == 'cleaning'||select ==='scrum'||select ==='storeopenandclose') && !viewloading && !viewnoData\" >\r\n <h3></h3>\r\n <!-- Switch toggle -->\r\n <div class=\"card-toolbar\" *ngIf=\"!galleryForm.value.viewRedo\">\r\n <div class=\"position-relative cursor-pointer me-10\">\r\n <div class=\" btn btn-primary form-control no-text-transform\" (click)=\"exportDet($event)\">\r\n {{ exportLabel }} <!-- Bind label text here -->\r\n </div>\r\n <div *ngIf=\"exportShow\"\r\n class=\"card py-2 position-absolute productdrop top-10 w-150px end-0 z-1\">\r\n <ul class=\"list-unstyled mb-2\">\r\n <li class=\"cursor-pointer py-4 checkbox-label mx-2\" *ngIf=\"(select === 'custom' || select === 'task'||select ==='storeopenandclose')\" type=\"button\" (click)=\"setExportAsPPT('Export as PDF','pdf')\">\r\n Export as PDF\r\n </li>\r\n <li class=\" cursor-pointer checkbox-label py-4 mx-2\" *ngIf=\"(select === 'custom' || select === 'task'||select == 'cleaning'||select ==='scrum'||select ==='storeopenandclose')\" type=\"button\" (click)=\"setExportAsPPT('Export as CSV','csv')\">\r\n Export as CSV\r\n </li>\r\n <li *ngIf=\"selectedSection.length>0||select == 'cleaning'||select ==='scrum'||select ==='storeopenandclose'\" class=\" cursor-pointer checkbox-label py-4 mx-2\" type=\"button\" (click)=\"setExportAsPPT('Export as PPT','ppt')\">\r\n Export as PPT\r\n </li>\r\n <li *ngIf=\"selectedSection.length>0||select == 'cleaning'||select ==='scrum'||select ==='storeopenandclose'\" class=\"cursor-pointer checkbox-label py-4 mx-2\" type=\"button\" (click)=\"setExportAsPPT('Export as ZIP','zipfiles')\">\r\n Export as ZIP\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n <div class=\"card-body p-0\">\r\n <div>\r\n <div *ngIf=\"viewloading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"viewnoData\" class=\"row mt-20\">\r\n <div class=\"col-lg-12 mt-20 mb-3\">\r\n <div class=\"card-body mt-20 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src mt-5 w-40\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this checklist</div>\r\n </div>\r\n </div>\r\n </div>\r\n <section *ngIf=\"!viewloading && !viewnoData\">\r\n <div *ngIf=\"select==='custom'||select==='task' \">\r\n <div *ngIf=\"showsingle\" class=\"qa-heading m-3 mx-11\">{{this.selectedSection[0]?.questions[0]}}</div>\r\n <div *ngIf=\"showsingle&&showfilter\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap mx-10\">\r\n <li class=\"nav-item\" *ngFor=\"let item of answerFilter\">\r\n <a (click)=\"taskTab(item)\" [ngClass]=\"galleryForm.value.filter === item.key ? 'active' : ''\" class=\"nav-link cursor-pointer no-border me-3\">\r\n {{item.key}}<span class=\"mx-2 \" [ngClass]=\"galleryForm.value.filter === item.key ? 'badge-num-primary' :'badge-num-muted'\">{{item.count}}</span>\r\n </a>\r\n </li>\r\n \r\n </ul>\r\n \r\n </div>\r\n \r\n <div *ngFor=\"let checklist of viewChecklistsData?.checklistAnswers\">\r\n \r\n <div class=\"text-center\" *ngIf=\"clientData.logo&&clientData.logo!==''&&showmulti\">\r\n <img class=\"mt-5 mb-3 text-center iconsize\" src=\"{{clientData.logo}}\">\r\n </div>\r\n \r\n\r\n <div class=\"row px-10 mt-5\" *ngIf=\"showmulti\">\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Store Name:</h3>\r\n </div>\r\n <div class=\"col-md-9\">\r\n <p class=\"uni-subtitle\">{{checklist?.storeProfile?.storeName}} </p>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\" *ngIf=\"galleryForm.value.type==='checklist'\">Checklist Name:</h3>\r\n <h3 class=\"uni-title\" *ngIf=\"galleryForm.value.type==='task'\">Task Name:</h3>\r\n\r\n </div>\r\n <div class=\"col-md-9\">\r\n <p class=\"uni-subtitle\">{{checklist?.checklistInfo?.checklistName}}</p>\r\n </div>\r\n\r\n <ng-container>\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">State & Country :</h3>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <p class=\"uni-subtitle\">{{checklist?.storeProfile?.state}}\r\n {{checklist?.storeProfile?.Country}}</p>\r\n </div>\r\n <div class=\"col-md-2\">\r\n <h3 class=\"uni-title\">Duration :</h3>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <p class=\"uni-subtitle\"> {{checklist?.checklistInfo?.duration}}</p>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">No. of Questions :</h3>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <p class=\"uni-subtitle\">{{checklist?.checklistInfo?.noofQuestions}}</p>\r\n </div>\r\n <div class=\"col-md-2\">\r\n <h3 class=\"uni-title\">Date :</h3>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <p class=\"uni-subtitle\"> {{checklist?.checklistInfo?.date}}</p>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Submitted By :</h3>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <p class=\"uni-subtitle\">{{checklist?.checklistInfo?.submittedBy}}</p>\r\n </div>\r\n <div class=\"col-md-2\">\r\n <h3 class=\"uni-title\">Time :</h3>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <p class=\"uni-subtitle\"> {{checklist?.checklistInfo?.time}}</p>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n \r\n\r\n <div class=\"row px-10\" >\r\n\r\n <div *ngFor=\"let questionlist of checklist.questionAnswer\">\r\n <div class=\"qa-bodrer my-5\" *ngFor=\"let question of questionlist.questions\">\r\n <div class=\"row\" *ngIf=\"question.redo||question.redo===false\">\r\n <div class=\"view-detail col-12 text-end cursor-pointer\" (click)=\"ViewInDetails(question,checklist?.checklistInfo,checklist?.storeProfile,questionlist)\">\r\n View in detail \r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M15 10.8333V15.8333C15 16.2754 14.8244 16.6993 14.5118 17.0118C14.1993 17.3244 13.7754 17.5 13.3333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V6.66667C2.5 6.22464 2.67559 5.80072 2.98816 5.48816C3.30072 5.17559 3.72464 5 4.16667 5H9.16667M12.5 2.5H17.5M17.5 2.5V7.5M17.5 2.5L8.33333 11.6667\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n \r\n <div class=\"row w-100 m-3\" *ngIf=\"showsingle\">\r\n <div class=\"col-md-4 text-title\">\r\n {{checklist?.storeProfile?.storeName}}\r\n </div>\r\n <div class=\"col-md-8 text-end title-description\">\r\n Submitted by : {{checklist?.checklistInfo?.submittedBy}} On : {{checklist?.checklistInfo?.date}} {{checklist?.checklistInfo?.time}}\r\n </div>\r\n </div>\r\n <ul>\r\n <li *ngIf=\"showmulti\" class=\"qa-heading\">{{question?.qno}}. {{question?.qname}}</li>\r\n <div class=\"Partially my-3 px-5\" *ngIf=\"question?.answerType==='descriptive'\">\r\n <div *ngFor=\"let item of question.userAnswer\">\r\n <div class=\"col-md-6\" *ngIf=\"question.questionReferenceImage!==''&&galleryForm.value.type=='checklist'&&question.questionReferenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div *ngIf=\"question.questionReferenceImage&&question.questionReferenceImage.length>0&&galleryForm.value.type=='task'&&question.questionReferenceImage[0] !== ''\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.questionReferenceImage\">\r\n <div *ngIf=\"item&&item!=''&&item!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n <span class=\"mt-2\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">{{item.answer}}</span>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"Partially my-3 px-5\" *ngIf=\"question?.answerType==='linearscale'\">\r\n <div *ngFor=\"let item of question.userAnswer\">\r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&question.questionReferenceImage!==''&&question.questionReferenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div *ngIf=\"question.questionReferenceImage&&question.questionReferenceImage.length>0&&galleryForm.value.type=='task'&&question.questionReferenceImage[0] !== ''\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.questionReferenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <!-- <br> -->\r\n <span class=\"mt-4\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">{{item.answer}}</span>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n </div>\r\n <div class=\"Partially my-3 px-5\" *ngIf=\"question?.answerType==='time'\">\r\n <div *ngFor=\"let item of question.userAnswer\">\r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&question.questionReferenceImage!==''&&question.questionReferenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div *ngIf=\"question.questionReferenceImage&&question.questionReferenceImage.length>0&&galleryForm.value.type=='task'&&question.questionReferenceImage[0] !== ''\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.questionReferenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <br>\r\n <span class=\"mt-4\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">{{item.answer}}</span>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <div class=\"Partially my-3 px-5\" *ngIf=\"question?.answerType==='date'\">\r\n <div *ngFor=\"let item of question.userAnswer\">\r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&question.questionReferenceImage!==''&&question.questionReferenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div *ngIf=\"question.questionReferenceImage&&question.questionReferenceImage.length>0&&galleryForm.value.type=='task'&&question.questionReferenceImage[0] !== ''\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.questionReferenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <br>\r\n <span class=\"mt-4\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">{{item.answer}}</span>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n <div class=\"Partially my-3 px-5\" *ngIf=\"question?.answerType==='yes/no'\">\r\n <div *ngFor=\"let item of question.userAnswer\">\r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&question.questionReferenceImage!==''&&question.questionReferenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <br *ngIf=\"galleryForm.value.type=='checklist'&&question.questionReferenceImage!==''&&question.questionReferenceImage!=null\">\r\n <div *ngIf=\"question.questionReferenceImage&&question.questionReferenceImage.length>0&&galleryForm.value.type=='task'&&question.questionReferenceImage[0] !== ''\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.questionReferenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <span class=\"mt-4\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">{{item.answer}}</span>\r\n <div class=\"row\" *ngIf=\"item.validation&&item.validationAnswer!=''\">\r\n <div class=\"col-md-6\" *ngIf=\"item.referenceImage!==''\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.referenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"title-ref my-3\" *ngIf=\"item.validationType=='Capture Image'||item.validationType=='Capture Video'\">Validation Answer</div>\r\n <img class=\"img-logo\" *ngIf=\"item.validationType=='Capture Image'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"\r\n alt=\"\">\r\n <video controls class=\"recap-img p-3\" *ngIf=\"item.validationType=='Capture Video'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"></video>\r\n </div>\r\n <span class=\"remarksTxt\" *ngIf=\"item.validationType=='Descriptive Answer'\">Validation Answer :{{item.validationAnswer}}</span>\r\n </div>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n </div> \r\n\r\n\r\n\r\n <div class=\"Partially my-3 px-5\" *ngIf=\"question?.answerType==='multiplechoicesingle'\">\r\n \r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&question.questionReferenceImage!=null&&question.questionReferenceImage!==''&&question.questionReferenceImage!==undefined\">\r\n <div class=\"title-ref my-3\">Reference Image</div> \r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n \r\n <div *ngIf=\"question.questionReferenceImage&&question.questionReferenceImage.length>0&&galleryForm.value.type=='task'&&question.questionReferenceImage[0] !== ''\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.questionReferenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <div *ngFor=\"let item of question.userAnswer\">\r\n <span class=\"mt-2\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">{{item.answer}}</span>\r\n <div class=\"col-md-6\" *ngIf=\"item.referenceImage!=null&&item.referenceImage!==''&&galleryForm.value.type=='checklist'\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.referenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div *ngIf=\"item.referenceImage.length>0&&galleryForm.value.type=='task'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of item.referenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"item.validation&&item.validationAnswer!=''\">\r\n <div class=\"title-ref my-3\" *ngIf=\"item.validationType=='Capture Image'||item.validationType=='Capture Video'\">Validation Answer</div>\r\n <img class=\"img-logo\" *ngIf=\"item.validationType=='Capture Image'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"\r\n alt=\"\">\r\n\r\n <video controls class=\"recap-img p-3\" *ngIf=\"item.validationType=='Capture Video'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"></video>\r\n \r\n <span *ngIf=\"item.validationType=='Descriptive Answer'\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">Validation Answer : {{item.validationAnswer}}</span>\r\n </div>\r\n </div>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n <div class=\"row px-5\" *ngIf=\"question?.answerType==='image'\">\r\n <div *ngFor=\"let answer of question.answers\">\r\n <div class=\"row\" *ngIf=\"answer.referenceImage.length>0&&galleryForm.value.type=='task'\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of answer.referenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&answer.referenceImage!==''&&answer.referenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{answer.referenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngFor=\"let item of question.userAnswer\">\r\n <!-- <div class=\"col-md-6\" *ngIf=\"item.referenceImage!=null&&item.referenceImage!==''&&galleryForm.value.type=='checklist'\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.referenceImage}}\"\r\n alt=\"\">\r\n </div> \r\n <div *ngIf=\"item.referenceImage.length>0&&galleryForm.value.type=='task'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of item.referenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n </div> -->\r\n <div class=\"col-md-6\">\r\n <div class=\"title-ref my-3\">Uploaded Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.answer}}\"\r\n alt=\"\">\r\n </div>\r\n <div class=\"col-md-6 mt-2\" *ngIf=\"item.validation&&item.validationAnswer!=''\">\r\n <div class=\"title-ref my-3\" *ngIf=\"item.validationType=='Capture Image'||item.validationType=='Capture Video'\">Validation Answer</div>\r\n <img class=\"img-logo\" *ngIf=\"item.validationType=='Capture Image'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"\r\n alt=\"\">\r\n <video controls class=\"recap-img p-3\" *ngIf=\"item.validationType=='Capture Video'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"></video>\r\n <span *ngIf=\"item.validationType=='Descriptive Answer'\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">Validation Answer : {{item.validationAnswer}}</span>\r\n </div>\r\n </div>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n\r\n\r\n\r\n <div class=\"row px-5\" *ngIf=\"question?.answerType==='multiplechoicemultiple'\">\r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&question.questionReferenceImage!==''&&question.questionReferenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div class=\"col-md-6\"></div>\r\n <div *ngIf=\"question.questionReferenceImage&&question.questionReferenceImage.length>0&&galleryForm.value.type=='task'&&question.questionReferenceImage[0] !== ''\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.questionReferenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <div class=\"Partially my-3 px-5\" *ngFor=\"let item of question.userAnswer\">\r\n <span class=\"mt-3\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">{{item.answer}}</span>\r\n <div class=\"col-md-6\" *ngIf=\"item.referenceImage!=null&&item.referenceImage!==''&&galleryForm.value.type=='checklist'\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.referenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div *ngIf=\"item.referenceImage.length>0&&galleryForm.value.type=='task'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of item.referenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6 mt-2\" *ngIf=\"item.validation&&item.validationAnswer&&item.validationAnswer!=''\">\r\n <div class=\"title-ref my-3\" *ngIf=\"item.validationType=='Capture Image'||item.validationType=='Capture Video'\">Validation Answer</div>\r\n <img class=\"img-logo\" *ngIf=\"item.validationType=='Capture Image'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"\r\n alt=\"\">\r\n <video controls class=\"recap-img p-3\" *ngIf=\"item.validationType=='Capture Video'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"></video>\r\n <span *ngIf=\"item.validationType=='Descriptive Answer'\" [ngClass]=\"item.sopFlag ? 'flagclour':''\">Validation Answer : {{item.validationAnswer}}</span>\r\n </div>\r\n </div>\r\n \r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n\r\n\r\n\r\n\r\n <div class=\"row px-5\" *ngIf=\"question?.answerType==='descriptiveImage'\">\r\n <div *ngFor=\"let answer of question.answers\">\r\n <div class=\"row\" *ngIf=\"answer.referenceImage.length>0&&galleryForm.value.type=='task'\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of answer.referenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&answer.referenceImage!==''&&answer.referenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{answer.referenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngFor=\"let item of question.userAnswer\">\r\n <!-- <div class=\"col-md-6\" *ngIf=\"item.referenceImage!=null&&item.referenceImage!==''&&galleryForm.value.type=='checklist'\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.referenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div *ngIf=\"item.referenceImage.length>0&&galleryForm.value.type=='task'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of item.referenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n \r\n </div> -->\r\n <div class=\"col-md-6\">\r\n <div class=\"title-ref my-3\">Uploaded Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.answer}}\"\r\n alt=\"\">\r\n </div>\r\n <div class=\"col-md-6 mt-3\" *ngIf=\"item.validation&&item.validationAnswer!=''\">\r\n <div class=\"title-ref my-3\" *ngIf=\"item.validationType=='Capture Image'||item.validationType=='Capture Video'\">Validation Answer</div>\r\n <img class=\"img-logo\" *ngIf=\"item.validationType=='Capture Image'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"\r\n alt=\"\">\r\n <video controls class=\"recap-img p-3\" *ngIf=\"item.validationType=='Capture Video'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"></video>\r\n <span [ngClass]=\"item.sopFlag ? 'flagclour':''\" *ngIf=\"item.validationType=='Descriptive Answer'\">Validation Answer : {{item.validationAnswer}}</span>\r\n </div>\r\n </div>\r\n \r\n <div class=\"Partially my-3 px-5\" *ngIf=\"question.remarks!=''\">{{question.remarks}}</div>\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n <div class=\"row px-5\" *ngIf=\"question?.answerType==='video'\">\r\n <div *ngIf=\"question.questionReferenceImage&&question.questionReferenceImage.length>0&&galleryForm.value.type=='task'&&question.questionReferenceImage[0] !== ''\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.questionReferenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&question.questionReferenceImage!==''&&question.questionReferenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.userAnswer\">\r\n <div class=\"title-ref my-3\">Uploaded Video</div>\r\n\r\n <video controls class=\"recap-img p-3\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.answer}}\">\r\n </video>\r\n </div>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n\r\n\r\n\r\n\r\n <div class=\"row px-5\" *ngIf=\"question?.answerType==='multipleImage'\">\r\n <div *ngFor=\"let answer of question.answers\">\r\n <div class=\"row\" *ngIf=\"answer.referenceImage.length>0&&galleryForm.value.type=='task'\">\r\n <div class=\"col-md-6\" *ngFor=\"let item of answer.referenceImage\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-md-6\" *ngIf=\"galleryForm.value.type=='checklist'&&answer.referenceImage!==''&&answer.referenceImage!=null\">\r\n <div class=\"title-ref my-3\">Reference Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{answer.referenceImage}}\"\r\n alt=\"\">\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\" *ngFor=\"let item of question.userAnswer\">\r\n <div class=\"title-ref my-3\">Uploaded Image</div>\r\n <img class=\"img-logo\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.answer}}\"\r\n alt=\"\">\r\n <div class=\"col-md-6\" *ngIf=\"item.validation&&item.validationAnswer!=''\">\r\n <div class=\"title-ref my-3\" *ngIf=\"item.validationType=='Capture Image'||item.validationType=='Capture Video'\">Validation Answer</div>\r\n <img class=\"img-logo\" *ngIf=\"item.validationType=='Capture Image'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"\r\n alt=\"\">\r\n <video controls class=\"recap-img p-3\" *ngIf=\"item.validationType=='Capture Video'\"\r\n src=\"{{environment.TraxAnswerCDN}}{{item.validationAnswer}}\"></video>\r\n <span *ngIf=\"item.validationType=='Descriptive Answer'\">Validation Answer : {{item.validationAnswer}}</span>\r\n </div>\r\n </div>\r\n <div class=\"remarksTxt\" *ngIf=\"question.remarks!=''\">Remarks : {{question.remarks}}</div>\r\n </div>\r\n \r\n </ul>\r\n <div class=\"row\">\r\n <div class=\"col-md-6 text-start\"> \r\n <!-- <button class=\"btn btn-secondary rounded-pill m-0 p-2\" *ngIf=\"question?.linkType&&question?.linkquestionenabled\">Linked to Question {{question.parentQuestion}}</button> -->\r\n </div>\r\n <div class=\"col-md-6 text-end\">\r\n <button class=\"btn btn-sm btn-default border-default me-3\" [disabled]=\"question.redo\" *ngIf=\"checktodayDate(checklist?.checklistInfo?.date)&&(gs.userAccess | async)?.userType !== 'tango'&&!checklist?.checklistInfo?.approvalStatus&&(gs.userAccess | async)?.TangoTrax_checklist_isEdit&&this.galleryForm.value.type =='checklist'\" (click)=\"addTask('redo',question,checklist?.checklistInfo,checklist?.storeProfile,questionlist)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_6004_11734)\">\r\n <path d=\"M19.1693 3.33331V8.33332M19.1693 8.33332H14.1693M19.1693 8.33332L15.3026 4.69998C14.407 3.80391 13.299 3.14932 12.0819 2.79729C10.8649 2.44527 9.57853 2.40727 8.34284 2.68686C7.10716 2.96645 5.96244 3.55451 5.01549 4.39616C4.06855 5.23782 3.35024 6.30564 2.9276 7.49998M0.835938 16.6666V11.6666M0.835938 11.6666H5.83594M0.835938 11.6666L4.7026 15.3C5.59823 16.1961 6.70625 16.8506 7.92328 17.2027C9.14031 17.5547 10.4267 17.5927 11.6624 17.3131C12.898 17.0335 14.0428 16.4455 14.9897 15.6038C15.9367 14.7621 16.655 13.6943 17.0776 12.5\" stroke=\"#344054\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_6004_11734\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <span class=\"ms-2 font-defult-task\">Redo</span>\r\n </button>\r\n <button class=\"btn btn-sm btn-default border-default me-3\" [disabled]=\"question.redo\" *ngIf=\"checktodayDate(checklist?.checklistInfo?.date)&&(gs.userAccess | async)?.userType !== 'tango'&&!checklist?.checklistInfo?.approvalStatus&&(gs.userAccess | async)?.TangoTrax_Task_isEdit&&this.galleryForm.value.type=='task'\" (click)=\"addTask('redo',question,checklist?.checklistInfo,checklist?.storeProfile,questionlist)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_6004_11734)\">\r\n <path d=\"M19.1693 3.33331V8.33332M19.1693 8.33332H14.1693M19.1693 8.33332L15.3026 4.69998C14.407 3.80391 13.299 3.14932 12.0819 2.79729C10.8649 2.44527 9.57853 2.40727 8.34284 2.68686C7.10716 2.96645 5.96244 3.55451 5.01549 4.39616C4.06855 5.23782 3.35024 6.30564 2.9276 7.49998M0.835938 16.6666V11.6666M0.835938 11.6666H5.83594M0.835938 11.6666L4.7026 15.3C5.59823 16.1961 6.70625 16.8506 7.92328 17.2027C9.14031 17.5547 10.4267 17.5927 11.6624 17.3131C12.898 17.0335 14.0428 16.4455 14.9897 15.6038C15.9367 14.7621 16.655 13.6943 17.0776 12.5\" stroke=\"#344054\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_6004_11734\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <span class=\"ms-2 font-defult-task\">Redo</span>\r\n </button>\r\n\r\n <button class=\"btn btn-sm border-val1\" *ngIf=\"!question.task&&!question.taskId&&this.galleryForm.value.type=='checklist'&&(gs.userAccess | async)?.userType !== 'tango'&&!checklist?.checklistInfo?.approvalStatus&& (gs.userAccess | async)?.TangoTrax_Task_isEdit\" (click)=\"addTask('createtask',question,checklist?.checklistInfo,checklist?.storeProfile,questionlist)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M11.6693 1.66675H5.0026C4.56058 1.66675 4.13665 1.84234 3.82409 2.1549C3.51153 2.46746 3.33594 2.89139 3.33594 3.33341V16.6667C3.33594 17.1088 3.51153 17.5327 3.82409 17.8453C4.13665 18.1578 4.56058 18.3334 5.0026 18.3334H15.0026C15.4446 18.3334 15.8686 18.1578 16.1811 17.8453C16.4937 17.5327 16.6693 17.1088 16.6693 16.6667V6.66675M11.6693 1.66675L16.6693 6.66675M11.6693 1.66675V6.66675H16.6693M10.0026 15.0001V10.0001M7.5026 12.5001H12.5026\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2 font-task\">Create Task</span>\r\n </button>\r\n <button *ngIf=\"question.task&&question.taskId &&this.galleryForm.value.type!=='task'\" class=\"btn btn-sm border-val1\" (click)=\"taskredirect(question,checklist?.storeProfile,checklist?.checklistInfo)\"><span class=\"font-task\">View Task</span></button>\r\n\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"px-10 my-5\" *ngIf=\"imageChecklist.includes(select)\">\r\n <div class=\"text-center\" *ngIf=\"clientData.logo&&clientData.logo!==''\">\r\n <img class=\"mt-5 mb-3 text-center iconsize\" src=\"{{clientData.logo}}\">\r\n </div>\r\n <div>\r\n <h2>Checklist Name : {{this.checklistName}}</h2>\r\n </div>\r\n <div class=\"qa-bodrer my-3 mt-5\" *ngFor=\"let item of mobileusageData\">\r\n <ul class=\"row w-100\">\r\n <li class=\"qa-heading\">\r\n {{item.storeName}}\r\n </li>\r\n <div class=\"row\">\r\n <div class=\"col-md-12 my-2\" *ngFor=\"let detection of item.imageUrl\">\r\n \r\n <div class=\"\">\r\n <img class=\"w-100 h-500px rounded-top\"\r\n src=\"{{environment.TraxAIchecklistCDN}}{{detection}}\" alt=\"\">\r\n <div class=\"text-center mt-3\" > {{this.checklistName}}</div> \r\n </div>\r\n </div>\r\n </div>\r\n </ul>\r\n </div>\r\n\r\n </div>\r\n <div class=\"px-10 my-5\" *ngIf=\"videoChecklist.includes(select)\">\r\n <div class=\"text-center\" *ngIf=\"clientData.logo&&clientData.logo!==''\">\r\n <img class=\"mt-5 mb-3 text-center iconsize\" src=\"{{clientData.logo}}\">\r\n </div>\r\n \r\n <div class=\"my-3 mt-5\" *ngFor=\"let item of customerunattendedData\">\r\n <div class=\"row px-10 mt-5\">\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Checklist Name:</h3>\r\n </div>\r\n <div class=\"col-md-9\">\r\n <p class=\"uni-subtitle\">: {{this.checklistName}} </p>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Store Name</h3>\r\n </div>\r\n <div class=\"col-md-9\">\r\n <p class=\"uni-subtitle\">: {{item.storeName}}</p>\r\n </div>\r\n </div> \r\n <ul class=\"row w-100 margin-top-side\">\r\n <li class=\"qa-heading\">\r\n \r\n </li>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\" *ngFor=\"let detection of item.imagesData\">\r\n <div class=\"row px-10 mt-5 margin-left-side\" *ngIf=\"select!='suspiciousactivity'\">\r\n <div class=\"col-md-3\" *ngIf=\"detection?.Answer\">\r\n <h3 class=\"uni-title\">Detection Status</h3>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"detection?.Answer\">\r\n <p class=\"uni-subtitle\">:<span class=\"ms-3 badge badge-light-danger\" *ngIf=\"detection?.Answer==='rejected'\">Breached</span>\r\n <span class=\"ms-3 badge badge-light-success\" *ngIf=\"detection?.Answer==='approved'\">Not-breached</span> </p>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Date</h3>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <p class=\"uni-subtitle\">: {{detection.date|date:'dd-MM-yyyy' }}</p>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"detection?.configTime\">\r\n <h3 class=\"uni-title\">Configured Time</h3>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"detection?.configTime\">\r\n <p class=\"uni-subtitle\">: {{detection.configTime }}</p>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"detection?.duration\">\r\n <h3 class=\"uni-title\">Duration</h3>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"detection?.duration\">\r\n <p class=\"uni-subtitle\">: {{detection.duration }} Mins</p>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"detection?.downTime\">\r\n <h3 class=\"uni-title\">Downtime</h3>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"detection?.downTime\">\r\n <p class=\"uni-subtitle\">: {{detection.downTime }} Mins <span ngbTooltip=\"Downtime may result in inaccurate data\" placement=\"top\" container=\"body\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"16\" viewBox=\"0 0 15 16\" fill=\"none\">\r\n <path d=\"M7.66667 5.33203V7.9987M7.66667 10.6654H7.67333M14.3333 7.9987C14.3333 11.6806 11.3486 14.6654 7.66667 14.6654C3.98477 14.6654 1 11.6806 1 7.9987C1 4.3168 3.98477 1.33203 7.66667 1.33203C11.3486 1.33203 14.3333 4.3168 14.3333 7.9987Z\" stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span></p>\r\n </div>\r\n </div> \r\n <div class=\"card-header border-0 min-h-45px px-0 my-0\">\r\n <h3 class=\"card-title\">\r\n <!-- <span class=\"me-3 store-title\">{{item.storeName}}</span> -->\r\n <span class=\"ms-2 badge badge-light-default\" *ngIf=\"detection?.customer_id\">Cust ID : {{detection.customer_id}}</span>\r\n <span class=\"ms-2 badge badge-light-default\" *ngIf=\"detection?.queue_id\">Queue ID : {{detection.queue_id}}</span>\r\n <span class=\"ms-2 badge badge-light-default\" *ngIf=\"detection?.optum_id\">Optum ID : {{detection.optum_id}}</span>\r\n <!-- <span class=\"ms-2 badge badge-light-default\" *ngIf=\"detection?.date\">Date : {{detection.date|date:'dd-MM-yyyy' }}</span> -->\r\n <!-- <span class=\"ms-3 badge badge-light-default\" *ngIf=\"detection?.configTime\">Inspection time : {{detection.configTime}}</span> -->\r\n <span class=\"ms-3 badge badge-light-default\" *ngIf=\"detection?.temp_id\">TempId : {{detection.temp_id}}</span>\r\n <span class=\"ms-3 badge badge-light-default\" *ngIf=\"detection?.time_spend\">Timespend : {{detection.time_spend}}Mins</span> \r\n \r\n </h3>\r\n \r\n <!-- Switch toggle -->\r\n <div class=\"card-toolbar\">\r\n <div class=\"col-md-12 text-end\">\r\n <span class=\"ms-3 badge badge-light-default\" *ngIf=\"detection?.entry_time\">Entry time : {{detection.entry_time}}</span> \r\n <span class=\"ms-3 badge badge-light-default\" *ngIf=\"detection?.exit_time\">Exit time : {{detection.exit_time}}</span> \r\n <span class=\"ms-3 badge badge-light-success\" *ngIf=\"detection?.adherence_rate\">Adherence Rate : {{detection.adherence_rate}}</span>\r\n <span class=\"ms-3 badge badge-light-primary text-capitalize\" *ngIf=\"detection?.category\"> {{detection.category}}</span>\r\n <span class=\"ms-3 badge badge-light-default\" *ngIf=\"detection?.customer_entry_time\">Entry time : {{detection.customer_entry_time}}</span>\r\n <span class=\"ms-3 badge badge-light-default\" *ngIf=\"detection?.customer_exit_time\">Exit time : {{detection.customer_exit_time}}</span> \r\n \r\n \r\n </div>\r\n </div>\r\n </div>\r\n \r\n \r\n <div class=\"my-0\" *ngIf=\"select !='eyetest'\">\r\n <video controls class=\"w-100 h-450px rounded-top\"\r\n src=\"{{environment.TraxAIchecklistCDN}}{{detection.video_path}}\" alt=\"\"> \r\n </video> \r\n </div>\r\n <div class=\"my-0\" *ngIf=\"select ==='eyetest'\">\r\n <video controls class=\"w-100 h-450px rounded-top\"\r\n src=\"{{environment.EyeTestCDN}}{{detection.video_path}}\" alt=\"\"> \r\n </video> \r\n </div>\r\n </div>\r\n </div>\r\n </ul>\r\n </div>\r\n\r\n </div>\r\n <div *ngIf=\"select ==='storeopenandclose'\">\r\n <div class=\"text-center\" *ngIf=\"clientData.logo&&clientData.logo!==''\">\r\n <img class=\"mt-5 mb-3 text-center iconsize\" src=\"{{clientData.logo}}\">\r\n </div>\r\n <div class=\"row px-10 mt-5\">\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Checklist Name:</h3>\r\n </div>\r\n <div class=\"col-md-9\">\r\n <p class=\"uni-subtitle\">: {{this.checklistName}} </p>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 margin-top-side\" *ngFor=\"let store of storeOpencloseView\">\r\n <div class=\" mx-8 my-8\" *ngFor=\"let item of store.imagesData\">\r\n <div class=\"row px-10 mt-5 margin-left-side \">\r\n <div class=\"col-md-3\" *ngIf=\"item?.buffer_open\">\r\n <h3 class=\"uni-title\">Buffer for Open Time :</h3>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"item?.buffer_open\">\r\n <p class=\"uni-subtitle\">: {{item.buffer_open }}</p>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"item?.buffer_close\">\r\n <h3 class=\"uni-title\">Buffer for Close Time :</h3>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"item?.buffer_close\">\r\n <p class=\"uni-subtitle\">: {{item.buffer_close }}</p>\r\n </div>\r\n <div class=\"col-md-3\" >\r\n <h3 class=\"uni-title\">Detection Status</h3>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"item?.Flag\">\r\n <p class=\"uni-subtitle\">:<span class=\"ms-3 badge badge-light-danger\" *ngIf=\"item?.Flag\">Breached</span>\r\n <span class=\"ms-3 badge badge-light-success\" *ngIf=\"!item?.Flag\">Not-breached</span> </p>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Date</h3>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <p class=\"uni-subtitle\">: {{item.date|date:'dd-MM-yyyy' }}</p>\r\n </div>\r\n </div> \r\n <div class=\"snapcard\">\r\n <div class=\"snapheader ms-6\">\r\n {{item.storeName}}\r\n </div>\r\n <div class=\"row m-0 w-100\">\r\n <div class=\"col-6\">\r\n <div class=\"img mt-4 px-3 position-relative\" *ngIf=\"!item.openTime\">\r\n <div class=\"preview align-items-center justify-content-center d-flex flex-column\">\r\n <span>\r\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"Group\">\r\n <path id=\"Vector\"\r\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n stroke=\"#667085\" stroke-width=\"2\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n \\\r\n <path id=\"Vector_2\"\r\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\r\n stroke=\"#667085\" stroke-width=\"2\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n </svg>\r\n \r\n </span>\r\n <span class=\"prvtxt mt-5 textclr\">Preview not\r\n available</span>\r\n <span class=\"refreshtxt mt-2 textclr\">The selected camera\r\n is not available at the moment.</span>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"item.openTime\">\r\n <img class=\"mx-1 img-opc\"\r\n src=\"{{environment.TraxOpenclosechecklistCDN}}{{item.storeId}}/{{item.dateString|date:'dd-MM-yyyy'}}/operation_snaps/open.jpeg\"\r\n alt=\"open close snap\">\r\n <div class=\"col-12\">\r\n <div class=\"d-flex flex-stack mx-1 mt-2\">\r\n <div>\r\n <div class=\"snaptext\">Opening Snap</div>\r\n <div class=\"snaptime\">{{item.openTime}} - {{item.date}}\r\n </div>\r\n </div>\r\n \r\n <span class=\"badge badge-light-primary snapbadge\"\r\n *ngIf=\"!item?.openTimeFlag\">On Time</span>\r\n <span class=\"badge badge-light-danger snapbadge\"\r\n *ngIf=\"item?.openTimeFlag\">Late Open</span>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n <div class=\"col-6\">\r\n <div class=\"img mt-4 px-3 position-relative\" *ngIf=\"!item.closeTime\">\r\n <div class=\"preview align-items-center justify-content-center d-flex flex-column\">\r\n <span>\r\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"Group\">\r\n <path id=\"Vector\"\r\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n stroke=\"#667085\" stroke-width=\"2\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n \\\r\n <path id=\"Vector_2\"\r\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\r\n stroke=\"#667085\" stroke-width=\"2\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n </svg>\r\n \r\n </span>\r\n <span class=\"prvtxt mt-5 textclr\">Preview not\r\n available</span>\r\n <span class=\"refreshtxt mt-2 textclr\">The selected camera\r\n is not available at the moment.</span>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"item.closeTime\">\r\n <img class=\"mx-1 img-opc\"\r\n src=\"{{environment.TraxOpenclosechecklistCDN}}{{item.storeId}}/{{item.dateString|date:'dd-MM-yyyy'}}/operation_snaps/close.jpeg\"\r\n alt=\"Checklist Video Player\">\r\n <div class=\"col-12\">\r\n <div class=\"d-flex flex-stack mx-1 \">\r\n <div>\r\n <div class=\"snaptext\">Closing Snap</div>\r\n <div class=\"snaptime\">{{item.closeTime}} - {{item.date}}\r\n </div>\r\n </div>\r\n <span class=\"badge badge-light-primary snapbadge\"\r\n *ngIf=\"!item?.closeTimeFlag\">On Time</span>\r\n <span class=\"badge badge-light-danger snapbadge\"\r\n *ngIf=\"item?.closeTimeFlag\">Early Close</span>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n \r\n\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n </div>\r\n <div *ngIf=\"boximageChecklist.includes(select)\">\r\n <div class=\"text-center\" *ngIf=\"clientData.logo&&clientData.logo!==''\">\r\n <img class=\"mt-5 mb-3 text-center iconsize\" src=\"{{clientData.logo}}\">\r\n </div>\r\n <div class=\"col-md-12\" *ngFor=\"let store of queueAlertView\">\r\n <div class=\"row px-10 mt-5\" *ngIf=\"showmulti\">\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Store Name:</h3>\r\n </div>\r\n <div class=\"col-md-9\">\r\n <p class=\"uni-subtitle\">{{store?.storeName}} | {{store?.city}},{{store?.state}},{{store?.country}} </p>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <h3 class=\"uni-title\">Checklist Name:</h3>\r\n\r\n </div>\r\n <div class=\"col-md-9\">\r\n <p class=\"uni-subtitle\">{{checklistName}}</p>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"select==='boxalert'||select==='suspiciousfootfall'||select==='drinking'||select==='bagdetection'\">\r\n <h3 class=\"uni-title\">Description:</h3>\r\n </div>\r\n <div class=\"col-md-9\" *ngIf=\"select==='boxalert'||select==='suspiciousfootfall'||select==='drinking'||select==='bagdetection'\">\r\n <p class=\"uni-subtitle\">{{checkListDescription}}</p>\r\n </div>\r\n\r\n </div> \r\n <div class=\"row m-0 w-100 \" >\r\n <div class=\"col-4 mt-2\" *ngFor=\"let item of store.imagesData\">\r\n <div class=\"card bordercolor bg-secondary mt-8\">\r\n <div class=\"text-start ms-5 mt-2 mb-5\" >\r\n <div *ngIf=\"item.zone\">\r\n <span class=\"btn btn-secondary rounded-lg p-2\">{{item.zone}}</span>\r\n </div>\r\n \r\n <div class=\"mt-3 fw-semibold\">{{ item.date_timestamp }}</div>\r\n </div>\r\n <img class=\"w-100 h-250px rounded-bottom\" (click)=\"openModel(item)\"\r\n src=\"{{environment.TraxAIchecklistCDN}}{{item.path}}\" alt=\"\"> \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <lib-pagination *ngIf=\"!viewloading && !viewnoData\" [itemsPerPage]=\"limit\" [currentPage]=\"offset\" [totalItems]=\"totalCount\"\r\n [paginationSizes]='paginationSizes' [pageSize]=\"limit\"\r\n (pageChange)=\"onPageChangeview($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </section>\r\n </div>\r\n\r\n\r\n\r\n </div>\r\n <div *ngIf=\"!showsidenav\" (click)=\"sidenav()\" class=\"backButtonleft text-center pt-1 cursor-pointer\">\r\n <svg class=\"mt-2 ms-2\" xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n d=\"M9.72714 12.6365L13.3635 9.00013L9.72714 5.36377M4.63623 12.6365L8.27259 9.00013L4.63623 5.36377\"\r\n stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n</div> \r\n<div class=\"row card mx-0 p-3 \" *ngIf=\"checkAIchecklist()\">\r\n <div class=\"col-md-12 text-end\">\r\n<button class=\"btn btn-sm border-primary1\" [disabled]=\"!approvalStatus\" (click)=\"appoveChecklist()\">Approve\r\n</button>\r\n</div>\r\n</div>\r\n<ng-template #zoomPopup let-model>\r\n <div class=\"p-8\">\r\n <div class=\"modal-header pt-0 ps-1 pe-0\">\r\n <div>\r\n <div class=\"text-start mt-2\">\r\n <div *ngIf=\"viewImage.zone\">\r\n <span class=\"btn btn-secondary rounded-lg p-2\">{{viewImage.zone}}</span>\r\n </div>\r\n <div *ngIf=\"viewImage.emptyBoxCount\">\r\n <span >Empty shelves : {{viewImage.emptyBoxCount}}</span>\r\n </div>\r\n \r\n <div *ngIf=\"viewImage.entry_time\">\r\n <span >Entry Time : {{viewImage.entry_time}}</span>\r\n </div>\r\n <div *ngIf=\"viewImage.exit_time\">\r\n <span >Exit Time : {{viewImage.exit_time}}</span>\r\n </div>\r\n <div *ngIf=\"viewImage.temp_id\">\r\n <span >Temp Id : {{viewImage.temp_id}}</span>\r\n </div>\r\n <div *ngIf=\"viewImage.time_spend\">\r\n <span >Time Spend : {{viewImage.time_spend}} Mins</span>\r\n </div>\r\n \r\n <div class=\"mt-2\" *ngIf=\"viewImage.threshold&&viewImage.Dwelltime\"><p>If the queue exceeds {{viewImage.threshold}} people and wait time surpasses {{viewImage.Dwelltime}} minutes, an alert will be triggered</p></div>\r\n <div class=\"mt-3 fw-semibold\">{{ viewImage.date_timestamp }}</div>\r\n </div>\r\n \r\n </div>\r\n <div data-bs-dismiss=\"modal\">\r\n <!-- <span class=\"stream fw-semibold text-nowrap me-5\" *ngIf=\"camera.height && camera.width\"> Resolution: {{camera.height}} X {{camera.width}}</span> -->\r\n <span class=\"btn btn-sm btn-icon btn-active-color-primary me-0\" (click)=\"model.dismiss()\"><svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M15 5L5 15M5 5L15 15\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"viewImage.path\" class=\"mt-2 overflow-auto\">\r\n <img class=\"rounded-4 mt-5 img-popup-src w-100\" src=\"{{environment.TraxAIchecklistCDN}}{{viewImage.path}}\">\r\n </div>\r\n\r\n \r\n </div>\r\n\r\n</ng-template>", styles: [".gallery-card{padding:24px;border-radius:12px;background:#fff}.gallery-card .header{color:#101828;font-size:18px;font-weight:500;line-height:28px}.img{border-radius:10px;border:1px solid var(--Gray-500, #667085);background:var(--Gray-100, #F2F4F7);width:100%;height:230px}.prvtxt{color:var(--Gray-500, #667085);font-family:Inter;font-size:20px;font-style:normal;font-weight:700;line-height:20px;letter-spacing:-.4px}.refreshtxt{color:var(--Gray-400, #98A2B3);font-family:Inter;font-size:12px;font-style:normal;font-weight:500;line-height:18px}::ng-deep .applyBtn{display:none!important}::ng-deep .custom-height-modal .modal-dialog{max-height:80vh;height:80vh}::ng-deep .custom-height-modal .modal-content{overflow:auto;max-height:100%}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .md-drppicker.shown.drops-down-right{transform-origin:0 0;width:560px!important}:host::ng-deep .daterangepicker-input+.ngx-daterangepicker-material .applyBtn{display:none}:host::ng-deep .md-drppicker.drops-down-right.ltr.show-ranges.shown{top:65px!important}:host::ng-deep .md-drppicker.drops-down-right.ltr.double.show-ranges.shown{top:65px!important;right:-475px!important;left:unset!important;height:400px!important}:host::ng-deep .md-drppicker .btn{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}:host::ng-deep .md-drppicker .ranges ul li button{padding:12px 16px;width:160px;color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:20px;background:none;border:none;text-align:left;cursor:pointer}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important;border-radius:20px!important;color:var(--White, #FFF)!important;text-align:center!important;font-size:14px!important;font-weight:500!important;line-height:20px}:host::ng-deep .md-drppicker.ltr .ranges{float:left;margin-top:10px!important}:host::ng-deep .md-drppicker td.in-range{background:var(--Primary-50, #EAF8FF)}:host::ng-deep .md-drppicker .ranges ul li button.active{background:var(--Primary-50, #EAF8FF)!important;border-radius:8px!important;color:var(--Primary-700, #009BF3);font-size:14px!important;font-weight:500!important;line-height:20px!important}:host::ng-deep table th,:host::ng-deep table td{width:40px!important;height:40px!important;padding:10px 8px!important}:host::ng-deep .md-drppicker td.available.prev,:host::ng-deep .md-drppicker th.available.prev{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker td.available.next,:host::ng-deep .md-drppicker th.available.next{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep table th{border-bottom:0px solid var(--Gray-200, #EAECF0)!important;background:transparent!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:16px!important;font-weight:500!important;line-height:24px}:host::ng-deep .md-drppicker .btn.btn-default{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize;margin-right:10px!important}:host::ng-deep .md-drppicker td.available.invalid-date{text-decoration:line-through;pointer-events:none;color:#a9a9a9}:host::ng-deep .md-drppicker td.available.today:not(.invalid-date){text-decoration:unset;pointer-events:unset;color:unset}.btn-primary{line-height:18px!important}.checkbox-label{color:#344054;font-size:14px;font-weight:500;line-height:20px;cursor:pointer}.checklist-left .checklist-title{overflow:hidden;color:var(--Black, #101828)!important;text-overflow:ellipsis;font-size:18px!important;font-weight:500;line-height:28px}.checklist-left .checklist-text{overflow:hidden;color:var(--Black, #101828)!important;text-overflow:ellipsis;font-size:12px!important;font-weight:400!important;line-height:18px}.section{display:inline-block;width:600px;white-space:nowrap;outline:none!important;border:none!important;box-shadow:none!important;overflow:hidden!important;text-overflow:ellipsis!important;color:var(--Black, #101828)!important;font-size:16px!important;font-weight:500!important}.card hr{width:-webkit-fill-available}.editablecontent{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:400!important;line-height:24px}.rotate{transform:rotate(180deg);transition:1s}.question-left{color:var(--Gray-700, #344054)!important;font-size:16px;font-weight:400;line-height:24px}.view-all{padding:12px!important;border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-500, #33B5FF)!important;font-size:16px!important;font-weight:600!important;line-height:24px;text-decoration-line:underline!important}.view-questions{padding:12px!important;border-radius:6px!important;color:var(--Primary-500, #33B5FF)!important;font-size:16px!important;font-weight:600!important;line-height:24px;text-decoration-line:underline!important}.iconsize{width:110px;height:110px}.margin-left-side{margin-left:-35px}.margin-top-side{margin-top:-15px}input[type=checkbox]{width:16px!important;height:16px!important;margin:0;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-300, #D0D5DD);box-shadow:none;font-size:.8em;text-align:center;line-height:1em;background:#fff}input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF);background-color:var(--primary-50, #EAF8FF)}input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.5em;padding-left:0!important;padding-top:8px;padding-right:5px}.uni-title{color:#000!important;font-size:18px!important;font-weight:600!important;line-height:28px}.uni-subtitle{color:#000!important;font-size:18px!important;font-weight:400!important;line-height:28px}.qa-heading{color:var(--Black, #101828)!important;font-size:18px!important;font-weight:700!important;line-height:28px;list-style:none}.qa-bodrer{padding:16px!important;border-radius:8px!important;border:1px solid var(--Gray-200, #EAECF0)!important;background:var(--text-primary, #FFF)!important;box-shadow:0 1px 3px #1018281a,0 1px 2px #1018280f!important}.title-ref{color:var(--Gray-900, #101828)!important;font-size:16px!important;font-weight:400!important;line-height:24px}.btn-outline-primary{border-radius:8px!important;border:1px solid var(--Primary-500, #33B5FF)!important;background:var(--Primary-50, #EAF8FF)!important;box-shadow:0 1px 2px #1018280d!important;padding:calc(.7rem + 0px) calc(1.5rem + 1px)!important}.Partially{color:#000;font-size:18px!important;font-style:italic!important;font-weight:500;line-height:28px}.task-remarks{color:#000!important;font-size:18px!important;font-weight:400!important;line-height:28px}.backButtonright{border-radius:1000px!important;background:var(--text-primary, #FFF)!important;padding:12px!important;box-shadow:0 12px 16px -4px #10182814,0 4px 6px -2px #10182808!important;box-shadow:0 8.727px 11.636px -2.909px #10182814,0 2.909px 4.364px -1.455px #10182808!important;position:absolute;top:30px;right:-10px;z-index:0}.backButtonleft{border-radius:1000px!important;background:#fff;padding:14px!important;border:var(--Gray-300, #D0D5DD);box-shadow:0 8.727px 11.636px -2.909px #10182814,0 2.909px 4.364px -1.455px #10182808;position:absolute;top:30px;left:-20px;z-index:5}img.img-logo{width:100%;height:400px!important}.recap-img{width:100%;height:400px;object-fit:cover!important}.img-src{width:30%!important;height:20%!important}.dropdownselect{padding:20px 10px}.dropdownbg{width:Fill(372px) px;height:Hug(40px) px;padding:8px 16px;gap:0px;border-radius:6px 0 0;justify-content:space-between;opacity:0px;background:#eaf8ff}.detectionright{color:var(--Primary-700, #009BF3)!important;text-align:center;font-size:14px!important;font-weight:500;line-height:14px;float:right!important;mix-blend-mode:multiply}.backgroundBorder{background:#eaf8ff!important;color:#00a3ff!important;padding:12px;border-radius:8px;font-weight:500;line-height:10px}.withoutbackground{padding:8px;font-weight:500;line-height:10px}.snapcard{display:flex;padding:16px;flex-direction:column;align-items:flex-start;gap:16px;align-self:stretch;border-radius:8px;border:1px solid var(--Gray-200, #EAECF0);background:var(--White, #FFF);box-shadow:0 1px 3px #1018281a,0 1px 2px #1018280f}.snapheader{color:var(--Black, #101828);font-size:16px;font-style:normal;font-weight:600;line-height:24px}.snaptext{color:var(--Gray-900, #101828);font-size:16px!important;font-style:normal;font-weight:600!important;line-height:24px}.snaptime{color:var(--Gray-900, #101828);font-size:12px!important;font-style:normal;font-weight:500!important;line-height:22px}.snapbadge{text-align:center;font-size:14px!important;font-style:normal;font-weight:500!important;line-height:20px}.btn-resize{font-size:13px!important;height:29px!important;line-height:11px!important;padding:1px!important}.preview{position:absolute;top:30%;left:14%}.w-25{width:17%!important}.w-40{width:40%!important}.usage-detection{color:var(--Primary-700, #009BF3);text-overflow:ellipsis!important;font-size:16px!important;font-style:normal;font-weight:400;line-height:16px}.usage-text{color:var(--Gray-700, #344054);text-overflow:ellipsis;font-size:16px;font-style:normal;font-weight:400;line-height:17px}.h-450px{object-fit:contain!important}.store-title{color:var(--Black, #101828)!important;font-size:18px;font-weight:700;line-height:28px}.img-opc{width:100%!important;height:300px!important;border-radius:12px!important}.h-900px{min-height:auto!important;max-height:2800px!important}.select-wrapper{position:relative;display:inline-block;width:100%}.placeholder-overlay{position:absolute;color:var(--Gray-500, #667085);font-family:Inter;font-size:16px!important;font-style:normal;font-weight:400;top:10px;left:15px;pointer-events:none;font-size:1.1rem;z-index:1}.w-50{width:75%!important}.flagclour{color:red}.remarksTxt{margin-top:10px;font-family:Inter;font-size:18px;font-weight:400;line-height:28px;text-align:left}.no-text-transform{text-transform:none!important}.border-val1{padding:8px 14px!important;border-radius:8px!important;border:1px solid var(--Primary-500, #33B5FF)!important;background:var(--Primary-50, #EAF8FF)!important;box-shadow:0 1px 2px #1018280d!important}.font-task{color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}.border-default{padding:8px 14px!important;border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important}.font-defult-task{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}.nav-item .nav-link.active{border:none;border-radius:6px;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.nav-item .nav-link:hover{border:none}.badge-num-primary{border-radius:16px!important;background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;text-align:center;font-size:14px!important;font-style:normal;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.badge-num-muted{border-radius:16px!important;background:var(--Primary-50, #F2F4F7)!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:14px;font-style:normal;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.text-title{font-size:16px!important;font-weight:600!important;color:#101828!important;line-height:24px}.title-description{font-size:14px!important;font-weight:400;color:#101828!important;line-height:24px!important}.border-primary1{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:16px!important;font-weight:600;line-height:24px;text-transform:capitalize}.scroll-y{overflow-x:hidden;overflow-y:auto}.totalsize{width:18%}.view-detail{color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}.left-sidebar{position:sticky;top:0;width:33%;overflow-y:auto}.main-container{display:flex;align-items:flex-start}.right-content{flex-grow:1;width:67%}.bordercolor{border:1px solid var(--Gray-300, #D0D5DD)!important}\n"] }]
|
|
2447
2476
|
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.GlobalStateService }, { type: i3.TraxService }, { type: i0.ChangeDetectorRef }, { type: i4.NgbModal }, { type: i5.ActivatedRoute }, { type: i5.Router }, { type: i6.ToastService }, { type: i7.Location }, { type: i2.PageInfoService }], propDecorators: { onClick: [{
|
|
2448
2477
|
type: HostListener,
|
|
2449
2478
|
args: ['document:click', ['$event']]
|
|
@@ -2451,4 +2480,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
2451
2480
|
type: ViewChild,
|
|
2452
2481
|
args: ['zoomPopup']
|
|
2453
2482
|
}] } });
|
|
2454
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FsbGVyeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2dhbGxlcnkvZ2FsbGVyeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2dhbGxlcnkvZ2FsbGVyeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBYyxZQUFZLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVySCxPQUFPLEtBQWdCLE1BQU0sT0FBTyxDQUFDO0FBQ3JDLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBS25DLE9BQU8sRUFBRSxPQUFPLEVBQThDLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUl0RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUVwRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBWnBGLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFtQmxCLE1BQU0sT0FBTyxnQkFBZ0I7SUFxRlA7SUFBd0I7SUFBZ0M7SUFBa0M7SUFBK0I7SUFDbkk7SUFBK0I7SUFBd0I7SUFBb0M7SUFBNEI7SUFyRmpJLEtBQUssR0FBRyxLQUFLLENBQUE7SUFDYixpQkFBaUIsR0FBUSxFQUFFLENBQUM7SUFDNUIsWUFBWSxHQUFHLENBQUMsQ0FBYyxFQUFFLEVBQUU7UUFDaEMsTUFBTSxXQUFXLEdBQUcsQ0FB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RUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUM5RSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7UUFFOUUsSUFBSSxRQUFRLEtBQUssS0FBSyxFQUFFO1lBQ3RCLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNuRCxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDL0MsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFM0MsSUFBSSxVQUFVLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDckUsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsMENBQTBDLENBQUMsQ0FBQTtnQkFDM0UsT0FBTTthQUNQO1lBQ0QsSUFBSSxVQUFVLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDckUsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsMENBQTBDLENBQUMsQ0FBQTtnQkFDM0UsT0FBTTthQUNQO1lBQ0QsSUFBSSxVQUFVLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDckUsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsMENBQTBDLENBQUMsQ0FBQTtnQkFDM0UsT0FBTTthQUNQO1lBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxR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LENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztvQkFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7b0JBQ25CLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO29CQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztpQkFFeEI7WUFDSCxDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBRUosQ0FBQztJQUNELGNBQWM7UUFDWixJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDcEMsQ0FBQztJQUV1QixTQUFTLENBQWE7SUFDN0MsU0FBUyxDQUFDLElBQVE7UUFDaEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdkYsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFBQSxDQUFDO3dHQXA1RWYsZ0JBQWdCOzRGQUFoQixnQkFBZ0IseU5DdkI3Qiw2KzhHQXN3Q2M7OzRGRC91Q0QsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLGFBQWE7b1VBdTdEdkIsT0FBTztzQkFETixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQStkbEIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCBkYXlqcywgeyBEYXlqcyB9IGZyb20gXCJkYXlqc1wiO1xyXG5pbXBvcnQgdXRjIGZyb20gJ2RheWpzL3BsdWdpbi91dGMnO1xyXG5kYXlqcy5leHRlbmQodXRjKTtcclxuaW1wb3J0IHsgVGltZVBlcmlvZCB9IGZyb20gJ25neC1kYXRlcmFuZ2VwaWNrZXItbWF0ZXJpYWwvZGF0ZXJhbmdlcGlja2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSwgUGFnZUluZm9TZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbmltcG9ydCB7IFRyYXhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJheC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLXNoYXJlZCc7XHJcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRXhwb3J0R2FsbGVyeUNvbXBvbmVudCB9IGZyb20gJy4uL2V4cG9ydC1nYWxsZXJ5L2V4cG9ydC1nYWxsZXJ5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBBZGRUYXNrQ29tcG9uZW50IH0gZnJvbSAnLi4vYWRkLXRhc2svYWRkLXRhc2suY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFza0xvZ3NDb21wb25lbnQgfSBmcm9tICcuLi90YXNrLWxvZ3MvdGFzay1sb2dzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFwcHJvdmFsUG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi9hcHByb3ZhbC1wb3B1cC9hcHByb3ZhbC1wb3B1cC5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItZ2FsbGVyeScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2dhbGxlcnkuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9nYWxsZXJ5LmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgR2FsbGVyeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBkYXlqcyA9IGRheWpzXHJcbiAgc2VsZWN0ZWREYXRlUmFuZ2U6IGFueSA9IHt9O1xyXG4gIGlzQ3VzdG9tRGF0ZSA9IChtOiBkYXlqcy5EYXlqcykgPT4ge1xyXG4gICAgY29uc3QgaXNWYWxpZERhdGUgPSBtID4gdGhpcy5kYXlqcygpO1xyXG4gICAgcmV0dXJuIGlzVmFsaWREYXRlID8gJ2ludmFsaWQtZGF0ZScgOiBmYWxzZTtcclxuICB9XHJcblxyXG5cclxuICBnYWxsZXJ5Rm9ybTogRm9ybUdyb3VwXHJcbiAgdHlwZTogYW55ID0gW3sgdmFsdWU6ICdjaGVja2xpc3QnLCBsYWJlbDogJ0NoZWNrbGlzdCcgfSxcclxuICB7IHZhbHVlOiAndGFzaycsIGxhYmVsOiAnVGFzaycgfVxyXG4gIF1cclxuICBmaWx0ZXJ0eXBlOiBhbnkgPSBbeyB2YWx1ZTogJ0NsdXN0ZXJzJywgbGFiZWw6ICdDbHVzdGVycycgfSxcclxuICB7IHZhbHVlOiAnVGVhbXMnLCBsYWJlbDogJ1RlYW1zJyB9XHJcbiAgXVxyXG4gIGNoZWNrbGlzdHM6IGFueSA9IFtdXHJcbiAgYW5zd2VyVHlwZSA9IFtcclxuICAgIHsgbGFiZWw6ICdBbGwgQW5zd2VyIFR5cGUnLCB2YWx1ZTogJ2FsbCcgfSxcclxuICAgIHsgbGFiZWw6ICdEZXNjcmlwdGl2ZSBBbnN3ZXInLCB2YWx1ZTogJ2Rlc2NyaXB0aXZlJyB9LFxyXG4gICAgeyBsYWJlbDogJ0EvQiBRdWVzdGlvbicsIHZhbHVlOiAneWVzL25vJyB9LFxyXG4gICAgeyBsYWJlbDogJ011bHRpcGxlIENob2ljZSBRdWVzdGlvbiAtIFNpbmdsZSBBbnN3ZXInLCB2YWx1ZTogJ211bHRpcGxlY2hvaWNlc2luZ2xlJyB9LFxyXG4gICAgeyBsYWJlbDogJ011bHRpcGxlIENob2ljZSBRdWVzdGlvbiAtIE11bHRpcGxlIEFuc3dlcicsIHZhbHVlOiAnbXVsdGlwbGVjaG9pY2VtdWx0aXBsZScgfSxcclxuICAgIHsgbGFiZWw6ICdDYXB0dXJlIEltYWdlIGFzIGFuc3dlcicsIHZhbHVlOiAnaW1hZ2UnIH0sXHJcbiAgICB7IGxhYmVsOiAnQ2FwdHVyZSBJbWFnZSB3aXRoIERlc2NyaXB0aW9uJywgdmFsdWU6ICdkZXNjcmlwdGl2ZUltYWdlJyB9LFxyXG4gICAgeyBsYWJlbDogJ0NhcHR1cmUgdmlkZW8gYXMgYW5zd2VyJywgdmFsdWU6ICd2aWRlbycgfSxcclxuICAgIHsgbGFiZWw6ICdDYXB0dXJlIE11bHRpcGxlIEltYWdlJywgdmFsdWU6ICdtdWx0aXBsZUltYWdlJyB9LFxyXG4gICAgeyBsYWJlbDogJ0RhdGUgQXMgQW5zd2VyJywgdmFsdWU6ICdkYXRlJyB9LFxyXG4gICAgeyBsYWJlbDogJ1RpbWUgQXMgQW5zd2VyJywgdmFsdWU6ICd0aW1lJyB9LFxyXG4gICAgeyBsYWJlbDogJ0xpbmVhciBTY2FsZScsIHZhbHVlOiAnbGluZWFyc2NhbGUnIH1cclxuXHJcbiAgXVxyXG4gIGhlYWRlckZpbHRlcnM6IGFueSA9IHt9O1xyXG4gIHN0b3JlTGlzdDogYW55W10gPSBbXVxyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIGNoZWNrbGlzdERhdGE6IGFueSA9IHt9XHJcbiAgc3RvcmVzOiBhbnkgPSBbXTtcclxuICBncm91cHM6IGFueSA9IFtdO1xyXG4gIHRlYW1zOiBhbnkgPSBbXTtcclxuICBpdGVtczogYW55O1xyXG4gIHBhZ2luYXRlZEl0ZW1zOiBhbnk7XHJcbiAgaXRlbXNQZXJQYWdlID0gMTA7XHJcbiAgY3VycmVudFBhZ2UgPSAxO1xyXG4gIHRvdGFsSXRlbXMgPSAwO1xyXG4gIHZpZXdDaGVja2xpc3RzRGF0YTogYW55O1xyXG4gIGxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIG5vRGF0YTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHZpZXdsb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICB2aWV3bm9EYXRhOiBib29sZWFuID0gZmFsc2U7XHJcbiAgb2Zmc2V0OiBhbnkgPSAxO1xyXG4gIGxpbWl0OiBhbnkgPSAxO1xyXG4gIHBhZ2luYXRpb25TaXplcyA9IFsxXVxyXG4gIHRvdGFsQ291bnQ6IGFueTtcclxuICB2aWV3Q2hlY2tsaXN0c29wdGlvbnM6IGFueSA9IHt9O1xyXG4gIG1vYmlsZXVzYWdlRGF0YTogYW55O1xyXG4gIG1vYmlsZXVzYWdlRGF0YUxpc3Q6IGFueSA9IFtdXHJcbiAgc2VsZWN0QWxsOiBhbnlcclxuICBzdG9yZU9wZW5jbG9zZVZpZXc6IGFueTtcclxuICBxdWVyeVBhcmFtczogYW55O1xyXG4gIGN1c3RvbWVydW5hdHRlbmRlZERhdGE6IGFueTtcclxuICBzZWN0aW9uTmFtZTogYW55ID0gJ2FsbCc7XHJcbiAgcXVlc3Rpb25OYW1lOiBhbnkgPSAnYWxsJztcclxuICBjbGllbnREYXRhOiBhbnk7XHJcbiAgY2hlY2tsaXN0TmFtZTogYW55ID0gJyc7XHJcbiAgQ2x1c3Rlckxpc3Q6IGFueSA9IFtdO1xyXG4gIFRlYW1zTGlzdDogYW55ID0gW107XHJcbiAgdXNlckxpc3Q6IGFueSA9IFtdO1xyXG4gIGVudmlyb25tZW50OiBhbnk7XHJcbiAgc2hvd2ZsYWc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHNlbGVjdGVkU2VjdGlvbjogYW55ID0gW11cclxuICB0ZW1wc2VsZWN0ZWRTZWN0aW9uOiBhbnkgPSBbXVxyXG4gIHNob3dtdWx0aTogYm9vbGVhbiA9IHRydWU7XHJcbiAgc2hvd3NpbmdsZTogYm9vbGVhbiA9IGZhbHNlXHJcbiAgc2hvd2ZpbHRlcjogYm9vbGVhbiA9IGZhbHNlXHJcbiAgcHJldmlld1R5cGU6IGFueSA9ICdpbWFnZSc7XHJcbiAgY2hlY2tMaXN0RGVzY3JpcHRpb246IGFueSA9ICcnXHJcbiAgYW5zd2VyRmlsdGVyOiBhbnkgPSBbXVxyXG4gIGFwcHJvdmFsU3RhdHVzOiBib29sZWFuID0gZmFsc2VcclxuICBjYXRlZ29yeTogc3RyaW5nID0gJ2FsbCdcclxuICB2aWRlb0NoZWNrbGlzdCA9WydjdXN0b21lcnVuYXR0ZW5kZWQnLCAnc3RhZmZsZWZ0aW50aGVtaWRkbGUnLCAncmVtb3Rlb3B0b21ldHJpc3QnLCAnZXlldGVzdCcsJ2NsZWFuaW5nJywnc2NydW0nLCdzdXNwaWNpb3VzYWN0aXZpdHknXVxyXG4gIGltYWdlQ2hlY2tsaXN0ID1bJ21vYmlsZXVzYWdlZGV0ZWN0aW9uJywgJ3VuaWZvcm1kZXRlY3Rpb24nLCAnc3RvcmVoeWdpZW5lbW9uaXRvcmluZycsJ2N1c3RvbWVydHJpYWwnXVxyXG4gIGNvbWJpbmVkQ2hlY2tsaXN0ID0gWy4uLnRoaXMudmlkZW9DaGVja2xpc3QsIC4uLnRoaXMuaW1hZ2VDaGVja2xpc3QsICdzdG9yZW9wZW5hbmRjbG9zZScsJ3F1ZXVlYWxlcnQnLCdib3hhbGVydCcsJ3N1c3BpY2lvdXNmb290ZmFsbCddXHJcbiAgcXVldWVBbGVydFZpZXc6IGFueTtcclxuICB2aWV3SW1hZ2U6IGFueTtcclxuICB6b25lTGlzdDphbnkgPSBbXTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlciwgcHVibGljIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UsIHByaXZhdGUgdHJheFNlcnZpY2U6IFRyYXhTZXJ2aWNlLCBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UsIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uLCBwcml2YXRlIHBhZ2VJbmZvOiBQYWdlSW5mb1NlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMucm91dGU/LnF1ZXJ5UGFyYW1zXHJcbiAgICAgID8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHBhcmFtcykgPT4ge1xyXG4gICAgICAgIHRoaXMucXVlcnlQYXJhbXMgPSBwYXJhbXM7XHJcbiAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBpZiAodGhpcy5xdWVyeVBhcmFtcyAmJiB0aGlzLnF1ZXJ5UGFyYW1zLkNoZWNrbGlzdERhdGUpIHtcclxuXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlID0ge1xyXG4gICAgICAgICAgICBzdGFydERhdGU6IHRoaXMucXVlcnlQYXJhbXMuQ2hlY2tsaXN0RGF0ZSA/IHRoaXMuZGF5anModGhpcy5xdWVyeVBhcmFtcy5DaGVja2xpc3REYXRlKS5mb3JtYXQoJ0RELU1NLVlZWVknKSA6IHRoaXMuZGF5anMoKS5zdWJ0cmFjdCgxLCAnZGF5JykuZm9ybWF0KCdERC1NTS1ZWVlZJyksXHJcbiAgICAgICAgICAgIGVuZERhdGU6IHRoaXMucXVlcnlQYXJhbXMuQ2hlY2tsaXN0RGF0ZSA/IHRoaXMuZGF5anModGhpcy5xdWVyeVBhcmFtcy5DaGVja2xpc3REYXRlKS5mb3JtYXQoJ0RELU1NLVlZWVknKSA6IHRoaXMuZGF5anMoKS5zdWJ0cmFjdCgxLCAnZGF5JykuZm9ybWF0KCdERC1NTS1ZWVlZJylcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWUucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoZGF0YT8uY2xpZW50KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhlYWRlckZpbHRlcnMgPSBkYXRhO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRBbGxTdG9yZXMoKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbGV0IHVzZXJpbmZvID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInVzZXItaW5mb1wiKSB8fCBcIlwiKVxyXG4gICAgICAgICAgICAgICAgaWYgKHVzZXJpbmZvICYmIHVzZXJpbmZvPy5jbGllbnRJZCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmhlYWRlckZpbHRlcnMuY2xpZW50ID0gdXNlcmluZm8/LmNsaWVudElkXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0QWxsU3RvcmVzKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5xdWVyeVBhcmFtcy52aWV3UmVkbykge1xyXG4gICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldChcInZpZXdSZWRvXCIpPy5zZXRWYWx1ZSh0cnVlKVxyXG4gICAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UgPSB7XHJcbiAgICAgICAgICAgIHN0YXJ0RGF0ZTogdGhpcy5kYXlqcygpLnN1YnRyYWN0KDEsICdkYXknKS5mb3JtYXQoJ0RELU1NLVlZWVknKSxcclxuICAgICAgICAgICAgZW5kRGF0ZTogdGhpcy5kYXlqcygpLnN1YnRyYWN0KDEsICdkYXknKS5mb3JtYXQoJ0RELU1NLVlZWVknKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIHRoaXMuZ3MuZW52aXJvbm1lbnQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZW52KSA9PiB7XHJcbiAgICAgIGlmIChlbnYpIHtcclxuICAgICAgICB0aGlzLmVudmlyb25tZW50ID0gZW52XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIGNoZWNrdG9kYXlEYXRlKGNoZWNrbGlzdERhdGU6IGFueSkge1xyXG4gICAgY29uc3QgZ2l2ZW5EYXRlID0gY2hlY2tsaXN0RGF0ZTtcclxuICAgIGNvbnN0IGlzU2FtZURhdGUgPSBkYXlqcygpLmlzU2FtZShkYXlqcyhnaXZlbkRhdGUpLCAnZGF5Jyk7XHJcbiAgICByZXR1cm4gaXNTYW1lRGF0ZVxyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jcmVhdGVGb3JtKCk7XHJcbiAgICB0aGlzLnNldFBhZ2VEYXRhKCk7XHJcbiAgICBpZih0aGlzLnF1ZXJ5UGFyYW1zLmNvdmVyYWdlID09PSd1c2VyJyl7XHJcbiAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KFwiZmlsdGVydHlwZVwiKT8uc2V0VmFsdWUoJ1RlYW1zJylcclxuICAgIH1cclxuICAgIGlmKHRoaXMucXVlcnlQYXJhbXMuY292ZXJhZ2UgPT09J3N0b3Jlcycpe1xyXG4gICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldChcImZpbHRlcnR5cGVcIik/LnNldFZhbHVlKCdDbHVzdGVycycpXHJcbiAgICB9XHJcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGE/LmNsaWVudCkge1xyXG4gICAgICAgICAgdGhpcy5oZWFkZXJGaWx0ZXJzID0gZGF0YTtcclxuICAgICAgICAgIHRoaXMuY2xpZW50RGV0YWlscygpO1xyXG4gICAgICAgICAgdGhpcy5nZXRBbGxHcm91cHMoKTtcclxuICAgICAgICAgIHRoaXMuZ2V0QWxsU3RvcmVzKCk7XHJcbiAgICAgICAgICB0aGlzLmdldEFsbFVzZXJzKCk7XHJcbiAgICAgICAgICB0aGlzLmdldEFsbFRlYW1zKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxldCB1c2VyaW5mbyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ1c2VyLWluZm9cIikgfHwgXCJcIilcclxuICAgICAgICAgIGlmICh1c2VyaW5mbyAmJiB1c2VyaW5mbz8uY2xpZW50SWQpIHtcclxuICAgICAgICAgICAgdGhpcy5oZWFkZXJGaWx0ZXJzLmNsaWVudCA9IHVzZXJpbmZvPy5jbGllbnRJZFxyXG4gICAgICAgICAgICB0aGlzLmNsaWVudERldGFpbHMoKTtcclxuICAgICAgICAgICAgdGhpcy5nZXRBbGxHcm91cHMoKTtcclxuICAgICAgICAgICAgdGhpcy5nZXRBbGxTdG9yZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5nZXRBbGxVc2VycygpO1xyXG4gICAgICAgICAgICB0aGlzLmdldEFsbFRlYW1zKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHNldFBhZ2VEYXRhKCkge1xyXG4gICAgdGhpcy5wYWdlSW5mby5zZXRUaXRsZShcIkdhbGxlcnlcIik7XHJcbiAgICB0aGlzLnBhZ2VJbmZvLnNldERlc2NyaXB0aW9uKFwiXCIpO1xyXG4gICAgdGhpcy5wYWdlSW5mby5zZXRCcmVhZGNydW1icyhbXHJcbiAgICAgIHsgdGl0bGU6IFwiVGFuZ28gVHJheFwiLCBwYXRoOiBcIi9tYW5hZ2UvdHJheC9kYXNoYm9hcmRcIiwgaXNBY3RpdmU6IGZhbHNlLCBpc1NlcGFyYXRvcjogZmFsc2UgfSxcclxuICAgICAgeyB0aXRsZTogXCJUYW5nbyBUcmF4XCIsIHBhdGg6IFwiL21hbmFnZS90cmF4L2Rhc2hib2FyZFwiLCBpc0FjdGl2ZTogZmFsc2UsIGlzU2VwYXJhdG9yOiB0cnVlIH0sXHJcbiAgICBdKTtcclxuXHJcbiAgfVxyXG4gIGdldEFsbEdyb3VwcygpIHtcclxuICAgIHRoaXMudHJheFNlcnZpY2UuZ2V0Y2x1c3RlcnMoeyBjbGllbnRJZDogdGhpcy5oZWFkZXJGaWx0ZXJzLmNsaWVudCwgZ3JvdXA6IFtdLCBjaXR5OiBbXSB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5DbHVzdGVyTGlzdCA9IHJlcy5kYXRhLmdyb3VwRGF0YVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLkNsdXN0ZXJMaXN0ID0gW11cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIGdldEFsbFRlYW1zKCkge1xyXG4gICAgdGhpcy50cmF4U2VydmljZS5nZXRBbGxUZWFtcyh0aGlzLmhlYWRlckZpbHRlcnMuY2xpZW50KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5UZWFtc0xpc3QgPSByZXMuZGF0YVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLlRlYW1zTGlzdCA9IFtdXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICBjbGllbnREZXRhaWxzKCkge1xyXG4gICAgdGhpcy50cmF4U2VydmljZS5nZXRjbGllbnQoeyBjbGllbnRJZDogdGhpcy5oZWFkZXJGaWx0ZXJzLmNsaWVudCB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5jbGllbnREYXRhID0gcmVzLmRhdGEucmVzdWx0XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcmVkb0NoYW5nZWQoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKGV2ZW50LnRhcmdldC5jaGVja2VkKSB7XHJcbiAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KFwidmlld1JlZG9cIik/LnNldFZhbHVlKHRydWUpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRyYXhTZXJ2aWNlLmdldFN0b3Jlc2xpc3QoeyBjbGllbnRJZDogdGhpcy5oZWFkZXJGaWx0ZXJzLmNsaWVudCwgY2x1c3RlcnM6IHRoaXMuZ3JvdXBzLCBjaXR5OiBbXSB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZUxpc3QgPSByZXMuZGF0YS5zdG9yZXNEYXRhO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlcyA9IHJlcy5kYXRhLnN0b3Jlc0RhdGFcclxuICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3N0b3JlTGlzdCcpPy5zZXRWYWx1ZSh0aGlzLnN0b3JlTGlzdClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KFwidmlld1JlZG9cIik/LnNldFZhbHVlKGZhbHNlKVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGZsYWdDaGFuZ2VkKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudC50YXJnZXQuY2hlY2tlZCkge1xyXG4gICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldChcInZpZXdGbGFnXCIpPy5zZXRWYWx1ZSh0cnVlKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoXCJ2aWV3RmxhZ1wiKT8uc2V0VmFsdWUoZmFsc2UpXHJcbiAgICB9XHJcbiAgfVxyXG4gIG9uY2hlY2tsaXN0cmVzZXQoKSB7XHJcblxyXG4gICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoXCJmaWx0ZXJcIik/LnNldFZhbHVlKCcnKVxyXG4gICAgdGhpcy5hbnN3ZXJGaWx0ZXIgPSBbXVxyXG4gICAgdGhpcy5zaG93bXVsdGkgPSB0cnVlXHJcbiAgICB0aGlzLnNob3dzaW5nbGUgPSBmYWxzZVxyXG4gICAgaWYgKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudHlwZSA9PT0gJ2NoZWNrbGlzdCcpIHtcclxuICAgICAgdGhpcy5nZXRDaGVja2xpc3RRQShmYWxzZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdldFRhc2tRQSh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnR5cGUpXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcmVzZXRWYWxpZGF0aW9uKCkge1xyXG4gICAgdGhpcy5pc0N1c3RvbURhdGUgPSAobTogZGF5anMuRGF5anMpID0+IHtcclxuICAgICAgLy8gQ2hlY2sgaWYgdGhlIGdpdmVuIGRhdGUgaXMgYmVmb3JlIHllc3RlcmRheVxyXG4gICAgICByZXR1cm4gbS5pc0FmdGVyKHRoaXMuZGF5anMoKSwgJ2RheScpID8gJ2ludmFsaWQtZGF0ZScgOiBmYWxzZTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBvblN0YXJ0RGF0ZUNoYW5nZShldmVudDogYW55KSB7ICAgIFxyXG4gICAgaWYgKHRoaXMuZGF5anMoZXZlbnQuc3RhcnREYXRlKS5pc1ZhbGlkKCkpIHsgICAgICBcclxuICAgICAgbGV0IGNsaWVudGluZm8gPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY2xpZW50LWRldGFpbHNcIikgfHwgXCJcIilcclxuICAgICAgbGV0IHVzZXJpbmZvID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInVzZXItaW5mb1wiKSB8fCBcIlwiKVxyXG4gICAgICBpZiAoY2xpZW50aW5mbyB8fCB1c2VyaW5mbykge1xyXG4gICAgICAgIGlmIChjbGllbnRpbmZvPy50cmF4RGF0ZVJhbmdlID09PSA3IHx8IHVzZXJpbmZvPy50cmF4RGF0ZVJhbmdlID09PSA3KSB7XHJcbiAgICAgICAgICB0aGlzLmlzQ3VzdG9tRGF0ZSA9IChtOiBkYXlqcy5EYXlqcykgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpc1ZhbGlkRGF0ZSA9XHJcbiAgICAgICAgICAgICAgbSA+IHRoaXMuZGF5anMoKSB8fCBtID4gdGhpcy5kYXlqcyhldmVudC5zdGFydERhdGUuYWRkKDIsIFwiZGF5c1wiKSk7XHJcbiAgICAgICAgICAgIHJldHVybiBpc1ZhbGlkRGF0ZSA/IFwiaW52YWxpZC1kYXRlXCIgOiBmYWxzZTtcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuaXNDdXN0b21EYXRlID0gKG06IGRheWpzLkRheWpzKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzVmFsaWREYXRlID1cclxuICAgICAgICAgICAgICBtID4gdGhpcy5kYXlqcygpIHx8IG0gPiB0aGlzLmRheWpzKGV2ZW50LnN0YXJ0RGF0ZS5hZGQoMzAsIFwiZGF5c1wiKSk7XHJcbiAgICAgICAgICAgIHJldHVybiBpc1ZhbGlkRGF0ZSA/IFwiaW52YWxpZC1kYXRlXCIgOiBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICB9XHJcbiAgICAvLyB0aGlzLmdldEFsbENoZWNrTGlzdHMoZmFsc2UpXHJcbiAgfVxyXG4gIHNlbGVjdEFsbFN0b3JlKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudC50YXJnZXQuY2hlY2tlZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IGV2ZW50LnRhcmdldC5jaGVja2VkO1xyXG4gICAgICB0aGlzLm1vYmlsZXVzYWdlRGF0YUxpc3QuZm9yRWFjaCgob2JqOiBhbnkpID0+IChvYmouY2hlY2tlZCA9IHRoaXMuc2VsZWN0QWxsKSk7XHJcbiAgICAgIGxldCBzdG9yZSA9IHRoaXMubW9iaWxldXNhZ2VEYXRhTGlzdC5maWx0ZXIoKGVsOiBhbnkpID0+IGVsLmNoZWNrZWQpXHJcbiAgICAgIGNvbnN0IGNoYW5nZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoc3RvcmUpKVxyXG4gICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnc3RvcmVMaXN0Jyk/LnNldFZhbHVlKGNoYW5nZSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gZmFsc2VcclxuICAgICAgdGhpcy5tb2JpbGV1c2FnZURhdGFMaXN0LmZvckVhY2goKG9iajogYW55KSA9PiAob2JqLmNoZWNrZWQgPSB0aGlzLnNlbGVjdEFsbCkpO1xyXG4gICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnc3RvcmVMaXN0Jyk/LnNldFZhbHVlKFtdKVxyXG4gICAgfVxyXG4gIH1cclxuICB1cGRhdGVDaGVjayhldmVudDogYW55LCBzdG9yZWRhdGE6IGFueSkge1xyXG4gICAgdGhpcy5tb2JpbGV1c2FnZURhdGFMaXN0LmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChlbGUuc3RvcmVJZCA9PT0gc3RvcmVkYXRhLnN0b3JlSWQpIHtcclxuICAgICAgICBlbGUuY2hlY2tlZCA9IGV2ZW50LnRhcmdldC5jaGVja2VkO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGxldCBzdG9yZSA9IHRoaXMubW9iaWxldXNhZ2VEYXRhTGlzdC5maWx0ZXIoKGRhdGE6IGFueSkgPT4gZGF0YS5jaGVja2VkKTtcclxuICAgIGNvbnN0IGNoYW5nZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoc3RvcmUpKVxyXG5cclxuICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdzdG9yZUxpc3QnKT8uc2V0VmFsdWUoY2hhbmdlKVxyXG4gICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3pvbmVMaXN0Jyk/LnNldFZhbHVlKFtdKVxyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKClcclxuICAgIHRoaXMuc2VsZWN0QWxsID0gdGhpcy5tb2JpbGV1c2FnZURhdGFMaXN0LmV2ZXJ5KChvYmo6IGFueSkgPT4gb2JqLmNoZWNrZWQpO1xyXG5cclxuICB9XHJcbiAgY3JlYXRlRm9ybSgpIHtcclxuICAgIHRoaXMuZ2FsbGVyeUZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgZnJvbURhdGU6IFtkYXlqcyh0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlLnN0YXJ0RGF0ZSwgXCJERC1NTS1ZWVlZXCIpLmZvcm1hdChcIllZWVktTU0tRERcIildLFxyXG4gICAgICB0b0RhdGU6IFtkYXlqcyh0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlLmVuZERhdGUsIFwiREQtTU0tWVlZWVwiKS5mb3JtYXQoJ1lZWVktTU0tREQnKV0sXHJcbiAgICAgIHR5cGU6ICdjaGVja2xpc3QnLFxyXG4gICAgICBmaWx0ZXJ0eXBlOiAnQ2x1c3RlcnMnLFxyXG4gICAgICBjaGVja2xpc3ROYW1lOiAnJyxcclxuICAgICAgc3RvcmVMaXN0OiBbdGhpcy5zdG9yZXNdLFxyXG4gICAgICB1c2VyTGlzdDogW3RoaXMudXNlckxpc3RdLFxyXG4gICAgICBhbnN3ZXJUeXBlOiBbJ2FsbCddLFxyXG4gICAgICB2aWV3RmxhZzogW2ZhbHNlXSxcclxuICAgICAgdmlld1JlZG86IFtmYWxzZV0sXHJcbiAgICAgIGNoZWNrTGlzdFR5cGU6IFwiY3VzdG9tXCIsXHJcbiAgICAgIHNvdXJjZUNoZWNrTGlzdF9pZDogXCJcIixcclxuICAgICAgQ2x1c3Rlckxpc3Q6IFt0aGlzLmdyb3Vwc10sXHJcbiAgICAgIFRlYW1zTGlzdDogW3RoaXMuVGVhbXNMaXN0XSxcclxuICAgICAgY2hlY2tMaXN0RGVzY3JpcHRpb246IFwiXCIsXHJcbiAgICAgIGZpbHRlcjogXCJcIixcclxuICAgICAgem9uZUxpc3Q6W3RoaXMuem9uZUxpc3RdXHJcbiAgICB9KVxyXG5cclxuICB9XHJcblxyXG4gIGRhdGVjaGFuZ2UoZXZlbnQ6IFRpbWVQZXJpb2QpIHtcclxuICAgIGlmICghZXZlbnQuZW5kRGF0ZSB8fCAhZXZlbnQuc3RhcnREYXRlKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgdGhpcy5yZW1vdmVRdWVyeVBhcmFtcygpXHJcbiAgICB0aGlzLnJlc2V0VmFsaWRhdGlvbigpO1xyXG4gICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ2Zyb21EYXRlJyk/LnNldFZhbHVlKGV2ZW50LnN0YXJ0RGF0ZS5mb3JtYXQoJ1lZWVktTU0tREQnKSlcclxuICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCd0b0RhdGUnKT8uc2V0VmFsdWUoZXZlbnQuZW5kRGF0ZS5mb3JtYXQoJ1lZWVktTU0tREQnKSlcclxuICAgIHRoaXMudHJheFNlcnZpY2UuZ2V0U3RvcmVzbGlzdCh7IGNsaWVudElkOiB0aGlzLmhlYWRlckZpbHRlcnMuY2xpZW50LCBjbHVzdGVyczogdGhpcy5ncm91cHMsIGNpdHk6IFtdIH0pLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLnN0b3JlTGlzdCA9IHJlcy5kYXRhLnN0b3Jlc0RhdGE7XHJcbiAgICAgICAgICB0aGlzLnN0b3JlcyA9IHJlcy5kYXRhLnN0b3Jlc0RhdGFcclxuICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdzdG9yZUxpc3QnKT8uc2V0VmFsdWUodGhpcy5zdG9yZUxpc3QpXHJcbiAgICAgICAgICBpZiAodGhpcy5xdWVyeVBhcmFtcy5jaGVja2xpc3RUeXBlID09ICd0YXNrJykge1xyXG4gICAgICAgICAgICB0aGlzLmdldEFsbFRhc2tzKGZhbHNlKVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRBbGxDaGVja0xpc3RzKGZhbHNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICBcclxuICB9XHJcbiAgZ2V0QWxsVXNlcnMoKSB7XHJcbiAgICBsZXQgdGVhbXNMaXN0ID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5UZWFtc0xpc3QubWFwKChkYXRhOiBhbnkpID0+IGRhdGEudGVhbU5hbWUpXHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLmdldHVzZXJzKHsgY2xpZW50SWQ6IHRoaXMuaGVhZGVyRmlsdGVycy5jbGllbnQsIHRlYW1zOiB0ZWFtc0xpc3QgfSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIGlmICh0aGlzLnF1ZXJ5UGFyYW1zLnVzZXJFbWFpbCkge1xyXG4gICAgICAgICAgICBsZXQgZ2V0dXNlciA9IHJlcy5kYXRhLmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZS51c2VyRW1haWwgPT09IHRoaXMucXVlcnlQYXJhbXMudXNlckVtYWlsKVxyXG4gICAgICAgICAgICB0aGlzLnVzZXJMaXN0ID0gZ2V0dXNlcjtcclxuICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3VzZXJMaXN0Jyk/LnNldFZhbHVlKHRoaXMudXNlckxpc3QpXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnF1ZXJ5UGFyYW1zLmNoZWNrbGlzdFR5cGUgPT0gJ3Rhc2snKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRBbGxUYXNrcyh0cnVlKVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0QWxsQ2hlY2tMaXN0cyh0cnVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy51c2VyTGlzdCA9IHJlcy5kYXRhO1xyXG4gICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgndXNlckxpc3QnKT8uc2V0VmFsdWUodGhpcy51c2VyTGlzdClcclxuICAgICAgICAgICAgaWYgKHRoaXMucXVlcnlQYXJhbXMuY2hlY2tsaXN0VHlwZSA9PSAndGFzaycpIHtcclxuICAgICAgICAgICAgICB0aGlzLmdldEFsbFRhc2tzKHRydWUpXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRBbGxDaGVja0xpc3RzKHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuXHJcblxyXG5cclxuICB9XHJcbiAgZ2V0QWxsU3RvcmVzKCkge1xyXG4gICAgdGhpcy50cmF4U2VydmljZS5nZXRTdG9yZXNsaXN0KHsgY2xpZW50SWQ6IHRoaXMuaGVhZGVyRmlsdGVycy5jbGllbnQsIGNsdXN0ZXJzOiB0aGlzLmdyb3VwcywgY2l0eTogW10gfSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuc3RvcmVMaXN0ID0gcmVzLmRhdGEuc3RvcmVzRGF0YTtcclxuICAgICAgICAgIGlmICh0aGlzLnF1ZXJ5UGFyYW1zLnN0b3JlSWQpIHtcclxuICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3VzZXJMaXN0Jyk/LnNldFZhbHVlKFtdKVxyXG4gICAgICAgICAgICB0aGlzLnN0b3JlTGlzdCA9IHJlcy5kYXRhLnN0b3Jlc0RhdGE7XHJcbiAgICAgICAgICAgIGxldCBnZXRzdG9yZSA9IHRoaXMuc3RvcmVMaXN0LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZS5zdG9yZUlkID09PSB0aGlzLnF1ZXJ5UGFyYW1zLnN0b3JlSWQpXHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmVzID0gZ2V0c3RvcmVcclxuICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3N0b3JlTGlzdCcpPy5zZXRWYWx1ZSh0aGlzLnN0b3JlcylcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnF1ZXJ5UGFyYW1zLmNoZWNrbGlzdFR5cGUgPT0gJ3Rhc2snKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRBbGxUYXNrcyh0cnVlKVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0QWxsQ2hlY2tMaXN0cyh0cnVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnF1ZXJ5UGFyYW1zLnVzZXJFbWFpbCkge1xyXG4gICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnc3RvcmVMaXN0Jyk/LnNldFZhbHVlKFtdKVxyXG4gICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnZmlsdGVydHlwZScpPy5zZXRWYWx1ZSgnVGVhbXMnKVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZXMgPSByZXMuZGF0YS5zdG9yZXNEYXRhXHJcbiAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdzdG9yZUxpc3QnKT8uc2V0VmFsdWUodGhpcy5zdG9yZUxpc3QpXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnF1ZXJ5UGFyYW1zLmNoZWNrbGlzdFR5cGUgPT0gJ3Rhc2snKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRBbGxUYXNrcyh0cnVlKVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0QWxsQ2hlY2tMaXN0cyh0cnVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnN0b3JlTGlzdCA9IFtdO1xyXG4gICAgICAgICAgdGhpcy52aWV3bG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy52aWV3bm9EYXRhID0gdHJ1ZSxcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuXHJcbiAgICAgICAgdGhpcy5zdG9yZUxpc3QgPSBbXTtcclxuICAgICAgICB0aGlzLnZpZXdsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy52aWV3bm9EYXRhID0gdHJ1ZSxcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldEFsbENoZWNrTGlzdHModHlwZTogYW55KSB7XHJcbiAgICBsZXQgc3RvcmVzID0gdGhpcy5zdG9yZXM/Lm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnN0b3JlSWQpXHJcbiAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICBmcm9tRGF0ZTogdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ2Zyb21EYXRlJyk/LnZhbHVlLFxyXG4gICAgICB0b0RhdGU6IHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCd0b0RhdGUnKT8udmFsdWUsXHJcbiAgICAgIHN0b3JlSWQ6IHN0b3JlcyxcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuaGVhZGVyRmlsdGVycz8uY2xpZW50LFxyXG4gICAgICBzb3J0Q29sdW1uTmFtZTogXCJjaGVja0xpc3ROYW1lXCIsXHJcbiAgICAgIHNvcnRCeTogMVxyXG4gICAgfVxyXG4gICAgdGhpcy50cmF4U2VydmljZS5nZXRDaGVja2xpc3RzKHBheWxvYWQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmNoZWNrbGlzdHMgPSByZXMuZGF0YS5jaGVja2xpc3REYXRhXHJcbiAgICAgICAgICBpZiAodGhpcy5oZWFkZXJGaWx0ZXJzLmNsaWVudCA9PT0gXCI1OVwiKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0cyA9IFsuLi50aGlzLmNoZWNrbGlzdHMsIC4uLlt7XHJcbiAgICAgICAgICAgICAgXCJfaWRcIjogXCI2NzQ2Yzg4OWY1YWRjM2IzMmYwZDdlNTdcIixcclxuICAgICAgICAgICAgICBcInNvdXJjZUNoZWNrTGlzdF9pZFwiOiBcImN1c3RvbWVydHJpYWxcIixcclxuICAgICAgICAgICAgICBcImNoZWNrTGlzdE5hbWVcIjogXCJDdXN0b21lciBUcmlhbFwiLFxyXG4gICAgICAgICAgICAgIFwiY2hlY2tMaXN0VHlwZVwiOiBcIkFJXCIsXHJcbiAgICAgICAgICAgICAgXCJjcmVhdGVkQnlOYW1lXCI6IFwiQmVqYW5cIixcclxuICAgICAgICAgICAgICBcInN0b3JlQ291bnRcIjogMCxcclxuICAgICAgICAgICAgICBcInNjaGVkdWxlUmVwZWF0ZWRUeXBlXCI6IFwiZGFpbHlcIixcclxuICAgICAgICAgICAgICBcInNjaGVkdWxlU3RhcnRUaW1lXCI6IFwiMTA6MDAgQU1cIixcclxuICAgICAgICAgICAgICBcInNjaGVkdWxlRW5kVGltZVwiOiBcIjEwOjAwIFBNXCIsXHJcbiAgICAgICAgICAgICAgXCJjaGVja0xpc3REZXNjcmlwdGlvblwiOiBcIlwiLFxyXG4gICAgICAgICAgICAgIFwicHVibGlzaFwiOiB0cnVlXHJcbiAgICAgICAgICAgIH1dXVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5xdWVyeVBhcmFtcy5zb3VyY2VDaGVja0xpc3RfaWQgJiYgdGhpcy5xdWVyeVBhcmFtcy5jaGVja2xpc3RUeXBlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3NvdXJjZUNoZWNrTGlzdF9pZCcpPy5zZXRWYWx1ZSh0aGlzLnF1ZXJ5UGFyYW1zLnNvdXJjZUNoZWNrTGlzdF9pZClcclxuICAgICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnY2hlY2tMaXN0VHlwZScpPy5zZXRWYWx1ZSh0aGlzLnF1ZXJ5UGFyYW1zLmNoZWNrbGlzdFR5cGUpXHJcbiAgICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3R5cGUnKT8uc2V0VmFsdWUoXCJjaGVja2xpc3RcIilcclxuXHJcbiAgICAgICAgICAgICAgbGV0IGdldGNoZWNrbGlzdCA9IHRoaXMuY2hlY2tsaXN0cy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGUuc291cmNlQ2hlY2tMaXN0X2lkID09PSB0aGlzLnF1ZXJ5UGFyYW1zLnNvdXJjZUNoZWNrTGlzdF9pZClcclxuICAgICAgICAgICAgICBpZiAoZ2V0Y2hlY2tsaXN0ICYmIGdldGNoZWNrbGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZ2V0Y2hlY2tsaXN0WzBdLmNoZWNrTGlzdFR5cGUgPT09IFwiQUlcIikge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNob3dmbGFnID0gZmFsc2VcclxuICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnY2hlY2tsaXN0TmFtZScpPy5zZXRWYWx1ZShnZXRjaGVja2xpc3RbMF0/LmNoZWNrTGlzdE5hbWUpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnY2hlY2tMaXN0RGVzY3JpcHRpb24nKT8uc2V0VmFsdWUoZ2V0Y2hlY2tsaXN0WzBdPy5jaGVja0xpc3REZXNjcmlwdGlvbilcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0TmFtZSA9IGdldGNoZWNrbGlzdFswXT8uY2hlY2tMaXN0TmFtZVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAodGhpcy5xdWVyeVBhcmFtcy5jaGVja2xpc3RUeXBlID09PSAnc3RvcmVvcGVuYW5kY2xvc2UnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdCA9ICdzdG9yZW9wZW5hbmRjbG9zZSdcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmVPcGVuY2xvc2VsaXN0KGZhbHNlKVxyXG4gICAgICAgICAgICAgIH1lbHNlIGlmICh0aGlzLnF1ZXJ5UGFyYW1zLmNoZWNrbGlzdFR5cGUgPT09ICdxdWV1ZWFsZXJ0J3x8dGhpcy5xdWVyeVBhcmFtcy5jaGVja2xpc3RUeXBlID09PSAnYm94YWxlcnQnfHx0aGlzLnF1ZXJ5UGFyYW1zLmNoZWNrbGlzdFR5cGUgPT09ICdzdXNwaWNpb3VzZm9vdGZhbGwnKSB7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ID0gdGhpcy5xdWVyeVBhcmFtcy5jaGVja2xpc3RUeXBlXHJcbiAgICAgICAgICAgICAgICB0aGlzLnF1ZXVlYWxlcnRsaXN0KGZhbHNlKVxyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy52aWRlb0NoZWNrbGlzdC5pbmNsdWRlcyh0aGlzLnF1ZXJ5UGFyYW1zLmNoZWNrbGlzdFR5cGUpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdCA9IHRoaXMucXVlcnlQYXJhbXMuY2hlY2tsaXN0VHlwZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tZXJ1bmF0dGVuZGVkbGlzdChmYWxzZSlcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaW1hZ2VDaGVja2xpc3QuaW5jbHVkZXModGhpcy5xdWVyeVBhcmFtcy5jaGVja2xpc3RUeXBlKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3QgPSB0aGlzLnF1ZXJ5UGFyYW1zLmNoZWNrbGlzdFR5cGU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldG1vYmlsZVVzYWdlRGF0YWxpc3QoZmFsc2UpXHJcbiAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgICAgICBpZiAodGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZSAmJiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmNoZWNrTGlzdFR5cGUgIT0gJycpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdjaGVja0xpc3RUeXBlJyk/LnNldFZhbHVlKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuY2hlY2tMaXN0VHlwZSlcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ2NoZWNrTGlzdFR5cGUnKT8uc2V0VmFsdWUodGhpcy5jaGVja2xpc3RzWzBdPy5jaGVja0xpc3RUeXBlKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAodGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZSAmJiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmNoZWNrbGlzdE5hbWUgIT0gJycpIHtcclxuICAgICAgICAgICAgICAgIGxldCBnZXRjaGVja2xpc3QgPSB0aGlzLmNoZWNrbGlzdHMuZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlLmNoZWNrTGlzdE5hbWUgPT09IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuY2hlY2tsaXN0TmFtZSlcclxuICAgICAgICAgICAgICAgIGlmIChnZXRjaGVja2xpc3QgJiYgZ2V0Y2hlY2tsaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKGdldGNoZWNrbGlzdFswXS5jaGVja0xpc3RUeXBlID09PSBcIkFJXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dmbGFnID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ2ZpbHRlcnR5cGUnKT8uc2V0VmFsdWUoZ2V0Y2hlY2tsaXN0WzBdPy5jb3ZlcmFnZSA9PT0gJ3VzZXInID8gXCJUZWFtc1wiIDogXCJDbHVzdGVyc1wiKVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnY2hlY2tMaXN0VHlwZScpPy5zZXRWYWx1ZShnZXRjaGVja2xpc3RbMF0/LmNoZWNrTGlzdFR5cGUpXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdjaGVja2xpc3ROYW1lJyk/LnNldFZhbHVlKGdldGNoZWNrbGlzdFswXT8uY2hlY2tMaXN0TmFtZSlcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja2xpc3ROYW1lID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5jaGVja2xpc3ROYW1lXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdzb3VyY2VDaGVja0xpc3RfaWQnKT8uc2V0VmFsdWUoZ2V0Y2hlY2tsaXN0WzBdPy5zb3VyY2VDaGVja0xpc3RfaWQpXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdjaGVja0xpc3REZXNjcmlwdGlvbicpPy5zZXRWYWx1ZShnZXRjaGVja2xpc3RbMF0/LmNoZWNrTGlzdERlc2NyaXB0aW9uKVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ2ZpbHRlcnR5cGUnKT8uc2V0VmFsdWUodGhpcy5jaGVja2xpc3RzWzBdPy5jb3ZlcmFnZSA9PT0gJ3VzZXInID8gXCJUZWFtc1wiIDogXCJDbHVzdGVyc1wiKVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnY2hlY2tMaXN0VHlwZScpPy5zZXRWYWx1ZSh0aGlzLmNoZWNrbGlzdHNbMF0/LmNoZWNrTGlzdFR5cGUpXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdjaGVja2xpc3ROYW1lJyk/LnNldFZhbHVlKHRoaXMuY2hlY2tsaXN0c1swXT8uY2hlY2tMaXN0TmFtZSlcclxuICAgICAgICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ2NoZWNrTGlzdERlc2NyaXB0aW9uJyk/LnNldFZhbHVlKHRoaXMuY2hlY2tsaXN0c1swXT8uY2hlY2tMaXN0RGVzY3JpcHRpb24pXHJcblxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrbGlzdE5hbWUgPSB0aGlzLmNoZWNrbGlzdHNbMF0/LmNoZWNrTGlzdE5hbWVcclxuICAgICAgICAgICAgICAgICAgbGV0IGdldGNoZWNrbGlzdCA9IHRoaXMuY2hlY2tsaXN0cy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGUuY2hlY2tMaXN0TmFtZSA9PT0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5jaGVja2xpc3ROYW1lKVxyXG4gICAgICAgICAgICAgICAgICBpZiAoZ2V0Y2hlY2tsaXN0ICYmIGdldGNoZWNrbGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdldGNoZWNrbGlzdFswXS5jaGVja0xpc3RUeXBlID09PSBcIkFJXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd2ZsYWcgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja0xpc3REZXNjcmlwdGlvbiA9IGdldGNoZWNrbGlzdFswXT8uY2hlY2tMaXN0RGVzY3JpcHRpb25cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnY2hlY2tMaXN0RGVzY3JpcHRpb24nKT8uc2V0VmFsdWUoZ2V0Y2hlY2tsaXN0WzBdPy5jaGVja0xpc3REZXNjcmlwdGlvbilcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnc291cmNlQ2hlY2tMaXN0X2lkJyk/LnNldFZhbHVlKGdldGNoZWNrbGlzdFswXT8uc291cmNlQ2hlY2tMaXN0X2lkKVxyXG4gICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnZmlsdGVydHlwZScpPy5zZXRWYWx1ZSh0aGlzLmNoZWNrbGlzdHNbMF0/LmNvdmVyYWdlID09PSAndXNlcicgPyBcIlRlYW1zXCIgOiBcIkNsdXN0ZXJzXCIpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnY2hlY2tMaXN0VHlwZScpPy5zZXRWYWx1ZSh0aGlzLmNoZWNrbGlzdHNbMF0/LmNoZWNrTGlzdFR5cGUpXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jaGVja2xpc3RzWzBdLmNoZWNrTGlzdFR5cGUgPT09IFwiQUlcIikge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNob3dmbGFnID0gZmFsc2VcclxuICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnY2hlY2tsaXN0TmFtZScpPy5zZXRWYWx1ZSh0aGlzLmNoZWNrbGlzdHNbMF0/LmNoZWNrTGlzdE5hbWUpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnY2hlY2tMaXN0RGVzY3JpcHRpb24nKT8uc2V0VmFsdWUodGhpcy5jaGVja2xpc3RzWzBdPy5jaGVja0xpc3REZXNjcmlwdGlvbilcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0TmFtZSA9IHRoaXMuY2hlY2tsaXN0c1swXT8uY2hlY2tMaXN0TmFtZVxyXG4gICAgICAgICAgICAgICAgbGV0IGdldGNoZWNrbGlzdCA9IHRoaXMuY2hlY2tsaXN0cy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGUuY2hlY2tMaXN0TmFtZSA9PT0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5jaGVja2xpc3ROYW1lKVxyXG4gICAgICAgICAgICAgICAgaWYgKGdldGNoZWNrbGlzdCAmJiBnZXRjaGVja2xpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrTGlzdERlc2NyaXB0aW9uID0gZ2V0Y2hlY2tsaXN0WzBdPy5jaGVja0xpc3REZXNjcmlwdGlvblxyXG5cclxuICAgICAgICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3NvdXJjZUNoZWNrTGlzdF9pZCcpPy5zZXRWYWx1ZShnZXRjaGVja2xpc3RbMF0/LnNvdXJjZUNoZWNrTGlzdF9pZClcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpXHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQgPT09ICdzdG9yZW9wZW5hbmRjbG9zZScpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdCA9ICdzdG9yZW9wZW5hbmRjbG9zZSdcclxuICAgICAgICAgICAgICB0aGlzLnN0b3JlT3BlbmNsb3NlbGlzdChmYWxzZSlcclxuICAgICAgICAgICAgfWVsc2UgaWYgKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkID09PSAncXVldWVhbGVydCd8fHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkID09PSAnYm94YWxlcnQnfHx0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCA9PT0gJ3N1c3BpY2lvdXNmb290ZmFsbCcpIHtcclxuICAgICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnem9uZUxpc3QnKT8uc2V0VmFsdWUoW10pXHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3QgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZFxyXG4gICAgICAgICAgICAgIHRoaXMucXVldWVhbGVydGxpc3QoZmFsc2UpXHJcbiAgICAgICAgICAgIH0gIGVsc2UgaWYgKHRoaXMuaW1hZ2VDaGVja2xpc3QuaW5jbHVkZXModGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3QgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZDtcclxuICAgICAgICAgICAgICB0aGlzLmdldG1vYmlsZVVzYWdlRGF0YWxpc3QoZmFsc2UpXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy52aWRlb0NoZWNrbGlzdC5pbmNsdWRlcyh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCkpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdCA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkO1xyXG4gICAgICAgICAgICAgIHRoaXMuY3VzdG9tZXJ1bmF0dGVuZGVkbGlzdChmYWxzZSlcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdCA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudHlwZSA9PT0gJ2NoZWNrbGlzdCcgPyBcImN1c3RvbVwiIDogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50eXBlO1xyXG4gICAgICAgICAgICAgIGlmKHR5cGUpe1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudHlwZSA9PT0gJ2NoZWNrbGlzdCcpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZmlsdGVydHlwZSA9PT0gJ0NsdXN0ZXJzJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCd1c2VyTGlzdCcpPy5zZXRWYWx1ZShbXSlcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3JlTGlzdGRyb3Bkb3duKCk7XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3N0b3JlTGlzdCcpPy5zZXRWYWx1ZShbXSlcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXJMaXN0ZHJvcGRvd24oKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yZUxpc3Rkcm9wZG93blRhc2soKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5jaGVja2xpc3RzID0gW107XHJcbiAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnY2hlY2tsaXN0TmFtZScpPy5zZXRWYWx1ZSgnJylcclxuICAgICAgICAgIHRoaXMudmlld2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudmlld25vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZVxyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCkgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmNoZWNrbGlzdHMgPSBbXTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICByZW1vdmVRdWVyeVBhcmFtcygpIHtcclxuICAgIHRoaXMucXVlcnlQYXJhbXMgPSB7fVxyXG4gICAgY29uc3QgdXJsV2l0aG91dFBhcmFtcyA9IHRoaXMubG9jYXRpb24ucGF0aCgpLnNwbGl0KCc/JylbMF07XHJcbiAgICB0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZSh1cmxXaXRob3V0UGFyYW1zKTtcclxuICB9XHJcbiAgb25UZWFtc1NlbGVjdChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnVGVhbXNMaXN0Jyk/LnNldFZhbHVlKGV2ZW50KVxyXG4gICAgbGV0IHRlYW1zTGlzdCA9IGV2ZW50Lm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnRlYW1OYW1lKVxyXG4gICAgdGhpcy50cmF4U2VydmljZS5nZXR1c2Vycyh7IGNsaWVudElkOiB0aGlzLmhlYWRlckZpbHRlcnMuY2xpZW50LCB0ZWFtczogdGVhbXNMaXN0IH0pLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLnVzZXJMaXN0ID0gcmVzLmRhdGE7XHJcbiAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgndXNlckxpc3QnKT8uc2V0VmFsdWUodGhpcy51c2VyTGlzdClcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIG9uZ3JvdXBTZWxlY3QoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5yZW1vdmVRdWVyeVBhcmFtcygpXHJcbiAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnQ2x1c3Rlckxpc3QnKT8uc2V0VmFsdWUoZXZlbnQpXHJcbiAgICB0aGlzLmdyb3VwcyA9IGV2ZW50Lm1hcCgoZWw6IGFueSkgPT4gZWwuZ3JvdXBOYW1lKVxyXG4gICAgLy8gdGhpcy5nZXRBbGxTdG9yZXMoKVxyXG4gICAgdGhpcy50cmF4U2VydmljZS5nZXRTdG9yZXNsaXN0KHsgY2xpZW50SWQ6IHRoaXMuaGVhZGVyRmlsdGVycy5jbGllbnQsIGNsdXN0ZXJzOiB0aGlzLmdyb3VwcywgY2l0eTogW10gfSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuc3RvcmVMaXN0ID0gcmVzLmRhdGEuc3RvcmVzRGF0YTtcclxuICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdzdG9yZUxpc3QnKT8uc2V0VmFsdWUodGhpcy5zdG9yZUxpc3QpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIGZpbHRlckNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnJlbW92ZVF1ZXJ5UGFyYW1zKClcclxuICAgIGlmIChldmVudCA9PT0gJ1RlYW1zJykge1xyXG4gICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnc3RvcmVzJyk/LnNldFZhbHVlKFtdKVxyXG4gICAgICBsZXQgdGVhbXNMaXN0ID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5UZWFtc0xpc3QubWFwKChkYXRhOiBhbnkpID0+IGRhdGEudGVhbU5hbWUpXHJcbiAgICAgIHRoaXMudHJheFNlcnZpY2UuZ2V0dXNlcnMoeyBjbGllbnRJZDogdGhpcy5oZWFkZXJGaWx0ZXJzLmNsaWVudCwgdGVhbXM6IHRlYW1zTGlzdCB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy51c2VyTGlzdCA9ICByZXMuZGF0YVxyXG4gICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgndXNlckxpc3QnKT8uc2V0VmFsdWUocmVzLmRhdGEpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3VzZXJMaXN0Jyk/LnNldFZhbHVlKFtdKVxyXG4gICAgICB0aGlzLnRyYXhTZXJ2aWNlLmdldFN0b3Jlc2xpc3QoeyBjbGllbnRJZDogdGhpcy5oZWFkZXJGaWx0ZXJzLmNsaWVudCwgY2x1c3RlcnM6IHRoaXMuZ3JvdXBzLCBjaXR5OiBbXSB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZUxpc3QgPSAgcmVzLmRhdGEuc3RvcmVzRGF0YVxyXG4gICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnc3RvcmVMaXN0Jyk/LnNldFZhbHVlKHJlcy5kYXRhLnN0b3Jlc0RhdGEpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ2ZpbHRlcnR5cGUnKT8uc2V0VmFsdWUoZXZlbnQpXHJcbiAgfVxyXG4gIG9uem9uZVNlbGVjdChldmVudDogYW55KXtcclxuICAgIGNvbnNvbGUubG9nKGV2ZW50KVxyXG4gICAgdGhpcy5yZW1vdmVRdWVyeVBhcmFtcygpXHJcbiAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnem9uZUxpc3QnKT8uc2V0VmFsdWUoZXZlbnQpXHJcbiAgfVxyXG4gIG9uU3RvcmVTZWxlY3QoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5yZW1vdmVRdWVyeVBhcmFtcygpXHJcbiAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnem9uZUxpc3QnKT8uc2V0VmFsdWUoW10pXHJcbiAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnc3RvcmVMaXN0Jyk/LnNldFZhbHVlKGV2ZW50KVxyXG4gIFxyXG4gICAgdGhpcy5tb2JpbGV1c2FnZURhdGFMaXN0LmZvckVhY2goKHN0b3JlOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgaXNTdG9yZVNlbGVjdGVkID0gZXZlbnQuc29tZSgoc2VsZWN0ZWRTdG9yZTogYW55KSA9PiBzZWxlY3RlZFN0b3JlLnN0b3JlSWQgPT09IHN0b3JlLnN0b3JlSWQpO1xyXG4gICAgICBpZiAoaXNTdG9yZVNlbGVjdGVkKSB7XHJcbiAgICAgICAgc3RvcmUuY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc3RvcmUuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmKHRoaXMuc2VsZWN0PT09J3F1ZXVlYWxlcnQnKXtcclxuICAgICAgdGhpcy5nZXR6b25ldGxpc3QoKVxyXG4gICAgfVxyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBvblVzZXJTZWxlY3QoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5yZW1vdmVRdWVyeVBhcmFtcygpXHJcbiAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgndXNlckxpc3QnKT8uc2V0VmFsdWUoZXZlbnQpXHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG5cclxuICBzdG9yZUxpc3Rkcm9wZG93blRhc2soKSB7XHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLmdldFN0b3Jlc2xpc3QoeyBjbGllbnRJZDogdGhpcy5oZWFkZXJGaWx0ZXJzLmNsaWVudCwgY2x1c3RlcnM6IHRoaXMuZ3JvdXBzLCBjaXR5OiBbXSB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgbGV0IHN0b3JlcyA9IHJlcy5kYXRhLnN0b3Jlc0RhdGEubWFwKChkYXRhOiBhbnkpID0+IGRhdGEuc3RvcmVJZClcclxuICAgICAgICAgIGxldCBvYmogPSB7XHJcbiAgICAgICAgICAgIFwiZnJvbURhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5mcm9tRGF0ZSxcclxuICAgICAgICAgICAgXCJ0b0RhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50b0RhdGUsXHJcbiAgICAgICAgICAgIFwiQ2hlY2tsaXN0VHlwZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnR5cGUsIC8vIFtcImN1c3RvbVwiLCBcIkFJXCJdXHJcbiAgICAgICAgICAgIFwiY2hlY2tsaXN0TmFtZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmNoZWNrbGlzdE5hbWUsXHJcbiAgICAgICAgICAgIFwiY2hlY2tsaXN0SWRcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQsXHJcbiAgICAgICAgICAgIFwic3RvcmVJZFwiOiBzdG9yZXMsXHJcbiAgICAgICAgICAgIFwiYW5zd2VyVHlwZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmFuc3dlclR5cGUsIC8vW1wiZGVzY3JpcHRpdmVcIixcInllcy9ub1wiLFwibXVsdGlwbGVjaG9pY2VzaW5nbGVcIixcIm11bHRpcGxlY2hvaWNlbXVsdGlwbGVcIixcImltYWdlXCIsXCJ2aWRlb1wiLFwiZGVzY3JpcHRpdmVJbWFnZVwiLFwibXVsdGlwbGVJbWFnZVwiXVxyXG4gICAgICAgICAgICBcInZpZXdGbGFnXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudmlld0ZsYWcsLy9bdHJ1ZSwgZmFsc2VdXHJcbiAgICAgICAgICAgIFwidmlld1JlZG9cIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS52aWV3UmVkbywgLy9bdHJ1ZSwgZmFsc2VdXHJcbiAgICAgICAgICAgIFwiZmlsdGVyXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZmlsdGVyLFxyXG4gICAgICAgICAgICBcInF1ZXN0aW9uc1wiOiB0aGlzLnNlbGVjdGVkU2VjdGlvbi5sZW5ndGggPiAwICYmIHRoaXMuc2VsZWN0ZWRTZWN0aW9uWzBdLnF1ZXN0aW9ucy5sZW5ndGggPiAwID8gdGhpcy5zZWxlY3RlZFNlY3Rpb25bMF0ucXVlc3Rpb25zWzBdIDogXCJcIlxyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMudHJheFNlcnZpY2UuZ2V0UXVlc3Rpb25zKG9iaik/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKT8uc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlcyA9IHJlcy5kYXRhLnN0b3Jlc0RldGFpbHNcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmVMaXN0ID0gcmVzLmRhdGEuc3RvcmVzRGV0YWlsc1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXR0YXNrUUEoZmFsc2UpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldHRhc2tRQShmYWxzZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHVzZXJMaXN0ZHJvcGRvd25UYXNrKCkge1xyXG4gICAgbGV0IHRlYW1zTGlzdCA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuVGVhbXNMaXN0Lm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnRlYW1OYW1lKVxyXG4gICAgdGhpcy50cmF4U2VydmljZS5nZXR1c2Vycyh7IGNsaWVudElkOiB0aGlzLmhlYWRlckZpbHRlcnMuY2xpZW50LCB0ZWFtczogdGVhbXNMaXN0IH0pLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgndXNlckxpc3QnKT8uc2V0VmFsdWUocmVzLmRhdGEpXHJcbiAgICAgICAgICBsZXQgdXNlcnMgPSByZXMuZGF0YS5tYXAoKGRhdGE6IGFueSkgPT4gZGF0YS51c2VyRW1haWwpXHJcbiAgICAgICAgICBsZXQgb2JqID0ge1xyXG4gICAgICAgICAgICBcImZyb21EYXRlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZnJvbURhdGUsXHJcbiAgICAgICAgICAgIFwidG9EYXRlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudG9EYXRlLFxyXG4gICAgICAgICAgICBcIkNoZWNrbGlzdFR5cGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5jaGVja0xpc3RUeXBlLCAvLyBbXCJjdXN0b21cIiwgXCJBSVwiXVxyXG4gICAgICAgICAgICBcImNoZWNrbGlzdE5hbWVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5jaGVja2xpc3ROYW1lLFxyXG4gICAgICAgICAgICBcImNoZWNrbGlzdElkXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkLFxyXG4gICAgICAgICAgICBcImZpbHRlcnR5cGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5maWx0ZXJ0eXBlLFxyXG4gICAgICAgICAgICBcInN0b3JlSWRcIjogW10sXHJcbiAgICAgICAgICAgIFwidXNlckVtYWlsXCI6IHVzZXJzLFxyXG4gICAgICAgICAgICBcImFuc3dlclR5cGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5hbnN3ZXJUeXBlLCAvL1tcImRlc2NyaXB0aXZlXCIsXCJ5ZXMvbm9cIixcIm11bHRpcGxlY2hvaWNlc2luZ2xlXCIsXCJtdWx0aXBsZWNob2ljZW11bHRpcGxlXCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImRlc2NyaXB0aXZlSW1hZ2VcIixcIm11bHRpcGxlSW1hZ2VcIl1cclxuICAgICAgICAgICAgXCJ2aWV3RmxhZ1wiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnZpZXdGbGFnLC8vW3RydWUsIGZhbHNlXVxyXG4gICAgICAgICAgICBcInZpZXdSZWRvXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudmlld1JlZG8sLy9bdHJ1ZSwgZmFsc2VdXHJcbiAgICAgICAgICAgIFwicXVlc3Rpb25zXCI6IHRoaXMuc2VsZWN0ZWRTZWN0aW9uLmxlbmd0aCA+IDAgJiYgdGhpcy5zZWxlY3RlZFNlY3Rpb25bMF0ucXVlc3Rpb25zLmxlbmd0aCA+IDAgPyB0aGlzLnNlbGVjdGVkU2VjdGlvblswXS5xdWVzdGlvbnNbMF0gOiBcIlwiLFxyXG4gICAgICAgICAgICBcImZpbHRlclwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZpbHRlcixcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMudHJheFNlcnZpY2UuZ2V0UXVlc3Rpb25zKG9iaik/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKT8uc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJMaXN0ID0gcmVzLmRhdGEuc3RvcmVzRGV0YWlsc1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3VzZXJMaXN0Jyk/LnNldFZhbHVlKHRoaXMudXNlckxpc3QpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnc3RvcmVMaXN0Jyk/LnNldFZhbHVlKFtdKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZUxpc3QgPSBbXVxyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXR0YXNrUUEoZmFsc2UpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldHRhc2tRQShmYWxzZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgdXNlckxpc3Rkcm9wZG93bigpIHtcclxuICAgIGxldCB0ZWFtc0xpc3QgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLlRlYW1zTGlzdC5tYXAoKGRhdGE6IGFueSkgPT4gZGF0YS50ZWFtTmFtZSlcclxuICAgIHRoaXMudHJheFNlcnZpY2UuZ2V0dXNlcnMoeyBjbGllbnRJZDogdGhpcy5oZWFkZXJGaWx0ZXJzLmNsaWVudCwgdGVhbXM6IHRlYW1zTGlzdCB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgaWYodGhpcy5xdWVyeVBhcmFtcy51c2VyRW1haWwpe1xyXG4gICAgICAgICAgICBsZXQgZ2V0dXNlciA9IHJlcy5kYXRhLmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZS51c2VyRW1haWwgPT09IHRoaXMucXVlcnlQYXJhbXMudXNlckVtYWlsKVxyXG4gICAgICAgICAgICB0aGlzLnVzZXJMaXN0ID0gZ2V0dXNlcjtcclxuICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3VzZXJMaXN0Jyk/LnNldFZhbHVlKHRoaXMudXNlckxpc3QpXHJcbiAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgdGhpcy51c2VyTGlzdCA9ICByZXMuZGF0YVxyXG4gICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgndXNlckxpc3QnKT8uc2V0VmFsdWUocmVzLmRhdGEpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgdXNlcnMgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnVzZXJMaXN0Lm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnVzZXJFbWFpbClcclxuICAgICAgICAgIGxldCBvYmogPSB7XHJcbiAgICAgICAgICAgIFwiZnJvbURhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5mcm9tRGF0ZSxcclxuICAgICAgICAgICAgXCJ0b0RhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50b0RhdGUsXHJcbiAgICAgICAgICAgIFwiQ2hlY2tsaXN0VHlwZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmNoZWNrTGlzdFR5cGUsIC8vIFtcImN1c3RvbVwiLCBcIkFJXCJdXHJcbiAgICAgICAgICAgIFwiY2hlY2tsaXN0TmFtZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmNoZWNrbGlzdE5hbWUsXHJcbiAgICAgICAgICAgIFwiY2hlY2tsaXN0SWRcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQsXHJcbiAgICAgICAgICAgIFwiZmlsdGVydHlwZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZpbHRlcnR5cGUsXHJcbiAgICAgICAgICAgIFwic3RvcmVJZFwiOiBbXSxcclxuICAgICAgICAgICAgXCJ1c2VyRW1haWxcIjogdXNlcnMsXHJcbiAgICAgICAgICAgIFwiYW5zd2VyVHlwZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmFuc3dlclR5cGUsIC8vW1wiZGVzY3JpcHRpdmVcIixcInllcy9ub1wiLFwibXVsdGlwbGVjaG9pY2VzaW5nbGVcIixcIm11bHRpcGxlY2hvaWNlbXVsdGlwbGVcIixcImltYWdlXCIsXCJ2aWRlb1wiLFwiZGVzY3JpcHRpdmVJbWFnZVwiLFwibXVsdGlwbGVJbWFnZVwiXVxyXG4gICAgICAgICAgICBcInZpZXdGbGFnXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudmlld0ZsYWcsLy9bdHJ1ZSwgZmFsc2VdXHJcbiAgICAgICAgICAgIFwidmlld1JlZG9cIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS52aWV3UmVkbywvL1t0cnVlLCBmYWxzZV1cclxuICAgICAgICAgICAgXCJxdWVzdGlvbnNcIjogdGhpcy5zZWxlY3RlZFNlY3Rpb24ubGVuZ3RoID4gMCAmJiB0aGlzLnNlbGVjdGVkU2VjdGlvblswXS5xdWVzdGlvbnMubGVuZ3RoID4gMCA/IHRoaXMuc2VsZWN0ZWRTZWN0aW9uWzBdLnF1ZXN0aW9uc1swXSA6IFwiXCIsXHJcbiAgICAgICAgICAgIFwiZmlsdGVyXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZmlsdGVyLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy50cmF4U2VydmljZS5nZXRjaGVja2xpc3Qob2JqKT8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpPy5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudXNlckxpc3QgPSByZXMuZGF0YS5zdG9yZXNEZXRhaWxzXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgndXNlckxpc3QnKT8uc2V0VmFsdWUodGhpcy51c2VyTGlzdClcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdzdG9yZUxpc3QnKT8uc2V0VmFsdWUoW10pXHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlTGlzdCA9IFtdXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldENoZWNrbGlzdFFBKGZhbHNlKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRDaGVja2xpc3RRQShmYWxzZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgc3RvcmVMaXN0ZHJvcGRvd24oKSB7XHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLmdldFN0b3Jlc2xpc3QoeyBjbGllbnRJZDogdGhpcy5oZWFkZXJGaWx0ZXJzLmNsaWVudCwgY2x1c3RlcnM6IHRoaXMuZ3JvdXBzLCBjaXR5OiBbXSB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgbGV0IHN0b3JlcyA9IHJlcy5kYXRhLnN0b3Jlc0RhdGEubWFwKChkYXRhOiBhbnkpID0+IGRhdGEuc3RvcmVJZClcclxuICAgICAgICAgIGxldCBvYmogPSB7XHJcbiAgICAgICAgICAgIFwiZnJvbURhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5mcm9tRGF0ZSxcclxuICAgICAgICAgICAgXCJ0b0RhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50b0RhdGUsXHJcbiAgICAgICAgICAgIFwiQ2hlY2tsaXN0VHlwZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmNoZWNrTGlzdFR5cGUsIC8vIFtcImN1c3RvbVwiLCBcIkFJXCJdXHJcbiAgICAgICAgICAgIFwiY2hlY2tsaXN0TmFtZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmNoZWNrbGlzdE5hbWUsXHJcbiAgICAgICAgICAgIFwiY2hlY2tsaXN0SWRcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQsXHJcbiAgICAgICAgICAgIFwiZmlsdGVydHlwZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZpbHRlcnR5cGUsXHJcbiAgICAgICAgICAgIFwic3RvcmVJZFwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZpbHRlcnR5cGUgPT09ICdDbHVzdGVycycgPyBzdG9yZXMgOiBbXSxcclxuICAgICAgICAgICAgXCJ1c2VyRW1haWxcIjogW10sXHJcbiAgICAgICAgICAgIFwiYW5zd2VyVHlwZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmFuc3dlclR5cGUsIC8vW1wiZGVzY3JpcHRpdmVcIixcInllcy9ub1wiLFwibXVsdGlwbGVjaG9pY2VzaW5nbGVcIixcIm11bHRpcGxlY2hvaWNlbXVsdGlwbGVcIixcImltYWdlXCIsXCJ2aWRlb1wiLFwiZGVzY3JpcHRpdmVJbWFnZVwiLFwibXVsdGlwbGVJbWFnZVwiXVxyXG4gICAgICAgICAgICBcInZpZXdGbGFnXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudmlld0ZsYWcsLy9bdHJ1ZSwgZmFsc2VdXHJcbiAgICAgICAgICAgIFwidmlld1JlZG9cIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS52aWV3UmVkbywvL1t0cnVlLCBmYWxzZV1cclxuICAgICAgICAgICAgXCJxdWVzdGlvbnNcIjogdGhpcy5zZWxlY3RlZFNlY3Rpb24ubGVuZ3RoID4gMCAmJiB0aGlzLnNlbGVjdGVkU2VjdGlvblswXS5xdWVzdGlvbnMubGVuZ3RoID4gMCA/IHRoaXMuc2VsZWN0ZWRTZWN0aW9uWzBdLnF1ZXN0aW9uc1swXSA6IFwiXCIsXHJcbiAgICAgICAgICAgIFwiZmlsdGVyXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZmlsdGVyLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy50cmF4U2VydmljZS5nZXRjaGVja2xpc3Qob2JqKT8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpPy5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmVzID0gcmVzLmRhdGEuc3RvcmVzRGV0YWlsc1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZUxpc3QgPSByZXMuZGF0YS5zdG9yZXNEZXRhaWxzXHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLmdhbGxlcnlGb3JtLmdldCgnc3RvcmVMaXN0Jyk/LnNldFZhbHVlKHRoaXMuc3RvcmVzKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRDaGVja2xpc3RRQShmYWxzZSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0Q2hlY2tsaXN0UUEoZmFsc2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIHNlbGVjdCA9ICdjdXN0b20nXHJcbiAgb25TdWJtaXQoKSB7XHJcbiAgICB0aGlzLm9mZnNldCA9IDFcclxuICAgIHRoaXMuY2hlY2tsaXN0TmFtZSA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuY2hlY2tsaXN0TmFtZVxyXG4gICAgdGhpcy5jaGVja0xpc3REZXNjcmlwdGlvbiA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuY2hlY2tMaXN0RGVzY3JpcHRpb25cclxuICAgIHRoaXMuc2hvd211bHRpID0gdHJ1ZTtcclxuICAgIHRoaXMuc2hvd3NpbmdsZSA9IGZhbHNlXHJcbiAgICB0aGlzLmFuc3dlckZpbHRlciA9IFtdXHJcbiAgICBpZiAodGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQgPT09ICdzdG9yZW9wZW5hbmRjbG9zZScpIHtcclxuICAgICAgdGhpcy5zZWxlY3QgPSAnc3RvcmVvcGVuYW5kY2xvc2UnXHJcbiAgICAgIHRoaXMuc3RvcmVPcGVuY2xvc2VsaXN0KGZhbHNlKVxyXG4gICAgfWVsc2UgIGlmICh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCA9PT0gJ3F1ZXVlYWxlcnQnfHx0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCA9PT0gJ2JveGFsZXJ0J3x8dGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQgPT09ICdzdXNwaWNpb3VzZm9vdGZhbGwnKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWRcclxuICAgICAgdGhpcy5xdWV1ZWFsZXJ0bGlzdChmYWxzZSlcclxuICAgIH0gIGVsc2UgaWYgKHRoaXMuaW1hZ2VDaGVja2xpc3QuaW5jbHVkZXModGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQpKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQ7XHJcbiAgICAgIHRoaXMuZ2V0bW9iaWxlVXNhZ2VEYXRhbGlzdChmYWxzZSlcclxuICAgIH0gZWxzZSBpZiAodGhpcy52aWRlb0NoZWNrbGlzdC5pbmNsdWRlcyh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCkpIHtcclxuICAgICAgdGhpcy5zZWxlY3QgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZDtcclxuICAgICAgdGhpcy5jdXN0b21lcnVuYXR0ZW5kZWRsaXN0KGZhbHNlKVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCA9PT0gJ2N1c3RvbWVydHJpYWwnKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ID0gJ2N1c3RvbWVydHJpYWwnO1xyXG4gICAgICB0aGlzLmdldGN1c3RvbWVydHJpYWxsaXN0KClcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50eXBlID09PSAnY2hlY2tsaXN0JyA/IFwiY3VzdG9tXCIgOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnR5cGU7XHJcbiAgICAgIGlmICh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnR5cGUgPT09ICdjaGVja2xpc3QnKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZmlsdGVydHlwZSA9PT0gJ0NsdXN0ZXJzJykge1xyXG4gICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3VzZXJMaXN0Jyk/LnNldFZhbHVlKFtdKVxyXG4gICAgICAgICAgdGhpcy5zdG9yZUxpc3Rkcm9wZG93bigpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnc3RvcmVMaXN0Jyk/LnNldFZhbHVlKFtdKVxyXG4gICAgICAgICAgdGhpcy51c2VyTGlzdGRyb3Bkb3duKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZpbHRlcnR5cGUgPT09ICdDbHVzdGVycycpIHtcclxuICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCd1c2VyTGlzdCcpPy5zZXRWYWx1ZShbXSlcclxuICAgICAgICAgIHRoaXMuc3RvcmVMaXN0ZHJvcGRvd25UYXNrKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdzdG9yZUxpc3QnKT8uc2V0VmFsdWUoW10pXHJcbiAgICAgICAgICB0aGlzLnVzZXJMaXN0ZHJvcGRvd25UYXNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG93OiBudW1iZXIgPSAwO1xyXG4gIGFjY29yZGlhbihpbmRleDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5zaG93ID09IGluZGV4KSB7XHJcbiAgICAgIHRoaXMuc2hvdyA9IC0xO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zaG93ID0gaW5kZXg7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldHpvbmV0bGlzdCgpe1xyXG4gICAgbGV0IHN0b3JlcyA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc3RvcmVMaXN0Lm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnN0b3JlSWQpXHJcbiAgICBsZXQgem9uZSA9dGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS56b25lTGlzdD8ubGVuZ3RoPyB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnpvbmVMaXN0Lm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnZhbHVlKTpbXVxyXG4gICAgbGV0IG9iaiA9IHtcclxuICAgICAgXCJmcm9tRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZyb21EYXRlLFxyXG4gICAgICBcInRvRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnRvRGF0ZSxcclxuICAgICAgXCJzdG9yZUlkXCI6IHN0b3JlcyxcclxuICAgICAgXCJjbGllbnRJZFwiOiB0aGlzLmhlYWRlckZpbHRlcnMuY2xpZW50LFxyXG4gICAgICBcIkNoZWNrbGlzdFR5cGVcIjogdGhpcy5zZWxlY3QsXHJcbiAgICAgIFwib2Zmc2V0XCI6IDAsXHJcbiAgICAgIFwibGltaXRcIjogMTAwMDAsXHJcbiAgICAgIFwidmlld0ltYWdlXCI6IGZhbHNlLFxyXG4gICAgICBcImNhdGVnb3J5XCI6IHpvbmVcclxuICAgIH1cclxuICAgIHRoaXMudHJheFNlcnZpY2UucXVldWVhbGVydGxpc3Qob2JqKT8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpPy5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMubW9iaWxldXNhZ2VEYXRhTGlzdCA9IHJlcy5kYXRhLmRhdGFcclxuICAgICAgICAgIHRoaXMuem9uZUxpc3QgPSAgcmVzLmRhdGEuem9uZXNcclxuICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCd6b25lTGlzdCcpPy5zZXRWYWx1ZShyZXMuZGF0YS5zZWxlY3RlZHpvbmVzKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB9KVxyXG4gIFxyXG4gIH1cclxuICBxdWV1ZWFsZXJ0bGlzdCh0eXBlOiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUpXHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgIHRoaXMudmlld2xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy52aWV3bm9EYXRhID0gZmFsc2U7XHJcbiAgICBsZXQgc3RvcmVzID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zdG9yZUxpc3QubWFwKChkYXRhOiBhbnkpID0+IGRhdGEuc3RvcmVJZClcclxuICAgIGxldCB6b25lID10aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnpvbmVMaXN0Py5sZW5ndGg/IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuem9uZUxpc3QubWFwKChkYXRhOiBhbnkpID0+IGRhdGEudmFsdWUpOltdXHJcbiAgICBsZXQgb2JqID0ge1xyXG4gICAgICBcImZyb21EYXRlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZnJvbURhdGUsXHJcbiAgICAgIFwidG9EYXRlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudG9EYXRlLFxyXG4gICAgICBcInN0b3JlSWRcIjogc3RvcmVzLFxyXG4gICAgICBcImNsaWVudElkXCI6IHRoaXMuaGVhZGVyRmlsdGVycy5jbGllbnQsXHJcbiAgICAgIFwiQ2hlY2tsaXN0VHlwZVwiOiB0aGlzLnNlbGVjdCxcclxuICAgICAgXCJvZmZzZXRcIjogMCxcclxuICAgICAgXCJsaW1pdFwiOiAxMDAwMCxcclxuICAgICAgXCJ2aWV3SW1hZ2VcIjogZmFsc2UsXHJcbiAgICAgIFwiY2F0ZWdvcnlcIjogem9uZVxyXG4gICAgfVxyXG4gICAgdGhpcy50cmF4U2VydmljZS5xdWV1ZWFsZXJ0bGlzdChvYmopPy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSk/LnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5tb2JpbGV1c2FnZURhdGFMaXN0ID0gcmVzLmRhdGEuZGF0YVxyXG4gICAgICAgICAgdGhpcy56b25lTGlzdCA9ICByZXMuZGF0YS56b25lc1xyXG4gICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3pvbmVMaXN0Jyk/LnNldFZhbHVlKHJlcy5kYXRhLnNlbGVjdGVkem9uZXMpXHJcbiAgICAgICAgICB0aGlzLnN0b3JlcyA9IFtdXHJcbiAgICAgICAgICB0aGlzLm1vYmlsZXVzYWdlRGF0YUxpc3QuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQuY2hlY2tlZCA9IHRydWVcclxuICAgICAgICAgICAgdGhpcy5zdG9yZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgc3RvcmVJZDogZWxlbWVudC5zdG9yZUlkLFxyXG4gICAgICAgICAgICAgIHN0b3JlTmFtZTogZWxlbWVudC5zdG9yZU5hbWVcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIHRoaXMuc3RvcmVzID0gdGhpcy5zdG9yZXNcclxuICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdzdG9yZUxpc3QnKT8uc2V0VmFsdWUodGhpcy5zdG9yZXMpXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdEFsbCA9IHRoaXMubW9iaWxldXNhZ2VEYXRhTGlzdC5ldmVyeSgob2JqOiBhbnkpID0+IG9iai5jaGVja2VkKTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5ub0RhdGEgPSBmYWxzZVxyXG4gICAgICAgICAgdGhpcy52aWV3bG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy52aWV3bm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnF1ZXVlYWxlcnR2aWV3KClcclxuXHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMudmlld2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudmlld25vRGF0YSA9IHRydWU7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHN0b3JlT3BlbmNsb3NlbGlzdCh0eXBlOiBhbnkpIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLm5vRGF0YSA9IGZhbHNlO1xyXG4gICAgdGhpcy52aWV3bG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnZpZXdub0RhdGEgPSBmYWxzZTtcclxuICAgIGxldCBzdG9yZXMgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnN0b3JlTGlzdC5tYXAoKGRhdGE6IGFueSkgPT4gZGF0YS5zdG9yZUlkKVxyXG4gICAgbGV0IG9iaiA9IHtcclxuICAgICAgXCJmcm9tRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZyb21EYXRlLFxyXG4gICAgICBcInRvRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnRvRGF0ZSxcclxuICAgICAgXCJzdG9yZUlkXCI6IHN0b3JlcyxcclxuICAgICAgXCJjbGllbnRJZFwiOiB0aGlzLmhlYWRlckZpbHRlcnMuY2xpZW50LFxyXG4gICAgICBcIkNoZWNrbGlzdFR5cGVcIjogdGhpcy5zZWxlY3QsXHJcbiAgICAgIFwib2Zmc2V0XCI6IDAsXHJcbiAgICAgIFwibGltaXRcIjogMTAwMDAsXHJcbiAgICAgIFwidmlld0ltYWdlXCI6IGZhbHNlLFxyXG4gICAgICBcImNhdGVnb3J5XCI6IHRoaXMuY2F0ZWdvcnlcclxuICAgIH1cclxuICAgIHRoaXMudHJheFNlcnZpY2Uuc3RvcmVPcGVuY2xvc2VsaXN0KG9iaik/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKT8uc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLm1vYmlsZXVzYWdlRGF0YUxpc3QgPSByZXMuZGF0YS5zdG9yZW9wZW5hbmRjbG9zZURhdGFcclxuICAgICAgICAgIHRoaXMuc3RvcmVzID0gW11cclxuICAgICAgICAgIHRoaXMubW9iaWxldXNhZ2VEYXRhTGlzdC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgZWxlbWVudC5jaGVja2VkID0gdHJ1ZVxyXG4gICAgICAgICAgICB0aGlzLnN0b3Jlcy5wdXNoKHtcclxuICAgICAgICAgICAgICBzdG9yZUlkOiBlbGVtZW50LnN0b3JlSWQsXHJcbiAgICAgICAgICAgICAgc3RvcmVOYW1lOiBlbGVtZW50LnN0b3JlTmFtZVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgdGhpcy5zdG9yZXMgPSB0aGlzLnN0b3Jlc1xyXG4gICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3N0b3JlTGlzdCcpPy5zZXRWYWx1ZSh0aGlzLnN0b3JlcylcclxuICAgICAgICAgIHRoaXMuc2VsZWN0QWxsID0gdGhpcy5tb2JpbGV1c2FnZURhdGFMaXN0LmV2ZXJ5KChvYmo6IGFueSkgPT4gb2JqLmNoZWNrZWQpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm5vRGF0YSA9IGZhbHNlXHJcbiAgICAgICAgICB0aGlzLnZpZXdsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnZpZXdub0RhdGEgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc3RvcmVPcGVuY2xvc2V2aWV3KClcclxuXHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMudmlld2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudmlld25vRGF0YSA9IHRydWU7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgcXVldWVhbGVydHZpZXcoKXtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLm5vRGF0YSA9IGZhbHNlO1xyXG4gICAgdGhpcy5saW1pdCA9IDFcclxuICAgIGxldCBzdG9yZXMgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnN0b3JlTGlzdC5tYXAoKGRhdGE6IGFueSkgPT4gZGF0YS5zdG9yZUlkKVxyXG4gICAgbGV0IHpvbmVzPXRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuem9uZUxpc3Q/Lmxlbmd0aD8gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS56b25lTGlzdC5tYXAoKGRhdGE6IGFueSkgPT4gZGF0YS52YWx1ZSk6W11cclxuICAgIGxldCBvYmogPSB7XHJcbiAgICAgIFwiZnJvbURhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5mcm9tRGF0ZSxcclxuICAgICAgXCJ0b0RhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50b0RhdGUsXHJcbiAgICAgIFwic3RvcmVJZFwiOiBzdG9yZXMsXHJcbiAgICAgIFwiY2xpZW50SWRcIjogdGhpcy5oZWFkZXJGaWx0ZXJzLmNsaWVudCxcclxuICAgICAgXCJDaGVja2xpc3RUeXBlXCI6IHRoaXMuc2VsZWN0LFxyXG4gICAgICBcIm9mZnNldFwiOiAodGhpcy5vZmZzZXQgLSAxKSxcclxuICAgICAgXCJsaW1pdFwiOiB0aGlzLmxpbWl0LFxyXG4gICAgICBcInZpZXdJbWFnZVwiOiB0cnVlLFxyXG4gICAgICBcImNhdGVnb3J5XCI6IHpvbmVzLFxyXG4gICAgfVxyXG4gICAgdGhpcy52aWV3bG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnZpZXdub0RhdGEgPSBmYWxzZTtcclxuICAgIHRoaXMubGltaXQgPSAxXHJcbiAgICB0aGlzLnBhZ2luYXRpb25TaXplcyA9IFsxXVxyXG4gICAgdGhpcy50cmF4U2VydmljZS5xdWV1ZWFsZXJ0bGlzdChvYmopPy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSk/LnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5xdWV1ZUFsZXJ0VmlldyA9IHJlcy5kYXRhLmRhdGFcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy5xdWV1ZUFsZXJ0Vmlldy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgZWxlbWVudC5kYXRlU3RyaW5nID0gZGF5anMoZWxlbWVudC5kYXRlU3RyaW5nKS5mb3JtYXQoJ0RELU1NLVlZWVknKVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsQ291bnQgPSByZXMuZGF0YS50b3RhbENvdW50XHJcbiAgICAgICAgICB0aGlzLnZpZXdsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnZpZXdub0RhdGEgPSBmYWxzZVxyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm5vRGF0YSA9IGZhbHNlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnZpZXdsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnZpZXdub0RhdGEgPSB0cnVlXHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG5cclxuICBcclxuICBzdG9yZU9wZW5jbG9zZXZpZXcoKSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgIHRoaXMubGltaXQgPSAxMFxyXG4gICAgbGV0IHN0b3JlcyA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc3RvcmVMaXN0Lm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnN0b3JlSWQpXHJcbiAgICBsZXQgb2JqID0ge1xyXG4gICAgICBcImZyb21EYXRlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZnJvbURhdGUsXHJcbiAgICAgIFwidG9EYXRlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudG9EYXRlLFxyXG4gICAgICBcInN0b3JlSWRcIjogc3RvcmVzLFxyXG4gICAgICBcImNsaWVudElkXCI6IHRoaXMuaGVhZGVyRmlsdGVycy5jbGllbnQsXHJcbiAgICAgIFwiQ2hlY2tsaXN0VHlwZVwiOiB0aGlzLnNlbGVjdCxcclxuICAgICAgXCJvZmZzZXRcIjogKHRoaXMub2Zmc2V0IC0gMSksXHJcbiAgICAgIFwibGltaXRcIjogdGhpcy5saW1pdCxcclxuICAgICAgXCJ2aWV3SW1hZ2VcIjogdHJ1ZSxcclxuICAgICAgXCJjYXRlZ29yeVwiOiB0aGlzLmNhdGVnb3J5XHJcblxyXG4gICAgfVxyXG4gICAgdGhpcy52aWV3bG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnZpZXdub0RhdGEgPSBmYWxzZTtcclxuICAgIHRoaXMubGltaXQgPSAxMDtcclxuICAgIHRoaXMucGFnaW5hdGlvblNpemVzID0gWzEwXTtcclxuICAgIHRoaXMudHJheFNlcnZpY2Uuc3RvcmVPcGVuY2xvc2VsaXN0KG9iaik/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKT8uc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLnN0b3JlT3BlbmNsb3NlVmlldyA9IHJlcy5kYXRhLnN0b3Jlb3BlbmFuZGNsb3NlRGF0YVxyXG5cclxuICAgICAgICAgIHRoaXMuc3RvcmVPcGVuY2xvc2VWaWV3LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBlbGVtZW50LmRhdGVTdHJpbmcgPSBkYXlqcyhlbGVtZW50LmRhdGVTdHJpbmcpLmZvcm1hdCgnREQtTU0tWVlZWScpXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMudG90YWxDb3VudCA9IHJlcy5kYXRhLnRvdGFsQ291bnRcclxuICAgICAgICAgIHRoaXMudmlld2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudmlld25vRGF0YSA9IGZhbHNlXHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudmlld2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudmlld25vRGF0YSA9IHRydWVcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgY2hlY2tsaXN0TmFtZWNoYW5nZShldmVudDogYW55LCB0eXBlOiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKFwiPT09PT09PlwiLGV2ZW50LmNvdmVyYWdlKVxyXG4gICAgdGhpcy5yZW1vdmVRdWVyeVBhcmFtcygpXHJcbiAgICBpZiAoZXZlbnQuY2hlY2tMaXN0VHlwZSA9PT0gXCJBSVwiKSB7XHJcbiAgICAgIHRoaXMuc2hvd2ZsYWcgPSBmYWxzZVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ2NoZWNrTGlzdFR5cGUnKT8uc2V0VmFsdWUoZXZlbnQuY2hlY2tMaXN0VHlwZSlcclxuICAgICAgdGhpcy5zaG93ZmxhZyA9IHRydWVcclxuICAgIH1cclxuICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdzb3VyY2VDaGVja0xpc3RfaWQnKT8uc2V0VmFsdWUoZXZlbnQ/LnNvdXJjZUNoZWNrTGlzdF9pZClcclxuICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdjaGVja2xpc3ROYW1lJyk/LnNldFZhbHVlKGV2ZW50Py5jaGVja0xpc3ROYW1lKVxyXG4gICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ2NoZWNrTGlzdERlc2NyaXB0aW9uJyk/LnNldFZhbHVlKGV2ZW50Py5jaGVja0xpc3REZXNjcmlwdGlvbilcclxuXHJcbiAgICBpZiAoZXZlbnQgJiYgZXZlbnQuY292ZXJhZ2UgPT09ICdzdG9yZScpIHtcclxuICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3VzZXJMaXN0Jyk/LnNldFZhbHVlKFtdKVxyXG4gICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnZmlsdGVydHlwZScpPy5zZXRWYWx1ZSgnQ2x1c3RlcnMnKVxyXG4gICAgICB0aGlzLnRyYXhTZXJ2aWNlLmdldFN0b3Jlc2xpc3QoeyBjbGllbnRJZDogdGhpcy5oZWFkZXJGaWx0ZXJzLmNsaWVudCwgY2x1c3RlcnM6IHRoaXMuZ3JvdXBzLCBjaXR5OiBbXSB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZUxpc3QgPSByZXMuZGF0YS5zdG9yZXNEYXRhO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlcyA9IHJlcy5kYXRhLnN0b3Jlc0RhdGFcclxuICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3N0b3JlTGlzdCcpPy5zZXRWYWx1ZSh0aGlzLnN0b3JlTGlzdClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnc3RvcmVzJyk/LnNldFZhbHVlKFtdKVxyXG4gICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnZmlsdGVydHlwZScpPy5zZXRWYWx1ZSgnVGVhbXMnKVxyXG4gICAgICBsZXQgdGVhbXNMaXN0ID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5UZWFtc0xpc3QubWFwKChkYXRhOiBhbnkpID0+IGRhdGEudGVhbU5hbWUpXHJcbiAgICAgIHRoaXMudHJheFNlcnZpY2UuZ2V0dXNlcnMoeyBjbGllbnRJZDogdGhpcy5oZWFkZXJGaWx0ZXJzLmNsaWVudCwgdGVhbXM6IHRlYW1zTGlzdCB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy51c2VyTGlzdCA9IHJlcy5kYXRhO1xyXG4gICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgndXNlckxpc3QnKT8uc2V0VmFsdWUodGhpcy51c2VyTGlzdClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIGN1c3RvbWVydW5hdHRlbmRlZGxpc3QodHlwZTogYW55KSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgIHRoaXMudmlld2xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy52aWV3bm9EYXRhID0gZmFsc2VcclxuICAgIGxldCBzdG9yZXMgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnN0b3JlTGlzdC5tYXAoKGRhdGE6IGFueSkgPT4gZGF0YS5zdG9yZUlkKVxyXG4gICAgbGV0IG9iaiA9IHtcclxuICAgICAgXCJkYXRlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZnJvbURhdGUsXHJcbiAgICAgIFwiZnJvbURhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5mcm9tRGF0ZSxcclxuICAgICAgXCJ0b0RhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50b0RhdGUsXHJcbiAgICAgIFwic3RvcmVJZFwiOiBzdG9yZXMsXHJcbiAgICAgIFwiY2xpZW50SWRcIjogdGhpcy5oZWFkZXJGaWx0ZXJzLmNsaWVudCxcclxuICAgICAgXCJDaGVja2xpc3RUeXBlXCI6IHRoaXMuc2VsZWN0LFxyXG4gICAgICBcInZpZXdJbWFnZVwiOiBmYWxzZSxcclxuICAgICAgXCJsaW1pdFwiOiAxMCxcclxuICAgICAgXCJvZmZzZXRcIjogMCxcclxuICAgICAgXCJjYXRlZ29yeVwiOiB0aGlzLmNhdGVnb3J5XHJcbiAgICB9XHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLmdldGN1c3RvbWVydW5hdHRlbmRlZGxpc3Qob2JqKT8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpPy5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMubW9iaWxldXNhZ2VEYXRhTGlzdCA9IHJlcy5kYXRhLmRhdGE7XHJcbiAgICAgICAgICB0aGlzLnN0b3JlcyA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5tb2JpbGV1c2FnZURhdGFMaXN0LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBlbGVtZW50LmNoZWNrZWQgPSB0cnVlXHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmVzLnB1c2goe1xyXG4gICAgICAgICAgICAgIHN0b3JlSWQ6IGVsZW1lbnQuc3RvcmVJZCxcclxuICAgICAgICAgICAgICBzdG9yZU5hbWU6IGVsZW1lbnQuc3RvcmVOYW1lXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMudG90YWxDb3VudCA9IHJlcy5kYXRhLnRvdGFsX2NvdW50XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdEFsbCA9IHRoaXMubW9iaWxldXNhZ2VEYXRhTGlzdC5ldmVyeSgob2JqOiBhbnkpID0+IG9iai5jaGVja2VkKTtcclxuICAgICAgICAgIHRoaXMuc3RvcmVzID0gdGhpcy5zdG9yZXNcclxuICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdzdG9yZUxpc3QnKT8uc2V0VmFsdWUodGhpcy5zdG9yZXMpXHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMubm9EYXRhID0gZmFsc2VcclxuICAgICAgICAgIHRoaXMuZ2V0Y3VzdG9tZXJ1bmF0dGVuZGVkdmlldygpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy52aWV3bG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy52aWV3bm9EYXRhID0gdHJ1ZVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIHNlbGVjdGVkRXhwb3J0ID0gZmFsc2VcclxuICBzZWxlY3RlZFF1ZXN0aW9uKGV2ZW50OiBhbnksIHNlY3Rpb246IGFueSwgUXVlc3Rpb246IGFueSkge1xyXG4gICAgaWYgKGV2ZW50LnRhcmdldC5jaGVja2VkKSB7XHJcbiAgICAgIGlmICh0aGlzLnRlbXBzZWxlY3RlZFNlY3Rpb24ubGVuZ3RoID09IDApIHtcclxuICAgICAgICBsZXQgcXVlc3Rpb25zOiBhbnkgPSBbXVxyXG4gICAgICAgIGxldCBhbnN3ZXI6IGFueSA9IFtdXHJcbiAgICAgICAgYW5zd2VyLnB1c2goUXVlc3Rpb24uYW5zd2VyVHlwZSlcclxuICAgICAgICBxdWVzdGlvbnMucHVzaChRdWVzdGlvbi5xbmFtZS5yZXBsYWNlKC9cXG4vZywgXCIgXCIpKVxyXG4gICAgICAgIGxldCByZXNwb25zZSA9IHtcclxuICAgICAgICAgIHNlY3Rpb25OYW1lOiBzZWN0aW9uLnNlY3Rpb25OYW1lLFxyXG4gICAgICAgICAgcXVlc3Rpb25zOiBxdWVzdGlvbnMsXHJcbiAgICAgICAgICBhbnN3ZXJUeXBlOiBhbnN3ZXJcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy50ZW1wc2VsZWN0ZWRTZWN0aW9uLnB1c2gocmVzcG9uc2UpXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbGV0IHNlY3Rpb25FeGlzdHMgPSB0aGlzLnRlbXBzZWxlY3RlZFNlY3Rpb24uZmlsdGVyKChkYXRhOiBhbnkpID0+IGRhdGEuc2VjdGlvbk5hbWUgPT09IHNlY3Rpb24uc2VjdGlvbk5hbWUpXHJcbiAgICAgICAgaWYgKHNlY3Rpb25FeGlzdHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgdGhpcy50ZW1wc2VsZWN0ZWRTZWN0aW9uLm1hcCgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChkYXRhLnNlY3Rpb25OYW1lID09PSBzZWN0aW9uLnNlY3Rpb25OYW1lKSB7XHJcbiAgICAgICAgICAgICAgZGF0YS5xdWVzdGlvbnMucHVzaChRdWVzdGlvbi5xbmFtZS5yZXBsYWNlKC9cXG4vZywgXCIgXCIpKVxyXG4gICAgICAgICAgICAgIGRhdGEuYW5zd2VyVHlwZS5wdXNoKFF1ZXN0aW9uLmFuc3dlclR5cGUpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxldCBxdWVzdGlvbnM6IGFueSA9IFtdXHJcbiAgICAgICAgICBsZXQgYW5zd2VyOiBhbnkgPSBbXVxyXG5cclxuXHJcbiAgICAgICAgICBhbnN3ZXIucHVzaChRdWVzdGlvbi5hbnN3ZXJUeXBlKVxyXG5cclxuICAgICAgICAgIHF1ZXN0aW9ucy5wdXNoKFF1ZXN0aW9uLnFuYW1lLnJlcGxhY2UoL1xcbi9nLCBcIiBcIikpXHJcbiAgICAgICAgICBsZXQgcmVzcG9uc2UgPSB7XHJcbiAgICAgICAgICAgIHNlY3Rpb25OYW1lOiBzZWN0aW9uLnNlY3Rpb25OYW1lLFxyXG4gICAgICAgICAgICBxdWVzdGlvbnM6IHF1ZXN0aW9ucyxcclxuICAgICAgICAgICAgYW5zd2VyVHlwZTogYW5zd2VyXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnRlbXBzZWxlY3RlZFNlY3Rpb24ucHVzaChyZXNwb25zZSlcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hlY2tsaXN0RGF0YS5tYXAoKHNlYzogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHNlYy5zZWN0aW9uTmFtZSA9PSBzZWN0aW9uLnNlY3Rpb25OYW1lKSB7XHJcbiAgICAgICAgICBzZWMucXVlc3Rpb25zLm1hcCgocXVlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChxdWVzLnFuYW1lID09PSBRdWVzdGlvbi5xbmFtZS5yZXBsYWNlKC9cXG4vZywgXCIgXCIpKSB7XHJcbiAgICAgICAgICAgICAgcXVlcy5jaGVja2VkID0gdHJ1ZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKClcclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICB0aGlzLnRlbXBzZWxlY3RlZFNlY3Rpb24ubWFwKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YS5zZWN0aW9uTmFtZSA9PSBzZWN0aW9uLnNlY3Rpb25OYW1lKSB7XHJcbiAgICAgICAgICBkYXRhLnF1ZXN0aW9ucyA9IGRhdGEucXVlc3Rpb25zLmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZSAhPSBRdWVzdGlvbi5xbmFtZS5yZXBsYWNlKC9cXG4vZywgXCIgXCIpKVxyXG4gICAgICAgICAgZGF0YS5hbnN3ZXJUeXBlID0gZGF0YS5hbnN3ZXJUeXBlLmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZSAhPSBRdWVzdGlvbi5hbnN3ZXJUeXBlKVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMudGVtcHNlbGVjdGVkU2VjdGlvbiA9IHRoaXMudGVtcHNlbGVjdGVkU2VjdGlvbi5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGUucXVlc3Rpb25zLmxlbmd0aCA+IDApXHJcbiAgICB9XHJcblxyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRFeHBvcnQgPSB0aGlzLnRlbXBzZWxlY3RlZFNlY3Rpb24ubGVuZ3RoID4gMDtcclxuICB9XHJcbiAgZ2V0Y3VzdG9tZXJ0cmlhbGxpc3QoKSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgIHRoaXMudmlld2xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy52aWV3bm9EYXRhID0gZmFsc2U7XHJcbiAgICB0aGlzLm1vYmlsZXVzYWdlRGF0YUxpc3QgPSBbeyBzdG9yZUlkOiBcIjU5LTE0N1wiLCBzdG9yZU5hbWU6IFwiQmlya2Vuc3RvY2sgRHViYWkgSGlsbHNcIiwgZGV0ZWN0aW9uczogXCIyMFwiIH1dO1xyXG4gICAgdGhpcy5tb2JpbGV1c2FnZURhdGFMaXN0LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICBlbGVtZW50LmNoZWNrZWQgPSB0cnVlXHJcbiAgICAgIHRoaXMuc3RvcmVzLnB1c2goe1xyXG4gICAgICAgIHN0b3JlSWQ6IGVsZW1lbnQuc3RvcmVJZCxcclxuICAgICAgICBzdG9yZU5hbWU6IGVsZW1lbnQuc3RvcmVOYW1lXHJcbiAgICAgIH0pXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdEFsbCA9IHRoaXMubW9iaWxldXNhZ2VEYXRhTGlzdC5ldmVyeSgob2JqOiBhbnkpID0+IG9iai5jaGVja2VkKTtcclxuICAgIHRoaXMuc3RvcmVzID0gdGhpcy5zdG9yZXNcclxuICAgIHRoaXMubW9iaWxldXNhZ2VEYXRhID1cclxuICAgICAgW3tcclxuICAgICAgICBzdG9yZU5hbWU6IFwiQmlya2Vuc3RvY2sgRHViYWkgSGlsbHNcIixcclxuICAgICAgICBpbWFnZVVybDogW1xyXG4gICAgICAgICAgXCJ0cmFpbC81OS0xNDcvYjFjNWIxNWMwMTMzZGVjMGM0NTY0MGQ5MjNmZGEyMjFfMTBfMDlfNTlfMDAwXzI0XzAxXzIwMjVfZmFsc2UuZ2lmXCIsXHJcbiAgICAgICAgICBcInRyYWlsLzU5LTE0Ny9iMWM1YjE1YzAxMzNkZWMwYzQ1NjQwZDkyM2ZkYTIyMV8xMF8wOV81OV8wMDBfMjRfMDFfMjAyNV9mYWxzZS5naWZcIixcclxuICAgICAgICAgIFwidHJhaWwvNTktMTQ3L2IxYzViMTVjMDEzM2RlYzBjNDU2NDBkOTIzZmRhMjIxXzEwXzQwXzMyXzAwMF8yNF8wMV8yMDI1X2ZhbHNlLmdpZlwiLFxyXG4gICAgICAgICAgXCJ0cmFpbC81OS0xNDcvYjFjNWIxNWMwMTMzZGVjMGM0NTY0MGQ5MjNmZGEyMjFfMTBfNTBfNDNfMDAwXzI0XzAxXzIwMjVfZmFsc2UuZ2lmXCIsXHJcbiAgICAgICAgICBcInRyYWlsLzU5LTE0Ny9iMWM1YjE1YzAxMzNkZWMwYzQ1NjQwZDkyM2ZkYTIyMV8xMV8wMF81NF8wMDBfMjRfMDFfMjAyNV9mYWxzZS5naWZcIixcclxuICAgICAgICAgIFwidHJhaWwvNTktMTQ3L2IxYzViMTVjMDEzM2RlYzBjNDU2NDBkOTIzZmRhMjIxXzExXzExXzA1XzAwMF8yNF8wMV8yMDI1X2ZhbHNlLmdpZlwiLFxyXG4gICAgICAgICAgXCJ0cmFpbC81OS0xNDcvYjFjNWIxNWMwMTMzZGVjMGM0NTY0MGQ5MjNmZGEyMjFfMTFfMjFfMTZfMDAwXzI0XzAxXzIwMjVfZmFsc2UuZ2lmXCIsXHJcbiAgICAgICAgICBcInRyYWlsLzU5LTE0Ny9iMWM1YjE1YzAxMzNkZWMwYzQ1NjQwZDkyM2ZkYTIyMV8xMV8yMV8xOV8wMDBfMjVfMDFfMjAyNV8xNzM3Nzg5MTg1LmdpZlwiLFxyXG4gICAgICAgICAgXCJ0cmFpbC81OS0xNDcvYjFjNWIxNWMwMTMzZGVjMGM0NTY0MGQ5MjNmZGEyMjFfMTJfNDJfNDRfMDAwXzI0XzAxXzIwMjVfZmFsc2UuZ2lmXCIsXHJcbiAgICAgICAgICBcInRyYWlsLzU5LTE0Ny9iMWM1YjE1YzAxMzNkZWMwYzQ1NjQwZDkyM2ZkYTIyMV8xMl80Ml81MF8wMDBfMjVfMDFfMjAyNV8xNzM3Nzk0MzQ5LmdpZlwiLFxyXG4gICAgICAgICAgXCJ0cmFpbC81OS0xNDcvYjFjNWIxNWMwMTMzZGVjMGM0NTY0MGQ5MjNmZGEyMjFfMTNfMDNfMDdfMDAwXzI0XzAxXzIwMjVfZmFsc2UuZ2lmXCIsXHJcbiAgICAgICAgICBcInRyYWlsLzU5LTE0Ny9iMWM1YjE1YzAxMzNkZWMwYzQ1NjQwZDkyM2ZkYTIyMV8xM18yM18yOF8wMDBfMjRfMDFfMjAyNV8xNzM3NzEwMjgzLmdpZlwiLFxyXG4gICAgICAgICAgXCJ0cmFpbC81OS0xNDcvYjFjNWIxNWMwMTMzZGVjMGM0NTY0MGQ5MjNmZGEyMjFfMTNfMzNfNDdfMDAwXzI1XzAxXzIwMjVfMTczNzc5NzU4OC5naWZcIixcclxuICAgICAgICAgIFwidHJhaWwvNTktMTQ3L2IxYzViMTVjMDEzM2RlYzBjNDU2NDBkOTIzZmRhMjIxXzE0XzQ0XzU3XzAwMF8yNF8wMV8yMDI1X2ZhbHNlLmdpZlwiLFxyXG4gICAgICAgICAgXCJ0cmFpbC81OS0xNDcvYjFjNWIxNWMwMTMzZGVjMGM0NTY0MGQ5MjNmZGEyMjFfMThfNTlfNDBfMDAwXzI0XzAxXzIwMjVfMTczNzczMDI4Ni5naWZcIixcclxuICAgICAgICAgIFwidHJhaWwvNTktMTQ3L2IxYzViMTVjMDEzM2RlYzBjNDU2NDBkOTIzZmRhMjIxXzIwXzEwXzU5XzAwMF8yNF8wMV8yMDI1XzE3Mzc3MzQ3NzMuZ2lmXCIsXHJcbiAgICAgICAgICBcInRyYWlsLzU5LTE0Ny9iMWM1YjE1YzAxMzNkZWMwYzQ1NjQwZDkyM2ZkYTIyMV8yMF8yMV8xMF8wMDBfMjRfMDFfMjAyNV8xNzM3NzM1MjQxLmdpZlwiLFxyXG4gICAgICAgICAgXCJ0cmFpbC81OS0xNDcvYjFjNWIxNWMwMTMzZGVjMGM0NTY0MGQ5MjNmZGEyMjFfMjFfMTJfMDdfMDAwXzI0XzAxXzIwMjVfMTczNzczODIzMy5naWZcIixcclxuICAgICAgICAgIFwidHJhaWwvNTktMTQ3L2IxYzViMTVjMDEzM2RlYzBjNDU2NDBkOTIzZmRhMjIxXzIxXzQyXzQxXzAwMF8yNF8wMV8yMDI1XzE3Mzc3NDA1MDkuZ2lmXCIsXHJcbiAgICAgICAgICBcInRyYWlsLzU5LTE0Ny9iMWM1YjE1YzAxMzNkZWMwYzQ1NjQwZDkyM2ZkYTIyMV8yMl8yM18yN18wMDBfMjRfMDFfMjAyNV8xNzM3NzQyNDEyLmdpZlwiLFxyXG4gICAgICAgIF1cclxuICAgICAgfV1cclxuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5ub0RhdGEgPSBmYWxzZVxyXG4gICAgdGhpcy52aWV3bG9hZGluZyA9IGZhbHNlO1xyXG4gICAgdGhpcy52aWV3bm9EYXRhID0gZmFsc2VcclxuICAgIHRoaXMudG90YWxDb3VudCA9IDFcclxuICB9XHJcbiAgZ2V0bW9iaWxlVXNhZ2VEYXRhbGlzdCh0eXBlOiBhbnkpIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLm5vRGF0YSA9IGZhbHNlO1xyXG4gICAgdGhpcy52aWV3bG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnZpZXdub0RhdGEgPSBmYWxzZTtcclxuICAgIGxldCBzdG9yZXMgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnN0b3JlTGlzdC5tYXAoKGRhdGE6IGFueSkgPT4gZGF0YS5zdG9yZUlkKVxyXG4gICAgbGV0IG9iaiA9IHtcclxuICAgICAgXCJkYXRlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZnJvbURhdGUsXHJcbiAgICAgIFwiZnJvbURhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5mcm9tRGF0ZSxcclxuICAgICAgXCJ0b0RhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50b0RhdGUsXHJcbiAgICAgIFwic3RvcmVJZFwiOiBzdG9yZXMsXHJcbiAgICAgIFwiY2xpZW50SWRcIjogdGhpcy5oZWFkZXJGaWx0ZXJzLmNsaWVudCxcclxuICAgICAgXCJDaGVja2xpc3RUeXBlXCI6IHRoaXMuc2VsZWN0LFxyXG4gICAgICBcInZpZXdJbWFnZVwiOiBmYWxzZSxcclxuICAgICAgXCJvZmZzZXRcIjogKHRoaXMub2Zmc2V0IC0gMSksXHJcbiAgICAgIFwibGltaXRcIjogdGhpcy5saW1pdCxcclxuICAgICAgXCJjYXRlZ29yeVwiOiB0aGlzLmNhdGVnb3J5XHJcbiAgICB9XHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLmdldE1vYlVzYWdlbGlzdChvYmopPy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSk/LnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5tb2JpbGV1c2FnZURhdGFMaXN0ID0gcmVzLmRhdGEuZGF0YTtcclxuICAgICAgICAgIHRoaXMuc3RvcmVzID0gW11cclxuICAgICAgICAgIHRoaXMubW9iaWxldXNhZ2VEYXRhTGlzdC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgZWxlbWVudC5jaGVja2VkID0gdHJ1ZVxyXG4gICAgICAgICAgICB0aGlzLnN0b3Jlcy5wdXNoKHtcclxuICAgICAgICAgICAgICBzdG9yZUlkOiBlbGVtZW50LnN0b3JlSWQsXHJcbiAgICAgICAgICAgICAgc3RvcmVOYW1lOiBlbGVtZW50LnN0b3JlTmFtZVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsQ291bnQgPSByZXMuZGF0YS50b3RhbF9jb3VudFxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RBbGwgPSB0aGlzLm1vYmlsZXVzYWdlRGF0YUxpc3QuZXZlcnkoKG9iajogYW55KSA9PiBvYmouY2hlY2tlZCk7XHJcbiAgICAgICAgICB0aGlzLnN0b3JlcyA9IHRoaXMuc3RvcmVzXHJcbiAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnc3RvcmVMaXN0Jyk/LnNldFZhbHVlKHRoaXMuc3RvcmVzKVxyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm5vRGF0YSA9IGZhbHNlXHJcbiAgICAgICAgICB0aGlzLmdldG1vYmlsZVVzYWdlRGF0YXZpZXcoKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMudmlld25vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnZpZXdsb2FkaW5nID0gZmFsc2VcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICBvbnJlc2V0KCkge1xyXG4gICAgdGhpcy50cmF4U2VydmljZS5nZXRTdG9yZXNsaXN0KHsgY2xpZW50SWQ6IHRoaXMuaGVhZGVyRmlsdGVycy5jbGllbnQsIGNsdXN0ZXJzOiB0aGlzLmdyb3VwcywgY2l0eTogW10gfSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuc3RvcmVMaXN0ID0gcmVzLmRhdGEuc3RvcmVzRGF0YTtcclxuICAgICAgICAgIHRoaXMuc3RvcmVzID0gcmVzLmRhdGEuc3RvcmVzRGF0YVxyXG4gICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3N0b3JlTGlzdCcpPy5zZXRWYWx1ZSh0aGlzLnN0b3JlTGlzdClcclxuICAgICAgICAgIHRoaXMub2Zmc2V0ID0gMVxyXG4gICAgICAgICAgaWYgKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkID09PSAnc3RvcmVvcGVuYW5kY2xvc2UnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ID0gJ3N0b3Jlb3BlbmFuZGNsb3NlJ1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlT3BlbmNsb3NlbGlzdChmYWxzZSlcclxuICAgICAgICAgIH1lbHNlIGlmICh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCA9PT0gJ3F1ZXVlYWxlcnQnfHx0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCA9PT0gJ2JveGFsZXJ0J3x8dGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQgPT09ICdzdXNwaWNpb3VzZm9vdGZhbGwnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWRcclxuICAgICAgICAgICAgdGhpcy5xdWV1ZWFsZXJ0bGlzdChmYWxzZSlcclxuICAgICAgICAgIH0gIGVsc2UgaWYgKHRoaXMuaW1hZ2VDaGVja2xpc3QuaW5jbHVkZXModGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQ7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0bW9iaWxlVXNhZ2VEYXRhbGlzdChmYWxzZSlcclxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy52aWRlb0NoZWNrbGlzdC5pbmNsdWRlcyh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3QgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZDtcclxuICAgICAgICAgICAgdGhpcy5jdXN0b21lcnVuYXR0ZW5kZWRsaXN0KGZhbHNlKVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3QgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnR5cGUgPT09ICdjaGVja2xpc3QnID8gXCJjdXN0b21cIiA6IFwiXCI7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZpbHRlcnR5cGUgPT09ICdDbHVzdGVycycpIHtcclxuICAgICAgICAgICAgICB0aGlzLnN0b3JlTGlzdGRyb3Bkb3duKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy51c2VyTGlzdGRyb3Bkb3duKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc3RvcmVMaXN0ID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3RvcmVMaXN0ID0gW107XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG4gIG9udmlldygpIHtcclxuICAgIHRoaXMub2Zmc2V0ID0gMTtcclxuICAgIGlmICh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCA9PT0gJ3N0b3Jlb3BlbmFuZGNsb3NlJykge1xyXG4gICAgICB0aGlzLnNlbGVjdCA9ICdzdG9yZW9wZW5hbmRjbG9zZSdcclxuICAgICAgdGhpcy5zdG9yZU9wZW5jbG9zZXZpZXcoKVxyXG4gICAgfWVsc2UgaWYgKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkID09PSAncXVldWVhbGVydCd8fHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkID09PSAnYm94YWxlcnQnfHx0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCA9PT0gJ3N1c3BpY2lvdXNmb290ZmFsbCcpIHtcclxuICAgICAgdGhpcy5zZWxlY3QgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZFxyXG4gICAgICB0aGlzLnF1ZXVlYWxlcnRsaXN0KGZhbHNlKVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLmltYWdlQ2hlY2tsaXN0LmluY2x1ZGVzKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkKSkge1xyXG4gICAgICB0aGlzLnNlbGVjdCA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkO1xyXG4gICAgICB0aGlzLmdldG1vYmlsZVVzYWdlRGF0YXZpZXcoKVxyXG4gICAgfWVsc2UgaWYgKHRoaXMudmlkZW9DaGVja2xpc3QuaW5jbHVkZXModGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQpKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQ7XHJcbiAgICAgIHRoaXMuZ2V0Y3VzdG9tZXJ1bmF0dGVuZGVkdmlldygpXHJcbiAgICB9IFxyXG4gIH1cclxuICBnZXRjdXN0b21lcnVuYXR0ZW5kZWR2aWV3KCkge1xyXG5cclxuICAgIHRoaXMudmlld2xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy52aWV3bm9EYXRhID0gZmFsc2U7XHJcbiAgICB0aGlzLmxpbWl0ID0gMVxyXG4gICAgdGhpcy5wYWdpbmF0aW9uU2l6ZXMgPSBbMV1cclxuICAgIGxldCBzdG9yZXMgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnN0b3JlTGlzdC5tYXAoKGRhdGE6IGFueSkgPT4gZGF0YS5zdG9yZUlkKVxyXG4gICAgbGV0IG9iaiA9IHtcclxuICAgICAgXCJkYXRlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZnJvbURhdGUsXHJcbiAgICAgIFwiZnJvbURhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5mcm9tRGF0ZSxcclxuICAgICAgXCJ0b0RhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50b0RhdGUsXHJcbiAgICAgIFwic3RvcmVJZFwiOiBzdG9yZXMsXHJcbiAgICAgIFwiY2xpZW50SWRcIjogdGhpcy5oZWFkZXJGaWx0ZXJzLmNsaWVudCxcclxuICAgICAgXCJDaGVja2xpc3RUeXBlXCI6IHRoaXMuc2VsZWN0LFxyXG4gICAgICBcInZpZXdJbWFnZVwiOiB0cnVlLFxyXG4gICAgICBcIm9mZnNldFwiOiAodGhpcy5vZmZzZXQgLSAxKSxcclxuICAgICAgXCJsaW1pdFwiOiB0aGlzLmxpbWl0LFxyXG4gICAgICBcImNhdGVnb3J5XCI6IHRoaXMuY2F0ZWdvcnlcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLmdldGN1c3RvbWVydW5hdHRlbmRlZGxpc3Qob2JqKT8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpPy5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuY3VzdG9tZXJ1bmF0dGVuZGVkRGF0YSA9IHJlcy5kYXRhLmRhdGFcclxuICAgICAgICAgIHRoaXMudmlld2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudmlld25vRGF0YSA9IGZhbHNlXHJcbiAgICAgICAgICB0aGlzLnRvdGFsQ291bnQgPSByZXMuZGF0YS50b3RhbF9jb3VudFxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnZpZXdsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnZpZXdub0RhdGEgPSB0cnVlO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIGdldG1vYmlsZVVzYWdlRGF0YXZpZXcoKSB7XHJcbiAgICB0aGlzLnZpZXdsb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMudmlld25vRGF0YSA9IGZhbHNlO1xyXG4gICAgdGhpcy5saW1pdCA9IDEwXHJcbiAgICB0aGlzLnBhZ2luYXRpb25TaXplcyA9IFsxMF1cclxuICAgIGxldCBzdG9yZXMgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnN0b3JlTGlzdC5tYXAoKGRhdGE6IGFueSkgPT4gZGF0YS5zdG9yZUlkKVxyXG4gICAgbGV0IG9iaiA9IHtcclxuICAgICAgXCJmcm9tRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZyb21EYXRlLFxyXG4gICAgICBcInRvRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnRvRGF0ZSxcclxuICAgICAgXCJkYXRlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZnJvbURhdGUsXHJcbiAgICAgIFwic3RvcmVJZFwiOiBzdG9yZXMsXHJcbiAgICAgIFwiY2xpZW50SWRcIjogdGhpcy5oZWFkZXJGaWx0ZXJzLmNsaWVudCxcclxuICAgICAgXCJDaGVja2xpc3RUeXBlXCI6IHRoaXMuc2VsZWN0LFxyXG4gICAgICBcInZpZXdJbWFnZVwiOiB0cnVlLFxyXG4gICAgICBcIm9mZnNldFwiOiAodGhpcy5vZmZzZXQgLSAxKSxcclxuICAgICAgXCJsaW1pdFwiOiB0aGlzLmxpbWl0LFxyXG4gICAgICBcImNhdGVnb3J5XCI6IHRoaXMuY2F0ZWdvcnlcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLmdldE1vYlVzYWdlbGlzdChvYmopPy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSk/LnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5tb2JpbGV1c2FnZURhdGEgPSByZXMuZGF0YS5kYXRhXHJcbiAgICAgICAgICB0aGlzLnZpZXdsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnZpZXdub0RhdGEgPSBmYWxzZVxyXG4gICAgICAgICAgdGhpcy50b3RhbENvdW50ID0gcmVzLmRhdGEudG90YWxfY291bnRcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy52aWV3bG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy52aWV3bm9EYXRhID0gdHJ1ZVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIGdldGZpbHRlckNvdW50KCkge1xyXG4gICAgbGV0IHN0b3JlcyA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc3RvcmVMaXN0Lm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnN0b3JlSWQpXHJcbiAgICBsZXQgdXNlcnMgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnVzZXJMaXN0Lm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnVzZXJFbWFpbClcclxuICAgIGxldCBwYXlsb2FkID0ge1xyXG4gICAgICBcImZyb21EYXRlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZnJvbURhdGUsXHJcbiAgICAgIFwidG9EYXRlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudG9EYXRlLFxyXG4gICAgICBcImZpbHRlcnR5cGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5maWx0ZXJ0eXBlLFxyXG4gICAgICBcInN0b3JlSWRcIjogc3RvcmVzLFxyXG4gICAgICBcInVzZXJFbWFpbFwiOiB1c2VycyxcclxuICAgICAgXCJhbnN3ZXJUeXBlXCI6IHRoaXMuc2VsZWN0ZWRTZWN0aW9uWzBdLmFuc3dlclR5cGVbMF0sXHJcbiAgICAgIFwiY2hlY2tsaXN0SWRcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQsXHJcbiAgICAgIFwiQ2hlY2tsaXN0VHlwZVwiOiBcImN1c3RvbVwiLFxyXG4gICAgICBcInF1ZXN0aW9uc1wiOiB0aGlzLnNlbGVjdGVkU2VjdGlvblswXS5xdWVzdGlvbnNbMF1cclxuICAgIH1cclxuICAgIHRoaXMudHJheFNlcnZpY2UuZ2V0QW5zd2VyY291bnQocGF5bG9hZCk/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKT8uc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmFuc3dlckZpbHRlciA9IHJlcy5kYXRhLmFuc3dlcnNDb3VudFxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmFuc3dlckZpbHRlciA9IFtdXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICBzZWxlY3RzaW5nbGVxdWVzdGlvbigpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRTZWN0aW9uID0gdGhpcy50ZW1wc2VsZWN0ZWRTZWN0aW9uXHJcbiAgICBpZiAodGhpcy5xdWVzdGlvbnNjb3VudCh0aGlzLnNlbGVjdGVkU2VjdGlvbikgPT0gMCB8fCB0aGlzLnF1ZXN0aW9uc2NvdW50KHRoaXMuc2VsZWN0ZWRTZWN0aW9uKSA+IDEpIHtcclxuICAgICAgdGhpcy5zaG93c2luZ2xlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2hvd211bHRpID0gdHJ1ZVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLnF1ZXN0aW9uc2NvdW50KHRoaXMuc2VsZWN0ZWRTZWN0aW9uKSA9PSAxKSB7XHJcbiAgICAgIHRoaXMuc2hvd3NpbmdsZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2hvd211bHRpID0gZmFsc2VcclxuXHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkU2VjdGlvblswXS5hbnN3ZXJUeXBlWzBdID09PSBcInllcy9ub1wiIHx8IHRoaXMuc2VsZWN0ZWRTZWN0aW9uWzBdLmFuc3dlclR5cGVbMF0gPT09IFwibXVsdGlwbGVjaG9pY2VzaW5nbGVcIiB8fCB0aGlzLnNlbGVjdGVkU2VjdGlvblswXS5hbnN3ZXJUeXBlWzBdID09PSBcIm11bHRpcGxlY2hvaWNlbXVsdGlwbGVcIikge1xyXG4gICAgICAgIHRoaXMuc2hvd2ZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5nZXRmaWx0ZXJDb3VudCgpXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zaG93ZmlsdGVyID0gZmFsc2VcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuICAgIHRoaXMub2Zmc2V0ID0gMTtcclxuICAgIHRoaXMudmlld2xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy52aWV3bm9EYXRhID0gZmFsc2U7XHJcbiAgICBsZXQgc3RvcmVzID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zdG9yZUxpc3QubWFwKChkYXRhOiBhbnkpID0+IGRhdGEuc3RvcmVJZClcclxuICAgIGxldCB1c2VycyA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudXNlckxpc3QubWFwKChkYXRhOiBhbnkpID0+IGRhdGEudXNlckVtYWlsKVxyXG4gICAgaWYgKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudHlwZSA9PT0gJ2NoZWNrbGlzdCcpIHtcclxuICAgICAgbGV0IG9iaiA9IHtcclxuICAgICAgICBcImZyb21EYXRlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZnJvbURhdGUsXHJcbiAgICAgICAgXCJ0b0RhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50b0RhdGUsXHJcbiAgICAgICAgXCJDaGVja2xpc3RUeXBlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuY2hlY2tMaXN0VHlwZSwgLy8gW1wiY3VzdG9tXCIsIFwiQUlcIl1cclxuICAgICAgICBcImNoZWNrbGlzdE5hbWVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5jaGVja2xpc3ROYW1lLFxyXG4gICAgICAgIFwiY2hlY2tsaXN0SWRcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQsXHJcbiAgICAgICAgXCJmaWx0ZXJ0eXBlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZmlsdGVydHlwZSxcclxuICAgICAgICBcInN0b3JlSWRcIjogc3RvcmVzLFxyXG4gICAgICAgIFwidXNlckVtYWlsXCI6IHVzZXJzLFxyXG4gICAgICAgIFwiYW5zd2VyVHlwZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmFuc3dlclR5cGUsIC8vW1wiZGVzY3JpcHRpdmVcIixcInllcy9ub1wiLFwibXVsdGlwbGVjaG9pY2VzaW5nbGVcIixcIm11bHRpcGxlY2hvaWNlbXVsdGlwbGVcIixcImltYWdlXCIsXCJ2aWRlb1wiLFwiZGVzY3JpcHRpdmVJbWFnZVwiLFwibXVsdGlwbGVJbWFnZVwiXVxyXG4gICAgICAgIFwidmlld0ZsYWdcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS52aWV3RmxhZywgLy9bdHJ1ZSwgZmFsc2VdXHJcbiAgICAgICAgXCJ2aWV3UmVkb1wiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnZpZXdSZWRvLCAvL1t0cnVlLCBmYWxzZV1cclxuICAgICAgICBcImZpbHRlclwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZpbHRlcixcclxuICAgICAgICBcInF1ZXN0aW9uc1wiOiB0aGlzLnNlbGVjdGVkU2VjdGlvbi5sZW5ndGggPiAwICYmIHRoaXMuc2VsZWN0ZWRTZWN0aW9uWzBdLnF1ZXN0aW9ucy5sZW5ndGggPiAwID8gdGhpcy5zZWxlY3RlZFNlY3Rpb25bMF0ucXVlc3Rpb25zWzBdIDogXCJcIlxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudHJheFNlcnZpY2UuZ2V0Y2hlY2tsaXN0KG9iaik/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKT8uc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAvLyB0aGlzLmNoZWNrbGlzdERhdGEgPSByZXM/LmRhdGEuY2hlY2tsaXN0UXVlc3Rpb25zO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZmlsdGVydHlwZSA9PT0gJ0NsdXN0ZXJzJykge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdzdG9yZUxpc3QnKT8uc2V0VmFsdWUocmVzPy5kYXRhPy5zdG9yZXNEZXRhaWxzKVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCd1c2VyTGlzdCcpPy5zZXRWYWx1ZShyZXM/LmRhdGE/LnN0b3Jlc0RldGFpbHMpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy52aWV3Q2hlY2tsaXN0cyhcImFsbFwiLCBcImFsbFwiKVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja2xpc3REYXRhID0gW107XHJcbiAgICAgICAgICAgIHRoaXMudmlld0NoZWNrbGlzdHNEYXRhID0gW107XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMudmlld2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy52aWV3bm9EYXRhID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IG9iaiA9IHtcclxuICAgICAgICBcImZyb21EYXRlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZnJvbURhdGUsXHJcbiAgICAgICAgXCJ0b0RhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50b0RhdGUsXHJcbiAgICAgICAgXCJDaGVja2xpc3RUeXBlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudHlwZSwgLy8gW1wiY3VzdG9tXCIsIFwiQUlcIl1cclxuICAgICAgICBcImNoZWNrbGlzdE5hbWVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5jaGVja2xpc3ROYW1lLFxyXG4gICAgICAgIFwiY2hlY2tsaXN0SWRcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQsXHJcbiAgICAgICAgXCJmaWx0ZXJ0eXBlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZmlsdGVydHlwZSxcclxuICAgICAgICBcInN0b3JlSWRcIjogc3RvcmVzLFxyXG4gICAgICAgIFwidXNlckVtYWlsXCI6IHVzZXJzLFxyXG4gICAgICAgIFwiYW5zd2VyVHlwZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmFuc3dlclR5cGUsIC8vW1wiZGVzY3JpcHRpdmVcIixcInllcy9ub1wiLFwibXVsdGlwbGVjaG9pY2VzaW5nbGVcIixcIm11bHRpcGxlY2hvaWNlbXVsdGlwbGVcIixcImltYWdlXCIsXCJ2aWRlb1wiLFwiZGVzY3JpcHRpdmVJbWFnZVwiLFwibXVsdGlwbGVJbWFnZVwiXVxyXG4gICAgICAgIFwidmlld0ZsYWdcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS52aWV3RmxhZywvL1t0cnVlLCBmYWxzZV1cclxuICAgICAgICBcInZpZXdSZWRvXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudmlld1JlZG8sIC8vW3RydWUsIGZhbHNlXVxyXG4gICAgICAgIFwiZmlsdGVyXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZmlsdGVyLFxyXG4gICAgICAgIFwicXVlc3Rpb25zXCI6IHRoaXMuc2VsZWN0ZWRTZWN0aW9uLmxlbmd0aCA+IDAgJiYgdGhpcy5zZWxlY3RlZFNlY3Rpb25bMF0ucXVlc3Rpb25zLmxlbmd0aCA+IDAgPyB0aGlzLnNlbGVjdGVkU2VjdGlvblswXS5xdWVzdGlvbnNbMF0gOiBcIlwiXHJcblxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudHJheFNlcnZpY2UuZ2V0UXVlc3Rpb25zKG9iaik/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKT8uc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAvLyB0aGlzLmNoZWNrbGlzdERhdGEgPSByZXM/LmRhdGEuY2hlY2tsaXN0UXVlc3Rpb25zO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZmlsdGVydHlwZSA9PT0gJ0NsdXN0ZXJzJykge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdzdG9yZUxpc3QnKT8uc2V0VmFsdWUocmVzPy5kYXRhPy5zdG9yZXNEZXRhaWxzKVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCd1c2VyTGlzdCcpPy5zZXRWYWx1ZShyZXM/LmRhdGE/LnN0b3Jlc0RldGFpbHMpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy52aWV3VGFza0xpc3QoXCJhbGxcIiwgXCJhbGxcIilcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0RGF0YSA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnZpZXdDaGVja2xpc3RzRGF0YSA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnZpZXdsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMudmlld25vRGF0YSA9IHRydWU7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcbiAgYXBwb3ZlQ2hlY2tsaXN0KCkge1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEFwcHJvdmFsUG9wdXBDb21wb25lbnQsIHsgY2VudGVyZWQ6IHRydWUsIHNpemU6ICdtZCcsIH0pO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UudHlwZSA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudHlwZTtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmNoZWNrTGlzdE5hbWUgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmNoZWNrbGlzdE5hbWU7XHJcbiAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQgPT0gJ3N1Ym1pdCcpIHtcclxuICAgICAgICBpZiAodGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50eXBlID09ICdjaGVja2xpc3QnKSB7XHJcbiAgICAgICAgICB0aGlzLmNoZWNrbGlzdEFwcHJvdmUoKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLkFwcHJvdmVUYXNrKClcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICBjaGVja2xpc3RBcHByb3ZlKCkge1xyXG4gICAgbGV0IHN0b3JlcyA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc3RvcmVMaXN0Lm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnN0b3JlSWQpXHJcbiAgICBsZXQgdXNlciA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudXNlckxpc3QubWFwKChkYXRhOiBhbnkpID0+IGRhdGEudXNlckVtYWlsKVxyXG4gICAgbGV0IHBheWxvYWQgPSB7XHJcbiAgICAgIFwiY2xpZW50SWRcIjogdGhpcy5oZWFkZXJGaWx0ZXJzLmNsaWVudCxcclxuICAgICAgXCJmcm9tRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZyb21EYXRlLFxyXG4gICAgICBcInRvRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnRvRGF0ZSxcclxuICAgICAgXCJzdG9yZUlkXCI6IHN0b3JlcyxcclxuICAgICAgXCJ1c2VyRW1haWxcIjogdXNlcixcclxuICAgICAgXCJzb3VyY2VDaGVja0xpc3RfaWRcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQsXHJcbiAgICAgIFwiZmlsdGVydHlwZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZpbHRlcnR5cGUsXHJcbiAgICB9XHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLmFwcHJvdmVjaGVja2xpc3QocGF5bG9hZCk/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKT8uc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmFwcHJvdmFsc3RhdHVzKClcclxuICAgICAgICAgIGlmICh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnR5cGUgPT09ICdjaGVja2xpc3QnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Q2hlY2tsaXN0UUEoZmFsc2UpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRUYXNrUUEodGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50eXBlKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0U3VjY2Vzc1RvYXN0KGA8ZGl2PjxzcGFuIGNsYXNzPVwibWUtOFwiID4ke3Jlcy5tZXNzYWdlfTwvc3Bhbj48L2Rpdj5gKVxyXG4gICAgICAgIH1cclxuICAgICAgfSwgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KGVycj8uZXJyb3I/LmVycm9yKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG4gIEFwcHJvdmVUYXNrKCkge1xyXG4gICAgbGV0IHN0b3JlcyA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc3RvcmVMaXN0Lm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnN0b3JlSWQpXHJcbiAgICBsZXQgdXNlciA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudXNlckxpc3QubWFwKChkYXRhOiBhbnkpID0+IGRhdGEudXNlckVtYWlsKVxyXG4gICAgbGV0IHBheWxvYWQgPSB7XHJcbiAgICAgIFwiZnJvbURhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5mcm9tRGF0ZSxcclxuICAgICAgXCJ0b0RhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50b0RhdGUsXHJcbiAgICAgIFwic3RvcmVJZFwiOiBzdG9yZXMsXHJcbiAgICAgIFwidXNlckVtYWlsXCI6IHVzZXIsXHJcbiAgICAgIFwic291cmNlQ2hlY2tMaXN0X2lkXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkLFxyXG4gICAgICBcImNsaWVudElkXCI6IHRoaXMuaGVhZGVyRmlsdGVycy5jbGllbnQsXHJcbiAgICAgIFwiZmlsdGVydHlwZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZpbHRlcnR5cGUsXHJcbiAgICB9XHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLmFwcHJvdmV0YXNrKHBheWxvYWQpPy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSk/LnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0U3VjY2Vzc1RvYXN0KGA8ZGl2PjxzcGFuIGNsYXNzPVwibWUtOFwiID4ke3Jlcy5tZXNzYWdlfTwvc3Bhbj48L2Rpdj5gKVxyXG4gICAgICAgICAgdGhpcy5hcHByb3ZhbHN0YXR1cygpXHJcbiAgICAgICAgICBpZiAodGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50eXBlID09PSAnY2hlY2tsaXN0Jykge1xyXG4gICAgICAgICAgICB0aGlzLmdldENoZWNrbGlzdFFBKGZhbHNlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0VGFza1FBKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudHlwZSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChlcnI/LmVycm9yPy5lcnJvcilcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcblxyXG5cclxuICB9XHJcblxyXG4gIGdldENoZWNrbGlzdFFBKHR5cGU6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFNlY3Rpb24gPSBbXVxyXG4gICAgdGhpcy50ZW1wc2VsZWN0ZWRTZWN0aW9uID0gW11cclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLm5vRGF0YSA9IGZhbHNlXHJcbiAgICB0aGlzLnZpZXdsb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMudmlld25vRGF0YSA9IGZhbHNlO1xyXG4gICAgbGV0IHN0b3JlcyA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc3RvcmVMaXN0Lm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnN0b3JlSWQpXHJcbiAgICBsZXQgdXNlcnMgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnVzZXJMaXN0Lm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnVzZXJFbWFpbClcclxuICAgIGxldCBvYmogPSB7XHJcbiAgICAgIFwiZnJvbURhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5mcm9tRGF0ZSxcclxuICAgICAgXCJ0b0RhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50b0RhdGUsXHJcbiAgICAgIFwiQ2hlY2tsaXN0VHlwZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmNoZWNrTGlzdFR5cGUsIC8vIFtcImN1c3RvbVwiLCBcIkFJXCJdXHJcbiAgICAgIFwiY2hlY2tsaXN0TmFtZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmNoZWNrbGlzdE5hbWUsXHJcbiAgICAgIFwiY2hlY2tsaXN0SWRcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQsXHJcbiAgICAgIFwiZmlsdGVydHlwZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZpbHRlcnR5cGUsXHJcbiAgICAgIFwidXNlckVtYWlsXCI6IHVzZXJzLFxyXG4gICAgICBcInN0b3JlSWRcIjogc3RvcmVzLFxyXG4gICAgICBcImFuc3dlclR5cGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5hbnN3ZXJUeXBlLCAvL1tcImRlc2NyaXB0aXZlXCIsXCJ5ZXMvbm9cIixcIm11bHRpcGxlY2hvaWNlc2luZ2xlXCIsXCJtdWx0aXBsZWNob2ljZW11bHRpcGxlXCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImRlc2NyaXB0aXZlSW1hZ2VcIixcIm11bHRpcGxlSW1hZ2VcIl1cclxuICAgICAgXCJ2aWV3RmxhZ1wiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnZpZXdGbGFnLCAvL1t0cnVlLCBmYWxzZV1cclxuICAgICAgXCJ2aWV3UmVkb1wiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnZpZXdSZWRvLCAvL1t0cnVlLCBmYWxzZV1cclxuICAgICAgXCJmaWx0ZXJcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5maWx0ZXIsXHJcbiAgICAgIFwicXVlc3Rpb25zXCI6IHRoaXMuc2VsZWN0ZWRTZWN0aW9uLmxlbmd0aCA+IDAgJiYgdGhpcy5zZWxlY3RlZFNlY3Rpb25bMF0ucXVlc3Rpb25zLmxlbmd0aCA+IDAgPyB0aGlzLnNlbGVjdGVkU2VjdGlvblswXS5xdWVzdGlvbnNbMF0gOiBcIlwiXHJcbiAgICB9XHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLmdldGNoZWNrbGlzdChvYmopPy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSk/LnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5jaGVja2xpc3REYXRhID0gcmVzPy5kYXRhLmNoZWNrbGlzdFF1ZXN0aW9ucztcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgICAgICAgIGlmICh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZpbHRlcnR5cGUgPT09ICdDbHVzdGVycycpIHtcclxuICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3N0b3JlTGlzdCcpPy5zZXRWYWx1ZShyZXM/LmRhdGE/LnN0b3Jlc0RldGFpbHMpXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgndXNlckxpc3QnKT8uc2V0VmFsdWUocmVzPy5kYXRhPy5zdG9yZXNEZXRhaWxzKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy52aWV3Q2hlY2tsaXN0cyhcImFsbFwiLCBcImFsbFwiKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmNoZWNrbGlzdERhdGEgPSBbXTtcclxuICAgICAgICAgIHRoaXMudmlld0NoZWNrbGlzdHNEYXRhID0gW107XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMudmlld2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudmlld25vRGF0YSA9IHRydWU7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgZ2V0dGFza1FBKHR5cGU6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFNlY3Rpb24gPSBbXVxyXG4gICAgdGhpcy50ZW1wc2VsZWN0ZWRTZWN0aW9uID0gW11cclxuXHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5ub0RhdGEgPSBmYWxzZVxyXG4gICAgdGhpcy52aWV3bG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnZpZXdub0RhdGEgPSBmYWxzZTtcclxuICAgIGxldCBzdG9yZXMgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnN0b3JlTGlzdC5tYXAoKGRhdGE6IGFueSkgPT4gZGF0YS5zdG9yZUlkKVxyXG4gICAgbGV0IHVzZXJzID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS51c2VyTGlzdC5tYXAoKGRhdGE6IGFueSkgPT4gZGF0YS51c2VyRW1haWwpXHJcbiAgICBsZXQgb2JqID0ge1xyXG4gICAgICBcImZyb21EYXRlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZnJvbURhdGUsXHJcbiAgICAgIFwidG9EYXRlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudG9EYXRlLFxyXG4gICAgICBcIkNoZWNrbGlzdFR5cGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50eXBlLCAvLyBbXCJjdXN0b21cIiwgXCJBSVwiXVxyXG4gICAgICBcImNoZWNrbGlzdE5hbWVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5jaGVja2xpc3ROYW1lLFxyXG4gICAgICBcImNoZWNrbGlzdElkXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkLFxyXG4gICAgICBcImZpbHRlcnR5cGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5maWx0ZXJ0eXBlLFxyXG4gICAgICBcInVzZXJFbWFpbFwiOiB1c2VycyxcclxuICAgICAgXCJzdG9yZUlkXCI6IHN0b3JlcyxcclxuICAgICAgXCJhbnN3ZXJUeXBlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuYW5zd2VyVHlwZSwgLy9bXCJkZXNjcmlwdGl2ZVwiLFwieWVzL25vXCIsXCJtdWx0aXBsZWNob2ljZXNpbmdsZVwiLFwibXVsdGlwbGVjaG9pY2VtdWx0aXBsZVwiLFwiaW1hZ2VcIixcInZpZGVvXCIsXCJkZXNjcmlwdGl2ZUltYWdlXCIsXCJtdWx0aXBsZUltYWdlXCJdXHJcbiAgICAgIFwidmlld0ZsYWdcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS52aWV3RmxhZywgLy9bdHJ1ZSwgZmFsc2VdXHJcbiAgICAgIFwidmlld1JlZG9cIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS52aWV3UmVkbywgLy9bdHJ1ZSwgZmFsc2VdXHJcbiAgICAgIFwiZmlsdGVyXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZmlsdGVyLFxyXG4gICAgICBcInF1ZXN0aW9uc1wiOiB0aGlzLnNlbGVjdGVkU2VjdGlvbi5sZW5ndGggPiAwICYmIHRoaXMuc2VsZWN0ZWRTZWN0aW9uWzBdLnF1ZXN0aW9ucy5sZW5ndGggPiAwID8gdGhpcy5zZWxlY3RlZFNlY3Rpb25bMF0ucXVlc3Rpb25zWzBdIDogXCJcIlxyXG4gICAgfVxyXG4gICAgdGhpcy50cmF4U2VydmljZS5nZXRRdWVzdGlvbnMob2JqKT8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpPy5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuY2hlY2tsaXN0RGF0YSA9IHJlcz8uZGF0YS5jaGVja2xpc3RRdWVzdGlvbnM7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgICBpZiAodGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5maWx0ZXJ0eXBlID09PSAnQ2x1c3RlcnMnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdzdG9yZUxpc3QnKT8uc2V0VmFsdWUocmVzPy5kYXRhPy5zdG9yZXNEZXRhaWxzKVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3VzZXJMaXN0Jyk/LnNldFZhbHVlKHJlcz8uZGF0YT8uc3RvcmVzRGV0YWlscylcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMudmlld1Rhc2tMaXN0KFwiYWxsXCIsIFwiYWxsXCIpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuY2hlY2tsaXN0RGF0YSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy52aWV3Q2hlY2tsaXN0c0RhdGEgPSBbXTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy52aWV3bG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy52aWV3bm9EYXRhID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG4gIHZpZXdUYXNrTGlzdChzZWN0aW9uTmFtZTogYW55LCBxdWVzdGlvbk5hbWU6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEV4cG9ydCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZWN0aW9uTmFtZSA9IHNlY3Rpb25OYW1lO1xyXG4gICAgdGhpcy5xdWVzdGlvbk5hbWUgPSBxdWVzdGlvbk5hbWVcclxuXHJcbiAgICB0aGlzLmxpbWl0ID0gMTtcclxuICAgIHRoaXMucGFnaW5hdGlvblNpemVzID0gWzFdO1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRTZWN0aW9uLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5saW1pdCA9IDEwLFxyXG4gICAgICAgIHRoaXMucGFnaW5hdGlvblNpemVzID0gWzEwXTtcclxuICAgIH1cclxuICAgIHRoaXMudmlld2xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy52aWV3bm9EYXRhID0gZmFsc2VcclxuICAgIGxldCBzdG9yZXMgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnN0b3JlTGlzdC5tYXAoKGRhdGE6IGFueSkgPT4gZGF0YS5zdG9yZUlkKVxyXG4gICAgbGV0IHVzZXJzID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS51c2VyTGlzdC5tYXAoKGRhdGE6IGFueSkgPT4gZGF0YS51c2VyRW1haWwpXHJcbiAgICB0aGlzLnZpZXdDaGVja2xpc3Rzb3B0aW9ucyA9IHtcclxuICAgICAgXCJmcm9tRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZyb21EYXRlLFxyXG4gICAgICBcInRvRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnRvRGF0ZSxcclxuICAgICAgXCJDaGVja2xpc3RUeXBlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudHlwZSwgLy8gW1wiY2hlY2tsaXN0XCIsIFwidGFza1wiXVxyXG4gICAgICBcImNoZWNrbGlzdE5hbWVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5jaGVja2xpc3ROYW1lLFxyXG4gICAgICBcImZpbHRlcnR5cGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5maWx0ZXJ0eXBlLFxyXG4gICAgICBcInVzZXJFbWFpbFwiOiB1c2VycyxcclxuICAgICAgXCJzdG9yZUlkXCI6IHN0b3JlcyxcclxuICAgICAgXCJhbnN3ZXJUeXBlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuYW5zd2VyVHlwZSwgLy9bXCJkZXNjcmlwdGl2ZVwiLFwieWVzL25vXCIsXCJtdWx0aXBsZWNob2ljZXNpbmdsZVwiLFwibXVsdGlwbGVjaG9pY2VtdWx0aXBsZVwiLFwiaW1hZ2VcIixcInZpZGVvXCIsXCJkZXNjcmlwdGl2ZUltYWdlXCIsXCJtdWx0aXBsZUltYWdlXCJdICAgICAgXHJcbiAgICAgIFwib2Zmc2V0XCI6ICh0aGlzLm9mZnNldCAtIDEpLFxyXG4gICAgICBcImxpbWl0XCI6IHRoaXMubGltaXQsXHJcbiAgICAgIFwiY2hlY2tsaXN0SWRcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQsXHJcbiAgICAgIFwic291cmNlQ2hlY2tMaXN0X2lkXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkLFxyXG4gICAgICBcInZpZXdGbGFnXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudmlld0ZsYWcsXHJcbiAgICAgIFwidmlld1JlZG9cIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS52aWV3UmVkbywgLy9bdHJ1ZSwgZmFsc2VdXHJcbiAgICAgIFwicXVlc3Rpb25zXCI6IHRoaXMuc2VsZWN0ZWRTZWN0aW9uLFxyXG4gICAgICBcImZpbHRlclwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZpbHRlclxyXG4gICAgfVxyXG4gICAgdGhpcy50cmF4U2VydmljZS5nZXRBbnN3ZXJzKHRoaXMudmlld0NoZWNrbGlzdHNvcHRpb25zKT8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpPy5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuYXBwcm92YWxzdGF0dXMoKVxyXG4gICAgICAgICAgdGhpcy52aWV3Q2hlY2tsaXN0c0RhdGEgPSByZXMuZGF0YTtcclxuICAgICAgICAgIHRoaXMudG90YWxDb3VudCA9IHRoaXMudmlld0NoZWNrbGlzdHNEYXRhLnRvdGFsX2NvdW50XHJcbiAgICAgICAgICB0aGlzLnZpZXdsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnZpZXdub0RhdGEgPSBmYWxzZVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnZpZXdDaGVja2xpc3RzRGF0YSA9IFtdXHJcbiAgICAgICAgICB0aGlzLnZpZXdsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnZpZXdub0RhdGEgPSB0cnVlXHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHZpZXdDaGVja2xpc3RzKHNlY3Rpb25OYW1lOiBhbnksIHF1ZXN0aW9uTmFtZTogYW55KSB7XHJcbiAgICAvLyB0aGlzLnNlbGVjdGVkU2VjdGlvbiA9IFtdICAgIFxyXG4gICAgdGhpcy5zZWxlY3RlZEV4cG9ydCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZWN0aW9uTmFtZSA9IHNlY3Rpb25OYW1lO1xyXG4gICAgdGhpcy5xdWVzdGlvbk5hbWUgPSBxdWVzdGlvbk5hbWVcclxuXHJcbiAgICB0aGlzLmxpbWl0ID0gMTtcclxuICAgIHRoaXMucGFnaW5hdGlvblNpemVzID0gWzFdO1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRTZWN0aW9uLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5saW1pdCA9IDEwLFxyXG4gICAgICAgIHRoaXMucGFnaW5hdGlvblNpemVzID0gWzEwXTtcclxuICAgIH1cclxuICAgIHRoaXMudmlld2xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy52aWV3bm9EYXRhID0gZmFsc2VcclxuICAgIGxldCBzdG9yZXMgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnN0b3JlTGlzdC5tYXAoKGRhdGE6IGFueSkgPT4gZGF0YS5zdG9yZUlkKVxyXG4gICAgbGV0IHVzZXJzID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS51c2VyTGlzdC5tYXAoKGRhdGE6IGFueSkgPT4gZGF0YS51c2VyRW1haWwpXHJcbiAgICB0aGlzLnZpZXdDaGVja2xpc3Rzb3B0aW9ucyA9IHtcclxuICAgICAgXCJmcm9tRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZyb21EYXRlLFxyXG4gICAgICBcInRvRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnRvRGF0ZSxcclxuICAgICAgXCJDaGVja2xpc3RUeXBlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuY2hlY2tMaXN0VHlwZSwgLy8gW1wiY2hlY2tsaXN0XCIsIFwidGFza1wiXVxyXG4gICAgICBcImNoZWNrbGlzdE5hbWVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5jaGVja2xpc3ROYW1lLFxyXG4gICAgICBcImZpbHRlcnR5cGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5maWx0ZXJ0eXBlLFxyXG4gICAgICBcInN0b3JlSWRcIjogc3RvcmVzLFxyXG4gICAgICBcInVzZXJFbWFpbFwiOiB1c2VycyxcclxuICAgICAgXCJhbnN3ZXJUeXBlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuYW5zd2VyVHlwZSwgLy9bXCJkZXNjcmlwdGl2ZVwiLFwieWVzL25vXCIsXCJtdWx0aXBsZWNob2ljZXNpbmdsZVwiLFwibXVsdGlwbGVjaG9pY2VtdWx0aXBsZVwiLFwiaW1hZ2VcIixcInZpZGVvXCIsXCJkZXNjcmlwdGl2ZUltYWdlXCIsXCJtdWx0aXBsZUltYWdlXCJdICAgICAgXHJcbiAgICAgIFwib2Zmc2V0XCI6ICh0aGlzLm9mZnNldCAtIDEpLFxyXG4gICAgICBcImxpbWl0XCI6IHRoaXMubGltaXQsXHJcbiAgICAgIFwiY2hlY2tsaXN0SWRcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQsXHJcbiAgICAgIFwic291cmNlQ2hlY2tMaXN0X2lkXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkLFxyXG4gICAgICBcInZpZXdGbGFnXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudmlld0ZsYWcsXHJcbiAgICAgIFwidmlld1JlZG9cIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS52aWV3UmVkbywvL1t0cnVlLCBmYWxzZV1cclxuICAgICAgXCJxdWVzdGlvbnNcIjogdGhpcy5zZWxlY3RlZFNlY3Rpb24sXHJcbiAgICAgIFwiZmlsdGVyXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZmlsdGVyXHJcbiAgICB9XHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLnZpZXdDaGVja2xpc3RzKHRoaXMudmlld0NoZWNrbGlzdHNvcHRpb25zKT8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpPy5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuYXBwcm92YWxzdGF0dXMoKVxyXG4gICAgICAgICAgdGhpcy52aWV3Q2hlY2tsaXN0c0RhdGEgPSByZXMuZGF0YTtcclxuICAgICAgICAgIHRoaXMudG90YWxDb3VudCA9IHRoaXMudmlld0NoZWNrbGlzdHNEYXRhLnRvdGFsX2NvdW50XHJcbiAgICAgICAgICB0aGlzLnZpZXdsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnZpZXdub0RhdGEgPSBmYWxzZVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnZpZXdDaGVja2xpc3RzRGF0YSA9IFtdXHJcbiAgICAgICAgICB0aGlzLnZpZXdsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnZpZXdub0RhdGEgPSB0cnVlXHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG5cclxuICB0YXNrQ3JlYXRlKCkgeyB9XHJcblxyXG4gIHNob3dzaWRlbmF2OiBib29sZWFuID0gdHJ1ZTtcclxuICBzaWRlbmF2KCkge1xyXG4gICAgdGhpcy5zaG93c2lkZW5hdiA9ICF0aGlzLnNob3dzaWRlbmF2O1xyXG4gIH1cclxuXHJcbiAgb25QYWdlQ2hhbmdlKHBhZ2U6IG51bWJlcikge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IHBhZ2U7XHJcbiAgfVxyXG5cclxuXHJcbiAgY2hlY2tBSWNoZWNrbGlzdCgpIHsgIFxyXG4gICAgaWYgKHRoaXMuY29tYmluZWRDaGVja2xpc3QuaW5jbHVkZXModGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgb25QYWdlQ2hhbmdldmlldyhwYWdlT2Zmc2V0OiBudW1iZXIpIHtcclxuICAgIHRoaXMub2Zmc2V0ID0gcGFnZU9mZnNldDtcclxuICAgIGlmICh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCA9PT0gJ3N0b3Jlb3BlbmFuZGNsb3NlJykge1xyXG4gICAgICB0aGlzLnN0b3JlT3BlbmNsb3NldmlldygpXHJcbiAgICB9aWYgKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkID09PSAncXVldWVhbGVydCd8fHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkID09PSAnYm94YWxlcnQnfHx0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCA9PT0gJ3N1c3BpY2lvdXNmb290ZmFsbCcpIHtcclxuICAgICAgdGhpcy5xdWV1ZWFsZXJ0dmlldygpXHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaW1hZ2VDaGVja2xpc3QuaW5jbHVkZXModGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQpKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQ7XHJcbiAgICAgIHRoaXMuZ2V0bW9iaWxlVXNhZ2VEYXRhdmlldygpXHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudmlkZW9DaGVja2xpc3QuaW5jbHVkZXModGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQpKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQ7XHJcbiAgICAgIHRoaXMuZ2V0Y3VzdG9tZXJ1bmF0dGVuZGVkdmlldygpXHJcbiAgICB9ICBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudHlwZSA9PT0gJ2NoZWNrbGlzdCcpIHtcclxuICAgICAgICB0aGlzLnZpZXdDaGVja2xpc3RzKCcnLCAnJyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy52aWV3VGFza0xpc3QoXCJhbGxcIiwgXCJhbGxcIilcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgd2luZG93LnNjcm9sbFRvKHsgdG9wOiAzMCwgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xyXG5cclxuICB9XHJcblxyXG5cclxuICBvblBhZ2VTaXplQ2hhbmdlKHBhZ2VTaXplOiBudW1iZXIpIHtcclxuICAgIHRoaXMubGltaXQgPSBwYWdlU2l6ZTtcclxuICAgIHRoaXMub2Zmc2V0ID0gMTtcclxuICAgIGlmICh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCA9PT0gJ3N0b3Jlb3BlbmFuZGNsb3NlJykge1xyXG4gICAgICB0aGlzLnN0b3JlT3BlbmNsb3NldmlldygpXHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkID09PSAncXVldWVhbGVydCd8fHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkID09PSAnYm94YWxlcnQnfHx0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCA9PT0gJ3N1c3BpY2lvdXNmb290ZmFsbCcpIHtcclxuICAgICAgdGhpcy5zdG9yZU9wZW5jbG9zZXZpZXcoKVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLmltYWdlQ2hlY2tsaXN0LmluY2x1ZGVzKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkKSkge1xyXG4gICAgICB0aGlzLmdldG1vYmlsZVVzYWdlRGF0YXZpZXcoKVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLnZpZGVvQ2hlY2tsaXN0LmluY2x1ZGVzKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkKSkge1xyXG4gICAgICB0aGlzLmN1c3RvbWVydW5hdHRlbmRlZGxpc3QoZmFsc2UpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50eXBlID09PSAnY2hlY2tsaXN0Jykge1xyXG4gICAgICAgIHRoaXMudmlld0NoZWNrbGlzdHMoJycsICcnKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnZpZXdUYXNrTGlzdChcImFsbFwiLCBcImFsbFwiKVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmV4cG9ydFNob3cgPSBmYWxzZTtcclxuICB9XHJcbiAgZXhwb3J0U2hvdyA9IGZhbHNlO1xyXG4gIGV4cG9ydExhYmVsOiBzdHJpbmcgPSAnRXhwb3J0JztcclxuICBleHBvcnREZXQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuZXhwb3J0U2hvdyA9ICF0aGlzLmV4cG9ydFNob3c7XHJcbiAgfVxyXG4gIHF1ZXN0aW9uc2NvdW50KGRhdGE6IGFueSkge1xyXG4gICAgbGV0IGNvdW50ID0gMFxyXG4gICAgZGF0YS5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgY291bnQgPSBjb3VudCArIGVsZW1lbnQucXVlc3Rpb25zLmxlbmd0aFxyXG5cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGNvdW50O1xyXG4gIH1cclxuICBzZXRFeHBvcnRBc1BQVCh0eXBlOiBhbnksIGZpbGVUeXBlOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuZXhwb3J0TGFiZWwgPSB0eXBlOyAgLy8gVXBkYXRlIHRoZSBsYWJlbCB0ZXh0XHJcbiAgICB0aGlzLmV4cG9ydFNob3cgPSBmYWxzZTsgIC8vIENsb3NlIHRoZSBleHBvcnQgbWVudSBhZnRlciBzZWxlY3Rpb25cclxuICAgIGxldCBzdG9yZXMgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnN0b3JlTGlzdC5tYXAoKGRhdGE6IGFueSkgPT4gZGF0YS5zdG9yZUlkKVxyXG4gICAgbGV0IHVzZXJzID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS51c2VyTGlzdC5tYXAoKGRhdGE6IGFueSkgPT4gZGF0YS51c2VyRW1haWwpXHJcblxyXG4gICAgaWYgKGZpbGVUeXBlID09PSAncHB0Jykge1xyXG4gICAgICBsZXQgc3RhcnQgPSBkYXlqcyh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZyb21EYXRlKTtcclxuICAgICAgbGV0IGVuZCA9IGRheWpzKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudG9EYXRlKTtcclxuICAgICAgY29uc3QgZGlmZmVyZW5jZSA9IGVuZC5kaWZmKHN0YXJ0LCAnZGF5cycpO1xyXG5cclxuICAgICAgaWYgKGRpZmZlcmVuY2UgPT09IDIgJiYgdGhpcy5xdWVzdGlvbnNjb3VudCh0aGlzLnNlbGVjdGVkU2VjdGlvbikgPiAxKSB7XHJcbiAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChgUGxlYXNlIHNlbGVjdCBtYXhpbXVtIG9mIDEgcXVlc3Rpb24gb25seWApXHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgaWYgKGRpZmZlcmVuY2UgPT09IDEgJiYgdGhpcy5xdWVzdGlvbnNjb3VudCh0aGlzLnNlbGVjdGVkU2VjdGlvbikgPiAzKSB7XHJcbiAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChgUGxlYXNlIHNlbGVjdCBtYXhpbXVtIG9mIDMgcXVlc3Rpb24gb25seWApXHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgaWYgKGRpZmZlcmVuY2UgPT09IDAgJiYgdGhpcy5xdWVzdGlvbnNjb3VudCh0aGlzLnNlbGVjdGVkU2VjdGlvbikgPiAzKSB7XHJcbiAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChgUGxlYXNlIHNlbGVjdCBtYXhpbXVtIG9mIDMgcXVlc3Rpb24gb25seWApXHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5leHBvcnRMYWJlbCA9ICdFeHBvcnQnXHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHBheWxvYWQgPSB7XHJcbiAgICAgIFwiZG93bmxvYWRJbnNlcnRGcm9tXCI6IFwiZ2FsbGVyeVwiLFxyXG4gICAgICBcImZyb21EYXRlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZnJvbURhdGUsXHJcbiAgICAgIFwidG9EYXRlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudG9EYXRlLFxyXG4gICAgICBcImNoZWNrTGlzdFR5cGVcIjp0aGlzLnNlbGVjdCxcclxuICAgICAgXCJjaGVja2xpc3RJZFwiOiBbXSxcclxuICAgICAgXCJzb3VyY2VDaGVja0xpc3RfaWRcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQsXHJcbiAgICAgIFwiY2hlY2tsaXN0TmFtZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmNoZWNrbGlzdE5hbWUsXHJcbiAgICAgIFwiYW5zd2VyVHlwZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmFuc3dlclR5cGUsXHJcbiAgICAgIFwiZmlsZVR5cGVcIjogZmlsZVR5cGUsXHJcbiAgICAgIFwic3RvcmVJZHNcIjogc3RvcmVzLFxyXG4gICAgICBcInVzZXJFbWFpbExpc3RcIjogdXNlcnMsXHJcbiAgICAgIFwiY2xpZW50SWRcIjogdGhpcy5oZWFkZXJGaWx0ZXJzLmNsaWVudCxcclxuICAgICAgXCJxdWVzdGlvbnNcIjogdGhpcy5zZWxlY3RlZFNlY3Rpb24sXHJcbiAgICAgIFwicHJldmlld1R5cGVcIjogdGhpcy5wcmV2aWV3VHlwZSxcclxuICAgICAgXCJ2aWV3RmxhZ1wiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnZpZXdGbGFnLFxyXG4gICAgICBcInZpZXdSZWRvXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudmlld1JlZG8sIC8vW3RydWUsIGZhbHNlXVxyXG4gICAgICBcImluc2VydFR5cGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50eXBlLFxyXG4gICAgICBcImZpbHRlclwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZpbHRlcixcclxuICAgICAgXCJmaWx0ZXJ0eXBlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZmlsdGVydHlwZVxyXG4gICAgfVxyXG4gICAgbGV0IGNsaWVudGluZm8gPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY2xpZW50LWRldGFpbHNcIikgfHwgXCJcIilcclxuICAgIGxldCB1c2VyaW5mbyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ1c2VyLWluZm9cIikgfHwgXCJcIilcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuc2VsZWN0KVxyXG4gICAgaWYodGhpcy5zZWxlY3Q9PT0nY3VzdG9tJyl7XHJcbiAgICAgIGlmICgoY2xpZW50aW5mbz8udHJheERhdGVSYW5nZSA9PT0gNyB8fCB1c2VyaW5mbz8udHJheERhdGVSYW5nZSA9PT0gNykgJiYgdHlwZSA9PT0gJ0V4cG9ydCBhcyBDU1YnIHx8IHR5cGUgPT09ICdFeHBvcnQgYXMgUFBUJyB8fCB0eXBlID09PSAnRXhwb3J0IGFzIFpJUCcpIHtcclxuICAgICAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oRXhwb3J0R2FsbGVyeUNvbXBvbmVudCwge1xyXG4gICAgICAgICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICAgICAgICBzaXplOiBcImxnXCIsXHJcbiAgICAgICAgICBzY3JvbGxhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgYmFja2Ryb3A6J3N0YXRpYycsXHJcbiAgICAgICAgICB3aW5kb3dDbGFzczogXCJjdXN0b20taGVpZ2h0LW1vZGFsXCIgIC8vIDwtLSBBZGQgYSBjdXN0b20gY2xhc3MgaGVyZSAgXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UudHlwZSA9IHR5cGU7XHJcbiAgICAgICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UucGF5bG9hZCA9IHBheWxvYWQ7XHJcbiAgXHJcbiAgICAgICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICBpZiAocmVzdWx0ID09PSBcInN1Y2Nlc3NcIikge1xyXG4gICAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldFN1Y2Nlc3NUb2FzdChgPGRpdj48c3BhbiBjbGFzcz1cIm1lLThcIiA+RG93bmxvYWRpbmcgeW91ciByZXBvcnRzPC9zcGFuPjxhIGhyZWY9XCJub3RpZmljYXRpb25zL2FsZXJ0cz90YWI9ZG93bmxvYWRcIiBzdHlsZT1cImNvbG9yOiM5OWMzZmY7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IGN1cnNvcjpwb2ludGVyXCIgPlZpZXc8L2E+PC9kaXY+YClcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT09IFwiZXJyb3JcIikge1xyXG4gICAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoYFNvbWV0aGluZyB3ZW50IHdyb25nICFgKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZXhwb3J0TGFiZWwgPSAnRXhwb3J0J1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy50cmF4U2VydmljZS5yZXBvcnRUYWJsZUV4cG9ydChwYXlsb2FkKT8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpPy5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldFN1Y2Nlc3NUb2FzdChgPGRpdj48c3BhbiBjbGFzcz1cIm1lLThcIiA+RG93bmxvYWRpbmcgeW91ciByZXBvcnRzPC9zcGFuPjxhIGhyZWY9XCJub3RpZmljYXRpb25zL2FsZXJ0cz90YWI9ZG93bmxvYWRcIiBzdHlsZT1cImNvbG9yOiM5OWMzZmY7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IGN1cnNvcjpwb2ludGVyXCIgPlZpZXc8L2E+PC9kaXY+YClcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KGBTb21ldGhpbmcgd2VudCB3cm9uZyAhYClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmV4cG9ydExhYmVsID0gJ0V4cG9ydCdcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9ZWxzZSBpZih0aGlzLnNlbGVjdD09PSdzY3J1bSd8fHRoaXMuc2VsZWN0PT09J2NsZWFuaW5nJ3x8dGhpcy5zZWxlY3Q9PT0nc3RvcmVvcGVuYW5kY2xvc2UnKXtcclxuXHJcbiAgICAgIGlmKHRoaXMuc2VsZWN0IT0nc3RvcmVvcGVuYW5kY2xvc2UnKXtcclxuICAgICAgICB0aGlzLnByZXZpZXdUeXBlID0gICd2aWRlbydcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy50cmF4U2VydmljZS5haWNoZWNrbGlzdEV4cG9ydChwYXlsb2FkKT8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpPy5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldFN1Y2Nlc3NUb2FzdChgPGRpdj48c3BhbiBjbGFzcz1cIm1lLThcIiA+RG93bmxvYWRpbmcgeW91ciByZXBvcnRzPC9zcGFuPjxhIGhyZWY9XCJub3RpZmljYXRpb25zL2FsZXJ0cz90YWI9ZG93bmxvYWRcIiBzdHlsZT1cImNvbG9yOiM5OWMzZmY7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IGN1cnNvcjpwb2ludGVyXCIgPlZpZXc8L2E+PC9kaXY+YClcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoYFNvbWV0aGluZyB3ZW50IHdyb25nICFgKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5leHBvcnRMYWJlbCA9ICdFeHBvcnQnXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdHlwZUNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnJlbW92ZVF1ZXJ5UGFyYW1zKClcclxuICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCd0eXBlJyk/LnNldFZhbHVlKGV2ZW50KVxyXG4gICAgdGhpcy5zaG93c2luZ2xlID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dtdWx0aSA9IHRydWU7XHJcbiAgICB0aGlzLmFuc3dlckZpbHRlciA9IFtdXHJcbiAgICBpZiAoZXZlbnQgPT09ICd0YXNrJykge1xyXG4gICAgICB0aGlzLnRyYXhTZXJ2aWNlLmdldFN0b3Jlc2xpc3QoeyBjbGllbnRJZDogdGhpcy5oZWFkZXJGaWx0ZXJzLmNsaWVudCwgY2x1c3RlcnM6IHRoaXMuZ3JvdXBzLCBjaXR5OiBbXSB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZUxpc3QgPSByZXMuZGF0YS5zdG9yZXNEYXRhO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlcyA9IHJlcy5kYXRhLnN0b3Jlc0RhdGFcclxuICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3N0b3JlTGlzdCcpPy5zZXRWYWx1ZSh0aGlzLnN0b3JlTGlzdClcclxuICAgICAgICAgICAgdGhpcy5nZXRBbGxUYXNrcyhmYWxzZSlcclxuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ2NoZWNrTGlzdFR5cGUnKT8uc2V0VmFsdWUoJ2N1c3RvbScpXHJcbiAgICAgIHRoaXMudHJheFNlcnZpY2UuZ2V0U3RvcmVzbGlzdCh7IGNsaWVudElkOiB0aGlzLmhlYWRlckZpbHRlcnMuY2xpZW50LCBjbHVzdGVyczogdGhpcy5ncm91cHMsIGNpdHk6IFtdIH0pLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlTGlzdCA9IHJlcy5kYXRhLnN0b3Jlc0RhdGE7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmVzID0gcmVzLmRhdGEuc3RvcmVzRGF0YVxyXG4gICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnc3RvcmVMaXN0Jyk/LnNldFZhbHVlKHRoaXMuc3RvcmVMaXN0KVxyXG4gICAgICAgICAgICB0aGlzLmdldEFsbENoZWNrTGlzdHModHJ1ZSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIGdldEFsbFRhc2tzKHR5cGU6IGFueSkge1xyXG4gICAgbGV0IHN0b3JlcyA9IHRoaXMuc3RvcmVzPy5tYXAoKGRhdGE6IGFueSkgPT4gZGF0YS5zdG9yZUlkKVxyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgZnJvbURhdGU6IHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdmcm9tRGF0ZScpPy52YWx1ZSxcclxuICAgICAgdG9EYXRlOiB0aGlzLmdhbGxlcnlGb3JtLmdldCgndG9EYXRlJyk/LnZhbHVlLFxyXG4gICAgICBzdG9yZUlkOiBzdG9yZXMsXHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmhlYWRlckZpbHRlcnM/LmNsaWVudCxcclxuICAgICAgc29ydENvbHVtbk5hbWU6IFwiY2hlY2tMaXN0TmFtZVwiLFxyXG4gICAgICBzb3J0Qnk6IDFcclxuICAgIH1cclxuICAgIHRoaXMudHJheFNlcnZpY2UuZ2V0VGFza0xpc3QocGF5bG9hZCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuY2hlY2tsaXN0cyA9IHJlcy5kYXRhLmNoZWNrbGlzdERhdGFcclxuXHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMucXVlcnlQYXJhbXMuc291cmNlQ2hlY2tMaXN0X2lkICYmIHRoaXMucXVlcnlQYXJhbXMuY2hlY2tsaXN0VHlwZSA9PSAndGFzaycpIHtcclxuICAgICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnc291cmNlQ2hlY2tMaXN0X2lkJyk/LnNldFZhbHVlKHRoaXMucXVlcnlQYXJhbXMuc291cmNlQ2hlY2tMaXN0X2lkKVxyXG4gICAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCd0eXBlJyk/LnNldFZhbHVlKCd0YXNrJylcclxuICAgICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnY2hlY2tMaXN0VHlwZScpPy5zZXRWYWx1ZSh0aGlzLnF1ZXJ5UGFyYW1zLmNoZWNrbGlzdFR5cGUpXHJcbiAgICAgICAgICAgICAgbGV0IGdldGNoZWNrbGlzdCA9IHRoaXMuY2hlY2tsaXN0cy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGUuc291cmNlQ2hlY2tMaXN0X2lkID09PSB0aGlzLnF1ZXJ5UGFyYW1zLnNvdXJjZUNoZWNrTGlzdF9pZClcclxuXHJcbiAgICAgICAgICAgICAgaWYgKGdldGNoZWNrbGlzdCAmJiBnZXRjaGVja2xpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ2NoZWNrbGlzdE5hbWUnKT8uc2V0VmFsdWUoZ2V0Y2hlY2tsaXN0WzBdPy5jaGVja0xpc3ROYW1lKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ2NoZWNrTGlzdERlc2NyaXB0aW9uJyk/LnNldFZhbHVlKGdldGNoZWNrbGlzdFswXT8uY2hlY2tMaXN0RGVzY3JpcHRpb24pXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrbGlzdE5hbWUgPSBnZXRjaGVja2xpc3RbMF0/LmNoZWNrTGlzdE5hbWVcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgLy8gdGhpcy5yZW1vdmVRdWVyeVBhcmFtcygpXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ2NoZWNrbGlzdE5hbWUnKT8uc2V0VmFsdWUodGhpcy5jaGVja2xpc3RzWzBdPy5jaGVja0xpc3ROYW1lKVxyXG4gICAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdzb3VyY2VDaGVja0xpc3RfaWQnKT8uc2V0VmFsdWUodGhpcy5jaGVja2xpc3RzWzBdPy5zb3VyY2VDaGVja0xpc3RfaWQpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYodHlwZSl7XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXR0YXNrUUEoZmFsc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LCAwKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmNoZWNrbGlzdHMgPSBbXVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldFRhc2tRQSh0eXBlOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRTZWN0aW9uID0gW11cclxuICAgIHRoaXMudGVtcHNlbGVjdGVkU2VjdGlvbiA9IFtdXHJcblxyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMubm9EYXRhID0gZmFsc2VcclxuICAgIHRoaXMudmlld2xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy52aWV3bm9EYXRhID0gZmFsc2U7XHJcbiAgICBsZXQgc3RvcmVzID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zdG9yZUxpc3QubWFwKChkYXRhOiBhbnkpID0+IGRhdGEuc3RvcmVJZClcclxuICAgIGxldCB1c2VyID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS51c2VyTGlzdC5tYXAoKGRhdGE6IGFueSkgPT4gZGF0YS51c2VyRW1haWwpXHJcbiAgICBsZXQgb2JqID0ge1xyXG4gICAgICBcImZyb21EYXRlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZnJvbURhdGUsXHJcbiAgICAgIFwidG9EYXRlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudG9EYXRlLFxyXG4gICAgICBcIkNoZWNrbGlzdFR5cGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50eXBlLCAvLyBbXCJjdXN0b21cIiwgXCJBSVwiXVxyXG4gICAgICBcImNoZWNrbGlzdE5hbWVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5jaGVja2xpc3ROYW1lLFxyXG4gICAgICBcImNoZWNrbGlzdElkXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkLFxyXG4gICAgICBcInN0b3JlSWRcIjogc3RvcmVzLFxyXG4gICAgICBcInVzZXJFbWFpbFwiOnVzZXIsXHJcbiAgICAgIFwiZmlsdGVydHlwZVwiOnRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZmlsdGVydHlwZSxcclxuICAgICAgXCJhbnN3ZXJUeXBlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuYW5zd2VyVHlwZSwgLy9bXCJkZXNjcmlwdGl2ZVwiLFwieWVzL25vXCIsXCJtdWx0aXBsZWNob2ljZXNpbmdsZVwiLFwibXVsdGlwbGVjaG9pY2VtdWx0aXBsZVwiLFwiaW1hZ2VcIixcInZpZGVvXCIsXCJkZXNjcmlwdGl2ZUltYWdlXCIsXCJtdWx0aXBsZUltYWdlXCJdXHJcbiAgICAgIFwidmlld0ZsYWdcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS52aWV3RmxhZywgLy9bdHJ1ZSwgZmFsc2VdXHJcbiAgICAgIFwidmlld1JlZG9cIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS52aWV3UmVkbywgLy9bdHJ1ZSwgZmFsc2VdXHJcbiAgICAgIFwiZmlsdGVyXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZmlsdGVyLFxyXG4gICAgICBcInF1ZXN0aW9uc1wiOiB0aGlzLnNlbGVjdGVkU2VjdGlvbi5sZW5ndGggPiAwICYmIHRoaXMuc2VsZWN0ZWRTZWN0aW9uWzBdLnF1ZXN0aW9ucy5sZW5ndGggPiAwID8gdGhpcy5zZWxlY3RlZFNlY3Rpb25bMF0ucXVlc3Rpb25zWzBdIDogXCJcIlxyXG4gICAgfVxyXG4gICAgdGhpcy50cmF4U2VydmljZS5nZXRRdWVzdGlvbnMob2JqKT8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpPy5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuY2hlY2tsaXN0RGF0YSA9IHJlcz8uZGF0YS5jaGVja2xpc3RRdWVzdGlvbnM7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgICBpZiAodGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5maWx0ZXJ0eXBlID09PSAnQ2x1c3RlcnMnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdzdG9yZUxpc3QnKT8uc2V0VmFsdWUocmVzPy5kYXRhPy5zdG9yZXNEZXRhaWxzKVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3VzZXJMaXN0Jyk/LnNldFZhbHVlKHJlcz8uZGF0YT8uc3RvcmVzRGV0YWlscylcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMudmlld1Rhc2tMaXN0KFwiYWxsXCIsIFwiYWxsXCIpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuY2hlY2tsaXN0RGF0YSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy52aWV3Q2hlY2tsaXN0c0RhdGEgPSBbXTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy52aWV3bG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy52aWV3bm9EYXRhID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICB2aWV3VGFza3Moc2VjdGlvbk5hbWU6IGFueSwgcXVlc3Rpb25OYW1lOiBhbnkpIHtcclxuICAgIC8vIHRoaXMuc2VsZWN0ZWRTZWN0aW9uID0gW10gICAgXHJcbiAgICB0aGlzLnNlbGVjdGVkRXhwb3J0ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlY3Rpb25OYW1lID0gc2VjdGlvbk5hbWU7XHJcbiAgICB0aGlzLnF1ZXN0aW9uTmFtZSA9IHF1ZXN0aW9uTmFtZVxyXG5cclxuICAgIHRoaXMubGltaXQgPSAxO1xyXG4gICAgdGhpcy5wYWdpbmF0aW9uU2l6ZXMgPSBbMV07XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFNlY3Rpb24ubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmxpbWl0ID0gMTAsXHJcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uU2l6ZXMgPSBbMTBdO1xyXG4gICAgfVxyXG4gICAgdGhpcy52aWV3bG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnZpZXdub0RhdGEgPSBmYWxzZVxyXG4gICAgbGV0IHN0b3JlcyA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc3RvcmVMaXN0Lm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnN0b3JlSWQpXHJcbiAgICB0aGlzLnZpZXdDaGVja2xpc3Rzb3B0aW9ucyA9IHtcclxuICAgICAgXCJmcm9tRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZyb21EYXRlLFxyXG4gICAgICBcInRvRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnRvRGF0ZSxcclxuICAgICAgXCJDaGVja2xpc3RUeXBlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuY2hlY2tMaXN0VHlwZSwgLy8gW1wiY2hlY2tsaXN0XCIsIFwidGFza1wiXVxyXG4gICAgICBcImNoZWNrbGlzdE5hbWVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5jaGVja2xpc3ROYW1lLFxyXG4gICAgICBcInN0b3JlSWRcIjogc3RvcmVzLFxyXG4gICAgICBcImFuc3dlclR5cGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5hbnN3ZXJUeXBlLCAvL1tcImRlc2NyaXB0aXZlXCIsXCJ5ZXMvbm9cIixcIm11bHRpcGxlY2hvaWNlc2luZ2xlXCIsXCJtdWx0aXBsZWNob2ljZW11bHRpcGxlXCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImRlc2NyaXB0aXZlSW1hZ2VcIixcIm11bHRpcGxlSW1hZ2VcIl0gICAgICBcclxuICAgICAgXCJvZmZzZXRcIjogKHRoaXMub2Zmc2V0IC0gMSksXHJcbiAgICAgIFwibGltaXRcIjogdGhpcy5saW1pdCxcclxuICAgICAgXCJjaGVja2xpc3RJZFwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCxcclxuICAgICAgXCJzb3VyY2VDaGVja0xpc3RfaWRcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQsXHJcbiAgICAgIFwidmlld0ZsYWdcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS52aWV3RmxhZyxcclxuICAgICAgXCJ2aWV3UmVkb1wiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnZpZXdSZWRvLCAvL1t0cnVlLCBmYWxzZV1cclxuICAgICAgXCJxdWVzdGlvbnNcIjogdGhpcy5zZWxlY3RlZFNlY3Rpb24sXHJcbiAgICAgIFwiZmlsdGVyXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZmlsdGVyXHJcbiAgICB9XHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLnZpZXdDaGVja2xpc3RzKHRoaXMudmlld0NoZWNrbGlzdHNvcHRpb25zKT8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpPy5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMudmlld0NoZWNrbGlzdHNEYXRhID0gcmVzLmRhdGE7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsQ291bnQgPSB0aGlzLnZpZXdDaGVja2xpc3RzRGF0YS50b3RhbF9jb3VudFxyXG4gICAgICAgICAgdGhpcy52aWV3bG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy52aWV3bm9EYXRhID0gZmFsc2VcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy52aWV3Q2hlY2tsaXN0c0RhdGEgPSBbXVxyXG4gICAgICAgICAgdGhpcy52aWV3bG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy52aWV3bm9EYXRhID0gdHJ1ZVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuXHJcbiAgdGFza3JlZGlyZWN0KHF1ZXN0aW9uOiBhbnksIHN0b3JlUHJvZmlsZTogYW55LCBjaGVja2xpc3RJbmZvOiBhbnkpIHtcclxuICAgIGlmIChzdG9yZVByb2ZpbGU/LnN0b3JlX2lkICYmIHN0b3JlUHJvZmlsZT8uc3RvcmVfaWQgIT0gJycpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnLycsIHsgc2tpcExvY2F0aW9uQ2hhbmdlOiB0cnVlIH0pLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL21hbmFnZS90cmF4L2dhbGxlcnknXSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHtcclxuICAgICAgICAgICAgICBDaGVja2xpc3REYXRlOiBkYXlqcyhxdWVzdGlvbi50YXNrRGF0ZSA/IHF1ZXN0aW9uLnRhc2tEYXRlIDogY2hlY2tsaXN0SW5mby5kYXRlKS5mb3JtYXQoJ1lZWVktTU0tREQnKSxcclxuICAgICAgICAgICAgICBzdG9yZUlkOiBzdG9yZVByb2ZpbGU/LnN0b3JlX2lkLFxyXG4gICAgICAgICAgICAgIGNoZWNrbGlzdFR5cGU6IFwidGFza1wiLFxyXG4gICAgICAgICAgICAgIHNvdXJjZUNoZWNrTGlzdF9pZDogcXVlc3Rpb24udGFza0lkLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxyXG4gICAgICAgICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIClcclxuICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy8nLCB7IHNraXBMb2NhdGlvbkNoYW5nZTogdHJ1ZSB9KS50aGVuKCgpID0+IHtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9tYW5hZ2UvdHJheC9nYWxsZXJ5J10sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgQ2hlY2tsaXN0RGF0ZTogZGF5anMocXVlc3Rpb24udGFza0RhdGUgPyBxdWVzdGlvbi50YXNrRGF0ZSA6IGNoZWNrbGlzdEluZm8uZGF0ZSkuZm9ybWF0KCdZWVlZLU1NLUREJyksXHJcbiAgICAgICAgICAgICAgdXNlckVtYWlsOiBzdG9yZVByb2ZpbGU/LnVzZXJFbWFpbCxcclxuICAgICAgICAgICAgICBjaGVja2xpc3RUeXBlOiBcInRhc2tcIixcclxuICAgICAgICAgICAgICBzb3VyY2VDaGVja0xpc3RfaWQ6IHF1ZXN0aW9uLnRhc2tJZCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcclxuICAgICAgICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJyxcclxuICAgICAgICAgIH1cclxuICAgICAgICApXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgVmlld0luRGV0YWlscyhkYXRhOiBhbnksIGNoZWNrbGlzdEluZm86IGFueSwgc3RvcmVQcm9maWxlOiBhbnksIHNlY3Rpb246IGFueSkge1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKFRhc2tMb2dzQ29tcG9uZW50LCB7IGNlbnRlcmVkOiB0cnVlLCBzaXplOiAnbGcnLCB9KTtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLm9wZXJhdGlvbnR5cGUgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnR5cGU7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zb3VyY2VDaGVja0xpc3RfaWQgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZDtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmlucHV0RGF0YSA9IGRhdGE7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5jaGVja2xpc3RJbmZvID0gY2hlY2tsaXN0SW5mbztcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnN0b3JlUHJvZmlsZSA9IHN0b3JlUHJvZmlsZTtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnNlY3Rpb25JbmZvID0gc2VjdGlvbjtcclxuXHJcbiAgfVxyXG5cclxuICBhZGRUYXNrKHR5cGU6IGFueSwgZGF0YTogYW55LCBjaGVja2xpc3RJbmZvOiBhbnksIHN0b3JlUHJvZmlsZTogYW55LCBzZWN0aW9uOiBhbnkpIHtcclxuICBcclxuICAvLyBpZihkYXRhLmFuc3dlclR5cGUgPT09XCJtdWx0aXBsZWNob2ljZXNpbmdsZVwifHxkYXRhLmFuc3dlclR5cGUgPT09XCJtdWx0aXBsZWNob2ljZW11bHRpcGxlXCIpe1xyXG4gIC8vICAgZGF0YS5hbnN3ZXJzID0gW11cclxuICAvLyB9XHJcbiAgICBcclxuICAgIGRhdGEucXVlc3Rpb25SZWZlcmVuY2VJbWFnZSA9IFtkYXRhLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2VdXHJcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oQWRkVGFza0NvbXBvbmVudCwge1xyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ2xnJyxcclxuICAgICAgd2luZG93Q2xhc3M6ICdjdXN0b20tbW9kYWwtaGVpZ2h0JyxcclxuICAgICAgYmFja2Ryb3A6ICdzdGF0aWMnXHJcbiAgICB9KTtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnR5cGUgPSB0eXBlO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2Uub3BlcmF0aW9udHlwZSA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudHlwZTtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnNvdXJjZUNoZWNrTGlzdF9pZCA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuaW5wdXREYXRhID0gZGF0YTtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmNoZWNrbGlzdEluZm8gPSBjaGVja2xpc3RJbmZvO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2Uuc3RvcmVQcm9maWxlID0gc3RvcmVQcm9maWxlO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2Uuc2VjdGlvbkluZm8gPSBzZWN0aW9uO1xyXG5cclxuXHJcbiAgICBkYXRhPy5hbnN3ZXJzLmZvckVhY2goKGFuczogYW55KSA9PiB7XHJcbiAgICAgIGlmIChhbnM/LnJlZmVyZW5jZUltYWdlICYmIGFucz8ucmVmZXJlbmNlSW1hZ2UgIT0gJycgJiYgYW5zPy5yZWZlcmVuY2VJbWFnZSAhPSBudWxsKSB7XHJcbiAgICAgICAgYW5zLnJlZmVyZW5jZUltYWdlID0gW2Fucz8ucmVmZXJlbmNlSW1hZ2VdXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UudGFza0RldGFpbHMgPSB7XHJcbiAgICAgIHNlY3Rpb25zOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgXCJpZFwiOiBcIlwiLFxyXG4gICAgICAgICAgXCJuYW1lXCI6IFwiXCIsXHJcbiAgICAgICAgICBcInF1ZXN0aW9uc1wiOiBbZGF0YV1cclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuXHJcbiAgICB9O1xyXG5cclxuICAgIG1vZGFsUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCA9PSAnc3VibWl0Jykge1xyXG4gICAgICAgIGlmICh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnR5cGUgPT09ICdjaGVja2xpc3QnKSB7XHJcbiAgICAgICAgICB0aGlzLmdldENoZWNrbGlzdFFBKGZhbHNlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5nZXRUYXNrUUEodGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50eXBlKVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBkYXRhLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UgPSAnJ1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICBhcHByb3ZhbHN0YXR1cygpIHtcclxuICAgIGxldCBzdG9yZXMgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnN0b3JlTGlzdC5tYXAoKGRhdGE6IGFueSkgPT4gZGF0YS5zdG9yZUlkKVxyXG4gICAgbGV0IHVzZXJzID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS51c2VyTGlzdC5tYXAoKGRhdGE6IGFueSkgPT4gZGF0YS51c2VyRW1haWwpXHJcbiAgICBsZXQgaW5wdXQgPSB7XHJcbiAgICAgIFwiZnJvbURhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5mcm9tRGF0ZSxcclxuICAgICAgXCJ0b0RhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50b0RhdGUsXHJcbiAgICAgIFwic3RvcmVJZFwiOiBzdG9yZXMsXHJcbiAgICAgIFwidXNlckVtYWlsXCI6IHVzZXJzLFxyXG4gICAgICBcImNoZWNrbGlzdElkXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkLFxyXG4gICAgICBcIkNoZWNrbGlzdFR5cGVcIjogXCJjdXN0b21cIixcclxuICAgICAgXCJ0eXBlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudHlwZSxcclxuICAgICAgXCJmaWx0ZXJ0eXBlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZmlsdGVydHlwZSxcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnR5cGUgPT09ICdjaGVja2xpc3QnKSB7XHJcbiAgICAgIHRoaXMudHJheFNlcnZpY2UuYXBwcm92YWxzdGF0dXNjaGVja2xpc3QoaW5wdXQpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLmFwcHJvdmFsU3RhdHVzID0gZmFsc2VcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwcm92YWxTdGF0dXMgPSB0cnVlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50cmF4U2VydmljZS5hcHByb3ZhbHN0YXR1c3Rhc2soaW5wdXQpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLmFwcHJvdmFsU3RhdHVzID0gZmFsc2VcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwcm92YWxTdGF0dXMgPSB0cnVlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuXHJcbiAgfVxyXG4gIHRhc2tUYWIodGFzazogYW55KSB7XHJcblxyXG5cclxuICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdmaWx0ZXInKT8uc2V0VmFsdWUodGFzay5rZXkpXHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5ub0RhdGEgPSBmYWxzZVxyXG4gICAgdGhpcy52aWV3bG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnZpZXdub0RhdGEgPSBmYWxzZTtcclxuICAgIGxldCBvYmogPSB7XHJcbiAgICAgIFwiZnJvbURhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5mcm9tRGF0ZSxcclxuICAgICAgXCJ0b0RhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50b0RhdGUsXHJcbiAgICAgIFwiQ2hlY2tsaXN0VHlwZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmNoZWNrTGlzdFR5cGUsIC8vIFtcImN1c3RvbVwiLCBcIkFJXCJdXHJcbiAgICAgIFwiY2hlY2tsaXN0TmFtZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmNoZWNrbGlzdE5hbWUsXHJcbiAgICAgIFwiY2hlY2tsaXN0SWRcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQsXHJcbiAgICAgIFwic3RvcmVJZFwiOiB0YXNrLnN0b3JlcyxcclxuICAgICAgXCJhbnN3ZXJUeXBlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuYW5zd2VyVHlwZSwgLy9bXCJkZXNjcmlwdGl2ZVwiLFwieWVzL25vXCIsXCJtdWx0aXBsZWNob2ljZXNpbmdsZVwiLFwibXVsdGlwbGVjaG9pY2VtdWx0aXBsZVwiLFwiaW1hZ2VcIixcInZpZGVvXCIsXCJkZXNjcmlwdGl2ZUltYWdlXCIsXCJtdWx0aXBsZUltYWdlXCJdXHJcbiAgICAgIFwidmlld0ZsYWdcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS52aWV3RmxhZywgLy9bdHJ1ZSwgZmFsc2VdXHJcbiAgICAgIFwidmlld1JlZG9cIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS52aWV3UmVkbywgLy9bdHJ1ZSwgZmFsc2VdXHJcbiAgICAgIFwiZmlsdGVyXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZmlsdGVyLFxyXG4gICAgICBcInF1ZXN0aW9uc1wiOiB0aGlzLnNlbGVjdGVkU2VjdGlvbi5sZW5ndGggPiAwICYmIHRoaXMuc2VsZWN0ZWRTZWN0aW9uWzBdLnF1ZXN0aW9ucy5sZW5ndGggPiAwID8gdGhpcy5zZWxlY3RlZFNlY3Rpb25bMF0ucXVlc3Rpb25zWzBdIDogXCJcIlxyXG4gICAgfVxyXG4gICAgdGhpcy50cmF4U2VydmljZS5nZXRjaGVja2xpc3Qob2JqKT8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpPy5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIC8vIHRoaXMuY2hlY2tsaXN0RGF0YSA9IHJlcz8uZGF0YS5jaGVja2xpc3RRdWVzdGlvbnM7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgICBpZiAodGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5maWx0ZXJ0eXBlID09PSAnQ2x1c3RlcnMnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdzdG9yZUxpc3QnKT8uc2V0VmFsdWUocmVzPy5kYXRhPy5zdG9yZXNEZXRhaWxzKVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3VzZXJMaXN0Jyk/LnNldFZhbHVlKHJlcz8uZGF0YT8uc3RvcmVzRGV0YWlscylcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMudmlld0NoZWNrbGlzdHMoXCJhbGxcIiwgXCJhbGxcIilcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5jaGVja2xpc3REYXRhID0gW107XHJcbiAgICAgICAgICB0aGlzLnZpZXdDaGVja2xpc3RzRGF0YSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnZpZXdsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnZpZXdub0RhdGEgPSB0cnVlO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gIH1cclxuICBjYXRlZ29yeUNoYW5nZSgpIHtcclxuICAgIHRoaXMuY3VzdG9tZXJ1bmF0dGVuZGVkbGlzdChmYWxzZSlcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3pvb21Qb3B1cCcpIHpvb21Qb3B1cDogRWxlbWVudFJlZjtcclxuICAgb3Blbk1vZGVsKGRhdGE6YW55KXtcclxuICAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy56b29tUG9wdXAseyBjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ3hsJyB9KTtcclxuICAgICB0aGlzLnZpZXdJbWFnZSA9IGRhdGE7fVxyXG4gIH0iLCI8ZGl2IGNsYXNzPVwiZ2FsbGVyeS1jYXJkIHBvXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyIG1iLTRcIj5HYWxsZXJ5PC9kaXY+XHJcblxyXG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJnYWxsZXJ5Rm9ybVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJ0b3A6IDIwJTtcIiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTEgcG9zaXRpb24tYWJzb2x1dGUgbXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMy4zMzMzIDEuNjY2NjNWNC45OTk5Nk02LjY2NjY3IDEuNjY2NjNWNC45OTk5Nk0yLjUgOC4zMzMyOUgxNy41TTQuMTY2NjcgMy4zMzMyOUgxNS44MzMzQzE2Ljc1MzggMy4zMzMyOSAxNy41IDQuMDc5NDggMTcuNSA0Ljk5OTk2VjE2LjY2NjZDMTcuNSAxNy41ODcxIDE2Ljc1MzggMTguMzMzMyAxNS44MzMzIDE4LjMzMzNINC4xNjY2N0MzLjI0NjE5IDE4LjMzMzMgMi41IDE3LjU4NzEgMi41IDE2LjY2NjZWNC45OTk5NkMyLjUgNC4wNzk0OCAzLjI0NjE5IDMuMzMzMjkgNC4xNjY2NyAzLjMzMzI5WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZngtZGF0ZS1yYW5nZSBmb3JtLWNvbnRyb2wgcHMtMTQgei0yXCIgc3R5bGU9XCJtaW4td2lkdGg6IDI2MHB4ICFpbXBvcnRhbnQ7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiIG1hdElucHV0IG5neERhdGVyYW5nZXBpY2tlck1kICBbZHJvcHNdPVwiJ2Rvd24nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3BlbnNdPVwiJ3JpZ2h0J1wiIFthbHdheXNTaG93Q2FsZW5kYXJzXT1cImZhbHNlXCIgW2tlZXBDYWxlbmRhck9wZW5pbmdXaXRoUmFuZ2VdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dDYW5jZWxdPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRGF0ZVJhbmdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCIgIChkYXRlc1VwZGF0ZWQpPVwiZGF0ZWNoYW5nZSgkZXZlbnQpXCIgKGNsaWNrKT1cInJlc2V0VmFsaWRhdGlvbigpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0YXJ0RGF0ZUNoYW5nZWQpPVwib25TdGFydERhdGVDaGFuZ2UoJGV2ZW50KVwiIFtpc0N1c3RvbURhdGVdPVwiaXNDdXN0b21EYXRlXCIgW2F1dG9BcHBseV09XCJ0cnVlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xvY2FsZV09XCJ7IGZvcm1hdDogJ0RELU1NLVlZWVknLCBmaXJzdERheTogMSwgbW9udGhOYW1lczogWydKYW51YXJ5JywgJ0ZlYnJ1YXJ5JywgJ01hcmNoJywgJ0FwcmlsJywgJ01heScsICdKdW5lJywgJ0p1bHknLCAnQXVndXN0JywgJ1NlcHRlbWJlcicsICdPY3RvYmVyJywgJ05vdmVtYmVyJywgJ0RlY2VtYmVyJ10gfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJkYXRlcmFuZ2VcIiBbcmVhZG9ubHldPVwidHJ1ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMiBtYi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItcmVhY3RpdmUtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cInR5cGVcIiBbaWRGaWVsZF09XCIndmFsdWUnXCIgW25hbWVGaWVsZF09XCInbGFiZWwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhXT1cInR5cGVcIiAoaXRlbUNoYW5nZSk9XCJ0eXBlQ2hhbmdlKCRldmVudClcIiA+PC9saWItcmVhY3RpdmUtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBtYi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItc2luZ2xlLXNlbGVjdCBbaXRlbXNdPVwiY2hlY2tsaXN0c1wiICBbbXVsdGldPVwiZmFsc2VcIiBbc2VhcmNoRmllbGRdPVwiJ2NoZWNrTGlzdE5hbWUnXCIgW2lkRmllbGRdPVwiJ2NoZWNrTGlzdE5hbWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZCk9XCJjaGVja2xpc3ROYW1lY2hhbmdlKCRldmVudCxmYWxzZSlcIiBbc2VsZWN0ZWRWYWx1ZXNdPVwiW3tjaGVja0xpc3ROYW1lOmdhbGxlcnlGb3JtLmdldCgnY2hlY2tsaXN0TmFtZScpPy52YWx1ZX1dXCI+PC9saWItc2luZ2xlLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIG1iLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1yZWFjdGl2ZS1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiYW5zd2VyVHlwZVwiIFtpZEZpZWxkXT1cIid2YWx1ZSdcIiBbbmFtZUZpZWxkXT1cIidsYWJlbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFdPVwiYW5zd2VyVHlwZVwiPjwvbGliLXJlYWN0aXZlLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgbWItNFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1yZWFjdGl2ZS1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiZmlsdGVydHlwZVwiIFtpZEZpZWxkXT1cIid2YWx1ZSdcIiBbbmFtZUZpZWxkXT1cIidsYWJlbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJmaWx0ZXJ0eXBlXCIgKGl0ZW1DaGFuZ2UpPVwiZmlsdGVyQ2hhbmdlKCRldmVudClcIiA+PC9saWItcmVhY3RpdmUtc2VsZWN0PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgbWItNFwiICpuZ0lmPVwiZ2FsbGVyeUZvcm0uZ2V0KCdmaWx0ZXJ0eXBlJyk/LnZhbHVlID09PSdDbHVzdGVycydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGxhY2Vob2xkZXItb3ZlcmxheVwiICpuZ0lmPVwiIShnYWxsZXJ5Rm9ybS5nZXQoJ0NsdXN0ZXJMaXN0Jyk/LnZhbHVlPy5sZW5ndGgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCBjbHVzdGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItZ3JvdXAtc2VsZWN0IFtpdGVtc109XCJDbHVzdGVyTGlzdFwiIFtkaXNhYmxlZF09XCJmYWxzZVwiIFttdWx0aV09XCJ0cnVlXCIgW3NlYXJjaEZpZWxkXT1cIidncm91cE5hbWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRGaWVsZF09XCInZ3JvdXBOYW1lJ1wiIChzZWxlY3RlZCk9XCJvbmdyb3VwU2VsZWN0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZFZhbHVlc109XCJnYWxsZXJ5Rm9ybS5nZXQoJ0NsdXN0ZXJMaXN0Jyk/LnZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpYi1ncm91cC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIG1iLTRcIiAqbmdJZj1cImdhbGxlcnlGb3JtLmdldCgnZmlsdGVydHlwZScpPy52YWx1ZSA9PT0nVGVhbXMnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Qtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsYWNlaG9sZGVyLW92ZXJsYXlcIiAqbmdJZj1cIiEoZ2FsbGVyeUZvcm0uZ2V0KCdUZWFtc0xpc3QnKT8udmFsdWU/Lmxlbmd0aClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IFRlYW1zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItZ3JvdXAtc2VsZWN0IFtpdGVtc109XCJUZWFtc0xpc3RcIiBbZGlzYWJsZWRdPVwiZmFsc2VcIiBbbXVsdGldPVwidHJ1ZVwiIFtzZWFyY2hGaWVsZF09XCIndGVhbU5hbWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRGaWVsZF09XCIndGVhbU5hbWUnXCIgKHNlbGVjdGVkKT1cIm9uVGVhbXNTZWxlY3QoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkVmFsdWVzXT1cImdhbGxlcnlGb3JtLmdldCgnVGVhbXNMaXN0Jyk/LnZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpYi1ncm91cC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIG1iLTRcIiAqbmdJZj1cImdhbGxlcnlGb3JtLmdldCgnZmlsdGVydHlwZScpPy52YWx1ZSA9PT0nQ2x1c3RlcnMnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Qtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGxhY2Vob2xkZXItb3ZlcmxheVwiICpuZ0lmPVwiIShnYWxsZXJ5Rm9ybS5nZXQoJ3N0b3JlTGlzdCcpPy52YWx1ZT8ubGVuZ3RoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IFN0b3Jlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLXN0b3Jlcy1zZWxlY3QgW2l0ZW1zXT1cInN0b3JlTGlzdFwiIFtkaXNhYmxlZF09XCJmYWxzZVwiIFttdWx0aV09XCJ0cnVlXCIgW3NlYXJjaEZpZWxkXT1cIidzdG9yZU5hbWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZEZpZWxkXT1cIidzdG9yZUlkJ1wiIChzZWxlY3RlZCk9XCJvblN0b3JlU2VsZWN0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkVmFsdWVzXT1cImdhbGxlcnlGb3JtLmdldCgnc3RvcmVMaXN0Jyk/LnZhbHVlXCI+PC9saWItc3RvcmVzLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBtYi00XCIgKm5nSWY9XCJnYWxsZXJ5Rm9ybS5nZXQoJ2ZpbHRlcnR5cGUnKT8udmFsdWUgPT09J1RlYW1zJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsYWNlaG9sZGVyLW92ZXJsYXlcIiAqbmdJZj1cIiEoZ2FsbGVyeUZvcm0uZ2V0KCd1c2VyTGlzdCcpPy52YWx1ZT8ubGVuZ3RoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IHVzZXJzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItc3RvcmVzLXNlbGVjdCBbaXRlbXNdPVwidXNlckxpc3RcIiBbZGlzYWJsZWRdPVwiZmFsc2VcIiBbbXVsdGldPVwidHJ1ZVwiIFtzZWFyY2hGaWVsZF09XCIndXNlck5hbWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZEZpZWxkXT1cIid1c2VyTmFtZSdcIiAoc2VsZWN0ZWQpPVwib25Vc2VyU2VsZWN0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkVmFsdWVzXT1cImdhbGxlcnlGb3JtLmdldCgndXNlckxpc3QnKT8udmFsdWVcIj48L2xpYi1zdG9yZXMtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IHRleHQtZW5kXCI+ICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWUtNSB3LTEwMFwiICpuZ0lmPVwic2VsZWN0ID09ICdleWV0ZXN0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdFwiIFsobmdNb2RlbCldPVwiY2F0ZWdvcnlcIiBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWxsXCI+QWxsPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWR1bHRzXCI+QWR1bHRzPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwia2lkc1wiPktpZHM8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZS01IHctMTAwXCIgKm5nSWY9XCJzZWxlY3QgPT0gJ2NsZWFuaW5nJ3x8c2VsZWN0ID09PSdzY3J1bSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1zZWxlY3RcIiBbKG5nTW9kZWwpXT1cImNhdGVnb3J5XCIgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFsbFwiPkFsbDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInJlamVjdGVkXCI+QnJlYWNoZWQ8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhcHByb3ZlZFwiPk5vdC1icmVhY2hlZDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lLTUgdy0xMDAgdGV4dC1zdGFydFwiICpuZ0lmPVwic2VsZWN0ID09ICdxdWV1ZWFsZXJ0J1wiPiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGxhY2Vob2xkZXItb3ZlcmxheVwiICpuZ0lmPVwiIShnYWxsZXJ5Rm9ybS5nZXQoJ3pvbmVMaXN0Jyk/LnZhbHVlPy5sZW5ndGgpXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgWm9uZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItc3RvcmVzLXNlbGVjdCBbaXRlbXNdPVwiem9uZUxpc3RcIiBbZGlzYWJsZWRdPVwiZmFsc2VcIiBbbXVsdGldPVwidHJ1ZVwiIFtzZWFyY2hGaWVsZF09XCIndmFsdWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRGaWVsZF09XCIna2V5J1wiIChzZWxlY3RlZCk9XCJvbnpvbmVTZWxlY3QoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkVmFsdWVzXT1cImdhbGxlcnlGb3JtLmdldCgnem9uZUxpc3QnKT8udmFsdWVcIj48L2xpYi1zdG9yZXMtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS00IG10LTNcIiAqbmdJZj1cInNob3dmbGFnXCI+ICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwidmlld1JlZG9cIiAgY2hhbmdlIHR5cGU9XCJjaGVja2JveFwiIChjbGljayk9XCJyZWRvQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXIgbXQtMSBtZS0yXCIgaWQ9XCJ2aWV3UmVkb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY2hlY2tib3gtbGFiZWxcIiBmb3I9XCJ2aWV3UmVkb1wiPlZpZXcgUmUtZG/igJlzIG9ubHk8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTMgbXQtM1wiICpuZ0lmPVwic2hvd2ZsYWcmJmdhbGxlcnlGb3JtLnZhbHVlLnR5cGU9PSdjaGVja2xpc3QnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwidmlld0ZsYWdcIiAgY2hhbmdlIHR5cGU9XCJjaGVja2JveFwiIChjbGljayk9XCJmbGFnQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlciBtdC0xIG1lLTJcIiBpZD1cInZpZXdGbGFnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCAgY2xhc3M9XCJjaGVja2JveC1sYWJlbFwiIGZvcj1cInZpZXdGbGFnXCI+VmlldyBmbGFnZ2VkIG9ubHk8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIChjbGljayk9XCJvblN1Ym1pdCgpXCIgdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHB4LTQgXCI+PHNwYW4+QXBwbHk8L3NwYW4+PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIFxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZm9ybT5cclxuPC9kaXY+XHJcbjxkaXYgY2xhc3M9XCJjYXJkIG15LTJcIj5cclxuPGRpdiBjbGFzcz1cInJvdyBtYWluLWNvbnRhaW5lciBteS01IFwiPlxyXG4gICAgXHJcbiAgICA8ZGl2IFtuZ0NsYXNzXT1cInNob3dzaWRlbmF2ID8gJ2NvbC1tZC00IGxlZnQtc2lkZWJhcic6J2Qtbm9uZSdcIiBjbGFzcz1cImgtNjUwcHhcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgaC02NTBweCBzY3JvbGwteVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtNVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrbGlzdC1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2xpc3QtdGl0bGVcIj57e2NoZWNrbGlzdE5hbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2xpc3QtdGV4dFwiPnt7Y2hlY2tMaXN0RGVzY3JpcHRpb259fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibG9hZGluZ1wiIGNsYXNzPVwicm93IGxvYWRlciAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibm9EYXRhXCIgY2xhc3M9XCJyb3cgbXQtMjBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG10LTIwIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJ3LTUwIGgtMzAwcHhcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZSBtdC0wXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS1zdWJcIj5UaGVyZSBpcyBubyByZXN1bHQgZm9yIHRoaXMgY2hlY2tsaXN0PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8c2VjdGlvbiAqbmdJZj1cIiFub0RhdGEgJiYgIWxvYWRpbmdcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdCA9PT0gJ2N1c3RvbSd8fHNlbGVjdCA9PT0gJ3Rhc2snXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWVuZCBtdC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHctMjUgbWUtMyBidG4tcmVzaXplXCIgKGNsaWNrKT1cInZpZXdDaGVja2xpc3RzKClcIj4gUmVzZXQgPC9idXR0b24+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSB3LTI1IG1lLTMgYnRuLXJlc2l6ZVwiICpuZ0lmPVwic2VsZWN0ZWRTZWN0aW9uLmxlbmd0aD4wfHx0ZW1wc2VsZWN0ZWRTZWN0aW9uLmxlbmd0aD4wXCIgKGNsaWNrKT1cIm9uY2hlY2tsaXN0cmVzZXQoKVwiPiBSZXNldCA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJzZWxlY3RlZFNlY3Rpb24ubGVuZ3RoPjB8fHRlbXBzZWxlY3RlZFNlY3Rpb24ubGVuZ3RoPjBcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB3LTI1ICBidG4tcmVzaXplXCIgKGNsaWNrKT1cInNlbGVjdHNpbmdsZXF1ZXN0aW9uKClcIj5BcHBseTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNlwiICBbbmdDbGFzc109XCJzZWxlY3RlZFNlY3Rpb24ubGVuZ3RoPT0wID8gJ3ZpZXctYWxsJzondmlldy1xdWVzdGlvbnMnXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCIgKGNsaWNrKT1cIm9uY2hlY2tsaXN0cmVzZXQoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlldyBBbGwgQW5zd2Vyc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTJcIiAqbmdGb3I9XCJsZXQgc2VjdGlvbiBvZiBjaGVja2xpc3REYXRhOyBsZXQgaT1pbmRleDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTRcIiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY2NvcmRpYW4oaSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtNCBmdy1ib2xkIHNlY3Rpb25cIiAqbmdJZj1cImdhbGxlcnlGb3JtLnZhbHVlLnR5cGU9PSdjaGVja2xpc3QnXCIgPnt7c2VjdGlvbi5zZWN0aW9uTmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhyIGNsYXNzPVwibXgtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiBbbmdDbGFzc109XCJ7J3JvdGF0ZScgOiBzaG93ICE9PSBpfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNVwiIGhlaWdodD1cIjI1XCIgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNSA3LjVMMTAgMTIuNUwxNSA3LjVcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvdz09PWlcIiBjbGFzcz1cInF1ZXN0aW9uLWxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNka0Ryb3BMaXN0IFtjZGtEcm9wTGlzdERhdGFdPVwic2VjdGlvbi5xdWVzdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcXVlc3Rpb24gb2Ygc2VjdGlvbi5xdWVzdGlvbnM7bGV0IGo9aW5kZXg7XCIgY2xhc3M9XCJkLWZsZXggbXktMiBxLWJ0blwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZGtEcmFnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0ICBpZD1cImxhYmVsXCIgWyhuZ01vZGVsKV09XCJxdWVzdGlvbi5jaGVja2VkXCIgKGNsaWNrKT1cInNlbGVjdGVkUXVlc3Rpb24oJGV2ZW50LHNlY3Rpb24scXVlc3Rpb24pXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyIG10LTIgbWUtNFwiICB0eXBlPVwiY2hlY2tib3hcIiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlZGl0YWJsZWNvbnRlbnRcIiBbbmdDbGFzc109XCJxdWVzdGlvbj8uY2hlY2tlZCA/ICd2aWV3LWFsbCc6JydcIiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3F1ZXN0aW9uLnFub319IC4ge3txdWVzdGlvbi5xbmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwhLS0gPC9kaXY+ICAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb21iaW5lZENoZWNrbGlzdC5pbmNsdWRlcyhzZWxlY3QpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZW5kIG10LTEwXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHctMjUgbWUtMyBidG4tcmVzaXplXCIgKGNsaWNrKT1cIm9ucmVzZXQoKVwiPiBSZXNldCA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy0yNSAgYnRuLXJlc2l6ZVwiIChjbGljayk9XCJvbnZpZXcoKVwiPkFwcGx5PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duc2VsZWN0IGgtOTAwcHggc2Nyb2xsLXlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtbGVmdCBcIiBbbmdDbGFzc109XCJzZWxlY3RBbGwgPyAnYmFja2dyb3VuZEJvcmRlcic6J3dpdGhvdXRiYWNrZ3JvdW5kJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXIgbWUtNFwiIHR5cGU9XCJjaGVja2JveFwiICBbKG5nTW9kZWwpXT1cInNlbGVjdEFsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0QWxsU3RvcmUoJGV2ZW50KVwiPiA8c3BhbiBbbmdDbGFzc109XCJzZWxlY3RBbGwgPyAndXNhZ2UtZGV0ZWN0aW9uJzondXNhZ2UtdGV4dCdcIj5TZWxlY3QgQWxsPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBkcm9wZG93bmJnIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNFwiICpuZ0Zvcj1cImxldCBsaXN0IG9mIG1vYmlsZXVzYWdlRGF0YUxpc3Q7bGV0IGk9aW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKGNoYW5nZSk9XCJ1cGRhdGVDaGVjaygkZXZlbnQsbGlzdClcIiBbbmdDbGFzc109XCJsaXN0LmNoZWNrZWQgPyAnYmFja2dyb3VuZEJvcmRlcic6J3dpdGhvdXRiYWNrZ3JvdW5kJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cImxhYmVse3tpfX1cIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXIgbWUtNFwiICB0eXBlPVwiY2hlY2tib3hcIiBbKG5nTW9kZWwpXT1cImxpc3QuY2hlY2tlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJsYWJlbHt7aX19XCIgW25nQ2xhc3NdPVwibGlzdC5jaGVja2VkID8gJ3VzYWdlLWRldGVjdGlvbic6J3VzYWdlLXRleHQnXCIgPnt7bGlzdD8uc3RvcmVOYW1lfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeSBkZXRlY3Rpb25yaWdodFwiICpuZ0lmPVwibGlzdC5kZXRlY3Rpb25cIj57e2xpc3QuZGV0ZWN0aW9ufX0gRGV0ZWN0aW9uczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd3NpZGVuYXZcIiAoY2xpY2spPVwic2lkZW5hdigpXCIgY2xhc3M9XCJiYWNrQnV0dG9ucmlnaHQgdGV4dC1jZW50ZXIgcHQtMSBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyOFwiIGhlaWdodD1cIjI4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMSAxN0w2IDEyTDExIDdNMTggMTdMMTMgMTJMMTggN1wiIHN0cm9rZT1cIiMxMDE4MjhcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBbbmdDbGFzc109XCJzaG93c2lkZW5hdiA/ICdjb2wtbWQtOCBib3JkZXIgYm9yZGVyLWJvdHRvbS0wIGJvcmRlci10b3AtMCBib3JkZXItbGVmdCBib3JkZXItNSByaWdodC1zaWRlYmFyJzonY29sLW1kLTEyJ1wiID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCAgcHgtMCBteS0wXCIgKm5nSWY9XCIoc2VsZWN0ID09PSAnY3VzdG9tJyB8fCBzZWxlY3QgPT09ICd0YXNrJ3x8c2VsZWN0ID09ICdjbGVhbmluZyd8fHNlbGVjdCA9PT0nc2NydW0nfHxzZWxlY3QgPT09J3N0b3Jlb3BlbmFuZGNsb3NlJykgJiYgIXZpZXdsb2FkaW5nICYmICF2aWV3bm9EYXRhXCIgPlxyXG4gICAgICAgICAgICAgICAgPGgzPjwvaDM+XHJcbiAgICAgICAgICAgICAgICA8IS0tIFN3aXRjaCB0b2dnbGUgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCIgKm5nSWY9XCIhZ2FsbGVyeUZvcm0udmFsdWUudmlld1JlZG9cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgY3Vyc29yLXBvaW50ZXIgbWUtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBidG4gYnRuLXByaW1hcnkgZm9ybS1jb250cm9sIG5vLXRleHQtdHJhbnNmb3JtXCIgKGNsaWNrKT1cImV4cG9ydERldCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZXhwb3J0TGFiZWwgfX0gPCEtLSBCaW5kIGxhYmVsIHRleHQgaGVyZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJleHBvcnRTaG93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkIHB5LTIgIHBvc2l0aW9uLWFic29sdXRlIHByb2R1Y3Rkcm9wIHRvcC0xMCB3LTE1MHB4IGVuZC0wIHotMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LXVuc3R5bGVkIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBweS00IGNoZWNrYm94LWxhYmVsIG14LTJcIiAgKm5nSWY9XCIoc2VsZWN0ID09PSAnY3VzdG9tJyB8fCBzZWxlY3QgPT09ICd0YXNrJ3x8c2VsZWN0ID09PSdzdG9yZW9wZW5hbmRjbG9zZScpXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzZXRFeHBvcnRBc1BQVCgnRXhwb3J0IGFzIFBERicsJ3BkZicpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHBvcnQgYXMgUERGXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCIgY3Vyc29yLXBvaW50ZXIgY2hlY2tib3gtbGFiZWwgcHktNCBteC0yXCIgKm5nSWY9XCIoc2VsZWN0ID09PSAnY3VzdG9tJyB8fCBzZWxlY3QgPT09ICd0YXNrJ3x8c2VsZWN0ID09ICdjbGVhbmluZyd8fHNlbGVjdCA9PT0nc2NydW0nfHxzZWxlY3QgPT09J3N0b3Jlb3BlbmFuZGNsb3NlJylcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNldEV4cG9ydEFzUFBUKCdFeHBvcnQgYXMgQ1NWJywnY3N2JylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4cG9ydCBhcyBDU1ZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cInNlbGVjdGVkU2VjdGlvbi5sZW5ndGg+MHx8c2VsZWN0ID09ICdjbGVhbmluZyd8fHNlbGVjdCA9PT0nc2NydW0nfHxzZWxlY3QgPT09J3N0b3Jlb3BlbmFuZGNsb3NlJ1wiIGNsYXNzPVwiIGN1cnNvci1wb2ludGVyIGNoZWNrYm94LWxhYmVsIHB5LTQgIG14LTJcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNldEV4cG9ydEFzUFBUKCdFeHBvcnQgYXMgUFBUJywncHB0JylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4cG9ydCBhcyBQUFRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cInNlbGVjdGVkU2VjdGlvbi5sZW5ndGg+MHx8c2VsZWN0ID09ICdjbGVhbmluZyd8fHNlbGVjdCA9PT0nc2NydW0nfHxzZWxlY3QgPT09J3N0b3Jlb3BlbmFuZGNsb3NlJ1wiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgY2hlY2tib3gtbGFiZWwgcHktNCBteC0yXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzZXRFeHBvcnRBc1BQVCgnRXhwb3J0IGFzIFpJUCcsJ3ppcGZpbGVzJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4cG9ydCBhcyBaSVBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidmlld2xvYWRpbmdcIiBjbGFzcz1cInJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ2aWV3bm9EYXRhXCIgY2xhc3M9XCJyb3cgbXQtMjBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtdC0yMCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IG10LTIwIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjIG10LTUgdy00MFwiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZVwiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXN1YlwiPlRoZXJlIGlzIG5vIHJlc3VsdCBmb3IgdGhpcyBjaGVja2xpc3Q8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiAqbmdJZj1cIiF2aWV3bG9hZGluZyAmJiAhdmlld25vRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0PT09J2N1c3RvbSd8fHNlbGVjdD09PSd0YXNrJyBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93c2luZ2xlXCIgY2xhc3M9XCJxYS1oZWFkaW5nIG0tMyBteC0xMVwiPnt7dGhpcy5zZWxlY3RlZFNlY3Rpb25bMF0/LnF1ZXN0aW9uc1swXX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd3NpbmdsZSYmc2hvd2ZpbHRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibmF2IG5hdi1zdHJldGNoIG5hdi1saW5lLXRhYnMxIG5hdi1saW5lLXRhYnMgYm9yZGVyLXRyYW5zcGFyZW50IGZsZXgtbm93cmFwIG14LTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW1cIiAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgYW5zd2VyRmlsdGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIChjbGljayk9XCJ0YXNrVGFiKGl0ZW0pXCIgW25nQ2xhc3NdPVwiZ2FsbGVyeUZvcm0udmFsdWUuZmlsdGVyID09PSBpdGVtLmtleSA/ICdhY3RpdmUnIDogJydcIiBjbGFzcz1cIm5hdi1saW5rIGN1cnNvci1wb2ludGVyIG5vLWJvcmRlciBtZS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0ua2V5fX08c3BhbiBjbGFzcz1cIm14LTIgXCIgW25nQ2xhc3NdPVwiZ2FsbGVyeUZvcm0udmFsdWUuZmlsdGVyID09PSBpdGVtLmtleSA/ICdiYWRnZS1udW0tcHJpbWFyeScgOidiYWRnZS1udW0tbXV0ZWQnXCI+e3tpdGVtLmNvdW50fX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNoZWNrbGlzdCBvZiB2aWV3Q2hlY2tsaXN0c0RhdGE/LmNoZWNrbGlzdEFuc3dlcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIiAqbmdJZj1cImNsaWVudERhdGEubG9nbyYmY2xpZW50RGF0YS5sb2dvIT09JycmJnNob3dtdWx0aVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwibXQtNSBtYi0zIHRleHQtY2VudGVyIGljb25zaXplXCIgc3JjPVwie3tjbGllbnREYXRhLmxvZ299fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB4LTEwIG10LTVcIiAqbmdJZj1cInNob3dtdWx0aVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInVuaS10aXRsZVwiPlN0b3JlIE5hbWU6PC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ1bmktc3VidGl0bGVcIj57e2NoZWNrbGlzdD8uc3RvcmVQcm9maWxlPy5zdG9yZU5hbWV9fSA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInVuaS10aXRsZVwiICpuZ0lmPVwiZ2FsbGVyeUZvcm0udmFsdWUudHlwZT09PSdjaGVja2xpc3QnXCI+Q2hlY2tsaXN0IE5hbWU6PC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInVuaS10aXRsZVwiICpuZ0lmPVwiZ2FsbGVyeUZvcm0udmFsdWUudHlwZT09PSd0YXNrJ1wiPlRhc2sgTmFtZTo8L2gzPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ1bmktc3VidGl0bGVcIj57e2NoZWNrbGlzdD8uY2hlY2tsaXN0SW5mbz8uY2hlY2tsaXN0TmFtZX19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJ1bmktdGl0bGVcIj5TdGF0ZSAmIENvdW50cnkgOjwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidW5pLXN1YnRpdGxlXCI+e3tjaGVja2xpc3Q/LnN0b3JlUHJvZmlsZT8uc3RhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NoZWNrbGlzdD8uc3RvcmVQcm9maWxlPy5Db3VudHJ5fX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInVuaS10aXRsZVwiPkR1cmF0aW9uIDo8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInVuaS1zdWJ0aXRsZVwiPiB7e2NoZWNrbGlzdD8uY2hlY2tsaXN0SW5mbz8uZHVyYXRpb259fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwidW5pLXRpdGxlXCI+Tm8uIG9mIFF1ZXN0aW9ucyA6PC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ1bmktc3VidGl0bGVcIj57e2NoZWNrbGlzdD8uY2hlY2tsaXN0SW5mbz8ubm9vZlF1ZXN0aW9uc319PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJ1bmktdGl0bGVcIj5EYXRlIDo8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInVuaS1zdWJ0aXRsZVwiPiB7e2NoZWNrbGlzdD8uY2hlY2tsaXN0SW5mbz8uZGF0ZX19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJ1bmktdGl0bGVcIj5TdWJtaXR0ZWQgQnkgOjwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidW5pLXN1YnRpdGxlXCI+e3tjaGVja2xpc3Q/LmNoZWNrbGlzdEluZm8/LnN1Ym1pdHRlZEJ5fX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInVuaS10aXRsZVwiPlRpbWUgOjwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidW5pLXN1YnRpdGxlXCI+IHt7Y2hlY2tsaXN0Py5jaGVja2xpc3RJbmZvPy50aW1lfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtMTBcIiA+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBxdWVzdGlvbmxpc3Qgb2YgY2hlY2tsaXN0LnF1ZXN0aW9uQW5zd2VyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicWEtYm9kcmVyIG15LTVcIiAqbmdGb3I9XCJsZXQgcXVlc3Rpb24gb2YgcXVlc3Rpb25saXN0LnF1ZXN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cInF1ZXN0aW9uLnJlZG98fHF1ZXN0aW9uLnJlZG89PT1mYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmlldy1kZXRhaWwgY29sLTEyIHRleHQtZW5kIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIlZpZXdJbkRldGFpbHMocXVlc3Rpb24sY2hlY2tsaXN0Py5jaGVja2xpc3RJbmZvLGNoZWNrbGlzdD8uc3RvcmVQcm9maWxlLHF1ZXN0aW9ubGlzdClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpZXcgaW4gZGV0YWlsIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUgMTAuODMzM1YxNS44MzMzQzE1IDE2LjI3NTQgMTQuODI0NCAxNi42OTkzIDE0LjUxMTggMTcuMDExOEMxNC4xOTkzIDE3LjMyNDQgMTMuNzc1NCAxNy41IDEzLjMzMzMgMTcuNUg0LjE2NjY3QzMuNzI0NjQgMTcuNSAzLjMwMDcyIDE3LjMyNDQgMi45ODgxNiAxNy4wMTE4QzIuNjc1NTkgMTYuNjk5MyAyLjUgMTYuMjc1NCAyLjUgMTUuODMzM1Y2LjY2NjY3QzIuNSA2LjIyNDY0IDIuNjc1NTkgNS44MDA3MiAyLjk4ODE2IDUuNDg4MTZDMy4zMDA3MiA1LjE3NTU5IDMuNzI0NjQgNSA0LjE2NjY3IDVIOS4xNjY2N00xMi41IDIuNUgxNy41TTE3LjUgMi41VjcuNU0xNy41IDIuNUw4LjMzMzMzIDExLjY2NjdcIiBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHctMTAwIG0tM1wiICpuZ0lmPVwic2hvd3NpbmdsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgdGV4dC10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjaGVja2xpc3Q/LnN0b3JlUHJvZmlsZT8uc3RvcmVOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOCB0ZXh0LWVuZCB0aXRsZS1kZXNjcmlwdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VibWl0dGVkIGJ5IDoge3tjaGVja2xpc3Q/LmNoZWNrbGlzdEluZm8/LnN1Ym1pdHRlZEJ5fX0gT24gOiB7e2NoZWNrbGlzdD8uY2hlY2tsaXN0SW5mbz8uZGF0ZX19IHt7Y2hlY2tsaXN0Py5jaGVja2xpc3RJbmZvPy50aW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJzaG93bXVsdGlcIiBjbGFzcz1cInFhLWhlYWRpbmdcIj57e3F1ZXN0aW9uPy5xbm99fS4ge3txdWVzdGlvbj8ucW5hbWV9fTwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJQYXJ0aWFsbHkgbXktMyBweC01XCIgKm5nSWY9XCJxdWVzdGlvbj8uYW5zd2VyVHlwZT09PSdkZXNjcmlwdGl2ZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcXVlc3Rpb24udXNlckFuc3dlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwicXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZSE9PScnJiZnYWxsZXJ5Rm9ybS52YWx1ZS50eXBlPT0nY2hlY2tsaXN0JyYmcXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZSE9bnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtcmVmIG15LTNcIj5SZWZlcmVuY2UgSW1hZ2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1sb2dvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFuc3dlckNETn19e3txdWVzdGlvbi5xdWVzdGlvblJlZmVyZW5jZUltYWdlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UmJnF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UubGVuZ3RoPjAmJmdhbGxlcnlGb3JtLnZhbHVlLnR5cGU9PSd0YXNrJyYmcXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZVswXSAhPT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtJiZpdGVtIT0nJyYmaXRlbSE9bnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1yZWYgbXktM1wiPlJlZmVyZW5jZSBJbWFnZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFuc3dlckNETn19e3tpdGVtfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0yXCIgW25nQ2xhc3NdPVwiaXRlbS5zb3BGbGFnID8gJ2ZsYWdjbG91cic6JydcIj57e2l0ZW0uYW5zd2VyfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlbWFya3NUeHRcIiAqbmdJZj1cInF1ZXN0aW9uLnJlbWFya3MhPScnXCI+UmVtYXJrcyA6IHt7cXVlc3Rpb24ucmVtYXJrc319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJQYXJ0aWFsbHkgbXktMyBweC01XCIgKm5nSWY9XCJxdWVzdGlvbj8uYW5zd2VyVHlwZT09PSdsaW5lYXJzY2FsZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBxdWVzdGlvbi51c2VyQW5zd2VyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cImdhbGxlcnlGb3JtLnZhbHVlLnR5cGU9PSdjaGVja2xpc3QnJiZxdWVzdGlvbi5xdWVzdGlvblJlZmVyZW5jZUltYWdlIT09JycmJnF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UhPW51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtcmVmIG15LTNcIj5SZWZlcmVuY2UgSW1hZ2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLWxvZ29cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJ7e2Vudmlyb25tZW50LlRyYXhBbnN3ZXJDRE59fXt7cXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi5xdWVzdGlvblJlZmVyZW5jZUltYWdlJiZxdWVzdGlvbi5xdWVzdGlvblJlZmVyZW5jZUltYWdlLmxlbmd0aD4wJiZnYWxsZXJ5Rm9ybS52YWx1ZS50eXBlPT0ndGFzaycmJnF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2VbMF0gIT09ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlLXJlZiBteS0zXCI+UmVmZXJlbmNlIEltYWdlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJ7e2Vudmlyb25tZW50LlRyYXhBbnN3ZXJDRE59fXt7aXRlbX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxicj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTRcIiBbbmdDbGFzc109XCJpdGVtLnNvcEZsYWcgPyAnZmxhZ2Nsb3VyJzonJ1wiPnt7aXRlbS5hbnN3ZXJ9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZW1hcmtzVHh0XCIgKm5nSWY9XCJxdWVzdGlvbi5yZW1hcmtzIT0nJ1wiPlJlbWFya3MgOiB7e3F1ZXN0aW9uLnJlbWFya3N9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiUGFydGlhbGx5IG15LTMgcHgtNVwiICpuZ0lmPVwicXVlc3Rpb24/LmFuc3dlclR5cGU9PT0ndGltZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBxdWVzdGlvbi51c2VyQW5zd2VyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cImdhbGxlcnlGb3JtLnZhbHVlLnR5cGU9PSdjaGVja2xpc3QnJiZxdWVzdGlvbi5xdWVzdGlvblJlZmVyZW5jZUltYWdlIT09JycmJnF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UhPW51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtcmVmIG15LTNcIj5SZWZlcmVuY2UgSW1hZ2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLWxvZ29cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJ7e2Vudmlyb25tZW50LlRyYXhBbnN3ZXJDRE59fXt7cXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi5xdWVzdGlvblJlZmVyZW5jZUltYWdlJiZxdWVzdGlvbi5xdWVzdGlvblJlZmVyZW5jZUltYWdlLmxlbmd0aD4wJiZnYWxsZXJ5Rm9ybS52YWx1ZS50eXBlPT0ndGFzaycmJnF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2VbMF0gIT09ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlLXJlZiBteS0zXCI+UmVmZXJlbmNlIEltYWdlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJ7e2Vudmlyb25tZW50LlRyYXhBbnN3ZXJDRE59fXt7aXRlbX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTRcIiBbbmdDbGFzc109XCJpdGVtLnNvcEZsYWcgPyAnZmxhZ2Nsb3VyJzonJ1wiPnt7aXRlbS5hbnN3ZXJ9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZW1hcmtzVHh0XCIgKm5nSWY9XCJxdWVzdGlvbi5yZW1hcmtzIT0nJ1wiPlJlbWFya3MgOiB7e3F1ZXN0aW9uLnJlbWFya3N9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiUGFydGlhbGx5IG15LTMgcHgtNVwiICpuZ0lmPVwicXVlc3Rpb24/LmFuc3dlclR5cGU9PT0nZGF0ZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIHF1ZXN0aW9uLnVzZXJBbnN3ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJnYWxsZXJ5Rm9ybS52YWx1ZS50eXBlPT0nY2hlY2tsaXN0JyYmcXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZSE9PScnJiZxdWVzdGlvbi5xdWVzdGlvblJlZmVyZW5jZUltYWdlIT1udWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtcmVmIG15LTNcIj5SZWZlcmVuY2UgSW1hZ2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5UcmF4QW5zd2VyQ0ROfX17e3F1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2V9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZSYmcXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZS5sZW5ndGg+MCYmZ2FsbGVyeUZvcm0udmFsdWUudHlwZT09J3Rhc2snJiZxdWVzdGlvbi5xdWVzdGlvblJlZmVyZW5jZUltYWdlWzBdICE9PSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtcmVmIG15LTNcIj5SZWZlcmVuY2UgSW1hZ2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLWxvZ29cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJ7e2Vudmlyb25tZW50LlRyYXhBbnN3ZXJDRE59fXt7aXRlbX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC00XCIgW25nQ2xhc3NdPVwiaXRlbS5zb3BGbGFnID8gJ2ZsYWdjbG91cic6JydcIj57e2l0ZW0uYW5zd2VyfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZW1hcmtzVHh0XCIgKm5nSWY9XCJxdWVzdGlvbi5yZW1hcmtzIT0nJ1wiPlJlbWFya3MgOiB7e3F1ZXN0aW9uLnJlbWFya3N9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlBhcnRpYWxseSBteS0zIHB4LTVcIiAqbmdJZj1cInF1ZXN0aW9uPy5hbnN3ZXJUeXBlPT09J3llcy9ubydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBxdWVzdGlvbi51c2VyQW5zd2VyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cImdhbGxlcnlGb3JtLnZhbHVlLnR5cGU9PSdjaGVja2xpc3QnJiZxdWVzdGlvbi5xdWVzdGlvblJlZmVyZW5jZUltYWdlIT09JycmJnF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UhPW51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtcmVmIG15LTNcIj5SZWZlcmVuY2UgSW1hZ2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLWxvZ29cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJ7e2Vudmlyb25tZW50LlRyYXhBbnN3ZXJDRE59fXt7cXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciAqbmdJZj1cImdhbGxlcnlGb3JtLnZhbHVlLnR5cGU9PSdjaGVja2xpc3QnJiZxdWVzdGlvbi5xdWVzdGlvblJlZmVyZW5jZUltYWdlIT09JycmJnF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UhPW51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi5xdWVzdGlvblJlZmVyZW5jZUltYWdlJiZxdWVzdGlvbi5xdWVzdGlvblJlZmVyZW5jZUltYWdlLmxlbmd0aD4wJiZnYWxsZXJ5Rm9ybS52YWx1ZS50eXBlPT0ndGFzaycmJnF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2VbMF0gIT09ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlLXJlZiBteS0zXCI+UmVmZXJlbmNlIEltYWdlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJ7e2Vudmlyb25tZW50LlRyYXhBbnN3ZXJDRE59fXt7aXRlbX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTRcIiBbbmdDbGFzc109XCJpdGVtLnNvcEZsYWcgPyAnZmxhZ2Nsb3VyJzonJ1wiPnt7aXRlbS5hbnN3ZXJ9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cIml0ZW0udmFsaWRhdGlvbiYmaXRlbS52YWxpZGF0aW9uQW5zd2VyIT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiaXRlbS5yZWZlcmVuY2VJbWFnZSE9PScnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1yZWYgbXktM1wiPlJlZmVyZW5jZSBJbWFnZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLWxvZ29cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5UcmF4QW5zd2VyQ0ROfX17e2l0ZW0ucmVmZXJlbmNlSW1hZ2V9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtcmVmIG15LTNcIiAqbmdJZj1cIml0ZW0udmFsaWRhdGlvblR5cGU9PSdDYXB0dXJlIEltYWdlJ3x8aXRlbS52YWxpZGF0aW9uVHlwZT09J0NhcHR1cmUgVmlkZW8nXCI+VmFsaWRhdGlvbiBBbnN3ZXI8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLWxvZ29cIiAqbmdJZj1cIml0ZW0udmFsaWRhdGlvblR5cGU9PSdDYXB0dXJlIEltYWdlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFuc3dlckNETn19e3tpdGVtLnZhbGlkYXRpb25BbnN3ZXJ9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmlkZW8gY29udHJvbHMgY2xhc3M9XCJyZWNhcC1pbWcgcC0zXCIgICpuZ0lmPVwiaXRlbS52YWxpZGF0aW9uVHlwZT09J0NhcHR1cmUgVmlkZW8nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5UcmF4QW5zd2VyQ0ROfX17e2l0ZW0udmFsaWRhdGlvbkFuc3dlcn19XCI+PC92aWRlbz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZW1hcmtzVHh0XCIgKm5nSWY9XCJpdGVtLnZhbGlkYXRpb25UeXBlPT0nRGVzY3JpcHRpdmUgQW5zd2VyJ1wiPlZhbGlkYXRpb24gQW5zd2VyIDp7e2l0ZW0udmFsaWRhdGlvbkFuc3dlcn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVtYXJrc1R4dFwiICpuZ0lmPVwicXVlc3Rpb24ucmVtYXJrcyE9JydcIj5SZW1hcmtzIDoge3txdWVzdGlvbi5yZW1hcmtzfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICBcclxuXHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlBhcnRpYWxseSBteS0zIHB4LTVcIiAqbmdJZj1cInF1ZXN0aW9uPy5hbnN3ZXJUeXBlPT09J211bHRpcGxlY2hvaWNlc2luZ2xlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiZ2FsbGVyeUZvcm0udmFsdWUudHlwZT09J2NoZWNrbGlzdCcmJnF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UhPW51bGwmJnF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UhPT0nJyYmcXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZSE9PXVuZGVmaW5lZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1yZWYgbXktM1wiPlJlZmVyZW5jZSBJbWFnZTwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1sb2dvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5UcmF4QW5zd2VyQ0ROfX17e3F1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2V9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi5xdWVzdGlvblJlZmVyZW5jZUltYWdlJiZxdWVzdGlvbi5xdWVzdGlvblJlZmVyZW5jZUltYWdlLmxlbmd0aD4wJiZnYWxsZXJ5Rm9ybS52YWx1ZS50eXBlPT0ndGFzaycmJnF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2VbMF0gIT09ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlLXJlZiBteS0zXCI+UmVmZXJlbmNlIEltYWdlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJ7e2Vudmlyb25tZW50LlRyYXhBbnN3ZXJDRE59fXt7aXRlbX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIHF1ZXN0aW9uLnVzZXJBbnN3ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTJcIiBbbmdDbGFzc109XCJpdGVtLnNvcEZsYWcgPyAnZmxhZ2Nsb3VyJzonJ1wiPnt7aXRlbS5hbnN3ZXJ9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cIml0ZW0ucmVmZXJlbmNlSW1hZ2UhPW51bGwmJml0ZW0ucmVmZXJlbmNlSW1hZ2UhPT0nJyYmZ2FsbGVyeUZvcm0udmFsdWUudHlwZT09J2NoZWNrbGlzdCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlLXJlZiBteS0zXCI+UmVmZXJlbmNlIEltYWdlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJ7e2Vudmlyb25tZW50LlRyYXhBbnN3ZXJDRE59fXt7aXRlbS5yZWZlcmVuY2VJbWFnZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLnJlZmVyZW5jZUltYWdlLmxlbmd0aD4wJiZnYWxsZXJ5Rm9ybS52YWx1ZS50eXBlPT0ndGFzaydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbS5yZWZlcmVuY2VJbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlLXJlZiBteS0zXCI+UmVmZXJlbmNlIEltYWdlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLWxvZ29cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFuc3dlckNETn19e3tpdGVtfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJpdGVtLnZhbGlkYXRpb24mJml0ZW0udmFsaWRhdGlvbkFuc3dlciE9JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlLXJlZiBteS0zXCIgKm5nSWY9XCJpdGVtLnZhbGlkYXRpb25UeXBlPT0nQ2FwdHVyZSBJbWFnZSd8fGl0ZW0udmFsaWRhdGlvblR5cGU9PSdDYXB0dXJlIFZpZGVvJ1wiPlZhbGlkYXRpb24gQW5zd2VyPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiICpuZ0lmPVwiaXRlbS52YWxpZGF0aW9uVHlwZT09J0NhcHR1cmUgSW1hZ2UnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFuc3dlckNETn19e3tpdGVtLnZhbGlkYXRpb25BbnN3ZXJ9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmlkZW8gY29udHJvbHMgY2xhc3M9XCJyZWNhcC1pbWcgcC0zXCIgICpuZ0lmPVwiaXRlbS52YWxpZGF0aW9uVHlwZT09J0NhcHR1cmUgVmlkZW8nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFuc3dlckNETn19e3tpdGVtLnZhbGlkYXRpb25BbnN3ZXJ9fVwiPjwvdmlkZW8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0udmFsaWRhdGlvblR5cGU9PSdEZXNjcmlwdGl2ZSBBbnN3ZXInXCIgW25nQ2xhc3NdPVwiaXRlbS5zb3BGbGFnID8gJ2ZsYWdjbG91cic6JydcIj5WYWxpZGF0aW9uIEFuc3dlciA6IHt7aXRlbS52YWxpZGF0aW9uQW5zd2VyfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZW1hcmtzVHh0XCIgKm5nSWY9XCJxdWVzdGlvbi5yZW1hcmtzIT0nJ1wiPlJlbWFya3MgOiB7e3F1ZXN0aW9uLnJlbWFya3N9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBweC01XCIgKm5nSWY9XCJxdWVzdGlvbj8uYW5zd2VyVHlwZT09PSdpbWFnZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGFuc3dlciBvZiBxdWVzdGlvbi5hbnN3ZXJzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAgY2xhc3M9XCJyb3dcIiAqbmdJZj1cImFuc3dlci5yZWZlcmVuY2VJbWFnZS5sZW5ndGg+MCYmZ2FsbGVyeUZvcm0udmFsdWUudHlwZT09J3Rhc2snXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBhbnN3ZXIucmVmZXJlbmNlSW1hZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1yZWYgbXktM1wiPlJlZmVyZW5jZSBJbWFnZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1sb2dvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJ7e2Vudmlyb25tZW50LlRyYXhBbnN3ZXJDRE59fXt7aXRlbX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJnYWxsZXJ5Rm9ybS52YWx1ZS50eXBlPT0nY2hlY2tsaXN0JyYmYW5zd2VyLnJlZmVyZW5jZUltYWdlIT09JycmJmFuc3dlci5yZWZlcmVuY2VJbWFnZSE9bnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtcmVmIG15LTNcIj5SZWZlcmVuY2UgSW1hZ2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1sb2dvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFuc3dlckNETn19e3thbnN3ZXIucmVmZXJlbmNlSW1hZ2V9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBxdWVzdGlvbi51c2VyQW5zd2VyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cIml0ZW0ucmVmZXJlbmNlSW1hZ2UhPW51bGwmJml0ZW0ucmVmZXJlbmNlSW1hZ2UhPT0nJyYmZ2FsbGVyeUZvcm0udmFsdWUudHlwZT09J2NoZWNrbGlzdCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlLXJlZiBteS0zXCI+UmVmZXJlbmNlIEltYWdlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJ7e2Vudmlyb25tZW50LlRyYXhBbnN3ZXJDRE59fXt7aXRlbS5yZWZlcmVuY2VJbWFnZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0ucmVmZXJlbmNlSW1hZ2UubGVuZ3RoPjAmJmdhbGxlcnlGb3JtLnZhbHVlLnR5cGU9PSd0YXNrJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtLnJlZmVyZW5jZUltYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtcmVmIG15LTNcIj5SZWZlcmVuY2UgSW1hZ2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5UcmF4QW5zd2VyQ0ROfX17e2l0ZW19fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlLXJlZiBteS0zXCI+VXBsb2FkZWQgSW1hZ2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLWxvZ29cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJ7e2Vudmlyb25tZW50LlRyYXhBbnN3ZXJDRE59fXt7aXRlbS5hbnN3ZXJ9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbXQtMlwiICpuZ0lmPVwiaXRlbS52YWxpZGF0aW9uJiZpdGVtLnZhbGlkYXRpb25BbnN3ZXIhPScnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtcmVmIG15LTNcIiAgKm5nSWY9XCJpdGVtLnZhbGlkYXRpb25UeXBlPT0nQ2FwdHVyZSBJbWFnZSd8fGl0ZW0udmFsaWRhdGlvblR5cGU9PSdDYXB0dXJlIFZpZGVvJ1wiPlZhbGlkYXRpb24gQW5zd2VyPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLWxvZ29cIiAqbmdJZj1cIml0ZW0udmFsaWRhdGlvblR5cGU9PSdDYXB0dXJlIEltYWdlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJ7e2Vudmlyb25tZW50LlRyYXhBbnN3ZXJDRE59fXt7aXRlbS52YWxpZGF0aW9uQW5zd2VyfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmlkZW8gY29udHJvbHMgY2xhc3M9XCJyZWNhcC1pbWcgcC0zXCIgICpuZ0lmPVwiaXRlbS52YWxpZGF0aW9uVHlwZT09J0NhcHR1cmUgVmlkZW8nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFuc3dlckNETn19e3tpdGVtLnZhbGlkYXRpb25BbnN3ZXJ9fVwiPjwvdmlkZW8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0udmFsaWRhdGlvblR5cGU9PSdEZXNjcmlwdGl2ZSBBbnN3ZXInXCIgW25nQ2xhc3NdPVwiaXRlbS5zb3BGbGFnID8gJ2ZsYWdjbG91cic6JydcIj5WYWxpZGF0aW9uIEFuc3dlciA6IHt7aXRlbS52YWxpZGF0aW9uQW5zd2VyfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVtYXJrc1R4dFwiICpuZ0lmPVwicXVlc3Rpb24ucmVtYXJrcyE9JydcIj5SZW1hcmtzIDoge3txdWVzdGlvbi5yZW1hcmtzfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtNVwiICpuZ0lmPVwicXVlc3Rpb24/LmFuc3dlclR5cGU9PT0nbXVsdGlwbGVjaG9pY2VtdWx0aXBsZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiZ2FsbGVyeUZvcm0udmFsdWUudHlwZT09J2NoZWNrbGlzdCcmJnF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UhPT0nJyYmcXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZSE9bnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1yZWYgbXktM1wiPlJlZmVyZW5jZSBJbWFnZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFuc3dlckNETn19e3txdWVzdGlvbi5xdWVzdGlvblJlZmVyZW5jZUltYWdlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZSYmcXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZS5sZW5ndGg+MCYmZ2FsbGVyeUZvcm0udmFsdWUudHlwZT09J3Rhc2snJiZxdWVzdGlvbi5xdWVzdGlvblJlZmVyZW5jZUltYWdlWzBdICE9PSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBxdWVzdGlvbi5xdWVzdGlvblJlZmVyZW5jZUltYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1yZWYgbXktM1wiPlJlZmVyZW5jZSBJbWFnZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLWxvZ29cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5UcmF4QW5zd2VyQ0ROfX17e2l0ZW19fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlBhcnRpYWxseSBteS0zIHB4LTVcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBxdWVzdGlvbi51c2VyQW5zd2VyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0zXCIgW25nQ2xhc3NdPVwiaXRlbS5zb3BGbGFnID8gJ2ZsYWdjbG91cic6JydcIj57e2l0ZW0uYW5zd2VyfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJpdGVtLnJlZmVyZW5jZUltYWdlIT1udWxsJiZpdGVtLnJlZmVyZW5jZUltYWdlIT09JycmJmdhbGxlcnlGb3JtLnZhbHVlLnR5cGU9PSdjaGVja2xpc3QnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1yZWYgbXktM1wiPlJlZmVyZW5jZSBJbWFnZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLWxvZ29cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5UcmF4QW5zd2VyQ0ROfX17e2l0ZW0ucmVmZXJlbmNlSW1hZ2V9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5yZWZlcmVuY2VJbWFnZS5sZW5ndGg+MCYmZ2FsbGVyeUZvcm0udmFsdWUudHlwZT09J3Rhc2snXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW0ucmVmZXJlbmNlSW1hZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1yZWYgbXktM1wiPlJlZmVyZW5jZSBJbWFnZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1sb2dvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJ7e2Vudmlyb25tZW50LlRyYXhBbnN3ZXJDRE59fXt7aXRlbX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtdC0yXCIgKm5nSWY9XCJpdGVtLnZhbGlkYXRpb24mJml0ZW0udmFsaWRhdGlvbkFuc3dlciYmaXRlbS52YWxpZGF0aW9uQW5zd2VyIT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtcmVmIG15LTNcIiAgKm5nSWY9XCJpdGVtLnZhbGlkYXRpb25UeXBlPT0nQ2FwdHVyZSBJbWFnZSd8fGl0ZW0udmFsaWRhdGlvblR5cGU9PSdDYXB0dXJlIFZpZGVvJ1wiPlZhbGlkYXRpb24gQW5zd2VyPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiICpuZ0lmPVwiaXRlbS52YWxpZGF0aW9uVHlwZT09J0NhcHR1cmUgSW1hZ2UnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5UcmF4QW5zd2VyQ0ROfX17e2l0ZW0udmFsaWRhdGlvbkFuc3dlcn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2aWRlbyBjb250cm9scyBjbGFzcz1cInJlY2FwLWltZyBwLTNcIiAgKm5nSWY9XCJpdGVtLnZhbGlkYXRpb25UeXBlPT0nQ2FwdHVyZSBWaWRlbydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJ7e2Vudmlyb25tZW50LlRyYXhBbnN3ZXJDRE59fXt7aXRlbS52YWxpZGF0aW9uQW5zd2VyfX1cIj48L3ZpZGVvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0udmFsaWRhdGlvblR5cGU9PSdEZXNjcmlwdGl2ZSBBbnN3ZXInXCIgW25nQ2xhc3NdPVwiaXRlbS5zb3BGbGFnID8gJ2ZsYWdjbG91cic6JydcIj5WYWxpZGF0aW9uIEFuc3dlciA6IHt7aXRlbS52YWxpZGF0aW9uQW5zd2VyfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlbWFya3NUeHRcIiAqbmdJZj1cInF1ZXN0aW9uLnJlbWFya3MhPScnXCI+UmVtYXJrcyA6IHt7cXVlc3Rpb24ucmVtYXJrc319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBweC01XCIgKm5nSWY9XCJxdWVzdGlvbj8uYW5zd2VyVHlwZT09PSdkZXNjcmlwdGl2ZUltYWdlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYW5zd2VyIG9mIHF1ZXN0aW9uLmFuc3dlcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICBjbGFzcz1cInJvd1wiICpuZ0lmPVwiYW5zd2VyLnJlZmVyZW5jZUltYWdlLmxlbmd0aD4wJiZnYWxsZXJ5Rm9ybS52YWx1ZS50eXBlPT0ndGFzaydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGFuc3dlci5yZWZlcmVuY2VJbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlLXJlZiBteS0zXCI+UmVmZXJlbmNlIEltYWdlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLWxvZ29cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFuc3dlckNETn19e3tpdGVtfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cImdhbGxlcnlGb3JtLnZhbHVlLnR5cGU9PSdjaGVja2xpc3QnJiZhbnN3ZXIucmVmZXJlbmNlSW1hZ2UhPT0nJyYmYW5zd2VyLnJlZmVyZW5jZUltYWdlIT1udWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1yZWYgbXktM1wiPlJlZmVyZW5jZSBJbWFnZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLWxvZ29cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5UcmF4QW5zd2VyQ0ROfX17e2Fuc3dlci5yZWZlcmVuY2VJbWFnZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0Zvcj1cImxldCBpdGVtIG9mIHF1ZXN0aW9uLnVzZXJBbnN3ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiaXRlbS5yZWZlcmVuY2VJbWFnZSE9bnVsbCYmaXRlbS5yZWZlcmVuY2VJbWFnZSE9PScnJiZnYWxsZXJ5Rm9ybS52YWx1ZS50eXBlPT0nY2hlY2tsaXN0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtcmVmIG15LTNcIj5SZWZlcmVuY2UgSW1hZ2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1sb2dvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFuc3dlckNETn19e3tpdGVtLnJlZmVyZW5jZUltYWdlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0ucmVmZXJlbmNlSW1hZ2UubGVuZ3RoPjAmJmdhbGxlcnlGb3JtLnZhbHVlLnR5cGU9PSd0YXNrJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbS5yZWZlcmVuY2VJbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1yZWYgbXktM1wiPlJlZmVyZW5jZSBJbWFnZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFuc3dlckNETn19e3tpdGVtfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1yZWYgbXktM1wiPlVwbG9hZGVkIEltYWdlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLWxvZ29cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFuc3dlckNETn19e3tpdGVtLmFuc3dlcn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG10LTNcIiAqbmdJZj1cIml0ZW0udmFsaWRhdGlvbiYmaXRlbS52YWxpZGF0aW9uQW5zd2VyIT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlLXJlZiBteS0zXCIgICpuZ0lmPVwiaXRlbS52YWxpZGF0aW9uVHlwZT09J0NhcHR1cmUgSW1hZ2UnfHxpdGVtLnZhbGlkYXRpb25UeXBlPT0nQ2FwdHVyZSBWaWRlbydcIj5WYWxpZGF0aW9uIEFuc3dlcjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1sb2dvXCIgKm5nSWY9XCJpdGVtLnZhbGlkYXRpb25UeXBlPT0nQ2FwdHVyZSBJbWFnZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5UcmF4QW5zd2VyQ0ROfX17e2l0ZW0udmFsaWRhdGlvbkFuc3dlcn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZpZGVvIGNvbnRyb2xzIGNsYXNzPVwicmVjYXAtaW1nIHAtM1wiICAqbmdJZj1cIml0ZW0udmFsaWRhdGlvblR5cGU9PSdDYXB0dXJlIFZpZGVvJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJ7e2Vudmlyb25tZW50LlRyYXhBbnN3ZXJDRE59fXt7aXRlbS52YWxpZGF0aW9uQW5zd2VyfX1cIj48L3ZpZGVvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwiaXRlbS5zb3BGbGFnID8gJ2ZsYWdjbG91cic6JydcIiAqbmdJZj1cIml0ZW0udmFsaWRhdGlvblR5cGU9PSdEZXNjcmlwdGl2ZSBBbnN3ZXInXCI+VmFsaWRhdGlvbiBBbnN3ZXIgOiB7e2l0ZW0udmFsaWRhdGlvbkFuc3dlcn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiUGFydGlhbGx5IG15LTMgcHgtNVwiICpuZ0lmPVwicXVlc3Rpb24ucmVtYXJrcyE9JydcIj57e3F1ZXN0aW9uLnJlbWFya3N9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBweC01XCIgKm5nSWY9XCJxdWVzdGlvbj8uYW5zd2VyVHlwZT09PSd2aWRlbydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi5xdWVzdGlvblJlZmVyZW5jZUltYWdlJiZxdWVzdGlvbi5xdWVzdGlvblJlZmVyZW5jZUltYWdlLmxlbmd0aD4wJiZnYWxsZXJ5Rm9ybS52YWx1ZS50eXBlPT0ndGFzaycmJnF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2VbMF0gIT09ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlLXJlZiBteS0zXCI+UmVmZXJlbmNlIEltYWdlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJ7e2Vudmlyb25tZW50LlRyYXhBbnN3ZXJDRE59fXt7aXRlbX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cImdhbGxlcnlGb3JtLnZhbHVlLnR5cGU9PSdjaGVja2xpc3QnJiZxdWVzdGlvbi5xdWVzdGlvblJlZmVyZW5jZUltYWdlIT09JycmJnF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UhPW51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtcmVmIG15LTNcIj5SZWZlcmVuY2UgSW1hZ2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLWxvZ29cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJ7e2Vudmlyb25tZW50LlRyYXhBbnN3ZXJDRE59fXt7cXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIHF1ZXN0aW9uLnVzZXJBbnN3ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtcmVmIG15LTNcIj5VcGxvYWRlZCBWaWRlbzwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmlkZW8gY29udHJvbHMgY2xhc3M9XCJyZWNhcC1pbWcgcC0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5UcmF4QW5zd2VyQ0ROfX17e2l0ZW0uYW5zd2VyfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZpZGVvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVtYXJrc1R4dFwiICpuZ0lmPVwicXVlc3Rpb24ucmVtYXJrcyE9JydcIj5SZW1hcmtzIDoge3txdWVzdGlvbi5yZW1hcmtzfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB4LTVcIiAqbmdJZj1cInF1ZXN0aW9uPy5hbnN3ZXJUeXBlPT09J211bHRpcGxlSW1hZ2UnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBhbnN3ZXIgb2YgcXVlc3Rpb24uYW5zd2Vyc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAgY2xhc3M9XCJyb3dcIiAqbmdJZj1cImFuc3dlci5yZWZlcmVuY2VJbWFnZS5sZW5ndGg+MCYmZ2FsbGVyeUZvcm0udmFsdWUudHlwZT09J3Rhc2snXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGFuc3dlci5yZWZlcmVuY2VJbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtcmVmIG15LTNcIj5SZWZlcmVuY2UgSW1hZ2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1sb2dvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFuc3dlckNETn19e3tpdGVtfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJnYWxsZXJ5Rm9ybS52YWx1ZS50eXBlPT0nY2hlY2tsaXN0JyYmYW5zd2VyLnJlZmVyZW5jZUltYWdlIT09JycmJmFuc3dlci5yZWZlcmVuY2VJbWFnZSE9bnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1yZWYgbXktM1wiPlJlZmVyZW5jZSBJbWFnZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFuc3dlckNETn19e3thbnN3ZXIucmVmZXJlbmNlSW1hZ2V9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIHF1ZXN0aW9uLnVzZXJBbnN3ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtcmVmIG15LTNcIj5VcGxvYWRlZCBJbWFnZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFuc3dlckNETn19e3tpdGVtLmFuc3dlcn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiaXRlbS52YWxpZGF0aW9uJiZpdGVtLnZhbGlkYXRpb25BbnN3ZXIhPScnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtcmVmIG15LTNcIiAqbmdJZj1cIml0ZW0udmFsaWRhdGlvblR5cGU9PSdDYXB0dXJlIEltYWdlJ3x8aXRlbS52YWxpZGF0aW9uVHlwZT09J0NhcHR1cmUgVmlkZW8nXCI+VmFsaWRhdGlvbiBBbnN3ZXI8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiICpuZ0lmPVwiaXRlbS52YWxpZGF0aW9uVHlwZT09J0NhcHR1cmUgSW1hZ2UnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFuc3dlckNETn19e3tpdGVtLnZhbGlkYXRpb25BbnN3ZXJ9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2aWRlbyBjb250cm9scyBjbGFzcz1cInJlY2FwLWltZyBwLTNcIiAgKm5nSWY9XCJpdGVtLnZhbGlkYXRpb25UeXBlPT0nQ2FwdHVyZSBWaWRlbydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5UcmF4QW5zd2VyQ0ROfX17e2l0ZW0udmFsaWRhdGlvbkFuc3dlcn19XCI+PC92aWRlbz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS52YWxpZGF0aW9uVHlwZT09J0Rlc2NyaXB0aXZlIEFuc3dlcidcIj5WYWxpZGF0aW9uIEFuc3dlciA6IHt7aXRlbS52YWxpZGF0aW9uQW5zd2VyfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVtYXJrc1R4dFwiICpuZ0lmPVwicXVlc3Rpb24ucmVtYXJrcyE9JydcIj5SZW1hcmtzIDoge3txdWVzdGlvbi5yZW1hcmtzfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgdGV4dC1zdGFydFwiPiAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5IHJvdW5kZWQtcGlsbCBtLTAgcC0yXCIgKm5nSWY9XCJxdWVzdGlvbj8ubGlua1R5cGUmJnF1ZXN0aW9uPy5saW5rcXVlc3Rpb25lbmFibGVkXCI+TGlua2VkIHRvIFF1ZXN0aW9uIHt7cXVlc3Rpb24ucGFyZW50UXVlc3Rpb259fTwvYnV0dG9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IHRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tZGVmYXVsdCBib3JkZXItZGVmYXVsdCBtZS0zXCIgW2Rpc2FibGVkXT1cInF1ZXN0aW9uLnJlZG9cIiAqbmdJZj1cImNoZWNrdG9kYXlEYXRlKGNoZWNrbGlzdD8uY2hlY2tsaXN0SW5mbz8uZGF0ZSkmJihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSAhPT0gJ3RhbmdvJyYmIWNoZWNrbGlzdD8uY2hlY2tsaXN0SW5mbz8uYXBwcm92YWxTdGF0dXMmJihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy5UYW5nb1RyYXhfY2hlY2tsaXN0X2lzRWRpdCYmdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50eXBlID09J2NoZWNrbGlzdCdcIiAoY2xpY2spPVwiYWRkVGFzaygncmVkbycscXVlc3Rpb24sY2hlY2tsaXN0Py5jaGVja2xpc3RJbmZvLGNoZWNrbGlzdD8uc3RvcmVQcm9maWxlLHF1ZXN0aW9ubGlzdClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF82MDA0XzExNzM0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE5LjE2OTMgMy4zMzMzMVY4LjMzMzMyTTE5LjE2OTMgOC4zMzMzMkgxNC4xNjkzTTE5LjE2OTMgOC4zMzMzMkwxNS4zMDI2IDQuNjk5OThDMTQuNDA3IDMuODAzOTEgMTMuMjk5IDMuMTQ5MzIgMTIuMDgxOSAyLjc5NzI5QzEwLjg2NDkgMi40NDUyNyA5LjU3ODUzIDIuNDA3MjcgOC4zNDI4NCAyLjY4Njg2QzcuMTA3MTYgMi45NjY0NSA1Ljk2MjQ0IDMuNTU0NTEgNS4wMTU0OSA0LjM5NjE2QzQuMDY4NTUgNS4yMzc4MiAzLjM1MDI0IDYuMzA1NjQgMi45Mjc2IDcuNDk5OThNMC44MzU5MzggMTYuNjY2NlYxMS42NjY2TTAuODM1OTM4IDExLjY2NjZINS44MzU5NE0wLjgzNTkzOCAxMS42NjY2TDQuNzAyNiAxNS4zQzUuNTk4MjMgMTYuMTk2MSA2LjcwNjI1IDE2Ljg1MDYgNy45MjMyOCAxNy4yMDI3QzkuMTQwMzEgMTcuNTU0NyAxMC40MjY3IDE3LjU5MjcgMTEuNjYyNCAxNy4zMTMxQzEyLjg5OCAxNy4wMzM1IDE0LjA0MjggMTYuNDQ1NSAxNC45ODk3IDE1LjYwMzhDMTUuOTM2NyAxNC43NjIxIDE2LjY1NSAxMy42OTQzIDE3LjA3NzYgMTIuNVwiIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF82MDA0XzExNzM0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yIGZvbnQtZGVmdWx0LXRhc2tcIj5SZWRvPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tZGVmYXVsdCBib3JkZXItZGVmYXVsdCBtZS0zXCIgW2Rpc2FibGVkXT1cInF1ZXN0aW9uLnJlZG9cIiAqbmdJZj1cImNoZWNrdG9kYXlEYXRlKGNoZWNrbGlzdD8uY2hlY2tsaXN0SW5mbz8uZGF0ZSkmJihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSAhPT0gJ3RhbmdvJyYmIWNoZWNrbGlzdD8uY2hlY2tsaXN0SW5mbz8uYXBwcm92YWxTdGF0dXMmJihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy5UYW5nb1RyYXhfVGFza19pc0VkaXQmJnRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudHlwZT09J3Rhc2snXCIgKGNsaWNrKT1cImFkZFRhc2soJ3JlZG8nLHF1ZXN0aW9uLGNoZWNrbGlzdD8uY2hlY2tsaXN0SW5mbyxjaGVja2xpc3Q/LnN0b3JlUHJvZmlsZSxxdWVzdGlvbmxpc3QpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfNjAwNF8xMTczNClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xOS4xNjkzIDMuMzMzMzFWOC4zMzMzMk0xOS4xNjkzIDguMzMzMzJIMTQuMTY5M00xOS4xNjkzIDguMzMzMzJMMTUuMzAyNiA0LjY5OTk4QzE0LjQwNyAzLjgwMzkxIDEzLjI5OSAzLjE0OTMyIDEyLjA4MTkgMi43OTcyOUMxMC44NjQ5IDIuNDQ1MjcgOS41Nzg1MyAyLjQwNzI3IDguMzQyODQgMi42ODY4NkM3LjEwNzE2IDIuOTY2NDUgNS45NjI0NCAzLjU1NDUxIDUuMDE1NDkgNC4zOTYxNkM0LjA2ODU1IDUuMjM3ODIgMy4zNTAyNCA2LjMwNTY0IDIuOTI3NiA3LjQ5OTk4TTAuODM1OTM4IDE2LjY2NjZWMTEuNjY2Nk0wLjgzNTkzOCAxMS42NjY2SDUuODM1OTRNMC44MzU5MzggMTEuNjY2Nkw0LjcwMjYgMTUuM0M1LjU5ODIzIDE2LjE5NjEgNi43MDYyNSAxNi44NTA2IDcuOTIzMjggMTcuMjAyN0M5LjE0MDMxIDE3LjU1NDcgMTAuNDI2NyAxNy41OTI3IDExLjY2MjQgMTcuMzEzMUMxMi44OTggMTcuMDMzNSAxNC4wNDI4IDE2LjQ0NTUgMTQuOTg5NyAxNS42MDM4QzE1LjkzNjcgMTQuNzYyMSAxNi42NTUgMTMuNjk0MyAxNy4wNzc2IDEyLjVcIiBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfNjAwNF8xMTczNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMiBmb250LWRlZnVsdC10YXNrXCI+UmVkbzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtICBib3JkZXItdmFsMVwiICpuZ0lmPVwiIXF1ZXN0aW9uLnRhc2smJiFxdWVzdGlvbi50YXNrSWQmJnRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudHlwZT09J2NoZWNrbGlzdCcmJihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSAhPT0gJ3RhbmdvJyYmIWNoZWNrbGlzdD8uY2hlY2tsaXN0SW5mbz8uYXBwcm92YWxTdGF0dXMmJiAoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8uVGFuZ29UcmF4X1Rhc2tfaXNFZGl0XCIgKGNsaWNrKT1cImFkZFRhc2soJ2NyZWF0ZXRhc2snLHF1ZXN0aW9uLGNoZWNrbGlzdD8uY2hlY2tsaXN0SW5mbyxjaGVja2xpc3Q/LnN0b3JlUHJvZmlsZSxxdWVzdGlvbmxpc3QpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNjY5MyAxLjY2Njc1SDUuMDAyNkM0LjU2MDU4IDEuNjY2NzUgNC4xMzY2NSAxLjg0MjM0IDMuODI0MDkgMi4xNTQ5QzMuNTExNTMgMi40Njc0NiAzLjMzNTk0IDIuODkxMzkgMy4zMzU5NCAzLjMzMzQxVjE2LjY2NjdDMy4zMzU5NCAxNy4xMDg4IDMuNTExNTMgMTcuNTMyNyAzLjgyNDA5IDE3Ljg0NTNDNC4xMzY2NSAxOC4xNTc4IDQuNTYwNTggMTguMzMzNCA1LjAwMjYgMTguMzMzNEgxNS4wMDI2QzE1LjQ0NDYgMTguMzMzNCAxNS44Njg2IDE4LjE1NzggMTYuMTgxMSAxNy44NDUzQzE2LjQ5MzcgMTcuNTMyNyAxNi42NjkzIDE3LjEwODggMTYuNjY5MyAxNi42NjY3VjYuNjY2NzVNMTEuNjY5MyAxLjY2Njc1TDE2LjY2OTMgNi42NjY3NU0xMS42NjkzIDEuNjY2NzVWNi42NjY3NUgxNi42NjkzTTEwLjAwMjYgMTUuMDAwMVYxMC4wMDAxTTcuNTAyNiAxMi41MDAxSDEyLjUwMjZcIiBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMiBmb250LXRhc2tcIj5DcmVhdGUgVGFzazwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInF1ZXN0aW9uLnRhc2smJnF1ZXN0aW9uLnRhc2tJZCAmJnRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudHlwZSE9PSd0YXNrJ1wiIGNsYXNzPVwiYnRuIGJ0bi1zbSBib3JkZXItdmFsMVwiIChjbGljayk9XCJ0YXNrcmVkaXJlY3QocXVlc3Rpb24sY2hlY2tsaXN0Py5zdG9yZVByb2ZpbGUsY2hlY2tsaXN0Py5jaGVja2xpc3RJbmZvKVwiPjxzcGFuIGNsYXNzPVwiZm9udC10YXNrXCI+VmlldyBUYXNrPC9zcGFuPjwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEwIG15LTVcIiAqbmdJZj1cImltYWdlQ2hlY2tsaXN0LmluY2x1ZGVzKHNlbGVjdClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiICpuZ0lmPVwiY2xpZW50RGF0YS5sb2dvJiZjbGllbnREYXRhLmxvZ28hPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJtdC01IG1iLTMgdGV4dC1jZW50ZXIgaWNvbnNpemVcIiBzcmM9XCJ7e2NsaWVudERhdGEubG9nb319XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyPkNoZWNrbGlzdCBOYW1lIDoge3t0aGlzLmNoZWNrbGlzdE5hbWV9fTwvaDI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxYS1ib2RyZXIgbXktMyBtdC01XCIgKm5nRm9yPVwibGV0IGl0ZW0gIG9mIG1vYmlsZXVzYWdlRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cInJvdyB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJxYS1oZWFkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0uc3RvcmVOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBteS0yXCIgKm5nRm9yPVwibGV0IGRldGVjdGlvbiBvZiBpdGVtLmltYWdlVXJsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJ3LTEwMCBoLTUwMHB4IHJvdW5kZWQtdG9wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFJY2hlY2tsaXN0Q0ROfX17e2RldGVjdGlvbn19XCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtdC0zXCIgPiB7e3RoaXMuY2hlY2tsaXN0TmFtZX19PC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEwIG15LTVcIiAqbmdJZj1cInZpZGVvQ2hlY2tsaXN0LmluY2x1ZGVzKHNlbGVjdClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiICpuZ0lmPVwiY2xpZW50RGF0YS5sb2dvJiZjbGllbnREYXRhLmxvZ28hPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJtdC01IG1iLTMgdGV4dC1jZW50ZXIgaWNvbnNpemVcIiBzcmM9XCJ7e2NsaWVudERhdGEubG9nb319XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTMgbXQtNVwiICpuZ0Zvcj1cImxldCBpdGVtICBvZiBjdXN0b21lcnVuYXR0ZW5kZWREYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBweC0xMCBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwidW5pLXRpdGxlXCI+Q2hlY2tsaXN0IE5hbWU6PC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ1bmktc3VidGl0bGVcIj46IHt7dGhpcy5jaGVja2xpc3ROYW1lfX0gPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJ1bmktdGl0bGVcIj5TdG9yZSBOYW1lPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ1bmktc3VidGl0bGVcIj46IHt7aXRlbS5zdG9yZU5hbWV9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJyb3cgdy0xMDAgbWFyZ2luLXRvcC1zaWRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInFhLWhlYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIiAqbmdGb3I9XCJsZXQgZGV0ZWN0aW9uIG9mIGl0ZW0uaW1hZ2VzRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtMTAgbXQtNSBtYXJnaW4tbGVmdC1zaWRlXCIgKm5nSWY9XCJzZWxlY3QhPSdzdXNwaWNpb3VzYWN0aXZpdHknXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiICpuZ0lmPVwiZGV0ZWN0aW9uPy5BbnN3ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInVuaS10aXRsZVwiPkRldGVjdGlvbiBTdGF0dXM8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCIgKm5nSWY9XCJkZXRlY3Rpb24/LkFuc3dlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ1bmktc3VidGl0bGVcIj46PHNwYW4gY2xhc3M9XCJtcy0zIGJhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlclwiICpuZ0lmPVwiZGV0ZWN0aW9uPy5BbnN3ZXI9PT0ncmVqZWN0ZWQnXCI+QnJlYWNoZWQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0zIGJhZGdlIGJhZGdlLWxpZ2h0LXN1Y2Nlc3NcIiAqbmdJZj1cImRldGVjdGlvbj8uQW5zd2VyPT09J2FwcHJvdmVkJ1wiPk5vdC1icmVhY2hlZDwvc3Bhbj4gPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJ1bmktdGl0bGVcIj5EYXRlPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ1bmktc3VidGl0bGVcIj46IHt7ZGV0ZWN0aW9uLmRhdGV8ZGF0ZTonZGQtTU0teXl5eScgfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIiAqbmdJZj1cImRldGVjdGlvbj8uY29uZmlnVGltZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwidW5pLXRpdGxlXCI+Q29uZmlndXJlZCBUaW1lPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiICpuZ0lmPVwiZGV0ZWN0aW9uPy5jb25maWdUaW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInVuaS1zdWJ0aXRsZVwiPjoge3tkZXRlY3Rpb24uY29uZmlnVGltZSB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiICpuZ0lmPVwiZGV0ZWN0aW9uPy5kdXJhdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwidW5pLXRpdGxlXCI+RHVyYXRpb248L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCIgKm5nSWY9XCJkZXRlY3Rpb24/LmR1cmF0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInVuaS1zdWJ0aXRsZVwiPjoge3tkZXRlY3Rpb24uZHVyYXRpb24gfX0gTWluczwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiICpuZ0lmPVwiZGV0ZWN0aW9uPy5kb3duVGltZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwidW5pLXRpdGxlXCI+RG93bnRpbWU8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCIgKm5nSWY9XCJkZXRlY3Rpb24/LmRvd25UaW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInVuaS1zdWJ0aXRsZVwiPjoge3tkZXRlY3Rpb24uZG93blRpbWUgfX0gTWlucyAgPHNwYW4gbmdiVG9vbHRpcD1cIkRvd250aW1lIG1heSByZXN1bHQgaW4gaW5hY2N1cmF0ZSBkYXRhXCIgcGxhY2VtZW50PVwidG9wXCIgY29udGFpbmVyPVwiYm9keVwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTVcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTUgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNy42NjY2NyA1LjMzMjAzVjcuOTk4N003LjY2NjY3IDEwLjY2NTRINy42NzMzM00xNC4zMzMzIDcuOTk4N0MxNC4zMzMzIDExLjY4MDYgMTEuMzQ4NiAxNC42NjU0IDcuNjY2NjcgMTQuNjY1NEMzLjk4NDc3IDE0LjY2NTQgMSAxMS42ODA2IDEgNy45OTg3QzEgNC4zMTY4IDMuOTg0NzcgMS4zMzIwMyA3LjY2NjY3IDEuMzMyMDNDMTEuMzQ4NiAxLjMzMjAzIDE0LjMzMzMgNC4zMTY4IDE0LjMzMzMgNy45OTg3WlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgbWluLWgtNDVweCBweC0wIG15LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cIm1lLTMgc3RvcmUtdGl0bGVcIj57e2l0ZW0uc3RvcmVOYW1lfX08L3NwYW4+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yIGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHRcIiAqbmdJZj1cImRldGVjdGlvbj8uY3VzdG9tZXJfaWRcIj5DdXN0IElEIDoge3tkZXRlY3Rpb24uY3VzdG9tZXJfaWR9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMiBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0XCIgKm5nSWY9XCJkZXRlY3Rpb24/LnF1ZXVlX2lkXCI+UXVldWUgSUQgOiB7e2RldGVjdGlvbi5xdWV1ZV9pZH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yIGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHRcIiAqbmdJZj1cImRldGVjdGlvbj8ub3B0dW1faWRcIj5PcHR1bSBJRCA6IHt7ZGV0ZWN0aW9uLm9wdHVtX2lkfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwibXMtMiBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0XCIgKm5nSWY9XCJkZXRlY3Rpb24/LmRhdGVcIj5EYXRlIDoge3tkZXRlY3Rpb24uZGF0ZXxkYXRlOidkZC1NTS15eXl5JyB9fTwvc3Bhbj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwibXMtMyBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0XCIgKm5nSWY9XCJkZXRlY3Rpb24/LmNvbmZpZ1RpbWVcIj5JbnNwZWN0aW9uIHRpbWUgOiB7e2RldGVjdGlvbi5jb25maWdUaW1lfX08L3NwYW4+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0zIGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHRcIiAqbmdJZj1cImRldGVjdGlvbj8udGVtcF9pZFwiPlRlbXBJZCA6IHt7ZGV0ZWN0aW9uLnRlbXBfaWR9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMyBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0XCIgKm5nSWY9XCJkZXRlY3Rpb24/LnRpbWVfc3BlbmRcIj5UaW1lc3BlbmQgOiB7e2RldGVjdGlvbi50aW1lX3NwZW5kfX1NaW5zPC9zcGFuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFN3aXRjaCB0b2dnbGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgdGV4dC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTMgYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdFwiICpuZ0lmPVwiZGV0ZWN0aW9uPy5lbnRyeV90aW1lXCI+RW50cnkgdGltZSA6IHt7ZGV0ZWN0aW9uLmVudHJ5X3RpbWV9fTwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMyBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0XCIgKm5nSWY9XCJkZXRlY3Rpb24/LmV4aXRfdGltZVwiPkV4aXQgdGltZSA6IHt7ZGV0ZWN0aW9uLmV4aXRfdGltZX19PC9zcGFuPiAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTMgYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2Vzc1wiICpuZ0lmPVwiZGV0ZWN0aW9uPy5hZGhlcmVuY2VfcmF0ZVwiPkFkaGVyZW5jZSBSYXRlIDoge3tkZXRlY3Rpb24uYWRoZXJlbmNlX3JhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTMgYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeSB0ZXh0LWNhcGl0YWxpemVcIiAqbmdJZj1cImRldGVjdGlvbj8uY2F0ZWdvcnlcIj4ge3tkZXRlY3Rpb24uY2F0ZWdvcnl9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTMgYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdFwiICpuZ0lmPVwiZGV0ZWN0aW9uPy5jdXN0b21lcl9lbnRyeV90aW1lXCI+RW50cnkgdGltZSA6IHt7ZGV0ZWN0aW9uLmN1c3RvbWVyX2VudHJ5X3RpbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTMgYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdFwiICpuZ0lmPVwiZGV0ZWN0aW9uPy5jdXN0b21lcl9leGl0X3RpbWVcIj5FeGl0IHRpbWUgOiB7e2RldGVjdGlvbi5jdXN0b21lcl9leGl0X3RpbWV9fTwvc3Bhbj4gICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMFwiICpuZ0lmPVwic2VsZWN0ICE9J2V5ZXRlc3QnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2aWRlbyBjb250cm9scyBjbGFzcz1cInctMTAwIGgtNDUwcHggcm91bmRlZC10b3BcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5UcmF4QUljaGVja2xpc3RDRE59fXt7ZGV0ZWN0aW9uLnZpZGVvX3BhdGh9fVwiIGFsdD1cIlwiPiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZpZGVvPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0wXCIgKm5nSWY9XCJzZWxlY3QgPT09J2V5ZXRlc3QnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2aWRlbyBjb250cm9scyBjbGFzcz1cInctMTAwIGgtNDUwcHggcm91bmRlZC10b3BcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5FeWVUZXN0Q0ROfX17e2RldGVjdGlvbi52aWRlb19wYXRofX1cIiBhbHQ9XCJcIj4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92aWRlbz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdCA9PT0nc3RvcmVvcGVuYW5kY2xvc2UnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIiAqbmdJZj1cImNsaWVudERhdGEubG9nbyYmY2xpZW50RGF0YS5sb2dvIT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwibXQtNSBtYi0zIHRleHQtY2VudGVyIGljb25zaXplXCIgc3JjPVwie3tjbGllbnREYXRhLmxvZ299fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB4LTEwIG10LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwidW5pLXRpdGxlXCI+Q2hlY2tsaXN0IE5hbWU6PC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ1bmktc3VidGl0bGVcIj46IHt7dGhpcy5jaGVja2xpc3ROYW1lfX0gPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBtYXJnaW4tdG9wLXNpZGVcIiAqbmdGb3I9XCJsZXQgc3RvcmUgb2Ygc3RvcmVPcGVuY2xvc2VWaWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBteC04IG15LThcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzdG9yZS5pbWFnZXNEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBweC0xMCBtdC01IG1hcmdpbi1sZWZ0LXNpZGUgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiICpuZ0lmPVwiaXRlbT8uYnVmZmVyX29wZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInVuaS10aXRsZVwiPkJ1ZmZlciBmb3IgT3BlbiBUaW1lICA6PC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiICpuZ0lmPVwiaXRlbT8uYnVmZmVyX29wZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidW5pLXN1YnRpdGxlXCI+OiB7e2l0ZW0uYnVmZmVyX29wZW4gfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIiAqbmdJZj1cIml0ZW0/LmJ1ZmZlcl9jbG9zZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwidW5pLXRpdGxlXCI+QnVmZmVyIGZvciBDbG9zZSBUaW1lICA6PC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiICpuZ0lmPVwiaXRlbT8uYnVmZmVyX2Nsb3NlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInVuaS1zdWJ0aXRsZVwiPjoge3tpdGVtLmJ1ZmZlcl9jbG9zZSB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJ1bmktdGl0bGVcIj5EZXRlY3Rpb24gU3RhdHVzPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIiAqbmdJZj1cIml0ZW0/LkZsYWdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ1bmktc3VidGl0bGVcIj46PHNwYW4gY2xhc3M9XCJtcy0zIGJhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlclwiICpuZ0lmPVwiaXRlbT8uRmxhZ1wiPkJyZWFjaGVkPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0zIGJhZGdlIGJhZGdlLWxpZ2h0LXN1Y2Nlc3NcIiAqbmdJZj1cIiFpdGVtPy5GbGFnXCI+Tm90LWJyZWFjaGVkPC9zcGFuPiA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInVuaS10aXRsZVwiPkRhdGU8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInVuaS1zdWJ0aXRsZVwiPjoge3tpdGVtLmRhdGV8ZGF0ZTonZGQtTU0teXl5eScgfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic25hcGNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbmFwaGVhZGVyIG1zLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0uc3RvcmVOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtLTAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltZyBtdC00IHB4LTMgcG9zaXRpb24tcmVsYXRpdmVcIiAqbmdJZj1cIiFpdGVtLm9wZW5UaW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJldmlldyBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBkLWZsZXggZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjIzXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIzIDIwXCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJHcm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiVmVjdG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk02LjUgNi4zMjIyN0g2LjUxTTE2LjI1IDkuMzIyMjdIMjEuNUwxOCAxNi4zMjIzTDE0LjkxIDEyLjAwMjNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlZlY3Rvcl8yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xLjUgMTYuMzIyOUg1LjI2QzUuNjMyNzMgMTYuMzI1NSA1Ljk5ODc3IDE2LjIyMzkgNi4zMTY4MiAxNi4wMjk1QzYuNjM0ODcgMTUuODM1MiA2Ljg5MjI4IDE1LjU1NTggNy4wNiAxNS4yMjI5TDguNSAxMi4zMjI5TTEuNSAxOC4zMjI5VjE0LjMyMjlNMTcuNSA2LjgyMjkxTDEzLjUgMTQuODIyOUwzLjExIDkuNjIyOTFDMi40MjAzMyA5LjI3NTUzIDEuODk2MzUgOC42NjkxIDEuNjUyNzIgNy45MzYzMkMxLjQwOTA5IDcuMjAzNTQgMS40NjU2NCA2LjQwNDEgMS44MSA1LjcxMjkxTDMuMTkgMi45MjI5MUMzLjM2MiAyLjU4MDE0IDMuNTk5ODQgMi4yNzQ2IDMuODg5OTQgMi4wMjM3NUM0LjE4MDAzIDEuNzcyOSA0LjUxNjcgMS41ODE2NSA0Ljg4MDcyIDEuNDYwOTNDNS4yNDQ3NCAxLjM0MDIxIDUuNjI4OTcgMS4yOTIzOSA2LjAxMTQ3IDEuMzIwMThDNi4zOTM5OCAxLjM0Nzk3IDYuNzY3MjYgMS40NTA4NCA3LjExIDEuNjIyOTFMMTcuNSA2LjgyMjkxWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcnZ0eHQgbXQtNSB0ZXh0Y2xyXCI+UHJldmlldyBub3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVmcmVzaHR4dCBtdC0yIHRleHRjbHJcIj5UaGUgc2VsZWN0ZWQgY2FtZXJhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIG5vdCBhdmFpbGFibGUgYXQgdGhlIG1vbWVudC48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cIml0ZW0ub3BlblRpbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJteC0xIGltZy1vcGNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheE9wZW5jbG9zZWNoZWNrbGlzdENETn19e3tpdGVtLnN0b3JlSWR9fS97e2l0ZW0uZGF0ZVN0cmluZ3xkYXRlOidkZC1NTS15eXl5J319L29wZXJhdGlvbl9zbmFwcy9vcGVuLmpwZWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIm9wZW4gY2xvc2Ugc25hcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1zdGFjayBteC0xIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbmFwdGV4dFwiPk9wZW5pbmcgU25hcDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNuYXB0aW1lXCI+e3tpdGVtLm9wZW5UaW1lfX0gLSB7e2l0ZW0uZGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1wcmltYXJ5IHNuYXBiYWRnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFpdGVtPy5vcGVuVGltZUZsYWdcIj5PbiBUaW1lPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlciBzbmFwYmFkZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtPy5vcGVuVGltZUZsYWdcIj5MYXRlIE9wZW48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltZyBtdC00IHB4LTMgcG9zaXRpb24tcmVsYXRpdmVcIiAqbmdJZj1cIiFpdGVtLmNsb3NlVGltZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByZXZpZXcgYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZC1mbGV4IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyM1wiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMyAyMFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiR3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlZlY3RvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNi41IDYuMzIyMjdINi41MU0xNi4yNSA5LjMyMjI3SDIxLjVMMTggMTYuMzIyM0wxNC45MSAxMi4wMDIzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJWZWN0b3JfMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMS41IDE2LjMyMjlINS4yNkM1LjYzMjczIDE2LjMyNTUgNS45OTg3NyAxNi4yMjM5IDYuMzE2ODIgMTYuMDI5NUM2LjYzNDg3IDE1LjgzNTIgNi44OTIyOCAxNS41NTU4IDcuMDYgMTUuMjIyOUw4LjUgMTIuMzIyOU0xLjUgMTguMzIyOVYxNC4zMjI5TTE3LjUgNi44MjI5MUwxMy41IDE0LjgyMjlMMy4xMSA5LjYyMjkxQzIuNDIwMzMgOS4yNzU1MyAxLjg5NjM1IDguNjY5MSAxLjY1MjcyIDcuOTM2MzJDMS40MDkwOSA3LjIwMzU0IDEuNDY1NjQgNi40MDQxIDEuODEgNS43MTI5MUwzLjE5IDIuOTIyOTFDMy4zNjIgMi41ODAxNCAzLjU5OTg0IDIuMjc0NiAzLjg4OTk0IDIuMDIzNzVDNC4xODAwMyAxLjc3MjkgNC41MTY3IDEuNTgxNjUgNC44ODA3MiAxLjQ2MDkzQzUuMjQ0NzQgMS4zNDAyMSA1LjYyODk3IDEuMjkyMzkgNi4wMTE0NyAxLjMyMDE4QzYuMzkzOTggMS4zNDc5NyA2Ljc2NzI2IDEuNDUwODQgNy4xMSAxLjYyMjkxTDE3LjUgNi44MjI5MVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJ2dHh0IG10LTUgdGV4dGNsclwiPlByZXZpZXcgbm90XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlZnJlc2h0eHQgbXQtMiB0ZXh0Y2xyXCI+VGhlIHNlbGVjdGVkIGNhbWVyYVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBub3QgYXZhaWxhYmxlIGF0IHRoZSBtb21lbnQuPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJpdGVtLmNsb3NlVGltZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cIm14LTEgaW1nLW9wY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5UcmF4T3BlbmNsb3NlY2hlY2tsaXN0Q0ROfX17e2l0ZW0uc3RvcmVJZH19L3t7aXRlbS5kYXRlU3RyaW5nfGRhdGU6J2RkLU1NLXl5eXknfX0vb3BlcmF0aW9uX3NuYXBzL2Nsb3NlLmpwZWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIkNoZWNrbGlzdCBWaWRlbyBQbGF5ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc3RhY2sgbXgtMSBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbmFwdGV4dFwiPkNsb3NpbmcgU25hcDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNuYXB0aW1lXCI+e3tpdGVtLmNsb3NlVGltZX19IC0ge3tpdGVtLmRhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnkgc25hcGJhZGdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWl0ZW0/LmNsb3NlVGltZUZsYWdcIj5PbiBUaW1lPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlciBzbmFwYmFkZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtPy5jbG9zZVRpbWVGbGFnXCI+RWFybHkgQ2xvc2U8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3QgPT09J3F1ZXVlYWxlcnQnfHxzZWxlY3Q9PT0nYm94YWxlcnQnfHxzZWxlY3Q9PT0nc3VzcGljaW91c2Zvb3RmYWxsJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCIgKm5nSWY9XCJjbGllbnREYXRhLmxvZ28mJmNsaWVudERhdGEubG9nbyE9PScnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cIm10LTUgbWItMyB0ZXh0LWNlbnRlciBpY29uc2l6ZVwiIHNyYz1cInt7Y2xpZW50RGF0YS5sb2dvfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiICpuZ0Zvcj1cImxldCBzdG9yZSBvZiBxdWV1ZUFsZXJ0Vmlld1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtMTAgbXQtNVwiICpuZ0lmPVwic2hvd211bHRpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwidW5pLXRpdGxlXCI+U3RvcmUgTmFtZTo8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC05XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInVuaS1zdWJ0aXRsZVwiPnt7c3RvcmU/LnN0b3JlTmFtZX19IHwgICB7e3N0b3JlPy5jaXR5fX0se3tzdG9yZT8uc3RhdGV9fSx7e3N0b3JlPy5jb3VudHJ5fX0gPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJ1bmktdGl0bGVcIj5DaGVja2xpc3QgTmFtZTo8L2gzPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ1bmktc3VidGl0bGVcIj57e2NoZWNrbGlzdE5hbWV9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiICpuZ0lmPVwic2VsZWN0PT09J2JveGFsZXJ0J3x8c2VsZWN0PT09J3N1c3BpY2lvdXNmb290ZmFsbCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInVuaS10aXRsZVwiPkRlc2NyaXB0aW9uOjwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTlcIiAqbmdJZj1cInNlbGVjdD09PSdib3hhbGVydCd8fHNlbGVjdD09PSdzdXNwaWNpb3VzZm9vdGZhbGwnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInVuaS1zdWJ0aXRsZVwiPnt7Y2hlY2tMaXN0RGVzY3JpcHRpb259fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG0tMCB3LTEwMCBcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgbXQtMlwiICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzdG9yZS5pbWFnZXNEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgYm9yZGVyY29sb3IgYmctc2Vjb25kYXJ5IG10LThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc3RhcnQgbXMtNSBtdC0yIG1iLTVcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS56b25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeSByb3VuZGVkLWxnIHAtMlwiPnt7aXRlbS56b25lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTMgZnctc2VtaWJvbGRcIj57eyBpdGVtLmRhdGVfdGltZXN0YW1wIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwidy0xMDAgaC0yNTBweCByb3VuZGVkLWJvdHRvbVwiIChjbGljayk9XCJvcGVuTW9kZWwoaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5UcmF4QUljaGVja2xpc3RDRE59fXt7aXRlbS5wYXRofX1cIiBhbHQ9XCJcIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLXBhZ2luYXRpb24gKm5nSWY9XCIhdmlld2xvYWRpbmcgJiYgIXZpZXdub0RhdGFcIiBbaXRlbXNQZXJQYWdlXT1cImxpbWl0XCIgW2N1cnJlbnRQYWdlXT1cIm9mZnNldFwiIFt0b3RhbEl0ZW1zXT1cInRvdGFsQ291bnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhZ2luYXRpb25TaXplc109J3BhZ2luYXRpb25TaXplcycgW3BhZ2VTaXplXT1cImxpbWl0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZXZpZXcoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFnZVNpemVDaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCI+PC9saWItcGFnaW5hdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhc2hvd3NpZGVuYXZcIiAoY2xpY2spPVwic2lkZW5hdigpXCIgY2xhc3M9XCJiYWNrQnV0dG9ubGVmdCB0ZXh0LWNlbnRlciBwdC0xIGN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwibXQtMiBtcy0yXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS43MjcxNCAxMi42MzY1TDEzLjM2MzUgOS4wMDAxM0w5LjcyNzE0IDUuMzYzNzdNNC42MzYyMyAxMi42MzY1TDguMjcyNTkgOS4wMDAxM0w0LjYzNjIzIDUuMzYzNzdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMTAxODI4XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+ICBcclxuPGRpdiBjbGFzcz1cInJvdyBjYXJkIG14LTAgcC0zIFwiICpuZ0lmPVwiY2hlY2tBSWNoZWNrbGlzdCgpXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyICB0ZXh0LWVuZFwiPlxyXG48YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBib3JkZXItcHJpbWFyeTFcIiAgW2Rpc2FibGVkXT1cIiFhcHByb3ZhbFN0YXR1c1wiIChjbGljayk9XCJhcHBvdmVDaGVja2xpc3QoKVwiPkFwcHJvdmVcclxuPC9idXR0b24+XHJcbjwvZGl2PlxyXG48L2Rpdj5cclxuPG5nLXRlbXBsYXRlICN6b29tUG9wdXAgbGV0LW1vZGVsPlxyXG4gICAgPGRpdiBjbGFzcz1cInAtOFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcHQtMCBwcy0xIHBlLTBcIj5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXN0YXJ0IG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidmlld0ltYWdlLnpvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeSByb3VuZGVkLWxnIHAtMlwiPnt7dmlld0ltYWdlLnpvbmV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidmlld0ltYWdlLmVtcHR5Qm94Q291bnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gPkVtcHR5IHNoZWx2ZXMgOiB7e3ZpZXdJbWFnZS5lbXB0eUJveENvdW50fX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInZpZXdJbWFnZS5lbnRyeV90aW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuID5FbnRyeSBUaW1lIDoge3t2aWV3SW1hZ2UuZW50cnlfdGltZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ2aWV3SW1hZ2UuZXhpdF90aW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuID5FeGl0IFRpbWUgOiB7e3ZpZXdJbWFnZS5leGl0X3RpbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidmlld0ltYWdlLnRlbXBfaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gPlRlbXAgSWQgOiB7e3ZpZXdJbWFnZS50ZW1wX2lkfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInZpZXdJbWFnZS50aW1lX3NwZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuID5UaW1lIFNwZW5kIDoge3t2aWV3SW1hZ2UudGltZV9zcGVuZH19IE1pbnM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIiAqbmdJZj1cInZpZXdJbWFnZS50aHJlc2hvbGQmJnZpZXdJbWFnZS5Ed2VsbHRpbWVcIj48cD5JZiB0aGUgcXVldWUgZXhjZWVkcyB7e3ZpZXdJbWFnZS50aHJlc2hvbGR9fSBwZW9wbGUgYW5kICB3YWl0IHRpbWUgc3VycGFzc2VzIHt7dmlld0ltYWdlLkR3ZWxsdGltZX19IG1pbnV0ZXMsIGFuIGFsZXJ0IHdpbGwgYmUgdHJpZ2dlcmVkPC9wPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zIGZ3LXNlbWlib2xkXCI+e3sgdmlld0ltYWdlLmRhdGVfdGltZXN0YW1wIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGRhdGEtYnMtZGlzbWlzcz1cIm1vZGFsXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwic3RyZWFtIGZ3LXNlbWlib2xkIHRleHQtbm93cmFwIG1lLTVcIiAqbmdJZj1cImNhbWVyYS5oZWlnaHQgJiYgY2FtZXJhLndpZHRoXCI+IFJlc29sdXRpb246IHt7Y2FtZXJhLmhlaWdodH19IFggIHt7Y2FtZXJhLndpZHRofX08L3NwYW4+IC0tPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeSBtZS0wXCIgKGNsaWNrKT1cIm1vZGVsLmRpc21pc3MoKVwiPjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE1IDVMNSAxNU01IDVMMTUgMTVcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwidmlld0ltYWdlLnBhdGhcIiBjbGFzcz1cIm10LTIgb3ZlcmZsb3ctYXV0b1wiPlxyXG4gICAgICAgICAgICA8aW1nICAgY2xhc3M9XCJyb3VuZGVkLTQgbXQtNSBpbWctcG9wdXAtc3JjIHctMTAwXCIgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFJY2hlY2tsaXN0Q0ROfX17e3ZpZXdJbWFnZS5wYXRofX1cIj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgXHJcbiAgICA8L2Rpdj5cclxuXHJcbjwvbmctdGVtcGxhdGU+Il19
|
|
2483
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FsbGVyeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2dhbGxlcnkvZ2FsbGVyeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2dhbGxlcnkvZ2FsbGVyeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBYyxZQUFZLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVySCxPQUFPLEtBQWdCLE1BQU0sT0FBTyxDQUFDO0FBQ3JDLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBS25DLE9BQU8sRUFBRSxPQUFPLEVBQThDLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUl0RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUVwRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBWnBGLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFtQmxCLE1BQU0sT0FBTyxnQkFBZ0I7SUFzRlA7SUFBd0I7SUFBZ0M7SUFBa0M7SUFBK0I7SUFDbkk7SUFBK0I7SUFBd0I7SUFBb0M7SUFBNEI7SUF0RmpJLEtBQUssR0FBRyxLQUFLLENBQUE7SUFDYixpQkFBaUIsR0FBUSxFQUFFLENBQUM7SUFDNUIsWUFBWSxHQUFHLENBQUMsQ0FBYyxFQUFFLEVBQUU7UUFDaEMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNyQyxPQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDOUMsQ0FBQyxDQUFBO0lBR0QsV0FBVyxDQUFXO0lBQ3RCLElBQUksR0FBUSxDQUFDLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFO1FBQ3ZELEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0tBQy9CLENBQUE7SUFDRCxVQUFVLEdBQVEsQ0FBQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRTtRQUMzRCxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtLQUNqQyxDQUFBO0lBQ0QsVUFBVSxHQUFRLEVBQUUsQ0FBQTtJQUNwQixVQUFVLEdBQUc7UUFDWCxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO1FBQzFDLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7UUFDckQsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7UUFDMUMsRUFBRSxLQUFLLEVBQUUsMENBQTBDLEVBQUUsS0FBSyxFQUFFLHNCQUFzQixFQUFFO1FBQ3BGLEVBQUUsS0FBSyxFQUFFLDRDQUE0QyxFQUFFLEtBQUssRUFBRSx3QkFBd0IsRUFBRTtRQUN4RixFQUFFLEtBQUssRUFBRSx5QkFBeUIsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO1FBQ3BELEVBQUUsS0FBSyxFQUFFLGdDQUFnQyxFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRTtRQUN0RSxFQUFFLEtBQUssRUFBRSx5QkFBeUIsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO1FBQ3BELEVBQUUsS0FBSyxFQUFFLHdCQUF3QixFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUU7UUFDM0QsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtRQUMxQyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO1FBQzFDLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFO0tBRWhELENBQUE7SUFDRCxhQUFhLEdBQVEsRUFBRSxDQUFDO0lBQ3hCLFNBQVMsR0FBVSxFQUFFLENBQUE7SUFDYixRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUNqQyxhQUFhLEdBQVEsRUFBRSxDQUFBO0lBQ3ZCLE1BQU0sR0FBUSxFQUFFLENBQUM7SUFDakIsTUFBTSxHQUFRLEVBQUUsQ0FBQztJQUNqQixLQUFLLEdBQVEsRUFBRSxDQUFDO0lBQ2hCLEtBQUssQ0FBTTtJQUNYLGNBQWMsQ0FBTTtJQUNwQixZQUFZLEdBQUcsRUFBRSxDQUFDO0lBQ2xCLFdBQVcsR0FBRyxDQUFDLENBQUM7SUFDaEIsVUFBVSxHQUFHLENBQUMsQ0FBQztJQUNmLGtCQUFrQixDQUFNO0lBQ3hCLE9BQU8sR0FBWSxJQUFJLENBQUM7SUFDeEIsTUFBTSxHQUFZLEtBQUssQ0FBQztJQUN4QixXQUFXLEdBQVksSUFBSSxDQUFDO0lBQzVCLFVBQVUsR0FBWSxLQUFLLENBQUM7SUFDNUIsTUFBTSxHQUFRLENBQUMsQ0FBQztJQUNoQixLQUFLLEdBQVEsQ0FBQyxDQUFDO0lBQ2YsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDckIsVUFBVSxDQUFNO0lBQ2hCLHFCQUFxQixHQUFRLEVBQUUsQ0FBQztJQUNoQyxlQUFlLENBQU07SUFDckIsbUJBQW1CLEdBQVEsRUFBRSxDQUFBO0lBQzdCLFNBQVMsQ0FBSztJQUNkLGtCQUFrQixDQUFNO0lBQ3hCLFdBQVcsQ0FBTTtJQUNqQixzQkFBc0IsQ0FBTTtJQUM1QixXQUFXLEdBQVEsS0FBSyxDQUFDO0lBQ3pCLFlBQVksR0FBUSxLQUFLLENBQUM7SUFDMUIsVUFBVSxDQUFNO0lBQ2hCLGFBQWEsR0FBUSxFQUFFLENBQUM7SUFDeEIsV0FBVyxHQUFRLEVBQUUsQ0FBQztJQUN0QixTQUFTLEdBQVEsRUFBRSxDQUFDO0lBQ3BCLFFBQVEsR0FBUSxFQUFFLENBQUM7SUFDbkIsV0FBVyxDQUFNO0lBQ2pCLFFBQVEsR0FBWSxJQUFJLENBQUM7SUFDekIsZUFBZSxHQUFRLEVBQUUsQ0FBQTtJQUN6QixtQkFBbUIsR0FBUSxFQUFFLENBQUE7SUFDN0IsU0FBUyxHQUFZLElBQUksQ0FBQztJQUMxQixVQUFVLEdBQVksS0FBSyxDQUFBO0lBQzNCLFVBQVUsR0FBWSxLQUFLLENBQUE7SUFDM0IsV0FBVyxHQUFRLE9BQU8sQ0FBQztJQUMzQixvQkFBb0IsR0FBUSxFQUFFLENBQUE7SUFDOUIsWUFBWSxHQUFRLEVBQUUsQ0FBQTtJQUN0QixjQUFjLEdBQVksS0FBSyxDQUFBO0lBQy9CLFFBQVEsR0FBVyxLQUFLLENBQUE7SUFDeEIsY0FBYyxHQUFFLENBQUMsb0JBQW9CLEVBQUUsc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFDLFVBQVUsRUFBQyxPQUFPLEVBQUMsb0JBQW9CLENBQUMsQ0FBQTtJQUN0SSxjQUFjLEdBQUUsQ0FBQyxzQkFBc0IsRUFBRSxrQkFBa0IsRUFBRSx3QkFBd0IsRUFBQyxlQUFlLENBQUMsQ0FBQTtJQUN0RyxpQkFBaUIsR0FBRSxDQUFDLFlBQVksRUFBQyxVQUFVLEVBQUMsb0JBQW9CLEVBQUMsVUFBVSxFQUFDLGNBQWMsQ0FBQyxDQUFBO0lBQzNGLGlCQUFpQixHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBQyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxDQUFBO0lBQ3BILGNBQWMsQ0FBTTtJQUNwQixTQUFTLENBQU07SUFDZixRQUFRLEdBQU8sRUFBRSxDQUFDO0lBQ2xCLFlBQW9CLEVBQWUsRUFBUyxFQUFzQixFQUFVLFdBQXdCLEVBQVUsRUFBcUIsRUFBVSxZQUFzQixFQUN6SixLQUFxQixFQUFVLE1BQWMsRUFBVSxZQUEwQixFQUFVLFFBQWtCLEVBQVUsUUFBeUI7UUFEdEksT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUFTLE9BQUUsR0FBRixFQUFFLENBQW9CO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFVO1FBQ3pKLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBRXhKLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVztZQUNyQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQy9CLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDO1lBRzFCLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRTtnQkFFdEQsSUFBSSxDQUFDLGlCQUFpQixHQUFHO29CQUN2QixTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7b0JBQ2xLLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztpQkFDakssQ0FBQTtnQkFDRCxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztvQkFDOUQsSUFBSSxFQUFFLENBQUMsSUFBUyxFQUFFLEVBQUU7d0JBQ2xCLElBQUksSUFBSSxFQUFFLE1BQU0sRUFBRTs0QkFDaEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7NEJBQzFCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQzt5QkFDckI7NkJBQU07NEJBQ0wsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBOzRCQUNsRSxJQUFJLFFBQVEsSUFBSSxRQUFRLEVBQUUsUUFBUSxFQUFFO2dDQUNsQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxRQUFRLEVBQUUsUUFBUSxDQUFBO2dDQUM5QyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7NkJBQ3JCO3lCQUNGO29CQUNILENBQUM7aUJBQ0YsQ0FBQyxDQUFDO2dCQUNILElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUU7b0JBQzdCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtpQkFDakQ7YUFDRjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsaUJBQWlCLEdBQUc7b0JBQ3ZCLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO29CQUMvRCxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztpQkFDOUQsQ0FBQTthQUVGO1FBQ0gsQ0FBQyxDQUFDLENBQUE7UUFDSixJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ25FLElBQUksR0FBRyxFQUFFO2dCQUNQLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFBO2FBQ3ZCO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBQ0QsY0FBYyxDQUFDLGFBQWtCO1FBQy9CLE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQztRQUNoQyxNQUFNLFVBQVUsR0FBRyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNELE9BQU8sVUFBVSxDQUFBO0lBQ25CLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFbkIsSUFBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsS0FBSSxNQUFNLEVBQUM7WUFDckMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1NBQ3REO1FBQ0QsSUFBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsS0FBSSxRQUFRLEVBQUM7WUFDdkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1NBQ3pEO1FBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDOUQsSUFBSSxFQUFFLENBQUMsSUFBUyxFQUFFLEVBQUU7Z0JBQ2xCLElBQUksSUFBSSxFQUFFLE1BQU0sRUFBRTtvQkFDaEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7b0JBQzFCLElBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsSUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sSUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sS0FBRyxLQUFLLEVBQUM7d0JBQy9GLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUE7d0JBQ3BCLElBQUksQ0FBQyxpQkFBaUIsR0FBRzs0QkFDdkIsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDOzRCQUM1QyxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7eUJBQzNDLENBQUE7d0JBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFBO3dCQUNySCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUE7cUJBQ2xIO29CQUNELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFDckIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO29CQUNwQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDbkIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2lCQUNwQjtxQkFBTTtvQkFDTCxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7b0JBQ2xFLElBQUksUUFBUSxJQUFJLFFBQVEsRUFBRSxRQUFRLEVBQUU7d0JBQ2xDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLFFBQVEsRUFBRSxRQUFRLENBQUE7d0JBQzlDLElBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsSUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sSUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sS0FBRyxLQUFLLEVBQUM7NEJBQ2pHLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUE7NEJBRW5CLElBQUksQ0FBQyxpQkFBaUIsR0FBRztnQ0FDdkIsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO2dDQUM1QyxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7NkJBQzNDLENBQUE7NEJBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFBOzRCQUNySCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUE7eUJBQ2xIO3dCQUNELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQzt3QkFDckIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO3dCQUNwQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7d0JBQ3BCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzt3QkFDbkIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO3FCQUNwQjtpQkFDRjtZQUlILENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDO1lBQzNCLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsd0JBQXdCLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFO1lBQzVGLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsd0JBQXdCLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO1NBQzVGLENBQUMsQ0FBQztJQUVMLENBQUM7SUFDRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDbkcsSUFBSSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxFQUFFO29CQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFBO2lCQUN0QztxQkFBTTtvQkFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQTtpQkFDdEI7WUFDSCxDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNoRSxJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLEVBQUU7b0JBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQTtpQkFDMUI7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUE7aUJBQ3BCO1lBQ0gsQ0FBQztTQUNGLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFDRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUM1RSxJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLEVBQUU7b0JBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUE7aUJBQ2xDO1lBQ0gsQ0FBQztTQUNGLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBVTtRQUNwQixJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtTQUNqRDthQUFNO1lBQ0wsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUNqSCxJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtvQkFDakIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLEVBQUU7d0JBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7d0JBQ3JDLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUE7d0JBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7cUJBQzVEO2dCQUNILENBQUM7YUFDRixDQUFDLENBQUE7WUFDRixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7U0FDbEQ7SUFFSCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQVU7UUFDcEIsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRTtZQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7U0FDakQ7YUFBTTtZQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtTQUNsRDtJQUNILENBQUM7SUFDRCxnQkFBZ0I7UUFFZCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDNUMsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUE7UUFDdEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUE7UUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUE7UUFDdkIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUFFO1lBQy9DLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDNUI7YUFBTTtZQUNMLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7U0FDNUM7SUFFSCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFjLEVBQUUsRUFBRTtZQUNyQyw4Q0FBOEM7WUFDOUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDakUsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQVU7UUFDMUIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUN6QyxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtZQUN6RSxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7WUFDbEUsSUFBSSxVQUFVLElBQUksUUFBUSxFQUFFO2dCQUMxQixJQUFJLFVBQVUsRUFBRSxhQUFhLEtBQUssQ0FBQyxJQUFJLFFBQVEsRUFBRSxhQUFhLEtBQUssQ0FBQyxFQUFFO29CQUNwRSxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBYyxFQUFFLEVBQUU7d0JBQ3JDLE1BQU0sV0FBVyxHQUNmLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7d0JBQ3JFLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztvQkFDOUMsQ0FBQyxDQUFDO2lCQUNIO3FCQUFNO29CQUNMLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFjLEVBQUUsRUFBRTt3QkFDckMsTUFBTSxXQUFXLEdBQ2YsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQzt3QkFDdEUsT0FBTyxXQUFXLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO29CQUM5QyxDQUFDLENBQUE7aUJBQ0Y7YUFDRjtTQUVGO1FBQ0QsK0JBQStCO0lBQ2pDLENBQUM7SUFDRCxjQUFjLENBQUMsS0FBVTtRQUN2QixJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDdEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQy9FLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFPLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUNwRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtZQUNoRCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUE7U0FDcEQ7YUFBTTtZQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQTtZQUM5QyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQTtZQUN0QixJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDL0UsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1NBQ2hEO0lBQ0gsQ0FBQztJQUNELFdBQVcsQ0FBQyxLQUFVLEVBQUUsU0FBYztRQUNwQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDNUMsSUFBSSxHQUFHLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQyxPQUFPLEVBQUU7Z0JBQ3JDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7YUFDcEM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6RSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtRQUVoRCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDbkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQzlDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUE7UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFN0UsQ0FBQztJQUNELFVBQVU7UUFDUixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQy9CLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN0RixNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDbEYsSUFBSSxFQUFFLFdBQVc7WUFDakIsVUFBVSxFQUFFLFVBQVU7WUFDdEIsYUFBYSxFQUFFLEVBQUU7WUFDakIsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUN4QixRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ3pCLFVBQVUsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUNuQixRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDakIsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ2pCLGFBQWEsRUFBRSxRQUFRO1lBQ3ZCLGtCQUFrQixFQUFFLEVBQUU7WUFDdEIsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUMxQixTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQzNCLG9CQUFvQixFQUFFLEVBQUU7WUFDeEIsTUFBTSxFQUFFLEVBQUU7WUFDVixRQUFRLEVBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ3pCLENBQUMsQ0FBQTtRQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUVyQyxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWlCO1FBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRTtZQUN0QyxPQUFNO1NBQ1A7UUFDRCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQTtRQUN4QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUE7UUFDaEYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUE7UUFDNUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ2pILElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsRUFBRTtvQkFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztvQkFDckMsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQTtvQkFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtvQkFDM0QsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsSUFBSSxNQUFNLEVBQUU7d0JBQzVDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUE7cUJBQ3hCO3lCQUFNO3dCQUNMLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztxQkFDOUI7aUJBQ0Y7WUFDSCxDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBRUosQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDbEYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzdGLElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsRUFBRTtvQkFDMUIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRTt3QkFDOUIsSUFBSSxPQUFPLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQTt3QkFDekYsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7d0JBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7d0JBQ3pELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLElBQUksTUFBTSxFQUFFOzRCQUM1QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBO3lCQUN2Qjs2QkFBTTs0QkFDTCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7eUJBQzdCO3FCQUNGO3lCQUFNO3dCQUNMLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQzt3QkFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTt3QkFDekQsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsSUFBSSxNQUFNLEVBQUU7NEJBQzVDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUE7eUJBQ3ZCOzZCQUFNOzRCQUNMLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQzt5QkFDN0I7cUJBQ0Y7aUJBQ0Y7WUFDSCxDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBS0osQ0FBQztJQUNELFlBQVk7UUFDVixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDakgsSUFBSSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxFQUFFO29CQUMxQixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO29CQUNyQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFO3dCQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUE7d0JBQzlDLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7d0JBQ3JDLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUE7d0JBQzVGLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFBO3dCQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO3dCQUV4RCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxJQUFJLE1BQU0sRUFBRTs0QkFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTt5QkFDdkI7NkJBQU07NEJBQ0wsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO3lCQUM3QjtxQkFDRjt5QkFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFO3dCQUNyQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUE7d0JBQy9DLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQTtxQkFDdEQ7eUJBQU07d0JBQ0wsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQTt3QkFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTt3QkFDM0QsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsSUFBSSxNQUFNLEVBQUU7NEJBQzVDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUE7eUJBQ3ZCOzZCQUFNOzRCQUNMLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQzt5QkFDN0I7cUJBQ0Y7aUJBQ0Y7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO29CQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUk7d0JBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO29CQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztpQkFFcEI7WUFDSCxDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBRWIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO2dCQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUk7b0JBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUVyQixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQVM7UUFDeEIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUMxRCxNQUFNLE9BQU8sR0FBRztZQUNkLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLO1lBQ2pELE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLO1lBQzdDLE9BQU8sRUFBRSxNQUFNO1lBQ2YsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTTtZQUNwQyxjQUFjLEVBQUUsZUFBZTtZQUMvQixNQUFNLEVBQUUsQ0FBQztTQUNWLENBQUE7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDaEQsSUFBSSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxFQUFFO29CQUMxQixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFBO29CQUN4QyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxLQUFLLElBQUksRUFBRTt3QkFDdEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUM7b0NBQ3pDLEtBQUssRUFBRSwwQkFBMEI7b0NBQ2pDLG9CQUFvQixFQUFFLGVBQWU7b0NBQ3JDLGVBQWUsRUFBRSxnQkFBZ0I7b0NBQ2pDLGVBQWUsRUFBRSxJQUFJO29DQUNyQixlQUFlLEVBQUUsT0FBTztvQ0FDeEIsWUFBWSxFQUFFLENBQUM7b0NBQ2Ysc0JBQXNCLEVBQUUsT0FBTztvQ0FDL0IsbUJBQW1CLEVBQUUsVUFBVTtvQ0FDL0IsaUJBQWlCLEVBQUUsVUFBVTtvQ0FDN0Isc0JBQXNCLEVBQUUsRUFBRTtvQ0FDMUIsU0FBUyxFQUFFLElBQUk7aUNBQ2hCLENBQUMsQ0FBQyxDQUFBO3FCQUNKO29CQUVELFVBQVUsQ0FBQyxHQUFHLEVBQUU7d0JBQ2QsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFOzRCQUN6RSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLENBQUE7NEJBQ3pGLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFBOzRCQUMvRSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUE7NEJBRW5ELElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBOzRCQUN2SCxJQUFJLFlBQVksSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQ0FDM0MsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxLQUFLLElBQUksRUFBRTtvQ0FDMUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUE7aUNBQ3RCO2dDQUNELElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUE7Z0NBQy9FLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFBO2dDQUM3RixJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUE7NkJBQ3BEOzRCQUNELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEtBQUssbUJBQW1CLEVBQUU7Z0NBQzFELElBQUksQ0FBQyxNQUFNLEdBQUcsbUJBQW1CLENBQUE7Z0NBQ2pDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQTs2QkFDL0I7aUNBQUssSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEVBQUU7Z0NBQ3pFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUE7Z0NBQzVDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUE7NkJBQzNCO2lDQUFNLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsRUFBRTtnQ0FDdkUsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztnQ0FDN0MsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFBOzZCQUNuQztpQ0FBTSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEVBQUU7Z0NBQ3ZFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUM7Z0NBQzdDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQTs2QkFDbkM7eUJBRUY7NkJBQU07NEJBRUwsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxhQUFhLElBQUksRUFBRSxFQUFFO2dDQUN4RSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUE7NkJBQ3RGO2lDQUFNO2dDQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFBOzZCQUNuRjs0QkFDRCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGFBQWEsSUFBSSxFQUFFLEVBQUU7Z0NBQ3hFLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsYUFBYSxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFBO2dDQUNuSCxJQUFJLFlBQVksSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQ0FDM0MsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxLQUFLLElBQUksRUFBRTt3Q0FDMUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUE7cUNBQ3RCO29DQUNELElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQTtvQ0FDekcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQTtvQ0FDL0UsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQTtvQ0FDL0UsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUE7b0NBQ3pELElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFBO29DQUN6RixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLENBQUMsQ0FBQTtpQ0FDOUY7cUNBQU07b0NBQ0wsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQTtvQ0FDNUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUE7b0NBQ2xGLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFBO29DQUNsRixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLG9CQUFvQixDQUFDLENBQUE7b0NBRWhHLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUE7b0NBQ3RELElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsYUFBYSxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFBO29DQUNuSCxJQUFJLFlBQVksSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTt3Q0FDM0MsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxLQUFLLElBQUksRUFBRTs0Q0FDMUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUE7eUNBQ3RCO3dDQUNELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLENBQUE7d0NBQ2pFLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFBO3dDQUM3RixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsa0JBQWtCLENBQUMsQ0FBQTtxQ0FDMUY7aUNBRUY7NkJBQ0Y7aUNBQU07Z0NBRUwsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQTtnQ0FDNUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUE7Z0NBQ2xGLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLEtBQUssSUFBSSxFQUFFO29DQUM3QyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQTtpQ0FDdEI7Z0NBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUE7Z0NBQ2xGLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLENBQUMsQ0FBQTtnQ0FDaEcsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQTtnQ0FDdEQsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUE7Z0NBQ25ILElBQUksWUFBWSxJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29DQUMzQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLG9CQUFvQixDQUFBO29DQUVqRSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsa0JBQWtCLENBQUMsQ0FBQTtpQ0FDMUY7NkJBQ0Y7eUJBRUY7d0JBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQTt3QkFFdkIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsS0FBSyxtQkFBbUIsRUFBRTs0QkFDckUsSUFBSSxDQUFDLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQTs0QkFDakMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFBO3lCQUMvQjs2QkFBSyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsRUFBRTs0QkFDcEYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFBOzRCQUM5QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFBOzRCQUN2RCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFBO3lCQUMzQjs2QkFBTyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEVBQUU7NEJBQ25GLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUM7NEJBQ3hELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQTt5QkFDbkM7NkJBQU0sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFOzRCQUNsRixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDOzRCQUN4RCxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUE7eUJBQ25DOzZCQUFNOzRCQUNMLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7NEJBQ25HLElBQUcsSUFBSSxFQUFDO2dDQUNOLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBRTtvQ0FDL0MsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxVQUFVLEtBQUssVUFBVSxFQUFFO3dDQUNwRCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUE7d0NBQzlDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO3FDQUMxQjt5Q0FBTTt3Q0FDTCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUE7d0NBQy9DLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO3FDQUN6QjtpQ0FDRjtxQ0FBTTtvQ0FDTCxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztpQ0FDOUI7NkJBQ0Y7eUJBQ0Y7b0JBQ0gsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUNOLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUE7aUJBQ3hCO3FCQUFNO29CQUNMLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO29CQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUE7b0JBQ25ELElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO29CQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztvQkFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFBO29CQUNsQixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFBO2lCQUN4QjtZQUVILENBQUM7WUFDRCxLQUFLLEVBQUUsR0FBRyxFQUFFO2dCQUNWLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUE7UUFDckIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFDRCxhQUFhLENBQUMsS0FBVTtRQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDbEQsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ3ZELElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUM3RixJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLEVBQUU7b0JBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztvQkFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtpQkFDMUQ7WUFDSCxDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUNELGFBQWEsQ0FBQyxLQUFVO1FBQ3RCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNwRCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFPLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNsRCxzQkFBc0I7UUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ2pILElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsRUFBRTtvQkFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztvQkFDckMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtpQkFDNUQ7WUFDSCxDQUFDO1NBQ0YsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBQ0QsWUFBWSxDQUFDLEtBQVU7UUFDckIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUE7UUFDeEIsSUFBSSxLQUFLLEtBQUssT0FBTyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQTtZQUM1QyxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7WUFDbEYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUM3RixJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtvQkFDakIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLEVBQUU7d0JBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUksR0FBRyxDQUFDLElBQUksQ0FBQTt3QkFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtxQkFDckQ7Z0JBQ0gsQ0FBQzthQUNGLENBQUMsQ0FBQTtTQUNIO2FBQU07WUFDTCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUE7WUFDOUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUNqSCxJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtvQkFDakIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLEVBQUU7d0JBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUE7d0JBQ3JDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO3FCQUNqRTtnQkFDSCxDQUFDO2FBQ0YsQ0FBQyxDQUFBO1NBQ0g7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDckQsQ0FBQztJQUNELFlBQVksQ0FBQyxLQUFVO1FBQ3JCLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDbEIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUE7UUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ25ELENBQUM7SUFDRCxhQUFhLENBQUMsS0FBVTtRQUN0QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQTtRQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDOUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBRWxELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUM5QyxNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsYUFBa0IsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDcEcsSUFBSSxlQUFlLEVBQUU7Z0JBQ25CLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO2FBQ3RCO2lCQUFNO2dCQUNMLEtBQUssQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2FBQ3ZCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzRSxJQUFHLElBQUksQ0FBQyxNQUFNLEtBQUcsWUFBWSxFQUFDO1lBQzVCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQTtTQUNwQjtRQUNELElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFVO1FBQ3JCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNqRCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFHRCxxQkFBcUI7UUFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ2pILElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsRUFBRTtvQkFDMUIsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7b0JBQ2pFLElBQUksR0FBRyxHQUFHO3dCQUNSLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRO3dCQUMzQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTTt3QkFDdkMsZUFBZSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUk7d0JBQzVDLGVBQWUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxhQUFhO3dCQUNyRCxhQUFhLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsa0JBQWtCO3dCQUN4RCxTQUFTLEVBQUUsTUFBTTt3QkFDakIsWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFVBQVU7d0JBQy9DLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRO3dCQUMzQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUTt3QkFDM0MsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU07d0JBQ3ZDLFdBQVcsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7cUJBRXpJLENBQUE7b0JBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUM7d0JBQzVFLElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFOzRCQUNqQixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsRUFBRTtnQ0FDM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQTtnQ0FDcEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQTtnQ0FDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQzs2QkFDdkI7aUNBQU07Z0NBQ0wsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQzs2QkFDdkI7d0JBQ0gsQ0FBQztxQkFDRixDQUFDLENBQUE7aUJBQ0g7WUFDSCxDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELG9CQUFvQjtRQUNsQixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDbEYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzdGLElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsRUFBRTtvQkFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtvQkFDcEQsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtvQkFDdkQsSUFBSSxHQUFHLEdBQUc7d0JBQ1IsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVE7d0JBQzNDLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxNQUFNO3dCQUN2QyxlQUFlLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsYUFBYTt3QkFDckQsZUFBZSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGFBQWE7d0JBQ3JELGFBQWEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxrQkFBa0I7d0JBQ3hELFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxVQUFVO3dCQUMvQyxTQUFTLEVBQUUsRUFBRTt3QkFDYixXQUFXLEVBQUUsS0FBSzt3QkFDbEIsWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFVBQVU7d0JBQy9DLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRO3dCQUMzQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUTt3QkFDM0MsV0FBVyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTt3QkFDeEksUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU07cUJBQ3hDLENBQUE7b0JBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUM7d0JBQzVFLElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFOzRCQUNqQixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsRUFBRTtnQ0FDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQTtnQ0FDdEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtnQ0FDekQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFBO2dDQUMvQyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQTtnQ0FDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQzs2QkFDdkI7aUNBQU07Z0NBQ0wsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQzs2QkFDdkI7d0JBQ0gsQ0FBQztxQkFDRixDQUFDLENBQUE7aUJBQ0g7WUFDSCxDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUNELGdCQUFnQjtRQUNkLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNsRixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDN0YsSUFBSSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxFQUFFO29CQUMxQixJQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFDO3dCQUM1QixJQUFJLE9BQU8sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFBO3dCQUN6RixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQzt3QkFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtxQkFDMUQ7eUJBQUk7d0JBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBSSxHQUFHLENBQUMsSUFBSSxDQUFBO3dCQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO3FCQUNyRDtvQkFDRCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7b0JBQzlFLElBQUksR0FBRyxHQUFHO3dCQUNSLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRO3dCQUMzQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTTt3QkFDdkMsZUFBZSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGFBQWE7d0JBQ3JELGVBQWUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxhQUFhO3dCQUNyRCxhQUFhLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsa0JBQWtCO3dCQUN4RCxZQUFZLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsVUFBVTt3QkFDL0MsU0FBUyxFQUFFLEVBQUU7d0JBQ2IsV0FBVyxFQUFFLEtBQUs7d0JBQ2xCLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxVQUFVO3dCQUMvQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUTt3QkFDM0MsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVE7d0JBQzNDLFdBQVcsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7d0JBQ3hJLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxNQUFNO3FCQUN4QyxDQUFBO29CQUNELElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDO3dCQUM1RSxJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTs0QkFDakIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLEVBQUU7Z0NBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUE7Z0NBQ3RDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7Z0NBQ3pELElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQTtnQ0FDL0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUE7Z0NBQ25CLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7NkJBQzVCO2lDQUFNO2dDQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7NkJBQzVCO3dCQUNILENBQUM7cUJBQ0YsQ0FBQyxDQUFBO2lCQUNIO1lBQ0gsQ0FBQztTQUNGLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFDRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDakgsSUFBSSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxFQUFFO29CQUMxQixJQUFJLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtvQkFDakUsSUFBSSxHQUFHLEdBQUc7d0JBQ1IsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVE7d0JBQzNDLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxNQUFNO3dCQUN2QyxlQUFlLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsYUFBYTt3QkFDckQsZUFBZSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGFBQWE7d0JBQ3JELGFBQWEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxrQkFBa0I7d0JBQ3hELFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxVQUFVO3dCQUMvQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsVUFBVSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO3dCQUN6RSxXQUFXLEVBQUUsRUFBRTt3QkFDZixZQUFZLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsVUFBVTt3QkFDL0MsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVE7d0JBQzNDLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRO3dCQUMzQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO3dCQUN4SSxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTTtxQkFDeEMsQ0FBQTtvQkFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQzt3QkFDNUUsSUFBSSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7NEJBQ2pCLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFFO2dDQUMzQixJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFBO2dDQUNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFBO2dDQUN2QywyREFBMkQ7Z0NBQzNELElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7NkJBQzVCO2lDQUFNO2dDQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7NkJBQzVCO3dCQUNILENBQUM7cUJBQ0YsQ0FBQyxDQUFBO2lCQUNIO1lBQ0gsQ0FBQztTQUNGLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFDRCxNQUFNLEdBQUcsUUFBUSxDQUFBO0lBQ2pCLFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQTtRQUNmLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFBO1FBQ3pELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQTtRQUN2RSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQTtRQUN2QixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQTtRQUN0QixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGtCQUFrQixLQUFLLG1CQUFtQixFQUFFO1lBQ3JFLElBQUksQ0FBQyxNQUFNLEdBQUcsbUJBQW1CLENBQUE7WUFDakMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFBO1NBQy9CO2FBQU0sSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEVBQUU7WUFDckYsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQTtZQUN2RCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFBO1NBQzNCO2FBQU8sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO1lBQ25GLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUM7WUFDeEQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFBO1NBQ25DO2FBQU0sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO1lBQ2xGLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUM7WUFDeEQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFBO1NBQ25DO2FBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsS0FBSyxlQUFlLEVBQUU7WUFDeEUsSUFBSSxDQUFDLE1BQU0sR0FBRyxlQUFlLENBQUM7WUFDOUIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUE7U0FDNUI7YUFBTTtZQUNMLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDbkcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUFFO2dCQUMvQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUU7b0JBQ3BELElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQTtvQkFDOUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7aUJBQzFCO3FCQUFNO29CQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQTtvQkFDL0MsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7aUJBQ3pCO2FBQ0Y7aUJBQU07Z0JBQ0wsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxVQUFVLEtBQUssVUFBVSxFQUFFO29CQUNwRCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUE7b0JBQzlDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2lCQUM5QjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUE7b0JBQy9DLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2lCQUM3QjthQUNGO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsSUFBSSxHQUFXLENBQUMsQ0FBQztJQUNqQixTQUFTLENBQUMsS0FBVTtRQUNsQixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksS0FBSyxFQUFFO1lBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDaEI7YUFBTTtZQUNMLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztJQUNELFlBQVk7UUFDVixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDOUUsSUFBSSxJQUFJLEdBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUMsQ0FBQSxFQUFFLENBQUE7UUFDcEgsSUFBSSxHQUFHLEdBQUc7WUFDUixVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUTtZQUMzQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTTtZQUN2QyxTQUFTLEVBQUUsTUFBTTtZQUNqQixVQUFVLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNO1lBQ3JDLGVBQWUsRUFBRSxJQUFJLENBQUMsTUFBTTtZQUM1QixRQUFRLEVBQUUsQ0FBQztZQUNYLE9BQU8sRUFBRSxLQUFLO1lBQ2QsV0FBVyxFQUFFLEtBQUs7WUFDbEIsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQTtRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDO1lBQzlFLElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsRUFBRTtvQkFDM0IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFBO29CQUN4QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7d0JBQzVDLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO29CQUN6QixDQUFDLENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDM0UsSUFBSSxDQUFDLFFBQVEsR0FBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQTtvQkFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUE7aUJBQ25FO1lBQ0gsQ0FBQztTQUNBLENBQUMsQ0FBQTtJQUVOLENBQUM7SUFDRCxjQUFjLENBQUMsSUFBUztRQUN0QixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDbkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQzlFLElBQUksSUFBSSxHQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUEsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFDLENBQUEsRUFBRSxDQUFBO1FBQ3BILElBQUksR0FBRyxHQUFHO1lBQ1IsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVE7WUFDM0MsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU07WUFDdkMsU0FBUyxFQUFFLE1BQU07WUFDakIsVUFBVSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTTtZQUNyQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDNUIsUUFBUSxFQUFFLENBQUM7WUFDWCxPQUFPLEVBQUUsS0FBSztZQUNkLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLFVBQVUsRUFBRSxJQUFJO1NBQ2pCLENBQUE7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQztZQUM5RSxJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLEVBQUU7b0JBQzNCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQTtvQkFDeEMsSUFBSSxDQUFDLFFBQVEsR0FBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQTtvQkFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUE7b0JBQ2xFLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFBO29CQUNoQixJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUU7d0JBQ2hELE9BQU8sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFBO3dCQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQzs0QkFDZixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87NEJBQ3hCLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUzt5QkFDN0IsQ0FBQyxDQUFBO29CQUNKLENBQUMsQ0FBQyxDQUFDO29CQUVILElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQTtvQkFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtvQkFDeEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQzNFLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO29CQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQTtvQkFDbkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO29CQUN4QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUE7aUJBR3RCO3FCQUFNO29CQUNMLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO29CQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztvQkFDbkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO2lCQUV4QjtZQUNILENBQUM7U0FDRixDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsa0JBQWtCLENBQUMsSUFBUztRQUMxQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDOUUsSUFBSSxHQUFHLEdBQUc7WUFDUixVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUTtZQUMzQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTTtZQUN2QyxTQUFTLEVBQUUsTUFBTTtZQUNqQixVQUFVLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNO1lBQ3JDLGVBQWUsRUFBRSxJQUFJLENBQUMsTUFBTTtZQUM1QixRQUFRLEVBQUUsQ0FBQztZQUNYLE9BQU8sRUFBRSxLQUFLO1lBQ2QsV0FBVyxFQUFFLEtBQUs7WUFDbEIsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRO1NBQzFCLENBQUE7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDO1lBQ2xGLElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsRUFBRTtvQkFDM0IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUE7b0JBQ3pELElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFBO29CQUNoQixJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUU7d0JBQ2hELE9BQU8sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFBO3dCQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQzs0QkFDZixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87NEJBQ3hCLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUzt5QkFDN0IsQ0FBQyxDQUFBO29CQUNKLENBQUMsQ0FBQyxDQUFDO29CQUVILElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQTtvQkFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtvQkFDeEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQzNFLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO29CQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQTtvQkFDbkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO29CQUN4QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQTtpQkFHMUI7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO29CQUNuQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztvQkFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7aUJBRXhCO1lBQ0gsQ0FBQztTQUNGLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFDRCxjQUFjO1FBQ1osSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUE7UUFDZCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDOUUsSUFBSSxLQUFLLEdBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUMsQ0FBQSxFQUFFLENBQUE7UUFDcEgsSUFBSSxHQUFHLEdBQUc7WUFDUixVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUTtZQUMzQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTTtZQUN2QyxTQUFTLEVBQUUsTUFBTTtZQUNqQixVQUFVLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNO1lBQ3JDLGVBQWUsRUFBRSxJQUFJLENBQUMsTUFBTTtZQUM1QixRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUMzQixPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDbkIsV0FBVyxFQUFFLElBQUk7WUFDakIsVUFBVSxFQUFFLEtBQUs7U0FDbEIsQ0FBQTtRQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFBO1FBQ2QsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDO1lBQzlFLElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsRUFBRTtvQkFDM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQTtvQkFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQTtvQkFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUE7b0JBQ2xFLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUU7d0JBQzNDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUE7b0JBQ3JFLENBQUMsQ0FBQyxDQUFDO29CQUNILElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUE7b0JBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO29CQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQTtvQkFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO2lCQUNyQjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztvQkFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUE7b0JBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO29CQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztpQkFFckI7WUFDSCxDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUlELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQTtRQUNmLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUM5RSxJQUFJLEdBQUcsR0FBRztZQUNSLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRO1lBQzNDLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQ3ZDLFNBQVMsRUFBRSxNQUFNO1lBQ2pCLFVBQVUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU07WUFDckMsZUFBZSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQzVCLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQzNCLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSztZQUNuQixXQUFXLEVBQUUsSUFBSTtZQUNqQixVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FFMUIsQ0FBQTtRQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDO1lBQ2xGLElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsRUFBRTtvQkFDM0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUE7b0JBRXhELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRTt3QkFDL0MsT0FBTyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQTtvQkFDckUsQ0FBQyxDQUFDLENBQUM7b0JBQ0gsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQTtvQkFDckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFBO29CQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztvQkFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7aUJBQ3JCO3FCQUFNO29CQUNMLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO29CQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQTtvQkFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO2lCQUVyQjtZQUNILENBQUM7U0FDRixDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBVSxFQUFFLElBQVM7UUFDdkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ3JDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFBO1FBQ3hCLElBQUksS0FBSyxDQUFDLGFBQWEsS0FBSyxJQUFJLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUE7U0FDdEI7YUFBTTtZQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUE7WUFDcEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUE7U0FDckI7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLENBQUMsQ0FBQTtRQUMvRSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxRQUFRLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFBO1FBQ3JFLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxvQkFBb0IsQ0FBQyxDQUFBO1FBRW5GLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQTtZQUM5QyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUE7WUFDeEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUNqSCxJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtvQkFDakIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLEVBQUU7d0JBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7d0JBQ3JDLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUE7d0JBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7cUJBQzVEO2dCQUNILENBQUM7YUFDRixDQUFDLENBQUE7U0FDSDthQUFNO1lBQ0wsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1lBQzVDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUNyRCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7WUFDbEYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUM3RixJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtvQkFDakIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLEVBQUU7d0JBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQzt3QkFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtxQkFDMUQ7Z0JBQ0gsQ0FBQzthQUNGLENBQUMsQ0FBQTtTQUNIO0lBRUgsQ0FBQztJQUdELHNCQUFzQixDQUFDLElBQVM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUE7UUFDdkIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQzlFLElBQUksR0FBRyxHQUFHO1lBQ1IsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVE7WUFDdkMsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVE7WUFDM0MsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU07WUFDdkMsU0FBUyxFQUFFLE1BQU07WUFDakIsVUFBVSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTTtZQUNyQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDNUIsV0FBVyxFQUFFLEtBQUs7WUFDbEIsT0FBTyxFQUFFLEVBQUU7WUFDWCxRQUFRLEVBQUUsQ0FBQztZQUNYLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUTtTQUMxQixDQUFBO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQztZQUN6RixJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLEVBQUU7b0JBQzNCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztvQkFDekMsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7b0JBQ2pCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRTt3QkFDaEQsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUE7d0JBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDOzRCQUNmLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTzs0QkFDeEIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTO3lCQUM3QixDQUFDLENBQUE7b0JBQ0osQ0FBQyxDQUFDLENBQUM7b0JBQ0gsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQTtvQkFDdEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQzNFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQTtvQkFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtvQkFDeEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFBO29CQUNuQixJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQTtpQkFDakM7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO29CQUNuQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztvQkFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUE7aUJBRXZCO1lBQ0gsQ0FBQztTQUNGLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFDRCxjQUFjLEdBQUcsS0FBSyxDQUFBO0lBQ3RCLGdCQUFnQixDQUFDLEtBQVUsRUFBRSxPQUFZLEVBQUUsUUFBYTtRQUN0RCxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1lBQ3hCLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7Z0JBQ3hDLElBQUksU0FBUyxHQUFRLEVBQUUsQ0FBQTtnQkFDdkIsSUFBSSxNQUFNLEdBQVEsRUFBRSxDQUFBO2dCQUNwQixNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQTtnQkFDaEMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQTtnQkFDbEQsSUFBSSxRQUFRLEdBQUc7b0JBQ2IsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO29CQUNoQyxTQUFTLEVBQUUsU0FBUztvQkFDcEIsVUFBVSxFQUFFLE1BQU07aUJBQ25CLENBQUE7Z0JBQ0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTthQUN4QztpQkFBTTtnQkFDTCxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxLQUFLLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQTtnQkFDNUcsSUFBSSxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDNUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO3dCQUN6QyxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssT0FBTyxDQUFDLFdBQVcsRUFBRTs0QkFDNUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUE7NEJBQ3ZELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQTt5QkFDMUM7b0JBQ0gsQ0FBQyxDQUFDLENBQUE7aUJBQ0g7cUJBQU07b0JBQ0wsSUFBSSxTQUFTLEdBQVEsRUFBRSxDQUFBO29CQUN2QixJQUFJLE1BQU0sR0FBUSxFQUFFLENBQUE7b0JBR3BCLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFBO29CQUVoQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFBO29CQUNsRCxJQUFJLFFBQVEsR0FBRzt3QkFDYixXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVc7d0JBQ2hDLFNBQVMsRUFBRSxTQUFTO3dCQUNwQixVQUFVLEVBQUUsTUFBTTtxQkFDbkIsQ0FBQTtvQkFDRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO2lCQUN4QzthQUVGO1lBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDbEMsSUFBSSxHQUFHLENBQUMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUU7b0JBQzFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7d0JBQzlCLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUU7NEJBQ3JELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFBO3lCQUNwQjtvQkFDSCxDQUFDLENBQUMsQ0FBQTtpQkFDSDtZQUNILENBQUMsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtTQUN4QjthQUFNO1lBRUwsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO2dCQUN6QyxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRTtvQkFDM0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFBO29CQUMvRixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFBO2lCQUVuRjtZQUNILENBQUMsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFBO1NBQ25HO1FBR0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBQ0Qsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUseUJBQXlCLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDM0csSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFO1lBQ2hELE9BQU8sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFBO1lBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNmLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztnQkFDeEIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTO2FBQzdCLENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFBO1FBQ3pCLElBQUksQ0FBQyxlQUFlO1lBQ2xCLENBQUM7b0JBQ0MsU0FBUyxFQUFFLHlCQUF5QjtvQkFDcEMsUUFBUSxFQUFFO3dCQUNSLGlGQUFpRjt3QkFDakYsaUZBQWlGO3dCQUNqRixpRkFBaUY7d0JBQ2pGLGlGQUFpRjt3QkFDakYsaUZBQWlGO3dCQUNqRixpRkFBaUY7d0JBQ2pGLGlGQUFpRjt3QkFDakYsc0ZBQXNGO3dCQUN0RixpRkFBaUY7d0JBQ2pGLHNGQUFzRjt3QkFDdEYsaUZBQWlGO3dCQUNqRixzRkFBc0Y7d0JBQ3RGLHNGQUFzRjt3QkFDdEYsaUZBQWlGO3dCQUNqRixzRkFBc0Y7d0JBQ3RGLHNGQUFzRjt3QkFDdEYsc0ZBQXNGO3dCQUN0RixzRkFBc0Y7d0JBQ3RGLHNGQUFzRjt3QkFDdEYsc0ZBQXNGO3FCQUN2RjtpQkFDRixDQUFDLENBQUE7UUFDSixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQTtRQUNuQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQTtRQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQTtJQUNyQixDQUFDO0lBQ0Qsc0JBQXNCLENBQUMsSUFBUztRQUM5QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDOUUsSUFBSSxHQUFHLEdBQUc7WUFDUixNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUTtZQUN2QyxVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUTtZQUMzQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTTtZQUN2QyxTQUFTLEVBQUUsTUFBTTtZQUNqQixVQUFVLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNO1lBQ3JDLGVBQWUsRUFBRSxJQUFJLENBQUMsTUFBTTtZQUM1QixXQUFXLEVBQUUsS0FBSztZQUNsQixRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUMzQixPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDbkIsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRO1NBQzFCLENBQUE7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQztZQUMvRSxJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLEVBQUU7b0JBQzNCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztvQkFDekMsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUE7b0JBQ2hCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRTt3QkFDaEQsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUE7d0JBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDOzRCQUNmLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTzs0QkFDeEIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTO3lCQUM3QixDQUFDLENBQUE7b0JBQ0osQ0FBQyxDQUFDLENBQUM7b0JBQ0gsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQTtvQkFDdEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQzNFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQTtvQkFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtvQkFDeEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFBO29CQUNuQixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQTtpQkFDOUI7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO29CQUNuQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztvQkFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUE7aUJBRXpCO1lBQ0gsQ0FBQztTQUNGLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFDRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ2pILElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsRUFBRTtvQkFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztvQkFDckMsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQTtvQkFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtvQkFDM0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUE7b0JBQ2YsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsS0FBSyxtQkFBbUIsRUFBRTt3QkFDckUsSUFBSSxDQUFDLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQTt3QkFDakMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFBO3FCQUMvQjt5QkFBSyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsRUFBRTt3QkFDcEYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFBO3dCQUM5QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFBO3dCQUN2RCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFBO3FCQUMzQjt5QkFBTyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEVBQUU7d0JBQ25GLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUM7d0JBQ3hELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQTtxQkFDbkM7eUJBQU0sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO3dCQUNsRixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDO3dCQUN4RCxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUE7cUJBQ25DO3lCQUFNO3dCQUNMLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7d0JBQzFFLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsVUFBVSxLQUFLLFVBQVUsRUFBRTs0QkFDcEQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7eUJBQzFCOzZCQUFNOzRCQUNMLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO3lCQUN6QjtxQkFDRjtpQkFFRjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztpQkFDckI7WUFDSCxDQUFDO1lBQ0QsS0FBSyxFQUFFLEdBQUcsRUFBRTtnQkFDVixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztZQUN0QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBRUwsQ0FBQztJQUNELE1BQU07UUFDSixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNoQixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGtCQUFrQixLQUFLLG1CQUFtQixFQUFFO1lBQ3JFLElBQUksQ0FBQyxNQUFNLEdBQUcsbUJBQW1CLENBQUE7WUFDakMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUE7U0FDMUI7YUFBSyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsRUFBRTtZQUNwRixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFBO1lBQ3ZELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQTtTQUN0QjthQUFNLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsRUFBRTtZQUNsRixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDO1lBQ3hELElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFBO1NBQzlCO2FBQUssSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO1lBQ2pGLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUM7WUFDeEQsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUE7U0FDakM7SUFDSCxDQUFDO0lBQ0QseUJBQXlCO1FBRXZCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFBO1FBQ2QsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzFCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUM5RSxJQUFJLEdBQUcsR0FBRztZQUNSLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRO1lBQ3ZDLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRO1lBQzNDLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQ3ZDLFNBQVMsRUFBRSxNQUFNO1lBQ2pCLFVBQVUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU07WUFDckMsZUFBZSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQzVCLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQzNCLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSztZQUNuQixVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FDMUIsQ0FBQTtRQUVELElBQUksQ0FBQyxXQUFXLENBQUMseUJBQXlCLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUM7WUFDekYsSUFBSSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFFO29CQUMzQixJQUFJLENBQUMsc0JBQXNCLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUE7b0JBQzNDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO29CQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQTtvQkFDdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQTtpQkFDdkM7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO2lCQUV4QjtZQUNILENBQUM7U0FDRixDQUFDLENBQUE7SUFDSixDQUFDO0lBQ0Qsc0JBQXNCO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFBO1FBQ2YsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQzNCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUM5RSxJQUFJLEdBQUcsR0FBRztZQUNSLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRO1lBQzNDLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQ3ZDLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRO1lBQ3ZDLFNBQVMsRUFBRSxNQUFNO1lBQ2pCLFVBQVUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU07WUFDckMsZUFBZSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQzVCLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQzNCLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSztZQUNuQixVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FDMUIsQ0FBQTtRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDO1lBQy9FLElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsRUFBRTtvQkFDM0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQTtvQkFDcEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFBO29CQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFBO2lCQUN2QztxQkFBTTtvQkFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztvQkFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUE7aUJBRXZCO1lBQ0gsQ0FBQztTQUNGLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFDRCxjQUFjO1FBQ1osSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQzlFLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUM5RSxJQUFJLE9BQU8sR0FBRztZQUNaLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRO1lBQzNDLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQ3ZDLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxVQUFVO1lBQy9DLFNBQVMsRUFBRSxNQUFNO1lBQ2pCLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLFlBQVksRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDbkQsYUFBYSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGtCQUFrQjtZQUN4RCxlQUFlLEVBQUUsUUFBUTtZQUN6QixXQUFXLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1NBQ2xELENBQUE7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQztZQUNsRixJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLEVBQUU7b0JBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUE7aUJBQzFDO3FCQUFNO29CQUNMLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFBO2lCQUN2QjtZQUNILENBQUM7U0FDRixDQUFDLENBQUE7SUFDSixDQUFDO0lBQ0Qsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFBO1FBQy9DLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNuRyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztZQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQTtTQUN0QjthQUFNLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3pELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFBO1lBRXRCLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLHNCQUFzQixJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLHdCQUF3QixFQUFFO2dCQUNoTSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztnQkFDdkIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFBO2FBQ3RCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFBO2FBQ3hCO1NBRUY7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNoQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDOUUsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQzlFLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBRTtZQUMvQyxJQUFJLEdBQUcsR0FBRztnQkFDUixVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUTtnQkFDM0MsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU07Z0JBQ3ZDLGVBQWUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxhQUFhO2dCQUNyRCxlQUFlLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsYUFBYTtnQkFDckQsYUFBYSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGtCQUFrQjtnQkFDeEQsWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFVBQVU7Z0JBQy9DLFNBQVMsRUFBRSxNQUFNO2dCQUNqQixXQUFXLEVBQUUsS0FBSztnQkFDbEIsWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFVBQVU7Z0JBQy9DLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRO2dCQUMzQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUTtnQkFDM0MsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU07Z0JBQ3ZDLFdBQVcsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7YUFDekksQ0FBQTtZQUNELElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDO2dCQUM1RSxJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtvQkFDakIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLEVBQUU7d0JBQzNCLHFEQUFxRDt3QkFDckQsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7d0JBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO3dCQUNwQixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUU7NEJBQ3BELElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFBO3lCQUN0RTs2QkFBTTs0QkFDTCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQTt5QkFDckU7d0JBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUE7cUJBQ2xDO3lCQUFNO3dCQUNMLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO3dCQUN4QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO3dCQUM3QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQzt3QkFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7d0JBQ25CLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO3dCQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztxQkFFeEI7Z0JBQ0gsQ0FBQzthQUNGLENBQUMsQ0FBQTtTQUNIO2FBQU07WUFDTCxJQUFJLEdBQUcsR0FBRztnQkFDUixVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUTtnQkFDM0MsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU07Z0JBQ3ZDLGVBQWUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJO2dCQUM1QyxlQUFlLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsYUFBYTtnQkFDckQsYUFBYSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGtCQUFrQjtnQkFDeEQsWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFVBQVU7Z0JBQy9DLFNBQVMsRUFBRSxNQUFNO2dCQUNqQixXQUFXLEVBQUUsS0FBSztnQkFDbEIsWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFVBQVU7Z0JBQy9DLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRO2dCQUMzQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUTtnQkFDM0MsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU07Z0JBQ3ZDLFdBQVcsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7YUFFekksQ0FBQTtZQUNELElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDO2dCQUM1RSxJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtvQkFDakIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLEVBQUU7d0JBQzNCLHFEQUFxRDt3QkFDckQsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7d0JBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO3dCQUNwQixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUU7NEJBQ3BELElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFBO3lCQUN0RTs2QkFBTTs0QkFDTCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQTt5QkFDckU7d0JBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUE7cUJBQ2hDO3lCQUFNO3dCQUNMLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO3dCQUN4QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO3dCQUM3QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQzt3QkFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7d0JBQ25CLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO3dCQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztxQkFFeEI7Z0JBQ0gsQ0FBQzthQUNGLENBQUMsQ0FBQTtTQUNIO0lBQ0gsQ0FBQztJQUNELGVBQWU7UUFDYixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksR0FBRyxDQUFDLENBQUM7UUFDakcsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDOUQsUUFBUSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFDaEYsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUM5QixJQUFJLE1BQU0sSUFBSSxRQUFRLEVBQUU7Z0JBQ3RCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLFdBQVcsRUFBRTtvQkFDOUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUE7aUJBQ3hCO3FCQUFNO29CQUNMLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQTtpQkFFbkI7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUNELGdCQUFnQjtRQUNkLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUM5RSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDN0UsSUFBSSxPQUFPLEdBQUc7WUFDWixVQUFVLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNO1lBQ3JDLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRO1lBQzNDLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQ3ZDLFNBQVMsRUFBRSxNQUFNO1lBQ2pCLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLG9CQUFvQixFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGtCQUFrQjtZQUMvRCxZQUFZLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsVUFBVTtTQUNoRCxDQUFBO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQztZQUNwRixJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLEVBQUU7b0JBQzNCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQTtvQkFDckIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUFFO3dCQUMvQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO3FCQUM1Qjt5QkFBTTt3QkFDTCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO3FCQUM1QztvQkFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsR0FBRyxDQUFDLE9BQU8sZUFBZSxDQUFDLENBQUE7aUJBQzFGO1lBQ0gsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNoQixJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFBO1lBQ3BELENBQUM7U0FDRixDQUFDLENBQUE7SUFDSixDQUFDO0lBR0QsV0FBVztRQUNULElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUM5RSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDN0UsSUFBSSxPQUFPLEdBQUc7WUFDWixVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUTtZQUMzQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTTtZQUN2QyxTQUFTLEVBQUUsTUFBTTtZQUNqQixXQUFXLEVBQUUsSUFBSTtZQUNqQixvQkFBb0IsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxrQkFBa0I7WUFDL0QsVUFBVSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTTtZQUNyQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsVUFBVTtTQUNoRCxDQUFBO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUM7WUFDL0UsSUFBSSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFFO29CQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsR0FBRyxDQUFDLE9BQU8sZUFBZSxDQUFDLENBQUE7b0JBQ3pGLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQTtvQkFDckIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUFFO3dCQUMvQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO3FCQUM1Qjt5QkFBTTt3QkFDTCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO3FCQUM1QztpQkFDRjtZQUNILENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDaEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQTtZQUNwRCxDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBSUosQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFTO1FBQ3RCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFBO1FBQ3pCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUE7UUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUE7UUFDbkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQzlFLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUM5RSxJQUFJLEdBQUcsR0FBRztZQUNSLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRO1lBQzNDLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQ3ZDLGVBQWUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxhQUFhO1lBQ3JELGVBQWUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxhQUFhO1lBQ3JELGFBQWEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxrQkFBa0I7WUFDeEQsWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFVBQVU7WUFDL0MsV0FBVyxFQUFFLEtBQUs7WUFDbEIsU0FBUyxFQUFFLE1BQU07WUFDakIsWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFVBQVU7WUFDL0MsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVE7WUFDM0MsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVE7WUFDM0MsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU07WUFDdkMsV0FBVyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtTQUN6SSxDQUFBO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUM7WUFDNUUsSUFBSSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFFO29CQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUM7b0JBQ2xELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO29CQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztvQkFDcEIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxVQUFVLEtBQUssVUFBVSxFQUFFO3dCQUNwRCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQTtxQkFDdEU7eUJBQU07d0JBQ0wsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUE7cUJBQ3JFO29CQUNELElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFBO2lCQUNsQztxQkFBTTtvQkFDTCxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztvQkFDeEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztvQkFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO29CQUNuQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztvQkFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7aUJBRXhCO1lBQ0gsQ0FBQztTQUNGLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFDRCxTQUFTLENBQUMsSUFBUztRQUNqQixJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQTtRQUN6QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFBO1FBRTdCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFBO1FBQ25CLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUM5RSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDOUUsSUFBSSxHQUFHLEdBQUc7WUFDUixVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUTtZQUMzQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTTtZQUN2QyxlQUFlLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSTtZQUM1QyxlQUFlLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsYUFBYTtZQUNyRCxhQUFhLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsa0JBQWtCO1lBQ3hELFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxVQUFVO1lBQy9DLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLFNBQVMsRUFBRSxNQUFNO1lBQ2pCLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxVQUFVO1lBQy9DLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRO1lBQzNDLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRO1lBQzNDLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQ3ZDLFdBQVcsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7U0FDekksQ0FBQTtRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDO1lBQzVFLElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsRUFBRTtvQkFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDO29CQUNsRCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztvQkFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7b0JBQ3BCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsVUFBVSxLQUFLLFVBQVUsRUFBRTt3QkFDcEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUE7cUJBQ3RFO3lCQUFNO3dCQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFBO3FCQUNyRTtvQkFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQTtpQkFDaEM7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7b0JBQ3hCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUM7b0JBQzdCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO29CQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztvQkFDbkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO2lCQUV4QjtZQUNILENBQUM7U0FDRixDQUFDLENBQUE7SUFDSixDQUFDO0lBR0QsWUFBWSxDQUFDLFdBQWdCLEVBQUUsWUFBaUI7UUFDOUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUE7UUFFaEMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbkMsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFO2dCQUNiLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUMvQjtRQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFBO1FBQ3ZCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUM5RSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDOUUsSUFBSSxDQUFDLHFCQUFxQixHQUFHO1lBQzNCLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRO1lBQzNDLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQ3ZDLGVBQWUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJO1lBQzVDLGVBQWUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxhQUFhO1lBQ3JELFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxVQUFVO1lBQy9DLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLFNBQVMsRUFBRSxNQUFNO1lBQ2pCLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxVQUFVO1lBQy9DLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQzNCLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSztZQUNuQixhQUFhLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsa0JBQWtCO1lBQ3hELG9CQUFvQixFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGtCQUFrQjtZQUMvRCxVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUTtZQUMzQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUTtZQUMzQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGVBQWU7WUFDakMsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU07U0FDeEMsQ0FBQTtRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDO1lBQ2pHLElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsRUFBRTtvQkFDM0IsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFBO29CQUNyQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztvQkFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFBO29CQUNyRCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztvQkFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUE7aUJBQ3hCO3FCQUFNO29CQUNMLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUE7b0JBQzVCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO29CQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQTtpQkFFdkI7WUFDSCxDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELGNBQWMsQ0FBQyxXQUFnQixFQUFFLFlBQWlCO1FBQ2hELGdDQUFnQztRQUNoQyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQTtRQUVoQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQixJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNuQyxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQy9CO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUE7UUFDdkIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQzlFLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUM5RSxJQUFJLENBQUMscUJBQXFCLEdBQUc7WUFDM0IsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVE7WUFDM0MsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU07WUFDdkMsZUFBZSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGFBQWE7WUFDckQsZUFBZSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGFBQWE7WUFDckQsWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFVBQVU7WUFDL0MsU0FBUyxFQUFFLE1BQU07WUFDakIsV0FBVyxFQUFFLEtBQUs7WUFDbEIsWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFVBQVU7WUFDL0MsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDM0IsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ25CLGFBQWEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxrQkFBa0I7WUFDeEQsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsa0JBQWtCO1lBQy9ELFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRO1lBQzNDLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRO1lBQzNDLFdBQVcsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUNqQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTTtTQUN4QyxDQUFBO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUM7WUFDckcsSUFBSSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFFO29CQUMzQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUE7b0JBQ3JCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO29CQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUE7b0JBQ3JELElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO29CQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQTtpQkFDeEI7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQTtvQkFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFBO2lCQUV2QjtZQUNILENBQUM7U0FDRixDQUFDLENBQUE7SUFDSixDQUFDO0lBR0QsVUFBVSxLQUFLLENBQUM7SUFFaEIsV0FBVyxHQUFZLElBQUksQ0FBQztJQUM1QixPQUFPO1FBQ0wsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDdkMsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFZO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQzFCLENBQUM7SUFHRCxnQkFBZ0I7UUFDZCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsRUFBRTtZQUM5RSxPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsVUFBa0I7UUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUM7UUFDekIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsS0FBSyxtQkFBbUIsRUFBRTtZQUNyRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQTtTQUMxQjtRQUFBLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO1lBQy9FLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQTtTQUN0QjthQUFNLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsRUFBRTtZQUNsRixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDO1lBQ3hELElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFBO1NBQzlCO2FBQU0sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO1lBQ2xGLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUM7WUFDeEQsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUE7U0FDakM7YUFBTztZQUNOLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBRTtnQkFDL0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7YUFDN0I7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUE7YUFDaEM7U0FDRjtRQUNELE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBRW5ELENBQUM7SUFHRCxnQkFBZ0IsQ0FBQyxRQUFnQjtRQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztRQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNoQixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGtCQUFrQixLQUFLLG1CQUFtQixFQUFFO1lBQ3JFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFBO1NBQzFCO2FBQU0sSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEVBQUU7WUFDckYsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFBO1NBQ3RCO2FBQU0sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO1lBQ2xGLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFBO1NBQzlCO2FBQU0sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO1lBQ2xGLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQTtTQUNuQzthQUFNO1lBQ0wsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUFFO2dCQUMvQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQzthQUM3QjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQTthQUNoQztTQUNGO0lBR0gsQ0FBQztJQUdELE9BQU8sQ0FBQyxLQUFpQjtRQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBQ0QsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUNuQixXQUFXLEdBQVcsUUFBUSxDQUFDO0lBQy9CLFNBQVMsQ0FBQyxLQUFZO1FBQ3BCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUNyQyxDQUFDO0lBQ0QsY0FBYyxDQUFDLElBQVM7UUFDdEIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFBO1FBQ2IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFO1lBQzVCLEtBQUssR0FBRyxLQUFLLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUE7UUFFMUMsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxjQUFjLENBQUMsSUFBUyxFQUFFLFFBQWE7UUFDckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsQ0FBRSx3QkFBd0I7UUFDbEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBRSx3Q0FBd0M7UUFDbEUsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQzlFLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUU5RSxJQUFJLFFBQVEsS0FBSyxLQUFLLEVBQUU7WUFDdEIsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ25ELElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMvQyxNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztZQUUzQyxJQUFJLFVBQVUsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNyRSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQywwQ0FBMEMsQ0FBQyxDQUFBO2dCQUMzRSxPQUFNO2FBQ1A7WUFDRCxJQUFJLFVBQVUsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNyRSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQywwQ0FBMEMsQ0FBQyxDQUFBO2dCQUMzRSxPQUFNO2FBQ1A7WUFDRCxJQUFJLFVBQVUsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNyRSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQywwQ0FBMEMsQ0FBQyxDQUFBO2dCQUMzRSxPQUFNO2FBQ1A7WUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQTtTQUM1QjtRQUVELElBQUksT0FBTyxHQUFHO1lBQ1osb0JBQW9CLEVBQUUsU0FBUztZQUMvQixVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUTtZQUMzQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTTtZQUN2QyxlQUFlLEVBQUMsSUFBSSxDQUFDLE1BQU07WUFDM0IsYUFBYSxFQUFFLEVBQUU7WUFDakIsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsa0JBQWtCO1lBQy9ELGVBQWUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxhQUFhO1lBQ3JELFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxVQUFVO1lBQy9DLFVBQVUsRUFBRSxRQUFRO1lBQ3BCLFVBQVUsRUFBRSxNQUFNO1lBQ2xCLGVBQWUsRUFBRSxLQUFLO1lBQ3RCLFVBQVUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU07WUFDckMsV0FBVyxFQUFFLElBQUksQ0FBQyxlQUFlO1lBQ2pDLGFBQWEsRUFBRSxJQUFJLENBQUMsV0FBVztZQUMvQixVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUTtZQUMzQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUTtZQUMzQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSTtZQUN6QyxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTTtZQUN2QyxZQUFZLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsVUFBVTtTQUNoRCxDQUFBO1FBQ0QsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7UUFDekUsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQ2xFLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ3hCLElBQUcsSUFBSSxDQUFDLE1BQU0sS0FBRyxRQUFRLEVBQUM7WUFDeEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxhQUFhLEtBQUssQ0FBQyxJQUFJLFFBQVEsRUFBRSxhQUFhLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxLQUFLLGVBQWUsSUFBSSxJQUFJLEtBQUssZUFBZSxJQUFJLElBQUksS0FBSyxlQUFlLEVBQUU7Z0JBQzFKLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFO29CQUM5RCxRQUFRLEVBQUUsSUFBSTtvQkFDZCxJQUFJLEVBQUUsSUFBSTtvQkFDVixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFDLFFBQVE7b0JBQ2pCLFdBQVcsRUFBRSxxQkFBcUIsQ0FBRSxnQ0FBZ0M7aUJBQ3JFLENBQUMsQ0FBQztnQkFDSCxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztnQkFDdkMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7Z0JBRTdDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7b0JBQzlCLElBQUksTUFBTSxFQUFFO3dCQUNWLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRTs0QkFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsc0xBQXNMLENBQUMsQ0FBQTt5QkFDMU47NkJBQU0sSUFBSSxNQUFNLEtBQUssT0FBTyxFQUFFOzRCQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFBO3lCQUMxRDt3QkFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQTtxQkFDNUI7Z0JBQ0gsQ0FBQyxDQUFDLENBQUE7YUFDSDtpQkFBTTtnQkFDTCxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDO29CQUNyRixJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTt3QkFDakIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLEVBQUU7NEJBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLHNMQUFzTCxDQUFDLENBQUE7eUJBQzFOOzZCQUFNOzRCQUNMLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLHdCQUF3QixDQUFDLENBQUE7eUJBQzFEO3dCQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFBO29CQUM3QixDQUFDO2lCQUNGLENBQUMsQ0FBQTthQUNIO1NBQ0Y7YUFBSyxJQUFHLElBQUksQ0FBQyxNQUFNLEtBQUcsT0FBTyxJQUFFLElBQUksQ0FBQyxNQUFNLEtBQUcsVUFBVSxJQUFFLElBQUksQ0FBQyxNQUFNLEtBQUcsbUJBQW1CLEVBQUM7WUFFMUYsSUFBRyxJQUFJLENBQUMsTUFBTSxJQUFFLG1CQUFtQixFQUFDO2dCQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFJLE9BQU8sQ0FBQTthQUM1QjtZQUVELElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUM7Z0JBQ3JGLElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO29CQUNqQixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsRUFBRTt3QkFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsc0xBQXNMLENBQUMsQ0FBQTtxQkFDMU47eUJBQU07d0JBQ0wsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtxQkFDMUQ7b0JBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUE7Z0JBQzdCLENBQUM7YUFDRixDQUFDLENBQUE7U0FDSDtJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsS0FBVTtRQUNuQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQTtRQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDN0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUE7UUFDdEIsSUFBSSxLQUFLLEtBQUssTUFBTSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDakgsSUFBSSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7b0JBQ2pCLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxFQUFFO3dCQUMxQixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO3dCQUNyQyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFBO3dCQUNqQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO3dCQUMzRCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFBO3FCQUV4QjtnQkFDSCxDQUFDO2FBQ0YsQ0FBQyxDQUFBO1NBQ0g7YUFBTTtZQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtZQUN6RCxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUM7Z0JBQ2pILElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO29CQUNqQixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsRUFBRTt3QkFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQzt3QkFDckMsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQTt3QkFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTt3QkFDM0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFBO3FCQUM1QjtnQkFDSCxDQUFDO2FBQ0YsQ0FBQyxDQUFBO1NBQ0g7SUFFSCxDQUFDO0lBR0QsV0FBVyxDQUFDLElBQVM7UUFDbkIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUMxRCxNQUFNLE9BQU8sR0FBRztZQUNkLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLO1lBQ2pELE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLO1lBQzdDLE9BQU8sRUFBRSxNQUFNO1lBQ2YsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTTtZQUNwQyxjQUFjLEVBQUUsZUFBZTtZQUMvQixNQUFNLEVBQUUsQ0FBQztTQUNWLENBQUE7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDOUMsSUFBSSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxFQUFFO29CQUMxQixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFBO29CQUV4QyxVQUFVLENBQUMsR0FBRyxFQUFFO3dCQUNkLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsSUFBSSxNQUFNLEVBQUU7NEJBQ25GLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQTs0QkFDekYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFBOzRCQUM5QyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQTs0QkFDL0UsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLENBQUE7NEJBRXZILElBQUksWUFBWSxJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dDQUMzQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFBO2dDQUMvRSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLENBQUMsQ0FBQTtnQ0FDN0YsSUFBSSxDQUFDLGFBQWEsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFBOzZCQUNwRDs0QkFDRCwyQkFBMkI7eUJBQzVCOzZCQUFNOzRCQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFBOzRCQUNsRixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixDQUFDLENBQUE7eUJBQzdGO3dCQUNELElBQUcsSUFBSSxFQUFDOzRCQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7eUJBQ3ZCO29CQUNILENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtpQkFDTjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQTtpQkFDckI7WUFDSCxDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFTO1FBQ2pCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFBO1FBQ3pCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUE7UUFFN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUE7UUFDbkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQzlFLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUM3RSxJQUFJLEdBQUcsR0FBRztZQUNSLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRO1lBQzNDLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQ3ZDLGVBQWUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJO1lBQzVDLGVBQWUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxhQUFhO1lBQ3JELGFBQWEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxrQkFBa0I7WUFDeEQsU0FBUyxFQUFFLE1BQU07WUFDakIsV0FBVyxFQUFDLElBQUk7WUFDaEIsWUFBWSxFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFVBQVU7WUFDOUMsWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFVBQVU7WUFDL0MsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVE7WUFDM0MsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVE7WUFDM0MsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU07WUFDdkMsV0FBVyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtTQUN6SSxDQUFBO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMs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WUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN2RixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUFBLENBQUM7d0dBbjdFZixnQkFBZ0I7NEZBQWhCLGdCQUFnQix5TkN2QjdCLGlpOUdBc3dDYzs7NEZEL3VDRCxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsYUFBYTtvVUFzOUR2QixPQUFPO3NCQUROLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBK2RsQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IGRheWpzLCB7IERheWpzIH0gZnJvbSBcImRheWpzXCI7XHJcbmltcG9ydCB1dGMgZnJvbSAnZGF5anMvcGx1Z2luL3V0Yyc7XHJcbmRheWpzLmV4dGVuZCh1dGMpO1xyXG5pbXBvcnQgeyBUaW1lUGVyaW9kIH0gZnJvbSAnbmd4LWRhdGVyYW5nZXBpY2tlci1tYXRlcmlhbC9kYXRlcmFuZ2VwaWNrZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlLCBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktZ2xvYmFsJztcclxuaW1wb3J0IHsgVHJheFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmF4LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcclxuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBFeHBvcnRHYWxsZXJ5Q29tcG9uZW50IH0gZnJvbSAnLi4vZXhwb3J0LWdhbGxlcnkvZXhwb3J0LWdhbGxlcnkuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IEFkZFRhc2tDb21wb25lbnQgfSBmcm9tICcuLi9hZGQtdGFzay9hZGQtdGFzay5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYXNrTG9nc0NvbXBvbmVudCB9IGZyb20gJy4uL3Rhc2stbG9ncy90YXNrLWxvZ3MuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXBwcm92YWxQb3B1cENvbXBvbmVudCB9IGZyb20gJy4uL2FwcHJvdmFsLXBvcHVwL2FwcHJvdmFsLXBvcHVwLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1nYWxsZXJ5JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ2FsbGVyeS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2dhbGxlcnkuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHYWxsZXJ5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIGRheWpzID0gZGF5anNcclxuICBzZWxlY3RlZERhdGVSYW5nZTogYW55ID0ge307XHJcbiAgaXNDdXN0b21EYXRlID0gKG06IGRheWpzLkRheWpzKSA9PiB7XHJcbiAgICBjb25zdCBpc1ZhbGlkRGF0ZSA9IG0gPiB0aGlzLmRheWpzKCk7XHJcbiAgICByZXR1cm4gaXNWYWxpZERhdGUgPyAnaW52YWxpZC1kYXRlJyA6IGZhbHNlO1xyXG4gIH1cclxuXHJcblxyXG4gIGdhbGxlcnlGb3JtOiBGb3JtR3JvdXBcclxuICB0eXBlOiBhbnkgPSBbeyB2YWx1ZTogJ2NoZWNrbGlzdCcsIGxhYmVsOiAnQ2hlY2tsaXN0JyB9LFxyXG4gIHsgdmFsdWU6ICd0YXNrJywgbGFiZWw6ICdUYXNrJyB9XHJcbiAgXVxyXG4gIGZpbHRlcnR5cGU6IGFueSA9IFt7IHZhbHVlOiAnQ2x1c3RlcnMnLCBsYWJlbDogJ0NsdXN0ZXJzJyB9LFxyXG4gIHsgdmFsdWU6ICdUZWFtcycsIGxhYmVsOiAnVGVhbXMnIH1cclxuICBdXHJcbiAgY2hlY2tsaXN0czogYW55ID0gW11cclxuICBhbnN3ZXJUeXBlID0gW1xyXG4gICAgeyBsYWJlbDogJ0FsbCBBbnN3ZXIgVHlwZScsIHZhbHVlOiAnYWxsJyB9LFxyXG4gICAgeyBsYWJlbDogJ0Rlc2NyaXB0aXZlIEFuc3dlcicsIHZhbHVlOiAnZGVzY3JpcHRpdmUnIH0sXHJcbiAgICB7IGxhYmVsOiAnQS9CIFF1ZXN0aW9uJywgdmFsdWU6ICd5ZXMvbm8nIH0sXHJcbiAgICB7IGxhYmVsOiAnTXVsdGlwbGUgQ2hvaWNlIFF1ZXN0aW9uIC0gU2luZ2xlIEFuc3dlcicsIHZhbHVlOiAnbXVsdGlwbGVjaG9pY2VzaW5nbGUnIH0sXHJcbiAgICB7IGxhYmVsOiAnTXVsdGlwbGUgQ2hvaWNlIFF1ZXN0aW9uIC0gTXVsdGlwbGUgQW5zd2VyJywgdmFsdWU6ICdtdWx0aXBsZWNob2ljZW11bHRpcGxlJyB9LFxyXG4gICAgeyBsYWJlbDogJ0NhcHR1cmUgSW1hZ2UgYXMgYW5zd2VyJywgdmFsdWU6ICdpbWFnZScgfSxcclxuICAgIHsgbGFiZWw6ICdDYXB0dXJlIEltYWdlIHdpdGggRGVzY3JpcHRpb24nLCB2YWx1ZTogJ2Rlc2NyaXB0aXZlSW1hZ2UnIH0sXHJcbiAgICB7IGxhYmVsOiAnQ2FwdHVyZSB2aWRlbyBhcyBhbnN3ZXInLCB2YWx1ZTogJ3ZpZGVvJyB9LFxyXG4gICAgeyBsYWJlbDogJ0NhcHR1cmUgTXVsdGlwbGUgSW1hZ2UnLCB2YWx1ZTogJ211bHRpcGxlSW1hZ2UnIH0sXHJcbiAgICB7IGxhYmVsOiAnRGF0ZSBBcyBBbnN3ZXInLCB2YWx1ZTogJ2RhdGUnIH0sXHJcbiAgICB7IGxhYmVsOiAnVGltZSBBcyBBbnN3ZXInLCB2YWx1ZTogJ3RpbWUnIH0sXHJcbiAgICB7IGxhYmVsOiAnTGluZWFyIFNjYWxlJywgdmFsdWU6ICdsaW5lYXJzY2FsZScgfVxyXG5cclxuICBdXHJcbiAgaGVhZGVyRmlsdGVyczogYW55ID0ge307XHJcbiAgc3RvcmVMaXN0OiBhbnlbXSA9IFtdXHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgY2hlY2tsaXN0RGF0YTogYW55ID0ge31cclxuICBzdG9yZXM6IGFueSA9IFtdO1xyXG4gIGdyb3VwczogYW55ID0gW107XHJcbiAgdGVhbXM6IGFueSA9IFtdO1xyXG4gIGl0ZW1zOiBhbnk7XHJcbiAgcGFnaW5hdGVkSXRlbXM6IGFueTtcclxuICBpdGVtc1BlclBhZ2UgPSAxMDtcclxuICBjdXJyZW50UGFnZSA9IDE7XHJcbiAgdG90YWxJdGVtcyA9IDA7XHJcbiAgdmlld0NoZWNrbGlzdHNEYXRhOiBhbnk7XHJcbiAgbG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcbiAgbm9EYXRhOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdmlld2xvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHZpZXdub0RhdGE6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBvZmZzZXQ6IGFueSA9IDE7XHJcbiAgbGltaXQ6IGFueSA9IDE7XHJcbiAgcGFnaW5hdGlvblNpemVzID0gWzFdXHJcbiAgdG90YWxDb3VudDogYW55O1xyXG4gIHZpZXdDaGVja2xpc3Rzb3B0aW9uczogYW55ID0ge307XHJcbiAgbW9iaWxldXNhZ2VEYXRhOiBhbnk7XHJcbiAgbW9iaWxldXNhZ2VEYXRhTGlzdDogYW55ID0gW11cclxuICBzZWxlY3RBbGw6IGFueVxyXG4gIHN0b3JlT3BlbmNsb3NlVmlldzogYW55O1xyXG4gIHF1ZXJ5UGFyYW1zOiBhbnk7XHJcbiAgY3VzdG9tZXJ1bmF0dGVuZGVkRGF0YTogYW55O1xyXG4gIHNlY3Rpb25OYW1lOiBhbnkgPSAnYWxsJztcclxuICBxdWVzdGlvbk5hbWU6IGFueSA9ICdhbGwnO1xyXG4gIGNsaWVudERhdGE6IGFueTtcclxuICBjaGVja2xpc3ROYW1lOiBhbnkgPSAnJztcclxuICBDbHVzdGVyTGlzdDogYW55ID0gW107XHJcbiAgVGVhbXNMaXN0OiBhbnkgPSBbXTtcclxuICB1c2VyTGlzdDogYW55ID0gW107XHJcbiAgZW52aXJvbm1lbnQ6IGFueTtcclxuICBzaG93ZmxhZzogYm9vbGVhbiA9IHRydWU7XHJcbiAgc2VsZWN0ZWRTZWN0aW9uOiBhbnkgPSBbXVxyXG4gIHRlbXBzZWxlY3RlZFNlY3Rpb246IGFueSA9IFtdXHJcbiAgc2hvd211bHRpOiBib29sZWFuID0gdHJ1ZTtcclxuICBzaG93c2luZ2xlOiBib29sZWFuID0gZmFsc2VcclxuICBzaG93ZmlsdGVyOiBib29sZWFuID0gZmFsc2VcclxuICBwcmV2aWV3VHlwZTogYW55ID0gJ2ltYWdlJztcclxuICBjaGVja0xpc3REZXNjcmlwdGlvbjogYW55ID0gJydcclxuICBhbnN3ZXJGaWx0ZXI6IGFueSA9IFtdXHJcbiAgYXBwcm92YWxTdGF0dXM6IGJvb2xlYW4gPSBmYWxzZVxyXG4gIGNhdGVnb3J5OiBzdHJpbmcgPSAnYWxsJ1xyXG4gIHZpZGVvQ2hlY2tsaXN0ID1bJ2N1c3RvbWVydW5hdHRlbmRlZCcsICdzdGFmZmxlZnRpbnRoZW1pZGRsZScsICdyZW1vdGVvcHRvbWV0cmlzdCcsICdleWV0ZXN0JywnY2xlYW5pbmcnLCdzY3J1bScsJ3N1c3BpY2lvdXNhY3Rpdml0eSddXHJcbiAgaW1hZ2VDaGVja2xpc3QgPVsnbW9iaWxldXNhZ2VkZXRlY3Rpb24nLCAndW5pZm9ybWRldGVjdGlvbicsICdzdG9yZWh5Z2llbmVtb25pdG9yaW5nJywnY3VzdG9tZXJ0cmlhbCddXHJcbiAgYm94aW1hZ2VDaGVja2xpc3QgPVsncXVldWVhbGVydCcsJ2JveGFsZXJ0Jywnc3VzcGljaW91c2Zvb3RmYWxsJywnZHJpbmtpbmcnLCdiYWdkZXRlY3Rpb24nXVxyXG4gIGNvbWJpbmVkQ2hlY2tsaXN0ID0gWy4uLnRoaXMudmlkZW9DaGVja2xpc3QsIC4uLnRoaXMuaW1hZ2VDaGVja2xpc3QsLi4udGhpcy5ib3hpbWFnZUNoZWNrbGlzdCwgJ3N0b3Jlb3BlbmFuZGNsb3NlJyxdXHJcbiAgcXVldWVBbGVydFZpZXc6IGFueTtcclxuICB2aWV3SW1hZ2U6IGFueTtcclxuICB6b25lTGlzdDphbnkgPSBbXTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlciwgcHVibGljIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UsIHByaXZhdGUgdHJheFNlcnZpY2U6IFRyYXhTZXJ2aWNlLCBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UsIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uLCBwcml2YXRlIHBhZ2VJbmZvOiBQYWdlSW5mb1NlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMucm91dGU/LnF1ZXJ5UGFyYW1zXHJcbiAgICAgID8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHBhcmFtcykgPT4ge1xyXG4gICAgICAgIHRoaXMucXVlcnlQYXJhbXMgPSBwYXJhbXM7XHJcbiAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBpZiAodGhpcy5xdWVyeVBhcmFtcyAmJiB0aGlzLnF1ZXJ5UGFyYW1zLkNoZWNrbGlzdERhdGUpIHtcclxuXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlID0ge1xyXG4gICAgICAgICAgICBzdGFydERhdGU6IHRoaXMucXVlcnlQYXJhbXMuQ2hlY2tsaXN0RGF0ZSA/IHRoaXMuZGF5anModGhpcy5xdWVyeVBhcmFtcy5DaGVja2xpc3REYXRlKS5mb3JtYXQoJ0RELU1NLVlZWVknKSA6IHRoaXMuZGF5anMoKS5zdWJ0cmFjdCgxLCAnZGF5JykuZm9ybWF0KCdERC1NTS1ZWVlZJyksXHJcbiAgICAgICAgICAgIGVuZERhdGU6IHRoaXMucXVlcnlQYXJhbXMuQ2hlY2tsaXN0RGF0ZSA/IHRoaXMuZGF5anModGhpcy5xdWVyeVBhcmFtcy5DaGVja2xpc3REYXRlKS5mb3JtYXQoJ0RELU1NLVlZWVknKSA6IHRoaXMuZGF5anMoKS5zdWJ0cmFjdCgxLCAnZGF5JykuZm9ybWF0KCdERC1NTS1ZWVlZJylcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWUucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoZGF0YT8uY2xpZW50KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhlYWRlckZpbHRlcnMgPSBkYXRhO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRBbGxTdG9yZXMoKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbGV0IHVzZXJpbmZvID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInVzZXItaW5mb1wiKSB8fCBcIlwiKVxyXG4gICAgICAgICAgICAgICAgaWYgKHVzZXJpbmZvICYmIHVzZXJpbmZvPy5jbGllbnRJZCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmhlYWRlckZpbHRlcnMuY2xpZW50ID0gdXNlcmluZm8/LmNsaWVudElkXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0QWxsU3RvcmVzKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5xdWVyeVBhcmFtcy52aWV3UmVkbykge1xyXG4gICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldChcInZpZXdSZWRvXCIpPy5zZXRWYWx1ZSh0cnVlKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlID0ge1xyXG4gICAgICAgICAgICBzdGFydERhdGU6IHRoaXMuZGF5anMoKS5zdWJ0cmFjdCgxLCAnZGF5JykuZm9ybWF0KCdERC1NTS1ZWVlZJyksXHJcbiAgICAgICAgICAgIGVuZERhdGU6IHRoaXMuZGF5anMoKS5zdWJ0cmFjdCgxLCAnZGF5JykuZm9ybWF0KCdERC1NTS1ZWVlZJylcclxuICAgICAgICAgIH1cclxuICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgdGhpcy5ncy5lbnZpcm9ubWVudC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChlbnYpID0+IHtcclxuICAgICAgaWYgKGVudikge1xyXG4gICAgICAgIHRoaXMuZW52aXJvbm1lbnQgPSBlbnZcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgY2hlY2t0b2RheURhdGUoY2hlY2tsaXN0RGF0ZTogYW55KSB7XHJcbiAgICBjb25zdCBnaXZlbkRhdGUgPSBjaGVja2xpc3REYXRlO1xyXG4gICAgY29uc3QgaXNTYW1lRGF0ZSA9IGRheWpzKCkuaXNTYW1lKGRheWpzKGdpdmVuRGF0ZSksICdkYXknKTtcclxuICAgIHJldHVybiBpc1NhbWVEYXRlXHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNyZWF0ZUZvcm0oKTtcclxuICAgIHRoaXMuc2V0UGFnZURhdGEoKTtcclxuICAgIFxyXG4gICAgaWYodGhpcy5xdWVyeVBhcmFtcy5jb3ZlcmFnZSA9PT0ndXNlcicpe1xyXG4gICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldChcImZpbHRlcnR5cGVcIik/LnNldFZhbHVlKCdUZWFtcycpXHJcbiAgICB9XHJcbiAgICBpZih0aGlzLnF1ZXJ5UGFyYW1zLmNvdmVyYWdlID09PSdzdG9yZXMnKXtcclxuICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoXCJmaWx0ZXJ0eXBlXCIpPy5zZXRWYWx1ZSgnQ2x1c3RlcnMnKVxyXG4gICAgfVxyXG4gICAgdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhPy5jbGllbnQpIHtcclxuICAgICAgICAgIHRoaXMuaGVhZGVyRmlsdGVycyA9IGRhdGE7XHJcbiAgICAgICAgICBpZighdGhpcy5xdWVyeVBhcmFtcy5DaGVja2xpc3REYXRlJiZ0aGlzLmhlYWRlckZpbHRlcnMuY2xpZW50JiZ0aGlzLmhlYWRlckZpbHRlcnMuY2xpZW50PT09XCI0NTlcIil7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiMTExMTFcIilcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZSA9IHtcclxuICAgICAgICAgICAgICBzdGFydERhdGU6IHRoaXMuZGF5anMoKS5mb3JtYXQoJ0RELU1NLVlZWVknKSxcclxuICAgICAgICAgICAgICBlbmREYXRlOiB0aGlzLmRheWpzKCkuZm9ybWF0KCdERC1NTS1ZWVlZJylcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnZnJvbURhdGUnKT8uc2V0VmFsdWUoZGF5anModGhpcy5zZWxlY3RlZERhdGVSYW5nZS5zdGFydERhdGUsJ0RELU1NLVlZWVknKS5mb3JtYXQoJ1lZWVktTU0tREQnKSlcclxuICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3RvRGF0ZScpPy5zZXRWYWx1ZShkYXlqcyh0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlLmVuZERhdGUsJ0RELU1NLVlZWVknKS5mb3JtYXQoJ1lZWVktTU0tREQnKSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuY2xpZW50RGV0YWlscygpO1xyXG4gICAgICAgICAgdGhpcy5nZXRBbGxHcm91cHMoKTtcclxuICAgICAgICAgIHRoaXMuZ2V0QWxsU3RvcmVzKCk7XHJcbiAgICAgICAgICB0aGlzLmdldEFsbFVzZXJzKCk7XHJcbiAgICAgICAgICB0aGlzLmdldEFsbFRlYW1zKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxldCB1c2VyaW5mbyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ1c2VyLWluZm9cIikgfHwgXCJcIilcclxuICAgICAgICAgIGlmICh1c2VyaW5mbyAmJiB1c2VyaW5mbz8uY2xpZW50SWQpIHtcclxuICAgICAgICAgICAgdGhpcy5oZWFkZXJGaWx0ZXJzLmNsaWVudCA9IHVzZXJpbmZvPy5jbGllbnRJZFxyXG4gICAgICAgICAgICBpZighdGhpcy5xdWVyeVBhcmFtcy5DaGVja2xpc3REYXRlJiZ0aGlzLmhlYWRlckZpbHRlcnMuY2xpZW50JiZ0aGlzLmhlYWRlckZpbHRlcnMuY2xpZW50PT09XCI0NTlcIil7ICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIjIyMjIyMlwiKVxyXG5cclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlID0ge1xyXG4gICAgICAgICAgICAgICAgc3RhcnREYXRlOiB0aGlzLmRheWpzKCkuZm9ybWF0KCdERC1NTS1ZWVlZJyksXHJcbiAgICAgICAgICAgICAgICBlbmREYXRlOiB0aGlzLmRheWpzKCkuZm9ybWF0KCdERC1NTS1ZWVlZJylcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ2Zyb21EYXRlJyk/LnNldFZhbHVlKGRheWpzKHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2Uuc3RhcnREYXRlLCdERC1NTS1ZWVlZJykuZm9ybWF0KCdZWVlZLU1NLUREJykpXHJcbiAgICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3RvRGF0ZScpPy5zZXRWYWx1ZShkYXlqcyh0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlLmVuZERhdGUsJ0RELU1NLVlZWVknKS5mb3JtYXQoJ1lZWVktTU0tREQnKSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmNsaWVudERldGFpbHMoKTtcclxuICAgICAgICAgICAgdGhpcy5nZXRBbGxHcm91cHMoKTtcclxuICAgICAgICAgICAgdGhpcy5nZXRBbGxTdG9yZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5nZXRBbGxVc2VycygpO1xyXG4gICAgICAgICAgICB0aGlzLmdldEFsbFRlYW1zKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgc2V0UGFnZURhdGEoKSB7XHJcbiAgICB0aGlzLnBhZ2VJbmZvLnNldFRpdGxlKFwiR2FsbGVyeVwiKTtcclxuICAgIHRoaXMucGFnZUluZm8uc2V0RGVzY3JpcHRpb24oXCJcIik7XHJcbiAgICB0aGlzLnBhZ2VJbmZvLnNldEJyZWFkY3J1bWJzKFtcclxuICAgICAgeyB0aXRsZTogXCJUYW5nbyBUcmF4XCIsIHBhdGg6IFwiL21hbmFnZS90cmF4L2Rhc2hib2FyZFwiLCBpc0FjdGl2ZTogZmFsc2UsIGlzU2VwYXJhdG9yOiBmYWxzZSB9LFxyXG4gICAgICB7IHRpdGxlOiBcIlRhbmdvIFRyYXhcIiwgcGF0aDogXCIvbWFuYWdlL3RyYXgvZGFzaGJvYXJkXCIsIGlzQWN0aXZlOiBmYWxzZSwgaXNTZXBhcmF0b3I6IHRydWUgfSxcclxuICAgIF0pO1xyXG5cclxuICB9XHJcbiAgZ2V0QWxsR3JvdXBzKCkge1xyXG4gICAgdGhpcy50cmF4U2VydmljZS5nZXRjbHVzdGVycyh7IGNsaWVudElkOiB0aGlzLmhlYWRlckZpbHRlcnMuY2xpZW50LCBncm91cDogW10sIGNpdHk6IFtdIH0pLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLkNsdXN0ZXJMaXN0ID0gcmVzLmRhdGEuZ3JvdXBEYXRhXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuQ2x1c3Rlckxpc3QgPSBbXVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgZ2V0QWxsVGVhbXMoKSB7XHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLmdldEFsbFRlYW1zKHRoaXMuaGVhZGVyRmlsdGVycy5jbGllbnQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLlRlYW1zTGlzdCA9IHJlcy5kYXRhXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuVGVhbXNMaXN0ID0gW11cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIGNsaWVudERldGFpbHMoKSB7XHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLmdldGNsaWVudCh7IGNsaWVudElkOiB0aGlzLmhlYWRlckZpbHRlcnMuY2xpZW50IH0pLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmNsaWVudERhdGEgPSByZXMuZGF0YS5yZXN1bHRcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICByZWRvQ2hhbmdlZChldmVudDogYW55KSB7XHJcbiAgICBpZiAoZXZlbnQudGFyZ2V0LmNoZWNrZWQpIHtcclxuICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoXCJ2aWV3UmVkb1wiKT8uc2V0VmFsdWUodHJ1ZSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudHJheFNlcnZpY2UuZ2V0U3RvcmVzbGlzdCh7IGNsaWVudElkOiB0aGlzLmhlYWRlckZpbHRlcnMuY2xpZW50LCBjbHVzdGVyczogdGhpcy5ncm91cHMsIGNpdHk6IFtdIH0pLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlTGlzdCA9IHJlcy5kYXRhLnN0b3Jlc0RhdGE7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmVzID0gcmVzLmRhdGEuc3RvcmVzRGF0YVxyXG4gICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnc3RvcmVMaXN0Jyk/LnNldFZhbHVlKHRoaXMuc3RvcmVMaXN0KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoXCJ2aWV3UmVkb1wiKT8uc2V0VmFsdWUoZmFsc2UpXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgZmxhZ0NoYW5nZWQoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKGV2ZW50LnRhcmdldC5jaGVja2VkKSB7XHJcbiAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KFwidmlld0ZsYWdcIik/LnNldFZhbHVlKHRydWUpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldChcInZpZXdGbGFnXCIpPy5zZXRWYWx1ZShmYWxzZSlcclxuICAgIH1cclxuICB9XHJcbiAgb25jaGVja2xpc3RyZXNldCgpIHtcclxuXHJcbiAgICB0aGlzLmdhbGxlcnlGb3JtLmdldChcImZpbHRlclwiKT8uc2V0VmFsdWUoJycpXHJcbiAgICB0aGlzLmFuc3dlckZpbHRlciA9IFtdXHJcbiAgICB0aGlzLnNob3dtdWx0aSA9IHRydWVcclxuICAgIHRoaXMuc2hvd3NpbmdsZSA9IGZhbHNlXHJcbiAgICBpZiAodGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50eXBlID09PSAnY2hlY2tsaXN0Jykge1xyXG4gICAgICB0aGlzLmdldENoZWNrbGlzdFFBKGZhbHNlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZ2V0VGFza1FBKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudHlwZSlcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICByZXNldFZhbGlkYXRpb24oKSB7XHJcbiAgICB0aGlzLmlzQ3VzdG9tRGF0ZSA9IChtOiBkYXlqcy5EYXlqcykgPT4ge1xyXG4gICAgICAvLyBDaGVjayBpZiB0aGUgZ2l2ZW4gZGF0ZSBpcyBiZWZvcmUgeWVzdGVyZGF5XHJcbiAgICAgIHJldHVybiBtLmlzQWZ0ZXIodGhpcy5kYXlqcygpLCAnZGF5JykgPyAnaW52YWxpZC1kYXRlJyA6IGZhbHNlO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIG9uU3RhcnREYXRlQ2hhbmdlKGV2ZW50OiBhbnkpIHsgICAgXHJcbiAgICBpZiAodGhpcy5kYXlqcyhldmVudC5zdGFydERhdGUpLmlzVmFsaWQoKSkgeyAgICAgIFxyXG4gICAgICBsZXQgY2xpZW50aW5mbyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjbGllbnQtZGV0YWlsc1wiKSB8fCBcIlwiKVxyXG4gICAgICBsZXQgdXNlcmluZm8gPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidXNlci1pbmZvXCIpIHx8IFwiXCIpXHJcbiAgICAgIGlmIChjbGllbnRpbmZvIHx8IHVzZXJpbmZvKSB7XHJcbiAgICAgICAgaWYgKGNsaWVudGluZm8/LnRyYXhEYXRlUmFuZ2UgPT09IDcgfHwgdXNlcmluZm8/LnRyYXhEYXRlUmFuZ2UgPT09IDcpIHtcclxuICAgICAgICAgIHRoaXMuaXNDdXN0b21EYXRlID0gKG06IGRheWpzLkRheWpzKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzVmFsaWREYXRlID1cclxuICAgICAgICAgICAgICBtID4gdGhpcy5kYXlqcygpIHx8IG0gPiB0aGlzLmRheWpzKGV2ZW50LnN0YXJ0RGF0ZS5hZGQoMiwgXCJkYXlzXCIpKTtcclxuICAgICAgICAgICAgcmV0dXJuIGlzVmFsaWREYXRlID8gXCJpbnZhbGlkLWRhdGVcIiA6IGZhbHNlO1xyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5pc0N1c3RvbURhdGUgPSAobTogZGF5anMuRGF5anMpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaXNWYWxpZERhdGUgPVxyXG4gICAgICAgICAgICAgIG0gPiB0aGlzLmRheWpzKCkgfHwgbSA+IHRoaXMuZGF5anMoZXZlbnQuc3RhcnREYXRlLmFkZCgzMCwgXCJkYXlzXCIpKTtcclxuICAgICAgICAgICAgcmV0dXJuIGlzVmFsaWREYXRlID8gXCJpbnZhbGlkLWRhdGVcIiA6IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBcclxuICAgIH1cclxuICAgIC8vIHRoaXMuZ2V0QWxsQ2hlY2tMaXN0cyhmYWxzZSlcclxuICB9XHJcbiAgc2VsZWN0QWxsU3RvcmUoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKGV2ZW50LnRhcmdldC5jaGVja2VkKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gZXZlbnQudGFyZ2V0LmNoZWNrZWQ7XHJcbiAgICAgIHRoaXMubW9iaWxldXNhZ2VEYXRhTGlzdC5mb3JFYWNoKChvYmo6IGFueSkgPT4gKG9iai5jaGVja2VkID0gdGhpcy5zZWxlY3RBbGwpKTtcclxuICAgICAgbGV0IHN0b3JlID0gdGhpcy5tb2JpbGV1c2FnZURhdGFMaXN0LmZpbHRlcigoZWw6IGFueSkgPT4gZWwuY2hlY2tlZClcclxuICAgICAgY29uc3QgY2hhbmdlID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShzdG9yZSkpXHJcbiAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdzdG9yZUxpc3QnKT8uc2V0VmFsdWUoY2hhbmdlKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3pvbmVMaXN0Jyk/LnNldFZhbHVlKFtdKVxyXG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IGZhbHNlXHJcbiAgICAgIHRoaXMubW9iaWxldXNhZ2VEYXRhTGlzdC5mb3JFYWNoKChvYmo6IGFueSkgPT4gKG9iai5jaGVja2VkID0gdGhpcy5zZWxlY3RBbGwpKTtcclxuICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3N0b3JlTGlzdCcpPy5zZXRWYWx1ZShbXSlcclxuICAgIH1cclxuICB9XHJcbiAgdXBkYXRlQ2hlY2soZXZlbnQ6IGFueSwgc3RvcmVkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMubW9iaWxldXNhZ2VEYXRhTGlzdC5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZWxlLnN0b3JlSWQgPT09IHN0b3JlZGF0YS5zdG9yZUlkKSB7XHJcbiAgICAgICAgZWxlLmNoZWNrZWQgPSBldmVudC50YXJnZXQuY2hlY2tlZDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBsZXQgc3RvcmUgPSB0aGlzLm1vYmlsZXVzYWdlRGF0YUxpc3QuZmlsdGVyKChkYXRhOiBhbnkpID0+IGRhdGEuY2hlY2tlZCk7XHJcbiAgICBjb25zdCBjaGFuZ2UgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHN0b3JlKSlcclxuXHJcbiAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnc3RvcmVMaXN0Jyk/LnNldFZhbHVlKGNoYW5nZSlcclxuICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCd6b25lTGlzdCcpPy5zZXRWYWx1ZShbXSlcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICB0aGlzLnNlbGVjdEFsbCA9IHRoaXMubW9iaWxldXNhZ2VEYXRhTGlzdC5ldmVyeSgob2JqOiBhbnkpID0+IG9iai5jaGVja2VkKTtcclxuXHJcbiAgfVxyXG4gIGNyZWF0ZUZvcm0oKSB7XHJcbiAgICB0aGlzLmdhbGxlcnlGb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIGZyb21EYXRlOiBbZGF5anModGhpcy5zZWxlY3RlZERhdGVSYW5nZS5zdGFydERhdGUsIFwiREQtTU0tWVlZWVwiKS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpXSxcclxuICAgICAgdG9EYXRlOiBbZGF5anModGhpcy5zZWxlY3RlZERhdGVSYW5nZS5lbmREYXRlLCBcIkRELU1NLVlZWVlcIikuZm9ybWF0KCdZWVlZLU1NLUREJyldLFxyXG4gICAgICB0eXBlOiAnY2hlY2tsaXN0JyxcclxuICAgICAgZmlsdGVydHlwZTogJ0NsdXN0ZXJzJyxcclxuICAgICAgY2hlY2tsaXN0TmFtZTogJycsXHJcbiAgICAgIHN0b3JlTGlzdDogW3RoaXMuc3RvcmVzXSxcclxuICAgICAgdXNlckxpc3Q6IFt0aGlzLnVzZXJMaXN0XSxcclxuICAgICAgYW5zd2VyVHlwZTogWydhbGwnXSxcclxuICAgICAgdmlld0ZsYWc6IFtmYWxzZV0sXHJcbiAgICAgIHZpZXdSZWRvOiBbZmFsc2VdLFxyXG4gICAgICBjaGVja0xpc3RUeXBlOiBcImN1c3RvbVwiLFxyXG4gICAgICBzb3VyY2VDaGVja0xpc3RfaWQ6IFwiXCIsXHJcbiAgICAgIENsdXN0ZXJMaXN0OiBbdGhpcy5ncm91cHNdLFxyXG4gICAgICBUZWFtc0xpc3Q6IFt0aGlzLlRlYW1zTGlzdF0sXHJcbiAgICAgIGNoZWNrTGlzdERlc2NyaXB0aW9uOiBcIlwiLFxyXG4gICAgICBmaWx0ZXI6IFwiXCIsXHJcbiAgICAgIHpvbmVMaXN0Olt0aGlzLnpvbmVMaXN0XVxyXG4gICAgfSlcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUpXHJcblxyXG4gIH1cclxuXHJcbiAgZGF0ZWNoYW5nZShldmVudDogVGltZVBlcmlvZCkge1xyXG4gICAgaWYgKCFldmVudC5lbmREYXRlIHx8ICFldmVudC5zdGFydERhdGUpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICB0aGlzLnJlbW92ZVF1ZXJ5UGFyYW1zKClcclxuICAgIHRoaXMucmVzZXRWYWxpZGF0aW9uKCk7XHJcbiAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnZnJvbURhdGUnKT8uc2V0VmFsdWUoZXZlbnQuc3RhcnREYXRlLmZvcm1hdCgnWVlZWS1NTS1ERCcpKVxyXG4gICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3RvRGF0ZScpPy5zZXRWYWx1ZShldmVudC5lbmREYXRlLmZvcm1hdCgnWVlZWS1NTS1ERCcpKVxyXG4gICAgdGhpcy50cmF4U2VydmljZS5nZXRTdG9yZXNsaXN0KHsgY2xpZW50SWQ6IHRoaXMuaGVhZGVyRmlsdGVycy5jbGllbnQsIGNsdXN0ZXJzOiB0aGlzLmdyb3VwcywgY2l0eTogW10gfSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuc3RvcmVMaXN0ID0gcmVzLmRhdGEuc3RvcmVzRGF0YTtcclxuICAgICAgICAgIHRoaXMuc3RvcmVzID0gcmVzLmRhdGEuc3RvcmVzRGF0YVxyXG4gICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3N0b3JlTGlzdCcpPy5zZXRWYWx1ZSh0aGlzLnN0b3JlTGlzdClcclxuICAgICAgICAgIGlmICh0aGlzLnF1ZXJ5UGFyYW1zLmNoZWNrbGlzdFR5cGUgPT0gJ3Rhc2snKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0QWxsVGFza3MoZmFsc2UpXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmdldEFsbENoZWNrTGlzdHMoZmFsc2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIFxyXG4gIH1cclxuICBnZXRBbGxVc2VycygpIHtcclxuICAgIGxldCB0ZWFtc0xpc3QgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLlRlYW1zTGlzdC5tYXAoKGRhdGE6IGFueSkgPT4gZGF0YS50ZWFtTmFtZSlcclxuICAgIHRoaXMudHJheFNlcnZpY2UuZ2V0dXNlcnMoeyBjbGllbnRJZDogdGhpcy5oZWFkZXJGaWx0ZXJzLmNsaWVudCwgdGVhbXM6IHRlYW1zTGlzdCB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMucXVlcnlQYXJhbXMudXNlckVtYWlsKSB7XHJcbiAgICAgICAgICAgIGxldCBnZXR1c2VyID0gcmVzLmRhdGEuZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlLnVzZXJFbWFpbCA9PT0gdGhpcy5xdWVyeVBhcmFtcy51c2VyRW1haWwpXHJcbiAgICAgICAgICAgIHRoaXMudXNlckxpc3QgPSBnZXR1c2VyO1xyXG4gICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgndXNlckxpc3QnKT8uc2V0VmFsdWUodGhpcy51c2VyTGlzdClcclxuICAgICAgICAgICAgaWYgKHRoaXMucXVlcnlQYXJhbXMuY2hlY2tsaXN0VHlwZSA9PSAndGFzaycpIHtcclxuICAgICAgICAgICAgICB0aGlzLmdldEFsbFRhc2tzKHRydWUpXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRBbGxDaGVja0xpc3RzKHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnVzZXJMaXN0ID0gcmVzLmRhdGE7XHJcbiAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCd1c2VyTGlzdCcpPy5zZXRWYWx1ZSh0aGlzLnVzZXJMaXN0KVxyXG4gICAgICAgICAgICBpZiAodGhpcy5xdWVyeVBhcmFtcy5jaGVja2xpc3RUeXBlID09ICd0YXNrJykge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0QWxsVGFza3ModHJ1ZSlcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmdldEFsbENoZWNrTGlzdHModHJ1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG5cclxuXHJcblxyXG4gIH1cclxuICBnZXRBbGxTdG9yZXMoKSB7XHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLmdldFN0b3Jlc2xpc3QoeyBjbGllbnRJZDogdGhpcy5oZWFkZXJGaWx0ZXJzLmNsaWVudCwgY2x1c3RlcnM6IHRoaXMuZ3JvdXBzLCBjaXR5OiBbXSB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5zdG9yZUxpc3QgPSByZXMuZGF0YS5zdG9yZXNEYXRhO1xyXG4gICAgICAgICAgaWYgKHRoaXMucXVlcnlQYXJhbXMuc3RvcmVJZCkge1xyXG4gICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgndXNlckxpc3QnKT8uc2V0VmFsdWUoW10pXHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmVMaXN0ID0gcmVzLmRhdGEuc3RvcmVzRGF0YTtcclxuICAgICAgICAgICAgbGV0IGdldHN0b3JlID0gdGhpcy5zdG9yZUxpc3QuZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlLnN0b3JlSWQgPT09IHRoaXMucXVlcnlQYXJhbXMuc3RvcmVJZClcclxuICAgICAgICAgICAgdGhpcy5zdG9yZXMgPSBnZXRzdG9yZVxyXG4gICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnc3RvcmVMaXN0Jyk/LnNldFZhbHVlKHRoaXMuc3RvcmVzKVxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMucXVlcnlQYXJhbXMuY2hlY2tsaXN0VHlwZSA9PSAndGFzaycpIHtcclxuICAgICAgICAgICAgICB0aGlzLmdldEFsbFRhc2tzKHRydWUpXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRBbGxDaGVja0xpc3RzKHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucXVlcnlQYXJhbXMudXNlckVtYWlsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdzdG9yZUxpc3QnKT8uc2V0VmFsdWUoW10pXHJcbiAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdmaWx0ZXJ0eXBlJyk/LnNldFZhbHVlKCdUZWFtcycpXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlcyA9IHJlcy5kYXRhLnN0b3Jlc0RhdGFcclxuICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3N0b3JlTGlzdCcpPy5zZXRWYWx1ZSh0aGlzLnN0b3JlTGlzdClcclxuICAgICAgICAgICAgaWYgKHRoaXMucXVlcnlQYXJhbXMuY2hlY2tsaXN0VHlwZSA9PSAndGFzaycpIHtcclxuICAgICAgICAgICAgICB0aGlzLmdldEFsbFRhc2tzKHRydWUpXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRBbGxDaGVja0xpc3RzKHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc3RvcmVMaXN0ID0gW107XHJcbiAgICAgICAgICB0aGlzLnZpZXdsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnZpZXdub0RhdGEgPSB0cnVlLFxyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xyXG5cclxuICAgICAgICB0aGlzLnN0b3JlTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMudmlld2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnZpZXdub0RhdGEgPSB0cnVlLFxyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG5cclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWxsQ2hlY2tMaXN0cyh0eXBlOiBhbnkpIHtcclxuICAgIGxldCBzdG9yZXMgPSB0aGlzLnN0b3Jlcz8ubWFwKChkYXRhOiBhbnkpID0+IGRhdGEuc3RvcmVJZClcclxuICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgIGZyb21EYXRlOiB0aGlzLmdhbGxlcnlGb3JtLmdldCgnZnJvbURhdGUnKT8udmFsdWUsXHJcbiAgICAgIHRvRGF0ZTogdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3RvRGF0ZScpPy52YWx1ZSxcclxuICAgICAgc3RvcmVJZDogc3RvcmVzLFxyXG4gICAgICBjbGllbnRJZDogdGhpcy5oZWFkZXJGaWx0ZXJzPy5jbGllbnQsXHJcbiAgICAgIHNvcnRDb2x1bW5OYW1lOiBcImNoZWNrTGlzdE5hbWVcIixcclxuICAgICAgc29ydEJ5OiAxXHJcbiAgICB9XHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLmdldENoZWNrbGlzdHMocGF5bG9hZCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuY2hlY2tsaXN0cyA9IHJlcy5kYXRhLmNoZWNrbGlzdERhdGFcclxuICAgICAgICAgIGlmICh0aGlzLmhlYWRlckZpbHRlcnMuY2xpZW50ID09PSBcIjU5XCIpIHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja2xpc3RzID0gWy4uLnRoaXMuY2hlY2tsaXN0cywgLi4uW3tcclxuICAgICAgICAgICAgICBcIl9pZFwiOiBcIjY3NDZjODg5ZjVhZGMzYjMyZjBkN2U1N1wiLFxyXG4gICAgICAgICAgICAgIFwic291cmNlQ2hlY2tMaXN0X2lkXCI6IFwiY3VzdG9tZXJ0cmlhbFwiLFxyXG4gICAgICAgICAgICAgIFwiY2hlY2tMaXN0TmFtZVwiOiBcIkN1c3RvbWVyIFRyaWFsXCIsXHJcbiAgICAgICAgICAgICAgXCJjaGVja0xpc3RUeXBlXCI6IFwiQUlcIixcclxuICAgICAgICAgICAgICBcImNyZWF0ZWRCeU5hbWVcIjogXCJCZWphblwiLFxyXG4gICAgICAgICAgICAgIFwic3RvcmVDb3VudFwiOiAwLFxyXG4gICAgICAgICAgICAgIFwic2NoZWR1bGVSZXBlYXRlZFR5cGVcIjogXCJkYWlseVwiLFxyXG4gICAgICAgICAgICAgIFwic2NoZWR1bGVTdGFydFRpbWVcIjogXCIxMDowMCBBTVwiLFxyXG4gICAgICAgICAgICAgIFwic2NoZWR1bGVFbmRUaW1lXCI6IFwiMTA6MDAgUE1cIixcclxuICAgICAgICAgICAgICBcImNoZWNrTGlzdERlc2NyaXB0aW9uXCI6IFwiXCIsXHJcbiAgICAgICAgICAgICAgXCJwdWJsaXNoXCI6IHRydWVcclxuICAgICAgICAgICAgfV1dXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnF1ZXJ5UGFyYW1zLnNvdXJjZUNoZWNrTGlzdF9pZCAmJiB0aGlzLnF1ZXJ5UGFyYW1zLmNoZWNrbGlzdFR5cGUpIHtcclxuICAgICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnc291cmNlQ2hlY2tMaXN0X2lkJyk/LnNldFZhbHVlKHRoaXMucXVlcnlQYXJhbXMuc291cmNlQ2hlY2tMaXN0X2lkKVxyXG4gICAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdjaGVja0xpc3RUeXBlJyk/LnNldFZhbHVlKHRoaXMucXVlcnlQYXJhbXMuY2hlY2tsaXN0VHlwZSlcclxuICAgICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgndHlwZScpPy5zZXRWYWx1ZShcImNoZWNrbGlzdFwiKVxyXG5cclxuICAgICAgICAgICAgICBsZXQgZ2V0Y2hlY2tsaXN0ID0gdGhpcy5jaGVja2xpc3RzLmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZS5zb3VyY2VDaGVja0xpc3RfaWQgPT09IHRoaXMucXVlcnlQYXJhbXMuc291cmNlQ2hlY2tMaXN0X2lkKVxyXG4gICAgICAgICAgICAgIGlmIChnZXRjaGVja2xpc3QgJiYgZ2V0Y2hlY2tsaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGlmIChnZXRjaGVja2xpc3RbMF0uY2hlY2tMaXN0VHlwZSA9PT0gXCJBSVwiKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd2ZsYWcgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdjaGVja2xpc3ROYW1lJyk/LnNldFZhbHVlKGdldGNoZWNrbGlzdFswXT8uY2hlY2tMaXN0TmFtZSlcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdjaGVja0xpc3REZXNjcmlwdGlvbicpPy5zZXRWYWx1ZShnZXRjaGVja2xpc3RbMF0/LmNoZWNrTGlzdERlc2NyaXB0aW9uKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja2xpc3ROYW1lID0gZ2V0Y2hlY2tsaXN0WzBdPy5jaGVja0xpc3ROYW1lXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnF1ZXJ5UGFyYW1zLmNoZWNrbGlzdFR5cGUgPT09ICdzdG9yZW9wZW5hbmRjbG9zZScpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ID0gJ3N0b3Jlb3BlbmFuZGNsb3NlJ1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZU9wZW5jbG9zZWxpc3QoZmFsc2UpXHJcbiAgICAgICAgICAgICAgfWVsc2UgaWYgKHRoaXMuYm94aW1hZ2VDaGVja2xpc3QuaW5jbHVkZXModGhpcy5xdWVyeVBhcmFtcy5jaGVja2xpc3RUeXBlKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3QgPSB0aGlzLnF1ZXJ5UGFyYW1zLmNoZWNrbGlzdFR5cGVcclxuICAgICAgICAgICAgICAgIHRoaXMucXVldWVhbGVydGxpc3QoZmFsc2UpXHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZpZGVvQ2hlY2tsaXN0LmluY2x1ZGVzKHRoaXMucXVlcnlQYXJhbXMuY2hlY2tsaXN0VHlwZSkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ID0gdGhpcy5xdWVyeVBhcmFtcy5jaGVja2xpc3RUeXBlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21lcnVuYXR0ZW5kZWRsaXN0KGZhbHNlKVxyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5pbWFnZUNoZWNrbGlzdC5pbmNsdWRlcyh0aGlzLnF1ZXJ5UGFyYW1zLmNoZWNrbGlzdFR5cGUpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdCA9IHRoaXMucXVlcnlQYXJhbXMuY2hlY2tsaXN0VHlwZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0bW9iaWxlVXNhZ2VEYXRhbGlzdChmYWxzZSlcclxuICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlICYmIHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuY2hlY2tMaXN0VHlwZSAhPSAnJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ2NoZWNrTGlzdFR5cGUnKT8uc2V0VmFsdWUodGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5jaGVja0xpc3RUeXBlKVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnY2hlY2tMaXN0VHlwZScpPy5zZXRWYWx1ZSh0aGlzLmNoZWNrbGlzdHNbMF0/LmNoZWNrTGlzdFR5cGUpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlICYmIHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuY2hlY2tsaXN0TmFtZSAhPSAnJykge1xyXG4gICAgICAgICAgICAgICAgbGV0IGdldGNoZWNrbGlzdCA9IHRoaXMuY2hlY2tsaXN0cy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGUuY2hlY2tMaXN0TmFtZSA9PT0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5jaGVja2xpc3ROYW1lKVxyXG4gICAgICAgICAgICAgICAgaWYgKGdldGNoZWNrbGlzdCAmJiBnZXRjaGVja2xpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoZ2V0Y2hlY2tsaXN0WzBdLmNoZWNrTGlzdFR5cGUgPT09IFwiQUlcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd2ZsYWcgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnZmlsdGVydHlwZScpPy5zZXRWYWx1ZShnZXRjaGVja2xpc3RbMF0/LmNvdmVyYWdlID09PSAndXNlcicgPyBcIlRlYW1zXCIgOiBcIkNsdXN0ZXJzXCIpXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdjaGVja0xpc3RUeXBlJyk/LnNldFZhbHVlKGdldGNoZWNrbGlzdFswXT8uY2hlY2tMaXN0VHlwZSlcclxuICAgICAgICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ2NoZWNrbGlzdE5hbWUnKT8uc2V0VmFsdWUoZ2V0Y2hlY2tsaXN0WzBdPy5jaGVja0xpc3ROYW1lKVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrbGlzdE5hbWUgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmNoZWNrbGlzdE5hbWVcclxuICAgICAgICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3NvdXJjZUNoZWNrTGlzdF9pZCcpPy5zZXRWYWx1ZShnZXRjaGVja2xpc3RbMF0/LnNvdXJjZUNoZWNrTGlzdF9pZClcclxuICAgICAgICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ2NoZWNrTGlzdERlc2NyaXB0aW9uJyk/LnNldFZhbHVlKGdldGNoZWNrbGlzdFswXT8uY2hlY2tMaXN0RGVzY3JpcHRpb24pXHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnZmlsdGVydHlwZScpPy5zZXRWYWx1ZSh0aGlzLmNoZWNrbGlzdHNbMF0/LmNvdmVyYWdlID09PSAndXNlcicgPyBcIlRlYW1zXCIgOiBcIkNsdXN0ZXJzXCIpXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdjaGVja0xpc3RUeXBlJyk/LnNldFZhbHVlKHRoaXMuY2hlY2tsaXN0c1swXT8uY2hlY2tMaXN0VHlwZSlcclxuICAgICAgICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ2NoZWNrbGlzdE5hbWUnKT8uc2V0VmFsdWUodGhpcy5jaGVja2xpc3RzWzBdPy5jaGVja0xpc3ROYW1lKVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnY2hlY2tMaXN0RGVzY3JpcHRpb24nKT8uc2V0VmFsdWUodGhpcy5jaGVja2xpc3RzWzBdPy5jaGVja0xpc3REZXNjcmlwdGlvbilcclxuXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0TmFtZSA9IHRoaXMuY2hlY2tsaXN0c1swXT8uY2hlY2tMaXN0TmFtZVxyXG4gICAgICAgICAgICAgICAgICBsZXQgZ2V0Y2hlY2tsaXN0ID0gdGhpcy5jaGVja2xpc3RzLmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZS5jaGVja0xpc3ROYW1lID09PSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmNoZWNrbGlzdE5hbWUpXHJcbiAgICAgICAgICAgICAgICAgIGlmIChnZXRjaGVja2xpc3QgJiYgZ2V0Y2hlY2tsaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0Y2hlY2tsaXN0WzBdLmNoZWNrTGlzdFR5cGUgPT09IFwiQUlcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93ZmxhZyA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrTGlzdERlc2NyaXB0aW9uID0gZ2V0Y2hlY2tsaXN0WzBdPy5jaGVja0xpc3REZXNjcmlwdGlvblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdjaGVja0xpc3REZXNjcmlwdGlvbicpPy5zZXRWYWx1ZShnZXRjaGVja2xpc3RbMF0/LmNoZWNrTGlzdERlc2NyaXB0aW9uKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdzb3VyY2VDaGVja0xpc3RfaWQnKT8uc2V0VmFsdWUoZ2V0Y2hlY2tsaXN0WzBdPy5zb3VyY2VDaGVja0xpc3RfaWQpXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdmaWx0ZXJ0eXBlJyk/LnNldFZhbHVlKHRoaXMuY2hlY2tsaXN0c1swXT8uY292ZXJhZ2UgPT09ICd1c2VyJyA/IFwiVGVhbXNcIiA6IFwiQ2x1c3RlcnNcIilcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdjaGVja0xpc3RUeXBlJyk/LnNldFZhbHVlKHRoaXMuY2hlY2tsaXN0c1swXT8uY2hlY2tMaXN0VHlwZSlcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNoZWNrbGlzdHNbMF0uY2hlY2tMaXN0VHlwZSA9PT0gXCJBSVwiKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd2ZsYWcgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdjaGVja2xpc3ROYW1lJyk/LnNldFZhbHVlKHRoaXMuY2hlY2tsaXN0c1swXT8uY2hlY2tMaXN0TmFtZSlcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdjaGVja0xpc3REZXNjcmlwdGlvbicpPy5zZXRWYWx1ZSh0aGlzLmNoZWNrbGlzdHNbMF0/LmNoZWNrTGlzdERlc2NyaXB0aW9uKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja2xpc3ROYW1lID0gdGhpcy5jaGVja2xpc3RzWzBdPy5jaGVja0xpc3ROYW1lXHJcbiAgICAgICAgICAgICAgICBsZXQgZ2V0Y2hlY2tsaXN0ID0gdGhpcy5jaGVja2xpc3RzLmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZS5jaGVja0xpc3ROYW1lID09PSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmNoZWNrbGlzdE5hbWUpXHJcbiAgICAgICAgICAgICAgICBpZiAoZ2V0Y2hlY2tsaXN0ICYmIGdldGNoZWNrbGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tMaXN0RGVzY3JpcHRpb24gPSBnZXRjaGVja2xpc3RbMF0/LmNoZWNrTGlzdERlc2NyaXB0aW9uXHJcblxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnc291cmNlQ2hlY2tMaXN0X2lkJyk/LnNldFZhbHVlKGdldGNoZWNrbGlzdFswXT8uc291cmNlQ2hlY2tMaXN0X2lkKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKClcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCA9PT0gJ3N0b3Jlb3BlbmFuZGNsb3NlJykge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ID0gJ3N0b3Jlb3BlbmFuZGNsb3NlJ1xyXG4gICAgICAgICAgICAgIHRoaXMuc3RvcmVPcGVuY2xvc2VsaXN0KGZhbHNlKVxyXG4gICAgICAgICAgICB9ZWxzZSBpZiAodGhpcy5ib3hpbWFnZUNoZWNrbGlzdC5pbmNsdWRlcyh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCkpIHtcclxuICAgICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnem9uZUxpc3QnKT8uc2V0VmFsdWUoW10pXHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3QgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZFxyXG4gICAgICAgICAgICAgIHRoaXMucXVldWVhbGVydGxpc3QoZmFsc2UpXHJcbiAgICAgICAgICAgIH0gIGVsc2UgaWYgKHRoaXMuaW1hZ2VDaGVja2xpc3QuaW5jbHVkZXModGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3QgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZDtcclxuICAgICAgICAgICAgICB0aGlzLmdldG1vYmlsZVVzYWdlRGF0YWxpc3QoZmFsc2UpXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy52aWRlb0NoZWNrbGlzdC5pbmNsdWRlcyh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCkpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdCA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkO1xyXG4gICAgICAgICAgICAgIHRoaXMuY3VzdG9tZXJ1bmF0dGVuZGVkbGlzdChmYWxzZSlcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdCA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudHlwZSA9PT0gJ2NoZWNrbGlzdCcgPyBcImN1c3RvbVwiIDogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50eXBlO1xyXG4gICAgICAgICAgICAgIGlmKHR5cGUpe1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudHlwZSA9PT0gJ2NoZWNrbGlzdCcpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZmlsdGVydHlwZSA9PT0gJ0NsdXN0ZXJzJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCd1c2VyTGlzdCcpPy5zZXRWYWx1ZShbXSlcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3JlTGlzdGRyb3Bkb3duKCk7XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3N0b3JlTGlzdCcpPy5zZXRWYWx1ZShbXSlcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXJMaXN0ZHJvcGRvd24oKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yZUxpc3Rkcm9wZG93blRhc2soKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5jaGVja2xpc3RzID0gW107XHJcbiAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnY2hlY2tsaXN0TmFtZScpPy5zZXRWYWx1ZSgnJylcclxuICAgICAgICAgIHRoaXMudmlld2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudmlld25vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZVxyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCkgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmNoZWNrbGlzdHMgPSBbXTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICByZW1vdmVRdWVyeVBhcmFtcygpIHtcclxuICAgIHRoaXMucXVlcnlQYXJhbXMgPSB7fVxyXG4gICAgY29uc3QgdXJsV2l0aG91dFBhcmFtcyA9IHRoaXMubG9jYXRpb24ucGF0aCgpLnNwbGl0KCc/JylbMF07XHJcbiAgICB0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZSh1cmxXaXRob3V0UGFyYW1zKTtcclxuICB9XHJcbiAgb25UZWFtc1NlbGVjdChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnVGVhbXNMaXN0Jyk/LnNldFZhbHVlKGV2ZW50KVxyXG4gICAgbGV0IHRlYW1zTGlzdCA9IGV2ZW50Lm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnRlYW1OYW1lKVxyXG4gICAgdGhpcy50cmF4U2VydmljZS5nZXR1c2Vycyh7IGNsaWVudElkOiB0aGlzLmhlYWRlckZpbHRlcnMuY2xpZW50LCB0ZWFtczogdGVhbXNMaXN0IH0pLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLnVzZXJMaXN0ID0gcmVzLmRhdGE7XHJcbiAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgndXNlckxpc3QnKT8uc2V0VmFsdWUodGhpcy51c2VyTGlzdClcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIG9uZ3JvdXBTZWxlY3QoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5yZW1vdmVRdWVyeVBhcmFtcygpXHJcbiAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnQ2x1c3Rlckxpc3QnKT8uc2V0VmFsdWUoZXZlbnQpXHJcbiAgICB0aGlzLmdyb3VwcyA9IGV2ZW50Lm1hcCgoZWw6IGFueSkgPT4gZWwuZ3JvdXBOYW1lKVxyXG4gICAgLy8gdGhpcy5nZXRBbGxTdG9yZXMoKVxyXG4gICAgdGhpcy50cmF4U2VydmljZS5nZXRTdG9yZXNsaXN0KHsgY2xpZW50SWQ6IHRoaXMuaGVhZGVyRmlsdGVycy5jbGllbnQsIGNsdXN0ZXJzOiB0aGlzLmdyb3VwcywgY2l0eTogW10gfSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuc3RvcmVMaXN0ID0gcmVzLmRhdGEuc3RvcmVzRGF0YTtcclxuICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdzdG9yZUxpc3QnKT8uc2V0VmFsdWUodGhpcy5zdG9yZUxpc3QpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIGZpbHRlckNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnJlbW92ZVF1ZXJ5UGFyYW1zKClcclxuICAgIGlmIChldmVudCA9PT0gJ1RlYW1zJykge1xyXG4gICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnc3RvcmVzJyk/LnNldFZhbHVlKFtdKVxyXG4gICAgICBsZXQgdGVhbXNMaXN0ID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5UZWFtc0xpc3QubWFwKChkYXRhOiBhbnkpID0+IGRhdGEudGVhbU5hbWUpXHJcbiAgICAgIHRoaXMudHJheFNlcnZpY2UuZ2V0dXNlcnMoeyBjbGllbnRJZDogdGhpcy5oZWFkZXJGaWx0ZXJzLmNsaWVudCwgdGVhbXM6IHRlYW1zTGlzdCB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy51c2VyTGlzdCA9ICByZXMuZGF0YVxyXG4gICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgndXNlckxpc3QnKT8uc2V0VmFsdWUocmVzLmRhdGEpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3VzZXJMaXN0Jyk/LnNldFZhbHVlKFtdKVxyXG4gICAgICB0aGlzLnRyYXhTZXJ2aWNlLmdldFN0b3Jlc2xpc3QoeyBjbGllbnRJZDogdGhpcy5oZWFkZXJGaWx0ZXJzLmNsaWVudCwgY2x1c3RlcnM6IHRoaXMuZ3JvdXBzLCBjaXR5OiBbXSB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZUxpc3QgPSAgcmVzLmRhdGEuc3RvcmVzRGF0YVxyXG4gICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnc3RvcmVMaXN0Jyk/LnNldFZhbHVlKHJlcy5kYXRhLnN0b3Jlc0RhdGEpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ2ZpbHRlcnR5cGUnKT8uc2V0VmFsdWUoZXZlbnQpXHJcbiAgfVxyXG4gIG9uem9uZVNlbGVjdChldmVudDogYW55KXtcclxuICAgIGNvbnNvbGUubG9nKGV2ZW50KVxyXG4gICAgdGhpcy5yZW1vdmVRdWVyeVBhcmFtcygpXHJcbiAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnem9uZUxpc3QnKT8uc2V0VmFsdWUoZXZlbnQpXHJcbiAgfVxyXG4gIG9uU3RvcmVTZWxlY3QoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5yZW1vdmVRdWVyeVBhcmFtcygpXHJcbiAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnem9uZUxpc3QnKT8uc2V0VmFsdWUoW10pXHJcbiAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnc3RvcmVMaXN0Jyk/LnNldFZhbHVlKGV2ZW50KVxyXG4gIFxyXG4gICAgdGhpcy5tb2JpbGV1c2FnZURhdGFMaXN0LmZvckVhY2goKHN0b3JlOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgaXNTdG9yZVNlbGVjdGVkID0gZXZlbnQuc29tZSgoc2VsZWN0ZWRTdG9yZTogYW55KSA9PiBzZWxlY3RlZFN0b3JlLnN0b3JlSWQgPT09IHN0b3JlLnN0b3JlSWQpO1xyXG4gICAgICBpZiAoaXNTdG9yZVNlbGVjdGVkKSB7XHJcbiAgICAgICAgc3RvcmUuY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc3RvcmUuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2VsZWN0QWxsID0gdGhpcy5tb2JpbGV1c2FnZURhdGFMaXN0LmV2ZXJ5KChvYmo6IGFueSkgPT4gb2JqLmNoZWNrZWQpO1xyXG4gICAgaWYodGhpcy5zZWxlY3Q9PT0ncXVldWVhbGVydCcpe1xyXG4gICAgICB0aGlzLmdldHpvbmV0bGlzdCgpXHJcbiAgICB9XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG9uVXNlclNlbGVjdChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnJlbW92ZVF1ZXJ5UGFyYW1zKClcclxuICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCd1c2VyTGlzdCcpPy5zZXRWYWx1ZShldmVudClcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcblxyXG4gIHN0b3JlTGlzdGRyb3Bkb3duVGFzaygpIHtcclxuICAgIHRoaXMudHJheFNlcnZpY2UuZ2V0U3RvcmVzbGlzdCh7IGNsaWVudElkOiB0aGlzLmhlYWRlckZpbHRlcnMuY2xpZW50LCBjbHVzdGVyczogdGhpcy5ncm91cHMsIGNpdHk6IFtdIH0pLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICBsZXQgc3RvcmVzID0gcmVzLmRhdGEuc3RvcmVzRGF0YS5tYXAoKGRhdGE6IGFueSkgPT4gZGF0YS5zdG9yZUlkKVxyXG4gICAgICAgICAgbGV0IG9iaiA9IHtcclxuICAgICAgICAgICAgXCJmcm9tRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZyb21EYXRlLFxyXG4gICAgICAgICAgICBcInRvRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnRvRGF0ZSxcclxuICAgICAgICAgICAgXCJDaGVja2xpc3RUeXBlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudHlwZSwgLy8gW1wiY3VzdG9tXCIsIFwiQUlcIl1cclxuICAgICAgICAgICAgXCJjaGVja2xpc3ROYW1lXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuY2hlY2tsaXN0TmFtZSxcclxuICAgICAgICAgICAgXCJjaGVja2xpc3RJZFwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCxcclxuICAgICAgICAgICAgXCJzdG9yZUlkXCI6IHN0b3JlcyxcclxuICAgICAgICAgICAgXCJhbnN3ZXJUeXBlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuYW5zd2VyVHlwZSwgLy9bXCJkZXNjcmlwdGl2ZVwiLFwieWVzL25vXCIsXCJtdWx0aXBsZWNob2ljZXNpbmdsZVwiLFwibXVsdGlwbGVjaG9pY2VtdWx0aXBsZVwiLFwiaW1hZ2VcIixcInZpZGVvXCIsXCJkZXNjcmlwdGl2ZUltYWdlXCIsXCJtdWx0aXBsZUltYWdlXCJdXHJcbiAgICAgICAgICAgIFwidmlld0ZsYWdcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS52aWV3RmxhZywvL1t0cnVlLCBmYWxzZV1cclxuICAgICAgICAgICAgXCJ2aWV3UmVkb1wiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnZpZXdSZWRvLCAvL1t0cnVlLCBmYWxzZV1cclxuICAgICAgICAgICAgXCJmaWx0ZXJcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5maWx0ZXIsXHJcbiAgICAgICAgICAgIFwicXVlc3Rpb25zXCI6IHRoaXMuc2VsZWN0ZWRTZWN0aW9uLmxlbmd0aCA+IDAgJiYgdGhpcy5zZWxlY3RlZFNlY3Rpb25bMF0ucXVlc3Rpb25zLmxlbmd0aCA+IDAgPyB0aGlzLnNlbGVjdGVkU2VjdGlvblswXS5xdWVzdGlvbnNbMF0gOiBcIlwiXHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy50cmF4U2VydmljZS5nZXRRdWVzdGlvbnMob2JqKT8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpPy5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmVzID0gcmVzLmRhdGEuc3RvcmVzRGV0YWlsc1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZUxpc3QgPSByZXMuZGF0YS5zdG9yZXNEZXRhaWxzXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldHRhc2tRQShmYWxzZSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0dGFza1FBKGZhbHNlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgdXNlckxpc3Rkcm9wZG93blRhc2soKSB7XHJcbiAgICBsZXQgdGVhbXNMaXN0ID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5UZWFtc0xpc3QubWFwKChkYXRhOiBhbnkpID0+IGRhdGEudGVhbU5hbWUpXHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLmdldHVzZXJzKHsgY2xpZW50SWQ6IHRoaXMuaGVhZGVyRmlsdGVycy5jbGllbnQsIHRlYW1zOiB0ZWFtc0xpc3QgfSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCd1c2VyTGlzdCcpPy5zZXRWYWx1ZShyZXMuZGF0YSlcclxuICAgICAgICAgIGxldCB1c2VycyA9IHJlcy5kYXRhLm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnVzZXJFbWFpbClcclxuICAgICAgICAgIGxldCBvYmogPSB7XHJcbiAgICAgICAgICAgIFwiZnJvbURhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5mcm9tRGF0ZSxcclxuICAgICAgICAgICAgXCJ0b0RhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50b0RhdGUsXHJcbiAgICAgICAgICAgIFwiQ2hlY2tsaXN0VHlwZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmNoZWNrTGlzdFR5cGUsIC8vIFtcImN1c3RvbVwiLCBcIkFJXCJdXHJcbiAgICAgICAgICAgIFwiY2hlY2tsaXN0TmFtZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmNoZWNrbGlzdE5hbWUsXHJcbiAgICAgICAgICAgIFwiY2hlY2tsaXN0SWRcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQsXHJcbiAgICAgICAgICAgIFwiZmlsdGVydHlwZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZpbHRlcnR5cGUsXHJcbiAgICAgICAgICAgIFwic3RvcmVJZFwiOiBbXSxcclxuICAgICAgICAgICAgXCJ1c2VyRW1haWxcIjogdXNlcnMsXHJcbiAgICAgICAgICAgIFwiYW5zd2VyVHlwZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmFuc3dlclR5cGUsIC8vW1wiZGVzY3JpcHRpdmVcIixcInllcy9ub1wiLFwibXVsdGlwbGVjaG9pY2VzaW5nbGVcIixcIm11bHRpcGxlY2hvaWNlbXVsdGlwbGVcIixcImltYWdlXCIsXCJ2aWRlb1wiLFwiZGVzY3JpcHRpdmVJbWFnZVwiLFwibXVsdGlwbGVJbWFnZVwiXVxyXG4gICAgICAgICAgICBcInZpZXdGbGFnXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudmlld0ZsYWcsLy9bdHJ1ZSwgZmFsc2VdXHJcbiAgICAgICAgICAgIFwidmlld1JlZG9cIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS52aWV3UmVkbywvL1t0cnVlLCBmYWxzZV1cclxuICAgICAgICAgICAgXCJxdWVzdGlvbnNcIjogdGhpcy5zZWxlY3RlZFNlY3Rpb24ubGVuZ3RoID4gMCAmJiB0aGlzLnNlbGVjdGVkU2VjdGlvblswXS5xdWVzdGlvbnMubGVuZ3RoID4gMCA/IHRoaXMuc2VsZWN0ZWRTZWN0aW9uWzBdLnF1ZXN0aW9uc1swXSA6IFwiXCIsXHJcbiAgICAgICAgICAgIFwiZmlsdGVyXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZmlsdGVyLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy50cmF4U2VydmljZS5nZXRRdWVzdGlvbnMob2JqKT8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpPy5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudXNlckxpc3QgPSByZXMuZGF0YS5zdG9yZXNEZXRhaWxzXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgndXNlckxpc3QnKT8uc2V0VmFsdWUodGhpcy51c2VyTGlzdClcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdzdG9yZUxpc3QnKT8uc2V0VmFsdWUoW10pXHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlTGlzdCA9IFtdXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldHRhc2tRQShmYWxzZSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0dGFza1FBKGZhbHNlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICB1c2VyTGlzdGRyb3Bkb3duKCkge1xyXG4gICAgbGV0IHRlYW1zTGlzdCA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuVGVhbXNMaXN0Lm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnRlYW1OYW1lKVxyXG4gICAgdGhpcy50cmF4U2VydmljZS5nZXR1c2Vycyh7IGNsaWVudElkOiB0aGlzLmhlYWRlckZpbHRlcnMuY2xpZW50LCB0ZWFtczogdGVhbXNMaXN0IH0pLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICBpZih0aGlzLnF1ZXJ5UGFyYW1zLnVzZXJFbWFpbCl7XHJcbiAgICAgICAgICAgIGxldCBnZXR1c2VyID0gcmVzLmRhdGEuZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlLnVzZXJFbWFpbCA9PT0gdGhpcy5xdWVyeVBhcmFtcy51c2VyRW1haWwpXHJcbiAgICAgICAgICAgIHRoaXMudXNlckxpc3QgPSBnZXR1c2VyO1xyXG4gICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgndXNlckxpc3QnKT8uc2V0VmFsdWUodGhpcy51c2VyTGlzdClcclxuICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICB0aGlzLnVzZXJMaXN0ID0gIHJlcy5kYXRhXHJcbiAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCd1c2VyTGlzdCcpPy5zZXRWYWx1ZShyZXMuZGF0YSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCB1c2VycyA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudXNlckxpc3QubWFwKChkYXRhOiBhbnkpID0+IGRhdGEudXNlckVtYWlsKVxyXG4gICAgICAgICAgbGV0IG9iaiA9IHtcclxuICAgICAgICAgICAgXCJmcm9tRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZyb21EYXRlLFxyXG4gICAgICAgICAgICBcInRvRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnRvRGF0ZSxcclxuICAgICAgICAgICAgXCJDaGVja2xpc3RUeXBlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuY2hlY2tMaXN0VHlwZSwgLy8gW1wiY3VzdG9tXCIsIFwiQUlcIl1cclxuICAgICAgICAgICAgXCJjaGVja2xpc3ROYW1lXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuY2hlY2tsaXN0TmFtZSxcclxuICAgICAgICAgICAgXCJjaGVja2xpc3RJZFwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCxcclxuICAgICAgICAgICAgXCJmaWx0ZXJ0eXBlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZmlsdGVydHlwZSxcclxuICAgICAgICAgICAgXCJzdG9yZUlkXCI6IFtdLFxyXG4gICAgICAgICAgICBcInVzZXJFbWFpbFwiOiB1c2VycyxcclxuICAgICAgICAgICAgXCJhbnN3ZXJUeXBlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuYW5zd2VyVHlwZSwgLy9bXCJkZXNjcmlwdGl2ZVwiLFwieWVzL25vXCIsXCJtdWx0aXBsZWNob2ljZXNpbmdsZVwiLFwibXVsdGlwbGVjaG9pY2VtdWx0aXBsZVwiLFwiaW1hZ2VcIixcInZpZGVvXCIsXCJkZXNjcmlwdGl2ZUltYWdlXCIsXCJtdWx0aXBsZUltYWdlXCJdXHJcbiAgICAgICAgICAgIFwidmlld0ZsYWdcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS52aWV3RmxhZywvL1t0cnVlLCBmYWxzZV1cclxuICAgICAgICAgICAgXCJ2aWV3UmVkb1wiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnZpZXdSZWRvLC8vW3RydWUsIGZhbHNlXVxyXG4gICAgICAgICAgICBcInF1ZXN0aW9uc1wiOiB0aGlzLnNlbGVjdGVkU2VjdGlvbi5sZW5ndGggPiAwICYmIHRoaXMuc2VsZWN0ZWRTZWN0aW9uWzBdLnF1ZXN0aW9ucy5sZW5ndGggPiAwID8gdGhpcy5zZWxlY3RlZFNlY3Rpb25bMF0ucXVlc3Rpb25zWzBdIDogXCJcIixcclxuICAgICAgICAgICAgXCJmaWx0ZXJcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5maWx0ZXIsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnRyYXhTZXJ2aWNlLmdldGNoZWNrbGlzdChvYmopPy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSk/LnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51c2VyTGlzdCA9IHJlcy5kYXRhLnN0b3Jlc0RldGFpbHNcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCd1c2VyTGlzdCcpPy5zZXRWYWx1ZSh0aGlzLnVzZXJMaXN0KVxyXG4gICAgICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3N0b3JlTGlzdCcpPy5zZXRWYWx1ZShbXSlcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmVMaXN0ID0gW11cclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0Q2hlY2tsaXN0UUEoZmFsc2UpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldENoZWNrbGlzdFFBKGZhbHNlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICBzdG9yZUxpc3Rkcm9wZG93bigpIHtcclxuICAgIHRoaXMudHJheFNlcnZpY2UuZ2V0U3RvcmVzbGlzdCh7IGNsaWVudElkOiB0aGlzLmhlYWRlckZpbHRlcnMuY2xpZW50LCBjbHVzdGVyczogdGhpcy5ncm91cHMsIGNpdHk6IFtdIH0pLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICBsZXQgc3RvcmVzID0gcmVzLmRhdGEuc3RvcmVzRGF0YS5tYXAoKGRhdGE6IGFueSkgPT4gZGF0YS5zdG9yZUlkKVxyXG4gICAgICAgICAgbGV0IG9iaiA9IHtcclxuICAgICAgICAgICAgXCJmcm9tRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZyb21EYXRlLFxyXG4gICAgICAgICAgICBcInRvRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnRvRGF0ZSxcclxuICAgICAgICAgICAgXCJDaGVja2xpc3RUeXBlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuY2hlY2tMaXN0VHlwZSwgLy8gW1wiY3VzdG9tXCIsIFwiQUlcIl1cclxuICAgICAgICAgICAgXCJjaGVja2xpc3ROYW1lXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuY2hlY2tsaXN0TmFtZSxcclxuICAgICAgICAgICAgXCJjaGVja2xpc3RJZFwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCxcclxuICAgICAgICAgICAgXCJmaWx0ZXJ0eXBlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZmlsdGVydHlwZSxcclxuICAgICAgICAgICAgXCJzdG9yZUlkXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZmlsdGVydHlwZSA9PT0gJ0NsdXN0ZXJzJyA/IHN0b3JlcyA6IFtdLFxyXG4gICAgICAgICAgICBcInVzZXJFbWFpbFwiOiBbXSxcclxuICAgICAgICAgICAgXCJhbnN3ZXJUeXBlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuYW5zd2VyVHlwZSwgLy9bXCJkZXNjcmlwdGl2ZVwiLFwieWVzL25vXCIsXCJtdWx0aXBsZWNob2ljZXNpbmdsZVwiLFwibXVsdGlwbGVjaG9pY2VtdWx0aXBsZVwiLFwiaW1hZ2VcIixcInZpZGVvXCIsXCJkZXNjcmlwdGl2ZUltYWdlXCIsXCJtdWx0aXBsZUltYWdlXCJdXHJcbiAgICAgICAgICAgIFwidmlld0ZsYWdcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS52aWV3RmxhZywvL1t0cnVlLCBmYWxzZV1cclxuICAgICAgICAgICAgXCJ2aWV3UmVkb1wiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnZpZXdSZWRvLC8vW3RydWUsIGZhbHNlXVxyXG4gICAgICAgICAgICBcInF1ZXN0aW9uc1wiOiB0aGlzLnNlbGVjdGVkU2VjdGlvbi5sZW5ndGggPiAwICYmIHRoaXMuc2VsZWN0ZWRTZWN0aW9uWzBdLnF1ZXN0aW9ucy5sZW5ndGggPiAwID8gdGhpcy5zZWxlY3RlZFNlY3Rpb25bMF0ucXVlc3Rpb25zWzBdIDogXCJcIixcclxuICAgICAgICAgICAgXCJmaWx0ZXJcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5maWx0ZXIsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnRyYXhTZXJ2aWNlLmdldGNoZWNrbGlzdChvYmopPy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSk/LnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZXMgPSByZXMuZGF0YS5zdG9yZXNEZXRhaWxzXHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlTGlzdCA9IHJlcy5kYXRhLnN0b3Jlc0RldGFpbHNcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdzdG9yZUxpc3QnKT8uc2V0VmFsdWUodGhpcy5zdG9yZXMpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldENoZWNrbGlzdFFBKGZhbHNlKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRDaGVja2xpc3RRQShmYWxzZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgc2VsZWN0ID0gJ2N1c3RvbSdcclxuICBvblN1Ym1pdCgpIHtcclxuICAgIHRoaXMub2Zmc2V0ID0gMVxyXG4gICAgdGhpcy5jaGVja2xpc3ROYW1lID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5jaGVja2xpc3ROYW1lXHJcbiAgICB0aGlzLmNoZWNrTGlzdERlc2NyaXB0aW9uID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5jaGVja0xpc3REZXNjcmlwdGlvblxyXG4gICAgdGhpcy5zaG93bXVsdGkgPSB0cnVlO1xyXG4gICAgdGhpcy5zaG93c2luZ2xlID0gZmFsc2VcclxuICAgIHRoaXMuYW5zd2VyRmlsdGVyID0gW11cclxuICAgIGlmICh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCA9PT0gJ3N0b3Jlb3BlbmFuZGNsb3NlJykge1xyXG4gICAgICB0aGlzLnNlbGVjdCA9ICdzdG9yZW9wZW5hbmRjbG9zZSdcclxuICAgICAgdGhpcy5zdG9yZU9wZW5jbG9zZWxpc3QoZmFsc2UpXHJcbiAgICB9ZWxzZSAgaWYgKHRoaXMuYm94aW1hZ2VDaGVja2xpc3QuaW5jbHVkZXModGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQpKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWRcclxuICAgICAgdGhpcy5xdWV1ZWFsZXJ0bGlzdChmYWxzZSlcclxuICAgIH0gIGVsc2UgaWYgKHRoaXMuaW1hZ2VDaGVja2xpc3QuaW5jbHVkZXModGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQpKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQ7XHJcbiAgICAgIHRoaXMuZ2V0bW9iaWxlVXNhZ2VEYXRhbGlzdChmYWxzZSlcclxuICAgIH0gZWxzZSBpZiAodGhpcy52aWRlb0NoZWNrbGlzdC5pbmNsdWRlcyh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCkpIHtcclxuICAgICAgdGhpcy5zZWxlY3QgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZDtcclxuICAgICAgdGhpcy5jdXN0b21lcnVuYXR0ZW5kZWRsaXN0KGZhbHNlKVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCA9PT0gJ2N1c3RvbWVydHJpYWwnKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ID0gJ2N1c3RvbWVydHJpYWwnO1xyXG4gICAgICB0aGlzLmdldGN1c3RvbWVydHJpYWxsaXN0KClcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50eXBlID09PSAnY2hlY2tsaXN0JyA/IFwiY3VzdG9tXCIgOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnR5cGU7XHJcbiAgICAgIGlmICh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnR5cGUgPT09ICdjaGVja2xpc3QnKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZmlsdGVydHlwZSA9PT0gJ0NsdXN0ZXJzJykge1xyXG4gICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3VzZXJMaXN0Jyk/LnNldFZhbHVlKFtdKVxyXG4gICAgICAgICAgdGhpcy5zdG9yZUxpc3Rkcm9wZG93bigpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnc3RvcmVMaXN0Jyk/LnNldFZhbHVlKFtdKVxyXG4gICAgICAgICAgdGhpcy51c2VyTGlzdGRyb3Bkb3duKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZpbHRlcnR5cGUgPT09ICdDbHVzdGVycycpIHtcclxuICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCd1c2VyTGlzdCcpPy5zZXRWYWx1ZShbXSlcclxuICAgICAgICAgIHRoaXMuc3RvcmVMaXN0ZHJvcGRvd25UYXNrKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdzdG9yZUxpc3QnKT8uc2V0VmFsdWUoW10pXHJcbiAgICAgICAgICB0aGlzLnVzZXJMaXN0ZHJvcGRvd25UYXNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG93OiBudW1iZXIgPSAwO1xyXG4gIGFjY29yZGlhbihpbmRleDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5zaG93ID09IGluZGV4KSB7XHJcbiAgICAgIHRoaXMuc2hvdyA9IC0xO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zaG93ID0gaW5kZXg7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldHpvbmV0bGlzdCgpe1xyXG4gICAgbGV0IHN0b3JlcyA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc3RvcmVMaXN0Lm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnN0b3JlSWQpXHJcbiAgICBsZXQgem9uZSA9dGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS56b25lTGlzdD8ubGVuZ3RoPyB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnpvbmVMaXN0Lm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnZhbHVlKTpbXVxyXG4gICAgbGV0IG9iaiA9IHtcclxuICAgICAgXCJmcm9tRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZyb21EYXRlLFxyXG4gICAgICBcInRvRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnRvRGF0ZSxcclxuICAgICAgXCJzdG9yZUlkXCI6IHN0b3JlcyxcclxuICAgICAgXCJjbGllbnRJZFwiOiB0aGlzLmhlYWRlckZpbHRlcnMuY2xpZW50LFxyXG4gICAgICBcIkNoZWNrbGlzdFR5cGVcIjogdGhpcy5zZWxlY3QsXHJcbiAgICAgIFwib2Zmc2V0XCI6IDAsXHJcbiAgICAgIFwibGltaXRcIjogMTAwMDAsXHJcbiAgICAgIFwidmlld0ltYWdlXCI6IGZhbHNlLFxyXG4gICAgICBcImNhdGVnb3J5XCI6IHpvbmVcclxuICAgIH1cclxuICAgIHRoaXMudHJheFNlcnZpY2UucXVldWVhbGVydGxpc3Qob2JqKT8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpPy5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMubW9iaWxldXNhZ2VEYXRhTGlzdCA9IHJlcy5kYXRhLmRhdGFcclxuICAgICAgICAgIHRoaXMubW9iaWxldXNhZ2VEYXRhTGlzdC5mb3JFYWNoKChzdG9yZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgc3RvcmUuY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0QWxsID0gdGhpcy5tb2JpbGV1c2FnZURhdGFMaXN0LmV2ZXJ5KChvYmo6IGFueSkgPT4gb2JqLmNoZWNrZWQpO1xyXG4gICAgICAgICAgdGhpcy56b25lTGlzdCA9ICByZXMuZGF0YS56b25lc1xyXG4gICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3pvbmVMaXN0Jyk/LnNldFZhbHVlKHJlcy5kYXRhLnNlbGVjdGVkem9uZXMpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIH0pXHJcbiAgXHJcbiAgfVxyXG4gIHF1ZXVlYWxlcnRsaXN0KHR5cGU6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2codGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZSlcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLm5vRGF0YSA9IGZhbHNlO1xyXG4gICAgdGhpcy52aWV3bG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnZpZXdub0RhdGEgPSBmYWxzZTtcclxuICAgIGxldCBzdG9yZXMgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnN0b3JlTGlzdC5tYXAoKGRhdGE6IGFueSkgPT4gZGF0YS5zdG9yZUlkKVxyXG4gICAgbGV0IHpvbmUgPXRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuem9uZUxpc3Q/Lmxlbmd0aD8gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS56b25lTGlzdC5tYXAoKGRhdGE6IGFueSkgPT4gZGF0YS52YWx1ZSk6W11cclxuICAgIGxldCBvYmogPSB7XHJcbiAgICAgIFwiZnJvbURhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5mcm9tRGF0ZSxcclxuICAgICAgXCJ0b0RhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50b0RhdGUsXHJcbiAgICAgIFwic3RvcmVJZFwiOiBzdG9yZXMsXHJcbiAgICAgIFwiY2xpZW50SWRcIjogdGhpcy5oZWFkZXJGaWx0ZXJzLmNsaWVudCxcclxuICAgICAgXCJDaGVja2xpc3RUeXBlXCI6IHRoaXMuc2VsZWN0LFxyXG4gICAgICBcIm9mZnNldFwiOiAwLFxyXG4gICAgICBcImxpbWl0XCI6IDEwMDAwLFxyXG4gICAgICBcInZpZXdJbWFnZVwiOiBmYWxzZSxcclxuICAgICAgXCJjYXRlZ29yeVwiOiB6b25lXHJcbiAgICB9XHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLnF1ZXVlYWxlcnRsaXN0KG9iaik/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKT8uc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLm1vYmlsZXVzYWdlRGF0YUxpc3QgPSByZXMuZGF0YS5kYXRhXHJcbiAgICAgICAgICB0aGlzLnpvbmVMaXN0ID0gIHJlcy5kYXRhLnpvbmVzXHJcbiAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnem9uZUxpc3QnKT8uc2V0VmFsdWUocmVzLmRhdGEuc2VsZWN0ZWR6b25lcylcclxuICAgICAgICAgIHRoaXMuc3RvcmVzID0gW11cclxuICAgICAgICAgIHRoaXMubW9iaWxldXNhZ2VEYXRhTGlzdC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgZWxlbWVudC5jaGVja2VkID0gdHJ1ZVxyXG4gICAgICAgICAgICB0aGlzLnN0b3Jlcy5wdXNoKHtcclxuICAgICAgICAgICAgICBzdG9yZUlkOiBlbGVtZW50LnN0b3JlSWQsXHJcbiAgICAgICAgICAgICAgc3RvcmVOYW1lOiBlbGVtZW50LnN0b3JlTmFtZVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgdGhpcy5zdG9yZXMgPSB0aGlzLnN0b3Jlc1xyXG4gICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3N0b3JlTGlzdCcpPy5zZXRWYWx1ZSh0aGlzLnN0b3JlcylcclxuICAgICAgICAgIHRoaXMuc2VsZWN0QWxsID0gdGhpcy5tb2JpbGV1c2FnZURhdGFMaXN0LmV2ZXJ5KChvYmo6IGFueSkgPT4gb2JqLmNoZWNrZWQpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm5vRGF0YSA9IGZhbHNlXHJcbiAgICAgICAgICB0aGlzLnZpZXdsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnZpZXdub0RhdGEgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucXVldWVhbGVydHZpZXcoKVxyXG5cclxuXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy52aWV3bG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy52aWV3bm9EYXRhID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgc3RvcmVPcGVuY2xvc2VsaXN0KHR5cGU6IGFueSkge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgICB0aGlzLnZpZXdsb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMudmlld25vRGF0YSA9IGZhbHNlO1xyXG4gICAgbGV0IHN0b3JlcyA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc3RvcmVMaXN0Lm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnN0b3JlSWQpXHJcbiAgICBsZXQgb2JqID0ge1xyXG4gICAgICBcImZyb21EYXRlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZnJvbURhdGUsXHJcbiAgICAgIFwidG9EYXRlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudG9EYXRlLFxyXG4gICAgICBcInN0b3JlSWRcIjogc3RvcmVzLFxyXG4gICAgICBcImNsaWVudElkXCI6IHRoaXMuaGVhZGVyRmlsdGVycy5jbGllbnQsXHJcbiAgICAgIFwiQ2hlY2tsaXN0VHlwZVwiOiB0aGlzLnNlbGVjdCxcclxuICAgICAgXCJvZmZzZXRcIjogMCxcclxuICAgICAgXCJsaW1pdFwiOiAxMDAwMCxcclxuICAgICAgXCJ2aWV3SW1hZ2VcIjogZmFsc2UsXHJcbiAgICAgIFwiY2F0ZWdvcnlcIjogdGhpcy5jYXRlZ29yeVxyXG4gICAgfVxyXG4gICAgdGhpcy50cmF4U2VydmljZS5zdG9yZU9wZW5jbG9zZWxpc3Qob2JqKT8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpPy5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMubW9iaWxldXNhZ2VEYXRhTGlzdCA9IHJlcy5kYXRhLnN0b3Jlb3BlbmFuZGNsb3NlRGF0YVxyXG4gICAgICAgICAgdGhpcy5zdG9yZXMgPSBbXVxyXG4gICAgICAgICAgdGhpcy5tb2JpbGV1c2FnZURhdGFMaXN0LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBlbGVtZW50LmNoZWNrZWQgPSB0cnVlXHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmVzLnB1c2goe1xyXG4gICAgICAgICAgICAgIHN0b3JlSWQ6IGVsZW1lbnQuc3RvcmVJZCxcclxuICAgICAgICAgICAgICBzdG9yZU5hbWU6IGVsZW1lbnQuc3RvcmVOYW1lXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICB0aGlzLnN0b3JlcyA9IHRoaXMuc3RvcmVzXHJcbiAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnc3RvcmVMaXN0Jyk/LnNldFZhbHVlKHRoaXMuc3RvcmVzKVxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RBbGwgPSB0aGlzLm1vYmlsZXVzYWdlRGF0YUxpc3QuZXZlcnkoKG9iajogYW55KSA9PiBvYmouY2hlY2tlZCk7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMubm9EYXRhID0gZmFsc2VcclxuICAgICAgICAgIHRoaXMudmlld2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudmlld25vRGF0YSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zdG9yZU9wZW5jbG9zZXZpZXcoKVxyXG5cclxuXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy52aWV3bG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy52aWV3bm9EYXRhID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICBxdWV1ZWFsZXJ0dmlldygpe1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgICB0aGlzLmxpbWl0ID0gMVxyXG4gICAgbGV0IHN0b3JlcyA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc3RvcmVMaXN0Lm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnN0b3JlSWQpXHJcbiAgICBsZXQgem9uZXM9dGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS56b25lTGlzdD8ubGVuZ3RoPyB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnpvbmVMaXN0Lm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnZhbHVlKTpbXVxyXG4gICAgbGV0IG9iaiA9IHtcclxuICAgICAgXCJmcm9tRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZyb21EYXRlLFxyXG4gICAgICBcInRvRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnRvRGF0ZSxcclxuICAgICAgXCJzdG9yZUlkXCI6IHN0b3JlcyxcclxuICAgICAgXCJjbGllbnRJZFwiOiB0aGlzLmhlYWRlckZpbHRlcnMuY2xpZW50LFxyXG4gICAgICBcIkNoZWNrbGlzdFR5cGVcIjogdGhpcy5zZWxlY3QsXHJcbiAgICAgIFwib2Zmc2V0XCI6ICh0aGlzLm9mZnNldCAtIDEpLFxyXG4gICAgICBcImxpbWl0XCI6IHRoaXMubGltaXQsXHJcbiAgICAgIFwidmlld0ltYWdlXCI6IHRydWUsXHJcbiAgICAgIFwiY2F0ZWdvcnlcIjogem9uZXMsXHJcbiAgICB9XHJcbiAgICB0aGlzLnZpZXdsb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMudmlld25vRGF0YSA9IGZhbHNlO1xyXG4gICAgdGhpcy5saW1pdCA9IDFcclxuICAgIHRoaXMucGFnaW5hdGlvblNpemVzID0gWzFdXHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLnF1ZXVlYWxlcnRsaXN0KG9iaik/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKT8uc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLnF1ZXVlQWxlcnRWaWV3ID0gcmVzLmRhdGEuZGF0YVxyXG4gICAgICAgICAgdGhpcy56b25lTGlzdCA9ICByZXMuZGF0YS56b25lc1xyXG4gICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3pvbmVMaXN0Jyk/LnNldFZhbHVlKHJlcy5kYXRhLnNlbGVjdGVkem9uZXMpXHJcbiAgICAgICAgICB0aGlzLnF1ZXVlQWxlcnRWaWV3LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBlbGVtZW50LmRhdGVTdHJpbmcgPSBkYXlqcyhlbGVtZW50LmRhdGVTdHJpbmcpLmZvcm1hdCgnREQtTU0tWVlZWScpXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMudG90YWxDb3VudCA9IHJlcy5kYXRhLnRvdGFsQ291bnRcclxuICAgICAgICAgIHRoaXMudmlld2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudmlld25vRGF0YSA9IGZhbHNlXHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudmlld2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudmlld25vRGF0YSA9IHRydWVcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG4gIFxyXG4gIHN0b3JlT3BlbmNsb3NldmlldygpIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLm5vRGF0YSA9IGZhbHNlO1xyXG4gICAgdGhpcy5saW1pdCA9IDEwXHJcbiAgICBsZXQgc3RvcmVzID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zdG9yZUxpc3QubWFwKChkYXRhOiBhbnkpID0+IGRhdGEuc3RvcmVJZClcclxuICAgIGxldCBvYmogPSB7XHJcbiAgICAgIFwiZnJvbURhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5mcm9tRGF0ZSxcclxuICAgICAgXCJ0b0RhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50b0RhdGUsXHJcbiAgICAgIFwic3RvcmVJZFwiOiBzdG9yZXMsXHJcbiAgICAgIFwiY2xpZW50SWRcIjogdGhpcy5oZWFkZXJGaWx0ZXJzLmNsaWVudCxcclxuICAgICAgXCJDaGVja2xpc3RUeXBlXCI6IHRoaXMuc2VsZWN0LFxyXG4gICAgICBcIm9mZnNldFwiOiAodGhpcy5vZmZzZXQgLSAxKSxcclxuICAgICAgXCJsaW1pdFwiOiB0aGlzLmxpbWl0LFxyXG4gICAgICBcInZpZXdJbWFnZVwiOiB0cnVlLFxyXG4gICAgICBcImNhdGVnb3J5XCI6IHRoaXMuY2F0ZWdvcnlcclxuXHJcbiAgICB9XHJcbiAgICB0aGlzLnZpZXdsb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMudmlld25vRGF0YSA9IGZhbHNlO1xyXG4gICAgdGhpcy5saW1pdCA9IDEwO1xyXG4gICAgdGhpcy5wYWdpbmF0aW9uU2l6ZXMgPSBbMTBdO1xyXG4gICAgdGhpcy50cmF4U2VydmljZS5zdG9yZU9wZW5jbG9zZWxpc3Qob2JqKT8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpPy5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuc3RvcmVPcGVuY2xvc2VWaWV3ID0gcmVzLmRhdGEuc3RvcmVvcGVuYW5kY2xvc2VEYXRhXHJcblxyXG4gICAgICAgICAgdGhpcy5zdG9yZU9wZW5jbG9zZVZpZXcuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQuZGF0ZVN0cmluZyA9IGRheWpzKGVsZW1lbnQuZGF0ZVN0cmluZykuZm9ybWF0KCdERC1NTS1ZWVlZJylcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy50b3RhbENvdW50ID0gcmVzLmRhdGEudG90YWxDb3VudFxyXG4gICAgICAgICAgdGhpcy52aWV3bG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy52aWV3bm9EYXRhID0gZmFsc2VcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy52aWV3bG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy52aWV3bm9EYXRhID0gdHJ1ZVxyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm5vRGF0YSA9IGZhbHNlO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBjaGVja2xpc3ROYW1lY2hhbmdlKGV2ZW50OiBhbnksIHR5cGU6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coXCI9PT09PT0+XCIsZXZlbnQuY292ZXJhZ2UpXHJcbiAgICB0aGlzLnJlbW92ZVF1ZXJ5UGFyYW1zKClcclxuICAgIGlmIChldmVudC5jaGVja0xpc3RUeXBlID09PSBcIkFJXCIpIHtcclxuICAgICAgdGhpcy5zaG93ZmxhZyA9IGZhbHNlXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnY2hlY2tMaXN0VHlwZScpPy5zZXRWYWx1ZShldmVudC5jaGVja0xpc3RUeXBlKVxyXG4gICAgICB0aGlzLnNob3dmbGFnID0gdHJ1ZVxyXG4gICAgfVxyXG4gICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3NvdXJjZUNoZWNrTGlzdF9pZCcpPy5zZXRWYWx1ZShldmVudD8uc291cmNlQ2hlY2tMaXN0X2lkKVxyXG4gICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ2NoZWNrbGlzdE5hbWUnKT8uc2V0VmFsdWUoZXZlbnQ/LmNoZWNrTGlzdE5hbWUpXHJcbiAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnY2hlY2tMaXN0RGVzY3JpcHRpb24nKT8uc2V0VmFsdWUoZXZlbnQ/LmNoZWNrTGlzdERlc2NyaXB0aW9uKVxyXG5cclxuICAgIGlmIChldmVudCAmJiBldmVudC5jb3ZlcmFnZSA9PT0gJ3N0b3JlJykge1xyXG4gICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgndXNlckxpc3QnKT8uc2V0VmFsdWUoW10pXHJcbiAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdmaWx0ZXJ0eXBlJyk/LnNldFZhbHVlKCdDbHVzdGVycycpXHJcbiAgICAgIHRoaXMudHJheFNlcnZpY2UuZ2V0U3RvcmVzbGlzdCh7IGNsaWVudElkOiB0aGlzLmhlYWRlckZpbHRlcnMuY2xpZW50LCBjbHVzdGVyczogdGhpcy5ncm91cHMsIGNpdHk6IFtdIH0pLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlTGlzdCA9IHJlcy5kYXRhLnN0b3Jlc0RhdGE7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmVzID0gcmVzLmRhdGEuc3RvcmVzRGF0YVxyXG4gICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnc3RvcmVMaXN0Jyk/LnNldFZhbHVlKHRoaXMuc3RvcmVMaXN0KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdzdG9yZXMnKT8uc2V0VmFsdWUoW10pXHJcbiAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdmaWx0ZXJ0eXBlJyk/LnNldFZhbHVlKCdUZWFtcycpXHJcbiAgICAgIGxldCB0ZWFtc0xpc3QgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLlRlYW1zTGlzdC5tYXAoKGRhdGE6IGFueSkgPT4gZGF0YS50ZWFtTmFtZSlcclxuICAgICAgdGhpcy50cmF4U2VydmljZS5nZXR1c2Vycyh7IGNsaWVudElkOiB0aGlzLmhlYWRlckZpbHRlcnMuY2xpZW50LCB0ZWFtczogdGVhbXNMaXN0IH0pLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLnVzZXJMaXN0ID0gcmVzLmRhdGE7XHJcbiAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCd1c2VyTGlzdCcpPy5zZXRWYWx1ZSh0aGlzLnVzZXJMaXN0KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgY3VzdG9tZXJ1bmF0dGVuZGVkbGlzdCh0eXBlOiBhbnkpIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLm5vRGF0YSA9IGZhbHNlO1xyXG4gICAgdGhpcy52aWV3bG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnZpZXdub0RhdGEgPSBmYWxzZVxyXG4gICAgbGV0IHN0b3JlcyA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc3RvcmVMaXN0Lm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnN0b3JlSWQpXHJcbiAgICBsZXQgb2JqID0ge1xyXG4gICAgICBcImRhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5mcm9tRGF0ZSxcclxuICAgICAgXCJmcm9tRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZyb21EYXRlLFxyXG4gICAgICBcInRvRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnRvRGF0ZSxcclxuICAgICAgXCJzdG9yZUlkXCI6IHN0b3JlcyxcclxuICAgICAgXCJjbGllbnRJZFwiOiB0aGlzLmhlYWRlckZpbHRlcnMuY2xpZW50LFxyXG4gICAgICBcIkNoZWNrbGlzdFR5cGVcIjogdGhpcy5zZWxlY3QsXHJcbiAgICAgIFwidmlld0ltYWdlXCI6IGZhbHNlLFxyXG4gICAgICBcImxpbWl0XCI6IDEwLFxyXG4gICAgICBcIm9mZnNldFwiOiAwLFxyXG4gICAgICBcImNhdGVnb3J5XCI6IHRoaXMuY2F0ZWdvcnlcclxuICAgIH1cclxuICAgIHRoaXMudHJheFNlcnZpY2UuZ2V0Y3VzdG9tZXJ1bmF0dGVuZGVkbGlzdChvYmopPy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSk/LnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5tb2JpbGV1c2FnZURhdGFMaXN0ID0gcmVzLmRhdGEuZGF0YTtcclxuICAgICAgICAgIHRoaXMuc3RvcmVzID0gW107XHJcbiAgICAgICAgICB0aGlzLm1vYmlsZXVzYWdlRGF0YUxpc3QuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQuY2hlY2tlZCA9IHRydWVcclxuICAgICAgICAgICAgdGhpcy5zdG9yZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgc3RvcmVJZDogZWxlbWVudC5zdG9yZUlkLFxyXG4gICAgICAgICAgICAgIHN0b3JlTmFtZTogZWxlbWVudC5zdG9yZU5hbWVcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy50b3RhbENvdW50ID0gcmVzLmRhdGEudG90YWxfY291bnRcclxuICAgICAgICAgIHRoaXMuc2VsZWN0QWxsID0gdGhpcy5tb2JpbGV1c2FnZURhdGFMaXN0LmV2ZXJ5KChvYmo6IGFueSkgPT4gb2JqLmNoZWNrZWQpO1xyXG4gICAgICAgICAgdGhpcy5zdG9yZXMgPSB0aGlzLnN0b3Jlc1xyXG4gICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3N0b3JlTGlzdCcpPy5zZXRWYWx1ZSh0aGlzLnN0b3JlcylcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5ub0RhdGEgPSBmYWxzZVxyXG4gICAgICAgICAgdGhpcy5nZXRjdXN0b21lcnVuYXR0ZW5kZWR2aWV3KClcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnZpZXdsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnZpZXdub0RhdGEgPSB0cnVlXHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgc2VsZWN0ZWRFeHBvcnQgPSBmYWxzZVxyXG4gIHNlbGVjdGVkUXVlc3Rpb24oZXZlbnQ6IGFueSwgc2VjdGlvbjogYW55LCBRdWVzdGlvbjogYW55KSB7XHJcbiAgICBpZiAoZXZlbnQudGFyZ2V0LmNoZWNrZWQpIHtcclxuICAgICAgaWYgKHRoaXMudGVtcHNlbGVjdGVkU2VjdGlvbi5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgIGxldCBxdWVzdGlvbnM6IGFueSA9IFtdXHJcbiAgICAgICAgbGV0IGFuc3dlcjogYW55ID0gW11cclxuICAgICAgICBhbnN3ZXIucHVzaChRdWVzdGlvbi5hbnN3ZXJUeXBlKVxyXG4gICAgICAgIHF1ZXN0aW9ucy5wdXNoKFF1ZXN0aW9uLnFuYW1lLnJlcGxhY2UoL1xcbi9nLCBcIiBcIikpXHJcbiAgICAgICAgbGV0IHJlc3BvbnNlID0ge1xyXG4gICAgICAgICAgc2VjdGlvbk5hbWU6IHNlY3Rpb24uc2VjdGlvbk5hbWUsXHJcbiAgICAgICAgICBxdWVzdGlvbnM6IHF1ZXN0aW9ucyxcclxuICAgICAgICAgIGFuc3dlclR5cGU6IGFuc3dlclxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnRlbXBzZWxlY3RlZFNlY3Rpb24ucHVzaChyZXNwb25zZSlcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsZXQgc2VjdGlvbkV4aXN0cyA9IHRoaXMudGVtcHNlbGVjdGVkU2VjdGlvbi5maWx0ZXIoKGRhdGE6IGFueSkgPT4gZGF0YS5zZWN0aW9uTmFtZSA9PT0gc2VjdGlvbi5zZWN0aW9uTmFtZSlcclxuICAgICAgICBpZiAoc2VjdGlvbkV4aXN0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLnRlbXBzZWxlY3RlZFNlY3Rpb24ubWFwKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGRhdGEuc2VjdGlvbk5hbWUgPT09IHNlY3Rpb24uc2VjdGlvbk5hbWUpIHtcclxuICAgICAgICAgICAgICBkYXRhLnF1ZXN0aW9ucy5wdXNoKFF1ZXN0aW9uLnFuYW1lLnJlcGxhY2UoL1xcbi9nLCBcIiBcIikpXHJcbiAgICAgICAgICAgICAgZGF0YS5hbnN3ZXJUeXBlLnB1c2goUXVlc3Rpb24uYW5zd2VyVHlwZSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbGV0IHF1ZXN0aW9uczogYW55ID0gW11cclxuICAgICAgICAgIGxldCBhbnN3ZXI6IGFueSA9IFtdXHJcblxyXG5cclxuICAgICAgICAgIGFuc3dlci5wdXNoKFF1ZXN0aW9uLmFuc3dlclR5cGUpXHJcblxyXG4gICAgICAgICAgcXVlc3Rpb25zLnB1c2goUXVlc3Rpb24ucW5hbWUucmVwbGFjZSgvXFxuL2csIFwiIFwiKSlcclxuICAgICAgICAgIGxldCByZXNwb25zZSA9IHtcclxuICAgICAgICAgICAgc2VjdGlvbk5hbWU6IHNlY3Rpb24uc2VjdGlvbk5hbWUsXHJcbiAgICAgICAgICAgIHF1ZXN0aW9uczogcXVlc3Rpb25zLFxyXG4gICAgICAgICAgICBhbnN3ZXJUeXBlOiBhbnN3ZXJcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMudGVtcHNlbGVjdGVkU2VjdGlvbi5wdXNoKHJlc3BvbnNlKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGVja2xpc3REYXRhLm1hcCgoc2VjOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoc2VjLnNlY3Rpb25OYW1lID09IHNlY3Rpb24uc2VjdGlvbk5hbWUpIHtcclxuICAgICAgICAgIHNlYy5xdWVzdGlvbnMubWFwKChxdWVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKHF1ZXMucW5hbWUgPT09IFF1ZXN0aW9uLnFuYW1lLnJlcGxhY2UoL1xcbi9nLCBcIiBcIikpIHtcclxuICAgICAgICAgICAgICBxdWVzLmNoZWNrZWQgPSB0cnVlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKVxyXG4gICAgfSBlbHNlIHtcclxuXHJcbiAgICAgIHRoaXMudGVtcHNlbGVjdGVkU2VjdGlvbi5tYXAoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhLnNlY3Rpb25OYW1lID09IHNlY3Rpb24uc2VjdGlvbk5hbWUpIHtcclxuICAgICAgICAgIGRhdGEucXVlc3Rpb25zID0gZGF0YS5xdWVzdGlvbnMuZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlICE9IFF1ZXN0aW9uLnFuYW1lLnJlcGxhY2UoL1xcbi9nLCBcIiBcIikpXHJcbiAgICAgICAgICBkYXRhLmFuc3dlclR5cGUgPSBkYXRhLmFuc3dlclR5cGUuZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlICE9IFF1ZXN0aW9uLmFuc3dlclR5cGUpXHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy50ZW1wc2VsZWN0ZWRTZWN0aW9uID0gdGhpcy50ZW1wc2VsZWN0ZWRTZWN0aW9uLmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZS5xdWVzdGlvbnMubGVuZ3RoID4gMClcclxuICAgIH1cclxuXHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZEV4cG9ydCA9IHRoaXMudGVtcHNlbGVjdGVkU2VjdGlvbi5sZW5ndGggPiAwO1xyXG4gIH1cclxuICBnZXRjdXN0b21lcnRyaWFsbGlzdCgpIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLm5vRGF0YSA9IGZhbHNlO1xyXG4gICAgdGhpcy52aWV3bG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnZpZXdub0RhdGEgPSBmYWxzZTtcclxuICAgIHRoaXMubW9iaWxldXNhZ2VEYXRhTGlzdCA9IFt7IHN0b3JlSWQ6IFwiNTktMTQ3XCIsIHN0b3JlTmFtZTogXCJCaXJrZW5zdG9jayBEdWJhaSBIaWxsc1wiLCBkZXRlY3Rpb25zOiBcIjIwXCIgfV07XHJcbiAgICB0aGlzLm1vYmlsZXVzYWdlRGF0YUxpc3QuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGVsZW1lbnQuY2hlY2tlZCA9IHRydWVcclxuICAgICAgdGhpcy5zdG9yZXMucHVzaCh7XHJcbiAgICAgICAgc3RvcmVJZDogZWxlbWVudC5zdG9yZUlkLFxyXG4gICAgICAgIHN0b3JlTmFtZTogZWxlbWVudC5zdG9yZU5hbWVcclxuICAgICAgfSlcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0QWxsID0gdGhpcy5tb2JpbGV1c2FnZURhdGFMaXN0LmV2ZXJ5KChvYmo6IGFueSkgPT4gb2JqLmNoZWNrZWQpO1xyXG4gICAgdGhpcy5zdG9yZXMgPSB0aGlzLnN0b3Jlc1xyXG4gICAgdGhpcy5tb2JpbGV1c2FnZURhdGEgPVxyXG4gICAgICBbe1xyXG4gICAgICAgIHN0b3JlTmFtZTogXCJCaXJrZW5zdG9jayBEdWJhaSBIaWxsc1wiLFxyXG4gICAgICAgIGltYWdlVXJsOiBbXHJcbiAgICAgICAgICBcInRyYWlsLzU5LTE0Ny9iMWM1YjE1YzAxMzNkZWMwYzQ1NjQwZDkyM2ZkYTIyMV8xMF8wOV81OV8wMDBfMjRfMDFfMjAyNV9mYWxzZS5naWZcIixcclxuICAgICAgICAgIFwidHJhaWwvNTktMTQ3L2IxYzViMTVjMDEzM2RlYzBjNDU2NDBkOTIzZmRhMjIxXzEwXzA5XzU5XzAwMF8yNF8wMV8yMDI1X2ZhbHNlLmdpZlwiLFxyXG4gICAgICAgICAgXCJ0cmFpbC81OS0xNDcvYjFjNWIxNWMwMTMzZGVjMGM0NTY0MGQ5MjNmZGEyMjFfMTBfNDBfMzJfMDAwXzI0XzAxXzIwMjVfZmFsc2UuZ2lmXCIsXHJcbiAgICAgICAgICBcInRyYWlsLzU5LTE0Ny9iMWM1YjE1YzAxMzNkZWMwYzQ1NjQwZDkyM2ZkYTIyMV8xMF81MF80M18wMDBfMjRfMDFfMjAyNV9mYWxzZS5naWZcIixcclxuICAgICAgICAgIFwidHJhaWwvNTktMTQ3L2IxYzViMTVjMDEzM2RlYzBjNDU2NDBkOTIzZmRhMjIxXzExXzAwXzU0XzAwMF8yNF8wMV8yMDI1X2ZhbHNlLmdpZlwiLFxyXG4gICAgICAgICAgXCJ0cmFpbC81OS0xNDcvYjFjNWIxNWMwMTMzZGVjMGM0NTY0MGQ5MjNmZGEyMjFfMTFfMTFfMDVfMDAwXzI0XzAxXzIwMjVfZmFsc2UuZ2lmXCIsXHJcbiAgICAgICAgICBcInRyYWlsLzU5LTE0Ny9iMWM1YjE1YzAxMzNkZWMwYzQ1NjQwZDkyM2ZkYTIyMV8xMV8yMV8xNl8wMDBfMjRfMDFfMjAyNV9mYWxzZS5naWZcIixcclxuICAgICAgICAgIFwidHJhaWwvNTktMTQ3L2IxYzViMTVjMDEzM2RlYzBjNDU2NDBkOTIzZmRhMjIxXzExXzIxXzE5XzAwMF8yNV8wMV8yMDI1XzE3Mzc3ODkxODUuZ2lmXCIsXHJcbiAgICAgICAgICBcInRyYWlsLzU5LTE0Ny9iMWM1YjE1YzAxMzNkZWMwYzQ1NjQwZDkyM2ZkYTIyMV8xMl80Ml80NF8wMDBfMjRfMDFfMjAyNV9mYWxzZS5naWZcIixcclxuICAgICAgICAgIFwidHJhaWwvNTktMTQ3L2IxYzViMTVjMDEzM2RlYzBjNDU2NDBkOTIzZmRhMjIxXzEyXzQyXzUwXzAwMF8yNV8wMV8yMDI1XzE3Mzc3OTQzNDkuZ2lmXCIsXHJcbiAgICAgICAgICBcInRyYWlsLzU5LTE0Ny9iMWM1YjE1YzAxMzNkZWMwYzQ1NjQwZDkyM2ZkYTIyMV8xM18wM18wN18wMDBfMjRfMDFfMjAyNV9mYWxzZS5naWZcIixcclxuICAgICAgICAgIFwidHJhaWwvNTktMTQ3L2IxYzViMTVjMDEzM2RlYzBjNDU2NDBkOTIzZmRhMjIxXzEzXzIzXzI4XzAwMF8yNF8wMV8yMDI1XzE3Mzc3MTAyODMuZ2lmXCIsXHJcbiAgICAgICAgICBcInRyYWlsLzU5LTE0Ny9iMWM1YjE1YzAxMzNkZWMwYzQ1NjQwZDkyM2ZkYTIyMV8xM18zM180N18wMDBfMjVfMDFfMjAyNV8xNzM3Nzk3NTg4LmdpZlwiLFxyXG4gICAgICAgICAgXCJ0cmFpbC81OS0xNDcvYjFjNWIxNWMwMTMzZGVjMGM0NTY0MGQ5MjNmZGEyMjFfMTRfNDRfNTdfMDAwXzI0XzAxXzIwMjVfZmFsc2UuZ2lmXCIsXHJcbiAgICAgICAgICBcInRyYWlsLzU5LTE0Ny9iMWM1YjE1YzAxMzNkZWMwYzQ1NjQwZDkyM2ZkYTIyMV8xOF81OV80MF8wMDBfMjRfMDFfMjAyNV8xNzM3NzMwMjg2LmdpZlwiLFxyXG4gICAgICAgICAgXCJ0cmFpbC81OS0xNDcvYjFjNWIxNWMwMTMzZGVjMGM0NTY0MGQ5MjNmZGEyMjFfMjBfMTBfNTlfMDAwXzI0XzAxXzIwMjVfMTczNzczNDc3My5naWZcIixcclxuICAgICAgICAgIFwidHJhaWwvNTktMTQ3L2IxYzViMTVjMDEzM2RlYzBjNDU2NDBkOTIzZmRhMjIxXzIwXzIxXzEwXzAwMF8yNF8wMV8yMDI1XzE3Mzc3MzUyNDEuZ2lmXCIsXHJcbiAgICAgICAgICBcInRyYWlsLzU5LTE0Ny9iMWM1YjE1YzAxMzNkZWMwYzQ1NjQwZDkyM2ZkYTIyMV8yMV8xMl8wN18wMDBfMjRfMDFfMjAyNV8xNzM3NzM4MjMzLmdpZlwiLFxyXG4gICAgICAgICAgXCJ0cmFpbC81OS0xNDcvYjFjNWIxNWMwMTMzZGVjMGM0NTY0MGQ5MjNmZGEyMjFfMjFfNDJfNDFfMDAwXzI0XzAxXzIwMjVfMTczNzc0MDUwOS5naWZcIixcclxuICAgICAgICAgIFwidHJhaWwvNTktMTQ3L2IxYzViMTVjMDEzM2RlYzBjNDU2NDBkOTIzZmRhMjIxXzIyXzIzXzI3XzAwMF8yNF8wMV8yMDI1XzE3Mzc3NDI0MTIuZ2lmXCIsXHJcbiAgICAgICAgXVxyXG4gICAgICB9XVxyXG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLm5vRGF0YSA9IGZhbHNlXHJcbiAgICB0aGlzLnZpZXdsb2FkaW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLnZpZXdub0RhdGEgPSBmYWxzZVxyXG4gICAgdGhpcy50b3RhbENvdW50ID0gMVxyXG4gIH1cclxuICBnZXRtb2JpbGVVc2FnZURhdGFsaXN0KHR5cGU6IGFueSkge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgICB0aGlzLnZpZXdsb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMudmlld25vRGF0YSA9IGZhbHNlO1xyXG4gICAgbGV0IHN0b3JlcyA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc3RvcmVMaXN0Lm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnN0b3JlSWQpXHJcbiAgICBsZXQgb2JqID0ge1xyXG4gICAgICBcImRhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5mcm9tRGF0ZSxcclxuICAgICAgXCJmcm9tRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZyb21EYXRlLFxyXG4gICAgICBcInRvRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnRvRGF0ZSxcclxuICAgICAgXCJzdG9yZUlkXCI6IHN0b3JlcyxcclxuICAgICAgXCJjbGllbnRJZFwiOiB0aGlzLmhlYWRlckZpbHRlcnMuY2xpZW50LFxyXG4gICAgICBcIkNoZWNrbGlzdFR5cGVcIjogdGhpcy5zZWxlY3QsXHJcbiAgICAgIFwidmlld0ltYWdlXCI6IGZhbHNlLFxyXG4gICAgICBcIm9mZnNldFwiOiAodGhpcy5vZmZzZXQgLSAxKSxcclxuICAgICAgXCJsaW1pdFwiOiB0aGlzLmxpbWl0LFxyXG4gICAgICBcImNhdGVnb3J5XCI6IHRoaXMuY2F0ZWdvcnlcclxuICAgIH1cclxuICAgIHRoaXMudHJheFNlcnZpY2UuZ2V0TW9iVXNhZ2VsaXN0KG9iaik/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKT8uc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLm1vYmlsZXVzYWdlRGF0YUxpc3QgPSByZXMuZGF0YS5kYXRhO1xyXG4gICAgICAgICAgdGhpcy5zdG9yZXMgPSBbXVxyXG4gICAgICAgICAgdGhpcy5tb2JpbGV1c2FnZURhdGFMaXN0LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBlbGVtZW50LmNoZWNrZWQgPSB0cnVlXHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmVzLnB1c2goe1xyXG4gICAgICAgICAgICAgIHN0b3JlSWQ6IGVsZW1lbnQuc3RvcmVJZCxcclxuICAgICAgICAgICAgICBzdG9yZU5hbWU6IGVsZW1lbnQuc3RvcmVOYW1lXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMudG90YWxDb3VudCA9IHJlcy5kYXRhLnRvdGFsX2NvdW50XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdEFsbCA9IHRoaXMubW9iaWxldXNhZ2VEYXRhTGlzdC5ldmVyeSgob2JqOiBhbnkpID0+IG9iai5jaGVja2VkKTtcclxuICAgICAgICAgIHRoaXMuc3RvcmVzID0gdGhpcy5zdG9yZXNcclxuICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdzdG9yZUxpc3QnKT8uc2V0VmFsdWUodGhpcy5zdG9yZXMpXHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMubm9EYXRhID0gZmFsc2VcclxuICAgICAgICAgIHRoaXMuZ2V0bW9iaWxlVXNhZ2VEYXRhdmlldygpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy52aWV3bm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMudmlld2xvYWRpbmcgPSBmYWxzZVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIG9ucmVzZXQoKSB7XHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLmdldFN0b3Jlc2xpc3QoeyBjbGllbnRJZDogdGhpcy5oZWFkZXJGaWx0ZXJzLmNsaWVudCwgY2x1c3RlcnM6IHRoaXMuZ3JvdXBzLCBjaXR5OiBbXSB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5zdG9yZUxpc3QgPSByZXMuZGF0YS5zdG9yZXNEYXRhO1xyXG4gICAgICAgICAgdGhpcy5zdG9yZXMgPSByZXMuZGF0YS5zdG9yZXNEYXRhXHJcbiAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnc3RvcmVMaXN0Jyk/LnNldFZhbHVlKHRoaXMuc3RvcmVMaXN0KVxyXG4gICAgICAgICAgdGhpcy5vZmZzZXQgPSAxXHJcbiAgICAgICAgICBpZiAodGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQgPT09ICdzdG9yZW9wZW5hbmRjbG9zZScpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3QgPSAnc3RvcmVvcGVuYW5kY2xvc2UnXHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmVPcGVuY2xvc2VsaXN0KGZhbHNlKVxyXG4gICAgICAgICAgfWVsc2UgaWYgKHRoaXMuYm94aW1hZ2VDaGVja2xpc3QuaW5jbHVkZXModGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCd6b25lTGlzdCcpPy5zZXRWYWx1ZShbXSlcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3QgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZFxyXG4gICAgICAgICAgICB0aGlzLnF1ZXVlYWxlcnRsaXN0KGZhbHNlKVxyXG4gICAgICAgICAgfSAgZWxzZSBpZiAodGhpcy5pbWFnZUNoZWNrbGlzdC5pbmNsdWRlcyh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3QgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZDtcclxuICAgICAgICAgICAgdGhpcy5nZXRtb2JpbGVVc2FnZURhdGFsaXN0KGZhbHNlKVxyXG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZpZGVvQ2hlY2tsaXN0LmluY2x1ZGVzKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkKSkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdCA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkO1xyXG4gICAgICAgICAgICB0aGlzLmN1c3RvbWVydW5hdHRlbmRlZGxpc3QoZmFsc2UpXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdCA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudHlwZSA9PT0gJ2NoZWNrbGlzdCcgPyBcImN1c3RvbVwiIDogXCJcIjtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZmlsdGVydHlwZSA9PT0gJ0NsdXN0ZXJzJykge1xyXG4gICAgICAgICAgICAgIHRoaXMuc3RvcmVMaXN0ZHJvcGRvd24oKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnVzZXJMaXN0ZHJvcGRvd24oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zdG9yZUxpc3QgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zdG9yZUxpc3QgPSBbXTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG5cclxuICB9XHJcbiAgb252aWV3KCkge1xyXG4gICAgdGhpcy5vZmZzZXQgPSAxO1xyXG4gICAgaWYgKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkID09PSAnc3RvcmVvcGVuYW5kY2xvc2UnKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ID0gJ3N0b3Jlb3BlbmFuZGNsb3NlJ1xyXG4gICAgICB0aGlzLnN0b3JlT3BlbmNsb3NldmlldygpXHJcbiAgICB9ZWxzZSBpZiAodGhpcy5ib3hpbWFnZUNoZWNrbGlzdC5pbmNsdWRlcyh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCkpIHtcclxuICAgICAgdGhpcy5zZWxlY3QgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZFxyXG4gICAgICB0aGlzLnF1ZXVlYWxlcnR2aWV3KClcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pbWFnZUNoZWNrbGlzdC5pbmNsdWRlcyh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCkpIHtcclxuICAgICAgdGhpcy5zZWxlY3QgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZDtcclxuICAgICAgdGhpcy5nZXRtb2JpbGVVc2FnZURhdGF2aWV3KClcclxuICAgIH1lbHNlIGlmICh0aGlzLnZpZGVvQ2hlY2tsaXN0LmluY2x1ZGVzKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkKSkge1xyXG4gICAgICB0aGlzLnNlbGVjdCA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkO1xyXG4gICAgICB0aGlzLmdldGN1c3RvbWVydW5hdHRlbmRlZHZpZXcoKVxyXG4gICAgfSBcclxuICB9XHJcbiAgZ2V0Y3VzdG9tZXJ1bmF0dGVuZGVkdmlldygpIHtcclxuXHJcbiAgICB0aGlzLnZpZXdsb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMudmlld25vRGF0YSA9IGZhbHNlO1xyXG4gICAgdGhpcy5saW1pdCA9IDFcclxuICAgIHRoaXMucGFnaW5hdGlvblNpemVzID0gWzFdXHJcbiAgICBsZXQgc3RvcmVzID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zdG9yZUxpc3QubWFwKChkYXRhOiBhbnkpID0+IGRhdGEuc3RvcmVJZClcclxuICAgIGxldCBvYmogPSB7XHJcbiAgICAgIFwiZGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZyb21EYXRlLFxyXG4gICAgICBcImZyb21EYXRlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZnJvbURhdGUsXHJcbiAgICAgIFwidG9EYXRlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudG9EYXRlLFxyXG4gICAgICBcInN0b3JlSWRcIjogc3RvcmVzLFxyXG4gICAgICBcImNsaWVudElkXCI6IHRoaXMuaGVhZGVyRmlsdGVycy5jbGllbnQsXHJcbiAgICAgIFwiQ2hlY2tsaXN0VHlwZVwiOiB0aGlzLnNlbGVjdCxcclxuICAgICAgXCJ2aWV3SW1hZ2VcIjogdHJ1ZSxcclxuICAgICAgXCJvZmZzZXRcIjogKHRoaXMub2Zmc2V0IC0gMSksXHJcbiAgICAgIFwibGltaXRcIjogdGhpcy5saW1pdCxcclxuICAgICAgXCJjYXRlZ29yeVwiOiB0aGlzLmNhdGVnb3J5XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50cmF4U2VydmljZS5nZXRjdXN0b21lcnVuYXR0ZW5kZWRsaXN0KG9iaik/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKT8uc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmN1c3RvbWVydW5hdHRlbmRlZERhdGEgPSByZXMuZGF0YS5kYXRhXHJcbiAgICAgICAgICB0aGlzLnZpZXdsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnZpZXdub0RhdGEgPSBmYWxzZVxyXG4gICAgICAgICAgdGhpcy50b3RhbENvdW50ID0gcmVzLmRhdGEudG90YWxfY291bnRcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy52aWV3bG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy52aWV3bm9EYXRhID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICBnZXRtb2JpbGVVc2FnZURhdGF2aWV3KCkge1xyXG4gICAgdGhpcy52aWV3bG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnZpZXdub0RhdGEgPSBmYWxzZTtcclxuICAgIHRoaXMubGltaXQgPSAxMFxyXG4gICAgdGhpcy5wYWdpbmF0aW9uU2l6ZXMgPSBbMTBdXHJcbiAgICBsZXQgc3RvcmVzID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zdG9yZUxpc3QubWFwKChkYXRhOiBhbnkpID0+IGRhdGEuc3RvcmVJZClcclxuICAgIGxldCBvYmogPSB7XHJcbiAgICAgIFwiZnJvbURhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5mcm9tRGF0ZSxcclxuICAgICAgXCJ0b0RhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50b0RhdGUsXHJcbiAgICAgIFwiZGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZyb21EYXRlLFxyXG4gICAgICBcInN0b3JlSWRcIjogc3RvcmVzLFxyXG4gICAgICBcImNsaWVudElkXCI6IHRoaXMuaGVhZGVyRmlsdGVycy5jbGllbnQsXHJcbiAgICAgIFwiQ2hlY2tsaXN0VHlwZVwiOiB0aGlzLnNlbGVjdCxcclxuICAgICAgXCJ2aWV3SW1hZ2VcIjogdHJ1ZSxcclxuICAgICAgXCJvZmZzZXRcIjogKHRoaXMub2Zmc2V0IC0gMSksXHJcbiAgICAgIFwibGltaXRcIjogdGhpcy5saW1pdCxcclxuICAgICAgXCJjYXRlZ29yeVwiOiB0aGlzLmNhdGVnb3J5XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50cmF4U2VydmljZS5nZXRNb2JVc2FnZWxpc3Qob2JqKT8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpPy5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMubW9iaWxldXNhZ2VEYXRhID0gcmVzLmRhdGEuZGF0YVxyXG4gICAgICAgICAgdGhpcy52aWV3bG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy52aWV3bm9EYXRhID0gZmFsc2VcclxuICAgICAgICAgIHRoaXMudG90YWxDb3VudCA9IHJlcy5kYXRhLnRvdGFsX2NvdW50XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudmlld2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudmlld25vRGF0YSA9IHRydWVcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICBnZXRmaWx0ZXJDb3VudCgpIHtcclxuICAgIGxldCBzdG9yZXMgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnN0b3JlTGlzdC5tYXAoKGRhdGE6IGFueSkgPT4gZGF0YS5zdG9yZUlkKVxyXG4gICAgbGV0IHVzZXJzID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS51c2VyTGlzdC5tYXAoKGRhdGE6IGFueSkgPT4gZGF0YS51c2VyRW1haWwpXHJcbiAgICBsZXQgcGF5bG9hZCA9IHtcclxuICAgICAgXCJmcm9tRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZyb21EYXRlLFxyXG4gICAgICBcInRvRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnRvRGF0ZSxcclxuICAgICAgXCJmaWx0ZXJ0eXBlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZmlsdGVydHlwZSxcclxuICAgICAgXCJzdG9yZUlkXCI6IHN0b3JlcyxcclxuICAgICAgXCJ1c2VyRW1haWxcIjogdXNlcnMsXHJcbiAgICAgIFwiYW5zd2VyVHlwZVwiOiB0aGlzLnNlbGVjdGVkU2VjdGlvblswXS5hbnN3ZXJUeXBlWzBdLFxyXG4gICAgICBcImNoZWNrbGlzdElkXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkLFxyXG4gICAgICBcIkNoZWNrbGlzdFR5cGVcIjogXCJjdXN0b21cIixcclxuICAgICAgXCJxdWVzdGlvbnNcIjogdGhpcy5zZWxlY3RlZFNlY3Rpb25bMF0ucXVlc3Rpb25zWzBdXHJcbiAgICB9XHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLmdldEFuc3dlcmNvdW50KHBheWxvYWQpPy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSk/LnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5hbnN3ZXJGaWx0ZXIgPSByZXMuZGF0YS5hbnN3ZXJzQ291bnRcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5hbnN3ZXJGaWx0ZXIgPSBbXVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgc2VsZWN0c2luZ2xlcXVlc3Rpb24oKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkU2VjdGlvbiA9IHRoaXMudGVtcHNlbGVjdGVkU2VjdGlvblxyXG4gICAgaWYgKHRoaXMucXVlc3Rpb25zY291bnQodGhpcy5zZWxlY3RlZFNlY3Rpb24pID09IDAgfHwgdGhpcy5xdWVzdGlvbnNjb3VudCh0aGlzLnNlbGVjdGVkU2VjdGlvbikgPiAxKSB7XHJcbiAgICAgIHRoaXMuc2hvd3NpbmdsZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNob3dtdWx0aSA9IHRydWVcclxuICAgIH0gZWxzZSBpZiAodGhpcy5xdWVzdGlvbnNjb3VudCh0aGlzLnNlbGVjdGVkU2VjdGlvbikgPT0gMSkge1xyXG4gICAgICB0aGlzLnNob3dzaW5nbGUgPSB0cnVlO1xyXG4gICAgICB0aGlzLnNob3dtdWx0aSA9IGZhbHNlXHJcblxyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFNlY3Rpb25bMF0uYW5zd2VyVHlwZVswXSA9PT0gXCJ5ZXMvbm9cIiB8fCB0aGlzLnNlbGVjdGVkU2VjdGlvblswXS5hbnN3ZXJUeXBlWzBdID09PSBcIm11bHRpcGxlY2hvaWNlc2luZ2xlXCIgfHwgdGhpcy5zZWxlY3RlZFNlY3Rpb25bMF0uYW5zd2VyVHlwZVswXSA9PT0gXCJtdWx0aXBsZWNob2ljZW11bHRpcGxlXCIpIHtcclxuICAgICAgICB0aGlzLnNob3dmaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZ2V0ZmlsdGVyQ291bnQoKVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2hvd2ZpbHRlciA9IGZhbHNlXHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgICB0aGlzLm9mZnNldCA9IDE7XHJcbiAgICB0aGlzLnZpZXdsb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMudmlld25vRGF0YSA9IGZhbHNlO1xyXG4gICAgbGV0IHN0b3JlcyA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc3RvcmVMaXN0Lm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnN0b3JlSWQpXHJcbiAgICBsZXQgdXNlcnMgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnVzZXJMaXN0Lm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnVzZXJFbWFpbClcclxuICAgIGlmICh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnR5cGUgPT09ICdjaGVja2xpc3QnKSB7XHJcbiAgICAgIGxldCBvYmogPSB7XHJcbiAgICAgICAgXCJmcm9tRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZyb21EYXRlLFxyXG4gICAgICAgIFwidG9EYXRlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudG9EYXRlLFxyXG4gICAgICAgIFwiQ2hlY2tsaXN0VHlwZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmNoZWNrTGlzdFR5cGUsIC8vIFtcImN1c3RvbVwiLCBcIkFJXCJdXHJcbiAgICAgICAgXCJjaGVja2xpc3ROYW1lXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuY2hlY2tsaXN0TmFtZSxcclxuICAgICAgICBcImNoZWNrbGlzdElkXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkLFxyXG4gICAgICAgIFwiZmlsdGVydHlwZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZpbHRlcnR5cGUsXHJcbiAgICAgICAgXCJzdG9yZUlkXCI6IHN0b3JlcyxcclxuICAgICAgICBcInVzZXJFbWFpbFwiOiB1c2VycyxcclxuICAgICAgICBcImFuc3dlclR5cGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5hbnN3ZXJUeXBlLCAvL1tcImRlc2NyaXB0aXZlXCIsXCJ5ZXMvbm9cIixcIm11bHRpcGxlY2hvaWNlc2luZ2xlXCIsXCJtdWx0aXBsZWNob2ljZW11bHRpcGxlXCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImRlc2NyaXB0aXZlSW1hZ2VcIixcIm11bHRpcGxlSW1hZ2VcIl1cclxuICAgICAgICBcInZpZXdGbGFnXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudmlld0ZsYWcsIC8vW3RydWUsIGZhbHNlXVxyXG4gICAgICAgIFwidmlld1JlZG9cIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS52aWV3UmVkbywgLy9bdHJ1ZSwgZmFsc2VdXHJcbiAgICAgICAgXCJmaWx0ZXJcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5maWx0ZXIsXHJcbiAgICAgICAgXCJxdWVzdGlvbnNcIjogdGhpcy5zZWxlY3RlZFNlY3Rpb24ubGVuZ3RoID4gMCAmJiB0aGlzLnNlbGVjdGVkU2VjdGlvblswXS5xdWVzdGlvbnMubGVuZ3RoID4gMCA/IHRoaXMuc2VsZWN0ZWRTZWN0aW9uWzBdLnF1ZXN0aW9uc1swXSA6IFwiXCJcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnRyYXhTZXJ2aWNlLmdldGNoZWNrbGlzdChvYmopPy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSk/LnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgLy8gdGhpcy5jaGVja2xpc3REYXRhID0gcmVzPy5kYXRhLmNoZWNrbGlzdFF1ZXN0aW9ucztcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZpbHRlcnR5cGUgPT09ICdDbHVzdGVycycpIHtcclxuICAgICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnc3RvcmVMaXN0Jyk/LnNldFZhbHVlKHJlcz8uZGF0YT8uc3RvcmVzRGV0YWlscylcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgndXNlckxpc3QnKT8uc2V0VmFsdWUocmVzPy5kYXRhPy5zdG9yZXNEZXRhaWxzKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMudmlld0NoZWNrbGlzdHMoXCJhbGxcIiwgXCJhbGxcIilcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0RGF0YSA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnZpZXdDaGVja2xpc3RzRGF0YSA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnZpZXdsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMudmlld25vRGF0YSA9IHRydWU7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBvYmogPSB7XHJcbiAgICAgICAgXCJmcm9tRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZyb21EYXRlLFxyXG4gICAgICAgIFwidG9EYXRlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudG9EYXRlLFxyXG4gICAgICAgIFwiQ2hlY2tsaXN0VHlwZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnR5cGUsIC8vIFtcImN1c3RvbVwiLCBcIkFJXCJdXHJcbiAgICAgICAgXCJjaGVja2xpc3ROYW1lXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuY2hlY2tsaXN0TmFtZSxcclxuICAgICAgICBcImNoZWNrbGlzdElkXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkLFxyXG4gICAgICAgIFwiZmlsdGVydHlwZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZpbHRlcnR5cGUsXHJcbiAgICAgICAgXCJzdG9yZUlkXCI6IHN0b3JlcyxcclxuICAgICAgICBcInVzZXJFbWFpbFwiOiB1c2VycyxcclxuICAgICAgICBcImFuc3dlclR5cGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5hbnN3ZXJUeXBlLCAvL1tcImRlc2NyaXB0aXZlXCIsXCJ5ZXMvbm9cIixcIm11bHRpcGxlY2hvaWNlc2luZ2xlXCIsXCJtdWx0aXBsZWNob2ljZW11bHRpcGxlXCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImRlc2NyaXB0aXZlSW1hZ2VcIixcIm11bHRpcGxlSW1hZ2VcIl1cclxuICAgICAgICBcInZpZXdGbGFnXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudmlld0ZsYWcsLy9bdHJ1ZSwgZmFsc2VdXHJcbiAgICAgICAgXCJ2aWV3UmVkb1wiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnZpZXdSZWRvLCAvL1t0cnVlLCBmYWxzZV1cclxuICAgICAgICBcImZpbHRlclwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZpbHRlcixcclxuICAgICAgICBcInF1ZXN0aW9uc1wiOiB0aGlzLnNlbGVjdGVkU2VjdGlvbi5sZW5ndGggPiAwICYmIHRoaXMuc2VsZWN0ZWRTZWN0aW9uWzBdLnF1ZXN0aW9ucy5sZW5ndGggPiAwID8gdGhpcy5zZWxlY3RlZFNlY3Rpb25bMF0ucXVlc3Rpb25zWzBdIDogXCJcIlxyXG5cclxuICAgICAgfVxyXG4gICAgICB0aGlzLnRyYXhTZXJ2aWNlLmdldFF1ZXN0aW9ucyhvYmopPy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSk/LnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgLy8gdGhpcy5jaGVja2xpc3REYXRhID0gcmVzPy5kYXRhLmNoZWNrbGlzdFF1ZXN0aW9ucztcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZpbHRlcnR5cGUgPT09ICdDbHVzdGVycycpIHtcclxuICAgICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnc3RvcmVMaXN0Jyk/LnNldFZhbHVlKHJlcz8uZGF0YT8uc3RvcmVzRGV0YWlscylcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgndXNlckxpc3QnKT8uc2V0VmFsdWUocmVzPy5kYXRhPy5zdG9yZXNEZXRhaWxzKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMudmlld1Rhc2tMaXN0KFwiYWxsXCIsIFwiYWxsXCIpXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrbGlzdERhdGEgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy52aWV3Q2hlY2tsaXN0c0RhdGEgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy52aWV3bG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnZpZXdub0RhdGEgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG4gIGFwcG92ZUNoZWNrbGlzdCgpIHtcclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihBcHByb3ZhbFBvcHVwQ29tcG9uZW50LCB7IGNlbnRlcmVkOiB0cnVlLCBzaXplOiAnbWQnLCB9KTtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnR5cGUgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnR5cGU7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5jaGVja0xpc3ROYW1lID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5jaGVja2xpc3ROYW1lO1xyXG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0ID09ICdzdWJtaXQnKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudHlwZSA9PSAnY2hlY2tsaXN0Jykge1xyXG4gICAgICAgICAgdGhpcy5jaGVja2xpc3RBcHByb3ZlKClcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5BcHByb3ZlVGFzaygpXHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgY2hlY2tsaXN0QXBwcm92ZSgpIHtcclxuICAgIGxldCBzdG9yZXMgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnN0b3JlTGlzdC5tYXAoKGRhdGE6IGFueSkgPT4gZGF0YS5zdG9yZUlkKVxyXG4gICAgbGV0IHVzZXIgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnVzZXJMaXN0Lm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnVzZXJFbWFpbClcclxuICAgIGxldCBwYXlsb2FkID0ge1xyXG4gICAgICBcImNsaWVudElkXCI6IHRoaXMuaGVhZGVyRmlsdGVycy5jbGllbnQsXHJcbiAgICAgIFwiZnJvbURhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5mcm9tRGF0ZSxcclxuICAgICAgXCJ0b0RhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50b0RhdGUsXHJcbiAgICAgIFwic3RvcmVJZFwiOiBzdG9yZXMsXHJcbiAgICAgIFwidXNlckVtYWlsXCI6IHVzZXIsXHJcbiAgICAgIFwic291cmNlQ2hlY2tMaXN0X2lkXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkLFxyXG4gICAgICBcImZpbHRlcnR5cGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5maWx0ZXJ0eXBlLFxyXG4gICAgfVxyXG4gICAgdGhpcy50cmF4U2VydmljZS5hcHByb3ZlY2hlY2tsaXN0KHBheWxvYWQpPy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSk/LnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5hcHByb3ZhbHN0YXR1cygpXHJcbiAgICAgICAgICBpZiAodGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50eXBlID09PSAnY2hlY2tsaXN0Jykge1xyXG4gICAgICAgICAgICB0aGlzLmdldENoZWNrbGlzdFFBKGZhbHNlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0VGFza1FBKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudHlwZSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldFN1Y2Nlc3NUb2FzdChgPGRpdj48c3BhbiBjbGFzcz1cIm1lLThcIiA+JHtyZXMubWVzc2FnZX08L3NwYW4+PC9kaXY+YClcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChlcnI/LmVycm9yPy5lcnJvcilcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG5cclxuICBBcHByb3ZlVGFzaygpIHtcclxuICAgIGxldCBzdG9yZXMgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnN0b3JlTGlzdC5tYXAoKGRhdGE6IGFueSkgPT4gZGF0YS5zdG9yZUlkKVxyXG4gICAgbGV0IHVzZXIgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnVzZXJMaXN0Lm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnVzZXJFbWFpbClcclxuICAgIGxldCBwYXlsb2FkID0ge1xyXG4gICAgICBcImZyb21EYXRlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZnJvbURhdGUsXHJcbiAgICAgIFwidG9EYXRlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudG9EYXRlLFxyXG4gICAgICBcInN0b3JlSWRcIjogc3RvcmVzLFxyXG4gICAgICBcInVzZXJFbWFpbFwiOiB1c2VyLFxyXG4gICAgICBcInNvdXJjZUNoZWNrTGlzdF9pZFwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCxcclxuICAgICAgXCJjbGllbnRJZFwiOiB0aGlzLmhlYWRlckZpbHRlcnMuY2xpZW50LFxyXG4gICAgICBcImZpbHRlcnR5cGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5maWx0ZXJ0eXBlLFxyXG4gICAgfVxyXG4gICAgdGhpcy50cmF4U2VydmljZS5hcHByb3ZldGFzayhwYXlsb2FkKT8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpPy5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldFN1Y2Nlc3NUb2FzdChgPGRpdj48c3BhbiBjbGFzcz1cIm1lLThcIiA+JHtyZXMubWVzc2FnZX08L3NwYW4+PC9kaXY+YClcclxuICAgICAgICAgIHRoaXMuYXBwcm92YWxzdGF0dXMoKVxyXG4gICAgICAgICAgaWYgKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudHlwZSA9PT0gJ2NoZWNrbGlzdCcpIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRDaGVja2xpc3RRQShmYWxzZSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmdldFRhc2tRQSh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnR5cGUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoZXJyPy5lcnJvcj8uZXJyb3IpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG5cclxuXHJcbiAgfVxyXG5cclxuICBnZXRDaGVja2xpc3RRQSh0eXBlOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRTZWN0aW9uID0gW11cclxuICAgIHRoaXMudGVtcHNlbGVjdGVkU2VjdGlvbiA9IFtdXHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5ub0RhdGEgPSBmYWxzZVxyXG4gICAgdGhpcy52aWV3bG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnZpZXdub0RhdGEgPSBmYWxzZTtcclxuICAgIGxldCBzdG9yZXMgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnN0b3JlTGlzdC5tYXAoKGRhdGE6IGFueSkgPT4gZGF0YS5zdG9yZUlkKVxyXG4gICAgbGV0IHVzZXJzID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS51c2VyTGlzdC5tYXAoKGRhdGE6IGFueSkgPT4gZGF0YS51c2VyRW1haWwpXHJcbiAgICBsZXQgb2JqID0ge1xyXG4gICAgICBcImZyb21EYXRlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZnJvbURhdGUsXHJcbiAgICAgIFwidG9EYXRlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudG9EYXRlLFxyXG4gICAgICBcIkNoZWNrbGlzdFR5cGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5jaGVja0xpc3RUeXBlLCAvLyBbXCJjdXN0b21cIiwgXCJBSVwiXVxyXG4gICAgICBcImNoZWNrbGlzdE5hbWVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5jaGVja2xpc3ROYW1lLFxyXG4gICAgICBcImNoZWNrbGlzdElkXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkLFxyXG4gICAgICBcImZpbHRlcnR5cGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5maWx0ZXJ0eXBlLFxyXG4gICAgICBcInVzZXJFbWFpbFwiOiB1c2VycyxcclxuICAgICAgXCJzdG9yZUlkXCI6IHN0b3JlcyxcclxuICAgICAgXCJhbnN3ZXJUeXBlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuYW5zd2VyVHlwZSwgLy9bXCJkZXNjcmlwdGl2ZVwiLFwieWVzL25vXCIsXCJtdWx0aXBsZWNob2ljZXNpbmdsZVwiLFwibXVsdGlwbGVjaG9pY2VtdWx0aXBsZVwiLFwiaW1hZ2VcIixcInZpZGVvXCIsXCJkZXNjcmlwdGl2ZUltYWdlXCIsXCJtdWx0aXBsZUltYWdlXCJdXHJcbiAgICAgIFwidmlld0ZsYWdcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS52aWV3RmxhZywgLy9bdHJ1ZSwgZmFsc2VdXHJcbiAgICAgIFwidmlld1JlZG9cIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS52aWV3UmVkbywgLy9bdHJ1ZSwgZmFsc2VdXHJcbiAgICAgIFwiZmlsdGVyXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZmlsdGVyLFxyXG4gICAgICBcInF1ZXN0aW9uc1wiOiB0aGlzLnNlbGVjdGVkU2VjdGlvbi5sZW5ndGggPiAwICYmIHRoaXMuc2VsZWN0ZWRTZWN0aW9uWzBdLnF1ZXN0aW9ucy5sZW5ndGggPiAwID8gdGhpcy5zZWxlY3RlZFNlY3Rpb25bMF0ucXVlc3Rpb25zWzBdIDogXCJcIlxyXG4gICAgfVxyXG4gICAgdGhpcy50cmF4U2VydmljZS5nZXRjaGVja2xpc3Qob2JqKT8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpPy5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuY2hlY2tsaXN0RGF0YSA9IHJlcz8uZGF0YS5jaGVja2xpc3RRdWVzdGlvbnM7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgICBpZiAodGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5maWx0ZXJ0eXBlID09PSAnQ2x1c3RlcnMnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdzdG9yZUxpc3QnKT8uc2V0VmFsdWUocmVzPy5kYXRhPy5zdG9yZXNEZXRhaWxzKVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3VzZXJMaXN0Jyk/LnNldFZhbHVlKHJlcz8uZGF0YT8uc3RvcmVzRGV0YWlscylcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMudmlld0NoZWNrbGlzdHMoXCJhbGxcIiwgXCJhbGxcIilcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5jaGVja2xpc3REYXRhID0gW107XHJcbiAgICAgICAgICB0aGlzLnZpZXdDaGVja2xpc3RzRGF0YSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnZpZXdsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnZpZXdub0RhdGEgPSB0cnVlO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIGdldHRhc2tRQSh0eXBlOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRTZWN0aW9uID0gW11cclxuICAgIHRoaXMudGVtcHNlbGVjdGVkU2VjdGlvbiA9IFtdXHJcblxyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMubm9EYXRhID0gZmFsc2VcclxuICAgIHRoaXMudmlld2xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy52aWV3bm9EYXRhID0gZmFsc2U7XHJcbiAgICBsZXQgc3RvcmVzID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zdG9yZUxpc3QubWFwKChkYXRhOiBhbnkpID0+IGRhdGEuc3RvcmVJZClcclxuICAgIGxldCB1c2VycyA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudXNlckxpc3QubWFwKChkYXRhOiBhbnkpID0+IGRhdGEudXNlckVtYWlsKVxyXG4gICAgbGV0IG9iaiA9IHtcclxuICAgICAgXCJmcm9tRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZyb21EYXRlLFxyXG4gICAgICBcInRvRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnRvRGF0ZSxcclxuICAgICAgXCJDaGVja2xpc3RUeXBlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudHlwZSwgLy8gW1wiY3VzdG9tXCIsIFwiQUlcIl1cclxuICAgICAgXCJjaGVja2xpc3ROYW1lXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuY2hlY2tsaXN0TmFtZSxcclxuICAgICAgXCJjaGVja2xpc3RJZFwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCxcclxuICAgICAgXCJmaWx0ZXJ0eXBlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZmlsdGVydHlwZSxcclxuICAgICAgXCJ1c2VyRW1haWxcIjogdXNlcnMsXHJcbiAgICAgIFwic3RvcmVJZFwiOiBzdG9yZXMsXHJcbiAgICAgIFwiYW5zd2VyVHlwZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmFuc3dlclR5cGUsIC8vW1wiZGVzY3JpcHRpdmVcIixcInllcy9ub1wiLFwibXVsdGlwbGVjaG9pY2VzaW5nbGVcIixcIm11bHRpcGxlY2hvaWNlbXVsdGlwbGVcIixcImltYWdlXCIsXCJ2aWRlb1wiLFwiZGVzY3JpcHRpdmVJbWFnZVwiLFwibXVsdGlwbGVJbWFnZVwiXVxyXG4gICAgICBcInZpZXdGbGFnXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudmlld0ZsYWcsIC8vW3RydWUsIGZhbHNlXVxyXG4gICAgICBcInZpZXdSZWRvXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudmlld1JlZG8sIC8vW3RydWUsIGZhbHNlXVxyXG4gICAgICBcImZpbHRlclwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZpbHRlcixcclxuICAgICAgXCJxdWVzdGlvbnNcIjogdGhpcy5zZWxlY3RlZFNlY3Rpb24ubGVuZ3RoID4gMCAmJiB0aGlzLnNlbGVjdGVkU2VjdGlvblswXS5xdWVzdGlvbnMubGVuZ3RoID4gMCA/IHRoaXMuc2VsZWN0ZWRTZWN0aW9uWzBdLnF1ZXN0aW9uc1swXSA6IFwiXCJcclxuICAgIH1cclxuICAgIHRoaXMudHJheFNlcnZpY2UuZ2V0UXVlc3Rpb25zKG9iaik/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKT8uc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmNoZWNrbGlzdERhdGEgPSByZXM/LmRhdGEuY2hlY2tsaXN0UXVlc3Rpb25zO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm5vRGF0YSA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZmlsdGVydHlwZSA9PT0gJ0NsdXN0ZXJzJykge1xyXG4gICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnc3RvcmVMaXN0Jyk/LnNldFZhbHVlKHJlcz8uZGF0YT8uc3RvcmVzRGV0YWlscylcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCd1c2VyTGlzdCcpPy5zZXRWYWx1ZShyZXM/LmRhdGE/LnN0b3Jlc0RldGFpbHMpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnZpZXdUYXNrTGlzdChcImFsbFwiLCBcImFsbFwiKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmNoZWNrbGlzdERhdGEgPSBbXTtcclxuICAgICAgICAgIHRoaXMudmlld0NoZWNrbGlzdHNEYXRhID0gW107XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMudmlld2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudmlld25vRGF0YSA9IHRydWU7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG5cclxuICB2aWV3VGFza0xpc3Qoc2VjdGlvbk5hbWU6IGFueSwgcXVlc3Rpb25OYW1lOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRFeHBvcnQgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VjdGlvbk5hbWUgPSBzZWN0aW9uTmFtZTtcclxuICAgIHRoaXMucXVlc3Rpb25OYW1lID0gcXVlc3Rpb25OYW1lXHJcblxyXG4gICAgdGhpcy5saW1pdCA9IDE7XHJcbiAgICB0aGlzLnBhZ2luYXRpb25TaXplcyA9IFsxXTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkU2VjdGlvbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMubGltaXQgPSAxMCxcclxuICAgICAgICB0aGlzLnBhZ2luYXRpb25TaXplcyA9IFsxMF07XHJcbiAgICB9XHJcbiAgICB0aGlzLnZpZXdsb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMudmlld25vRGF0YSA9IGZhbHNlXHJcbiAgICBsZXQgc3RvcmVzID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zdG9yZUxpc3QubWFwKChkYXRhOiBhbnkpID0+IGRhdGEuc3RvcmVJZClcclxuICAgIGxldCB1c2VycyA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudXNlckxpc3QubWFwKChkYXRhOiBhbnkpID0+IGRhdGEudXNlckVtYWlsKVxyXG4gICAgdGhpcy52aWV3Q2hlY2tsaXN0c29wdGlvbnMgPSB7XHJcbiAgICAgIFwiZnJvbURhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5mcm9tRGF0ZSxcclxuICAgICAgXCJ0b0RhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50b0RhdGUsXHJcbiAgICAgIFwiQ2hlY2tsaXN0VHlwZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnR5cGUsIC8vIFtcImNoZWNrbGlzdFwiLCBcInRhc2tcIl1cclxuICAgICAgXCJjaGVja2xpc3ROYW1lXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuY2hlY2tsaXN0TmFtZSxcclxuICAgICAgXCJmaWx0ZXJ0eXBlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZmlsdGVydHlwZSxcclxuICAgICAgXCJ1c2VyRW1haWxcIjogdXNlcnMsXHJcbiAgICAgIFwic3RvcmVJZFwiOiBzdG9yZXMsXHJcbiAgICAgIFwiYW5zd2VyVHlwZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmFuc3dlclR5cGUsIC8vW1wiZGVzY3JpcHRpdmVcIixcInllcy9ub1wiLFwibXVsdGlwbGVjaG9pY2VzaW5nbGVcIixcIm11bHRpcGxlY2hvaWNlbXVsdGlwbGVcIixcImltYWdlXCIsXCJ2aWRlb1wiLFwiZGVzY3JpcHRpdmVJbWFnZVwiLFwibXVsdGlwbGVJbWFnZVwiXSAgICAgIFxyXG4gICAgICBcIm9mZnNldFwiOiAodGhpcy5vZmZzZXQgLSAxKSxcclxuICAgICAgXCJsaW1pdFwiOiB0aGlzLmxpbWl0LFxyXG4gICAgICBcImNoZWNrbGlzdElkXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkLFxyXG4gICAgICBcInNvdXJjZUNoZWNrTGlzdF9pZFwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCxcclxuICAgICAgXCJ2aWV3RmxhZ1wiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnZpZXdGbGFnLFxyXG4gICAgICBcInZpZXdSZWRvXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudmlld1JlZG8sIC8vW3RydWUsIGZhbHNlXVxyXG4gICAgICBcInF1ZXN0aW9uc1wiOiB0aGlzLnNlbGVjdGVkU2VjdGlvbixcclxuICAgICAgXCJmaWx0ZXJcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5maWx0ZXJcclxuICAgIH1cclxuICAgIHRoaXMudHJheFNlcnZpY2UuZ2V0QW5zd2Vycyh0aGlzLnZpZXdDaGVja2xpc3Rzb3B0aW9ucyk/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKT8uc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmFwcHJvdmFsc3RhdHVzKClcclxuICAgICAgICAgIHRoaXMudmlld0NoZWNrbGlzdHNEYXRhID0gcmVzLmRhdGE7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsQ291bnQgPSB0aGlzLnZpZXdDaGVja2xpc3RzRGF0YS50b3RhbF9jb3VudFxyXG4gICAgICAgICAgdGhpcy52aWV3bG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy52aWV3bm9EYXRhID0gZmFsc2VcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy52aWV3Q2hlY2tsaXN0c0RhdGEgPSBbXVxyXG4gICAgICAgICAgdGhpcy52aWV3bG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy52aWV3bm9EYXRhID0gdHJ1ZVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICB2aWV3Q2hlY2tsaXN0cyhzZWN0aW9uTmFtZTogYW55LCBxdWVzdGlvbk5hbWU6IGFueSkge1xyXG4gICAgLy8gdGhpcy5zZWxlY3RlZFNlY3Rpb24gPSBbXSAgICBcclxuICAgIHRoaXMuc2VsZWN0ZWRFeHBvcnQgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VjdGlvbk5hbWUgPSBzZWN0aW9uTmFtZTtcclxuICAgIHRoaXMucXVlc3Rpb25OYW1lID0gcXVlc3Rpb25OYW1lXHJcblxyXG4gICAgdGhpcy5saW1pdCA9IDE7XHJcbiAgICB0aGlzLnBhZ2luYXRpb25TaXplcyA9IFsxXTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkU2VjdGlvbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMubGltaXQgPSAxMCxcclxuICAgICAgICB0aGlzLnBhZ2luYXRpb25TaXplcyA9IFsxMF07XHJcbiAgICB9XHJcbiAgICB0aGlzLnZpZXdsb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMudmlld25vRGF0YSA9IGZhbHNlXHJcbiAgICBsZXQgc3RvcmVzID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zdG9yZUxpc3QubWFwKChkYXRhOiBhbnkpID0+IGRhdGEuc3RvcmVJZClcclxuICAgIGxldCB1c2VycyA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudXNlckxpc3QubWFwKChkYXRhOiBhbnkpID0+IGRhdGEudXNlckVtYWlsKVxyXG4gICAgdGhpcy52aWV3Q2hlY2tsaXN0c29wdGlvbnMgPSB7XHJcbiAgICAgIFwiZnJvbURhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5mcm9tRGF0ZSxcclxuICAgICAgXCJ0b0RhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50b0RhdGUsXHJcbiAgICAgIFwiQ2hlY2tsaXN0VHlwZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmNoZWNrTGlzdFR5cGUsIC8vIFtcImNoZWNrbGlzdFwiLCBcInRhc2tcIl1cclxuICAgICAgXCJjaGVja2xpc3ROYW1lXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuY2hlY2tsaXN0TmFtZSxcclxuICAgICAgXCJmaWx0ZXJ0eXBlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZmlsdGVydHlwZSxcclxuICAgICAgXCJzdG9yZUlkXCI6IHN0b3JlcyxcclxuICAgICAgXCJ1c2VyRW1haWxcIjogdXNlcnMsXHJcbiAgICAgIFwiYW5zd2VyVHlwZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmFuc3dlclR5cGUsIC8vW1wiZGVzY3JpcHRpdmVcIixcInllcy9ub1wiLFwibXVsdGlwbGVjaG9pY2VzaW5nbGVcIixcIm11bHRpcGxlY2hvaWNlbXVsdGlwbGVcIixcImltYWdlXCIsXCJ2aWRlb1wiLFwiZGVzY3JpcHRpdmVJbWFnZVwiLFwibXVsdGlwbGVJbWFnZVwiXSAgICAgIFxyXG4gICAgICBcIm9mZnNldFwiOiAodGhpcy5vZmZzZXQgLSAxKSxcclxuICAgICAgXCJsaW1pdFwiOiB0aGlzLmxpbWl0LFxyXG4gICAgICBcImNoZWNrbGlzdElkXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkLFxyXG4gICAgICBcInNvdXJjZUNoZWNrTGlzdF9pZFwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCxcclxuICAgICAgXCJ2aWV3RmxhZ1wiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnZpZXdGbGFnLFxyXG4gICAgICBcInZpZXdSZWRvXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudmlld1JlZG8sLy9bdHJ1ZSwgZmFsc2VdXHJcbiAgICAgIFwicXVlc3Rpb25zXCI6IHRoaXMuc2VsZWN0ZWRTZWN0aW9uLFxyXG4gICAgICBcImZpbHRlclwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZpbHRlclxyXG4gICAgfVxyXG4gICAgdGhpcy50cmF4U2VydmljZS52aWV3Q2hlY2tsaXN0cyh0aGlzLnZpZXdDaGVja2xpc3Rzb3B0aW9ucyk/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKT8uc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmFwcHJvdmFsc3RhdHVzKClcclxuICAgICAgICAgIHRoaXMudmlld0NoZWNrbGlzdHNEYXRhID0gcmVzLmRhdGE7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsQ291bnQgPSB0aGlzLnZpZXdDaGVja2xpc3RzRGF0YS50b3RhbF9jb3VudFxyXG4gICAgICAgICAgdGhpcy52aWV3bG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy52aWV3bm9EYXRhID0gZmFsc2VcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy52aWV3Q2hlY2tsaXN0c0RhdGEgPSBbXVxyXG4gICAgICAgICAgdGhpcy52aWV3bG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy52aWV3bm9EYXRhID0gdHJ1ZVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuXHJcbiAgdGFza0NyZWF0ZSgpIHsgfVxyXG5cclxuICBzaG93c2lkZW5hdjogYm9vbGVhbiA9IHRydWU7XHJcbiAgc2lkZW5hdigpIHtcclxuICAgIHRoaXMuc2hvd3NpZGVuYXYgPSAhdGhpcy5zaG93c2lkZW5hdjtcclxuICB9XHJcblxyXG4gIG9uUGFnZUNoYW5nZShwYWdlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYWdlO1xyXG4gIH1cclxuXHJcblxyXG4gIGNoZWNrQUljaGVja2xpc3QoKSB7ICBcclxuICAgIGlmICh0aGlzLmNvbWJpbmVkQ2hlY2tsaXN0LmluY2x1ZGVzKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uUGFnZUNoYW5nZXZpZXcocGFnZU9mZnNldDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLm9mZnNldCA9IHBhZ2VPZmZzZXQ7XHJcbiAgICBpZiAodGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQgPT09ICdzdG9yZW9wZW5hbmRjbG9zZScpIHtcclxuICAgICAgdGhpcy5zdG9yZU9wZW5jbG9zZXZpZXcoKVxyXG4gICAgfWlmICh0aGlzLmJveGltYWdlQ2hlY2tsaXN0LmluY2x1ZGVzKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkKSkge1xyXG4gICAgICB0aGlzLnF1ZXVlYWxlcnR2aWV3KClcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pbWFnZUNoZWNrbGlzdC5pbmNsdWRlcyh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCkpIHtcclxuICAgICAgdGhpcy5zZWxlY3QgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZDtcclxuICAgICAgdGhpcy5nZXRtb2JpbGVVc2FnZURhdGF2aWV3KClcclxuICAgIH0gZWxzZSBpZiAodGhpcy52aWRlb0NoZWNrbGlzdC5pbmNsdWRlcyh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCkpIHtcclxuICAgICAgdGhpcy5zZWxlY3QgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZDtcclxuICAgICAgdGhpcy5nZXRjdXN0b21lcnVuYXR0ZW5kZWR2aWV3KClcclxuICAgIH0gIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50eXBlID09PSAnY2hlY2tsaXN0Jykge1xyXG4gICAgICAgIHRoaXMudmlld0NoZWNrbGlzdHMoJycsICcnKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnZpZXdUYXNrTGlzdChcImFsbFwiLCBcImFsbFwiKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IDMwLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIG9uUGFnZVNpemVDaGFuZ2UocGFnZVNpemU6IG51bWJlcikge1xyXG4gICAgdGhpcy5saW1pdCA9IHBhZ2VTaXplO1xyXG4gICAgdGhpcy5vZmZzZXQgPSAxO1xyXG4gICAgaWYgKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkID09PSAnc3RvcmVvcGVuYW5kY2xvc2UnKSB7XHJcbiAgICAgIHRoaXMuc3RvcmVPcGVuY2xvc2V2aWV3KClcclxuICAgIH0gZWxzZSBpZiAodGhpcy5ib3hpbWFnZUNoZWNrbGlzdC5pbmNsdWRlcyh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCkpIHtcclxuICAgICAgdGhpcy5xdWV1ZWFsZXJ0dmlldygpXHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaW1hZ2VDaGVja2xpc3QuaW5jbHVkZXModGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQpKSB7XHJcbiAgICAgIHRoaXMuZ2V0bW9iaWxlVXNhZ2VEYXRhdmlldygpXHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudmlkZW9DaGVja2xpc3QuaW5jbHVkZXModGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQpKSB7XHJcbiAgICAgIHRoaXMuY3VzdG9tZXJ1bmF0dGVuZGVkbGlzdChmYWxzZSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnR5cGUgPT09ICdjaGVja2xpc3QnKSB7XHJcbiAgICAgICAgdGhpcy52aWV3Q2hlY2tsaXN0cygnJywgJycpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudmlld1Rhc2tMaXN0KFwiYWxsXCIsIFwiYWxsXCIpXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuZXhwb3J0U2hvdyA9IGZhbHNlO1xyXG4gIH1cclxuICBleHBvcnRTaG93ID0gZmFsc2U7XHJcbiAgZXhwb3J0TGFiZWw6IHN0cmluZyA9ICdFeHBvcnQnO1xyXG4gIGV4cG9ydERldChldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5leHBvcnRTaG93ID0gIXRoaXMuZXhwb3J0U2hvdztcclxuICB9XHJcbiAgcXVlc3Rpb25zY291bnQoZGF0YTogYW55KSB7XHJcbiAgICBsZXQgY291bnQgPSAwXHJcbiAgICBkYXRhLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICBjb3VudCA9IGNvdW50ICsgZWxlbWVudC5xdWVzdGlvbnMubGVuZ3RoXHJcblxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gY291bnQ7XHJcbiAgfVxyXG4gIHNldEV4cG9ydEFzUFBUKHR5cGU6IGFueSwgZmlsZVR5cGU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5leHBvcnRMYWJlbCA9IHR5cGU7ICAvLyBVcGRhdGUgdGhlIGxhYmVsIHRleHRcclxuICAgIHRoaXMuZXhwb3J0U2hvdyA9IGZhbHNlOyAgLy8gQ2xvc2UgdGhlIGV4cG9ydCBtZW51IGFmdGVyIHNlbGVjdGlvblxyXG4gICAgbGV0IHN0b3JlcyA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc3RvcmVMaXN0Lm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnN0b3JlSWQpXHJcbiAgICBsZXQgdXNlcnMgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnVzZXJMaXN0Lm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnVzZXJFbWFpbClcclxuXHJcbiAgICBpZiAoZmlsZVR5cGUgPT09ICdwcHQnKSB7XHJcbiAgICAgIGxldCBzdGFydCA9IGRheWpzKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZnJvbURhdGUpO1xyXG4gICAgICBsZXQgZW5kID0gZGF5anModGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50b0RhdGUpO1xyXG4gICAgICBjb25zdCBkaWZmZXJlbmNlID0gZW5kLmRpZmYoc3RhcnQsICdkYXlzJyk7XHJcblxyXG4gICAgICBpZiAoZGlmZmVyZW5jZSA9PT0gMiAmJiB0aGlzLnF1ZXN0aW9uc2NvdW50KHRoaXMuc2VsZWN0ZWRTZWN0aW9uKSA+IDEpIHtcclxuICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KGBQbGVhc2Ugc2VsZWN0IG1heGltdW0gb2YgMSBxdWVzdGlvbiBvbmx5YClcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBpZiAoZGlmZmVyZW5jZSA9PT0gMSAmJiB0aGlzLnF1ZXN0aW9uc2NvdW50KHRoaXMuc2VsZWN0ZWRTZWN0aW9uKSA+IDMpIHtcclxuICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KGBQbGVhc2Ugc2VsZWN0IG1heGltdW0gb2YgMyBxdWVzdGlvbiBvbmx5YClcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBpZiAoZGlmZmVyZW5jZSA9PT0gMCAmJiB0aGlzLnF1ZXN0aW9uc2NvdW50KHRoaXMuc2VsZWN0ZWRTZWN0aW9uKSA+IDMpIHtcclxuICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KGBQbGVhc2Ugc2VsZWN0IG1heGltdW0gb2YgMyBxdWVzdGlvbiBvbmx5YClcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmV4cG9ydExhYmVsID0gJ0V4cG9ydCdcclxuICAgIH1cclxuXHJcbiAgICBsZXQgcGF5bG9hZCA9IHtcclxuICAgICAgXCJkb3dubG9hZEluc2VydEZyb21cIjogXCJnYWxsZXJ5XCIsXHJcbiAgICAgIFwiZnJvbURhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5mcm9tRGF0ZSxcclxuICAgICAgXCJ0b0RhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50b0RhdGUsXHJcbiAgICAgIFwiY2hlY2tMaXN0VHlwZVwiOnRoaXMuc2VsZWN0LFxyXG4gICAgICBcImNoZWNrbGlzdElkXCI6IFtdLFxyXG4gICAgICBcInNvdXJjZUNoZWNrTGlzdF9pZFwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCxcclxuICAgICAgXCJjaGVja2xpc3ROYW1lXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuY2hlY2tsaXN0TmFtZSxcclxuICAgICAgXCJhbnN3ZXJUeXBlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuYW5zd2VyVHlwZSxcclxuICAgICAgXCJmaWxlVHlwZVwiOiBmaWxlVHlwZSxcclxuICAgICAgXCJzdG9yZUlkc1wiOiBzdG9yZXMsXHJcbiAgICAgIFwidXNlckVtYWlsTGlzdFwiOiB1c2VycyxcclxuICAgICAgXCJjbGllbnRJZFwiOiB0aGlzLmhlYWRlckZpbHRlcnMuY2xpZW50LFxyXG4gICAgICBcInF1ZXN0aW9uc1wiOiB0aGlzLnNlbGVjdGVkU2VjdGlvbixcclxuICAgICAgXCJwcmV2aWV3VHlwZVwiOiB0aGlzLnByZXZpZXdUeXBlLFxyXG4gICAgICBcInZpZXdGbGFnXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudmlld0ZsYWcsXHJcbiAgICAgIFwidmlld1JlZG9cIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS52aWV3UmVkbywgLy9bdHJ1ZSwgZmFsc2VdXHJcbiAgICAgIFwiaW5zZXJ0VHlwZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnR5cGUsXHJcbiAgICAgIFwiZmlsdGVyXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZmlsdGVyLFxyXG4gICAgICBcImZpbHRlcnR5cGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5maWx0ZXJ0eXBlXHJcbiAgICB9XHJcbiAgICBsZXQgY2xpZW50aW5mbyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjbGllbnQtZGV0YWlsc1wiKSB8fCBcIlwiKVxyXG4gICAgbGV0IHVzZXJpbmZvID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInVzZXItaW5mb1wiKSB8fCBcIlwiKVxyXG4gICAgY29uc29sZS5sb2codGhpcy5zZWxlY3QpXHJcbiAgICBpZih0aGlzLnNlbGVjdD09PSdjdXN0b20nKXtcclxuICAgICAgaWYgKChjbGllbnRpbmZvPy50cmF4RGF0ZVJhbmdlID09PSA3IHx8IHVzZXJpbmZvPy50cmF4RGF0ZVJhbmdlID09PSA3KSAmJiB0eXBlID09PSAnRXhwb3J0IGFzIENTVicgfHwgdHlwZSA9PT0gJ0V4cG9ydCBhcyBQUFQnIHx8IHR5cGUgPT09ICdFeHBvcnQgYXMgWklQJykge1xyXG4gICAgICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihFeHBvcnRHYWxsZXJ5Q29tcG9uZW50LCB7XHJcbiAgICAgICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgICAgIHNpemU6IFwibGdcIixcclxuICAgICAgICAgIHNjcm9sbGFibGU6IHRydWUsXHJcbiAgICAgICAgICBiYWNrZHJvcDonc3RhdGljJyxcclxuICAgICAgICAgIHdpbmRvd0NsYXNzOiBcImN1c3RvbS1oZWlnaHQtbW9kYWxcIiAgLy8gPC0tIEFkZCBhIGN1c3RvbSBjbGFzcyBoZXJlICBcclxuICAgICAgICB9KTtcclxuICAgICAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS50eXBlID0gdHlwZTtcclxuICAgICAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5wYXlsb2FkID0gcGF5bG9hZDtcclxuICBcclxuICAgICAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IFwic3VjY2Vzc1wiKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0U3VjY2Vzc1RvYXN0KGA8ZGl2PjxzcGFuIGNsYXNzPVwibWUtOFwiID5Eb3dubG9hZGluZyB5b3VyIHJlcG9ydHM8L3NwYW4+PGEgaHJlZj1cIm5vdGlmaWNhdGlvbnMvYWxlcnRzP3RhYj1kb3dubG9hZFwiIHN0eWxlPVwiY29sb3I6Izk5YzNmZjsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgY3Vyc29yOnBvaW50ZXJcIiA+VmlldzwvYT48L2Rpdj5gKVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PT0gXCJlcnJvclwiKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChgU29tZXRoaW5nIHdlbnQgd3JvbmcgIWApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5leHBvcnRMYWJlbCA9ICdFeHBvcnQnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnRyYXhTZXJ2aWNlLnJlcG9ydFRhYmxlRXhwb3J0KHBheWxvYWQpPy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSk/LnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0U3VjY2Vzc1RvYXN0KGA8ZGl2PjxzcGFuIGNsYXNzPVwibWUtOFwiID5Eb3dubG9hZGluZyB5b3VyIHJlcG9ydHM8L3NwYW4+PGEgaHJlZj1cIm5vdGlmaWNhdGlvbnMvYWxlcnRzP3RhYj1kb3dubG9hZFwiIHN0eWxlPVwiY29sb3I6Izk5YzNmZjsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgY3Vyc29yOnBvaW50ZXJcIiA+VmlldzwvYT48L2Rpdj5gKVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoYFNvbWV0aGluZyB3ZW50IHdyb25nICFgKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZXhwb3J0TGFiZWwgPSAnRXhwb3J0J1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH1lbHNlIGlmKHRoaXMuc2VsZWN0PT09J3NjcnVtJ3x8dGhpcy5zZWxlY3Q9PT0nY2xlYW5pbmcnfHx0aGlzLnNlbGVjdD09PSdzdG9yZW9wZW5hbmRjbG9zZScpe1xyXG5cclxuICAgICAgaWYodGhpcy5zZWxlY3QhPSdzdG9yZW9wZW5hbmRjbG9zZScpe1xyXG4gICAgICAgIHRoaXMucHJldmlld1R5cGUgPSAgJ3ZpZGVvJ1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnRyYXhTZXJ2aWNlLmFpY2hlY2tsaXN0RXhwb3J0KHBheWxvYWQpPy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSk/LnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0U3VjY2Vzc1RvYXN0KGA8ZGl2PjxzcGFuIGNsYXNzPVwibWUtOFwiID5Eb3dubG9hZGluZyB5b3VyIHJlcG9ydHM8L3NwYW4+PGEgaHJlZj1cIm5vdGlmaWNhdGlvbnMvYWxlcnRzP3RhYj1kb3dubG9hZFwiIHN0eWxlPVwiY29sb3I6Izk5YzNmZjsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgY3Vyc29yOnBvaW50ZXJcIiA+VmlldzwvYT48L2Rpdj5gKVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChgU29tZXRoaW5nIHdlbnQgd3JvbmcgIWApXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmV4cG9ydExhYmVsID0gJ0V4cG9ydCdcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0eXBlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMucmVtb3ZlUXVlcnlQYXJhbXMoKVxyXG4gICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3R5cGUnKT8uc2V0VmFsdWUoZXZlbnQpXHJcbiAgICB0aGlzLnNob3dzaW5nbGUgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd211bHRpID0gdHJ1ZTtcclxuICAgIHRoaXMuYW5zd2VyRmlsdGVyID0gW11cclxuICAgIGlmIChldmVudCA9PT0gJ3Rhc2snKSB7XHJcbiAgICAgIHRoaXMudHJheFNlcnZpY2UuZ2V0U3RvcmVzbGlzdCh7IGNsaWVudElkOiB0aGlzLmhlYWRlckZpbHRlcnMuY2xpZW50LCBjbHVzdGVyczogdGhpcy5ncm91cHMsIGNpdHk6IFtdIH0pLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlTGlzdCA9IHJlcy5kYXRhLnN0b3Jlc0RhdGE7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmVzID0gcmVzLmRhdGEuc3RvcmVzRGF0YVxyXG4gICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnc3RvcmVMaXN0Jyk/LnNldFZhbHVlKHRoaXMuc3RvcmVMaXN0KVxyXG4gICAgICAgICAgICB0aGlzLmdldEFsbFRhc2tzKGZhbHNlKVxyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnY2hlY2tMaXN0VHlwZScpPy5zZXRWYWx1ZSgnY3VzdG9tJylcclxuICAgICAgdGhpcy50cmF4U2VydmljZS5nZXRTdG9yZXNsaXN0KHsgY2xpZW50SWQ6IHRoaXMuaGVhZGVyRmlsdGVycy5jbGllbnQsIGNsdXN0ZXJzOiB0aGlzLmdyb3VwcywgY2l0eTogW10gfSkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmVMaXN0ID0gcmVzLmRhdGEuc3RvcmVzRGF0YTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZXMgPSByZXMuZGF0YS5zdG9yZXNEYXRhXHJcbiAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdzdG9yZUxpc3QnKT8uc2V0VmFsdWUodGhpcy5zdG9yZUxpc3QpXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0QWxsQ2hlY2tMaXN0cyh0cnVlKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0QWxsVGFza3ModHlwZTogYW55KSB7XHJcbiAgICBsZXQgc3RvcmVzID0gdGhpcy5zdG9yZXM/Lm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnN0b3JlSWQpXHJcbiAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICBmcm9tRGF0ZTogdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ2Zyb21EYXRlJyk/LnZhbHVlLFxyXG4gICAgICB0b0RhdGU6IHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCd0b0RhdGUnKT8udmFsdWUsXHJcbiAgICAgIHN0b3JlSWQ6IHN0b3JlcyxcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuaGVhZGVyRmlsdGVycz8uY2xpZW50LFxyXG4gICAgICBzb3J0Q29sdW1uTmFtZTogXCJjaGVja0xpc3ROYW1lXCIsXHJcbiAgICAgIHNvcnRCeTogMVxyXG4gICAgfVxyXG4gICAgdGhpcy50cmF4U2VydmljZS5nZXRUYXNrTGlzdChwYXlsb2FkKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5jaGVja2xpc3RzID0gcmVzLmRhdGEuY2hlY2tsaXN0RGF0YVxyXG5cclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5xdWVyeVBhcmFtcy5zb3VyY2VDaGVja0xpc3RfaWQgJiYgdGhpcy5xdWVyeVBhcmFtcy5jaGVja2xpc3RUeXBlID09ICd0YXNrJykge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdzb3VyY2VDaGVja0xpc3RfaWQnKT8uc2V0VmFsdWUodGhpcy5xdWVyeVBhcmFtcy5zb3VyY2VDaGVja0xpc3RfaWQpXHJcbiAgICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3R5cGUnKT8uc2V0VmFsdWUoJ3Rhc2snKVxyXG4gICAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvcm0uZ2V0KCdjaGVja0xpc3RUeXBlJyk/LnNldFZhbHVlKHRoaXMucXVlcnlQYXJhbXMuY2hlY2tsaXN0VHlwZSlcclxuICAgICAgICAgICAgICBsZXQgZ2V0Y2hlY2tsaXN0ID0gdGhpcy5jaGVja2xpc3RzLmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZS5zb3VyY2VDaGVja0xpc3RfaWQgPT09IHRoaXMucXVlcnlQYXJhbXMuc291cmNlQ2hlY2tMaXN0X2lkKVxyXG5cclxuICAgICAgICAgICAgICBpZiAoZ2V0Y2hlY2tsaXN0ICYmIGdldGNoZWNrbGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnY2hlY2tsaXN0TmFtZScpPy5zZXRWYWx1ZShnZXRjaGVja2xpc3RbMF0/LmNoZWNrTGlzdE5hbWUpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnY2hlY2tMaXN0RGVzY3JpcHRpb24nKT8uc2V0VmFsdWUoZ2V0Y2hlY2tsaXN0WzBdPy5jaGVja0xpc3REZXNjcmlwdGlvbilcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0TmFtZSA9IGdldGNoZWNrbGlzdFswXT8uY2hlY2tMaXN0TmFtZVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAvLyB0aGlzLnJlbW92ZVF1ZXJ5UGFyYW1zKClcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgnY2hlY2tsaXN0TmFtZScpPy5zZXRWYWx1ZSh0aGlzLmNoZWNrbGlzdHNbMF0/LmNoZWNrTGlzdE5hbWUpXHJcbiAgICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3NvdXJjZUNoZWNrTGlzdF9pZCcpPy5zZXRWYWx1ZSh0aGlzLmNoZWNrbGlzdHNbMF0/LnNvdXJjZUNoZWNrTGlzdF9pZClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZih0eXBlKXtcclxuICAgICAgICAgICAgICB0aGlzLmdldHRhc2tRQShmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sIDApXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuY2hlY2tsaXN0cyA9IFtdXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0VGFza1FBKHR5cGU6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFNlY3Rpb24gPSBbXVxyXG4gICAgdGhpcy50ZW1wc2VsZWN0ZWRTZWN0aW9uID0gW11cclxuXHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5ub0RhdGEgPSBmYWxzZVxyXG4gICAgdGhpcy52aWV3bG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnZpZXdub0RhdGEgPSBmYWxzZTtcclxuICAgIGxldCBzdG9yZXMgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnN0b3JlTGlzdC5tYXAoKGRhdGE6IGFueSkgPT4gZGF0YS5zdG9yZUlkKVxyXG4gICAgbGV0IHVzZXIgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnVzZXJMaXN0Lm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnVzZXJFbWFpbClcclxuICAgIGxldCBvYmogPSB7XHJcbiAgICAgIFwiZnJvbURhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5mcm9tRGF0ZSxcclxuICAgICAgXCJ0b0RhdGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50b0RhdGUsXHJcbiAgICAgIFwiQ2hlY2tsaXN0VHlwZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnR5cGUsIC8vIFtcImN1c3RvbVwiLCBcIkFJXCJdXHJcbiAgICAgIFwiY2hlY2tsaXN0TmFtZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmNoZWNrbGlzdE5hbWUsXHJcbiAgICAgIFwiY2hlY2tsaXN0SWRcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQsXHJcbiAgICAgIFwic3RvcmVJZFwiOiBzdG9yZXMsXHJcbiAgICAgIFwidXNlckVtYWlsXCI6dXNlcixcclxuICAgICAgXCJmaWx0ZXJ0eXBlXCI6dGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5maWx0ZXJ0eXBlLFxyXG4gICAgICBcImFuc3dlclR5cGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5hbnN3ZXJUeXBlLCAvL1tcImRlc2NyaXB0aXZlXCIsXCJ5ZXMvbm9cIixcIm11bHRpcGxlY2hvaWNlc2luZ2xlXCIsXCJtdWx0aXBsZWNob2ljZW11bHRpcGxlXCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImRlc2NyaXB0aXZlSW1hZ2VcIixcIm11bHRpcGxlSW1hZ2VcIl1cclxuICAgICAgXCJ2aWV3RmxhZ1wiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnZpZXdGbGFnLCAvL1t0cnVlLCBmYWxzZV1cclxuICAgICAgXCJ2aWV3UmVkb1wiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnZpZXdSZWRvLCAvL1t0cnVlLCBmYWxzZV1cclxuICAgICAgXCJmaWx0ZXJcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5maWx0ZXIsXHJcbiAgICAgIFwicXVlc3Rpb25zXCI6IHRoaXMuc2VsZWN0ZWRTZWN0aW9uLmxlbmd0aCA+IDAgJiYgdGhpcy5zZWxlY3RlZFNlY3Rpb25bMF0ucXVlc3Rpb25zLmxlbmd0aCA+IDAgPyB0aGlzLnNlbGVjdGVkU2VjdGlvblswXS5xdWVzdGlvbnNbMF0gOiBcIlwiXHJcbiAgICB9XHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLmdldFF1ZXN0aW9ucyhvYmopPy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSk/LnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5jaGVja2xpc3REYXRhID0gcmVzPy5kYXRhLmNoZWNrbGlzdFF1ZXN0aW9ucztcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgICAgICAgIGlmICh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZpbHRlcnR5cGUgPT09ICdDbHVzdGVycycpIHtcclxuICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3N0b3JlTGlzdCcpPy5zZXRWYWx1ZShyZXM/LmRhdGE/LnN0b3Jlc0RldGFpbHMpXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgndXNlckxpc3QnKT8uc2V0VmFsdWUocmVzPy5kYXRhPy5zdG9yZXNEZXRhaWxzKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy52aWV3VGFza0xpc3QoXCJhbGxcIiwgXCJhbGxcIilcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5jaGVja2xpc3REYXRhID0gW107XHJcbiAgICAgICAgICB0aGlzLnZpZXdDaGVja2xpc3RzRGF0YSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnZpZXdsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnZpZXdub0RhdGEgPSB0cnVlO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIHZpZXdUYXNrcyhzZWN0aW9uTmFtZTogYW55LCBxdWVzdGlvbk5hbWU6IGFueSkge1xyXG4gICAgLy8gdGhpcy5zZWxlY3RlZFNlY3Rpb24gPSBbXSAgICBcclxuICAgIHRoaXMuc2VsZWN0ZWRFeHBvcnQgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VjdGlvbk5hbWUgPSBzZWN0aW9uTmFtZTtcclxuICAgIHRoaXMucXVlc3Rpb25OYW1lID0gcXVlc3Rpb25OYW1lXHJcblxyXG4gICAgdGhpcy5saW1pdCA9IDE7XHJcbiAgICB0aGlzLnBhZ2luYXRpb25TaXplcyA9IFsxXTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkU2VjdGlvbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMubGltaXQgPSAxMCxcclxuICAgICAgICB0aGlzLnBhZ2luYXRpb25TaXplcyA9IFsxMF07XHJcbiAgICB9XHJcbiAgICB0aGlzLnZpZXdsb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMudmlld25vRGF0YSA9IGZhbHNlXHJcbiAgICBsZXQgc3RvcmVzID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zdG9yZUxpc3QubWFwKChkYXRhOiBhbnkpID0+IGRhdGEuc3RvcmVJZClcclxuICAgIHRoaXMudmlld0NoZWNrbGlzdHNvcHRpb25zID0ge1xyXG4gICAgICBcImZyb21EYXRlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuZnJvbURhdGUsXHJcbiAgICAgIFwidG9EYXRlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudG9EYXRlLFxyXG4gICAgICBcIkNoZWNrbGlzdFR5cGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5jaGVja0xpc3RUeXBlLCAvLyBbXCJjaGVja2xpc3RcIiwgXCJ0YXNrXCJdXHJcbiAgICAgIFwiY2hlY2tsaXN0TmFtZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmNoZWNrbGlzdE5hbWUsXHJcbiAgICAgIFwic3RvcmVJZFwiOiBzdG9yZXMsXHJcbiAgICAgIFwiYW5zd2VyVHlwZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmFuc3dlclR5cGUsIC8vW1wiZGVzY3JpcHRpdmVcIixcInllcy9ub1wiLFwibXVsdGlwbGVjaG9pY2VzaW5nbGVcIixcIm11bHRpcGxlY2hvaWNlbXVsdGlwbGVcIixcImltYWdlXCIsXCJ2aWRlb1wiLFwiZGVzY3JpcHRpdmVJbWFnZVwiLFwibXVsdGlwbGVJbWFnZVwiXSAgICAgIFxyXG4gICAgICBcIm9mZnNldFwiOiAodGhpcy5vZmZzZXQgLSAxKSxcclxuICAgICAgXCJsaW1pdFwiOiB0aGlzLmxpbWl0LFxyXG4gICAgICBcImNoZWNrbGlzdElkXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkLFxyXG4gICAgICBcInNvdXJjZUNoZWNrTGlzdF9pZFwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCxcclxuICAgICAgXCJ2aWV3RmxhZ1wiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnZpZXdGbGFnLFxyXG4gICAgICBcInZpZXdSZWRvXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudmlld1JlZG8sIC8vW3RydWUsIGZhbHNlXVxyXG4gICAgICBcInF1ZXN0aW9uc1wiOiB0aGlzLnNlbGVjdGVkU2VjdGlvbixcclxuICAgICAgXCJmaWx0ZXJcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5maWx0ZXJcclxuICAgIH1cclxuICAgIHRoaXMudHJheFNlcnZpY2Uudmlld0NoZWNrbGlzdHModGhpcy52aWV3Q2hlY2tsaXN0c29wdGlvbnMpPy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSk/LnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy52aWV3Q2hlY2tsaXN0c0RhdGEgPSByZXMuZGF0YTtcclxuICAgICAgICAgIHRoaXMudG90YWxDb3VudCA9IHRoaXMudmlld0NoZWNrbGlzdHNEYXRhLnRvdGFsX2NvdW50XHJcbiAgICAgICAgICB0aGlzLnZpZXdsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnZpZXdub0RhdGEgPSBmYWxzZVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnZpZXdDaGVja2xpc3RzRGF0YSA9IFtdXHJcbiAgICAgICAgICB0aGlzLnZpZXdsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnZpZXdub0RhdGEgPSB0cnVlXHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG5cclxuICB0YXNrcmVkaXJlY3QocXVlc3Rpb246IGFueSwgc3RvcmVQcm9maWxlOiBhbnksIGNoZWNrbGlzdEluZm86IGFueSkge1xyXG4gICAgaWYgKHN0b3JlUHJvZmlsZT8uc3RvcmVfaWQgJiYgc3RvcmVQcm9maWxlPy5zdG9yZV9pZCAhPSAnJykge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvJywgeyBza2lwTG9jYXRpb25DaGFuZ2U6IHRydWUgfSkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvbWFuYWdlL3RyYXgvZ2FsbGVyeSddLFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBxdWVyeVBhcmFtczoge1xyXG4gICAgICAgICAgICAgIENoZWNrbGlzdERhdGU6IGRheWpzKHF1ZXN0aW9uLnRhc2tEYXRlID8gcXVlc3Rpb24udGFza0RhdGUgOiBjaGVja2xpc3RJbmZvLmRhdGUpLmZvcm1hdCgnWVlZWS1NTS1ERCcpLFxyXG4gICAgICAgICAgICAgIHN0b3JlSWQ6IHN0b3JlUHJvZmlsZT8uc3RvcmVfaWQsXHJcbiAgICAgICAgICAgICAgY2hlY2tsaXN0VHlwZTogXCJ0YXNrXCIsXHJcbiAgICAgICAgICAgICAgc291cmNlQ2hlY2tMaXN0X2lkOiBxdWVzdGlvbi50YXNrSWQsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXHJcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZScsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKVxyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnLycsIHsgc2tpcExvY2F0aW9uQ2hhbmdlOiB0cnVlIH0pLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL21hbmFnZS90cmF4L2dhbGxlcnknXSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHtcclxuICAgICAgICAgICAgICBDaGVja2xpc3REYXRlOiBkYXlqcyhxdWVzdGlvbi50YXNrRGF0ZSA/IHF1ZXN0aW9uLnRhc2tEYXRlIDogY2hlY2tsaXN0SW5mby5kYXRlKS5mb3JtYXQoJ1lZWVktTU0tREQnKSxcclxuICAgICAgICAgICAgICB1c2VyRW1haWw6IHN0b3JlUHJvZmlsZT8udXNlckVtYWlsLFxyXG4gICAgICAgICAgICAgIGNoZWNrbGlzdFR5cGU6IFwidGFza1wiLFxyXG4gICAgICAgICAgICAgIHNvdXJjZUNoZWNrTGlzdF9pZDogcXVlc3Rpb24udGFza0lkLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxyXG4gICAgICAgICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIClcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBWaWV3SW5EZXRhaWxzKGRhdGE6IGFueSwgY2hlY2tsaXN0SW5mbzogYW55LCBzdG9yZVByb2ZpbGU6IGFueSwgc2VjdGlvbjogYW55KSB7XHJcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oVGFza0xvZ3NDb21wb25lbnQsIHsgY2VudGVyZWQ6IHRydWUsIHNpemU6ICdsZycsIH0pO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2Uub3BlcmF0aW9udHlwZSA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudHlwZTtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnNvdXJjZUNoZWNrTGlzdF9pZCA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc291cmNlQ2hlY2tMaXN0X2lkO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuaW5wdXREYXRhID0gZGF0YTtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmNoZWNrbGlzdEluZm8gPSBjaGVja2xpc3RJbmZvO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2Uuc3RvcmVQcm9maWxlID0gc3RvcmVQcm9maWxlO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2Uuc2VjdGlvbkluZm8gPSBzZWN0aW9uO1xyXG5cclxuICB9XHJcblxyXG4gIGFkZFRhc2sodHlwZTogYW55LCBkYXRhOiBhbnksIGNoZWNrbGlzdEluZm86IGFueSwgc3RvcmVQcm9maWxlOiBhbnksIHNlY3Rpb246IGFueSkge1xyXG4gIFxyXG4gIC8vIGlmKGRhdGEuYW5zd2VyVHlwZSA9PT1cIm11bHRpcGxlY2hvaWNlc2luZ2xlXCJ8fGRhdGEuYW5zd2VyVHlwZSA9PT1cIm11bHRpcGxlY2hvaWNlbXVsdGlwbGVcIil7XHJcbiAgLy8gICBkYXRhLmFuc3dlcnMgPSBbXVxyXG4gIC8vIH1cclxuICAgIFxyXG4gICAgZGF0YS5xdWVzdGlvblJlZmVyZW5jZUltYWdlID0gW2RhdGEucXVlc3Rpb25SZWZlcmVuY2VJbWFnZV1cclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihBZGRUYXNrQ29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLCBzaXplOiAnbGcnLFxyXG4gICAgICB3aW5kb3dDbGFzczogJ2N1c3RvbS1tb2RhbC1oZWlnaHQnLFxyXG4gICAgICBiYWNrZHJvcDogJ3N0YXRpYydcclxuICAgIH0pO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UudHlwZSA9IHR5cGU7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5vcGVyYXRpb250eXBlID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50eXBlO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2Uuc291cmNlQ2hlY2tMaXN0X2lkID0gdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQ7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5pbnB1dERhdGEgPSBkYXRhO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuY2hlY2tsaXN0SW5mbyA9IGNoZWNrbGlzdEluZm87XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zdG9yZVByb2ZpbGUgPSBzdG9yZVByb2ZpbGU7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zZWN0aW9uSW5mbyA9IHNlY3Rpb247XHJcblxyXG5cclxuICAgIGRhdGE/LmFuc3dlcnMuZm9yRWFjaCgoYW5zOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGFucz8ucmVmZXJlbmNlSW1hZ2UgJiYgYW5zPy5yZWZlcmVuY2VJbWFnZSAhPSAnJyAmJiBhbnM/LnJlZmVyZW5jZUltYWdlICE9IG51bGwpIHtcclxuICAgICAgICBhbnMucmVmZXJlbmNlSW1hZ2UgPSBbYW5zPy5yZWZlcmVuY2VJbWFnZV1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS50YXNrRGV0YWlscyA9IHtcclxuICAgICAgc2VjdGlvbnM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBcImlkXCI6IFwiXCIsXHJcbiAgICAgICAgICBcIm5hbWVcIjogXCJcIixcclxuICAgICAgICAgIFwicXVlc3Rpb25zXCI6IFtkYXRhXVxyXG4gICAgICAgIH1cclxuICAgICAgXVxyXG5cclxuICAgIH07XHJcblxyXG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0ID09ICdzdWJtaXQnKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudHlwZSA9PT0gJ2NoZWNrbGlzdCcpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0Q2hlY2tsaXN0UUEoZmFsc2UpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmdldFRhc2tRQSh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnR5cGUpXHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGRhdGEucXVlc3Rpb25SZWZlcmVuY2VJbWFnZSA9ICcnXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIGFwcHJvdmFsc3RhdHVzKCkge1xyXG4gICAgbGV0IHN0b3JlcyA9IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuc3RvcmVMaXN0Lm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnN0b3JlSWQpXHJcbiAgICBsZXQgdXNlcnMgPSB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnVzZXJMaXN0Lm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnVzZXJFbWFpbClcclxuICAgIGxldCBpbnB1dCA9IHtcclxuICAgICAgXCJmcm9tRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZyb21EYXRlLFxyXG4gICAgICBcInRvRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnRvRGF0ZSxcclxuICAgICAgXCJzdG9yZUlkXCI6IHN0b3JlcyxcclxuICAgICAgXCJ1c2VyRW1haWxcIjogdXNlcnMsXHJcbiAgICAgIFwiY2hlY2tsaXN0SWRcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5zb3VyY2VDaGVja0xpc3RfaWQsXHJcbiAgICAgIFwiQ2hlY2tsaXN0VHlwZVwiOiBcImN1c3RvbVwiLFxyXG4gICAgICBcInR5cGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50eXBlLFxyXG4gICAgICBcImZpbHRlcnR5cGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5maWx0ZXJ0eXBlLFxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUudHlwZSA9PT0gJ2NoZWNrbGlzdCcpIHtcclxuICAgICAgdGhpcy50cmF4U2VydmljZS5hcHByb3ZhbHN0YXR1c2NoZWNrbGlzdChpbnB1dCkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwcm92YWxTdGF0dXMgPSBmYWxzZVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5hcHByb3ZhbFN0YXR1cyA9IHRydWVcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRyYXhTZXJ2aWNlLmFwcHJvdmFsc3RhdHVzdGFzayhpbnB1dCkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwcm92YWxTdGF0dXMgPSBmYWxzZVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5hcHByb3ZhbFN0YXR1cyA9IHRydWVcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG5cclxuICB9XHJcbiAgdGFza1RhYih0YXNrOiBhbnkpIHtcclxuXHJcblxyXG4gICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ2ZpbHRlcicpPy5zZXRWYWx1ZSh0YXNrLmtleSlcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLm5vRGF0YSA9IGZhbHNlXHJcbiAgICB0aGlzLnZpZXdsb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMudmlld25vRGF0YSA9IGZhbHNlO1xyXG4gICAgbGV0IG9iaiA9IHtcclxuICAgICAgXCJmcm9tRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZyb21EYXRlLFxyXG4gICAgICBcInRvRGF0ZVwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnRvRGF0ZSxcclxuICAgICAgXCJDaGVja2xpc3RUeXBlXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuY2hlY2tMaXN0VHlwZSwgLy8gW1wiY3VzdG9tXCIsIFwiQUlcIl1cclxuICAgICAgXCJjaGVja2xpc3ROYW1lXCI6IHRoaXMuZ2FsbGVyeUZvcm0udmFsdWUuY2hlY2tsaXN0TmFtZSxcclxuICAgICAgXCJjaGVja2xpc3RJZFwiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnNvdXJjZUNoZWNrTGlzdF9pZCxcclxuICAgICAgXCJzdG9yZUlkXCI6IHRhc2suc3RvcmVzLFxyXG4gICAgICBcImFuc3dlclR5cGVcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5hbnN3ZXJUeXBlLCAvL1tcImRlc2NyaXB0aXZlXCIsXCJ5ZXMvbm9cIixcIm11bHRpcGxlY2hvaWNlc2luZ2xlXCIsXCJtdWx0aXBsZWNob2ljZW11bHRpcGxlXCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImRlc2NyaXB0aXZlSW1hZ2VcIixcIm11bHRpcGxlSW1hZ2VcIl1cclxuICAgICAgXCJ2aWV3RmxhZ1wiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnZpZXdGbGFnLCAvL1t0cnVlLCBmYWxzZV1cclxuICAgICAgXCJ2aWV3UmVkb1wiOiB0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnZpZXdSZWRvLCAvL1t0cnVlLCBmYWxzZV1cclxuICAgICAgXCJmaWx0ZXJcIjogdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS5maWx0ZXIsXHJcbiAgICAgIFwicXVlc3Rpb25zXCI6IHRoaXMuc2VsZWN0ZWRTZWN0aW9uLmxlbmd0aCA+IDAgJiYgdGhpcy5zZWxlY3RlZFNlY3Rpb25bMF0ucXVlc3Rpb25zLmxlbmd0aCA+IDAgPyB0aGlzLnNlbGVjdGVkU2VjdGlvblswXS5xdWVzdGlvbnNbMF0gOiBcIlwiXHJcbiAgICB9XHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLmdldGNoZWNrbGlzdChvYmopPy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSk/LnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgLy8gdGhpcy5jaGVja2xpc3REYXRhID0gcmVzPy5kYXRhLmNoZWNrbGlzdFF1ZXN0aW9ucztcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgICAgICAgIGlmICh0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLmZpbHRlcnR5cGUgPT09ICdDbHVzdGVycycpIHtcclxuICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9ybS5nZXQoJ3N0b3JlTGlzdCcpPy5zZXRWYWx1ZShyZXM/LmRhdGE/LnN0b3Jlc0RldGFpbHMpXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmdhbGxlcnlGb3JtLmdldCgndXNlckxpc3QnKT8uc2V0VmFsdWUocmVzPy5kYXRhPy5zdG9yZXNEZXRhaWxzKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy52aWV3Q2hlY2tsaXN0cyhcImFsbFwiLCBcImFsbFwiKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmNoZWNrbGlzdERhdGEgPSBbXTtcclxuICAgICAgICAgIHRoaXMudmlld0NoZWNrbGlzdHNEYXRhID0gW107XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMudmlld2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudmlld25vRGF0YSA9IHRydWU7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgfVxyXG4gIGNhdGVnb3J5Q2hhbmdlKCkge1xyXG4gICAgdGhpcy5jdXN0b21lcnVuYXR0ZW5kZWRsaXN0KGZhbHNlKVxyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZCgnem9vbVBvcHVwJykgem9vbVBvcHVwOiBFbGVtZW50UmVmO1xyXG4gICBvcGVuTW9kZWwoZGF0YTphbnkpe1xyXG4gICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih0aGlzLnpvb21Qb3B1cCx7IGNlbnRlcmVkOiB0cnVlLCBzaXplOiAneGwnIH0pO1xyXG4gICAgIHRoaXMudmlld0ltYWdlID0gZGF0YTt9XHJcbiAgfSIsIjxkaXYgY2xhc3M9XCJnYWxsZXJ5LWNhcmQgcG9cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXIgbWItNFwiPkdhbGxlcnk8L2Rpdj5cclxuXHJcbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImdhbGxlcnlGb3JtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cInRvcDogMjAlO1wiIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMSBwb3NpdGlvbi1hYnNvbHV0ZSBtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEzLjMzMzMgMS42NjY2M1Y0Ljk5OTk2TTYuNjY2NjcgMS42NjY2M1Y0Ljk5OTk2TTIuNSA4LjMzMzI5SDE3LjVNNC4xNjY2NyAzLjMzMzI5SDE1LjgzMzNDMTYuNzUzOCAzLjMzMzI5IDE3LjUgNC4wNzk0OCAxNy41IDQuOTk5OTZWMTYuNjY2NkMxNy41IDE3LjU4NzEgMTYuNzUzOCAxOC4zMzMzIDE1LjgzMzMgMTguMzMzM0g0LjE2NjY3QzMuMjQ2MTkgMTguMzMzMyAyLjUgMTcuNTg3MSAyLjUgMTYuNjY2NlY0Ljk5OTk2QzIuNSA0LjA3OTQ4IDMuMjQ2MTkgMy4zMzMyOSA0LjE2NjY3IDMuMzMzMjlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmeC1kYXRlLXJhbmdlIGZvcm0tY29udHJvbCBwcy0xNCB6LTJcIiBzdHlsZT1cIm1pbi13aWR0aDogMjYwcHggIWltcG9ydGFudDtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgbmd4RGF0ZXJhbmdlcGlja2VyTWQgIFtkcm9wc109XCInZG93bidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcGVuc109XCIncmlnaHQnXCIgW2Fsd2F5c1Nob3dDYWxlbmRhcnNdPVwiZmFsc2VcIiBba2VlcENhbGVuZGFyT3BlbmluZ1dpdGhSYW5nZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0NhbmNlbF09XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWREYXRlUmFuZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIiAgKGRhdGVzVXBkYXRlZCk9XCJkYXRlY2hhbmdlKCRldmVudClcIiAoY2xpY2spPVwicmVzZXRWYWxpZGF0aW9uKClcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RhcnREYXRlQ2hhbmdlZCk9XCJvblN0YXJ0RGF0ZUNoYW5nZSgkZXZlbnQpXCIgW2lzQ3VzdG9tRGF0ZV09XCJpc0N1c3RvbURhdGVcIiBbYXV0b0FwcGx5XT1cInRydWVcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbG9jYWxlXT1cInsgZm9ybWF0OiAnREQtTU0tWVlZWScsIGZpcnN0RGF5OiAxLCBtb250aE5hbWVzOiBbJ0phbnVhcnknLCAnRmVicnVhcnknLCAnTWFyY2gnLCAnQXByaWwnLCAnTWF5JywgJ0p1bmUnLCAnSnVseScsICdBdWd1c3QnLCAnU2VwdGVtYmVyJywgJ09jdG9iZXInLCAnTm92ZW1iZXInLCAnRGVjZW1iZXInXSB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImRhdGVyYW5nZVwiIFtyZWFkb25seV09XCJ0cnVlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yIG1iLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1yZWFjdGl2ZS1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwidHlwZVwiIFtpZEZpZWxkXT1cIid2YWx1ZSdcIiBbbmFtZUZpZWxkXT1cIidsYWJlbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFdPVwidHlwZVwiIChpdGVtQ2hhbmdlKT1cInR5cGVDaGFuZ2UoJGV2ZW50KVwiID48L2xpYi1yZWFjdGl2ZS1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IG1iLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1zaW5nbGUtc2VsZWN0IFtpdGVtc109XCJjaGVja2xpc3RzXCIgIFttdWx0aV09XCJmYWxzZVwiIFtzZWFyY2hGaWVsZF09XCInY2hlY2tMaXN0TmFtZSdcIiBbaWRGaWVsZF09XCInY2hlY2tMaXN0TmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkKT1cImNoZWNrbGlzdE5hbWVjaGFuZ2UoJGV2ZW50LGZhbHNlKVwiIFtzZWxlY3RlZFZhbHVlc109XCJbe2NoZWNrTGlzdE5hbWU6Z2FsbGVyeUZvcm0uZ2V0KCdjaGVja2xpc3ROYW1lJyk/LnZhbHVlfV1cIj48L2xpYi1zaW5nbGUtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLXJlYWN0aXZlLXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJhbnN3ZXJUeXBlXCIgW2lkRmllbGRdPVwiJ3ZhbHVlJ1wiIFtuYW1lRmllbGRdPVwiJ2xhYmVsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJhbnN3ZXJUeXBlXCI+PC9saWItcmVhY3RpdmUtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMiBtYi00XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLXJlYWN0aXZlLXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJmaWx0ZXJ0eXBlXCIgW2lkRmllbGRdPVwiJ3ZhbHVlJ1wiIFtuYW1lRmllbGRdPVwiJ2xhYmVsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhXT1cImZpbHRlcnR5cGVcIiAoaXRlbUNoYW5nZSk9XCJmaWx0ZXJDaGFuZ2UoJGV2ZW50KVwiID48L2xpYi1yZWFjdGl2ZS1zZWxlY3Q+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBtYi00XCIgKm5nSWY9XCJnYWxsZXJ5Rm9ybS5nZXQoJ2ZpbHRlcnR5cGUnKT8udmFsdWUgPT09J0NsdXN0ZXJzJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwbGFjZWhvbGRlci1vdmVybGF5XCIgKm5nSWY9XCIhKGdhbGxlcnlGb3JtLmdldCgnQ2x1c3Rlckxpc3QnKT8udmFsdWU/Lmxlbmd0aClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IGNsdXN0ZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1ncm91cC1zZWxlY3QgW2l0ZW1zXT1cIkNsdXN0ZXJMaXN0XCIgW2Rpc2FibGVkXT1cImZhbHNlXCIgW211bHRpXT1cInRydWVcIiBbc2VhcmNoRmllbGRdPVwiJ2dyb3VwTmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZEZpZWxkXT1cIidncm91cE5hbWUnXCIgKHNlbGVjdGVkKT1cIm9uZ3JvdXBTZWxlY3QoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkVmFsdWVzXT1cImdhbGxlcnlGb3JtLmdldCgnQ2x1c3Rlckxpc3QnKT8udmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGliLWdyb3VwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgbWItNFwiICpuZ0lmPVwiZ2FsbGVyeUZvcm0uZ2V0KCdmaWx0ZXJ0eXBlJyk/LnZhbHVlID09PSdUZWFtcydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGxhY2Vob2xkZXItb3ZlcmxheVwiICpuZ0lmPVwiIShnYWxsZXJ5Rm9ybS5nZXQoJ1RlYW1zTGlzdCcpPy52YWx1ZT8ubGVuZ3RoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgVGVhbXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1ncm91cC1zZWxlY3QgW2l0ZW1zXT1cIlRlYW1zTGlzdFwiIFtkaXNhYmxlZF09XCJmYWxzZVwiIFttdWx0aV09XCJ0cnVlXCIgW3NlYXJjaEZpZWxkXT1cIid0ZWFtTmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZEZpZWxkXT1cIid0ZWFtTmFtZSdcIiAoc2VsZWN0ZWQpPVwib25UZWFtc1NlbGVjdCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRWYWx1ZXNdPVwiZ2FsbGVyeUZvcm0uZ2V0KCdUZWFtc0xpc3QnKT8udmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGliLWdyb3VwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgbWItNFwiICpuZ0lmPVwiZ2FsbGVyeUZvcm0uZ2V0KCdmaWx0ZXJ0eXBlJyk/LnZhbHVlID09PSdDbHVzdGVycydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwbGFjZWhvbGRlci1vdmVybGF5XCIgKm5nSWY9XCIhKGdhbGxlcnlGb3JtLmdldCgnc3RvcmVMaXN0Jyk/LnZhbHVlPy5sZW5ndGgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgU3RvcmVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItc3RvcmVzLXNlbGVjdCBbaXRlbXNdPVwic3RvcmVMaXN0XCIgW2Rpc2FibGVkXT1cImZhbHNlXCIgW211bHRpXT1cInRydWVcIiBbc2VhcmNoRmllbGRdPVwiJ3N0b3JlTmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkRmllbGRdPVwiJ3N0b3JlSWQnXCIgKHNlbGVjdGVkKT1cIm9uU3RvcmVTZWxlY3QoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRWYWx1ZXNdPVwiZ2FsbGVyeUZvcm0uZ2V0KCdzdG9yZUxpc3QnKT8udmFsdWVcIj48L2xpYi1zdG9yZXMtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIG1iLTRcIiAqbmdJZj1cImdhbGxlcnlGb3JtLmdldCgnZmlsdGVydHlwZScpPy52YWx1ZSA9PT0nVGVhbXMnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Qtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGxhY2Vob2xkZXItb3ZlcmxheVwiICpuZ0lmPVwiIShnYWxsZXJ5Rm9ybS5nZXQoJ3VzZXJMaXN0Jyk/LnZhbHVlPy5sZW5ndGgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgdXNlcnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1zdG9yZXMtc2VsZWN0IFtpdGVtc109XCJ1c2VyTGlzdFwiIFtkaXNhYmxlZF09XCJmYWxzZVwiIFttdWx0aV09XCJ0cnVlXCIgW3NlYXJjaEZpZWxkXT1cIid1c2VyTmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkRmllbGRdPVwiJ3VzZXJOYW1lJ1wiIChzZWxlY3RlZCk9XCJvblVzZXJTZWxlY3QoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRWYWx1ZXNdPVwiZ2FsbGVyeUZvcm0uZ2V0KCd1c2VyTGlzdCcpPy52YWx1ZVwiPjwvbGliLXN0b3Jlcy1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgdGV4dC1lbmRcIj4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZS01IHctMTAwXCIgKm5nSWY9XCJzZWxlY3QgPT0gJ2V5ZXRlc3QnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgWyhuZ01vZGVsKV09XCJjYXRlZ29yeVwiIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhbGxcIj5BbGw8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZHVsdHNcIj5BZHVsdHM8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJraWRzXCI+S2lkczwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lLTUgdy0xMDBcIiAqbmdJZj1cInNlbGVjdCA9PSAnY2xlYW5pbmcnfHxzZWxlY3QgPT09J3NjcnVtJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdFwiIFsobmdNb2RlbCldPVwiY2F0ZWdvcnlcIiBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWxsXCI+QWxsPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwicmVqZWN0ZWRcIj5CcmVhY2hlZDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFwcHJvdmVkXCI+Tm90LWJyZWFjaGVkPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWUtNSB3LTEwMCB0ZXh0LXN0YXJ0XCIgKm5nSWY9XCJzZWxlY3QgPT0gJ3F1ZXVlYWxlcnQnXCI+ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Qtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwbGFjZWhvbGRlci1vdmVybGF5XCIgKm5nSWY9XCIhKGdhbGxlcnlGb3JtLmdldCgnem9uZUxpc3QnKT8udmFsdWU/Lmxlbmd0aClcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCBab25lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1zdG9yZXMtc2VsZWN0IFtpdGVtc109XCJ6b25lTGlzdFwiIFtkaXNhYmxlZF09XCJmYWxzZVwiIFttdWx0aV09XCJ0cnVlXCIgW3NlYXJjaEZpZWxkXT1cIid2YWx1ZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZEZpZWxkXT1cIidrZXknXCIgKHNlbGVjdGVkKT1cIm9uem9uZVNlbGVjdCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRWYWx1ZXNdPVwiZ2FsbGVyeUZvcm0uZ2V0KCd6b25lTGlzdCcpPy52YWx1ZVwiPjwvbGliLXN0b3Jlcy1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTQgbXQtM1wiICpuZ0lmPVwic2hvd2ZsYWdcIj4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJ2aWV3UmVkb1wiICBjaGFuZ2UgdHlwZT1cImNoZWNrYm94XCIgKGNsaWNrKT1cInJlZG9DaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlciBtdC0xIG1lLTJcIiBpZD1cInZpZXdSZWRvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjaGVja2JveC1sYWJlbFwiIGZvcj1cInZpZXdSZWRvXCI+VmlldyBSZS1kb+KAmXMgb25seTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWUtMyBtdC0zXCIgKm5nSWY9XCJzaG93ZmxhZyYmZ2FsbGVyeUZvcm0udmFsdWUudHlwZT09J2NoZWNrbGlzdCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJ2aWV3RmxhZ1wiICBjaGFuZ2UgdHlwZT1cImNoZWNrYm94XCIgKGNsaWNrKT1cImZsYWdDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyIG10LTEgbWUtMlwiIGlkPVwidmlld0ZsYWdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsICBjbGFzcz1cImNoZWNrYm94LWxhYmVsXCIgZm9yPVwidmlld0ZsYWdcIj5WaWV3IGZsYWdnZWQgb25seTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgKGNsaWNrKT1cIm9uU3VibWl0KClcIiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcHgtNCBcIj48c3Bhbj5BcHBseTwvc3Bhbj48L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgXHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9mb3JtPlxyXG48L2Rpdj5cclxuPGRpdiBjbGFzcz1cImNhcmQgbXktMlwiPlxyXG48ZGl2IGNsYXNzPVwicm93IG1haW4tY29udGFpbmVyIG15LTUgXCI+XHJcbiAgICBcclxuICAgIDxkaXYgW25nQ2xhc3NdPVwic2hvd3NpZGVuYXYgPyAnY29sLW1kLTQgbGVmdC1zaWRlYmFyJzonZC1ub25lJ1wiIGNsYXNzPVwiaC02NTBweFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZSBoLTY1MHB4IHNjcm9sbC15XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC01XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tsaXN0LWxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrbGlzdC10aXRsZVwiPnt7Y2hlY2tsaXN0TmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrbGlzdC10ZXh0XCI+e3tjaGVja0xpc3REZXNjcmlwdGlvbn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJsb2FkaW5nXCIgY2xhc3M9XCJyb3cgbG9hZGVyICBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJub0RhdGFcIiBjbGFzcz1cInJvdyBtdC0yMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbXQtMjAgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cInctNTAgaC0zMDBweFwiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXRpdGxlIG10LTBcIj5ObyBkYXRhIGZvdW5kPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXN1YlwiPlRoZXJlIGlzIG5vIHJlc3VsdCBmb3IgdGhpcyBjaGVja2xpc3Q8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxzZWN0aW9uICpuZ0lmPVwiIW5vRGF0YSAmJiAhbG9hZGluZ1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ID09PSAnY3VzdG9tJ3x8c2VsZWN0ID09PSAndGFzaydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZW5kIG10LTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgdy0yNSBtZS0zIGJ0bi1yZXNpemVcIiAoY2xpY2spPVwidmlld0NoZWNrbGlzdHMoKVwiPiBSZXNldCA8L2J1dHRvbj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHctMjUgbWUtMyBidG4tcmVzaXplXCIgKm5nSWY9XCJzZWxlY3RlZFNlY3Rpb24ubGVuZ3RoPjB8fHRlbXBzZWxlY3RlZFNlY3Rpb24ubGVuZ3RoPjBcIiAoY2xpY2spPVwib25jaGVja2xpc3RyZXNldCgpXCI+IFJlc2V0IDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNlbGVjdGVkU2VjdGlvbi5sZW5ndGg+MHx8dGVtcHNlbGVjdGVkU2VjdGlvbi5sZW5ndGg+MFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMjUgIGJ0bi1yZXNpemVcIiAoY2xpY2spPVwic2VsZWN0c2luZ2xlcXVlc3Rpb24oKVwiPkFwcGx5PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS02XCIgIFtuZ0NsYXNzXT1cInNlbGVjdGVkU2VjdGlvbi5sZW5ndGg9PTAgPyAndmlldy1hbGwnOid2aWV3LXF1ZXN0aW9ucydcIiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIiAoY2xpY2spPVwib25jaGVja2xpc3RyZXNldCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaWV3IEFsbCBBbnN3ZXJzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMlwiICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIGNoZWNrbGlzdERhdGE7IGxldCBpPWluZGV4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtNFwiIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjY29yZGlhbihpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy00IGZ3LWJvbGQgc2VjdGlvblwiICpuZ0lmPVwiZ2FsbGVyeUZvcm0udmFsdWUudHlwZT09J2NoZWNrbGlzdCdcIiA+e3tzZWN0aW9uLnNlY3Rpb25OYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aHIgY2xhc3M9XCJteC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIFtuZ0NsYXNzXT1cInsncm90YXRlJyA6IHNob3cgIT09IGl9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI1XCIgaGVpZ2h0PVwiMjVcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk01IDcuNUwxMCAxMi41TDE1IDcuNVwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93PT09aVwiIGNsYXNzPVwicXVlc3Rpb24tbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2RrRHJvcExpc3QgW2Nka0Ryb3BMaXN0RGF0YV09XCJzZWN0aW9uLnF1ZXN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBxdWVzdGlvbiBvZiBzZWN0aW9uLnF1ZXN0aW9ucztsZXQgaj1pbmRleDtcIiBjbGFzcz1cImQtZmxleCBteS0yIHEtYnRuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNka0RyYWc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgIGlkPVwibGFiZWxcIiBbKG5nTW9kZWwpXT1cInF1ZXN0aW9uLmNoZWNrZWRcIiAoY2xpY2spPVwic2VsZWN0ZWRRdWVzdGlvbigkZXZlbnQsc2VjdGlvbixxdWVzdGlvbilcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXIgbXQtMiBtZS00XCIgIHR5cGU9XCJjaGVja2JveFwiID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVkaXRhYmxlY29udGVudFwiIFtuZ0NsYXNzXT1cInF1ZXN0aW9uPy5jaGVja2VkID8gJ3ZpZXctYWxsJzonJ1wiIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7cXVlc3Rpb24ucW5vfX0gLiB7e3F1ZXN0aW9uLnFuYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8L2Rpdj4gIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbWJpbmVkQ2hlY2tsaXN0LmluY2x1ZGVzKHNlbGVjdClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1lbmQgbXQtMTBcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgdy0yNSBtZS0zIGJ0bi1yZXNpemVcIiAoY2xpY2spPVwib25yZXNldCgpXCI+IFJlc2V0IDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB3LTI1ICBidG4tcmVzaXplXCIgKGNsaWNrKT1cIm9udmlldygpXCI+QXBwbHk8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd25zZWxlY3QgaC05MDBweCBzY3JvbGwteVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1sZWZ0IFwiIFtuZ0NsYXNzXT1cInNlbGVjdEFsbCA/ICdiYWNrZ3JvdW5kQm9yZGVyJzond2l0aG91dGJhY2tncm91bmQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlciBtZS00XCIgdHlwZT1cImNoZWNrYm94XCIgIFsobmdNb2RlbCldPVwic2VsZWN0QWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RBbGxTdG9yZSgkZXZlbnQpXCI+IDxzcGFuIFtuZ0NsYXNzXT1cInNlbGVjdEFsbCA/ICd1c2FnZS1kZXRlY3Rpb24nOid1c2FnZS10ZXh0J1wiPlNlbGVjdCBBbGw8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGRyb3Bkb3duYmcgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS00XCIgKm5nRm9yPVwibGV0IGxpc3Qgb2YgbW9iaWxldXNhZ2VEYXRhTGlzdDtsZXQgaT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2hhbmdlKT1cInVwZGF0ZUNoZWNrKCRldmVudCxsaXN0KVwiIFtuZ0NsYXNzXT1cImxpc3QuY2hlY2tlZCA/ICdiYWNrZ3JvdW5kQm9yZGVyJzond2l0aG91dGJhY2tncm91bmQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwibGFiZWx7e2l9fVwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlciBtZS00XCIgIHR5cGU9XCJjaGVja2JveFwiIFsobmdNb2RlbCldPVwibGlzdC5jaGVja2VkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImxhYmVse3tpfX1cIiBbbmdDbGFzc109XCJsaXN0LmNoZWNrZWQgPyAndXNhZ2UtZGV0ZWN0aW9uJzondXNhZ2UtdGV4dCdcIiA+e3tsaXN0Py5zdG9yZU5hbWV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1wcmltYXJ5IGRldGVjdGlvbnJpZ2h0XCIgKm5nSWY9XCJsaXN0LmRldGVjdGlvblwiPnt7bGlzdC5kZXRlY3Rpb259fSBEZXRlY3Rpb25zPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG5cclxuICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93c2lkZW5hdlwiIChjbGljayk9XCJzaWRlbmF2KClcIiBjbGFzcz1cImJhY2tCdXR0b25yaWdodCB0ZXh0LWNlbnRlciBwdC0xIGN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI4XCIgaGVpZ2h0PVwiMjhcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExIDE3TDYgMTJMMTEgN00xOCAxN0wxMyAxMkwxOCA3XCIgc3Ryb2tlPVwiIzEwMTgyOFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IFtuZ0NsYXNzXT1cInNob3dzaWRlbmF2ID8gJ2NvbC1tZC04IGJvcmRlciBib3JkZXItYm90dG9tLTAgYm9yZGVyLXRvcC0wIGJvcmRlci1sZWZ0IGJvcmRlci01IHJpZ2h0LXNpZGViYXInOidjb2wtbWQtMTInXCIgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZSBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wICBweC0wIG15LTBcIiAqbmdJZj1cIihzZWxlY3QgPT09ICdjdXN0b20nIHx8IHNlbGVjdCA9PT0gJ3Rhc2snfHxzZWxlY3QgPT0gJ2NsZWFuaW5nJ3x8c2VsZWN0ID09PSdzY3J1bSd8fHNlbGVjdCA9PT0nc3RvcmVvcGVuYW5kY2xvc2UnKSAmJiAhdmlld2xvYWRpbmcgJiYgIXZpZXdub0RhdGFcIiA+XHJcbiAgICAgICAgICAgICAgICA8aDM+PC9oMz5cclxuICAgICAgICAgICAgICAgIDwhLS0gU3dpdGNoIHRvZ2dsZSAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIiAqbmdJZj1cIiFnYWxsZXJ5Rm9ybS52YWx1ZS52aWV3UmVkb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZSBjdXJzb3ItcG9pbnRlciBtZS0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIGJ0biBidG4tcHJpbWFyeSBmb3JtLWNvbnRyb2wgbm8tdGV4dC10cmFuc2Zvcm1cIiAoY2xpY2spPVwiZXhwb3J0RGV0KCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBleHBvcnRMYWJlbCB9fSA8IS0tIEJpbmQgbGFiZWwgdGV4dCBoZXJlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImV4cG9ydFNob3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhcmQgcHktMiAgcG9zaXRpb24tYWJzb2x1dGUgcHJvZHVjdGRyb3AgdG9wLTEwIHctMTUwcHggZW5kLTAgei0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3QtdW5zdHlsZWQgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImN1cnNvci1wb2ludGVyIHB5LTQgY2hlY2tib3gtbGFiZWwgbXgtMlwiICAqbmdJZj1cIihzZWxlY3QgPT09ICdjdXN0b20nIHx8IHNlbGVjdCA9PT0gJ3Rhc2snfHxzZWxlY3QgPT09J3N0b3Jlb3BlbmFuZGNsb3NlJylcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNldEV4cG9ydEFzUFBUKCdFeHBvcnQgYXMgUERGJywncGRmJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4cG9ydCBhcyBQREZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIiBjdXJzb3ItcG9pbnRlciBjaGVja2JveC1sYWJlbCBweS00IG14LTJcIiAqbmdJZj1cIihzZWxlY3QgPT09ICdjdXN0b20nIHx8IHNlbGVjdCA9PT0gJ3Rhc2snfHxzZWxlY3QgPT0gJ2NsZWFuaW5nJ3x8c2VsZWN0ID09PSdzY3J1bSd8fHNlbGVjdCA9PT0nc3RvcmVvcGVuYW5kY2xvc2UnKVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic2V0RXhwb3J0QXNQUFQoJ0V4cG9ydCBhcyBDU1YnLCdjc3YnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhwb3J0IGFzIENTVlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwic2VsZWN0ZWRTZWN0aW9uLmxlbmd0aD4wfHxzZWxlY3QgPT0gJ2NsZWFuaW5nJ3x8c2VsZWN0ID09PSdzY3J1bSd8fHNlbGVjdCA9PT0nc3RvcmVvcGVuYW5kY2xvc2UnXCIgY2xhc3M9XCIgY3Vyc29yLXBvaW50ZXIgY2hlY2tib3gtbGFiZWwgcHktNCAgbXgtMlwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic2V0RXhwb3J0QXNQUFQoJ0V4cG9ydCBhcyBQUFQnLCdwcHQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhwb3J0IGFzIFBQVFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwic2VsZWN0ZWRTZWN0aW9uLmxlbmd0aD4wfHxzZWxlY3QgPT0gJ2NsZWFuaW5nJ3x8c2VsZWN0ID09PSdzY3J1bSd8fHNlbGVjdCA9PT0nc3RvcmVvcGVuYW5kY2xvc2UnXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBjaGVja2JveC1sYWJlbCBweS00IG14LTJcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNldEV4cG9ydEFzUFBUKCdFeHBvcnQgYXMgWklQJywnemlwZmlsZXMnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhwb3J0IGFzIFpJUFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ2aWV3bG9hZGluZ1wiIGNsYXNzPVwicm93IGxvYWRlciAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInZpZXdub0RhdGFcIiBjbGFzcz1cInJvdyBtdC0yMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG10LTIwIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgbXQtMjAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmMgbXQtNSB3LTQwXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXRpdGxlXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtc3ViXCI+VGhlcmUgaXMgbm8gcmVzdWx0IGZvciB0aGlzIGNoZWNrbGlzdDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uICpuZ0lmPVwiIXZpZXdsb2FkaW5nICYmICF2aWV3bm9EYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3Q9PT0nY3VzdG9tJ3x8c2VsZWN0PT09J3Rhc2snIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dzaW5nbGVcIiBjbGFzcz1cInFhLWhlYWRpbmcgbS0zIG14LTExXCI+e3t0aGlzLnNlbGVjdGVkU2VjdGlvblswXT8ucXVlc3Rpb25zWzBdfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93c2luZ2xlJiZzaG93ZmlsdGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJuYXYgbmF2LXN0cmV0Y2ggbmF2LWxpbmUtdGFiczEgbmF2LWxpbmUtdGFicyBib3JkZXItdHJhbnNwYXJlbnQgZmxleC1ub3dyYXAgbXgtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBhbnN3ZXJGaWx0ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgKGNsaWNrKT1cInRhc2tUYWIoaXRlbSlcIiBbbmdDbGFzc109XCJnYWxsZXJ5Rm9ybS52YWx1ZS5maWx0ZXIgPT09IGl0ZW0ua2V5ID8gJ2FjdGl2ZScgOiAnJ1wiIGNsYXNzPVwibmF2LWxpbmsgY3Vyc29yLXBvaW50ZXIgbm8tYm9yZGVyIG1lLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbS5rZXl9fTxzcGFuIGNsYXNzPVwibXgtMiBcIiBbbmdDbGFzc109XCJnYWxsZXJ5Rm9ybS52YWx1ZS5maWx0ZXIgPT09IGl0ZW0ua2V5ID8gJ2JhZGdlLW51bS1wcmltYXJ5JyA6J2JhZGdlLW51bS1tdXRlZCdcIj57e2l0ZW0uY291bnR9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY2hlY2tsaXN0IG9mIHZpZXdDaGVja2xpc3RzRGF0YT8uY2hlY2tsaXN0QW5zd2Vyc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiICpuZ0lmPVwiY2xpZW50RGF0YS5sb2dvJiZjbGllbnREYXRhLmxvZ28hPT0nJyYmc2hvd211bHRpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJtdC01IG1iLTMgdGV4dC1jZW50ZXIgaWNvbnNpemVcIiBzcmM9XCJ7e2NsaWVudERhdGEubG9nb319XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtMTAgbXQtNVwiICpuZ0lmPVwic2hvd211bHRpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwidW5pLXRpdGxlXCI+U3RvcmUgTmFtZTo8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC05XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInVuaS1zdWJ0aXRsZVwiPnt7Y2hlY2tsaXN0Py5zdG9yZVByb2ZpbGU/LnN0b3JlTmFtZX19IDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwidW5pLXRpdGxlXCIgKm5nSWY9XCJnYWxsZXJ5Rm9ybS52YWx1ZS50eXBlPT09J2NoZWNrbGlzdCdcIj5DaGVja2xpc3QgTmFtZTo8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwidW5pLXRpdGxlXCIgKm5nSWY9XCJnYWxsZXJ5Rm9ybS52YWx1ZS50eXBlPT09J3Rhc2snXCI+VGFzayBOYW1lOjwvaDM+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC05XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInVuaS1zdWJ0aXRsZVwiPnt7Y2hlY2tsaXN0Py5jaGVja2xpc3RJbmZvPy5jaGVja2xpc3ROYW1lfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInVuaS10aXRsZVwiPlN0YXRlICYgQ291bnRyeSA6PC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ1bmktc3VidGl0bGVcIj57e2NoZWNrbGlzdD8uc3RvcmVQcm9maWxlPy5zdGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y2hlY2tsaXN0Py5zdG9yZVByb2ZpbGU/LkNvdW50cnl9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwidW5pLXRpdGxlXCI+RHVyYXRpb24gOjwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidW5pLXN1YnRpdGxlXCI+IHt7Y2hlY2tsaXN0Py5jaGVja2xpc3RJbmZvPy5kdXJhdGlvbn19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJ1bmktdGl0bGVcIj5Oby4gb2YgUXVlc3Rpb25zIDo8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInVuaS1zdWJ0aXRsZVwiPnt7Y2hlY2tsaXN0Py5jaGVja2xpc3RJbmZvPy5ub29mUXVlc3Rpb25zfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInVuaS10aXRsZVwiPkRhdGUgOjwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidW5pLXN1YnRpdGxlXCI+IHt7Y2hlY2tsaXN0Py5jaGVja2xpc3RJbmZvPy5kYXRlfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInVuaS10aXRsZVwiPlN1Ym1pdHRlZCBCeSA6PC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ1bmktc3VidGl0bGVcIj57e2NoZWNrbGlzdD8uY2hlY2tsaXN0SW5mbz8uc3VibWl0dGVkQnl9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwidW5pLXRpdGxlXCI+VGltZSA6PC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ1bmktc3VidGl0bGVcIj4ge3tjaGVja2xpc3Q/LmNoZWNrbGlzdEluZm8/LnRpbWV9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBweC0xMFwiID5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHF1ZXN0aW9ubGlzdCBvZiBjaGVja2xpc3QucXVlc3Rpb25BbnN3ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxYS1ib2RyZXIgbXktNVwiICpuZ0Zvcj1cImxldCBxdWVzdGlvbiBvZiBxdWVzdGlvbmxpc3QucXVlc3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwicXVlc3Rpb24ucmVkb3x8cXVlc3Rpb24ucmVkbz09PWZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2aWV3LWRldGFpbCBjb2wtMTIgdGV4dC1lbmQgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiVmlld0luRGV0YWlscyhxdWVzdGlvbixjaGVja2xpc3Q/LmNoZWNrbGlzdEluZm8sY2hlY2tsaXN0Py5zdG9yZVByb2ZpbGUscXVlc3Rpb25saXN0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlldyBpbiBkZXRhaWwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNSAxMC44MzMzVjE1LjgzMzNDMTUgMTYuMjc1NCAxNC44MjQ0IDE2LjY5OTMgMTQuNTExOCAxNy4wMTE4QzE0LjE5OTMgMTcuMzI0NCAxMy43NzU0IDE3LjUgMTMuMzMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjYuNjY2NjdDMi41IDYuMjI0NjQgMi42NzU1OSA1LjgwMDcyIDIuOTg4MTYgNS40ODgxNkMzLjMwMDcyIDUuMTc1NTkgMy43MjQ2NCA1IDQuMTY2NjcgNUg5LjE2NjY3TTEyLjUgMi41SDE3LjVNMTcuNSAyLjVWNy41TTE3LjUgMi41TDguMzMzMzMgMTEuNjY2N1wiIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgdy0xMDAgbS0zXCIgKm5nSWY9XCJzaG93c2luZ2xlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCB0ZXh0LXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NoZWNrbGlzdD8uc3RvcmVQcm9maWxlPy5zdG9yZU5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC04IHRleHQtZW5kIHRpdGxlLWRlc2NyaXB0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdWJtaXR0ZWQgYnkgOiB7e2NoZWNrbGlzdD8uY2hlY2tsaXN0SW5mbz8uc3VibWl0dGVkQnl9fSBPbiA6IHt7Y2hlY2tsaXN0Py5jaGVja2xpc3RJbmZvPy5kYXRlfX0ge3tjaGVja2xpc3Q/LmNoZWNrbGlzdEluZm8/LnRpbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cInNob3dtdWx0aVwiIGNsYXNzPVwicWEtaGVhZGluZ1wiPnt7cXVlc3Rpb24/LnFub319LiB7e3F1ZXN0aW9uPy5xbmFtZX19PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlBhcnRpYWxseSBteS0zIHB4LTVcIiAqbmdJZj1cInF1ZXN0aW9uPy5hbnN3ZXJUeXBlPT09J2Rlc2NyaXB0aXZlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBxdWVzdGlvbi51c2VyQW5zd2VyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJxdWVzdGlvbi5xdWVzdGlvblJlZmVyZW5jZUltYWdlIT09JycmJmdhbGxlcnlGb3JtLnZhbHVlLnR5cGU9PSdjaGVja2xpc3QnJiZxdWVzdGlvbi5xdWVzdGlvblJlZmVyZW5jZUltYWdlIT1udWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1yZWYgbXktM1wiPlJlZmVyZW5jZSBJbWFnZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLWxvZ29cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5UcmF4QW5zd2VyQ0ROfX17e3F1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2V9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZSYmcXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZS5sZW5ndGg+MCYmZ2FsbGVyeUZvcm0udmFsdWUudHlwZT09J3Rhc2snJiZxdWVzdGlvbi5xdWVzdGlvblJlZmVyZW5jZUltYWdlWzBdICE9PSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0mJml0ZW0hPScnJiZpdGVtIT1udWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlLXJlZiBteS0zXCI+UmVmZXJlbmNlIEltYWdlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1sb2dvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5UcmF4QW5zd2VyQ0ROfX17e2l0ZW19fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTJcIiBbbmdDbGFzc109XCJpdGVtLnNvcEZsYWcgPyAnZmxhZ2Nsb3VyJzonJ1wiPnt7aXRlbS5hbnN3ZXJ9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVtYXJrc1R4dFwiICpuZ0lmPVwicXVlc3Rpb24ucmVtYXJrcyE9JydcIj5SZW1hcmtzIDoge3txdWVzdGlvbi5yZW1hcmtzfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlBhcnRpYWxseSBteS0zIHB4LTVcIiAqbmdJZj1cInF1ZXN0aW9uPy5hbnN3ZXJUeXBlPT09J2xpbmVhcnNjYWxlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIHF1ZXN0aW9uLnVzZXJBbnN3ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiZ2FsbGVyeUZvcm0udmFsdWUudHlwZT09J2NoZWNrbGlzdCcmJnF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UhPT0nJyYmcXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZSE9bnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1yZWYgbXktM1wiPlJlZmVyZW5jZSBJbWFnZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFuc3dlckNETn19e3txdWVzdGlvbi5xdWVzdGlvblJlZmVyZW5jZUltYWdlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UmJnF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UubGVuZ3RoPjAmJmdhbGxlcnlGb3JtLnZhbHVlLnR5cGU9PSd0YXNrJyYmcXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZVswXSAhPT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtcmVmIG15LTNcIj5SZWZlcmVuY2UgSW1hZ2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1sb2dvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFuc3dlckNETn19e3tpdGVtfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGJyPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtNFwiIFtuZ0NsYXNzXT1cIml0ZW0uc29wRmxhZyA/ICdmbGFnY2xvdXInOicnXCI+e3tpdGVtLmFuc3dlcn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlbWFya3NUeHRcIiAqbmdJZj1cInF1ZXN0aW9uLnJlbWFya3MhPScnXCI+UmVtYXJrcyA6IHt7cXVlc3Rpb24ucmVtYXJrc319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJQYXJ0aWFsbHkgbXktMyBweC01XCIgKm5nSWY9XCJxdWVzdGlvbj8uYW5zd2VyVHlwZT09PSd0aW1lJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIHF1ZXN0aW9uLnVzZXJBbnN3ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiZ2FsbGVyeUZvcm0udmFsdWUudHlwZT09J2NoZWNrbGlzdCcmJnF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UhPT0nJyYmcXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZSE9bnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1yZWYgbXktM1wiPlJlZmVyZW5jZSBJbWFnZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFuc3dlckNETn19e3txdWVzdGlvbi5xdWVzdGlvblJlZmVyZW5jZUltYWdlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UmJnF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UubGVuZ3RoPjAmJmdhbGxlcnlGb3JtLnZhbHVlLnR5cGU9PSd0YXNrJyYmcXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZVswXSAhPT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtcmVmIG15LTNcIj5SZWZlcmVuY2UgSW1hZ2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1sb2dvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFuc3dlckNETn19e3tpdGVtfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtNFwiIFtuZ0NsYXNzXT1cIml0ZW0uc29wRmxhZyA/ICdmbGFnY2xvdXInOicnXCI+e3tpdGVtLmFuc3dlcn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlbWFya3NUeHRcIiAqbmdJZj1cInF1ZXN0aW9uLnJlbWFya3MhPScnXCI+UmVtYXJrcyA6IHt7cXVlc3Rpb24ucmVtYXJrc319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJQYXJ0aWFsbHkgbXktMyBweC01XCIgKm5nSWY9XCJxdWVzdGlvbj8uYW5zd2VyVHlwZT09PSdkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcXVlc3Rpb24udXNlckFuc3dlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cImdhbGxlcnlGb3JtLnZhbHVlLnR5cGU9PSdjaGVja2xpc3QnJiZxdWVzdGlvbi5xdWVzdGlvblJlZmVyZW5jZUltYWdlIT09JycmJnF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UhPW51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1yZWYgbXktM1wiPlJlZmVyZW5jZSBJbWFnZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1sb2dvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJ7e2Vudmlyb25tZW50LlRyYXhBbnN3ZXJDRE59fXt7cXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi5xdWVzdGlvblJlZmVyZW5jZUltYWdlJiZxdWVzdGlvbi5xdWVzdGlvblJlZmVyZW5jZUltYWdlLmxlbmd0aD4wJiZnYWxsZXJ5Rm9ybS52YWx1ZS50eXBlPT0ndGFzaycmJnF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2VbMF0gIT09ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1yZWYgbXktM1wiPlJlZmVyZW5jZSBJbWFnZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFuc3dlckNETn19e3tpdGVtfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTRcIiBbbmdDbGFzc109XCJpdGVtLnNvcEZsYWcgPyAnZmxhZ2Nsb3VyJzonJ1wiPnt7aXRlbS5hbnN3ZXJ9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlbWFya3NUeHRcIiAqbmdJZj1cInF1ZXN0aW9uLnJlbWFya3MhPScnXCI+UmVtYXJrcyA6IHt7cXVlc3Rpb24ucmVtYXJrc319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiUGFydGlhbGx5IG15LTMgcHgtNVwiICpuZ0lmPVwicXVlc3Rpb24/LmFuc3dlclR5cGU9PT0neWVzL25vJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIHF1ZXN0aW9uLnVzZXJBbnN3ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiZ2FsbGVyeUZvcm0udmFsdWUudHlwZT09J2NoZWNrbGlzdCcmJnF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UhPT0nJyYmcXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZSE9bnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1yZWYgbXktM1wiPlJlZmVyZW5jZSBJbWFnZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFuc3dlckNETn19e3txdWVzdGlvbi5xdWVzdGlvblJlZmVyZW5jZUltYWdlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyICpuZ0lmPVwiZ2FsbGVyeUZvcm0udmFsdWUudHlwZT09J2NoZWNrbGlzdCcmJnF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UhPT0nJyYmcXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZSE9bnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UmJnF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UubGVuZ3RoPjAmJmdhbGxlcnlGb3JtLnZhbHVlLnR5cGU9PSd0YXNrJyYmcXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZVswXSAhPT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtcmVmIG15LTNcIj5SZWZlcmVuY2UgSW1hZ2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1sb2dvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFuc3dlckNETn19e3tpdGVtfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtNFwiIFtuZ0NsYXNzXT1cIml0ZW0uc29wRmxhZyA/ICdmbGFnY2xvdXInOicnXCI+e3tpdGVtLmFuc3dlcn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiaXRlbS52YWxpZGF0aW9uJiZpdGVtLnZhbGlkYXRpb25BbnN3ZXIhPScnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJpdGVtLnJlZmVyZW5jZUltYWdlIT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlLXJlZiBteS0zXCI+UmVmZXJlbmNlIEltYWdlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJ7e2Vudmlyb25tZW50LlRyYXhBbnN3ZXJDRE59fXt7aXRlbS5yZWZlcmVuY2VJbWFnZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1yZWYgbXktM1wiICpuZ0lmPVwiaXRlbS52YWxpZGF0aW9uVHlwZT09J0NhcHR1cmUgSW1hZ2UnfHxpdGVtLnZhbGlkYXRpb25UeXBlPT0nQ2FwdHVyZSBWaWRlbydcIj5WYWxpZGF0aW9uIEFuc3dlcjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiICpuZ0lmPVwiaXRlbS52YWxpZGF0aW9uVHlwZT09J0NhcHR1cmUgSW1hZ2UnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5UcmF4QW5zd2VyQ0ROfX17e2l0ZW0udmFsaWRhdGlvbkFuc3dlcn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2aWRlbyBjb250cm9scyBjbGFzcz1cInJlY2FwLWltZyBwLTNcIiAgKm5nSWY9XCJpdGVtLnZhbGlkYXRpb25UeXBlPT0nQ2FwdHVyZSBWaWRlbydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJ7e2Vudmlyb25tZW50LlRyYXhBbnN3ZXJDRE59fXt7aXRlbS52YWxpZGF0aW9uQW5zd2VyfX1cIj48L3ZpZGVvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlbWFya3NUeHRcIiAqbmdJZj1cIml0ZW0udmFsaWRhdGlvblR5cGU9PSdEZXNjcmlwdGl2ZSBBbnN3ZXInXCI+VmFsaWRhdGlvbiBBbnN3ZXIgOnt7aXRlbS52YWxpZGF0aW9uQW5zd2VyfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZW1hcmtzVHh0XCIgKm5nSWY9XCJxdWVzdGlvbi5yZW1hcmtzIT0nJ1wiPlJlbWFya3MgOiB7e3F1ZXN0aW9uLnJlbWFya3N9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gIFxyXG5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiUGFydGlhbGx5IG15LTMgcHgtNVwiICpuZ0lmPVwicXVlc3Rpb24/LmFuc3dlclR5cGU9PT0nbXVsdGlwbGVjaG9pY2VzaW5nbGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJnYWxsZXJ5Rm9ybS52YWx1ZS50eXBlPT0nY2hlY2tsaXN0JyYmcXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZSE9bnVsbCYmcXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZSE9PScnJiZxdWVzdGlvbi5xdWVzdGlvblJlZmVyZW5jZUltYWdlIT09dW5kZWZpbmVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlLXJlZiBteS0zXCI+UmVmZXJlbmNlIEltYWdlPC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLWxvZ29cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJ7e2Vudmlyb25tZW50LlRyYXhBbnN3ZXJDRE59fXt7cXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UmJnF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UubGVuZ3RoPjAmJmdhbGxlcnlGb3JtLnZhbHVlLnR5cGU9PSd0YXNrJyYmcXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZVswXSAhPT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtcmVmIG15LTNcIj5SZWZlcmVuY2UgSW1hZ2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1sb2dvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFuc3dlckNETn19e3tpdGVtfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcXVlc3Rpb24udXNlckFuc3dlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMlwiIFtuZ0NsYXNzXT1cIml0ZW0uc29wRmxhZyA/ICdmbGFnY2xvdXInOicnXCI+e3tpdGVtLmFuc3dlcn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiaXRlbS5yZWZlcmVuY2VJbWFnZSE9bnVsbCYmaXRlbS5yZWZlcmVuY2VJbWFnZSE9PScnJiZnYWxsZXJ5Rm9ybS52YWx1ZS50eXBlPT0nY2hlY2tsaXN0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtcmVmIG15LTNcIj5SZWZlcmVuY2UgSW1hZ2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1sb2dvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFuc3dlckNETn19e3tpdGVtLnJlZmVyZW5jZUltYWdlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0ucmVmZXJlbmNlSW1hZ2UubGVuZ3RoPjAmJmdhbGxlcnlGb3JtLnZhbHVlLnR5cGU9PSd0YXNrJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtLnJlZmVyZW5jZUltYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtcmVmIG15LTNcIj5SZWZlcmVuY2UgSW1hZ2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5UcmF4QW5zd2VyQ0ROfX17e2l0ZW19fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cIml0ZW0udmFsaWRhdGlvbiYmaXRlbS52YWxpZGF0aW9uQW5zd2VyIT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtcmVmIG15LTNcIiAqbmdJZj1cIml0ZW0udmFsaWRhdGlvblR5cGU9PSdDYXB0dXJlIEltYWdlJ3x8aXRlbS52YWxpZGF0aW9uVHlwZT09J0NhcHR1cmUgVmlkZW8nXCI+VmFsaWRhdGlvbiBBbnN3ZXI8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1sb2dvXCIgKm5nSWY9XCJpdGVtLnZhbGlkYXRpb25UeXBlPT0nQ2FwdHVyZSBJbWFnZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5UcmF4QW5zd2VyQ0ROfX17e2l0ZW0udmFsaWRhdGlvbkFuc3dlcn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2aWRlbyBjb250cm9scyBjbGFzcz1cInJlY2FwLWltZyBwLTNcIiAgKm5nSWY9XCJpdGVtLnZhbGlkYXRpb25UeXBlPT0nQ2FwdHVyZSBWaWRlbydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5UcmF4QW5zd2VyQ0ROfX17e2l0ZW0udmFsaWRhdGlvbkFuc3dlcn19XCI+PC92aWRlbz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS52YWxpZGF0aW9uVHlwZT09J0Rlc2NyaXB0aXZlIEFuc3dlcidcIiBbbmdDbGFzc109XCJpdGVtLnNvcEZsYWcgPyAnZmxhZ2Nsb3VyJzonJ1wiPlZhbGlkYXRpb24gQW5zd2VyIDoge3tpdGVtLnZhbGlkYXRpb25BbnN3ZXJ9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlbWFya3NUeHRcIiAqbmdJZj1cInF1ZXN0aW9uLnJlbWFya3MhPScnXCI+UmVtYXJrcyA6IHt7cXVlc3Rpb24ucmVtYXJrc319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB4LTVcIiAqbmdJZj1cInF1ZXN0aW9uPy5hbnN3ZXJUeXBlPT09J2ltYWdlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYW5zd2VyIG9mIHF1ZXN0aW9uLmFuc3dlcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICBjbGFzcz1cInJvd1wiICpuZ0lmPVwiYW5zd2VyLnJlZmVyZW5jZUltYWdlLmxlbmd0aD4wJiZnYWxsZXJ5Rm9ybS52YWx1ZS50eXBlPT0ndGFzaydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGFuc3dlci5yZWZlcmVuY2VJbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlLXJlZiBteS0zXCI+UmVmZXJlbmNlIEltYWdlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLWxvZ29cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFuc3dlckNETn19e3tpdGVtfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cImdhbGxlcnlGb3JtLnZhbHVlLnR5cGU9PSdjaGVja2xpc3QnJiZhbnN3ZXIucmVmZXJlbmNlSW1hZ2UhPT0nJyYmYW5zd2VyLnJlZmVyZW5jZUltYWdlIT1udWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1yZWYgbXktM1wiPlJlZmVyZW5jZSBJbWFnZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLWxvZ29cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5UcmF4QW5zd2VyQ0ROfX17e2Fuc3dlci5yZWZlcmVuY2VJbWFnZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0Zvcj1cImxldCBpdGVtIG9mIHF1ZXN0aW9uLnVzZXJBbnN3ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiaXRlbS5yZWZlcmVuY2VJbWFnZSE9bnVsbCYmaXRlbS5yZWZlcmVuY2VJbWFnZSE9PScnJiZnYWxsZXJ5Rm9ybS52YWx1ZS50eXBlPT0nY2hlY2tsaXN0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtcmVmIG15LTNcIj5SZWZlcmVuY2UgSW1hZ2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1sb2dvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFuc3dlckNETn19e3tpdGVtLnJlZmVyZW5jZUltYWdlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5yZWZlcmVuY2VJbWFnZS5sZW5ndGg+MCYmZ2FsbGVyeUZvcm0udmFsdWUudHlwZT09J3Rhc2snXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW0ucmVmZXJlbmNlSW1hZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1yZWYgbXktM1wiPlJlZmVyZW5jZSBJbWFnZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1sb2dvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJ7e2Vudmlyb25tZW50LlRyYXhBbnN3ZXJDRE59fXt7aXRlbX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtcmVmIG15LTNcIj5VcGxvYWRlZCBJbWFnZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFuc3dlckNETn19e3tpdGVtLmFuc3dlcn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtdC0yXCIgKm5nSWY9XCJpdGVtLnZhbGlkYXRpb24mJml0ZW0udmFsaWRhdGlvbkFuc3dlciE9JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1yZWYgbXktM1wiICAqbmdJZj1cIml0ZW0udmFsaWRhdGlvblR5cGU9PSdDYXB0dXJlIEltYWdlJ3x8aXRlbS52YWxpZGF0aW9uVHlwZT09J0NhcHR1cmUgVmlkZW8nXCI+VmFsaWRhdGlvbiBBbnN3ZXI8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiICpuZ0lmPVwiaXRlbS52YWxpZGF0aW9uVHlwZT09J0NhcHR1cmUgSW1hZ2UnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFuc3dlckNETn19e3tpdGVtLnZhbGlkYXRpb25BbnN3ZXJ9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2aWRlbyBjb250cm9scyBjbGFzcz1cInJlY2FwLWltZyBwLTNcIiAgKm5nSWY9XCJpdGVtLnZhbGlkYXRpb25UeXBlPT0nQ2FwdHVyZSBWaWRlbydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5UcmF4QW5zd2VyQ0ROfX17e2l0ZW0udmFsaWRhdGlvbkFuc3dlcn19XCI+PC92aWRlbz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS52YWxpZGF0aW9uVHlwZT09J0Rlc2NyaXB0aXZlIEFuc3dlcidcIiBbbmdDbGFzc109XCJpdGVtLnNvcEZsYWcgPyAnZmxhZ2Nsb3VyJzonJ1wiPlZhbGlkYXRpb24gQW5zd2VyIDoge3tpdGVtLnZhbGlkYXRpb25BbnN3ZXJ9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZW1hcmtzVHh0XCIgKm5nSWY9XCJxdWVzdGlvbi5yZW1hcmtzIT0nJ1wiPlJlbWFya3MgOiB7e3F1ZXN0aW9uLnJlbWFya3N9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBweC01XCIgKm5nSWY9XCJxdWVzdGlvbj8uYW5zd2VyVHlwZT09PSdtdWx0aXBsZWNob2ljZW11bHRpcGxlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJnYWxsZXJ5Rm9ybS52YWx1ZS50eXBlPT0nY2hlY2tsaXN0JyYmcXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZSE9PScnJiZxdWVzdGlvbi5xdWVzdGlvblJlZmVyZW5jZUltYWdlIT1udWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlLXJlZiBteS0zXCI+UmVmZXJlbmNlIEltYWdlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1sb2dvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5UcmF4QW5zd2VyQ0ROfX17e3F1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2V9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi5xdWVzdGlvblJlZmVyZW5jZUltYWdlJiZxdWVzdGlvbi5xdWVzdGlvblJlZmVyZW5jZUltYWdlLmxlbmd0aD4wJiZnYWxsZXJ5Rm9ybS52YWx1ZS50eXBlPT0ndGFzaycmJnF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2VbMF0gIT09ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlLXJlZiBteS0zXCI+UmVmZXJlbmNlIEltYWdlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJ7e2Vudmlyb25tZW50LlRyYXhBbnN3ZXJDRE59fXt7aXRlbX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiUGFydGlhbGx5IG15LTMgcHgtNVwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIHF1ZXN0aW9uLnVzZXJBbnN3ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTNcIiBbbmdDbGFzc109XCJpdGVtLnNvcEZsYWcgPyAnZmxhZ2Nsb3VyJzonJ1wiPnt7aXRlbS5hbnN3ZXJ9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cIml0ZW0ucmVmZXJlbmNlSW1hZ2UhPW51bGwmJml0ZW0ucmVmZXJlbmNlSW1hZ2UhPT0nJyYmZ2FsbGVyeUZvcm0udmFsdWUudHlwZT09J2NoZWNrbGlzdCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlLXJlZiBteS0zXCI+UmVmZXJlbmNlIEltYWdlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJ7e2Vudmlyb25tZW50LlRyYXhBbnN3ZXJDRE59fXt7aXRlbS5yZWZlcmVuY2VJbWFnZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLnJlZmVyZW5jZUltYWdlLmxlbmd0aD4wJiZnYWxsZXJ5Rm9ybS52YWx1ZS50eXBlPT0ndGFzaydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbS5yZWZlcmVuY2VJbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlLXJlZiBteS0zXCI+UmVmZXJlbmNlIEltYWdlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLWxvZ29cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFuc3dlckNETn19e3tpdGVtfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG10LTJcIiAqbmdJZj1cIml0ZW0udmFsaWRhdGlvbiYmaXRlbS52YWxpZGF0aW9uQW5zd2VyJiZpdGVtLnZhbGlkYXRpb25BbnN3ZXIhPScnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1yZWYgbXktM1wiICAqbmdJZj1cIml0ZW0udmFsaWRhdGlvblR5cGU9PSdDYXB0dXJlIEltYWdlJ3x8aXRlbS52YWxpZGF0aW9uVHlwZT09J0NhcHR1cmUgVmlkZW8nXCI+VmFsaWRhdGlvbiBBbnN3ZXI8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1sb2dvXCIgKm5nSWY9XCJpdGVtLnZhbGlkYXRpb25UeXBlPT0nQ2FwdHVyZSBJbWFnZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJ7e2Vudmlyb25tZW50LlRyYXhBbnN3ZXJDRE59fXt7aXRlbS52YWxpZGF0aW9uQW5zd2VyfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZpZGVvIGNvbnRyb2xzIGNsYXNzPVwicmVjYXAtaW1nIHAtM1wiICAqbmdJZj1cIml0ZW0udmFsaWRhdGlvblR5cGU9PSdDYXB0dXJlIFZpZGVvJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFuc3dlckNETn19e3tpdGVtLnZhbGlkYXRpb25BbnN3ZXJ9fVwiPjwvdmlkZW8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS52YWxpZGF0aW9uVHlwZT09J0Rlc2NyaXB0aXZlIEFuc3dlcidcIiBbbmdDbGFzc109XCJpdGVtLnNvcEZsYWcgPyAnZmxhZ2Nsb3VyJzonJ1wiPlZhbGlkYXRpb24gQW5zd2VyIDoge3tpdGVtLnZhbGlkYXRpb25BbnN3ZXJ9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVtYXJrc1R4dFwiICpuZ0lmPVwicXVlc3Rpb24ucmVtYXJrcyE9JydcIj5SZW1hcmtzIDoge3txdWVzdGlvbi5yZW1hcmtzfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB4LTVcIiAqbmdJZj1cInF1ZXN0aW9uPy5hbnN3ZXJUeXBlPT09J2Rlc2NyaXB0aXZlSW1hZ2UnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBhbnN3ZXIgb2YgcXVlc3Rpb24uYW5zd2Vyc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgIGNsYXNzPVwicm93XCIgKm5nSWY9XCJhbnN3ZXIucmVmZXJlbmNlSW1hZ2UubGVuZ3RoPjAmJmdhbGxlcnlGb3JtLnZhbHVlLnR5cGU9PSd0YXNrJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgYW5zd2VyLnJlZmVyZW5jZUltYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtcmVmIG15LTNcIj5SZWZlcmVuY2UgSW1hZ2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5UcmF4QW5zd2VyQ0ROfX17e2l0ZW19fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiZ2FsbGVyeUZvcm0udmFsdWUudHlwZT09J2NoZWNrbGlzdCcmJmFuc3dlci5yZWZlcmVuY2VJbWFnZSE9PScnJiZhbnN3ZXIucmVmZXJlbmNlSW1hZ2UhPW51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlLXJlZiBteS0zXCI+UmVmZXJlbmNlIEltYWdlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJ7e2Vudmlyb25tZW50LlRyYXhBbnN3ZXJDRE59fXt7YW5zd2VyLnJlZmVyZW5jZUltYWdlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcXVlc3Rpb24udXNlckFuc3dlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJpdGVtLnJlZmVyZW5jZUltYWdlIT1udWxsJiZpdGVtLnJlZmVyZW5jZUltYWdlIT09JycmJmdhbGxlcnlGb3JtLnZhbHVlLnR5cGU9PSdjaGVja2xpc3QnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1yZWYgbXktM1wiPlJlZmVyZW5jZSBJbWFnZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLWxvZ29cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5UcmF4QW5zd2VyQ0ROfX17e2l0ZW0ucmVmZXJlbmNlSW1hZ2V9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5yZWZlcmVuY2VJbWFnZS5sZW5ndGg+MCYmZ2FsbGVyeUZvcm0udmFsdWUudHlwZT09J3Rhc2snXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtLnJlZmVyZW5jZUltYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlLXJlZiBteS0zXCI+UmVmZXJlbmNlIEltYWdlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1sb2dvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5UcmF4QW5zd2VyQ0ROfX17e2l0ZW19fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlLXJlZiBteS0zXCI+VXBsb2FkZWQgSW1hZ2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5UcmF4QW5zd2VyQ0ROfX17e2l0ZW0uYW5zd2VyfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbXQtM1wiICpuZ0lmPVwiaXRlbS52YWxpZGF0aW9uJiZpdGVtLnZhbGlkYXRpb25BbnN3ZXIhPScnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtcmVmIG15LTNcIiAgKm5nSWY9XCJpdGVtLnZhbGlkYXRpb25UeXBlPT0nQ2FwdHVyZSBJbWFnZSd8fGl0ZW0udmFsaWRhdGlvblR5cGU9PSdDYXB0dXJlIFZpZGVvJ1wiPlZhbGlkYXRpb24gQW5zd2VyPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLWxvZ29cIiAqbmdJZj1cIml0ZW0udmFsaWRhdGlvblR5cGU9PSdDYXB0dXJlIEltYWdlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJ7e2Vudmlyb25tZW50LlRyYXhBbnN3ZXJDRE59fXt7aXRlbS52YWxpZGF0aW9uQW5zd2VyfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmlkZW8gY29udHJvbHMgY2xhc3M9XCJyZWNhcC1pbWcgcC0zXCIgICpuZ0lmPVwiaXRlbS52YWxpZGF0aW9uVHlwZT09J0NhcHR1cmUgVmlkZW8nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFuc3dlckNETn19e3tpdGVtLnZhbGlkYXRpb25BbnN3ZXJ9fVwiPjwvdmlkZW8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJpdGVtLnNvcEZsYWcgPyAnZmxhZ2Nsb3VyJzonJ1wiICpuZ0lmPVwiaXRlbS52YWxpZGF0aW9uVHlwZT09J0Rlc2NyaXB0aXZlIEFuc3dlcidcIj5WYWxpZGF0aW9uIEFuc3dlciA6IHt7aXRlbS52YWxpZGF0aW9uQW5zd2VyfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJQYXJ0aWFsbHkgbXktMyBweC01XCIgKm5nSWY9XCJxdWVzdGlvbi5yZW1hcmtzIT0nJ1wiPnt7cXVlc3Rpb24ucmVtYXJrc319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB4LTVcIiAqbmdJZj1cInF1ZXN0aW9uPy5hbnN3ZXJUeXBlPT09J3ZpZGVvJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UmJnF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UubGVuZ3RoPjAmJmdhbGxlcnlGb3JtLnZhbHVlLnR5cGU9PSd0YXNrJyYmcXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZVswXSAhPT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtcmVmIG15LTNcIj5SZWZlcmVuY2UgSW1hZ2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1sb2dvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFuc3dlckNETn19e3tpdGVtfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiZ2FsbGVyeUZvcm0udmFsdWUudHlwZT09J2NoZWNrbGlzdCcmJnF1ZXN0aW9uLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UhPT0nJyYmcXVlc3Rpb24ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZSE9bnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1yZWYgbXktM1wiPlJlZmVyZW5jZSBJbWFnZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFuc3dlckNETn19e3txdWVzdGlvbi5xdWVzdGlvblJlZmVyZW5jZUltYWdlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcXVlc3Rpb24udXNlckFuc3dlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1yZWYgbXktM1wiPlVwbG9hZGVkIFZpZGVvPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2aWRlbyBjb250cm9scyBjbGFzcz1cInJlY2FwLWltZyBwLTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJ7e2Vudmlyb25tZW50LlRyYXhBbnN3ZXJDRE59fXt7aXRlbS5hbnN3ZXJ9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmlkZW8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZW1hcmtzVHh0XCIgKm5nSWY9XCJxdWVzdGlvbi5yZW1hcmtzIT0nJ1wiPlJlbWFya3MgOiB7e3F1ZXN0aW9uLnJlbWFya3N9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtNVwiICpuZ0lmPVwicXVlc3Rpb24/LmFuc3dlclR5cGU9PT0nbXVsdGlwbGVJbWFnZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGFuc3dlciBvZiBxdWVzdGlvbi5hbnN3ZXJzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICBjbGFzcz1cInJvd1wiICpuZ0lmPVwiYW5zd2VyLnJlZmVyZW5jZUltYWdlLmxlbmd0aD4wJiZnYWxsZXJ5Rm9ybS52YWx1ZS50eXBlPT0ndGFzaydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgYW5zd2VyLnJlZmVyZW5jZUltYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1yZWYgbXktM1wiPlJlZmVyZW5jZSBJbWFnZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLWxvZ29cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5UcmF4QW5zd2VyQ0ROfX17e2l0ZW19fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cImdhbGxlcnlGb3JtLnZhbHVlLnR5cGU9PSdjaGVja2xpc3QnJiZhbnN3ZXIucmVmZXJlbmNlSW1hZ2UhPT0nJyYmYW5zd2VyLnJlZmVyZW5jZUltYWdlIT1udWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlLXJlZiBteS0zXCI+UmVmZXJlbmNlIEltYWdlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1sb2dvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5UcmF4QW5zd2VyQ0ROfX17e2Fuc3dlci5yZWZlcmVuY2VJbWFnZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcXVlc3Rpb24udXNlckFuc3dlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1yZWYgbXktM1wiPlVwbG9hZGVkIEltYWdlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1sb2dvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5UcmF4QW5zd2VyQ0ROfX17e2l0ZW0uYW5zd2VyfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJpdGVtLnZhbGlkYXRpb24mJml0ZW0udmFsaWRhdGlvbkFuc3dlciE9JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1yZWYgbXktM1wiICpuZ0lmPVwiaXRlbS52YWxpZGF0aW9uVHlwZT09J0NhcHR1cmUgSW1hZ2UnfHxpdGVtLnZhbGlkYXRpb25UeXBlPT0nQ2FwdHVyZSBWaWRlbydcIj5WYWxpZGF0aW9uIEFuc3dlcjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1sb2dvXCIgKm5nSWY9XCJpdGVtLnZhbGlkYXRpb25UeXBlPT0nQ2FwdHVyZSBJbWFnZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5UcmF4QW5zd2VyQ0ROfX17e2l0ZW0udmFsaWRhdGlvbkFuc3dlcn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZpZGVvIGNvbnRyb2xzIGNsYXNzPVwicmVjYXAtaW1nIHAtM1wiICAqbmdJZj1cIml0ZW0udmFsaWRhdGlvblR5cGU9PSdDYXB0dXJlIFZpZGVvJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJ7e2Vudmlyb25tZW50LlRyYXhBbnN3ZXJDRE59fXt7aXRlbS52YWxpZGF0aW9uQW5zd2VyfX1cIj48L3ZpZGVvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpdGVtLnZhbGlkYXRpb25UeXBlPT0nRGVzY3JpcHRpdmUgQW5zd2VyJ1wiPlZhbGlkYXRpb24gQW5zd2VyIDoge3tpdGVtLnZhbGlkYXRpb25BbnN3ZXJ9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZW1hcmtzVHh0XCIgKm5nSWY9XCJxdWVzdGlvbi5yZW1hcmtzIT0nJ1wiPlJlbWFya3MgOiB7e3F1ZXN0aW9uLnJlbWFya3N9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiB0ZXh0LXN0YXJ0XCI+ICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnkgcm91bmRlZC1waWxsIG0tMCBwLTJcIiAqbmdJZj1cInF1ZXN0aW9uPy5saW5rVHlwZSYmcXVlc3Rpb24/LmxpbmtxdWVzdGlvbmVuYWJsZWRcIj5MaW5rZWQgdG8gUXVlc3Rpb24ge3txdWVzdGlvbi5wYXJlbnRRdWVzdGlvbn19PC9idXR0b24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgdGV4dC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1kZWZhdWx0IGJvcmRlci1kZWZhdWx0IG1lLTNcIiBbZGlzYWJsZWRdPVwicXVlc3Rpb24ucmVkb1wiICpuZ0lmPVwiY2hlY2t0b2RheURhdGUoY2hlY2tsaXN0Py5jaGVja2xpc3RJbmZvPy5kYXRlKSYmKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlICE9PSAndGFuZ28nJiYhY2hlY2tsaXN0Py5jaGVja2xpc3RJbmZvPy5hcHByb3ZhbFN0YXR1cyYmKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LlRhbmdvVHJheF9jaGVja2xpc3RfaXNFZGl0JiZ0aGlzLmdhbGxlcnlGb3JtLnZhbHVlLnR5cGUgPT0nY2hlY2tsaXN0J1wiIChjbGljayk9XCJhZGRUYXNrKCdyZWRvJyxxdWVzdGlvbixjaGVja2xpc3Q/LmNoZWNrbGlzdEluZm8sY2hlY2tsaXN0Py5zdG9yZVByb2ZpbGUscXVlc3Rpb25saXN0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzYwMDRfMTE3MzQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTkuMTY5MyAzLjMzMzMxVjguMzMzMzJNMTkuMTY5MyA4LjMzMzMySDE0LjE2OTNNMTkuMTY5MyA4LjMzMzMyTDE1LjMwMjYgNC42OTk5OEMxNC40MDcgMy44MDM5MSAxMy4yOTkgMy4xNDkzMiAxMi4wODE5IDIuNzk3MjlDMTAuODY0OSAyLjQ0NTI3IDkuNTc4NTMgMi40MDcyNyA4LjM0Mjg0IDIuNjg2ODZDNy4xMDcxNiAyLjk2NjQ1IDUuOTYyNDQgMy41NTQ1MSA1LjAxNTQ5IDQuMzk2MTZDNC4wNjg1NSA1LjIzNzgyIDMuMzUwMjQgNi4zMDU2NCAyLjkyNzYgNy40OTk5OE0wLjgzNTkzOCAxNi42NjY2VjExLjY2NjZNMC44MzU5MzggMTEuNjY2Nkg1LjgzNTk0TTAuODM1OTM4IDExLjY2NjZMNC43MDI2IDE1LjNDNS41OTgyMyAxNi4xOTYxIDYuNzA2MjUgMTYuODUwNiA3LjkyMzI4IDE3LjIwMjdDOS4xNDAzMSAxNy41NTQ3IDEwLjQyNjcgMTcuNTkyNyAxMS42NjI0IDE3LjMxMzFDMTIuODk4IDE3LjAzMzUgMTQuMDQyOCAxNi40NDU1IDE0Ljk4OTcgMTUuNjAzOEMxNS45MzY3IDE0Ljc2MjEgMTYuNjU1IDEzLjY5NDMgMTcuMDc3NiAxMi41XCIgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzYwMDRfMTE3MzRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTIgZm9udC1kZWZ1bHQtdGFza1wiPlJlZG88L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1kZWZhdWx0IGJvcmRlci1kZWZhdWx0IG1lLTNcIiBbZGlzYWJsZWRdPVwicXVlc3Rpb24ucmVkb1wiICpuZ0lmPVwiY2hlY2t0b2RheURhdGUoY2hlY2tsaXN0Py5jaGVja2xpc3RJbmZvPy5kYXRlKSYmKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlICE9PSAndGFuZ28nJiYhY2hlY2tsaXN0Py5jaGVja2xpc3RJbmZvPy5hcHByb3ZhbFN0YXR1cyYmKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LlRhbmdvVHJheF9UYXNrX2lzRWRpdCYmdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50eXBlPT0ndGFzaydcIiAoY2xpY2spPVwiYWRkVGFzaygncmVkbycscXVlc3Rpb24sY2hlY2tsaXN0Py5jaGVja2xpc3RJbmZvLGNoZWNrbGlzdD8uc3RvcmVQcm9maWxlLHF1ZXN0aW9ubGlzdClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF82MDA0XzExNzM0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE5LjE2OTMgMy4zMzMzMVY4LjMzMzMyTTE5LjE2OTMgOC4zMzMzMkgxNC4xNjkzTTE5LjE2OTMgOC4zMzMzMkwxNS4zMDI2IDQuNjk5OThDMTQuNDA3IDMuODAzOTEgMTMuMjk5IDMuMTQ5MzIgMTIuMDgxOSAyLjc5NzI5QzEwLjg2NDkgMi40NDUyNyA5LjU3ODUzIDIuNDA3MjcgOC4zNDI4NCAyLjY4Njg2QzcuMTA3MTYgMi45NjY0NSA1Ljk2MjQ0IDMuNTU0NTEgNS4wMTU0OSA0LjM5NjE2QzQuMDY4NTUgNS4yMzc4MiAzLjM1MDI0IDYuMzA1NjQgMi45Mjc2IDcuNDk5OThNMC44MzU5MzggMTYuNjY2NlYxMS42NjY2TTAuODM1OTM4IDExLjY2NjZINS44MzU5NE0wLjgzNTkzOCAxMS42NjY2TDQuNzAyNiAxNS4zQzUuNTk4MjMgMTYuMTk2MSA2LjcwNjI1IDE2Ljg1MDYgNy45MjMyOCAxNy4yMDI3QzkuMTQwMzEgMTcuNTU0NyAxMC40MjY3IDE3LjU5MjcgMTEuNjYyNCAxNy4zMTMxQzEyLjg5OCAxNy4wMzM1IDE0LjA0MjggMTYuNDQ1NSAxNC45ODk3IDE1LjYwMzhDMTUuOTM2NyAxNC43NjIxIDE2LjY1NSAxMy42OTQzIDE3LjA3NzYgMTIuNVwiIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF82MDA0XzExNzM0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yIGZvbnQtZGVmdWx0LXRhc2tcIj5SZWRvPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gIGJvcmRlci12YWwxXCIgKm5nSWY9XCIhcXVlc3Rpb24udGFzayYmIXF1ZXN0aW9uLnRhc2tJZCYmdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50eXBlPT0nY2hlY2tsaXN0JyYmKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlICE9PSAndGFuZ28nJiYhY2hlY2tsaXN0Py5jaGVja2xpc3RJbmZvPy5hcHByb3ZhbFN0YXR1cyYmIChncy51c2VyQWNjZXNzIHwgYXN5bmMpPy5UYW5nb1RyYXhfVGFza19pc0VkaXRcIiAoY2xpY2spPVwiYWRkVGFzaygnY3JlYXRldGFzaycscXVlc3Rpb24sY2hlY2tsaXN0Py5jaGVja2xpc3RJbmZvLGNoZWNrbGlzdD8uc3RvcmVQcm9maWxlLHF1ZXN0aW9ubGlzdClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS42NjkzIDEuNjY2NzVINS4wMDI2QzQuNTYwNTggMS42NjY3NSA0LjEzNjY1IDEuODQyMzQgMy44MjQwOSAyLjE1NDlDMy41MTE1MyAyLjQ2NzQ2IDMuMzM1OTQgMi44OTEzOSAzLjMzNTk0IDMuMzMzNDFWMTYuNjY2N0MzLjMzNTk0IDE3LjEwODggMy41MTE1MyAxNy41MzI3IDMuODI0MDkgMTcuODQ1M0M0LjEzNjY1IDE4LjE1NzggNC41NjA1OCAxOC4zMzM0IDUuMDAyNiAxOC4zMzM0SDE1LjAwMjZDMTUuNDQ0NiAxOC4zMzM0IDE1Ljg2ODYgMTguMTU3OCAxNi4xODExIDE3Ljg0NTNDMTYuNDkzNyAxNy41MzI3IDE2LjY2OTMgMTcuMTA4OCAxNi42NjkzIDE2LjY2NjdWNi42NjY3NU0xMS42NjkzIDEuNjY2NzVMMTYuNjY5MyA2LjY2Njc1TTExLjY2OTMgMS42NjY3NVY2LjY2Njc1SDE2LjY2OTNNMTAuMDAyNiAxNS4wMDAxVjEwLjAwMDFNNy41MDI2IDEyLjUwMDFIMTIuNTAyNlwiIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yIGZvbnQtdGFza1wiPkNyZWF0ZSBUYXNrPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicXVlc3Rpb24udGFzayYmcXVlc3Rpb24udGFza0lkICYmdGhpcy5nYWxsZXJ5Rm9ybS52YWx1ZS50eXBlIT09J3Rhc2snXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJvcmRlci12YWwxXCIgKGNsaWNrKT1cInRhc2tyZWRpcmVjdChxdWVzdGlvbixjaGVja2xpc3Q/LnN0b3JlUHJvZmlsZSxjaGVja2xpc3Q/LmNoZWNrbGlzdEluZm8pXCI+PHNwYW4gY2xhc3M9XCJmb250LXRhc2tcIj5WaWV3IFRhc2s8L3NwYW4+PC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMTAgbXktNVwiICpuZ0lmPVwiaW1hZ2VDaGVja2xpc3QuaW5jbHVkZXMoc2VsZWN0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCIgKm5nSWY9XCJjbGllbnREYXRhLmxvZ28mJmNsaWVudERhdGEubG9nbyE9PScnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cIm10LTUgbWItMyB0ZXh0LWNlbnRlciBpY29uc2l6ZVwiIHNyYz1cInt7Y2xpZW50RGF0YS5sb2dvfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDI+Q2hlY2tsaXN0IE5hbWUgOiB7e3RoaXMuY2hlY2tsaXN0TmFtZX19PC9oMj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInFhLWJvZHJlciBteS0zIG10LTVcIiAqbmdGb3I9XCJsZXQgaXRlbSAgb2YgbW9iaWxldXNhZ2VEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwicm93IHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInFhLWhlYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbS5zdG9yZU5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIG15LTJcIiAqbmdGb3I9XCJsZXQgZGV0ZWN0aW9uIG9mIGl0ZW0uaW1hZ2VVcmxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cInctMTAwIGgtNTAwcHggcm91bmRlZC10b3BcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5UcmF4QUljaGVja2xpc3RDRE59fXt7ZGV0ZWN0aW9ufX1cIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIG10LTNcIiA+IHt7dGhpcy5jaGVja2xpc3ROYW1lfX08L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMTAgbXktNVwiICpuZ0lmPVwidmlkZW9DaGVja2xpc3QuaW5jbHVkZXMoc2VsZWN0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCIgKm5nSWY9XCJjbGllbnREYXRhLmxvZ28mJmNsaWVudERhdGEubG9nbyE9PScnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cIm10LTUgbWItMyB0ZXh0LWNlbnRlciBpY29uc2l6ZVwiIHNyYz1cInt7Y2xpZW50RGF0YS5sb2dvfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMyBtdC01XCIgKm5nRm9yPVwibGV0IGl0ZW0gIG9mIGN1c3RvbWVydW5hdHRlbmRlZERhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB4LTEwIG10LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJ1bmktdGl0bGVcIj5DaGVja2xpc3QgTmFtZTo8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC05XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInVuaS1zdWJ0aXRsZVwiPjoge3t0aGlzLmNoZWNrbGlzdE5hbWV9fSA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInVuaS10aXRsZVwiPlN0b3JlIE5hbWU8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC05XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInVuaS1zdWJ0aXRsZVwiPjoge3tpdGVtLnN0b3JlTmFtZX19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cInJvdyB3LTEwMCBtYXJnaW4tdG9wLXNpZGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicWEtaGVhZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiICpuZ0Zvcj1cImxldCBkZXRlY3Rpb24gb2YgaXRlbS5pbWFnZXNEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBweC0xMCBtdC01IG1hcmdpbi1sZWZ0LXNpZGVcIiAqbmdJZj1cInNlbGVjdCE9J3N1c3BpY2lvdXNhY3Rpdml0eSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCIgKm5nSWY9XCJkZXRlY3Rpb24/LkFuc3dlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwidW5pLXRpdGxlXCI+RGV0ZWN0aW9uIFN0YXR1czwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIiAqbmdJZj1cImRldGVjdGlvbj8uQW5zd2VyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInVuaS1zdWJ0aXRsZVwiPjo8c3BhbiBjbGFzcz1cIm1zLTMgYmFkZ2UgYmFkZ2UtbGlnaHQtZGFuZ2VyXCIgKm5nSWY9XCJkZXRlY3Rpb24/LkFuc3dlcj09PSdyZWplY3RlZCdcIj5CcmVhY2hlZDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTMgYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2Vzc1wiICpuZ0lmPVwiZGV0ZWN0aW9uPy5BbnN3ZXI9PT0nYXBwcm92ZWQnXCI+Tm90LWJyZWFjaGVkPC9zcGFuPiA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInVuaS10aXRsZVwiPkRhdGU8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInVuaS1zdWJ0aXRsZVwiPjoge3tkZXRlY3Rpb24uZGF0ZXxkYXRlOidkZC1NTS15eXl5JyB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiICpuZ0lmPVwiZGV0ZWN0aW9uPy5jb25maWdUaW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJ1bmktdGl0bGVcIj5Db25maWd1cmVkIFRpbWU8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCIgKm5nSWY9XCJkZXRlY3Rpb24/LmNvbmZpZ1RpbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidW5pLXN1YnRpdGxlXCI+OiB7e2RldGVjdGlvbi5jb25maWdUaW1lIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCIgKm5nSWY9XCJkZXRlY3Rpb24/LmR1cmF0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJ1bmktdGl0bGVcIj5EdXJhdGlvbjwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIiAqbmdJZj1cImRldGVjdGlvbj8uZHVyYXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidW5pLXN1YnRpdGxlXCI+OiB7e2RldGVjdGlvbi5kdXJhdGlvbiB9fSBNaW5zPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCIgKm5nSWY9XCJkZXRlY3Rpb24/LmRvd25UaW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJ1bmktdGl0bGVcIj5Eb3dudGltZTwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIiAqbmdJZj1cImRldGVjdGlvbj8uZG93blRpbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidW5pLXN1YnRpdGxlXCI+OiB7e2RldGVjdGlvbi5kb3duVGltZSB9fSBNaW5zICA8c3BhbiBuZ2JUb29sdGlwPVwiRG93bnRpbWUgbWF5IHJlc3VsdCBpbiBpbmFjY3VyYXRlIGRhdGFcIiBwbGFjZW1lbnQ9XCJ0b3BcIiBjb250YWluZXI9XCJib2R5XCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNVwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNSAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk03LjY2NjY3IDUuMzMyMDNWNy45OTg3TTcuNjY2NjcgMTAuNjY1NEg3LjY3MzMzTTE0LjMzMzMgNy45OTg3QzE0LjMzMzMgMTEuNjgwNiAxMS4zNDg2IDE0LjY2NTQgNy42NjY2NyAxNC42NjU0QzMuOTg0NzcgMTQuNjY1NCAxIDExLjY4MDYgMSA3Ljk5ODdDMSA0LjMxNjggMy45ODQ3NyAxLjMzMjAzIDcuNjY2NjcgMS4zMzIwM0MxMS4zNDg2IDEuMzMyMDMgMTQuMzMzMyA0LjMxNjggMTQuMzMzMyA3Ljk5ODdaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBtaW4taC00NXB4IHB4LTAgbXktMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwibWUtMyBzdG9yZS10aXRsZVwiPnt7aXRlbS5zdG9yZU5hbWV9fTwvc3Bhbj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTIgYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdFwiICpuZ0lmPVwiZGV0ZWN0aW9uPy5jdXN0b21lcl9pZFwiPkN1c3QgSUQgOiB7e2RldGVjdGlvbi5jdXN0b21lcl9pZH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yIGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHRcIiAqbmdJZj1cImRldGVjdGlvbj8ucXVldWVfaWRcIj5RdWV1ZSBJRCA6IHt7ZGV0ZWN0aW9uLnF1ZXVlX2lkfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTIgYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdFwiICpuZ0lmPVwiZGV0ZWN0aW9uPy5vcHR1bV9pZFwiPk9wdHVtIElEIDoge3tkZXRlY3Rpb24ub3B0dW1faWR9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJtcy0yIGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHRcIiAqbmdJZj1cImRldGVjdGlvbj8uZGF0ZVwiPkRhdGUgOiB7e2RldGVjdGlvbi5kYXRlfGRhdGU6J2RkLU1NLXl5eXknIH19PC9zcGFuPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJtcy0zIGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHRcIiAqbmdJZj1cImRldGVjdGlvbj8uY29uZmlnVGltZVwiPkluc3BlY3Rpb24gdGltZSA6IHt7ZGV0ZWN0aW9uLmNvbmZpZ1RpbWV9fTwvc3Bhbj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTMgYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdFwiICpuZ0lmPVwiZGV0ZWN0aW9uPy50ZW1wX2lkXCI+VGVtcElkIDoge3tkZXRlY3Rpb24udGVtcF9pZH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0zIGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHRcIiAqbmdJZj1cImRldGVjdGlvbj8udGltZV9zcGVuZFwiPlRpbWVzcGVuZCA6IHt7ZGV0ZWN0aW9uLnRpbWVfc3BlbmR9fU1pbnM8L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gU3dpdGNoIHRvZ2dsZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiB0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMyBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0XCIgKm5nSWY9XCJkZXRlY3Rpb24/LmVudHJ5X3RpbWVcIj5FbnRyeSB0aW1lIDoge3tkZXRlY3Rpb24uZW50cnlfdGltZX19PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0zIGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHRcIiAqbmdJZj1cImRldGVjdGlvbj8uZXhpdF90aW1lXCI+RXhpdCB0aW1lIDoge3tkZXRlY3Rpb24uZXhpdF90aW1lfX08L3NwYW4+ICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMyBiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzXCIgKm5nSWY9XCJkZXRlY3Rpb24/LmFkaGVyZW5jZV9yYXRlXCI+QWRoZXJlbmNlIFJhdGUgOiB7e2RldGVjdGlvbi5hZGhlcmVuY2VfcmF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMyBiYWRnZSBiYWRnZS1saWdodC1wcmltYXJ5IHRleHQtY2FwaXRhbGl6ZVwiICpuZ0lmPVwiZGV0ZWN0aW9uPy5jYXRlZ29yeVwiPiB7e2RldGVjdGlvbi5jYXRlZ29yeX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMyBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0XCIgKm5nSWY9XCJkZXRlY3Rpb24/LmN1c3RvbWVyX2VudHJ5X3RpbWVcIj5FbnRyeSB0aW1lIDoge3tkZXRlY3Rpb24uY3VzdG9tZXJfZW50cnlfdGltZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMyBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0XCIgKm5nSWY9XCJkZXRlY3Rpb24/LmN1c3RvbWVyX2V4aXRfdGltZVwiPkV4aXQgdGltZSA6IHt7ZGV0ZWN0aW9uLmN1c3RvbWVyX2V4aXRfdGltZX19PC9zcGFuPiAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0wXCIgKm5nSWY9XCJzZWxlY3QgIT0nZXlldGVzdCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZpZGVvIGNvbnRyb2xzIGNsYXNzPVwidy0xMDAgaC00NTBweCByb3VuZGVkLXRvcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJ7e2Vudmlyb25tZW50LlRyYXhBSWNoZWNrbGlzdENETn19e3tkZXRlY3Rpb24udmlkZW9fcGF0aH19XCIgYWx0PVwiXCI+ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmlkZW8+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTBcIiAqbmdJZj1cInNlbGVjdCA9PT0nZXlldGVzdCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZpZGVvIGNvbnRyb2xzIGNsYXNzPVwidy0xMDAgaC00NTBweCByb3VuZGVkLXRvcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJ7e2Vudmlyb25tZW50LkV5ZVRlc3RDRE59fXt7ZGV0ZWN0aW9uLnZpZGVvX3BhdGh9fVwiIGFsdD1cIlwiPiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZpZGVvPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ID09PSdzdG9yZW9wZW5hbmRjbG9zZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiICpuZ0lmPVwiY2xpZW50RGF0YS5sb2dvJiZjbGllbnREYXRhLmxvZ28hPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJtdC01IG1iLTMgdGV4dC1jZW50ZXIgaWNvbnNpemVcIiBzcmM9XCJ7e2NsaWVudERhdGEubG9nb319XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtMTAgbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJ1bmktdGl0bGVcIj5DaGVja2xpc3QgTmFtZTo8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInVuaS1zdWJ0aXRsZVwiPjoge3t0aGlzLmNoZWNrbGlzdE5hbWV9fSA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIG1hcmdpbi10b3Atc2lkZVwiICpuZ0Zvcj1cImxldCBzdG9yZSBvZiBzdG9yZU9wZW5jbG9zZVZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIG14LTggbXktOFwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIHN0b3JlLmltYWdlc0RhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB4LTEwIG10LTUgbWFyZ2luLWxlZnQtc2lkZSBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCIgKm5nSWY9XCJpdGVtPy5idWZmZXJfb3BlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwidW5pLXRpdGxlXCI+QnVmZmVyIGZvciBPcGVuIFRpbWUgIDo8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCIgKm5nSWY9XCJpdGVtPy5idWZmZXJfb3BlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ1bmktc3VidGl0bGVcIj46IHt7aXRlbS5idWZmZXJfb3BlbiB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiICpuZ0lmPVwiaXRlbT8uYnVmZmVyX2Nsb3NlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJ1bmktdGl0bGVcIj5CdWZmZXIgZm9yIENsb3NlIFRpbWUgIDo8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCIgKm5nSWY9XCJpdGVtPy5idWZmZXJfY2xvc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidW5pLXN1YnRpdGxlXCI+OiB7e2l0ZW0uYnVmZmVyX2Nsb3NlIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInVuaS10aXRsZVwiPkRldGVjdGlvbiBTdGF0dXM8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiICpuZ0lmPVwiaXRlbT8uRmxhZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInVuaS1zdWJ0aXRsZVwiPjo8c3BhbiBjbGFzcz1cIm1zLTMgYmFkZ2UgYmFkZ2UtbGlnaHQtZGFuZ2VyXCIgKm5nSWY9XCJpdGVtPy5GbGFnXCI+QnJlYWNoZWQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTMgYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2Vzc1wiICpuZ0lmPVwiIWl0ZW0/LkZsYWdcIj5Ob3QtYnJlYWNoZWQ8L3NwYW4+IDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwidW5pLXRpdGxlXCI+RGF0ZTwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidW5pLXN1YnRpdGxlXCI+OiB7e2l0ZW0uZGF0ZXxkYXRlOidkZC1NTS15eXl5JyB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbmFwY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNuYXBoZWFkZXIgbXMtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbS5zdG9yZU5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG0tMCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nIG10LTQgcHgtMyBwb3NpdGlvbi1yZWxhdGl2ZVwiICpuZ0lmPVwiIWl0ZW0ub3BlblRpbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmV2aWV3IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGQtZmxleCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjNcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjMgMjBcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIkdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJWZWN0b3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuNSA2LjMyMjI3SDYuNTFNMTYuMjUgOS4zMjIyN0gyMS41TDE4IDE2LjMyMjNMMTQuOTEgMTIuMDAyM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiVmVjdG9yXzJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEuNSAxNi4zMjI5SDUuMjZDNS42MzI3MyAxNi4zMjU1IDUuOTk4NzcgMTYuMjIzOSA2LjMxNjgyIDE2LjAyOTVDNi42MzQ4NyAxNS44MzUyIDYuODkyMjggMTUuNTU1OCA3LjA2IDE1LjIyMjlMOC41IDEyLjMyMjlNMS41IDE4LjMyMjlWMTQuMzIyOU0xNy41IDYuODIyOTFMMTMuNSAxNC44MjI5TDMuMTEgOS42MjI5MUMyLjQyMDMzIDkuMjc1NTMgMS44OTYzNSA4LjY2OTEgMS42NTI3MiA3LjkzNjMyQzEuNDA5MDkgNy4yMDM1NCAxLjQ2NTY0IDYuNDA0MSAxLjgxIDUuNzEyOTFMMy4xOSAyLjkyMjkxQzMuMzYyIDIuNTgwMTQgMy41OTk4NCAyLjI3NDYgMy44ODk5NCAyLjAyMzc1QzQuMTgwMDMgMS43NzI5IDQuNTE2NyAxLjU4MTY1IDQuODgwNzIgMS40NjA5M0M1LjI0NDc0IDEuMzQwMjEgNS42Mjg5NyAxLjI5MjM5IDYuMDExNDcgMS4zMjAxOEM2LjM5Mzk4IDEuMzQ3OTcgNi43NjcyNiAxLjQ1MDg0IDcuMTEgMS42MjI5MUwxNy41IDYuODIyOTFaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBydnR4dCBtdC01IHRleHRjbHJcIj5QcmV2aWV3IG5vdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWZyZXNodHh0IG10LTIgdGV4dGNsclwiPlRoZSBzZWxlY3RlZCBjYW1lcmFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgbm90IGF2YWlsYWJsZSBhdCB0aGUgbW9tZW50Ljwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiaXRlbS5vcGVuVGltZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cIm14LTEgaW1nLW9wY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5UcmF4T3BlbmNsb3NlY2hlY2tsaXN0Q0ROfX17e2l0ZW0uc3RvcmVJZH19L3t7aXRlbS5kYXRlU3RyaW5nfGRhdGU6J2RkLU1NLXl5eXknfX0vb3BlcmF0aW9uX3NuYXBzL29wZW4uanBlZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwib3BlbiBjbG9zZSBzbmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXN0YWNrIG14LTEgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNuYXB0ZXh0XCI+T3BlbmluZyBTbmFwPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic25hcHRpbWVcIj57e2l0ZW0ub3BlblRpbWV9fSAtIHt7aXRlbS5kYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnkgc25hcGJhZGdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWl0ZW0/Lm9wZW5UaW1lRmxhZ1wiPk9uIFRpbWU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGFuZ2VyIHNuYXBiYWRnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0/Lm9wZW5UaW1lRmxhZ1wiPkxhdGUgT3Blbjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nIG10LTQgcHgtMyBwb3NpdGlvbi1yZWxhdGl2ZVwiICpuZ0lmPVwiIWl0ZW0uY2xvc2VUaW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJldmlldyBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBkLWZsZXggZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjIzXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIzIDIwXCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJHcm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiVmVjdG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk02LjUgNi4zMjIyN0g2LjUxTTE2LjI1IDkuMzIyMjdIMjEuNUwxOCAxNi4zMjIzTDE0LjkxIDEyLjAwMjNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlZlY3Rvcl8yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xLjUgMTYuMzIyOUg1LjI2QzUuNjMyNzMgMTYuMzI1NSA1Ljk5ODc3IDE2LjIyMzkgNi4zMTY4MiAxNi4wMjk1QzYuNjM0ODcgMTUuODM1MiA2Ljg5MjI4IDE1LjU1NTggNy4wNiAxNS4yMjI5TDguNSAxMi4zMjI5TTEuNSAxOC4zMjI5VjE0LjMyMjlNMTcuNSA2LjgyMjkxTDEzLjUgMTQuODIyOUwzLjExIDkuNjIyOTFDMi40MjAzMyA5LjI3NTUzIDEuODk2MzUgOC42NjkxIDEuNjUyNzIgNy45MzYzMkMxLjQwOTA5IDcuMjAzNTQgMS40NjU2NCA2LjQwNDEgMS44MSA1LjcxMjkxTDMuMTkgMi45MjI5MUMzLjM2MiAyLjU4MDE0IDMuNTk5ODQgMi4yNzQ2IDMuODg5OTQgMi4wMjM3NUM0LjE4MDAzIDEuNzcyOSA0LjUxNjcgMS41ODE2NSA0Ljg4MDcyIDEuNDYwOTNDNS4yNDQ3NCAxLjM0MDIxIDUuNjI4OTcgMS4yOTIzOSA2LjAxMTQ3IDEuMzIwMThDNi4zOTM5OCAxLjM0Nzk3IDYuNzY3MjYgMS40NTA4NCA3LjExIDEuNjIyOTFMMTcuNSA2LjgyMjkxWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcnZ0eHQgbXQtNSB0ZXh0Y2xyXCI+UHJldmlldyBub3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVmcmVzaHR4dCBtdC0yIHRleHRjbHJcIj5UaGUgc2VsZWN0ZWQgY2FtZXJhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIG5vdCBhdmFpbGFibGUgYXQgdGhlIG1vbWVudC48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cIml0ZW0uY2xvc2VUaW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwibXgtMSBpbWctb3BjXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJ7e2Vudmlyb25tZW50LlRyYXhPcGVuY2xvc2VjaGVja2xpc3RDRE59fXt7aXRlbS5zdG9yZUlkfX0ve3tpdGVtLmRhdGVTdHJpbmd8ZGF0ZTonZGQtTU0teXl5eSd9fS9vcGVyYXRpb25fc25hcHMvY2xvc2UuanBlZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiQ2hlY2tsaXN0IFZpZGVvIFBsYXllclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1zdGFjayBteC0xIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNuYXB0ZXh0XCI+Q2xvc2luZyBTbmFwPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic25hcHRpbWVcIj57e2l0ZW0uY2xvc2VUaW1lfX0gLSB7e2l0ZW0uZGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeSBzbmFwYmFkZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaXRlbT8uY2xvc2VUaW1lRmxhZ1wiPk9uIFRpbWU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGFuZ2VyIHNuYXBiYWRnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0/LmNsb3NlVGltZUZsYWdcIj5FYXJseSBDbG9zZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImJveGltYWdlQ2hlY2tsaXN0LmluY2x1ZGVzKHNlbGVjdClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiICpuZ0lmPVwiY2xpZW50RGF0YS5sb2dvJiZjbGllbnREYXRhLmxvZ28hPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJtdC01IG1iLTMgdGV4dC1jZW50ZXIgaWNvbnNpemVcIiBzcmM9XCJ7e2NsaWVudERhdGEubG9nb319XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIiAqbmdGb3I9XCJsZXQgc3RvcmUgb2YgcXVldWVBbGVydFZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB4LTEwIG10LTVcIiAqbmdJZj1cInNob3dtdWx0aVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInVuaS10aXRsZVwiPlN0b3JlIE5hbWU6PC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ1bmktc3VidGl0bGVcIj57e3N0b3JlPy5zdG9yZU5hbWV9fSB8ICAge3tzdG9yZT8uY2l0eX19LHt7c3RvcmU/LnN0YXRlfX0se3tzdG9yZT8uY291bnRyeX19IDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwidW5pLXRpdGxlXCI+Q2hlY2tsaXN0IE5hbWU6PC9oMz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidW5pLXN1YnRpdGxlXCI+e3tjaGVja2xpc3ROYW1lfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIiAqbmdJZj1cInNlbGVjdD09PSdib3hhbGVydCd8fHNlbGVjdD09PSdzdXNwaWNpb3VzZm9vdGZhbGwnfHxzZWxlY3Q9PT0nZHJpbmtpbmcnfHxzZWxlY3Q9PT0nYmFnZGV0ZWN0aW9uJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwidW5pLXRpdGxlXCI+RGVzY3JpcHRpb246PC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOVwiICpuZ0lmPVwic2VsZWN0PT09J2JveGFsZXJ0J3x8c2VsZWN0PT09J3N1c3BpY2lvdXNmb290ZmFsbCd8fHNlbGVjdD09PSdkcmlua2luZyd8fHNlbGVjdD09PSdiYWdkZXRlY3Rpb24nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInVuaS1zdWJ0aXRsZVwiPnt7Y2hlY2tMaXN0RGVzY3JpcHRpb259fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG0tMCB3LTEwMCBcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgbXQtMlwiICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzdG9yZS5pbWFnZXNEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgYm9yZGVyY29sb3IgYmctc2Vjb25kYXJ5IG10LThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc3RhcnQgbXMtNSBtdC0yIG1iLTVcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS56b25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeSByb3VuZGVkLWxnIHAtMlwiPnt7aXRlbS56b25lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTMgZnctc2VtaWJvbGRcIj57eyBpdGVtLmRhdGVfdGltZXN0YW1wIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwidy0xMDAgaC0yNTBweCByb3VuZGVkLWJvdHRvbVwiIChjbGljayk9XCJvcGVuTW9kZWwoaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tlbnZpcm9ubWVudC5UcmF4QUljaGVja2xpc3RDRE59fXt7aXRlbS5wYXRofX1cIiBhbHQ9XCJcIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLXBhZ2luYXRpb24gKm5nSWY9XCIhdmlld2xvYWRpbmcgJiYgIXZpZXdub0RhdGFcIiBbaXRlbXNQZXJQYWdlXT1cImxpbWl0XCIgW2N1cnJlbnRQYWdlXT1cIm9mZnNldFwiIFt0b3RhbEl0ZW1zXT1cInRvdGFsQ291bnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhZ2luYXRpb25TaXplc109J3BhZ2luYXRpb25TaXplcycgW3BhZ2VTaXplXT1cImxpbWl0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZXZpZXcoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFnZVNpemVDaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCI+PC9saWItcGFnaW5hdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhc2hvd3NpZGVuYXZcIiAoY2xpY2spPVwic2lkZW5hdigpXCIgY2xhc3M9XCJiYWNrQnV0dG9ubGVmdCB0ZXh0LWNlbnRlciBwdC0xIGN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwibXQtMiBtcy0yXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS43MjcxNCAxMi42MzY1TDEzLjM2MzUgOS4wMDAxM0w5LjcyNzE0IDUuMzYzNzdNNC42MzYyMyAxMi42MzY1TDguMjcyNTkgOS4wMDAxM0w0LjYzNjIzIDUuMzYzNzdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMTAxODI4XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+ICBcclxuPGRpdiBjbGFzcz1cInJvdyBjYXJkIG14LTAgcC0zIFwiICpuZ0lmPVwiY2hlY2tBSWNoZWNrbGlzdCgpXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyICB0ZXh0LWVuZFwiPlxyXG48YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBib3JkZXItcHJpbWFyeTFcIiAgW2Rpc2FibGVkXT1cIiFhcHByb3ZhbFN0YXR1c1wiIChjbGljayk9XCJhcHBvdmVDaGVja2xpc3QoKVwiPkFwcHJvdmVcclxuPC9idXR0b24+XHJcbjwvZGl2PlxyXG48L2Rpdj5cclxuPG5nLXRlbXBsYXRlICN6b29tUG9wdXAgbGV0LW1vZGVsPlxyXG4gICAgPGRpdiBjbGFzcz1cInAtOFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcHQtMCBwcy0xIHBlLTBcIj5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXN0YXJ0IG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidmlld0ltYWdlLnpvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeSByb3VuZGVkLWxnIHAtMlwiPnt7dmlld0ltYWdlLnpvbmV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidmlld0ltYWdlLmVtcHR5Qm94Q291bnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gPkVtcHR5IHNoZWx2ZXMgOiB7e3ZpZXdJbWFnZS5lbXB0eUJveENvdW50fX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInZpZXdJbWFnZS5lbnRyeV90aW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuID5FbnRyeSBUaW1lIDoge3t2aWV3SW1hZ2UuZW50cnlfdGltZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ2aWV3SW1hZ2UuZXhpdF90aW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuID5FeGl0IFRpbWUgOiB7e3ZpZXdJbWFnZS5leGl0X3RpbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidmlld0ltYWdlLnRlbXBfaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gPlRlbXAgSWQgOiB7e3ZpZXdJbWFnZS50ZW1wX2lkfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInZpZXdJbWFnZS50aW1lX3NwZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuID5UaW1lIFNwZW5kIDoge3t2aWV3SW1hZ2UudGltZV9zcGVuZH19IE1pbnM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIiAqbmdJZj1cInZpZXdJbWFnZS50aHJlc2hvbGQmJnZpZXdJbWFnZS5Ed2VsbHRpbWVcIj48cD5JZiB0aGUgcXVldWUgZXhjZWVkcyB7e3ZpZXdJbWFnZS50aHJlc2hvbGR9fSBwZW9wbGUgYW5kICB3YWl0IHRpbWUgc3VycGFzc2VzIHt7dmlld0ltYWdlLkR3ZWxsdGltZX19IG1pbnV0ZXMsIGFuIGFsZXJ0IHdpbGwgYmUgdHJpZ2dlcmVkPC9wPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zIGZ3LXNlbWlib2xkXCI+e3sgdmlld0ltYWdlLmRhdGVfdGltZXN0YW1wIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGRhdGEtYnMtZGlzbWlzcz1cIm1vZGFsXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwic3RyZWFtIGZ3LXNlbWlib2xkIHRleHQtbm93cmFwIG1lLTVcIiAqbmdJZj1cImNhbWVyYS5oZWlnaHQgJiYgY2FtZXJhLndpZHRoXCI+IFJlc29sdXRpb246IHt7Y2FtZXJhLmhlaWdodH19IFggIHt7Y2FtZXJhLndpZHRofX08L3NwYW4+IC0tPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeSBtZS0wXCIgKGNsaWNrKT1cIm1vZGVsLmRpc21pc3MoKVwiPjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE1IDVMNSAxNU01IDVMMTUgMTVcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwidmlld0ltYWdlLnBhdGhcIiBjbGFzcz1cIm10LTIgb3ZlcmZsb3ctYXV0b1wiPlxyXG4gICAgICAgICAgICA8aW1nICAgY2xhc3M9XCJyb3VuZGVkLTQgbXQtNSBpbWctcG9wdXAtc3JjIHctMTAwXCIgIHNyYz1cInt7ZW52aXJvbm1lbnQuVHJheEFJY2hlY2tsaXN0Q0ROfX17e3ZpZXdJbWFnZS5wYXRofX1cIj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgXHJcbiAgICA8L2Rpdj5cclxuXHJcbjwvbmctdGVtcGxhdGU+Il19
|