UNPKG

@craftsjs/alert

Version:
74 lines 16.4 kB
import { Component, ChangeDetectionStrategy, Inject, ViewEncapsulation, Injector, InjectionToken, ViewChildren, TemplateRef } from '@angular/core'; import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; import { alertComponents } from './components/components'; import { DynamicDirective } from '@craftsjs/core'; import * as i0 from "@angular/core"; import * as i1 from "@angular/material/dialog"; import * as i2 from "@angular/common"; import * as i3 from "@craftsjs/core"; import * as i4 from "./components/buttons/alert-ok-button/alert-ok-button.component"; import * as i5 from "./components/buttons/alert-cancel-button/alert-cancel-button.component"; import * as i6 from "@ngx-translate/core"; export const CRAFTSJS_ALERT_DATA = new InjectionToken('CraftsjsAlertData'); export class DialogAlertComponent { constructor(dialogRef, data) { this.dialogRef = dialogRef; this.data = data; } ngOnInit() { } ngAfterViewInit() { this.loadComponents(); } loadComponents() { const itemComponent = alertComponents.find(x => x.type === this.data.type); const component = itemComponent && itemComponent.component; this.resolveComponent(component, this.appDynamic.find(x => x.name === 'alert-icon').viewContainerRef); this.resolveComponent(this.data.customBody, this.appDynamic.find(x => x.name === 'alert-body').viewContainerRef); this.resolveComponent(this.data.customButtonComponent, this.appDynamic.find(x => x.name === 'alert-buttons').viewContainerRef); } resolveComponent(component, viewContainerRef) { if (!component) { return; } viewContainerRef.clear(); if (component instanceof TemplateRef) { viewContainerRef.createEmbeddedView(component, { $implicit: this.data, dialogRef: this.dialogRef }); } else { const injector = this.createInjector(viewContainerRef.injector); viewContainerRef.createComponent(component, { injector }); } } createInjector(injector) { return Injector.create({ providers: [{ provide: CRAFTSJS_ALERT_DATA, useValue: this.data }, { provide: MatDialogRef, useValue: this.dialogRef }], parent: injector }); } buttonClick(result) { this.dialogRef.close({ data: this.data, result }); } } DialogAlertComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DialogAlertComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); DialogAlertComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: DialogAlertComponent, selector: "dialog-alert", viewQueries: [{ propertyName: "appDynamic", predicate: DynamicDirective, descendants: true }], ngImport: i0, template: "<ng-template craftsjsDynamic name=\"alert-icon\"></ng-template>\n<div *ngIf=\"data?.title\" class=\"alert-title\">\n <span>\n {{data.title | translate}}\n </span>\n</div>\n<div *ngIf=\"data?.text\" class=\"alert-text\">\n <span>\n {{data.text | translate}}\n </span>\n</div>\n<ng-template craftsjsDynamic name=\"alert-body\"></ng-template>\n<div class=\"alert-footer\" *ngIf=\"!data?.hiddenButtons\">\n <alert-ok-button *ngIf=\"!data?.customButtonComponent\" (click)=\"buttonClick('ok')\">\n </alert-ok-button>\n <alert-cancel-button *ngIf=\"!data?.customButtonComponent && data?.showCancelButton\"\n (click)=\"buttonClick('cancel')\">\n </alert-cancel-button>\n</div>\n<ng-template craftsjsDynamic name=\"alert-buttons\"></ng-template>", styles: [".alert-icon{width:80px;height:80px;border-width:4px;border-style:solid;border-radius:50%;padding:0;position:relative;box-sizing:content-box;margin:20px auto}.alert-icon-custom{width:auto;height:auto;max-width:100%;border:none;border-radius:0}.alert-icon img{max-width:100%;max-height:100%}.alert-title{color:#000000a6;font-weight:600;text-transform:none;position:relative;display:block;font-size:27px;line-height:normal;text-align:center;margin-bottom:0}.alert-title:first-child{margin-top:26px}.alert-title:not(:first-child){padding-bottom:0}.alert-title:not(:last-child){margin-bottom:13px}.alert-text{font-size:16px;position:relative;float:none;line-height:normal;vertical-align:top;text-align:center;display:inline-block;margin:0;padding:0 10px;font-weight:400;color:#000000a3;overflow-wrap:break-word;box-sizing:border-box;width:100%}.alert-text:first-child{margin-top:45px}.alert-text:last-child{margin-bottom:45px}.alert-footer{text-align:right;margin-top:13px;padding:13px 16px;border-radius:inherit;border-top-left-radius:0;border-top-right-radius:0}.alert-footer-button-container{margin:5px;display:inline-block;position:relative}.alert-footer>*{display:inline-block;margin-right:.5em}.alert-footer>:last-child{margin-right:inherit}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DynamicDirective, selector: "[craftsjsDynamic]", inputs: ["name"] }, { kind: "component", type: i4.AlertOkButtonComponent, selector: "alert-ok-button", outputs: ["click"] }, { kind: "component", type: i5.AlertCancelButtonComponent, selector: "alert-cancel-button", outputs: ["click"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DialogAlertComponent, decorators: [{ type: Component, args: [{ selector: 'dialog-alert', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<ng-template craftsjsDynamic name=\"alert-icon\"></ng-template>\n<div *ngIf=\"data?.title\" class=\"alert-title\">\n <span>\n {{data.title | translate}}\n </span>\n</div>\n<div *ngIf=\"data?.text\" class=\"alert-text\">\n <span>\n {{data.text | translate}}\n </span>\n</div>\n<ng-template craftsjsDynamic name=\"alert-body\"></ng-template>\n<div class=\"alert-footer\" *ngIf=\"!data?.hiddenButtons\">\n <alert-ok-button *ngIf=\"!data?.customButtonComponent\" (click)=\"buttonClick('ok')\">\n </alert-ok-button>\n <alert-cancel-button *ngIf=\"!data?.customButtonComponent && data?.showCancelButton\"\n (click)=\"buttonClick('cancel')\">\n </alert-cancel-button>\n</div>\n<ng-template craftsjsDynamic name=\"alert-buttons\"></ng-template>", styles: [".alert-icon{width:80px;height:80px;border-width:4px;border-style:solid;border-radius:50%;padding:0;position:relative;box-sizing:content-box;margin:20px auto}.alert-icon-custom{width:auto;height:auto;max-width:100%;border:none;border-radius:0}.alert-icon img{max-width:100%;max-height:100%}.alert-title{color:#000000a6;font-weight:600;text-transform:none;position:relative;display:block;font-size:27px;line-height:normal;text-align:center;margin-bottom:0}.alert-title:first-child{margin-top:26px}.alert-title:not(:first-child){padding-bottom:0}.alert-title:not(:last-child){margin-bottom:13px}.alert-text{font-size:16px;position:relative;float:none;line-height:normal;vertical-align:top;text-align:center;display:inline-block;margin:0;padding:0 10px;font-weight:400;color:#000000a3;overflow-wrap:break-word;box-sizing:border-box;width:100%}.alert-text:first-child{margin-top:45px}.alert-text:last-child{margin-bottom:45px}.alert-footer{text-align:right;margin-top:13px;padding:13px 16px;border-radius:inherit;border-top-left-radius:0;border-top-right-radius:0}.alert-footer-button-container{margin:5px;display:inline-block;position:relative}.alert-footer>*{display:inline-block;margin-right:.5em}.alert-footer>:last-child{margin-right:inherit}\n"] }] }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA] }] }]; }, propDecorators: { appDynamic: [{ type: ViewChildren, args: [DynamicDirective] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWFsZXJ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NyYWZ0c2pzL2FsZXJ0L3NyYy9saWIvY29tcG9uZW50cy9kaWFsb2ctYWxlcnQvZGlhbG9nLWFsZXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NyYWZ0c2pzL2FsZXJ0L3NyYy9saWIvY29tcG9uZW50cy9kaWFsb2ctYWxlcnQvZGlhbG9nLWFsZXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsdUJBQXVCLEVBQ3ZCLE1BQU0sRUFDTixpQkFBaUIsRUFFakIsUUFBUSxFQUNSLGNBQWMsRUFJZCxZQUFZLEVBRVosV0FBVyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQUVsRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FBTSxtQkFBbUIsQ0FBQyxDQUFDO0FBU2hGLE1BQU0sT0FBTyxvQkFBb0I7SUFLL0IsWUFDUyxTQUE2QyxFQUNwQixJQUFnQjtRQUR6QyxjQUFTLEdBQVQsU0FBUyxDQUFvQztRQUNwQixTQUFJLEdBQUosSUFBSSxDQUFZO0lBRWxELENBQUM7SUFFRCxRQUFRO0lBRVIsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVPLGNBQWM7UUFDcEIsTUFBTSxhQUFhLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzRSxNQUFNLFNBQVMsR0FBRyxhQUFhLElBQUksYUFBYSxDQUFDLFNBQVMsQ0FBQztRQUMzRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3RHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNqSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNqSSxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsU0FBdUMsRUFBRSxnQkFBa0M7UUFDbEcsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUFFLE9BQU87U0FBRTtRQUMzQixnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6QixJQUFJLFNBQVMsWUFBWSxXQUFXLEVBQUU7WUFDcEMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1NBQ3JHO2FBQU07WUFDTCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2hFLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUU7Z0JBQzFDLFFBQVE7YUFDVCxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFTyxjQUFjLENBQUMsUUFBa0I7UUFDdkMsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQ3JCLFNBQVMsRUFBRSxDQUFDO29CQUNWLE9BQU8sRUFBRSxtQkFBbUI7b0JBQzVCLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSTtpQkFDcEI7Z0JBQ0Q7b0JBQ0UsT0FBTyxFQUFFLFlBQVk7b0JBQ3JCLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUztpQkFDekIsQ0FBQztZQUNGLE1BQU0sRUFBRSxRQUFRO1NBQ2pCLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxXQUFXLENBQUMsTUFBYztRQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQzs7aUhBeERVLG9CQUFvQiw4Q0FPckIsZUFBZTtxR0FQZCxvQkFBb0IsbUZBRWpCLGdCQUFnQixnREMvQmhDLCt3QkFtQmdFOzJGRFVuRCxvQkFBb0I7a0JBUGhDLFNBQVM7K0JBQ0UsY0FBYyxtQkFHUCx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJOzswQkFTbEMsTUFBTTsyQkFBQyxlQUFlOzRDQUp6QixVQUFVO3NCQURULFlBQVk7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgSW5qZWN0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgT25Jbml0LFxuICBJbmplY3RvcixcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIFR5cGUsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkcmVuLFxuICBBZnRlclZpZXdJbml0LFxuICBUZW1wbGF0ZVJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEFsZXJ0TW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvYWxlcnQubW9kZWwnO1xuaW1wb3J0IHsgYWxlcnRDb21wb25lbnRzIH0gZnJvbSAnLi9jb21wb25lbnRzL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgRHluYW1pY0RpcmVjdGl2ZSB9IGZyb20gJ0BjcmFmdHNqcy9jb3JlJztcblxuZXhwb3J0IGNvbnN0IENSQUZUU0pTX0FMRVJUX0RBVEEgPSBuZXcgSW5qZWN0aW9uVG9rZW48YW55PignQ3JhZnRzanNBbGVydERhdGEnKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGlhbG9nLWFsZXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RpYWxvZy1hbGVydC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RpYWxvZy1hbGVydC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBEaWFsb2dBbGVydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgQFZpZXdDaGlsZHJlbihEeW5hbWljRGlyZWN0aXZlKVxuICBhcHBEeW5hbWljOiBRdWVyeUxpc3Q8RHluYW1pY0RpcmVjdGl2ZT47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPERpYWxvZ0FsZXJ0Q29tcG9uZW50PixcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IEFsZXJ0TW9kZWwsXG4gICkge1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG5cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRDb21wb25lbnRzKCk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRDb21wb25lbnRzKCkge1xuICAgIGNvbnN0IGl0ZW1Db21wb25lbnQgPSBhbGVydENvbXBvbmVudHMuZmluZCh4ID0+IHgudHlwZSA9PT0gdGhpcy5kYXRhLnR5cGUpO1xuICAgIGNvbnN0IGNvbXBvbmVudCA9IGl0ZW1Db21wb25lbnQgJiYgaXRlbUNvbXBvbmVudC5jb21wb25lbnQ7XG4gICAgdGhpcy5yZXNvbHZlQ29tcG9uZW50KGNvbXBvbmVudCwgdGhpcy5hcHBEeW5hbWljLmZpbmQoeCA9PiB4Lm5hbWUgPT09ICdhbGVydC1pY29uJykudmlld0NvbnRhaW5lclJlZik7XG4gICAgdGhpcy5yZXNvbHZlQ29tcG9uZW50KHRoaXMuZGF0YS5jdXN0b21Cb2R5LCB0aGlzLmFwcER5bmFtaWMuZmluZCh4ID0+IHgubmFtZSA9PT0gJ2FsZXJ0LWJvZHknKS52aWV3Q29udGFpbmVyUmVmKTtcbiAgICB0aGlzLnJlc29sdmVDb21wb25lbnQodGhpcy5kYXRhLmN1c3RvbUJ1dHRvbkNvbXBvbmVudCwgdGhpcy5hcHBEeW5hbWljLmZpbmQoeCA9PiB4Lm5hbWUgPT09ICdhbGVydC1idXR0b25zJykudmlld0NvbnRhaW5lclJlZik7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVDb21wb25lbnQoY29tcG9uZW50OiBUeXBlPGFueT4gfCBUZW1wbGF0ZVJlZjxhbnk+LCB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7XG4gICAgaWYgKCFjb21wb25lbnQpIHsgcmV0dXJuOyB9XG4gICAgdmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuICAgIGlmIChjb21wb25lbnQgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZikge1xuICAgICAgdmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcoY29tcG9uZW50LCB7ICRpbXBsaWNpdDogdGhpcy5kYXRhLCBkaWFsb2dSZWY6IHRoaXMuZGlhbG9nUmVmIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBpbmplY3RvciA9IHRoaXMuY3JlYXRlSW5qZWN0b3Iodmlld0NvbnRhaW5lclJlZi5pbmplY3Rvcik7XG4gICAgICB2aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnQsIHtcbiAgICAgICAgaW5qZWN0b3JcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlSW5qZWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgcmV0dXJuIEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwcm92aWRlcnM6IFt7XG4gICAgICAgIHByb3ZpZGU6IENSQUZUU0pTX0FMRVJUX0RBVEEsXG4gICAgICAgIHVzZVZhbHVlOiB0aGlzLmRhdGFcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHByb3ZpZGU6IE1hdERpYWxvZ1JlZixcbiAgICAgICAgdXNlVmFsdWU6IHRoaXMuZGlhbG9nUmVmXG4gICAgICB9XSxcbiAgICAgIHBhcmVudDogaW5qZWN0b3JcbiAgICB9KVxuICB9XG5cbiAgYnV0dG9uQ2xpY2socmVzdWx0OiBzdHJpbmcpIHtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7IGRhdGE6IHRoaXMuZGF0YSwgcmVzdWx0IH0pO1xuICB9XG5cbn1cbiIsIjxuZy10ZW1wbGF0ZSBjcmFmdHNqc0R5bmFtaWMgbmFtZT1cImFsZXJ0LWljb25cIj48L25nLXRlbXBsYXRlPlxuPGRpdiAqbmdJZj1cImRhdGE/LnRpdGxlXCIgY2xhc3M9XCJhbGVydC10aXRsZVwiPlxuICAgIDxzcGFuPlxuICAgICAgICB7e2RhdGEudGl0bGUgfCB0cmFuc2xhdGV9fVxuICAgIDwvc3Bhbj5cbjwvZGl2PlxuPGRpdiAqbmdJZj1cImRhdGE/LnRleHRcIiBjbGFzcz1cImFsZXJ0LXRleHRcIj5cbiAgICA8c3Bhbj5cbiAgICAgICAge3tkYXRhLnRleHQgfCB0cmFuc2xhdGV9fVxuICAgIDwvc3Bhbj5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlIGNyYWZ0c2pzRHluYW1pYyBuYW1lPVwiYWxlcnQtYm9keVwiPjwvbmctdGVtcGxhdGU+XG48ZGl2IGNsYXNzPVwiYWxlcnQtZm9vdGVyXCIgKm5nSWY9XCIhZGF0YT8uaGlkZGVuQnV0dG9uc1wiPlxuICAgIDxhbGVydC1vay1idXR0b24gKm5nSWY9XCIhZGF0YT8uY3VzdG9tQnV0dG9uQ29tcG9uZW50XCIgKGNsaWNrKT1cImJ1dHRvbkNsaWNrKCdvaycpXCI+XG4gICAgPC9hbGVydC1vay1idXR0b24+XG4gICAgPGFsZXJ0LWNhbmNlbC1idXR0b24gKm5nSWY9XCIhZGF0YT8uY3VzdG9tQnV0dG9uQ29tcG9uZW50ICYmIGRhdGE/LnNob3dDYW5jZWxCdXR0b25cIlxuICAgICAgICAoY2xpY2spPVwiYnV0dG9uQ2xpY2soJ2NhbmNlbCcpXCI+XG4gICAgPC9hbGVydC1jYW5jZWwtYnV0dG9uPlxuPC9kaXY+XG48bmctdGVtcGxhdGUgY3JhZnRzanNEeW5hbWljIG5hbWU9XCJhbGVydC1idXR0b25zXCI+PC9uZy10ZW1wbGF0ZT4iXX0=