UNPKG

ontimize-web-ngx

Version:
93 lines 24.6 kB
import { __decorate, __metadata } from "tslib"; import { Component, ElementRef, EventEmitter, forwardRef, Inject, Injector, Optional, Renderer2, ViewEncapsulation } from '@angular/core'; import { BooleanInputConverter } from '../../../../decorators/input-converter'; import { Util } from '../../../../util/util'; import { OListItemComponent } from '../../list-item/o-list-item.component'; import { OListItemCardRenderer } from '../o-list-item-card-renderer.class'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; import * as i2 from "@angular/flex-layout/flex"; import * as i3 from "@angular/material/button"; import * as i4 from "@angular/material/card"; import * as i5 from "@angular/material/icon"; import * as i6 from "../../list-item/o-list-item.component"; export const DEFAULT_INPUTS_O_LIST_ITEM_CARD_IMAGE = [ 'content', 'avatar', 'icon', 'collapsible', 'collapsed' ]; export const DEFAULT_OUTPUTS_O_LIST_ITEM_CARD_IMAGE = [ 'onIconClick : icon-action' ]; export class OListItemCardImageComponent extends OListItemCardRenderer { constructor(elRef, _renderer, _injector, _listItem) { super(elRef, _renderer, _injector, _listItem); this._collapsible = false; this._collapsed = true; this.onIconClick = new EventEmitter(); } ngAfterViewInit() { this.modifyMatListItemElement(); } onActionIconClick(e) { if (Util.isDefined(e)) { e.stopPropagation(); } this.onIconClick.emit(e); } get content() { return this._content; } set content(val) { this._content = val; } get avatar() { return this._avatar; } set avatar(val) { this._avatar = val; } get icon() { return this._icon; } set icon(val) { this._icon = val; } get collapsible() { return this._collapsible; } set collapsible(val) { this._collapsible = val; } get collapsed() { return this._collapsed; } set collapsed(val) { this._collapsed = val; } } OListItemCardImageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OListItemCardImageComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: forwardRef(() => OListItemComponent), optional: true }], target: i0.ɵɵFactoryTarget.Component }); OListItemCardImageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OListItemCardImageComponent, selector: "o-list-item-card-image", inputs: { content: "content", avatar: "avatar", icon: "icon", collapsible: "collapsible", collapsed: "collapsed" }, outputs: { onIconClick: "icon-action" }, host: { properties: { "class.o-custom-list-item": "true", "class.o-list-item-card-image": "true" } }, usesInheritance: true, ngImport: i0, template: "<mat-card fxLayout=\"column\" fxLayoutAlign=\"center center\" class=\"o-item-card\" [class.small]=\"compareListHeight('small')\"\n [class.medium]=\"compareListHeight('medium')\" [class.large]=\"compareListHeight('large')\">\n\n <mat-card-header *ngIf=\"avatar !== undefined\">\n <img mat-card-avatar src=\"{{ avatar }}\" alt=\"avatar image\">\n <mat-card-title *ngIf=\"title !== undefined\"> {{ title }}</mat-card-title>\n <mat-card-subtitle *ngIf=\"subtitle !== undefined\"> {{ subtitle }}</mat-card-subtitle>\n </mat-card-header>\n\n <img *ngIf=\"image !== undefined\" mat-card-image src=\"{{ image }}\" [class.exists-action-button]=\"icon !== undefined\" alt=\"card image\">\n\n <button type=\"button\" *ngIf=\"icon !== undefined && compareListHeight('small')\" mat-mini-fab (click)=\"onActionIconClick($event)\"\n class=\"action-button\">\n <mat-icon>{{ icon }}</mat-icon>\n </button>\n\n <button type=\"button\" *ngIf=\"icon !== undefined && (compareListHeight('medium') || compareListHeight('large'))\" mat-fab\n (click)=\"onActionIconClick($event)\" class=\"action-button\">\n <mat-icon>{{ icon }}</mat-icon>\n </button>\n\n <mat-card-title *ngIf=\"avatar === undefined && title !== undefined\"> {{ title }}</mat-card-title>\n <mat-card-subtitle *ngIf=\"avatar === undefined && subtitle !== undefined\"> {{ subtitle }}</mat-card-subtitle>\n\n <mat-card-content *ngIf=\"!collapsible\">\n <p>\n {{ content }}\n </p>\n </mat-card-content>\n\n <mat-card-actions>\n <button type=\"button\" mat-button *ngIf=\"action1Text !== undefined\" (click)=\"onAction1ButtonClick($event)\">{{ action1Text }}</button>\n <button type=\"button\" mat-button *ngIf=\"action2Text !== undefined\" (click)=\"onAction2ButtonClick($event)\">{{ action2Text }}</button>\n\n <div class=\"collapse-button-container\">\n <button type=\"button\" mat-icon-button *ngIf=\"collapsible\" (click)=\"collapsed = !collapsed\" class=\"collapse-button\">\n <mat-icon *ngIf=\"collapsed\" svgIcon=\"ontimize:keyboard_arrow_down\"></mat-icon>\n <mat-icon *ngIf=\"!collapsed\" svgIcon=\"ontimize:keyboard_arrow_up\"></mat-icon>\n </button>\n </div>\n </mat-card-actions>\n\n <mat-card-content *ngIf=\"collapsible && !collapsed\">\n <p>\n {{ content }}\n </p>\n </mat-card-content>\n\n</mat-card>\n", styles: [".mat-mdc-list .mat-mdc-list-item.o-card-item.mdc-list-item--with-trailing-meta .mat-mdc-list-item-meta{margin:0;width:100%}.o-list-item-card-image .mat-mdc-card{padding:0 12px}.o-list-item-card-image .mat-mdc-card .mat-card-header .mat-card-title{margin-bottom:12px}.o-list-item-card-image .mat-mdc-card .mat-card-subtitle{margin-bottom:16px}.o-list-item-card-image .mat-mdc-card mat-card-actions,.o-list-item-card-image .mat-mdc-card mat-card-header,.o-list-item-card-image .mat-mdc-card mat-card-subtitle,.o-list-item-card-image .mat-mdc-card mat-card-title{width:100%}.o-list-item-card-image .mat-mdc-card .mat-mdc-card-content{padding:0}.o-list-item-card-image .mat-mdc-card.large{width:100%}.o-list-item-card-image .mat-mdc-card.medium{width:80%;margin-left:auto;margin-right:auto}.o-list-item-card-image .mat-mdc-card.small{width:60%;margin-left:auto;margin-right:auto}.o-list-item-card-image .mat-mdc-card.small img.exists-action-button{margin-bottom:-20px}.o-list-item-card-image .mat-mdc-card:not(.small):not(.medium):not(.large){width:100%}.o-list-item-card-image .mat-mdc-card .action-button{margin-left:auto}.o-list-item-card-image .mat-mdc-card img.exists-action-button{margin-bottom:-28px}.o-list-item-card-image .mat-mdc-card .collapse-button-container{flex:1 1 auto;position:relative}.o-list-item-card-image .mat-mdc-card .collapse-button-container .collapse-button{margin-left:calc(100% - 40px)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3.MatMiniFabButton, selector: "button[mat-mini-fab]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3.MatFabButton, selector: "button[mat-fab]", inputs: ["disabled", "disableRipple", "color", "tabIndex", "extended"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i4.MatCardAvatar, selector: "[mat-card-avatar], [matCardAvatar]" }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i4.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i4.MatCardImage, selector: "[mat-card-image], [matCardImage]" }, { kind: "directive", type: i4.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { kind: "directive", type: i4.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], encapsulation: i0.ViewEncapsulation.None }); __decorate([ BooleanInputConverter(), __metadata("design:type", Boolean) ], OListItemCardImageComponent.prototype, "_collapsible", void 0); __decorate([ BooleanInputConverter(), __metadata("design:type", Boolean) ], OListItemCardImageComponent.prototype, "_collapsed", void 0); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OListItemCardImageComponent, decorators: [{ type: Component, args: [{ selector: 'o-list-item-card-image', inputs: DEFAULT_INPUTS_O_LIST_ITEM_CARD_IMAGE, outputs: DEFAULT_OUTPUTS_O_LIST_ITEM_CARD_IMAGE, encapsulation: ViewEncapsulation.None, host: { '[class.o-custom-list-item]': 'true', '[class.o-list-item-card-image]': 'true' }, template: "<mat-card fxLayout=\"column\" fxLayoutAlign=\"center center\" class=\"o-item-card\" [class.small]=\"compareListHeight('small')\"\n [class.medium]=\"compareListHeight('medium')\" [class.large]=\"compareListHeight('large')\">\n\n <mat-card-header *ngIf=\"avatar !== undefined\">\n <img mat-card-avatar src=\"{{ avatar }}\" alt=\"avatar image\">\n <mat-card-title *ngIf=\"title !== undefined\"> {{ title }}</mat-card-title>\n <mat-card-subtitle *ngIf=\"subtitle !== undefined\"> {{ subtitle }}</mat-card-subtitle>\n </mat-card-header>\n\n <img *ngIf=\"image !== undefined\" mat-card-image src=\"{{ image }}\" [class.exists-action-button]=\"icon !== undefined\" alt=\"card image\">\n\n <button type=\"button\" *ngIf=\"icon !== undefined && compareListHeight('small')\" mat-mini-fab (click)=\"onActionIconClick($event)\"\n class=\"action-button\">\n <mat-icon>{{ icon }}</mat-icon>\n </button>\n\n <button type=\"button\" *ngIf=\"icon !== undefined && (compareListHeight('medium') || compareListHeight('large'))\" mat-fab\n (click)=\"onActionIconClick($event)\" class=\"action-button\">\n <mat-icon>{{ icon }}</mat-icon>\n </button>\n\n <mat-card-title *ngIf=\"avatar === undefined && title !== undefined\"> {{ title }}</mat-card-title>\n <mat-card-subtitle *ngIf=\"avatar === undefined && subtitle !== undefined\"> {{ subtitle }}</mat-card-subtitle>\n\n <mat-card-content *ngIf=\"!collapsible\">\n <p>\n {{ content }}\n </p>\n </mat-card-content>\n\n <mat-card-actions>\n <button type=\"button\" mat-button *ngIf=\"action1Text !== undefined\" (click)=\"onAction1ButtonClick($event)\">{{ action1Text }}</button>\n <button type=\"button\" mat-button *ngIf=\"action2Text !== undefined\" (click)=\"onAction2ButtonClick($event)\">{{ action2Text }}</button>\n\n <div class=\"collapse-button-container\">\n <button type=\"button\" mat-icon-button *ngIf=\"collapsible\" (click)=\"collapsed = !collapsed\" class=\"collapse-button\">\n <mat-icon *ngIf=\"collapsed\" svgIcon=\"ontimize:keyboard_arrow_down\"></mat-icon>\n <mat-icon *ngIf=\"!collapsed\" svgIcon=\"ontimize:keyboard_arrow_up\"></mat-icon>\n </button>\n </div>\n </mat-card-actions>\n\n <mat-card-content *ngIf=\"collapsible && !collapsed\">\n <p>\n {{ content }}\n </p>\n </mat-card-content>\n\n</mat-card>\n", styles: [".mat-mdc-list .mat-mdc-list-item.o-card-item.mdc-list-item--with-trailing-meta .mat-mdc-list-item-meta{margin:0;width:100%}.o-list-item-card-image .mat-mdc-card{padding:0 12px}.o-list-item-card-image .mat-mdc-card .mat-card-header .mat-card-title{margin-bottom:12px}.o-list-item-card-image .mat-mdc-card .mat-card-subtitle{margin-bottom:16px}.o-list-item-card-image .mat-mdc-card mat-card-actions,.o-list-item-card-image .mat-mdc-card mat-card-header,.o-list-item-card-image .mat-mdc-card mat-card-subtitle,.o-list-item-card-image .mat-mdc-card mat-card-title{width:100%}.o-list-item-card-image .mat-mdc-card .mat-mdc-card-content{padding:0}.o-list-item-card-image .mat-mdc-card.large{width:100%}.o-list-item-card-image .mat-mdc-card.medium{width:80%;margin-left:auto;margin-right:auto}.o-list-item-card-image .mat-mdc-card.small{width:60%;margin-left:auto;margin-right:auto}.o-list-item-card-image .mat-mdc-card.small img.exists-action-button{margin-bottom:-20px}.o-list-item-card-image .mat-mdc-card:not(.small):not(.medium):not(.large){width:100%}.o-list-item-card-image .mat-mdc-card .action-button{margin-left:auto}.o-list-item-card-image .mat-mdc-card img.exists-action-button{margin-bottom:-28px}.o-list-item-card-image .mat-mdc-card .collapse-button-container{flex:1 1 auto;position:relative}.o-list-item-card-image .mat-mdc-card .collapse-button-container .collapse-button{margin-left:calc(100% - 40px)}\n"] }] }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.Injector }, { type: i6.OListItemComponent, decorators: [{ type: Optional }, { type: Inject, args: [forwardRef(() => OListItemComponent)] }] }]; }, propDecorators: { _collapsible: [], _collapsed: [] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1saXN0LWl0ZW0tY2FyZC1pbWFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy9saXN0L3JlbmRlcmVycy9jYXJkLWltYWdlL28tbGlzdC1pdGVtLWNhcmQtaW1hZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvbGlzdC9yZW5kZXJlcnMvY2FyZC1pbWFnZS9vLWxpc3QtaXRlbS1jYXJkLWltYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekosT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7Ozs7OztBQUUzRSxNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBRztJQUNuRCxTQUFTO0lBQ1QsUUFBUTtJQUNSLE1BQU07SUFDTixhQUFhO0lBQ2IsV0FBVztDQUNaLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxzQ0FBc0MsR0FBRztJQUNwRCwyQkFBMkI7Q0FDNUIsQ0FBQztBQWNGLE1BQU0sT0FBTywyQkFBNEIsU0FBUSxxQkFBcUI7SUFZcEUsWUFDRSxLQUFpQixFQUNqQixTQUFvQixFQUNwQixTQUFtQixFQUN1QyxTQUE2QjtRQUV2RixLQUFLLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFadEMsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFFOUIsZUFBVSxHQUFZLElBQUksQ0FBQztRQUVyQyxnQkFBVyxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO0lBUy9ELENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELGlCQUFpQixDQUFDLENBQVM7UUFDekIsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3JCLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUNyQjtRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLEdBQVc7UUFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxNQUFNLENBQUMsR0FBVztRQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQyxHQUFXO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO0lBQ25CLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksV0FBVyxDQUFDLEdBQVk7UUFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxTQUFTLENBQUMsR0FBWTtRQUN4QixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztJQUN4QixDQUFDOzt5SEF0RVUsMkJBQTJCLDZGQWdCaEIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDOzZHQWhCL0MsMkJBQTJCLHdWQy9CeEMsbXpFQWlEQTtBRGJFO0lBQUMscUJBQXFCLEVBQUU7O2lFQUNnQjtBQUN4QztJQUFDLHFCQUFxQixFQUFFOzsrREFDYTs0RkFSMUIsMkJBQTJCO2tCQVp2QyxTQUFTOytCQUNFLHdCQUF3QixVQUcxQixxQ0FBcUMsV0FDcEMsc0NBQXNDLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNKLDRCQUE0QixFQUFFLE1BQU07d0JBQ3BDLGdDQUFnQyxFQUFFLE1BQU07cUJBQ3pDOzswQkFrQkUsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUM7NENBVmhELFlBQVksTUFFWixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEluamVjdCwgSW5qZWN0b3IsIE9wdGlvbmFsLCBSZW5kZXJlcjIsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJvb2xlYW5JbnB1dENvbnZlcnRlciB9IGZyb20gJy4uLy4uLy4uLy4uL2RlY29yYXRvcnMvaW5wdXQtY29udmVydGVyJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgT0xpc3RJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbGlzdC1pdGVtL28tbGlzdC1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPTGlzdEl0ZW1DYXJkUmVuZGVyZXIgfSBmcm9tICcuLi9vLWxpc3QtaXRlbS1jYXJkLXJlbmRlcmVyLmNsYXNzJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfSU5QVVRTX09fTElTVF9JVEVNX0NBUkRfSU1BR0UgPSBbXG4gICdjb250ZW50JyxcbiAgJ2F2YXRhcicsXG4gICdpY29uJyxcbiAgJ2NvbGxhcHNpYmxlJyxcbiAgJ2NvbGxhcHNlZCdcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX09VVFBVVFNfT19MSVNUX0lURU1fQ0FSRF9JTUFHRSA9IFtcbiAgJ29uSWNvbkNsaWNrIDogaWNvbi1hY3Rpb24nXG5dO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvLWxpc3QtaXRlbS1jYXJkLWltYWdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL28tbGlzdC1pdGVtLWNhcmQtaW1hZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLWxpc3QtaXRlbS1jYXJkLWltYWdlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19MSVNUX0lURU1fQ0FSRF9JTUFHRSxcbiAgb3V0cHV0czogREVGQVVMVF9PVVRQVVRTX09fTElTVF9JVEVNX0NBUkRfSU1BR0UsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLm8tY3VzdG9tLWxpc3QtaXRlbV0nOiAndHJ1ZScsXG4gICAgJ1tjbGFzcy5vLWxpc3QtaXRlbS1jYXJkLWltYWdlXSc6ICd0cnVlJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIE9MaXN0SXRlbUNhcmRJbWFnZUNvbXBvbmVudCBleHRlbmRzIE9MaXN0SXRlbUNhcmRSZW5kZXJlciBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuXG4gIHByb3RlY3RlZCBfY29udGVudDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX2F2YXRhcjogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX2ljb246IHN0cmluZztcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHByb3RlY3RlZCBfY29sbGFwc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHByb3RlY3RlZCBfY29sbGFwc2VkOiBib29sZWFuID0gdHJ1ZTtcblxuICBvbkljb25DbGljazogRXZlbnRFbWl0dGVyPG9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBlbFJlZjogRWxlbWVudFJlZixcbiAgICBfcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBPTGlzdEl0ZW1Db21wb25lbnQpKSBfbGlzdEl0ZW06IE9MaXN0SXRlbUNvbXBvbmVudFxuICApIHtcbiAgICBzdXBlcihlbFJlZiwgX3JlbmRlcmVyLCBfaW5qZWN0b3IsIF9saXN0SXRlbSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5tb2RpZnlNYXRMaXN0SXRlbUVsZW1lbnQoKTtcbiAgfVxuXG4gIG9uQWN0aW9uSWNvbkNsaWNrKGU/OiBFdmVudCkge1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChlKSkge1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgdGhpcy5vbkljb25DbGljay5lbWl0KGUpO1xuICB9XG5cbiAgZ2V0IGNvbnRlbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fY29udGVudDtcbiAgfVxuXG4gIHNldCBjb250ZW50KHZhbDogc3RyaW5nKSB7XG4gICAgdGhpcy5fY29udGVudCA9IHZhbDtcbiAgfVxuXG4gIGdldCBhdmF0YXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYXZhdGFyO1xuICB9XG5cbiAgc2V0IGF2YXRhcih2YWw6IHN0cmluZykge1xuICAgIHRoaXMuX2F2YXRhciA9IHZhbDtcbiAgfVxuXG4gIGdldCBpY29uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2ljb247XG4gIH1cblxuICBzZXQgaWNvbih2YWw6IHN0cmluZykge1xuICAgIHRoaXMuX2ljb24gPSB2YWw7XG4gIH1cblxuICBnZXQgY29sbGFwc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbGxhcHNpYmxlO1xuICB9XG5cbiAgc2V0IGNvbGxhcHNpYmxlKHZhbDogYm9vbGVhbikge1xuICAgIHRoaXMuX2NvbGxhcHNpYmxlID0gdmFsO1xuICB9XG5cbiAgZ2V0IGNvbGxhcHNlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fY29sbGFwc2VkO1xuICB9XG5cbiAgc2V0IGNvbGxhcHNlZCh2YWw6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9jb2xsYXBzZWQgPSB2YWw7XG4gIH1cblxufVxuXG4iLCI8bWF0LWNhcmQgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiIGNsYXNzPVwiby1pdGVtLWNhcmRcIiBbY2xhc3Muc21hbGxdPVwiY29tcGFyZUxpc3RIZWlnaHQoJ3NtYWxsJylcIlxuICBbY2xhc3MubWVkaXVtXT1cImNvbXBhcmVMaXN0SGVpZ2h0KCdtZWRpdW0nKVwiIFtjbGFzcy5sYXJnZV09XCJjb21wYXJlTGlzdEhlaWdodCgnbGFyZ2UnKVwiPlxuXG4gIDxtYXQtY2FyZC1oZWFkZXIgKm5nSWY9XCJhdmF0YXIgIT09IHVuZGVmaW5lZFwiPlxuICAgIDxpbWcgbWF0LWNhcmQtYXZhdGFyIHNyYz1cInt7IGF2YXRhciB9fVwiIGFsdD1cImF2YXRhciBpbWFnZVwiPlxuICAgIDxtYXQtY2FyZC10aXRsZSAqbmdJZj1cInRpdGxlICE9PSB1bmRlZmluZWRcIj4ge3sgdGl0bGUgfX08L21hdC1jYXJkLXRpdGxlPlxuICAgIDxtYXQtY2FyZC1zdWJ0aXRsZSAqbmdJZj1cInN1YnRpdGxlICE9PSB1bmRlZmluZWRcIj4ge3sgc3VidGl0bGUgfX08L21hdC1jYXJkLXN1YnRpdGxlPlxuICA8L21hdC1jYXJkLWhlYWRlcj5cblxuICA8aW1nICpuZ0lmPVwiaW1hZ2UgIT09IHVuZGVmaW5lZFwiIG1hdC1jYXJkLWltYWdlIHNyYz1cInt7IGltYWdlIH19XCIgW2NsYXNzLmV4aXN0cy1hY3Rpb24tYnV0dG9uXT1cImljb24gIT09IHVuZGVmaW5lZFwiIGFsdD1cImNhcmQgaW1hZ2VcIj5cblxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cImljb24gIT09IHVuZGVmaW5lZCAmJiBjb21wYXJlTGlzdEhlaWdodCgnc21hbGwnKVwiIG1hdC1taW5pLWZhYiAoY2xpY2spPVwib25BY3Rpb25JY29uQ2xpY2soJGV2ZW50KVwiXG4gICAgY2xhc3M9XCJhY3Rpb24tYnV0dG9uXCI+XG4gICAgPG1hdC1pY29uPnt7IGljb24gfX08L21hdC1pY29uPlxuICA8L2J1dHRvbj5cblxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cImljb24gIT09IHVuZGVmaW5lZCAmJiAoY29tcGFyZUxpc3RIZWlnaHQoJ21lZGl1bScpIHx8IGNvbXBhcmVMaXN0SGVpZ2h0KCdsYXJnZScpKVwiIG1hdC1mYWJcbiAgICAoY2xpY2spPVwib25BY3Rpb25JY29uQ2xpY2soJGV2ZW50KVwiIGNsYXNzPVwiYWN0aW9uLWJ1dHRvblwiPlxuICAgIDxtYXQtaWNvbj57eyBpY29uIH19PC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG5cbiAgPG1hdC1jYXJkLXRpdGxlICpuZ0lmPVwiYXZhdGFyID09PSB1bmRlZmluZWQgJiYgdGl0bGUgIT09IHVuZGVmaW5lZFwiPiB7eyB0aXRsZSB9fTwvbWF0LWNhcmQtdGl0bGU+XG4gIDxtYXQtY2FyZC1zdWJ0aXRsZSAqbmdJZj1cImF2YXRhciA9PT0gdW5kZWZpbmVkICYmIHN1YnRpdGxlICE9PSB1bmRlZmluZWRcIj4ge3sgc3VidGl0bGUgfX08L21hdC1jYXJkLXN1YnRpdGxlPlxuXG4gIDxtYXQtY2FyZC1jb250ZW50ICpuZ0lmPVwiIWNvbGxhcHNpYmxlXCI+XG4gICAgPHA+XG4gICAgICB7eyBjb250ZW50IH19XG4gICAgPC9wPlxuICA8L21hdC1jYXJkLWNvbnRlbnQ+XG5cbiAgPG1hdC1jYXJkLWFjdGlvbnM+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiAqbmdJZj1cImFjdGlvbjFUZXh0ICE9PSB1bmRlZmluZWRcIiAoY2xpY2spPVwib25BY3Rpb24xQnV0dG9uQ2xpY2soJGV2ZW50KVwiPnt7IGFjdGlvbjFUZXh0IH19PC9idXR0b24+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiAqbmdJZj1cImFjdGlvbjJUZXh0ICE9PSB1bmRlZmluZWRcIiAoY2xpY2spPVwib25BY3Rpb24yQnV0dG9uQ2xpY2soJGV2ZW50KVwiPnt7IGFjdGlvbjJUZXh0IH19PC9idXR0b24+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY29sbGFwc2UtYnV0dG9uLWNvbnRhaW5lclwiPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uICpuZ0lmPVwiY29sbGFwc2libGVcIiAoY2xpY2spPVwiY29sbGFwc2VkID0gIWNvbGxhcHNlZFwiIGNsYXNzPVwiY29sbGFwc2UtYnV0dG9uXCI+XG4gICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImNvbGxhcHNlZFwiIHN2Z0ljb249XCJvbnRpbWl6ZTprZXlib2FyZF9hcnJvd19kb3duXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiIWNvbGxhcHNlZFwiIHN2Z0ljb249XCJvbnRpbWl6ZTprZXlib2FyZF9hcnJvd191cFwiPjwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtY2FyZC1hY3Rpb25zPlxuXG4gIDxtYXQtY2FyZC1jb250ZW50ICpuZ0lmPVwiY29sbGFwc2libGUgJiYgIWNvbGxhcHNlZFwiPlxuICAgIDxwPlxuICAgICAge3sgY29udGVudCB9fVxuICAgIDwvcD5cbiAgPC9tYXQtY2FyZC1jb250ZW50PlxuXG48L21hdC1jYXJkPlxuIl19