@indice/ng-components
Version:
Indice common components for Angular v12
91 lines • 17.5 kB
JavaScript
import { Component, ContentChild, ContentChildren, EventEmitter, Input, Output, TemplateRef } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "@angular/router";
import * as i2 from "@angular/common";
export class ContentTileHeaderComponent {
constructor() {
this.template = undefined;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ContentTileHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.6", type: ContentTileHeaderComponent, selector: "lib-content-tile-header", queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ContentTileHeaderComponent, decorators: [{
type: Component,
args: [{ selector: 'lib-content-tile-header', template: '<ng-content></ng-content>' }]
}], ctorParameters: () => [], propDecorators: { template: [{
type: ContentChild,
args: [TemplateRef]
}] } });
export class ContentTileItemComponent {
constructor() {
this.template = undefined;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ContentTileItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.6", type: ContentTileItemComponent, selector: "lib-content-tile-item", inputs: { title: "title" }, queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ContentTileItemComponent, decorators: [{
type: Component,
args: [{ selector: 'lib-content-tile-item', template: '<ng-content></ng-content>' }]
}], ctorParameters: () => [], propDecorators: { title: [{
type: Input
}], template: [{
type: ContentChild,
args: [TemplateRef]
}] } });
export class ContentTileComponent {
set items(refs) {
if (refs) {
this.itemTemplates = refs.toArray();
}
}
constructor(router) {
this.router = router;
this.title = undefined;
this.busy = false;
this.showAction = true;
this.showFooter = true;
this.actionText = 'Περισσότερα';
// tslint:disable-next-line:no-output-rename
this.tileAction = new EventEmitter();
this.selectedIndex = 0;
this.itemTemplates = [];
this.header = undefined;
}
ngOnInit() {
}
emitTileAction($event) {
$event.preventDefault();
$event.stopPropagation();
this.tileAction.emit($event);
return false;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ContentTileComponent, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.6", type: ContentTileComponent, selector: "lib-content-tile", inputs: { title: "title", busy: "busy", showAction: ["show-action", "showAction"], showFooter: ["show-footer", "showFooter"], actionText: ["action-text", "actionText"] }, outputs: { tileAction: "tile-action" }, queries: [{ propertyName: "header", first: true, predicate: ContentTileHeaderComponent, descendants: true }, { propertyName: "items", predicate: ContentTileItemComponent, read: ContentTileItemComponent }], ngImport: i0, template: "<div class=\"card bg-white\" [class.card-deck-busy]=\"busy\">\r\n <div class=\"card-body\">\r\n <div class=\"kpi-tile-title-container flex align-top\">\r\n <button type=\"button\" *ngIf=\"!header\" class=\"kpi-tile-action text-left flex-1 uppercase\" \r\n (click)=\"emitTileAction($event)\">{{(this.itemTemplates[selectedIndex].title ?? title) ?? '-'}}\r\n </button>\r\n <ng-container *ngIf=\"header && header.template\">\r\n <div class=\"flex-1\">\r\n <ng-template [ngTemplateOutlet]=\"header.template\"></ng-template>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"showAction\" class=\"float-right align-top\">\r\n <button type=\"button\" class=\"kpi-tile-action text-xs uppercase\" (click)=\"emitTileAction($event)\">{{actionText}}</button>\r\n </div>\r\n </div>\r\n <div class=\"flex items-center\" *ngIf=\"itemTemplates\">\r\n <ng-template [ngTemplateOutlet]=\"itemTemplates[selectedIndex].template\"></ng-template>\r\n </div>\r\n <div class=\"tile-card-footer opacity-25 hover:opacity-75\" *ngIf=\"itemTemplates && itemTemplates.length>1\">\r\n <nav class=\"flex items-center justify-between px-4 sm:px-0\">\r\n <div class=\"flex w-0 flex-1\"></div>\r\n <div class=\"flex items-center justify-between px-2\">\r\n <ng-container *ngFor=\"let item of itemTemplates; index as i\">\r\n <button type=\"button\"\r\n title=\"details\"\r\n (click)=\"selectedIndex=i\"\r\n [disabled]=\"selectedIndex===i\"\r\n class=\"tile-card-item-btn\"\r\n [class.tile-card-item-btn-available]=\"selectedIndex!==i\"\r\n [class.tile-card-item-btn-selected]=\"selectedIndex===i\">\r\n </button>\r\n </ng-container>\r\n </div>\r\n <div class=\"flex w-0 flex-1 justify-end\"></div>\r\n </nav>\r\n </div>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ContentTileComponent, decorators: [{
type: Component,
args: [{ selector: 'lib-content-tile', template: "<div class=\"card bg-white\" [class.card-deck-busy]=\"busy\">\r\n <div class=\"card-body\">\r\n <div class=\"kpi-tile-title-container flex align-top\">\r\n <button type=\"button\" *ngIf=\"!header\" class=\"kpi-tile-action text-left flex-1 uppercase\" \r\n (click)=\"emitTileAction($event)\">{{(this.itemTemplates[selectedIndex].title ?? title) ?? '-'}}\r\n </button>\r\n <ng-container *ngIf=\"header && header.template\">\r\n <div class=\"flex-1\">\r\n <ng-template [ngTemplateOutlet]=\"header.template\"></ng-template>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"showAction\" class=\"float-right align-top\">\r\n <button type=\"button\" class=\"kpi-tile-action text-xs uppercase\" (click)=\"emitTileAction($event)\">{{actionText}}</button>\r\n </div>\r\n </div>\r\n <div class=\"flex items-center\" *ngIf=\"itemTemplates\">\r\n <ng-template [ngTemplateOutlet]=\"itemTemplates[selectedIndex].template\"></ng-template>\r\n </div>\r\n <div class=\"tile-card-footer opacity-25 hover:opacity-75\" *ngIf=\"itemTemplates && itemTemplates.length>1\">\r\n <nav class=\"flex items-center justify-between px-4 sm:px-0\">\r\n <div class=\"flex w-0 flex-1\"></div>\r\n <div class=\"flex items-center justify-between px-2\">\r\n <ng-container *ngFor=\"let item of itemTemplates; index as i\">\r\n <button type=\"button\"\r\n title=\"details\"\r\n (click)=\"selectedIndex=i\"\r\n [disabled]=\"selectedIndex===i\"\r\n class=\"tile-card-item-btn\"\r\n [class.tile-card-item-btn-available]=\"selectedIndex!==i\"\r\n [class.tile-card-item-btn-selected]=\"selectedIndex===i\">\r\n </button>\r\n </ng-container>\r\n </div>\r\n <div class=\"flex w-0 flex-1 justify-end\"></div>\r\n </nav>\r\n </div>\r\n </div>\r\n</div>\r\n" }]
}], ctorParameters: () => [{ type: i1.Router }], propDecorators: { title: [{
type: Input
}], busy: [{
type: Input
}], showAction: [{
type: Input,
args: ['show-action']
}], showFooter: [{
type: Input,
args: ['show-footer']
}], actionText: [{
type: Input,
args: ['action-text']
}], tileAction: [{
type: Output,
args: ['tile-action']
}], items: [{
type: ContentChildren,
args: [ContentTileItemComponent, { read: ContentTileItemComponent }]
}], header: [{
type: ContentChild,
args: [ContentTileHeaderComponent]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC10aWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9jb250ZW50LXRpbGUvY29udGVudC10aWxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9jb250ZW50LXRpbGUvY29udGVudC10aWxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBYSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFJdEksTUFBTSxPQUFPLDBCQUEwQjtJQUVyQztRQUQyQixhQUFRLEdBQW9CLFNBQVMsQ0FBQztJQUNqRCxDQUFDOzhHQUZOLDBCQUEwQjtrR0FBMUIsMEJBQTBCLHFHQUN2QixXQUFXLGdEQUZnQywyQkFBMkI7OzJGQUN6RSwwQkFBMEI7a0JBRHRDLFNBQVM7bUJBQUMsRUFBQyxRQUFRLEVBQUUseUJBQXlCLEVBQUUsUUFBUSxFQUFFLDJCQUEyQixFQUFDO3dEQUUxRCxRQUFRO3NCQUFsQyxZQUFZO3VCQUFDLFdBQVc7O0FBTTNCLE1BQU0sT0FBTyx3QkFBd0I7SUFHbkM7UUFEMkIsYUFBUSxHQUFvQixTQUFTLENBQUM7SUFDakQsQ0FBQzs4R0FITix3QkFBd0I7a0dBQXhCLHdCQUF3QiwrSEFFckIsV0FBVyxnREFIK0IsMkJBQTJCOzsyRkFDeEUsd0JBQXdCO2tCQURwQyxTQUFTO21CQUFDLEVBQUMsUUFBUSxFQUFFLHVCQUF1QixFQUFHLFFBQVEsRUFBRSwyQkFBMkIsRUFBQzt3REFFM0UsS0FBSztzQkFBYixLQUFLO2dCQUNxQixRQUFRO3NCQUFsQyxZQUFZO3VCQUFDLFdBQVc7O0FBUTNCLE1BQU0sT0FBTyxvQkFBb0I7SUFZL0IsSUFDSSxLQUFLLENBQUMsSUFBeUM7UUFDakQsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3RDLENBQUM7SUFDSCxDQUFDO0lBR0QsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFsQnpCLFVBQUssR0FBdUIsU0FBUyxDQUFDO1FBQ3RDLFNBQUksR0FBRyxLQUFLLENBQUM7UUFDQSxlQUFVLEdBQXdCLElBQUksQ0FBQztRQUN2QyxlQUFVLEdBQXdCLElBQUksQ0FBQztRQUN2QyxlQUFVLEdBQVcsYUFBYSxDQUFDO1FBQ3pELDRDQUE0QztRQUNyQixlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDeEUsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFFbEIsa0JBQWEsR0FBVSxFQUFFLENBQUM7UUFRUyxXQUFNLEdBQTJDLFNBQVMsQ0FBQztJQUMvRCxDQUFDO0lBRXZDLFFBQVE7SUFDUixDQUFDO0lBRU0sY0FBYyxDQUFDLE1BQVc7UUFDL0IsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7OEdBOUJVLG9CQUFvQjtrR0FBcEIsb0JBQW9CLCtTQW1CakIsMEJBQTBCLDJEQVB2Qix3QkFBd0IsUUFBVSx3QkFBd0IsNkJDakM3RSxpOURBc0NBOzsyRkRqQmEsb0JBQW9CO2tCQUpoQyxTQUFTOytCQUNFLGtCQUFrQjsyRUFLbkIsS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDZ0IsVUFBVTtzQkFBL0IsS0FBSzt1QkFBQyxhQUFhO2dCQUNFLFVBQVU7c0JBQS9CLEtBQUs7dUJBQUMsYUFBYTtnQkFDRSxVQUFVO3NCQUEvQixLQUFLO3VCQUFDLGFBQWE7Z0JBRUcsVUFBVTtzQkFBaEMsTUFBTTt1QkFBQyxhQUFhO2dCQUtqQixLQUFLO3NCQURSLGVBQWU7dUJBQUMsd0JBQXdCLEVBQUUsRUFBRSxJQUFJLEVBQUUsd0JBQXdCLEVBQUU7Z0JBT25DLE1BQU07c0JBQS9DLFlBQVk7dUJBQUMsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIENvbnRlbnRDaGlsZHJlbiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbkBDb21wb25lbnQoe3NlbGVjdG9yOiAnbGliLWNvbnRlbnQtdGlsZS1oZWFkZXInLCB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nfSlcclxuZXhwb3J0IGNsYXNzIENvbnRlbnRUaWxlSGVhZGVyQ29tcG9uZW50IHtcclxuICBAQ29udGVudENoaWxkKFRlbXBsYXRlUmVmKSB0ZW1wbGF0ZTogYW55IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcbn1cclxuXHJcblxyXG5AQ29tcG9uZW50KHtzZWxlY3RvcjogJ2xpYi1jb250ZW50LXRpbGUtaXRlbScsICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nfSlcclxuZXhwb3J0IGNsYXNzIENvbnRlbnRUaWxlSXRlbUNvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBAQ29udGVudENoaWxkKFRlbXBsYXRlUmVmKSB0ZW1wbGF0ZTogYW55IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWNvbnRlbnQtdGlsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbnRlbnQtdGlsZS5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbnRlbnRUaWxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBidXN5ID0gZmFsc2U7XHJcbiAgQElucHV0KCdzaG93LWFjdGlvbicpIHNob3dBY3Rpb246IGJvb2xlYW4gfCB1bmRlZmluZWQgPSB0cnVlO1xyXG4gIEBJbnB1dCgnc2hvdy1mb290ZXInKSBzaG93Rm9vdGVyOiBib29sZWFuIHwgdW5kZWZpbmVkID0gdHJ1ZTtcclxuICBASW5wdXQoJ2FjdGlvbi10ZXh0JykgYWN0aW9uVGV4dDogc3RyaW5nID0gJ86gzrXPgc65z4PPg8+Mz4TOtc+BzrEnO1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1vdXRwdXQtcmVuYW1lXHJcbiAgQE91dHB1dCgndGlsZS1hY3Rpb24nKSB0aWxlQWN0aW9uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIHB1YmxpYyBzZWxlY3RlZEluZGV4ID0gMDtcclxuXHJcbiAgcHVibGljIGl0ZW1UZW1wbGF0ZXM6IGFueVtdID0gW107XHJcbiAgQENvbnRlbnRDaGlsZHJlbihDb250ZW50VGlsZUl0ZW1Db21wb25lbnQsIHsgcmVhZDogQ29udGVudFRpbGVJdGVtQ29tcG9uZW50IH0pXHJcbiAgc2V0IGl0ZW1zKHJlZnM6IFF1ZXJ5TGlzdDxDb250ZW50VGlsZUl0ZW1Db21wb25lbnQ+KSB7XHJcbiAgICBpZiAocmVmcykge1xyXG4gICAgICB0aGlzLml0ZW1UZW1wbGF0ZXMgPSByZWZzLnRvQXJyYXkoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoQ29udGVudFRpbGVIZWFkZXJDb21wb25lbnQpIGhlYWRlcjogQ29udGVudFRpbGVIZWFkZXJDb21wb25lbnQgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGVtaXRUaWxlQWN0aW9uKCRldmVudDogYW55KTogYm9vbGVhbiB7XHJcbiAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMudGlsZUFjdGlvbi5lbWl0KCRldmVudCk7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuIiwiPGRpdiBjbGFzcz1cImNhcmQgYmctd2hpdGVcIiBbY2xhc3MuY2FyZC1kZWNrLWJ1c3ldPVwiYnVzeVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJrcGktdGlsZS10aXRsZS1jb250YWluZXIgZmxleCBhbGlnbi10b3BcIj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCIhaGVhZGVyXCIgY2xhc3M9XCJrcGktdGlsZS1hY3Rpb24gdGV4dC1sZWZ0IGZsZXgtMSB1cHBlcmNhc2VcIiBcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiZW1pdFRpbGVBY3Rpb24oJGV2ZW50KVwiPnt7KHRoaXMuaXRlbVRlbXBsYXRlc1tzZWxlY3RlZEluZGV4XS50aXRsZSA/PyB0aXRsZSkgPz8gJy0nfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlciAmJiBoZWFkZXIudGVtcGxhdGVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC0xXCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGVyLnRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJzaG93QWN0aW9uXCIgY2xhc3M9XCJmbG9hdC1yaWdodCBhbGlnbi10b3BcIj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImtwaS10aWxlLWFjdGlvbiB0ZXh0LXhzIHVwcGVyY2FzZVwiIChjbGljayk9XCJlbWl0VGlsZUFjdGlvbigkZXZlbnQpXCI+e3thY3Rpb25UZXh0fX08L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiICpuZ0lmPVwiaXRlbVRlbXBsYXRlc1wiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbVRlbXBsYXRlc1tzZWxlY3RlZEluZGV4XS50ZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0aWxlLWNhcmQtZm9vdGVyIG9wYWNpdHktMjUgaG92ZXI6b3BhY2l0eS03NVwiICpuZ0lmPVwiaXRlbVRlbXBsYXRlcyAmJiBpdGVtVGVtcGxhdGVzLmxlbmd0aD4xXCI+XHJcbiAgICAgIDxuYXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHgtNCBzbTpweC0wXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggdy0wIGZsZXgtMVwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHgtMlwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtVGVtcGxhdGVzOyBpbmRleCBhcyBpXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJkZXRhaWxzXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0ZWRJbmRleD1pXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2VsZWN0ZWRJbmRleD09PWlcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGlsZS1jYXJkLWl0ZW0tYnRuXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MudGlsZS1jYXJkLWl0ZW0tYnRuLWF2YWlsYWJsZV09XCJzZWxlY3RlZEluZGV4IT09aVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnRpbGUtY2FyZC1pdGVtLWJ0bi1zZWxlY3RlZF09XCJzZWxlY3RlZEluZGV4PT09aVwiPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IHctMCBmbGV4LTEganVzdGlmeS1lbmRcIj48L2Rpdj5cclxuICAgICAgPC9uYXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==