UNPKG

formioangular-colfuturo

Version:

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 10.1.4.

64 lines 14.8 kB
import { Component, ViewChildren, } from "@angular/core"; import { GridBodyComponent } from "../GridBodyComponent"; import { Tooltip } from "bootstrap"; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; import * as i2 from "@angular/router"; import * as i3 from "./time-since.pipe"; export class FormGridBodyComponent extends GridBodyComponent { createBtns; viewBtns; editBtns; permissionsBtns; deleteBtns; tooltips = []; load(formio, query) { query = query || {}; return formio .loadForms({ params: query }) .then((forms) => this.setRows(query, forms)) .then(() => this.attachTooltips()); } attachTooltips() { this.createBtns.forEach((el) => { this.tooltips.push(new Tooltip(el.nativeElement, { title: "Create" })); }); this.editBtns.forEach((el) => { this.tooltips.push(new Tooltip(el.nativeElement, { title: "Edit" })); }); this.viewBtns.forEach((el) => { this.tooltips.push(new Tooltip(el.nativeElement, { title: "View" })); }); this.permissionsBtns.forEach((el) => { this.tooltips.push(new Tooltip(el.nativeElement, { title: "Permissions" })); }); this.deleteBtns.forEach((el) => { this.tooltips.push(new Tooltip(el.nativeElement, { title: "Delete" })); }); } ngOnDestroy() { this.tooltips.forEach((tootip) => tootip.dispose()); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormGridBodyComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FormGridBodyComponent, selector: "form-grid-body", viewQueries: [{ propertyName: "createBtns", predicate: ["create"], descendants: true }, { propertyName: "viewBtns", predicate: ["view"], descendants: true }, { propertyName: "editBtns", predicate: ["edit"], descendants: true }, { propertyName: "permissionsBtns", predicate: ["permissions"], descendants: true }, { propertyName: "deleteBtns", predicate: ["delete"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template>\r\n <tbody *ngIf=\"rows\">\r\n <tr *ngFor=\"let form of rows\">\r\n <td>\r\n <div class=\"row\">\r\n <div class=\"col-sm-9\">\r\n <a routerLink=\"{{form._id}}/view\" (click)=\"onRowSelect($event, form)\" class=\"text-decoration-none\"><h5>{{ form.title }}</h5></a>\r\n <div class=\"form-updated small text-muted\">\r\n Updated {{ form.modified | timeSince }} ago\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3 d-flex justify-content-end align-items-center\">\r\n <button #create *ngIf=\"actionAllowed('formView')\" class=\"btn btn-outline-secondary btn-sm form-btn form-btn-use\" (click)=\"onRowAction($event, form, 'view')\"><span class=\"fa fa-pencil bi bi-pencil\"></span></button>&nbsp;\r\n <button #view *ngIf=\"actionAllowed('formSubmission')\" class=\"btn btn-outline-secondary btn-sm form-btn\" (click)=\"onRowAction($event, form, 'submission')\"><span class=\"fa fa-list-alt bi bi-table\"></span></button>&nbsp;\r\n <button #edit *ngIf=\"actionAllowed('formEdit')\" class=\"btn btn-outline-secondary btn-sm form-btn\" (click)=\"onRowAction($event, form, 'edit')\"><span class=\"fa fa-edit bi bi-pencil-square\"></span></button>&nbsp;\r\n <button #delete *ngIf=\"actionAllowed('formDelete')\" class=\"btn btn-secondary btn-sm form-btn form-btn-delete\" (click)=\"onRowAction($event, form, 'delete')\" title=\"Delete form\"><span class=\"fa fa-trash bi bi-trash\"></span></button>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n</ng-template>\r\n", styles: [".form-btn{font-size:.75rem;margin:2px 0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i3.TimeSince, name: "timeSince" }] }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormGridBodyComponent, decorators: [{ type: Component, args: [{ selector: "form-grid-body", template: "<ng-template>\r\n <tbody *ngIf=\"rows\">\r\n <tr *ngFor=\"let form of rows\">\r\n <td>\r\n <div class=\"row\">\r\n <div class=\"col-sm-9\">\r\n <a routerLink=\"{{form._id}}/view\" (click)=\"onRowSelect($event, form)\" class=\"text-decoration-none\"><h5>{{ form.title }}</h5></a>\r\n <div class=\"form-updated small text-muted\">\r\n Updated {{ form.modified | timeSince }} ago\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3 d-flex justify-content-end align-items-center\">\r\n <button #create *ngIf=\"actionAllowed('formView')\" class=\"btn btn-outline-secondary btn-sm form-btn form-btn-use\" (click)=\"onRowAction($event, form, 'view')\"><span class=\"fa fa-pencil bi bi-pencil\"></span></button>&nbsp;\r\n <button #view *ngIf=\"actionAllowed('formSubmission')\" class=\"btn btn-outline-secondary btn-sm form-btn\" (click)=\"onRowAction($event, form, 'submission')\"><span class=\"fa fa-list-alt bi bi-table\"></span></button>&nbsp;\r\n <button #edit *ngIf=\"actionAllowed('formEdit')\" class=\"btn btn-outline-secondary btn-sm form-btn\" (click)=\"onRowAction($event, form, 'edit')\"><span class=\"fa fa-edit bi bi-pencil-square\"></span></button>&nbsp;\r\n <button #delete *ngIf=\"actionAllowed('formDelete')\" class=\"btn btn-secondary btn-sm form-btn form-btn-delete\" (click)=\"onRowAction($event, form, 'delete')\" title=\"Delete form\"><span class=\"fa fa-trash bi bi-trash\"></span></button>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n</ng-template>\r\n", styles: [".form-btn{font-size:.75rem;margin:2px 0}\n"] }] }], propDecorators: { createBtns: [{ type: ViewChildren, args: ["create"] }], viewBtns: [{ type: ViewChildren, args: ["view"] }], editBtns: [{ type: ViewChildren, args: ["edit"] }], permissionsBtns: [{ type: ViewChildren, args: ["permissions"] }], deleteBtns: [{ type: ViewChildren, args: ["delete"] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9ybUdyaWRCb2R5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItZm9ybWlvL2dyaWQvc3JjL2Zvcm0vRm9ybUdyaWRCb2R5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItZm9ybWlvL2dyaWQvc3JjL2Zvcm0vRm9ybUdyaWRCb2R5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBSVQsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXpELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7O0FBTXBDLE1BQU0sT0FBTyxxQkFDWCxTQUFRLGlCQUFpQjtJQUdELFVBQVUsQ0FBZTtJQUMzQixRQUFRLENBQWU7SUFDdkIsUUFBUSxDQUFlO0lBQ2hCLGVBQWUsQ0FBZTtJQUNuQyxVQUFVLENBQWU7SUFDMUMsUUFBUSxHQUFtQixFQUFFLENBQUM7SUFFckMsSUFBSSxDQUFDLE1BQTRCLEVBQUUsS0FBVztRQUM1QyxLQUFLLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNwQixPQUFPLE1BQU07YUFDVixTQUFTLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7YUFDNUIsSUFBSSxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQzthQUNoRCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQWMsRUFBRSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFjLEVBQUUsRUFBRTtZQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN2RSxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBYyxFQUFFLEVBQUU7WUFDdkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdkUsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQWMsRUFBRSxFQUFFO1lBQzlDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNoQixJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQ3hELENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBYyxFQUFFLEVBQUU7WUFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBZSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMvRCxDQUFDO3dHQXpDVSxxQkFBcUI7NEZBQXJCLHFCQUFxQixnZENmbEMsdW1EQXNCQTs7NEZEUGEscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLGdCQUFnQjs4QkFRRixVQUFVO3NCQUFqQyxZQUFZO3VCQUFDLFFBQVE7Z0JBQ0EsUUFBUTtzQkFBN0IsWUFBWTt1QkFBQyxNQUFNO2dCQUNFLFFBQVE7c0JBQTdCLFlBQVk7dUJBQUMsTUFBTTtnQkFDUyxlQUFlO3NCQUEzQyxZQUFZO3VCQUFDLGFBQWE7Z0JBQ0gsVUFBVTtzQkFBakMsWUFBWTt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBPbkRlc3Ryb3ksXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdDaGlsZHJlbixcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBHcmlkQm9keUNvbXBvbmVudCB9IGZyb20gXCIuLi9HcmlkQm9keUNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBGb3JtaW9Qcm9taXNlU2VydmljZSB9IGZyb20gXCJmb3JtaW9hbmd1bGFyLWNvbGZ1dHVyb1wiO1xyXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSBcImJvb3RzdHJhcFwiO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJmb3JtLWdyaWQtYm9keVwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9Gb3JtR3JpZEJvZHkuY29tcG9uZW50LnNjc3NcIl0sXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9Gb3JtR3JpZEJvZHkuY29tcG9uZW50Lmh0bWxcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1HcmlkQm9keUNvbXBvbmVudFxyXG4gIGV4dGVuZHMgR3JpZEJvZHlDb21wb25lbnRcclxuICBpbXBsZW1lbnRzIE9uRGVzdHJveVxyXG57XHJcbiAgQFZpZXdDaGlsZHJlbihcImNyZWF0ZVwiKSBjcmVhdGVCdG5zOiBFbGVtZW50UmVmW107XHJcbiAgQFZpZXdDaGlsZHJlbihcInZpZXdcIikgdmlld0J0bnM6IEVsZW1lbnRSZWZbXTtcclxuICBAVmlld0NoaWxkcmVuKFwiZWRpdFwiKSBlZGl0QnRuczogRWxlbWVudFJlZltdO1xyXG4gIEBWaWV3Q2hpbGRyZW4oXCJwZXJtaXNzaW9uc1wiKSBwZXJtaXNzaW9uc0J0bnM6IEVsZW1lbnRSZWZbXTtcclxuICBAVmlld0NoaWxkcmVuKFwiZGVsZXRlXCIpIGRlbGV0ZUJ0bnM6IEVsZW1lbnRSZWZbXTtcclxuICBwdWJsaWMgdG9vbHRpcHM6IEFycmF5PFRvb2x0aXA+ID0gW107XHJcblxyXG4gIGxvYWQoZm9ybWlvOiBGb3JtaW9Qcm9taXNlU2VydmljZSwgcXVlcnk/OiBhbnkpIHtcclxuICAgIHF1ZXJ5ID0gcXVlcnkgfHwge307XHJcbiAgICByZXR1cm4gZm9ybWlvXHJcbiAgICAgIC5sb2FkRm9ybXMoeyBwYXJhbXM6IHF1ZXJ5IH0pXHJcbiAgICAgIC50aGVuKChmb3JtczogYW55KSA9PiB0aGlzLnNldFJvd3MocXVlcnksIGZvcm1zKSlcclxuICAgICAgLnRoZW4oKCkgPT4gdGhpcy5hdHRhY2hUb29sdGlwcygpKTtcclxuICB9XHJcblxyXG4gIGF0dGFjaFRvb2x0aXBzKCkge1xyXG4gICAgdGhpcy5jcmVhdGVCdG5zLmZvckVhY2goKGVsOiBFbGVtZW50UmVmKSA9PiB7XHJcbiAgICAgIHRoaXMudG9vbHRpcHMucHVzaChuZXcgVG9vbHRpcChlbC5uYXRpdmVFbGVtZW50LCB7IHRpdGxlOiBcIkNyZWF0ZVwiIH0pKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5lZGl0QnRucy5mb3JFYWNoKChlbDogRWxlbWVudFJlZikgPT4ge1xyXG4gICAgICB0aGlzLnRvb2x0aXBzLnB1c2gobmV3IFRvb2x0aXAoZWwubmF0aXZlRWxlbWVudCwgeyB0aXRsZTogXCJFZGl0XCIgfSkpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnZpZXdCdG5zLmZvckVhY2goKGVsOiBFbGVtZW50UmVmKSA9PiB7XHJcbiAgICAgIHRoaXMudG9vbHRpcHMucHVzaChuZXcgVG9vbHRpcChlbC5uYXRpdmVFbGVtZW50LCB7IHRpdGxlOiBcIlZpZXdcIiB9KSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMucGVybWlzc2lvbnNCdG5zLmZvckVhY2goKGVsOiBFbGVtZW50UmVmKSA9PiB7XHJcbiAgICAgIHRoaXMudG9vbHRpcHMucHVzaChcclxuICAgICAgICBuZXcgVG9vbHRpcChlbC5uYXRpdmVFbGVtZW50LCB7IHRpdGxlOiBcIlBlcm1pc3Npb25zXCIgfSlcclxuICAgICAgKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5kZWxldGVCdG5zLmZvckVhY2goKGVsOiBFbGVtZW50UmVmKSA9PiB7XHJcbiAgICAgIHRoaXMudG9vbHRpcHMucHVzaChuZXcgVG9vbHRpcChlbC5uYXRpdmVFbGVtZW50LCB7IHRpdGxlOiBcIkRlbGV0ZVwiIH0pKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnRvb2x0aXBzLmZvckVhY2goKHRvb3RpcDogVG9vbHRpcCkgPT4gdG9vdGlwLmRpc3Bvc2UoKSk7XHJcbiAgfVxyXG59XHJcbiIsIjxuZy10ZW1wbGF0ZT5cclxuICA8dGJvZHkgKm5nSWY9XCJyb3dzXCI+XHJcbiAgICA8dHIgKm5nRm9yPVwibGV0IGZvcm0gb2Ygcm93c1wiPlxyXG4gICAgICA8dGQ+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS05XCI+XHJcbiAgICAgICAgICAgIDxhIHJvdXRlckxpbms9XCJ7e2Zvcm0uX2lkfX0vdmlld1wiIChjbGljayk9XCJvblJvd1NlbGVjdCgkZXZlbnQsIGZvcm0pXCIgY2xhc3M9XCJ0ZXh0LWRlY29yYXRpb24tbm9uZVwiPjxoNT57eyBmb3JtLnRpdGxlIH19PC9oNT48L2E+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXVwZGF0ZWQgc21hbGwgdGV4dC1tdXRlZFwiPlxyXG4gICAgICAgICAgICAgIFVwZGF0ZWQge3sgZm9ybS5tb2RpZmllZCB8IHRpbWVTaW5jZSB9fSBhZ29cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMyBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiAjY3JlYXRlICpuZ0lmPVwiYWN0aW9uQWxsb3dlZCgnZm9ybVZpZXcnKVwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBidG4tc20gZm9ybS1idG4gZm9ybS1idG4tdXNlXCIgKGNsaWNrKT1cIm9uUm93QWN0aW9uKCRldmVudCwgZm9ybSwgJ3ZpZXcnKVwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtcGVuY2lsIGJpIGJpLXBlbmNpbFwiPjwvc3Bhbj48L2J1dHRvbj4mbmJzcDtcclxuICAgICAgICAgICAgPGJ1dHRvbiAjdmlldyAqbmdJZj1cImFjdGlvbkFsbG93ZWQoJ2Zvcm1TdWJtaXNzaW9uJylcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnkgYnRuLXNtIGZvcm0tYnRuXCIgKGNsaWNrKT1cIm9uUm93QWN0aW9uKCRldmVudCwgZm9ybSwgJ3N1Ym1pc3Npb24nKVwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtbGlzdC1hbHQgYmkgYmktdGFibGVcIj48L3NwYW4+PC9idXR0b24+Jm5ic3A7XHJcbiAgICAgICAgICAgIDxidXR0b24gI2VkaXQgKm5nSWY9XCJhY3Rpb25BbGxvd2VkKCdmb3JtRWRpdCcpXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGJ0bi1zbSBmb3JtLWJ0blwiIChjbGljayk9XCJvblJvd0FjdGlvbigkZXZlbnQsIGZvcm0sICdlZGl0JylcIj48c3BhbiBjbGFzcz1cImZhIGZhLWVkaXQgYmkgYmktcGVuY2lsLXNxdWFyZVwiPjwvc3Bhbj48L2J1dHRvbj4mbmJzcDtcclxuICAgICAgICAgICAgPGJ1dHRvbiAjZGVsZXRlICpuZ0lmPVwiYWN0aW9uQWxsb3dlZCgnZm9ybURlbGV0ZScpXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeSBidG4tc20gZm9ybS1idG4gZm9ybS1idG4tZGVsZXRlXCIgKGNsaWNrKT1cIm9uUm93QWN0aW9uKCRldmVudCwgZm9ybSwgJ2RlbGV0ZScpXCIgdGl0bGU9XCJEZWxldGUgZm9ybVwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtdHJhc2ggYmkgYmktdHJhc2hcIj48L3NwYW4+PC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC90ZD5cclxuICAgIDwvdHI+XHJcbiAgPC90Ym9keT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19