@smarterplan/ngx-smarterplan-core 1.3.2 → 1.3.3
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/esm2020/lib/components/csv-export/csv-export.component.mjs +4 -4
- package/esm2020/lib/components/loader/loader.component.mjs +4 -4
- package/esm2020/lib/components/menu-bar/avatar/avatar.component.mjs +4 -4
- package/esm2020/lib/components/menu-bar/menu-bar.component.mjs +5 -5
- package/esm2020/lib/components/menu-bar/navigation-bar/navigation-bar.component.mjs +4 -4
- package/esm2020/lib/components/modal-switch-visit/modal-switch-visit.component.mjs +4 -4
- package/esm2020/lib/components/search-bar/search-bar.component.mjs +4 -4
- package/esm2020/lib/components/support-modal/support-modal.component.mjs +4 -4
- package/esm2020/lib/ngx-smarterplan-core.module.mjs +5 -5
- package/esm2020/lib/ngx-smarterplan-core.service.mjs +4 -4
- package/esm2020/lib/pipes/duration-to-string.pipe.mjs +7 -7
- package/esm2020/lib/pipes/format-date-number-to-digits.pipe.mjs +4 -4
- package/esm2020/lib/pipes/hashtag-from-id.pipe.mjs +4 -4
- package/esm2020/lib/pipes/safe-url.pipe.mjs +4 -4
- package/esm2020/lib/pipes/time-date-to-local-string.pipe.mjs +7 -7
- package/esm2020/lib/pipes/username-from-id.pipe.mjs +4 -4
- package/esm2020/lib/services/amplify-cache.service.mjs +4 -4
- package/esm2020/lib/services/base-tab.service.mjs +4 -4
- package/esm2020/lib/services/baseVisibility.service.mjs +4 -4
- package/esm2020/lib/services/content.service.mjs +4 -4
- package/esm2020/lib/services/filter.service.mjs +4 -4
- package/esm2020/lib/services/intervention.service.mjs +4 -4
- package/esm2020/lib/services/locale.service.mjs +4 -4
- package/esm2020/lib/services/matterport-import.service.mjs +16 -16
- package/esm2020/lib/services/matterport.service.mjs +10 -10
- package/esm2020/lib/services/models/affectation.service.mjs +4 -4
- package/esm2020/lib/services/models/base-object.service.mjs +4 -4
- package/esm2020/lib/services/models/capture.service.mjs +4 -4
- package/esm2020/lib/services/models/comment.service.mjs +4 -4
- package/esm2020/lib/services/models/domain.service.mjs +4 -4
- package/esm2020/lib/services/models/equipment.service.mjs +4 -4
- package/esm2020/lib/services/models/event.service.mjs +4 -4
- package/esm2020/lib/services/models/feature.service.mjs +4 -4
- package/esm2020/lib/services/models/hashtag.service.mjs +4 -4
- package/esm2020/lib/services/models/layer.service.mjs +4 -4
- package/esm2020/lib/services/models/measurement.service.mjs +4 -4
- package/esm2020/lib/services/models/mission.service.mjs +4 -4
- package/esm2020/lib/services/models/navigation.service.mjs +4 -4
- package/esm2020/lib/services/models/node.service.mjs +4 -4
- package/esm2020/lib/services/models/object3D.service.mjs +4 -4
- package/esm2020/lib/services/models/operation.service.mjs +4 -4
- package/esm2020/lib/services/models/organisation.service.mjs +4 -4
- package/esm2020/lib/services/models/plan.service.mjs +4 -4
- package/esm2020/lib/services/models/poi.service.mjs +4 -4
- package/esm2020/lib/services/models/profile.service.mjs +4 -4
- package/esm2020/lib/services/models/property.service.mjs +4 -4
- package/esm2020/lib/services/models/space.service.mjs +4 -4
- package/esm2020/lib/services/models/template.service.mjs +4 -4
- package/esm2020/lib/services/models/ticket.service.mjs +4 -4
- package/esm2020/lib/services/models/visit.service.mjs +4 -4
- package/esm2020/lib/services/models/zone.service.mjs +4 -4
- package/esm2020/lib/services/navigator.service.mjs +4 -4
- package/esm2020/lib/services/search.service.mjs +4 -4
- package/esm2020/lib/services/support.service.mjs +4 -4
- package/esm2020/lib/services/tag.service.mjs +4 -4
- package/esm2020/lib/services/user.service.mjs +4 -4
- package/esm2020/lib/services/validators.service.mjs +4 -4
- package/esm2020/lib/services/viewer.service.mjs +4 -4
- package/esm2020/lib/services/zoneChange.service.mjs +4 -4
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs +203 -203
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs +216 -203
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/lib/components/csv-export/csv-export.component.d.ts +1 -1
- package/lib/components/loader/loader.component.d.ts +1 -1
- package/lib/components/menu-bar/avatar/avatar.component.d.ts +1 -1
- package/lib/components/menu-bar/menu-bar.component.d.ts +1 -1
- package/lib/components/menu-bar/navigation-bar/navigation-bar.component.d.ts +1 -1
- package/lib/components/modal-switch-visit/modal-switch-visit.component.d.ts +1 -1
- package/lib/components/search-bar/search-bar.component.d.ts +1 -1
- package/lib/components/support-modal/support-modal.component.d.ts +1 -1
- package/lib/matterport-extensions/hsl-loader/HlsLoader.d.ts +2 -2
- package/lib/matterport-extensions/nest-thermostat/CanvasImage.d.ts +2 -2
- package/lib/matterport-extensions/nest-thermostat/CanvasRenderer.d.ts +3 -3
- package/lib/matterport-extensions/nest-thermostat/NestThermostat.d.ts +2 -2
- package/lib/matterport-extensions/nest-thermostat/PlaneRenderer.d.ts +2 -2
- package/lib/matterport-extensions/scene-component/SceneComponent.d.ts +3 -3
- package/lib/matterport-extensions/tv-player/TvPlayer.d.ts +1 -1
- package/lib/matterport-extensions/video-renderer/VideoRenderer.d.ts +2 -2
- package/lib/types.service.d.ts +36 -36
- package/package.json +3 -3
|
@@ -40,9 +40,9 @@ export class CsvExportComponent {
|
|
|
40
40
|
link.remove();
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
-
CsvExportComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
44
|
-
CsvExportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
45
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
43
|
+
CsvExportComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CsvExportComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
44
|
+
CsvExportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: CsvExportComponent, selector: "lib-csv-export", inputs: { headers: "headers", rowsInput: "rowsInput", getRows: "getRows", title: "title", buttonLabel: "buttonLabel" }, ngImport: i0, template: "<span [style.cursor]=\"'pointer'\" (click)=\"onClickDownload()\" class=\"download-csv d-flex\">\r\n <span class=\"iconify\" data-icon=\"mdi:file-download-outline\"></span>\r\n {{ buttonLabel | translate}}\r\n</span>\r\n", styles: [".download-csv{color:var(--smarterplan-primary)}\n"], dependencies: [{ kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CsvExportComponent, decorators: [{
|
|
46
46
|
type: Component,
|
|
47
47
|
args: [{ selector: 'lib-csv-export', template: "<span [style.cursor]=\"'pointer'\" (click)=\"onClickDownload()\" class=\"download-csv d-flex\">\r\n <span class=\"iconify\" data-icon=\"mdi:file-download-outline\"></span>\r\n {{ buttonLabel | translate}}\r\n</span>\r\n", styles: [".download-csv{color:var(--smarterplan-primary)}\n"] }]
|
|
48
48
|
}], propDecorators: { headers: [{
|
|
@@ -56,4 +56,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
56
56
|
}], buttonLabel: [{
|
|
57
57
|
type: Input
|
|
58
58
|
}] } });
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3N2LWV4cG9ydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvY3N2LWV4cG9ydC9jc3YtZXhwb3J0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9jc3YtZXhwb3J0L2Nzdi1leHBvcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU9qRCxNQUFNLE9BQU8sa0JBQWtCO0lBTC9CO1FBT0ksaURBQWlEO1FBQ3hDLFlBQU8sR0FBYSxFQUFFLENBQUM7UUFFaEMsK0dBQStHO1FBQ3RHLGNBQVMsR0FBZSxTQUFTLENBQUM7UUFFM0MsOEhBQThIO1FBQ3JILFlBQU8sR0FBRyxTQUFTLENBQUM7UUFFN0Isb0NBQW9DO1FBQzNCLFVBQUssR0FBVyxNQUFNLENBQUM7UUFFaEMsb0NBQW9DO1FBQzNCLGdCQUFXLEdBQVcsUUFBUSxDQUFDO1FBRXhDLDRCQUE0QjtRQUM1QixjQUFTLEdBQVcsR0FBRyxDQUFDO0tBK0IzQjtJQTdCRyxLQUFLLENBQUMsZUFBZTtRQUNqQixJQUFJLElBQUksR0FBZSxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDUCxJQUFJLEdBQUcsTUFBTSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQ2hEO1FBQ0QsTUFBTSxJQUFJLEdBQUcsK0JBQStCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUN6RCxJQUFJLENBQUMsU0FBUyxDQUNqQixLQUFLLElBQUk7YUFDTCxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUNULDRCQUE0QjtRQUM1QixHQUFHO2FBQ0UsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDWCxLQUFLO2FBQ0EsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDO2FBQzVCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO2FBQ2xCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQzFCO2FBQ0EsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDNUI7YUFDQSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUVsQix5Q0FBeUM7UUFDekMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDO1FBQ25ELFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNsQixDQUFDOztnSEFoRFEsa0JBQWtCO29HQUFsQixrQkFBa0IsOEtDUC9CLG1PQUlBOzRGREdhLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxnQkFBZ0I7OEJBT2YsT0FBTztzQkFBZixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csT0FBTztzQkFBZixLQUFLO2dCQUdHLEtBQUs7c0JBQWIsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItY3N2LWV4cG9ydCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Nzdi1leHBvcnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Nzdi1leHBvcnQuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3N2RXhwb3J0Q29tcG9uZW50IHtcclxuICAgIFxyXG4gICAgLyoqIEhlYWRlciBvZiB0aGUgQ1NWLCB0aXRsZXMgZm9yIGVhY2ggY29sdW1ucyAqL1xyXG4gICAgQElucHV0KCkgaGVhZGVyczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICAvKiogQXJyYXkgb2YgZWFjaCByb3dzIChhcnJheSBvZiBhcnJheSBvZiBzdHJpbmcpLCBpZiBpdCdzIG5vdCBzZXQsIHRoZW4gdGhlIGZ1bmN0aW9uIGdldFJvd3MoKSB3aWxsIGJlIHVzZWQgKi9cclxuICAgIEBJbnB1dCgpIHJvd3NJbnB1dDogc3RyaW5nW11bXSA9IHVuZGVmaW5lZDtcclxuXHJcbiAgICAvKiogRnVuY3Rpb24gdXNlZCB0byBnZXQgcm93cyBpZiByb3dzSW5wdXQgaXMgbm90IHNldCwgY2FsbCBlYWNoIHRpbWUgdGhlIHVzZXIgY2xpY2sgb24gdGhlIGJ1dHRvbiB0byBnZW5lcmF0ZSB0aGUgQ1NWIGZpbGUgKi9cclxuICAgIEBJbnB1dCgpIGdldFJvd3MgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgLyoqIFRpdGxlIG9mIHRoZSBmaWxlIHRvIGRvd25sb2FkICovXHJcbiAgICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gXCJmaWxlXCI7XHJcblxyXG4gICAgLyoqIExhYmVsIGZvciB0aGUgYnV0dG9uIHRvIGNsaWNrICovXHJcbiAgICBASW5wdXQoKSBidXR0b25MYWJlbDogc3RyaW5nID0gXCJFeHBvcnRcIjtcclxuXHJcbiAgICAvKiogRGVsaW1pdGVyIGZvciB0aGUgQ1NWICovXHJcbiAgICBkZWxpbWV0ZXI6IHN0cmluZyA9IFwiO1wiO1xyXG5cclxuICAgIGFzeW5jIG9uQ2xpY2tEb3dubG9hZCgpIHtcclxuICAgICAgICBsZXQgcm93czogc3RyaW5nW11bXSA9IHRoaXMucm93c0lucHV0O1xyXG4gICAgICAgIGlmICghcm93cykge1xyXG4gICAgICAgICAgICByb3dzID0gYXdhaXQgUHJvbWlzZS5yZXNvbHZlKHRoaXMuZ2V0Um93cygpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IGBkYXRhOnRleHQvY3N2O2NoYXJzZXQ9dXRmLTgsJHt0aGlzLmhlYWRlcnMuam9pbihcclxuICAgICAgICAgICAgdGhpcy5kZWxpbWV0ZXIsXHJcbiAgICAgICAgKX1cXG4ke3Jvd3NcclxuICAgICAgICAgICAgLm1hcCgocm93KSA9PlxyXG4gICAgICAgICAgICAgICAgLyoqIENsZWFuIGVhY2ggcm93cy9jZWxscyAqL1xyXG4gICAgICAgICAgICAgICAgcm93XHJcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgodmFsdWUpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSh0aGlzLmRlbGltZXRlciwgXCIgXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShcIlxcblwiLCBcIiBcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKFwiXFxyXCIsIFwiIFwiKSxcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgLmpvaW4odGhpcy5kZWxpbWV0ZXIpLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5qb2luKFwiXFxuXCIpfWA7XHJcblxyXG4gICAgICAgIC8qKiBDcmVhdGUgYSBsaW5rIHRvIGRvd25sb2FkIHRoZSBmaWxlICovXHJcbiAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xyXG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKFwiaHJlZlwiLCBlbmNvZGVVUkkoZGF0YSkpO1xyXG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKFwiZG93bmxvYWRcIiwgYCR7dGhpcy50aXRsZX0uY3N2YCk7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmQobGluayk7XHJcbiAgICAgICAgbGluay5jbGljaygpO1xyXG4gICAgICAgIGxpbmsucmVtb3ZlKCk7XHJcbiAgICB9XHJcbn1cclxuIiwiPHNwYW4gW3N0eWxlLmN1cnNvcl09XCIncG9pbnRlcidcIiAoY2xpY2spPVwib25DbGlja0Rvd25sb2FkKClcIiBjbGFzcz1cImRvd25sb2FkLWNzdiBkLWZsZXhcIj5cclxuICAgIDxzcGFuIGNsYXNzPVwiaWNvbmlmeVwiIGRhdGEtaWNvbj1cIm1kaTpmaWxlLWRvd25sb2FkLW91dGxpbmVcIj48L3NwYW4+XHJcbiAgICB7eyBidXR0b25MYWJlbCB8IHRyYW5zbGF0ZX19XHJcbjwvc3Bhbj5cclxuIl19
|
|
@@ -10,9 +10,9 @@ export class LoaderComponent {
|
|
|
10
10
|
document.documentElement.style.setProperty('--color', this.color);
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
|
-
LoaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
14
|
-
LoaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
15
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
13
|
+
LoaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: LoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
14
|
+
LoaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: LoaderComponent, selector: "lib-loader", inputs: { useLogo: "useLogo", color: "color" }, ngImport: i0, template: "<div class=\"sk-fading-circle\">\r\n <img *ngIf=\"useLogo\" src=\"../../../../assets/icons/smarterplan.svg\">\r\n <div class=\"sk-circle1 sk-circle\"></div>\r\n <div class=\"sk-circle2 sk-circle\"></div>\r\n <div class=\"sk-circle3 sk-circle\"></div>\r\n <div class=\"sk-circle4 sk-circle\"></div>\r\n <div class=\"sk-circle5 sk-circle\"></div>\r\n <div class=\"sk-circle6 sk-circle\"></div>\r\n <div class=\"sk-circle7 sk-circle\"></div>\r\n <div class=\"sk-circle8 sk-circle\"></div>\r\n <div class=\"sk-circle9 sk-circle\"></div>\r\n <div class=\"sk-circle10 sk-circle\"></div>\r\n <div class=\"sk-circle11 sk-circle\"></div>\r\n <div class=\"sk-circle12 sk-circle\"></div>\r\n</div>\r\n", styles: [".sk-fading-circle{width:88px;height:88px;position:relative}.sk-fading-circle img{width:2rem;position:absolute;left:calc(50% - 16px);top:calc(50% - 16px)}.sk-fading-circle .sk-circle{width:100%;height:100%;position:absolute;left:0;top:0}.sk-fading-circle .sk-circle:before{content:\"\";display:block;margin:0 auto;width:15%;height:15%;background-color:var(--color);border-radius:100%;animation:sk-circleFadeDelay 1.2s infinite ease-in-out both}.sk-fading-circle .sk-circle2{transform:rotate(30deg)}.sk-fading-circle .sk-circle3{transform:rotate(60deg)}.sk-fading-circle .sk-circle4{transform:rotate(90deg)}.sk-fading-circle .sk-circle5{transform:rotate(120deg)}.sk-fading-circle .sk-circle6{transform:rotate(150deg)}.sk-fading-circle .sk-circle7{transform:rotate(180deg)}.sk-fading-circle .sk-circle8{transform:rotate(210deg)}.sk-fading-circle .sk-circle9{transform:rotate(240deg)}.sk-fading-circle .sk-circle10{transform:rotate(270deg)}.sk-fading-circle .sk-circle11{transform:rotate(300deg)}.sk-fading-circle .sk-circle12{transform:rotate(330deg)}.sk-fading-circle .sk-circle2:before{animation-delay:-1.1s}.sk-fading-circle .sk-circle3:before{animation-delay:-1s}.sk-fading-circle .sk-circle4:before{animation-delay:-.9s}.sk-fading-circle .sk-circle5:before{animation-delay:-.8s}.sk-fading-circle .sk-circle6:before{animation-delay:-.7s}.sk-fading-circle .sk-circle7:before{animation-delay:-.6s}.sk-fading-circle .sk-circle8:before{animation-delay:-.5s}.sk-fading-circle .sk-circle9:before{animation-delay:-.4s}.sk-fading-circle .sk-circle10:before{animation-delay:-.3s}.sk-fading-circle .sk-circle11:before{animation-delay:-.2s}.sk-fading-circle .sk-circle12:before{animation-delay:-.1s}@keyframes sk-circleFadeDelay{0%,39%,to{opacity:0}40%{opacity:1}}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: LoaderComponent, decorators: [{
|
|
16
16
|
type: Component,
|
|
17
17
|
args: [{ selector: 'lib-loader', template: "<div class=\"sk-fading-circle\">\r\n <img *ngIf=\"useLogo\" src=\"../../../../assets/icons/smarterplan.svg\">\r\n <div class=\"sk-circle1 sk-circle\"></div>\r\n <div class=\"sk-circle2 sk-circle\"></div>\r\n <div class=\"sk-circle3 sk-circle\"></div>\r\n <div class=\"sk-circle4 sk-circle\"></div>\r\n <div class=\"sk-circle5 sk-circle\"></div>\r\n <div class=\"sk-circle6 sk-circle\"></div>\r\n <div class=\"sk-circle7 sk-circle\"></div>\r\n <div class=\"sk-circle8 sk-circle\"></div>\r\n <div class=\"sk-circle9 sk-circle\"></div>\r\n <div class=\"sk-circle10 sk-circle\"></div>\r\n <div class=\"sk-circle11 sk-circle\"></div>\r\n <div class=\"sk-circle12 sk-circle\"></div>\r\n</div>\r\n", styles: [".sk-fading-circle{width:88px;height:88px;position:relative}.sk-fading-circle img{width:2rem;position:absolute;left:calc(50% - 16px);top:calc(50% - 16px)}.sk-fading-circle .sk-circle{width:100%;height:100%;position:absolute;left:0;top:0}.sk-fading-circle .sk-circle:before{content:\"\";display:block;margin:0 auto;width:15%;height:15%;background-color:var(--color);border-radius:100%;animation:sk-circleFadeDelay 1.2s infinite ease-in-out both}.sk-fading-circle .sk-circle2{transform:rotate(30deg)}.sk-fading-circle .sk-circle3{transform:rotate(60deg)}.sk-fading-circle .sk-circle4{transform:rotate(90deg)}.sk-fading-circle .sk-circle5{transform:rotate(120deg)}.sk-fading-circle .sk-circle6{transform:rotate(150deg)}.sk-fading-circle .sk-circle7{transform:rotate(180deg)}.sk-fading-circle .sk-circle8{transform:rotate(210deg)}.sk-fading-circle .sk-circle9{transform:rotate(240deg)}.sk-fading-circle .sk-circle10{transform:rotate(270deg)}.sk-fading-circle .sk-circle11{transform:rotate(300deg)}.sk-fading-circle .sk-circle12{transform:rotate(330deg)}.sk-fading-circle .sk-circle2:before{animation-delay:-1.1s}.sk-fading-circle .sk-circle3:before{animation-delay:-1s}.sk-fading-circle .sk-circle4:before{animation-delay:-.9s}.sk-fading-circle .sk-circle5:before{animation-delay:-.8s}.sk-fading-circle .sk-circle6:before{animation-delay:-.7s}.sk-fading-circle .sk-circle7:before{animation-delay:-.6s}.sk-fading-circle .sk-circle8:before{animation-delay:-.5s}.sk-fading-circle .sk-circle9:before{animation-delay:-.4s}.sk-fading-circle .sk-circle10:before{animation-delay:-.3s}.sk-fading-circle .sk-circle11:before{animation-delay:-.2s}.sk-fading-circle .sk-circle12:before{animation-delay:-.1s}@keyframes sk-circleFadeDelay{0%,39%,to{opacity:0}40%{opacity:1}}\n"] }]
|
|
18
18
|
}], ctorParameters: function () { return []; }, propDecorators: { useLogo: [{
|
|
@@ -20,4 +20,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
20
20
|
}], color: [{
|
|
21
21
|
type: Input
|
|
22
22
|
}] } });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9sb2FkZXIvbG9hZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9sb2FkZXIvbG9hZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7QUFPekQsTUFBTSxPQUFPLGVBQWU7SUFJeEI7UUFIUyxZQUFPLEdBQVksSUFBSSxDQUFDO1FBRXhCLFVBQUssR0FBVyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVqQixRQUFRO1FBQ0osUUFBUSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEUsQ0FBQzs7NkdBUlEsZUFBZTtpR0FBZixlQUFlLGtHQ1A1QiwydEJBZUE7NEZEUmEsZUFBZTtrQkFMM0IsU0FBUzsrQkFDSSxZQUFZOzBFQUtiLE9BQU87c0JBQWYsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdsaWItbG9hZGVyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9sb2FkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vbG9hZGVyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIExvYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBASW5wdXQoKSB1c2VMb2dvOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICBASW5wdXQoKSBjb2xvcjogc3RyaW5nID0gXCIjNTNCNkJCXCI7XHJcbiAgICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1jb2xvcicsIHRoaXMuY29sb3IpO1xyXG4gICAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwic2stZmFkaW5nLWNpcmNsZVwiPlxyXG4gICAgPGltZyAqbmdJZj1cInVzZUxvZ29cIiBzcmM9XCIuLi8uLi8uLi8uLi9hc3NldHMvaWNvbnMvc21hcnRlcnBsYW4uc3ZnXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2stY2lyY2xlMSBzay1jaXJjbGVcIj48L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzay1jaXJjbGUyIHNrLWNpcmNsZVwiPjwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInNrLWNpcmNsZTMgc2stY2lyY2xlXCI+PC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2stY2lyY2xlNCBzay1jaXJjbGVcIj48L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzay1jaXJjbGU1IHNrLWNpcmNsZVwiPjwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInNrLWNpcmNsZTYgc2stY2lyY2xlXCI+PC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2stY2lyY2xlNyBzay1jaXJjbGVcIj48L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzay1jaXJjbGU4IHNrLWNpcmNsZVwiPjwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInNrLWNpcmNsZTkgc2stY2lyY2xlXCI+PC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2stY2lyY2xlMTAgc2stY2lyY2xlXCI+PC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2stY2lyY2xlMTEgc2stY2lyY2xlXCI+PC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2stY2lyY2xlMTIgc2stY2lyY2xlXCI+PC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -66,9 +66,9 @@ export class AvatarComponent {
|
|
|
66
66
|
this.avatar = cache[id];
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
|
-
AvatarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
70
|
-
AvatarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
71
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
69
|
+
AvatarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AvatarComponent, deps: [{ token: i1.BaseUserService }, { token: i2.ProfileService }], target: i0.ɵɵFactoryTarget.Component });
|
|
70
|
+
AvatarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AvatarComponent, selector: "lib-avatar", inputs: { size: "size", userID: "userID" }, ngImport: i0, template: `<img [src]="avatar" />`, isInline: true, styles: ["img{max-width:100%;max-height:100%;height:100%;width:100%;border-radius:50%}\n"] });
|
|
71
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AvatarComponent, decorators: [{
|
|
72
72
|
type: Component,
|
|
73
73
|
args: [{ selector: 'lib-avatar', template: `<img [src]="avatar" />`, styles: ["img{max-width:100%;max-height:100%;height:100%;width:100%;border-radius:50%}\n"] }]
|
|
74
74
|
}], ctorParameters: function () { return [{ type: i1.BaseUserService }, { type: i2.ProfileService }]; }, propDecorators: { size: [{
|
|
@@ -76,4 +76,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
76
76
|
}], userID: [{
|
|
77
77
|
type: Input
|
|
78
78
|
}] } });
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9tZW51LWJhci9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFM0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxRQUFRLE1BQU0sV0FBVyxDQUFDOzs7O0FBR3RDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztBQU1qQixNQUFNLE9BQU8sZUFBZTtJQVl4QixZQUNZLFdBQTRCLEVBQzVCLGNBQThCO1FBRDlCLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUM1QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFaakMsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQWN2QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQzlELElBQUksU0FBUyxFQUFFO2dCQUNYLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ3BDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVE7UUFDVixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDYixNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNsRSxJQUFJLE9BQU8sRUFBRTtnQkFDVCxNQUFNLElBQUksR0FBRyxJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN4QjtTQUNKO2FBQU07WUFDSCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3BDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzlCO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBbUI7UUFDL0IsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBRW5DLHlFQUF5RTtRQUN6RSxnREFBZ0Q7UUFDaEQsNERBQTREO1FBQzVELElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQzNCLElBQUksQ0FBQyxNQUFNLElBQUksS0FBSyxFQUFFO2dCQUNsQixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNwRSxNQUFNLE1BQU0sR0FBRyx3Q0FBd0MsT0FBTyxNQUFNLElBQUksQ0FBQyxJQUFJLG9CQUFvQixDQUFDO2dCQUNsRyxNQUFNLEdBQUcsR0FBRyxNQUFNLEtBQUssQ0FBQyxNQUFNLENBQUM7cUJBQzFCLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO3FCQUN6QixJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDWCxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLGFBQWEsRUFBRTt3QkFDekMsSUFBSSxFQUFFLFlBQVk7cUJBQ3JCLENBQUMsQ0FBQztvQkFDSCxPQUFPLGNBQWMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRCxDQUFDLENBQUMsQ0FBQztnQkFDUCxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUM3RCxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztnQkFDbEIsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQzthQUN0QjtZQUNELElBQUksTUFBTSxFQUFFO2dCQUNSLDhEQUE4RDtnQkFDOUQsNkRBQTZEO2dCQUM3RCxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSwyQkFBMkIsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN2RDtTQUNKO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUIsQ0FBQzs7NkdBeEVRLGVBQWU7aUdBQWYsZUFBZSw4RkFIZCx3QkFBd0I7NEZBR3pCLGVBQWU7a0JBTDNCLFNBQVM7K0JBQ0ksWUFBWSxZQUNaLHdCQUF3QjttSUFLekIsSUFBSTtzQkFBWixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQcm9maWxlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21vZGVscy9wcm9maWxlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyB1cGxvYWRGaWxlVG9TMywgZ2V0U2lnbmVkSW1hZ2VVcmxGb3JQcm9maWxlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvczMuc2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VVc2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3VzZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFByb2ZpbGVFbnRpdHkgfSBmcm9tICcuLi8uLi8uLi90eXBlcy5zZXJ2aWNlJztcclxuaW1wb3J0ICogYXMgQ3J5cHRvSlMgZnJvbSAnY3J5cHRvLWpzJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcblxyXG5jb25zdCBjYWNoZSA9IHt9O1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbGliLWF2YXRhcicsXHJcbiAgICB0ZW1wbGF0ZTogYDxpbWcgW3NyY109XCJhdmF0YXJcIiAvPmAsXHJcbiAgICBzdHlsZVVybHM6IFtcIi4vYXZhdGFyLmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXZhdGFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgICBASW5wdXQoKSBzaXplOiBudW1iZXIgPSA0NTtcclxuXHJcbiAgICBASW5wdXQoKSB1c2VySUQ6IHN0cmluZztcclxuXHJcbiAgICBjdXJyZW50VXNlcjogUHJvZmlsZUVudGl0eTtcclxuXHJcbiAgICBhdmF0YXI7XHJcblxyXG4gICAgdXNlclN1YjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IEJhc2VVc2VyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHByb2ZpbGVTZXJ2aWNlOiBQcm9maWxlU2VydmljZSxcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMudXNlclN1YiA9IHRoaXMudXNlclNlcnZpY2UuaXNDaGFuZ2VkLnN1YnNjcmliZSgoY29ubmVjdGVkKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb25uZWN0ZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFVzZXIgPSB0aGlzLnVzZXJTZXJ2aWNlLmN1O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRBdmF0YXIodGhpcy5jdXJyZW50VXNlcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICBpZiAodGhpcy51c2VySUQpIHtcclxuICAgICAgICAgICAgY29uc3QgcHJvZmlsZSA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuZ2V0UHJvZmlsZSh0aGlzLnVzZXJJRCk7XHJcbiAgICAgICAgICAgIGlmIChwcm9maWxlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB1c2VyID0gbmV3IFByb2ZpbGVFbnRpdHkocHJvZmlsZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldEF2YXRhcih1c2VyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFVzZXIgPSB0aGlzLnVzZXJTZXJ2aWNlLmN1O1xyXG4gICAgICAgICAgICB0aGlzLnNldEF2YXRhcih0aGlzLmN1cnJlbnRVc2VyKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgaWYgKHRoaXMudXNlclN1Yikge1xyXG4gICAgICAgICAgICB0aGlzLnVzZXJTdWIudW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc2V0QXZhdGFyKHVzZXI6IFByb2ZpbGVFbnRpdHkpIHtcclxuICAgICAgICBjb25zdCB7IGlkLCBhdmF0YXIsIGVtYWlsIH0gPSB1c2VyO1xyXG5cclxuICAgICAgICAvLyBJZiBhdmF0YXIgaXMgbm90IGNhY2hlZCwgY2hlY2sgZmlyc3QgaWYgd2UgaGF2ZSBhbiBhdmF0YXIgVVJMIHRvIGZldGNoXHJcbiAgICAgICAgLy8gZnJvbSBTMy4gSWYgbm90LCByZXRyaWV2ZSBpdCBmcm9tIGxpYnJhdmF0YXIuXHJcbiAgICAgICAgLy8gVE9ETyB1c2UgaW4gYSBTZXJ2aWNlIHRvIGJlIGFibGUgdG8gY2hhbmdlL3VwbG9hZCBmcmVlbHkuXHJcbiAgICAgICAgaWYgKCFjYWNoZS5oYXNPd25Qcm9wZXJ0eShpZCkpIHtcclxuICAgICAgICAgICAgaWYgKCFhdmF0YXIgJiYgZW1haWwpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG1kNWhhc2ggPSBDcnlwdG9KUy5NRDUoZW1haWwudHJpbSgpLnRvTG93ZXJDYXNlKCkpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBhdmF0YXIgPSBgaHR0cHM6Ly9zZWNjZG4ubGlicmF2YXRhci5vcmcvYXZhdGFyLyR7bWQ1aGFzaH0/cz0ke3RoaXMuc2l6ZX0mZGVmYXVsdD1pZGVudGljb25gO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdXJsID0gYXdhaXQgZmV0Y2goYXZhdGFyKVxyXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKChyZXMpID0+IHJlcy5ibG9iKCkpXHJcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKGJsb2IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsZSA9IG5ldyBGaWxlKFtibG9iXSwgXCJhdmF0YXIuanBlZ1wiLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImltYWdlL2pwZWdcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1cGxvYWRGaWxlVG9TMyhcImF2YXRhcnMvXCIsIGZpbGUsIGlkKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UudXBkYXRlUHJvZmlsZSh7IGlkLCBhdmF0YXI6IHVybCB9KTtcclxuICAgICAgICAgICAgICAgIHVzZXIuYXZhdGFyID0gdXJsO1xyXG4gICAgICAgICAgICAgICAgY2FjaGVbaWRdID0gYXZhdGFyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChhdmF0YXIpIHtcclxuICAgICAgICAgICAgICAgIC8vIFRPRE8gZ2VuZXJhdGluZyBzaWduZWQgdXJscyBmb3IgYXZhdGFyIG1ha2VzIE5PIFNFTlNFICgkJCQpXHJcbiAgICAgICAgICAgICAgICAvLyBTb3JyeSBnb3QgdG8gY29weXBhc3RlIHRoYXQsIGJ1dCByZWFsbHkgbmVlZCB0byBnZXQgcmlkIG9mXHJcbiAgICAgICAgICAgICAgICBjYWNoZVtpZF0gPSBhd2FpdCBnZXRTaWduZWRJbWFnZVVybEZvclByb2ZpbGUodXNlcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hdmF0YXIgPSBjYWNoZVtpZF07XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -227,12 +227,12 @@ export class MenuBarComponent {
|
|
|
227
227
|
}
|
|
228
228
|
}
|
|
229
229
|
}
|
|
230
|
-
MenuBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
231
|
-
MenuBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: MenuBarComponent, selector: "lib-menu-bar", inputs: { cacheName: "cacheName" }, ngImport: i0, template: "<div id=\"menu-bar\">\r\n <div *ngIf=\"!isVisitor\">\r\n <nav class=\"navbar navbar-expand-md navbar-light p-0\">\r\n <div class=\"container-fluid\" *ngIf=\"isVisible\">\r\n <div class=\"navbar-brand order-md-0\" [routerLink]=\"['/dashboard']\">\r\n <img alt=\"SmarterPlan\" src=\"../assets/images/logos/logo-immo.png\">\r\n </div>\r\n <div class=\"ms-auto nav-item dropdown profile_pic-container order-md-2\">\r\n <div class=\"profile_pic dropdown-toggle\" data-testid=\"dropdown-menu-button\" data-bs-toggle=\"dropdown\">\r\n <lib-avatar></lib-avatar>\r\n </div>\r\n <div class=\"dropdown-menu dropdown-menu-right\">\r\n <p *ngIf=\"user && mission\" class=\"p-2\">\r\n <span class=\"username\">{{ user.displayName }}</span><br />\r\n <span class=\"user-role\">{{ mission.role }}</span><br />\r\n <span class=\"org\">{{ mission.organisation ? mission.organisation.name : \"No organisation\" |\r\n translate}}</span>\r\n </p>\r\n <div class=\"dropdown-divider\"></div>\r\n <!-- <a class=\"dropdown-item\" routerLink=\"/debug\" *ngIf=\"isManager\">Debug</a> -->\r\n <a class=\"dropdown-item\" (click)=\"localeService.modal()\">{{'Language' | translate}}</a>\r\n <a class=\"dropdown-item\" routerLink=\"/dashboard\">{{'Data management' | translate}}</a>\r\n <a class=\"dropdown-item\" data-testid=\"user-management-btn\" routerLink=\"/admin\" *ngIf=\"isManager\">\r\n {{'Users management' | translate}}</a>\r\n <a class=\"dropdown-item\" routerLink=\"/profile\">\r\n {{'Profile' | translate}}</a>\r\n <div class=\"dropdown-divider\"></div>\r\n <button class=\"dropdown-item\" (click)=\"openSupportForm()\">{{\"Help\" | translate}}</button>\r\n <button data-testid=\"logout-auth-btn\" class=\"dropdown-item\" (click)=\"signOut()\">{{\"Logout\" |\r\n translate}}</button>\r\n </div>\r\n </div>\r\n <button class=\"navbar-toggler order-md-1\" (click)=\"navbarCollapse.toggle()\" type=\"button\"\r\n [attr.aria-expanded]=\"!isCollapsed\" aria-controls=\"navbar-collapse\">\r\n <span class=\"navbar-toggler-icon\"></span>\r\n </button>\r\n <div class=\"navbar-collapse order-md-1\" #navbarCollapse=\"ngbCollapse\" [(ngbCollapse)]=\"isCollapsed\"\r\n [animation]=\"false\">\r\n <form\r\n class=\"form-inline m-0 mt-2 form-container d-flex justify-content-start align-items-start align-items-md-center flex-column flex-md-row flex-nowrap filters-menu-block\">\r\n <div class=\"input-group search-button-container d-flex flex-row flex-nowrap p-0 m-0\">\r\n <input class=\"form-control search-button m-1\" placeholder=\"keyword\" id=\"mainSearchBar\" type=\"text\">\r\n <button class=\"btn btn-outline-primary rounded-pill m-1 w-fit-content h-fit-content align-self-md-center\"\r\n (click)=\"onSubmit()\">{{'Search' |\r\n translate}}</button>\r\n </div>\r\n <div class=\"input-group search-button-container d-flex flex-row flex-nowrap p-0 m-0\">\r\n <div class=\"input-group date-selector m-1\">\r\n <input #dpFromDate class=\"form-control\" placeholder=\"dd/MM/yyyy\" name=\"dpFromDate\"\r\n [value]=\"fromDate | formatDateNumberToDigits\"\r\n (input)=\"fromDate = validateInput(fromDate, dpFromDate.value)\">\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"datepicker.toggle()\"\r\n type=\"button\"></button>\r\n </div>\r\n </div>\r\n <input name=\"datepicker\" class=\"form-control visually-hidden\" ngbDatepicker #datepicker=\"ngbDatepicker\"\r\n [autoClose]=\"'outside'\" (dateSelect)=\"onDateSelection($event)\" [displayMonths]=\"2\" [dayTemplate]=\"t\"\r\n outsideDays=\"hidden\" [startDate]=\"fromDate || calendar.getToday()\" [container]=\"'body'\" tabindex=\"-1\">\r\n <ng-template #t let-date let-focused=\"focused\">\r\n <span class=\"custom-day\" [class.focused]=\"focused\" [class.range]=\"isRange(date)\"\r\n [class.faded]=\"isHovered(date) || isInside(date)\" (mouseenter)=\"hoveredDate = date\"\r\n (mouseleave)=\"hoveredDate = null\">\r\n {{ date.day }}\r\n </span>\r\n </ng-template>\r\n <span class=\"ms-1 p-2\">{{'to' | translate}}</span>\r\n <div class=\"input-group date-selector m-1\">\r\n <input #dpToDate class=\"form-control\" placeholder=\"dd/MM/yyyy\" name=\"dpToDate\"\r\n [value]=\"toDate | formatDateNumberToDigits\" (input)=\"toDate = validateInput(toDate, dpToDate.value)\">\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"datepicker.toggle()\"\r\n type=\"button\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"input-group search-button-container d-flex flex-row flex-nowrap p-0 m-1 justify-content-evenly\">\r\n <button\r\n class=\"btn btn-primary rounded-pill ms-1 w-25 w-md-fit-content h-md-fit-content align-self-md-center\"\r\n type=\"button\" (click)=\"onApply()\" *ngIf=\"!isDateFilterApplied || dateChanged\">\r\n {{'Apply' | translate}}\r\n </button>\r\n <span\r\n class=\"appliedText ms-1 py-2 align-self-md-center pb-md-0 mx-2 w-md-fit-content h-md-fit-content align-self-md-center\"\r\n *ngIf=\"isDateFilterApplied && !dateChanged\">\r\n <span class=\"iconify\" data-icon=\"ion:checkmark\" data-width=\"15\" data-height=\"15\"></span>\r\n {{\"Applied\" | translate}}\r\n </span>\r\n <button\r\n class=\"btn btn-outline-primary rounded-pill w-25 mx-2 w-md-fit-content h-md-fit-content align-self-md-center\"\r\n type=\"button\" (click)=\"onClearDates()\">{{'Clear'\r\n |\r\n translate}}</button>\r\n <div\r\n class=\"change-position-button align-self-end pb-2 align-self-md-center mx-2 pb-md-0 flex-nowrap w-25 w-md-fit-content h-md-fit-content\">\r\n <input type=\"checkbox\" class=\"btn-check\" id=\"btn-check-outlined\" autocomplete=\"off\">\r\n <label class=\"link-primary cursor-pointer text-decoration-underline\" (click)=\"onChangePositionClick()\"\r\n for=\"btn-check-outlined\">{{\r\n (isChangePositionVisible ? \"Close\" : \"Move to\") | translate }}</label>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </nav>\r\n <lib-navigation-bar *ngIf=\"isVisible && isChangePositionVisible\"></lib-navigation-bar>\r\n </div>\r\n <div *ngIf=\"isVisitor && isVisible\">\r\n <div class=\"visitor-div\">\r\n <div class=\"logo-container\" data-testid=\"dropdown-menu-button\">\r\n <img class=\"img-logo\" alt=\"SmarterPlanLogo\" src=\"../assets/images/logos/logo-reserve.png\">\r\n </div>\r\n <div class=\"avatar-container-menu\">\r\n <div class=\"profile_pic dropdown-toggle cursor-pointer\" data-bs-toggle=\"dropdown\">\r\n <lib-avatar></lib-avatar>\r\n </div>\r\n <div class=\"dropdown-menu dropdown-menu-right\">\r\n <button class=\"dropdown-item\" (click)=\"localeService.modal()\">{{'Language' | translate}}</button>\r\n <button class=\"dropdown-item\" (click)=\"openSupportForm()\">{{\"Help\" | translate}}</button>\r\n <button data-testid=\"logout-auth-btn\" class=\"dropdown-item\" (click)=\"signOut()\">{{\"Logout\" |\r\n translate}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: ["#menu-bar{position:sticky;top:0;z-index:200}.navbar{z-index:200}.navbar-brand{padding-top:5px;padding-bottom:5px;cursor:pointer}.navbar-brand img{height:70px}.profile_pic{border-radius:50%;height:45px;width:45px;margin:8px;border:.2px solid rgb(150,150,150)}.navbar-nav .profile-pic-container .dropdown-menu{position:absolute}.navbar.second-nav{z-index:199;background-color:var(--smarterplan-primary)}.profile_pic.dropdown-toggle:after{display:none}.navbar-light{border-bottom:1px solid var(--smarterplan-primary);background-color:#fff}.navbar form{width:100%;margin:0;padding:0}input,select{margin-right:15px}.select{background:transparent;border:none;color:#fff;margin:6px 20px 0;width:auto}button{padding:5px 10px}button:disabled,button[disabled]{color:#c04f4f}.navbar-toggler{margin-right:1em}.icon{height:40px;width:40px;color:var(--smarterplan-primary)}.search-button-container{width:auto;align-items:stretch;justify-items:start}.search-button-container .search-button{width:auto;border-radius:1rem!important}.visitor-div{background-color:var(--smarterplan-primary);height:60px;display:flex;justify-content:space-between}.profile_pic-container{margin-right:1em}.logo-container,.img-logo{height:100%}.change-position-button{margin-left:2rem}.change-position-button label,.change-position-button .btn-check:checked,.change-position-button .btn-check:focus,.change-position-button .btn-outline-primary,.change-position-button .btn{box-shadow:none!important;outline:0}.change-position-button label{border-radius:16px}.change-position-button .btn-check:checked+.btn{background-color:var(--smarterplan-primary);color:#fff!important}.filters-menu-block{width:auto}@media (min-width: 1200px){.navbar-brand img{height:100px}.profile_pic{height:60px;width:60px;margin:15px}}@media (min-width: 992px) and (max-width: 1199.98px){.navbar-brand img{height:80px}.profile_pic{height:50px;width:50px;margin:12px}}@media (min-width: 768px) and (max-width: 991.98px){.navbar-brand img{height:60px}.profile_pic{height:40px;width:40px;margin:10px}}@media (max-width: 767.98px){.navbar-brand img{height:50px}.profile_pic{height:30px;width:30px;margin:8px}.search-button-container,.filters-menu-block{width:100%}}.form-container{margin:.5rem 0}.navbar-collapse.show{display:flex;padding-bottom:.5rem}.hidden{width:0;margin:0;border:none;padding:0}.custom-day{text-align:center;padding:.185rem .25rem;display:inline-block;height:2rem;width:2rem}.custom-day.focused{background-color:#e6e6e6}.custom-day.range,.custom-day:hover{background-color:var(--smarterplan-primary-lighter);color:#fff}.custom-day.faded{background-color:var(--smarterplan-primary-transparent)}.calendar{height:100%}.appliedText,.appliedText span{color:var(--smarterplan-primary)}@media (max-width: 767px){.form-inline{flex-direction:column}}.hidden{opacity:0}.date-selector{flex-wrap:nowrap}.date-selector input{min-width:80px;margin:0}@media (min-width: 768px){.w-md-fit-content{width:fit-content!important}.h-md-content{height:fit-content!important}}\n"], dependencies: [{ kind: "directive", type: i10.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i10.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i7.NgbCollapse, selector: "[ngbCollapse]", inputs: ["animation", "ngbCollapse"], outputs: ["ngbCollapseChange", "shown", "hidden"], exportAs: ["ngbCollapse"] }, { kind: "directive", type: i7.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { kind: "directive", type: i7.NgbNavbar, selector: ".navbar" }, { kind: "component", type: i12.AvatarComponent, selector: "lib-avatar", inputs: ["size", "userID"] }, { kind: "component", type: i13.NavigationBarComponent, selector: "lib-navigation-bar" }, { kind: "pipe", type: i14.TranslatePipe, name: "translate" }, { kind: "pipe", type: i15.FormatDateNumberToDigitsPipe, name: "formatDateNumberToDigits" }] });
|
|
232
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
230
|
+
MenuBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MenuBarComponent, deps: [{ token: i1.Router }, { token: i2.LocaleService }, { token: i3.BaseUserService }, { token: i4.NavigatorService }, { token: i5.SupportService }, { token: i6.BaseVisibilityService }, { token: i7.NgbCalendar }, { token: i7.NgbDateParserFormatter }, { token: i8.FilterService }, { token: i9.AmplifyCacheService }], target: i0.ɵɵFactoryTarget.Component });
|
|
231
|
+
MenuBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: MenuBarComponent, selector: "lib-menu-bar", inputs: { cacheName: "cacheName" }, ngImport: i0, template: "<div id=\"menu-bar\">\r\n <div *ngIf=\"!isVisitor\">\r\n <nav class=\"navbar navbar-expand-md navbar-light p-0\">\r\n <div class=\"container-fluid\" *ngIf=\"isVisible\">\r\n <div class=\"navbar-brand order-md-0\" [routerLink]=\"['/dashboard']\">\r\n <img alt=\"SmarterPlan\" src=\"../assets/images/logos/logo-immo.png\">\r\n </div>\r\n <div class=\"ms-auto nav-item dropdown profile_pic-container order-md-2\">\r\n <div class=\"profile_pic dropdown-toggle\" data-testid=\"dropdown-menu-button\" data-bs-toggle=\"dropdown\">\r\n <lib-avatar></lib-avatar>\r\n </div>\r\n <div class=\"dropdown-menu dropdown-menu-right\">\r\n <p *ngIf=\"user && mission\" class=\"p-2\">\r\n <span class=\"username\">{{ user.displayName }}</span><br />\r\n <span class=\"user-role\">{{ mission.role }}</span><br />\r\n <span class=\"org\">{{ mission.organisation ? mission.organisation.name : \"No organisation\" |\r\n translate}}</span>\r\n </p>\r\n <div class=\"dropdown-divider\"></div>\r\n <!-- <a class=\"dropdown-item\" routerLink=\"/debug\" *ngIf=\"isManager\">Debug</a> -->\r\n <a class=\"dropdown-item\" (click)=\"localeService.modal()\">{{'Language' | translate}}</a>\r\n <a class=\"dropdown-item\" routerLink=\"/dashboard\">{{'Data management' | translate}}</a>\r\n <a class=\"dropdown-item\" data-testid=\"user-management-btn\" routerLink=\"/admin\" *ngIf=\"isManager\">\r\n {{'Users management' | translate}}</a>\r\n <a class=\"dropdown-item\" routerLink=\"/profile\">\r\n {{'Profile' | translate}}</a>\r\n <div class=\"dropdown-divider\"></div>\r\n <button class=\"dropdown-item\" (click)=\"openSupportForm()\">{{\"Help\" | translate}}</button>\r\n <button data-testid=\"logout-auth-btn\" class=\"dropdown-item\" (click)=\"signOut()\">{{\"Logout\" |\r\n translate}}</button>\r\n </div>\r\n </div>\r\n <button class=\"navbar-toggler order-md-1\" (click)=\"navbarCollapse.toggle()\" type=\"button\"\r\n [attr.aria-expanded]=\"!isCollapsed\" aria-controls=\"navbar-collapse\">\r\n <span class=\"navbar-toggler-icon\"></span>\r\n </button>\r\n <div class=\"navbar-collapse order-md-1\" #navbarCollapse=\"ngbCollapse\" [(ngbCollapse)]=\"isCollapsed\"\r\n [animation]=\"false\">\r\n <form\r\n class=\"form-inline m-0 mt-2 form-container d-flex justify-content-start align-items-start align-items-md-center flex-column flex-md-row flex-nowrap filters-menu-block\">\r\n <div class=\"input-group search-button-container d-flex flex-row flex-nowrap p-0 m-0\">\r\n <input class=\"form-control search-button m-1\" placeholder=\"keyword\" id=\"mainSearchBar\" type=\"text\">\r\n <button class=\"btn btn-outline-primary rounded-pill m-1 w-fit-content h-fit-content align-self-md-center\"\r\n (click)=\"onSubmit()\">{{'Search' |\r\n translate}}</button>\r\n </div>\r\n <div class=\"input-group search-button-container d-flex flex-row flex-nowrap p-0 m-0\">\r\n <div class=\"input-group date-selector m-1\">\r\n <input #dpFromDate class=\"form-control\" placeholder=\"dd/MM/yyyy\" name=\"dpFromDate\"\r\n [value]=\"fromDate | formatDateNumberToDigits\"\r\n (input)=\"fromDate = validateInput(fromDate, dpFromDate.value)\">\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"datepicker.toggle()\"\r\n type=\"button\"></button>\r\n </div>\r\n </div>\r\n <input name=\"datepicker\" class=\"form-control visually-hidden\" ngbDatepicker #datepicker=\"ngbDatepicker\"\r\n [autoClose]=\"'outside'\" (dateSelect)=\"onDateSelection($event)\" [displayMonths]=\"2\" [dayTemplate]=\"t\"\r\n outsideDays=\"hidden\" [startDate]=\"fromDate || calendar.getToday()\" [container]=\"'body'\" tabindex=\"-1\">\r\n <ng-template #t let-date let-focused=\"focused\">\r\n <span class=\"custom-day\" [class.focused]=\"focused\" [class.range]=\"isRange(date)\"\r\n [class.faded]=\"isHovered(date) || isInside(date)\" (mouseenter)=\"hoveredDate = date\"\r\n (mouseleave)=\"hoveredDate = null\">\r\n {{ date.day }}\r\n </span>\r\n </ng-template>\r\n <span class=\"ms-1 p-2\">{{'to' | translate}}</span>\r\n <div class=\"input-group date-selector m-1\">\r\n <input #dpToDate class=\"form-control\" placeholder=\"dd/MM/yyyy\" name=\"dpToDate\"\r\n [value]=\"toDate | formatDateNumberToDigits\" (input)=\"toDate = validateInput(toDate, dpToDate.value)\">\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"datepicker.toggle()\"\r\n type=\"button\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"input-group search-button-container d-flex flex-row flex-nowrap p-0 m-1 justify-content-evenly\">\r\n <button\r\n class=\"btn btn-primary rounded-pill ms-1 w-25 w-md-fit-content h-md-fit-content align-self-md-center\"\r\n type=\"button\" (click)=\"onApply()\" *ngIf=\"!isDateFilterApplied || dateChanged\">\r\n {{'Apply' | translate}}\r\n </button>\r\n <span\r\n class=\"appliedText ms-1 py-2 align-self-md-center pb-md-0 mx-2 w-md-fit-content h-md-fit-content align-self-md-center\"\r\n *ngIf=\"isDateFilterApplied && !dateChanged\">\r\n <span class=\"iconify\" data-icon=\"ion:checkmark\" data-width=\"15\" data-height=\"15\"></span>\r\n {{\"Applied\" | translate}}\r\n </span>\r\n <button\r\n class=\"btn btn-outline-primary rounded-pill w-25 mx-2 w-md-fit-content h-md-fit-content align-self-md-center\"\r\n type=\"button\" (click)=\"onClearDates()\">{{'Clear'\r\n |\r\n translate}}</button>\r\n <div\r\n class=\"change-position-button align-self-end pb-2 align-self-md-center mx-2 pb-md-0 flex-nowrap w-25 w-md-fit-content h-md-fit-content\">\r\n <input type=\"checkbox\" class=\"btn-check\" id=\"btn-check-outlined\" autocomplete=\"off\">\r\n <label class=\"link-primary cursor-pointer text-decoration-underline\" (click)=\"onChangePositionClick()\"\r\n for=\"btn-check-outlined\">{{\r\n (isChangePositionVisible ? \"Close\" : \"Move to\") | translate }}</label>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </nav>\r\n <lib-navigation-bar *ngIf=\"isVisible && isChangePositionVisible\"></lib-navigation-bar>\r\n </div>\r\n <div *ngIf=\"isVisitor && isVisible\">\r\n <div class=\"visitor-div\">\r\n <div class=\"logo-container\" data-testid=\"dropdown-menu-button\">\r\n <img class=\"img-logo\" alt=\"SmarterPlanLogo\" src=\"../assets/images/logos/logo-reserve.png\">\r\n </div>\r\n <div class=\"avatar-container-menu\">\r\n <div class=\"profile_pic dropdown-toggle cursor-pointer\" data-bs-toggle=\"dropdown\">\r\n <lib-avatar></lib-avatar>\r\n </div>\r\n <div class=\"dropdown-menu dropdown-menu-right\">\r\n <button class=\"dropdown-item\" (click)=\"localeService.modal()\">{{'Language' | translate}}</button>\r\n <button class=\"dropdown-item\" (click)=\"openSupportForm()\">{{\"Help\" | translate}}</button>\r\n <button data-testid=\"logout-auth-btn\" class=\"dropdown-item\" (click)=\"signOut()\">{{\"Logout\" |\r\n translate}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: ["#menu-bar{position:sticky;top:0;z-index:200}.navbar{z-index:200}.navbar-brand{padding-top:5px;padding-bottom:5px;cursor:pointer}.navbar-brand img{height:70px}.profile_pic{border-radius:50%;height:45px;width:45px;margin:8px;border:.2px solid rgb(150,150,150)}.navbar-nav .profile-pic-container .dropdown-menu{position:absolute}.navbar.second-nav{z-index:199;background-color:var(--smarterplan-primary)}.profile_pic.dropdown-toggle:after{display:none}.navbar-light{border-bottom:1px solid var(--smarterplan-primary);background-color:#fff}.navbar form{width:100%;margin:0;padding:0}input,select{margin-right:15px}.select{background:transparent;border:none;color:#fff;margin:6px 20px 0;width:auto}button{padding:5px 10px}button:disabled,button[disabled]{color:#c04f4f}.navbar-toggler{margin-right:1em}.icon{height:40px;width:40px;color:var(--smarterplan-primary)}.search-button-container{width:auto;align-items:stretch;justify-items:start}.search-button-container .search-button{width:auto;border-radius:1rem!important}.visitor-div{background-color:var(--smarterplan-primary);height:60px;display:flex;justify-content:space-between}.profile_pic-container{margin-right:1em}.logo-container,.img-logo{height:100%}.change-position-button{margin-left:2rem}.change-position-button label,.change-position-button .btn-check:checked,.change-position-button .btn-check:focus,.change-position-button .btn-outline-primary,.change-position-button .btn{box-shadow:none!important;outline:0}.change-position-button label{border-radius:16px}.change-position-button .btn-check:checked+.btn{background-color:var(--smarterplan-primary);color:#fff!important}.filters-menu-block{width:auto}@media (min-width: 1200px){.navbar-brand img{height:100px}.profile_pic{height:60px;width:60px;margin:15px}}@media (min-width: 992px) and (max-width: 1199.98px){.navbar-brand img{height:80px}.profile_pic{height:50px;width:50px;margin:12px}}@media (min-width: 768px) and (max-width: 991.98px){.navbar-brand img{height:60px}.profile_pic{height:40px;width:40px;margin:10px}}@media (max-width: 767.98px){.navbar-brand img{height:50px}.profile_pic{height:30px;width:30px;margin:8px}.search-button-container,.filters-menu-block{width:100%}}.form-container{margin:.5rem 0}.navbar-collapse.show{display:flex;padding-bottom:.5rem}.hidden{width:0;margin:0;border:none;padding:0}.custom-day{text-align:center;padding:.185rem .25rem;display:inline-block;height:2rem;width:2rem}.custom-day.focused{background-color:#e6e6e6}.custom-day.range,.custom-day:hover{background-color:var(--smarterplan-primary-lighter);color:#fff}.custom-day.faded{background-color:var(--smarterplan-primary-transparent)}.calendar{height:100%}.appliedText,.appliedText span{color:var(--smarterplan-primary)}@media (max-width: 767px){.form-inline{flex-direction:column}}.hidden{opacity:0}.date-selector{flex-wrap:nowrap}.date-selector input{min-width:80px;margin:0}@media (min-width: 768px){.w-md-fit-content{width:-moz-fit-content!important;width:fit-content!important}.h-md-content{height:-moz-fit-content!important;height:fit-content!important}}\n"], dependencies: [{ kind: "directive", type: i10.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i10.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i7.NgbCollapse, selector: "[ngbCollapse]", inputs: ["animation", "ngbCollapse"], outputs: ["ngbCollapseChange", "shown", "hidden"], exportAs: ["ngbCollapse"] }, { kind: "directive", type: i7.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { kind: "directive", type: i7.NgbNavbar, selector: ".navbar" }, { kind: "component", type: i12.AvatarComponent, selector: "lib-avatar", inputs: ["size", "userID"] }, { kind: "component", type: i13.NavigationBarComponent, selector: "lib-navigation-bar" }, { kind: "pipe", type: i14.TranslatePipe, name: "translate" }, { kind: "pipe", type: i15.FormatDateNumberToDigitsPipe, name: "formatDateNumberToDigits" }] });
|
|
232
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MenuBarComponent, decorators: [{
|
|
233
233
|
type: Component,
|
|
234
|
-
args: [{ selector: 'lib-menu-bar', template: "<div id=\"menu-bar\">\r\n <div *ngIf=\"!isVisitor\">\r\n <nav class=\"navbar navbar-expand-md navbar-light p-0\">\r\n <div class=\"container-fluid\" *ngIf=\"isVisible\">\r\n <div class=\"navbar-brand order-md-0\" [routerLink]=\"['/dashboard']\">\r\n <img alt=\"SmarterPlan\" src=\"../assets/images/logos/logo-immo.png\">\r\n </div>\r\n <div class=\"ms-auto nav-item dropdown profile_pic-container order-md-2\">\r\n <div class=\"profile_pic dropdown-toggle\" data-testid=\"dropdown-menu-button\" data-bs-toggle=\"dropdown\">\r\n <lib-avatar></lib-avatar>\r\n </div>\r\n <div class=\"dropdown-menu dropdown-menu-right\">\r\n <p *ngIf=\"user && mission\" class=\"p-2\">\r\n <span class=\"username\">{{ user.displayName }}</span><br />\r\n <span class=\"user-role\">{{ mission.role }}</span><br />\r\n <span class=\"org\">{{ mission.organisation ? mission.organisation.name : \"No organisation\" |\r\n translate}}</span>\r\n </p>\r\n <div class=\"dropdown-divider\"></div>\r\n <!-- <a class=\"dropdown-item\" routerLink=\"/debug\" *ngIf=\"isManager\">Debug</a> -->\r\n <a class=\"dropdown-item\" (click)=\"localeService.modal()\">{{'Language' | translate}}</a>\r\n <a class=\"dropdown-item\" routerLink=\"/dashboard\">{{'Data management' | translate}}</a>\r\n <a class=\"dropdown-item\" data-testid=\"user-management-btn\" routerLink=\"/admin\" *ngIf=\"isManager\">\r\n {{'Users management' | translate}}</a>\r\n <a class=\"dropdown-item\" routerLink=\"/profile\">\r\n {{'Profile' | translate}}</a>\r\n <div class=\"dropdown-divider\"></div>\r\n <button class=\"dropdown-item\" (click)=\"openSupportForm()\">{{\"Help\" | translate}}</button>\r\n <button data-testid=\"logout-auth-btn\" class=\"dropdown-item\" (click)=\"signOut()\">{{\"Logout\" |\r\n translate}}</button>\r\n </div>\r\n </div>\r\n <button class=\"navbar-toggler order-md-1\" (click)=\"navbarCollapse.toggle()\" type=\"button\"\r\n [attr.aria-expanded]=\"!isCollapsed\" aria-controls=\"navbar-collapse\">\r\n <span class=\"navbar-toggler-icon\"></span>\r\n </button>\r\n <div class=\"navbar-collapse order-md-1\" #navbarCollapse=\"ngbCollapse\" [(ngbCollapse)]=\"isCollapsed\"\r\n [animation]=\"false\">\r\n <form\r\n class=\"form-inline m-0 mt-2 form-container d-flex justify-content-start align-items-start align-items-md-center flex-column flex-md-row flex-nowrap filters-menu-block\">\r\n <div class=\"input-group search-button-container d-flex flex-row flex-nowrap p-0 m-0\">\r\n <input class=\"form-control search-button m-1\" placeholder=\"keyword\" id=\"mainSearchBar\" type=\"text\">\r\n <button class=\"btn btn-outline-primary rounded-pill m-1 w-fit-content h-fit-content align-self-md-center\"\r\n (click)=\"onSubmit()\">{{'Search' |\r\n translate}}</button>\r\n </div>\r\n <div class=\"input-group search-button-container d-flex flex-row flex-nowrap p-0 m-0\">\r\n <div class=\"input-group date-selector m-1\">\r\n <input #dpFromDate class=\"form-control\" placeholder=\"dd/MM/yyyy\" name=\"dpFromDate\"\r\n [value]=\"fromDate | formatDateNumberToDigits\"\r\n (input)=\"fromDate = validateInput(fromDate, dpFromDate.value)\">\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"datepicker.toggle()\"\r\n type=\"button\"></button>\r\n </div>\r\n </div>\r\n <input name=\"datepicker\" class=\"form-control visually-hidden\" ngbDatepicker #datepicker=\"ngbDatepicker\"\r\n [autoClose]=\"'outside'\" (dateSelect)=\"onDateSelection($event)\" [displayMonths]=\"2\" [dayTemplate]=\"t\"\r\n outsideDays=\"hidden\" [startDate]=\"fromDate || calendar.getToday()\" [container]=\"'body'\" tabindex=\"-1\">\r\n <ng-template #t let-date let-focused=\"focused\">\r\n <span class=\"custom-day\" [class.focused]=\"focused\" [class.range]=\"isRange(date)\"\r\n [class.faded]=\"isHovered(date) || isInside(date)\" (mouseenter)=\"hoveredDate = date\"\r\n (mouseleave)=\"hoveredDate = null\">\r\n {{ date.day }}\r\n </span>\r\n </ng-template>\r\n <span class=\"ms-1 p-2\">{{'to' | translate}}</span>\r\n <div class=\"input-group date-selector m-1\">\r\n <input #dpToDate class=\"form-control\" placeholder=\"dd/MM/yyyy\" name=\"dpToDate\"\r\n [value]=\"toDate | formatDateNumberToDigits\" (input)=\"toDate = validateInput(toDate, dpToDate.value)\">\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"datepicker.toggle()\"\r\n type=\"button\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"input-group search-button-container d-flex flex-row flex-nowrap p-0 m-1 justify-content-evenly\">\r\n <button\r\n class=\"btn btn-primary rounded-pill ms-1 w-25 w-md-fit-content h-md-fit-content align-self-md-center\"\r\n type=\"button\" (click)=\"onApply()\" *ngIf=\"!isDateFilterApplied || dateChanged\">\r\n {{'Apply' | translate}}\r\n </button>\r\n <span\r\n class=\"appliedText ms-1 py-2 align-self-md-center pb-md-0 mx-2 w-md-fit-content h-md-fit-content align-self-md-center\"\r\n *ngIf=\"isDateFilterApplied && !dateChanged\">\r\n <span class=\"iconify\" data-icon=\"ion:checkmark\" data-width=\"15\" data-height=\"15\"></span>\r\n {{\"Applied\" | translate}}\r\n </span>\r\n <button\r\n class=\"btn btn-outline-primary rounded-pill w-25 mx-2 w-md-fit-content h-md-fit-content align-self-md-center\"\r\n type=\"button\" (click)=\"onClearDates()\">{{'Clear'\r\n |\r\n translate}}</button>\r\n <div\r\n class=\"change-position-button align-self-end pb-2 align-self-md-center mx-2 pb-md-0 flex-nowrap w-25 w-md-fit-content h-md-fit-content\">\r\n <input type=\"checkbox\" class=\"btn-check\" id=\"btn-check-outlined\" autocomplete=\"off\">\r\n <label class=\"link-primary cursor-pointer text-decoration-underline\" (click)=\"onChangePositionClick()\"\r\n for=\"btn-check-outlined\">{{\r\n (isChangePositionVisible ? \"Close\" : \"Move to\") | translate }}</label>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </nav>\r\n <lib-navigation-bar *ngIf=\"isVisible && isChangePositionVisible\"></lib-navigation-bar>\r\n </div>\r\n <div *ngIf=\"isVisitor && isVisible\">\r\n <div class=\"visitor-div\">\r\n <div class=\"logo-container\" data-testid=\"dropdown-menu-button\">\r\n <img class=\"img-logo\" alt=\"SmarterPlanLogo\" src=\"../assets/images/logos/logo-reserve.png\">\r\n </div>\r\n <div class=\"avatar-container-menu\">\r\n <div class=\"profile_pic dropdown-toggle cursor-pointer\" data-bs-toggle=\"dropdown\">\r\n <lib-avatar></lib-avatar>\r\n </div>\r\n <div class=\"dropdown-menu dropdown-menu-right\">\r\n <button class=\"dropdown-item\" (click)=\"localeService.modal()\">{{'Language' | translate}}</button>\r\n <button class=\"dropdown-item\" (click)=\"openSupportForm()\">{{\"Help\" | translate}}</button>\r\n <button data-testid=\"logout-auth-btn\" class=\"dropdown-item\" (click)=\"signOut()\">{{\"Logout\" |\r\n translate}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: ["#menu-bar{position:sticky;top:0;z-index:200}.navbar{z-index:200}.navbar-brand{padding-top:5px;padding-bottom:5px;cursor:pointer}.navbar-brand img{height:70px}.profile_pic{border-radius:50%;height:45px;width:45px;margin:8px;border:.2px solid rgb(150,150,150)}.navbar-nav .profile-pic-container .dropdown-menu{position:absolute}.navbar.second-nav{z-index:199;background-color:var(--smarterplan-primary)}.profile_pic.dropdown-toggle:after{display:none}.navbar-light{border-bottom:1px solid var(--smarterplan-primary);background-color:#fff}.navbar form{width:100%;margin:0;padding:0}input,select{margin-right:15px}.select{background:transparent;border:none;color:#fff;margin:6px 20px 0;width:auto}button{padding:5px 10px}button:disabled,button[disabled]{color:#c04f4f}.navbar-toggler{margin-right:1em}.icon{height:40px;width:40px;color:var(--smarterplan-primary)}.search-button-container{width:auto;align-items:stretch;justify-items:start}.search-button-container .search-button{width:auto;border-radius:1rem!important}.visitor-div{background-color:var(--smarterplan-primary);height:60px;display:flex;justify-content:space-between}.profile_pic-container{margin-right:1em}.logo-container,.img-logo{height:100%}.change-position-button{margin-left:2rem}.change-position-button label,.change-position-button .btn-check:checked,.change-position-button .btn-check:focus,.change-position-button .btn-outline-primary,.change-position-button .btn{box-shadow:none!important;outline:0}.change-position-button label{border-radius:16px}.change-position-button .btn-check:checked+.btn{background-color:var(--smarterplan-primary);color:#fff!important}.filters-menu-block{width:auto}@media (min-width: 1200px){.navbar-brand img{height:100px}.profile_pic{height:60px;width:60px;margin:15px}}@media (min-width: 992px) and (max-width: 1199.98px){.navbar-brand img{height:80px}.profile_pic{height:50px;width:50px;margin:12px}}@media (min-width: 768px) and (max-width: 991.98px){.navbar-brand img{height:60px}.profile_pic{height:40px;width:40px;margin:10px}}@media (max-width: 767.98px){.navbar-brand img{height:50px}.profile_pic{height:30px;width:30px;margin:8px}.search-button-container,.filters-menu-block{width:100%}}.form-container{margin:.5rem 0}.navbar-collapse.show{display:flex;padding-bottom:.5rem}.hidden{width:0;margin:0;border:none;padding:0}.custom-day{text-align:center;padding:.185rem .25rem;display:inline-block;height:2rem;width:2rem}.custom-day.focused{background-color:#e6e6e6}.custom-day.range,.custom-day:hover{background-color:var(--smarterplan-primary-lighter);color:#fff}.custom-day.faded{background-color:var(--smarterplan-primary-transparent)}.calendar{height:100%}.appliedText,.appliedText span{color:var(--smarterplan-primary)}@media (max-width: 767px){.form-inline{flex-direction:column}}.hidden{opacity:0}.date-selector{flex-wrap:nowrap}.date-selector input{min-width:80px;margin:0}@media (min-width: 768px){.w-md-fit-content{width:fit-content!important}.h-md-content{height:fit-content!important}}\n"] }]
|
|
234
|
+
args: [{ selector: 'lib-menu-bar', template: "<div id=\"menu-bar\">\r\n <div *ngIf=\"!isVisitor\">\r\n <nav class=\"navbar navbar-expand-md navbar-light p-0\">\r\n <div class=\"container-fluid\" *ngIf=\"isVisible\">\r\n <div class=\"navbar-brand order-md-0\" [routerLink]=\"['/dashboard']\">\r\n <img alt=\"SmarterPlan\" src=\"../assets/images/logos/logo-immo.png\">\r\n </div>\r\n <div class=\"ms-auto nav-item dropdown profile_pic-container order-md-2\">\r\n <div class=\"profile_pic dropdown-toggle\" data-testid=\"dropdown-menu-button\" data-bs-toggle=\"dropdown\">\r\n <lib-avatar></lib-avatar>\r\n </div>\r\n <div class=\"dropdown-menu dropdown-menu-right\">\r\n <p *ngIf=\"user && mission\" class=\"p-2\">\r\n <span class=\"username\">{{ user.displayName }}</span><br />\r\n <span class=\"user-role\">{{ mission.role }}</span><br />\r\n <span class=\"org\">{{ mission.organisation ? mission.organisation.name : \"No organisation\" |\r\n translate}}</span>\r\n </p>\r\n <div class=\"dropdown-divider\"></div>\r\n <!-- <a class=\"dropdown-item\" routerLink=\"/debug\" *ngIf=\"isManager\">Debug</a> -->\r\n <a class=\"dropdown-item\" (click)=\"localeService.modal()\">{{'Language' | translate}}</a>\r\n <a class=\"dropdown-item\" routerLink=\"/dashboard\">{{'Data management' | translate}}</a>\r\n <a class=\"dropdown-item\" data-testid=\"user-management-btn\" routerLink=\"/admin\" *ngIf=\"isManager\">\r\n {{'Users management' | translate}}</a>\r\n <a class=\"dropdown-item\" routerLink=\"/profile\">\r\n {{'Profile' | translate}}</a>\r\n <div class=\"dropdown-divider\"></div>\r\n <button class=\"dropdown-item\" (click)=\"openSupportForm()\">{{\"Help\" | translate}}</button>\r\n <button data-testid=\"logout-auth-btn\" class=\"dropdown-item\" (click)=\"signOut()\">{{\"Logout\" |\r\n translate}}</button>\r\n </div>\r\n </div>\r\n <button class=\"navbar-toggler order-md-1\" (click)=\"navbarCollapse.toggle()\" type=\"button\"\r\n [attr.aria-expanded]=\"!isCollapsed\" aria-controls=\"navbar-collapse\">\r\n <span class=\"navbar-toggler-icon\"></span>\r\n </button>\r\n <div class=\"navbar-collapse order-md-1\" #navbarCollapse=\"ngbCollapse\" [(ngbCollapse)]=\"isCollapsed\"\r\n [animation]=\"false\">\r\n <form\r\n class=\"form-inline m-0 mt-2 form-container d-flex justify-content-start align-items-start align-items-md-center flex-column flex-md-row flex-nowrap filters-menu-block\">\r\n <div class=\"input-group search-button-container d-flex flex-row flex-nowrap p-0 m-0\">\r\n <input class=\"form-control search-button m-1\" placeholder=\"keyword\" id=\"mainSearchBar\" type=\"text\">\r\n <button class=\"btn btn-outline-primary rounded-pill m-1 w-fit-content h-fit-content align-self-md-center\"\r\n (click)=\"onSubmit()\">{{'Search' |\r\n translate}}</button>\r\n </div>\r\n <div class=\"input-group search-button-container d-flex flex-row flex-nowrap p-0 m-0\">\r\n <div class=\"input-group date-selector m-1\">\r\n <input #dpFromDate class=\"form-control\" placeholder=\"dd/MM/yyyy\" name=\"dpFromDate\"\r\n [value]=\"fromDate | formatDateNumberToDigits\"\r\n (input)=\"fromDate = validateInput(fromDate, dpFromDate.value)\">\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"datepicker.toggle()\"\r\n type=\"button\"></button>\r\n </div>\r\n </div>\r\n <input name=\"datepicker\" class=\"form-control visually-hidden\" ngbDatepicker #datepicker=\"ngbDatepicker\"\r\n [autoClose]=\"'outside'\" (dateSelect)=\"onDateSelection($event)\" [displayMonths]=\"2\" [dayTemplate]=\"t\"\r\n outsideDays=\"hidden\" [startDate]=\"fromDate || calendar.getToday()\" [container]=\"'body'\" tabindex=\"-1\">\r\n <ng-template #t let-date let-focused=\"focused\">\r\n <span class=\"custom-day\" [class.focused]=\"focused\" [class.range]=\"isRange(date)\"\r\n [class.faded]=\"isHovered(date) || isInside(date)\" (mouseenter)=\"hoveredDate = date\"\r\n (mouseleave)=\"hoveredDate = null\">\r\n {{ date.day }}\r\n </span>\r\n </ng-template>\r\n <span class=\"ms-1 p-2\">{{'to' | translate}}</span>\r\n <div class=\"input-group date-selector m-1\">\r\n <input #dpToDate class=\"form-control\" placeholder=\"dd/MM/yyyy\" name=\"dpToDate\"\r\n [value]=\"toDate | formatDateNumberToDigits\" (input)=\"toDate = validateInput(toDate, dpToDate.value)\">\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"datepicker.toggle()\"\r\n type=\"button\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"input-group search-button-container d-flex flex-row flex-nowrap p-0 m-1 justify-content-evenly\">\r\n <button\r\n class=\"btn btn-primary rounded-pill ms-1 w-25 w-md-fit-content h-md-fit-content align-self-md-center\"\r\n type=\"button\" (click)=\"onApply()\" *ngIf=\"!isDateFilterApplied || dateChanged\">\r\n {{'Apply' | translate}}\r\n </button>\r\n <span\r\n class=\"appliedText ms-1 py-2 align-self-md-center pb-md-0 mx-2 w-md-fit-content h-md-fit-content align-self-md-center\"\r\n *ngIf=\"isDateFilterApplied && !dateChanged\">\r\n <span class=\"iconify\" data-icon=\"ion:checkmark\" data-width=\"15\" data-height=\"15\"></span>\r\n {{\"Applied\" | translate}}\r\n </span>\r\n <button\r\n class=\"btn btn-outline-primary rounded-pill w-25 mx-2 w-md-fit-content h-md-fit-content align-self-md-center\"\r\n type=\"button\" (click)=\"onClearDates()\">{{'Clear'\r\n |\r\n translate}}</button>\r\n <div\r\n class=\"change-position-button align-self-end pb-2 align-self-md-center mx-2 pb-md-0 flex-nowrap w-25 w-md-fit-content h-md-fit-content\">\r\n <input type=\"checkbox\" class=\"btn-check\" id=\"btn-check-outlined\" autocomplete=\"off\">\r\n <label class=\"link-primary cursor-pointer text-decoration-underline\" (click)=\"onChangePositionClick()\"\r\n for=\"btn-check-outlined\">{{\r\n (isChangePositionVisible ? \"Close\" : \"Move to\") | translate }}</label>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </nav>\r\n <lib-navigation-bar *ngIf=\"isVisible && isChangePositionVisible\"></lib-navigation-bar>\r\n </div>\r\n <div *ngIf=\"isVisitor && isVisible\">\r\n <div class=\"visitor-div\">\r\n <div class=\"logo-container\" data-testid=\"dropdown-menu-button\">\r\n <img class=\"img-logo\" alt=\"SmarterPlanLogo\" src=\"../assets/images/logos/logo-reserve.png\">\r\n </div>\r\n <div class=\"avatar-container-menu\">\r\n <div class=\"profile_pic dropdown-toggle cursor-pointer\" data-bs-toggle=\"dropdown\">\r\n <lib-avatar></lib-avatar>\r\n </div>\r\n <div class=\"dropdown-menu dropdown-menu-right\">\r\n <button class=\"dropdown-item\" (click)=\"localeService.modal()\">{{'Language' | translate}}</button>\r\n <button class=\"dropdown-item\" (click)=\"openSupportForm()\">{{\"Help\" | translate}}</button>\r\n <button data-testid=\"logout-auth-btn\" class=\"dropdown-item\" (click)=\"signOut()\">{{\"Logout\" |\r\n translate}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: ["#menu-bar{position:sticky;top:0;z-index:200}.navbar{z-index:200}.navbar-brand{padding-top:5px;padding-bottom:5px;cursor:pointer}.navbar-brand img{height:70px}.profile_pic{border-radius:50%;height:45px;width:45px;margin:8px;border:.2px solid rgb(150,150,150)}.navbar-nav .profile-pic-container .dropdown-menu{position:absolute}.navbar.second-nav{z-index:199;background-color:var(--smarterplan-primary)}.profile_pic.dropdown-toggle:after{display:none}.navbar-light{border-bottom:1px solid var(--smarterplan-primary);background-color:#fff}.navbar form{width:100%;margin:0;padding:0}input,select{margin-right:15px}.select{background:transparent;border:none;color:#fff;margin:6px 20px 0;width:auto}button{padding:5px 10px}button:disabled,button[disabled]{color:#c04f4f}.navbar-toggler{margin-right:1em}.icon{height:40px;width:40px;color:var(--smarterplan-primary)}.search-button-container{width:auto;align-items:stretch;justify-items:start}.search-button-container .search-button{width:auto;border-radius:1rem!important}.visitor-div{background-color:var(--smarterplan-primary);height:60px;display:flex;justify-content:space-between}.profile_pic-container{margin-right:1em}.logo-container,.img-logo{height:100%}.change-position-button{margin-left:2rem}.change-position-button label,.change-position-button .btn-check:checked,.change-position-button .btn-check:focus,.change-position-button .btn-outline-primary,.change-position-button .btn{box-shadow:none!important;outline:0}.change-position-button label{border-radius:16px}.change-position-button .btn-check:checked+.btn{background-color:var(--smarterplan-primary);color:#fff!important}.filters-menu-block{width:auto}@media (min-width: 1200px){.navbar-brand img{height:100px}.profile_pic{height:60px;width:60px;margin:15px}}@media (min-width: 992px) and (max-width: 1199.98px){.navbar-brand img{height:80px}.profile_pic{height:50px;width:50px;margin:12px}}@media (min-width: 768px) and (max-width: 991.98px){.navbar-brand img{height:60px}.profile_pic{height:40px;width:40px;margin:10px}}@media (max-width: 767.98px){.navbar-brand img{height:50px}.profile_pic{height:30px;width:30px;margin:8px}.search-button-container,.filters-menu-block{width:100%}}.form-container{margin:.5rem 0}.navbar-collapse.show{display:flex;padding-bottom:.5rem}.hidden{width:0;margin:0;border:none;padding:0}.custom-day{text-align:center;padding:.185rem .25rem;display:inline-block;height:2rem;width:2rem}.custom-day.focused{background-color:#e6e6e6}.custom-day.range,.custom-day:hover{background-color:var(--smarterplan-primary-lighter);color:#fff}.custom-day.faded{background-color:var(--smarterplan-primary-transparent)}.calendar{height:100%}.appliedText,.appliedText span{color:var(--smarterplan-primary)}@media (max-width: 767px){.form-inline{flex-direction:column}}.hidden{opacity:0}.date-selector{flex-wrap:nowrap}.date-selector input{min-width:80px;margin:0}@media (min-width: 768px){.w-md-fit-content{width:-moz-fit-content!important;width:fit-content!important}.h-md-content{height:-moz-fit-content!important;height:fit-content!important}}\n"] }]
|
|
235
235
|
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.LocaleService }, { type: i3.BaseUserService }, { type: i4.NavigatorService }, { type: i5.SupportService }, { type: i6.BaseVisibilityService }, { type: i7.NgbCalendar }, { type: i7.NgbDateParserFormatter }, { type: i8.FilterService }, { type: i9.AmplifyCacheService }]; }, propDecorators: { cacheName: [{
|
|
236
236
|
type: Input
|
|
237
237
|
}] } });
|
|
238
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1iYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL21lbnUtYmFyL21lbnUtYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9tZW51LWJhci9tZW51LWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVF6RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUVqRixPQUFPLEVBQ0wsT0FBTyxHQUdSLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBU3BDLE1BQU0sT0FBTyxnQkFBZ0I7SUF1QzNCLFlBQ1UsTUFBYyxFQUNmLGFBQTRCLEVBQzNCLFdBQTRCLEVBQzVCLGdCQUFrQyxFQUNsQyxjQUE4QixFQUM5QixxQkFBNEMsRUFDN0MsUUFBcUIsRUFDckIsU0FBaUMsRUFDaEMsYUFBNEIsRUFDNUIsWUFBaUM7UUFUakMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNmLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzNCLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzdDLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDckIsY0FBUyxHQUFULFNBQVMsQ0FBd0I7UUFDaEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBNUNwQyxnQkFBVyxHQUFHLElB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USxFQUFFLENBQUMsQ0FBQztTQUNuRTtRQUNELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLE1BQU0sT0FBTyxHQUFHLElBQUksSUFBSSxDQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FDaEIsQ0FBQztZQUNGLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1NBQy9EO0lBQ0gsQ0FBQzs7NkdBM1NVLGdCQUFnQjtpR0FBaEIsZ0JBQWdCLHdGQ3ZCN0Isd2xRQTZITTsyRkR0R08sZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLGNBQWM7b1hBNkJmLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IExvY2FsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2NhbGUuc2VydmljZSc7XHJcbmltcG9ydCB7IE5hdmlnYXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9uYXZpZ2F0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7IFN1cHBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3VwcG9ydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFzZVVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXNlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJvZmlsZUVudGl0eSwgTWlzc2lvbiB9IGZyb20gJy4uLy4uL3R5cGVzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdXBwb3J0TW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9zdXBwb3J0LW1vZGFsL3N1cHBvcnQtbW9kYWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQmFzZVZpc2liaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYmFzZVZpc2liaWxpdHkuc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgTmdiRGF0ZSxcclxuICBOZ2JDYWxlbmRhcixcclxuICBOZ2JEYXRlUGFyc2VyRm9ybWF0dGVyLFxyXG59IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgQW1wbGlmeUNhY2hlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FtcGxpZnktY2FjaGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEZpbHRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9maWx0ZXIuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1tZW51LWJhcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21lbnUtYmFyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9tZW51LWJhci5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWVudUJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgdXNlcjogUHJvZmlsZUVudGl0eTtcclxuXHJcbiAgbWlzc2lvbjogTWlzc2lvbjtcclxuXHJcbiAgcHVibGljIGlzQ29sbGFwc2VkID0gdHJ1ZTtcclxuXHJcbiAgaXNWaXNpdG9yID0gdHJ1ZTtcclxuXHJcbiAgaXNWaXNpYmxlID0gZmFsc2U7XHJcblxyXG4gIGlzQ2hhbmdlUG9zaXRpb25WaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGlzTWFuYWdlcjogYm9vbGVhbjtcclxuXHJcbiAgdXNlclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBuYXZTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgaG92ZXJlZERhdGU6IE5nYkRhdGUgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgZnJvbURhdGU6IE5nYkRhdGUgfCBudWxsO1xyXG5cclxuICB0b0RhdGU6IE5nYkRhdGUgfCBudWxsO1xyXG5cclxuICBASW5wdXQoKSBjYWNoZU5hbWU6IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIGNhY2hlOiB7IGZyb206IG51bWJlcjsgdG86IG51bWJlciB9IHwgbnVsbDtcclxuXHJcbiAgaXNEYXRlRmlsdGVyQXBwbGllZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBkYXRlQ2hhbmdlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjaGFuZ2VQb3NpdGlvblN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgcHJpdmF0ZSBzZWFyY2hJbnB1dD86IEhUTUxJbnB1dEVsZW1lbnQ7XHJcblxyXG4gIGZpbHRlclN1YnNjcmlwdGlvblxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwdWJsaWMgbG9jYWxlU2VydmljZTogTG9jYWxlU2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IEJhc2VVc2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgbmF2aWdhdG9yU2VydmljZTogTmF2aWdhdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgc3VwcG9ydFNlcnZpY2U6IFN1cHBvcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBiYXNlVmlzaWJpbGl0eVNlcnZpY2U6IEJhc2VWaXNpYmlsaXR5U2VydmljZSxcclxuICAgIHB1YmxpYyBjYWxlbmRhcjogTmdiQ2FsZW5kYXIsXHJcbiAgICBwdWJsaWMgZm9ybWF0dGVyOiBOZ2JEYXRlUGFyc2VyRm9ybWF0dGVyLFxyXG4gICAgcHJpdmF0ZSBmaWx0ZXJTZXJ2aWNlOiBGaWx0ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjYWNoZVNlcnZpY2U6IEFtcGxpZnlDYWNoZVNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMudXNlclN1YnNjcmlwdGlvbiA9IHRoaXMudXNlclNlcnZpY2UuaXNDaGFuZ2VkLnN1YnNjcmliZShcclxuICAgICAgKGlzQ2hhbmdlZCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0NoYW5nZWQpIHtcclxuICAgICAgICAgIHRoaXMudXBkYXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgdGhpcy5uYXZTdWJzY3JpcHRpb24gPSB0aGlzLm5hdmlnYXRvclNlcnZpY2UuaXNWaXNpYmxlQ2hhbmdlZC5zdWJzY3JpYmUoXHJcbiAgICAgIChkYXRhKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1Zpc2libGUgPSBkYXRhO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuY2hhbmdlUG9zaXRpb25TdWJzY3JpcHRpb24gPSB0aGlzLmJhc2VWaXNpYmlsaXR5U2VydmljZS5pc0NoYW5nZVBvc2l0aW9uVmlzaWJsZS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgdGhpcy5pc0NoYW5nZVBvc2l0aW9uVmlzaWJsZSA9IGRhdGE7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy51cGRhdGUoKTtcclxuXHJcbiAgICBpZiAodGhpcy5jYWNoZU5hbWUpIHtcclxuICAgICAgdGhpcy5jYWNoZSA9IHRoaXMuY2FjaGVTZXJ2aWNlLmdldEZyb21DYWNoZSh0aGlzLmNhY2hlTmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY2FjaGUpIHtcclxuICAgICAgdGhpcy5pc0RhdGVGaWx0ZXJBcHBsaWVkID0gdHJ1ZTtcclxuICAgICAgbGV0IHsgZnJvbSwgdG8gfSA9IHRoaXMuY2FjaGU7XHJcbiAgICAgIHRoaXMudG9EYXRlID0gdGhpcy5nZXROZ2JEYXRlKHRvKTtcclxuICAgICAgdGhpcy5mcm9tRGF0ZSA9IHRoaXMuZ2V0TmdiRGF0ZShmcm9tKTtcclxuXHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzdGFydERhdGUnLCBmcm9tLnRvU3RyaW5nKCkpO1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZW5kRGF0ZScsIHRvLnRvU3RyaW5nKCkpO1xyXG4gICAgICB0aGlzLmZpbHRlclNlcnZpY2UuZGF0ZUZpbHRlclVwZGF0ZWQoW25ldyBEYXRlKGZyb20pLCBuZXcgRGF0ZSh0byldKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZnJvbURhdGUgPSBudWxsO1xyXG4gICAgICB0aGlzLnRvRGF0ZSA9IG51bGw7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdzdGFydERhdGUnKTtcclxuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2VuZERhdGUnKTtcclxuXHJcbiAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5kYXRlRmlsdGVyVXBkYXRlZChudWxsKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUaGlzIGFsbG93cyB1cGRhdGluZyB0aGUgaW5wdXRzIHdoZW4gbWVhc3VyZW1lbnQuc2VydmljZSBjaGFuZ2VzIHRoZSBkYXRlIHByb2dyYW1tYXRpY2FsbHlcclxuICAgIHRoaXMuZmlsdGVyU3Vic2NyaXB0aW9uID0gdGhpcy5maWx0ZXJTZXJ2aWNlLnN1YnNjcmliZVRvRGF0YUZpbHRlclVwZGF0ZSgoZGF0ZVJhbmdlOiBEYXRlW10gfCBudWxsKSA9PiB7XHJcbiAgICAgIGlmIChkYXRlUmFuZ2UgJiYgZGF0ZVJhbmdlLmxlbmd0aCA9PT0gMikge1xyXG4gICAgICAgIC8vIDEuIENvbnZlcnQgSlMgRGF0ZSBvYmplY3RzIHRvIE5nYkRhdGUgZm9yIGRpc3BsYXlcclxuICAgICAgICBjb25zdCBmcm9tID0gZGF0ZVJhbmdlWzBdLmdldFRpbWUoKTtcclxuICAgICAgICBjb25zdCB0byA9IGRhdGVSYW5nZVsxXS5nZXRUaW1lKCk7XHJcblxyXG4gICAgICAgIHRoaXMuZnJvbURhdGUgPSB0aGlzLmdldE5nYkRhdGUoZnJvbSk7XHJcbiAgICAgICAgdGhpcy50b0RhdGUgPSB0aGlzLmdldE5nYkRhdGUodG8pO1xyXG5cclxuICAgICAgICAvLyAyLiBVcGRhdGUgbG9jYWwgY2FjaGUgcmVmZXJlbmNlIHRvIHByZXZlbnQgdGhlIFwiQXBwbHlcIiBidXR0b24gZnJvbSBhY3RpdmF0aW5nXHJcbiAgICAgICAgdGhpcy5jYWNoZSA9IHsgZnJvbSwgdG8gfTtcclxuXHJcbiAgICAgICAgLy8gMy4gVXBkYXRlIHZpc3VhbCBzdGF0ZVxyXG4gICAgICAgIHRoaXMuaXNEYXRlRmlsdGVyQXBwbGllZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5kYXRlQ2hhbmdlZCA9IGZhbHNlOyAvLyBXZSBjb25zaWRlciBpdCBzeW5jaHJvbml6ZWRcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBJZiB0aGUgZmlsdGVyIGlzIGNsZWFyZWQgZXh0ZXJuYWxseVxyXG4gICAgICAgIHRoaXMuZnJvbURhdGUgPSBudWxsO1xyXG4gICAgICAgIHRoaXMudG9EYXRlID0gbnVsbDtcclxuICAgICAgICB0aGlzLmlzRGF0ZUZpbHRlckFwcGxpZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNhY2hlID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uU2VhcmNoS2V5ZG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykgdGhpcy5vblN1Ym1pdCgpO1xyXG4gIH07XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuc2VhcmNoSW5wdXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbWFpblNlYXJjaEJhcicpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICB0aGlzLnNlYXJjaElucHV0Py5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5vblNlYXJjaEtleWRvd24pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnNlYXJjaElucHV0Py5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5vblNlYXJjaEtleWRvd24pO1xyXG4gICAgdGhpcy51c2VyU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5uYXZTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmNoYW5nZVBvc2l0aW9uU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5maWx0ZXJTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBzaWduT3V0KCkge1xyXG4gICAgYXdhaXQgdGhpcy51c2VyU2VydmljZS5sb2dvdXRDdXJyZW50QW5kU2lnbk91dEF1dGgoKTtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnYXV0aCddKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHVwZGF0ZSgpIHtcclxuICAgIHRoaXMudXNlciA9IHRoaXMudXNlclNlcnZpY2UuY3U7XHJcbiAgICB0aGlzLm1pc3Npb24gPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9uc1swXTtcclxuICAgIHRoaXMuaXNNYW5hZ2VyID0gdGhpcy51c2VyU2VydmljZS5oYXNNYW5hZ2VyUm9sZUluQW55TWlzc2lvbigpO1xyXG4gICAgdGhpcy5pc1Zpc2l0b3IgPSB0aGlzLnVzZXJTZXJ2aWNlLmlzVmlzaXRvcigpO1xyXG4gICAgaWYgKCF0aGlzLmlzVmlzaXRvcikge1xyXG4gICAgICB0aGlzLmlzVmlzaWJsZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2xhc3MtbWV0aG9kcy11c2UtdGhpc1xyXG4gIG9uU3VibWl0KCkge1xyXG4gICAgY29uc3QgaW5wdXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbWFpblNlYXJjaEJhcicpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBjb25zdCBzZWFyY2hWYWx1ZSA9IGlucHV0LnZhbHVlLnRvTG93ZXJDYXNlKCk7XHJcbiAgICBpZiAoc2VhcmNoVmFsdWUgIT09ICcnKSB7XHJcbiAgICAgIGNvbnN0IGJhc2VVcmwgPSBsb2NhdGlvbi5vcmlnaW47XHJcbiAgICAgIHdpbmRvdy5vcGVuKGAke2Jhc2VVcmx9L2Rhc2hib2FyZC9zZWFyY2g/dGVybT0ke3NlYXJjaFZhbHVlfWAsICdfYmxhbmsnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uVG9nZ2xlVmlzaWJsZSgpIHtcclxuICAgIHRoaXMuaXNWaXNpYmxlID0gIXRoaXMuaXNWaXNpYmxlO1xyXG4gIH1cclxuXHJcbiAgb3BlblN1cHBvcnRGb3JtKCkge1xyXG4gICAgdGhpcy5zdXBwb3J0U2VydmljZS5vcGVuU3VwcG9ydEZvcm0oU3VwcG9ydE1vZGFsQ29tcG9uZW50KTtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlUG9zaXRpb25DbGljaygpIHtcclxuICAgIHRoaXMuYmFzZVZpc2liaWxpdHlTZXJ2aWNlLmlzQ2hhbmdlUG9zaXRpb25WaXNpYmxlLm5leHQoXHJcbiAgICAgICF0aGlzLmlzQ2hhbmdlUG9zaXRpb25WaXNpYmxlXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0TmdiRGF0ZShkYXRlOiBudW1iZXIpOiBOZ2JEYXRlIHtcclxuICAgIGxldCBkdCA9IG5ldyBEYXRlKGRhdGUpO1xyXG4gICAgZHQuc2V0TWludXRlcyhkdC5nZXRNaW51dGVzKCkgLSBkdC5nZXRUaW1lem9uZU9mZnNldCgpKTsgLy8gY29udmVydCB0byBVVENcclxuICAgIHJldHVybiBuZXcgTmdiRGF0ZShcclxuICAgICAgZHQuZ2V0VVRDRnVsbFllYXIoKSxcclxuICAgICAgZHQuZ2V0VVRDTW9udGgoKSArIDEsXHJcbiAgICAgIGR0LmdldFVUQ0RhdGUoKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG9uRGF0ZVNlbGVjdGlvbihkYXRlOiBOZ2JEYXRlKSB7XHJcbiAgICBpZiAoIXRoaXMuZnJvbURhdGUgJiYgIXRoaXMudG9EYXRlKSB7XHJcbiAgICAgIHRoaXMuZnJvbURhdGUgPSBkYXRlO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgdGhpcy5mcm9tRGF0ZSAmJlxyXG4gICAgICAhdGhpcy50b0RhdGUgJiZcclxuICAgICAgZGF0ZSAmJlxyXG4gICAgICBkYXRlLmFmdGVyKHRoaXMuZnJvbURhdGUpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy50b0RhdGUgPSBkYXRlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50b0RhdGUgPSBudWxsO1xyXG4gICAgICB0aGlzLmZyb21EYXRlID0gZGF0ZTtcclxuICAgIH1cclxuICAgIHRoaXMuaXNEYXRlQ2hhbmdlZCgpO1xyXG4gIH1cclxuXHJcbiAgaXNEYXRlQ2hhbmdlZCgpIHtcclxuICAgIGlmICh0aGlzLmZyb21EYXRlICYmIHRoaXMudG9EYXRlKSB7XHJcbiAgICAgIGlmICh0aGlzLmNhY2hlKSB7XHJcbiAgICAgICAgdGhpcy5kYXRlQ2hhbmdlZCA9XHJcbiAgICAgICAgICAhdGhpcy5mcm9tRGF0ZS5lcXVhbHModGhpcy5nZXROZ2JEYXRlKHRoaXMuY2FjaGUuZnJvbSkpIHx8XHJcbiAgICAgICAgICAhdGhpcy50b0RhdGUuZXF1YWxzKHRoaXMuZ2V0TmdiRGF0ZSh0aGlzLmNhY2hlLnRvKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzSG92ZXJlZChkYXRlOiBOZ2JEYXRlKSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLmZyb21EYXRlICYmXHJcbiAgICAgICF0aGlzLnRvRGF0ZSAmJlxyXG4gICAgICB0aGlzLmhvdmVyZWREYXRlICYmXHJcbiAgICAgIGRhdGUuYWZ0ZXIodGhpcy5mcm9tRGF0ZSkgJiZcclxuICAgICAgZGF0ZS5iZWZvcmUodGhpcy5ob3ZlcmVkRGF0ZSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBpc0luc2lkZShkYXRlOiBOZ2JEYXRlKSB7XHJcbiAgICByZXR1cm4gdGhpcy50b0RhdGUgJiYgZGF0ZS5hZnRlcih0aGlzLmZyb21EYXRlKSAmJiBkYXRlLmJlZm9yZSh0aGlzLnRvRGF0ZSk7XHJcbiAgfVxyXG5cclxuICBpc1JhbmdlKGRhdGU6IE5nYkRhdGUpIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIGRhdGUuZXF1YWxzKHRoaXMuZnJvbURhdGUpIHx8XHJcbiAgICAgICh0aGlzLnRvRGF0ZSAmJiBkYXRlLmVxdWFscyh0aGlzLnRvRGF0ZSkpIHx8XHJcbiAgICAgIHRoaXMuaXNJbnNpZGUoZGF0ZSkgfHxcclxuICAgICAgdGhpcy5pc0hvdmVyZWQoZGF0ZSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZUlucHV0KGN1cnJlbnRWYWx1ZTogTmdiRGF0ZSB8IG51bGwsIGlucHV0OiBzdHJpbmcpOiBOZ2JEYXRlIHwgbnVsbCB7XHJcbiAgICBjb25zdCBwYXJzZWQgPSB0aGlzLmZvcm1hdHRlci5wYXJzZShpbnB1dCk7XHJcbiAgICByZXR1cm4gcGFyc2VkICYmIHRoaXMuY2FsZW5kYXIuaXNWYWxpZChOZ2JEYXRlLmZyb20ocGFyc2VkKSlcclxuICAgICAgPyBOZ2JEYXRlLmZyb20ocGFyc2VkKVxyXG4gICAgICA6IGN1cnJlbnRWYWx1ZTtcclxuICB9XHJcblxyXG4gIGVtaXRSYW5nZSgpIHtcclxuICAgIGlmICh0aGlzLmZyb21EYXRlICYmIHRoaXMudG9EYXRlKSB7XHJcbiAgICAgIGNvbnN0IGZyb20gPSBuZXcgRGF0ZShcclxuICAgICAgICB0aGlzLmZyb21EYXRlLnllYXIsXHJcbiAgICAgICAgdGhpcy5mcm9tRGF0ZS5tb250aCAtIDEsXHJcbiAgICAgICAgdGhpcy5mcm9tRGF0ZS5kYXlcclxuICAgICAgKTtcclxuICAgICAgY29uc3QgdG8gPSBuZXcgRGF0ZShcclxuICAgICAgICB0aGlzLnRvRGF0ZS55ZWFyLFxyXG4gICAgICAgIHRoaXMudG9EYXRlLm1vbnRoIC0gMSxcclxuICAgICAgICB0aGlzLnRvRGF0ZS5kYXksXHJcbiAgICAgICAgMjMsXHJcbiAgICAgICAgNTlcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5jYWNoZVNlcnZpY2UucHV0SW5DYWNoZSh0aGlzLmNhY2hlTmFtZSwge1xyXG4gICAgICAgIGZyb206IGZyb20uZ2V0VGltZSgpLFxyXG4gICAgICAgIHRvOiB0by5nZXRUaW1lKCksXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmNhY2hlID0geyBmcm9tOiBmcm9tLmdldFRpbWUoKSwgdG86IHRvLmdldFRpbWUoKSB9O1xyXG4gICAgICB0aGlzLmZpbHRlclNlcnZpY2UuZGF0ZUZpbHRlclVwZGF0ZWQoW2Zyb20sIHRvXSk7XHJcbiAgICAgIHRoaXMuaXNEYXRlRmlsdGVyQXBwbGllZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuZGF0ZUNoYW5nZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2xlYXJEYXRlcygpIHtcclxuICAgIHRoaXMuZnJvbURhdGUgPSBudWxsO1xyXG4gICAgdGhpcy50b0RhdGUgPSBudWxsO1xyXG4gICAgdGhpcy5pc0RhdGVGaWx0ZXJBcHBsaWVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmNhY2hlID0gbnVsbDtcclxuICAgIHRoaXMuY2FjaGVTZXJ2aWNlLnJlbW92ZUZyb21DYWNoZSh0aGlzLmNhY2hlTmFtZSk7XHJcbiAgICB0aGlzLmZpbHRlclNlcnZpY2UuZGF0ZUZpbHRlclVwZGF0ZWQobnVsbCk7XHJcbiAgfVxyXG5cclxuICBvbkFwcGx5KCkge1xyXG4gICAgaWYgKHRoaXMuZnJvbURhdGUgJiYgdGhpcy50b0RhdGUpIHtcclxuICAgICAgdGhpcy5lbWl0UmFuZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICAvL3RyYW5zZm9ybSBuZ2JEYXRlIHRvIGRhdGUgb2JqZXQgdGhlbiBwdXQgZGF0ZXMgaW4gdGltZXN0YW1wIGluIGxvY2FsU3RvcmFnZSB0byBzaGFyZSBpdCB3aXRoIFJldG9vbFxyXG4gICAgaWYgKHRoaXMuZnJvbURhdGUpIHtcclxuICAgICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoXHJcbiAgICAgICAgdGhpcy5mcm9tRGF0ZS55ZWFyLFxyXG4gICAgICAgIHRoaXMuZnJvbURhdGUubW9udGggLSAxLFxyXG4gICAgICAgIHRoaXMuZnJvbURhdGUuZGF5XHJcbiAgICAgICk7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzdGFydERhdGUnLCBzdGFydERhdGUuZ2V0VGltZSgpLnRvU3RyaW5nKCkpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudG9EYXRlKSB7XHJcbiAgICAgIGNvbnN0IGVuZERhdGUgPSBuZXcgRGF0ZShcclxuICAgICAgICB0aGlzLnRvRGF0ZS55ZWFyLFxyXG4gICAgICAgIHRoaXMudG9EYXRlLm1vbnRoIC0gMSxcclxuICAgICAgICB0aGlzLnRvRGF0ZS5kYXlcclxuICAgICAgKTtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2VuZERhdGUnLCBlbmREYXRlLmdldFRpbWUoKS50b1N0cmluZygpKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBpZD1cIm1lbnUtYmFyXCI+XHJcbiAgPGRpdiAqbmdJZj1cIiFpc1Zpc2l0b3JcIj5cclxuICAgIDxuYXYgY2xhc3M9XCJuYXZiYXIgbmF2YmFyLWV4cGFuZC1tZCBuYXZiYXItbGlnaHQgcC0wXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIiAqbmdJZj1cImlzVmlzaWJsZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJuYXZiYXItYnJhbmQgb3JkZXItbWQtMFwiIFtyb3V0ZXJMaW5rXT1cIlsnL2Rhc2hib2FyZCddXCI+XHJcbiAgICAgICAgICA8aW1nIGFsdD1cIlNtYXJ0ZXJQbGFuXCIgc3JjPVwiLi4vYXNzZXRzL2ltYWdlcy9sb2dvcy9sb2dvLWltbW8ucG5nXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1zLWF1dG8gbmF2LWl0ZW0gZHJvcGRvd24gcHJvZmlsZV9waWMtY29udGFpbmVyIG9yZGVyLW1kLTJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9maWxlX3BpYyBkcm9wZG93bi10b2dnbGVcIiBkYXRhLXRlc3RpZD1cImRyb3Bkb3duLW1lbnUtYnV0dG9uXCIgZGF0YS1icy10b2dnbGU9XCJkcm9wZG93blwiPlxyXG4gICAgICAgICAgICA8bGliLWF2YXRhcj48L2xpYi1hdmF0YXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51IGRyb3Bkb3duLW1lbnUtcmlnaHRcIj5cclxuICAgICAgICAgICAgPHAgKm5nSWY9XCJ1c2VyICYmIG1pc3Npb25cIiBjbGFzcz1cInAtMlwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXNlcm5hbWVcIj57eyB1c2VyLmRpc3BsYXlOYW1lIH19PC9zcGFuPjxiciAvPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXNlci1yb2xlXCI+e3sgbWlzc2lvbi5yb2xlIH19PC9zcGFuPjxiciAvPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3JnXCI+e3sgbWlzc2lvbi5vcmdhbmlzYXRpb24gPyBtaXNzaW9uLm9yZ2FuaXNhdGlvbi5uYW1lIDogXCJObyBvcmdhbmlzYXRpb25cIiB8XHJcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIHJvdXRlckxpbms9XCIvZGVidWdcIiAqbmdJZj1cImlzTWFuYWdlclwiPkRlYnVnPC9hPiAtLT5cclxuICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cImxvY2FsZVNlcnZpY2UubW9kYWwoKVwiPnt7J0xhbmd1YWdlJyB8IHRyYW5zbGF0ZX19PC9hPlxyXG4gICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiByb3V0ZXJMaW5rPVwiL2Rhc2hib2FyZFwiPnt7J0RhdGEgbWFuYWdlbWVudCcgfCB0cmFuc2xhdGV9fTwvYT5cclxuICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgZGF0YS10ZXN0aWQ9XCJ1c2VyLW1hbmFnZW1lbnQtYnRuXCIgcm91dGVyTGluaz1cIi9hZG1pblwiICpuZ0lmPVwiaXNNYW5hZ2VyXCI+XHJcbiAgICAgICAgICAgICAge3snVXNlcnMgbWFuYWdlbWVudCcgfCB0cmFuc2xhdGV9fTwvYT5cclxuICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgcm91dGVyTGluaz1cIi9wcm9maWxlXCI+XHJcbiAgICAgICAgICAgICAge3snUHJvZmlsZScgfCB0cmFuc2xhdGV9fTwvYT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiAoY2xpY2spPVwib3BlblN1cHBvcnRGb3JtKClcIj57e1wiSGVscFwiIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBkYXRhLXRlc3RpZD1cImxvZ291dC1hdXRoLWJ0blwiIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIChjbGljayk9XCJzaWduT3V0KClcIj57e1wiTG9nb3V0XCIgfFxyXG4gICAgICAgICAgICAgIHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwibmF2YmFyLXRvZ2dsZXIgb3JkZXItbWQtMVwiIChjbGljayk9XCJuYXZiYXJDb2xsYXBzZS50b2dnbGUoKVwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCIhaXNDb2xsYXBzZWRcIiBhcmlhLWNvbnRyb2xzPVwibmF2YmFyLWNvbGxhcHNlXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hdmJhci10b2dnbGVyLWljb25cIj48L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5hdmJhci1jb2xsYXBzZSBvcmRlci1tZC0xXCIgI25hdmJhckNvbGxhcHNlPVwibmdiQ29sbGFwc2VcIiBbKG5nYkNvbGxhcHNlKV09XCJpc0NvbGxhcHNlZFwiXHJcbiAgICAgICAgICBbYW5pbWF0aW9uXT1cImZhbHNlXCI+XHJcbiAgICAgICAgICA8Zm9ybVxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0taW5saW5lIG0tMCBtdC0yIGZvcm0tY29udGFpbmVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtc3RhcnQgYWxpZ24taXRlbXMtbWQtY2VudGVyIGZsZXgtY29sdW1uIGZsZXgtbWQtcm93IGZsZXgtbm93cmFwIGZpbHRlcnMtbWVudS1ibG9ja1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgc2VhcmNoLWJ1dHRvbi1jb250YWluZXIgZC1mbGV4IGZsZXgtcm93IGZsZXgtbm93cmFwIHAtMCBtLTBcIj5cclxuICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgc2VhcmNoLWJ1dHRvbiBtLTFcIiBwbGFjZWhvbGRlcj1cImtleXdvcmRcIiBpZD1cIm1haW5TZWFyY2hCYXJcIiB0eXBlPVwidGV4dFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSByb3VuZGVkLXBpbGwgbS0xIHctZml0LWNvbnRlbnQgaC1maXQtY29udGVudCBhbGlnbi1zZWxmLW1kLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TdWJtaXQoKVwiPnt7J1NlYXJjaCcgfFxyXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBzZWFyY2gtYnV0dG9uLWNvbnRhaW5lciBkLWZsZXggZmxleC1yb3cgZmxleC1ub3dyYXAgcC0wIG0tMFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBkYXRlLXNlbGVjdG9yIG0tMVwiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0ICNkcEZyb21EYXRlIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXI9XCJkZC9NTS95eXl5XCIgbmFtZT1cImRwRnJvbURhdGVcIlxyXG4gICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZnJvbURhdGUgfCBmb3JtYXREYXRlTnVtYmVyVG9EaWdpdHNcIlxyXG4gICAgICAgICAgICAgICAgICAoaW5wdXQpPVwiZnJvbURhdGUgPSB2YWxpZGF0ZUlucHV0KGZyb21EYXRlLCBkcEZyb21EYXRlLnZhbHVlKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBjYWxlbmRhclwiIChjbGljayk9XCJkYXRlcGlja2VyLnRvZ2dsZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cImRhdGVwaWNrZXJcIiBjbGFzcz1cImZvcm0tY29udHJvbCB2aXN1YWxseS1oaWRkZW5cIiBuZ2JEYXRlcGlja2VyICNkYXRlcGlja2VyPVwibmdiRGF0ZXBpY2tlclwiXHJcbiAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiIChkYXRlU2VsZWN0KT1cIm9uRGF0ZVNlbGVjdGlvbigkZXZlbnQpXCIgW2Rpc3BsYXlNb250aHNdPVwiMlwiIFtkYXlUZW1wbGF0ZV09XCJ0XCJcclxuICAgICAgICAgICAgICAgIG91dHNpZGVEYXlzPVwiaGlkZGVuXCIgW3N0YXJ0RGF0ZV09XCJmcm9tRGF0ZSB8fCBjYWxlbmRhci5nZXRUb2RheSgpXCIgW2NvbnRhaW5lcl09XCInYm9keSdcIiB0YWJpbmRleD1cIi0xXCI+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0IGxldC1kYXRlIGxldC1mb2N1c2VkPVwiZm9jdXNlZFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGF5XCIgW2NsYXNzLmZvY3VzZWRdPVwiZm9jdXNlZFwiIFtjbGFzcy5yYW5nZV09XCJpc1JhbmdlKGRhdGUpXCJcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmZhZGVkXT1cImlzSG92ZXJlZChkYXRlKSB8fCBpc0luc2lkZShkYXRlKVwiIChtb3VzZWVudGVyKT1cImhvdmVyZWREYXRlID0gZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cImhvdmVyZWREYXRlID0gbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyBkYXRlLmRheSB9fVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0xIHAtMlwiPnt7J3RvJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBkYXRlLXNlbGVjdG9yIG0tMVwiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0ICNkcFRvRGF0ZSBjbGFzcz1cImZvcm0tY29udHJvbFwiIHBsYWNlaG9sZGVyPVwiZGQvTU0veXl5eVwiIG5hbWU9XCJkcFRvRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ0b0RhdGUgfCBmb3JtYXREYXRlTnVtYmVyVG9EaWdpdHNcIiAoaW5wdXQpPVwidG9EYXRlID0gdmFsaWRhdGVJbnB1dCh0b0RhdGUsIGRwVG9EYXRlLnZhbHVlKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBjYWxlbmRhclwiIChjbGljayk9XCJkYXRlcGlja2VyLnRvZ2dsZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBzZWFyY2gtYnV0dG9uLWNvbnRhaW5lciBkLWZsZXggZmxleC1yb3cgZmxleC1ub3dyYXAgcC0wIG0tMSBqdXN0aWZ5LWNvbnRlbnQtZXZlbmx5XCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcm91bmRlZC1waWxsIG1zLTEgdy0yNSB3LW1kLWZpdC1jb250ZW50IGgtbWQtZml0LWNvbnRlbnQgYWxpZ24tc2VsZi1tZC1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbkFwcGx5KClcIiAqbmdJZj1cIiFpc0RhdGVGaWx0ZXJBcHBsaWVkIHx8IGRhdGVDaGFuZ2VkXCI+XHJcbiAgICAgICAgICAgICAgICB7eydBcHBseScgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFwcGxpZWRUZXh0IG1zLTEgcHktMiBhbGlnbi1zZWxmLW1kLWNlbnRlciBwYi1tZC0wIG14LTIgdy1tZC1maXQtY29udGVudCBoLW1kLWZpdC1jb250ZW50IGFsaWduLXNlbGYtbWQtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNEYXRlRmlsdGVyQXBwbGllZCAmJiAhZGF0ZUNoYW5nZWRcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbmlmeVwiIGRhdGEtaWNvbj1cImlvbjpjaGVja21hcmtcIiBkYXRhLXdpZHRoPVwiMTVcIiBkYXRhLWhlaWdodD1cIjE1XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAge3tcIkFwcGxpZWRcIiB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsIHctMjUgbXgtMiB3LW1kLWZpdC1jb250ZW50IGgtbWQtZml0LWNvbnRlbnQgYWxpZ24tc2VsZi1tZC1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbkNsZWFyRGF0ZXMoKVwiPnt7J0NsZWFyJ1xyXG4gICAgICAgICAgICAgICAgfFxyXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoYW5nZS1wb3NpdGlvbi1idXR0b24gYWxpZ24tc2VsZi1lbmQgcGItMiBhbGlnbi1zZWxmLW1kLWNlbnRlciBteC0yIHBiLW1kLTAgZmxleC1ub3dyYXAgdy0yNSB3LW1kLWZpdC1jb250ZW50IGgtbWQtZml0LWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cImJ0bi1jaGVja1wiIGlkPVwiYnRuLWNoZWNrLW91dGxpbmVkXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJsaW5rLXByaW1hcnkgY3Vyc29yLXBvaW50ZXIgdGV4dC1kZWNvcmF0aW9uLXVuZGVybGluZVwiIChjbGljayk9XCJvbkNoYW5nZVBvc2l0aW9uQ2xpY2soKVwiXHJcbiAgICAgICAgICAgICAgICAgIGZvcj1cImJ0bi1jaGVjay1vdXRsaW5lZFwiPnt7XHJcbiAgICAgICAgICAgICAgICAgIChpc0NoYW5nZVBvc2l0aW9uVmlzaWJsZSA/IFwiQ2xvc2VcIiA6IFwiTW92ZSB0b1wiKSB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmF2PlxyXG4gICAgPGxpYi1uYXZpZ2F0aW9uLWJhciAqbmdJZj1cImlzVmlzaWJsZSAmJiBpc0NoYW5nZVBvc2l0aW9uVmlzaWJsZVwiPjwvbGliLW5hdmlnYXRpb24tYmFyPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJpc1Zpc2l0b3IgJiYgaXNWaXNpYmxlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidmlzaXRvci1kaXZcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImxvZ28tY29udGFpbmVyXCIgZGF0YS10ZXN0aWQ9XCJkcm9wZG93bi1tZW51LWJ1dHRvblwiPlxyXG4gICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiIGFsdD1cIlNtYXJ0ZXJQbGFuTG9nb1wiIHNyYz1cIi4uL2Fzc2V0cy9pbWFnZXMvbG9nb3MvbG9nby1yZXNlcnZlLnBuZ1wiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jb250YWluZXItbWVudVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcm9maWxlX3BpYyBkcm9wZG93bi10b2dnbGUgY3Vyc29yLXBvaW50ZXJcIiBkYXRhLWJzLXRvZ2dsZT1cImRyb3Bkb3duXCI+XHJcbiAgICAgICAgICA8bGliLWF2YXRhcj48L2xpYi1hdmF0YXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnUgZHJvcGRvd24tbWVudS1yaWdodFwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiAoY2xpY2spPVwibG9jYWxlU2VydmljZS5tb2RhbCgpXCI+e3snTGFuZ3VhZ2UnIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cIm9wZW5TdXBwb3J0Rm9ybSgpXCI+e3tcIkhlbHBcIiB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGRhdGEtdGVzdGlkPVwibG9nb3V0LWF1dGgtYnRuXCIgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cInNpZ25PdXQoKVwiPnt7XCJMb2dvdXRcIiB8XHJcbiAgICAgICAgICAgIHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
238
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1iYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL21lbnUtYmFyL21lbnUtYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9tZW51LWJhci9tZW51LWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVF6RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUVqRixPQUFPLEVBQ0wsT0FBTyxHQUdSLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBU3BDLE1BQU0sT0FBTyxnQkFBZ0I7SUF1QzNCLFlBQ1UsTUFBYyxFQUNmLGFBQTRCLEVBQzNCLFdBQTRCLEVBQzVCLGdCQUFrQyxFQUNsQyxjQUE4QixFQUM5QixxQkFBNEMsRUFDN0MsUUFBcUIsRUFDckIsU0FBaUMsRUFDaEMsYUFBNEIsRUFDNUIsWUFBaUM7UUFUakMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNmLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzNCLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzdDLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDckIsY0FBUyxHQUFULFNBQVMsQ0FBd0I7UUFDaEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBNUNwQyxnQkFBVyxHQUFHLElB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USxFQUFFLENBQUMsQ0FBQztTQUNuRTtRQUNELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLE1BQU0sT0FBTyxHQUFHLElBQUksSUFBSSxDQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FDaEIsQ0FBQztZQUNGLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1NBQy9EO0lBQ0gsQ0FBQzs7OEdBM1NVLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLHdGQ3ZCN0Isd2xRQTZITTs0RkR0R08sZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLGNBQWM7b1hBNkJmLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IExvY2FsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2NhbGUuc2VydmljZSc7XHJcbmltcG9ydCB7IE5hdmlnYXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9uYXZpZ2F0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7IFN1cHBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3VwcG9ydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFzZVVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXNlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJvZmlsZUVudGl0eSwgTWlzc2lvbiB9IGZyb20gJy4uLy4uL3R5cGVzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdXBwb3J0TW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9zdXBwb3J0LW1vZGFsL3N1cHBvcnQtbW9kYWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQmFzZVZpc2liaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYmFzZVZpc2liaWxpdHkuc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgTmdiRGF0ZSxcclxuICBOZ2JDYWxlbmRhcixcclxuICBOZ2JEYXRlUGFyc2VyRm9ybWF0dGVyLFxyXG59IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgQW1wbGlmeUNhY2hlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FtcGxpZnktY2FjaGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEZpbHRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9maWx0ZXIuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1tZW51LWJhcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21lbnUtYmFyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9tZW51LWJhci5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWVudUJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgdXNlcjogUHJvZmlsZUVudGl0eTtcclxuXHJcbiAgbWlzc2lvbjogTWlzc2lvbjtcclxuXHJcbiAgcHVibGljIGlzQ29sbGFwc2VkID0gdHJ1ZTtcclxuXHJcbiAgaXNWaXNpdG9yID0gdHJ1ZTtcclxuXHJcbiAgaXNWaXNpYmxlID0gZmFsc2U7XHJcblxyXG4gIGlzQ2hhbmdlUG9zaXRpb25WaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGlzTWFuYWdlcjogYm9vbGVhbjtcclxuXHJcbiAgdXNlclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBuYXZTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgaG92ZXJlZERhdGU6IE5nYkRhdGUgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgZnJvbURhdGU6IE5nYkRhdGUgfCBudWxsO1xyXG5cclxuICB0b0RhdGU6IE5nYkRhdGUgfCBudWxsO1xyXG5cclxuICBASW5wdXQoKSBjYWNoZU5hbWU6IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIGNhY2hlOiB7IGZyb206IG51bWJlcjsgdG86IG51bWJlciB9IHwgbnVsbDtcclxuXHJcbiAgaXNEYXRlRmlsdGVyQXBwbGllZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBkYXRlQ2hhbmdlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjaGFuZ2VQb3NpdGlvblN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgcHJpdmF0ZSBzZWFyY2hJbnB1dD86IEhUTUxJbnB1dEVsZW1lbnQ7XHJcblxyXG4gIGZpbHRlclN1YnNjcmlwdGlvblxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwdWJsaWMgbG9jYWxlU2VydmljZTogTG9jYWxlU2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IEJhc2VVc2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgbmF2aWdhdG9yU2VydmljZTogTmF2aWdhdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgc3VwcG9ydFNlcnZpY2U6IFN1cHBvcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBiYXNlVmlzaWJpbGl0eVNlcnZpY2U6IEJhc2VWaXNpYmlsaXR5U2VydmljZSxcclxuICAgIHB1YmxpYyBjYWxlbmRhcjogTmdiQ2FsZW5kYXIsXHJcbiAgICBwdWJsaWMgZm9ybWF0dGVyOiBOZ2JEYXRlUGFyc2VyRm9ybWF0dGVyLFxyXG4gICAgcHJpdmF0ZSBmaWx0ZXJTZXJ2aWNlOiBGaWx0ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjYWNoZVNlcnZpY2U6IEFtcGxpZnlDYWNoZVNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMudXNlclN1YnNjcmlwdGlvbiA9IHRoaXMudXNlclNlcnZpY2UuaXNDaGFuZ2VkLnN1YnNjcmliZShcclxuICAgICAgKGlzQ2hhbmdlZCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0NoYW5nZWQpIHtcclxuICAgICAgICAgIHRoaXMudXBkYXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgdGhpcy5uYXZTdWJzY3JpcHRpb24gPSB0aGlzLm5hdmlnYXRvclNlcnZpY2UuaXNWaXNpYmxlQ2hhbmdlZC5zdWJzY3JpYmUoXHJcbiAgICAgIChkYXRhKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1Zpc2libGUgPSBkYXRhO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuY2hhbmdlUG9zaXRpb25TdWJzY3JpcHRpb24gPSB0aGlzLmJhc2VWaXNpYmlsaXR5U2VydmljZS5pc0NoYW5nZVBvc2l0aW9uVmlzaWJsZS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgdGhpcy5pc0NoYW5nZVBvc2l0aW9uVmlzaWJsZSA9IGRhdGE7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy51cGRhdGUoKTtcclxuXHJcbiAgICBpZiAodGhpcy5jYWNoZU5hbWUpIHtcclxuICAgICAgdGhpcy5jYWNoZSA9IHRoaXMuY2FjaGVTZXJ2aWNlLmdldEZyb21DYWNoZSh0aGlzLmNhY2hlTmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY2FjaGUpIHtcclxuICAgICAgdGhpcy5pc0RhdGVGaWx0ZXJBcHBsaWVkID0gdHJ1ZTtcclxuICAgICAgbGV0IHsgZnJvbSwgdG8gfSA9IHRoaXMuY2FjaGU7XHJcbiAgICAgIHRoaXMudG9EYXRlID0gdGhpcy5nZXROZ2JEYXRlKHRvKTtcclxuICAgICAgdGhpcy5mcm9tRGF0ZSA9IHRoaXMuZ2V0TmdiRGF0ZShmcm9tKTtcclxuXHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzdGFydERhdGUnLCBmcm9tLnRvU3RyaW5nKCkpO1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZW5kRGF0ZScsIHRvLnRvU3RyaW5nKCkpO1xyXG4gICAgICB0aGlzLmZpbHRlclNlcnZpY2UuZGF0ZUZpbHRlclVwZGF0ZWQoW25ldyBEYXRlKGZyb20pLCBuZXcgRGF0ZSh0byldKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZnJvbURhdGUgPSBudWxsO1xyXG4gICAgICB0aGlzLnRvRGF0ZSA9IG51bGw7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdzdGFydERhdGUnKTtcclxuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2VuZERhdGUnKTtcclxuXHJcbiAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5kYXRlRmlsdGVyVXBkYXRlZChudWxsKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUaGlzIGFsbG93cyB1cGRhdGluZyB0aGUgaW5wdXRzIHdoZW4gbWVhc3VyZW1lbnQuc2VydmljZSBjaGFuZ2VzIHRoZSBkYXRlIHByb2dyYW1tYXRpY2FsbHlcclxuICAgIHRoaXMuZmlsdGVyU3Vic2NyaXB0aW9uID0gdGhpcy5maWx0ZXJTZXJ2aWNlLnN1YnNjcmliZVRvRGF0YUZpbHRlclVwZGF0ZSgoZGF0ZVJhbmdlOiBEYXRlW10gfCBudWxsKSA9PiB7XHJcbiAgICAgIGlmIChkYXRlUmFuZ2UgJiYgZGF0ZVJhbmdlLmxlbmd0aCA9PT0gMikge1xyXG4gICAgICAgIC8vIDEuIENvbnZlcnQgSlMgRGF0ZSBvYmplY3RzIHRvIE5nYkRhdGUgZm9yIGRpc3BsYXlcclxuICAgICAgICBjb25zdCBmcm9tID0gZGF0ZVJhbmdlWzBdLmdldFRpbWUoKTtcclxuICAgICAgICBjb25zdCB0byA9IGRhdGVSYW5nZVsxXS5nZXRUaW1lKCk7XHJcblxyXG4gICAgICAgIHRoaXMuZnJvbURhdGUgPSB0aGlzLmdldE5nYkRhdGUoZnJvbSk7XHJcbiAgICAgICAgdGhpcy50b0RhdGUgPSB0aGlzLmdldE5nYkRhdGUodG8pO1xyXG5cclxuICAgICAgICAvLyAyLiBVcGRhdGUgbG9jYWwgY2FjaGUgcmVmZXJlbmNlIHRvIHByZXZlbnQgdGhlIFwiQXBwbHlcIiBidXR0b24gZnJvbSBhY3RpdmF0aW5nXHJcbiAgICAgICAgdGhpcy5jYWNoZSA9IHsgZnJvbSwgdG8gfTtcclxuXHJcbiAgICAgICAgLy8gMy4gVXBkYXRlIHZpc3VhbCBzdGF0ZVxyXG4gICAgICAgIHRoaXMuaXNEYXRlRmlsdGVyQXBwbGllZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5kYXRlQ2hhbmdlZCA9IGZhbHNlOyAvLyBXZSBjb25zaWRlciBpdCBzeW5jaHJvbml6ZWRcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBJZiB0aGUgZmlsdGVyIGlzIGNsZWFyZWQgZXh0ZXJuYWxseVxyXG4gICAgICAgIHRoaXMuZnJvbURhdGUgPSBudWxsO1xyXG4gICAgICAgIHRoaXMudG9EYXRlID0gbnVsbDtcclxuICAgICAgICB0aGlzLmlzRGF0ZUZpbHRlckFwcGxpZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNhY2hlID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uU2VhcmNoS2V5ZG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykgdGhpcy5vblN1Ym1pdCgpO1xyXG4gIH07XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuc2VhcmNoSW5wdXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbWFpblNlYXJjaEJhcicpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICB0aGlzLnNlYXJjaElucHV0Py5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5vblNlYXJjaEtleWRvd24pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnNlYXJjaElucHV0Py5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5vblNlYXJjaEtleWRvd24pO1xyXG4gICAgdGhpcy51c2VyU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5uYXZTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmNoYW5nZVBvc2l0aW9uU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5maWx0ZXJTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBzaWduT3V0KCkge1xyXG4gICAgYXdhaXQgdGhpcy51c2VyU2VydmljZS5sb2dvdXRDdXJyZW50QW5kU2lnbk91dEF1dGgoKTtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnYXV0aCddKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHVwZGF0ZSgpIHtcclxuICAgIHRoaXMudXNlciA9IHRoaXMudXNlclNlcnZpY2UuY3U7XHJcbiAgICB0aGlzLm1pc3Npb24gPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9uc1swXTtcclxuICAgIHRoaXMuaXNNYW5hZ2VyID0gdGhpcy51c2VyU2VydmljZS5oYXNNYW5hZ2VyUm9sZUluQW55TWlzc2lvbigpO1xyXG4gICAgdGhpcy5pc1Zpc2l0b3IgPSB0aGlzLnVzZXJTZXJ2aWNlLmlzVmlzaXRvcigpO1xyXG4gICAgaWYgKCF0aGlzLmlzVmlzaXRvcikge1xyXG4gICAgICB0aGlzLmlzVmlzaWJsZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2xhc3MtbWV0aG9kcy11c2UtdGhpc1xyXG4gIG9uU3VibWl0KCkge1xyXG4gICAgY29uc3QgaW5wdXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbWFpblNlYXJjaEJhcicpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBjb25zdCBzZWFyY2hWYWx1ZSA9IGlucHV0LnZhbHVlLnRvTG93ZXJDYXNlKCk7XHJcbiAgICBpZiAoc2VhcmNoVmFsdWUgIT09ICcnKSB7XHJcbiAgICAgIGNvbnN0IGJhc2VVcmwgPSBsb2NhdGlvbi5vcmlnaW47XHJcbiAgICAgIHdpbmRvdy5vcGVuKGAke2Jhc2VVcmx9L2Rhc2hib2FyZC9zZWFyY2g/dGVybT0ke3NlYXJjaFZhbHVlfWAsICdfYmxhbmsnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uVG9nZ2xlVmlzaWJsZSgpIHtcclxuICAgIHRoaXMuaXNWaXNpYmxlID0gIXRoaXMuaXNWaXNpYmxlO1xyXG4gIH1cclxuXHJcbiAgb3BlblN1cHBvcnRGb3JtKCkge1xyXG4gICAgdGhpcy5zdXBwb3J0U2VydmljZS5vcGVuU3VwcG9ydEZvcm0oU3VwcG9ydE1vZGFsQ29tcG9uZW50KTtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlUG9zaXRpb25DbGljaygpIHtcclxuICAgIHRoaXMuYmFzZVZpc2liaWxpdHlTZXJ2aWNlLmlzQ2hhbmdlUG9zaXRpb25WaXNpYmxlLm5leHQoXHJcbiAgICAgICF0aGlzLmlzQ2hhbmdlUG9zaXRpb25WaXNpYmxlXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0TmdiRGF0ZShkYXRlOiBudW1iZXIpOiBOZ2JEYXRlIHtcclxuICAgIGxldCBkdCA9IG5ldyBEYXRlKGRhdGUpO1xyXG4gICAgZHQuc2V0TWludXRlcyhkdC5nZXRNaW51dGVzKCkgLSBkdC5nZXRUaW1lem9uZU9mZnNldCgpKTsgLy8gY29udmVydCB0byBVVENcclxuICAgIHJldHVybiBuZXcgTmdiRGF0ZShcclxuICAgICAgZHQuZ2V0VVRDRnVsbFllYXIoKSxcclxuICAgICAgZHQuZ2V0VVRDTW9udGgoKSArIDEsXHJcbiAgICAgIGR0LmdldFVUQ0RhdGUoKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG9uRGF0ZVNlbGVjdGlvbihkYXRlOiBOZ2JEYXRlKSB7XHJcbiAgICBpZiAoIXRoaXMuZnJvbURhdGUgJiYgIXRoaXMudG9EYXRlKSB7XHJcbiAgICAgIHRoaXMuZnJvbURhdGUgPSBkYXRlO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgdGhpcy5mcm9tRGF0ZSAmJlxyXG4gICAgICAhdGhpcy50b0RhdGUgJiZcclxuICAgICAgZGF0ZSAmJlxyXG4gICAgICBkYXRlLmFmdGVyKHRoaXMuZnJvbURhdGUpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy50b0RhdGUgPSBkYXRlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50b0RhdGUgPSBudWxsO1xyXG4gICAgICB0aGlzLmZyb21EYXRlID0gZGF0ZTtcclxuICAgIH1cclxuICAgIHRoaXMuaXNEYXRlQ2hhbmdlZCgpO1xyXG4gIH1cclxuXHJcbiAgaXNEYXRlQ2hhbmdlZCgpIHtcclxuICAgIGlmICh0aGlzLmZyb21EYXRlICYmIHRoaXMudG9EYXRlKSB7XHJcbiAgICAgIGlmICh0aGlzLmNhY2hlKSB7XHJcbiAgICAgICAgdGhpcy5kYXRlQ2hhbmdlZCA9XHJcbiAgICAgICAgICAhdGhpcy5mcm9tRGF0ZS5lcXVhbHModGhpcy5nZXROZ2JEYXRlKHRoaXMuY2FjaGUuZnJvbSkpIHx8XHJcbiAgICAgICAgICAhdGhpcy50b0RhdGUuZXF1YWxzKHRoaXMuZ2V0TmdiRGF0ZSh0aGlzLmNhY2hlLnRvKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzSG92ZXJlZChkYXRlOiBOZ2JEYXRlKSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLmZyb21EYXRlICYmXHJcbiAgICAgICF0aGlzLnRvRGF0ZSAmJlxyXG4gICAgICB0aGlzLmhvdmVyZWREYXRlICYmXHJcbiAgICAgIGRhdGUuYWZ0ZXIodGhpcy5mcm9tRGF0ZSkgJiZcclxuICAgICAgZGF0ZS5iZWZvcmUodGhpcy5ob3ZlcmVkRGF0ZSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBpc0luc2lkZShkYXRlOiBOZ2JEYXRlKSB7XHJcbiAgICByZXR1cm4gdGhpcy50b0RhdGUgJiYgZGF0ZS5hZnRlcih0aGlzLmZyb21EYXRlKSAmJiBkYXRlLmJlZm9yZSh0aGlzLnRvRGF0ZSk7XHJcbiAgfVxyXG5cclxuICBpc1JhbmdlKGRhdGU6IE5nYkRhdGUpIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIGRhdGUuZXF1YWxzKHRoaXMuZnJvbURhdGUpIHx8XHJcbiAgICAgICh0aGlzLnRvRGF0ZSAmJiBkYXRlLmVxdWFscyh0aGlzLnRvRGF0ZSkpIHx8XHJcbiAgICAgIHRoaXMuaXNJbnNpZGUoZGF0ZSkgfHxcclxuICAgICAgdGhpcy5pc0hvdmVyZWQoZGF0ZSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZUlucHV0KGN1cnJlbnRWYWx1ZTogTmdiRGF0ZSB8IG51bGwsIGlucHV0OiBzdHJpbmcpOiBOZ2JEYXRlIHwgbnVsbCB7XHJcbiAgICBjb25zdCBwYXJzZWQgPSB0aGlzLmZvcm1hdHRlci5wYXJzZShpbnB1dCk7XHJcbiAgICByZXR1cm4gcGFyc2VkICYmIHRoaXMuY2FsZW5kYXIuaXNWYWxpZChOZ2JEYXRlLmZyb20ocGFyc2VkKSlcclxuICAgICAgPyBOZ2JEYXRlLmZyb20ocGFyc2VkKVxyXG4gICAgICA6IGN1cnJlbnRWYWx1ZTtcclxuICB9XHJcblxyXG4gIGVtaXRSYW5nZSgpIHtcclxuICAgIGlmICh0aGlzLmZyb21EYXRlICYmIHRoaXMudG9EYXRlKSB7XHJcbiAgICAgIGNvbnN0IGZyb20gPSBuZXcgRGF0ZShcclxuICAgICAgICB0aGlzLmZyb21EYXRlLnllYXIsXHJcbiAgICAgICAgdGhpcy5mcm9tRGF0ZS5tb250aCAtIDEsXHJcbiAgICAgICAgdGhpcy5mcm9tRGF0ZS5kYXlcclxuICAgICAgKTtcclxuICAgICAgY29uc3QgdG8gPSBuZXcgRGF0ZShcclxuICAgICAgICB0aGlzLnRvRGF0ZS55ZWFyLFxyXG4gICAgICAgIHRoaXMudG9EYXRlLm1vbnRoIC0gMSxcclxuICAgICAgICB0aGlzLnRvRGF0ZS5kYXksXHJcbiAgICAgICAgMjMsXHJcbiAgICAgICAgNTlcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5jYWNoZVNlcnZpY2UucHV0SW5DYWNoZSh0aGlzLmNhY2hlTmFtZSwge1xyXG4gICAgICAgIGZyb206IGZyb20uZ2V0VGltZSgpLFxyXG4gICAgICAgIHRvOiB0by5nZXRUaW1lKCksXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmNhY2hlID0geyBmcm9tOiBmcm9tLmdldFRpbWUoKSwgdG86IHRvLmdldFRpbWUoKSB9O1xyXG4gICAgICB0aGlzLmZpbHRlclNlcnZpY2UuZGF0ZUZpbHRlclVwZGF0ZWQoW2Zyb20sIHRvXSk7XHJcbiAgICAgIHRoaXMuaXNEYXRlRmlsdGVyQXBwbGllZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuZGF0ZUNoYW5nZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2xlYXJEYXRlcygpIHtcclxuICAgIHRoaXMuZnJvbURhdGUgPSBudWxsO1xyXG4gICAgdGhpcy50b0RhdGUgPSBudWxsO1xyXG4gICAgdGhpcy5pc0RhdGVGaWx0ZXJBcHBsaWVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmNhY2hlID0gbnVsbDtcclxuICAgIHRoaXMuY2FjaGVTZXJ2aWNlLnJlbW92ZUZyb21DYWNoZSh0aGlzLmNhY2hlTmFtZSk7XHJcbiAgICB0aGlzLmZpbHRlclNlcnZpY2UuZGF0ZUZpbHRlclVwZGF0ZWQobnVsbCk7XHJcbiAgfVxyXG5cclxuICBvbkFwcGx5KCkge1xyXG4gICAgaWYgKHRoaXMuZnJvbURhdGUgJiYgdGhpcy50b0RhdGUpIHtcclxuICAgICAgdGhpcy5lbWl0UmFuZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICAvL3RyYW5zZm9ybSBuZ2JEYXRlIHRvIGRhdGUgb2JqZXQgdGhlbiBwdXQgZGF0ZXMgaW4gdGltZXN0YW1wIGluIGxvY2FsU3RvcmFnZSB0byBzaGFyZSBpdCB3aXRoIFJldG9vbFxyXG4gICAgaWYgKHRoaXMuZnJvbURhdGUpIHtcclxuICAgICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoXHJcbiAgICAgICAgdGhpcy5mcm9tRGF0ZS55ZWFyLFxyXG4gICAgICAgIHRoaXMuZnJvbURhdGUubW9udGggLSAxLFxyXG4gICAgICAgIHRoaXMuZnJvbURhdGUuZGF5XHJcbiAgICAgICk7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzdGFydERhdGUnLCBzdGFydERhdGUuZ2V0VGltZSgpLnRvU3RyaW5nKCkpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudG9EYXRlKSB7XHJcbiAgICAgIGNvbnN0IGVuZERhdGUgPSBuZXcgRGF0ZShcclxuICAgICAgICB0aGlzLnRvRGF0ZS55ZWFyLFxyXG4gICAgICAgIHRoaXMudG9EYXRlLm1vbnRoIC0gMSxcclxuICAgICAgICB0aGlzLnRvRGF0ZS5kYXlcclxuICAgICAgKTtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2VuZERhdGUnLCBlbmREYXRlLmdldFRpbWUoKS50b1N0cmluZygpKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBpZD1cIm1lbnUtYmFyXCI+XHJcbiAgPGRpdiAqbmdJZj1cIiFpc1Zpc2l0b3JcIj5cclxuICAgIDxuYXYgY2xhc3M9XCJuYXZiYXIgbmF2YmFyLWV4cGFuZC1tZCBuYXZiYXItbGlnaHQgcC0wXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIiAqbmdJZj1cImlzVmlzaWJsZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJuYXZiYXItYnJhbmQgb3JkZXItbWQtMFwiIFtyb3V0ZXJMaW5rXT1cIlsnL2Rhc2hib2FyZCddXCI+XHJcbiAgICAgICAgICA8aW1nIGFsdD1cIlNtYXJ0ZXJQbGFuXCIgc3JjPVwiLi4vYXNzZXRzL2ltYWdlcy9sb2dvcy9sb2dvLWltbW8ucG5nXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1zLWF1dG8gbmF2LWl0ZW0gZHJvcGRvd24gcHJvZmlsZV9waWMtY29udGFpbmVyIG9yZGVyLW1kLTJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9maWxlX3BpYyBkcm9wZG93bi10b2dnbGVcIiBkYXRhLXRlc3RpZD1cImRyb3Bkb3duLW1lbnUtYnV0dG9uXCIgZGF0YS1icy10b2dnbGU9XCJkcm9wZG93blwiPlxyXG4gICAgICAgICAgICA8bGliLWF2YXRhcj48L2xpYi1hdmF0YXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51IGRyb3Bkb3duLW1lbnUtcmlnaHRcIj5cclxuICAgICAgICAgICAgPHAgKm5nSWY9XCJ1c2VyICYmIG1pc3Npb25cIiBjbGFzcz1cInAtMlwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXNlcm5hbWVcIj57eyB1c2VyLmRpc3BsYXlOYW1lIH19PC9zcGFuPjxiciAvPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXNlci1yb2xlXCI+e3sgbWlzc2lvbi5yb2xlIH19PC9zcGFuPjxiciAvPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3JnXCI+e3sgbWlzc2lvbi5vcmdhbmlzYXRpb24gPyBtaXNzaW9uLm9yZ2FuaXNhdGlvbi5uYW1lIDogXCJObyBvcmdhbmlzYXRpb25cIiB8XHJcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIHJvdXRlckxpbms9XCIvZGVidWdcIiAqbmdJZj1cImlzTWFuYWdlclwiPkRlYnVnPC9hPiAtLT5cclxuICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cImxvY2FsZVNlcnZpY2UubW9kYWwoKVwiPnt7J0xhbmd1YWdlJyB8IHRyYW5zbGF0ZX19PC9hPlxyXG4gICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiByb3V0ZXJMaW5rPVwiL2Rhc2hib2FyZFwiPnt7J0RhdGEgbWFuYWdlbWVudCcgfCB0cmFuc2xhdGV9fTwvYT5cclxuICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgZGF0YS10ZXN0aWQ9XCJ1c2VyLW1hbmFnZW1lbnQtYnRuXCIgcm91dGVyTGluaz1cIi9hZG1pblwiICpuZ0lmPVwiaXNNYW5hZ2VyXCI+XHJcbiAgICAgICAgICAgICAge3snVXNlcnMgbWFuYWdlbWVudCcgfCB0cmFuc2xhdGV9fTwvYT5cclxuICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgcm91dGVyTGluaz1cIi9wcm9maWxlXCI+XHJcbiAgICAgICAgICAgICAge3snUHJvZmlsZScgfCB0cmFuc2xhdGV9fTwvYT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiAoY2xpY2spPVwib3BlblN1cHBvcnRGb3JtKClcIj57e1wiSGVscFwiIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBkYXRhLXRlc3RpZD1cImxvZ291dC1hdXRoLWJ0blwiIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIChjbGljayk9XCJzaWduT3V0KClcIj57e1wiTG9nb3V0XCIgfFxyXG4gICAgICAgICAgICAgIHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwibmF2YmFyLXRvZ2dsZXIgb3JkZXItbWQtMVwiIChjbGljayk9XCJuYXZiYXJDb2xsYXBzZS50b2dnbGUoKVwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCIhaXNDb2xsYXBzZWRcIiBhcmlhLWNvbnRyb2xzPVwibmF2YmFyLWNvbGxhcHNlXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hdmJhci10b2dnbGVyLWljb25cIj48L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5hdmJhci1jb2xsYXBzZSBvcmRlci1tZC0xXCIgI25hdmJhckNvbGxhcHNlPVwibmdiQ29sbGFwc2VcIiBbKG5nYkNvbGxhcHNlKV09XCJpc0NvbGxhcHNlZFwiXHJcbiAgICAgICAgICBbYW5pbWF0aW9uXT1cImZhbHNlXCI+XHJcbiAgICAgICAgICA8Zm9ybVxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0taW5saW5lIG0tMCBtdC0yIGZvcm0tY29udGFpbmVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtc3RhcnQgYWxpZ24taXRlbXMtbWQtY2VudGVyIGZsZXgtY29sdW1uIGZsZXgtbWQtcm93IGZsZXgtbm93cmFwIGZpbHRlcnMtbWVudS1ibG9ja1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgc2VhcmNoLWJ1dHRvbi1jb250YWluZXIgZC1mbGV4IGZsZXgtcm93IGZsZXgtbm93cmFwIHAtMCBtLTBcIj5cclxuICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgc2VhcmNoLWJ1dHRvbiBtLTFcIiBwbGFjZWhvbGRlcj1cImtleXdvcmRcIiBpZD1cIm1haW5TZWFyY2hCYXJcIiB0eXBlPVwidGV4dFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSByb3VuZGVkLXBpbGwgbS0xIHctZml0LWNvbnRlbnQgaC1maXQtY29udGVudCBhbGlnbi1zZWxmLW1kLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TdWJtaXQoKVwiPnt7J1NlYXJjaCcgfFxyXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBzZWFyY2gtYnV0dG9uLWNvbnRhaW5lciBkLWZsZXggZmxleC1yb3cgZmxleC1ub3dyYXAgcC0wIG0tMFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBkYXRlLXNlbGVjdG9yIG0tMVwiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0ICNkcEZyb21EYXRlIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXI9XCJkZC9NTS95eXl5XCIgbmFtZT1cImRwRnJvbURhdGVcIlxyXG4gICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZnJvbURhdGUgfCBmb3JtYXREYXRlTnVtYmVyVG9EaWdpdHNcIlxyXG4gICAgICAgICAgICAgICAgICAoaW5wdXQpPVwiZnJvbURhdGUgPSB2YWxpZGF0ZUlucHV0KGZyb21EYXRlLCBkcEZyb21EYXRlLnZhbHVlKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBjYWxlbmRhclwiIChjbGljayk9XCJkYXRlcGlja2VyLnRvZ2dsZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cImRhdGVwaWNrZXJcIiBjbGFzcz1cImZvcm0tY29udHJvbCB2aXN1YWxseS1oaWRkZW5cIiBuZ2JEYXRlcGlja2VyICNkYXRlcGlja2VyPVwibmdiRGF0ZXBpY2tlclwiXHJcbiAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiIChkYXRlU2VsZWN0KT1cIm9uRGF0ZVNlbGVjdGlvbigkZXZlbnQpXCIgW2Rpc3BsYXlNb250aHNdPVwiMlwiIFtkYXlUZW1wbGF0ZV09XCJ0XCJcclxuICAgICAgICAgICAgICAgIG91dHNpZGVEYXlzPVwiaGlkZGVuXCIgW3N0YXJ0RGF0ZV09XCJmcm9tRGF0ZSB8fCBjYWxlbmRhci5nZXRUb2RheSgpXCIgW2NvbnRhaW5lcl09XCInYm9keSdcIiB0YWJpbmRleD1cIi0xXCI+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0IGxldC1kYXRlIGxldC1mb2N1c2VkPVwiZm9jdXNlZFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGF5XCIgW2NsYXNzLmZvY3VzZWRdPVwiZm9jdXNlZFwiIFtjbGFzcy5yYW5nZV09XCJpc1JhbmdlKGRhdGUpXCJcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmZhZGVkXT1cImlzSG92ZXJlZChkYXRlKSB8fCBpc0luc2lkZShkYXRlKVwiIChtb3VzZWVudGVyKT1cImhvdmVyZWREYXRlID0gZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cImhvdmVyZWREYXRlID0gbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyBkYXRlLmRheSB9fVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0xIHAtMlwiPnt7J3RvJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBkYXRlLXNlbGVjdG9yIG0tMVwiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0ICNkcFRvRGF0ZSBjbGFzcz1cImZvcm0tY29udHJvbFwiIHBsYWNlaG9sZGVyPVwiZGQvTU0veXl5eVwiIG5hbWU9XCJkcFRvRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ0b0RhdGUgfCBmb3JtYXREYXRlTnVtYmVyVG9EaWdpdHNcIiAoaW5wdXQpPVwidG9EYXRlID0gdmFsaWRhdGVJbnB1dCh0b0RhdGUsIGRwVG9EYXRlLnZhbHVlKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBjYWxlbmRhclwiIChjbGljayk9XCJkYXRlcGlja2VyLnRvZ2dsZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBzZWFyY2gtYnV0dG9uLWNvbnRhaW5lciBkLWZsZXggZmxleC1yb3cgZmxleC1ub3dyYXAgcC0wIG0tMSBqdXN0aWZ5LWNvbnRlbnQtZXZlbmx5XCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcm91bmRlZC1waWxsIG1zLTEgdy0yNSB3LW1kLWZpdC1jb250ZW50IGgtbWQtZml0LWNvbnRlbnQgYWxpZ24tc2VsZi1tZC1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbkFwcGx5KClcIiAqbmdJZj1cIiFpc0RhdGVGaWx0ZXJBcHBsaWVkIHx8IGRhdGVDaGFuZ2VkXCI+XHJcbiAgICAgICAgICAgICAgICB7eydBcHBseScgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFwcGxpZWRUZXh0IG1zLTEgcHktMiBhbGlnbi1zZWxmLW1kLWNlbnRlciBwYi1tZC0wIG14LTIgdy1tZC1maXQtY29udGVudCBoLW1kLWZpdC1jb250ZW50IGFsaWduLXNlbGYtbWQtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNEYXRlRmlsdGVyQXBwbGllZCAmJiAhZGF0ZUNoYW5nZWRcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbmlmeVwiIGRhdGEtaWNvbj1cImlvbjpjaGVja21hcmtcIiBkYXRhLXdpZHRoPVwiMTVcIiBkYXRhLWhlaWdodD1cIjE1XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAge3tcIkFwcGxpZWRcIiB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsIHctMjUgbXgtMiB3LW1kLWZpdC1jb250ZW50IGgtbWQtZml0LWNvbnRlbnQgYWxpZ24tc2VsZi1tZC1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbkNsZWFyRGF0ZXMoKVwiPnt7J0NsZWFyJ1xyXG4gICAgICAgICAgICAgICAgfFxyXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoYW5nZS1wb3NpdGlvbi1idXR0b24gYWxpZ24tc2VsZi1lbmQgcGItMiBhbGlnbi1zZWxmLW1kLWNlbnRlciBteC0yIHBiLW1kLTAgZmxleC1ub3dyYXAgdy0yNSB3LW1kLWZpdC1jb250ZW50IGgtbWQtZml0LWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cImJ0bi1jaGVja1wiIGlkPVwiYnRuLWNoZWNrLW91dGxpbmVkXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJsaW5rLXByaW1hcnkgY3Vyc29yLXBvaW50ZXIgdGV4dC1kZWNvcmF0aW9uLXVuZGVybGluZVwiIChjbGljayk9XCJvbkNoYW5nZVBvc2l0aW9uQ2xpY2soKVwiXHJcbiAgICAgICAgICAgICAgICAgIGZvcj1cImJ0bi1jaGVjay1vdXRsaW5lZFwiPnt7XHJcbiAgICAgICAgICAgICAgICAgIChpc0NoYW5nZVBvc2l0aW9uVmlzaWJsZSA/IFwiQ2xvc2VcIiA6IFwiTW92ZSB0b1wiKSB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmF2PlxyXG4gICAgPGxpYi1uYXZpZ2F0aW9uLWJhciAqbmdJZj1cImlzVmlzaWJsZSAmJiBpc0NoYW5nZVBvc2l0aW9uVmlzaWJsZVwiPjwvbGliLW5hdmlnYXRpb24tYmFyPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJpc1Zpc2l0b3IgJiYgaXNWaXNpYmxlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidmlzaXRvci1kaXZcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImxvZ28tY29udGFpbmVyXCIgZGF0YS10ZXN0aWQ9XCJkcm9wZG93bi1tZW51LWJ1dHRvblwiPlxyXG4gICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiIGFsdD1cIlNtYXJ0ZXJQbGFuTG9nb1wiIHNyYz1cIi4uL2Fzc2V0cy9pbWFnZXMvbG9nb3MvbG9nby1yZXNlcnZlLnBuZ1wiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jb250YWluZXItbWVudVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcm9maWxlX3BpYyBkcm9wZG93bi10b2dnbGUgY3Vyc29yLXBvaW50ZXJcIiBkYXRhLWJzLXRvZ2dsZT1cImRyb3Bkb3duXCI+XHJcbiAgICAgICAgICA8bGliLWF2YXRhcj48L2xpYi1hdmF0YXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnUgZHJvcGRvd24tbWVudS1yaWdodFwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiAoY2xpY2spPVwibG9jYWxlU2VydmljZS5tb2RhbCgpXCI+e3snTGFuZ3VhZ2UnIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cIm9wZW5TdXBwb3J0Rm9ybSgpXCI+e3tcIkhlbHBcIiB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGRhdGEtdGVzdGlkPVwibG9nb3V0LWF1dGgtYnRuXCIgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cInNpZ25PdXQoKVwiPnt7XCJMb2dvdXRcIiB8XHJcbiAgICAgICAgICAgIHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|