@casus-campus/ngx-gallery 0.7.2 → 0.7.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/image/ngx-gallery-image-svg.component.mjs +4 -3
- package/esm2020/lib/ngx-gallery-preview/ngx-gallery-preview.component.mjs +26 -44
- package/esm2020/lib/ngx-gallery.component.mjs +1 -1
- package/esm2020/lib/svg/ngx-gallery-svg-text.component.mjs +10 -3
- package/fesm2015/casus-campus-ngx-gallery.mjs +37 -48
- package/fesm2015/casus-campus-ngx-gallery.mjs.map +1 -1
- package/fesm2020/casus-campus-ngx-gallery.mjs +37 -48
- package/fesm2020/casus-campus-ngx-gallery.mjs.map +1 -1
- package/lib/ngx-gallery-preview/ngx-gallery-preview.component.d.ts +3 -1
- package/lib/svg/ngx-gallery-svg-text.component.d.ts +6 -3
- package/package.json +8 -8
|
@@ -38,6 +38,7 @@ export class NgxGalleryImageSvgComponent {
|
|
|
38
38
|
if (changes.zoomValue && !changes.zoomValue.isFirstChange()) {
|
|
39
39
|
this.scaleFactor = this.calcScaleFactor();
|
|
40
40
|
}
|
|
41
|
+
this.handleAddOns();
|
|
41
42
|
}
|
|
42
43
|
handleAddOns() {
|
|
43
44
|
this.svgArrows = this.addOns
|
|
@@ -109,10 +110,10 @@ export class NgxGalleryImageSvgComponent {
|
|
|
109
110
|
}
|
|
110
111
|
}
|
|
111
112
|
NgxGalleryImageSvgComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxGalleryImageSvgComponent, deps: [{ token: i1.LogService }, { token: i2.CcMediaService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
112
|
-
NgxGalleryImageSvgComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: NgxGalleryImageSvgComponent, selector: "cc-imagesvg", inputs: { width: "width", height: "height", viewBox: "viewBox", posLeft: "posLeft", posTop: "posTop", zoomValue: "zoomValue", animation: "animation", addOns: "addOns", classGrab: "classGrab", styleTransform: "styleTransform", preview: "preview" }, viewQueries: [{ propertyName: "svgElement", first: true, predicate: ["svgElement"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" preserveAspectRatio=\"xMidYMid meet\"\n [attr.width]=\"width\" [attr.height]=\"height\" [attr.viewBox]=\"viewBox\" class=\"ngx-gallery-center\"\n [class.animation]=\"animation\" [class.ngx-gallery-preview-svg]=\"preview\" [class.ngx-gallery-image-svg]=\"!preview\"\n [class.ngx-gallery-grab]=\"classGrab\" [style.transform]=\"styleTransform\" [style.left]=\"posLeft\" [style.top]=\"posTop\"\n (click)=\"$event.stopPropagation()\" #svgElement>\n <svg:g *ngIf=\"!!svgArrows.length\" svg-arrow [svgArrows]=\"svgArrows\"></svg:g>\n <svg:g *ngIf=\"!!svgPolygons.length\" svg-polygon [svgPolygons]=\"svgPolygons\"></svg:g>\n <svg:g *ngIf=\"!!svgIcons.length\" svg-icon [svgIcons]=\"svgIcons\" [scaleFactor]=\"scaleFactor\"></svg:g>\n <svg:g *ngIf=\"!!svgTexts.length\" svg-text [svgTexts]=\"svgTexts\"></svg:g>\n</svg>\n", styles: [".ngx-gallery-center{position:absolute;left:0;right:0;bottom:0;margin:auto;top:0}.ngx-gallery-image-svg{margin:0}.ngx-gallery-preview-svg{opacity:1;max-width:90%;max-height:90%;-webkit-user-select:none;user-select:none;transition:transform .5s}.ngx-gallery-preview-svg.animation{transition:opacity .5s linear,transform .5s}.ngx-gallery-preview-svg.ngx-gallery-active{opacity:1}.ngx-gallery-preview-svg.ngx-gallery-grab{cursor:grab;cursor:-webkit-grab}\n"], components: [{ type: i3.NgxGallerySvgArrowComponent, selector: "[svg-arrow]", inputs: ["svgArrows"] }, { type: i4.NgxGallerySvgPolygonComponent, selector: "[svg-polygon]", inputs: ["svgPolygons"] }, { type: i5.NgxGallerySvgIconComponent, selector: "[svg-icon]", inputs: ["svgIcons", "scaleFactor"] }, { type: i6.NgxGallerySvgTextComponent, selector: "[svg-text]", inputs: ["svgTexts"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
113
|
+
NgxGalleryImageSvgComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: NgxGalleryImageSvgComponent, selector: "cc-imagesvg", inputs: { width: "width", height: "height", viewBox: "viewBox", posLeft: "posLeft", posTop: "posTop", zoomValue: "zoomValue", animation: "animation", addOns: "addOns", classGrab: "classGrab", styleTransform: "styleTransform", preview: "preview" }, viewQueries: [{ propertyName: "svgElement", first: true, predicate: ["svgElement"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" preserveAspectRatio=\"xMidYMid meet\"\n [attr.width]=\"width\" [attr.height]=\"height\" [attr.viewBox]=\"viewBox\" class=\"ngx-gallery-center\"\n [class.animation]=\"animation\" [class.ngx-gallery-preview-svg]=\"preview\" [class.ngx-gallery-image-svg]=\"!preview\"\n [class.ngx-gallery-grab]=\"classGrab\" [style.transform]=\"styleTransform\" [style.left]=\"posLeft\" [style.top]=\"posTop\"\n (click)=\"$event.stopPropagation()\" #svgElement>\n <svg:g *ngIf=\"!!svgArrows.length\" svg-arrow [svgArrows]=\"svgArrows\"></svg:g>\n <svg:g *ngIf=\"!!svgPolygons.length\" svg-polygon [svgPolygons]=\"svgPolygons\"></svg:g>\n <svg:g *ngIf=\"!!svgIcons.length\" svg-icon [svgIcons]=\"svgIcons\" [scaleFactor]=\"scaleFactor\"></svg:g>\n <svg:g *ngIf=\"!!svgTexts.length\" svg-text [svgTexts]=\"svgTexts\" [width]=\"width\" [height]=\"height\"></svg:g>\n</svg>\n", styles: [".ngx-gallery-center{position:absolute;left:0;right:0;bottom:0;margin:auto;top:0}.ngx-gallery-image-svg{margin:0}.ngx-gallery-preview-svg{opacity:1;max-width:90%;max-height:90%;-webkit-user-select:none;user-select:none;transition:transform .5s}.ngx-gallery-preview-svg.animation{transition:opacity .5s linear,transform .5s}.ngx-gallery-preview-svg.ngx-gallery-active{opacity:1}.ngx-gallery-preview-svg.ngx-gallery-grab{cursor:grab;cursor:-webkit-grab}\n"], components: [{ type: i3.NgxGallerySvgArrowComponent, selector: "[svg-arrow]", inputs: ["svgArrows"] }, { type: i4.NgxGallerySvgPolygonComponent, selector: "[svg-polygon]", inputs: ["svgPolygons"] }, { type: i5.NgxGallerySvgIconComponent, selector: "[svg-icon]", inputs: ["svgIcons", "scaleFactor"] }, { type: i6.NgxGallerySvgTextComponent, selector: "[svg-text]", inputs: ["svgTexts", "width", "height"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
113
114
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxGalleryImageSvgComponent, decorators: [{
|
|
114
115
|
type: Component,
|
|
115
|
-
args: [{ selector: 'cc-imagesvg', template: "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" preserveAspectRatio=\"xMidYMid meet\"\n [attr.width]=\"width\" [attr.height]=\"height\" [attr.viewBox]=\"viewBox\" class=\"ngx-gallery-center\"\n [class.animation]=\"animation\" [class.ngx-gallery-preview-svg]=\"preview\" [class.ngx-gallery-image-svg]=\"!preview\"\n [class.ngx-gallery-grab]=\"classGrab\" [style.transform]=\"styleTransform\" [style.left]=\"posLeft\" [style.top]=\"posTop\"\n (click)=\"$event.stopPropagation()\" #svgElement>\n <svg:g *ngIf=\"!!svgArrows.length\" svg-arrow [svgArrows]=\"svgArrows\"></svg:g>\n <svg:g *ngIf=\"!!svgPolygons.length\" svg-polygon [svgPolygons]=\"svgPolygons\"></svg:g>\n <svg:g *ngIf=\"!!svgIcons.length\" svg-icon [svgIcons]=\"svgIcons\" [scaleFactor]=\"scaleFactor\"></svg:g>\n <svg:g *ngIf=\"!!svgTexts.length\" svg-text [svgTexts]=\"svgTexts\"></svg:g>\n</svg>\n", styles: [".ngx-gallery-center{position:absolute;left:0;right:0;bottom:0;margin:auto;top:0}.ngx-gallery-image-svg{margin:0}.ngx-gallery-preview-svg{opacity:1;max-width:90%;max-height:90%;-webkit-user-select:none;user-select:none;transition:transform .5s}.ngx-gallery-preview-svg.animation{transition:opacity .5s linear,transform .5s}.ngx-gallery-preview-svg.ngx-gallery-active{opacity:1}.ngx-gallery-preview-svg.ngx-gallery-grab{cursor:grab;cursor:-webkit-grab}\n"] }]
|
|
116
|
+
args: [{ selector: 'cc-imagesvg', template: "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" preserveAspectRatio=\"xMidYMid meet\"\n [attr.width]=\"width\" [attr.height]=\"height\" [attr.viewBox]=\"viewBox\" class=\"ngx-gallery-center\"\n [class.animation]=\"animation\" [class.ngx-gallery-preview-svg]=\"preview\" [class.ngx-gallery-image-svg]=\"!preview\"\n [class.ngx-gallery-grab]=\"classGrab\" [style.transform]=\"styleTransform\" [style.left]=\"posLeft\" [style.top]=\"posTop\"\n (click)=\"$event.stopPropagation()\" #svgElement>\n <svg:g *ngIf=\"!!svgArrows.length\" svg-arrow [svgArrows]=\"svgArrows\"></svg:g>\n <svg:g *ngIf=\"!!svgPolygons.length\" svg-polygon [svgPolygons]=\"svgPolygons\"></svg:g>\n <svg:g *ngIf=\"!!svgIcons.length\" svg-icon [svgIcons]=\"svgIcons\" [scaleFactor]=\"scaleFactor\"></svg:g>\n <svg:g *ngIf=\"!!svgTexts.length\" svg-text [svgTexts]=\"svgTexts\" [width]=\"width\" [height]=\"height\"></svg:g>\n</svg>\n", styles: [".ngx-gallery-center{position:absolute;left:0;right:0;bottom:0;margin:auto;top:0}.ngx-gallery-image-svg{margin:0}.ngx-gallery-preview-svg{opacity:1;max-width:90%;max-height:90%;-webkit-user-select:none;user-select:none;transition:transform .5s}.ngx-gallery-preview-svg.animation{transition:opacity .5s linear,transform .5s}.ngx-gallery-preview-svg.ngx-gallery-active{opacity:1}.ngx-gallery-preview-svg.ngx-gallery-grab{cursor:grab;cursor:-webkit-grab}\n"] }]
|
|
116
117
|
}], ctorParameters: function () { return [{ type: i1.LogService }, { type: i2.CcMediaService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { width: [{
|
|
117
118
|
type: Input
|
|
118
119
|
}], height: [{
|
|
@@ -139,4 +140,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
|
|
|
139
140
|
type: ViewChild,
|
|
140
141
|
args: ['svgElement', { static: true }]
|
|
141
142
|
}] } });
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWdhbGxlcnktaW1hZ2Utc3ZnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1nYWxsZXJ5L3NyYy9saWIvaW1hZ2Uvbmd4LWdhbGxlcnktaW1hZ2Utc3ZnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1nYWxsZXJ5L3NyYy9saWIvaW1hZ2Uvbmd4LWdhbGxlcnktaW1hZ2Utc3ZnLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBSUwsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFPTCxlQUFlLEVBQ2YsYUFBYSxHQUNkLE1BQU0sMEJBQTBCLENBQUM7QUFFbEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7OztBQVN0RCxNQUFNLE9BQU8sMkJBQTJCO0lBdUJ0QyxZQUFvQixVQUFzQixFQUFVLGNBQThCLEVBQVUsS0FBd0I7UUFBaEcsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBVHBILGNBQVMsR0FBWSxFQUFFLENBQUM7UUFDeEIsZ0JBQVcsR0FBYyxFQUFFLENBQUM7UUFDNUIsYUFBUSxHQUFXLEVB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QUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlGLE1BQU0saUJBQWlCLEdBQUcsY0FBYyxHQUFHLGFBQWEsQ0FBQztRQUV6RCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUN2RCxDQUFDOzt3SEE5SVUsMkJBQTJCOzRHQUEzQiwyQkFBMkIsd2JDcEN4QywrNEJBVUE7MkZEMEJhLDJCQUEyQjtrQkFQdkMsU0FBUzsrQkFFRSxhQUFhOzhKQU9kLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQVNxQyxVQUFVO3NCQUFwRCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBJTWVkaXVtLFxuICBJTWVkaXVtQWRkT24sXG4gIElNZWRpdW1BZGRPbkFycm93LFxuICBJTWVkaXVtQWRkT25Ib3RTcG90LFxuICBJTWVkaXVtQWRkT25JY29uSHlwZXJsaW5rLFxuICBJTWVkaXVtQWRkT25UZXh0LFxuICBNZWRpdW1BZGRPblR5cGUsXG4gIE1lZGl1bVVybFR5cGUsXG59IGZyb20gJ0BjYXN1cy1jYW1wdXMvY2Mtc3VwcG9ydCc7XG5cbmltcG9ydCB7IEFycm93IH0gZnJvbSAnLi4vc3ZnL2Fycm93Lm1vZGVsJztcbmltcG9ydCB7IEljb24gfSBmcm9tICcuLi9zdmcvaWNvbi5tb2RlbCc7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uL3N2Zy9wb2ludC5tb2RlbCc7XG5pbXBvcnQgeyBQb2x5Z29uIH0gZnJvbSAnLi4vc3ZnL3BvbHlnb24ubW9kZWwnO1xuaW1wb3J0IHsgQ2NNZWRpYVNlcnZpY2UgfSBmcm9tICcuLi91dGlscy9jYy1tZWRpYS5zZXJ2aWNlJztcbmltcG9ydCB7IExvZ1NlcnZpY2UgfSBmcm9tICcuLi91dGlscy9sb2dnaW5nLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvciAqL1xuICBzZWxlY3RvcjogJ2NjLWltYWdlc3ZnJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25neC1nYWxsZXJ5LWltYWdlLXN2Zy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25neC1nYWxsZXJ5LWltYWdlLXN2Zy5jb21wb25lbnQuc2NzcyddLFxufSlcblxuZXhwb3J0IGNsYXNzIE5neEdhbGxlcnlJbWFnZVN2Z0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcblxuICBASW5wdXQoKSB3aWR0aDogbnVtYmVyO1xuICBASW5wdXQoKSBoZWlnaHQ6IG51bWJlcjtcbiAgQElucHV0KCkgdmlld0JveDogc3RyaW5nO1xuICBASW5wdXQoKSBwb3NMZWZ0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBvc1RvcDogc3RyaW5nO1xuICBASW5wdXQoKSB6b29tVmFsdWU6IHN0cmluZztcbiAgQElucHV0KCkgYW5pbWF0aW9uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFkZE9uczogSU1lZGl1bUFkZE9uW107XG4gIEBJbnB1dCgpIGNsYXNzR3JhYjogYm9vbGVhbjtcbiAgQElucHV0KCkgc3R5bGVUcmFuc2Zvcm06IHN0cmluZztcbiAgQElucHV0KCkgcHJldmlldzogYm9vbGVhbjtcblxuICBzdmdBcnJvd3M6IEFycm93W10gPSBbXTtcbiAgc3ZnUG9seWdvbnM6IFBvbHlnb25bXSA9IFtdO1xuICBzdmdJY29uczogSWNvbltdID0gW107XG4gIHN2Z1RleHRzOiBQb2ludFtdID0gW107XG5cbiAgc2NhbGVGYWN0b3IgPSAxO1xuXG4gIEBWaWV3Q2hpbGQoJ3N2Z0VsZW1lbnQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBzdmdFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbG9nU2VydmljZTogTG9nU2VydmljZSwgcHJpdmF0ZSBjY01lZGlhU2VydmljZTogQ2NNZWRpYVNlcnZpY2UsIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmxvZ1NlcnZpY2UubG9nKCdOZ3hHYWxsZXJ5U3ZnQ29tcG9uZW50Lm5nT25Jbml0JywgJ25nT25Jbml0Jyk7XG4gICAgdGhpcy5oYW5kbGVBZGRPbnMoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLnNjYWxlRmFjdG9yID0gdGhpcy5jYWxjU2NhbGVGYWN0b3IoKTtcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICB0aGlzLmxvZ1NlcnZpY2UubG9nKCdOZ3hHYWxsZXJ5U3ZnQ29tcG9uZW50Lm9uQ2hhbmdlJywgJ25nT25DaGFuZ2VzJyk7XG4gICAgaWYgKGNoYW5nZXMuem9vbVZhbHVlICYmICFjaGFuZ2VzLnpvb21WYWx1ZS5pc0ZpcnN0Q2hhbmdlKCkpIHtcbiAgICAgIHRoaXMuc2NhbGVGYWN0b3IgPSB0aGlzLmNhbGNTY2FsZUZhY3RvcigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQWRkT25zKCk6IHZvaWQge1xuICAgIHRoaXMuc3ZnQXJyb3dzID0gdGhpcy5hZGRPbnNcbiAgICAgIC5maWx0ZXIoYWRkT24gPT4gYWRkT24udHlwZSA9PT0gTWVkaXVtQWRkT25UeXBlLkFycm93KVxuICAgICAgLm1hcChhZGRPbiA9PiB0aGlzLm1hcFRvQXJyb3coYWRkT24gYXMgSU1lZGl1bUFkZE9uQXJyb3cpKVxuICAgICAgLmZpbHRlcihlbGVtZW50ID0+ICEhZWxlbWVudCk7XG4gICAgdGhpcy5zdmdJY29ucyA9IHRoaXMuYWRkT25zXG4gICAgICAuZmlsdGVyKGFkZE9uID0+IGFkZE9uLnR5cGUgPT09IE1lZGl1bUFkZE9uVHlwZS5JY29uSHlwZXJsaW5rKVxuICAgICAgLm1hcChhZGRPbiA9PiB0aGlzLm1hcFRvSWNvbihhZGRPbiBhcyBJTWVkaXVtQWRkT25JY29uSHlwZXJsaW5rKSlcbiAgICAgIC5maWx0ZXIoZWxlbWVudCA9PiAhIWVsZW1lbnQpO1xuICAgIHRoaXMuc3ZnUG9seWdvbnMgPSB0aGlzLmFkZE9uc1xuICAgICAgLmZpbHRlcihhZGRPbiA9PiBhZGRPbi50eXBlID09PSBNZWRpdW1BZGRPblR5cGUuSG90U3BvdClcbiAgICAgIC5tYXAoYWRkT24gPT4gdGhpcy5tYXBUb1BvbHlnb24oYWRkT24gYXMgSU1lZGl1bUFkZE9uSG90U3BvdCkpXG4gICAgICAuZmlsdGVyKGVsZW1lbnQgPT4gISFlbGVtZW50KTtcbiAgICB0aGlzLnN2Z1RleHRzID0gdGhpcy5hZGRPbnNcbiAgICAgIC5maWx0ZXIoYWRkT24gPT4gYWRkT24udHlwZSA9PT0gTWVkaXVtQWRkT25UeXBlLlRleHQpXG4gICAgICAubWFwKGFkZE9uID0+IHRoaXMubWFwVG9UZXh0KGFkZE9uIGFzIElNZWRpdW1BZGRPblRleHQpKVxuICAgICAgLmZpbHRlcihlbGVtZW50ID0+ICEhZWxlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIG1hcFRvQXJyb3coYXJyb3c6IElNZWRpdW1BZGRPbkFycm93KTogQXJyb3cge1xuICAgIHJldHVybiBuZXcgQXJyb3coXG4gICAgICBuZXcgUG9pbnQoYXJyb3cuc3JjLmxlZnQsIGFycm93LnNyYy50b3AsICcnKSxcbiAgICAgIG5ldyBQb2ludChhcnJvdy5kc3QubGVmdCwgYXJyb3cuZHN0LnRvcCwgJycpLFxuICAgICAgYXJyb3cuY29sb3JcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBtb2NrRXh0ZXJuYWxIeXBlcmxpbmtNZWRpdW0oaWNvbkh5cGVybGluazogSU1lZGl1bUFkZE9uSWNvbkh5cGVybGluayk6IElNZWRpdW0ge1xuICAgIGNvbnN0IHVybCA9IGljb25IeXBlcmxpbmsuZXh0ZXJuYWxVcmw7XG4gICAgaWYgKCF1cmwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc2NoZW1lTWF0Y2ggPSAvXlthLXpBLVpdKy8uZXhlYyh1cmwpO1xuICAgIGNvbnN0IG1pbWVUeXBlID0gJ3VybC8nICsgKHNjaGVtZU1hdGNoICYmIHNjaGVtZU1hdGNoWzBdIHx8ICdyZWxhdGl2ZScpO1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB1cmwsXG4gICAgICBkZXNjcmlwdGlvbjogdXJsLFxuICAgICAgaGVpZ2h0OiAwLFxuICAgICAgd2lkdGg6IDAsXG4gICAgICBtaW1lVHlwZSxcbiAgICAgIHVybHM6IFt7XG4gICAgICAgIHVybCxcbiAgICAgICAgdHlwZTogTWVkaXVtVXJsVHlwZS5FeHRlcm5hbCxcbiAgICAgICAgbWltZVR5cGUsXG4gICAgICB9XVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIG1hcFRvSWNvbihpY29uSHlwZXJsaW5rOiBJTWVkaXVtQWRkT25JY29uSHlwZXJsaW5rKTogSWNvbiB7XG4gICAgY29uc3QgdGFyZ2V0ID0gaWNvbkh5cGVybGluay5tZWRpdW0gfHwgdGhpcy5tb2NrRXh0ZXJuYWxIeXBlcmxpbmtNZWRpdW0oaWNvbkh5cGVybGluayk7XG4gICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZvdW5kIGljb25IeXBlcmxpbmsgd2l0aG91dCB0YXJnZXQgb3IgZXh0ZXJuYWwgdXJsJywgaWNvbkh5cGVybGluayk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGxhY2Vob2xkZXJQYXRoID0gdGhpcy5jY01lZGlhU2VydmljZS5nZXRNaW1lVHlwZVBsYWNlaG9sZGVyUGF0aCh0YXJnZXQubWltZVR5cGUpO1xuICAgIHJldHVybiBuZXcgSWNvbihcbiAgICAgIHBsYWNlaG9sZGVyUGF0aCxcbiAgICAgIHRhcmdldCxcbiAgICAgIHRhcmdldC5kZXNjcmlwdGlvbixcbiAgICAgIG5ldyBQb2ludChpY29uSHlwZXJsaW5rLnJlY3QubGVmdCwgaWNvbkh5cGVybGluay5yZWN0LnRvcCwgJycpLFxuICAgICAgaWNvbkh5cGVybGluay5yZWN0LndpZHRoLFxuICAgICAgaWNvbkh5cGVybGluay5yZWN0LmhlaWdodCxcbiAgICAgIGljb25IeXBlcmxpbmsuY29sb3JcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBUb1BvbHlnb24oaG90U3BvdDogSU1lZGl1bUFkZE9uSG90U3BvdCk6IFBvbHlnb24ge1xuICAgIGNvbnN0IHBvaW50cyA9IGhvdFNwb3QucG9seWdvblxuICAgICAgLm1hcChwb2ludCA9PiBuZXcgUG9pbnQocG9pbnQubGVmdCwgcG9pbnQudG9wLCAnJykpO1xuICAgIHJldHVybiBuZXcgUG9seWdvbihcbiAgICAgIChob3RTcG90Lm1lZGl1bSAmJiBob3RTcG90Lm1lZGl1bS5kYXRhKSB8fCAnJyxcbiAgICAgIHBvaW50cyxcbiAgICAgIGhvdFNwb3QubWVkaXVtLFxuICAgICAgaG90U3BvdC5jb2xvclxuICAgICk7XG5cbiAgfVxuXG4gIHByaXZhdGUgbWFwVG9UZXh0KHRleHQ6IElNZWRpdW1BZGRPblRleHQpOiBQb2ludCB7XG4gICAgcmV0dXJuIG5ldyBQb2ludChcbiAgICAgIHRleHQucG9zaXRpb24ubGVmdCxcbiAgICAgIHRleHQucG9zaXRpb24udG9wLFxuICAgICAgdGV4dC50ZXh0LFxuICAgICAgdGV4dC5jb2xvclxuICAgICk7XG4gIH1cblxuICAvLyBSZXR1cm5zIG11bHRpcGxpY2F0b3IgZm9yIGVsZW1lbnRzIHRoYXQgc2hvdWxkIGtlZXAgdGhlIHNhbWUgZGltZW5zaW9uc1xuICBwcml2YXRlIGNhbGNTY2FsZUZhY3RvcigpOiBudW1iZXIge1xuXG4gICAgY29uc3Qgb3JpZ2luYWxXaWR0aCA9IHBhcnNlRmxvYXQodGhpcy52aWV3Qm94LnNwbGl0KCcgJylbMl0pO1xuICAgIGNvbnN0IGN1cnJlbnRXaWR0aCA9IHRoaXMuc3ZnRWxlbWVudC5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoICogcGFyc2VGbG9hdCh0aGlzLnpvb21WYWx1ZSk7XG4gICAgY29uc3Qgd2lkdGhTY2FsZUZhY3RvciA9IG9yaWdpbmFsV2lkdGggLyBjdXJyZW50V2lkdGg7XG5cbiAgICBjb25zdCBvcmlnaW5hbEhlaWdodCA9IHBhcnNlRmxvYXQodGhpcy52aWV3Qm94LnNwbGl0KCcgJylbM10pO1xuICAgIGNvbnN0IGN1cnJlbnRIZWlndGggPSB0aGlzLnN2Z0VsZW1lbnQubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQgKiBwYXJzZUZsb2F0KHRoaXMuem9vbVZhbHVlKTtcbiAgICBjb25zdCBoZWlnaHRTY2FsZUZhY3RvciA9IG9yaWdpbmFsSGVpZ2h0IC8gY3VycmVudEhlaWd0aDtcblxuICAgIHJldHVybiBNYXRoLm1heCh3aWR0aFNjYWxlRmFjdG9yLCBoZWlnaHRTY2FsZUZhY3Rvcik7XG4gIH1cbn1cbiIsIjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiIHByZXNlcnZlQXNwZWN0UmF0aW89XCJ4TWlkWU1pZCBtZWV0XCJcbiAgW2F0dHIud2lkdGhdPVwid2lkdGhcIiBbYXR0ci5oZWlnaHRdPVwiaGVpZ2h0XCIgW2F0dHIudmlld0JveF09XCJ2aWV3Qm94XCIgY2xhc3M9XCJuZ3gtZ2FsbGVyeS1jZW50ZXJcIlxuICBbY2xhc3MuYW5pbWF0aW9uXT1cImFuaW1hdGlvblwiIFtjbGFzcy5uZ3gtZ2FsbGVyeS1wcmV2aWV3LXN2Z109XCJwcmV2aWV3XCIgW2NsYXNzLm5neC1nYWxsZXJ5LWltYWdlLXN2Z109XCIhcHJldmlld1wiXG4gIFtjbGFzcy5uZ3gtZ2FsbGVyeS1ncmFiXT1cImNsYXNzR3JhYlwiIFtzdHlsZS50cmFuc2Zvcm1dPVwic3R5bGVUcmFuc2Zvcm1cIiBbc3R5bGUubGVmdF09XCJwb3NMZWZ0XCIgW3N0eWxlLnRvcF09XCJwb3NUb3BcIlxuICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgI3N2Z0VsZW1lbnQ+XG4gIDxzdmc6ZyAqbmdJZj1cIiEhc3ZnQXJyb3dzLmxlbmd0aFwiIHN2Zy1hcnJvdyBbc3ZnQXJyb3dzXT1cInN2Z0Fycm93c1wiPjwvc3ZnOmc+XG4gIDxzdmc6ZyAqbmdJZj1cIiEhc3ZnUG9seWdvbnMubGVuZ3RoXCIgc3ZnLXBvbHlnb24gW3N2Z1BvbHlnb25zXT1cInN2Z1BvbHlnb25zXCI+PC9zdmc6Zz5cbiAgPHN2ZzpnICpuZ0lmPVwiISFzdmdJY29ucy5sZW5ndGhcIiBzdmctaWNvbiBbc3ZnSWNvbnNdPVwic3ZnSWNvbnNcIiBbc2NhbGVGYWN0b3JdPVwic2NhbGVGYWN0b3JcIj48L3N2ZzpnPlxuICA8c3ZnOmcgKm5nSWY9XCIhIXN2Z1RleHRzLmxlbmd0aFwiIHN2Zy10ZXh0IFtzdmdUZXh0c109XCJzdmdUZXh0c1wiPjwvc3ZnOmc+XG48L3N2Zz5cbiJdfQ==
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWdhbGxlcnktaW1hZ2Utc3ZnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1nYWxsZXJ5L3NyYy9saWIvaW1hZ2Uvbmd4LWdhbGxlcnktaW1hZ2Utc3ZnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1nYWxsZXJ5L3NyYy9saWIvaW1hZ2Uvbmd4LWdhbGxlcnktaW1hZ2Utc3ZnLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBSUwsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFPTCxlQUFlLEVBQ2YsYUFBYSxHQUNkLE1BQU0sMEJBQTBCLENBQUM7QUFFbEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7OztBQVN0RCxNQUFNLE9BQU8sMkJBQTJCO0lBdUJ0QyxZQUFvQixVQUFzQixFQUFVLGNBQThCLEVBQVUsS0FBd0I7UUFBaEcsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBVHBILGNBQVMsR0FBWSxFQUFFLENBQUM7UUFDeEIsZ0JBQVcsR0FBYyxFQUFFLENBQUM7UUFDNUIsYUFBUSxHQUFXLEVB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SUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5RixNQUFNLGlCQUFpQixHQUFHLGNBQWMsR0FBRyxhQUFhLENBQUM7UUFFekQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDdkQsQ0FBQzs7d0hBL0lVLDJCQUEyQjs0R0FBM0IsMkJBQTJCLHdiQ3BDeEMscTdCQVVBOzJGRDBCYSwyQkFBMkI7a0JBUHZDLFNBQVM7K0JBRUUsYUFBYTs4SkFPZCxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFTcUMsVUFBVTtzQkFBcEQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgSU1lZGl1bSxcbiAgSU1lZGl1bUFkZE9uLFxuICBJTWVkaXVtQWRkT25BcnJvdyxcbiAgSU1lZGl1bUFkZE9uSG90U3BvdCxcbiAgSU1lZGl1bUFkZE9uSWNvbkh5cGVybGluayxcbiAgSU1lZGl1bUFkZE9uVGV4dCxcbiAgTWVkaXVtQWRkT25UeXBlLFxuICBNZWRpdW1VcmxUeXBlLFxufSBmcm9tICdAY2FzdXMtY2FtcHVzL2NjLXN1cHBvcnQnO1xuXG5pbXBvcnQgeyBBcnJvdyB9IGZyb20gJy4uL3N2Zy9hcnJvdy5tb2RlbCc7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSAnLi4vc3ZnL2ljb24ubW9kZWwnO1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi9zdmcvcG9pbnQubW9kZWwnO1xuaW1wb3J0IHsgUG9seWdvbiB9IGZyb20gJy4uL3N2Zy9wb2x5Z29uLm1vZGVsJztcbmltcG9ydCB7IENjTWVkaWFTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbHMvY2MtbWVkaWEuc2VydmljZSc7XG5pbXBvcnQgeyBMb2dTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbHMvbG9nZ2luZy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIC8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3IgKi9cbiAgc2VsZWN0b3I6ICdjYy1pbWFnZXN2ZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9uZ3gtZ2FsbGVyeS1pbWFnZS1zdmcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9uZ3gtZ2FsbGVyeS1pbWFnZS1zdmcuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5cbmV4cG9ydCBjbGFzcyBOZ3hHYWxsZXJ5SW1hZ2VTdmdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgQElucHV0KCkgd2lkdGg6IG51bWJlcjtcbiAgQElucHV0KCkgaGVpZ2h0OiBudW1iZXI7XG4gIEBJbnB1dCgpIHZpZXdCb3g6IHN0cmluZztcbiAgQElucHV0KCkgcG9zTGVmdDogc3RyaW5nO1xuICBASW5wdXQoKSBwb3NUb3A6IHN0cmluZztcbiAgQElucHV0KCkgem9vbVZhbHVlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFuaW1hdGlvbjogc3RyaW5nO1xuICBASW5wdXQoKSBhZGRPbnM6IElNZWRpdW1BZGRPbltdO1xuICBASW5wdXQoKSBjbGFzc0dyYWI6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHN0eWxlVHJhbnNmb3JtOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHByZXZpZXc6IGJvb2xlYW47XG5cbiAgc3ZnQXJyb3dzOiBBcnJvd1tdID0gW107XG4gIHN2Z1BvbHlnb25zOiBQb2x5Z29uW10gPSBbXTtcbiAgc3ZnSWNvbnM6IEljb25bXSA9IFtdO1xuICBzdmdUZXh0czogUG9pbnRbXSA9IFtdO1xuXG4gIHNjYWxlRmFjdG9yID0gMTtcblxuICBAVmlld0NoaWxkKCdzdmdFbGVtZW50JywgeyBzdGF0aWM6IHRydWUgfSkgc3ZnRWxlbWVudDogRWxlbWVudFJlZjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxvZ1NlcnZpY2U6IExvZ1NlcnZpY2UsIHByaXZhdGUgY2NNZWRpYVNlcnZpY2U6IENjTWVkaWFTZXJ2aWNlLCBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5sb2dTZXJ2aWNlLmxvZygnTmd4R2FsbGVyeVN2Z0NvbXBvbmVudC5uZ09uSW5pdCcsICduZ09uSW5pdCcpO1xuICAgIHRoaXMuaGFuZGxlQWRkT25zKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5zY2FsZUZhY3RvciA9IHRoaXMuY2FsY1NjYWxlRmFjdG9yKCk7XG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgdGhpcy5sb2dTZXJ2aWNlLmxvZygnTmd4R2FsbGVyeVN2Z0NvbXBvbmVudC5vbkNoYW5nZScsICduZ09uQ2hhbmdlcycpO1xuICAgIGlmIChjaGFuZ2VzLnpvb21WYWx1ZSAmJiAhY2hhbmdlcy56b29tVmFsdWUuaXNGaXJzdENoYW5nZSgpKSB7XG4gICAgICB0aGlzLnNjYWxlRmFjdG9yID0gdGhpcy5jYWxjU2NhbGVGYWN0b3IoKTtcbiAgICB9XG4gICAgdGhpcy5oYW5kbGVBZGRPbnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQWRkT25zKCk6IHZvaWQge1xuICAgIHRoaXMuc3ZnQXJyb3dzID0gdGhpcy5hZGRPbnNcbiAgICAgIC5maWx0ZXIoYWRkT24gPT4gYWRkT24udHlwZSA9PT0gTWVkaXVtQWRkT25UeXBlLkFycm93KVxuICAgICAgLm1hcChhZGRPbiA9PiB0aGlzLm1hcFRvQXJyb3coYWRkT24gYXMgSU1lZGl1bUFkZE9uQXJyb3cpKVxuICAgICAgLmZpbHRlcihlbGVtZW50ID0+ICEhZWxlbWVudCk7XG4gICAgdGhpcy5zdmdJY29ucyA9IHRoaXMuYWRkT25zXG4gICAgICAuZmlsdGVyKGFkZE9uID0+IGFkZE9uLnR5cGUgPT09IE1lZGl1bUFkZE9uVHlwZS5JY29uSHlwZXJsaW5rKVxuICAgICAgLm1hcChhZGRPbiA9PiB0aGlzLm1hcFRvSWNvbihhZGRPbiBhcyBJTWVkaXVtQWRkT25JY29uSHlwZXJsaW5rKSlcbiAgICAgIC5maWx0ZXIoZWxlbWVudCA9PiAhIWVsZW1lbnQpO1xuICAgIHRoaXMuc3ZnUG9seWdvbnMgPSB0aGlzLmFkZE9uc1xuICAgICAgLmZpbHRlcihhZGRPbiA9PiBhZGRPbi50eXBlID09PSBNZWRpdW1BZGRPblR5cGUuSG90U3BvdClcbiAgICAgIC5tYXAoYWRkT24gPT4gdGhpcy5tYXBUb1BvbHlnb24oYWRkT24gYXMgSU1lZGl1bUFkZE9uSG90U3BvdCkpXG4gICAgICAuZmlsdGVyKGVsZW1lbnQgPT4gISFlbGVtZW50KTtcbiAgICB0aGlzLnN2Z1RleHRzID0gdGhpcy5hZGRPbnNcbiAgICAgIC5maWx0ZXIoYWRkT24gPT4gYWRkT24udHlwZSA9PT0gTWVkaXVtQWRkT25UeXBlLlRleHQpXG4gICAgICAubWFwKGFkZE9uID0+IHRoaXMubWFwVG9UZXh0KGFkZE9uIGFzIElNZWRpdW1BZGRPblRleHQpKVxuICAgICAgLmZpbHRlcihlbGVtZW50ID0+ICEhZWxlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIG1hcFRvQXJyb3coYXJyb3c6IElNZWRpdW1BZGRPbkFycm93KTogQXJyb3cge1xuICAgIHJldHVybiBuZXcgQXJyb3coXG4gICAgICBuZXcgUG9pbnQoYXJyb3cuc3JjLmxlZnQsIGFycm93LnNyYy50b3AsICcnKSxcbiAgICAgIG5ldyBQb2ludChhcnJvdy5kc3QubGVmdCwgYXJyb3cuZHN0LnRvcCwgJycpLFxuICAgICAgYXJyb3cuY29sb3JcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBtb2NrRXh0ZXJuYWxIeXBlcmxpbmtNZWRpdW0oaWNvbkh5cGVybGluazogSU1lZGl1bUFkZE9uSWNvbkh5cGVybGluayk6IElNZWRpdW0ge1xuICAgIGNvbnN0IHVybCA9IGljb25IeXBlcmxpbmsuZXh0ZXJuYWxVcmw7XG4gICAgaWYgKCF1cmwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc2NoZW1lTWF0Y2ggPSAvXlthLXpBLVpdKy8uZXhlYyh1cmwpO1xuICAgIGNvbnN0IG1pbWVUeXBlID0gJ3VybC8nICsgKHNjaGVtZU1hdGNoICYmIHNjaGVtZU1hdGNoWzBdIHx8ICdyZWxhdGl2ZScpO1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB1cmwsXG4gICAgICBkZXNjcmlwdGlvbjogdXJsLFxuICAgICAgaGVpZ2h0OiAwLFxuICAgICAgd2lkdGg6IDAsXG4gICAgICBtaW1lVHlwZSxcbiAgICAgIHVybHM6IFt7XG4gICAgICAgIHVybCxcbiAgICAgICAgdHlwZTogTWVkaXVtVXJsVHlwZS5FeHRlcm5hbCxcbiAgICAgICAgbWltZVR5cGUsXG4gICAgICB9XVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIG1hcFRvSWNvbihpY29uSHlwZXJsaW5rOiBJTWVkaXVtQWRkT25JY29uSHlwZXJsaW5rKTogSWNvbiB7XG4gICAgY29uc3QgdGFyZ2V0ID0gaWNvbkh5cGVybGluay5tZWRpdW0gfHwgdGhpcy5tb2NrRXh0ZXJuYWxIeXBlcmxpbmtNZWRpdW0oaWNvbkh5cGVybGluayk7XG4gICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZvdW5kIGljb25IeXBlcmxpbmsgd2l0aG91dCB0YXJnZXQgb3IgZXh0ZXJuYWwgdXJsJywgaWNvbkh5cGVybGluayk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGxhY2Vob2xkZXJQYXRoID0gdGhpcy5jY01lZGlhU2VydmljZS5nZXRNaW1lVHlwZVBsYWNlaG9sZGVyUGF0aCh0YXJnZXQubWltZVR5cGUpO1xuICAgIHJldHVybiBuZXcgSWNvbihcbiAgICAgIHBsYWNlaG9sZGVyUGF0aCxcbiAgICAgIHRhcmdldCxcbiAgICAgIHRhcmdldC5kZXNjcmlwdGlvbixcbiAgICAgIG5ldyBQb2ludChpY29uSHlwZXJsaW5rLnJlY3QubGVmdCwgaWNvbkh5cGVybGluay5yZWN0LnRvcCwgJycpLFxuICAgICAgaWNvbkh5cGVybGluay5yZWN0LndpZHRoLFxuICAgICAgaWNvbkh5cGVybGluay5yZWN0LmhlaWdodCxcbiAgICAgIGljb25IeXBlcmxpbmsuY29sb3JcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBUb1BvbHlnb24oaG90U3BvdDogSU1lZGl1bUFkZE9uSG90U3BvdCk6IFBvbHlnb24ge1xuICAgIGNvbnN0IHBvaW50cyA9IGhvdFNwb3QucG9seWdvblxuICAgICAgLm1hcChwb2ludCA9PiBuZXcgUG9pbnQocG9pbnQubGVmdCwgcG9pbnQudG9wLCAnJykpO1xuICAgIHJldHVybiBuZXcgUG9seWdvbihcbiAgICAgIChob3RTcG90Lm1lZGl1bSAmJiBob3RTcG90Lm1lZGl1bS5kYXRhKSB8fCAnJyxcbiAgICAgIHBvaW50cyxcbiAgICAgIGhvdFNwb3QubWVkaXVtLFxuICAgICAgaG90U3BvdC5jb2xvclxuICAgICk7XG5cbiAgfVxuXG4gIHByaXZhdGUgbWFwVG9UZXh0KHRleHQ6IElNZWRpdW1BZGRPblRleHQpOiBQb2ludCB7XG4gICAgcmV0dXJuIG5ldyBQb2ludChcbiAgICAgIHRleHQucG9zaXRpb24ubGVmdCxcbiAgICAgIHRleHQucG9zaXRpb24udG9wLFxuICAgICAgdGV4dC50ZXh0LFxuICAgICAgdGV4dC5jb2xvclxuICAgICk7XG4gIH1cblxuICAvLyBSZXR1cm5zIG11bHRpcGxpY2F0b3IgZm9yIGVsZW1lbnRzIHRoYXQgc2hvdWxkIGtlZXAgdGhlIHNhbWUgZGltZW5zaW9uc1xuICBwcml2YXRlIGNhbGNTY2FsZUZhY3RvcigpOiBudW1iZXIge1xuXG4gICAgY29uc3Qgb3JpZ2luYWxXaWR0aCA9IHBhcnNlRmxvYXQodGhpcy52aWV3Qm94LnNwbGl0KCcgJylbMl0pO1xuICAgIGNvbnN0IGN1cnJlbnRXaWR0aCA9IHRoaXMuc3ZnRWxlbWVudC5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoICogcGFyc2VGbG9hdCh0aGlzLnpvb21WYWx1ZSk7XG4gICAgY29uc3Qgd2lkdGhTY2FsZUZhY3RvciA9IG9yaWdpbmFsV2lkdGggLyBjdXJyZW50V2lkdGg7XG5cbiAgICBjb25zdCBvcmlnaW5hbEhlaWdodCA9IHBhcnNlRmxvYXQodGhpcy52aWV3Qm94LnNwbGl0KCcgJylbM10pO1xuICAgIGNvbnN0IGN1cnJlbnRIZWlndGggPSB0aGlzLnN2Z0VsZW1lbnQubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQgKiBwYXJzZUZsb2F0KHRoaXMuem9vbVZhbHVlKTtcbiAgICBjb25zdCBoZWlnaHRTY2FsZUZhY3RvciA9IG9yaWdpbmFsSGVpZ2h0IC8gY3VycmVudEhlaWd0aDtcblxuICAgIHJldHVybiBNYXRoLm1heCh3aWR0aFNjYWxlRmFjdG9yLCBoZWlnaHRTY2FsZUZhY3Rvcik7XG4gIH1cbn1cbiIsIjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiIHByZXNlcnZlQXNwZWN0UmF0aW89XCJ4TWlkWU1pZCBtZWV0XCJcbiAgW2F0dHIud2lkdGhdPVwid2lkdGhcIiBbYXR0ci5oZWlnaHRdPVwiaGVpZ2h0XCIgW2F0dHIudmlld0JveF09XCJ2aWV3Qm94XCIgY2xhc3M9XCJuZ3gtZ2FsbGVyeS1jZW50ZXJcIlxuICBbY2xhc3MuYW5pbWF0aW9uXT1cImFuaW1hdGlvblwiIFtjbGFzcy5uZ3gtZ2FsbGVyeS1wcmV2aWV3LXN2Z109XCJwcmV2aWV3XCIgW2NsYXNzLm5neC1nYWxsZXJ5LWltYWdlLXN2Z109XCIhcHJldmlld1wiXG4gIFtjbGFzcy5uZ3gtZ2FsbGVyeS1ncmFiXT1cImNsYXNzR3JhYlwiIFtzdHlsZS50cmFuc2Zvcm1dPVwic3R5bGVUcmFuc2Zvcm1cIiBbc3R5bGUubGVmdF09XCJwb3NMZWZ0XCIgW3N0eWxlLnRvcF09XCJwb3NUb3BcIlxuICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgI3N2Z0VsZW1lbnQ+XG4gIDxzdmc6ZyAqbmdJZj1cIiEhc3ZnQXJyb3dzLmxlbmd0aFwiIHN2Zy1hcnJvdyBbc3ZnQXJyb3dzXT1cInN2Z0Fycm93c1wiPjwvc3ZnOmc+XG4gIDxzdmc6ZyAqbmdJZj1cIiEhc3ZnUG9seWdvbnMubGVuZ3RoXCIgc3ZnLXBvbHlnb24gW3N2Z1BvbHlnb25zXT1cInN2Z1BvbHlnb25zXCI+PC9zdmc6Zz5cbiAgPHN2ZzpnICpuZ0lmPVwiISFzdmdJY29ucy5sZW5ndGhcIiBzdmctaWNvbiBbc3ZnSWNvbnNdPVwic3ZnSWNvbnNcIiBbc2NhbGVGYWN0b3JdPVwic2NhbGVGYWN0b3JcIj48L3N2ZzpnPlxuICA8c3ZnOmcgKm5nSWY9XCIhIXN2Z1RleHRzLmxlbmd0aFwiIHN2Zy10ZXh0IFtzdmdUZXh0c109XCJzdmdUZXh0c1wiIFt3aWR0aF09XCJ3aWR0aFwiIFtoZWlnaHRdPVwiaGVpZ2h0XCI+PC9zdmc6Zz5cbjwvc3ZnPlxuIl19
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Component, ElementRef, EventEmitter, HostBinding, Input, Output, Renderer2, ViewChild, } from '@angular/core';
|
|
2
2
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
3
|
+
import { forkJoin, Subject, take, timer } from 'rxjs';
|
|
3
4
|
import { NgxGalleryHelperService } from '../ngx-gallery-helper.service';
|
|
4
5
|
import { CcMediaService } from '../utils/cc-media.service';
|
|
5
6
|
import { LogService } from '../utils/logging.service';
|
|
@@ -376,14 +377,31 @@ export class NgxGalleryPreviewComponent {
|
|
|
376
377
|
}
|
|
377
378
|
show(first = false) {
|
|
378
379
|
this.loading = true;
|
|
380
|
+
this.showSpinner = true;
|
|
379
381
|
this.stopAutoPlay();
|
|
380
382
|
this.onActiveChange.emit(this.index);
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
383
|
+
this.imgLoaded$ = new Subject();
|
|
384
|
+
this.timer$ = first || !this.animation ? timer(0) : timer(500);
|
|
385
|
+
forkJoin([
|
|
386
|
+
this.imgLoaded$,
|
|
387
|
+
this.timer$.pipe(take(1))
|
|
388
|
+
])
|
|
389
|
+
.subscribe(() => {
|
|
390
|
+
this.loading = false;
|
|
391
|
+
this.showSpinner = false;
|
|
392
|
+
if (this.autoPlay) {
|
|
393
|
+
this.startAutoPlay();
|
|
394
|
+
}
|
|
395
|
+
;
|
|
396
|
+
});
|
|
397
|
+
this.timer$.subscribe(() => { this._show(); });
|
|
398
|
+
}
|
|
399
|
+
onImageLoad() {
|
|
400
|
+
if (!this.imgLoaded$) {
|
|
401
|
+
return;
|
|
386
402
|
}
|
|
403
|
+
this.imgLoaded$.next(true);
|
|
404
|
+
this.imgLoaded$.complete();
|
|
387
405
|
}
|
|
388
406
|
_show() {
|
|
389
407
|
if (this.zoomValue !== 1) {
|
|
@@ -409,42 +427,6 @@ export class NgxGalleryPreviewComponent {
|
|
|
409
427
|
if (!this.ccMediaService.isImage(this.srcType)) {
|
|
410
428
|
this.zoom = false;
|
|
411
429
|
}
|
|
412
|
-
if (!this.autoPlay) {
|
|
413
|
-
this.loading = false;
|
|
414
|
-
this.showSpinner = false;
|
|
415
|
-
}
|
|
416
|
-
else {
|
|
417
|
-
setTimeout(() => {
|
|
418
|
-
if (this.isLoaded(this.previewImage.nativeElement)) {
|
|
419
|
-
this.loading = false;
|
|
420
|
-
this.startAutoPlay();
|
|
421
|
-
}
|
|
422
|
-
else {
|
|
423
|
-
setTimeout(() => {
|
|
424
|
-
if (this.loading) {
|
|
425
|
-
this.showSpinner = true;
|
|
426
|
-
}
|
|
427
|
-
});
|
|
428
|
-
if (this.previewImage.nativeElement) {
|
|
429
|
-
this.previewImage.nativeElement.onload = () => {
|
|
430
|
-
this.loading = false;
|
|
431
|
-
this.showSpinner = false;
|
|
432
|
-
this.previewImage.nativeElement.onload = null;
|
|
433
|
-
this.startAutoPlay();
|
|
434
|
-
};
|
|
435
|
-
}
|
|
436
|
-
}
|
|
437
|
-
});
|
|
438
|
-
}
|
|
439
|
-
}
|
|
440
|
-
isLoaded(img) {
|
|
441
|
-
if (!img || !img.complete) {
|
|
442
|
-
return false;
|
|
443
|
-
}
|
|
444
|
-
if (typeof img.naturalWidth !== 'undefined' && img.naturalWidth === 0) {
|
|
445
|
-
return false;
|
|
446
|
-
}
|
|
447
|
-
return true;
|
|
448
430
|
}
|
|
449
431
|
hasLink() {
|
|
450
432
|
return !!(this.links && this.links.length && this.links[this.index]);
|
|
@@ -457,10 +439,10 @@ export class NgxGalleryPreviewComponent {
|
|
|
457
439
|
}
|
|
458
440
|
}
|
|
459
441
|
NgxGalleryPreviewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxGalleryPreviewComponent, deps: [{ token: i1.DomSanitizer }, { token: i0.ElementRef }, { token: i2.NgxGalleryHelperService }, { token: i0.Renderer2 }, { token: i3.LogService }, { token: i4.CcMediaService }], target: i0.ɵɵFactoryTarget.Component });
|
|
460
|
-
NgxGalleryPreviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: NgxGalleryPreviewComponent, selector: "ngx-gallery-preview", inputs: { prevIndex: "prevIndex", images: "images", ordImages: "ordImages", mediaInfos: "mediaInfos", links: "links", descriptions: "descriptions", types: "types", mtypes: "mtypes", widths: "widths", heights: "heights", showDescription: "showDescription", swipe: "swipe", fullscreen: "fullscreen", forceFullscreen: "forceFullscreen", closeOnClick: "closeOnClick", closeOnEsc: "closeOnEsc", keyboardNavigation: "keyboardNavigation", arrowPrevIcon: "arrowPrevIcon", arrowNextIcon: "arrowNextIcon", closeIcon: "closeIcon", fullscreenIcon: "fullscreenIcon", spinnerIcon: "spinnerIcon", autoPlay: "autoPlay", autoPlayInterval: "autoPlayInterval", autoPlayPauseOnHover: "autoPlayPauseOnHover", infinityMove: "infinityMove", interactive: "interactive", isSVGActive: "isSVGActive", zoom: "zoom", zoomStep: "zoomStep", zoomMax: "zoomMax", zoomMin: "zoomMin", interactiveIcon: "interactiveIcon", zoomInIcon: "zoomInIcon", zoomOutIcon: "zoomOutIcon", animation: "animation", actions: "actions", rotate: "rotate", rotateLeftIcon: "rotateLeftIcon", rotateRightIcon: "rotateRightIcon", download: "download", downloadIcon: "downloadIcon", bullets: "bullets", name: "name" }, outputs: { onOpen: "onOpen", onClose: "onClose", onActiveChange: "onActiveChange" }, host: { properties: { "class.ngx-gallery-active": "this.isActive" } }, viewQueries: [{ propertyName: "previewImage", first: true, predicate: ["previewImage"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ngx-gallery-arrows\n (onPrevClick)=\"showPrev()\"\n (onNextClick)=\"showNext()\"\n [prevDisabled]=\"!canShowPrev()\"\n [nextDisabled]=\"!canShowNext()\"\n [arrowPrevIcon]=\"arrowPrevIcon\"\n [arrowNextIcon]=\"arrowNextIcon\">\n</ngx-gallery-arrows>\n\n<div class=\"ngx-gallery-preview-top\">\n <div class=\"ngx-gallery-preview-icons\">\n <ng-container *ngFor=\"let action of actions\">\n <ngx-gallery-action\n *ngIf=\"!action.disabled\"\n [icon]=\"action.icon\"\n [disabled]=\"action.disabled\"\n [titleText]=\"action.titleText\"\n (onClick)=\"action.onClick($event, index)\">\n </ngx-gallery-action>\n </ng-container>\n\n <a *ngIf=\"download && src\" [href]=\"src\" class=\"ngx-gallery-icon\" aria-hidden=\"true\" download>\n <i class=\"ngx-gallery-icon-content {{ downloadIcon }}\"></i>\n </a>\n <ngx-gallery-action *ngIf=\"zoom\" [icon]=\"zoomOutIcon\" [disabled]=\"! isZoomableOut\" (onClick)=\"zoomOut()\"></ngx-gallery-action>\n <ngx-gallery-action *ngIf=\"zoom\" [icon]=\"zoomInIcon\" [disabled]=\"! isZoomableIn\" (onClick)=\"zoomIn()\"></ngx-gallery-action>\n <ngx-gallery-action *ngIf=\"rotate\" [icon]=\"rotateLeftIcon\" (onClick)=\"rotateLeft()\"></ngx-gallery-action>\n <ngx-gallery-action *ngIf=\"rotate\" [icon]=\"rotateRightIcon\" (onClick)=\"rotateRight()\"></ngx-gallery-action>\n <ngx-gallery-action *ngIf=\"fullscreen\" [icon]=\"'ngx-gallery-fullscreen ' + fullscreenIcon\" (onClick)=\"manageFullscreen()\"></ngx-gallery-action>\n <ngx-gallery-action *ngIf=\"mtypes[index] === 'video' && isVideoLowerScreenResolution()\" [icon]=\"fullscreenIcon\" (onClick)=\"fitVideoToScreen = !fitVideoToScreen\"></ngx-gallery-action>\n <ngx-gallery-action [icon]=\"'ngx-gallery-close ' + closeIcon\" (onClick)=\"close()\"></ngx-gallery-action>\n </div>\n</div>\n<div class=\"ngx-spinner-wrapper ngx-gallery-center\" [class.ngx-gallery-active]=\"showSpinner\">\n <i class=\"ngx-gallery-icon ngx-gallery-spinner {{spinnerIcon}}\" aria-hidden=\"true\"></i>\n</div>\n\n<ng-container *ngIf=\"mtypes[index] === 'video' || mtypes[index] === 'audio'; then prevVideo; else other\"></ng-container>\n\n<ng-template #other>\n <ng-container *ngIf=\"mtypes[index] === 'campus'; then campus; else img\"></ng-container>\n</ng-template>\n\n<ng-template #campus>\n <iframe *ngIf=\"isOpen\" [src]=\"src\"></iframe>\n</ng-template>\n\n<ng-template #img>\n <div\n class=\"ngx-gallery-preview-wrapper\"\n (click)=\"closeOnClick && close()\"\n (mouseup)=\"mouseUpHandler($event)\" (mousemove)=\"mouseMoveHandler($event)\"\n (touchend)=\"mouseUpHandler($event)\" (touchmove)=\"mouseMoveHandler($event)\"\n\n (click)=\"$event.stopPropagation()\"\n (mouseenter)=\"imageMouseEnter()\"\n (mouseleave)=\"imageMouseLeave()\"\n (mousedown)=\"mouseDownHandler($event)\"\n (touchstart)=\"mouseDownHandler($event)\"\n >\n <img\n #previewImage\n *ngIf=\"src\"\n class=\"ngx-gallery-preview-img ngx-gallery-center\"\n\n [src]=\"src\"\n [class.ngx-gallery-active]=\"!loading\"\n [class.ngx-gallery-grab]=\"canDrag\"\n [style.transform]=\"styleTransform\"\n [style.left]=\"positionLeft + 'px'\"\n [style.top]=\"positionTop + 'px'\"\n\n (click)=\"$event.stopPropagation()\"\n />\n\n <cc-imagesvg\n *ngIf=\"isSVGActive && hasAddOns\"\n [animation]=\"animation\"\n [width]=\"imgWidth\"\n [height]=\"imgHeight\"\n [viewBox]=\"viewBox\"\n [styleTransform]=\"styleTransform\"\n [posLeft]=\"positionLeft + 'px'\"\n [posTop]=\"positionTop + 'px'\"\n [zoomValue]=\"zoomValue\"\n [addOns]=\"ordImages[
|
|
442
|
+
NgxGalleryPreviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: NgxGalleryPreviewComponent, selector: "ngx-gallery-preview", inputs: { prevIndex: "prevIndex", images: "images", ordImages: "ordImages", mediaInfos: "mediaInfos", links: "links", descriptions: "descriptions", types: "types", mtypes: "mtypes", widths: "widths", heights: "heights", showDescription: "showDescription", swipe: "swipe", fullscreen: "fullscreen", forceFullscreen: "forceFullscreen", closeOnClick: "closeOnClick", closeOnEsc: "closeOnEsc", keyboardNavigation: "keyboardNavigation", arrowPrevIcon: "arrowPrevIcon", arrowNextIcon: "arrowNextIcon", closeIcon: "closeIcon", fullscreenIcon: "fullscreenIcon", spinnerIcon: "spinnerIcon", autoPlay: "autoPlay", autoPlayInterval: "autoPlayInterval", autoPlayPauseOnHover: "autoPlayPauseOnHover", infinityMove: "infinityMove", interactive: "interactive", isSVGActive: "isSVGActive", zoom: "zoom", zoomStep: "zoomStep", zoomMax: "zoomMax", zoomMin: "zoomMin", interactiveIcon: "interactiveIcon", zoomInIcon: "zoomInIcon", zoomOutIcon: "zoomOutIcon", animation: "animation", actions: "actions", rotate: "rotate", rotateLeftIcon: "rotateLeftIcon", rotateRightIcon: "rotateRightIcon", download: "download", downloadIcon: "downloadIcon", bullets: "bullets", name: "name" }, outputs: { onOpen: "onOpen", onClose: "onClose", onActiveChange: "onActiveChange" }, host: { properties: { "class.ngx-gallery-active": "this.isActive" } }, viewQueries: [{ propertyName: "previewImage", first: true, predicate: ["previewImage"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ngx-gallery-arrows\n (onPrevClick)=\"showPrev()\"\n (onNextClick)=\"showNext()\"\n [prevDisabled]=\"!canShowPrev()\"\n [nextDisabled]=\"!canShowNext()\"\n [arrowPrevIcon]=\"arrowPrevIcon\"\n [arrowNextIcon]=\"arrowNextIcon\">\n</ngx-gallery-arrows>\n\n<div class=\"ngx-gallery-preview-top\">\n <div class=\"ngx-gallery-preview-icons\">\n <ng-container *ngFor=\"let action of actions\">\n <ngx-gallery-action\n *ngIf=\"!action.disabled\"\n [icon]=\"action.icon\"\n [disabled]=\"action.disabled\"\n [titleText]=\"action.titleText\"\n (onClick)=\"action.onClick($event, index)\">\n </ngx-gallery-action>\n </ng-container>\n\n <a *ngIf=\"download && src\" [href]=\"src\" class=\"ngx-gallery-icon\" aria-hidden=\"true\" download>\n <i class=\"ngx-gallery-icon-content {{ downloadIcon }}\"></i>\n </a>\n <ngx-gallery-action *ngIf=\"zoom\" [icon]=\"zoomOutIcon\" [disabled]=\"! isZoomableOut\" (onClick)=\"zoomOut()\"></ngx-gallery-action>\n <ngx-gallery-action *ngIf=\"zoom\" [icon]=\"zoomInIcon\" [disabled]=\"! isZoomableIn\" (onClick)=\"zoomIn()\"></ngx-gallery-action>\n <ngx-gallery-action *ngIf=\"rotate\" [icon]=\"rotateLeftIcon\" (onClick)=\"rotateLeft()\"></ngx-gallery-action>\n <ngx-gallery-action *ngIf=\"rotate\" [icon]=\"rotateRightIcon\" (onClick)=\"rotateRight()\"></ngx-gallery-action>\n <ngx-gallery-action *ngIf=\"fullscreen\" [icon]=\"'ngx-gallery-fullscreen ' + fullscreenIcon\" (onClick)=\"manageFullscreen()\"></ngx-gallery-action>\n <ngx-gallery-action *ngIf=\"mtypes[index] === 'video' && isVideoLowerScreenResolution()\" [icon]=\"fullscreenIcon\" (onClick)=\"fitVideoToScreen = !fitVideoToScreen\"></ngx-gallery-action>\n <ngx-gallery-action [icon]=\"'ngx-gallery-close ' + closeIcon\" (onClick)=\"close()\"></ngx-gallery-action>\n </div>\n</div>\n<div class=\"ngx-spinner-wrapper ngx-gallery-center\" [class.ngx-gallery-active]=\"showSpinner\">\n <i class=\"ngx-gallery-icon ngx-gallery-spinner {{spinnerIcon}}\" aria-hidden=\"true\"></i>\n</div>\n\n<ng-container *ngIf=\"mtypes[index] === 'video' || mtypes[index] === 'audio'; then prevVideo; else other\"></ng-container>\n\n<ng-template #other>\n <ng-container *ngIf=\"mtypes[index] === 'campus'; then campus; else img\"></ng-container>\n</ng-template>\n\n<ng-template #campus>\n <iframe *ngIf=\"isOpen\" [src]=\"src\"></iframe>\n</ng-template>\n\n<ng-template #img>\n <div\n class=\"ngx-gallery-preview-wrapper\"\n (click)=\"closeOnClick && close()\"\n (mouseup)=\"mouseUpHandler($event)\" (mousemove)=\"mouseMoveHandler($event)\"\n (touchend)=\"mouseUpHandler($event)\" (touchmove)=\"mouseMoveHandler($event)\"\n\n (click)=\"$event.stopPropagation()\"\n (mouseenter)=\"imageMouseEnter()\"\n (mouseleave)=\"imageMouseLeave()\"\n (mousedown)=\"mouseDownHandler($event)\"\n (touchstart)=\"mouseDownHandler($event)\"\n >\n <img\n #previewImage\n *ngIf=\"src\"\n class=\"ngx-gallery-preview-img ngx-gallery-center\"\n\n [src]=\"src\"\n [class.ngx-gallery-active]=\"!loading\"\n [class.ngx-gallery-grab]=\"canDrag\"\n [style.transform]=\"styleTransform\"\n [style.left]=\"positionLeft + 'px'\"\n [style.top]=\"positionTop + 'px'\"\n\n (click)=\"$event.stopPropagation()\"\n (load)=\"onImageLoad()\"\n />\n\n <cc-imagesvg\n *ngIf=\"isSVGActive && hasAddOns\"\n [animation]=\"animation\"\n [width]=\"imgWidth\"\n [height]=\"imgHeight\"\n [viewBox]=\"viewBox\"\n [styleTransform]=\"styleTransform\"\n [posLeft]=\"positionLeft + 'px'\"\n [posTop]=\"positionTop + 'px'\"\n [zoomValue]=\"zoomValue\"\n [addOns]=\"ordImages[index].addOns\"\n [classGrab]=\"canDrag\"\n [preview]=\"true\"\n >\n </cc-imagesvg>\n\n <ngx-gallery-bullets *ngIf=\"bullets\" [count]=\"images.length\" [active]=\"index\" (onChange)=\"showAtIndex($event)\">\n </ngx-gallery-bullets>\n\n <div class=\"ngx-gallery-preview-text\" *ngIf=\"showDescription && description\" [innerHTML]=\"description | safeHtml\" (click)=\"$event.stopPropagation()\">\n </div>\n </div>\n</ng-template>\n\n<ng-template #prevVideo>\n <div\n class=\"ngx-gallery-preview-wrapper\"\n (click)=\"$event.stopPropagation()\">\n <cc-video\n *ngIf=\"isOpen\"\n [selectedIndex]=\"prevIndex\"\n [image]=\"ordImages[prevIndex]\"\n [showDescription]=\"showDescription\"\n [description]=\"descriptions[prevIndex]\"\n [mediaInfo]=\"mediaInfos[prevIndex]\"\n [fitVideoToScreen]=\"fitVideoToScreen\">\n </cc-video>\n </div>\n</ng-template>", styles: [":host(.ngx-gallery-active){pointer-events:auto;width:100%;height:100%;position:fixed;left:0;top:0;background:white;z-index:1000;display:inline-block}:host{display:none}:host ::ng-deep .ngx-gallery-arrow{font-size:50px}:host ::ng-deep ngx-gallery-bullets{height:5%;align-items:center;padding:0}.ngx-gallery-preview-img{opacity:0;max-width:90%;max-height:90%;-webkit-user-select:none;user-select:none;transition:opacity .5s linear,transform .5s}.ngx-gallery-preview-img.animation{transition:opacity .5s linear,transform .5s}.ngx-gallery-preview-img.ngx-gallery-active{opacity:1}.ngx-gallery-preview-img.ngx-gallery-grab{cursor:grab;cursor:-webkit-grab}.ngx-gallery-icon.ngx-gallery-spinner{font-size:50px;left:0;display:inline-block}:host ::ng-deep .ngx-gallery-preview-top{position:absolute;width:100%;-webkit-user-select:none;user-select:none;z-index:1001}:host ::ng-deep .ngx-gallery-preview-icons{float:right;padding:0 0 15px 20px;background:#ffffff8c}:host ::ng-deep .ngx-gallery-preview-icons .ngx-gallery-icon{position:relative;margin-right:20px!important;margin-top:15px!important;font-size:25px;cursor:pointer;text-decoration:none}:host ::ng-deep .ngx-gallery-preview-icons .ngx-gallery-icon.ngx-gallery-icon-disabled{cursor:default;opacity:.4}.ngx-spinner-wrapper{width:50px;height:50px;display:none}.ngx-spinner-wrapper.ngx-gallery-active{display:inline-block}.ngx-gallery-center{position:absolute;left:0;right:0;bottom:0;margin:auto;top:0}.ngx-gallery-preview-text{position:absolute;bottom:0;width:100%;background:rgba(0,0,0,.7);padding:10px;text-align:center;color:#fff;font-size:16px;flex:0 1 auto;z-index:10}:host ::ng-deep .ngx-gallery-preview-text a{color:#fff}.ngx-gallery-preview-wrapper{width:100%;height:100%;display:flex;flex-flow:column}.ngx-gallery-preview-img-wrapper{flex:1 1 auto;position:relative}.ngx-gallery-preview-svg{opacity:1;max-width:90%;max-height:90%;-webkit-user-select:none;user-select:none;transition:transform .5s}.ngx-gallery-preview-svg.animation{transition:opacity .5s linear,transform .5s}.ngx-gallery-preview-svg.ngx-gallery-active{opacity:1}.ngx-gallery-preview-svg.ngx-gallery-grab{cursor:grab;cursor:-webkit-grab}body{margin:0}iframe{display:block;background:#000;border:none;height:100vh;width:100vw}.container{overflow-y:scroll;scrollbar-width:none;-ms-overflow-style:none}.container::-webkit-scrollbar{width:0px}\n"], components: [{ type: i5.NgxGalleryArrowsComponent, selector: "ngx-gallery-arrows", inputs: ["prevDisabled", "nextDisabled", "arrowPrevIcon", "arrowNextIcon"], outputs: ["onPrevClick", "onNextClick"] }, { type: i6.NgxGalleryActionComponent, selector: "ngx-gallery-action", inputs: ["icon", "disabled", "titleText"], outputs: ["onClick"] }, { type: i7.NgxGalleryImageSvgComponent, selector: "cc-imagesvg", inputs: ["width", "height", "viewBox", "posLeft", "posTop", "zoomValue", "animation", "addOns", "classGrab", "styleTransform", "preview"] }, { type: i8.NgxGalleryBulletsComponent, selector: "ngx-gallery-bullets", inputs: ["count", "active"], outputs: ["onChange"] }, { type: i9.NgxGalleryVideoComponent, selector: "cc-video", inputs: ["image", "selectedIndex", "showDescription", "description", "mediaInfo", "fitVideoToScreen"] }], directives: [{ type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "safeHtml": i11.SafeHtmlPipe } });
|
|
461
443
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxGalleryPreviewComponent, decorators: [{
|
|
462
444
|
type: Component,
|
|
463
|
-
args: [{ selector: 'ngx-gallery-preview', template: "<ngx-gallery-arrows\n (onPrevClick)=\"showPrev()\"\n (onNextClick)=\"showNext()\"\n [prevDisabled]=\"!canShowPrev()\"\n [nextDisabled]=\"!canShowNext()\"\n [arrowPrevIcon]=\"arrowPrevIcon\"\n [arrowNextIcon]=\"arrowNextIcon\">\n</ngx-gallery-arrows>\n\n<div class=\"ngx-gallery-preview-top\">\n <div class=\"ngx-gallery-preview-icons\">\n <ng-container *ngFor=\"let action of actions\">\n <ngx-gallery-action\n *ngIf=\"!action.disabled\"\n [icon]=\"action.icon\"\n [disabled]=\"action.disabled\"\n [titleText]=\"action.titleText\"\n (onClick)=\"action.onClick($event, index)\">\n </ngx-gallery-action>\n </ng-container>\n\n <a *ngIf=\"download && src\" [href]=\"src\" class=\"ngx-gallery-icon\" aria-hidden=\"true\" download>\n <i class=\"ngx-gallery-icon-content {{ downloadIcon }}\"></i>\n </a>\n <ngx-gallery-action *ngIf=\"zoom\" [icon]=\"zoomOutIcon\" [disabled]=\"! isZoomableOut\" (onClick)=\"zoomOut()\"></ngx-gallery-action>\n <ngx-gallery-action *ngIf=\"zoom\" [icon]=\"zoomInIcon\" [disabled]=\"! isZoomableIn\" (onClick)=\"zoomIn()\"></ngx-gallery-action>\n <ngx-gallery-action *ngIf=\"rotate\" [icon]=\"rotateLeftIcon\" (onClick)=\"rotateLeft()\"></ngx-gallery-action>\n <ngx-gallery-action *ngIf=\"rotate\" [icon]=\"rotateRightIcon\" (onClick)=\"rotateRight()\"></ngx-gallery-action>\n <ngx-gallery-action *ngIf=\"fullscreen\" [icon]=\"'ngx-gallery-fullscreen ' + fullscreenIcon\" (onClick)=\"manageFullscreen()\"></ngx-gallery-action>\n <ngx-gallery-action *ngIf=\"mtypes[index] === 'video' && isVideoLowerScreenResolution()\" [icon]=\"fullscreenIcon\" (onClick)=\"fitVideoToScreen = !fitVideoToScreen\"></ngx-gallery-action>\n <ngx-gallery-action [icon]=\"'ngx-gallery-close ' + closeIcon\" (onClick)=\"close()\"></ngx-gallery-action>\n </div>\n</div>\n<div class=\"ngx-spinner-wrapper ngx-gallery-center\" [class.ngx-gallery-active]=\"showSpinner\">\n <i class=\"ngx-gallery-icon ngx-gallery-spinner {{spinnerIcon}}\" aria-hidden=\"true\"></i>\n</div>\n\n<ng-container *ngIf=\"mtypes[index] === 'video' || mtypes[index] === 'audio'; then prevVideo; else other\"></ng-container>\n\n<ng-template #other>\n <ng-container *ngIf=\"mtypes[index] === 'campus'; then campus; else img\"></ng-container>\n</ng-template>\n\n<ng-template #campus>\n <iframe *ngIf=\"isOpen\" [src]=\"src\"></iframe>\n</ng-template>\n\n<ng-template #img>\n <div\n class=\"ngx-gallery-preview-wrapper\"\n (click)=\"closeOnClick && close()\"\n (mouseup)=\"mouseUpHandler($event)\" (mousemove)=\"mouseMoveHandler($event)\"\n (touchend)=\"mouseUpHandler($event)\" (touchmove)=\"mouseMoveHandler($event)\"\n\n (click)=\"$event.stopPropagation()\"\n (mouseenter)=\"imageMouseEnter()\"\n (mouseleave)=\"imageMouseLeave()\"\n (mousedown)=\"mouseDownHandler($event)\"\n (touchstart)=\"mouseDownHandler($event)\"\n >\n <img\n #previewImage\n *ngIf=\"src\"\n class=\"ngx-gallery-preview-img ngx-gallery-center\"\n\n [src]=\"src\"\n [class.ngx-gallery-active]=\"!loading\"\n [class.ngx-gallery-grab]=\"canDrag\"\n [style.transform]=\"styleTransform\"\n [style.left]=\"positionLeft + 'px'\"\n [style.top]=\"positionTop + 'px'\"\n\n (click)=\"$event.stopPropagation()\"\n />\n\n <cc-imagesvg\n *ngIf=\"isSVGActive && hasAddOns\"\n [animation]=\"animation\"\n [width]=\"imgWidth\"\n [height]=\"imgHeight\"\n [viewBox]=\"viewBox\"\n [styleTransform]=\"styleTransform\"\n [posLeft]=\"positionLeft + 'px'\"\n [posTop]=\"positionTop + 'px'\"\n [zoomValue]=\"zoomValue\"\n [addOns]=\"ordImages[
|
|
445
|
+
args: [{ selector: 'ngx-gallery-preview', template: "<ngx-gallery-arrows\n (onPrevClick)=\"showPrev()\"\n (onNextClick)=\"showNext()\"\n [prevDisabled]=\"!canShowPrev()\"\n [nextDisabled]=\"!canShowNext()\"\n [arrowPrevIcon]=\"arrowPrevIcon\"\n [arrowNextIcon]=\"arrowNextIcon\">\n</ngx-gallery-arrows>\n\n<div class=\"ngx-gallery-preview-top\">\n <div class=\"ngx-gallery-preview-icons\">\n <ng-container *ngFor=\"let action of actions\">\n <ngx-gallery-action\n *ngIf=\"!action.disabled\"\n [icon]=\"action.icon\"\n [disabled]=\"action.disabled\"\n [titleText]=\"action.titleText\"\n (onClick)=\"action.onClick($event, index)\">\n </ngx-gallery-action>\n </ng-container>\n\n <a *ngIf=\"download && src\" [href]=\"src\" class=\"ngx-gallery-icon\" aria-hidden=\"true\" download>\n <i class=\"ngx-gallery-icon-content {{ downloadIcon }}\"></i>\n </a>\n <ngx-gallery-action *ngIf=\"zoom\" [icon]=\"zoomOutIcon\" [disabled]=\"! isZoomableOut\" (onClick)=\"zoomOut()\"></ngx-gallery-action>\n <ngx-gallery-action *ngIf=\"zoom\" [icon]=\"zoomInIcon\" [disabled]=\"! isZoomableIn\" (onClick)=\"zoomIn()\"></ngx-gallery-action>\n <ngx-gallery-action *ngIf=\"rotate\" [icon]=\"rotateLeftIcon\" (onClick)=\"rotateLeft()\"></ngx-gallery-action>\n <ngx-gallery-action *ngIf=\"rotate\" [icon]=\"rotateRightIcon\" (onClick)=\"rotateRight()\"></ngx-gallery-action>\n <ngx-gallery-action *ngIf=\"fullscreen\" [icon]=\"'ngx-gallery-fullscreen ' + fullscreenIcon\" (onClick)=\"manageFullscreen()\"></ngx-gallery-action>\n <ngx-gallery-action *ngIf=\"mtypes[index] === 'video' && isVideoLowerScreenResolution()\" [icon]=\"fullscreenIcon\" (onClick)=\"fitVideoToScreen = !fitVideoToScreen\"></ngx-gallery-action>\n <ngx-gallery-action [icon]=\"'ngx-gallery-close ' + closeIcon\" (onClick)=\"close()\"></ngx-gallery-action>\n </div>\n</div>\n<div class=\"ngx-spinner-wrapper ngx-gallery-center\" [class.ngx-gallery-active]=\"showSpinner\">\n <i class=\"ngx-gallery-icon ngx-gallery-spinner {{spinnerIcon}}\" aria-hidden=\"true\"></i>\n</div>\n\n<ng-container *ngIf=\"mtypes[index] === 'video' || mtypes[index] === 'audio'; then prevVideo; else other\"></ng-container>\n\n<ng-template #other>\n <ng-container *ngIf=\"mtypes[index] === 'campus'; then campus; else img\"></ng-container>\n</ng-template>\n\n<ng-template #campus>\n <iframe *ngIf=\"isOpen\" [src]=\"src\"></iframe>\n</ng-template>\n\n<ng-template #img>\n <div\n class=\"ngx-gallery-preview-wrapper\"\n (click)=\"closeOnClick && close()\"\n (mouseup)=\"mouseUpHandler($event)\" (mousemove)=\"mouseMoveHandler($event)\"\n (touchend)=\"mouseUpHandler($event)\" (touchmove)=\"mouseMoveHandler($event)\"\n\n (click)=\"$event.stopPropagation()\"\n (mouseenter)=\"imageMouseEnter()\"\n (mouseleave)=\"imageMouseLeave()\"\n (mousedown)=\"mouseDownHandler($event)\"\n (touchstart)=\"mouseDownHandler($event)\"\n >\n <img\n #previewImage\n *ngIf=\"src\"\n class=\"ngx-gallery-preview-img ngx-gallery-center\"\n\n [src]=\"src\"\n [class.ngx-gallery-active]=\"!loading\"\n [class.ngx-gallery-grab]=\"canDrag\"\n [style.transform]=\"styleTransform\"\n [style.left]=\"positionLeft + 'px'\"\n [style.top]=\"positionTop + 'px'\"\n\n (click)=\"$event.stopPropagation()\"\n (load)=\"onImageLoad()\"\n />\n\n <cc-imagesvg\n *ngIf=\"isSVGActive && hasAddOns\"\n [animation]=\"animation\"\n [width]=\"imgWidth\"\n [height]=\"imgHeight\"\n [viewBox]=\"viewBox\"\n [styleTransform]=\"styleTransform\"\n [posLeft]=\"positionLeft + 'px'\"\n [posTop]=\"positionTop + 'px'\"\n [zoomValue]=\"zoomValue\"\n [addOns]=\"ordImages[index].addOns\"\n [classGrab]=\"canDrag\"\n [preview]=\"true\"\n >\n </cc-imagesvg>\n\n <ngx-gallery-bullets *ngIf=\"bullets\" [count]=\"images.length\" [active]=\"index\" (onChange)=\"showAtIndex($event)\">\n </ngx-gallery-bullets>\n\n <div class=\"ngx-gallery-preview-text\" *ngIf=\"showDescription && description\" [innerHTML]=\"description | safeHtml\" (click)=\"$event.stopPropagation()\">\n </div>\n </div>\n</ng-template>\n\n<ng-template #prevVideo>\n <div\n class=\"ngx-gallery-preview-wrapper\"\n (click)=\"$event.stopPropagation()\">\n <cc-video\n *ngIf=\"isOpen\"\n [selectedIndex]=\"prevIndex\"\n [image]=\"ordImages[prevIndex]\"\n [showDescription]=\"showDescription\"\n [description]=\"descriptions[prevIndex]\"\n [mediaInfo]=\"mediaInfos[prevIndex]\"\n [fitVideoToScreen]=\"fitVideoToScreen\">\n </cc-video>\n </div>\n</ng-template>", styles: [":host(.ngx-gallery-active){pointer-events:auto;width:100%;height:100%;position:fixed;left:0;top:0;background:white;z-index:1000;display:inline-block}:host{display:none}:host ::ng-deep .ngx-gallery-arrow{font-size:50px}:host ::ng-deep ngx-gallery-bullets{height:5%;align-items:center;padding:0}.ngx-gallery-preview-img{opacity:0;max-width:90%;max-height:90%;-webkit-user-select:none;user-select:none;transition:opacity .5s linear,transform .5s}.ngx-gallery-preview-img.animation{transition:opacity .5s linear,transform .5s}.ngx-gallery-preview-img.ngx-gallery-active{opacity:1}.ngx-gallery-preview-img.ngx-gallery-grab{cursor:grab;cursor:-webkit-grab}.ngx-gallery-icon.ngx-gallery-spinner{font-size:50px;left:0;display:inline-block}:host ::ng-deep .ngx-gallery-preview-top{position:absolute;width:100%;-webkit-user-select:none;user-select:none;z-index:1001}:host ::ng-deep .ngx-gallery-preview-icons{float:right;padding:0 0 15px 20px;background:#ffffff8c}:host ::ng-deep .ngx-gallery-preview-icons .ngx-gallery-icon{position:relative;margin-right:20px!important;margin-top:15px!important;font-size:25px;cursor:pointer;text-decoration:none}:host ::ng-deep .ngx-gallery-preview-icons .ngx-gallery-icon.ngx-gallery-icon-disabled{cursor:default;opacity:.4}.ngx-spinner-wrapper{width:50px;height:50px;display:none}.ngx-spinner-wrapper.ngx-gallery-active{display:inline-block}.ngx-gallery-center{position:absolute;left:0;right:0;bottom:0;margin:auto;top:0}.ngx-gallery-preview-text{position:absolute;bottom:0;width:100%;background:rgba(0,0,0,.7);padding:10px;text-align:center;color:#fff;font-size:16px;flex:0 1 auto;z-index:10}:host ::ng-deep .ngx-gallery-preview-text a{color:#fff}.ngx-gallery-preview-wrapper{width:100%;height:100%;display:flex;flex-flow:column}.ngx-gallery-preview-img-wrapper{flex:1 1 auto;position:relative}.ngx-gallery-preview-svg{opacity:1;max-width:90%;max-height:90%;-webkit-user-select:none;user-select:none;transition:transform .5s}.ngx-gallery-preview-svg.animation{transition:opacity .5s linear,transform .5s}.ngx-gallery-preview-svg.ngx-gallery-active{opacity:1}.ngx-gallery-preview-svg.ngx-gallery-grab{cursor:grab;cursor:-webkit-grab}body{margin:0}iframe{display:block;background:#000;border:none;height:100vh;width:100vw}.container{overflow-y:scroll;scrollbar-width:none;-ms-overflow-style:none}.container::-webkit-scrollbar{width:0px}\n"] }]
|
|
464
446
|
}], ctorParameters: function () { return [{ type: i1.DomSanitizer }, { type: i0.ElementRef }, { type: i2.NgxGalleryHelperService }, { type: i0.Renderer2 }, { type: i3.LogService }, { type: i4.CcMediaService }]; }, propDecorators: { prevIndex: [{
|
|
465
447
|
type: Input
|
|
466
448
|
}], images: [{
|
|
@@ -562,4 +544,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
|
|
|
562
544
|
type: ViewChild,
|
|
563
545
|
args: ['previewImage']
|
|
564
546
|
}] } });
|
|
565
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWdhbGxlcnktcHJldmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZ2FsbGVyeS9zcmMvbGliL25neC1nYWxsZXJ5LXByZXZpZXcvbmd4LWdhbGxlcnktcHJldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZ2FsbGVyeS9zcmMvbGliL25neC1nYWxsZXJ5LXByZXZpZXcvbmd4LWdhbGxlcnktcHJldmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFJTCxNQUFNLEVBQ04sU0FBUyxFQUVULFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUF1QyxNQUFNLDJCQUEyQixDQUFDO0FBSTlGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFRdEQsTUFBTSxPQUFPLDBCQUEwQjtJQXVGckMsWUFDVSxZQUEwQixFQUMxQixVQUFzQixFQUN0QixhQUFzQyxFQUN0QyxRQUFtQixFQUNuQixVQUFzQixFQUN2QixjQUE4QjtRQUw3QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGtCQUFhLEdBQWIsYUFBYSxDQUF5QjtRQUN0QyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdkIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBckZ2QyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixp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QWYsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBRWtDLFFBQVE7c0JBQWhELFdBQVc7dUJBQUMsMEJBQTBCO2dCQUVaLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwsIFNhZmVTdHlsZSwgU2FmZVVybCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5pbXBvcnQgeyBOZ3hHYWxsZXJ5QWN0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL25neC1nYWxsZXJ5LWFjdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBOZ3hHYWxsZXJ5T3JkZXJlZEltYWdlIH0gZnJvbSAnLi4vbW9kZWxzL25neC1nYWxsZXJ5LW9yZGVyZWQtaW1hZ2UubW9kZWwnO1xuaW1wb3J0IHsgTmd4R2FsbGVyeUhlbHBlclNlcnZpY2UgfSBmcm9tICcuLi9uZ3gtZ2FsbGVyeS1oZWxwZXIuc2VydmljZSc7XG5pbXBvcnQgeyBDY01lZGlhU2VydmljZSB9IGZyb20gJy4uL3V0aWxzL2NjLW1lZGlhLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nU2VydmljZSB9IGZyb20gJy4uL3V0aWxzL2xvZ2dpbmcuc2VydmljZSc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LWdhbGxlcnktcHJldmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9uZ3gtZ2FsbGVyeS1wcmV2aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbmd4LWdhbGxlcnktcHJldmlldy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE5neEdhbGxlcnlQcmV2aWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgc3JjOiBTYWZlVXJsIHwgU2FmZVJlc291cmNlVXJsO1xuICBzcmNUeXBlOiBzdHJpbmc7XG4gIGltZ1dpZHRoOiBudW1iZXI7XG4gIGltZ0hlaWdodDogbnVtYmVyO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICB2aWV3Qm94OiBzdHJpbmc7XG4gIHNob3dTcGlubmVyID0gZmFsc2U7XG4gIHBvc2l0aW9uTGVmdCA9IDA7XG4gIHBvc2l0aW9uVG9wID0gMDtcbiAgem9vbVZhbHVlID0gMTtcbiAgaXNab29tYWJsZUluID0gZmFsc2U7XG4gIGlzWm9vbWFibGVPdXQgPSBmYWxzZTtcbiAgc3R5bGVUcmFuc2Zvcm06IFNhZmVTdHlsZTtcbiAgY2FuRHJhZzogYm9vbGVhbjtcbiAgbG9hZGluZyA9IGZhbHNlO1xuICByb3RhdGVWYWx1ZSA9IDA7XG4gIGluZGV4ID0gMDtcbiAgaGFzQWRkT25zID0gZmFsc2U7XG5cbiAgQElucHV0KCkgcHJldkluZGV4OiBudW1iZXI7XG4gIEBJbnB1dCgpIGltYWdlczogc3RyaW5nW10gfCBTYWZlUmVzb3VyY2VVcmxbXTtcbiAgQElucHV0KCkgb3JkSW1hZ2VzOiBOZ3hHYWxsZXJ5T3JkZXJlZEltYWdlW107XG4gIC8vIFRPRE86IHVzZSBpbnRlcmZhY2VcbiAgQElucHV0KCkgbWVkaWFJbmZvczogb2JqZWN0W107XG4gIEBJbnB1dCgpIGxpbmtzOiBzdHJpbmdbXTtcbiAgQElucHV0KCkgZGVzY3JpcHRpb25zOiBzdHJpbmdbXTtcbiAgQElucHV0KCkgdHlwZXM6IHN0cmluZ1tdO1xuICBASW5wdXQoKSBtdHlwZXM6IHN0cmluZ1tdO1xuICBASW5wdXQoKSB3aWR0aHM6IG51bWJlcltdO1xuICBASW5wdXQoKSBoZWlnaHRzOiBudW1iZXJbXTtcbiAgQElucHV0KCkgc2hvd0Rlc2NyaXB0aW9uOiBib29sZWFuO1xuICBASW5wdXQoKSBzd2lwZTogYm9vbGVhbjtcbiAgQElucHV0KCkgZnVsbHNjcmVlbjogYm9vbGVhbjtcbiAgQElucHV0KCkgZm9yY2VGdWxsc2NyZWVuOiBib29sZWFuO1xuICBASW5wdXQoKSBjbG9zZU9uQ2xpY2s6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGNsb3NlT25Fc2M6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGtleWJvYXJkTmF2aWdhdGlvbjogYm9vbGVhbjtcbiAgQElucHV0KCkgYXJyb3dQcmV2SWNvbjogc3RyaW5nO1xuICBASW5wdXQoKSBhcnJvd05leHRJY29uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNsb3NlSWNvbjogc3RyaW5nO1xuICBASW5wdXQoKSBmdWxsc2NyZWVuSWNvbjogc3RyaW5nO1xuICBASW5wdXQoKSBzcGlubmVySWNvbjogc3RyaW5nO1xuICBASW5wdXQoKSBhdXRvUGxheTogYm9vbGVhbjtcbiAgQElucHV0KCkgYXV0b1BsYXlJbnRlcnZhbDogbnVtYmVyO1xuICBASW5wdXQoKSBhdXRvUGxheVBhdXNlT25Ib3ZlcjogYm9vbGVhbjtcbiAgQElucHV0KCkgaW5maW5pdHlNb3ZlOiBib29sZWFuO1xuICBASW5wdXQoKSBpbnRlcmFjdGl2ZTogYm9vbGVhbjtcbiAgQElucHV0KCkgaXNTVkdBY3RpdmU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHpvb206IGJvb2xlYW47XG4gIEBJbnB1dCgpIHpvb21TdGVwOiBudW1iZXI7XG4gIEBJbnB1dCgpIHpvb21NYXg6IG51bWJlcjtcbiAgQElucHV0KCkgem9vbU1pbjogbnVtYmVyO1xuICBASW5wdXQoKSBpbnRlcmFjdGl2ZUljb246IHN0cmluZztcbiAgQElucHV0KCkgem9vbUluSWNvbjogc3RyaW5nO1xuICBASW5wdXQoKSB6b29tT3V0SWNvbjogc3RyaW5nO1xuICBASW5wdXQoKSBhbmltYXRpb246IGJvb2xlYW47XG4gIEBJbnB1dCgpIGFjdGlvbnM6IE5neEdhbGxlcnlBY3Rpb25bXTtcbiAgQElucHV0KCkgcm90YXRlOiBib29sZWFuO1xuICBASW5wdXQoKSByb3RhdGVMZWZ0SWNvbjogc3RyaW5nO1xuICBASW5wdXQoKSByb3RhdGVSaWdodEljb246IHN0cmluZztcbiAgQElucHV0KCkgZG93bmxvYWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGRvd25sb2FkSWNvbjogc3RyaW5nO1xuICBASW5wdXQoKSBidWxsZXRzOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG5hbWU6IHN0cmluZztcblxuICBAT3V0cHV0KCkgb25PcGVuID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25DbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uQWN0aXZlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5uZ3gtZ2FsbGVyeS1hY3RpdmUnKSBpc0FjdGl2ZTogYm9vbGVhbjtcblxuICBAVmlld0NoaWxkKCdwcmV2aWV3SW1hZ2UnKSBwcmV2aWV3SW1hZ2U6IEVsZW1lbnRSZWY7XG5cbiAgZml0VmlkZW9Ub1NjcmVlbjogYm9vbGVhbjtcbiAgaXNPcGVuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSB0aW1lcjtcbiAgcHJpdmF0ZSBpbml0aWFsWCA9IDA7XG4gIHByaXZhdGUgaW5pdGlhbFkgPSAwO1xuICBwcml2YXRlIGluaXRpYWxMZWZ0ID0gMDtcbiAgcHJpdmF0ZSBpbml0aWFsVG9wID0gMDtcbiAgcHJpdmF0ZSBpc01vdmUgPSBmYWxzZTtcblxuICBwcml2YXRlIGtleURvd25MaXN0ZW5lcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNhbml0aXphdGlvbjogRG9tU2FuaXRpemVyLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIGhlbHBlclNlcnZpY2U6IE5neEdhbGxlcnlIZWxwZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIGxvZ1NlcnZpY2U6IExvZ1NlcnZpY2UsXG4gICAgcHVibGljIGNjTWVkaWFTZXJ2aWNlOiBDY01lZGlhU2VydmljZVxuICApIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubG9nU2VydmljZS5sb2coJ05neEdhbGxlcnlQcmV2aWV3Q29tcG9uZW50Lm5nT25Jbml0ICgnICsgdGhpcy5uYW1lICsgJyknLCAnLi4uJyk7XG4gICAgdGhpcy5maXRWaWRlb1RvU2NyZWVuID0gIXRoaXMuaXNWaWRlb0xvd2VyU2NyZWVuUmVzb2x1dGlvbigpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICghY2hhbmdlcy5pc0ZpcnN0Q2hhbmdlKSB7XG4gICAgICBsZXQgcHJldkluZGV4Q2hhbmdlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5sb2dTZXJ2aWNlLmxvZygnTmd4R2FsbGVyeVByZXZpZXdDb21wb25lbnQubmdPbkNoYW5nZSAoJyArIHRoaXMubmFtZSArICcpJywgJy4uLicpO1xuICAgICAgdGhpcy5zdHlsZVRyYW5zZm9ybSA9IHRoaXMuZ2V0VHJhbnNmb3JtKCk7XG4gICAgICB0aGlzLmNhbkRyYWcgPSB0aGlzLmNhbkRyYWdPblpvb20oKTtcbiAgICAgIHRoaXMuaXNab29tYWJsZUluID0gdGhpcy5jYW5ab29tSW4oKTtcbiAgICAgIHRoaXMuaXNab29tYWJsZU91dCA9IHRoaXMuY2FuWm9vbU91dCgpO1xuXG4gICAgICBpZiAoY2hhbmdlcy5zd2lwZSkge1xuICAgICAgICB0aGlzLmhlbHBlclNlcnZpY2UubWFuYWdlU3dpcGUodGhpcy5zd2lwZSwgdGhpcy5lbGVtZW50UmVmLFxuICAgICAgICAgICdwcmV2aWV3JywgKCkgPT4gdGhpcy5zaG93TmV4dCgpLCAoKSA9PiB0aGlzLnNob3dQcmV2KCkpO1xuICAgICAgfVxuXG4gICAgICBwcmV2SW5kZXhDaGFuZ2VkID0gKGNoYW5nZXMucHJldkluZGV4ICYmICFjaGFuZ2VzLnByZXZJbmRleC5pc0ZpcnN0Q2hhbmdlKClcbiAgICAgICAgJiYgY2hhbmdlcy5wcmV2SW5kZXguY3VycmVudFZhbHVlID4gLTEpO1xuICAgICAgY29uc3QgaW1hZ2VDaGFuZ2VkID0gKGNoYW5nZXMuaW1hZ2VzKTtcblxuICAgICAgaWYgKGltYWdlQ2hhbmdlZCB8fCBwcmV2SW5kZXhDaGFuZ2VkKSB7XG4gICAgICAgIGlmIChwcmV2SW5kZXhDaGFuZ2VkKSB7XG4gICAgICAgICAgdGhpcy5pbmRleCA9IHRoaXMucHJldkluZGV4O1xuICAgICAgICAgIHRoaXMub3Blbih0aGlzLnByZXZJbmRleCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2dTZXJ2aWNlLmxvZygnTmd4R2FsbGVyeVByZXZpZXdDb21wb25lbnQubmdPbkNoYW5nZSAoJyArIHRoaXMubmFtZSArICcpJywgJ3ByZXZJbmRleDogJyArIHRoaXMucHJldkluZGV4KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9nU2VydmljZS5sb2coJ05neEdhbGxlcnlQcmV2aWV3Q29tcG9uZW50Lm5nT25DaGFuZ2UgKCcgKyB0aGlzLm5hbWUgKyAnKScsICdjaGFuZ2VzLnByZXZJbmRleDogJyArIGNoYW5nZXMucHJldkluZGV4KTtcbiAgICAgIH1cbiAgICAgIHRoaXMubG9nU2VydmljZS5sb2coJ05neEdhbGxlcnlQcmV2aWV3Q29tcG9uZW50Lm5nT25DaGFuZ2UgKCcgKyB0aGlzLm5hbWUgKyAnKScsICdpbWFnZXNbMF06ICcgKyAodGhpcy5pbWFnZXMgJiYgdGhpcy5pbWFnZXNbMF0pKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmxvZ1NlcnZpY2UubG9nKCdOZ3hHYWxsZXJ5UHJldmlld0NvbXBvbmVudC5uZ09uRGVzdHJveSAoJyArIHRoaXMubmFtZSArICcpJywgJy4uLicpO1xuICAgIGlmICh0aGlzLmtleURvd25MaXN0ZW5lcikge1xuICAgICAgdGhpcy5rZXlEb3duTGlzdGVuZXIoKTtcbiAgICB9XG4gIH1cblxuICBpc1ZpZGVvTG93ZXJTY3JlZW5SZXNvbHV0aW9uKCkge1xuICAgIGxldCBpc1ZpZGVvTG93ZXJTY3JlZW4gPSB0cnVlO1xuXG4gICAgaWYgKCEhdGhpcy5tZWRpYUluZm9zICYmICEhdGhpcy5wcmV2SW5kZXgpIHtcbiAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy5tZWRpYUluZm9zW3RoaXMucHJldkluZGV4XVsnd2lkdGgnXTtcbiAgICAgIGNvbnN0IGhlaWdodCA9IHRoaXMubWVkaWFJbmZvc1t0aGlzLnByZXZJbmRleF1bJ2hlaWdodCddO1xuXG4gICAgICBpc1ZpZGVvTG93ZXJTY3JlZW4gPSB3aWR0aCA8IHdpbmRvdy5pbm5lcldpZHRoICYmIGhlaWdodCA8IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICB9XG4gICAgcmV0dXJuIGlzVmlkZW9Mb3dlclNjcmVlbjtcbiAgfVxuXG4gIG9uS2V5RG93bihlKSB7XG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICBpZiAodGhpcy5rZXlib2FyZE5hdmlnYXRpb24pIHtcbiAgICAgICAgaWYgKHRoaXMuaXNLZXlib2FyZFByZXYoZSkpIHtcbiAgICAgICAgICB0aGlzLnNob3dQcmV2KCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0tleWJvYXJkTmV4dChlKSkge1xuICAgICAgICAgIHRoaXMuc2hvd05leHQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuY2xvc2VPbkVzYyAmJiB0aGlzLmlzS2V5Ym9hcmRFc2MoZSkpIHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9wZW4oaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMubG9nU2VydmljZS5sb2coJ05neEdhbGxlcnlQcmV2aWV3Q29tcG9uZW50Lm9wZW4oJyArIHRoaXMubmFtZSArICcpJywgJ3N0YXJ0cyAuLi4gJyArIGluZGV4KTtcbiAgICB0aGlzLmxvZ1NlcnZpY2UubG9nKCdOZ3hHYWxsZXJ5UHJldmlld0NvbXBvbmVudC5vcGVuKCcgKyB0aGlzLm5hbWUgKyAnKScsICdpbWFnZTogJyArIHRoaXMuaW1hZ2VzW2luZGV4XSk7XG4gICAgdGhpcy5vbk9wZW4uZW1pdCgpO1xuXG4gICAgdGhpcy5pbmRleCA9IGluZGV4O1xuICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcbiAgICB0aGlzLnNob3codHJ1ZSk7XG5cbiAgICBpZiAodGhpcy5mb3JjZUZ1bGxzY3JlZW4pIHtcbiAgICAgIHRoaXMubWFuYWdlRnVsbHNjcmVlbigpO1xuICAgIH1cblxuICAgIHRoaXMua2V5RG93bkxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdrZXlkb3duJywgKGUpID0+IHRoaXMub25LZXlEb3duKGUpKTtcbiAgfVxuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5jbG9zZUZ1bGxzY3JlZW4oKTtcbiAgICB0aGlzLm9uQ2xvc2UuZW1pdCgpO1xuXG4gICAgdGhpcy5zdG9wQXV0b1BsYXkoKTtcblxuICAgIGlmICh0aGlzLmtleURvd25MaXN0ZW5lcikge1xuICAgICAgdGhpcy5rZXlEb3duTGlzdGVuZXIoKTtcbiAgICB9XG4gIH1cblxuICBpbWFnZU1vdXNlRW50ZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYXV0b1BsYXkgJiYgdGhpcy5hdXRvUGxheVBhdXNlT25Ib3Zlcikge1xuICAgICAgdGhpcy5zdG9wQXV0b1BsYXkoKTtcbiAgICB9XG4gIH1cblxuICBpbWFnZU1vdXNlTGVhdmUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYXV0b1BsYXkgJiYgdGhpcy5hdXRvUGxheVBhdXNlT25Ib3Zlcikge1xuICAgICAgdGhpcy5zdGFydEF1dG9QbGF5KCk7XG4gICAgfVxuICB9XG5cbiAgc3RhcnRBdXRvUGxheSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hdXRvUGxheSkge1xuICAgICAgdGhpcy5zdG9wQXV0b1BsYXkoKTtcblxuICAgICAgdGhpcy50aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuc2hvd05leHQoKSkge1xuICAgICAgICAgIHRoaXMuaW5kZXggPSAtMTtcbiAgICAgICAgICB0aGlzLnNob3dOZXh0KCk7XG4gICAgICAgIH1cbiAgICAgIH0sIHRoaXMuYXV0b1BsYXlJbnRlcnZhbCk7XG4gICAgfVxuICB9XG5cbiAgc3RvcEF1dG9QbGF5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lcik7XG4gICAgfVxuICB9XG5cbiAgc2hvd0F0SW5kZXgoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuaW5kZXggPSBpbmRleDtcbiAgICB0aGlzLnNob3coKTtcbiAgfVxuXG4gIHNob3dOZXh0KCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmNhblNob3dOZXh0KCkpIHtcbiAgICAgIHRoaXMuaW5kZXggPSB0aGlzLmdldE5leHRJbWFnZUluZGV4KCk7XG4gICAgICB0aGlzLnNob3coKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgc2hvd1ByZXYoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2FuU2hvd1ByZXYoKSkge1xuICAgICAgdGhpcy5pbmRleCA9IHRoaXMuZ2V0UHJldkltYWdlSW5kZXgoKTtcbiAgICAgIHRoaXMuc2hvdygpO1xuICAgIH1cbiAgfVxuXG4gIGNhblNob3dOZXh0KCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmxvYWRpbmcpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaW1hZ2VzKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXROZXh0SW1hZ2VJbmRleCgpICE9PSB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBjYW5TaG93UHJldigpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5sb2FkaW5nKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIGlmICh0aGlzLmltYWdlcykge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0UHJldkltYWdlSW5kZXgoKSAhPT0gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXROZXh0SW1hZ2VJbmRleCgpOiBudW1iZXIge1xuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5pbmRleCArIDE7XG4gICAgY29uc3QgZW5kID0gdGhpcy5pbmZpbml0eU1vdmUgPyB0aGlzLmltYWdlcy5sZW5ndGggKyB0aGlzLmluZGV4IC0gMSA6IHRoaXMuaW1hZ2VzLmxlbmd0aDtcbiAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkrKykge1xuICAgICAgY29uc3QgaW5kZXggPSBpICUgdGhpcy5pbWFnZXMubGVuZ3RoO1xuICAgICAgaWYgKHRoaXMuaXNJdGVyYWJsZUltYWdlKGluZGV4LCB0aGlzLm10eXBlcykpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm47XG4gIH1cblxuICBwcml2YXRlIGdldFByZXZJbWFnZUluZGV4KCk6IG51bWJlciB7XG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLmltYWdlcy5sZW5ndGggKyB0aGlzLmluZGV4IC0gMTtcbiAgICBjb25zdCBlbmQgPSB0aGlzLmluZmluaXR5TW92ZSA/IHRoaXMuaW5kZXggOiB0aGlzLmltYWdlcy5sZW5ndGggLSAxO1xuICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA+IGVuZDsgaS0tKSB7XG4gICAgICBjb25zdCBpbmRleCA9IGkgJSB0aGlzLmltYWdlcy5sZW5ndGg7XG4gICAgICBpZiAodGhpcy5pc0l0ZXJhYmxlSW1hZ2UoaW5kZXgsIHRoaXMubXR5cGVzKSkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIHByaXZhdGUgaXNJdGVyYWJsZUltYWdlKGluZGV4OiBudW1iZXIsIG1lZGlhVHlwZXM6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFsnaW1hZ2UnLCAncGRmJ10uaW5kZXhPZihtZWRpYVR5cGVzW2luZGV4XSkgIT09IC0xO1xuICB9XG5cbiAgbWFuYWdlRnVsbHNjcmVlbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mdWxsc2NyZWVuIHx8IHRoaXMuZm9yY2VGdWxsc2NyZWVuKSB7XG4gICAgICBjb25zdCBkb2MgPSBkb2N1bWVudCBhcyBhbnk7XG5cbiAgICAgIGlmICghZG9jLmZ1bGxzY3JlZW5FbGVtZW50ICYmICFkb2MubW96RnVsbFNjcmVlbkVsZW1lbnRcbiAgICAgICAgJiYgIWRvYy53ZWJraXRGdWxsc2NyZWVuRWxlbWVudCAmJiAhZG9jLm1zRnVsbHNjcmVlbkVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5vcGVuRnVsbHNjcmVlbigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jbG9zZUZ1bGxzY3JlZW4oKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRTYWZlVXJsKGltYWdlOiBzdHJpbmcpOiBTYWZlVXJsIHtcbiAgICByZXR1cm4gIWltYWdlIHx8IGltYWdlLnN1YnN0cigwLCAxMCkgPT09ICdkYXRhOmltYWdlJyA/XG4gICAgICBpbWFnZSA6IHRoaXMuc2FuaXRpemF0aW9uLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwoaW1hZ2UpO1xuICB9XG5cbiAgZ2V0U2FmZVJlc291cmNlVXJsKHJlc1VybDogc3RyaW5nKTogU2FmZVJlc291cmNlVXJsIHtcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6YXRpb24uYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHJlc1VybCk7XG4gIH1cblxuICB6b29tSW4oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNab29tYWJsZUluKSB7XG4gICAgICB0aGlzLnpvb21WYWx1ZSArPSB0aGlzLnpvb21TdGVwO1xuXG4gICAgICBpZiAodGhpcy56b29tVmFsdWUgPiB0aGlzLnpvb21NYXgpIHtcbiAgICAgICAgdGhpcy56b29tVmFsdWUgPSB0aGlzLnpvb21NYXg7XG4gICAgICB9XG4gICAgICB0aGlzLnN0eWxlVHJhbnNmb3JtID0gdGhpcy5nZXRUcmFuc2Zvcm0oKTtcbiAgICAgIHRoaXMuY2FuRHJhZyA9IHRoaXMuY2FuRHJhZ09uWm9vbSgpO1xuICAgICAgdGhpcy5pc1pvb21hYmxlSW4gPSB0aGlzLmNhblpvb21JbigpO1xuICAgICAgdGhpcy5pc1pvb21hYmxlT3V0ID0gdGhpcy5jYW5ab29tT3V0KCk7XG4gICAgfVxuICB9XG5cbiAgem9vbU91dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc1pvb21hYmxlT3V0KSB7XG4gICAgICB0aGlzLnpvb21WYWx1ZSAtPSB0aGlzLnpvb21TdGVwO1xuXG4gICAgICBpZiAodGhpcy56b29tVmFsdWUgPCB0aGlzLnpvb21NaW4pIHtcbiAgICAgICAgdGhpcy56b29tVmFsdWUgPSB0aGlzLnpvb21NaW47XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnpvb21WYWx1ZSA8PSAxKSB7XG4gICAgICAgIHRoaXMucmVzZXRQb3NpdGlvbigpO1xuICAgICAgfVxuICAgICAgdGhpcy5zdHlsZVRyYW5zZm9ybSA9IHRoaXMuZ2V0VHJhbnNmb3JtKCk7XG4gICAgICB0aGlzLmNhbkRyYWcgPSB0aGlzLmNhbkRyYWdPblpvb20oKTtcbiAgICAgIHRoaXMuaXNab29tYWJsZUluID0gdGhpcy5jYW5ab29tSW4oKTtcbiAgICAgIHRoaXMuaXNab29tYWJsZU91dCA9IHRoaXMuY2FuWm9vbU91dCgpO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0Wm9vbSgpIHtcbiAgICB0aGlzLnpvb21WYWx1ZSA9IDE7XG4gICAgdGhpcy5zdHlsZVRyYW5zZm9ybSA9IHRoaXMuZ2V0VHJhbnNmb3JtKCk7XG4gICAgdGhpcy5jYW5EcmFnID0gdGhpcy5jYW5EcmFnT25ab29tKCk7XG4gICAgdGhpcy5pc1pvb21hYmxlSW4gPSB0aGlzLmNhblpvb21JbigpO1xuICAgIHRoaXMuaXNab29tYWJsZU91dCA9IHRoaXMuY2FuWm9vbU91dCgpO1xuICB9XG5cbiAgcm90YXRlTGVmdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJvdGF0ZVZhbHVlIC09IDkwO1xuICB9XG5cbiAgcm90YXRlUmlnaHQoKTogdm9pZCB7XG4gICAgdGhpcy5yb3RhdGVWYWx1ZSArPSA5MDtcbiAgfVxuXG4gIGdldFRyYW5zZm9ybSgpOiBTYWZlU3R5bGUge1xuICAgIHJldHVybiB0aGlzLnNhbml0aXphdGlvbi5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUoJ3NjYWxlKCcgKyB0aGlzLnpvb21WYWx1ZSArICcpIHJvdGF0ZSgnICsgdGhpcy5yb3RhdGVWYWx1ZSArICdkZWcpJyk7XG4gIH1cblxuICBjYW5ab29tSW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFsncGRmJywgJ2NhbXB1cyddLmluZGV4T2YodGhpcy5tdHlwZXNbdGhpcy5pbmRleF0pID09PSAtMSAmJiB0aGlzLnpvb21WYWx1ZSA8IHRoaXMuem9vbU1heDtcbiAgfVxuXG4gIGNhblpvb21PdXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFsncGRmJywgJ2NhbXB1cyddLmluZGV4T2YodGhpcy5tdHlwZXNbdGhpcy5pbmRleF0pID09PSAtMSAmJiB0aGlzLnpvb21WYWx1ZSA+IHRoaXMuem9vbU1pbjtcbiAgfVxuXG4gIGNhbkRyYWdPblpvb20oKSB7XG4gICAgcmV0dXJuIHRoaXMuem9vbSAmJiB0aGlzLnpvb21WYWx1ZSA+IDE7XG4gIH1cblxuICBtb3VzZURvd25IYW5kbGVyKGUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYW5EcmFnT25ab29tKCkpIHtcbiAgICAgIHRoaXMuaW5pdGlhbFggPSB0aGlzLmdldENsaWVudFgoZSk7XG4gICAgICB0aGlzLmluaXRpYWxZID0gdGhpcy5nZXRDbGllbnRZKGUpO1xuICAgICAgdGhpcy5pbml0aWFsTGVmdCA9IHRoaXMucG9zaXRpb25MZWZ0O1xuICAgICAgdGhpcy5pbml0aWFsVG9wID0gdGhpcy5wb3NpdGlvblRvcDtcbiAgICAgIHRoaXMuaXNNb3ZlID0gdHJ1ZTtcblxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIG1vdXNlVXBIYW5kbGVyKGUpOiB2b2lkIHtcbiAgICB0aGlzLmlzTW92ZSA9IGZhbHNlO1xuICB9XG5cbiAgbW91c2VNb3ZlSGFuZGxlcihlKSB7XG4gICAgaWYgKHRoaXMuaXNNb3ZlKSB7XG4gICAgICB0aGlzLnBvc2l0aW9uTGVmdCA9IHRoaXMuaW5pdGlhbExlZnQgKyAodGhpcy5nZXRDbGllbnRYKGUpIC0gdGhpcy5pbml0aWFsWCk7XG4gICAgICB0aGlzLnBvc2l0aW9uVG9wID0gdGhpcy5pbml0aWFsVG9wICsgKHRoaXMuZ2V0Q2xpZW50WShlKSAtIHRoaXMuaW5pdGlhbFkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2xpZW50WChlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZS50b3VjaGVzICYmIGUudG91Y2hlcy5sZW5ndGggPyBlLnRvdWNoZXNbMF0uY2xpZW50WCA6IGUuY2xpZW50WDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2xpZW50WShlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZS50b3VjaGVzICYmIGUudG91Y2hlcy5sZW5ndGggPyBlLnRvdWNoZXNbMF0uY2xpZW50WSA6IGUuY2xpZW50WTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRQb3NpdGlvbigpIHtcbiAgICBpZiAodGhpcy56b29tKSB7XG4gICAgICB0aGlzLnBvc2l0aW9uTGVmdCA9IDA7XG4gICAgICB0aGlzLnBvc2l0aW9uVG9wID0gMDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzS2V5Ym9hcmROZXh0KGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZS5rZXlDb2RlID09PSAzOSA/IHRydWUgOiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgaXNLZXlib2FyZFByZXYoZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBlLmtleUNvZGUgPT09IDM3ID8gdHJ1ZSA6IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0tleWJvYXJkRXNjKGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZS5rZXlDb2RlID09PSAyNyA/IHRydWUgOiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbkZ1bGxzY3JlZW4oKTogdm9pZCB7XG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCBhcyBhbnk7XG5cbiAgICBpZiAoZWxlbWVudC5yZXF1ZXN0RnVsbHNjcmVlbikge1xuICAgICAgZWxlbWVudC5yZXF1ZXN0RnVsbHNjcmVlbigpO1xuICAgIH0gZWxzZSBpZiAoZWxlbWVudC5tc1JlcXVlc3RGdWxsc2NyZWVuKSB7XG4gICAgICBlbGVtZW50Lm1zUmVxdWVzdEZ1bGxzY3JlZW4oKTtcbiAgICB9IGVsc2UgaWYgKGVsZW1lbnQubW96UmVxdWVzdEZ1bGxTY3JlZW4pIHtcbiAgICAgIGVsZW1lbnQubW96UmVxdWVzdEZ1bGxTY3JlZW4oKTtcbiAgICB9IGVsc2UgaWYgKGVsZW1lbnQud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4pIHtcbiAgICAgIGVsZW1lbnQud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsb3NlRnVsbHNjcmVlbigpOiB2b2lkIHtcblxuICAgIGNvbnN0IGRvYyA9IGRvY3VtZW50IGFzIGFueTtcbiAgICBjb25zdCBmdWxsc2NyZWVuUG9seWZpbGxzID0gW1xuICAgICAge1xuICAgICAgICB2ZW5kb3I6ICdzdGFuZGFyZCcsXG4gICAgICAgIGZ1bGxzY3JlZW5FbGVtZW50OiAnZnVsbHNjcmVlbkVsZW1lbnQnLFxuICAgICAgICBleGl0RnVsbHNjcmVlbkZuOiAnZXhpdEZ1bGxzY3JlZW4nLFxuICAgICAgfSwge1xuICAgICAgICB2ZW5kb3I6IFsnYmxpbmsnLCAnc2FmYXJpJywgJ2VkZ2UnXSxcbiAgICAgICAgZnVsbHNjcmVlbkVsZW1lbnQ6ICd3ZWJraXRGdWxsc2NyZWVuRWxlbWVudCcsXG4gICAgICAgIGV4aXRGdWxsc2NyZWVuRm46ICd3ZWJraXRFeGl0RnVsbHNjcmVlbicsXG4gICAgICB9LCB7XG4gICAgICAgIHZlbmRvcjogJ2dlY2tvJyxcbiAgICAgICAgZnVsbHNjcmVlbkVsZW1lbnQ6ICdtb3pGdWxsU2NyZWVuRWxlbWVudCcsXG4gICAgICAgIGV4aXRGdWxsc2NyZWVuRm46ICdtb3pDYW5jZWxGdWxsU2NyZWVuJyxcbiAgICAgIH0sIHtcbiAgICAgICAgdmVuZG9yOiAnaWUxMScsXG4gICAgICAgIGZ1bGxzY3JlZW5FbGVtZW50OiAnbXNGdWxsc2NyZWVuRWxlbWVudCcsXG4gICAgICAgIGV4aXRGdWxsc2NyZWVuRm46ICdtc0V4aXRGdWxsc2NyZWVuJyxcbiAgICAgIH1cbiAgICBdO1xuICAgIC8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9wcmVmZXItZm9yLW9mICovXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGZ1bGxzY3JlZW5Qb2x5ZmlsbHMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBmdWxsc2NyZWVuUG9seWZpbGwgPSBmdWxsc2NyZWVuUG9seWZpbGxzW2luZGV4XTtcbiAgICAgIGlmIChkb2NbZnVsbHNjcmVlblBvbHlmaWxsLmZ1bGxzY3JlZW5FbGVtZW50XSAhPT0gbnVsbCAmJiBkb2NbZnVsbHNjcmVlblBvbHlmaWxsLmV4aXRGdWxsc2NyZWVuRm5dKSB7XG4gICAgICAgIGRvY1tmdWxsc2NyZWVuUG9seWZpbGwuZXhpdEZ1bGxzY3JlZW5Gbl0oKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2hvdyhmaXJzdCA9IGZhbHNlKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnN0b3BBdXRvUGxheSgpO1xuXG4gICAgdGhpcy5vbkFjdGl2ZUNoYW5nZS5lbWl0KHRoaXMuaW5kZXgpO1xuXG4gICAgaWYgKGZpcnN0IHx8ICF0aGlzLmFuaW1hdGlvbikge1xuICAgICAgdGhpcy5fc2hvdygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuX3Nob3coKSwgNjAwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zaG93KCkge1xuICAgIGlmICh0aGlzLnpvb21WYWx1ZSAhPT0gMSkge1xuICAgICAgdGhpcy5yZXNldFpvb20oKTtcbiAgICB9XG4gICAgdGhpcy5zdHlsZVRyYW5zZm9ybSA9IHRoaXMuZ2V0VHJhbnNmb3JtKCk7XG4gICAgdGhpcy5jYW5EcmFnID0gdGhpcy5jYW5EcmFnT25ab29tKCk7XG4gICAgdGhpcy5yb3RhdGVWYWx1ZSA9IDA7XG4gICAgdGhpcy5yZXNldFBvc2l0aW9uKCk7XG5cbiAgICB0aGlzLnNyYyA9IHRoaXMubXR5cGVzW3RoaXMuaW5kZXhdID09PSAnY2FtcHVzJyA/XG4gICAgICB0aGlzLmdldFNhZmVSZXNvdXJjZVVybCh0aGlzLmltYWdlc1t0aGlzLmluZGV4XSBhcyBzdHJpbmcpIDpcbiAgICAgIHRoaXMuZ2V0U2FmZVVybCh0aGlzLmltYWdlc1t0aGlzLmluZGV4XSBhcyBzdHJpbmcpO1xuICAgIHRoaXMuZGVzY3JpcHRpb24gPSB0aGlzLmRlc2NyaXB0aW9uc1t0aGlzLmluZGV4XTtcbiAgICB0aGlzLnNyY1R5cGUgPSB0aGlzLnR5cGVzW3RoaXMuaW5kZXhdO1xuICAgIHRoaXMuaW1nSGVpZ2h0ID0gdGhpcy5oZWlnaHRzW3RoaXMuaW5kZXhdO1xuICAgIHRoaXMuaW1nV2lkdGggPSB0aGlzLndpZHRoc1t0aGlzLmluZGV4XTtcbiAgICB0aGlzLnZpZXdCb3ggPSAnMCAwICcgKyB0aGlzLmltZ1dpZHRoICsgJyAnICsgdGhpcy5pbWdIZWlnaHQ7XG4gICAgdGhpcy5oYXNBZGRPbnMgPSAhIXRoaXMub3JkSW1hZ2VzICYmICEhdGhpcy5vcmRJbWFnZXNbdGhpcy5pbmRleF0gJiYgISF0aGlzLm9yZEltYWdlc1t0aGlzLmluZGV4XS5hZGRPbnMubGVuZ3RoO1xuXG4gICAgdGhpcy5sb2dTZXJ2aWNlLmxvZygnTmd4R2FsbGVyeVByZXZpZXdDb21wb25lbnQuX3Nob3cnLCAnaW5kZXggLSAnICsgdGhpcy5pbmRleCk7XG4gICAgdGhpcy5sb2dTZXJ2aWNlLmxvZygnTmd4R2FsbGVyeVByZXZpZXdDb21wb25lbnQuX3Nob3cnLCAnc3JjVHlwZSAtICcgKyB0aGlzLnNyY1R5cGUpO1xuICAgIHRoaXMubG9nU2VydmljZS5sb2coJ05neEdhbGxlcnlQcmV2aWV3Q29tcG9uZW50Ll9zaG93JywgJ3VybCAtICcgKyB0aGlzLmltYWdlc1t0aGlzLmluZGV4XSk7XG4gICAgdGhpcy5sb2dTZXJ2aWNlLmxvZygnTmd4R2FsbGVyeVByZXZpZXdDb21wb25lbnQuX3Nob3cnLCAnc3JjIC0gJyArIHRoaXMuc3JjKTtcbiAgICBpZiAoIXRoaXMuY2NNZWRpYVNlcnZpY2UuaXNJbWFnZSh0aGlzLnNyY1R5cGUpKSB7XG4gICAgICB0aGlzLnpvb20gPSBmYWxzZTtcbiAgICB9XG5cblxuICAgIGlmICghdGhpcy5hdXRvUGxheSkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLnNob3dTcGlubmVyID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5pc0xvYWRlZCh0aGlzLnByZXZpZXdJbWFnZS5uYXRpdmVFbGVtZW50KSkge1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuc3RhcnRBdXRvUGxheSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMubG9hZGluZykge1xuICAgICAgICAgICAgICB0aGlzLnNob3dTcGlubmVyID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAodGhpcy5wcmV2aWV3SW1hZ2UubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5wcmV2aWV3SW1hZ2UubmF0aXZlRWxlbWVudC5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICB0aGlzLnNob3dTcGlubmVyID0gZmFsc2U7XG4gICAgICAgICAgICAgIHRoaXMucHJldmlld0ltYWdlLm5hdGl2ZUVsZW1lbnQub25sb2FkID0gbnVsbDtcbiAgICAgICAgICAgICAgdGhpcy5zdGFydEF1dG9QbGF5KCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc0xvYWRlZChpbWcpOiBib29sZWFuIHtcbiAgICBpZiAoIWltZyB8fCAhaW1nLmNvbXBsZXRlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBpbWcubmF0dXJhbFdpZHRoICE9PSAndW5kZWZpbmVkJyAmJiBpbWcubmF0dXJhbFdpZHRoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBoYXNMaW5rKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhISh0aGlzLmxpbmtzICYmIHRoaXMubGlua3MubGVuZ3RoICYmIHRoaXMubGlua3NbdGhpcy5pbmRleF0pO1xuICB9XG5cbiAgZ2V0SW1hZ2VzKCk6IE5neEdhbGxlcnlPcmRlcmVkSW1hZ2VbXSB7XG4gICAgaWYgKCF0aGlzLm9yZEltYWdlcykge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm9yZEltYWdlcztcbiAgfVxufVxuIiwiPG5neC1nYWxsZXJ5LWFycm93c1xuICAob25QcmV2Q2xpY2spPVwic2hvd1ByZXYoKVwiXG4gIChvbk5leHRDbGljayk9XCJzaG93TmV4dCgpXCJcbiAgW3ByZXZEaXNhYmxlZF09XCIhY2FuU2hvd1ByZXYoKVwiXG4gIFtuZXh0RGlzYWJsZWRdPVwiIWNhblNob3dOZXh0KClcIlxuICBbYXJyb3dQcmV2SWNvbl09XCJhcnJvd1ByZXZJY29uXCJcbiAgW2Fycm93TmV4dEljb25dPVwiYXJyb3dOZXh0SWNvblwiPlxuPC9uZ3gtZ2FsbGVyeS1hcnJvd3M+XG5cbjxkaXYgY2xhc3M9XCJuZ3gtZ2FsbGVyeS1wcmV2aWV3LXRvcFwiPlxuICA8ZGl2IGNsYXNzPVwibmd4LWdhbGxlcnktcHJldmlldy1pY29uc1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBhY3Rpb25zXCI+XG4gICAgICA8bmd4LWdhbGxlcnktYWN0aW9uXG4gICAgICAgICpuZ0lmPVwiIWFjdGlvbi5kaXNhYmxlZFwiXG4gICAgICAgIFtpY29uXT1cImFjdGlvbi5pY29uXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImFjdGlvbi5kaXNhYmxlZFwiXG4gICAgICAgIFt0aXRsZVRleHRdPVwiYWN0aW9uLnRpdGxlVGV4dFwiXG4gICAgICAgIChvbkNsaWNrKT1cImFjdGlvbi5vbkNsaWNrKCRldmVudCwgaW5kZXgpXCI+XG4gICAgICA8L25neC1nYWxsZXJ5LWFjdGlvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxhICpuZ0lmPVwiZG93bmxvYWQgJiYgc3JjXCIgW2hyZWZdPVwic3JjXCIgY2xhc3M9XCJuZ3gtZ2FsbGVyeS1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgZG93bmxvYWQ+XG4gICAgICA8aSBjbGFzcz1cIm5neC1nYWxsZXJ5LWljb24tY29udGVudCB7eyBkb3dubG9hZEljb24gfX1cIj48L2k+XG4gICAgPC9hPlxuICAgIDxuZ3gtZ2FsbGVyeS1hY3Rpb24gKm5nSWY9XCJ6b29tXCIgW2ljb25dPVwiem9vbU91dEljb25cIiBbZGlzYWJsZWRdPVwiISBpc1pvb21hYmxlT3V0XCIgKG9uQ2xpY2spPVwiem9vbU91dCgpXCI+PC9uZ3gtZ2FsbGVyeS1hY3Rpb24+XG4gICAgPG5neC1nYWxsZXJ5LWFjdGlvbiAqbmdJZj1cInpvb21cIiBbaWNvbl09XCJ6b29tSW5JY29uXCIgW2Rpc2FibGVkXT1cIiEgaXNab29tYWJsZUluXCIgKG9uQ2xpY2spPVwiem9vbUluKClcIj48L25neC1nYWxsZXJ5LWFjdGlvbj5cbiAgICA8bmd4LWdhbGxlcnktYWN0aW9uICpuZ0lmPVwicm90YXRlXCIgW2ljb25dPVwicm90YXRlTGVmdEljb25cIiAob25DbGljayk9XCJyb3RhdGVMZWZ0KClcIj48L25neC1nYWxsZXJ5LWFjdGlvbj5cbiAgICA8bmd4LWdhbGxlcnktYWN0aW9uICpuZ0lmPVwicm90YXRlXCIgW2ljb25dPVwicm90YXRlUmlnaHRJY29uXCIgKG9uQ2xpY2spPVwicm90YXRlUmlnaHQoKVwiPjwvbmd4LWdhbGxlcnktYWN0aW9uPlxuICAgIDxuZ3gtZ2FsbGVyeS1hY3Rpb24gKm5nSWY9XCJmdWxsc2NyZWVuXCIgW2ljb25dPVwiJ25neC1nYWxsZXJ5LWZ1bGxzY3JlZW4gJyArIGZ1bGxzY3JlZW5JY29uXCIgKG9uQ2xpY2spPVwibWFuYWdlRnVsbHNjcmVlbigpXCI+PC9uZ3gtZ2FsbGVyeS1hY3Rpb24+XG4gICAgPG5neC1nYWxsZXJ5LWFjdGlvbiAqbmdJZj1cIm10eXBlc1tpbmRleF0gPT09ICd2aWRlbycgJiYgaXNWaWRlb0xvd2VyU2NyZWVuUmVzb2x1dGlvbigpXCIgW2ljb25dPVwiZnVsbHNjcmVlbkljb25cIiAob25DbGljayk9XCJmaXRWaWRlb1RvU2NyZWVuID0gIWZpdFZpZGVvVG9TY3JlZW5cIj48L25neC1nYWxsZXJ5LWFjdGlvbj5cbiAgICA8bmd4LWdhbGxlcnktYWN0aW9uIFtpY29uXT1cIiduZ3gtZ2FsbGVyeS1jbG9zZSAnICsgY2xvc2VJY29uXCIgKG9uQ2xpY2spPVwiY2xvc2UoKVwiPjwvbmd4LWdhbGxlcnktYWN0aW9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cIm5neC1zcGlubmVyLXdyYXBwZXIgbmd4LWdhbGxlcnktY2VudGVyXCIgW2NsYXNzLm5neC1nYWxsZXJ5LWFjdGl2ZV09XCJzaG93U3Bpbm5lclwiPlxuICA8aSBjbGFzcz1cIm5neC1nYWxsZXJ5LWljb24gbmd4LWdhbGxlcnktc3Bpbm5lciB7e3NwaW5uZXJJY29ufX1cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG48L2Rpdj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIm10eXBlc1tpbmRleF0gPT09ICd2aWRlbycgfHwgbXR5cGVzW2luZGV4XSA9PT0gJ2F1ZGlvJzsgdGhlbiBwcmV2VmlkZW87IGVsc2Ugb3RoZXJcIj48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNvdGhlcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm10eXBlc1tpbmRleF0gPT09ICdjYW1wdXMnOyB0aGVuIGNhbXB1czsgZWxzZSBpbWdcIj48L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY2FtcHVzPlxuICA8aWZyYW1lICpuZ0lmPVwiaXNPcGVuXCIgW3NyY109XCJzcmNcIj48L2lmcmFtZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaW1nPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJuZ3gtZ2FsbGVyeS1wcmV2aWV3LXdyYXBwZXJcIlxuICAgIChjbGljayk9XCJjbG9zZU9uQ2xpY2sgJiYgY2xvc2UoKVwiXG4gICAgKG1vdXNldXApPVwibW91c2VVcEhhbmRsZXIoJGV2ZW50KVwiIChtb3VzZW1vdmUpPVwibW91c2VNb3ZlSGFuZGxlcigkZXZlbnQpXCJcbiAgICAodG91Y2hlbmQpPVwibW91c2VVcEhhbmRsZXIoJGV2ZW50KVwiICh0b3VjaG1vdmUpPVwibW91c2VNb3ZlSGFuZGxlcigkZXZlbnQpXCJcblxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgIChtb3VzZWVudGVyKT1cImltYWdlTW91c2VFbnRlcigpXCJcbiAgICAobW91c2VsZWF2ZSk9XCJpbWFnZU1vdXNlTGVhdmUoKVwiXG4gICAgKG1vdXNlZG93bik9XCJtb3VzZURvd25IYW5kbGVyKCRldmVudClcIlxuICAgICh0b3VjaHN0YXJ0KT1cIm1vdXNlRG93bkhhbmRsZXIoJGV2ZW50KVwiXG4gID5cbiAgICA8aW1nXG4gICAgICAjcHJldmlld0ltYWdlXG4gICAgICAqbmdJZj1cInNyY1wiXG4gICAgICBjbGFzcz1cIm5neC1nYWxsZXJ5LXByZXZpZXctaW1nIG5neC1nYWxsZXJ5LWNlbnRlclwiXG5cbiAgICAgIFtzcmNdPVwic3JjXCJcbiAgICAgIFtjbGFzcy5uZ3gtZ2FsbGVyeS1hY3RpdmVdPVwiIWxvYWRpbmdcIlxuICAgICAgW2NsYXNzLm5neC1nYWxsZXJ5LWdyYWJdPVwiY2FuRHJhZ1wiXG4gICAgICBbc3R5bGUudHJhbnNmb3JtXT1cInN0eWxlVHJhbnNmb3JtXCJcbiAgICAgIFtzdHlsZS5sZWZ0XT1cInBvc2l0aW9uTGVmdCArICdweCdcIlxuICAgICAgW3N0eWxlLnRvcF09XCJwb3NpdGlvblRvcCArICdweCdcIlxuXG4gICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAvPlxuXG4gICAgPGNjLWltYWdlc3ZnXG4gICAgICAqbmdJZj1cImlzU1ZHQWN0aXZlICYmIGhhc0FkZE9uc1wiXG4gICAgICBbYW5pbWF0aW9uXT1cImFuaW1hdGlvblwiXG4gICAgICBbd2lkdGhdPVwiaW1nV2lkdGhcIlxuICAgICAgW2hlaWdodF09XCJpbWdIZWlnaHRcIlxuICAgICAgW3ZpZXdCb3hdPVwidmlld0JveFwiXG4gICAgICBbc3R5bGVUcmFuc2Zvcm1dPVwic3R5bGVUcmFuc2Zvcm1cIlxuICAgICAgW3Bvc0xlZnRdPVwicG9zaXRpb25MZWZ0ICsgJ3B4J1wiXG4gICAgICBbcG9zVG9wXT1cInBvc2l0aW9uVG9wICsgJ3B4J1wiXG4gICAgICBbem9vbVZhbHVlXT1cInpvb21WYWx1ZVwiXG4gICAgICBbYWRkT25zXT1cIm9yZEltYWdlc1twcmV2SW5kZXhdLmFkZE9uc1wiXG4gICAgICBbY2xhc3NHcmFiXT1cImNhbkRyYWdcIlxuICAgICAgW3ByZXZpZXddPVwidHJ1ZVwiXG4gICAgPlxuICAgIDwvY2MtaW1hZ2Vzdmc+XG5cbiAgICA8bmd4LWdhbGxlcnktYnVsbGV0cyAqbmdJZj1cImJ1bGxldHNcIiBbY291bnRdPVwiaW1hZ2VzLmxlbmd0aFwiIFthY3RpdmVdPVwiaW5kZXhcIiAob25DaGFuZ2UpPVwic2hvd0F0SW5kZXgoJGV2ZW50KVwiPlxuICAgIDwvbmd4LWdhbGxlcnktYnVsbGV0cz5cblxuICAgIDxkaXYgY2xhc3M9XCJuZ3gtZ2FsbGVyeS1wcmV2aWV3LXRleHRcIiAqbmdJZj1cInNob3dEZXNjcmlwdGlvbiAmJiBkZXNjcmlwdGlvblwiIFtpbm5lckhUTUxdPVwiZGVzY3JpcHRpb24gfCBzYWZlSHRtbFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3ByZXZWaWRlbz5cbiAgPGRpdlxuICAgIGNsYXNzPVwibmd4LWdhbGxlcnktcHJldmlldy13cmFwcGVyXCJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgPGNjLXZpZGVvXG4gICAgICAqbmdJZj1cImlzT3BlblwiXG4gICAgICBbc2VsZWN0ZWRJbmRleF09XCJwcmV2SW5kZXhcIlxuICAgICAgW2ltYWdlXT1cIm9yZEltYWdlc1twcmV2SW5kZXhdXCJcbiAgICAgIFtzaG93RGVzY3JpcHRpb25dPVwic2hvd0Rlc2NyaXB0aW9uXCJcbiAgICAgIFtkZXNjcmlwdGlvbl09XCJkZXNjcmlwdGlvbnNbcHJldkluZGV4XVwiXG4gICAgICBbbWVkaWFJbmZvXT1cIm1lZGlhSW5mb3NbcHJldkluZGV4XVwiXG4gICAgICBbZml0VmlkZW9Ub1NjcmVlbl09XCJmaXRWaWRlb1RvU2NyZWVuXCI+XG4gICAgPC9jYy12aWRlbz5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==
|
|
547
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWdhbGxlcnktcHJldmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZ2FsbGVyeS9zcmMvbGliL25neC1nYWxsZXJ5LXByZXZpZXcvbmd4LWdhbGxlcnktcHJldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZ2FsbGVyeS9zcmMvbGliL25neC1nYWxsZXJ5LXByZXZpZXcvbmd4LWdhbGxlcnktcHJldmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFJTCxNQUFNLEVBQ04sU0FBUyxFQUVULFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUF1QyxNQUFNLDJCQUEyQixDQUFDO0FBQzlGLE9BQU8sRUFBRSxRQUFRLEVBQWMsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJbEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVF0RCxNQUFNLE9BQU8sMEJBQTBCO0lBeUZyQyxZQUNVLFlBQTBCLEVBQzFCLFVBQXNCLEVBQ3RCLGFBQXNDLEVBQ3RDLFFBQW1CLEVBQ25CLFVBQXNCLEVBQ3ZCLGNBQThCO1FBTDdCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsa0JBQWEsR0FBYixhQUFhLENBQXlCO1FBQ3RDLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsZUFBVSxHQUFWLFVB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LEtBQUs7Z0JBRUksTUFBTTtzQkFBZixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFFa0MsUUFBUTtzQkFBaEQsV0FBVzt1QkFBQywwQkFBMEI7Z0JBRVosWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVSZXNvdXJjZVVybCwgU2FmZVN0eWxlLCBTYWZlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGFrZSwgdGltZXIgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTmd4R2FsbGVyeUFjdGlvbiB9IGZyb20gJy4uL21vZGVscy9uZ3gtZ2FsbGVyeS1hY3Rpb24ubW9kZWwnO1xuaW1wb3J0IHsgTmd4R2FsbGVyeU9yZGVyZWRJbWFnZSB9IGZyb20gJy4uL21vZGVscy9uZ3gtZ2FsbGVyeS1vcmRlcmVkLWltYWdlLm1vZGVsJztcbmltcG9ydCB7IE5neEdhbGxlcnlIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vbmd4LWdhbGxlcnktaGVscGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2NNZWRpYVNlcnZpY2UgfSBmcm9tICcuLi91dGlscy9jYy1tZWRpYS5zZXJ2aWNlJztcbmltcG9ydCB7IExvZ1NlcnZpY2UgfSBmcm9tICcuLi91dGlscy9sb2dnaW5nLnNlcnZpY2UnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1nYWxsZXJ5LXByZXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vbmd4LWdhbGxlcnktcHJldmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25neC1nYWxsZXJ5LXByZXZpZXcuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hHYWxsZXJ5UHJldmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIHNyYzogU2FmZVVybCB8IFNhZmVSZXNvdXJjZVVybDtcbiAgc3JjVHlwZTogc3RyaW5nO1xuICBpbWdXaWR0aDogbnVtYmVyO1xuICBpbWdIZWlnaHQ6IG51bWJlcjtcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgdmlld0JveDogc3RyaW5nO1xuICBzaG93U3Bpbm5lciA9IGZhbHNlO1xuICBwb3NpdGlvbkxlZnQgPSAwO1xuICBwb3NpdGlvblRvcCA9IDA7XG4gIHpvb21WYWx1ZSA9IDE7XG4gIGlzWm9vbWFibGVJbiA9IGZhbHNlO1xuICBpc1pvb21hYmxlT3V0ID0gZmFsc2U7XG4gIHN0eWxlVHJhbnNmb3JtOiBTYWZlU3R5bGU7XG4gIGNhbkRyYWc6IGJvb2xlYW47XG4gIGxvYWRpbmcgPSBmYWxzZTtcbiAgcm90YXRlVmFsdWUgPSAwO1xuICBpbmRleCA9IDA7XG4gIGhhc0FkZE9ucyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHByZXZJbmRleDogbnVtYmVyO1xuICBASW5wdXQoKSBpbWFnZXM6IHN0cmluZ1tdIHwgU2FmZVJlc291cmNlVXJsW107XG4gIEBJbnB1dCgpIG9yZEltYWdlczogTmd4R2FsbGVyeU9yZGVyZWRJbWFnZVtdO1xuICAvLyBUT0RPOiB1c2UgaW50ZXJmYWNlXG4gIEBJbnB1dCgpIG1lZGlhSW5mb3M6IG9iamVjdFtdO1xuICBASW5wdXQoKSBsaW5rczogc3RyaW5nW107XG4gIEBJbnB1dCgpIGRlc2NyaXB0aW9uczogc3RyaW5nW107XG4gIEBJbnB1dCgpIHR5cGVzOiBzdHJpbmdbXTtcbiAgQElucHV0KCkgbXR5cGVzOiBzdHJpbmdbXTtcbiAgQElucHV0KCkgd2lkdGhzOiBudW1iZXJbXTtcbiAgQElucHV0KCkgaGVpZ2h0czogbnVtYmVyW107XG4gIEBJbnB1dCgpIHNob3dEZXNjcmlwdGlvbjogYm9vbGVhbjtcbiAgQElucHV0KCkgc3dpcGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGZ1bGxzY3JlZW46IGJvb2xlYW47XG4gIEBJbnB1dCgpIGZvcmNlRnVsbHNjcmVlbjogYm9vbGVhbjtcbiAgQElucHV0KCkgY2xvc2VPbkNsaWNrOiBib29sZWFuO1xuICBASW5wdXQoKSBjbG9zZU9uRXNjOiBib29sZWFuO1xuICBASW5wdXQoKSBrZXlib2FyZE5hdmlnYXRpb246IGJvb2xlYW47XG4gIEBJbnB1dCgpIGFycm93UHJldkljb246IHN0cmluZztcbiAgQElucHV0KCkgYXJyb3dOZXh0SWNvbjogc3RyaW5nO1xuICBASW5wdXQoKSBjbG9zZUljb246IHN0cmluZztcbiAgQElucHV0KCkgZnVsbHNjcmVlbkljb246IHN0cmluZztcbiAgQElucHV0KCkgc3Bpbm5lckljb246IHN0cmluZztcbiAgQElucHV0KCkgYXV0b1BsYXk6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGF1dG9QbGF5SW50ZXJ2YWw6IG51bWJlcjtcbiAgQElucHV0KCkgYXV0b1BsYXlQYXVzZU9uSG92ZXI6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGluZmluaXR5TW92ZTogYm9vbGVhbjtcbiAgQElucHV0KCkgaW50ZXJhY3RpdmU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGlzU1ZHQWN0aXZlOiBib29sZWFuO1xuICBASW5wdXQoKSB6b29tOiBib29sZWFuO1xuICBASW5wdXQoKSB6b29tU3RlcDogbnVtYmVyO1xuICBASW5wdXQoKSB6b29tTWF4OiBudW1iZXI7XG4gIEBJbnB1dCgpIHpvb21NaW46IG51bWJlcjtcbiAgQElucHV0KCkgaW50ZXJhY3RpdmVJY29uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHpvb21Jbkljb246IHN0cmluZztcbiAgQElucHV0KCkgem9vbU91dEljb246IHN0cmluZztcbiAgQElucHV0KCkgYW5pbWF0aW9uOiBib29sZWFuO1xuICBASW5wdXQoKSBhY3Rpb25zOiBOZ3hHYWxsZXJ5QWN0aW9uW107XG4gIEBJbnB1dCgpIHJvdGF0ZTogYm9vbGVhbjtcbiAgQElucHV0KCkgcm90YXRlTGVmdEljb246IHN0cmluZztcbiAgQElucHV0KCkgcm90YXRlUmlnaHRJY29uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRvd25sb2FkOiBib29sZWFuO1xuICBASW5wdXQoKSBkb3dubG9hZEljb246IHN0cmluZztcbiAgQElucHV0KCkgYnVsbGV0czogc3RyaW5nO1xuICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XG5cbiAgQE91dHB1dCgpIG9uT3BlbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uQ2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkFjdGl2ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3Mubmd4LWdhbGxlcnktYWN0aXZlJykgaXNBY3RpdmU6IGJvb2xlYW47XG5cbiAgQFZpZXdDaGlsZCgncHJldmlld0ltYWdlJykgcHJldmlld0ltYWdlOiBFbGVtZW50UmVmO1xuXG4gIGZpdFZpZGVvVG9TY3JlZW46IGJvb2xlYW47XG4gIGlzT3BlbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgdGltZXI7XG4gIHByaXZhdGUgaW5pdGlhbFggPSAwO1xuICBwcml2YXRlIGluaXRpYWxZID0gMDtcbiAgcHJpdmF0ZSBpbml0aWFsTGVmdCA9IDA7XG4gIHByaXZhdGUgaW5pdGlhbFRvcCA9IDA7XG4gIHByaXZhdGUgaXNNb3ZlID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBrZXlEb3duTGlzdGVuZXI7XG4gIHByaXZhdGUgaW1nTG9hZGVkJDogU3ViamVjdDxhbnk+O1xuICBwcml2YXRlIHRpbWVyJDogT2JzZXJ2YWJsZTxudW1iZXI+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2FuaXRpemF0aW9uOiBEb21TYW5pdGl6ZXIsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgaGVscGVyU2VydmljZTogTmd4R2FsbGVyeUhlbHBlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgbG9nU2VydmljZTogTG9nU2VydmljZSxcbiAgICBwdWJsaWMgY2NNZWRpYVNlcnZpY2U6IENjTWVkaWFTZXJ2aWNlXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5sb2dTZXJ2aWNlLmxvZygnTmd4R2FsbGVyeVByZXZpZXdDb21wb25lbnQubmdPbkluaXQgKCcgKyB0aGlzLm5hbWUgKyAnKScsICcuLi4nKTtcbiAgICB0aGlzLmZpdFZpZGVvVG9TY3JlZW4gPSAhdGhpcy5pc1ZpZGVvTG93ZXJTY3JlZW5SZXNvbHV0aW9uKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKCFjaGFuZ2VzLmlzRmlyc3RDaGFuZ2UpIHtcbiAgICAgIGxldCBwcmV2SW5kZXhDaGFuZ2VkID0gZmFsc2U7XG4gICAgICB0aGlzLmxvZ1NlcnZpY2UubG9nKCdOZ3hHYWxsZXJ5UHJldmlld0NvbXBvbmVudC5uZ09uQ2hhbmdlICgnICsgdGhpcy5uYW1lICsgJyknLCAnLi4uJyk7XG4gICAgICB0aGlzLnN0eWxlVHJhbnNmb3JtID0gdGhpcy5nZXRUcmFuc2Zvcm0oKTtcbiAgICAgIHRoaXMuY2FuRHJhZyA9IHRoaXMuY2FuRHJhZ09uWm9vbSgpO1xuICAgICAgdGhpcy5pc1pvb21hYmxlSW4gPSB0aGlzLmNhblpvb21JbigpO1xuICAgICAgdGhpcy5pc1pvb21hYmxlT3V0ID0gdGhpcy5jYW5ab29tT3V0KCk7XG5cbiAgICAgIGlmIChjaGFuZ2VzLnN3aXBlKSB7XG4gICAgICAgIHRoaXMuaGVscGVyU2VydmljZS5tYW5hZ2VTd2lwZSh0aGlzLnN3aXBlLCB0aGlzLmVsZW1lbnRSZWYsXG4gICAgICAgICAgJ3ByZXZpZXcnLCAoKSA9PiB0aGlzLnNob3dOZXh0KCksICgpID0+IHRoaXMuc2hvd1ByZXYoKSk7XG4gICAgICB9XG5cbiAgICAgIHByZXZJbmRleENoYW5nZWQgPSAoY2hhbmdlcy5wcmV2SW5kZXggJiYgIWNoYW5nZXMucHJldkluZGV4LmlzRmlyc3RDaGFuZ2UoKVxuICAgICAgICAmJiBjaGFuZ2VzLnByZXZJbmRleC5jdXJyZW50VmFsdWUgPiAtMSk7XG4gICAgICBjb25zdCBpbWFnZUNoYW5nZWQgPSAoY2hhbmdlcy5pbWFnZXMpO1xuXG4gICAgICBpZiAoaW1hZ2VDaGFuZ2VkIHx8IHByZXZJbmRleENoYW5nZWQpIHtcbiAgICAgICAgaWYgKHByZXZJbmRleENoYW5nZWQpIHtcbiAgICAgICAgICB0aGlzLmluZGV4ID0gdGhpcy5wcmV2SW5kZXg7XG4gICAgICAgICAgdGhpcy5vcGVuKHRoaXMucHJldkluZGV4KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxvZ1NlcnZpY2UubG9nKCdOZ3hHYWxsZXJ5UHJldmlld0NvbXBvbmVudC5uZ09uQ2hhbmdlICgnICsgdGhpcy5uYW1lICsgJyknLCAncHJldkluZGV4OiAnICsgdGhpcy5wcmV2SW5kZXgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2dTZXJ2aWNlLmxvZygnTmd4R2FsbGVyeVByZXZpZXdDb21wb25lbnQubmdPbkNoYW5nZSAoJyArIHRoaXMubmFtZSArICcpJywgJ2NoYW5nZXMucHJldkluZGV4OiAnICsgY2hhbmdlcy5wcmV2SW5kZXgpO1xuICAgICAgfVxuICAgICAgdGhpcy5sb2dTZXJ2aWNlLmxvZygnTmd4R2FsbGVyeVByZXZpZXdDb21wb25lbnQubmdPbkNoYW5nZSAoJyArIHRoaXMubmFtZSArICcpJywgJ2ltYWdlc1swXTogJyArICh0aGlzLmltYWdlcyAmJiB0aGlzLmltYWdlc1swXSkpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMubG9nU2VydmljZS5sb2coJ05neEdhbGxlcnlQcmV2aWV3Q29tcG9uZW50Lm5nT25EZXN0cm95ICgnICsgdGhpcy5uYW1lICsgJyknLCAnLi4uJyk7XG4gICAgaWYgKHRoaXMua2V5RG93bkxpc3RlbmVyKSB7XG4gICAgICB0aGlzLmtleURvd25MaXN0ZW5lcigpO1xuICAgIH1cbiAgfVxuXG4gIGlzVmlkZW9Mb3dlclNjcmVlblJlc29sdXRpb24oKSB7XG4gICAgbGV0IGlzVmlkZW9Mb3dlclNjcmVlbiA9IHRydWU7XG5cbiAgICBpZiAoISF0aGlzLm1lZGlhSW5mb3MgJiYgISF0aGlzLnByZXZJbmRleCkge1xuICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLm1lZGlhSW5mb3NbdGhpcy5wcmV2SW5kZXhdWyd3aWR0aCddO1xuICAgICAgY29uc3QgaGVpZ2h0ID0gdGhpcy5tZWRpYUluZm9zW3RoaXMucHJldkluZGV4XVsnaGVpZ2h0J107XG5cbiAgICAgIGlzVmlkZW9Mb3dlclNjcmVlbiA9IHdpZHRoIDwgd2luZG93LmlubmVyV2lkdGggJiYgaGVpZ2h0IDwgd2luZG93LmlubmVySGVpZ2h0O1xuICAgIH1cbiAgICByZXR1cm4gaXNWaWRlb0xvd2VyU2NyZWVuO1xuICB9XG5cbiAgb25LZXlEb3duKGUpIHtcbiAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgIGlmICh0aGlzLmtleWJvYXJkTmF2aWdhdGlvbikge1xuICAgICAgICBpZiAodGhpcy5pc0tleWJvYXJkUHJldihlKSkge1xuICAgICAgICAgIHRoaXMuc2hvd1ByZXYoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzS2V5Ym9hcmROZXh0KGUpKSB7XG4gICAgICAgICAgdGhpcy5zaG93TmV4dCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5jbG9zZU9uRXNjICYmIHRoaXMuaXNLZXlib2FyZEVzYyhlKSkge1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb3BlbihpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5sb2dTZXJ2aWNlLmxvZygnTmd4R2FsbGVyeVByZXZpZXdDb21wb25lbnQub3BlbignICsgdGhpcy5uYW1lICsgJyknLCAnc3RhcnRzIC4uLiAnICsgaW5kZXgpO1xuICAgIHRoaXMubG9nU2VydmljZS5sb2coJ05neEdhbGxlcnlQcmV2aWV3Q29tcG9uZW50Lm9wZW4oJyArIHRoaXMubmFtZSArICcpJywgJ2ltYWdlOiAnICsgdGhpcy5pbWFnZXNbaW5kZXhdKTtcbiAgICB0aGlzLm9uT3Blbi5lbWl0KCk7XG5cbiAgICB0aGlzLmluZGV4ID0gaW5kZXg7XG4gICAgdGhpcy5pc09wZW4gPSB0cnVlO1xuICAgIHRoaXMuc2hvdyh0cnVlKTtcblxuICAgIGlmICh0aGlzLmZvcmNlRnVsbHNjcmVlbikge1xuICAgICAgdGhpcy5tYW5hZ2VGdWxsc2NyZWVuKCk7XG4gICAgfVxuXG4gICAgdGhpcy5rZXlEb3duTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbignd2luZG93JywgJ2tleWRvd24nLCAoZSkgPT4gdGhpcy5vbktleURvd24oZSkpO1xuICB9XG5cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmNsb3NlRnVsbHNjcmVlbigpO1xuICAgIHRoaXMub25DbG9zZS5lbWl0KCk7XG5cbiAgICB0aGlzLnN0b3BBdXRvUGxheSgpO1xuXG4gICAgaWYgKHRoaXMua2V5RG93bkxpc3RlbmVyKSB7XG4gICAgICB0aGlzLmtleURvd25MaXN0ZW5lcigpO1xuICAgIH1cbiAgfVxuXG4gIGltYWdlTW91c2VFbnRlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hdXRvUGxheSAmJiB0aGlzLmF1dG9QbGF5UGF1c2VPbkhvdmVyKSB7XG4gICAgICB0aGlzLnN0b3BBdXRvUGxheSgpO1xuICAgIH1cbiAgfVxuXG4gIGltYWdlTW91c2VMZWF2ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hdXRvUGxheSAmJiB0aGlzLmF1dG9QbGF5UGF1c2VPbkhvdmVyKSB7XG4gICAgICB0aGlzLnN0YXJ0QXV0b1BsYXkoKTtcbiAgICB9XG4gIH1cblxuICBzdGFydEF1dG9QbGF5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmF1dG9QbGF5KSB7XG4gICAgICB0aGlzLnN0b3BBdXRvUGxheSgpO1xuXG4gICAgICB0aGlzLnRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5zaG93TmV4dCgpKSB7XG4gICAgICAgICAgdGhpcy5pbmRleCA9IC0xO1xuICAgICAgICAgIHRoaXMuc2hvd05leHQoKTtcbiAgICAgICAgfVxuICAgICAgfSwgdGhpcy5hdXRvUGxheUludGVydmFsKTtcbiAgICB9XG4gIH1cblxuICBzdG9wQXV0b1BsYXkoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudGltZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKTtcbiAgICB9XG4gIH1cblxuICBzaG93QXRJbmRleChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5pbmRleCA9IGluZGV4O1xuICAgIHRoaXMuc2hvdygpO1xuICB9XG5cbiAgc2hvd05leHQoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuY2FuU2hvd05leHQoKSkge1xuICAgICAgdGhpcy5pbmRleCA9IHRoaXMuZ2V0TmV4dEltYWdlSW5kZXgoKTtcbiAgICAgIHRoaXMuc2hvdygpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBzaG93UHJldigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYW5TaG93UHJldigpKSB7XG4gICAgICB0aGlzLmluZGV4ID0gdGhpcy5nZXRQcmV2SW1hZ2VJbmRleCgpO1xuICAgICAgdGhpcy5zaG93KCk7XG4gICAgfVxuICB9XG5cbiAgY2FuU2hvd05leHQoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMubG9hZGluZykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pbWFnZXMpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldE5leHRJbWFnZUluZGV4KCkgIT09IHVuZGVmaW5lZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGNhblNob3dQcmV2KCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmxvYWRpbmcpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaW1hZ2VzKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRQcmV2SW1hZ2VJbmRleCgpICE9PSB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldE5leHRJbWFnZUluZGV4KCk6IG51bWJlciB7XG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLmluZGV4ICsgMTtcbiAgICBjb25zdCBlbmQgPSB0aGlzLmluZmluaXR5TW92ZSA/IHRoaXMuaW1hZ2VzLmxlbmd0aCArIHRoaXMuaW5kZXggLSAxIDogdGhpcy5pbWFnZXMubGVuZ3RoO1xuICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8IGVuZDsgaSsrKSB7XG4gICAgICBjb25zdCBpbmRleCA9IGkgJSB0aGlzLmltYWdlcy5sZW5ndGg7XG4gICAgICBpZiAodGhpcy5pc0l0ZXJhYmxlSW1hZ2UoaW5kZXgsIHRoaXMubXR5cGVzKSkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UHJldkltYWdlSW5kZXgoKTogbnVtYmVyIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuaW1hZ2VzLmxlbmd0aCArIHRoaXMuaW5kZXggLSAxO1xuICAgIGNvbnN0IGVuZCA9IHRoaXMuaW5maW5pdHlNb3ZlID8gdGhpcy5pbmRleCA6IHRoaXMuaW1hZ2VzLmxlbmd0aCAtIDE7XG4gICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpID4gZW5kOyBpLS0pIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gaSAlIHRoaXMuaW1hZ2VzLmxlbmd0aDtcbiAgICAgIGlmICh0aGlzLmlzSXRlcmFibGVJbWFnZShpbmRleCwgdGhpcy5tdHlwZXMpKSB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0l0ZXJhYmxlSW1hZ2UoaW5kZXg6IG51bWJlciwgbWVkaWFUeXBlczogc3RyaW5nW10pOiBib29sZWFuIHtcbiAgICByZXR1cm4gWydpbWFnZScsICdwZGYnXS5pbmRleE9mKG1lZGlhVHlwZXNbaW5kZXhdKSAhPT0gLTE7XG4gIH1cblxuICBtYW5hZ2VGdWxsc2NyZWVuKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZ1bGxzY3JlZW4gfHwgdGhpcy5mb3JjZUZ1bGxzY3JlZW4pIHtcbiAgICAgIGNvbnN0IGRvYyA9IGRvY3VtZW50IGFzIGFueTtcblxuICAgICAgaWYgKCFkb2MuZnVsbHNjcmVlbkVsZW1lbnQgJiYgIWRvYy5tb3pGdWxsU2NyZWVuRWxlbWVudFxuICAgICAgICAmJiAhZG9jLndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50ICYmICFkb2MubXNGdWxsc2NyZWVuRWxlbWVudCkge1xuICAgICAgICB0aGlzLm9wZW5GdWxsc2NyZWVuKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNsb3NlRnVsbHNjcmVlbigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldFNhZmVVcmwoaW1hZ2U6IHN0cmluZyk6IFNhZmVVcmwge1xuICAgIHJldHVybiAhaW1hZ2UgfHwgaW1hZ2Uuc3Vic3RyKDAsIDEwKSA9PT0gJ2RhdGE6aW1hZ2UnID9cbiAgICAgIGltYWdlIDogdGhpcy5zYW5pdGl6YXRpb24uYnlwYXNzU2VjdXJpdHlUcnVzdFVybChpbWFnZSk7XG4gIH1cblxuICBnZXRTYWZlUmVzb3VyY2VVcmwocmVzVXJsOiBzdHJpbmcpOiBTYWZlUmVzb3VyY2VVcmwge1xuICAgIHJldHVybiB0aGlzLnNhbml0aXphdGlvbi5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwocmVzVXJsKTtcbiAgfVxuXG4gIHpvb21JbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc1pvb21hYmxlSW4pIHtcbiAgICAgIHRoaXMuem9vbVZhbHVlICs9IHRoaXMuem9vbVN0ZXA7XG5cbiAgICAgIGlmICh0aGlzLnpvb21WYWx1ZSA+IHRoaXMuem9vbU1heCkge1xuICAgICAgICB0aGlzLnpvb21WYWx1ZSA9IHRoaXMuem9vbU1heDtcbiAgICAgIH1cbiAgICAgIHRoaXMuc3R5bGVUcmFuc2Zvcm0gPSB0aGlzLmdldFRyYW5zZm9ybSgpO1xuICAgICAgdGhpcy5jYW5EcmFnID0gdGhpcy5jYW5EcmFnT25ab29tKCk7XG4gICAgICB0aGlzLmlzWm9vbWFibGVJbiA9IHRoaXMuY2FuWm9vbUluKCk7XG4gICAgICB0aGlzLmlzWm9vbWFibGVPdXQgPSB0aGlzLmNhblpvb21PdXQoKTtcbiAgICB9XG4gIH1cblxuICB6b29tT3V0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzWm9vbWFibGVPdXQpIHtcbiAgICAgIHRoaXMuem9vbVZhbHVlIC09IHRoaXMuem9vbVN0ZXA7XG5cbiAgICAgIGlmICh0aGlzLnpvb21WYWx1ZSA8IHRoaXMuem9vbU1pbikge1xuICAgICAgICB0aGlzLnpvb21WYWx1ZSA9IHRoaXMuem9vbU1pbjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuem9vbVZhbHVlIDw9IDEpIHtcbiAgICAgICAgdGhpcy5yZXNldFBvc2l0aW9uKCk7XG4gICAgICB9XG4gICAgICB0aGlzLnN0eWxlVHJhbnNmb3JtID0gdGhpcy5nZXRUcmFuc2Zvcm0oKTtcbiAgICAgIHRoaXMuY2FuRHJhZyA9IHRoaXMuY2FuRHJhZ09uWm9vbSgpO1xuICAgICAgdGhpcy5pc1pvb21hYmxlSW4gPSB0aGlzLmNhblpvb21JbigpO1xuICAgICAgdGhpcy5pc1pvb21hYmxlT3V0ID0gdGhpcy5jYW5ab29tT3V0KCk7XG4gICAgfVxuICB9XG5cbiAgcmVzZXRab29tKCkge1xuICAgIHRoaXMuem9vbVZhbHVlID0gMTtcbiAgICB0aGlzLnN0eWxlVHJhbnNmb3JtID0gdGhpcy5nZXRUcmFuc2Zvcm0oKTtcbiAgICB0aGlzLmNhbkRyYWcgPSB0aGlzLmNhbkRyYWdPblpvb20oKTtcbiAgICB0aGlzLmlzWm9vbWFibGVJbiA9IHRoaXMuY2FuWm9vbUluKCk7XG4gICAgdGhpcy5pc1pvb21hYmxlT3V0ID0gdGhpcy5jYW5ab29tT3V0KCk7XG4gIH1cblxuICByb3RhdGVMZWZ0KCk6IHZvaWQge1xuICAgIHRoaXMucm90YXRlVmFsdWUgLT0gOTA7XG4gIH1cblxuICByb3RhdGVSaWdodCgpOiB2b2lkIHtcbiAgICB0aGlzLnJvdGF0ZVZhbHVlICs9IDkwO1xuICB9XG5cbiAgZ2V0VHJhbnNmb3JtKCk6IFNhZmVTdHlsZSB7XG4gICAgcmV0dXJuIHRoaXMuc2FuaXRpemF0aW9uLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZSgnc2NhbGUoJyArIHRoaXMuem9vbVZhbHVlICsgJykgcm90YXRlKCcgKyB0aGlzLnJvdGF0ZVZhbHVlICsgJ2RlZyknKTtcbiAgfVxuXG4gIGNhblpvb21JbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gWydwZGYnLCAnY2FtcHVzJ10uaW5kZXhPZih0aGlzLm10eXBlc1t0aGlzLmluZGV4XSkgPT09IC0xICYmIHRoaXMuem9vbVZhbHVlIDwgdGhpcy56b29tTWF4O1xuICB9XG5cbiAgY2FuWm9vbU91dCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gWydwZGYnLCAnY2FtcHVzJ10uaW5kZXhPZih0aGlzLm10eXBlc1t0aGlzLmluZGV4XSkgPT09IC0xICYmIHRoaXMuem9vbVZhbHVlID4gdGhpcy56b29tTWluO1xuICB9XG5cbiAgY2FuRHJhZ09uWm9vbSgpIHtcbiAgICByZXR1cm4gdGhpcy56b29tICYmIHRoaXMuem9vbVZhbHVlID4gMTtcbiAgfVxuXG4gIG1vdXNlRG93bkhhbmRsZXIoZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNhbkRyYWdPblpvb20oKSkge1xuICAgICAgdGhpcy5pbml0aWFsWCA9IHRoaXMuZ2V0Q2xpZW50WChlKTtcbiAgICAgIHRoaXMuaW5pdGlhbFkgPSB0aGlzLmdldENsaWVudFkoZSk7XG4gICAgICB0aGlzLmluaXRpYWxMZWZ0ID0gdGhpcy5wb3NpdGlvbkxlZnQ7XG4gICAgICB0aGlzLmluaXRpYWxUb3AgPSB0aGlzLnBvc2l0aW9uVG9wO1xuICAgICAgdGhpcy5pc01vdmUgPSB0cnVlO1xuXG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgbW91c2VVcEhhbmRsZXIoZSk6IHZvaWQge1xuICAgIHRoaXMuaXNNb3ZlID0gZmFsc2U7XG4gIH1cblxuICBtb3VzZU1vdmVIYW5kbGVyKGUpIHtcbiAgICBpZiAodGhpcy5pc01vdmUpIHtcbiAgICAgIHRoaXMucG9zaXRpb25MZWZ0ID0gdGhpcy5pbml0aWFsTGVmdCArICh0aGlzLmdldENsaWVudFgoZSkgLSB0aGlzLmluaXRpYWxYKTtcbiAgICAgIHRoaXMucG9zaXRpb25Ub3AgPSB0aGlzLmluaXRpYWxUb3AgKyAodGhpcy5nZXRDbGllbnRZKGUpIC0gdGhpcy5pbml0aWFsWSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRDbGllbnRYKGUpOiBudW1iZXIge1xuICAgIHJldHVybiBlLnRvdWNoZXMgJiYgZS50b3VjaGVzLmxlbmd0aCA/IGUudG91Y2hlc1swXS5jbGllbnRYIDogZS5jbGllbnRYO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDbGllbnRZKGUpOiBudW1iZXIge1xuICAgIHJldHVybiBlLnRvdWNoZXMgJiYgZS50b3VjaGVzLmxlbmd0aCA/IGUudG91Y2hlc1swXS5jbGllbnRZIDogZS5jbGllbnRZO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldFBvc2l0aW9uKCkge1xuICAgIGlmICh0aGlzLnpvb20pIHtcbiAgICAgIHRoaXMucG9zaXRpb25MZWZ0ID0gMDtcbiAgICAgIHRoaXMucG9zaXRpb25Ub3AgPSAwO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNLZXlib2FyZE5leHQoZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBlLmtleUNvZGUgPT09IDM5ID8gdHJ1ZSA6IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0tleWJvYXJkUHJldihlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGUua2V5Q29kZSA9PT0gMzcgPyB0cnVlIDogZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGlzS2V5Ym9hcmRFc2MoZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBlLmtleUNvZGUgPT09IDI3ID8gdHJ1ZSA6IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuRnVsbHNjcmVlbigpOiB2b2lkIHtcbiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50IGFzIGFueTtcblxuICAgIGlmIChlbGVtZW50LnJlcXVlc3RGdWxsc2NyZWVuKSB7XG4gICAgICBlbGVtZW50LnJlcXVlc3RGdWxsc2NyZWVuKCk7XG4gICAgfSBlbHNlIGlmIChlbGVtZW50Lm1zUmVxdWVzdEZ1bGxzY3JlZW4pIHtcbiAgICAgIGVsZW1lbnQubXNSZXF1ZXN0RnVsbHNjcmVlbigpO1xuICAgIH0gZWxzZSBpZiAoZWxlbWVudC5tb3pSZXF1ZXN0RnVsbFNjcmVlbikge1xuICAgICAgZWxlbWVudC5tb3pSZXF1ZXN0RnVsbFNjcmVlbigpO1xuICAgIH0gZWxzZSBpZiAoZWxlbWVudC53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbikge1xuICAgICAgZWxlbWVudC53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2xvc2VGdWxsc2NyZWVuKCk6IHZvaWQge1xuXG4gICAgY29uc3QgZG9jID0gZG9jdW1lbnQgYXMgYW55O1xuICAgIGNvbnN0IGZ1bGxzY3JlZW5Qb2x5ZmlsbHMgPSBbXG4gICAgICB7XG4gICAgICAgIHZlbmRvcjogJ3N0YW5kYXJkJyxcbiAgICAgICAgZnVsbHNjcmVlbkVsZW1lbnQ6ICdmdWxsc2NyZWVuRWxlbWVudCcsXG4gICAgICAgIGV4aXRGdWxsc2NyZWVuRm46ICdleGl0RnVsbHNjcmVlbicsXG4gICAgICB9LCB7XG4gICAgICAgIHZlbmRvcjogWydibGluaycsICdzYWZhcmknLCAnZWRnZSddLFxuICAgICAgICBmdWxsc2NyZWVuRWxlbWVudDogJ3dlYmtpdEZ1bGxzY3JlZW5FbGVtZW50JyxcbiAgICAgICAgZXhpdEZ1bGxzY3JlZW5GbjogJ3dlYmtpdEV4aXRGdWxsc2NyZWVuJyxcbiAgICAgIH0sIHtcbiAgICAgICAgdmVuZG9yOiAnZ2Vja28nLFxuICAgICAgICBmdWxsc2NyZWVuRWxlbWVudDogJ21vekZ1bGxTY3JlZW5FbGVtZW50JyxcbiAgICAgICAgZXhpdEZ1bGxzY3JlZW5GbjogJ21vekNhbmNlbEZ1bGxTY3JlZW4nLFxuICAgICAgfSwge1xuICAgICAgICB2ZW5kb3I6ICdpZTExJyxcbiAgICAgICAgZnVsbHNjcmVlbkVsZW1lbnQ6ICdtc0Z1bGxzY3JlZW5FbGVtZW50JyxcbiAgICAgICAgZXhpdEZ1bGxzY3JlZW5GbjogJ21zRXhpdEZ1bGxzY3JlZW4nLFxuICAgICAgfVxuICAgIF07XG4gICAgLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L3ByZWZlci1mb3Itb2YgKi9cbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZnVsbHNjcmVlblBvbHlmaWxscy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IGZ1bGxzY3JlZW5Qb2x5ZmlsbCA9IGZ1bGxzY3JlZW5Qb2x5ZmlsbHNbaW5kZXhdO1xuICAgICAgaWYgKGRvY1tmdWxsc2NyZWVuUG9seWZpbGwuZnVsbHNjcmVlbkVsZW1lbnRdICE9PSBudWxsICYmIGRvY1tmdWxsc2NyZWVuUG9seWZpbGwuZXhpdEZ1bGxzY3JlZW5Gbl0pIHtcbiAgICAgICAgZG9jW2Z1bGxzY3JlZW5Qb2x5ZmlsbC5leGl0RnVsbHNjcmVlbkZuXSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG93KGZpcnN0ID0gZmFsc2UpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuc2hvd1NwaW5uZXIgPSB0cnVlO1xuICAgIHRoaXMuc3RvcEF1dG9QbGF5KCk7XG5cbiAgICB0aGlzLm9uQWN0aXZlQ2hhbmdlLmVtaXQodGhpcy5pbmRleCk7XG5cbiAgICB0aGlzLmltZ0xvYWRlZCQgPSBuZXcgU3ViamVjdCgpO1xuICAgIHRoaXMudGltZXIkID0gZmlyc3QgfHwgIXRoaXMuYW5pbWF0aW9uID8gdGltZXIoMCkgOiB0aW1lcig1MDApO1xuICAgIGZvcmtKb2luKFtcbiAgICAgIHRoaXMuaW1nTG9hZGVkJCxcbiAgICAgIHRoaXMudGltZXIkLnBpcGUodGFrZSgxKSlcbiAgICBdKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNob3dTcGlubmVyID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLmF1dG9QbGF5KSB7XG4gICAgICAgICAgdGhpcy5zdGFydEF1dG9QbGF5KCk7XG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB0aGlzLnRpbWVyJC5zdWJzY3JpYmUoKCkgPT4geyB0aGlzLl9zaG93KCk7IH0pO1xuICB9XG5cbiAgb25JbWFnZUxvYWQoKSB7XG4gICAgaWYgKCF0aGlzLmltZ0xvYWRlZCQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pbWdMb2FkZWQkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5pbWdMb2FkZWQkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIF9zaG93KCkge1xuICAgIGlmICh0aGlzLnpvb21WYWx1ZSAhPT0gMSkge1xuICAgICAgdGhpcy5yZXNldFpvb20oKTtcbiAgICB9XG4gICAgdGhpcy5zdHlsZVRyYW5zZm9ybSA9IHRoaXMuZ2V0VHJhbnNmb3JtKCk7XG4gICAgdGhpcy5jYW5EcmFnID0gdGhpcy5jYW5EcmFnT25ab29tKCk7XG4gICAgdGhpcy5yb3RhdGVWYWx1ZSA9IDA7XG4gICAgdGhpcy5yZXNldFBvc2l0aW9uKCk7XG5cbiAgICB0aGlzLnNyYyA9IHRoaXMubXR5cGVzW3RoaXMuaW5kZXhdID09PSAnY2FtcHVzJyA/XG4gICAgICB0aGlzLmdldFNhZmVSZXNvdXJjZVVybCh0aGlzLmltYWdlc1t0aGlzLmluZGV4XSBhcyBzdHJpbmcpIDpcbiAgICAgIHRoaXMuZ2V0U2FmZVVybCh0aGlzLmltYWdlc1t0aGlzLmluZGV4XSBhcyBzdHJpbmcpO1xuICAgIHRoaXMuZGVzY3JpcHRpb24gPSB0aGlzLmRlc2NyaXB0aW9uc1t0aGlzLmluZGV4XTtcbiAgICB0aGlzLnNyY1R5cGUgPSB0aGlzLnR5cGVzW3RoaXMuaW5kZXhdO1xuICAgIHRoaXMuaW1nSGVpZ2h0ID0gdGhpcy5oZWlnaHRzW3RoaXMuaW5kZXhdO1xuICAgIHRoaXMuaW1nV2lkdGggPSB0aGlzLndpZHRoc1t0aGlzLmluZGV4XTtcbiAgICB0aGlzLnZpZXdCb3ggPSAnMCAwICcgKyB0aGlzLmltZ1dpZHRoICsgJyAnICsgdGhpcy5pbWdIZWlnaHQ7XG4gICAgdGhpcy5oYXNBZGRPbnMgPSAhIXRoaXMub3JkSW1hZ2VzICYmICEhdGhpcy5vcmRJbWFnZXNbdGhpcy5pbmRleF0gJiYgISF0aGlzLm9yZEltYWdlc1t0aGlzLmluZGV4XS5hZGRPbnMubGVuZ3RoO1xuXG4gICAgdGhpcy5sb2dTZXJ2aWNlLmxvZygnTmd4R2FsbGVyeVByZXZpZXdDb21wb25lbnQuX3Nob3cnLCAnaW5kZXggLSAnICsgdGhpcy5pbmRleCk7XG4gICAgdGhpcy5sb2dTZXJ2aWNlLmxvZygnTmd4R2FsbGVyeVByZXZpZXdDb21wb25lbnQuX3Nob3cnLCAnc3JjVHlwZSAtICcgKyB0aGlzLnNyY1R5cGUpO1xuICAgIHRoaXMubG9nU2VydmljZS5sb2coJ05neEdhbGxlcnlQcmV2aWV3Q29tcG9uZW50Ll9zaG93JywgJ3VybCAtICcgKyB0aGlzLmltYWdlc1t0aGlzLmluZGV4XSk7XG4gICAgdGhpcy5sb2dTZXJ2aWNlLmxvZygnTmd4R2FsbGVyeVByZXZpZXdDb21wb25lbnQuX3Nob3cnLCAnc3JjIC0gJyArIHRoaXMuc3JjKTtcbiAgICBpZiAoIXRoaXMuY2NNZWRpYVNlcnZpY2UuaXNJbWFnZSh0aGlzLnNyY1R5cGUpKSB7XG4gICAgICB0aGlzLnpvb20gPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBoYXNMaW5rKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhISh0aGlzLmxpbmtzICYmIHRoaXMubGlua3MubGVuZ3RoICYmIHRoaXMubGlua3NbdGhpcy5pbmRleF0pO1xuICB9XG5cbiAgZ2V0SW1hZ2VzKCk6IE5neEdhbGxlcnlPcmRlcmVkSW1hZ2VbXSB7XG4gICAgaWYgKCF0aGlzLm9yZEltYWdlcykge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm9yZEltYWdlcztcbiAgfVxufVxuIiwiPG5neC1nYWxsZXJ5LWFycm93c1xuICAob25QcmV2Q2xpY2spPVwic2hvd1ByZXYoKVwiXG4gIChvbk5leHRDbGljayk9XCJzaG93TmV4dCgpXCJcbiAgW3ByZXZEaXNhYmxlZF09XCIhY2FuU2hvd1ByZXYoKVwiXG4gIFtuZXh0RGlzYWJsZWRdPVwiIWNhblNob3dOZXh0KClcIlxuICBbYXJyb3dQcmV2SWNvbl09XCJhcnJvd1ByZXZJY29uXCJcbiAgW2Fycm93TmV4dEljb25dPVwiYXJyb3dOZXh0SWNvblwiPlxuPC9uZ3gtZ2FsbGVyeS1hcnJvd3M+XG5cbjxkaXYgY2xhc3M9XCJuZ3gtZ2FsbGVyeS1wcmV2aWV3LXRvcFwiPlxuICA8ZGl2IGNsYXNzPVwibmd4LWdhbGxlcnktcHJldmlldy1pY29uc1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBhY3Rpb25zXCI+XG4gICAgICA8bmd4LWdhbGxlcnktYWN0aW9uXG4gICAgICAgICpuZ0lmPVwiIWFjdGlvbi5kaXNhYmxlZFwiXG4gICAgICAgIFtpY29uXT1cImFjdGlvbi5pY29uXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImFjdGlvbi5kaXNhYmxlZFwiXG4gICAgICAgIFt0aXRsZVRleHRdPVwiYWN0aW9uLnRpdGxlVGV4dFwiXG4gICAgICAgIChvbkNsaWNrKT1cImFjdGlvbi5vbkNsaWNrKCRldmVudCwgaW5kZXgpXCI+XG4gICAgICA8L25neC1nYWxsZXJ5LWFjdGlvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxhICpuZ0lmPVwiZG93bmxvYWQgJiYgc3JjXCIgW2hyZWZdPVwic3JjXCIgY2xhc3M9XCJuZ3gtZ2FsbGVyeS1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgZG93bmxvYWQ+XG4gICAgICA8aSBjbGFzcz1cIm5neC1nYWxsZXJ5LWljb24tY29udGVudCB7eyBkb3dubG9hZEljb24gfX1cIj48L2k+XG4gICAgPC9hPlxuICAgIDxuZ3gtZ2FsbGVyeS1hY3Rpb24gKm5nSWY9XCJ6b29tXCIgW2ljb25dPVwiem9vbU91dEljb25cIiBbZGlzYWJsZWRdPVwiISBpc1pvb21hYmxlT3V0XCIgKG9uQ2xpY2spPVwiem9vbU91dCgpXCI+PC9uZ3gtZ2FsbGVyeS1hY3Rpb24+XG4gICAgPG5neC1nYWxsZXJ5LWFjdGlvbiAqbmdJZj1cInpvb21cIiBbaWNvbl09XCJ6b29tSW5JY29uXCIgW2Rpc2FibGVkXT1cIiEgaXNab29tYWJsZUluXCIgKG9uQ2xpY2spPVwiem9vbUluKClcIj48L25neC1nYWxsZXJ5LWFjdGlvbj5cbiAgICA8bmd4LWdhbGxlcnktYWN0aW9uICpuZ0lmPVwicm90YXRlXCIgW2ljb25dPVwicm90YXRlTGVmdEljb25cIiAob25DbGljayk9XCJyb3RhdGVMZWZ0KClcIj48L25neC1nYWxsZXJ5LWFjdGlvbj5cbiAgICA8bmd4LWdhbGxlcnktYWN0aW9uICpuZ0lmPVwicm90YXRlXCIgW2ljb25dPVwicm90YXRlUmlnaHRJY29uXCIgKG9uQ2xpY2spPVwicm90YXRlUmlnaHQoKVwiPjwvbmd4LWdhbGxlcnktYWN0aW9uPlxuICAgIDxuZ3gtZ2FsbGVyeS1hY3Rpb24gKm5nSWY9XCJmdWxsc2NyZWVuXCIgW2ljb25dPVwiJ25neC1nYWxsZXJ5LWZ1bGxzY3JlZW4gJyArIGZ1bGxzY3JlZW5JY29uXCIgKG9uQ2xpY2spPVwibWFuYWdlRnVsbHNjcmVlbigpXCI+PC9uZ3gtZ2FsbGVyeS1hY3Rpb24+XG4gICAgPG5neC1nYWxsZXJ5LWFjdGlvbiAqbmdJZj1cIm10eXBlc1tpbmRleF0gPT09ICd2aWRlbycgJiYgaXNWaWRlb0xvd2VyU2NyZWVuUmVzb2x1dGlvbigpXCIgW2ljb25dPVwiZnVsbHNjcmVlbkljb25cIiAob25DbGljayk9XCJmaXRWaWRlb1RvU2NyZWVuID0gIWZpdFZpZGVvVG9TY3JlZW5cIj48L25neC1nYWxsZXJ5LWFjdGlvbj5cbiAgICA8bmd4LWdhbGxlcnktYWN0aW9uIFtpY29uXT1cIiduZ3gtZ2FsbGVyeS1jbG9zZSAnICsgY2xvc2VJY29uXCIgKG9uQ2xpY2spPVwiY2xvc2UoKVwiPjwvbmd4LWdhbGxlcnktYWN0aW9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cIm5neC1zcGlubmVyLXdyYXBwZXIgbmd4LWdhbGxlcnktY2VudGVyXCIgW2NsYXNzLm5neC1nYWxsZXJ5LWFjdGl2ZV09XCJzaG93U3Bpbm5lclwiPlxuICA8aSBjbGFzcz1cIm5neC1nYWxsZXJ5LWljb24gbmd4LWdhbGxlcnktc3Bpbm5lciB7e3NwaW5uZXJJY29ufX1cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG48L2Rpdj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIm10eXBlc1tpbmRleF0gPT09ICd2aWRlbycgfHwgbXR5cGVzW2luZGV4XSA9PT0gJ2F1ZGlvJzsgdGhlbiBwcmV2VmlkZW87IGVsc2Ugb3RoZXJcIj48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNvdGhlcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm10eXBlc1tpbmRleF0gPT09ICdjYW1wdXMnOyB0aGVuIGNhbXB1czsgZWxzZSBpbWdcIj48L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY2FtcHVzPlxuICA8aWZyYW1lICpuZ0lmPVwiaXNPcGVuXCIgW3NyY109XCJzcmNcIj48L2lmcmFtZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaW1nPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJuZ3gtZ2FsbGVyeS1wcmV2aWV3LXdyYXBwZXJcIlxuICAgIChjbGljayk9XCJjbG9zZU9uQ2xpY2sgJiYgY2xvc2UoKVwiXG4gICAgKG1vdXNldXApPVwibW91c2VVcEhhbmRsZXIoJGV2ZW50KVwiIChtb3VzZW1vdmUpPVwibW91c2VNb3ZlSGFuZGxlcigkZXZlbnQpXCJcbiAgICAodG91Y2hlbmQpPVwibW91c2VVcEhhbmRsZXIoJGV2ZW50KVwiICh0b3VjaG1vdmUpPVwibW91c2VNb3ZlSGFuZGxlcigkZXZlbnQpXCJcblxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgIChtb3VzZWVudGVyKT1cImltYWdlTW91c2VFbnRlcigpXCJcbiAgICAobW91c2VsZWF2ZSk9XCJpbWFnZU1vdXNlTGVhdmUoKVwiXG4gICAgKG1vdXNlZG93bik9XCJtb3VzZURvd25IYW5kbGVyKCRldmVudClcIlxuICAgICh0b3VjaHN0YXJ0KT1cIm1vdXNlRG93bkhhbmRsZXIoJGV2ZW50KVwiXG4gID5cbiAgICA8aW1nXG4gICAgICAjcHJldmlld0ltYWdlXG4gICAgICAqbmdJZj1cInNyY1wiXG4gICAgICBjbGFzcz1cIm5neC1nYWxsZXJ5LXByZXZpZXctaW1nIG5neC1nYWxsZXJ5LWNlbnRlclwiXG5cbiAgICAgIFtzcmNdPVwic3JjXCJcbiAgICAgIFtjbGFzcy5uZ3gtZ2FsbGVyeS1hY3RpdmVdPVwiIWxvYWRpbmdcIlxuICAgICAgW2NsYXNzLm5neC1nYWxsZXJ5LWdyYWJdPVwiY2FuRHJhZ1wiXG4gICAgICBbc3R5bGUudHJhbnNmb3JtXT1cInN0eWxlVHJhbnNmb3JtXCJcbiAgICAgIFtzdHlsZS5sZWZ0XT1cInBvc2l0aW9uTGVmdCArICdweCdcIlxuICAgICAgW3N0eWxlLnRvcF09XCJwb3NpdGlvblRvcCArICdweCdcIlxuXG4gICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgIChsb2FkKT1cIm9uSW1hZ2VMb2FkKClcIlxuICAgIC8+XG5cbiAgICA8Y2MtaW1hZ2VzdmdcbiAgICAgICpuZ0lmPVwiaXNTVkdBY3RpdmUgJiYgaGFzQWRkT25zXCJcbiAgICAgIFthbmltYXRpb25dPVwiYW5pbWF0aW9uXCJcbiAgICAgIFt3aWR0aF09XCJpbWdXaWR0aFwiXG4gICAgICBbaGVpZ2h0XT1cImltZ0hlaWdodFwiXG4gICAgICBbdmlld0JveF09XCJ2aWV3Qm94XCJcbiAgICAgIFtzdHlsZVRyYW5zZm9ybV09XCJzdHlsZVRyYW5zZm9ybVwiXG4gICAgICBbcG9zTGVmdF09XCJwb3NpdGlvbkxlZnQgKyAncHgnXCJcbiAgICAgIFtwb3NUb3BdPVwicG9zaXRpb25Ub3AgKyAncHgnXCJcbiAgICAgIFt6b29tVmFsdWVdPVwiem9vbVZhbHVlXCJcbiAgICAgIFthZGRPbnNdPVwib3JkSW1hZ2VzW2luZGV4XS5hZGRPbnNcIlxuICAgICAgW2NsYXNzR3JhYl09XCJjYW5EcmFnXCJcbiAgICAgIFtwcmV2aWV3XT1cInRydWVcIlxuICAgID5cbiAgICA8L2NjLWltYWdlc3ZnPlxuXG4gICAgPG5neC1nYWxsZXJ5LWJ1bGxldHMgKm5nSWY9XCJidWxsZXRzXCIgW2NvdW50XT1cImltYWdlcy5sZW5ndGhcIiBbYWN0aXZlXT1cImluZGV4XCIgKG9uQ2hhbmdlKT1cInNob3dBdEluZGV4KCRldmVudClcIj5cbiAgICA8L25neC1nYWxsZXJ5LWJ1bGxldHM+XG5cbiAgICA8ZGl2IGNsYXNzPVwibmd4LWdhbGxlcnktcHJldmlldy10ZXh0XCIgKm5nSWY9XCJzaG93RGVzY3JpcHRpb24gJiYgZGVzY3JpcHRpb25cIiBbaW5uZXJIVE1MXT1cImRlc2NyaXB0aW9uIHwgc2FmZUh0bWxcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNwcmV2VmlkZW8+XG4gIDxkaXZcbiAgICBjbGFzcz1cIm5neC1nYWxsZXJ5LXByZXZpZXctd3JhcHBlclwiXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgIDxjYy12aWRlb1xuICAgICAgKm5nSWY9XCJpc09wZW5cIlxuICAgICAgW3NlbGVjdGVkSW5kZXhdPVwicHJldkluZGV4XCJcbiAgICAgIFtpbWFnZV09XCJvcmRJbWFnZXNbcHJldkluZGV4XVwiXG4gICAgICBbc2hvd0Rlc2NyaXB0aW9uXT1cInNob3dEZXNjcmlwdGlvblwiXG4gICAgICBbZGVzY3JpcHRpb25dPVwiZGVzY3JpcHRpb25zW3ByZXZJbmRleF1cIlxuICAgICAgW21lZGlhSW5mb109XCJtZWRpYUluZm9zW3ByZXZJbmRleF1cIlxuICAgICAgW2ZpdFZpZGVvVG9TY3JlZW5dPVwiZml0VmlkZW9Ub1NjcmVlblwiPlxuICAgIDwvY2MtdmlkZW8+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=
|